7 # THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED |
7 # THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED |
8 # WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
8 # WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
9 # WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS |
9 # WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS |
10 # FOR A PARTICULAR PURPOSE. |
10 # FOR A PARTICULAR PURPOSE. |
11 # |
11 # |
12 from pyams_i18n.interfaces import II18n |
|
13 |
12 |
14 __docformat__ = 'restructuredtext' |
13 __docformat__ = 'restructuredtext' |
15 |
14 |
16 |
15 |
17 # import standard library |
16 # import standard library |
18 |
17 |
19 # import interfaces |
18 # import interfaces |
20 from pyams_content.features.renderer.interfaces import IRenderedContent, IContentRenderer, IRendererSettings |
19 from pyams_content.features.renderer.interfaces import IRenderedContent, IContentRenderer, IRendererSettings |
21 from pyams_content.interfaces import MANAGE_CONTENT_PERMISSION |
20 from pyams_content.interfaces import MANAGE_CONTENT_PERMISSION |
|
21 from pyams_i18n.interfaces import II18n |
22 from pyams_skin.layer import IPyAMSLayer |
22 from pyams_skin.layer import IPyAMSLayer |
23 |
23 |
24 # import packages |
24 # import packages |
25 from pyams_form.form import AJAXEditForm |
25 from pyams_form.form import AJAXEditForm |
26 from pyams_pagelet.pagelet import pagelet_config |
26 from pyams_pagelet.pagelet import pagelet_config |
32 from z3c.form import field |
32 from z3c.form import field |
33 from zope.interface import implementer, Interface |
33 from zope.interface import implementer, Interface |
34 |
34 |
35 from pyams_content import _ |
35 from pyams_content import _ |
36 |
36 |
|
37 |
|
38 # |
|
39 # Base rendered content preview |
|
40 # |
|
41 |
|
42 class BaseRenderedContentPreview(BaseContentProvider): |
|
43 """Base renderer preview""" |
|
44 |
|
45 language = None |
|
46 context_attrs = () |
|
47 i18n_context_attrs = () |
|
48 |
|
49 def __init__(self, context, request): |
|
50 super(BaseRenderedContentPreview, self).__init__(context, request) |
|
51 self.renderer = self.context.get_renderer() |
|
52 |
|
53 def update(self): |
|
54 renderer = self.renderer |
|
55 if renderer is not None: |
|
56 renderer.language = self.language |
|
57 for attr in self.context_attrs: |
|
58 setattr(renderer, attr, getattr(self.context, attr, None)) |
|
59 if self.i18n_context_attrs: |
|
60 i18n = II18n(self.context, None) |
|
61 if i18n is not None: |
|
62 for attr in self.i18n_context_attrs: |
|
63 setattr(renderer, attr, i18n.get_attribute(attr, lang=self.language, request=self.request)) |
|
64 renderer.update() |
|
65 |
|
66 def render(self): |
|
67 if self.renderer is None: |
|
68 return '' |
|
69 return self.renderer.render() |
|
70 |
|
71 |
|
72 # |
|
73 # Base content renderer |
|
74 # |
37 |
75 |
38 @implementer(IContentRenderer) |
76 @implementer(IContentRenderer) |
39 class BaseContentRenderer(ContextRequestAdapter): |
77 class BaseContentRenderer(ContextRequestAdapter): |
40 """Base content renderer""" |
78 """Base content renderer""" |
41 |
79 |
79 permission=MANAGE_CONTENT_PERMISSION, renderer='json', xhr=True) |
117 permission=MANAGE_CONTENT_PERMISSION, renderer='json', xhr=True) |
80 class RendererPropertiesAJAXEditForm(AJAXEditForm, RendererPropertiesEditForm): |
118 class RendererPropertiesAJAXEditForm(AJAXEditForm, RendererPropertiesEditForm): |
81 """Renderer properties edit form, JSON renderer""" |
119 """Renderer properties edit form, JSON renderer""" |
82 |
120 |
83 |
121 |
84 class BaseRendererPreview(BaseContentProvider): |
|
85 """Base renderer preview""" |
|
86 |
|
87 language = None |
|
88 context_attrs = () |
|
89 i18n_context_attrs = () |
|
90 |
|
91 def __init__(self, context, request): |
|
92 super(BaseRendererPreview, self).__init__(context, request) |
|
93 self.renderer = self.context.get_renderer() |
|
94 |
|
95 def update(self): |
|
96 renderer = self.renderer |
|
97 if renderer is not None: |
|
98 renderer.language = self.language |
|
99 for attr in self.context_attrs: |
|
100 setattr(renderer, attr, getattr(self.context, attr, None)) |
|
101 if self.i18n_context_attrs: |
|
102 i18n = II18n(self.context, None) |
|
103 if i18n is not None: |
|
104 for attr in self.i18n_context_attrs: |
|
105 setattr(renderer, attr, i18n.get_attribute(attr, lang=self.language, request=self.request)) |
|
106 renderer.update() |
|
107 |
|
108 def render(self): |
|
109 if self.renderer is None: |
|
110 return '' |
|
111 return self.renderer.render() |
|
112 |
|
113 |
|
114 # |
122 # |
115 # Default common renderers |
123 # Default common renderers |
116 # |
124 # |
117 |
125 |
118 @adapter_config(name='hidden', context=(IRenderedContent, IPyAMSLayer), provides=IContentRenderer) |
126 @adapter_config(name='hidden', context=(IRenderedContent, IPyAMSLayer), provides=IContentRenderer) |