src/pyams_portal/zmi/template.py
changeset 97 926d36ad8b8c
parent 76 3d097899a717
child 119 d2d0c38fa8f8
equal deleted inserted replaced
96:43a99de860f2 97:926d36ad8b8c
    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"""