src/pyams_content/features/renderer/zmi/__init__.py
changeset 433 76a597a42c19
parent 430 3d44390d2ecd
child 434 a1c31d22e042
equal deleted inserted replaced
432:a068d20dc9ae 433:76a597a42c19
     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)