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

Reply via email to