diff -r d3713e98bba0 -r 31c1bc24a308 src/pyams_content/component/theme/zmi/__init__.py --- a/src/pyams_content/component/theme/zmi/__init__.py Tue Sep 08 12:23:21 2020 +0200 +++ b/src/pyams_content/component/theme/zmi/__init__.py Fri Nov 13 13:01:02 2020 +0100 @@ -11,14 +11,16 @@ # from z3c.form import field +from z3c.form.browser.checkbox import SingleCheckBoxFieldWidget from zope.interface import implementer from pyams_content.component.theme import ICollectionsInfo, ICollectionsManager, \ - ICollectionsManagerTarget, ICollectionsTarget, ITagsInfo, ITagsManager, ITagsTarget, \ + ICollectionsTarget, ITagsInfo, ITagsManager, ITagsTarget, \ IThemesInfo, IThemesManager, IThemesManagerTarget, IThemesTarget from pyams_content.interfaces import MANAGE_CONTENT_PERMISSION from pyams_content.shared.common.zmi import WfSharedContentHeaderAdapter from pyams_form.form import AJAXEditForm, EditForm, ajax_config +from pyams_form.group import NamedWidgetsGroup from pyams_form.interfaces.form import IWidgetForm from pyams_pagelet.pagelet import pagelet_config from pyams_skin.interfaces import IDialog, IInnerPage, IPageHeader @@ -90,7 +92,7 @@ # @viewlet_config(name='themes.menu', context=IThemesTarget, layer=IAdminLayer, - manager=IPropertiesMenu, permission=VIEW_SYSTEM_PERMISSION, weight=352) + manager=IPropertiesMenu, permission=VIEW_SYSTEM_PERMISSION, weight=360) class ThemesMenu(MenuItem): """Themes menu""" @@ -107,11 +109,33 @@ label_css_class = 'control-label hidden' input_css_class = 'col-md-12' - fields = field.Fields(IThemesInfo) - fields['themes'].widgetFactory = ThesaurusTermsTreeFieldWidget + @property + def fields(self): + if IThemesInfo(self.context).can_inherit: + fields = field.Fields(IThemesInfo).select('no_inherit', 'themes') + fields['no_inherit'].widgetFactory = SingleCheckBoxFieldWidget + else: + fields = field.Fields(IThemesInfo).select('themes') + fields['themes'].widgetFactory = ThesaurusTermsTreeFieldWidget + return fields edit_permission = MANAGE_CONTENT_PERMISSION + def updateGroups(self): + if IThemesInfo(self.context).can_inherit: + group = NamedWidgetsGroup(self, 'themes', self.widgets, + ('no_inherit', 'themes'), + legend=_("Don't inherit parent themes"), + css_class='inner', + switch=True, + checkbox_switch=True, + checkbox_mode='disable', + checkbox_field=IThemesInfo['no_inherit']) + else: + group = NamedWidgetsGroup(self, 'themes', self.widgets, (), css_class='inner') + self.add_group(group) + super(BaseThemesEditForm, self).updateGroups() + def updateWidgets(self, prefix=None): super(BaseThemesEditForm, self).updateWidgets(prefix) if 'themes' in self.widgets: @@ -129,15 +153,19 @@ icon_class = 'fa fa-fw fa-tags' -@pagelet_config(name='themes.html', context=IThemesTarget, layer=IPyAMSLayer, permission=VIEW_SYSTEM_PERMISSION) -@ajax_config(name='themes.json', context=IThemesTarget, layer=IPyAMSLayer, base=AJAXEditForm) +@pagelet_config(name='themes.html', context=IThemesTarget, layer=IPyAMSLayer, + permission=VIEW_SYSTEM_PERMISSION) +@ajax_config(name='themes.json', context=IThemesTarget, layer=IPyAMSLayer, + base=AJAXEditForm) @implementer(IWidgetForm, IInnerPage) class ThemesEditForm(BaseThemesEditForm, AdminEditForm): """Themes edit form""" -@pagelet_config(name='themes-dialog.html', context=IThemesTarget, layer=IPyAMSLayer, permission=VIEW_SYSTEM_PERMISSION) -@ajax_config(name='themes-dialog.json', context=IThemesTarget, layer=IPyAMSLayer, base=AJAXEditForm) +@pagelet_config(name='themes-dialog.html', context=IThemesTarget, layer=IPyAMSLayer, + permission=VIEW_SYSTEM_PERMISSION) +@ajax_config(name='themes-dialog.json', context=IThemesTarget, layer=IPyAMSLayer, + base=AJAXEditForm) @implementer(IDialog) class DialogThemesEditForm(BaseThemesEditForm, AdminDialogEditForm): """Dialog themes edit form""" @@ -150,7 +178,7 @@ # @viewlet_config(name='collections.menu', context=ICollectionsTarget, layer=IAdminLayer, - manager=IPropertiesMenu, permission=VIEW_SYSTEM_PERMISSION, weight=354) + manager=IPropertiesMenu, permission=VIEW_SYSTEM_PERMISSION, weight=370) class CollectionsMenu(MenuItem): """Collections menu"""