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, |