src/pyams_content/component/theme/zmi/__init__.py
changeset 1389 1485db1e2b5e
parent 829 f933926ed0a1
child 1423 31c1bc24a308
equal deleted inserted replaced
1388:8c757af2fc50 1389:1485db1e2b5e
     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 
    12 
    13 __docformat__ = 'restructuredtext'
    13 from z3c.form import field
       
    14 from zope.interface import implementer
    14 
    15 
    15 
    16 from pyams_content.component.theme import ICollectionsInfo, ICollectionsManager, \
    16 # import standard library
    17     ICollectionsManagerTarget, ICollectionsTarget, ITagsInfo, ITagsManager, ITagsTarget, \
    17 
    18     IThemesInfo, IThemesManager, IThemesManagerTarget, IThemesTarget
    18 # import interfaces
       
    19 from pyams_content.component.theme import ITagsTarget, ITagsInfo, ITagsManager, IThemesTarget, IThemesInfo, \
       
    20     IThemesManagerTarget, IThemesManager, ICollectionsTarget, ICollectionsInfo, ICollectionsManager, \
       
    21     ICollectionsManagerTarget
       
    22 from pyams_content.interfaces import MANAGE_CONTENT_PERMISSION
    19 from pyams_content.interfaces import MANAGE_CONTENT_PERMISSION
       
    20 from pyams_content.shared.common.zmi import WfSharedContentHeaderAdapter
       
    21 from pyams_form.form import AJAXEditForm, EditForm, ajax_config
    23 from pyams_form.interfaces.form import IWidgetForm
    22 from pyams_form.interfaces.form import IWidgetForm
    24 from pyams_skin.interfaces import IInnerPage, IPageHeader, IDialog
    23 from pyams_pagelet.pagelet import pagelet_config
       
    24 from pyams_skin.interfaces import IDialog, IInnerPage, IPageHeader
    25 from pyams_skin.layer import IPyAMSLayer
    25 from pyams_skin.layer import IPyAMSLayer
       
    26 from pyams_skin.viewlet.menu import MenuItem
       
    27 from pyams_thesaurus.zmi.widget import ThesaurusTermsTreeFieldWidget
       
    28 from pyams_utils.adapter import adapter_config
    26 from pyams_utils.interfaces import VIEW_SYSTEM_PERMISSION
    29 from pyams_utils.interfaces import VIEW_SYSTEM_PERMISSION
       
    30 from pyams_utils.traversing import get_parent
       
    31 from pyams_viewlet.viewlet import viewlet_config
       
    32 from pyams_zmi.form import AdminDialogEditForm, AdminEditForm
    27 from pyams_zmi.interfaces.menu import IPropertiesMenu
    33 from pyams_zmi.interfaces.menu import IPropertiesMenu
    28 from pyams_zmi.layer import IAdminLayer
    34 from pyams_zmi.layer import IAdminLayer
    29 
    35 
    30 # import packages
    36 
    31 from pyams_content.shared.common.zmi import WfSharedContentHeaderAdapter
    37 __docformat__ = 'restructuredtext'
    32 from pyams_form.form import ajax_config, AJAXEditForm, EditForm
       
    33 from pyams_pagelet.pagelet import pagelet_config
       
    34 from pyams_skin.viewlet.menu import MenuItem
       
    35 from pyams_thesaurus.zmi.widget import ThesaurusTermsTreeFieldWidget
       
    36 from pyams_utils.adapter import adapter_config
       
    37 from pyams_utils.traversing import get_parent
       
    38 from pyams_viewlet.viewlet import viewlet_config
       
    39 from pyams_zmi.form import AdminEditForm, AdminDialogEditForm
       
    40 from z3c.form import field
       
    41 from zope.interface import implementer
       
    42 
    38 
    43 from pyams_content import _
    39 from pyams_content import _
    44 
    40 
    45 
    41 
    46 #
    42 #
    55     label = _("Tags...")
    51     label = _("Tags...")
    56     icon_class = 'fa-tag'
    52     icon_class = 'fa-tag'
    57     url = '#tags.html'
    53     url = '#tags.html'
    58 
    54 
    59 
    55 
    60 @pagelet_config(name='tags.html', context=ITagsTarget, layer=IPyAMSLayer, permission=VIEW_SYSTEM_PERMISSION)
    56 @pagelet_config(name='tags.html', context=ITagsTarget, layer=IPyAMSLayer,
    61 @ajax_config(name='tags.json', context=ITagsTarget, layer=IPyAMSLayer, permission=MANAGE_CONTENT_PERMISSION)
    57                 permission=VIEW_SYSTEM_PERMISSION)
       
    58 @ajax_config(name='tags.json', context=ITagsTarget, layer=IPyAMSLayer,
       
    59              permission=MANAGE_CONTENT_PERMISSION)
    62 @implementer(IWidgetForm, IInnerPage)
    60 @implementer(IWidgetForm, IInnerPage)
    63 class TagsEditForm(AdminEditForm):
    61 class TagsEditForm(AdminEditForm):
    64     """Tags edit form"""
    62     """Tags edit form"""
    65 
    63 
    66     legend = _("Content tags")
    64     legend = _("Content tags")
   175     input_css_class = 'col-md-12'
   173     input_css_class = 'col-md-12'
   176 
   174 
   177     fields = field.Fields(ICollectionsInfo)
   175     fields = field.Fields(ICollectionsInfo)
   178     fields['collections'].widgetFactory = ThesaurusTermsTreeFieldWidget
   176     fields['collections'].widgetFactory = ThesaurusTermsTreeFieldWidget
   179 
   177 
   180     def __init__(self, context, request):
       
   181         super(CollectionsEditForm, self).__init__(context, request)
       
   182         target = get_parent(self.context, ICollectionsManagerTarget)
       
   183         manager = ICollectionsManager(target)
       
   184         self.thesaurus_name = manager.thesaurus_name
       
   185         self.extract_name = manager.extract_name
       
   186 
       
   187     def updateWidgets(self, prefix=None):
   178     def updateWidgets(self, prefix=None):
   188         super(CollectionsEditForm, self).updateWidgets(prefix)
   179         super(CollectionsEditForm, self).updateWidgets(prefix)
   189         if 'collections' in self.widgets:
   180         if 'collections' in self.widgets:
   190             widget = self.widgets['collections']
   181             widget = self.widgets['collections']
   191             target = get_parent(self.context, ICollectionsManagerTarget)
   182             manager = ICollectionsManager(self.request.root)
   192             manager = ICollectionsManager(target)
       
   193             widget.thesaurus_name = manager.thesaurus_name
   183             widget.thesaurus_name = manager.thesaurus_name
   194             widget.extract_name = manager.extract_name
   184             widget.extract_name = manager.extract_name
   195 
   185 
   196 
   186 
   197 @adapter_config(context=(ICollectionsTarget, IAdminLayer, CollectionsEditForm), provides=IPageHeader)
   187 @adapter_config(context=(ICollectionsTarget, IAdminLayer, CollectionsEditForm),
       
   188                 provides=IPageHeader)
   198 class CollectionsHeaderAdapter(WfSharedContentHeaderAdapter):
   189 class CollectionsHeaderAdapter(WfSharedContentHeaderAdapter):
   199     """Shared content collections header adapter"""
   190     """Shared content collections header adapter"""
   200 
   191 
   201     icon_class = 'fa fa-fw fa-book'
   192     icon_class = 'fa fa-fw fa-book'