src/pyams_content/component/theme/zmi/manager.py
changeset 1389 1485db1e2b5e
parent 1296 38e2977b726b
child 1423 31c1bc24a308
equal deleted inserted replaced
1388:8c757af2fc50 1389:1485db1e2b5e
    15 from z3c.form import field
    15 from z3c.form import field
    16 from z3c.form.browser.checkbox import SingleCheckBoxFieldWidget
    16 from z3c.form.browser.checkbox import SingleCheckBoxFieldWidget
    17 from zope.interface import alsoProvides
    17 from zope.interface import alsoProvides
    18 
    18 
    19 from pyams_content import _
    19 from pyams_content import _
    20 from pyams_content.component.theme.interfaces import ICollectionsManager, ICollectionsManagerTarget, ITagsManager, \
    20 from pyams_content.component.theme.interfaces import ICollectionsManager, \
    21     ITagsManagerTarget, IThemesManager, IThemesManagerTarget
    21     ICollectionsManagerTarget, ITagsManager, ITagsManagerTarget, IThemesManager, \
       
    22     IThemesManagerTarget
    22 from pyams_content.interfaces import MANAGE_SITE_ROOT_PERMISSION, MANAGE_TOOL_PERMISSION
    23 from pyams_content.interfaces import MANAGE_SITE_ROOT_PERMISSION, MANAGE_TOOL_PERMISSION
    23 from pyams_content.zmi import pyams_content
    24 from pyams_content.zmi import pyams_content
    24 from pyams_form.form import ajax_config
    25 from pyams_form.form import ajax_config
    25 from pyams_form.group import NamedWidgetsGroup
    26 from pyams_form.group import NamedWidgetsGroup
    26 from pyams_pagelet.pagelet import pagelet_config
    27 from pyams_pagelet.pagelet import pagelet_config
    48     url = 'tags.html'
    49     url = 'tags.html'
    49     modal_target = True
    50     modal_target = True
    50 
    51 
    51 
    52 
    52 @pagelet_config(name='tags.html', context=ITagsManagerTarget, layer=IPyAMSLayer,
    53 @pagelet_config(name='tags.html', context=ITagsManagerTarget, layer=IPyAMSLayer,
    53                 permission=MANAGE_TOOL_PERMISSION)
    54                 permission=MANAGE_SITE_ROOT_PERMISSION)
    54 @ajax_config(name='tags.json', context=ITagsManagerTarget, layer=IPyAMSLayer)
    55 @ajax_config(name='tags.json', context=ITagsManagerTarget, layer=IPyAMSLayer)
    55 class TagsManagerEditForm(AdminDialogEditForm):
    56 class TagsManagerEditForm(AdminDialogEditForm):
    56     """Tags manager edit form"""
    57     """Tags manager edit form"""
    57 
    58 
    58     prefix = 'tags_manager.'
    59     prefix = 'tags_manager.'
    59 
    60 
    60     legend = _("Selected tags")
    61     legend = _("Selected tags")
    61     dialog_class = 'modal-large'
    62     dialog_class = 'modal-large'
    62 
    63 
    63     fields = field.Fields(ITagsManager)
    64     fields = field.Fields(ITagsManager)
    64     fields['enable_tags_search'].widgetFactory = SingleCheckBoxFieldWidget
       
    65     fields['enable_glossary'].widgetFactory = SingleCheckBoxFieldWidget
    65     fields['enable_glossary'].widgetFactory = SingleCheckBoxFieldWidget
    66 
    66 
    67     edit_permission = MANAGE_SITE_ROOT_PERMISSION
    67     edit_permission = MANAGE_SITE_ROOT_PERMISSION
    68 
    68 
    69     def getContent(self):
    69     def getContent(self):
    70         return ITagsManager(self.context)
    70         return ITagsManager(self.context)
    71 
    71 
    72     def updateWidgets(self, prefix=None):
    72     def updateWidgets(self, prefix=None):
    73         # We have to store thesaurus name if request header to be able to set extract name correctly
    73         # We have to store thesaurus name in request header
       
    74         # to be able to set extract name correctly
    74         # See :ref:`pyams_thesaurus.thesaurus.ThesaurusExtractsVocabulary`
    75         # See :ref:`pyams_thesaurus.thesaurus.ThesaurusExtractsVocabulary`
    75         if self.request.method == 'POST':
    76         if self.request.method == 'POST':
    76             param_name = '{}widgets.thesaurus_name:list'.format(self.prefix)
    77             param_name = '{}widgets.thesaurus_name:list'.format(self.prefix)
    77             param_value = self.request.params.get(param_name)
    78             param_value = self.request.params.get(param_name)
    78             if param_value is not None:
    79             if param_value is not None:
    86             'ams-change-handler': 'PyAMS_content.themes.updateThesaurus'
    87             'ams-change-handler': 'PyAMS_content.themes.updateThesaurus'
    87         }
    88         }
    88         alsoProvides(widget, IObjectData)
    89         alsoProvides(widget, IObjectData)
    89 
    90 
    90     def updateGroups(self):
    91     def updateGroups(self):
    91         self.add_group(NamedWidgetsGroup(self, 'tags_search', self.widgets,
       
    92                                          ('enable_tags_search', 'tags_search_target'),
       
    93                                          legend=_("Enable search by tag"),
       
    94                                          css_class='inner',
       
    95                                          switch=True,
       
    96                                          checkbox_switch=True,
       
    97                                          checkbox_field=ITagsManager['enable_tags_search']))
       
    98         self.add_group(NamedWidgetsGroup(self, 'glossary', self.widgets,
    92         self.add_group(NamedWidgetsGroup(self, 'glossary', self.widgets,
    99                                          ('enable_glossary', 'glossary_thesaurus_name'),
    93                                          ('enable_glossary', 'glossary_thesaurus_name'),
   100                                          legend=_("Enable glossary"),
    94                                          legend=_("Enable glossary"),
   101                                          css_class='inner',
    95                                          css_class='inner',
   102                                          switch=True,
    96                                          switch=True,
   135 
   129 
   136     def getContent(self):
   130     def getContent(self):
   137         return IThemesManager(self.context)
   131         return IThemesManager(self.context)
   138 
   132 
   139     def updateWidgets(self, prefix=None):
   133     def updateWidgets(self, prefix=None):
   140         # We have to store thesaurus name if request header to be able to set extract name correctly
   134         # We have to store thesaurus name in request header
       
   135         # to be able to set extract name correctly
   141         # See :ref:`pyams_thesaurus.thesaurus.ThesaurusExtractsVocabulary`
   136         # See :ref:`pyams_thesaurus.thesaurus.ThesaurusExtractsVocabulary`
   142         if self.request.method == 'POST':
   137         if self.request.method == 'POST':
   143             param_name = '{}widgets.thesaurus_name:list'.format(self.prefix)
   138             param_name = '{}widgets.thesaurus_name:list'.format(self.prefix)
   144             param_value = self.request.params.get(param_name)
   139             param_value = self.request.params.get(param_name)
   145             if param_value is not None:
   140             if param_value is not None:
   157 
   152 
   158 #
   153 #
   159 # Collections management view
   154 # Collections management view
   160 #
   155 #
   161 
   156 
   162 @viewlet_config(name='collections-manager.menu', context=ICollectionsManagerTarget, layer=IAdminLayer,
   157 @viewlet_config(name='collections-manager.menu', context=ICollectionsManagerTarget,
   163                 manager=IPropertiesMenu, permission=MANAGE_TOOL_PERMISSION, weight=42)
   158                 layer=IAdminLayer, manager=IPropertiesMenu, permission=MANAGE_TOOL_PERMISSION,
       
   159                 weight=42)
   164 class CollectionsManagerMenu(MenuItem):
   160 class CollectionsManagerMenu(MenuItem):
   165     """Collections menu"""
   161     """Collections menu"""
   166 
   162 
   167     label = _("Collections settings...")
   163     label = _("Collections settings...")
   168     icon_class = 'fa-book'
   164     icon_class = 'fa-book'
   169     url = 'collections.html'
   165     url = 'collections.html'
   170     modal_target = True
   166     modal_target = True
   171 
   167 
   172 
   168 
   173 @pagelet_config(name='collections.html', context=ICollectionsManagerTarget, layer=IPyAMSLayer,
   169 @pagelet_config(name='collections.html', context=ICollectionsManagerTarget, layer=IPyAMSLayer,
   174                 permission=MANAGE_TOOL_PERMISSION)
   170                 permission=MANAGE_SITE_ROOT_PERMISSION)
   175 @ajax_config(name='collections.json', context=ICollectionsManagerTarget, layer=IPyAMSLayer)
   171 @ajax_config(name='collections.json', context=ICollectionsManagerTarget, layer=IPyAMSLayer)
   176 class CollectionsManagerEditForm(AdminDialogEditForm):
   172 class CollectionsManagerEditForm(AdminDialogEditForm):
   177     """Collections manager edit form"""
   173     """Collections manager edit form"""
   178 
   174 
   179     prefix = 'collections_manager.'
   175     prefix = 'collections_manager.'
   180 
   176 
   181     legend = _("Selected collections")
   177     legend = _("Selected collections")
       
   178     dialog_class = 'modal-large'
   182 
   179 
   183     fields = field.Fields(ICollectionsManager)
   180     fields = field.Fields(ICollectionsManager)
   184     edit_permission = MANAGE_TOOL_PERMISSION
   181     edit_permission = MANAGE_SITE_ROOT_PERMISSION
   185 
   182 
   186     def getContent(self):
   183     def getContent(self):
   187         return ICollectionsManager(self.context)
   184         return ICollectionsManager(self.context)
   188 
   185 
   189     def updateWidgets(self, prefix=None):
   186     def updateWidgets(self, prefix=None):
   190         # We have to store thesaurus name if request header to be able to set extract name correctly
   187         # We have to store thesaurus name in request header
       
   188         # to be able to set extract name correctly
   191         # See :ref:`pyams_thesaurus.thesaurus.ThesaurusExtractsVocabulary`
   189         # See :ref:`pyams_thesaurus.thesaurus.ThesaurusExtractsVocabulary`
   192         if self.request.method == 'POST':
   190         if self.request.method == 'POST':
   193             param_name = '{}widgets.thesaurus_name:list'.format(self.prefix)
   191             param_name = '{}widgets.thesaurus_name:list'.format(self.prefix)
   194             param_value = self.request.params.get(param_name)
   192             param_value = self.request.params.get(param_name)
   195             if param_value is not None:
   193             if param_value is not None: