src/ztfy/myams/viewlet/toplinks/__init__.py
changeset 0 8a19e25e39e4
child 51 dbed1ff1e070
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/ztfy/myams/viewlet/toplinks/__init__.py	Wed May 07 10:36:24 2014 +0200
@@ -0,0 +1,72 @@
+#
+# Copyright (c) 2012 Thierry Florac <tflorac AT onf.fr>
+# All Rights Reserved.
+#
+
+
+# import standard packages
+
+# import Zope3 interfaces
+
+# import local interfaces
+from ztfy.myams.viewlet.toplinks.interfaces import ITopLinksViewletManager, ITopLinksViewlet, ITopLinksMenu
+
+# import Zope3 packages
+from zope.i18n import translate
+from zope.interface import implements
+
+# import local packages
+from ztfy.baseskin.viewlet import WeightViewletManagerBase, ViewletBase
+
+
+class TopLinksViewletManager(WeightViewletManagerBase):
+    """Top links viewlet manager"""
+
+    implements(ITopLinksViewletManager)
+
+
+class TopLinksViewlet(WeightViewletManagerBase, ViewletBase):
+    """Top links viewlet"""
+
+    implements(ITopLinksViewlet)
+
+    label = u"Label:"
+    css_class = u'top-menu'
+    dropdown_label = u"Dropdown label"
+
+    def __init__(self, context, request, view, manager=None):
+        WeightViewletManagerBase.__init__(self, context, request, view)
+        ViewletBase.__init__(self, context, request, view, manager)
+
+    def update(self):
+        WeightViewletManagerBase.update(self)
+
+
+class TopLinksMenu(ViewletBase):
+    """Top link menu"""
+
+    implements(ITopLinksMenu)
+
+    css_class = u""
+    label = u"Menu label"
+    click_handler = None
+    url = u"#"
+    data = {}
+
+    def render(self):
+        if self.css_class == u'divider':
+            return u'<li class="divider"></li>'
+        else:
+            label = translate(self.label, context=self.request)
+            return u'''<li class="%s">
+                        <a href="%s" %s>%s</a>
+                    </li>''' % (self.css_class,
+                                self.url,
+                                self.getDataAttributes(),
+                                unicode(label, 'utf-8') if isinstance(label, str) else label)
+
+    def getDataAttributes(self):
+        data = self.data.copy()
+        if self.click_handler:
+            data.update({'data-ams-click-handler': self.click_handler})
+        return ' '.join('%s=%s' % item for item in data.iteritems())