src/pyams_content/component/paragraph/zmi/verbatim.py
changeset 1006 cbb65b4b8742
parent 1002 ab7787b3faf1
child 1015 ac47f95d7bd6
child 1079 a5e56749ca3d
--- a/src/pyams_content/component/paragraph/zmi/verbatim.py	Tue Oct 09 15:05:38 2018 +0200
+++ b/src/pyams_content/component/paragraph/zmi/verbatim.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'
 
@@ -22,17 +24,20 @@
 from pyams_content.component.paragraph.interfaces.verbatim import IVerbatimParagraph, VERBATIM_PARAGRAPH_TYPE
 from pyams_content.component.paragraph.verbatim import VerbatimParagraph
 from pyams_content.component.paragraph.zmi import BaseParagraphAJAXAddForm, BaseParagraphAJAXEditForm, \
-    BaseParagraphAddMenu, BaseParagraphPropertiesEditForm, IParagraphInnerEditFormButtons
+    BaseParagraphAddMenu, BaseParagraphPropertiesEditForm, IParagraphInnerEditFormButtons, IParagraphTitleValue, \
+    get_json_paragraph_refresh_event
 from pyams_content.component.paragraph.zmi.interfaces import IParagraphContainerView, IParagraphInnerEditor
 from pyams_content.features.renderer.zmi.widget import RendererFieldWidget
 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_widget_refresh_event
 from pyams_skin.interfaces.viewlet import IToolbarAddingMenu
 from pyams_skin.layer import IPyAMSLayer
 from pyams_utils.adapter import adapter_config
+from pyams_utils.text import get_text_start
 from pyams_viewlet.viewlet import viewlet_config
 from pyams_zmi.form import AdminDialogAddForm
 from pyams_zmi.interfaces import IPropertiesEditForm
@@ -75,6 +80,18 @@
         IParagraphContainer(self.context).append(object)
 
 
+@adapter_config(context=(IVerbatimParagraph, IPyAMSLayer), provides=IParagraphTitleValue)
+def verbatim_paragraph_title_adapter(context, request):
+    """Verbatim paragraph title adapter"""
+    i18n = II18n(context)
+    title = i18n.query_attribute('title', request=request)
+    if not title:
+        quote = i18n.query_attribute('quote', request=request)
+        if quote:
+            title = '<i>{0}</i>'.format(get_text_start(quote, 50, 10))
+    return title
+
+
 @pagelet_config(name='properties.html', context=IVerbatimParagraph, layer=IPyAMSLayer,
                 permission=MANAGE_CONTENT_PERMISSION)
 @ajax_config(name='properties.json', context=IVerbatimParagraph, layer=IPyAMSLayer,
@@ -92,6 +109,14 @@
 
     edit_permission = MANAGE_CONTENT_PERMISSION
 
+    def get_ajax_output(self, changes):
+        output = super(self.__class__, self).get_ajax_output(changes)
+        if 'quote' in changes.get(IVerbatimParagraph, ()):
+            if 'title' not in changes.get(IBaseParagraph, ()):
+                output.setdefault('events', []).append(
+                    get_json_paragraph_refresh_event(self.context, self.request))
+        return output
+
 
 @adapter_config(context=(IVerbatimParagraph, IPyAMSLayer), provides=IParagraphInnerEditor)
 @ajax_config(name='inner-properties.json', context=IVerbatimParagraph, layer=IPyAMSLayer,
@@ -108,11 +133,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(IVerbatimParagraph, ())
-        if 'renderer' in updated:
-            output.setdefault('events', []).append(
-                get_json_widget_refresh_event(self.context, self.request, VerbatimParagraphInnerEditForm, 'renderer'))
-        return output