src/pyams_content/shared/view/zmi/theme.py
changeset 829 f933926ed0a1
parent 800 2b5460ecb254
child 1297 393e4f1812e1
equal deleted inserted replaced
828:bf12603398b2 829:f933926ed0a1
     7 # THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
     7 # THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
     8 # WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
     8 # WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
     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 from pyams_content.component.theme import ITagsManager
       
    13 
    12 
    14 __docformat__ = 'restructuredtext'
    13 __docformat__ = 'restructuredtext'
    15 
    14 
    16 
    15 
    17 # import standard library
    16 # import standard library
    18 
    17 
    19 # import interfaces
    18 # import interfaces
    20 from pyams_content.interfaces import MANAGE_CONTENT_PERMISSION
    19 from pyams_content.interfaces import MANAGE_CONTENT_PERMISSION
    21 from pyams_content.shared.view.interfaces import IWfView, IViewThemesSettings, IViewsManager, IViewTagsSettings
    20 from pyams_content.shared.view.interfaces import IWfView, IViewThemesSettings, IViewsManager, IViewTagsSettings, \
       
    21     IViewCollectionsSettings
    22 from pyams_form.interfaces.form import IWidgetForm, IUncheckedEditFormButtons
    22 from pyams_form.interfaces.form import IWidgetForm, IUncheckedEditFormButtons
    23 from pyams_skin.interfaces import IInnerPage
    23 from pyams_skin.interfaces import IInnerPage
    24 from pyams_skin.layer import IPyAMSLayer
    24 from pyams_skin.layer import IPyAMSLayer
    25 from pyams_thesaurus.interfaces.thesaurus import IThesaurusContextManager
    25 from pyams_thesaurus.interfaces.thesaurus import IThesaurusContextManager
    26 from pyams_utils.interfaces import VIEW_SYSTEM_PERMISSION
    26 from pyams_utils.interfaces import VIEW_SYSTEM_PERMISSION
    27 from pyams_zmi.interfaces.menu import IPropertiesMenu
    27 from pyams_zmi.interfaces.menu import IPropertiesMenu
    28 from pyams_zmi.layer import IAdminLayer
    28 from pyams_zmi.layer import IAdminLayer
    29 from z3c.form.interfaces import INPUT_MODE
    29 from z3c.form.interfaces import INPUT_MODE
    30 
    30 
    31 # import packages
    31 # import packages
       
    32 from pyams_content.component.theme import ITagsManager
    32 from pyams_form.form import ajax_config
    33 from pyams_form.form import ajax_config
    33 from pyams_pagelet.pagelet import pagelet_config
    34 from pyams_pagelet.pagelet import pagelet_config
    34 from pyams_skin.viewlet.menu import MenuItem
    35 from pyams_skin.viewlet.menu import MenuItem
       
    36 from pyams_thesaurus.zmi.widget import ThesaurusTermsTreeFieldWidget
    35 from pyams_utils.registry import get_utility
    37 from pyams_utils.registry import get_utility
    36 from pyams_viewlet.viewlet import viewlet_config
    38 from pyams_viewlet.viewlet import viewlet_config
    37 from pyams_zmi.form import AdminEditForm
    39 from pyams_zmi.form import AdminEditForm
    38 from z3c.form import field, button
    40 from z3c.form import field, button
       
    41 from z3c.form.browser.checkbox import SingleCheckBoxFieldWidget
    39 from zope.interface import implementer, Interface
    42 from zope.interface import implementer, Interface
    40 
    43 
    41 from pyams_content import _
    44 from pyams_content import _
    42 
    45 
    43 
    46 
    60 @implementer(IWidgetForm, IInnerPage)
    63 @implementer(IWidgetForm, IInnerPage)
    61 class ViewTagsEditForm(AdminEditForm):
    64 class ViewTagsEditForm(AdminEditForm):
    62     """View tags settings edit form"""
    65     """View tags settings edit form"""
    63 
    66 
    64     legend = _("View tags settings")
    67     legend = _("View tags settings")
       
    68     label_css_class = 'control-label col-md-1'
       
    69     input_css_class = 'col-md-11'
    65 
    70 
    66     fields = field.Fields(IViewTagsSettings)
    71     fields = field.Fields(IViewTagsSettings)
       
    72     fields['select_context_tags'].widgetFactory = SingleCheckBoxFieldWidget
       
    73     fields['tags'].widgetFactory = ThesaurusTermsTreeFieldWidget
    67 
    74 
    68     @property
    75     @property
    69     def buttons(self):
    76     def buttons(self):
    70         if self.mode == INPUT_MODE:
    77         if self.mode == INPUT_MODE:
    71             return button.Buttons(IUncheckedEditFormButtons)
    78             return button.Buttons(IUncheckedEditFormButtons)
    74 
    81 
    75     def updateWidgets(self, prefix=None):
    82     def updateWidgets(self, prefix=None):
    76         super(ViewTagsEditForm, self).updateWidgets(prefix)
    83         super(ViewTagsEditForm, self).updateWidgets(prefix)
    77         if 'tags' in self.widgets:
    84         if 'tags' in self.widgets:
    78             manager = ITagsManager(self.request.root)
    85             manager = ITagsManager(self.request.root)
    79             self.widgets['tags'].thesaurus_name = manager.thesaurus_name
    86             widget = self.widgets['tags']
    80             self.widgets['tags'].extract_name = manager.extract_name
    87             widget.label_css_class = 'control-label col-md-2'
       
    88             widget.input_css_class = 'col-md-12'
       
    89             widget.thesaurus_name = manager.thesaurus_name
       
    90             widget.extract_name = manager.extract_name
    81 
    91 
    82 
    92 
    83 #
    93 #
    84 # Themes management
    94 # Themes management
    85 #
    95 #
    99 @implementer(IWidgetForm, IInnerPage)
   109 @implementer(IWidgetForm, IInnerPage)
   100 class ViewThemesEditForm(AdminEditForm):
   110 class ViewThemesEditForm(AdminEditForm):
   101     """View themes settings edit form"""
   111     """View themes settings edit form"""
   102 
   112 
   103     legend = _("View themes settings")
   113     legend = _("View themes settings")
       
   114     label_css_class = 'control-label col-md-1'
       
   115     input_css_class = 'col-md-11'
   104 
   116 
   105     fields = field.Fields(IViewThemesSettings)
   117     fields = field.Fields(IViewThemesSettings)
       
   118     fields['select_context_themes'].widgetFactory = SingleCheckBoxFieldWidget
       
   119     fields['themes'].widgetFactory = ThesaurusTermsTreeFieldWidget
   106 
   120 
   107     @property
   121     @property
   108     def buttons(self):
   122     def buttons(self):
   109         if self.mode == INPUT_MODE:
   123         if self.mode == INPUT_MODE:
   110             return button.Buttons(IUncheckedEditFormButtons)
   124             return button.Buttons(IUncheckedEditFormButtons)
   112             return button.Buttons(Interface)
   126             return button.Buttons(Interface)
   113 
   127 
   114     def updateWidgets(self, prefix=None):
   128     def updateWidgets(self, prefix=None):
   115         super(ViewThemesEditForm, self).updateWidgets(prefix)
   129         super(ViewThemesEditForm, self).updateWidgets(prefix)
   116         if 'themes' in self.widgets:
   130         if 'themes' in self.widgets:
   117             manager = get_utility(IViewsManager)
   131             manager = IThesaurusContextManager(get_utility(IViewsManager))
   118             self.widgets['themes'].thesaurus_name = IThesaurusContextManager(manager).thesaurus_name
   132             widget = self.widgets['themes']
       
   133             widget.label_css_class = 'control-label col-md-2'
       
   134             widget.input_css_class = 'col-md-12'
       
   135             widget.thesaurus_name = manager.thesaurus_name
       
   136             widget.extract_name = manager.extract_name
       
   137 
       
   138 
       
   139 #
       
   140 # Collections management
       
   141 #
       
   142 
       
   143 @viewlet_config(name='collections.menu', context=IWfView, layer=IAdminLayer,
       
   144                 manager=IPropertiesMenu, permission=VIEW_SYSTEM_PERMISSION, weight=354)
       
   145 class ViewCollectionsMenu(MenuItem):
       
   146     """View collections menu"""
       
   147 
       
   148     label = _("Collections...")
       
   149     icon_class = 'fa-book'
       
   150     url = '#collections.html'
       
   151 
       
   152 
       
   153 @pagelet_config(name='collections.html', context=IWfView, layer=IPyAMSLayer, permission=VIEW_SYSTEM_PERMISSION)
       
   154 @ajax_config(name='collections.json', context=IWfView, layer=IPyAMSLayer, permission=MANAGE_CONTENT_PERMISSION)
       
   155 @implementer(IWidgetForm, IInnerPage)
       
   156 class ViewCollectionsEditForm(AdminEditForm):
       
   157     """View collections settings edit form"""
       
   158 
       
   159     legend = _("View collections settings")
       
   160     label_css_class = 'control-label col-md-1'
       
   161     input_css_class = 'col-md-11'
       
   162 
       
   163     fields = field.Fields(IViewCollectionsSettings)
       
   164     fields['select_context_collections'].widgetFactory = SingleCheckBoxFieldWidget
       
   165     fields['collections'].widgetFactory = ThesaurusTermsTreeFieldWidget
       
   166 
       
   167     @property
       
   168     def buttons(self):
       
   169         if self.mode == INPUT_MODE:
       
   170             return button.Buttons(IUncheckedEditFormButtons)
       
   171         else:
       
   172             return button.Buttons(Interface)
       
   173 
       
   174     def updateWidgets(self, prefix=None):
       
   175         super(ViewCollectionsEditForm, self).updateWidgets(prefix)
       
   176         if 'collections' in self.widgets:
       
   177             manager = IThesaurusContextManager(get_utility(IViewsManager))
       
   178             widget = self.widgets['collections']
       
   179             widget.label_css_class = 'control-label col-md-2'
       
   180             widget.input_css_class = 'col-md-12'
       
   181             widget.thesaurus_name = manager.thesaurus_name
       
   182             widget.extract_name = manager.extract_name