author | Pierre-Yves David <pierre-yves.david@logilab.fr> |
Fri, 22 Mar 2013 20:10:19 +0100 | |
changeset 8773 | 21edcb0a5ed7 |
parent 8728 | 75be9de9d68e |
child 9388 | 4c34a63bd113 |
permissions | -rw-r--r-- |
8512
5161573ba806
[tabbed view] make tabs optionaly lazy: lazy=False on the tabbed view trigger synchronous tabs. Closes #2443038
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
8442
diff
changeset
|
1 |
# copyright 2003-2012 LOGILAB S.A. (Paris, FRANCE), all rights reserved. |
5421
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5370
diff
changeset
|
2 |
# contact http://www.logilab.fr/ -- mailto:contact@logilab.fr |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5370
diff
changeset
|
3 |
# |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5370
diff
changeset
|
4 |
# This file is part of CubicWeb. |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5370
diff
changeset
|
5 |
# |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5370
diff
changeset
|
6 |
# CubicWeb is free software: you can redistribute it and/or modify it under the |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5370
diff
changeset
|
7 |
# terms of the GNU Lesser General Public License as published by the Free |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5370
diff
changeset
|
8 |
# Software Foundation, either version 2.1 of the License, or (at your option) |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5370
diff
changeset
|
9 |
# any later version. |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5370
diff
changeset
|
10 |
# |
5424
8ecbcbff9777
replace logilab-common by CubicWeb in disclaimer
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5421
diff
changeset
|
11 |
# CubicWeb is distributed in the hope that it will be useful, but WITHOUT |
5421
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5370
diff
changeset
|
12 |
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5370
diff
changeset
|
13 |
# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5370
diff
changeset
|
14 |
# details. |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5370
diff
changeset
|
15 |
# |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5370
diff
changeset
|
16 |
# You should have received a copy of the GNU Lesser General Public License along |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5370
diff
changeset
|
17 |
# with CubicWeb. If not, see <http://www.gnu.org/licenses/>. |
6466
43d71dd8a8ec
cleanup and 3.10 updates
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6193
diff
changeset
|
18 |
"""base classes to handle tabbed views""" |
235
b43362d92a1d
rename to tabs.py
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
220
diff
changeset
|
19 |
|
b43362d92a1d
rename to tabs.py
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
220
diff
changeset
|
20 |
__docformat__ = "restructuredtext en" |
6582
8eb7883b4223
[pylint] fix a bug of pylint detected errors and i18n pb (calling builtins._ instead of req._)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6472
diff
changeset
|
21 |
_ = unicode |
235
b43362d92a1d
rename to tabs.py
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
220
diff
changeset
|
22 |
|
4602
fe5aad04f08b
proper deprecation of TabedPrimaryView
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4601
diff
changeset
|
23 |
from logilab.common.deprecation import class_renamed |
2312
af4d8f75c5db
use xml_escape
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2264
diff
changeset
|
24 |
from logilab.mtconverter import xml_escape |
214
aaf2957bf69e
tabview is used to call each view for each tab
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
diff
changeset
|
25 |
|
235
b43362d92a1d
rename to tabs.py
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
220
diff
changeset
|
26 |
from cubicweb import NoSelectableObject, role |
6952
7de13eb473e3
[tabs js] merge tabs and lazy js files into cw.ajax.js and use camel case names to satisfy js coding standards
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6582
diff
changeset
|
27 |
from cubicweb import tags, uilib, utils |
8190
2a3c1b787688
[vreg] move base registry implementation to logilab.common. Closes #1916014
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
8103
diff
changeset
|
28 |
from cubicweb.predicates import partial_has_related_entities |
981
d86d1ee3b60e
fix some imports, update treeview for 3.2
sylvain.thenault@logilab.fr
parents:
940
diff
changeset
|
29 |
from cubicweb.view import EntityView |
3570
c31de6ea6984
[tabs] some convenience classes for tabbed views
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3569
diff
changeset
|
30 |
from cubicweb.web.views import primary |
485
0f830732be19
[tabs] provide a working tabs implementation, that lazy-loads tab content & should remember the current position
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
235
diff
changeset
|
31 |
|
0f830732be19
[tabs] provide a working tabs implementation, that lazy-loads tab content & should remember the current position
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
235
diff
changeset
|
32 |
class LazyViewMixin(object): |
6952
7de13eb473e3
[tabs js] merge tabs and lazy js files into cw.ajax.js and use camel case names to satisfy js coding standards
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6582
diff
changeset
|
33 |
"""provides two convenience methods for the tab machinery. |
7de13eb473e3
[tabs js] merge tabs and lazy js files into cw.ajax.js and use camel case names to satisfy js coding standards
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6582
diff
changeset
|
34 |
|
7de13eb473e3
[tabs js] merge tabs and lazy js files into cw.ajax.js and use camel case names to satisfy js coding standards
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6582
diff
changeset
|
35 |
Can also be used to lazy-load arbitrary views. |
510
6b92504d77c1
[tabs] improve pylint note :)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
504
diff
changeset
|
36 |
""" |
485
0f830732be19
[tabs] provide a working tabs implementation, that lazy-loads tab content & should remember the current position
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
235
diff
changeset
|
37 |
|
559
7cfd3d11edc8
[tabs] prepare for reloadability
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
547
diff
changeset
|
38 |
def _prepare_bindings(self, vid, reloadable): |
3451
6b46d73823f5
[api] work in progress, use __regid__, cw_*, etc.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
3408
diff
changeset
|
39 |
self._cw.add_onload(u""" |
559
7cfd3d11edc8
[tabs] prepare for reloadability
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
547
diff
changeset
|
40 |
jQuery('#lazy-%(vid)s').bind('%(event)s', function(event) { |
6952
7de13eb473e3
[tabs js] merge tabs and lazy js files into cw.ajax.js and use camel case names to satisfy js coding standards
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6582
diff
changeset
|
41 |
loadNow('#lazy-%(vid)s', '#%(vid)s-hole', %(reloadable)s); |
559
7cfd3d11edc8
[tabs] prepare for reloadability
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
547
diff
changeset
|
42 |
});""" % {'event': 'load_%s' % vid, 'vid': vid, |
7cfd3d11edc8
[tabs] prepare for reloadability
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
547
diff
changeset
|
43 |
'reloadable' : str(reloadable).lower()}) |
7cfd3d11edc8
[tabs] prepare for reloadability
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
547
diff
changeset
|
44 |
|
3569
89a60802711b
[tabs] refactor to more tab control
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3209
diff
changeset
|
45 |
def lazyview(self, vid, rql=None, eid=None, rset=None, tabid=None, |
1000
90705536b7c8
[tabs] from rev 917 - got lost in a merge
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
999
diff
changeset
|
46 |
reloadable=False, show_spinbox=True, w=None): |
6952
7de13eb473e3
[tabs js] merge tabs and lazy js files into cw.ajax.js and use camel case names to satisfy js coding standards
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6582
diff
changeset
|
47 |
"""a lazy version of wview""" |
485
0f830732be19
[tabs] provide a working tabs implementation, that lazy-loads tab content & should remember the current position
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
235
diff
changeset
|
48 |
w = w or self.w |
7253
68b9e21efa63
[js] delete empty js files (incluced in cw.ajax.js)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7233
diff
changeset
|
49 |
self._cw.add_js('cubicweb.ajax.js') |
8442
202625f247b4
[views/tabs] fix rql/eid param conflict when either one is already in the request form (closes #2405249)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
8237
diff
changeset
|
50 |
# the form is copied into urlparams to please the inner views |
202625f247b4
[views/tabs] fix rql/eid param conflict when either one is already in the request form (closes #2405249)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
8237
diff
changeset
|
51 |
# that might want to take params from it |
202625f247b4
[views/tabs] fix rql/eid param conflict when either one is already in the request form (closes #2405249)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
8237
diff
changeset
|
52 |
# beware of already present rql or eid elements |
202625f247b4
[views/tabs] fix rql/eid param conflict when either one is already in the request form (closes #2405249)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
8237
diff
changeset
|
53 |
# to be safe of collision a proper argument passing protocol |
202625f247b4
[views/tabs] fix rql/eid param conflict when either one is already in the request form (closes #2405249)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
8237
diff
changeset
|
54 |
# (with namespaces) should be used instead of the current |
202625f247b4
[views/tabs] fix rql/eid param conflict when either one is already in the request form (closes #2405249)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
8237
diff
changeset
|
55 |
# ad-hockery |
7067
f239da8e7c39
[tabs] forward url parameters to lazy tabs views
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
6582
diff
changeset
|
56 |
urlparams = self._cw.form.copy() |
8442
202625f247b4
[views/tabs] fix rql/eid param conflict when either one is already in the request form (closes #2405249)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
8237
diff
changeset
|
57 |
urlparams.pop('rql', None) |
202625f247b4
[views/tabs] fix rql/eid param conflict when either one is already in the request form (closes #2405249)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
8237
diff
changeset
|
58 |
urlparams.pop('eid', None) |
7067
f239da8e7c39
[tabs] forward url parameters to lazy tabs views
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
6582
diff
changeset
|
59 |
urlparams.update({'vid' : vid, 'fname' : 'view'}) |
1000
90705536b7c8
[tabs] from rev 917 - got lost in a merge
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
999
diff
changeset
|
60 |
if rql: |
90705536b7c8
[tabs] from rev 917 - got lost in a merge
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
999
diff
changeset
|
61 |
urlparams['rql'] = rql |
90705536b7c8
[tabs] from rev 917 - got lost in a merge
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
999
diff
changeset
|
62 |
elif eid: |
8237
f854cf9b089e
[tabs] use eid parameter instead of rql when an eid is given. Closes #2186288
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
8216
diff
changeset
|
63 |
urlparams['eid'] = eid |
1000
90705536b7c8
[tabs] from rev 917 - got lost in a merge
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
999
diff
changeset
|
64 |
elif rset: |
90705536b7c8
[tabs] from rev 917 - got lost in a merge
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
999
diff
changeset
|
65 |
urlparams['rql'] = rset.printable_rql() |
6083
8d69ef5f086a
[tabs] take care, vid may not be a valid dom id (for jQuery at least)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5877
diff
changeset
|
66 |
if tabid is None: |
8d69ef5f086a
[tabs] take care, vid may not be a valid dom id (for jQuery at least)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5877
diff
changeset
|
67 |
tabid = uilib.domid(vid) |
543
c0f2b6378f70
simplification of lazy tabs mechanism
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
542
diff
changeset
|
68 |
w(u'<div id="lazy-%s" cubicweb:loadurl="%s">' % ( |
8728
75be9de9d68e
[web] Use the new '/ajax' URL path to access the AjaxController (closes #2758254)
Rémi Cardona <remi.cardona@logilab.fr>
parents:
8531
diff
changeset
|
69 |
tabid, xml_escape(self._cw.build_url('ajax', **urlparams)))) |
485
0f830732be19
[tabs] provide a working tabs implementation, that lazy-loads tab content & should remember the current position
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
235
diff
changeset
|
70 |
if show_spinbox: |
8095
5ad0f8ac7561
[web/views/tabs] improve non graphical experince with tabs (closes #2097405)
Alain Leufroy <alain.leufroy@logilab.fr>
parents:
7879
diff
changeset
|
71 |
# Don't use ``alt`` since image is a *visual* helper for ajax |
8191
eceaf9e21966
[js] better support for no js in tabs (closes #2162092)
Arthur Lutz <arthur.lutz@logilab.fr>
parents:
8103
diff
changeset
|
72 |
w(u'<img style="display: none" src="%s" alt="" id="%s-hole"/>' |
8095
5ad0f8ac7561
[web/views/tabs] improve non graphical experince with tabs (closes #2097405)
Alain Leufroy <alain.leufroy@logilab.fr>
parents:
7879
diff
changeset
|
73 |
% (xml_escape(self._cw.data_url('loading.gif')), tabid)) |
5370
dc6f3247bfc2
[lazy view] give it a proper hole node in the no spinbox case
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
5151
diff
changeset
|
74 |
else: |
6083
8d69ef5f086a
[tabs] take care, vid may not be a valid dom id (for jQuery at least)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5877
diff
changeset
|
75 |
w(u'<div id="%s-hole"></div>' % tabid) |
8191
eceaf9e21966
[js] better support for no js in tabs (closes #2162092)
Arthur Lutz <arthur.lutz@logilab.fr>
parents:
8103
diff
changeset
|
76 |
w(u'<noscript><p>%s <a id="seo-%s" href="%s">%s</a></p></noscript>' |
8095
5ad0f8ac7561
[web/views/tabs] improve non graphical experince with tabs (closes #2097405)
Alain Leufroy <alain.leufroy@logilab.fr>
parents:
7879
diff
changeset
|
77 |
% (xml_escape(self._cw._('Link:')), |
5ad0f8ac7561
[web/views/tabs] improve non graphical experince with tabs (closes #2097405)
Alain Leufroy <alain.leufroy@logilab.fr>
parents:
7879
diff
changeset
|
78 |
tabid, |
5ad0f8ac7561
[web/views/tabs] improve non graphical experince with tabs (closes #2097405)
Alain Leufroy <alain.leufroy@logilab.fr>
parents:
7879
diff
changeset
|
79 |
xml_escape(self._cw.build_url(**urlparams)), |
5ad0f8ac7561
[web/views/tabs] improve non graphical experince with tabs (closes #2097405)
Alain Leufroy <alain.leufroy@logilab.fr>
parents:
7879
diff
changeset
|
80 |
xml_escape(self._cw._(tabid)))) |
485
0f830732be19
[tabs] provide a working tabs implementation, that lazy-loads tab content & should remember the current position
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
235
diff
changeset
|
81 |
w(u'</div>') |
6083
8d69ef5f086a
[tabs] take care, vid may not be a valid dom id (for jQuery at least)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5877
diff
changeset
|
82 |
self._prepare_bindings(tabid, reloadable) |
485
0f830732be19
[tabs] provide a working tabs implementation, that lazy-loads tab content & should remember the current position
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
235
diff
changeset
|
83 |
|
0f830732be19
[tabs] provide a working tabs implementation, that lazy-loads tab content & should remember the current position
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
235
diff
changeset
|
84 |
def forceview(self, vid): |
6952
7de13eb473e3
[tabs js] merge tabs and lazy js files into cw.ajax.js and use camel case names to satisfy js coding standards
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6582
diff
changeset
|
85 |
"""trigger an event that will force immediate loading of the view on dom |
7de13eb473e3
[tabs js] merge tabs and lazy js files into cw.ajax.js and use camel case names to satisfy js coding standards
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6582
diff
changeset
|
86 |
readyness |
485
0f830732be19
[tabs] provide a working tabs implementation, that lazy-loads tab content & should remember the current position
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
235
diff
changeset
|
87 |
""" |
6952
7de13eb473e3
[tabs js] merge tabs and lazy js files into cw.ajax.js and use camel case names to satisfy js coding standards
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6582
diff
changeset
|
88 |
self._cw.add_onload(uilib.js.triggerLoad(vid)) |
543
c0f2b6378f70
simplification of lazy tabs mechanism
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
542
diff
changeset
|
89 |
|
485
0f830732be19
[tabs] provide a working tabs implementation, that lazy-loads tab content & should remember the current position
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
235
diff
changeset
|
90 |
|
0f830732be19
[tabs] provide a working tabs implementation, that lazy-loads tab content & should remember the current position
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
235
diff
changeset
|
91 |
class TabsMixin(LazyViewMixin): |
6952
7de13eb473e3
[tabs js] merge tabs and lazy js files into cw.ajax.js and use camel case names to satisfy js coding standards
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6582
diff
changeset
|
92 |
"""a tab mixin to easily get jQuery based, lazy, ajax tabs""" |
8512
5161573ba806
[tabbed view] make tabs optionaly lazy: lazy=False on the tabbed view trigger synchronous tabs. Closes #2443038
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
8442
diff
changeset
|
93 |
lazy = True |
485
0f830732be19
[tabs] provide a working tabs implementation, that lazy-loads tab content & should remember the current position
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
235
diff
changeset
|
94 |
|
606
40c7c2cf0797
[tabs] reuse the new set_cookie controller method
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
559
diff
changeset
|
95 |
@property |
40c7c2cf0797
[tabs] reuse the new set_cookie controller method
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
559
diff
changeset
|
96 |
def cookie_name(self): |
4085
002ba2a3bb13
api update again
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
4023
diff
changeset
|
97 |
return str('%s_active_tab' % self._cw.vreg.config.appid) |
606
40c7c2cf0797
[tabs] reuse the new set_cookie controller method
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
559
diff
changeset
|
98 |
|
3569
89a60802711b
[tabs] refactor to more tab control
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3209
diff
changeset
|
99 |
def active_tab(self, default): |
3589 | 100 |
if 'tab' in self._cw.form: |
101 |
return self._cw.form['tab'] |
|
3451
6b46d73823f5
[api] work in progress, use __regid__, cw_*, etc.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
3408
diff
changeset
|
102 |
cookies = self._cw.get_cookie() |
606
40c7c2cf0797
[tabs] reuse the new set_cookie controller method
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
559
diff
changeset
|
103 |
cookiename = self.cookie_name |
1000
90705536b7c8
[tabs] from rev 917 - got lost in a merge
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
999
diff
changeset
|
104 |
activetab = cookies.get(cookiename) |
235
b43362d92a1d
rename to tabs.py
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
220
diff
changeset
|
105 |
if activetab is None: |
6083
8d69ef5f086a
[tabs] take care, vid may not be a valid dom id (for jQuery at least)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5877
diff
changeset
|
106 |
domid = uilib.domid(default) |
7855
54283a5b7afc
[web request]Â fix cookie 'expires' formating (closes #1953945)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7820
diff
changeset
|
107 |
self._cw.set_cookie(cookiename, domid) |
6083
8d69ef5f086a
[tabs] take care, vid may not be a valid dom id (for jQuery at least)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5877
diff
changeset
|
108 |
return domid |
3569
89a60802711b
[tabs] refactor to more tab control
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3209
diff
changeset
|
109 |
return activetab.value |
214
aaf2957bf69e
tabview is used to call each view for each tab
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
diff
changeset
|
110 |
|
3569
89a60802711b
[tabs] refactor to more tab control
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3209
diff
changeset
|
111 |
def prune_tabs(self, tabs, default_tab): |
490
b84d64db2350
[tabs] prune tab set _before_ computing & setting 'active' tab
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
489
diff
changeset
|
112 |
selected_tabs = [] |
3569
89a60802711b
[tabs] refactor to more tab control
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3209
diff
changeset
|
113 |
may_be_active_tab = self.active_tab(default_tab) |
6083
8d69ef5f086a
[tabs] take care, vid may not be a valid dom id (for jQuery at least)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5877
diff
changeset
|
114 |
active_tab = uilib.domid(default_tab) |
3589 | 115 |
viewsvreg = self._cw.vreg['views'] |
490
b84d64db2350
[tabs] prune tab set _before_ computing & setting 'active' tab
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
489
diff
changeset
|
116 |
for tab in tabs: |
6952
7de13eb473e3
[tabs js] merge tabs and lazy js files into cw.ajax.js and use camel case names to satisfy js coding standards
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6582
diff
changeset
|
117 |
if isinstance(tab, basestring): |
7de13eb473e3
[tabs js] merge tabs and lazy js files into cw.ajax.js and use camel case names to satisfy js coding standards
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6582
diff
changeset
|
118 |
tabid, tabkwargs = tab, {} |
7de13eb473e3
[tabs js] merge tabs and lazy js files into cw.ajax.js and use camel case names to satisfy js coding standards
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6582
diff
changeset
|
119 |
else: |
3569
89a60802711b
[tabs] refactor to more tab control
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3209
diff
changeset
|
120 |
tabid, tabkwargs = tab |
89a60802711b
[tabs] refactor to more tab control
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3209
diff
changeset
|
121 |
tabkwargs = tabkwargs.copy() |
8526
ed0fbbf507bb
[ui tabs] avoid duplicate rset argument if already specified in tab kwargs. Closes #2464786
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
8512
diff
changeset
|
122 |
tabkwargs.setdefault('rset', self.cw_rset) |
3569
89a60802711b
[tabs] refactor to more tab control
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3209
diff
changeset
|
123 |
vid = tabkwargs.get('vid', tabid) |
6083
8d69ef5f086a
[tabs] take care, vid may not be a valid dom id (for jQuery at least)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5877
diff
changeset
|
124 |
domid = uilib.domid(tabid) |
3569
89a60802711b
[tabs] refactor to more tab control
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3209
diff
changeset
|
125 |
try: |
8526
ed0fbbf507bb
[ui tabs] avoid duplicate rset argument if already specified in tab kwargs. Closes #2464786
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
8512
diff
changeset
|
126 |
viewsvreg.select(vid, self._cw, tabid=domid, **tabkwargs) |
490
b84d64db2350
[tabs] prune tab set _before_ computing & setting 'active' tab
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
489
diff
changeset
|
127 |
except NoSelectableObject: |
b84d64db2350
[tabs] prune tab set _before_ computing & setting 'active' tab
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
489
diff
changeset
|
128 |
continue |
6083
8d69ef5f086a
[tabs] take care, vid may not be a valid dom id (for jQuery at least)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5877
diff
changeset
|
129 |
selected_tabs.append((tabid, domid, tabkwargs)) |
8d69ef5f086a
[tabs] take care, vid may not be a valid dom id (for jQuery at least)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5877
diff
changeset
|
130 |
if domid == may_be_active_tab: |
8d69ef5f086a
[tabs] take care, vid may not be a valid dom id (for jQuery at least)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5877
diff
changeset
|
131 |
active_tab = domid |
3569
89a60802711b
[tabs] refactor to more tab control
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3209
diff
changeset
|
132 |
return selected_tabs, active_tab |
490
b84d64db2350
[tabs] prune tab set _before_ computing & setting 'active' tab
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
489
diff
changeset
|
133 |
|
1997
554eb4dd533d
[views] get tabs to work with startup views
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
1977
diff
changeset
|
134 |
def render_tabs(self, tabs, default, entity=None): |
2264 | 135 |
# delegate to the default tab if there is more than one entity |
136 |
# in the result set (tabs are pretty useless there) |
|
3451
6b46d73823f5
[api] work in progress, use __regid__, cw_*, etc.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
3408
diff
changeset
|
137 |
if entity and len(self.cw_rset) > 1: |
1379
6c6dbc0df829
MUST NOT consider req.form['rql'] in a view, use len(rset) > 1 to detect if we can apply tabs or not
sylvain.thenault@logilab.fr
parents:
1112
diff
changeset
|
138 |
entity.view(default, w=self.w) |
6c6dbc0df829
MUST NOT consider req.form['rql'] in a view, use len(rset) > 1 to detect if we can apply tabs or not
sylvain.thenault@logilab.fr
parents:
1112
diff
changeset
|
139 |
return |
7233
614f23606091
[js/css] remove old versions of ui.tabs/slider etc.; closes #1625085
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
7070
diff
changeset
|
140 |
self._cw.add_css('jquery.ui.css') |
7820
2c73fc529a20
[tabs] do not use an ajax call to set cookie value, use jquery.cookie helper instead (closes #1944522)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
7819
diff
changeset
|
141 |
self._cw.add_js(('jquery.ui.js', 'cubicweb.ajax.js', 'jquery.cookie.js')) |
490
b84d64db2350
[tabs] prune tab set _before_ computing & setting 'active' tab
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
489
diff
changeset
|
142 |
# prune tabs : not all are to be shown |
3569
89a60802711b
[tabs] refactor to more tab control
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3209
diff
changeset
|
143 |
tabs, active_tab = self.prune_tabs(tabs, default) |
214
aaf2957bf69e
tabview is used to call each view for each tab
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
diff
changeset
|
144 |
# build the html structure |
235
b43362d92a1d
rename to tabs.py
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
220
diff
changeset
|
145 |
w = self.w |
6952
7de13eb473e3
[tabs js] merge tabs and lazy js files into cw.ajax.js and use camel case names to satisfy js coding standards
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6582
diff
changeset
|
146 |
uid = entity and entity.eid or utils.make_uid('tab') |
2386
b246d5cee44e
[tabs] backport entity-less support for tabs
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
2383
diff
changeset
|
147 |
w(u'<div id="entity-tabs-%s">' % uid) |
2673
9e639925ca2f
Backed out changeset 3e1d2ab5f8c0 (restore ui.tabs.js instead of jquery tools)
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
2123
diff
changeset
|
148 |
w(u'<ul>') |
3569
89a60802711b
[tabs] refactor to more tab control
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3209
diff
changeset
|
149 |
active_tab_idx = None |
6083
8d69ef5f086a
[tabs] take care, vid may not be a valid dom id (for jQuery at least)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5877
diff
changeset
|
150 |
for i, (tabid, domid, tabkwargs) in enumerate(tabs): |
235
b43362d92a1d
rename to tabs.py
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
220
diff
changeset
|
151 |
w(u'<li>') |
6083
8d69ef5f086a
[tabs] take care, vid may not be a valid dom id (for jQuery at least)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5877
diff
changeset
|
152 |
w(u'<a href="#%s">' % domid) |
3589 | 153 |
w(tabkwargs.pop('label', self._cw._(tabid))) |
235
b43362d92a1d
rename to tabs.py
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
220
diff
changeset
|
154 |
w(u'</a>') |
b43362d92a1d
rename to tabs.py
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
220
diff
changeset
|
155 |
w(u'</li>') |
6083
8d69ef5f086a
[tabs] take care, vid may not be a valid dom id (for jQuery at least)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5877
diff
changeset
|
156 |
if domid == active_tab: |
3569
89a60802711b
[tabs] refactor to more tab control
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3209
diff
changeset
|
157 |
active_tab_idx = i |
235
b43362d92a1d
rename to tabs.py
Sylvain Thenault <sylvain.thenault@logilab.fr>
parents:
220
diff
changeset
|
158 |
w(u'</ul>') |
6083
8d69ef5f086a
[tabs] take care, vid may not be a valid dom id (for jQuery at least)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5877
diff
changeset
|
159 |
for tabid, domid, tabkwargs in tabs: |
8d69ef5f086a
[tabs] take care, vid may not be a valid dom id (for jQuery at least)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5877
diff
changeset
|
160 |
w(u'<div id="%s">' % domid) |
8512
5161573ba806
[tabbed view] make tabs optionaly lazy: lazy=False on the tabbed view trigger synchronous tabs. Closes #2443038
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
8442
diff
changeset
|
161 |
if self.lazy: |
5161573ba806
[tabbed view] make tabs optionaly lazy: lazy=False on the tabbed view trigger synchronous tabs. Closes #2443038
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
8442
diff
changeset
|
162 |
tabkwargs.setdefault('tabid', domid) |
5161573ba806
[tabbed view] make tabs optionaly lazy: lazy=False on the tabbed view trigger synchronous tabs. Closes #2443038
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
8442
diff
changeset
|
163 |
tabkwargs.setdefault('vid', tabid) |
5161573ba806
[tabbed view] make tabs optionaly lazy: lazy=False on the tabbed view trigger synchronous tabs. Closes #2443038
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
8442
diff
changeset
|
164 |
self.lazyview(**tabkwargs) |
5161573ba806
[tabbed view] make tabs optionaly lazy: lazy=False on the tabbed view trigger synchronous tabs. Closes #2443038
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
8442
diff
changeset
|
165 |
else: |
5161573ba806
[tabbed view] make tabs optionaly lazy: lazy=False on the tabbed view trigger synchronous tabs. Closes #2443038
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
8442
diff
changeset
|
166 |
self._cw.view(tabid, w=self.w, **tabkwargs) |
485
0f830732be19
[tabs] provide a working tabs implementation, that lazy-loads tab content & should remember the current position
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
235
diff
changeset
|
167 |
w(u'</div>') |
7233
614f23606091
[js/css] remove old versions of ui.tabs/slider etc.; closes #1625085
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
7070
diff
changeset
|
168 |
w(u'</div>') |
6952
7de13eb473e3
[tabs js] merge tabs and lazy js files into cw.ajax.js and use camel case names to satisfy js coding standards
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6582
diff
changeset
|
169 |
# call the setTab() JS function *after* each tab is generated |
543
c0f2b6378f70
simplification of lazy tabs mechanism
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
542
diff
changeset
|
170 |
# because the callback binding needs to be done before |
2383
96780c1e0c53
shrink a bit the tabs
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
2381
diff
changeset
|
171 |
# XXX make work history: true |
8512
5161573ba806
[tabbed view] make tabs optionaly lazy: lazy=False on the tabbed view trigger synchronous tabs. Closes #2443038
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
8442
diff
changeset
|
172 |
if self.lazy: |
5161573ba806
[tabbed view] make tabs optionaly lazy: lazy=False on the tabbed view trigger synchronous tabs. Closes #2443038
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
8442
diff
changeset
|
173 |
self._cw.add_onload(u""" |
8531
e150b4bcbfaa
[tabs] fix pb with non-lazy tabs: style isn't properly set due to missing jquery.ui activation. Closes #2465657
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
8526
diff
changeset
|
174 |
jQuery('#entity-tabs-%(uid)s').tabs( |
7819
93d9a9c29bfb
[tabs] fix clic on tab that does nothing (closes #1942750)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
7742
diff
changeset
|
175 |
{ selected: %(tabindex)s, |
93d9a9c29bfb
[tabs] fix clic on tab that does nothing (closes #1942750)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
7742
diff
changeset
|
176 |
select: function(event, ui) { |
93d9a9c29bfb
[tabs] fix clic on tab that does nothing (closes #1942750)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
7742
diff
changeset
|
177 |
setTab(ui.panel.id, '%(cookiename)s'); |
93d9a9c29bfb
[tabs] fix clic on tab that does nothing (closes #1942750)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
7742
diff
changeset
|
178 |
} |
93d9a9c29bfb
[tabs] fix clic on tab that does nothing (closes #1942750)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
7742
diff
changeset
|
179 |
}); |
6952
7de13eb473e3
[tabs js] merge tabs and lazy js files into cw.ajax.js and use camel case names to satisfy js coding standards
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6582
diff
changeset
|
180 |
setTab('%(domid)s', '%(cookiename)s'); |
3569
89a60802711b
[tabs] refactor to more tab control
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3209
diff
changeset
|
181 |
""" % {'tabindex' : active_tab_idx, |
8531
e150b4bcbfaa
[tabs] fix pb with non-lazy tabs: style isn't properly set due to missing jquery.ui activation. Closes #2465657
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
8526
diff
changeset
|
182 |
'domid' : active_tab, |
e150b4bcbfaa
[tabs] fix pb with non-lazy tabs: style isn't properly set due to missing jquery.ui activation. Closes #2465657
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
8526
diff
changeset
|
183 |
'uid' : uid, |
2674
ff6114c2c416
merge (after jquery.tools backout)
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
diff
changeset
|
184 |
'cookiename' : self.cookie_name}) |
8531
e150b4bcbfaa
[tabs] fix pb with non-lazy tabs: style isn't properly set due to missing jquery.ui activation. Closes #2465657
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
8526
diff
changeset
|
185 |
else: |
e150b4bcbfaa
[tabs] fix pb with non-lazy tabs: style isn't properly set due to missing jquery.ui activation. Closes #2465657
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
8526
diff
changeset
|
186 |
self._cw.add_onload( |
e150b4bcbfaa
[tabs] fix pb with non-lazy tabs: style isn't properly set due to missing jquery.ui activation. Closes #2465657
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
8526
diff
changeset
|
187 |
u"jQuery('#entity-tabs-%(uid)s').tabs({selected: %(tabindex)s});" |
e150b4bcbfaa
[tabs] fix pb with non-lazy tabs: style isn't properly set due to missing jquery.ui activation. Closes #2465657
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
8526
diff
changeset
|
188 |
% {'tabindex': active_tab_idx, 'uid': uid}) |
489 | 189 |
|
3026
17644247f0ff
fix emacs syntaxic colorization
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2675
diff
changeset
|
190 |
|
982
ba5257deec7d
rename EntityRelatedTab into EntityRelationView, some fixes
sylvain.thenault@logilab.fr
parents:
981
diff
changeset
|
191 |
class EntityRelationView(EntityView): |
ba5257deec7d
rename EntityRelatedTab into EntityRelationView, some fixes
sylvain.thenault@logilab.fr
parents:
981
diff
changeset
|
192 |
"""view displaying entity related stuff. |
489 | 193 |
Such a view _must_ provide the rtype, target and vid attributes : |
194 |
||
195 |
Example : |
|
196 |
||
197 |
class ProjectScreenshotsView(EntityRelationView): |
|
542
46d4ff5aa917
use lgc.decorators.monkeypatch in tabs.py
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
522
diff
changeset
|
198 |
'''display project's screenshots''' |
3408
c92170fca813
[api] use __regid__ instead of deprecated id
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
3230
diff
changeset
|
199 |
__regid__ = title = _('projectscreenshots') |
5877
0c7b7b76a84f
[selectors] provide a new, optimized, is_instance selector that should at some point replace implements (along with the adaptable selector)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5424
diff
changeset
|
200 |
__select__ = EntityRelationView.__select__ & is_instance('Project') |
489 | 201 |
rtype = 'screenshot' |
982
ba5257deec7d
rename EntityRelatedTab into EntityRelationView, some fixes
sylvain.thenault@logilab.fr
parents:
981
diff
changeset
|
202 |
role = 'subject' |
489 | 203 |
vid = 'gallery' |
204 |
||
3209
c2c8f88a4520
allow user to give ?tab=tabname and be set to the right tab (part of #345399)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
3026
diff
changeset
|
205 |
in this example, entities related to project entity by the 'screenshot' |
982
ba5257deec7d
rename EntityRelatedTab into EntityRelationView, some fixes
sylvain.thenault@logilab.fr
parents:
981
diff
changeset
|
206 |
relation (where the project is subject of the relation) will be displayed |
ba5257deec7d
rename EntityRelatedTab into EntityRelationView, some fixes
sylvain.thenault@logilab.fr
parents:
981
diff
changeset
|
207 |
using the 'gallery' view. |
489 | 208 |
""" |
838
f2c56312b03a
rename abstract_* selectors into partial_* + add docstrings
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
782
diff
changeset
|
209 |
__select__ = EntityView.__select__ & partial_has_related_entities() |
489 | 210 |
vid = 'list' |
7879
9aae456abab5
[pylint] fix pylint detected errors and tweak it so that pylint -E will be much less verbose next time (+ update some copyrights on the way)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7855
diff
changeset
|
211 |
# to be defined in concrete classes |
9aae456abab5
[pylint] fix pylint detected errors and tweak it so that pylint -E will be much less verbose next time (+ update some copyrights on the way)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7855
diff
changeset
|
212 |
rtype = title = None |
1802
d628defebc17
delete-trailing-whitespace + some copyright update
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
1498
diff
changeset
|
213 |
|
489 | 214 |
def cell_call(self, row, col): |
3451
6b46d73823f5
[api] work in progress, use __regid__, cw_*, etc.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
3408
diff
changeset
|
215 |
rset = self.cw_rset.get_entity(row, col).related(self.rtype, role(self)) |
489 | 216 |
self.w(u'<div class="mainInfo">') |
982
ba5257deec7d
rename EntityRelatedTab into EntityRelationView, some fixes
sylvain.thenault@logilab.fr
parents:
981
diff
changeset
|
217 |
if self.title: |
3451
6b46d73823f5
[api] work in progress, use __regid__, cw_*, etc.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
3408
diff
changeset
|
218 |
self.w(tags.h1(self._cw._(self.title))) |
489 | 219 |
self.wview(self.vid, rset, 'noresult') |
220 |
self.w(u'</div>') |
|
3570
c31de6ea6984
[tabs] some convenience classes for tabbed views
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3569
diff
changeset
|
221 |
|
c31de6ea6984
[tabs] some convenience classes for tabbed views
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3569
diff
changeset
|
222 |
|
3929
9f314411cd04
[web] rename TabedPrimary to TabbedPrimary with backward compat
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
3849
diff
changeset
|
223 |
class TabbedPrimaryView(TabsMixin, primary.PrimaryView): |
3570
c31de6ea6984
[tabs] some convenience classes for tabbed views
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3569
diff
changeset
|
224 |
__abstract__ = True # don't register |
c31de6ea6984
[tabs] some convenience classes for tabbed views
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3569
diff
changeset
|
225 |
|
6472
6e058f937126
i18n tweaks
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6466
diff
changeset
|
226 |
tabs = [_('main_tab')] |
3570
c31de6ea6984
[tabs] some convenience classes for tabbed views
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3569
diff
changeset
|
227 |
default_tab = 'main_tab' |
c31de6ea6984
[tabs] some convenience classes for tabbed views
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3569
diff
changeset
|
228 |
|
8531
e150b4bcbfaa
[tabs] fix pb with non-lazy tabs: style isn't properly set due to missing jquery.ui activation. Closes #2465657
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
8526
diff
changeset
|
229 |
def render_entity(self, entity): |
4601
0f65c40b56b5
missing call to toolbox in tabbed primary view
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4252
diff
changeset
|
230 |
self.render_entity_toolbox(entity) |
6193
a58097ee4f15
[views] do not underline h1 titles for tabbedprimary views
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
6083
diff
changeset
|
231 |
self.w(u'<div class="tabbedprimary"></div>') |
3570
c31de6ea6984
[tabs] some convenience classes for tabbed views
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3569
diff
changeset
|
232 |
self.render_entity_title(entity) |
c31de6ea6984
[tabs] some convenience classes for tabbed views
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3569
diff
changeset
|
233 |
self.render_tabs(self.tabs, self.default_tab, entity) |
4602
fe5aad04f08b
proper deprecation of TabedPrimaryView
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4601
diff
changeset
|
234 |
|
fe5aad04f08b
proper deprecation of TabedPrimaryView
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4601
diff
changeset
|
235 |
TabedPrimaryView = class_renamed('TabedPrimaryView', TabbedPrimaryView) |
3570
c31de6ea6984
[tabs] some convenience classes for tabbed views
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3569
diff
changeset
|
236 |
|
c31de6ea6984
[tabs] some convenience classes for tabbed views
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3569
diff
changeset
|
237 |
class PrimaryTab(primary.PrimaryView): |
3645
7272b793d7c9
3.6 updates
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3589
diff
changeset
|
238 |
__regid__ = 'main_tab' |
6472
6e058f937126
i18n tweaks
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6466
diff
changeset
|
239 |
title = None # should not appear in possible views |
3570
c31de6ea6984
[tabs] some convenience classes for tabbed views
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3569
diff
changeset
|
240 |
|
c31de6ea6984
[tabs] some convenience classes for tabbed views
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3569
diff
changeset
|
241 |
def is_primary(self): |
c31de6ea6984
[tabs] some convenience classes for tabbed views
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3569
diff
changeset
|
242 |
return True |
c31de6ea6984
[tabs] some convenience classes for tabbed views
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3569
diff
changeset
|
243 |
|
c31de6ea6984
[tabs] some convenience classes for tabbed views
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3569
diff
changeset
|
244 |
def render_entity_title(self, entity): |
c31de6ea6984
[tabs] some convenience classes for tabbed views
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3569
diff
changeset
|
245 |
pass |
3845
596044fb7bc5
introduce render_entity_toolbox on default primary view to display components in the ctxtoolbar context, such as pdf icon, notification registration (nosylist)...
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3844
diff
changeset
|
246 |
def render_entity_toolbox(self, entity): |
3570
c31de6ea6984
[tabs] some convenience classes for tabbed views
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3569
diff
changeset
|
247 |
pass |