src/pyams_content/component/theme/portlet.py
changeset 829 f933926ed0a1
parent 558 d9c6b1d7fefa
child 1240 921ff38f1aae
equal deleted inserted replaced
828:bf12603398b2 829:f933926ed0a1
    14 
    14 
    15 
    15 
    16 # import standard library
    16 # import standard library
    17 
    17 
    18 # import interfaces
    18 # import interfaces
    19 from pyams_content.component.theme.interfaces import IPortletThemesSettings, IPortletThemesSettingsTarget, \
    19 from pyams_content.component.theme.interfaces import \
    20     PORTLET_SETTINGS_THEMES_KEY
    20     IPortletThemesSettings, IPortletThemesSettingsTarget, PORTLET_SETTINGS_THEMES_KEY, \
       
    21     IPortletTagsSettings, IPortletTagsSettingsTarget, PORTLET_SETTINGS_TAGS_KEY, \
       
    22     IPortletCollectionsSettings, IPortletCollectionsSettingsTarget, PORTLET_SETTINGS_COLLECTIONS_KEY
    21 from zope.traversing.interfaces import ITraversable
    23 from zope.traversing.interfaces import ITraversable
    22 
    24 
    23 # import packages
    25 # import packages
    24 from persistent import Persistent
    26 from persistent import Persistent
    25 from pyams_utils.adapter import adapter_config, ContextAdapter, get_annotation_adapter
    27 from pyams_utils.adapter import adapter_config, ContextAdapter, get_annotation_adapter
    26 from zope.container.contained import Contained
    28 from zope.container.contained import Contained
    27 from zope.interface import implementer
    29 from zope.interface import implementer
       
    30 from zope.schema.fieldproperty import FieldProperty
    28 
    31 
       
    32 
       
    33 #
       
    34 # Portlets tags management
       
    35 #
       
    36 
       
    37 @implementer(IPortletTagsSettings)
       
    38 class PortletTagsSettings(Persistent, Contained):
       
    39     """Portlet tags settings"""
       
    40 
       
    41     tags = FieldProperty(IPortletTagsSettings['tags'])
       
    42 
       
    43 
       
    44 @adapter_config(context=IPortletTagsSettingsTarget, provides=IPortletTagsSettings)
       
    45 def portlet_tags_settings_factory(context):
       
    46     """Portlet tags settings adapter"""
       
    47     return get_annotation_adapter(context, PORTLET_SETTINGS_TAGS_KEY, PortletTagsSettings,
       
    48                                   name='++tags++')
       
    49 
       
    50 
       
    51 @adapter_config(name='tags', context=IPortletTagsSettingsTarget, provides=ITraversable)
       
    52 class TagsPortletsSettingsTraverser(ContextAdapter):
       
    53     """++tags++ portlet settings adapter"""
       
    54 
       
    55     def traverse(self, name, furtherpath=None):
       
    56         return IPortletTagsSettings(self.context)
       
    57 
       
    58 
       
    59 #
       
    60 # Portlets themes management
       
    61 #
    29 
    62 
    30 @implementer(IPortletThemesSettings)
    63 @implementer(IPortletThemesSettings)
    31 class PortletThemesSettings(Persistent, Contained):
    64 class PortletThemesSettings(Persistent, Contained):
    32     """Portlet themes settings"""
    65     """Portlet themes settings"""
    33 
    66 
       
    67     themes = FieldProperty(IPortletThemesSettings['themes'])
       
    68 
    34 
    69 
    35 @adapter_config(context=IPortletThemesSettingsTarget, provides=IPortletThemesSettings)
    70 @adapter_config(context=IPortletThemesSettingsTarget, provides=IPortletThemesSettings)
    36 def portlet_themes_settings_factory(context):
    71 def portlet_themes_settings_factory(context):
    37     """Portlet themes settings adapter"""
    72     """Portlet themes settings adapter"""
    38     return get_annotation_adapter(context, PORTLET_SETTINGS_THEMES_KEY, PortletThemesSettings, name='++themes++')
    73     return get_annotation_adapter(context, PORTLET_SETTINGS_THEMES_KEY, PortletThemesSettings,
       
    74                                   name='++themes++')
    39 
    75 
    40 
    76 
    41 @adapter_config(name='themes', context=IPortletThemesSettingsTarget, provides=ITraversable)
    77 @adapter_config(name='themes', context=IPortletThemesSettingsTarget, provides=ITraversable)
    42 class ThemesPortletsSettingsTraverser(ContextAdapter):
    78 class ThemesPortletsSettingsTraverser(ContextAdapter):
    43     """++themes++ portlet settings adapter"""
    79     """++themes++ portlet settings adapter"""
    44 
    80 
    45     def traverse(self, name, furtherpath=None):
    81     def traverse(self, name, furtherpath=None):
    46         return IPortletThemesSettings(self.context)
    82         return IPortletThemesSettings(self.context)
       
    83 
       
    84 
       
    85 #
       
    86 # Portlets collections management
       
    87 #
       
    88 
       
    89 @implementer(IPortletCollectionsSettings)
       
    90 class PortletCollectionsSettings(Persistent, Contained):
       
    91     """Portlet collections settings"""
       
    92 
       
    93     collections = FieldProperty(IPortletCollectionsSettings['collections'])
       
    94 
       
    95 
       
    96 @adapter_config(context=IPortletCollectionsSettingsTarget, provides=IPortletCollectionsSettings)
       
    97 def portlet_collections_settings_factory(context):
       
    98     """Portlet collections settings adapter"""
       
    99     return get_annotation_adapter(context, PORTLET_SETTINGS_COLLECTIONS_KEY, PortletCollectionsSettings,
       
   100                                   name='++collections++')
       
   101 
       
   102 
       
   103 @adapter_config(name='collections', context=IPortletCollectionsSettingsTarget, provides=ITraversable)
       
   104 class CollectionsPortletsSettingsTraverser(ContextAdapter):
       
   105     """++collections++ portlet settings adapter"""
       
   106 
       
   107     def traverse(self, name, furtherpath=None):
       
   108         return IPortletCollectionsSettings(self.context)