src/pyams_content/shared/imagemap/zmi/paragraph.py
changeset 591 b694d5667d17
parent 555 8e8a14452567
child 845 6b039f09a91c
equal deleted inserted replaced
590:4fafaf94701d 591:b694d5667d17
    30 # import packages
    30 # import packages
    31 from pyams_content.component.paragraph.zmi import BaseParagraphAJAXAddForm, BaseParagraphAJAXEditForm, \
    31 from pyams_content.component.paragraph.zmi import BaseParagraphAJAXAddForm, BaseParagraphAJAXEditForm, \
    32     BaseParagraphAddMenu, BaseParagraphPropertiesEditForm, IParagraphEditFormButtons
    32     BaseParagraphAddMenu, BaseParagraphPropertiesEditForm, IParagraphEditFormButtons
    33 from pyams_content.features.renderer.zmi.widget import RendererFieldWidget
    33 from pyams_content.features.renderer.zmi.widget import RendererFieldWidget
    34 from pyams_content.shared.imagemap.paragraph import ImageMapParagraph
    34 from pyams_content.shared.imagemap.paragraph import ImageMapParagraph
       
    35 from pyams_form.form import ajax_config
    35 from pyams_pagelet.pagelet import pagelet_config
    36 from pyams_pagelet.pagelet import pagelet_config
    36 from pyams_skin.event import get_json_form_refresh_event
    37 from pyams_skin.event import get_json_form_refresh_event
    37 from pyams_template.template import template_config
    38 from pyams_template.template import template_config
    38 from pyams_utils.adapter import adapter_config
    39 from pyams_utils.adapter import adapter_config
    39 from pyams_utils.traversing import get_parent
    40 from pyams_utils.traversing import get_parent
    40 from pyams_viewlet.viewlet import viewlet_config, Viewlet
    41 from pyams_viewlet.viewlet import viewlet_config, Viewlet
    41 from pyams_zmi.form import AdminDialogAddForm
    42 from pyams_zmi.form import AdminDialogAddForm
    42 from pyramid.view import view_config
       
    43 from z3c.form import field, button
    43 from z3c.form import field, button
    44 from zope.interface import implementer
    44 from zope.interface import implementer
    45 
    45 
    46 from pyams_content import _
    46 from pyams_content import _
    47 
    47 
    57     paragraph_type = IMAGEMAP_PARAGRAPH_TYPE
    57     paragraph_type = IMAGEMAP_PARAGRAPH_TYPE
    58 
    58 
    59 
    59 
    60 @pagelet_config(name='add-imagemap-paragraph.html', context=IParagraphContainerTarget, layer=IPyAMSLayer,
    60 @pagelet_config(name='add-imagemap-paragraph.html', context=IParagraphContainerTarget, layer=IPyAMSLayer,
    61                 permission=MANAGE_CONTENT_PERMISSION)
    61                 permission=MANAGE_CONTENT_PERMISSION)
       
    62 @ajax_config(name='add-imagemap-paragraph.json', context=IParagraphContainerTarget, layer=IPyAMSLayer,
       
    63              base=BaseParagraphAJAXAddForm)
    62 class ImagemapParagraphAddForm(AdminDialogAddForm):
    64 class ImagemapParagraphAddForm(AdminDialogAddForm):
    63     """Image map paragraph add form"""
    65     """Image map paragraph add form"""
    64 
    66 
    65     legend = _("Add new image map")
    67     legend = _("Add new image map")
    66     icon_css_class = 'fa fa-fw fa-location-arrow'
    68     icon_css_class = 'fa fa-fw fa-location-arrow'
    67 
    69 
    68     fields = field.Fields(IImageMapParagraph).omit('__parent__', '__name__', 'visible')
    70     fields = field.Fields(IImageMapParagraph).omit('__parent__', '__name__', 'visible')
    69     ajax_handler = 'add-imagemap-paragraph.json'
       
    70     edit_permission = MANAGE_CONTENT_PERMISSION
    71     edit_permission = MANAGE_CONTENT_PERMISSION
    71 
    72 
    72     def create(self, data):
    73     def create(self, data):
    73         return ImageMapParagraph()
    74         return ImageMapParagraph()
    74 
    75 
    75     def add(self, object):
    76     def add(self, object):
    76         IParagraphContainer(self.context).append(object)
    77         IParagraphContainer(self.context).append(object)
    77 
    78 
    78 
    79 
    79 @view_config(name='add-imagemap-paragraph.json', context=IParagraphContainerTarget, request_type=IPyAMSLayer,
       
    80              permission=MANAGE_CONTENT_PERMISSION, renderer='json', xhr=True)
       
    81 class ImagemapParagraphAJAXAddForm(BaseParagraphAJAXAddForm, ImagemapParagraphAddForm):
       
    82     """Image map paragraph add form, JSON renderer"""
       
    83 
       
    84 
       
    85 @pagelet_config(name='properties.html', context=IImageMapParagraph, layer=IPyAMSLayer,
    80 @pagelet_config(name='properties.html', context=IImageMapParagraph, layer=IPyAMSLayer,
    86                 permission=MANAGE_CONTENT_PERMISSION)
    81                 permission=MANAGE_CONTENT_PERMISSION)
       
    82 @ajax_config(name='properties.json', context=IImageMapParagraph, layer=IPyAMSLayer,
       
    83              base=BaseParagraphAJAXEditForm)
    87 class ImagemapParagraphPropertiesEditForm(BaseParagraphPropertiesEditForm):
    84 class ImagemapParagraphPropertiesEditForm(BaseParagraphPropertiesEditForm):
    88     """Image map paragraph edit form"""
    85     """Image map paragraph edit form"""
    89 
    86 
    90     prefix = 'imagemap_properties.'
    87     prefix = 'imagemap_properties.'
    91 
    88 
    98     icon_css_class = 'fa fa-fw fa-location-arrow'
    95     icon_css_class = 'fa fa-fw fa-location-arrow'
    99 
    96 
   100     fields = field.Fields(IImageMapParagraph).omit('__parent__', '__name__', 'visible')
    97     fields = field.Fields(IImageMapParagraph).omit('__parent__', '__name__', 'visible')
   101     fields['renderer'].widgetFactory = RendererFieldWidget
    98     fields['renderer'].widgetFactory = RendererFieldWidget
   102 
    99 
   103     ajax_handler = 'properties.json'
       
   104     edit_permission = MANAGE_CONTENT_PERMISSION
   100     edit_permission = MANAGE_CONTENT_PERMISSION
   105 
   101 
   106 
   102 
   107 @view_config(name='properties.json', context=IImageMapParagraph, request_type=IPyAMSLayer,
       
   108              permission=MANAGE_CONTENT_PERMISSION, renderer='json', xhr=True)
       
   109 class ImagemapParagrahPropertiesAJAXEditForm(BaseParagraphAJAXEditForm, ImagemapParagraphPropertiesEditForm):
       
   110     """Image map properties edit form, JSON renderer"""
       
   111 
       
   112 
       
   113 @adapter_config(context=(IImageMapParagraph, IPyAMSLayer), provides=IParagraphInnerEditor)
   103 @adapter_config(context=(IImageMapParagraph, IPyAMSLayer), provides=IParagraphInnerEditor)
       
   104 @ajax_config(name='inner-properties.json', context=IImageMapParagraph, layer=IPyAMSLayer,
       
   105              base=BaseParagraphAJAXEditForm)
   114 @implementer(IInnerForm)
   106 @implementer(IInnerForm)
   115 class ImagemapParagraphInnerEditForm(ImagemapParagraphPropertiesEditForm):
   107 class ImagemapParagraphInnerEditForm(ImagemapParagraphPropertiesEditForm):
   116     """Image map properties inner edit form"""
   108     """Image map properties inner edit form"""
   117 
   109 
   118     legend = None
   110     legend = None
   119     ajax_handler = 'inner-properties.json'
       
   120 
   111 
   121     @property
   112     @property
   122     def buttons(self):
   113     def buttons(self):
   123         if self.mode == INPUT_MODE:
   114         if self.mode == INPUT_MODE:
   124             return button.Buttons(IParagraphEditFormButtons)
   115             return button.Buttons(IParagraphEditFormButtons)
   125         else:
   116         else:
   126             return button.Buttons()
   117             return button.Buttons()
   127 
   118 
   128 
       
   129 @view_config(name='inner-properties.json', context=IImageMapParagraph, request_type=IPyAMSLayer,
       
   130              permission=MANAGE_CONTENT_PERMISSION, renderer='json', xhr=True)
       
   131 class ImagemapParagraphInnerAJAXEditForm(BaseParagraphAJAXEditForm, ImagemapParagraphInnerEditForm):
       
   132     """Image map paragraph properties inner edit form, JSON rendener"""
       
   133 
       
   134     def get_ajax_output(self, changes):
   119     def get_ajax_output(self, changes):
   135         output = super(ImagemapParagraphInnerAJAXEditForm, self).get_ajax_output(changes)
   120         output = super(self.__class__, self).get_ajax_output(changes)
   136         if 'reference' in changes.get(IImageMapParagraph, ()):
   121         if 'reference' in changes.get(IImageMapParagraph, ()):
   137             output.setdefault('events', []).append(
   122             output.setdefault('events', []).append(
   138                 get_json_form_refresh_event(self.context, self.request, ImagemapParagraphInnerEditForm))
   123                 get_json_form_refresh_event(self.context, self.request, ImagemapParagraphInnerEditForm))
   139         return output
   124         return output
   140 
   125