Hello,
In order to get the proper tabs to render the validators message in case
they have been triggered I would like to know if I use response.write(TABS
INDEX) could be a option??
Here my set up :
*VIEW*
<style type="text/css" title="currentStyle">
@import
"{{=URL('static','plugin_added/jquery-ui-1.8.9.custom/development-bundle/themes/base/jquery.ui.all.css')}}";
</style>
<script type="text/javascript" charset="utf-8"
src="{{=URL('static','plugin_added/jquery-ui-1.8.9.custom/js/jquery-1.4.4.min.js')}}"></script>
<script type="text/javascript" charset="utf-8"
src="{{=URL('static','plugin_added/jquery-ui-1.8.9.custom/development-bundle/ui/jquery.ui.core.js')}}"></script>
<script type="text/javascript" charset="utf-8"
src="{{=URL('static','plugin_added/jquery-ui-1.8.9.custom/development-bundle/ui/jquery.ui.widget.js')}}"></script>
<script type="text/javascript" charset="utf-8"
src="{{=URL('static','plugin_added/jquery-ui-1.8.9.custom/development-bundle/ui/jquery.ui.tabs.js')}}"></script>
<script>
$(function() {
var $tabs = $( "#tabs" ).tabs();
$tabs.tabs('select', {{response.write()}});
return false;
});
</script>
<div class="demo">
<br/>
<br/>
<br/>
<div id="tabs">
<ul>
<li><a href="#tabs-1">{{=T('folder').capitalize()}}</a></li>
<li><a href="#tabs-2">{{=T('volume').capitalize()}}</a></li>
<li><a href="#tabs-3">{{=T('tome').capitalize()}}</a></li>
<li><a href="#tabs-4">{{=T('report').capitalize()}}</a></li>
</ul>
<div id="tabs-1">
<br/>
{{=LOAD(c='ref',f='create_fvte',args='ref_fnaregistry',extension='load',ajax=False,ajax_trap=False,target='one')}}
</div><!-- tabs-1 -->
<div id="tabs-2">
<br/>
{{=LOAD(c='ref',f='create_fvte',args='ref_vregistry',extension='load',ajax=False,ajax_trap=False,target='two')}}
</div><!-- tabs-2 -->
<div id="tabs-3">
<br/>
{{=LOAD(c='ref',f='create_fvte',args='ref_tregistry',extension='load',ajax=False,ajax_trap=False,target='three')}}
</div><!-- tabs-3 -->
<div id="tabs-4">
<br/>
{{=LOAD(c='ref',f='create_fvte',args='ref_eregistry',extension='load',ajax=False,ajax_trap=False,target='four')}}
</div><!-- tabs-4 -->
</div><!-- tabs -->
</div><!-- End demo -->
*CONTROLLER*
def creation():
"""
Empty function for make it works the jQuery tabs plugin for ref_*
tables.
"""
a = None
return dict(a=a)
@auth.requires_login()
def create_fvte():
table = request.args(0)#.replace('.load','')
if auth.has_membership(auth.id_group('admin')):
crud.settings.formstyle='divs'
form = crud.create(db[table])
for i in range(0,len(form[0])):
if len(form[0][i][2][0]) > 0:
form[0][i][0].append(SPAN((helpicon(),
SPAN(form[0][i][2][0])),_class='tooltip'))
del(form[0][i][2])
elif auth.has_membership(auth.id_group('technician')):
crud.settings.formstyle='divs'
form = crud.create(db[table])
for i in range(0,len(form[0])):
if len(form[0][i][2][0]) > 0:
form[0][i][0].append(SPAN((helpicon(),
SPAN(form[0][i][2][0])),_class='tooltip'))
del(form[0][i][2])
elif auth.has_membership(auth.id_group('technician_c')):
crud.settings.formstyle='divs'
form = crud.create(db[table])
for i in range(0,len(form[0])):
if len(form[0][i][2][0]) > 0:
form[0][i][0].append(SPAN((helpicon(),
SPAN(form[0][i][2][0])),_class='tooltip'))
del(form[0][i][2])
else:
return dict(form=None)
if form.accepts(request.vars, session):
session.flash = T('form accepted')
if table == 'ref_fnaregistry':
redirect(URL(c='ref', f='creation#tabs-2'))
elif table == 'ref_vregistry':
redirect(URL(c='ref', f='creation#tabs-3'))
elif table == 'ref_tregistry':
redirect(URL(c='ref', f='creation#tabs-4'))
#elif table == 'ref_eregistry':
# redirect(URL(c='ref', f='creation#tabs-2'))
elif form.errors:
response.flash = T('form has errors')
#if table == 'ref_fnaregistry':
# redirect(URL(c='ref', f='creation#tabs-1'))
#elif table == 'ref_vregistry':
# redirect(URL(c='ref', f='creation#tabs-2'))
if table == 'ref_tregistry':
response.write(2)
# redirect(URL(c='ref', f='creation#tabs-3'))
#elif table == 'ref_eregistry':
# redirect(URL(c='ref', f='creation#tabs-4'))
else:
response.flash = T('please fill out the form')
return dict(form=form)
I try to avoid ajax=True,ajax_trap=False option of LOAD() cause they seem to
conflict with the official jQuery UI Tabs plugin (loading pretty slow,
reload after submit with triggered validator even worse and try to load the
entire site before loading only my proper form).
I may not completly understand usage of component...
Thanks to help.
Richard