diff -r 000000000000 -r 7c0001cacf8e src/pyams_content/shared/common/zmi/properties.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/pyams_content/shared/common/zmi/properties.py Thu Oct 08 13:37:29 2015 +0200 @@ -0,0 +1,98 @@ +# +# Copyright (c) 2008-2015 Thierry Florac +# All Rights Reserved. +# +# This software is subject to the provisions of the Zope Public License, +# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution. +# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED +# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS +# FOR A PARTICULAR PURPOSE. +# + +__docformat__ = 'restructuredtext' + + +# import standard library + +# import interfaces +from pyams_content.interfaces import MANAGE_CONTENT_PERMISSION +from pyams_content.shared.common.interfaces import IWfSharedContent +from pyams_form.interfaces.form import IWidgetForm +from pyams_skin.interfaces import IInnerPage, IPageHeader +from pyams_skin.layer import IPyAMSLayer +from pyams_zmi.interfaces.menu import IContentManagementMenu, IPropertiesMenu +from pyams_zmi.layer import IAdminLayer + +# import packages +from pyams_content.shared.common.zmi import WfSharedContentHeaderAdapter +from pyams_form.form import AJAXEditForm +from pyams_pagelet.pagelet import pagelet_config +from pyams_skin.viewlet.menu import MenuItem +from pyams_utils.adapter import adapter_config +from pyams_viewlet.manager import viewletmanager_config +from pyams_viewlet.viewlet import viewlet_config +from pyams_zmi.form import AdminEditForm +from pyramid.view import view_config +from z3c.form import field +from zope.interface import implementer + +from pyams_content import _ + + +# +# Content properties +# + +@viewlet_config(name='properties.menu', context=IWfSharedContent, layer=IAdminLayer, + manager=IContentManagementMenu, permission=MANAGE_CONTENT_PERMISSION, weight=10) +@viewletmanager_config(name='properties.menu', layer=IAdminLayer, provides=IPropertiesMenu) +@implementer(IPropertiesMenu) +class SharedContentCompositionMenu(MenuItem): + """Shared content properties menu""" + + label = _("Composition") + icon_class = 'fa-dropbox' + url = '#' + + +@viewlet_config(name='properties.submenu', context=IWfSharedContent, layer=IAdminLayer, + manager=IPropertiesMenu, permission=MANAGE_CONTENT_PERMISSION, weight=10) +class SharedContentPropertiesMenu(MenuItem): + """Shared content properties menu""" + + label = _("Properties") + icon_class = 'fa-edit' + url = '#properties.html' + + +@pagelet_config(name='properties.html', context=IWfSharedContent, layer=IPyAMSLayer, + permission=MANAGE_CONTENT_PERMISSION) +@implementer(IWidgetForm, IInnerPage) +class SharedContentPropertiesEditForm(AdminEditForm): + """Shared content properties edit form""" + + legend = _("Content properties") + + fields = field.Fields(IWfSharedContent).omit('__parent__', '__name__', 'creator', 'first_owner', 'modifiers') + ajax_handler = 'properties.json' + + def updateWidgets(self, prefix=None): + super(SharedContentPropertiesEditForm, self).updateWidgets(prefix) + if 'description' in self.widgets: + self.widgets['description'].label_css_class = 'textarea' + if 'notepad' in self.widgets: + self.widgets['notepad'].label_css_class = 'textarea' + + +@view_config(name='properties.json', context=IWfSharedContent, request_type=IPyAMSLayer, + permission=MANAGE_CONTENT_PERMISSION, renderer='json', xhr=True) +class SharedContentPropertiesAJAXEditForm(AJAXEditForm, SharedContentPropertiesEditForm): + """Shared content properties edit form, JSON renderer""" + + +@adapter_config(context=(IWfSharedContent, IAdminLayer, SharedContentPropertiesEditForm), provides=IPageHeader) +class SharedContentPropertiesHeaderAdapter(WfSharedContentHeaderAdapter): + """Shared content properties header adapter""" + + icon_class = 'fa fa-fw fa-edit'