--- a/src/pyams_content/component/paragraph/zmi/frame.py Tue Oct 09 15:05:38 2018 +0200
+++ b/src/pyams_content/component/paragraph/zmi/frame.py Tue Oct 09 15:06:10 2018 +0200
@@ -9,6 +9,8 @@
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
# FOR A PARTICULAR PURPOSE.
#
+from pyams_content.component.paragraph import IBaseParagraph
+
__docformat__ = 'restructuredtext'
@@ -24,8 +26,8 @@
PARAGRAPH_HIDDEN_FIELDS
from pyams_content.component.paragraph.interfaces.frame import FRAME_PARAGRAPH_TYPE, IFrameParagraph
from pyams_content.component.paragraph.zmi import BaseParagraphAJAXAddForm, BaseParagraphAJAXEditForm, \
- BaseParagraphAddMenu, BaseParagraphPropertiesEditForm, IParagraphInnerEditFormButtons, \
- get_json_paragraph_toolbar_refresh_event
+ BaseParagraphAddMenu, BaseParagraphPropertiesEditForm, IParagraphInnerEditFormButtons, IParagraphTitleValue, \
+ get_json_paragraph_toolbar_refresh_event, get_json_paragraph_refresh_event
from pyams_content.component.paragraph.zmi.container import ParagraphContainerTable, \
ParagraphTitleToolbarViewletManager
from pyams_content.component.paragraph.zmi.interfaces import IParagraphContainerView, IParagraphInnerEditor
@@ -33,12 +35,15 @@
from pyams_content.interfaces import MANAGE_CONTENT_PERMISSION
from pyams_form.form import ajax_config
from pyams_form.interfaces.form import IInnerForm
+from pyams_i18n.interfaces import II18n
from pyams_pagelet.pagelet import pagelet_config
from pyams_skin.event import get_json_switched_table_refresh_event, get_json_widget_refresh_event
from pyams_skin.interfaces.tinymce import ITinyMCEConfiguration
from pyams_skin.interfaces.viewlet import IToolbarAddingMenu
from pyams_skin.layer import IPyAMSLayer
from pyams_utils.adapter import ContextRequestAdapter, adapter_config
+from pyams_utils.html import html_to_text
+from pyams_utils.text import get_text_start
from pyams_utils.traversing import get_parent
from pyams_viewlet.viewlet import viewlet_config
from pyams_zmi.form import AdminDialogAddForm
@@ -73,6 +78,18 @@
# Framed text paragraph
#
+@adapter_config(context=(IFrameParagraph, IPyAMSLayer), provides=IParagraphTitleValue)
+def frame_paragraph_title_adapter(context, request):
+ """Frame paragraph title adapter"""
+ i18n = II18n(context)
+ title = i18n.query_attribute('title', request=request)
+ if not title:
+ body = i18n.query_attribute('body', request=request)
+ if body:
+ title = '<i>{0}</i>'.format(get_text_start(html_to_text(body), 50, 10))
+ return title
+
+
@viewlet_config(name='add-frame-paragraph.menu', context=IParagraphContainerTarget, view=IParagraphContainerView,
layer=IPyAMSLayer, manager=IToolbarAddingMenu, weight=600)
class FrameParagraphAddMenu(BaseParagraphAddMenu):
@@ -140,6 +157,9 @@
def get_ajax_output(self, changes):
output = super(self.__class__, self).get_ajax_output(changes)
if 'body' in changes.get(IFrameParagraph, ()):
+ if 'title' not in changes.get(IBaseParagraph, ()):
+ output.setdefault('events', []).append(
+ get_json_paragraph_refresh_event(self.context, self.request))
# refresh associations count markers
parent = get_parent(self.context, IAssociationContainerTarget)
output.setdefault('events', []).append(
@@ -166,11 +186,3 @@
return button.Buttons(IParagraphInnerEditFormButtons)
else:
return button.Buttons()
-
- def get_ajax_output(self, changes):
- output = super(self.__class__, self).get_ajax_output(changes)
- updated = changes.get(IFrameParagraph, ())
- if 'renderer' in updated:
- output.setdefault('events', []).append(
- get_json_widget_refresh_event(self.context, self.request, FrameParagraphInnerEditForm, 'renderer'))
- return output