$cadena"; } } class ComponentesWeb extends FuncionesComponentesWeb { var $name; // nombre del componente web var $aParametrosComponente; //matriz, para cada instancia de un componente => copia de $params del componente var $cadena_parametros; //varchar, contendra los parametros (exceptuando los propios) bien estructurados y en html del componente var $estilo; //varchar, indica propiedades establecidas para el componente en montarEstado y montarEstilo. var $sololectura; //varchar unico contendra "readonly" (de momento) si se indica var $numInstancia; // int, identificador unico de instancia del objeto //Coleccion de variables temporales para guardar los eventos para su posterior montaje. var $eventoOnBlur; var $eventoOnFocus; var $eventoOnClick; var $eventoOnDBLClick; var $eventoOnSelect; var $eventoOnChange; var $eventoOnMouseOver; var $eventoOnMouseOut; var $eventoOnMouseMove; var $eventoOnMouseUp; var $eventoOnMouseDown; var $eventoOnKeyUp; var $eventoOnKeyDown; var $eventoOnKeyPress; var $conVentanaModal; //Muestra los mensajes de error con ventana Modal en lugar de con alert. function ComponentesWeb() { FuncionesComponentesWeb::FuncionesComponentesWeb(); //Inicializamos algunas variables de la clase $this->aParametrosComponente = array(); }//FIN constructor // ---------------------------------------------------------- // //SET's Y GET's function setName($nombre) { $this->name=$nombre; } function setNumInstancia($instancia) { $this->numInstancia=$instancia; } function getName() { return $this->name; } function getNumInstancia() { return $this->numInstancia; } //FIN SET's Y GET's // ----------------------------------------------------------------// function montarEstilo() { //Esta funcion se encarga de almacenar en el buffer de cadena_parametros los parametros del estilo del componente //Obtenemos el identificador unico del componente y si nombre $num_instancia = $this->numInstancia; if(isset($this->aParametrosComponente[$num_instancia]['class'])) { $this->estilo = $this->aParametrosComponente[$num_instancia]['class']; } } function montarEstado() { //Esta funcion se encarga de almacenar en el buffer de //cadena_parametros los parametros del estado del componente //Obtenemos el identificador unico del componente y su nombre //$num_instancia = end(array_keys($this->aInstanciasComponentes)); $num_instancia = $this->numInstancia; $editable = $this->aParametrosComponente[$num_instancia]['editable']; if($editable) { $estado=strtoupper($estado); if ($estado=="EDITABLE") { $this->estilo="EDITABLE"; } if ($estado=="NOEDITABLE") { $this->estilo="NOEDITABLE"; $this->sololectura = "readOnly"; } if ($estado=="DESHABILITADO") { $this->estilo="DESHABILITADO"; $this->sololectura = "readOnly"; } if ($estado=="MODIFICABLE") { $this->estilo="MODIFICABLE"; } if ($estado=="TABLA") { $this->estilo="TABLA"; $this->sololectura = "readOnly"; } if ($estado=="TABLANOEDITABLE") { $this->estilo="TABLANOEDITABLE"; $this->sololectura = "readOnly"; } if ($estado=="OBLIGATORIO") { $this->estilo="EDITABLE"; //Solo si el componente es de tipo CWCampoTexto, CWCampoTextoNumerico, CWAreaTexto $tipo_componente=end(array_keys($this->aComponentes)); if (($tipo_componente=="CWCampoTexto") || ($tipo_componente=="CWCampoTextoNumerico") || ($tipo_componente=="CWAreaTexto")) { $this->generarJS("onBlur","comprobarVacio",array("this",$this->name." ".ERRORNOVACIO),$conVentanaModal); // Nota: Equipo IGEP // ESTUDIAR LA INCLUSIÓN DE UNA FUNCION // JScript para activar la capa de error del CWVwntana /*$conVentanaModal=strtoupper($this->aParametrosComponente[$num_instancia]['conVentanaModal']); if($conVentanaModal=="TRUE"){ $this->generarJS("onBlur","capaErrorSH",array("?view=views/modo_alerta.php&err_cod=".ERRORNOVACIO."&err_bre=".ERRORNOVACIO,250,350)); }else{ $this->generarJS("onBlur","comprobarVacio",array("this",$this->name." ".ERRORNOVACIO)); }*/ } // Guardamos que es obligatorio, para poder verificarlo en el momento en que se haga submit //$this->ponerCampoObligatorio($this->name); } // if($estado=="NO_PERMISO") { // $conVentanaModal=strtoupper($this->aParametrosComponente[$num_instancia]['conVentanaModal']); // $tipo_componente=end(array_keys($this->aComponentes)); // if (($tipo_componente=="CWCampoTexto") || ($tipo_componente=="CWCampoTextoNumerico") || ($tipo_componente=="CWAreaTexto")) { // $this->generarJS("onKeyPress","sinPermiso",array("this",$this->name." ".ERRORSINPERMISO),$conVentanaModal); // $this->estilo="SIN_PERMISO"; // } // } // if($estado=="ERROR") { // //El JS es generado por el componente, requiere longuitudMinima // $this->estilo="ERROR"; // } // if($estado=="ACTIVADO") { // $this->estilo="ACTIVADO"; // } } else { //Si no tiene estado definido ni estilo, por defecto estara ACTIVADO if(!isset($this->aParametrosComponente[$num_instancia]['class'])) { $this->estilo="EDITABLE"; } } }//FIN funcion montarEstado function montarEventos($evento,$cadena) { //Metodo encargado de almacenar correctamente el parametro de evento //Se filtrara por el tipo de evento dispuesto $evento = strtolower($evento); //para asegurarnos que funcionara correctamente switch ($evento) { case 'onblur': $this->eventoOnBlur.="$cadena"; break; case 'onfocus': $this->eventoOnFocus.="$cadena"; break; case 'onclick': $this->eventoOnClick.="$cadena"; break; case 'ondblclick': $this->eventoOnDBLClick.="$cadena"; break; case 'onselect': $this->eventoOnSelect.="$cadena"; break; case 'onchange': $this->eventoOnChange.="$cadena"; break; case 'onmouseover': $this->eventoOnMouseOver.="$cadena"; break; case 'onmouseout': $this->eventoOnMouseOut.="$cadena"; break; case 'onmousemove': $this->eventoOnMouseMove.="$cadena"; break; case 'onmouseup': $this->eventoOnMouseUp.="$cadena"; break; case 'onmousedown': $this->eventoOnMouseDown.="$cadena"; break; case 'onkeyup': $this->eventoOnKeyUp.="$cadena"; break; case 'onkeydown': $this->eventoOnKeyDown.="$cadena"; break; case 'onkeypress': $this->eventoOnKeyPress.="$cadena"; break; }//FIN switch evento }//FIN funcion montarEventos function setManejadoresBasicos($params) { /* Esta funcion realiza la composición de la cadena que devolvera al componente, combinando todos los eventos junto al estado y los estilos que el componente lleve asociado mediante su $params. */ //Inicializamos las variables, para cada llamada de un componente $this->cadena_parametros=""; $this->estilo=""; $this->sololectura=""; $this->eventoOnBlur=""; $this->eventoOnFocus=""; $this->eventoOnClick=""; $this->eventoOnDBLClick=""; $this->eventoOnSelect=""; $this->eventoOnChange=""; $this->eventoOnMouseOver=""; $this->eventoOnMouseOut=""; $this->eventoOnMouseMove=""; $this->eventoOnMouseUp=""; $this->eventoOnMouseDown=""; $this->eventoOnKeyUp=""; $this->eventoOnKeyDown=""; $this->eventoOnKeyPress=""; //Obtenemos el identificador unico del componente $num_instancia = end(array_keys($this->aInstanciasComponentes)); $this->setNumInstancia($num_instancia); $this->aParametrosComponente[$num_instancia] = $params; //A partir de aqui vamos a descomponer todo el vector de parametros del componente //Se llama a montarEstilo, siempre primero! Pues si tiene estado, montarEstado debe machacar la variable // $this->montarEstilo(); // $this->montarEstado(); //Montamos todos los eventos, se encarga el metodo montarEventos foreach ($this->aParametrosComponente[$num_instancia] as $clave => $valor) { //Se convierten todos los parametros a "eventos", si algun parametro no es un evento //que este almacenado en el metodo montarEventos, no pasa nada. $this->montarEventos($clave,$valor); }//FIN foreach }//Fin manejadoresBasicos // ------------------------------------------------------------------------ // function generarJS($evento,$nombreFuncion,$parametros,$codMensaje="") { $cadena = ""; //Para algunas funciones js es necesario montarlo de diferente forma // No utilizamos el campo 'sinpermiso' x ahora //if (strtolower($nombreFuncion)=="sinpermiso") { $cadena="return "; } $cadena .= "if (hayError != true) $nombreFuncion("; //$cadena .= "$nombreFuncion("; $cadena .="'$codMensaje'"; $numpar=count($parametros); for($i=0;$i<$numpar;$i++) { $cadena .= ","; // Segun el tipo del parametro tendre q pasarselo entre comillas simples $par=trim($parametros[$i]); if(!is_numeric($par)) { // si es "this" o "event", lo pondr� sin '' if($par!="this" && $par!="event" && $par!="this.form") { $cadena.="'$par'"; } else { $cadena.="$par"; } } else { $cadena.="$par"; } }//FIN for // Fin de la llamada a la funcion $cadena.=");"; //Llamamos al metodo encargado de almacenar correctamente el parametro $this->montarEventos($evento,$cadena); }//FIN funcion generarJS function generarJSComprobacionFormulario() { /** genera el c�digo javascript encargado de comprobar que todos los campos obligatorios del formulario activo han sido completados, y lo devuelve como una cadena para que el componente situe este fragmento en el c�digo que lo muestra en HTML */ $resultado=""; //var_dump($this->aFormRangosFechas); $numElem=count($this->aFormCamposObligatorios); $numElem2=count($this->aFormRangosFechas); //var_dump($numElem2); if($numElem<=0 && $numElem2<=0) { return $resultado; } else { $resultado.="javascript:var a=new Array(), b=new Array();"; for($i=0;$i<$numElem;$i++) { $resultado.="a.push(".$this->obtenerNombreForm().".elements['".$this->aFormCamposObligatorios[$i]."']);"; } for($i=0;$i<$numElem2;$i=$i+3) { $resultado.="b.push(".$this->obtenerNombreForm().".elements['".$this->aFormRangosFechas[$i]."']);"; $resultado.="b.push('".$this->aFormRangosFechas[$i + 1]."');"; $resultado.="b.push('".$this->aFormRangosFechas[$i + 2]."');"; } $resultado.="var resultado=compruebaObligatorios(".$this->obtenerNombreForm().",a,'".ERRORNOVACIO."');"; $resultado.="var resultado2=compruebaRangos(".$this->obtenerNombreForm().",b,'".ERRORRANGOFECHAS."','".$conVentanaModal."');"; $resultado.="if((resultado==true)&&(resultado2==true)){document.".$this->obtenerNombreForm().".submit();}"; $this->montarEventos("onClick",$resultado); } }//FIN funcion generarJSComprobacionFormulario function montarParametros() { // Se encarga de montar la cadena de parametros, del componente respectivo que realiza la llamada, // que contiene los eventos y/o propiedades de estado if ($this->eventoOnBlur != "") { $this->cadena_parametros.="OnBlur=\"".$this->eventoOnBlur."\" "; } if ($this->eventoOnFocus != "") { $this->cadena_parametros.="OnFocus=\"".$this->eventoOnFocus."\" "; } if ($this->eventoOnClick != "") { $this->cadena_parametros.="OnClick=\"".$this->eventoOnClick."\" "; } if ($this->eventoOnDBLClick != "") { $this->cadena_parametros.="OnDBLClick=\"".$this->eventoOnDBLClick."\" "; } if ($this->eventoOnSelect != "") { $this->cadena_parametros.="OnSelect=\"".$this->eventoOnSelect."\" "; } if ($this->eventoOnChange != "") { $this->cadena_parametros.="OnChange=\"".$this->eventoOnChange."\" "; } if ($this->eventoOnMouseOver != "") { $this->cadena_parametros.="OnMouseOver=\"".$this->eventoOnMouseOver."\" "; } if ($this->eventoOnMouseOut != "") { $this->cadena_parametros.="OnMouseOut=\"".$this->eventoOnMouseOut."\" "; } if ($this->eventoOnMouseMove != "") { $this->cadena_parametros.="OnMouseMove=\"".$this->eventoOnMouseMove."\" "; } if ($this->eventoOnMouseUp != "") { $this->cadena_parametros.="OnMouseUp=\"".$this->eventoOnMouseUp."\" "; } if ($this->eventoOnMouseDown != "") { $this->cadena_parametros.="OnMouseDown=\"".$this->eventoOnMouseDown."\" "; } if ($this->eventoOnKeyUp != "") { $this->cadena_parametros.="OnKeyUp=\"".$this->eventoOnKeyUp."\" "; } if ($this->eventoOnKeyDown != "") { $this->cadena_parametros.="OnKeyDown=\"".$this->eventoOnKeyDown."\" "; } if ($this->eventoOnKeyPress != "") { $this->cadena_parametros.="OnKeyPress=\"".$this->eventoOnKeyPress."\" "; } // if ($this->estilo != "") { // $this->cadena_parametros.="class=\"".$this->estilo."\" "; // } // if ($this->sololectura != "") { // $this->cadena_parametros.= $this->sololectura; // } }//FIN funcion montarParametros function getManejadoresBasicos() { //Se monta la cadena de parametros que requerira el componente, se monta aqui debido a que // las funciones que generan JS pueden ser llamadas desde cuqlquier parte $this->montarParametros(); //Devuelve la cadena de parametros que ha debido de montarse previamente return $this->cadena_parametros; }//FIN funcion getManejadoresBasicos /* FUNCIONES QUE ALGUN DIA SE PODRAN UTILIZAR, DE MOMENTO SE COMENTAN function montarEventosRaton() { } function montarEventosKeys() { } function montarEventosTexto() { } function montarEventosFoco() { } */ //SET's Y GET's function setConVentanaModal($conVentanaModal) { $this->conVentanaModal=$conVentanaModal; } function getConVentanaModal() { return $this->conVentanaModal; } //FIN SET's Y GET's }//FIN CLASE ComponentesWeb ?>