src/pyams_content/component/paragraph/zmi/frame.py
changeset 527 5dd1aa8bedd9
parent 507 7320a5522ee1
child 550 9658debb49a3
equal deleted inserted replaced
526:b15153f45957 527:5dd1aa8bedd9
    32 
    32 
    33 # import packages
    33 # import packages
    34 from pyams_content.component.association.zmi import AssociationsTable
    34 from pyams_content.component.association.zmi import AssociationsTable
    35 from pyams_content.component.paragraph.frame import FrameParagraph
    35 from pyams_content.component.paragraph.frame import FrameParagraph
    36 from pyams_content.component.paragraph.zmi import BaseParagraphAJAXAddForm, BaseParagraphAJAXEditForm, \
    36 from pyams_content.component.paragraph.zmi import BaseParagraphAJAXAddForm, BaseParagraphAJAXEditForm, \
    37     BaseParagraphAddMenu, BaseParagraphPropertiesEditForm
    37     BaseParagraphAddMenu, BaseParagraphPropertiesEditForm, get_json_paragraph_toolbar_refresh_event
    38 from pyams_content.component.paragraph.zmi.container import ParagraphContainerTable, \
    38 from pyams_content.component.paragraph.zmi.container import ParagraphContainerTable, \
    39     ParagraphTitleToolbarViewletManager
    39     ParagraphTitleToolbarViewletManager
    40 from pyams_content.features.renderer.zmi import BaseRenderedContentRenderer
    40 from pyams_content.features.renderer.zmi import BaseRenderedContentRenderer
    41 from pyams_content.features.renderer.zmi.widget import RendererFieldWidget
    41 from pyams_content.features.renderer.zmi.widget import RendererFieldWidget
    42 from pyams_pagelet.pagelet import pagelet_config
    42 from pyams_pagelet.pagelet import pagelet_config
       
    43 from pyams_skin.event import get_json_switched_table_refresh_event, get_json_widget_refresh_event
    43 from pyams_utils.adapter import adapter_config, ContextRequestAdapter
    44 from pyams_utils.adapter import adapter_config, ContextRequestAdapter
    44 from pyams_utils.traversing import get_parent
    45 from pyams_utils.traversing import get_parent
    45 from pyams_viewlet.viewlet import viewlet_config
    46 from pyams_viewlet.viewlet import viewlet_config
    46 from pyams_zmi.form import AdminDialogAddForm
    47 from pyams_zmi.form import AdminDialogAddForm
    47 from pyramid.view import view_config
    48 from pyramid.view import view_config
   124 @pagelet_config(name='properties.html', context=IFrameParagraph, layer=IPyAMSLayer,
   125 @pagelet_config(name='properties.html', context=IFrameParagraph, layer=IPyAMSLayer,
   125                 permission=MANAGE_CONTENT_PERMISSION)
   126                 permission=MANAGE_CONTENT_PERMISSION)
   126 @implementer(IFrameParagraphForm)
   127 @implementer(IFrameParagraphForm)
   127 class FrameParagraphPropertiesEditForm(BaseParagraphPropertiesEditForm):
   128 class FrameParagraphPropertiesEditForm(BaseParagraphPropertiesEditForm):
   128     """Framed text paragraph properties edit form"""
   129     """Framed text paragraph properties edit form"""
       
   130 
       
   131     prefix = 'frame_properties.'
   129 
   132 
   130     legend = _("Edit framed text paragraph properties")
   133     legend = _("Edit framed text paragraph properties")
   131     dialog_class = 'modal-large'
   134     dialog_class = 'modal-large'
   132     icon_css_class = 'fa fa-fw fa-list-alt'
   135     icon_css_class = 'fa fa-fw fa-list-alt'
   133     label_css_class = 'control-label col-md-2'
   136     label_css_class = 'control-label col-md-2'
   157     def get_ajax_output(self, changes):
   160     def get_ajax_output(self, changes):
   158         output = super(FrameParagraphPropertiesAJAXEditForm, self).get_ajax_output(changes)
   161         output = super(FrameParagraphPropertiesAJAXEditForm, self).get_ajax_output(changes)
   159         if 'body' in changes.get(IFrameParagraph, ()):
   162         if 'body' in changes.get(IFrameParagraph, ()):
   160             # refresh associations count markers
   163             # refresh associations count markers
   161             parent = get_parent(self.context, IAssociationTarget)
   164             parent = get_parent(self.context, IAssociationTarget)
   162             table = ParagraphContainerTable(parent, self.request)
   165             output.setdefault('events', []).append(
   163             viewlet = ParagraphTitleToolbarViewletManager(parent, self.request, table)
   166                 get_json_paragraph_toolbar_refresh_event(parent, self.request,
   164             viewlet.update()
   167                                                          ParagraphContainerTable, ParagraphTitleToolbarViewletManager))
   165             output.setdefault('events', []).append({
       
   166                 'event': 'myams.refresh',
       
   167                 'options': {
       
   168                     'handler': 'PyAMS_content.paragraphs.updateToolbar',
       
   169                     'object_name': self.context.__name__,
       
   170                     'toolbar_tag': viewlet.render()
       
   171                 }
       
   172             })
       
   173             # refresh associations table
   168             # refresh associations table
   174             associations_table = AssociationsTable(self.context, self.request)
   169             output.setdefault('events', []).append(
   175             associations_table.update()
   170                 get_json_switched_table_refresh_event(self.context, self.request, AssociationsTable))
   176             output.setdefault('events', []).append({
       
   177                 'event': 'myams.refresh',
       
   178                 'options': {
       
   179                     'handler': 'PyAMS_content.associations.refreshAssociations',
       
   180                     'object_id': associations_table.id,
       
   181                     'table': associations_table.render()
       
   182                 }
       
   183             })
       
   184         return output
   171         return output
   185 
   172 
   186 
   173 
   187 @adapter_config(context=(IFrameParagraph, IPyAMSLayer), provides=IParagraphInnerEditor)
   174 @adapter_config(context=(IFrameParagraph, IPyAMSLayer), provides=IParagraphInnerEditor)
   188 @implementer(IInnerForm, IPropertiesEditForm, IAssociationsParentForm)
   175 @implementer(IInnerForm, IPropertiesEditForm, IAssociationsParentForm)
   207 
   194 
   208     def get_ajax_output(self, changes):
   195     def get_ajax_output(self, changes):
   209         output = super(FrameParagraphInnerAJAXEditForm, self).get_ajax_output(changes)
   196         output = super(FrameParagraphInnerAJAXEditForm, self).get_ajax_output(changes)
   210         updated = changes.get(IFrameParagraph, ())
   197         updated = changes.get(IFrameParagraph, ())
   211         if 'renderer' in updated:
   198         if 'renderer' in updated:
   212             form = FrameParagraphInnerEditForm(self.context, self.request)
   199             output.setdefault('events', []).append(
   213             form.update()
   200                 get_json_widget_refresh_event(self.context, self.request, FrameParagraphInnerEditForm, 'renderer'))
   214             output.setdefault('events', []).append({
       
   215                 'event': 'myams.refresh',
       
   216                 'options': {
       
   217                     'handler': 'MyAMS.skin.refreshWidget',
       
   218                     'parent_id': '{0}_{1}_{2}'.format(
       
   219                         self.context.__class__.__name__,
       
   220                         getattr(form.getContent(), '__name__', 'noname').replace('++', ''),
       
   221                         form.id),
       
   222                     'widget_name': form.widgets['renderer'].name,
       
   223                     'content': form.widgets['renderer'].render()
       
   224                 }
       
   225             })
       
   226         return output
   201         return output
   227 
   202 
   228 
   203 
   229 #
   204 #
   230 # Framed text paragraph renderer
   205 # Framed text paragraph renderer