|
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 |