15 |
15 |
16 # import standard library |
16 # import standard library |
17 |
17 |
18 # import interfaces |
18 # import interfaces |
19 from pyams_content.component.paragraph.interfaces import IParagraphContainerTarget, IParagraphContainer, \ |
19 from pyams_content.component.paragraph.interfaces import IParagraphContainerTarget, IParagraphContainer, \ |
20 IParagraphSummary |
20 IParagraphPreview |
21 from pyams_content.features.preview.zmi.interfaces import IPreviewForm |
21 from pyams_content.features.preview.zmi.interfaces import IPreviewForm |
22 from pyams_form.interfaces.form import IWidgetsSuffixViewletsManager |
22 from pyams_form.interfaces.form import IWidgetsSuffixViewletsManager |
23 from pyams_i18n.interfaces import II18nManager |
23 from pyams_i18n.interfaces import II18nManager |
|
24 from pyams_skin.interfaces import IUserSkinnable |
24 from pyams_skin.layer import IPyAMSLayer |
25 from pyams_skin.layer import IPyAMSLayer |
|
26 from pyams_utils.interfaces import VIEW_SYSTEM_PERMISSION |
25 |
27 |
26 # import packages |
28 # import packages |
|
29 from pyams_skin.skin import apply_skin |
27 from pyams_template.template import template_config |
30 from pyams_template.template import template_config |
28 from pyams_utils.interfaces import VIEW_SYSTEM_PERMISSION |
31 from pyams_utils.request import copy_request |
29 from pyams_viewlet.viewlet import viewlet_config, Viewlet |
32 from pyams_viewlet.viewlet import viewlet_config, Viewlet |
|
33 from pyramid.decorator import reify |
30 |
34 |
31 |
35 |
32 @viewlet_config(name='paragraphs-preview', context=IParagraphContainerTarget, layer=IPyAMSLayer, |
36 @viewlet_config(name='paragraphs-preview', context=IParagraphContainerTarget, layer=IPyAMSLayer, |
33 view=IPreviewForm, manager=IWidgetsSuffixViewletsManager, |
37 view=IPreviewForm, manager=IWidgetsSuffixViewletsManager, |
34 permission=VIEW_SYSTEM_PERMISSION, weight=100) |
38 permission=VIEW_SYSTEM_PERMISSION, weight=100) |
40 super(ParagraphsContainerPreview, self).__init__(context, request, view, manager) |
44 super(ParagraphsContainerPreview, self).__init__(context, request, view, manager) |
41 self.paragraphs = [para for para in IParagraphContainer(self.context).values() |
45 self.paragraphs = [para for para in IParagraphContainer(self.context).values() |
42 if para.visible] |
46 if para.visible] |
43 self.languages = II18nManager(self.context).get_languages() |
47 self.languages = II18nManager(self.context).get_languages() |
44 |
48 |
|
49 @reify |
|
50 def render_request(self): |
|
51 request = copy_request(self.request) |
|
52 root = self.request.root |
|
53 skin = IUserSkinnable(root).get_skin() |
|
54 if skin is not None: |
|
55 apply_skin(request, skin) |
|
56 return request |
|
57 |
45 def render_paragraph(self, paragraph, language=None): |
58 def render_paragraph(self, paragraph, language=None): |
46 renderer = self.request.registry.queryMultiAdapter((paragraph, self.request), IParagraphSummary) |
59 renderer = self.request.registry.queryMultiAdapter((paragraph, self.render_request), IParagraphPreview) |
47 if renderer is not None: |
60 if renderer is not None: |
48 renderer.language = language |
61 renderer.language = language |
49 renderer.update() |
62 renderer.update() |
50 return renderer.render() |
63 return renderer.render() |