src/pyams_content/component/paragraph/zmi/header.py
changeset 527 5dd1aa8bedd9
parent 489 dcdb0ce828f8
child 538 0bd011d47c0b
equal deleted inserted replaced
526:b15153f45957 527:5dd1aa8bedd9
    20     IParagraphRenderer
    20     IParagraphRenderer
    21 from pyams_content.component.paragraph.interfaces.header import IHeaderParagraph, HEADER_PARAGRAPH_TYPE
    21 from pyams_content.component.paragraph.interfaces.header import IHeaderParagraph, HEADER_PARAGRAPH_TYPE
    22 from pyams_content.component.paragraph.zmi.interfaces import IParagraphInnerEditor, IParagraphContainerView
    22 from pyams_content.component.paragraph.zmi.interfaces import IParagraphInnerEditor, IParagraphContainerView
    23 from pyams_content.interfaces import MANAGE_CONTENT_PERMISSION
    23 from pyams_content.interfaces import MANAGE_CONTENT_PERMISSION
    24 from pyams_form.interfaces.form import IInnerForm, IEditFormButtons
    24 from pyams_form.interfaces.form import IInnerForm, IEditFormButtons
    25 from pyams_i18n.interfaces import II18n
       
    26 from pyams_skin.interfaces.viewlet import IToolbarAddingMenu
    25 from pyams_skin.interfaces.viewlet import IToolbarAddingMenu
    27 from pyams_skin.layer import IPyAMSLayer
    26 from pyams_skin.layer import IPyAMSLayer
    28 from z3c.form.interfaces import INPUT_MODE
    27 from z3c.form.interfaces import INPUT_MODE
    29 
    28 
    30 # import packages
    29 # import packages
    31 from pyams_content.component.paragraph.header import HeaderParagraph
    30 from pyams_content.component.paragraph.header import HeaderParagraph
    32 from pyams_content.component.paragraph.zmi import BaseParagraphAJAXAddForm, BaseParagraphAJAXEditForm, \
    31 from pyams_content.component.paragraph.zmi import BaseParagraphAJAXAddForm, BaseParagraphAJAXEditForm, \
    33     BaseParagraphAddMenu, BaseParagraphPropertiesEditForm
    32     BaseParagraphAddMenu, BaseParagraphPropertiesEditForm, get_json_paragraph_refresh_event
    34 from pyams_content.features.renderer.zmi import BaseRenderedContentRenderer
    33 from pyams_content.features.renderer.zmi import BaseRenderedContentRenderer
    35 from pyams_content.features.renderer.zmi.widget import RendererFieldWidget
    34 from pyams_content.features.renderer.zmi.widget import RendererFieldWidget
    36 from pyams_pagelet.pagelet import pagelet_config
    35 from pyams_pagelet.pagelet import pagelet_config
       
    36 from pyams_skin.event import get_json_widget_refresh_event
    37 from pyams_utils.adapter import adapter_config
    37 from pyams_utils.adapter import adapter_config
    38 from pyams_viewlet.viewlet import viewlet_config
    38 from pyams_viewlet.viewlet import viewlet_config
    39 from pyams_zmi.form import AdminDialogAddForm
    39 from pyams_zmi.form import AdminDialogAddForm
    40 from pyramid.view import view_config
    40 from pyramid.view import view_config
    41 from z3c.form import field, button
    41 from z3c.form import field, button
    88 @pagelet_config(name='properties.html', context=IHeaderParagraph, layer=IPyAMSLayer,
    88 @pagelet_config(name='properties.html', context=IHeaderParagraph, layer=IPyAMSLayer,
    89                 permission=MANAGE_CONTENT_PERMISSION)
    89                 permission=MANAGE_CONTENT_PERMISSION)
    90 class HeaderParagraphPropertiesEditForm(BaseParagraphPropertiesEditForm):
    90 class HeaderParagraphPropertiesEditForm(BaseParagraphPropertiesEditForm):
    91     """Header paragraph properties edit form"""
    91     """Header paragraph properties edit form"""
    92 
    92 
       
    93     prefix = 'header_properties.'
       
    94 
    93     legend = _("Edit header paragraph properties")
    95     legend = _("Edit header paragraph properties")
    94     icon_css_class = 'fa fa-fw fa-header'
    96     icon_css_class = 'fa fa-fw fa-header'
    95 
    97 
    96     fields = field.Fields(IHeaderParagraph).select('header', 'renderer')
    98     fields = field.Fields(IHeaderParagraph).select('header', 'renderer')
    97     fields['renderer'].widgetFactory = RendererFieldWidget
    99     fields['renderer'].widgetFactory = RendererFieldWidget
   111     """Header paragraph properties edit form, JSON renderer"""
   113     """Header paragraph properties edit form, JSON renderer"""
   112 
   114 
   113     def get_ajax_output(self, changes):
   115     def get_ajax_output(self, changes):
   114         output = super(HeaderParagraphPropertiesAJAXEditForm, self).get_ajax_output(changes)
   116         output = super(HeaderParagraphPropertiesAJAXEditForm, self).get_ajax_output(changes)
   115         if 'header' in changes.get(IHeaderParagraph, ()):
   117         if 'header' in changes.get(IHeaderParagraph, ()):
   116             output.setdefault('events', []).append({
   118             output.setdefault('events', []).append(get_json_paragraph_refresh_event(self.context, self.request))
   117                 'event': 'myams.refresh',
       
   118                 'options': {
       
   119                     'handler': 'PyAMS_content.paragraphs.refreshParagraph',
       
   120                     'object_name': self.context.__name__,
       
   121                     'title': II18n(self.context).query_attribute('title', request=self.request),
       
   122                     'visible': self.context.visible
       
   123                 }
       
   124             })
       
   125         return output
   119         return output
   126 
   120 
   127 
   121 
   128 @adapter_config(context=(IHeaderParagraph, IPyAMSLayer), provides=IParagraphInnerEditor)
   122 @adapter_config(context=(IHeaderParagraph, IPyAMSLayer), provides=IParagraphInnerEditor)
   129 @implementer(IInnerForm)
   123 @implementer(IInnerForm)
   150     """Header paragraph inner edit form, JSON renderer"""
   144     """Header paragraph inner edit form, JSON renderer"""
   151 
   145 
   152     def get_ajax_output(self, changes):
   146     def get_ajax_output(self, changes):
   153         output = super(HeaderParagraphInnerAJAXEditForm, self).get_ajax_output(changes)
   147         output = super(HeaderParagraphInnerAJAXEditForm, self).get_ajax_output(changes)
   154         updated = changes.get(IHeaderParagraph, ())
   148         updated = changes.get(IHeaderParagraph, ())
       
   149         if 'header' in updated:
       
   150             output.setdefault('events', []).append(get_json_paragraph_refresh_event(self.context, self.request))
   155         if 'renderer' in updated:
   151         if 'renderer' in updated:
   156             form = HeaderParagraphInnerEditForm(self.context, self.request)
   152             output.setdefault('events', []).append(get_json_widget_refresh_event(self.context, self.request,
   157             form.update()
   153                                                                                  HeaderParagraphInnerEditForm, 'renderer'))
   158             output.setdefault('events', []).append({
       
   159                 'event': 'myams.refresh',
       
   160                 'options': {
       
   161                     'handler': 'MyAMS.skin.refreshWidget',
       
   162                     'parent_id': '{0}_{1}_{2}'.format(
       
   163                         self.context.__class__.__name__,
       
   164                         getattr(form.getContent(), '__name__', 'noname').replace('++', ''),
       
   165                         form.id),
       
   166                     'widget_name': form.widgets['renderer'].name,
       
   167                     'content': form.widgets['renderer'].render()
       
   168                 }
       
   169             })
       
   170         return output
   154         return output
   171 
   155 
   172 
   156 
   173 #
   157 #
   174 # Header paragraph renderer
   158 # Header paragraph renderer