src/pyams_content/shared/common/zmi/properties.py
changeset 14 234db8f05928
parent 0 7c0001cacf8e
child 24 b5882159dea4
equal deleted inserted replaced
13:35afd52c902b 14:234db8f05928
    16 # import standard library
    16 # import standard library
    17 
    17 
    18 # import interfaces
    18 # import interfaces
    19 from pyams_content.interfaces import MANAGE_CONTENT_PERMISSION
    19 from pyams_content.interfaces import MANAGE_CONTENT_PERMISSION
    20 from pyams_content.shared.common.interfaces import IWfSharedContent
    20 from pyams_content.shared.common.interfaces import IWfSharedContent
    21 from pyams_form.interfaces.form import IWidgetForm
    21 from pyams_form.interfaces.form import IWidgetForm, IInnerTabForm, IInnerSubForm
    22 from pyams_skin.interfaces import IInnerPage, IPageHeader
    22 from pyams_skin.interfaces import IInnerPage, IPageHeader
    23 from pyams_skin.layer import IPyAMSLayer
    23 from pyams_skin.layer import IPyAMSLayer
    24 from pyams_zmi.interfaces.menu import IContentManagementMenu, IPropertiesMenu
    24 from pyams_zmi.interfaces.menu import IContentManagementMenu, IPropertiesMenu
    25 from pyams_zmi.layer import IAdminLayer
    25 from pyams_zmi.layer import IAdminLayer
    26 
    26 
    27 # import packages
    27 # import packages
    28 from pyams_content.shared.common.zmi import WfSharedContentHeaderAdapter
    28 from pyams_content.shared.common.zmi import WfSharedContentHeaderAdapter
       
    29 from pyams_content.shared.common.zmi.summary import SharedContentSummaryForm
    29 from pyams_form.form import AJAXEditForm
    30 from pyams_form.form import AJAXEditForm
    30 from pyams_pagelet.pagelet import pagelet_config
    31 from pyams_pagelet.pagelet import pagelet_config
    31 from pyams_skin.viewlet.menu import MenuItem
    32 from pyams_skin.viewlet.menu import MenuItem
    32 from pyams_utils.adapter import adapter_config
    33 from pyams_utils.adapter import adapter_config
    33 from pyams_viewlet.manager import viewletmanager_config
    34 from pyams_viewlet.manager import viewletmanager_config
    34 from pyams_viewlet.viewlet import viewlet_config
    35 from pyams_viewlet.viewlet import viewlet_config
    35 from pyams_zmi.form import AdminEditForm
    36 from pyams_zmi.form import AdminEditForm, InnerAdminDisplayForm
    36 from pyramid.view import view_config
    37 from pyramid.view import view_config
    37 from z3c.form import field
    38 from z3c.form import field
    38 from zope.interface import implementer
    39 from zope.interface import implementer, Interface
    39 
    40 
    40 from pyams_content import _
    41 from pyams_content import _
    41 
    42 
    42 
    43 
    43 #
    44 #
    51 class SharedContentCompositionMenu(MenuItem):
    52 class SharedContentCompositionMenu(MenuItem):
    52     """Shared content properties menu"""
    53     """Shared content properties menu"""
    53 
    54 
    54     label = _("Composition")
    55     label = _("Composition")
    55     icon_class = 'fa-dropbox'
    56     icon_class = 'fa-dropbox'
    56     url = '#'
    57     url = '#summary.html'
    57 
    58 
    58 
    59 
    59 @viewlet_config(name='properties.submenu', context=IWfSharedContent, layer=IAdminLayer,
    60 @viewlet_config(name='properties.submenu', context=IWfSharedContent, layer=IAdminLayer,
    60                 manager=IPropertiesMenu, permission=MANAGE_CONTENT_PERMISSION, weight=10)
    61                 manager=IPropertiesMenu, permission=MANAGE_CONTENT_PERMISSION, weight=10)
    61 class SharedContentPropertiesMenu(MenuItem):
    62 class SharedContentPropertiesMenu(MenuItem):
    72 class SharedContentPropertiesEditForm(AdminEditForm):
    73 class SharedContentPropertiesEditForm(AdminEditForm):
    73     """Shared content properties edit form"""
    74     """Shared content properties edit form"""
    74 
    75 
    75     legend = _("Content properties")
    76     legend = _("Content properties")
    76 
    77 
    77     fields = field.Fields(IWfSharedContent).omit('__parent__', '__name__', 'creator', 'first_owner', 'modifiers')
    78     fields = field.Fields(IWfSharedContent).select('title', 'short_name', 'description', 'keywords', 'notepad')
    78     ajax_handler = 'properties.json'
    79     ajax_handler = 'properties.json'
    79 
    80 
    80     def updateWidgets(self, prefix=None):
    81     def updateWidgets(self, prefix=None):
    81         super(SharedContentPropertiesEditForm, self).updateWidgets(prefix)
    82         super(SharedContentPropertiesEditForm, self).updateWidgets(prefix)
    82         if 'description' in self.widgets:
    83         if 'description' in self.widgets:
    94 @adapter_config(context=(IWfSharedContent, IAdminLayer, SharedContentPropertiesEditForm), provides=IPageHeader)
    95 @adapter_config(context=(IWfSharedContent, IAdminLayer, SharedContentPropertiesEditForm), provides=IPageHeader)
    95 class SharedContentPropertiesHeaderAdapter(WfSharedContentHeaderAdapter):
    96 class SharedContentPropertiesHeaderAdapter(WfSharedContentHeaderAdapter):
    96     """Shared content properties header adapter"""
    97     """Shared content properties header adapter"""
    97 
    98 
    98     icon_class = 'fa fa-fw fa-edit'
    99     icon_class = 'fa fa-fw fa-edit'
       
   100 
       
   101 
       
   102 #
       
   103 # Properties summary
       
   104 #
       
   105 
       
   106 @adapter_config(name='properties-summary',
       
   107                 context=(IWfSharedContent, IPyAMSLayer, SharedContentSummaryForm),
       
   108                 provides=IInnerTabForm)
       
   109 class SharedContentPropertiesSummary(InnerAdminDisplayForm):
       
   110     """Shared content properties summary tab"""
       
   111 
       
   112     tab_label = _("Properties")
       
   113     tab_target = 'properties-summary.html'
       
   114 
       
   115     fields = field.Fields(Interface)
       
   116 
       
   117     weight = 10
       
   118 
       
   119 
       
   120 @pagelet_config(name='properties-summary.html', context=IWfSharedContent, layer=IPyAMSLayer)
       
   121 @implementer(IInnerPage, IInnerTabForm)
       
   122 class SharedContentPropertiesSummaryDisplayForm(InnerAdminDisplayForm):
       
   123     """Shared content properties summary display form"""
       
   124 
       
   125     fields = field.Fields(Interface)
       
   126 
       
   127 
       
   128 @adapter_config(name='properties-main-summary.html',
       
   129                 context=(IWfSharedContent, IPyAMSLayer, SharedContentPropertiesSummaryDisplayForm),
       
   130                 provides=IInnerSubForm)
       
   131 class SharedContentMainPropertiesSummaryDisplayForm(InnerAdminDisplayForm):
       
   132     """Shared content main properties summary display form"""
       
   133 
       
   134     legend = _("Content properties")
       
   135 
       
   136     fields = field.Fields(IWfSharedContent).select('title', 'short_name', 'description', 'keywords', 'notepad')
       
   137 
       
   138     weight = 1