Source code for chrysalio.lib.tabset

"""Widget to create tabs."""

from ..helpers.literal import Literal


# =============================================================================
[docs]class Tabset(object): """A class to manage tabs. :type request: pyramid.request.Request :param request: Current request. :param str tabset_id: ID of the tab set. :param list labels: A list of translation strings. """ # ------------------------------------------------------------------------- def __init__(self, request, tabset_id, labels): """Constructor method.""" self.request = request self.tabset_id = tabset_id self.tabs = [Tab(self, i, k) for i, k in enumerate(labels)] # -------------------------------------------------------------------------
[docs] def begin(self): """Output the opening tag of the ``TabSet`` and its table of content as an ``<ul>`` structure. :rtype: helpers.literal.Literal """ translate = self.request.localizer.translate html = '<div id="{0}" class="cioTabset">\n'\ '<ul class="cioTabsetToc">\n'.format(self.tabset_id) for tab in self.tabs: html += ' <li id="{tabset_id}{index}">'\ '<a class="cioTab" href="#{tabset_id}{index}_">'\ '<span>{label}</span></a></li>\n'.format( tabset_id=self.tabset_id, index=tab.index, label=translate(tab.label)) html += '</ul>\n<div class="cioClear"></div>\n' return Literal(html)
# -------------------------------------------------------------------------
[docs] @classmethod def end(cls): """End a tab set. :rtype: helpers.literal.Literal """ return Literal('</div>\n')
# =============================================================================
[docs]class Tab(object): """A class to manage one tab. :type tabset: Tabset :param tabset: Parent tab set. :param int index: Index of the tab. :param str label: Label of the tab. """ # ------------------------------------------------------------------------- def __init__(self, tabset, index, label): """Constructor method.""" self._tabset = tabset self.index = index self.label = label # -------------------------------------------------------------------------
[docs] def begin(self): """Open a tab zone. :rtype: helpers.literal.Literal :return: Opening ``fieldset`` structure with legend. """ return Literal( '<fieldset class="cioTabContent" id="{tabset_id}{index}_">\n' ' <legend><span>{label}</span></legend>\n'.format( tabset_id=self._tabset.tabset_id, index=self.index, label=self._tabset.request.localizer.translate(self.label)))
# -------------------------------------------------------------------------
[docs] @classmethod def end(cls): """Close a tab zone. :rtype: helpers.literal.Literal :return: Closing ``fieldset`` structure. """ return Literal('</fieldset>\n')