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 |
|
13 |
12 |
14 __docformat__ = 'restructuredtext' |
13 __docformat__ = 'restructuredtext' |
15 |
14 |
16 |
15 |
17 # import standard library |
16 # import standard library |
47 from pyams_thesaurus.loader.config import ThesaurusUpdaterConfiguration, ThesaurusExporterConfiguration |
46 from pyams_thesaurus.loader.config import ThesaurusUpdaterConfiguration, ThesaurusExporterConfiguration |
48 from pyams_thesaurus.thesaurus import Thesaurus |
47 from pyams_thesaurus.thesaurus import Thesaurus |
49 from pyams_thesaurus.zmi.extract import ThesaurusExtractsTable |
48 from pyams_thesaurus.zmi.extract import ThesaurusExtractsTable |
50 from pyams_utils.adapter import adapter_config, ContextRequestAdapter |
49 from pyams_utils.adapter import adapter_config, ContextRequestAdapter |
51 from pyams_utils.registry import query_utility, get_utility |
50 from pyams_utils.registry import query_utility, get_utility |
|
51 from pyams_utils.request import check_request |
52 from pyams_utils.traversing import get_parent |
52 from pyams_utils.traversing import get_parent |
53 from pyams_utils.url import absolute_url |
53 from pyams_utils.url import absolute_url |
54 from pyams_viewlet.manager import viewletmanager_config |
54 from pyams_viewlet.manager import viewletmanager_config |
55 from pyams_viewlet.viewlet import viewlet_config |
55 from pyams_viewlet.viewlet import viewlet_config |
56 from pyams_zmi.control_panel import UtilitiesTable |
56 from pyams_zmi.control_panel import UtilitiesTable |
92 @pagelet_config(name='add-thesaurus.html', context=ISite, layer=IPyAMSLayer, permission='system.manage') |
92 @pagelet_config(name='add-thesaurus.html', context=ISite, layer=IPyAMSLayer, permission='system.manage') |
93 class ThesaurusAddForm(AdminDialogAddForm): |
93 class ThesaurusAddForm(AdminDialogAddForm): |
94 """Thesaurus add form""" |
94 """Thesaurus add form""" |
95 |
95 |
96 title = _("Utilities") |
96 title = _("Utilities") |
97 legend = _("Add thesaurus") |
97 legend = _("Add new thesaurus") |
98 icon_css_class = 'fa fa-fw fa-language' |
98 icon_css_class = 'fa fa-fw fa-language' |
99 |
99 |
100 fields = field.Fields(IThesaurusInfo).select('name', 'title', 'subject', 'description', 'language', 'creator', |
100 fields = field.Fields(IThesaurusInfo).select('name', 'title', 'subject', 'description', 'language', 'creator', |
101 'publisher', 'created') |
101 'publisher', 'created') |
102 ajax_handler = 'add-thesaurus.json' |
102 ajax_handler = 'add-thesaurus.json' |
112 def add(self, object): |
112 def add(self, object): |
113 manager = self.context.getSiteManager() |
113 manager = self.context.getSiteManager() |
114 manager['thesaurus::{0}'.format(object.name.lower())] = object |
114 manager['thesaurus::{0}'.format(object.name.lower())] = object |
115 |
115 |
116 def nextURL(self): |
116 def nextURL(self): |
117 return absolute_url(self.context, self.request, 'utilities.html') |
117 return absolute_url(self.context, self.request, 'thesaurus.html') |
118 |
118 |
119 |
119 |
120 @subscriber(IDataExtractedEvent, form_selector=ThesaurusAddForm) |
120 @subscriber(IDataExtractedEvent, form_selector=ThesaurusAddForm) |
121 def handle_new_thesaurus_data_extraction(event): |
121 def handle_new_thesaurus_data_extraction(event): |
122 """Handle new thesaurus data extraction""" |
122 """Handle new thesaurus data extraction""" |
132 @view_config(name='add-thesaurus.json', context=ISite, request_type=IPyAMSLayer, |
132 @view_config(name='add-thesaurus.json', context=ISite, request_type=IPyAMSLayer, |
133 permission='system.manage', renderer='json', xhr=True) |
133 permission='system.manage', renderer='json', xhr=True) |
134 class ThesaurusAJAXAddForm(AJAXAddForm, ThesaurusAddForm): |
134 class ThesaurusAJAXAddForm(AJAXAddForm, ThesaurusAddForm): |
135 """Thesaurus add form, AJAX view""" |
135 """Thesaurus add form, AJAX view""" |
136 |
136 |
|
137 def get_ajax_output(self, changes): |
|
138 return {'status': 'redirect', |
|
139 'location': absolute_url(self.context, self.request, 'admin.html#thesaurus.html'), |
|
140 'close_form': True} |
|
141 |
137 |
142 |
138 @adapter_config(context=(IThesaurus, IAdminLayer, Interface), provides=ITableElementEditor) |
143 @adapter_config(context=(IThesaurus, IAdminLayer, Interface), provides=ITableElementEditor) |
139 class ThesaurusTableElementEditor(DefaultElementEditorAdapter): |
144 class ThesaurusTableElementEditor(DefaultElementEditorAdapter): |
140 """Thesaurus table element editor""" |
145 """Thesaurus table element editor""" |
141 |
146 |
152 """Thesaurus views header adapter""" |
157 """Thesaurus views header adapter""" |
153 |
158 |
154 @property |
159 @property |
155 def back_url(self): |
160 def back_url(self): |
156 site = get_parent(self.context, ISite) |
161 site = get_parent(self.context, ISite) |
157 return absolute_url(site, self.request, 'admin.html#utilities.html') |
162 return absolute_url(site, self.request, 'admin.html#thesaurus.html') |
158 |
163 |
159 back_target = None |
164 back_target = None |
160 icon_class = 'fa fa-fw fa-language' |
165 icon_class = 'fa fa-fw fa-language' |
161 |
166 |
162 @property |
167 @property |
163 def title(self): |
168 def title(self): |
164 request = check_request() |
169 request = check_request() |
165 translate = request.localizer.translate |
170 translate = request.localizer.translate |
166 return translate(_("Thesaurus « {0} »")).format(self.context.name) |
171 return translate(_("Thesaurus « {0} »")).format(self.context.title) |
167 |
172 |
168 |
173 |
169 @viewlet_config(name='properties.menu', layer=IAdminLayer, context=IThesaurus, manager=ISiteManagementMenu, |
174 @viewlet_config(name='properties.menu', layer=IAdminLayer, context=IThesaurus, manager=ISiteManagementMenu, |
170 permission='system.view', weight=1) |
175 permission='system.view', weight=1) |
171 @viewletmanager_config(name='properties.menu', layer=IAdminLayer, context=IThesaurus, provides=IPropertiesMenu) |
176 @viewletmanager_config(name='properties.menu', layer=IAdminLayer, context=IThesaurus, provides=IPropertiesMenu) |