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 |