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 |
12 |
13 from z3c.form import field |
13 from z3c.form import field |
|
14 from z3c.form.browser.checkbox import SingleCheckBoxFieldWidget |
14 from zope.interface import implementer |
15 from zope.interface import implementer |
15 |
16 |
16 from pyams_content.component.theme import ICollectionsInfo, ICollectionsManager, \ |
17 from pyams_content.component.theme import ICollectionsInfo, ICollectionsManager, \ |
17 ICollectionsManagerTarget, ICollectionsTarget, ITagsInfo, ITagsManager, ITagsTarget, \ |
18 ICollectionsTarget, ITagsInfo, ITagsManager, ITagsTarget, \ |
18 IThemesInfo, IThemesManager, IThemesManagerTarget, IThemesTarget |
19 IThemesInfo, IThemesManager, IThemesManagerTarget, IThemesTarget |
19 from pyams_content.interfaces import MANAGE_CONTENT_PERMISSION |
20 from pyams_content.interfaces import MANAGE_CONTENT_PERMISSION |
20 from pyams_content.shared.common.zmi import WfSharedContentHeaderAdapter |
21 from pyams_content.shared.common.zmi import WfSharedContentHeaderAdapter |
21 from pyams_form.form import AJAXEditForm, EditForm, ajax_config |
22 from pyams_form.form import AJAXEditForm, EditForm, ajax_config |
|
23 from pyams_form.group import NamedWidgetsGroup |
22 from pyams_form.interfaces.form import IWidgetForm |
24 from pyams_form.interfaces.form import IWidgetForm |
23 from pyams_pagelet.pagelet import pagelet_config |
25 from pyams_pagelet.pagelet import pagelet_config |
24 from pyams_skin.interfaces import IDialog, IInnerPage, IPageHeader |
26 from pyams_skin.interfaces import IDialog, IInnerPage, IPageHeader |
25 from pyams_skin.layer import IPyAMSLayer |
27 from pyams_skin.layer import IPyAMSLayer |
26 from pyams_skin.viewlet.menu import MenuItem |
28 from pyams_skin.viewlet.menu import MenuItem |
88 # |
90 # |
89 # Themes management |
91 # Themes management |
90 # |
92 # |
91 |
93 |
92 @viewlet_config(name='themes.menu', context=IThemesTarget, layer=IAdminLayer, |
94 @viewlet_config(name='themes.menu', context=IThemesTarget, layer=IAdminLayer, |
93 manager=IPropertiesMenu, permission=VIEW_SYSTEM_PERMISSION, weight=352) |
95 manager=IPropertiesMenu, permission=VIEW_SYSTEM_PERMISSION, weight=360) |
94 class ThemesMenu(MenuItem): |
96 class ThemesMenu(MenuItem): |
95 """Themes menu""" |
97 """Themes menu""" |
96 |
98 |
97 label = _("Themes...") |
99 label = _("Themes...") |
98 icon_class = 'fa-tags' |
100 icon_class = 'fa-tags' |
105 legend = _("Content themes") |
107 legend = _("Content themes") |
106 |
108 |
107 label_css_class = 'control-label hidden' |
109 label_css_class = 'control-label hidden' |
108 input_css_class = 'col-md-12' |
110 input_css_class = 'col-md-12' |
109 |
111 |
110 fields = field.Fields(IThemesInfo) |
112 @property |
111 fields['themes'].widgetFactory = ThesaurusTermsTreeFieldWidget |
113 def fields(self): |
|
114 if IThemesInfo(self.context).can_inherit: |
|
115 fields = field.Fields(IThemesInfo).select('no_inherit', 'themes') |
|
116 fields['no_inherit'].widgetFactory = SingleCheckBoxFieldWidget |
|
117 else: |
|
118 fields = field.Fields(IThemesInfo).select('themes') |
|
119 fields['themes'].widgetFactory = ThesaurusTermsTreeFieldWidget |
|
120 return fields |
112 |
121 |
113 edit_permission = MANAGE_CONTENT_PERMISSION |
122 edit_permission = MANAGE_CONTENT_PERMISSION |
|
123 |
|
124 def updateGroups(self): |
|
125 if IThemesInfo(self.context).can_inherit: |
|
126 group = NamedWidgetsGroup(self, 'themes', self.widgets, |
|
127 ('no_inherit', 'themes'), |
|
128 legend=_("Don't inherit parent themes"), |
|
129 css_class='inner', |
|
130 switch=True, |
|
131 checkbox_switch=True, |
|
132 checkbox_mode='disable', |
|
133 checkbox_field=IThemesInfo['no_inherit']) |
|
134 else: |
|
135 group = NamedWidgetsGroup(self, 'themes', self.widgets, (), css_class='inner') |
|
136 self.add_group(group) |
|
137 super(BaseThemesEditForm, self).updateGroups() |
114 |
138 |
115 def updateWidgets(self, prefix=None): |
139 def updateWidgets(self, prefix=None): |
116 super(BaseThemesEditForm, self).updateWidgets(prefix) |
140 super(BaseThemesEditForm, self).updateWidgets(prefix) |
117 if 'themes' in self.widgets: |
141 if 'themes' in self.widgets: |
118 widget = self.widgets['themes'] |
142 widget = self.widgets['themes'] |
127 """Shared content themes header adapter""" |
151 """Shared content themes header adapter""" |
128 |
152 |
129 icon_class = 'fa fa-fw fa-tags' |
153 icon_class = 'fa fa-fw fa-tags' |
130 |
154 |
131 |
155 |
132 @pagelet_config(name='themes.html', context=IThemesTarget, layer=IPyAMSLayer, permission=VIEW_SYSTEM_PERMISSION) |
156 @pagelet_config(name='themes.html', context=IThemesTarget, layer=IPyAMSLayer, |
133 @ajax_config(name='themes.json', context=IThemesTarget, layer=IPyAMSLayer, base=AJAXEditForm) |
157 permission=VIEW_SYSTEM_PERMISSION) |
|
158 @ajax_config(name='themes.json', context=IThemesTarget, layer=IPyAMSLayer, |
|
159 base=AJAXEditForm) |
134 @implementer(IWidgetForm, IInnerPage) |
160 @implementer(IWidgetForm, IInnerPage) |
135 class ThemesEditForm(BaseThemesEditForm, AdminEditForm): |
161 class ThemesEditForm(BaseThemesEditForm, AdminEditForm): |
136 """Themes edit form""" |
162 """Themes edit form""" |
137 |
163 |
138 |
164 |
139 @pagelet_config(name='themes-dialog.html', context=IThemesTarget, layer=IPyAMSLayer, permission=VIEW_SYSTEM_PERMISSION) |
165 @pagelet_config(name='themes-dialog.html', context=IThemesTarget, layer=IPyAMSLayer, |
140 @ajax_config(name='themes-dialog.json', context=IThemesTarget, layer=IPyAMSLayer, base=AJAXEditForm) |
166 permission=VIEW_SYSTEM_PERMISSION) |
|
167 @ajax_config(name='themes-dialog.json', context=IThemesTarget, layer=IPyAMSLayer, |
|
168 base=AJAXEditForm) |
141 @implementer(IDialog) |
169 @implementer(IDialog) |
142 class DialogThemesEditForm(BaseThemesEditForm, AdminDialogEditForm): |
170 class DialogThemesEditForm(BaseThemesEditForm, AdminDialogEditForm): |
143 """Dialog themes edit form""" |
171 """Dialog themes edit form""" |
144 |
172 |
145 dialog_class = 'modal-large' |
173 dialog_class = 'modal-large' |
148 # |
176 # |
149 # Collections management |
177 # Collections management |
150 # |
178 # |
151 |
179 |
152 @viewlet_config(name='collections.menu', context=ICollectionsTarget, layer=IAdminLayer, |
180 @viewlet_config(name='collections.menu', context=ICollectionsTarget, layer=IAdminLayer, |
153 manager=IPropertiesMenu, permission=VIEW_SYSTEM_PERMISSION, weight=354) |
181 manager=IPropertiesMenu, permission=VIEW_SYSTEM_PERMISSION, weight=370) |
154 class CollectionsMenu(MenuItem): |
182 class CollectionsMenu(MenuItem): |
155 """Collections menu""" |
183 """Collections menu""" |
156 |
184 |
157 label = _("Collections...") |
185 label = _("Collections...") |
158 icon_class = 'fa-book' |
186 icon_class = 'fa-book' |