src/pyams_content/component/paragraph/zmi/pictogram.py
changeset 591 b694d5667d17
parent 576 12171cf62cc4
child 592 c4baa5f90aae
--- a/src/pyams_content/component/paragraph/zmi/pictogram.py	Wed Jun 06 13:32:14 2018 +0200
+++ b/src/pyams_content/component/paragraph/zmi/pictogram.py	Fri Jun 08 10:33:23 2018 +0200
@@ -40,7 +40,7 @@
 from pyams_content.component.paragraph.zmi import BaseParagraphAddMenu, BaseParagraphAJAXAddForm, \
     BaseParagraphPropertiesEditForm, BaseParagraphAJAXEditForm
 from pyams_content.features.renderer.zmi.widget import RendererFieldWidget
-from pyams_form.form import AJAXAddForm, AJAXEditForm
+from pyams_form.form import AJAXAddForm, ajax_config
 from pyams_form.security import ProtectedFormObjectMixin
 from pyams_i18n.column import I18nAttrColumn
 from pyams_pagelet.pagelet import pagelet_config
@@ -88,6 +88,8 @@
     
 @pagelet_config(name='add-pictogram-paragraph.html', context=IParagraphContainerTarget, layer=IPyAMSLayer,
                 permission=MANAGE_CONTENT_PERMISSION)
+@ajax_config(name='add-pictogram-paragraph.json', context=IParagraphContainerTarget, layer=IPyAMSLayer,
+             base=BaseParagraphAJAXAddForm)
 class PictogramParagraphAddForm(AdminDialogAddForm):
     """Pictogram paragraph add form"""
     
@@ -95,7 +97,6 @@
     icon_css_class = 'fa fa-fw fa-linode'
     
     fields = field.Fields(IPictogramParagraph).select('title', 'renderer')
-    ajax_handler = 'add-pictogram-paragraph.json'
     edit_permission = MANAGE_CONTENT_PERMISSION
     
     def create(self, data):
@@ -103,16 +104,12 @@
     
     def add(self, object):
         IParagraphContainer(self.context).append(object)
-        
-        
-@view_config(name='add-pictogram-paragraph.json', context=IParagraphContainerTarget, request_type=IPyAMSLayer,
-             permission=MANAGE_CONTENT_PERMISSION, renderer='json', xhr=True)
-class PictogramParagraphAJAXAddForm(BaseParagraphAJAXAddForm, PictogramParagraphAddForm):
-    """Pictogram paragraph add form, JSON renderer"""
-    
-    
+
+
 @pagelet_config(name='properties.html', context=IPictogramParagraph, layer=IPyAMSLayer,
                 permission=MANAGE_CONTENT_PERMISSION)
+@ajax_config(name='properties.json', context=IPictogramParagraph, layer=IPyAMSLayer,
+             base=BaseParagraphAJAXEditForm)
 class PictogramParagraphPropertiesEditForm(BaseParagraphPropertiesEditForm):
     """Pictogram paragraph properties edit form"""
 
@@ -129,23 +126,17 @@
     fields = field.Fields(IPictogramParagraph).select('title', 'renderer')
     fields['renderer'].widgetFactory = RendererFieldWidget
 
-    ajax_handler = 'properties.json'
     edit_permission = MANAGE_CONTENT_PERMISSION
 
 
-@view_config(name='properties.json', context=IPictogramParagraph, request_type=IPyAMSLayer,
-             permission=MANAGE_CONTENT_PERMISSION, renderer='json', xhr=True)
-class PictogramParagraphPropertiesAJAXEditForm(BaseParagraphAJAXEditForm, PictogramParagraphPropertiesEditForm):
-    """Pictogram paragraph properties edit form, JSON renderer"""
-
-
 @adapter_config(context=(IPictogramParagraph, IPyAMSLayer), provides=IParagraphInnerEditor)
+@ajax_config(name='inner-properties.json', context=IPictogramParagraph, layer=IPyAMSLayer,
+             base=BaseParagraphAJAXEditForm)
 @implementer(IInnerForm, IPropertiesEditForm, IPictogramsParentForm)
 class PictogramParagraphInnerEditForm(PictogramParagraphPropertiesEditForm):
     """Pictogram paragraph inner edit form"""
 
     legend = None
-    ajax_handler = 'inner-properties.json'
 
     @property
     def buttons(self):
@@ -154,14 +145,8 @@
         else:
             return button.Buttons()
 
-
-@view_config(name='inner-properties.json', context=IPictogramParagraph, request_type=IPyAMSLayer,
-             permission=MANAGE_CONTENT_PERMISSION, renderer='json', xhr=True)
-class PictogramParagraphInnerAJAXEditForm(BaseParagraphAJAXEditForm, PictogramParagraphInnerEditForm):
-    """Pictograms paragraph inner edit form, JSON renderer"""
-
     def get_ajax_output(self, changes):
-        output = super(PictogramParagraphInnerAJAXEditForm, self).get_ajax_output(changes)
+        output = super(self.__class__, self).get_ajax_output(changes)
         updated = changes.get(IPictogramParagraph, ())
         if 'renderer' in updated:
             output.setdefault('events', []).append(
@@ -325,6 +310,8 @@
 
 @pagelet_config(name='add-pictogram.html', context=IPictogramContainerTarget, layer=IPyAMSLayer,
                 permission=MANAGE_CONTENT_PERMISSION)
+@ajax_config(name='add-pictogram.json', context=IParagraphContainerTarget, layer=IPyAMSLayer,
+             base=AJAXAddForm)
 class PictogramAddForm(AdminDialogAddForm):
     """Pictogram add form"""
 
@@ -332,7 +319,6 @@
     icon_css_class = 'fa fa-fw fa-arrow-h'
 
     fields = field.Fields(IPictogramItem).omit('__parent__', '__name__', 'visible')
-    ajax_handler = 'add-pictogram.json'
     edit_permission = MANAGE_CONTENT_PERMISSION
 
     def updateWidgets(self, prefix=None):
@@ -362,12 +348,6 @@
     def add(self, object):
         IPictogramContainer(self.context).append(object)
 
-
-@view_config(name='add-pictogram.json', context=IPictogramContainerTarget, request_type=IPyAMSLayer,
-             permission=MANAGE_CONTENT_PERMISSION, renderer='json', xhr=True)
-class PictogramAJAXAddForm(AJAXAddForm, PictogramAddForm):
-    """Pictogram add form, JSON renderer"""
-
     def get_ajax_output(self, changes):
         return {
             'status': 'success',
@@ -385,6 +365,7 @@
 
 
 @pagelet_config(name='properties.html', context=IPictogramItem, layer=IPyAMSLayer, permission=MANAGE_CONTENT_PERMISSION)
+@ajax_config(name='properties.json', context=IPictogramItem, layer=IPyAMSLayer)
 class PictogramPropertiesEditForm(AdminDialogEditForm):
     """Pictogram properties edit form"""
 
@@ -394,7 +375,6 @@
     icon_css_class = 'fa fa-fw fa-linode'
 
     fields = field.Fields(IPictogramItem).omit('__parent__', '__name__', 'visible')
-    ajax_handler = 'properties.json'
     edit_permission = MANAGE_CONTENT_PERMISSION
 
     def updateWidgets(self, prefix=None):
@@ -424,14 +404,8 @@
         if 'body' in self.widgets:
             self.widgets['body'].widget_css_class = 'textarea height-100'
 
-
-@view_config(name='properties.json', context=IPictogramItem, request_type=IPyAMSLayer,
-             permission=MANAGE_CONTENT_PERMISSION, renderer='json', xhr=True)
-class PictogramPropertiesAJAXEditForm(AJAXEditForm, PictogramPropertiesEditForm):
-    """Pictogram properties edit form, JSON renderer"""
-
     def get_ajax_output(self, changes):
-        output = super(PictogramPropertiesAJAXEditForm, self).get_ajax_output(changes)
+        output = super(self.__class__, self).get_ajax_output(changes)
         updated = changes.get(IPictogramItem, ())
         if updated:
             target = get_parent(self.context, IPictogramContainerTarget)