Documentación GVHIDRA 3.1.5
Referencia del Archivo block.CWSelector.php

Ir al código fuente de este archivo.

Funciones

 smarty_block_CWSelector ($params, $content, &$smarty)

Documentación de las funciones

smarty_block_CWSelector ( params,
content,
&$  smarty 
)

Definición en la línea 34 del archivo block.CWSelector.php.

                                                              {
                
        // LECTURA DE VALORES DE LA PILA //
        
        //Puntero a la pila de etiquetas que contiene a CWSelector
        $indicePila = count($smarty->_tag_stack)-1;
        //Puntero a la etiqueta Padre (CWFicha || CWSolapa) 
        $punteroPilaPadre = $indicePila - 1;
        $CWPadre = $smarty->_tag_stack[$punteroPilaPadre][0];
        if(!isset($content)) // Si se abre la etiqueta 
        {       
                $n_comp = "CWSelector"; 
                // Necesitamos saber cuántas instancias de este componente existen ya / para poner el codigo o no
                $num=$smarty->igepPlugin->registrarInstancia($n_comp);
                //Array para almacenar los campos q contendra este plugin
                $campos = array();
                $smarty->_tag_stack[$indicePila][2]  =  $campos;
        } 
        else 
        {
                if ($CWPadre == "CWSolapa")//Si el padre es un CWSolapa, tenemos que movernos uno más arriba, pq pasamos de él
                {               
                        // Subimos 3 posiciones: 1 pq la pila empieza en 0, con -2 estaríamos en CWSolapa, -3 llegamos a CWFicha
                        $punteroPilaPadre = count($smarty->_tag_stack)-3; 
                        $CWPadre = $smarty->_tag_stack[$punteroPilaPadre][0]; // Ahora es CWFicha               
                }
                
                $punteroPilaAbuelo = $punteroPilaPadre - 1;
                $CWAbuelo = $smarty->_tag_stack[$punteroPilaAbuelo][0]; // CWFichaEdicion
                        
                $igepSmarty = new IgepSmarty();
                
                $ini = "";
                $fin = "";
                
                $titulo = "";
                if ($params['titulo'])
                {
                        $titulo = $params['titulo'];
                } 
                
                $id = "";
                if ($params['nombre'])
                {
                        $id = $params['nombre'];
                        $idCWSelector = $params['nombre'];
                } 
                
                $editable = 'true';
                if($params['editable'])
                {
                        $editable = $params['editable'];
                }
                
            $rows = 3;
            if($params['rows'])
            {
              $rows = $params['rows'];
            }
    
                $botones = array('insertar');
                if($params['botones'])
                {
                        $botones = $params['botones'];
                }
                
                $separador =" | ";
                if($params['separador'])
                {
                        $separador = $params['separador'];
                }
                
                //El vector de datos sera un array asociativo de tres columna (valor, descripción, seleccionado)
                $v_datos = array();
                $v_lista[0]=array();    
                $v_lista[0]["valor"]="";
                $v_lista[0]["descripcion"]="";
                $v_datos[0]["seleccionado"]=""; 
                $v_datos[0]["lista"]=$v_lista;  
                
                if($params['datos'])
                {
                        $v_datos = $params['datos'];
                }
        
                //if ($CWAbuelo == "CWFichaEdicion") 
                if ($CWPadre == "CWFicha") // Comprobamos el padre pq el Selector puede estar en un panel de búsqueda.
                {
                        $iterActual = $smarty->_tag_stack[$punteroPilaPadre][2];                
                        $numRegTotales = count($smarty->_tag_stack[$punteroPilaAbuelo][1]['datos']);
                        $iterActualExtra=0;
                        $numRegTotalesExtras=0;
                        
                        $idFila = $smarty->_tag_stack[$punteroPilaAbuelo][1]['id']."_".$iterActual;
                        
                        
                        $punteroPilaPanel = $punteroPilaAbuelo - 2;
                        $CWPanel = $smarty->_tag_stack[$punteroPilaPanel][0];
                        $idPanel = $smarty->_tag_stack[$punteroPilaPanel][1]['id'];
                        
                        if ($iterActual >= $numRegTotales)
                        {       
                                // Componer el nombre dl campo: params[nombre]_idFila
                                // ej: cad_inv_dni__F_tabla1_2
                                $idCampo = "ins___".$id."___".$idFila."[]";
                                $nameCampo = "ins___".$id."___".$idFila."[]";                           
                                
                                if ($CWPadre == "CWFicha")
                                {
                                        $campoEstadoFila = "est_".$idFila;
                                        $llamadaJS = "document.getElementById('".$campoEstadoFila."').value='insertada';";
                                        $igepSmarty->addAccionEvento("onBlur", $llamadaJS);
                                }
                        }
                        else
                        {               
                                // Componer el nombre dl campo: params[nombre]_idFila
                                // ej: cad_inv_dni__F_tabla1_2
                                if ($CWAbuelo == "CWFichaEdicion") // Comprobamos el abuelo para saber si es un panel de edición o de búsqueda
                                {
                                        $idCampo = "cam___".$id."___".$idFila."[]";
                                        $nameCampo = "cam___".$id."___".$idFila."[]";
                                }
                                else                            
                                {
                                        $idCampo = $id."[]";
                                        $nameCampo = $id."[]";
                                }
                                if ($CWPadre == "CWFicha")
                                {
                                        $llamadaJS = $idPanel."_comp.comprobarModificacion('".$idCampo."');";
                                        $igepSmarty->addAccionEvento("onBlur", $llamadaJS);
                                }
                                //Obtenemos el registro que le corresponde...
                                
                                $datosReg = $smarty->_tag_stack[$punteroPilaAbuelo][1]['datos'][$iterActual];

                                //Si todo ha ido bien, tendremos un array registro con uno de los atributos multivaluado
                                //Asignamos el valor de registro, controlando el PEAR:DB                        
                                //Si es la nueva version de PEAR, da igual que sea Postgres que Oracle (columna en minúsculas)
                                //$v_datos = $datosReg[$params['nombre']];
                                        
                                $v_datos = null;
                                if (!isset($v_datos)) 
                                {
                                        $v_datos = $datosReg[strtolower($params['nombre'])];                            
                                }
                                //Si aqui aun no tiene valor, puede ser Pear "case sensitive" contra Postgres (columna mayúscula/minúsculas)
                                if (!isset($v_datos)) 
                                {
                                        $v_datos = $datosReg[$params['nombre']];                                        
                                }
                                //Por último, si aquí tampoco tiene valor, puede ser Pear "case sensitive" contra Oracle (columna mayúsculas)
                                if (!isset($v_datos)) 
                                {
                                        $v_datos = $datosReg[strtoupper ($params['nombre'])];                           
                                }                       
                                if (!isset($v_datos)) 
                                {
                                        $v_datos = array();
                                        $v_lista[0]=array();    
                                        $v_lista[0]["valor"]="";
                                        $v_lista[0]["descripcion"]="";
                                        $v_datos[0]["seleccionado"]=""; 
                                        $v_datos[0]["lista"]=$v_lista;                          
                                }                       
                        }
                        
                        // editable = true,false,nuevo | si/no/nuevo
                        switch($CWPadre) 
                        {
                        case "CWFicha":
                                                switch($editable)
                                                {
                                                        case "true":
                                                        case "si":
                                                                // Comprobamos si se vuelve a cargar la plantilla con la acción modificar/insertar, activar los campos
                                                                if ($smarty->_tag_stack[$punteroPilaAbuelo][1]['accion'] == 'modificar') {
                                                                        $classHTML = " class=\"formularios modificable\"";
                                                                        $estadoHTML = "";
                                                                }
                                                                else if ($smarty->_tag_stack[$punteroPilaAbuelo][1]['accion'] == 'insertar') {  
                                                                        $classHTML = " class=\"formularios editable\"";
                                                                        $estadoHTML = ""; 
                                                                }
                                                                else {
                                                                        $classHTML = " class=\"formularios editable\"";
                                                                        // Comprobamos el abuelo para saber si es un panel de edición o de búsqueda
                                                                        if ($CWAbuelo == "CWFichaEdicion") 
                                                                                $estadoHTML = " disabled";
                                                                        else
                                                                                $estadoHTML = " enabled";
                                                                }
                                                        break;
                                                        case "false":
                                                        case "no":
                                                                $classHTML = " class=\"formularios noEditable\"";
                                                                $estadoHTML = " disabled";
                                                        break;
                                                        case "nuevo":
                                                                // Comprobamos si se vuelve a cargar la plantilla con la acción modificar/insertar, activar los campos
                                                                if ($smarty->_tag_stack[$punteroPilaAbuelo][1]['accion'] == 'modificar') {
                                                                        $classHTML = " class=\"formularios nuevo\"";
                                                                        $estadoHTML = " disabled";
                                                                }
                                                                else if ($smarty->_tag_stack[$punteroPilaAbuelo][1]['accion'] == 'insertar') {  
                                                                        $classHTML = " class=\"formularios editable\"";
                                                                        $estadoHTML = ""; 
                                                                }
                                                                else {
                                                                        $classHTML = " class=\"formularios nuevo\"";
                                                                        $estadoHTML = " disabled";
                                                                }
                                                        break;
                                                }
                                        break;
                                        default:
                                                $classHTML = " class=\"formularios editable\"";
                                                $estadoHTML = "";
                                }
                }
        

                $ini .= "<br/>".$titulo."<br/>\n";
                $ini .= "<table style='width: 100%;' cellspacing='3' cellpadding='3'>\n";
                $ini .= "<tr>\n";
                $ini .= "<td style='width: 20%;' class='formularios grupoCampos'>\n";
                if ($CWPadre == "CWFicha")
                {
                        $llamadaJS = $idPanel."_comp.bloquearSalida(true);";
                        $igepSmarty->addAccionEvento("onChange", $llamadaJS, 1);
                }
                $ini .= "<select name='".$nameCampo."' id='".$idCampo."' ".$igepSmarty->getAcciones()." multiple ".$classHTML." ".$estadoHTML." size='".$rows."'>\n";
                
                $numValores=count($v_datos['lista']);
                for($i=0; $i < $numValores; $i++)
                {               
                                if(is_array($v_datos['lista'])){
                                        $ini.="<option ";
                                        //Si ese es el item seleccionado lo marcamos                    
                                        if (trim($v_datos['seleccionado']) == trim($v_datos['lista'][$i]['valor'])) $ini .=" selected ";
                                        $ini .="value='".$v_datos['lista'][$i]['valor']."' selected>".trim($v_datos['lista'][$i]['descripcion'])."</option>";
                                }                       
                }
                
                
                $ini .= "</select>\n";
                $ini .= "</td>\n";
                $ini .= "<td style='width: 5%;' class='formularios grupoCampos'>\n";
                
                $vCampos = $smarty->_tag_stack[$indicePila][2];
                $camposOrigen = "";
                for($i=0;$i<count($vCampos);$i++)
                {
                        $camposOrigen .= "'".$vCampos[$i]."'";
                        if ($i<count($vCampos)-1) $camposOrigen .= ",";
                }

                $esDetalle = 'false';
                $esMaestro = 'false';
                if (isset($smarty->_tag_stack[$punteroPilaPanel][1]['detalleDe']))
                {
                        $esDetalle = 'true';
                }
                if (isset($smarty->_tag_stack[$punteroPilaPanel][1]['esMaestro']))
                {
                        $esMaestro = $smarty->_tag_stack[$punteroPilaPanel][1]['esMaestro'];
                }

                $nomObjeto ='';
                if (in_array('insertar',$botones)) 
                {
                        $nomObjeto = "bttInsertar_".$idCWSelector;
                        $llamadas_js .= $nomObjeto." = new objBTTInsertar('".$nomObjeto."','".$idPanel."','".$esMaestro."','".$esDetalle."');";
                        $ini .= "<a href=\"javascript:".$nomObjeto.".copiarToLista('".$idCampo."','".$separador."',".$camposOrigen.")\">";
                        if ( (($CWAbuelo != "CWContenedor") && ($CWAbuelo != "CWTabla")) && (
                                ($smarty->_tag_stack[$punteroPilaPanel][1]['accion'] == 'modificar') ||
                                ($smarty->_tag_stack[$punteroPilaPanel][1]['accion'] == 'insertar')) )
                        {
                                $ini .= "<img alt='&lt;' style='border:none' src='".IMG_PATH_CUSTOM."botones/flechaIzq.gif' id='selCopiar".$idCWSelector."___".$idFila."' title='Copiar' /></a>\n";
                        }
                        else
                        {
//                              $ini .= "<img alt='.' style='border:none' src='".IMG_PATH_CUSTOM."pestanyas/pix_trans.gif' id='selCopiar".$idCWSelector."___".$idFila."' /></a>\n";
// Necesitamos tb la imagen de los botones para cuando el selector está un panel de búsqueda
$ini .= "<img alt='.' style='border:none' src='".IMG_PATH_CUSTOM."botones/flechaIzq.gif' id='selCopiar".$idCWSelector."' /></a>\n";
                        } 
                        $ini .= "<br>\n";                       
                }
                if (in_array('modificar',$botones)) 
                {
                        $nomObjeto = "bttModificar_".$idCWSelector;
                        $llamadas_js .= $nomObjeto." = new objBTTModificar('".$nomObjeto."','".$idPanel."','".$esMaestro."','".$esDetalle."');";
                        $ini .= "<a href=\"javascript:".$nomObjeto.".modificarLista('".$idCampo."','".$separador."',".$camposOrigen.")\">";
                        if ( (($CWAbuelo != "CWContenedor") && ($CWAbuelo != "CWTabla")) && (
                                ($smarty->_tag_stack[$punteroPilaPanel][1]['accion'] == 'modificar') ||
                                ($smarty->_tag_stack[$punteroPilaPanel][1]['accion'] == 'insertar')) )
                        {
                                $ini .= "<img alt='&gt;' style='border:none' src='".IMG_PATH_CUSTOM."botones/flechaDcha.gif' id='selModificar".$idCWSelector."___".$idFila."' title='Modificar' /></a>\n";
                        }
                        else
                        {
//                              $ini .= "<img alt='.' style='border:none' src='".IMG_PATH_CUSTOM."pestanyas/pix_trans.gif' id='selModificar".$idCWSelector."___".$idFila."' /></a>\n";
// Necesitamos tb la imagen de los botones para cuando el selector está un panel de búsqueda
$ini .= "<img alt='.' style='border:none' src='".IMG_PATH_CUSTOM."botones/flechaDcha.gif' id='selModificar".$idCWSelector."' /></a>\n";
                        } 
                        $ini .= "<br>\n";
                }
                if (in_array('eliminar',$botones)) 
                {
                        $nomObjeto = "bttEliminar_".$idCWSelector;
                        $llamadas_js .= $nomObjeto." = new objBTTEliminar('".$nomObjeto."','".$idPanel."','".$esMaestro."','".$esDetalle."');";
                        $ini .= "<a href=\"javascript:".$nomObjeto.".eliminarLista('".$idCampo."','".$separador."',".$camposOrigen.")\">";
                        if ( (($CWAbuelo != "CWContenedor") && ($CWAbuelo != "CWTabla")) && (
                                ($smarty->_tag_stack[$punteroPilaPanel][1]['accion'] == 'modificar') ||
                                ($smarty->_tag_stack[$punteroPilaPanel][1]['accion'] == 'insertar')) )
                        {
                                $ini .= "<img alt='X' style='border:none' src='".IMG_PATH_CUSTOM."botones/42.gif' id='selLimpiar".$idCWSelector.$idFila."___"."' title='Limpiar' /></a>\n";
                        }
                        else
                        {
//                              $ini .= "<img alt='.' style='border:none' src='".IMG_PATH_CUSTOM."pestanyas/pix_trans.gif' id='selLimpiar".$idCWSelector."___".$idFila."' /></a>\n";
// Necesitamos tb la imagen de los botones para cuando el selector está un panel de búsqueda
$ini .= "<img alt='.' style='border:none' src='".IMG_PATH_CUSTOM."botones/42.gif' id='selLimpiar".$idCWSelector."' /></a>\n";                           
                        } 
                }               
                //Registramos el objeto JS
                if ($nomObjeto!='') $smarty->igepPlugin->registerJSObj($nomObjeto);
                
                $igepSmarty->addPreScript($llamadas_js); 
                
                $ini .= "</td>\n";
                $ini .= "<td style='width: 50%;' align='left' class='formularios grupoCampos'>\n";
                
                $fin .= "</td>\n";
                $fin .= "</tr>\n";
                $fin .= "</table>\n<br/>";
                

                $resultado = $igepSmarty->getPreScript().$ini.$content.$fin;
                return ($resultado);
        }
}