Documentación GVHIDRA 3.1.5
Referencia del Archivo function.CWBoton.php

Ir al código fuente de este archivo.

Funciones

 smarty_function_CWBoton ($params, &$smarty)

Documentación de las funciones

smarty_function_CWBoton ( params,
&$  smarty 
)

BUSCAR ///

GUARDAR/SUBMIT ///

SALTAR/VOLVER ///

LISTAR ///

PARTICULARIZAR/PARTICULAR ///

CANCELAR ///

CANCELARVS ///

ACEPTARVS ///

Definición en la línea 34 del archivo function.CWBoton.php.

                                                     {

        $igepSmarty = new IgepSmarty();
        
        /* VALORES DE LA PILA */
        $punteroPilaPadre = count($smarty->_tag_stack) - 1;
        $punteroPilaAbuelo = $punteroPilaPadre -1;
        $CWAbuelo = $smarty->_tag_stack[$punteroPilaAbuelo][0];
        $tipoComprobacion = $smarty->_tag_stack[$punteroPilaAbuelo][1]['tipoComprobacion'];
        $idPanel = $smarty->_tag_stack[$punteroPilaAbuelo][1]['id'];
        $claseManejadora = $smarty->_tag_stack[$punteroPilaAbuelo][1]['claseManejadora'];

        /* Parámetros */
        //Que estemos en un panel tres modos en el modo edi.
        //Este último caso sólo se da cuando en el Panel el parametro accion esta activo.
        // ['insertar','modificar','borrar'] --> tendrá valor cuando nos encontremos en tres modos, en el panel edi
        //resumen, si accionActiva es != de '' es que estamos en un tres modos
        $accionActiva = $smarty->_tag_stack[$punteroPilaAbuelo][1]['accion'];
        
        //Se establece un estilo por defecto para este componente especificamente en caso de no tener ninguna especificada
        if ($params['class']) 
        {
                $class = $params['class'];
        }
        else
        {
                $class = "formularios boton";
        }
        
        // Imagen del botón
        if ($params['imagen'])
        {
                $ruta = IMG_PATH_CUSTOM."acciones/".$params['imagen'].".gif";
        }
        else
        {
                $ruta = '';
        }
        
        // Texto alternativo de la imagen
        if ($params['texto']) {
                $texto = $params['texto'];
        } else {
                $texto = '';
        }

        // Función añadida a la de por defecto que tenga el botón
        $funcion = '';
        if (isset ($params['funcion'])) {
                $funcion = $params['funcion'];
        }

        // Acción indica el tipo de botón ['guardar','cancelar'....]
        if ($params['accion']) {
                $accion = $params['accion'];
        } else {
                $accion = '';
        }

        // Id del Botón para referenciarlo
        $id = null;
        if ($params['id']) {
                $id = $params['id'];
        }       

        
        //Opciones para establecer la visibilidad "inicial"
        //Si el parámetro visible está fijado, debe prevalecer
        //sobre el comportamiento del patrón. En otro caso (no fijado)
        //será la lógica de l patrón la que decida al repecto
        $forzarVisibilidad = false; //Por defecto manda el Framework
        $visibilidad = 'none'; //Por defecto el botón  es invisible
        if (isset($params['visible']))
        {
                $forzarVisibilidad = true;
                if (
                        (strtolower(trim($params['visible'])) == 'false')
                        || (strtolower(trim($params['visible'])) == 'falso')
                        || (strtolower(trim($params['visible'])) == 'no')
                        || (strtolower(trim($params['visible'])) == 'oculto')
                        || (strtolower(trim($params['visible'])) == 'invisible')
                        || ($params['visible'] === false)
                )
                {
                        $visibilidad = 'none';
                }
                else
                {
                        $visibilidad = 'inline';
                }
        }//Fin visible
        
        $confirm = '';
        $codigo = $params['confirm'];
        if (isset($codigo) && (trim($codigo)) != '')
        {
                $mensaje = new IgepMensaje($codigo);
                $tipo =  $mensaje->getTipo();   
                $codError =  $mensaje->getCodigo();
                $descBreve = $mensaje->getDescripcionCorta();   
                $textoAviso = $mensaje->getDescripcionLarga();
                                 
                $confirm .= "confirm.set('confirm','capaAviso',";
                $confirm .= "'".$tipo."',";
                $confirm .= "'".$codError."',";
                $confirm .= "desescapeIGEPjs('".$descBreve."'),";
                $confirm .= "desescapeIGEPjs('".$textoAviso."'),'No','Si',this.form.name);";
                $confirm .= "confirm.mostrarAviso();\n";                
        }
        
        //  ESTABLECEMOS EL action QUE HA DE EJECUTAR EL FORMULARIO
        $actionForm = '';
        $actionFormPanel = $smarty->_tag_stack[$punteroPilaAbuelo][1]['action'];
        if (isset($params['action'])) 
        {
                if (strpos($params['action'], '__')) //Se Incluye la clase Manejadora?
                {
                        $actionForm = $params['action'];
                } 
                else 
                {
                        $actionForm = $claseManejadora.'__'.$params['action'];
                        // Existe el parámetro action en la tpl por lo q hay q cambiarlo para el formulario                     
                }
        } 
        elseif ($actionFormPanel != '') 
        {       //Si tiene action el panel
                $actionForm = $claseManejadora.'__'.$actionFormPanel;
        }
        else
        {       
                //Sino la accion activa
                $actionForm = $claseManejadora.'__'.$smarty->_tag_stack[$punteroPilaAbuelo][1]['accion'];
        }//Fin parametro action
        
        // Parámetros necesarios para el botón Cancelar de 
        // una ventana y para una ventana de selección
        if ($params['formActua']) 
                $formActua = $params['formActua'];
        
        // Parámetros solo para la ventana de selección 
        if (isset ($params['filaActual']))
                $filaActual = $params['filaActual'];
                
        if ($params['panelActua'])
                $panelActua = $params['panelActua'];
                
        if ($params['actuaSobre'])
                $actuaSobre = $params['actuaSobre'];

        //PRUEBA INESTABLE BORRAME
        //Mensajito de cargando para búsquedas largas... se plantea como
        //parámetro para el CWBoton, aunque podríamos usar un "prebuscar"
        //Y usar un aviso normal...
        $mostrarEspera = false;
        if (
                (!empty($params['mostrarEspera']))
                ) 
        {
                $mostrarEspera = true;
                if(
                        (strtolower(trim($params['mostrarEspera'])) == 'true')
                        || (strtolower(trim($params['mostrarEspera'])) == 'cierto')
                        || (strtolower(trim($params['mostrarEspera'])) == 'si')         
                        || ($params['mostrarEspera'] === true)
                )
                        $textoMostrarEspera = 'Cargando';
                else
                        $textoMostrarEspera = $params['mostrarEspera'];
        }
        
        //mostrarEspera 
                
        // CODIGO NECESARIO PARA CADA COMPONENTE //
        // Primero defino el nombre del componente.
        $n_comp = "CWBoton";
        // Incrementamos  el número de componentes CWBoton
        $num = $smarty->igepPlugin->registrarInstancia($n_comp);

        if ($params['name'])
        {
                $nombre = $params['name'];
        } else {
                $nombre = $n_comp.$num;
        }
        // FIN CODIGO NECESARIO DE CADA COMPONENTE //
        
        // Vector los campos a comprobar (obligatorio, tipo ['numérico','caracter','nif','fecha'])

        $script = '';
        $accion = strtolower($accion);
        $ejecutarForm = '';
        $finFuncion = "";

    // Comprobación de campos cuando es un botón diferente de "Cancelar"
        if (
                ($tipoComprobacion != '')
                && ($accion != 'cancelar')
                && ($tipoComprobacion != 'cambioFoco')
                && (($tipoComprobacion == 'envio') || ($tipoComprobacion == 'todo'))
        )
        {
                $finFuncion .= "}";
                $funcion .= "if (".$idPanel."_comp.comprobarObligatorios(this.form) == false) {";
                $funcion .= "campos = ".$idPanel."_comp.getCamposErroneos();";
                $funcion .= "error = 'Debe introducir un valor en los campos: '+campos;";
                $funcion .= "aviso.set('aviso','capaAviso','aviso','IGEP-901','Faltan campos por rellenar',error);";
                $funcion .= "aviso.mostrarAviso();";
                $funcion .= "}";
                $funcion .= "else {";
                $funcion .= $confirm;
        }
                
        // RESULTADO EN UNA VENTANA DIFERENTE
        $openWindow = false;
        if (($params['openWindow'] == true) || ($params['openWindow'] == 'true') || ($accion == 'listar')) 
        {
                $openWindow = true;
                $smarty->igepPlugin->registrarInclusionJS('window.js');
                $funcion .= "Open_Vtna('igep/blanco.htm','ventana',700,500,'no','no','no','no','yes','yes');\n";
                $funcion .= "this.form.target = 'ventana';\n";
        }
        
        $funcion .= "this.form.action='phrame.php?action=".$actionForm."';";    
        if ($mostrarEspera == true) {
                $funcion .= "aviso.mostrarMensajeCargando('".$textoMostrarEspera."');";
        }
        // ACCIÓN QUE REALIZARÁ EL BOTÓN        //
        // la acción irá siempre en minusculas  //
        
        $accion = strtolower($accion);  
        switch ($accion) 
        {
                case 'buscar' :         
                        if ($confirm == '')
                        {
                                $funcion .= "this.form.target='oculto';";
                                $funcion .= "this.form.submit();";
                        }
                        $funcion .= $finFuncion;
                        if (!$forzarVisibilidad) $visibilidad = 'inline'; //Accion por defecto según patrón
                break;
                case 'guardar' :
                case 'submit' :
                        if ($openWindow == false) // Si no se abre ventana se ejecuta por el oculto
                                $funcion .= "this.form.target='oculto';";
                        if ($confirm == '')
                                $funcion .= "this.form.submit();";
                        $funcion .= $finFuncion;
                        //Si estamos en tres modos y NO se fuerza la visibilidad, el boton debe ser visible
                        if ((trim($accionActiva) != '') && !($forzarVisibilidad) )//si tabular-registro (3 modos)...
                        {
                                $visibilidad = 'inline';
                        }
                        else if (!$forzarVisibilidad) $visibilidad = 'none'; //Si no estamos en tres modos y la visibilidad NO está forzada
                break;                  
                case 'saltar' :
                case 'volver' :
                        if ($accion == 'saltar')
                                $action = 'IgepSaltoVentana';
                        else
                                $action = 'IgepRegresoVentana';
                        if ($confirm == '')
                        {
                                $funcion = "this.form.action='phrame.php?action=".$action."&idBotonSalto=".$id."';";
                                $funcion .= "this.form.target='oculto';";
                                $funcion .= "this.form.submit();";
                        }
                        else
                        {
                                $action = "phrame.php?action=".$action."&idBotonSalto=".$id;
                                $confirm = "confirm.set('confirm','capaAviso',";
                                $confirm .= "'".$tipo."',";
                                $confirm .= "'".$codError."',";
                                $confirm .= "desescapeIGEPjs('".$descBreve."'),";
                                // Necesitamos pasar el action del destino
                                $confirm .= "desescapeIGEPjs('".$textoAviso."'),'No','Si',this.form.name,'".$action."');";
                                $confirm .= "confirm.mostrarAviso();\n";
                        }
                        if (!$forzarVisibilidad) $visibilidad = 'inline'; //Accion por defecto según patrón
                break;
                case 'listar' :
                        if ($confirm == '')
                                $funcion .= "this.form.submit();";
                        $funcion .= $finFuncion;
                        if (!$forzarVisibilidad) $visibilidad = 'inline'; //Accion por defecto según patrón
                break;
                case 'particularizar' :
                case 'particular' :
                        $funcion .= "this.form.target='oculto';";
                        if(!isset($params['confirm']))
                                $funcion .= "this.form.submit();";
                        $funcion .= $finFuncion;
                        $oculto = '';
                        if (!$forzarVisibilidad) $visibilidad = 'inline'; //Accion por defecto según patrón
                break;
                case 'cancelar':
                        // El botón cancelar lleva su propio action
                        if ($params['action'])
                        {
                                // Si ese action es "refrescar" se realizará un reload de la pantalla
                                if ($params['action'] == 'refrescar')
                                {
                                        $funcion = $idPanel."_comp.bloquearSalida(false);";
                                        $funcion .= "this.form.reset();";
                                        $funcion .="window.location.reload();";                                 
                                }
                                else
                                {
                                        // Ejecuta el action que ha indicado el programador en la tpl
                                        $funcion .= $idPanel."_comp.bloquearSalida(false);";
                                        $funcion .= "this.form.target='oculto';this.form.submit();";
                                }
                        }
                        else
                        {
                                if (trim($accionActiva) != '')
                                {
                                        // Estamos en un caso de 3 modos
                                        $funcion = "this.form.action='phrame.php?action=".$claseManejadora."__cancelarEdicion';";
                                        $funcion .= "this.form.target='oculto';this.form.submit();";
                                }
                                else
                                {
                                        // Recargar para el caso del maestro/detalle, tabla o ficha
                                        $funcion = $idPanel."_comp.bloquearSalida(false);";
                                        $funcion .= "fo = document.getElementById('oculto');";
                                        $funcion .= "if (fo.src.indexOf('?') == -1)";
                                        $funcion .= "fo.src = fo.src+'?cancelado'; ";
                                        $funcion .= "else fo.src = fo.src+'&cancelado'; ";
                                        $funcion .= "this.form.reset();";
                                        $funcion .= "setTimeout('window.top.location.reload(true)', 220);";
                                }
                        }
                        $funcion .= $finFuncion;
                        if ((trim($accionActiva) != '') && !($forzarVisibilidad) )//si tabular-registro (3 modos)...
                        {
                                $visibilidad = 'inline';
                        }
                        else if (!$forzarVisibilidad) $visibilidad = 'none'; //Si no estamos en tres modos y la visibilidad NO está forzada
                break;
                case 'cancelarvs' :
                        $funcion .= "aceptarCancelarSeleccion('cancelar',this.form.actionOrigen.value,this.form,'','','".$formActua."','')";
                        $funcion .= $finFuncion;
                        $visibilidad = 'inline'; //Si el botón debe o no debe visualizarse
                break;
                case 'aceptarvs' :
                        if (isset ($filaActual) && isset ($panelActua) && isset ($formActua) && (count($actuaSobre) > 0)) 
                        {
                                $funcion .= "aceptarCancelarSeleccion('aceptar',this.form.actionOrigen.value,this.form,'".$filaActual."','".$panelActua."','".$formActua."'";
                                $fieldsTPL = $actuaSobre['fieldsTPL'];
                                if (count($fieldsTPL) > 0)
                                        $funcion .= ",[";
                                for ($i = 0; $i < count($fieldsTPL); $i ++) 
                                {
                                        $funcion .= "'".$fieldsTPL[$i]."'";
                                        if ($i == (count($fieldsTPL) - 1)) 
                                        {
                                                $funcion .= "],";
                                        } //if
                                        else 
                                        {
                                                $funcion .= ",";
                                        } //else                                        
                                } //for
                                $fieldsSource = $actuaSobre['fieldsSource'];
                                if (count($fieldsSource) > 0)
                                        $funcion .= "[";
                                for ($i = 0; $i < count($fieldsSource); $i ++) 
                                {
                                        $funcion .= "'".$fieldsSource[$i]."'";
                                        if ($i == (count($fieldsSource) - 1)) 
                                        {
                                                $funcion .= "]";
                                        } //if
                                        else 
                                        {
                                                $funcion .= ",";
                                        } //else                                        
                                } //for                         
                                $funcion .= ");\n";
                        } //if
                        else 
                        {
                                //REVIEW: incluir capa de aviso en ventana selección
                                //$funcion .= "aviso.set('error','capaAviso','aviso','E/S IU','Tienes que realizar una búsqueda','La accion a realizar es necesariamente una búsqueda');";
                                //$funcion .= "aviso.mostrarAviso();";                                  
                                $funcion .= "alert('Tienes que realizar una búsqueda.')\n";
                        }
                        $funcion .= $finFuncion;
                        $visibilidad = 'inline'; //Si el boton debe o no debe visualizarse
                break;
        }//Fin Switch

        //Identificador del boton en el form, ej. "bnfil_buscar" ej "bncalculo_particular"
        if ($id == null)
                $id = 'bn'.$smarty->_tag_stack[$punteroPilaAbuelo][1]['id'].'_'.$accion;
        else
                $id = 'bn'.$id.'_'.$accion.$smarty->_tag_stack[$punteroPilaAbuelo][1]['id'];

        $boton .= "\n<button style='cursor:pointer; display:".$visibilidad."; ' id='".$id."' name='".$id."' type='button' class=".$class." onmouseover=\"this.className='".$class."_on';\" onmouseout=\"this.className='".$class."';\" onClick=\"javascript:".$funcion."\">\n";
        
    if($ruta!='')
        $boton .= "<img src='$ruta' style='border-style:none;' alt='$texto' title='$texto' />$texto \n";
    else
        $boton .= "<img src='$ruta' style='border-style:none;' alt='$texto' title='$texto' /> \n";
        $boton .= "</button>\n";

        return ($script.$boton);
}