Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anterior Revisión previa
Próxima revisión
Revisión previa
wiki:2.-desarrollo-app:2.3.-codigo:c.-eventos:start [2018/09/11 13:26] – editor externo 127.0.0.1wiki:2.-desarrollo-app:2.3.-codigo:c.-eventos:start [2024/10/10 13:19] (actual) – [Tabla] ary
Línea 1: Línea 1:
- 
 {{indexmenu_n>1}} {{indexmenu_n>1}}
 ====== Eventos / Reglas de negocio ====== ====== Eventos / Reglas de negocio ======
 /* /*
 {{indexmenu>wiki:2.-desarrollo-app:2.3.-codigo:c.-eventos:#eventos_reglas_de_negocio}} {{indexmenu>wiki:2.-desarrollo-app:2.3.-codigo:c.-eventos:#eventos_reglas_de_negocio}}
-*/+*/ 
 \\ \\
-^Elemento           ^Descripción ^ +^ Elemento                                                                                  ^ Descripción                                                                                                                                          
-| [[wiki:2.-desarrollo-app:2.3.-codigo:c.-eventos:1.-action:start ]]| Nodo donde se expondrán las acciones a realizar en los eventos definidos en nuestra aplicación.  +| [[wiki:2.-desarrollo-app:2.3.-codigo:c.-eventos:1.-action:start]]                         | Nodo donde se expondrán las acciones a realizar en los eventos definidos en nuestra aplicación.                                                      
-| [[wiki:2.-desarrollo-app:2.3.-codigo:c.-eventos:2.-create:start ]]| Nodo en el cual se van a describir las reglas de creación de las colecciones. | +| [[wiki:2.-desarrollo-app:2.3.-codigo:c.-eventos:2.-create:start]]                         | Nodo en el cual se van a describir las reglas de creación de las colecciones.                                                                        
-| [[wiki:2.-desarrollo-app:2.3.-codigo:c.-eventos:3.-insert:start ]]| Nodo en el cual se van a establecer las reglas y acciones de grabación en una colección.| +| [[wiki:2.-desarrollo-app:2.3.-codigo:c.-eventos:3.-insert:start]]                         | Nodo en el cual se van a establecer las reglas y acciones de grabación en una colección.                                                             
-| [[wiki:2.-desarrollo-app:2.3.-codigo:c.-eventos:4.-before-edit:start ]]|Evento ejecutado al ir a editar un objeto, aún no se ha empezado a pintar la pantalla. | +| [[wiki:2.-desarrollo-app:2.3.-codigo:c.-eventos:4.-before-edit:start]]                    | Evento ejecutado al ir a editar un objeto, aún no se ha empezado a pintar la pantalla.                                                               
-| [[wiki:2.-desarrollo-app:2.3.-codigo:c.-eventos:4.5.-after-edit:start|4.5.-after-edit ]]| Evento ejecutado al ir a editar un objeto, una vez que ya está pintado el UI. | +| [[wiki:2.-desarrollo-app:2.3.-codigo:c.-eventos:4.5.-after-edit:start|4.5.-after-edit ]]  | Evento ejecutado al ir a editar un objeto, una vez que ya está pintado el UI.                                                                        
-| [[wiki:2.-desarrollo-app:2.3.-codigo:c.-eventos:5.-onchange:start]]| Nodo en el cual se describen los campos cuyos cambios se quieren monitorear y las acciones que se desea que se ejecuten cuando ocurran los cambios.| +| [[wiki:2.-desarrollo-app:2.3.-codigo:c.-eventos:5.-onchange:start]]                       | Nodo en el cual se describen los campos cuyos cambios se quieren monitorear y las acciones que se desea que se ejecuten cuando ocurran los cambios.  
-| [[wiki:2.-desarrollo-app:2.3.-codigo:c.-eventos:6.-delete:start ]]| Nodo en el cual se van a describir las reglas y acciones de eliminación de las colecciones.| +| [[wiki:2.-desarrollo-app:2.3.-codigo:c.-eventos:6.-delete:start]]                         | Nodo en el cual se van a describir las reglas y acciones de eliminación de las colecciones.                                                          
-| [[wiki:2.-desarrollo-app:2.3.-codigo:c.-eventos:7.-maintenance:start ]]| Nodo para definir mantenimientos en una aplicación.| +| [[wiki:2.-desarrollo-app:2.3.-codigo:c.-eventos:7.-maintenance:start]]                    | Nodo para definir mantenimientos en una aplicación.                                                                                                  
-| [[wiki:2.-desarrollo-app:2.3.-codigo:c.-eventos:8.-selecteditem:start ]]| Nodo que tiene lugar cuando se selecciona una fila de contents. | +| [[wiki:2.-desarrollo-app:2.3.-codigo:c.-eventos:8.-selecteditem:start]]                   | Nodo que tiene lugar cuando se selecciona una fila de contents.                                                                                      
-| [[wiki:2.-desarrollo-app:2.3.-codigo:c.-eventos:9.-onlogon:start ]]| Regla de negocio que tiene lugar cuando entramos en la aplicación. | +| [[wiki:2.-desarrollo-app:2.3.-codigo:c.-eventos:9.-onlogon:start]]                        | Regla de negocio que tiene lugar cuando entramos en la aplicación.                                                                                   
-| [[wiki:2.-desarrollo-app:2.3.-codigo:c.-eventos:10.-onlogoff:start]]|Regla de negocio que tiene lugar cuando vamos a salir de la aplicación. | +| [[wiki:2.-desarrollo-app:2.3.-codigo:c.-eventos:10.-onlogoff:start]]                      | Regla de negocio que tiene lugar cuando vamos a salir de la aplicación.                                                                              
-| [[wiki:2.-desarrollo-app:2.3.-codigo:c.-eventos:11.-onback:start]]| Evento que atiende al botón de volver atrás que ejecuta este nodo. | +| [[wiki:2.-desarrollo-app:2.3.-codigo:c.-eventos:11.-onback:start]]                        | Evento que atiende al botón de volver atrás que ejecuta este nodo.                                                                                   
-| [[wiki:2.-desarrollo-app:2.3.-codigo:c.-eventos:12.-replica-ok:start]]| Nodo que sirve para capturar el evento de réplica de alguna tabla de la base de datos. | +| [[wiki:2.-desarrollo-app:2.3.-codigo:c.-eventos:12.-replica-ok:start]]                    | Nodo que sirve para capturar el evento de réplica de alguna tabla de la base de datos.                                                               
-| [[wiki:2.-desarrollo-app:2.3.-codigo:c.-eventos:13.-auto-selecteditem:start]]| Tiene lugar cuando van pasando automáticamente los “slides” o presentaciones en un contents| +| [[wiki:2.-desarrollo-app:2.3.-codigo:c.-eventos:13.-auto-selecteditem:start]]             | Tiene lugar cuando van pasando automáticamente los “slides” o presentaciones en un contents                                                          
-| [[wiki:2.-desarrollo-app:2.3.-codigo:c.-eventos:14.-reglas-de-negocio:start]]| Explicación de los distintos “eventos” disponibles en XOne para definir las reglas de negocio.  +| [[wiki:2.-desarrollo-app:2.3.-codigo:c.-eventos:14.-reglas-de-negocio:start]]             | Explicación de los distintos “eventos” disponibles en XOne para definir las reglas de negocio.                                                       
-| [[wiki:2.-desarrollo-app:2.3.-codigo:c.-eventos:15.-binding:start]]| <nowiki>Binding</nowiki> +| [[wiki:2.-desarrollo-app:2.3.-codigo:c.-eventos:15.-binding:start]]                       %%Binding%%                                                                                                                                          
-| [[wiki:2.-desarrollo-app:2.3.-codigo:c.-eventos:16-sys-message:start]]| Nodo especial de la colección “Empresas”, para recibir eventos de <nowiki>XOneLive</nowiki> +| [[wiki:2.-desarrollo-app:2.3.-codigo:c.-eventos:16-sys-message:start]]                    | Nodo especial de la colección “Empresas”, para recibir eventos de %%XOneLive%%                                                                     
-| [[wiki:2.-desarrollo-app:2.3.-codigo:c.-eventos:17-notificaciones-push:start]]| Nodo especial de la colección empresas que se lanza cuando se pulsa en una notificación PUSH. | +| [[wiki:2.-desarrollo-app:2.3.-codigo:c.-eventos:17-notificaciones-push:start]]            | Nodo especial de la colección empresas que se lanza cuando se pulsa en una notificación PUSH.                                                        
-| [[wiki:2.-desarrollo-app:2.3.-codigo:c.-eventos:18-onlong-press:start]] |onlong-press.| +| [[wiki:2.-desarrollo-app:2.3.-codigo:c.-eventos:18-onlong-press:start]]                   | onlong-press.                                                                                                                                        
-| [[wiki:2.-desarrollo-app:2.3.-codigo:c.-eventos:19-oneditoraction:start]] | On editor action.| +| [[wiki:2.-desarrollo-app:2.3.-codigo:c.-eventos:19-oneditoraction:start]]                 | On editor action.                                                                                                                                    
-| [[wiki:2.-desarrollo-app:2.3.-codigo:c.-eventos:20.-onmessage:start]] |onMessage.| +| [[wiki:2.-desarrollo-app:2.3.-codigo:c.-eventos:20.-onmessage:start]]                     | onMessage.                                                                                                                                           
-| [[wiki:2.-desarrollo-app:2.3.-codigo:c.-eventos:21.-onrecovery:start]] |onRecovery.| +| [[wiki:2.-desarrollo-app:2.3.-codigo:c.-eventos:21.-onrecovery:start]]                    | onRecovery.                                                                                                                                          
-| [[wiki:2.-desarrollo-app:2.3.-codigo:c.-eventos:22.-after-recovery-login:start]] | after-recovery-login.| +| [[wiki:2.-desarrollo-app:2.3.-codigo:c.-eventos:22.-after-recovery-login:start]]          | after-recovery-login.                                                                                                                                
-| [[wiki:2.-desarrollo-app:2.3.-codigo:c.-eventos:23.-permissions:start]] | permisos de la aplicación| +| [[wiki:2.-desarrollo-app:2.3.-codigo:c.-eventos:23.-permissions:start]]                   | permisos de la aplicación                                                                                                                            
-| [[wiki:2.-desarrollo-app:2.3.-codigo:c.-eventos:24.-ondate-selected:start]] | onDateSelected| +| [[wiki:2.-desarrollo-app:2.3.-codigo:c.-eventos:24.-ondate-selected:start]]               | onDateSelected                                                                                                                                       
-| [[wiki:2.-desarrollo-app:2.3.-codigo:c.-eventos:25.-onpage-selected:start]] | onPageSelected| +| [[wiki:2.-desarrollo-app:2.3.-codigo:c.-eventos:25.-onpage-selected:start]]               | onPageSelected                                                                                                                                       
-| [[wiki:2.-desarrollo-app:2.3.-codigo:c.-eventos:26.-oncelldraw:start]] | onCellDraw| +| [[wiki:2.-desarrollo-app:2.3.-codigo:c.-eventos:26.-oncelldraw:start]]                    | onCellDraw                                                                                                                                           
-| [[wiki:2.-desarrollo-app:2.3.-codigo:c.-eventos:27.-onfocus:start]] | onFocus| +| [[wiki:2.-desarrollo-app:2.3.-codigo:c.-eventos:27.-onfocus:start]]                       | onFocus                                                                                                                                              
-| [[wiki:2.-desarrollo-app:2.3.-codigo:c.-eventos:28.-onlostfocus:start]] | onLostFocus| +| [[wiki:2.-desarrollo-app:2.3.-codigo:c.-eventos:28.-onlostfocus:start]]                   | onLostFocus                                                                                                                                          
-| [[wiki:2.-desarrollo-app:2.3.-codigo:c.-eventos:29.-load:start]] | Nodo que salta por cada registro que se carga en un contents|+| [[wiki:2.-desarrollo-app:2.3.-codigo:c.-eventos:29.-load:start]]                          | Nodo que salta por cada registro que se carga en un contents                                                                                         | 
 +| [[wiki:2.-desarrollo-app:2.3.-codigo:c.-eventos:30.-onTextChanged:start]]                 | onTextChanged                                                                                                                                        | 
 +| [[wiki:2.-desarrollo-app:2.3.-codigo:c.-eventos:31.-onConsolemessage:start]]              | onConsoleMessage                                                                                                                                     | 
 +| [[wiki:2.-desarrollo-app:2.3.-codigo:c.-eventos:32.-onfocuschanged:start]]                | onfocusChanged                                                                                                                                       | 
 +| [[wiki:2.-desarrollo-app:2.3.-codigo:c.-eventos:33.-onclick:start]]                       | onclick                                                                                                                                              | 
 +| [[wiki:2.-desarrollo-app:2.3.-codigo:c.-eventos:34.-ondatashare:start]]                   | ondatashare                                                                                                                                          | 
 +| [[wiki:2.-desarrollo-app:2.3.-codigo:c.-eventos:35-clipboard:start]]                      | Manejo del clipboard o portapapeles en Apps XOne                                                                                                     |
 \\ \\
 <WRAP center round important 60%> <WRAP center round important 60%>
Línea 137: Línea 142:
 ==== Prop type=”T” ==== ==== Prop type=”T” ====
 \\ \\
-^onTextChanged    |keyPressed: Tecla pulsada o todo el texto nuevo introducido de golpe (ej. por copiar y pegar)\\ oldText: Texto antes del cambio\\ newText: Texto ya cambiado |    +^onTextChanged    |<WRAP> 
 +**target**: Propiedad donde se produce el evento.\\  **keyPressed**: Tecla pulsada o todo el texto nuevo introducido de golpe (ej. por copiar y pegar)\\ **oldText**: Texto antes del cambio\\ **newText**: Texto ya cambiado\\ 
 +<code javascript onTextChanged.js> 
 +function eventoOnTextChanged(evento) { 
 + ui.showToast("onTextChanged! target: " + evento.target + "\nObjItem: " + evento.objItem + "\nTecla pulsada: " + evento.keyPressed + "\noldText: " + evento.oldText + "\nnewText: " + evento.newText); 
 +
 +</code> 
 +</WRAP>|    
 ^onTextLengthChanged    |length: Tamaño total del texto |     ^onTextLengthChanged    |length: Tamaño total del texto |    
 ^onFocusChanged    |isFocused: Si tiene focus o no el target |     ^onFocusChanged    |isFocused: Si tiene focus o no el target |    
Línea 171: Línea 183:
  
          
-        + {{indexmenu>:wiki:2.-desarrollo-app:2.3.-codigo:c.-eventos30.-onTextChanged:start}} 
 + 
 +\\ 
 +====== Eventos / Inactividad en aplicaciones XOne ====== 
 +  
 + 
 +\\ 
 +===== Contador de inactividad cuando la app está abierta ===== 
 + 
 +\\ 
 + 
 +Para implementar y lanzar el contador, debe definirse el código en el nodo entryPoint. 
 +\\ 
 +\\ 
 + 
 +\\ 
 +^ Lanzar contador de inactividad  | <code javascript> let inactividad=setInactivityTimer(jsconst_oper.tiempoInactividad); </code> 
 +\\ 
 + 
 + 
 +/** 
 + * Valores de retorno del callback 
 + * 0: Cerrar la app 
 + * 1: Volver al entry-point o appwizard 
 + * 2: Logout y volver a la pantalla de login 
 + * 3: No hacer nada. Este timer se cancela, y se debe volver a lanzar 
 + * ui.setInactivityTimer() si fuera necesario 
 + * 
 + * Este script siempre debe devolver uno de estos valores en todos los caminos. 
 + */ 
 +<code javascript> 
 +function setInactivityTimer(nValue) { 
 +    // Tiempo en milisegundos que lleva la app inactiva 
 +    ui.setInactivityTimer({ 
 +        timeout         : nValue, 
 +        callback        : function() { 
 +            // ui.showToast("Se ha superado el tiempo de inactividad"); 
 +             
 +            //Si la ventana LoginColl_Inactivity está activa, no se vuelve a lanzar 
 +            var objVisible=getLoginInStack(); 
 +            if (isNothing(objVisible)){ 
 +                let coll=appData.getCollection("LoginColl_Inactivity"); 
 +                let objCrear=coll.createObject(); 
 +                ui.openEditView(objCrear); 
 +            } 
 +            return 3; 
 +             
 +        } 
 +    }); 
 +
 +</code> 
 +\\ 
 +**Función que retorna los objetos activos de la aplicación** 
 +\\ 
 +<code javascript> 
 +function getLoginInStack(){ 
 +    try { 
 +        var objViewInStack=null; 
 +        var stackWindow=ui.getViewStack(); 
 +        var ststack=""; 
 +        var countStack=stackWindow.length; 
 +        var i=0; 
 +        var bOK=false; 
 +        while ((i <= countStack-1) && (!bOK)) { 
 +            bOK=isLoginColl(getViewCollName(stackWindow[i])); 
 +            if (bOK){ 
 +                objViewInStack=getObjView(stackWindow[i]); 
 +            } 
 +            i++; 
 +        } 
 +        return objViewInStack; 
 +    }catch (e) { 
 +        let sterror=e.message; 
 +        writelogExceptionJSv2(" getLoginInStack. ERROR: "+sterror,"funciones.js",false); 
 +        return null; 
 +    }       
 +     
 +
 +</code> 
 +\\ 
 +**Función para buscar si la coll LoginColl_Inactivity está activa** 
 +\\ 
 +<code javascript> 
 +function isLoginColl(stCollname){ 
 +    try { 
 +        var stcollsaviso="LoginColl_Inactivity"; 
 +        var posicion= stcollsaviso.search(stCollname); 
 +        let bOK=false; 
 +        if (posicion>=0){ 
 +            bOK=true; 
 +        } 
 +        return bOK; 
 +    }catch (e) { 
 +        let sterror=e.message; 
 +        writelogExceptionJSv2(" isLoginColl. ERROR: "+sterror,"funciones.js",false); 
 +        return false; 
 +    }   
 +
 +</code> 
 +\\ 
 +\\ 
 +===== Eventos para ocultar la app de primer plano y volver a primer plano ===== 
 + 
 +\\ 
 +^ on-app-foreground  | Este es el evento que se ejecuta cuando la app vuelve a primer plano  | 
 +\\ 
 +<code javascript> 
 +<!-- Evento que se ejecuta cuando la app vuelve a primer plano --> 
 +    <on-app-foreground refresh="false" show-wait-dialog="false"> 
 +        <action name="runscript"> 
 +            <script> 
 +                // Tiempo en milisegundos que lleva la app inactiva 
 +                let nTime = ui.getInactivityTime(); 
 +                // ui.showToast("Inactivity time: " + nTime); 
 +                 
 +                if (nTime>=jsconst_oper.tiempoInactividad) 
 +                { 
 +                    //Si la ventana LoginColl_Inactivity está activa, no se vuelve a lanzar 
 +                    var objVisible=getLoginInStack(); 
 +                    if (isNothing(objVisible)){ 
 +                        let coll=appData.getCollection("LoginColl_Inactivity"); 
 +                        let objCrear=coll.createObject(); 
 +                        ui.openEditView(objCrear); 
 +                    } 
 +                } 
 +                 
 +                //Lanzar el contador de inactividad cuando la app vuelve a primer plano 
 +                let inactividad=setInactivityTimer(jsconst_oper.tiempoInactividad); 
 +                 
 +            </script> 
 +        </action> 
 +    </on-app-foreground> 
 + </code>  
 +\\ 
 +===== Evento que se ejecuta cuando la app pasa a segundo plano ===== 
 +\\ 
 +^ on-app-background  | Este es el evento que se ejecuta cuando la app pasa a segundo plano | 
 +\\ 
 +<code javascript>     
 +    <!-- Evento que se ejecuta cuando la app pasa a segundo plano --> 
 +    <on-app-background refresh="false" show-wait-dialog="false"> 
 +        <action name="runscript"> 
 +            <script> 
 +                // ui.showToast("on-app-background invocado"); 
 +                 
 +                //Quitar el contador de inactividad cuando la app pasa a segundo plano 
 +                ui.removeInactivityTimer(); 
 +            </script> 
 +        </action> 
 +    </on-app-background> 
 + </code>  
 + 
 +\\ 
 +===== Inactividad Ventana Login ===== 
 +\\ 
 +^ Ventana Login Coll Inactiva  | Se crea colección "LoginColl_Inactivity" donde en llamada a función %%LoginWithLDAP%%, si el login es correcto, se vuelve a lanzar el setInactivityTimer() 
 +\\ 
 +<code html> 
 +<coll name="LoginColl_Inactivity" special="true" notab="true"> 
 +    <group name="Login" id="1">  
 +        <frame name="frmGeneral_2" imgbk="background_login.png" width="100%" height="100%" align="top|left"> 
 +            <frame name="frmContenido_1" width="80%" height="40%" tmargin="40%" lmargin="10%" align="top|center" bgcolor="#00000000"> 
 +                <prop name="MAP_BTUSUARIO" type="B" img="login.png" xwidth="60p" height="70p" keep-aspect-ratio="true" tmargin="70p" locked="true" /> 
 +                <prop name="MAP_USUARIO" type="T" oneditoraction="javascript:oneditoraction(self,0,'MAP_CONTRASENNA');" lines="1" lpadding="110p" lmargin="-80p" tooltip="Expediente de usuario" class="font5 border-only-bottom tooltip-color-green font-regular" text-forecolor="#cfcfcf" height="200p" width="80%" floating-tooltip="true" visible="1" newline="false" updates="MAP_USUARIO_LDAP" locked="true"/> 
 +                 
 +                <prop name="MAP_BTCONTRASENNA" type="B" img="pwd.png" xwidth="60p" height="70p" keep-aspect-ratio="true" tmargin="70p" /> 
 +                <prop name="MAP_CONTRASENNA" type="X" oneditoraction="javascript:oneditoraction(self,1,'MAP_MESSAGE_ERROR_LOGIN');" lines="1" xtmargin="50p" lpadding="110p" lmargin="-80p" tooltip="Clave" class="font5 border-only-bottom tooltip-color-green text-color-black font-regular" height="200p" width="80%" floating-tooltip="true" visible="1" newline="false" updates="MAP_PWD" /> 
 +                <prop name="MAP_MESSAGE_ERROR_LOGIN" locked="true" type="T" visible="1" class="font4 no-border text-color-red no-labelwidth font-regular" tmargin="30p" height="-2" width="80%" /> 
 +                 
 +                <prop name="MAP_BT_INICIAR_SESION_REAL" method="executenode(login)" type="B" title="Entrar" bgcolor="#93B359" height="15%" width="90%" border-corner-radius="50" align="center" class="font7 no-border color-white font-regular" visible="1" tmargin="20p" /> 
 +                <!--<prop name="MAP_BT_INICIAR_SESION_SALIR" method="executenode(onback)" type="B" title="Salir" bgcolor="#93B359" height="15%" width="90%" border-corner-radius="50" align="center" class="font7 no-border color-white font-regular" visible="1" tmargin="20p" />--> 
 +            </frame> 
 +             
 +            <frame name="frmContenido_2" bgcolor="#00000000" align="center" width="100%" height="5%" framebox="false" tmargin="12%"> 
 +                <prop name="MAP_VERSION" visible="1" type="T" locked="true" text-forecolor-disabled="#CECECE" text-border="false" labelwidth="0" width="100%" height="50%" text-align="left|center" fontsize="2" lpadding="100p" fontname="Nunito-Italic" /> 
 +                <prop name="MAP_FRAMEWORKVERSION" visible="1" type="T" locked="true" text-forecolor-disabled="#CECECE" text-border="false" labelwidth="0" width="100%" height="50%" text-align="left|center" fontsize="2" lpadding="100p" fontname="Nunito-Italic" /> 
 +            </frame> 
 +            <prop name="MAP_PWD" type="X" visible="0" hash-type="SHA256" encode="HEX" /> 
 +            <prop name="MAP_USUARIO_LDAP" type="X" visible="0" hash-type="SHA256" encode="HEX" /> 
 +             
 +        </frame>  
 +    </group> 
 + 
 + 
 +    <after-edit refresh="false" show-wait-dialog="false"> 
 +        <action name="runscript"> 
 +            <script language="javascript"> 
 +                self.MAP_VERSION="Aplicación: " + appData.getGlobalMacro("##VERSION##") + "     MID="+replica.getMid(); 
 +                self.MAP_FRAMEWORKVERSION = "Framework: " + appData.getGlobalMacro("##FRAME_VERSION##") + "     IMEI: "+appData.getGlobalMacro("##DEVICEID##"); 
 +                 
 +                ui.refresh("MAP_USUARIO","MAP_VERSION","MAP_FRAMEWORKVERSION","MAP_CONTRASENNA"); 
 +            </script> 
 +        </action> 
 +    </after-edit> 
 + 
 + 
 +    <login refresh="false" show-wait-dialog="false"> 
 +        <action name="runscript"> 
 +            <script language="javascript"> 
 +                ui.showWaitDialog("Entrando..."); 
 +                 
 +                if(jsconst_oper.loginWithLDAP){ 
 +                    //loginOnline 
 +                    // ui.showToast("Entra aqui"); 
 +                    LoginWithLDAP(self,self.MAP_USUARIO,self.MAP_CONTRASENNA,1); 
 +                }else{ 
 +                    // ui.showToast("Entra aqui 2"); 
 +                    comprobarLoginLocal(self,1); 
 +                } 
 + 
 +            </script> 
 +        </action> 
 +    </login> 
 + 
 + 
 +    <onback refresh="false" show-wait-dialog="false"> 
 +        <action name="runscript"> 
 +            <script language="javascript"> 
 +                   
 +            </script> 
 +        </action> 
 +    </onback> 
 +     
 + 
 +</code>