src/pyams_content/component/illustration/zmi/paragraph.py
changeset 1243 837612af4dc3
parent 1124 de6e9b0637b6
equal deleted inserted replaced
1242:3599d25c7f10 1243:837612af4dc3
    11 #
    11 #
    12 
    12 
    13 __docformat__ = 'restructuredtext'
    13 __docformat__ = 'restructuredtext'
    14 
    14 
    15 from transaction.interfaces import ITransactionManager
    15 from transaction.interfaces import ITransactionManager
    16 from z3c.form import button, field
    16 from z3c.form import button
    17 from z3c.form.interfaces import INPUT_MODE
    17 from z3c.form.interfaces import INPUT_MODE
    18 from zope.interface import implementer
    18 from zope.interface import implementer
    19 
    19 
    20 from pyams_content.component.illustration import IBasicIllustration
    20 from pyams_content.component.illustration import IBasicIllustration
    21 from pyams_content.component.illustration.interfaces import IBasicIllustrationTarget, IIllustration, \
    21 from pyams_content.component.illustration.interfaces import IBasicIllustrationTarget, IIllustration, \
    22     IIllustrationParagraph, ILLUSTRATION_PARAGRAPH_TYPE
    22     IIllustrationParagraph, ILLUSTRATION_PARAGRAPH_TYPE
    23 from pyams_content.component.illustration.paragraph import Illustration
    23 from pyams_content.component.paragraph.interfaces import IParagraphContainerTarget
    24 from pyams_content.component.paragraph.interfaces import IParagraphContainer, IParagraphContainerTarget
       
    25 from pyams_content.component.paragraph.zmi import BaseParagraphAJAXAddForm, BaseParagraphAJAXEditForm, \
    24 from pyams_content.component.paragraph.zmi import BaseParagraphAJAXAddForm, BaseParagraphAJAXEditForm, \
    26     BaseParagraphAddMenu, BaseParagraphPropertiesEditForm, IParagraphInnerEditFormButtons, \
    25     BaseParagraphAddForm, BaseParagraphAddMenu, BaseParagraphPropertiesEditForm, IParagraphInnerEditFormButtons, \
    27     get_json_paragraph_refresh_event
    26     get_json_paragraph_refresh_event
    28 from pyams_content.component.paragraph.zmi.container import ParagraphContainerCounterBase
    27 from pyams_content.component.paragraph.zmi.container import ParagraphContainerCounterBase
    29 from pyams_content.component.paragraph.zmi.interfaces import IParagraphContainerTable, IParagraphContainerView, \
    28 from pyams_content.component.paragraph.zmi.interfaces import IParagraphContainerTable, IParagraphContainerView, \
    30     IParagraphInnerEditor, IParagraphTitleToolbar
    29     IParagraphInnerEditor, IParagraphTitleToolbar
    31 from pyams_content.features.renderer.zmi.widget import RendererFieldWidget
       
    32 from pyams_content.interfaces import MANAGE_CONTENT_PERMISSION
    30 from pyams_content.interfaces import MANAGE_CONTENT_PERMISSION
    33 from pyams_form.form import ajax_config
    31 from pyams_form.form import ajax_config
    34 from pyams_form.interfaces.form import IInnerForm
    32 from pyams_form.interfaces.form import IInnerForm
    35 from pyams_pagelet.pagelet import pagelet_config
    33 from pyams_pagelet.pagelet import pagelet_config
    36 from pyams_skin.event import get_json_form_refresh_event
    34 from pyams_skin.event import get_json_form_refresh_event
    37 from pyams_skin.interfaces.viewlet import IToolbarAddingMenu
    35 from pyams_skin.interfaces.viewlet import IToolbarAddingMenu
    38 from pyams_skin.layer import IPyAMSLayer
    36 from pyams_skin.layer import IPyAMSLayer
    39 from pyams_utils.adapter import adapter_config
    37 from pyams_utils.adapter import adapter_config
    40 from pyams_utils.interfaces import VIEW_SYSTEM_PERMISSION
    38 from pyams_utils.interfaces import VIEW_SYSTEM_PERMISSION
    41 from pyams_viewlet.viewlet import viewlet_config
    39 from pyams_viewlet.viewlet import viewlet_config
    42 from pyams_zmi.form import AdminDialogAddForm
       
    43 
    40 
    44 from pyams_content import _
    41 from pyams_content import _
    45 
    42 
    46 
    43 
    47 #
    44 #
    61 
    58 
    62 @pagelet_config(name='add-illustration.html', context=IParagraphContainerTarget, layer=IPyAMSLayer,
    59 @pagelet_config(name='add-illustration.html', context=IParagraphContainerTarget, layer=IPyAMSLayer,
    63                 permission=MANAGE_CONTENT_PERMISSION)
    60                 permission=MANAGE_CONTENT_PERMISSION)
    64 @ajax_config(name='add-illustration.json', context=IParagraphContainerTarget, layer=IPyAMSLayer,
    61 @ajax_config(name='add-illustration.json', context=IParagraphContainerTarget, layer=IPyAMSLayer,
    65              base=BaseParagraphAJAXAddForm)
    62              base=BaseParagraphAJAXAddForm)
    66 class IllustrationAddForm(AdminDialogAddForm):
    63 class IllustrationAddForm(BaseParagraphAddForm):
    67     """Illustration add form"""
    64     """Illustration add form"""
    68 
    65 
    69     legend = _("Add new illustration")
    66     legend = _("Add new illustration")
    70     dialog_class = 'modal-large'
    67     dialog_class = 'modal-large'
    71     icon_css_class = 'fa fa-fw fa-file-image-o'
       
    72 
    68 
    73     fields = field.Fields(IIllustrationParagraph).select('data', 'title', 'alt_title',
    69     content_interface = IIllustrationParagraph
    74                                                          'author', 'description', 'renderer')
       
    75 
    70 
    76     edit_permission = MANAGE_CONTENT_PERMISSION
    71     @property
    77 
    72     def fields(self):
    78     def create(self, data):
    73         return super(IllustrationAddForm, self).fields \
    79         return Illustration()
    74             .select('data', 'title', 'alt_title', 'author', 'description', 'renderer')
    80 
       
    81     def add(self, object):
       
    82         IParagraphContainer(self.context).append(object)
       
    83 
    75 
    84 
    76 
    85 @pagelet_config(name='properties.html', context=IIllustrationParagraph, layer=IPyAMSLayer,
    77 @pagelet_config(name='properties.html', context=IIllustrationParagraph, layer=IPyAMSLayer,
    86                 permission=MANAGE_CONTENT_PERMISSION)
    78                 permission=MANAGE_CONTENT_PERMISSION)
    87 @ajax_config(name='properties.json', context=IIllustrationParagraph, layer=IPyAMSLayer,
    79 @ajax_config(name='properties.json', context=IIllustrationParagraph, layer=IPyAMSLayer,
    91 
    83 
    92     prefix = 'illustration_properties.'
    84     prefix = 'illustration_properties.'
    93 
    85 
    94     legend = _("Edit illustration properties")
    86     legend = _("Edit illustration properties")
    95     dialog_class = 'modal-large'
    87     dialog_class = 'modal-large'
    96     icon_css_class = 'fa fa-fw fa-file-image-o'
       
    97 
    88 
    98     fields = field.Fields(IIllustrationParagraph).select('data', 'title', 'alt_title',
    89     content_interface = IIllustrationParagraph
    99                                                          'author', 'description', 'renderer')
       
   100     fields['renderer'].widgetFactory = RendererFieldWidget
       
   101 
    90 
   102     edit_permission = MANAGE_CONTENT_PERMISSION
    91     @property
       
    92     def fields(self):
       
    93         return super(IllustrationPropertiesEditForm, self).fields \
       
    94             .select('data', 'title', 'alt_title', 'author', 'description', 'renderer')
   103 
    95 
   104     def get_ajax_output(self, changes):
    96     def get_ajax_output(self, changes):
   105         output = super(self.__class__, self).get_ajax_output(changes)
    97         output = super(self.__class__, self).get_ajax_output(changes)
   106         if 'title' in changes.get(IBasicIllustration, ()):
    98         if 'title' in changes.get(IBasicIllustration, ()):
   107             output.setdefault('events', []).append(get_json_paragraph_refresh_event(self.context, self.request))
    99             output.setdefault('events', []).append(get_json_paragraph_refresh_event(self.context, self.request))