17 |
17 |
18 # import interfaces |
18 # import interfaces |
19 from pyams_portal.interfaces import IPortalTemplateContainer, IPortalTemplate, IPortalContext, \ |
19 from pyams_portal.interfaces import IPortalTemplateContainer, IPortalTemplate, IPortalContext, \ |
20 MANAGE_TEMPLATE_PERMISSION |
20 MANAGE_TEMPLATE_PERMISSION |
21 from pyams_skin.interfaces import IPageHeader, IContentTitle |
21 from pyams_skin.interfaces import IPageHeader, IContentTitle |
22 from pyams_skin.interfaces.viewlet import IWidgetTitleViewletManager |
22 from pyams_skin.interfaces.viewlet import IWidgetTitleViewletManager, IBreadcrumbItem |
23 from pyams_skin.layer import IPyAMSLayer |
23 from pyams_skin.layer import IPyAMSLayer |
24 from pyams_zmi.layer import IAdminLayer |
24 from pyams_zmi.layer import IAdminLayer |
25 from z3c.form.interfaces import IDataExtractedEvent |
25 from z3c.form.interfaces import IDataExtractedEvent |
26 from zope.component.interfaces import ISite |
26 from zope.component.interfaces import ISite |
27 |
27 |
28 # import packages |
28 # import packages |
29 from pyams_form.form import AJAXAddForm |
29 from pyams_form.form import AJAXAddForm, ajax_config |
30 from pyams_pagelet.pagelet import pagelet_config |
30 from pyams_pagelet.pagelet import pagelet_config |
31 from pyams_portal.template import PortalTemplate |
31 from pyams_portal.template import PortalTemplate |
32 from pyams_portal.zmi.container import PortalTemplateContainerTable |
32 from pyams_portal.zmi.container import PortalTemplateContainerTable |
33 from pyams_skin.container import delete_container_element |
|
34 from pyams_skin.page import DefaultPageHeaderAdapter |
33 from pyams_skin.page import DefaultPageHeaderAdapter |
|
34 from pyams_skin.viewlet.breadcrumb import BreadcrumbItem |
35 from pyams_skin.viewlet.toolbar import ToolbarAction |
35 from pyams_skin.viewlet.toolbar import ToolbarAction |
36 from pyams_utils.adapter import adapter_config |
36 from pyams_utils.adapter import adapter_config |
37 from pyams_utils.registry import query_utility |
37 from pyams_utils.registry import query_utility |
38 from pyams_utils.traversing import get_parent |
38 from pyams_utils.traversing import get_parent |
39 from pyams_utils.unicode import translate_string |
39 from pyams_utils.unicode import translate_string |
40 from pyams_utils.url import absolute_url |
40 from pyams_utils.url import absolute_url |
41 from pyams_viewlet.viewlet import viewlet_config |
41 from pyams_viewlet.viewlet import viewlet_config |
42 from pyams_zmi.form import AdminDialogAddForm |
42 from pyams_zmi.form import AdminDialogAddForm |
43 from pyramid.events import subscriber |
43 from pyramid.events import subscriber |
44 from pyramid.view import view_config |
|
45 from z3c.form import field |
44 from z3c.form import field |
46 from zope.interface import Interface, Invalid |
45 from zope.interface import Interface, Invalid |
47 |
46 |
48 from pyams_portal import _ |
47 from pyams_portal import _ |
|
48 |
|
49 |
|
50 @adapter_config(context=(IPortalTemplate, IPyAMSLayer), provides=IBreadcrumbItem) |
|
51 class PortalTemplateBreadcrumbAdapter(BreadcrumbItem): |
|
52 """Portal template breadcrumb adapter""" |
|
53 |
|
54 label = _("Portal template") |
49 |
55 |
50 |
56 |
51 @adapter_config(context=(IPortalTemplate, IPyAMSLayer, Interface), provides=IPageHeader) |
57 @adapter_config(context=(IPortalTemplate, IPyAMSLayer, Interface), provides=IPageHeader) |
52 class PortalTemplateHeaderAdapter(DefaultPageHeaderAdapter): |
58 class PortalTemplateHeaderAdapter(DefaultPageHeaderAdapter): |
53 """Portal template header adapter""" |
59 """Portal template header adapter""" |
86 modal_target = True |
92 modal_target = True |
87 |
93 |
88 |
94 |
89 @pagelet_config(name='add-portal-template.html', context=ISite, layer=IPyAMSLayer, |
95 @pagelet_config(name='add-portal-template.html', context=ISite, layer=IPyAMSLayer, |
90 permission=MANAGE_TEMPLATE_PERMISSION) |
96 permission=MANAGE_TEMPLATE_PERMISSION) |
|
97 @ajax_config(name='add-portal-template.json', context=ISite, layer=IPyAMSLayer, |
|
98 permission=MANAGE_TEMPLATE_PERMISSION, base=AJAXAddForm) |
91 class PortalTemplateAddForm(AdminDialogAddForm): |
99 class PortalTemplateAddForm(AdminDialogAddForm): |
92 """Portal template add form""" |
100 """Portal template add form""" |
93 |
101 |
94 title = _("Portal templates") |
102 title = _("Portal templates") |
95 legend = _("Add shared template") |
103 legend = _("Add shared template") |
115 """Handle new template form data extraction""" |
123 """Handle new template form data extraction""" |
116 container = query_utility(IPortalTemplateContainer) |
124 container = query_utility(IPortalTemplateContainer) |
117 name = event.data.get('name') |
125 name = event.data.get('name') |
118 if name in container: |
126 if name in container: |
119 event.form.widgets.errors += (Invalid(_("Specified name is already used!")),) |
127 event.form.widgets.errors += (Invalid(_("Specified name is already used!")),) |
120 |
|
121 |
|
122 @view_config(name='add-portal-template.json', context=ISite, request_type=IPyAMSLayer, |
|
123 permission=MANAGE_TEMPLATE_PERMISSION, renderer='json', xhr=True) |
|
124 class PortalTemplateAJAXAddForm(AJAXAddForm, PortalTemplateAddForm): |
|
125 """Portal template add form, AJAX handler""" |
|