src/pyams_content/features/header/zmi/__init__.py
changeset 591 b694d5667d17
parent 545 ae803782cc37
child 595 f6ecc99e4745
equal deleted inserted replaced
590:4fafaf94701d 591:b694d5667d17
    27 from pyams_utils.interfaces.data import IObjectData
    27 from pyams_utils.interfaces.data import IObjectData
    28 from pyams_utils.interfaces.inherit import IInheritInfo
    28 from pyams_utils.interfaces.inherit import IInheritInfo
    29 from z3c.form.interfaces import INPUT_MODE
    29 from z3c.form.interfaces import INPUT_MODE
    30 
    30 
    31 # import packages
    31 # import packages
    32 from pyams_form.form import AJAXEditForm
    32 from pyams_form.form import ajax_config
    33 from pyams_form.group import NamedWidgetsGroup
    33 from pyams_form.group import NamedWidgetsGroup
    34 from pyams_pagelet.pagelet import pagelet_config
    34 from pyams_pagelet.pagelet import pagelet_config
    35 from pyams_skin.viewlet.menu import MenuItem, MenuDivider
    35 from pyams_skin.viewlet.menu import MenuItem, MenuDivider
    36 from pyams_template.template import template_config
    36 from pyams_template.template import template_config
    37 from pyams_utils.adapter import adapter_config
    37 from pyams_utils.adapter import adapter_config
    67     """Header settings group marker interface"""
    67     """Header settings group marker interface"""
    68 
    68 
    69 
    69 
    70 @pagelet_config(name='header-settings.html', context=IHeaderTarget, layer=IPyAMSLayer,
    70 @pagelet_config(name='header-settings.html', context=IHeaderTarget, layer=IPyAMSLayer,
    71                 permission=MANAGE_TEMPLATE_PERMISSION)
    71                 permission=MANAGE_TEMPLATE_PERMISSION)
       
    72 @ajax_config(name='header-settings.json', context=IHeaderTarget, layer=IPyAMSLayer,
       
    73              permission=MANAGE_TEMPLATE_PERMISSION)
    72 @implementer(IWidgetForm, IInnerPage)
    74 @implementer(IWidgetForm, IInnerPage)
    73 class HeaderSettingsEditForm(AdminEditForm):
    75 class HeaderSettingsEditForm(AdminEditForm):
    74     """Header settings edit form"""
    76     """Header settings edit form"""
    75 
    77 
    76     @property
    78     @property
    95     def buttons(self):
    97     def buttons(self):
    96         if self.mode == INPUT_MODE:
    98         if self.mode == INPUT_MODE:
    97             return button.Buttons(IUncheckedEditFormButtons)
    99             return button.Buttons(IUncheckedEditFormButtons)
    98         else:
   100         else:
    99             return button.Buttons(Interface)
   101             return button.Buttons(Interface)
   100 
       
   101     ajax_handler = 'header-settings.json'
       
   102 
   102 
   103     def updateGroups(self):
   103     def updateGroups(self):
   104         if self.getContent().can_inherit:
   104         if self.getContent().can_inherit:
   105             group = NamedWidgetsGroup(self, 'header', self.widgets,
   105             group = NamedWidgetsGroup(self, 'header', self.widgets,
   106                                       ('no_inherit', ),
   106                                       ('no_inherit', ),
   114             group = NamedWidgetsGroup(self, 'header', self.widgets, (), css_class='inner')
   114             group = NamedWidgetsGroup(self, 'header', self.widgets, (), css_class='inner')
   115         alsoProvides(group, IHeaderSettingsGroup)
   115         alsoProvides(group, IHeaderSettingsGroup)
   116         self.add_group(group)
   116         self.add_group(group)
   117         super(HeaderSettingsEditForm, self).updateGroups()
   117         super(HeaderSettingsEditForm, self).updateGroups()
   118 
   118 
   119 
       
   120 @view_config(name='header-settings.json', context=IHeaderTarget, request_type=IPyAMSLayer,
       
   121              permission=MANAGE_TEMPLATE_PERMISSION, renderer='json', xhr=True)
       
   122 class HeaderSettingsAJAXEditForm(AJAXEditForm, HeaderSettingsEditForm):
       
   123     """Header settings edit form, JSON renderer"""
       
   124 
       
   125     def get_ajax_output(self, changes):
   119     def get_ajax_output(self, changes):
   126         output = super(HeaderSettingsAJAXEditForm, self).get_ajax_output(changes) or {}
   120         output = super(self.__class__, self).get_ajax_output(changes) or {}
   127         if 'no_inherit' in changes.get(IInheritInfo, ()):
   121         if 'no_inherit' in changes.get(IInheritInfo, ()):
   128             output['status'] = 'reload'
   122             output['status'] = 'reload'
   129         return output
   123         return output
   130 
   124 
   131 
   125 
   168 
   162 
   169 @adapter_config(name='header-renderer-settings-form',
   163 @adapter_config(name='header-renderer-settings-form',
   170                 context=(IHeaderRendererSettings, IPyAMSLayer, HeaderSettingsRendererEditSubform),
   164                 context=(IHeaderRendererSettings, IPyAMSLayer, HeaderSettingsRendererEditSubform),
   171                 provides=IInnerSubForm)
   165                 provides=IInnerSubForm)
   172 @adapter_config(name='header-renderer-settings-form',
   166 @adapter_config(name='header-renderer-settings-form',
   173                 context=(IHeaderTarget, IPyAMSLayer, HeaderSettingsAJAXEditForm),
   167                 context=(IHeaderTarget, IPyAMSLayer, HeaderSettingsEditForm),
   174                 provides=IInnerSubForm)
   168                 provides=IInnerSubForm)
   175 class HeaderSettingsRendererSettingsEditForm(InnerAdminEditForm):
   169 class HeaderSettingsRendererSettingsEditForm(InnerAdminEditForm):
   176     """Header settings renderer settings edit form"""
   170     """Header settings renderer settings edit form"""
   177 
   171 
   178     legend = _("Header renderer settings")
   172     legend = _("Header renderer settings")