src/pyams_content/component/paragraph/zmi/frame.py
changeset 1398 fc32ec8a8f53
parent 1285 a869fd818ea7
equal deleted inserted replaced
1397:d05fc6aa4217 1398:fc32ec8a8f53
     8 # WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
     8 # WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
     9 # WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
     9 # WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
    10 # FOR A PARTICULAR PURPOSE.
    10 # FOR A PARTICULAR PURPOSE.
    11 #
    11 #
    12 
    12 
    13 __docformat__ = 'restructuredtext'
       
    14 
       
    15 from z3c.form import button
    13 from z3c.form import button
    16 from z3c.form.interfaces import INPUT_MODE
    14 from z3c.form.interfaces import INPUT_MODE
    17 from zope.interface import Interface, implementer
    15 from zope.interface import Interface, implementer
    18 
    16 
    19 from pyams_content.component.association.interfaces import IAssociationContainerTarget
    17 from pyams_content.component.association.interfaces import IAssociationContainerTarget
    20 from pyams_content.component.association.zmi import AssociationsTable
    18 from pyams_content.component.association.zmi import AssociationsTable
    21 from pyams_content.component.association.zmi.interfaces import IAssociationsParentForm
    19 from pyams_content.component.association.zmi.interfaces import IAssociationsParentForm
    22 from pyams_content.component.paragraph.frame import FrameParagraph
    20 from pyams_content.component.paragraph.frame import FrameParagraph
    23 from pyams_content.component.paragraph.interfaces import IBaseParagraph, IParagraphContainerTarget, IParagraphTitle
    21 from pyams_content.component.paragraph.interfaces import IBaseParagraph, \
    24 from pyams_content.component.paragraph.interfaces.frame import FRAME_PARAGRAPH_TYPE, IFrameParagraph
    22     IParagraphContainerTarget, IParagraphTitle
    25 from pyams_content.component.paragraph.zmi import BaseParagraphAJAXAddForm, BaseParagraphAJAXEditForm, \
    23 from pyams_content.component.paragraph.interfaces.frame import FRAME_PARAGRAPH_TYPE, \
    26     BaseParagraphAddForm, BaseParagraphAddMenu, BaseParagraphPropertiesEditForm, IParagraphInnerEditFormButtons, \
    24     IFrameParagraph
       
    25 from pyams_content.component.paragraph.zmi import BaseParagraphAJAXAddForm, \
       
    26     BaseParagraphAJAXEditForm, BaseParagraphAddForm, BaseParagraphAddMenu, \
       
    27     BaseParagraphPropertiesEditForm, IParagraphInnerEditFormButtons, \
    27     get_json_paragraph_refresh_event, get_json_paragraph_toolbar_refresh_event
    28     get_json_paragraph_refresh_event, get_json_paragraph_toolbar_refresh_event
    28 from pyams_content.component.paragraph.zmi.container import ParagraphContainerTable, \
    29 from pyams_content.component.paragraph.zmi.container import ParagraphContainerTable, \
    29     ParagraphTitleToolbarViewletManager
    30     ParagraphTitleToolbarViewletManager
    30 from pyams_content.component.paragraph.zmi.interfaces import IParagraphContainerView, IParagraphInnerEditor
    31 from pyams_content.component.paragraph.zmi.interfaces import IParagraphContainerView, \
       
    32     IParagraphInnerEditor
    31 from pyams_content.interfaces import MANAGE_CONTENT_PERMISSION
    33 from pyams_content.interfaces import MANAGE_CONTENT_PERMISSION
       
    34 from pyams_content.zmi import pyams_content
    32 from pyams_form.form import ajax_config
    35 from pyams_form.form import ajax_config
    33 from pyams_form.interfaces.form import IInnerForm
    36 from pyams_form.interfaces.form import IInnerForm
    34 from pyams_i18n.interfaces import II18n
    37 from pyams_i18n.interfaces import II18n
    35 from pyams_pagelet.pagelet import pagelet_config
    38 from pyams_pagelet.pagelet import pagelet_config
    36 from pyams_skin.event import get_json_switched_table_refresh_event
    39 from pyams_skin.event import get_json_switched_table_refresh_event
    37 from pyams_skin.interfaces.tinymce import ITinyMCEConfiguration
    40 from pyams_skin.interfaces.tinymce import ITinyMCEConfiguration
    38 from pyams_skin.interfaces.viewlet import IToolbarAddingMenu
    41 from pyams_skin.interfaces.viewlet import IToolbarAddingMenu
    39 from pyams_skin.layer import IPyAMSLayer
    42 from pyams_skin.layer import IPyAMSLayer
    40 from pyams_utils.adapter import ContextRequestAdapter, adapter_config
    43 from pyams_utils.adapter import ContextRequestAdapter, adapter_config
       
    44 from pyams_utils.fanstatic import get_resource_path
    41 from pyams_utils.html import html_to_text
    45 from pyams_utils.html import html_to_text
    42 from pyams_utils.text import get_text_start
    46 from pyams_utils.text import get_text_start
    43 from pyams_utils.traversing import get_parent
    47 from pyams_utils.traversing import get_parent
    44 from pyams_viewlet.viewlet import viewlet_config
    48 from pyams_viewlet.viewlet import viewlet_config
    45 from pyams_zmi.interfaces import IPropertiesEditForm
    49 from pyams_zmi.interfaces import IPropertiesEditForm
       
    50 
       
    51 
       
    52 __docformat__ = 'restructuredtext'
    46 
    53 
    47 from pyams_content import _
    54 from pyams_content import _
    48 
    55 
    49 
    56 
    50 #
    57 #
    58 @adapter_config(context=(IFrameParagraphForm, IPyAMSLayer), provides=ITinyMCEConfiguration)
    65 @adapter_config(context=(IFrameParagraphForm, IPyAMSLayer), provides=ITinyMCEConfiguration)
    59 class FrameParagraphBodyEditorConfiguration(ContextRequestAdapter):
    66 class FrameParagraphBodyEditorConfiguration(ContextRequestAdapter):
    60     """Custom configuration for 'body' widget editor"""
    67     """Custom configuration for 'body' widget editor"""
    61 
    68 
    62     configuration = {
    69     configuration = {
       
    70         'ams-plugins': 'pyams_content',
       
    71         'ams-plugin-pyams_content-src': get_resource_path(pyams_content),
       
    72         'ams-plugin-pyams_content-async': 'false',
       
    73         'ams-tinymce-init-callback': 'PyAMS_content.TinyMCE.initEditor',
    63         'ams-tinymce-menubar': False,
    74         'ams-tinymce-menubar': False,
    64         'ams-tinymce-plugins': ['paste', 'lists'],
    75         'ams-tinymce-plugins': ['paste', 'lists', 'charmap', 'internal_links', 'link'],
    65         'ams-tinymce-toolbar': 'undo redo | pastetext | bold italic superscript | bullist numlist',
    76         'ams-tinymce-toolbar': 'undo redo | pastetext | bold italic superscript | '
       
    77                                'bullist numlist | charmap internal_links link',
    66         'ams-tinymce-toolbar1': False,
    78         'ams-tinymce-toolbar1': False,
    67         'ams-tinymce-toolbar2': False,
    79         'ams-tinymce-toolbar2': False,
    68         'ams-tinymce-height': 150
    80         'ams-tinymce-height': 150
    69     }
    81     }
    70 
    82 
   147                     get_json_paragraph_refresh_event(self.context, self.request))
   159                     get_json_paragraph_refresh_event(self.context, self.request))
   148             # refresh associations count markers
   160             # refresh associations count markers
   149             parent = get_parent(self.context, IAssociationContainerTarget)
   161             parent = get_parent(self.context, IAssociationContainerTarget)
   150             output.setdefault('events', []).append(
   162             output.setdefault('events', []).append(
   151                 get_json_paragraph_toolbar_refresh_event(parent, self.request,
   163                 get_json_paragraph_toolbar_refresh_event(parent, self.request,
   152                                                          ParagraphContainerTable, ParagraphTitleToolbarViewletManager))
   164                                                          ParagraphContainerTable,
       
   165                                                          ParagraphTitleToolbarViewletManager))
   153             # refresh associations table
   166             # refresh associations table
   154             output.setdefault('events', []).append(
   167             output.setdefault('events', []).append(
   155                 get_json_switched_table_refresh_event(self.context, self.request, AssociationsTable))
   168                 get_json_switched_table_refresh_event(self.context, self.request,
       
   169                                                       AssociationsTable))
   156         return output
   170         return output
   157 
   171 
   158 
   172 
   159 @adapter_config(context=(IFrameParagraph, IPyAMSLayer), provides=IParagraphInnerEditor)
   173 @adapter_config(context=(IFrameParagraph, IPyAMSLayer), provides=IParagraphInnerEditor)
   160 @ajax_config(name='inner-properties.json', context=IFrameParagraph, layer=IPyAMSLayer,
   174 @ajax_config(name='inner-properties.json', context=IFrameParagraph, layer=IPyAMSLayer,