7 # THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED |
7 # THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED |
8 # WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
8 # WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
9 # WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS |
9 # WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS |
10 # FOR A PARTICULAR PURPOSE. |
10 # FOR A PARTICULAR PURPOSE. |
11 # |
11 # |
|
12 from pyams_utils.request import check_request |
12 |
13 |
13 __docformat__ = 'restructuredtext' |
14 __docformat__ = 'restructuredtext' |
14 |
15 |
15 |
16 |
16 # import standard library |
17 # import standard library |
36 # import packages |
37 # import packages |
37 from pyams_form.form import AJAXAddForm, AJAXEditForm |
38 from pyams_form.form import AJAXAddForm, AJAXEditForm |
38 from pyams_form.schema import CloseButton |
39 from pyams_form.schema import CloseButton |
39 from pyams_pagelet.pagelet import pagelet_config |
40 from pyams_pagelet.pagelet import pagelet_config |
40 from pyams_skin.layer import IPyAMSLayer |
41 from pyams_skin.layer import IPyAMSLayer |
41 from pyams_skin.page import InnerPage |
42 from pyams_skin.page import InnerPage, DefaultPageHeaderAdapter |
42 from pyams_skin.table import DefaultElementEditorAdapter |
43 from pyams_skin.table import DefaultElementEditorAdapter |
43 from pyams_skin.viewlet.menu import MenuItem |
44 from pyams_skin.viewlet.menu import MenuItem |
44 from pyams_skin.viewlet.toolbar import ToolbarMenuItem |
45 from pyams_skin.viewlet.toolbar import ToolbarMenuItem |
45 from pyams_template.template import template_config |
46 from pyams_template.template import template_config |
46 from pyams_thesaurus.loader.config import ThesaurusUpdaterConfiguration, ThesaurusExporterConfiguration |
47 from pyams_thesaurus.loader.config import ThesaurusUpdaterConfiguration, ThesaurusExporterConfiguration |
47 from pyams_thesaurus.thesaurus import Thesaurus |
48 from pyams_thesaurus.thesaurus import Thesaurus |
48 from pyams_thesaurus.zmi.extract import ThesaurusExtractsTable |
49 from pyams_thesaurus.zmi.extract import ThesaurusExtractsTable |
49 from pyams_utils.adapter import adapter_config, ContextRequestAdapter, ContextRequestViewAdapter |
50 from pyams_utils.adapter import adapter_config, ContextRequestAdapter |
50 from pyams_utils.registry import query_utility, get_utility |
51 from pyams_utils.registry import query_utility, get_utility |
51 from pyams_utils.traversing import get_parent |
52 from pyams_utils.traversing import get_parent |
52 from pyams_utils.url import absolute_url |
53 from pyams_utils.url import absolute_url |
53 from pyams_viewlet.manager import viewletmanager_config |
54 from pyams_viewlet.manager import viewletmanager_config |
54 from pyams_viewlet.viewlet import viewlet_config |
55 from pyams_viewlet.viewlet import viewlet_config |
144 @property |
145 @property |
145 def url(self): |
146 def url(self): |
146 return resource_url(self.context, self.request, 'admin.html#{0}'.format(self.view_name)) |
147 return resource_url(self.context, self.request, 'admin.html#{0}'.format(self.view_name)) |
147 |
148 |
148 |
149 |
149 class ThesaurusHeaderAdapter(ContextRequestViewAdapter): |
150 @adapter_config(context=(IThesaurus, IAdminLayer, Interface), provides=IPageHeader) |
|
151 class ThesaurusHeaderAdapter(DefaultPageHeaderAdapter): |
150 """Thesaurus views header adapter""" |
152 """Thesaurus views header adapter""" |
151 |
153 |
152 @property |
154 @property |
153 def back_url(self): |
155 def back_url(self): |
154 site = get_parent(self.context, ISite) |
156 site = get_parent(self.context, ISite) |
155 return absolute_url(site, self.request, 'admin.html#utilities.html') |
157 return absolute_url(site, self.request, 'admin.html#utilities.html') |
156 |
158 |
157 back_target = None |
159 back_target = None |
158 icon_class = 'fa fa-fw fa-language' |
160 icon_class = 'fa fa-fw fa-language' |
159 title = _("Thesaurus management") |
161 |
|
162 @property |
|
163 def title(self): |
|
164 request = check_request() |
|
165 translate = request.localizer.translate |
|
166 return translate(_("Thesaurus « {0} »")).format(self.context.name) |
160 |
167 |
161 |
168 |
162 @viewlet_config(name='properties.menu', layer=IAdminLayer, context=IThesaurus, manager=ISiteManagementMenu, |
169 @viewlet_config(name='properties.menu', layer=IAdminLayer, context=IThesaurus, manager=ISiteManagementMenu, |
163 permission='system.view', weight=1) |
170 permission='system.view', weight=1) |
164 @viewletmanager_config(name='properties.menu', layer=IAdminLayer, context=IThesaurus, provides=IPropertiesMenu) |
171 @viewletmanager_config(name='properties.menu', layer=IAdminLayer, context=IThesaurus, provides=IPropertiesMenu) |
199 permission='system.manage', renderer='json', xhr=True) |
206 permission='system.manage', renderer='json', xhr=True) |
200 class ThesaurusPropertiesAJAXEditForm(AJAXEditForm, ThesaurusPropertiesEditForm): |
207 class ThesaurusPropertiesAJAXEditForm(AJAXEditForm, ThesaurusPropertiesEditForm): |
201 """Thesaurus properties edit form, AJAX view""" |
208 """Thesaurus properties edit form, AJAX view""" |
202 |
209 |
203 |
210 |
204 @adapter_config(context=(IThesaurus, IAdminLayer, ThesaurusPropertiesEditForm), provides=IPageHeader) |
|
205 class ThesaurusPropertiesEditFormHeaderAdapter(ThesaurusHeaderAdapter): |
|
206 |
|
207 subtitle = _("Thesaurus properties") |
|
208 |
|
209 |
|
210 # |
211 # |
211 # Thesaurus terms views |
212 # Thesaurus terms views |
212 # |
213 # |
213 |
214 |
214 @viewlet_config(name='terms.menu', context=IThesaurus, layer=IAdminLayer, manager=ISiteManagementMenu, |
215 @viewlet_config(name='terms.menu', context=IThesaurus, layer=IAdminLayer, manager=ISiteManagementMenu, |
244 key=lambda x: x.label) |
245 key=lambda x: x.label) |
245 |
246 |
246 @property |
247 @property |
247 def search_query_params(self): |
248 def search_query_params(self): |
248 return json.dumps({'thesaurus_name': self.context.name}) |
249 return json.dumps({'thesaurus_name': self.context.name}) |
249 |
|
250 |
|
251 @adapter_config(context=(IThesaurus, IPyAMSLayer, ThesaurusTermsView), provides=IPageHeader) |
|
252 class ThesaurusTermsHeaderAdapter(ThesaurusHeaderAdapter): |
|
253 |
|
254 subtitle = _("Thesaurus terms") |
|
255 |
250 |
256 |
251 |
257 class BaseTreeNodesView(object): |
252 class BaseTreeNodesView(object): |
258 """Base tree nodes views""" |
253 """Base tree nodes views""" |
259 |
254 |