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

Ir al código fuente de este archivo.

Funciones

 smarty_function_CWBotonTooltip ($params, &$smarty)

Documentación de las funciones

smarty_function_CWBotonTooltip ( params,
&$  smarty 
)

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

{

        $igepSmarty = new IgepSmarty();         
        
        $smarty->igepPlugin->registrarInclusionJS('objBotonToolTip.js');
        
        // LECTURA DE VALORES DE LA PILA //
        //Puntero a la pila de etiquetas que contiene a CWFila 
        $punteroPilaPadre = count($smarty->_tag_stack)-1;
        $CWPadre = $smarty->_tag_stack[$punteroPilaPadre][0];
        //Puntero a la etiqueta Abuelo
        $punteroPilaAbuelo = $punteroPilaPadre - 1;
        $CWAbuelo = $smarty->_tag_stack[$punteroPilaAbuelo][0];

        if (($CWPadre == 'CWSelector') && ($CWAbuelo == 'CWSolapa'))//Si el padre es un CWSolapa, tenemos que movernos uno más arriba, pq pasamos de el
        {               
                $punteroPilaPadre = count($smarty->_tag_stack)-3;
                $CWPadre = $smarty->_tag_stack[$punteroPilaPadre][0];
                $punteroPilaAbuelo = $punteroPilaPadre - 1;
                $CWAbuelo = $smarty->_tag_stack[$punteroPilaAbuelo][0];
        }

        if (($CWPadre == 'CWSelector') || ($CWPadre == 'CWSolapa'))//Si el padre es un CWSolapa, tenemos que movernos uno más arriba, pq pasamos de el
        {               
                $punteroPilaPadre = count($smarty->_tag_stack)-2;
                $CWPadre = $smarty->_tag_stack[$punteroPilaPadre][0];
                $punteroPilaAbuelo = $punteroPilaPadre - 1;
                $CWAbuelo = $smarty->_tag_stack[$punteroPilaAbuelo][0];
        }
        
        $punteroPilaPanel = $punteroPilaAbuelo - 2; // CWPanel - CWContenedor - CWFichaEdicion - CWFicha - (CWSolapa) - (CWSelector)
        $CWPanel = $smarty->_tag_stack[$punteroPilaPanel][0];
        $idPanel = $smarty->_tag_stack[$punteroPilaPanel][1]['id'];
        $idAbuelo = $smarty->_tag_stack[$punteroPilaAbuelo][1]['id'];
        $iterActual = $smarty->_tag_stack[$punteroPilaPadre][2];
        
        //inicialización de variables
        $nomForm = '';
        if  ($CWAbuelo == 'CWPanel')
        {
                $nomForm = 'F_'.$idAbuelo;  // Nombre del formulario
                $idPanel = $idAbuelo;
        }
        // Ampliación para poder tener botones tooltip con 'action' dentro de las fichas
        elseif ($CWAbuelo == 'CWFichaEdicion')
        {
                $punteroPilaBisAbuelo = $punteroPilaAbuelo - 1;
                $punteroPilaTaAbuelo = $punteroPilaBisAbuelo - 1;               
                $idTaAbuelo = $smarty->_tag_stack[$punteroPilaTaAbuelo][1]['id'];
                $nomForm = 'F_'.$idTaAbuelo;  // Nombre del formulario
                $idPanel = $idTaAbuelo; 
        }
        elseif ($CWAbuelo == 'CWContenedor')
        {
                $punteroPilaBisAbuelo = $punteroPilaAbuelo - 1;         
                $idBisAbuelo = $smarty->_tag_stack[$punteroPilaBisAbuelo][1]['id'];
                $nomForm = 'F_'.$idBisAbuelo;  // Nombre del formulario
                $idPanel = $idBisAbuelo;        
        }
        
        $llamadaJavascript='';
        $script = '';
        //Variable para identificar el objTooltip que generamos
        $nomObjeto ="";
        
        // PARÁMETROS PROPIOS DEL BOTÓN
        // titulo
        $titulo = '';
        if ($params['titulo']) 
        {
                $titulo = $params['titulo'];
        }

        // funcion              
        $funcionBtn = '';
        if ($params['funcion']) 
        {
                $funcionBtn = $params['funcion'];
        }
        // Acción indica el tipo de botón ['guardar','cancelar'....]
        
        // id
        $idBtn = null;
        if ($params['id']) {
                $idBtn = $params['id'];
        }       

        
        // actuaSobre - Panel sobre el q se realizará la acción
        $actuaSobre = '';
        $tresModos = 0;
        if ($params['actuaSobre']) 
        {
                $actuaSobre = $params['actuaSobre'];
                if ((($idPanel == 'lis') || ($idPanel == 'lisDetalle')) && ($actuaSobre == 'ficha'))
                {
                        $smarty->_tag_stack[$punteroPilaAbuelo][1]['tresModos'] = true;
                        $tresModos = 1;
                }
        }       
        
        // action - Será el action del formulario
        $action = '';
        if ($params['action']) 
        {
                $action = $params['action'];
                if (!stristr($action,'__'))
                {
                        $puntero = '';
                        switch($CWAbuelo)
                        {
                                case 'CWPanel':  // Botón en la barra superior
                                        $puntero = $punteroPilaAbuelo;
                                break;
                                case 'CWContenedor':  // Botón en un panel filtro
                                        $puntero = $punteroPilaAbuelo - 1;
                                break;
                                case 'CWFichaEdicion':  // Botón en un panel ficha o tabular
                                case 'CWTabla':
                                        $puntero = $punteroPilaAbuelo - 2;
                                break;
                        }
                }
                if ($puntero != '')
                {
                        // Si no lleva la clase manejadora puesta por defecto
                        if ($action == 'nuevo')
                                $action = $smarty->_tag_stack[$puntero][1]['claseManejadora']."__".$action."&actuaSobre=".$actuaSobre;
                        else
                                $action = $smarty->_tag_stack[$puntero][1]['claseManejadora']."__".$action;
                }               
        }               
        
        // PARÁMETROS VENTANA DE SELECCIÓN
        $panelActua = '';
        if ($params['panelActua']) 
        {
                $panelActua = $params['panelActua'];
        }
        
        $filaActual = '';
        if (isset($params['filaActual'])) 
        {
                $filaActual = $params['filaActual'];
        }
        
        $formVS = '';
        if ($params['formActua'])
        {
                $formVS = $params['formActua'];
        }
        
        $claseManejadora = '';
        if ($params['claseManejadora'])
        {
                $claseManejadora = $params['claseManejadora'];
        }
        else
        {
                $claseManejadora = $smarty->_tag_stack[$punteroPilaAbuelo][1]['claseManejadora'];
                if (($CWAbuelo == "CWFichaEdicion") || ($CWAbuelo == "CWTabla"))
                {
                        $puntero = $punteroPilaAbuelo-2;
                        $claseManejadora = $smarty->_tag_stack[$puntero][1]['claseManejadora'];
                }
                else if (($CWAbuelo == "CWContenedor"))
                {
                        $puntero = $punteroPilaAbuelo-1;
                        $claseManejadora = $smarty->_tag_stack[$puntero][1]['claseManejadora'];
                }
        }
        
        // No se utiliza... pq??? para q era???
        $acumularValor = false;
        if ($params['acumularValor'])
        {
                $acumularValor = $params['acumularValor'];
        }
        
        // rutaManual - url a una página q nos mostrará en una ventana
        $rutaManual = '';
        if ($params['rutaManual'])
        {
                $rutaManual = $params['rutaManual'];
        }
        
        if ($actuaSobre != '')
        {
                $esDetalle = 'false';
                $esMaestro = 'false';
                if (isset($smarty->_tag_stack[$punteroPilaAbuelo][1]['detalleDe']))
                {
                        $esDetalle = 'true';
                }
                if (isset($smarty->_tag_stack[$punteroPilaAbuelo][1]['esMaestro']))
                {
                        $esMaestro = $smarty->_tag_stack[$punteroPilaAbuelo][1]['esMaestro'];
                }
                
        
                $llamadas_js = '';              
                $hidden = '';
                switch($funcionBtn)
                {
                        case 'insertar':
                                $nomObjeto = "bttlInsertar_".$idAbuelo;
                                $llamadas_js .= $nomObjeto." = new objBTTInsertar('".$nomObjeto."','".$idAbuelo."','".$esMaestro."','".$esDetalle."','".$tresModos."');";
                                //Es un detalle, tenemos q copiar los valores dl maestro
                                if ($esDetalle == 'true')
                                {
                                        $formMaestro = 'F_'.$smarty->_tag_stack[$punteroPilaAbuelo][1]['detalleDe'];
                                        $formDetalle = 'F_'.$smarty->_tag_stack[$punteroPilaAbuelo][1]['id'];
                                        $llamadaJavascript .= $nomObjeto.".obtenerValoresMaestro('".$formMaestro."','".$formDetalle."');";
                                }
                                // No tenemos parámetro action, no va a hacer un submit el formulario x lo tanto activamos las filas a insertar y los botones
                                if ($action == '') 
                                        $llamadaJavascript .= $nomObjeto.".insertar();";
                        break;
                    case 'saltar':
                      $llamadaJavascript = "document.forms['".$nomForm."'].target='oculto';";
                      $llamadaJavascript .= "document.forms['".$nomForm."'].action='phrame.php?action=IgepSaltoVentana&idBotonSalto=".$idBtn."';";
                      $llamadaJavascript .= "document.forms['".$nomForm."'].submit();";
                    break;

// // REVIEW: Vero - VENTANA MODAL                  
                    case 'modal':
//                    $dblClick = "paramsSource = {};";
//                    $dblClick .= "paramsSource.formulario = '".$nomForm."';";
//                    $dblClick .= "paramsSource.clase = 'Registro';";
//                    $dblClick .= "paramsSource.accion = 'buscar';";
                          $nomObjeto = "bttlModal_".$idAbuelo;
                      $llamadaJavascript .= "paramsSource = {};";
                      $llamadaJavascript .= "paramsSource.formulario = '".$nomForm."';";
                      $llamadaJavascript .= "paramsSource.clase = 'Registro';";
                      $llamadaJavascript .= "paramsSource.accion = 'buscar';";
                      
                      $claseModal = '';
                          if ($params['claseModal'])
                          {
                                $claseModal = $params['claseModal'];
                          }
                          if ($claseModal != '')
                          {
                              $ruta = "phrame.php?action=".$claseModal."__nuevo&actuaSobre=ficha";
//                            $dblClick .= "url = '".$ruta."';";
//                            $dblClick .= "openModal(url, paramsSource);";
                              $llamadaJavascript .= "url = '".$ruta."';";
                              $llamadaJavascript .= "openModal(url, paramsSource, 400, 400);";
                          }
                    break;
                case 'modificar':
                                $nomObjeto = "bttlModificar_".$idAbuelo;
                                $llamadas_js .= $nomObjeto." = new objBTTModificar('".$nomObjeto."','".$idAbuelo."','".$esMaestro."','".$esDetalle."','".$tresModos."');";                              
                            
                            // No tenemos parámetro action, no va a hacer un submit el formulario x lo tanto activamos las filas a insertar y los botones
                                if ($action == '')
                                {
                                    if ($actuaSobre == "ficha") 
                                    {
                                        // Modificamos en la misma ficha
                                        $llamadaJavascript .= $nomObjeto.".modificarFicha();";
                                        }
                                        else 
                                        {
                                                // Modificamos en la misma tabla
                                                $llamadaJavascript .= "if (".$idPanel."_tabla.hayFilaSeleccionada()) ";
                                        $llamadaJavascript .= $nomObjeto.".modificarTabla();";
                                        }
                                }                                                                           
                        break;
                        case 'eliminar':
                                $nomObjeto = "bttlEliminar_".$idAbuelo;
                                $llamadas_js .= $nomObjeto." = new objBTTEliminar('".$nomObjeto."','".$idAbuelo."','".$esMaestro."','".$esDetalle."');";                                
                            
                            // No tenemos parámetro action, no va a hacer un submit el formulario x lo tanto activamos las filas a insertar y los botones
                                if ($action == '')
                                {
                                    if ($actuaSobre == "ficha") 
                                    {
                                        // Eliminamos en la misma ficha
                                        $llamadaJavascript .= $nomObjeto.'.eliminarFicha();';
                                        }
                                        else 
                                        {
                                                // Eliminamos en la misma tabla
                                                $llamadaJavascript .= "if (".$idPanel."_tabla.hayFilaSeleccionada())";
                                        $llamadaJavascript .= $nomObjeto.'.eliminarTabla();';
                                        }
                                }
                        break;
                        
                        case 'restaurar':
                        case 'limpiar':
                                $nomObjeto = "bttlLimpiar_".$idAbuelo;
                                $llamadas_js .= $nomObjeto." = new objBTTLimpiar('".$nomObjeto."','".$idAbuelo."','".$esMaestro."','".$esDetalle."');";
                                $llamadaJavascript .= $nomObjeto.".limpiarCampos();";
                                $llamadaJavascript .= $idPanel."_comp.bloquearSalida(false);";
                        break;
                        case 'buscarVS':
                        case 'buscarvs':
                                $campo = $actuaSobre;
                                if (($CWPadre == 'CWFila') || ($CWAbuelo == 'CWFichaEdicion')) 
                                {
                                        $campo = $actuaSobre."___".$panelActua."_".$iterActual;
                                }
                                $llamadaJavascript .= "buscar('".$claseManejadora."','".$formVS."','".$campo."','".$panelActua."','".$filaActual."');";         
                        break;
                        
                        case 'abrirVS':
                        case 'abrirvs':                 
                                $campo = $actuaSobre;
                                if (($CWPadre == 'CWFila') || ($CWAbuelo == 'CWFichaEdicion')) 
                                {
                                        //Mandamos el campo sin prefijo pq en la función javascript se detecta si viene d inserción o modificación
                                        $campo = $campo."___".$panelActua."_".$iterActual;                                      
                                }                                       
                                $smarty->igepPlugin->registrarInclusionJS('window.js');
                                $smarty->igepPlugin->registrarInclusionJS('ventanaSeleccion.js');

                                $formVS = 'F_'.$formVS;
                                $dblClick .= "openWS('".$claseManejadora."','".$actuaSobre."','".$formVS."','".$campo."','".$panelActua."')";
                        break;
                        
                        case 'ayuda':
                                $smarty->igepPlugin->registrarInclusionJS('window.js');
                                if ($rutaManual != '')
                                {
                                        $llamadaJavascript .= "Open_Vtna('doc/".$rutaManual."','urlAbs',700,500,'no','no','no','no','yes','yes');";
                                }
                                else 
                                {
                                        $llamadaJavascript .= "alert('No hay manual de la aplicación');";
                                }
                        break;
                        
                        case 'actualizaCampos':
                                //parametros necesarios para utilizar esta opción:
                                //titulo:contendrá el nombre del campo de texto 
                                //formActua: para saber quien es el panel y poder componer la llamada a la función dl objComprobación
                                //panelActua: para componer el nombre del campo, q luego será el origen
                                //actuaSobre: array con los elementos que se quieren actualizar
                                //funcion="actualizaCampos";
                                //$nomObjeto = "bttlActualizar_".$idAbuelo;
                                        
//                              //Tenemos que distinguir si es una insercion(ins) o una modificacion(cam)
                                $numRegTotales = count($smarty->_tag_stack[$punteroPilaAbuelo][1]['datos']); 
                                if ($CWAbuelo != 'CWContenedor')
                                {
                                        if (($numRegTotales == 0) or ($iterActual >= $numRegTotales))
                                                $nombre = 'ins___'.$titulo.'___'.$panelActua."_".$iterActual;
                                        else
                                                $nombre = 'cam___'.$titulo.'___'.$panelActua."_".$iterActual;
                                }
                                else
                                        $nombre = $titulo;                      
                                $hidden .= "<input type='hidden' name='".$nombre."' id='".$nombre."' value='' />";
                                $llamadaJavascript .= "objCampo = document.getElementById('".$nombre."');objCampo.value = 'S';".$idPanel."_comp.actualizarElemento(objCampo,'".$params['actuaSobre']."');";
                        break;
                        case 'exportCSV':
                                $claseManejadora = $smarty->_tag_stack[$punteroPilaAbuelo][1]['claseManejadora'];
                                $llamadaJavascript = "document.forms['".$nomForm."'].target='oculto';";
                                $llamadaJavascript .= "document.forms['".$nomForm."'].action='phrame.php?action=exportCSV&actuaSobre=".$actuaSobre."&claseManejadora=".$claseManejadora."';";
                                $llamadaJavascript .= "document.forms['".$nomForm."'].submit();";
                                                                
                        break;

                        case 'print':
                                $titulo = $smarty->_tag_stack[$punteroPilaPadre][1]['titulo'];
                                $claseManejadora = $smarty->_tag_stack[$punteroPilaAbuelo][1]['claseManejadora'];
                                $rutaPrint = "phrame.php?action=defaultPrint&actuaSobre=".$actuaSobre."&claseManejadora=".$claseManejadora."&titulo=".$titulo;                          
                                $llamadaJavascript .= "Open_Vtna('".$rutaPrint."','urlAbs',700,500,'no','no','no','no','yes','yes');";
                        break;

                }//Fin switch
        }//Fin if actua sobre
        
        // Si el botón lleva asociado un action se realiza un submit
        if ($action != '')
        {       
                $llamadaJavascript .= "document.forms['".$nomForm."'].target='oculto';";
                $llamadaJavascript .= "document.forms['".$nomForm."'].action='phrame.php?action=".$action."';";
                $llamadaJavascript .= "document.forms['".$nomForm."'].submit();";
        }
        
        $boton = $titulo; // Aparecera solamente el titulo si no se ha puesto la imagen
        if ($params['imagen']) 
        {               
                //Identificador del boton en el form, ej. "btnfil_buscar" ej "btncalculo_particular"
                if ($idBtn == null)
                        $idBtn = 'btn'.$smarty->_tag_stack[$punteroPilaAbuelo][1]['id'].'_'.$funcionBtn;
                else
                // Cuando el botón no pertenece al panel sino dentro de la ventana
                        $idBtn = 'btn'.$idBtn.'_'.$funcionBtn.$smarty->_tag_stack[$punteroPilaAbuelo][1]['id'];

                $ruta = IMG_PATH_CUSTOM."botones/".$params['imagen'].".gif";
                $rutaOff = IMG_PATH_CUSTOM."botones/".$params['imagen']."off.gif";
                $rutaTrans = IMG_PATH_CUSTOM."pestanyas/pix_trans.gif";
                
                // VENTANA DE SELECCIÓN
                
                if (($funcionBtn != 'abrirVS') && ($funcionBtn != 'abrirvs'))
                {
                        $boton ="<img id='img_$nomObjeto' src='$ruta' style='cursor:pointer;' border='0'";
                        $boton.=" title='$titulo' alt='Btn_$funcionBtn' onClick=\"javascript:$llamadaJavascript\" />";
                }
                else
                { 
                        $numRegTotales = count($smarty->_tag_stack[$punteroPilaAbuelo][1]['datos']);
                        $iterActual = $smarty->_tag_stack[$punteroPilaPadre][2];
                        
                        // Creamos una capa para poder ocultar y visualizar el botón tooltip de la ventana de selección.
                        // Debería ser un botón como el del calendario.
                        $aperturaCapa = "<span id='IGEPVisibleBtn".$campo."'";
                        $aperturaCapa .=" style='visibility:visible;'>";//Fin style     
                        $cierreCapa = '</span>';
                        
                        // Comprobación en una tabla para las filas q serán para insertar nuevos registros pondremos el botón ToolTip en transparente
                        if ( ($CWPadre == 'CWFila') && ($iterActual >= $numRegTotales) )
                        {
                                $boton = "<img id=\"vs_".$campo."\" src=\"".$rutaTrans."\" border='0' title=\"".$titulo."\" alt=\"ffBtn_".$funcionBtn."\" onDblClick = \"".$dblClick."\" />";
                        }
                        elseif (
                                //      NO estoy en un panel de búsqueda. El botón d ventana selección no tiene q aparecer si no se está en modo activo.                
                                ( ($CWPadre == 'CWFila') || ($CWAbuelo == 'CWFichaEdicion') )   
                                && ($smarty->_tag_stack[$punteroPilaPanel][1]['accion'] != 'modificar')
                                && ($smarty->_tag_stack[$punteroPilaPanel][1]['accion'] != 'insertar') 
                        )
                        {                       
                                $boton = "<img id=\"vs_".$campo."\" src=\"".$rutaOff."\" border='0' title=\"".$titulo."\" alt=\"ffBtn_".$funcionBtn."\" onDblClick = \"".$dblClick."\" />";
                        }
                        else
                        {
                                $boton = "<img id=\"vs_".$campo."\" src=\"".$ruta."\" border='0' title=\"".$titulo."\" alt=\"Btn_".$funcionBtn."\" onDblClick = \"".$dblClick."\" />";
                        }
                        $boton = $aperturaCapa.$boton.$cierreCapa;
                }

        }
        if ( $nomObjeto != '' ) //Registramos el objeto JS
                $smarty->igepPlugin->registerJSObj($nomObjeto);
                
        $igepSmarty->addPreScript($llamadas_js);
        if ($CWPadre == "CWFila") // Si el botón está en una fila de una tabla
        {
                $referencia = $titulo;
                $v_titulo = $smarty->_tag_stack[$punteroPilaAbuelo][1]['titulosColumnas'];
                $v_titulo[$referencia] = '';                    
                $smarty->_tag_stack[$punteroPilaAbuelo][1]['titulosColumnas'] = $v_titulo;
                $smarty->_tag_stack[$punteroPilaAbuelo][6]['sizes'][] = '2';
                $smarty->_tag_stack[$punteroPilaAbuelo][6]['sizes']['total'] += intval('2');
                return("<td>".$igepSmarty->getPreScript().$hidden.$boton."</td>\n");
        }
        else
                return($igepSmarty->getPreScript().$hidden.$boton."\n");
}