src/pyams_content/component/paragraph/zmi/pictogram.py
changeset 1243 837612af4dc3
parent 1083 112b6aa11de4
child 1411 cd12f6f824e2
equal deleted inserted replaced
1242:3599d25c7f10 1243:837612af4dc3
    22 from z3c.table.column import GetAttrColumn
    22 from z3c.table.column import GetAttrColumn
    23 from z3c.table.interfaces import IColumn, IValues
    23 from z3c.table.interfaces import IColumn, IValues
    24 from zope.interface import Interface, Invalid, implementer
    24 from zope.interface import Interface, Invalid, implementer
    25 
    25 
    26 from pyams_content.component.paragraph import BaseParagraph
    26 from pyams_content.component.paragraph import BaseParagraph
    27 from pyams_content.component.paragraph.interfaces import IParagraphContainer, IParagraphContainerTarget, \
    27 from pyams_content.component.paragraph.interfaces import IParagraphContainerTarget
    28     PARAGRAPH_HIDDEN_FIELDS
       
    29 from pyams_content.component.paragraph.interfaces.pictogram import IPictogramContainer, IPictogramContainerTarget, \
    28 from pyams_content.component.paragraph.interfaces.pictogram import IPictogramContainer, IPictogramContainerTarget, \
    30     IPictogramItem, IPictogramParagraph, PICTOGRAM_PARAGRAPH_TYPE
    29     IPictogramItem, IPictogramParagraph, PICTOGRAM_PARAGRAPH_TYPE
    31 from pyams_content.component.paragraph.pictogram import PictogramItem, PictogramParagraph
    30 from pyams_content.component.paragraph.pictogram import PictogramItem, PictogramParagraph
    32 from pyams_content.component.paragraph.zmi import BaseParagraphAJAXAddForm, BaseParagraphAJAXEditForm, \
    31 from pyams_content.component.paragraph.zmi import BaseParagraphAJAXAddForm, BaseParagraphAJAXEditForm, \
    33     BaseParagraphAddMenu, BaseParagraphPropertiesEditForm, IParagraphInnerEditFormButtons
    32     BaseParagraphAddForm, BaseParagraphAddMenu, BaseParagraphPropertiesEditForm, IParagraphInnerEditFormButtons
    34 from pyams_content.component.paragraph.zmi import IParagraphContainerView
    33 from pyams_content.component.paragraph.zmi import IParagraphContainerView
    35 from pyams_content.component.paragraph.zmi.interfaces import IParagraphInnerEditor
    34 from pyams_content.component.paragraph.zmi.interfaces import IParagraphInnerEditor
    36 from pyams_content.features.renderer.zmi.widget import RendererFieldWidget
       
    37 from pyams_content.interfaces import MANAGE_CONTENT_PERMISSION
    35 from pyams_content.interfaces import MANAGE_CONTENT_PERMISSION
    38 from pyams_content.reference.pictograms.zmi.widget import PictogramSelectFieldWidget
    36 from pyams_content.reference.pictograms.zmi.widget import PictogramSelectFieldWidget
    39 from pyams_content.shared.common import IWfSharedContent
    37 from pyams_content.shared.common import IWfSharedContent
    40 from pyams_file.zmi.image import render_image
    38 from pyams_file.zmi.image import render_image
    41 from pyams_form.form import AJAXAddForm, ajax_config
    39 from pyams_form.form import AJAXAddForm, ajax_config
    84 
    82 
    85 @pagelet_config(name='add-pictogram-paragraph.html', context=IParagraphContainerTarget, layer=IPyAMSLayer,
    83 @pagelet_config(name='add-pictogram-paragraph.html', context=IParagraphContainerTarget, layer=IPyAMSLayer,
    86                 permission=MANAGE_CONTENT_PERMISSION)
    84                 permission=MANAGE_CONTENT_PERMISSION)
    87 @ajax_config(name='add-pictogram-paragraph.json', context=IParagraphContainerTarget, layer=IPyAMSLayer,
    85 @ajax_config(name='add-pictogram-paragraph.json', context=IParagraphContainerTarget, layer=IPyAMSLayer,
    88              base=BaseParagraphAJAXAddForm)
    86              base=BaseParagraphAJAXAddForm)
    89 class PictogramParagraphAddForm(AdminDialogAddForm):
    87 class PictogramParagraphAddForm(BaseParagraphAddForm):
    90     """Pictogram paragraph add form"""
    88     """Pictogram paragraph add form"""
    91 
    89 
    92     legend = _("Add new pictogram paragraph")
    90     legend = _("Add new pictogram paragraph")
    93     icon_css_class = 'fa fa-fw ' + PictogramParagraph.icon_class
    91 
    94 
    92     content_interface = IPictogramParagraph
    95     fields = field.Fields(IPictogramParagraph).omit(*PARAGRAPH_HIDDEN_FIELDS)
       
    96     edit_permission = MANAGE_CONTENT_PERMISSION
       
    97 
       
    98     def create(self, data):
       
    99         return PictogramParagraph()
       
   100 
       
   101     def add(self, object):
       
   102         IParagraphContainer(self.context).append(object)
       
   103 
    93 
   104 
    94 
   105 @pagelet_config(name='properties.html', context=IPictogramParagraph, layer=IPyAMSLayer,
    95 @pagelet_config(name='properties.html', context=IPictogramParagraph, layer=IPyAMSLayer,
   106                 permission=MANAGE_CONTENT_PERMISSION)
    96                 permission=MANAGE_CONTENT_PERMISSION)
   107 @ajax_config(name='properties.json', context=IPictogramParagraph, layer=IPyAMSLayer,
    97 @ajax_config(name='properties.json', context=IPictogramParagraph, layer=IPyAMSLayer,
   115     def title(self):
   105     def title(self):
   116         content = get_parent(self.context, IWfSharedContent)
   106         content = get_parent(self.context, IWfSharedContent)
   117         return II18n(content).query_attribute('title', request=self.request)
   107         return II18n(content).query_attribute('title', request=self.request)
   118 
   108 
   119     legend = _("Edit pictogram paragraph properties")
   109     legend = _("Edit pictogram paragraph properties")
   120     icon_css_class = 'fa fa-fw ' + PictogramParagraph.icon_class
   110 
   121 
   111     content_interface = IPictogramParagraph
   122     fields = field.Fields(IPictogramParagraph).omit(*PARAGRAPH_HIDDEN_FIELDS)
       
   123     fields['renderer'].widgetFactory = RendererFieldWidget
       
   124 
       
   125     edit_permission = MANAGE_CONTENT_PERMISSION
       
   126 
   112 
   127     def get_ajax_output(self, changes):
   113     def get_ajax_output(self, changes):
   128         output = super(self.__class__, self).get_ajax_output(changes)
   114         output = super(self.__class__, self).get_ajax_output(changes)
   129         updated = changes.get(IPictogramParagraph, ())
   115         updated = changes.get(IPictogramParagraph, ())
   130         if 'renderer' in updated:
   116         if 'renderer' in updated: