src/pyams_content/component/paragraph/zmi/keypoint.py
changeset 527 5dd1aa8bedd9
parent 509 3fc5fed6105e
child 550 9658debb49a3
equal deleted inserted replaced
526:b15153f45957 527:5dd1aa8bedd9
    20     IParagraphRenderer
    20     IParagraphRenderer
    21 from pyams_content.component.paragraph.interfaces.keypoint import IKeypointsParagraph, KEYPOINTS_PARAGRAPH_TYPE
    21 from pyams_content.component.paragraph.interfaces.keypoint import IKeypointsParagraph, KEYPOINTS_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.keypoint import KeypointsParagraph
    30 from pyams_content.component.paragraph.keypoint import KeypointsParagraph
    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=IKeypointsParagraph, layer=IPyAMSLayer,
    88 @pagelet_config(name='properties.html', context=IKeypointsParagraph, layer=IPyAMSLayer,
    89                 permission=MANAGE_CONTENT_PERMISSION)
    89                 permission=MANAGE_CONTENT_PERMISSION)
    90 class KeypointsParagraphPropertiesEditForm(BaseParagraphPropertiesEditForm):
    90 class KeypointsParagraphPropertiesEditForm(BaseParagraphPropertiesEditForm):
    91     """Key points paragraph properties edit form"""
    91     """Key points paragraph properties edit form"""
    92 
    92 
       
    93     prefix = 'keypoints_properties.'
       
    94 
    93     legend = _("Edit key points paragraph properties")
    95     legend = _("Edit key points paragraph properties")
    94     icon_css_class = 'fa fa-fw fa-key'
    96     icon_css_class = 'fa fa-fw fa-key'
    95 
    97 
    96     fields = field.Fields(IKeypointsParagraph).select('body', 'renderer')
    98     fields = field.Fields(IKeypointsParagraph).select('body', 'renderer')
    97     fields['renderer'].widgetFactory = RendererFieldWidget
    99     fields['renderer'].widgetFactory = RendererFieldWidget
   111     """Key points paragraph properties edit form, JSON renderer"""
   113     """Key points 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(KeypointsParagraphPropertiesAJAXEditForm, self).get_ajax_output(changes)
   116         output = super(KeypointsParagraphPropertiesAJAXEditForm, self).get_ajax_output(changes)
   115         if 'body' in changes.get(IKeypointsParagraph, ()):
   117         if 'body' in changes.get(IKeypointsParagraph, ()):
   116             output.setdefault('events', []).append({
   118             output.setdefault('events', []).append(
   117                 'event': 'myams.refresh',
   119                 get_json_paragraph_refresh_event(self.context, self.request))
   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
   120         return output
   126 
   121 
   127 
   122 
   128 @adapter_config(context=(IKeypointsParagraph, IPyAMSLayer), provides=IParagraphInnerEditor)
   123 @adapter_config(context=(IKeypointsParagraph, IPyAMSLayer), provides=IParagraphInnerEditor)
   129 @implementer(IInnerForm)
   124 @implementer(IInnerForm)
   153         output = super(KeypointsParagraphInnerAJAXEditForm, self).get_ajax_output(changes)
   148         output = super(KeypointsParagraphInnerAJAXEditForm, self).get_ajax_output(changes)
   154         updated = changes.get(IKeypointsParagraph, ())
   149         updated = changes.get(IKeypointsParagraph, ())
   155         if 'renderer' in updated:
   150         if 'renderer' in updated:
   156             form = KeypointsParagraphInnerEditForm(self.context, self.request)
   151             form = KeypointsParagraphInnerEditForm(self.context, self.request)
   157             form.update()
   152             form.update()
   158             output.setdefault('events', []).append({
   153             output.setdefault('events', []).append(
   159                 'event': 'myams.refresh',
   154                 get_json_widget_refresh_event(self.context, self.request, KeypointsParagraphInnerEditForm, 'renderer'))
   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
   155         return output
   171 
   156 
   172 
   157 
   173 #
   158 #
   174 # Key points paragraph renderer
   159 # Key points paragraph renderer