15 from z3c.form import field |
15 from z3c.form import field |
16 from z3c.form.browser.checkbox import SingleCheckBoxFieldWidget |
16 from z3c.form.browser.checkbox import SingleCheckBoxFieldWidget |
17 from zope.interface import alsoProvides |
17 from zope.interface import alsoProvides |
18 |
18 |
19 from pyams_content import _ |
19 from pyams_content import _ |
20 from pyams_content.component.theme.interfaces import ICollectionsManager, ICollectionsManagerTarget, ITagsManager, \ |
20 from pyams_content.component.theme.interfaces import ICollectionsManager, \ |
21 ITagsManagerTarget, IThemesManager, IThemesManagerTarget |
21 ICollectionsManagerTarget, ITagsManager, ITagsManagerTarget, IThemesManager, \ |
|
22 IThemesManagerTarget |
22 from pyams_content.interfaces import MANAGE_SITE_ROOT_PERMISSION, MANAGE_TOOL_PERMISSION |
23 from pyams_content.interfaces import MANAGE_SITE_ROOT_PERMISSION, MANAGE_TOOL_PERMISSION |
23 from pyams_content.zmi import pyams_content |
24 from pyams_content.zmi import pyams_content |
24 from pyams_form.form import ajax_config |
25 from pyams_form.form import ajax_config |
25 from pyams_form.group import NamedWidgetsGroup |
26 from pyams_form.group import NamedWidgetsGroup |
26 from pyams_pagelet.pagelet import pagelet_config |
27 from pyams_pagelet.pagelet import pagelet_config |
48 url = 'tags.html' |
49 url = 'tags.html' |
49 modal_target = True |
50 modal_target = True |
50 |
51 |
51 |
52 |
52 @pagelet_config(name='tags.html', context=ITagsManagerTarget, layer=IPyAMSLayer, |
53 @pagelet_config(name='tags.html', context=ITagsManagerTarget, layer=IPyAMSLayer, |
53 permission=MANAGE_TOOL_PERMISSION) |
54 permission=MANAGE_SITE_ROOT_PERMISSION) |
54 @ajax_config(name='tags.json', context=ITagsManagerTarget, layer=IPyAMSLayer) |
55 @ajax_config(name='tags.json', context=ITagsManagerTarget, layer=IPyAMSLayer) |
55 class TagsManagerEditForm(AdminDialogEditForm): |
56 class TagsManagerEditForm(AdminDialogEditForm): |
56 """Tags manager edit form""" |
57 """Tags manager edit form""" |
57 |
58 |
58 prefix = 'tags_manager.' |
59 prefix = 'tags_manager.' |
59 |
60 |
60 legend = _("Selected tags") |
61 legend = _("Selected tags") |
61 dialog_class = 'modal-large' |
62 dialog_class = 'modal-large' |
62 |
63 |
63 fields = field.Fields(ITagsManager) |
64 fields = field.Fields(ITagsManager) |
64 fields['enable_tags_search'].widgetFactory = SingleCheckBoxFieldWidget |
|
65 fields['enable_glossary'].widgetFactory = SingleCheckBoxFieldWidget |
65 fields['enable_glossary'].widgetFactory = SingleCheckBoxFieldWidget |
66 |
66 |
67 edit_permission = MANAGE_SITE_ROOT_PERMISSION |
67 edit_permission = MANAGE_SITE_ROOT_PERMISSION |
68 |
68 |
69 def getContent(self): |
69 def getContent(self): |
70 return ITagsManager(self.context) |
70 return ITagsManager(self.context) |
71 |
71 |
72 def updateWidgets(self, prefix=None): |
72 def updateWidgets(self, prefix=None): |
73 # We have to store thesaurus name if request header to be able to set extract name correctly |
73 # We have to store thesaurus name in request header |
|
74 # to be able to set extract name correctly |
74 # See :ref:`pyams_thesaurus.thesaurus.ThesaurusExtractsVocabulary` |
75 # See :ref:`pyams_thesaurus.thesaurus.ThesaurusExtractsVocabulary` |
75 if self.request.method == 'POST': |
76 if self.request.method == 'POST': |
76 param_name = '{}widgets.thesaurus_name:list'.format(self.prefix) |
77 param_name = '{}widgets.thesaurus_name:list'.format(self.prefix) |
77 param_value = self.request.params.get(param_name) |
78 param_value = self.request.params.get(param_name) |
78 if param_value is not None: |
79 if param_value is not None: |
86 'ams-change-handler': 'PyAMS_content.themes.updateThesaurus' |
87 'ams-change-handler': 'PyAMS_content.themes.updateThesaurus' |
87 } |
88 } |
88 alsoProvides(widget, IObjectData) |
89 alsoProvides(widget, IObjectData) |
89 |
90 |
90 def updateGroups(self): |
91 def updateGroups(self): |
91 self.add_group(NamedWidgetsGroup(self, 'tags_search', self.widgets, |
|
92 ('enable_tags_search', 'tags_search_target'), |
|
93 legend=_("Enable search by tag"), |
|
94 css_class='inner', |
|
95 switch=True, |
|
96 checkbox_switch=True, |
|
97 checkbox_field=ITagsManager['enable_tags_search'])) |
|
98 self.add_group(NamedWidgetsGroup(self, 'glossary', self.widgets, |
92 self.add_group(NamedWidgetsGroup(self, 'glossary', self.widgets, |
99 ('enable_glossary', 'glossary_thesaurus_name'), |
93 ('enable_glossary', 'glossary_thesaurus_name'), |
100 legend=_("Enable glossary"), |
94 legend=_("Enable glossary"), |
101 css_class='inner', |
95 css_class='inner', |
102 switch=True, |
96 switch=True, |
135 |
129 |
136 def getContent(self): |
130 def getContent(self): |
137 return IThemesManager(self.context) |
131 return IThemesManager(self.context) |
138 |
132 |
139 def updateWidgets(self, prefix=None): |
133 def updateWidgets(self, prefix=None): |
140 # We have to store thesaurus name if request header to be able to set extract name correctly |
134 # We have to store thesaurus name in request header |
|
135 # to be able to set extract name correctly |
141 # See :ref:`pyams_thesaurus.thesaurus.ThesaurusExtractsVocabulary` |
136 # See :ref:`pyams_thesaurus.thesaurus.ThesaurusExtractsVocabulary` |
142 if self.request.method == 'POST': |
137 if self.request.method == 'POST': |
143 param_name = '{}widgets.thesaurus_name:list'.format(self.prefix) |
138 param_name = '{}widgets.thesaurus_name:list'.format(self.prefix) |
144 param_value = self.request.params.get(param_name) |
139 param_value = self.request.params.get(param_name) |
145 if param_value is not None: |
140 if param_value is not None: |
157 |
152 |
158 # |
153 # |
159 # Collections management view |
154 # Collections management view |
160 # |
155 # |
161 |
156 |
162 @viewlet_config(name='collections-manager.menu', context=ICollectionsManagerTarget, layer=IAdminLayer, |
157 @viewlet_config(name='collections-manager.menu', context=ICollectionsManagerTarget, |
163 manager=IPropertiesMenu, permission=MANAGE_TOOL_PERMISSION, weight=42) |
158 layer=IAdminLayer, manager=IPropertiesMenu, permission=MANAGE_TOOL_PERMISSION, |
|
159 weight=42) |
164 class CollectionsManagerMenu(MenuItem): |
160 class CollectionsManagerMenu(MenuItem): |
165 """Collections menu""" |
161 """Collections menu""" |
166 |
162 |
167 label = _("Collections settings...") |
163 label = _("Collections settings...") |
168 icon_class = 'fa-book' |
164 icon_class = 'fa-book' |
169 url = 'collections.html' |
165 url = 'collections.html' |
170 modal_target = True |
166 modal_target = True |
171 |
167 |
172 |
168 |
173 @pagelet_config(name='collections.html', context=ICollectionsManagerTarget, layer=IPyAMSLayer, |
169 @pagelet_config(name='collections.html', context=ICollectionsManagerTarget, layer=IPyAMSLayer, |
174 permission=MANAGE_TOOL_PERMISSION) |
170 permission=MANAGE_SITE_ROOT_PERMISSION) |
175 @ajax_config(name='collections.json', context=ICollectionsManagerTarget, layer=IPyAMSLayer) |
171 @ajax_config(name='collections.json', context=ICollectionsManagerTarget, layer=IPyAMSLayer) |
176 class CollectionsManagerEditForm(AdminDialogEditForm): |
172 class CollectionsManagerEditForm(AdminDialogEditForm): |
177 """Collections manager edit form""" |
173 """Collections manager edit form""" |
178 |
174 |
179 prefix = 'collections_manager.' |
175 prefix = 'collections_manager.' |
180 |
176 |
181 legend = _("Selected collections") |
177 legend = _("Selected collections") |
|
178 dialog_class = 'modal-large' |
182 |
179 |
183 fields = field.Fields(ICollectionsManager) |
180 fields = field.Fields(ICollectionsManager) |
184 edit_permission = MANAGE_TOOL_PERMISSION |
181 edit_permission = MANAGE_SITE_ROOT_PERMISSION |
185 |
182 |
186 def getContent(self): |
183 def getContent(self): |
187 return ICollectionsManager(self.context) |
184 return ICollectionsManager(self.context) |
188 |
185 |
189 def updateWidgets(self, prefix=None): |
186 def updateWidgets(self, prefix=None): |
190 # We have to store thesaurus name if request header to be able to set extract name correctly |
187 # We have to store thesaurus name in request header |
|
188 # to be able to set extract name correctly |
191 # See :ref:`pyams_thesaurus.thesaurus.ThesaurusExtractsVocabulary` |
189 # See :ref:`pyams_thesaurus.thesaurus.ThesaurusExtractsVocabulary` |
192 if self.request.method == 'POST': |
190 if self.request.method == 'POST': |
193 param_name = '{}widgets.thesaurus_name:list'.format(self.prefix) |
191 param_name = '{}widgets.thesaurus_name:list'.format(self.prefix) |
194 param_value = self.request.params.get(param_name) |
192 param_value = self.request.params.get(param_name) |
195 if param_value is not None: |
193 if param_value is not None: |