src/pyams_content/shared/common/zmi/__init__.py
changeset 312 cc13bd3548c3
parent 287 834b484129fd
child 451 8467cbd639b5
equal deleted inserted replaced
311:28a39fd182ea 312:cc13bd3548c3
     1 #
     1 # -*- coding: utf-8 -*-
     2 # Copyright (c) 2008-2015 Thierry Florac <tflorac AT ulthar.net>
     2 # Copyright (c) 2008-2015 Thierry Florac <tflorac AT ulthar.net>
     3 # All Rights Reserved.
     3 # All Rights Reserved.
     4 #
     4 #
     5 # This software is subject to the provisions of the Zope Public License,
     5 # This software is subject to the provisions of the Zope Public License,
     6 # Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
     6 # Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
    29 from pyams_skin.interfaces import IContentTitle
    29 from pyams_skin.interfaces import IContentTitle
    30 from pyams_skin.interfaces.container import ITable, ITableElementEditor
    30 from pyams_skin.interfaces.container import ITable, ITableElementEditor
    31 from pyams_skin.interfaces.viewlet import IContextActions, IMenuHeader, IBreadcrumbItem
    31 from pyams_skin.interfaces.viewlet import IContextActions, IMenuHeader, IBreadcrumbItem
    32 from pyams_skin.layer import IPyAMSLayer
    32 from pyams_skin.layer import IPyAMSLayer
    33 from pyams_utils.interfaces import FORBIDDEN_PERMISSION
    33 from pyams_utils.interfaces import FORBIDDEN_PERMISSION
    34 from pyams_workflow.interfaces import IWorkflowVersions, IWorkflowInfo, IWorkflowState, IWorkflowCommentInfo, IWorkflow
    34 from pyams_workflow.interfaces import IWorkflowVersions, IWorkflowInfo, IWorkflowState, IWorkflowCommentInfo, IWorkflow, \
       
    35     IWorkflowPublicationInfo
    35 from pyams_zmi.interfaces.menu import ISiteManagementMenu
    36 from pyams_zmi.interfaces.menu import ISiteManagementMenu
    36 from zope.dublincore.interfaces import IZopeDublinCore
    37 from zope.dublincore.interfaces import IZopeDublinCore
    37 
    38 
    38 # import packages
    39 # import packages
    39 from pyams_form.form import AJAXAddForm
    40 from pyams_form.form import AJAXAddForm
    40 from pyams_form.schema import CloseButton
    41 from pyams_form.schema import CloseButton
       
    42 from pyams_i18n.widget import I18nSEOTextLineFieldWidget
    41 from pyams_pagelet.pagelet import pagelet_config
    43 from pyams_pagelet.pagelet import pagelet_config
    42 from pyams_skin.page import DefaultPageHeaderAdapter
    44 from pyams_skin.page import DefaultPageHeaderAdapter
    43 from pyams_skin.table import DefaultElementEditorAdapter
    45 from pyams_skin.table import DefaultElementEditorAdapter
    44 from pyams_skin.viewlet.breadcrumb import BreadcrumbItem
    46 from pyams_skin.viewlet.breadcrumb import BreadcrumbItem
    45 from pyams_skin.viewlet.toolbar import ToolbarMenuItem, ToolbarMenuDivider
    47 from pyams_skin.viewlet.toolbar import ToolbarMenuItem, ToolbarMenuDivider
    70     def title(self):
    72     def title(self):
    71         return II18n(self.context).query_attribute('title', request=self.request)
    73         return II18n(self.context).query_attribute('title', request=self.request)
    72 
    74 
    73     icon_css_class = 'fa fa-fw fa-plus'
    75     icon_css_class = 'fa fa-fw fa-plus'
    74     fields = field.Fields(IWfSharedContent).select('title', 'notepad')
    76     fields = field.Fields(IWfSharedContent).select('title', 'notepad')
       
    77     fields['title'].widgetFactory = I18nSEOTextLineFieldWidget
    75 
    78 
    76     ajax_handler = 'add-shared-content.json'
    79     ajax_handler = 'add-shared-content.json'
    77     edit_permission = CREATE_CONTENT_PERMISSION
    80     edit_permission = CREATE_CONTENT_PERMISSION
    78 
    81 
    79     def updateWidgets(self, prefix=None):
    82     def updateWidgets(self, prefix=None):
   315             comments.clear()
   318             comments.clear()
   316         # store new version
   319         # store new version
   317         translate = self.request.localizer.translate
   320         translate = self.request.localizer.translate
   318         workflow = get_utility(IWorkflow, name=new_content.workflow_name)
   321         workflow = get_utility(IWorkflow, name=new_content.workflow_name)
   319         IWorkflowVersions(new_content).add_version(new_version, workflow.initial_state)
   322         IWorkflowVersions(new_content).add_version(new_version, workflow.initial_state)
       
   323         # reset publication info
       
   324         pub_info = IWorkflowPublicationInfo(new_version, None)
       
   325         if pub_info is not None:
       
   326             pub_info.reset(complete=True)
   320         # update new version history
   327         # update new version history
   321         source_state = IWorkflowState(self.context)
   328         source_state = IWorkflowState(self.context)
   322         state = IWorkflowState(new_version)
   329         state = IWorkflowState(new_version)
   323         state.history.clear()
   330         state.history.clear()
   324         history = WorkflowHistoryItem(date=datetime.utcnow(),
   331         history = WorkflowHistoryItem(date=datetime.utcnow(),
   325                                       principal=self.request.principal.id,
   332                                       principal=self.request.principal.id,
   326                                       comment=translate(_("Clone created from version {source} of {oid} (in « {"
   333                                       comment=translate(_("Clone created from version {source} of {oid} "
   327                                                           "state} » state)")).format(
   334                                                           "(in « {state} » state)")).format(
   328                                           source=source_state.version_id,
   335                                           source=source_state.version_id,
   329                                           oid=ISequentialIdInfo(self.context).get_short_oid(),
   336                                           oid=ISequentialIdInfo(self.context).get_short_oid(),
   330                                           state=translate(IWorkflow(self.context).get_state_label(source_state.state)))
   337                                           state=translate(IWorkflow(self.context).get_state_label(source_state.state)))
   331                                       )
   338                                       )
   332         state.history.append(history)
   339         state.history.append(history)