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

Ir al código fuente de este archivo.

Funciones

 smarty_function_CWAreaTexto ($params, &$smarty)

Documentación de las funciones

smarty_function_CWAreaTexto ( params,
&$  smarty 
)

devuelve una cadena para mostrar el componente en html e incluir[linkar] ficheros en su caso

parametros

Parámetros:
disabledboolean
@returnsstring

No vacío ////////////////////////////////////////////////////////////////////////////////

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

{
        $igepSmarty = new IgepSmarty();
        
        // 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];
        
        $CWSelector = false;
        if ($CWPadre == "CWSelector") $CWSelector = true; 
        
        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];
        }
        
        
        if ($CWAbuelo == 'CWContenedor')  //stamos en un panel de búsqueda
        {
                $punteroPilaPanel = $punteroPilaAbuelo - 1;
        }
        else
        {
                $punteroPilaPanel = $punteroPilaAbuelo - 2;
        }
        $idPanel = $smarty->_tag_stack[$punteroPilaPanel][1]['id'];
        
        
        // CODIGO NECESARIO PARA CADA COMPONENTE //
        // Primero defino el nombre del componente.
        $n_comp="CWAreaTexto";  
        
        // Incrementamos  el número de componentes CWCampoTexto
        $num = $smarty->igepPlugin->registrarInstancia($n_comp);
        
        if($params['nombre']) 
        {
                $idCampo=$params['nombre'];
        } 
        else 
        {
                $idCampo=$n_comp.$num;
        }
        
        // FIN CODIGO NECESARIO DE CADA COMPONENTE //
        
        // Ahora generamos el codigo del componente
        
        // Longitud mínima 
        if ($params['longitudMinima']) 
        {
                $llamadaJS = $idPanel."_comp.informaAvisoJS('LONGITUDMINIMA',this,'".$params['longitudMinima']."');";
                $igepSmarty->addAccionEvento("onBlur", $llamadaJS, 190);
        }
        // Longitud maxima
        if ($params['longitudMaxima']) 
        {
                $llamadaJS = $idPanel."_comp.comprobarMaximo(this.type, this, '".$params['longitudMaxima']."');";
                $igepSmarty->addAccionEvento("onKeyUp", $llamadaJS, 180);
                $igepSmarty->addAccionEvento("onBlur", $llamadaJS, 170);
        }
        
        // valor por defecto ? 
        if($params['value']) 
        {
                if ((!is_array($params['value'])) && ($params['value'] != ''))
                        $value = htmlentities($params['value']);
                else            
                        $value = $params['value'];
        } 
        else 
        {
                $value="";
        }

        $editable = 'true';
        if($params['editable'])
        {
                $editable = $params['editable'];
        }       

        if(isset($params['tabindex'])) 
        {
                $valorIndex = $params['tabindex'];
                if ($editable == 'false')
                        $valorIndex = abs($params['tabindex'])*(-1);
                $tabindex="tabindex='".$valorIndex."'";
        } 
        else 
        {
                if ($editable == 'false')
                        $tabindex="tabindex='-1'";
                else
                        $tabindex="";
        }
        
        
        $obligatorio = 'false';
        if($params['obligatorio'])
        {
                $obligatorio = $params['obligatorio'];
        }
        
        // cols 
        if($params['cols']) 
        {
                $cols="cols=\"".$params['cols']."\"";
        }

        // rows 
        if($params['rows']) 
        {
                $rows="rows=\"".$params['rows']."\"";
        }

        $obligatorio = false;
        if($params['obligatorio'])
        {
                $obligatorio = $params['obligatorio'];
        }

        if (isset($params['actualizaA']))
        {
                $actuoSobrePlugin = $params['actualizaA'];
            $llamadaJS = $idPanel."_comp.actualizarElemento(this,'".$params['actualizaA']."');";
                $igepSmarty->addAccionEvento("onBlur", $llamadaJS);
        }

        //Visibilidad inicial
        $visible = true;
        if (
                (isset($params['visible']))             
                &&
                (
                        (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)
                )
        )
        {
                $visible = false;
        }

        //Tratamiento de etiquetas asociadas
        $textoAsociado = "";
        $textoAsociadoColumna = "";
        $mostrarTextoAsociado = "false";
        //Si hay etiqueta asociada...
        if (
                (isset($params['textoAsociado'])) 
                && (trim($params['textoAsociado']) !='')
                )
        {       
                $textoAsociado = $params['textoAsociado'].':';
                $textoAsociadoColumna = $params['textoAsociado'];
                $mostrarTextoAsociado = "true";
        }
        else
        {
                $textoAsociado = ucfirst($idCampo).":";
                $textoAsociadoColumna = ucfirst($idCampo);
                $mostrarTextoAsociado = "false";
        }

        //Decidimos si se muestra o no el texto asociado
        if (isset($params['mostrarTextoAsociado']))
        {
                $mostrarTextoAsociado = trim(strtolower($params['mostrarTextoAsociado']));
        }
        switch ($mostrarTextoAsociado)
        {
                case 'no':
                case 'false':
                        $mostrarTextoAsociado = "display:none; ";
                break;
                case 'si':
                case 'true':
                        $mostrarTextoAsociado = "display:inline; ";
                break;
                default:
                        $mostrarTextoAsociado = "display:inline; ";
        }//Fin switch
        //Fin tratamiento de etiquetas

        $ini = "";
        $fin = "";
        $hiddentxt = "";

        //Si el padre es una fila o una ficha....
        if (($CWPadre == "CWFila") || ($CWAbuelo == "CWFichaEdicion"))
        {       
                $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;
        
// TAMAÑO COLUMNAS
                if (($CWPadre == "CWFila") && (isset($params['cols'])) && ($iterActual == 0))
                {
                        // Hay que almacenar el tamaño del campo para poder fijar el ancho de las columnas
                        $smarty->_tag_stack[$punteroPilaAbuelo][6]['sizes'][] = $params['cols'];
                        $smarty->_tag_stack[$punteroPilaAbuelo][6]['sizes']['total'] += intval($params['cols']);
                }
                
                if ($iterActual >= $numRegTotales)
                {
                        //$contInsercion = $iterActual - $numRegTotales;
                        // Componer el nombre dl campo: params[nombre]_idFila
                        // ej: cad_inv_dni__F_tabla1_2
                        $idCampo = "ins___".$idCampo."___".$idFila;

                        //Si el padre es una fila, incluimos los TD
                        if ($CWPadre == "CWFila")
                        {
                                $ini = "<td align='center'>\n";
                                $fin = "</td>\n";
                                $campoEstadoFila = "est_".$idFila;
                                $llamadaJS = $idPanel."_tabla.cambiarEstado('insertada',this,'".$campoEstadoFila."');";
                                $igepSmarty->addAccionEvento("onBlur", $llamadaJS, 1);
                        }
                        if ($CWPadre == "CWFicha")
                        {
                                $campoEstadoFila = "est_".$idFila;
                                $llamadaJS = "document.getElementById('".$campoEstadoFila."').value='insertada';";
                                $igepSmarty->addAccionEvento("onBlur", $llamadaJS, 1);
                        }
                }
                else
                {
                        // Componer el nombre dl campo: params[nombre]_idFila
                        // ej: cad_inv_dni__F_tabla1_2
                        $idCampo = "cam___".$idCampo."___".$idFila;
                        
                        //Si el padre es una fila, incluimos los TD
                        if ($CWPadre == "CWFila")
                        {
                                $ini = "<td align='center'>\n";                         
                                $fin = "</td>\n";
                                $campoEstadoFila = "est_".$idFila;
                                if (($editable != "no") && ($editable != "false"))
                        {
                                        $llamadaJS = $idPanel."_tabla.cambiarEstado('modificada',this,'".$campoEstadoFila."');";
                                        $igepSmarty->addAccionEvento("onBlur", $llamadaJS, 1);
                        }
                        }
                        if ($CWPadre == "CWFicha")
                        {
                                $llamadaJS = $idPanel."_comp.comprobarModificacion('".$idCampo."');";
                                $igepSmarty->addAccionEvento("onBlur", $llamadaJS, 1);
                        }

                        //Obtenemos el registro que le corresponde y fijamos el valor
                        $datosReg = $smarty->_tag_stack[$punteroPilaAbuelo][1]['datos'][$iterActual];
                        
                        //Asignamos el valor de registro, controlando el PEAR:DB
                        $valueReg=null;
                        //Si es la nueva version de PEAR, da igual que sea Postgres que Oracle (columna en minúsculas)                  
                        if (!isset($valueReg)) $valueReg = $datosReg[strtolower($params['nombre'])];
                        //Si aqui aun no tiene valor, puede ser Pear "case sensitive" contra Postgres (columna mayúscula/minúsculas)
                        if (!isset($valueReg)) $valueReg = $datosReg[$params['nombre']];
                        //Por último, si aquí tampoco tiene valor, puede ser Pear "case sensitive" contra Oracle (columna mayúsculas)
                        if (!isset($valueReg)) $valueReg = $datosReg[strtoupper ($params['nombre'])];                   
                        // Fin del proceso de asignación del valor
                        if (isset($valueReg) && ($valueReg!="")) $value=htmlentities($valueReg);
                        if (($valueReg == null) && ($value == '')) $value='';
                }
                
                // Creamos un campo hidden para la concurrencia (valor anterior)
                //Comprobamos si hay que crear el hidden o no
                if(strpos($idCampo,'cam')!==false)
                        $idHidden=str_replace("cam___","ant___",$idCampo);
                if ($idHidden!="")
                {
                        if (substr($value, 0, 2)==SALTO_LINEA)
                        {
                                $value=SALTO_LINEA.$value;
                        }
                        $hiddentxt="<div id='capa_".$idHidden."' style='display:none' >";
                        $hiddentxt.="<textarea name='".$idHidden."' id='".$idHidden."' ";
                        $hiddentxt.=$tabindex." ".$cols." ".$rows." >";
                        $hiddentxt.=$value;
                        $hiddentxt.="</textarea></div>";
                }               
                
                // editable = true,false,nuevo | si/no/nuevo
                switch($CWPadre) 
                {
                        case "CWFila":
                                switch($editable)
                                {
                                        case "true":
                                        case "si":
                                                $classHTML = " class=\"formularios tablaEdi\"";
                                                $estadoHTML = "readOnly";
                                        break;
                                        case "false":
                                        case "no":
                                                $classHTML = " class=\"formularios tablaNoEdi\"";
                                                $estadoHTML = "readOnly";
                                        break;
                                        case "nuevo":
                                                $classHTML = " class=\"formularios tablaNuevo\"";
                                                $estadoHTML = "readOnly";
                                        break;
                                }                       
                        break;
                        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\"";
                                                                $estadoHTML = "readOnly";
                                                        }
                                                break;
                                                case "false":
                                                case "no":
                                                        $classHTML = " class=\"formularios noEditable\"";
                                                        $estadoHTML = "readOnly";
                                                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 = "readOnly";
                                                                //Pasamos el tabindex a negativo, ya que no será accesible
                                                                $tabindex=" tabindex='-1' ";                                                            
                                                        }
                                                        else if ($smarty->_tag_stack[$punteroPilaAbuelo][1]['accion'] == 'insertar') {  
                                                                $classHTML = " class=\"formularios editable\"";
                                                                $estadoHTML = ""; 
                                                        }
                                                        else {
                                                                $classHTML = " class=\"formularios nuevo\"";
                                                                $estadoHTML = "readOnly";
                                                                //Pasamos el tabindex a negativo, ya que no será accesible
                                                                $tabindex=" tabindex='-1' ";
                                                        }
                                                break;
                                        }
                                break;
                        default:
                                $classHTML = " class=\"formularios editable\"";
                                $estadoHTML = "";
                }
        }
        else 
        {
                if ($CWPadre == "CWFicha") //Panel de búsqueda
                {
                        switch($editable)
                        {
                                case "true":
                                case "si":      
                                        $classHTML = " class=\"formularios editable\"";
                                        $estadoHTML = "";
                                break;
                                case "false":
                                case "no":
                                        $classHTML = " class=\"formularios noEditable\"";
                                        $estadoHTML = "readOnly";
                                break;
                        }
                }
        }

        /* Fin del proceso*/
        
        // Para la primera iteración en un listado o ficha, o cdo la variable no esté fijada para la búsqueda
        $tipoComprobacionPanel = $smarty->_tag_stack[$punteroPilaPanel][1]['tipoComprobacion'];
        if ( 
                (($iterActual == 0) || (!isset($iterActual)) ) && 
                ( ($obligatorio == "true") || ($obligatorio == "si")) &&
                ($tipoComprobacionPanel != 'cambioFoco') ) 
        {
                $script = $idPanel."_comp.addCampo('".$idCampo."');";
                $igepSmarty->addPreScript($script);
        }
        
        //Generará el evento onBlur cuando sea obligatorio y en el panel no indique q solo es comprobación d "envio"
        if ( ( ($obligatorio == 'true') || ($obligatorio == 'si') ) && ($tipoComprobacionPanel != 'envio') )
        {
                $llamadaJS = $idPanel."_comp.informaAvisoJS('ESVACIO',this);";
                $igepSmarty->addAccionEvento("onBlur", $llamadaJS, 50);
        }
        
        if (($CWSelector) && ($editable != 'false'))
        {               
                $punteroPilaCWSelector = count($smarty->_tag_stack)-1;
                array_push($smarty->_tag_stack[$punteroPilaCWSelector][2],$idCampo);
        }       
        
        //Visibilidad e invisibilidad
        $aperturaCapa = '';
        $cierreCapa = '';

        if ($visible == false)
        {
                $estiloVisibilidad = 'visibility:hidden;';
        }
        else
        {
                $estiloVisibilidad = 'visibility:visible;';
        }
        
        $aperturaCapa = "<div id='IGEPVisible".$idCampo."'";
        $aperturaCapa.=" style='";
                $aperturaCapa.="$estiloVisibilidad; ";
                $aperturaCapa.="display:block; ";
        $aperturaCapa.= "' >";//Fin style
        
        $cierreCapa = '</div>';
        
        $compotxt = $aperturaCapa;
        $compotxt .= $hiddentxt;        
        if ($obligatorio == 'true')     $txtAsterisco="*"; 
        else $txtAsterisco="";
                
        $textoAsociado = "<label style='font-weight: bold; $mostrarTextoAsociado' id='txt".$idPanel."_".$idCampo."' for='".$idCampo."'>".$txtAsterisco.$textoAsociado."</label>\n";
        $compotxt.= $textoAsociado;     
        $compotxt.= "<textarea name=\"$idCampo\" id=\"$idCampo\" $tabindex $classHTML $estadoHTML $cols $rows ".$igepSmarty->getAcciones().">".$value."</textarea>";
        $compotxt .= $cierreCapa;
        
        $tresModos = $smarty->_tag_stack[$punteroPilaPanel][1]['tresModos'];
        // Estamos en un tres modos y dentro de una tabla, los campos 'external' no entran
        // No se activen los campos de inserción en la tabla en un tres modos
        if ( ( (($idPanel == 'lis') || ($idPanel == 'lisDetalle')) && ($CWAbuelo == 'CWTabla')) && ($tresModos == 1) && ($iterActual >= $numRegTotales))
        {
                $compotxt = '';
        }
        
        return($igepSmarty->getPreScript().$ini.$compotxt.$fin);
}