Páginas

viernes, 14 de octubre de 2011

Web2py ejemplo, trabajo con popup

En este ejemplo vamos a crear una ventana emergente desde la cual insertaremos datos y los mismos se mostrarán en la ventana padre sin refrescar la página, también desde la ventana emergente crearemos una segunda ventana emergente y repetiremos la operación pero esta vez los datos se mostrarán en la primera ventana emergente.

en el modelo.............................

db.define_table('usuario', 
   Field('usuario',))
  
db.define_table('tabla', 
   Field('numero',))


en la controladora.............................

def index():  
    return dict()
   
def formulario():
    form = FORM(INPUT(_name='name',_id='name',requires=IS_NOT_EMPTY()),INPUT(_type='submit'))
   
    close = ' '
   
    if form.accepts(request.vars,session):
        db.usuario.insert(usuario = request.vars.name)       
        close = XML('<script type="text/javascript">$(document).ready(function() { window.opener.cierra() ;});</script>')

    return dict(form=form,close=close)
   
def formulario2():
    form = FORM(INPUT(_name='name',_id='name',requires= IS_INT_IN_RANGE(0, 9)),INPUT(_type='submit'))
   
    close = ' '
   
    if form.accepts(request.vars,session):
        db.tabla.insert(numero = request.vars.name)       
        close = XML('<script type="text/javascript">$(document).ready(function() { window.opener.cierra() ;});</script>')

    return dict(form=form,close=close)    
   
def listausuarios(): 
    listado = []  
    for elem in db(db.usuario).select():      
        listado.append(elem.usuario + "<br/>")
    return listado
   
def listanumeros(): 
    listado = []  
    for elem in db(db.tabla).select():  
        listado.append(elem.numero + "<br/>")
    return listado

en la vista................................................................



index.html.......................

<input type='button' value='añadir' class='link' onclick="abreVentana()" >
<br/><br/>

<div id='target'> </div>

<script>
var miPopup

 $(document).ready(function(){
     cargarLista();

});


function abreVentana(){
    miPopup = window.open("{{=URL(r=request, f='formulario')}}","miwin","width=500,height=400,scrollbars=yes")
    miPopup.focus()
}


function cierra()
{
 cargarLista();
 miPopup.close();
}

function cargarLista(){
$('#target').load('listausuarios');


</script>



formulario.html........................

{{=close}}

{{=form}}<br/>

<div style='margin-left:1%'>
<input type='button' value='añadir' class='link' onclick="abreVentana()" >
<br/><br/>



<div id='target'> </div>

</div>
<script>
var miPopup2

 $(document).ready(function(){
     cargarLista();

});


function abreVentana(){
    miPopup2 = window.open("{{=URL(r=request, f='formulario2')}}","miwin2","width=500,height=400,")
    miPopup2.focus()
}


function cierra()
{
 cargarLista();
 miPopup2.close();
}

function cargarLista(){
$('#target').load('listanumeros');


</script>


formulario2.html........................
{{=close}}
{{=form}}