me gusta la idea de tener pestañas en mis diseños.
y no quiero hacerlas todas a mano.
entonces cree varios script que me facilitan el trabajo:
en layout.html:
<!-- mas o menos a nivel de head -->
{{ pestania = response.pestania}}
{{if pestania:}}
<script type="text/javascript"><!-- inicio SCRIPT PESTANIA -->
//-----------------------------
$(document).ready(function(){
var pestania = $('.pestania');
var marco_default = $('#marco_default'); // donde se cargaran los
contenido mediante ajax
var enlace = $('a');
enlace.click(function(){
var url = $(this).attr('href');
var rel = $(this).attr('rel');
var css = $(this).parent().attr('class'); // leo la propiedad css
del contenedor del enlace
var retorno = false // detiene el evento del enlace, para cagar
mediante ajax .
if (rel =='marco'){
ajax(url+'?marco=true', {},'marco_default');
}else{
retorno = true // carga el enlace de forma habitual;
}
if (css == 'pestania'){
pestania.removeClass('pestania_on');
$(this).parent().addClass('pestania_on');
}
return retorno;
}); // enlace
{{actual = request.function}}
{{if actual in pestania:}}
$('#pestania_{{=request.function}}').addClass('pestania_on');
{{else:}}
$('#pestania_index').addClass('pestania_on');
{{pass}}
});
</script> <!-- FIN SCRIPT PESTANIA -->
{{pass #if pestania}}
<!-- ----------------------------------------------------- -->
..
..
.. otro html
..
..
<!-- dentro de body y encima de <div class="marco"
id="marco_default">{{include}}</div> -->
{{if pestania:}}
{{for pest in pestania:}}
<div class="pestania" id="pestania_{{=pest}}">
<a href="{{=URL(request.application, request.controller,
pest)}}" rel="marco">
{{=pestania[pest]}}
</a>
</div>
{{pass #for}}
{{pass #pestania}}
de esta forma creo las pestañas
en controllers/default.py
response.pestania = {'index':'Entorno', 'msn':'Mensajes'}
def index():
titulo = 'inicio'
return dict(titulo=titulo)
def msn():
titulo = 'mensajes personales'
return dict(titulo=titulo)
# fin de default.py
todas las view empiezan con:
{{if request.vars.marco !='true':}}
{{extend 'layout.html'}}
{{pass}}
a mi este código me resulta..
todo va bien.. pueden ver como queda en: http://imgur.com/OmT2h.png (me
disculpan el pulso jajaja)
pero quiero eliminar código de layout
me pregunta:
como trasformo todo eso que hago en una función al estilo de MENU() ???
lo intente creando un modulo que tenia:
/modules/modulo_1.py:
def PESTANIA(dupla):
blas, blas, blas
return html
y dentro de los controller lo importo con local_import
pero se me complico la existencia.. en layout no se veia la función
y otra cosa uno usa la función MENU donde una quiera sin necesidad de
importa nada
quiero eso, crear funciones propias que puedan ejecutarse como MENU(),
DIV(), URL(), etcccccc
--
Díaz Luis
TSU Analisis de Sistemas
Universidad de Carabobo