src/pyams_content/component/paragraph/zmi/video.py
changeset 439 2a61d39de0fc
parent 415 43f42d74cdb8
child 440 b6554140ba7d
--- a/src/pyams_content/component/paragraph/zmi/video.py	Fri Mar 02 17:54:01 2018 +0100
+++ b/src/pyams_content/component/paragraph/zmi/video.py	Sun Mar 04 16:36:30 2018 +0100
@@ -23,7 +23,6 @@
 from pyams_content.component.paragraph.zmi.interfaces import IParagraphInnerEditor, IParagraphContainerView
 from pyams_content.interfaces import MANAGE_CONTENT_PERMISSION
 from pyams_form.interfaces.form import IInnerForm, IEditFormButtons
-from pyams_i18n.interfaces import II18n
 from pyams_skin.interfaces.viewlet import IToolbarAddingMenu
 from pyams_skin.layer import IPyAMSLayer
 from pyams_zmi.interfaces import IPropertiesEditForm
@@ -35,9 +34,10 @@
 from pyams_content.component.paragraph.video import VideoParagraph
 from pyams_content.component.paragraph.zmi import BaseParagraphAJAXAddForm, BaseParagraphAJAXEditForm, \
     BaseParagraphAddMenu, BaseParagraphPropertiesEditForm
+from pyams_content.features.renderer.zmi import BaseRenderedContentPreview
+from pyams_content.features.renderer.zmi.widget import RendererFieldWidget
 from pyams_form.group import NamedWidgetsGroup
 from pyams_pagelet.pagelet import pagelet_config
-from pyams_template.template import template_config
 from pyams_utils.adapter import adapter_config
 from pyams_viewlet.viewlet import viewlet_config, BaseContentProvider
 from pyams_zmi.form import AdminDialogAddForm
@@ -85,7 +85,7 @@
                                              switch=True,
                                              hide_if_empty=True))
             self.add_group(NamedWidgetsGroup(self, 'data_group', self.widgets,
-                                             ('description', 'author', 'data'),
+                                             ('description', 'author', 'data', 'renderer'),
                                              bordered=False))
 
     def create(self, data):
@@ -111,6 +111,8 @@
     icon_css_class = 'fa fa-fw fa-film'
 
     fields = field.Fields(IVideoParagraph).omit('__parent__', '__name__', 'visible')
+    fields['renderer'].widgetFactory = RendererFieldWidget
+
     ajax_handler = 'properties.json'
     edit_permission = MANAGE_CONTENT_PERMISSION
 
@@ -128,7 +130,7 @@
                                              switch=True,
                                              hide_if_empty=True))
             self.add_group(NamedWidgetsGroup(self, 'data_group', self.widgets,
-                                             ('description', 'author', 'data'),
+                                             ('description', 'author', 'data', 'renderer'),
                                              bordered=False))
 
 
@@ -183,18 +185,21 @@
                             'object_name': associations_table.id,
                             'table': associations_table.render()}
             })
-        if 'data' in updated:
-            # we have to commit transaction to be able to handle blobs...
-            ITransactionManager(self.context).get().commit()
+        if ('data' in updated) or ('renderer' in updated):
+            if 'data' in updated:
+                # we have to commit transaction to be able to handle blobs...
+                ITransactionManager(self.context).get().commit()
             form = VideoParagraphPropertiesInnerEditForm(self.context, self.request)
             form.update()
             output.setdefault('events', []).append({
                 'event': 'myams.refresh',
-                'options': {'object_id': '{0}_{1}_{2}'.format(
-                                self.context.__class__.__name__,
-                                getattr(form.getContent(), '__name__', 'noname').replace('++', ''),
-                                form.id),
-                            'content': form.render()}
+                'options': {
+                    'object_id': '{0}_{1}_{2}'.format(
+                        self.context.__class__.__name__,
+                        getattr(form.getContent(), '__name__', 'noname').replace('++', ''),
+                        form.id),
+                    'content': form.render()
+                }
             })
         return output
 
@@ -204,17 +209,5 @@
 #
 
 @adapter_config(context=(IVideoParagraph, IPyAMSLayer), provides=IParagraphPreview)
-@template_config(template='templates/video-preview.pt', layer=IPyAMSLayer)
-class VideoParagraphPreview(BaseContentProvider):
+class VideoParagraphPreview(BaseRenderedContentPreview):
     """Video paragraph preview"""
-
-    language = None
-
-    def update(self):
-        i18n = II18n(self.context)
-        if self.language:
-            for attr in ('title', 'body', 'description'):
-                setattr(self, attr, i18n.get_attribute(attr, self.language, request=self.request))
-        else:
-            for attr in ('title', 'body', 'description'):
-                setattr(self, attr, i18n.query_attribute(attr, request=self.request))