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