src/pyams_content/component/keynumber/zmi/paragraph.py
changeset 1243 837612af4dc3
parent 1006 cbb65b4b8742
equal deleted inserted replaced
1242:3599d25c7f10 1243:837612af4dc3
    10 # FOR A PARTICULAR PURPOSE.
    10 # FOR A PARTICULAR PURPOSE.
    11 #
    11 #
    12 
    12 
    13 __docformat__ = 'restructuredtext'
    13 __docformat__ = 'restructuredtext'
    14 
    14 
    15 from z3c.form import button, field
    15 from z3c.form import button
    16 from z3c.form.interfaces import INPUT_MODE
    16 from z3c.form.interfaces import INPUT_MODE
    17 from zope.interface import implementer
    17 from zope.interface import implementer
    18 
    18 
    19 from pyams_content.component.keynumber.interfaces import IKeyNumberParagraph, KEYNUMBER_PARAGRAPH_TYPE
    19 from pyams_content.component.keynumber.interfaces import IKeyNumberParagraph, KEYNUMBER_PARAGRAPH_TYPE
    20 from pyams_content.component.keynumber.paragraph import KeyNumberParagraph
       
    21 from pyams_content.component.keynumber.zmi import IKeyNumbersParentForm
    20 from pyams_content.component.keynumber.zmi import IKeyNumbersParentForm
    22 from pyams_content.component.paragraph.interfaces import IParagraphContainer, IParagraphContainerTarget
    21 from pyams_content.component.paragraph.interfaces import IParagraphContainerTarget
    23 from pyams_content.component.paragraph.zmi import BaseParagraphAJAXAddForm, BaseParagraphAJAXEditForm, \
    22 from pyams_content.component.paragraph.zmi import BaseParagraphAJAXAddForm, BaseParagraphAJAXEditForm, \
    24     BaseParagraphAddMenu, BaseParagraphPropertiesEditForm, IParagraphInnerEditFormButtons
    23     BaseParagraphAddForm, BaseParagraphAddMenu, BaseParagraphPropertiesEditForm, IParagraphInnerEditFormButtons
    25 from pyams_content.component.paragraph.zmi.interfaces import IParagraphContainerView, IParagraphInnerEditor
    24 from pyams_content.component.paragraph.zmi.interfaces import IParagraphContainerView, IParagraphInnerEditor
    26 from pyams_content.features.renderer.zmi.widget import RendererFieldWidget
       
    27 from pyams_content.interfaces import MANAGE_CONTENT_PERMISSION
    25 from pyams_content.interfaces import MANAGE_CONTENT_PERMISSION
    28 from pyams_content.shared.common import IWfSharedContent
    26 from pyams_content.shared.common import IWfSharedContent
    29 from pyams_form.form import ajax_config
    27 from pyams_form.form import ajax_config
    30 from pyams_form.interfaces.form import IInnerForm
    28 from pyams_form.interfaces.form import IInnerForm
    31 from pyams_i18n.interfaces import II18n
    29 from pyams_i18n.interfaces import II18n
    34 from pyams_skin.interfaces.viewlet import IToolbarAddingMenu
    32 from pyams_skin.interfaces.viewlet import IToolbarAddingMenu
    35 from pyams_skin.layer import IPyAMSLayer
    33 from pyams_skin.layer import IPyAMSLayer
    36 from pyams_utils.adapter import adapter_config
    34 from pyams_utils.adapter import adapter_config
    37 from pyams_utils.traversing import get_parent
    35 from pyams_utils.traversing import get_parent
    38 from pyams_viewlet.viewlet import viewlet_config
    36 from pyams_viewlet.viewlet import viewlet_config
    39 from pyams_zmi.form import AdminDialogAddForm
       
    40 
    37 
    41 from pyams_content import _
    38 from pyams_content import _
    42 
    39 
    43 
    40 
    44 @viewlet_config(name='add-keynumber-paragraph.menu', context=IParagraphContainerTarget, view=IParagraphContainerView,
    41 @viewlet_config(name='add-keynumber-paragraph.menu', context=IParagraphContainerTarget, view=IParagraphContainerView,
    54 
    51 
    55 @pagelet_config(name='add-keynumber-paragraph.html', context=IParagraphContainerTarget, layer=IPyAMSLayer,
    52 @pagelet_config(name='add-keynumber-paragraph.html', context=IParagraphContainerTarget, layer=IPyAMSLayer,
    56                 permission=MANAGE_CONTENT_PERMISSION)
    53                 permission=MANAGE_CONTENT_PERMISSION)
    57 @ajax_config(name='add-keynumber-paragraph.json', context=IParagraphContainerTarget, layer=IPyAMSLayer,
    54 @ajax_config(name='add-keynumber-paragraph.json', context=IParagraphContainerTarget, layer=IPyAMSLayer,
    58              base=BaseParagraphAJAXAddForm)
    55              base=BaseParagraphAJAXAddForm)
    59 class KeyNumberParagraphAddForm(AdminDialogAddForm):
    56 class KeyNumberParagraphAddForm(BaseParagraphAddForm):
    60     """Key number paragraph add form"""
    57     """Key number paragraph add form"""
    61 
    58 
    62     legend = _("Add new key number paragraph")
    59     legend = _("Add new key number paragraph")
    63     icon_css_class = 'fa fa-fw fa-dashboard'
       
    64 
    60 
    65     fields = field.Fields(IKeyNumberParagraph).select('title', 'renderer')
    61     content_interface = IKeyNumberParagraph
    66     edit_permission = MANAGE_CONTENT_PERMISSION
       
    67 
       
    68     def create(self, data):
       
    69         return KeyNumberParagraph()
       
    70 
       
    71     def add(self, object):
       
    72         IParagraphContainer(self.context).append(object)
       
    73 
    62 
    74 
    63 
    75 @pagelet_config(name='properties.html', context=IKeyNumberParagraph, layer=IPyAMSLayer,
    64 @pagelet_config(name='properties.html', context=IKeyNumberParagraph, layer=IPyAMSLayer,
    76                 permission=MANAGE_CONTENT_PERMISSION)
    65                 permission=MANAGE_CONTENT_PERMISSION)
    77 @ajax_config(name='properties.json', context=IKeyNumberParagraph, layer=IPyAMSLayer,
    66 @ajax_config(name='properties.json', context=IKeyNumberParagraph, layer=IPyAMSLayer,
    86     def title(self):
    75     def title(self):
    87         content = get_parent(self.context, IWfSharedContent)
    76         content = get_parent(self.context, IWfSharedContent)
    88         return II18n(content).query_attribute('title', request=self.request)
    77         return II18n(content).query_attribute('title', request=self.request)
    89 
    78 
    90     legend = _("Edit key number paragraph properties")
    79     legend = _("Edit key number paragraph properties")
    91     icon_css_class = 'fa fa-fw fa-dashboard'
       
    92 
    80 
    93     fields = field.Fields(IKeyNumberParagraph).select('title', 'renderer')
    81     content_interface = IKeyNumberParagraph
    94     fields['renderer'].widgetFactory = RendererFieldWidget
       
    95 
       
    96     edit_permission = MANAGE_CONTENT_PERMISSION
       
    97 
    82 
    98     def get_ajax_output(self, changes):
    83     def get_ajax_output(self, changes):
    99         output = super(self.__class__, self).get_ajax_output(changes)
    84         output = super(self.__class__, self).get_ajax_output(changes)
   100         updated = changes.get(IKeyNumberParagraph, ())
    85         updated = changes.get(IKeyNumberParagraph, ())
   101         if 'renderer' in updated:
    86         if 'renderer' in updated: