# HG changeset patch # User Sylvain Thenault # Date 1229694875 -3600 # Node ID b43362d92a1d54ac800b12aaff9bf0204bcc10d1 # Parent 3a15b00df8a2f7626076d0d787a26befb7fb58dc rename to tabs.py diff -r 3a15b00df8a2 -r b43362d92a1d web/views/tabs.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/views/tabs.py Fri Dec 19 14:54:35 2008 +0100 @@ -0,0 +1,73 @@ +"""base classes to handle tabbed views + +:organization: Logilab +:copyright: 2008 LOGILAB S.A. (Paris, FRANCE), all rights reserved. +:contact: http://www.logilab.fr/ -- mailto:contact@logilab.fr +""" + +__docformat__ = "restructuredtext en" + +from logilab.mtconverter import html_escape + +from cubicweb import NoSelectableObject, role +from cubicweb.common.selectors import has_related_entities +from cubicweb.common.view import EntityView + +class TabsMixIn(object): + + def active_tab(self, default): + cookie = self.req.get_cookie() + activetab = cookie.get('active_tab') + if activetab is None: + cookie['active_tab'] = default + self.req.set_cookie(cookie, 'active_tab') + return default + return activetab.value + + def render_tabs(self, tabs, default, **kwargs): + self.req.add_css('ui.tabs.css') + self.req.add_js( ('ui.core.js', 'ui.tabs.js', 'cubicweb.tabs.js') ) + active_tab = self.active_tab(default) + self.req.html_headers.add_post_inline_script(u""" + jQuery(document).ready(function() { + jQuery('#entity-tabs > ul').tabs( { selected: %(tabindex)s }); + set_tab('%(vid)s'); + }); + """ % {'tabindex' : tabs.index(active_tab), + 'vid' : active_tab}) + # build the html structure + w = self.w + w(u'
') + w(u'') + w(u'
') + # XXX ajaxify ! + for tabview in tabviews: + w(u'
' % tabview.id) + tabview.dispatch(w=self.w, **kwargs) + w(u'
') + + +class EntityRelationTab(EntityView): + __selectors__ = EntityView.__selectors__ + (has_related_entities,) + vid = 'list' + + def cell_call(self, row, col): + rset = self.rset.get_entity(row, col).related(self.rtype, role(self)) + self.w(u'
') + self.wview(self.vid, rset, 'noresult') + self.w(u'
') diff -r 3a15b00df8a2 -r b43362d92a1d web/views/tabview.py --- a/web/views/tabview.py Fri Dec 19 14:54:13 2008 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,51 +0,0 @@ -from logilab.mtconverter import html_escape - -from cubicweb.common.view import EntityView - -# XXX -# This is premature & tied to JPL -# It should go away & be replaced by something like -# a TabbedPrimaryView (that would really a primary view) - -class TabView(EntityView): - id = 'tabview' - accepts = ('Project',) - - def active_tab(self): - cookie = self.req.get_cookie() - cookietab = cookie.get('active_tab') - if cookietab is None: - cookie['active_tab'] = 'project_main' - self.req.set_cookie(cookie, 'active_tab') - return cookietab and cookietab.value or 'project_main' - - def cell_call(self, row, col, tabs): - self.req.add_css('ui.tabs.css') - self.req.add_js( ('ui.core.js', 'ui.tabs.js', 'cubes.jpl.primary.js') ) - active_tab = self.active_tab() - self.req.html_headers.add_post_inline_script(u""" - jQuery(document).ready(function() { - jQuery('#entity-tabs > ul').tabs( { selected: %(tabindex)s }); - set_tab('%(vid)s'); - }); - """ % {'tabindex' : tabs.index(active_tab), - 'vid' : active_tab}) - # build the html structure - self.w(u'
') - self.w(u'') - self.w(u'
') - for tab in tabs: - self.w(u'
' % tab) - self.wview(tab, self.rset) - self.w(u'
') -