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) |