--- a/src/pyams_content/component/paragraph/zmi/__init__.py Wed Apr 11 16:44:46 2018 +0200
+++ b/src/pyams_content/component/paragraph/zmi/__init__.py Wed Apr 11 16:46:31 2018 +0200
@@ -35,6 +35,8 @@
from pyams_form.help import FormHelp
from pyams_form.security import ProtectedFormObjectMixin
from pyams_pagelet.pagelet import pagelet_config
+from pyams_skin.event import get_json_switched_table_refresh_event
+from pyams_skin.table import get_element_id
from pyams_skin.viewlet.menu import MenuItem, MenuDivider
from pyams_skin.viewlet.toolbar import ToolbarMenuItem
from pyams_utils.adapter import adapter_config
@@ -69,6 +71,8 @@
class DefaultParagraphsEditForm(AdminDialogEditForm):
"""Default paragraphs edit form"""
+ prefix = 'default_paragraphs.'
+
legend = _("Paragraphs types")
fields = field.Fields(IParagraphFactorySettings)
@@ -96,6 +100,58 @@
# Base paragraph forms
#
+def get_json_paragraph_refresh_event(context, request):
+ """Get JSON response value for paragraph refresh event"""
+ parent = get_parent(context, IParagraphContainerTarget)
+ return {
+ 'event': 'myams.refresh',
+ 'options': {
+ 'handler': 'PyAMS_content.paragraphs.refreshParagraph',
+ 'object_id': get_element_id(ParagraphContainerBaseTable, context, parent),
+ 'title': II18n(context).query_attribute('title', request=request),
+ 'visible': context.visible
+ }
+ }
+
+
+def get_json_paragraph_toolbar_refresh_event(context, request, table_factory=None, viewlet_factory=None):
+ """Get JSON response value for paragraph toolbar refresh event"""
+ if table_factory is None:
+ from pyams_content.component.paragraph.zmi.container import ParagraphContainerTable as table_factory
+ if viewlet_factory is None:
+ from pyams_content.component.paragraph.zmi.container import ParagraphTitleToolbarViewletManager as viewlet_factory
+
+ parent = get_parent(context, IParagraphContainerTarget)
+ table = table_factory(context, request)
+ viewlet = viewlet_factory(context, request, table)
+ viewlet.update()
+ return {
+ 'event': 'myams.refresh',
+ 'options': {
+ 'handler': 'PyAMS_content.paragraphs.updateToolbar',
+ 'object_id': get_element_id(ParagraphContainerBaseTable, context, parent),
+ 'toolbar_tag': viewlet.render()
+ }
+ }
+
+
+def get_json_paragraph_markers_refresh_event(context, request, form, viewlet_factory, marker_type=None):
+ """Get JSON response value for paragraph markers refresh event"""
+ parent = get_parent(context, IParagraphContainerTarget)
+ marker = viewlet_factory(context, request, form, None)
+ if marker is not None:
+ marker.update()
+ return {
+ 'event': 'myams.refresh',
+ 'options': {
+ 'handler': 'PyAMS_content.paragraphs.updateMarkers',
+ 'object_id': get_element_id(ParagraphContainerBaseTable, context, parent),
+ 'marker_type': marker_type or marker.marker_type,
+ 'marker_tag': marker.render()
+ }
+ }
+
+
class BaseParagraphAddMenu(ProtectedFormObjectMixin, ToolbarMenuItem):
"""Base paragraph add menu"""
@@ -133,26 +189,17 @@
table_factory = ParagraphContainerTable
else:
table_factory = ParagraphContainerBaseTable
- table = table_factory(self.context, self.request)
- table.update()
- return {'status': 'success',
- 'message': self.request.localizer.translate(_("Paragraph was correctly added.")),
- 'events': [{
- 'event': 'myams.refresh',
- 'options': {
- 'handler': 'MyAMS.skin.refreshSwitchedTable',
- 'object_id': table.id,
- 'table': table.render()
- }
- }]}
+ return {
+ 'status': 'success',
+ 'message': self.request.localizer.translate(_("Paragraph was correctly added.")),
+ 'events': [get_json_switched_table_refresh_event(self.context, self.request, table_factory)]
+ }
class BaseParagraphPropertiesEditForm(AdminDialogEditForm):
"""Base paragraph edit form"""
- @property
- def prefix(self):
- return 'paragraph_{0}_form.'.format(self.context.__name__)
+ prefix = 'paragraph.'
@property
def title(self):
@@ -173,13 +220,6 @@
def get_ajax_output(self, changes):
output = super(BaseParagraphAJAXEditForm, self).get_ajax_output(changes)
if 'title' in changes.get(IBaseParagraph, ()):
- output.setdefault('events', []).append({
- 'event': 'myams.refresh',
- 'options': {
- 'handler': 'PyAMS_content.paragraphs.refreshParagraph',
- 'object_name': self.context.__name__,
- 'title': II18n(self.context).query_attribute('title', request=self.request),
- 'visible': self.context.visible
- }
- })
+ output.setdefault('events', []).append(
+ get_json_paragraph_refresh_event(self.context, self.request))
return output