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_content.component.theme import ITagsManager |
|
13 |
12 |
14 __docformat__ = 'restructuredtext' |
13 __docformat__ = 'restructuredtext' |
15 |
14 |
16 |
15 |
17 # import standard library |
16 # import standard library |
18 |
17 |
19 # import interfaces |
18 # import interfaces |
20 from pyams_content.interfaces import MANAGE_CONTENT_PERMISSION |
19 from pyams_content.interfaces import MANAGE_CONTENT_PERMISSION |
21 from pyams_content.shared.view.interfaces import IWfView, IViewThemesSettings, IViewsManager, IViewTagsSettings |
20 from pyams_content.shared.view.interfaces import IWfView, IViewThemesSettings, IViewsManager, IViewTagsSettings, \ |
|
21 IViewCollectionsSettings |
22 from pyams_form.interfaces.form import IWidgetForm, IUncheckedEditFormButtons |
22 from pyams_form.interfaces.form import IWidgetForm, IUncheckedEditFormButtons |
23 from pyams_skin.interfaces import IInnerPage |
23 from pyams_skin.interfaces import IInnerPage |
24 from pyams_skin.layer import IPyAMSLayer |
24 from pyams_skin.layer import IPyAMSLayer |
25 from pyams_thesaurus.interfaces.thesaurus import IThesaurusContextManager |
25 from pyams_thesaurus.interfaces.thesaurus import IThesaurusContextManager |
26 from pyams_utils.interfaces import VIEW_SYSTEM_PERMISSION |
26 from pyams_utils.interfaces import VIEW_SYSTEM_PERMISSION |
27 from pyams_zmi.interfaces.menu import IPropertiesMenu |
27 from pyams_zmi.interfaces.menu import IPropertiesMenu |
28 from pyams_zmi.layer import IAdminLayer |
28 from pyams_zmi.layer import IAdminLayer |
29 from z3c.form.interfaces import INPUT_MODE |
29 from z3c.form.interfaces import INPUT_MODE |
30 |
30 |
31 # import packages |
31 # import packages |
|
32 from pyams_content.component.theme import ITagsManager |
32 from pyams_form.form import ajax_config |
33 from pyams_form.form import ajax_config |
33 from pyams_pagelet.pagelet import pagelet_config |
34 from pyams_pagelet.pagelet import pagelet_config |
34 from pyams_skin.viewlet.menu import MenuItem |
35 from pyams_skin.viewlet.menu import MenuItem |
|
36 from pyams_thesaurus.zmi.widget import ThesaurusTermsTreeFieldWidget |
35 from pyams_utils.registry import get_utility |
37 from pyams_utils.registry import get_utility |
36 from pyams_viewlet.viewlet import viewlet_config |
38 from pyams_viewlet.viewlet import viewlet_config |
37 from pyams_zmi.form import AdminEditForm |
39 from pyams_zmi.form import AdminEditForm |
38 from z3c.form import field, button |
40 from z3c.form import field, button |
|
41 from z3c.form.browser.checkbox import SingleCheckBoxFieldWidget |
39 from zope.interface import implementer, Interface |
42 from zope.interface import implementer, Interface |
40 |
43 |
41 from pyams_content import _ |
44 from pyams_content import _ |
42 |
45 |
43 |
46 |
60 @implementer(IWidgetForm, IInnerPage) |
63 @implementer(IWidgetForm, IInnerPage) |
61 class ViewTagsEditForm(AdminEditForm): |
64 class ViewTagsEditForm(AdminEditForm): |
62 """View tags settings edit form""" |
65 """View tags settings edit form""" |
63 |
66 |
64 legend = _("View tags settings") |
67 legend = _("View tags settings") |
|
68 label_css_class = 'control-label col-md-1' |
|
69 input_css_class = 'col-md-11' |
65 |
70 |
66 fields = field.Fields(IViewTagsSettings) |
71 fields = field.Fields(IViewTagsSettings) |
|
72 fields['select_context_tags'].widgetFactory = SingleCheckBoxFieldWidget |
|
73 fields['tags'].widgetFactory = ThesaurusTermsTreeFieldWidget |
67 |
74 |
68 @property |
75 @property |
69 def buttons(self): |
76 def buttons(self): |
70 if self.mode == INPUT_MODE: |
77 if self.mode == INPUT_MODE: |
71 return button.Buttons(IUncheckedEditFormButtons) |
78 return button.Buttons(IUncheckedEditFormButtons) |
74 |
81 |
75 def updateWidgets(self, prefix=None): |
82 def updateWidgets(self, prefix=None): |
76 super(ViewTagsEditForm, self).updateWidgets(prefix) |
83 super(ViewTagsEditForm, self).updateWidgets(prefix) |
77 if 'tags' in self.widgets: |
84 if 'tags' in self.widgets: |
78 manager = ITagsManager(self.request.root) |
85 manager = ITagsManager(self.request.root) |
79 self.widgets['tags'].thesaurus_name = manager.thesaurus_name |
86 widget = self.widgets['tags'] |
80 self.widgets['tags'].extract_name = manager.extract_name |
87 widget.label_css_class = 'control-label col-md-2' |
|
88 widget.input_css_class = 'col-md-12' |
|
89 widget.thesaurus_name = manager.thesaurus_name |
|
90 widget.extract_name = manager.extract_name |
81 |
91 |
82 |
92 |
83 # |
93 # |
84 # Themes management |
94 # Themes management |
85 # |
95 # |
99 @implementer(IWidgetForm, IInnerPage) |
109 @implementer(IWidgetForm, IInnerPage) |
100 class ViewThemesEditForm(AdminEditForm): |
110 class ViewThemesEditForm(AdminEditForm): |
101 """View themes settings edit form""" |
111 """View themes settings edit form""" |
102 |
112 |
103 legend = _("View themes settings") |
113 legend = _("View themes settings") |
|
114 label_css_class = 'control-label col-md-1' |
|
115 input_css_class = 'col-md-11' |
104 |
116 |
105 fields = field.Fields(IViewThemesSettings) |
117 fields = field.Fields(IViewThemesSettings) |
|
118 fields['select_context_themes'].widgetFactory = SingleCheckBoxFieldWidget |
|
119 fields['themes'].widgetFactory = ThesaurusTermsTreeFieldWidget |
106 |
120 |
107 @property |
121 @property |
108 def buttons(self): |
122 def buttons(self): |
109 if self.mode == INPUT_MODE: |
123 if self.mode == INPUT_MODE: |
110 return button.Buttons(IUncheckedEditFormButtons) |
124 return button.Buttons(IUncheckedEditFormButtons) |
112 return button.Buttons(Interface) |
126 return button.Buttons(Interface) |
113 |
127 |
114 def updateWidgets(self, prefix=None): |
128 def updateWidgets(self, prefix=None): |
115 super(ViewThemesEditForm, self).updateWidgets(prefix) |
129 super(ViewThemesEditForm, self).updateWidgets(prefix) |
116 if 'themes' in self.widgets: |
130 if 'themes' in self.widgets: |
117 manager = get_utility(IViewsManager) |
131 manager = IThesaurusContextManager(get_utility(IViewsManager)) |
118 self.widgets['themes'].thesaurus_name = IThesaurusContextManager(manager).thesaurus_name |
132 widget = self.widgets['themes'] |
|
133 widget.label_css_class = 'control-label col-md-2' |
|
134 widget.input_css_class = 'col-md-12' |
|
135 widget.thesaurus_name = manager.thesaurus_name |
|
136 widget.extract_name = manager.extract_name |
|
137 |
|
138 |
|
139 # |
|
140 # Collections management |
|
141 # |
|
142 |
|
143 @viewlet_config(name='collections.menu', context=IWfView, layer=IAdminLayer, |
|
144 manager=IPropertiesMenu, permission=VIEW_SYSTEM_PERMISSION, weight=354) |
|
145 class ViewCollectionsMenu(MenuItem): |
|
146 """View collections menu""" |
|
147 |
|
148 label = _("Collections...") |
|
149 icon_class = 'fa-book' |
|
150 url = '#collections.html' |
|
151 |
|
152 |
|
153 @pagelet_config(name='collections.html', context=IWfView, layer=IPyAMSLayer, permission=VIEW_SYSTEM_PERMISSION) |
|
154 @ajax_config(name='collections.json', context=IWfView, layer=IPyAMSLayer, permission=MANAGE_CONTENT_PERMISSION) |
|
155 @implementer(IWidgetForm, IInnerPage) |
|
156 class ViewCollectionsEditForm(AdminEditForm): |
|
157 """View collections settings edit form""" |
|
158 |
|
159 legend = _("View collections settings") |
|
160 label_css_class = 'control-label col-md-1' |
|
161 input_css_class = 'col-md-11' |
|
162 |
|
163 fields = field.Fields(IViewCollectionsSettings) |
|
164 fields['select_context_collections'].widgetFactory = SingleCheckBoxFieldWidget |
|
165 fields['collections'].widgetFactory = ThesaurusTermsTreeFieldWidget |
|
166 |
|
167 @property |
|
168 def buttons(self): |
|
169 if self.mode == INPUT_MODE: |
|
170 return button.Buttons(IUncheckedEditFormButtons) |
|
171 else: |
|
172 return button.Buttons(Interface) |
|
173 |
|
174 def updateWidgets(self, prefix=None): |
|
175 super(ViewCollectionsEditForm, self).updateWidgets(prefix) |
|
176 if 'collections' in self.widgets: |
|
177 manager = IThesaurusContextManager(get_utility(IViewsManager)) |
|
178 widget = self.widgets['collections'] |
|
179 widget.label_css_class = 'control-label col-md-2' |
|
180 widget.input_css_class = 'col-md-12' |
|
181 widget.thesaurus_name = manager.thesaurus_name |
|
182 widget.extract_name = manager.extract_name |