src/pyams_content/component/theme/zmi/__init__.py
changeset 1423 31c1bc24a308
parent 1389 1485db1e2b5e
child 1448 0f646872d21b
equal deleted inserted replaced
1422:d3713e98bba0 1423:31c1bc24a308
     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'