--- a/src/pyams_content/component/paragraph/zmi/preview.py Thu Mar 15 12:06:23 2018 +0100
+++ b/src/pyams_content/component/paragraph/zmi/preview.py Fri Mar 16 08:17:54 2018 +0100
@@ -17,47 +17,39 @@
# import interfaces
from pyams_content.component.paragraph.interfaces import IParagraphContainerTarget, IParagraphContainer, \
- IParagraphPreview
-from pyams_content.features.preview.zmi.interfaces import IPreviewForm
-from pyams_form.interfaces.form import IWidgetsSuffixViewletsManager
-from pyams_i18n.interfaces import II18nManager
-from pyams_skin.interfaces import IUserSkinnable
+ IParagraphRenderer
+from pyams_content.features.renderer.interfaces import IContentRenderer
from pyams_skin.layer import IPyAMSLayer
-from pyams_utils.interfaces import VIEW_SYSTEM_PERMISSION
# import packages
-from pyams_skin.skin import apply_skin
-from pyams_template.template import template_config
-from pyams_utils.request import copy_request
-from pyams_viewlet.viewlet import viewlet_config, Viewlet
-from pyramid.decorator import reify
+from pyams_content.features.renderer.zmi import BaseContentRenderer
+from pyams_utils.adapter import adapter_config
-@viewlet_config(name='paragraphs-preview', context=IParagraphContainerTarget, layer=IPyAMSLayer,
- view=IPreviewForm, manager=IWidgetsSuffixViewletsManager,
- permission=VIEW_SYSTEM_PERMISSION, weight=100)
-@template_config(template='templates/preview.pt', layer=IPyAMSLayer)
-class ParagraphsContainerPreview(Viewlet):
- """Paragraphs container preview"""
+@adapter_config(name='paragraphs-render', context=(IParagraphContainerTarget, IPyAMSLayer),
+ provides=IContentRenderer)
+class ParagraphsContainerRenderer(BaseContentRenderer):
+ """Paragraphs container renderer"""
+
+ weight = 10
- def __init__(self, context, request, view, manager):
- super(ParagraphsContainerPreview, self).__init__(context, request, view, manager)
- self.paragraphs = [para for para in IParagraphContainer(self.context).values()
- if para.visible]
- self.languages = II18nManager(self.context).get_languages()
+ def __init__(self, context, request):
+ super(ParagraphsContainerRenderer, self).__init__(context, request)
+ paragraphs = [para for para in IParagraphContainer(self.context).values()
+ if para.visible]
+ self.renderers = [self.request.registry.queryMultiAdapter((paragraph, self.request), IParagraphRenderer)
+ for paragraph in paragraphs]
- @reify
- def render_request(self):
- request = copy_request(self.request)
- root = self.request.root
- skin = IUserSkinnable(root).get_skin()
- if skin is not None:
- apply_skin(request, skin)
- return request
+ def update(self):
+ super(ParagraphsContainerRenderer, self).update()
+ for renderer in self.renderers:
+ if renderer is not None:
+ renderer.language = self.language
+ renderer.update()
- def render_paragraph(self, paragraph, language=None):
- preview = self.request.registry.queryMultiAdapter((paragraph, self.render_request), IParagraphPreview)
- if preview is not None:
- preview.language = language
- preview.update()
- return preview.render()
+ def render(self):
+ result = ''
+ for renderer in self.renderers:
+ if renderer is not None:
+ result += renderer.render()
+ return result