src/ztfy/myams/viewlet/menu/__init__.py
changeset 0 8a19e25e39e4
child 181 edc461e6a13b
equal deleted inserted replaced
-1:000000000000 0:8a19e25e39e4
       
     1 #
       
     2 # Copyright (c) 2012 Thierry Florac <tflorac AT onf.fr>
       
     3 # All Rights Reserved.
       
     4 #
       
     5 
       
     6 
       
     7 # import standard packages
       
     8 
       
     9 # import Zope3 interfaces
       
    10 
       
    11 # import local interfaces
       
    12 from ztfy.myams.viewlet.menu.interfaces import IMainMenusViewletManager, IMenu, IMenuItem
       
    13 
       
    14 # import Zope3 packages
       
    15 from zope.interface import implements
       
    16 from zope.schema.fieldproperty import FieldProperty
       
    17 
       
    18 # import local packages
       
    19 from ztfy.baseskin.viewlet import WeightViewletManagerBase, ViewletBase
       
    20 
       
    21 
       
    22 class MainMenusViewletManager(WeightViewletManagerBase):
       
    23     """Mains menus viewlet manager"""
       
    24 
       
    25     implements(IMainMenusViewletManager)
       
    26 
       
    27 
       
    28 class Menu(WeightViewletManagerBase, ViewletBase):
       
    29     """Menu header"""
       
    30 
       
    31     implements(IMenu)
       
    32 
       
    33     header = FieldProperty(IMenu['header'])
       
    34 
       
    35     def __init__(self, context, request, view, manager=None):
       
    36         WeightViewletManagerBase.__init__(self, context, request, view)
       
    37         ViewletBase.__init__(self, context, request, view, manager)
       
    38 
       
    39     def update(self):
       
    40         WeightViewletManagerBase.update(self)
       
    41 
       
    42     def render(self):
       
    43         return ViewletBase.render(self)
       
    44 
       
    45 
       
    46 class MenuItem(WeightViewletManagerBase, ViewletBase):
       
    47     """Menu viewlet"""
       
    48 
       
    49     implements(IMenuItem)
       
    50 
       
    51     css_class = FieldProperty(IMenuItem['css_class'])
       
    52     icon_class = FieldProperty(IMenuItem['icon_class'])
       
    53     label = FieldProperty(IMenuItem['label'])
       
    54     badge = FieldProperty(IMenuItem['badge'])
       
    55     badge_class = FieldProperty(IMenuItem['badge_class'])
       
    56     notice = FieldProperty(IMenuItem['notice'])
       
    57     notice_class = FieldProperty(IMenuItem['notice_class'])
       
    58     click_handler = FieldProperty(IMenuItem['click_handler'])
       
    59     url = FieldProperty(IMenuItem['url'])
       
    60     modal_target = FieldProperty(IMenuItem['modal_target'])
       
    61     data = FieldProperty(IMenuItem['data'])
       
    62 
       
    63     def __init__(self, context, request, view, manager=None):
       
    64         WeightViewletManagerBase.__init__(self, context, request, view)
       
    65         ViewletBase.__init__(self, context, request, view, manager)
       
    66 
       
    67     def update(self):
       
    68         WeightViewletManagerBase.update(self)
       
    69 
       
    70     def render(self):
       
    71         return ViewletBase.render(self)
       
    72 
       
    73     def getURL(self):
       
    74         return self.url
       
    75 
       
    76     def getDataAttributes(self):
       
    77         data = self.data.copy()
       
    78         if self.click_handler:
       
    79             data.update({'data-ams-click-handler': self.click_handler})
       
    80         return ' '.join('%s=%s' % item for item in data.iteritems())
       
    81 
       
    82 
       
    83 class MenuDivider(ViewletBase):
       
    84     """Menu divider viewlet"""
       
    85 
       
    86     implements(IMenuItem)
       
    87 
       
    88     header = None
       
    89     css_class = 'divider'
       
    90     icon_class = None
       
    91     label = None
       
    92     badge = None
       
    93     badge_class = None
       
    94     notice = None
       
    95     notice_class = None
       
    96     click_handler = None
       
    97     url = None
       
    98     modal_target = False
       
    99     data = None
       
   100 
       
   101     def getURL(self):
       
   102         return None