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.container import ITableElementName, ITableElementEditor |
22 from pyams_skin.interfaces.viewlet import IWidgetTitleViewletManager, IBreadcrumbItem |
23 from pyams_skin.interfaces.viewlet import IWidgetTitleViewletManager, IBreadcrumbItem |
23 from pyams_skin.layer import IPyAMSLayer |
24 from pyams_skin.layer import IPyAMSLayer |
24 from pyams_zmi.layer import IAdminLayer |
25 from pyams_zmi.layer import IAdminLayer |
25 from z3c.form.interfaces import IDataExtractedEvent |
26 from z3c.form.interfaces import IDataExtractedEvent |
26 from zope.component.interfaces import ISite |
27 from zope.component.interfaces import ISite |
29 from pyams_form.form import AJAXAddForm, ajax_config |
30 from pyams_form.form import AJAXAddForm, ajax_config |
30 from pyams_pagelet.pagelet import pagelet_config |
31 from pyams_pagelet.pagelet import pagelet_config |
31 from pyams_portal.template import PortalTemplate |
32 from pyams_portal.template import PortalTemplate |
32 from pyams_portal.zmi.container import PortalTemplateContainerTable |
33 from pyams_portal.zmi.container import PortalTemplateContainerTable |
33 from pyams_skin.page import DefaultPageHeaderAdapter |
34 from pyams_skin.page import DefaultPageHeaderAdapter |
|
35 from pyams_skin.table import DefaultElementEditorAdapter |
34 from pyams_skin.viewlet.breadcrumb import BreadcrumbItem |
36 from pyams_skin.viewlet.breadcrumb import BreadcrumbItem |
35 from pyams_skin.viewlet.toolbar import ToolbarAction |
37 from pyams_skin.viewlet.toolbar import ToolbarAction |
36 from pyams_utils.adapter import adapter_config |
38 from pyams_utils.adapter import adapter_config, ContextRequestAdapter |
37 from pyams_utils.registry import query_utility |
39 from pyams_utils.registry import query_utility |
38 from pyams_utils.traversing import get_parent |
40 from pyams_utils.traversing import get_parent |
39 from pyams_utils.unicode import translate_string |
41 from pyams_utils.unicode import translate_string |
40 from pyams_utils.url import absolute_url |
42 from pyams_utils.url import absolute_url |
41 from pyams_viewlet.viewlet import viewlet_config |
43 from pyams_viewlet.viewlet import viewlet_config |
50 @adapter_config(context=(IPortalTemplate, IPyAMSLayer), provides=IBreadcrumbItem) |
52 @adapter_config(context=(IPortalTemplate, IPyAMSLayer), provides=IBreadcrumbItem) |
51 class PortalTemplateBreadcrumbAdapter(BreadcrumbItem): |
53 class PortalTemplateBreadcrumbAdapter(BreadcrumbItem): |
52 """Portal template breadcrumb adapter""" |
54 """Portal template breadcrumb adapter""" |
53 |
55 |
54 label = _("Portal template") |
56 label = _("Portal template") |
|
57 |
|
58 |
|
59 @adapter_config(context=(IPortalTemplate, IPyAMSLayer), provides=ITableElementName) |
|
60 class PortalTemplateTableElementNameAdapter(ContextRequestAdapter): |
|
61 """Portal template table element name adapter""" |
|
62 |
|
63 @property |
|
64 def name(self): |
|
65 container = get_parent(self.context, IPortalTemplateContainer) |
|
66 if container is not None: |
|
67 return self.context.name |
|
68 context = get_parent(self.context, IPortalContext) |
|
69 if context is not None: |
|
70 adapter = self.request.registry.queryMultiAdapter((context, self.request), ITableElementName) |
|
71 if adapter is not None: |
|
72 return self.request.localizer.translate(_("{0} (local template)")).format(adapter.name) |
|
73 return '--' |
|
74 |
|
75 |
|
76 @adapter_config(context=(IPortalTemplate, IAdminLayer, Interface), provides=ITableElementEditor) |
|
77 class PortalTemplateTableElementEditorAdapter(DefaultElementEditorAdapter): |
|
78 """Portal template table element editor adapter""" |
|
79 |
|
80 view_name = 'admin#properties.html' |
|
81 modal_target = False |
55 |
82 |
56 |
83 |
57 @adapter_config(context=(IPortalTemplate, IPyAMSLayer, Interface), provides=IPageHeader) |
84 @adapter_config(context=(IPortalTemplate, IPyAMSLayer, Interface), provides=IPageHeader) |
58 class PortalTemplateHeaderAdapter(DefaultPageHeaderAdapter): |
85 class PortalTemplateHeaderAdapter(DefaultPageHeaderAdapter): |
59 """Portal template header adapter""" |
86 """Portal template header adapter""" |