src/pyams_content/shared/common/zmi/__init__.py
changeset 1394 ed31bfceddda
parent 1358 c682811fa1ea
equal deleted inserted replaced
1393:9479901b53a5 1394:ed31bfceddda
    22 from zope.location import locate
    22 from zope.location import locate
    23 
    23 
    24 from pyams_content.features.review.interfaces import IReviewComments
    24 from pyams_content.features.review.interfaces import IReviewComments
    25 from pyams_content.interfaces import CREATE_CONTENT_PERMISSION, MANAGE_CONTENT_PERMISSION, \
    25 from pyams_content.interfaces import CREATE_CONTENT_PERMISSION, MANAGE_CONTENT_PERMISSION, \
    26     MANAGE_SITE_ROOT_PERMISSION, PUBLISH_CONTENT_PERMISSION
    26     MANAGE_SITE_ROOT_PERMISSION, PUBLISH_CONTENT_PERMISSION
       
    27 from pyams_content.shared.common import IDashboardTypeColumnValue
    27 from pyams_content.shared.common.interfaces import IBaseSharedTool, IContributorRestrictions, \
    28 from pyams_content.shared.common.interfaces import IBaseSharedTool, IContributorRestrictions, \
    28     IManagerRestrictions, ISharedContent, IWfSharedContent
    29     IManagerRestrictions, ISharedContent, IWfSharedContent
       
    30 from pyams_content.shared.common.interfaces.types import IWfTypedSharedContent
       
    31 from pyams_content.shared.common.interfaces.zmi import IDashboardTable, ISiteRootDashboardTable
    29 from pyams_form.form import AJAXAddForm, ajax_config
    32 from pyams_form.form import AJAXAddForm, ajax_config
    30 from pyams_form.interfaces.form import IFormContextPermissionChecker, IWidgetsPrefixViewletsManager
    33 from pyams_form.interfaces.form import IFormContextPermissionChecker, IWidgetsPrefixViewletsManager
    31 from pyams_form.schema import CloseButton
    34 from pyams_form.schema import CloseButton
    32 from pyams_i18n.interfaces import II18n, II18nManager, INegotiator
    35 from pyams_i18n.interfaces import II18n, II18nManager, INegotiator
    33 from pyams_i18n.widget import I18nSEOTextLineFieldWidget
    36 from pyams_i18n.widget import I18nSEOTextLineFieldWidget
   385 
   388 
   386 #
   389 #
   387 # Custom columns mixins
   390 # Custom columns mixins
   388 #
   391 #
   389 
   392 
       
   393 @adapter_config(context=(IWfSharedContent, IPyAMSLayer, IDashboardTable),
       
   394                 provides=IDashboardTypeColumnValue)
       
   395 def typed_shared_content_tool_dashboard_type_adapter(context, request, view):
       
   396     """Typed shared content dashboard type column adapter"""
       
   397     content = IWfTypedSharedContent(context, None)
       
   398     if content is not None:
       
   399         data_type = content.get_data_type()
       
   400         if data_type is not None:
       
   401             return II18n(data_type).query_attribute('navigation_label', request=request) or \
       
   402                 II18n(data_type).query_attribute('label', request=request)
       
   403 
       
   404 
       
   405 @adapter_config(context=(IWfSharedContent, IPyAMSLayer, ISiteRootDashboardTable),
       
   406                 provides=IDashboardTypeColumnValue)
       
   407 def typed_shared_content_root_dashboard_type_adapter(context, request, view):
       
   408     """Typed shared content root dashboard type column adapter"""
       
   409     result = request.localizer.translate(context.content_name)
       
   410     content = IWfTypedSharedContent(context, None)
       
   411     if content is not None:
       
   412         data_type = content.get_data_type()
       
   413         if data_type is not None:
       
   414             result = '{} ({})'.format(
       
   415                 result,
       
   416                 II18n(data_type).query_attribute('navigation_label', request=request) or
       
   417                 II18n(data_type).query_attribute('label', request=request))
       
   418     return result
       
   419 
       
   420 
   390 class WfModifiedContentColumnMixin(object):
   421 class WfModifiedContentColumnMixin(object):
   391     """Shared content modified column mixin"""
   422     """Shared content modified column mixin"""
   392 
   423 
   393     def renderCell(self, item):
   424     def renderCell(self, item):
   394         value = self.getValue(item)
   425         value = self.getValue(item)
   396         if content is not None:
   427         if content is not None:
   397             if IWorkflowState(content).version_id > 1:
   428             if IWorkflowState(content).version_id > 1:
   398                 item_dc = IZopeDublinCore(item)
   429                 item_dc = IZopeDublinCore(item)
   399                 if item_dc.modified and (item_dc.modified > IZopeDublinCore(content).created):
   430                 if item_dc.modified and (item_dc.modified > IZopeDublinCore(content).created):
   400                     translate = self.request.localizer.translate
   431                     translate = self.request.localizer.translate
   401                     value += '<i class="fa fa-fw fa-circle txt-color-orange hint align-middle padding-left-5" ' \
   432                     value += '<i class="fa fa-fw fa-circle txt-color-orange hint align-middle ' \
   402                              'title="{0}" data-ams-hint-gravity="w"></i>'.format(
   433                              'padding-left-5" title="{0}" data-ams-hint-gravity="w"></i>'.format(
   403                         translate(_("Created or modified in this version")))
   434                         translate(_("Created or modified in this version")))
   404         return value
   435         return value