--- a/src/ztfy/myams/viewlet/toplinks/__init__.py Wed Jul 02 10:29:06 2014 +0200
+++ b/src/ztfy/myams/viewlet/toplinks/__init__.py Wed Jul 02 10:30:01 2014 +0200
@@ -9,22 +9,28 @@
# import Zope3 interfaces
# import local interfaces
-from ztfy.myams.viewlet.toplinks.interfaces import ITopLinksViewletManager, ITopLinksViewlet, ITopLinksMenu
+from ztfy.myams.viewlet.toplinks.interfaces import ITopLinksViewletManager, ITopLinksViewlet, ITopLinksMenu, \
+ ITopTabsViewlet, ITopTabsTab
# import Zope3 packages
from zope.i18n import translate
from zope.interface import implements
+from zope.viewlet.manager import WeightOrderedViewletManager
# import local packages
from ztfy.baseskin.viewlet import WeightViewletManagerBase, ViewletBase
-class TopLinksViewletManager(WeightViewletManagerBase):
+class TopLinksViewletManager(WeightOrderedViewletManager):
"""Top links viewlet manager"""
implements(ITopLinksViewletManager)
+#
+# Top links viewlet
+#
+
class TopLinksViewlet(WeightViewletManagerBase, ViewletBase):
"""Top links viewlet"""
@@ -70,3 +76,50 @@
if self.click_handler:
data.update({'data-ams-click-handler': self.click_handler})
return ' '.join('%s=%s' % item for item in data.iteritems())
+
+
+#
+# Top tabs viewlet
+#
+
+class TopTabsViewlet(WeightViewletManagerBase, ViewletBase):
+ """Top tabs viewlet"""
+
+ implements(ITopTabsViewlet)
+
+ label = u"Label:"
+ css_class = u'top-tabs'
+
+ 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 TopTabsTab(ViewletBase):
+ """Top tabs tab"""
+
+ implements(ITopTabsTab)
+
+ css_class = u""
+ label = u"Tab label"
+ click_handler = None
+ url = u"#"
+ data = {'data-toggle': 'tab'}
+
+ def render(self):
+ 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())