--- 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"""