src/pyams_portal/zmi/template.py
changeset 119 d2d0c38fa8f8
parent 97 926d36ad8b8c
child 136 a1aaac7979e9
equal deleted inserted replaced
118:15e0ccc31b91 119:d2d0c38fa8f8
    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"""