diff -r 000000000000 -r 7c0001cacf8e src/pyams_content/shared/common/zmi/summary.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/pyams_content/shared/common/zmi/summary.py Thu Oct 08 13:37:29 2015 +0200 @@ -0,0 +1,110 @@ +# +# 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. +# +from pyams_workflow.interfaces import IWorkflowState, IWorkflowVersions + +__docformat__ = 'restructuredtext' + + +# import standard library + +# import interfaces +from pyams_content.interfaces import IBaseContentInfo +from pyams_content.shared.common.interfaces import IWfSharedContent, IWfSharedContentRoles, ISharedTool +from pyams_content.zmi.interfaces import ISummaryMenu +from pyams_form.interfaces.form import IWidgetForm, IInnerTabForm +from pyams_sequence.interfaces import ISequentialIdInfo +from pyams_skin.interfaces import IInnerPage +from pyams_skin.layer import IPyAMSLayer +from pyams_utils.interfaces import VIEW_SYSTEM_PERMISSION +from pyams_zmi.interfaces.menu import IContentManagementMenu +from pyams_zmi.layer import IAdminLayer + +# import packages +from pyams_content.shared.common.zmi.header import SharedContentHeaderContentProvider +from pyams_form.form import InnerDisplayForm +from pyams_pagelet.pagelet import pagelet_config +from pyams_skin.viewlet.menu import MenuItem +from pyams_utils.adapter import adapter_config +from pyams_utils.date import format_datetime +from pyams_utils.timezone import tztime +from pyams_utils.traversing import get_parent +from pyams_utils.url import absolute_url +from pyams_viewlet.manager import viewletmanager_config +from pyams_viewlet.viewlet import viewlet_config, contentprovider_config +from pyams_zmi.form import AdminDisplayForm +from z3c.form import field +from zope.interface import implementer, Interface + +from pyams_content import _ + + +@viewlet_config(name='summary.menu', context=IWfSharedContent, layer=IAdminLayer, + manager=IContentManagementMenu, permission=VIEW_SYSTEM_PERMISSION, weight=1) +@viewletmanager_config(name='summary.menu', layer=IAdminLayer, provides=ISummaryMenu) +@implementer(ISummaryMenu) +class SharedContentSummaryMenu(MenuItem): + """Shared content summary menu""" + + label = _("Summary") + icon_class = 'fa-info-circle' + url = '#summary.html' + + +@pagelet_config(name='summary.html', context=IWfSharedContent, layer=IPyAMSLayer, permission=VIEW_SYSTEM_PERMISSION) +@implementer(IWidgetForm, IInnerPage) +class SharedContentSummaryForm(AdminDisplayForm): + """Shared content summary form""" + + legend = _("Display content summary") + css_class = 'ams-form form-horizontal form-tight' + + fields = field.Fields(IWfSharedContent).select('title', 'short_name', 'description', 'keywords') + + +@contentprovider_config(name='content_header', context=IWfSharedContent, view=SharedContentSummaryForm, + layer=IPyAMSLayer) +class SharedContentSummaryFormHeaderProvider(SharedContentHeaderContentProvider): + """Shared content summary form header provider""" + + @property + def back_url(self): + tool = get_parent(self.context, ISharedTool) + return absolute_url(tool, self.request, 'admin.html') + + +@adapter_config(name='dublincore-summary', + context=(IWfSharedContent, IPyAMSLayer, SharedContentSummaryForm), + provides=IInnerTabForm) +class SharedContentDublinCoreSummary(InnerDisplayForm): + """Shared content DublinCore summary""" + + weight = 1 + tab_label = _("Identity card") + css_class = 'form-tight' + + @property + def fields(self): + fields = field.Fields(ISequentialIdInfo).select('hex_oid') + \ + field.Fields(IWfSharedContentRoles).select('owner') + \ + field.Fields(IWfSharedContent).select('creator', 'first_owner') + \ + field.Fields(IBaseContentInfo) + \ + field.Fields(IWfSharedContent).select('modifiers', 'notepad') + state = IWorkflowState(self.context) + if state.version_id == 1: + fields = fields.omit('first_owner') + return fields + + def updateWidgets(self, prefix=None): + super(SharedContentDublinCoreSummary, self).updateWidgets(prefix) + info = IBaseContentInfo(self.context) + self.widgets['created_date'].value = format_datetime(tztime(info.created_date)) + self.widgets['modified_date'].value = format_datetime(tztime(info.modified_date))