aComponentes=array(); $this->aInstanciasComponentes=array(); $this->aListaEstilos=array(); $this->aListaScripts=array(); $this->aElementosMenu=array(); $this->aNumEM=array(); $this->aMenuActual=array(); // inicializamos el control de formulario... $this->enForm=false; $this->aFormCamposObligatorios=array(); $this->aFormRangosFechas=array(); $this->nombreFormulario=""; $this->numFormularios=0; // inicializo el control de tablas y columnas de la tabla $this->enTabla=false; $this->aColumnas=array(); // inicializo imagenes por defecto $this->imgBotonPorDefecto="images/botones/13.gif"; //inicializamos por defecto las variables para controlar las pestanyas. $this->conImagen=false; $this->anchoImagen=50; $this->altoImagen=40; //Nombre del panel $this->name="Maestro"; //Estilo de las pestanyas $this->estiloPestanyaAct=""; $this->estiloPestanyaIna=""; //Número de pestanyas existentes en el panel. $this->numPestanyas=0; //Alineación de las pestañas $this->alignPestanyas="vertical"; //Array con las pestanayas del panel $this->pestanyasPanel=array(); //Array con las cadenas HTML de los componentes de una fila. $this->componentesFila=array(); //inicializa la variable para el control del action del formulario. $this->actionForm=""; } function empezarForm () { if($this->enForm) { mydebug("CW::empezarForm: no se ha indicado el final de form previo"); } else { mydebug("CW::empezarForm: Nuevo formulario"); $this->enForm=true; $this->aFormCamposObligatorios=array(); $this->aFormRangosFechas=array(); /* Tambien tengo que incrementar el numero de forms que ya ha aparecido en la página, por si el diseñador no ha puesto nombre al form poder hacer referencia a el de alguna manera desde javascript */ $this->numFormularios++; $this->nombreFormulario=""; } } function acabarForm () { if(!$this->enForm) { mydebug("CW::acabarForm: ERROR no se ha indicado el principio de form previo"); } else { $this->enForm=false; unset($this->aFormCamposObligatorios); unset($this->aFormRangosFechas); $this->nombreFormulario=""; //tambien vaciamos el nombre del formulario mydebug("CW::acabarForm: form cerrado"); } } function empezarScript() { if($this->enScript) { mydebug("CW::empezarScript: no se ha indicado el final de SCRIPT previo"); } else { mydebug("CW::empezarScript: Nuevo SCRIPT"); $this->enScript=true; } }//FIN empezarScript function acabarScript() { if(!$this->enScript) { mydebug("CW::acabarScript: ERROR no se ha indicado el principio de SCRIPT previo"); } else { $this->enScript=false; mydebug("CW::acabarScript: SCRIPT cerrado"); } }//FIN funcion acabarScript function empezarMenu() { $this->enMenu=true; $this->numMenu++; $this->contMenuAbiertos++; /* if ($this->numMenu < $this->contMenuAbiertos) { $this->menuActual=$this->contMenuAbiertos; } else { $this->menuActual=$this->numMenu; } */ //Se añade el indice del menu al vector de menus abiertos array_push($this->aMenuActual,$this->contMenuAbiertos); //Se prepara el vector de Items para el menu nuevo $this->aNumEM[$this->contMenuAbiertos] = 1; }//FIN empezarMenu function acabarMenu() { if($this->enMenu) { // Se comprueba que se hayan cerrado todos los menus if ($this->numMenu == 0) { $this->enMenu=false; } $this->numMenu--; /* if ($this->numMenu < $this->contMenuAbiertos) { $this->menuActual=$this->contMenuAbiertos; } else { $this->menuActual=$this->numMenu; } $aux=$this->menuActual - 1; $this->menuActual=$aux; */ } //Sacamos el menu del vector de menus abiertos array_pop($this->aMenuActual); }//FIN funcion acabarMenu // Mete los menus y elementos menu en un array para su correcto tratamiento y al final vuelca el contenido function guardaMenu($menu) { $nuevo_elemento=""; //Obtenemos el menu actual abierto $menuActual = array_pop($this->aMenuActual); //volvemos a meter el menu actual array_push($this->aMenuActual,$menuActual); // El control lo lleva numMenu, que es la profundidad actual de menus switch ($this->numMenu) { case '-1': //El menu empieza array_push($this->aElementosMenu,$menu); break; case '0': // Primer nivel de Menu array_push($this->aElementosMenu,$menu); //Se prepara el vector aNumEM, inicializada en la primera llamada de enMenu //Resto de llamadas de Items en numMenu=0, la incrementan adecuadamente if (substr_count($menu,"new Item") > 0) $this->aNumEM[$menuActual]++; break; default: // Resto de niveles y elementos Menu if (($this->antMenu != "Menu") && (substr_count($menu,"new Menu") > 0)) { // Item previo + Menu // Se modifica el Item anterior para indicar el menuAnidado que ha de abrir $ultimo = array_pop($this->aElementosMenu); $arr = explode (",", $ultimo); $size=count($arr); for ($i=0; $i < $size; $i++) { if ($i == 5) $nuevo_elemento .= "'".$menuActual."'"; // Se asigna el menuAnidado else $nuevo_elemento .= $arr[$i]; if (($i + 1) < $size) $nuevo_elemento .= ","; // else $nuevo_elemento .= ");"; } // Se guarda el contenido en el array array_push($this->aElementosMenu,$nuevo_elemento); // Elemento anterior o item modificado que abrira el menu array_push($this->aElementosMenu,$menu); // El menu pasado // El vector de Items respecto al menuActual ya ha sido inicializado por el componente, // no se incrementa, puesto que hemos añadido un menu no elementoMenu } elseif (($this->antMenu == "Menu") && (substr_count($menu,"new Menu") > 0)) { mydebug("CW::guardaMenu: ERROR no pueden anidarse 2 menus sin elementos"); } else { // Se esta añadiendo un Item array_push($this->aElementosMenu,$menu); //Se incrementa el vector aNumEM respecto al menuActual para el proximo item $this->aNumEM[$menuActual]++; } break; }//FIN switch //Cuando termine todo se guarda que tipo de menu hemos tratado if (substr_count($menu,"Item") > 0) $this->antMenu = "Item"; else $this->antMenu = "Menu"; }//FIN guardaMenu function empezarArbol() { if($this->enArbol) { mydebug("CW::empezarArbol: no se ha indicado el final del ARBOL"); } else { mydebug("CW::empezarArbol: Nuevo ARBOL"); $this->enArbol=true; } }//FIN empezarArbol function acabarArbol() { if(!$this->enArbol) { mydebug("CW::acabarArbol: ERROR no se ha indicado el principio del ARBOL"); } else { $this->enArbol=false; mydebug("CW::acabarArbol: ARBOL cerrado"); } }//FIN funcion acabarArbol function ponerNombreForm($_nombre) { // nos permite modificar el nombre del form actual. Este nombre será util para hacer referencia al formulario desde código javascript, por ejemplo, para manejar eventos en respuesta a las acciones del usuario. $this->nombreFormulario=$_nombre; mydebug("CW::ponerNombreForm: ".$this->nombreFormulario); } function obtenerNombreForm() { // devuelve el nombre del formulario actual, y vacío si no estamos en mitad de un formulario. if($this->enForm) { return $this->nombreFormulario; } else { mydebug("CW::obtenerNombreForm: No está en un formulario!"); return(""); } } function obtenerNumeroForm() { /* devuelve el número de formulario en el que nos encontramos. Estos números se generan consecutivamente, como se puede ver en la función empezarForm */ return $this->numFormularios; } function obtenerImgBotonPorDefecto() { return $this->imgBotonPorDefecto; } function ponerCampoObligatorio($_nombrecampo) { // Añado $_nombrecampo a la lista de campos obligatorios del formulario actual // pero solo si ya hay un formulario abierto!! if($this->enForm) { //añadimos el campo $this->aFormCamposObligatorios[]=$_nombrecampo; // y por si acaso está repetido... eliminamos los valores duplicados $this->aFormCamposObligatorios=array_unique($this->aFormCamposObligatorios); } } function ponerCampoRangosFechas($_nombrecampo, $_fecha_inicio, $_fecha_fin) { // Añado $_nombrecampo a la lista de campos sometidos a un rango de fechas // pero solo si ya hay un formulario abierto!! if($this->enForm) { //añadimos el campo $this->aFormRangosFechas[]=$_nombrecampo; $this->aFormRangosFechas[]=$_fecha_inicio; $this->aFormRangosFechas[]=$_fecha_fin; // y por si acaso está repetido... eliminamos los valores duplicados //$this->aFormRangosFechas=array_unique($this->aFormRangosFechas); } } function anadirComponente($_nombreComponente) { /** Esta funcion se guarda _nombreComponente en la lista de componentes añadidos a esta página Devuelve el número ("índice") que corresponde al numero d instancias de este componente @param _nombreComponente string @returns int */ /* ahora _nombreComponente es la clave, y el valor es el numero de componentes ya creados */ if (array_key_exists($_nombreComponente,$this->aComponentes)) { $this->aComponentes[$_nombreComponente]++; } else { // es la primera vez que aparece, luego lo inicializo a 1 $this->aComponentes[$_nombreComponente]=1; } return($this->aComponentes[$_nombreComponente]); } function instanciarComponente($_nameComponente) { /** Esta funcion guarda una lista de componentes añadidos como clave unica => _nameComponente Devuelve el número ("índice") que corresponde a la clave unica de este componente @param _nombreComponente string @returns int */ $this->aInstanciasComponentes[]=$_nameComponente; return (end(array_keys($this->aInstanciasComponentes))); } function obtenerInstaciaComponente($_nameComponente) { /** Esta funcion consulta una lista de componentes añadidos como clave unica => _nameComponente Devuelve el número ("índice") que corresponde a la clave unica de este componente @param _nombreComponente string @returns int */ $clave= array_search($_nameComponente,$this->aInstanciasComponentes); return ($clave); } function obtenerNumInstancias($_nombreComponente) { /* Esta funcion comprueba si existe en el array de componentes $_nombreComponente y devuelve el numero de instancias de este, si no está devuelve 0 @param _nombreComponente string @returns int */ if (array_key_exists($_nombreComponente,$this->aComponentes)) { $numInstancias = $this->aComponentes[$_nombreComponente]; } else { // es la primera vez que aparece $numInstancias = 0; } return $numInstancias; }//FIN funcion obtenerNumInstancias function ponEstilo($_nombreEstilo) { /** Esta funcion la usa un componente cuando necesita un determinado css incluido en la pagina Si el ficherocss ya esta incluido, simplemente no se añade a la lista. Devuelve la cadena para incluir si lo añade Una cadena vacía, si ya estaba @param _nombreEstilo @returns string */ mydebug("[css ".$_nombreEstilo."]"); if(!in_array(CSS_PATH.$_nombreEstilo,$this->aListaEstilos)) { $this->aListaEstilos[]=CSS_PATH.$_nombreEstilo; $estilo = "\n\n"; $estilo .= "\n"; $estilo .= "\n"; return $estilo; } return ""; } function ponScript($_nombreScript) { /** Esta funcion la usa un componente cuando necesita un determinado script incluido en la pagina Si el _nombreScript ya esta incluido, simplemente no se añade a la lista. Devuelve la cadena para incluir si lo añade Una cadena vacía, si ya estaba @param _nombreScript @returns string */ mydebug("[scr: ".$_nombreScript."]"); if(!in_array($_nombreScript,$this->aListaScripts)) { $this->aListaScripts[]=$_nombreScript; $script = "\n\n"; $script .= "\n"; $script .= "\n"; return $script; } return ""; } function empezarTabla() { if($this->enTabla) { mydebug("CW::empezarTabla: no se ha indicado el final de TABLA previo"); } else { mydebug("CW::empezarTabla: Nueva TABLA"); $this->enTabla=true; } }//FIN empezarTabla function acabarTabla() { if(!$this->enTabla) { mydebug("CW::acabarTabla: ERROR no se ha indicado el principio de TABLA previo"); } else { $this->enTabla=false; unset($this->aColumnas); $this->aColumnas=array(); mydebug("CW::acabarTabla: TABLA cerrada"); } }//FIN funcion acabarTabla function anadirColumna($caracteristicas) { /** añade una nueva columna a la lista de columnas a mostrar param $caracteristicas: array asociativo */ if(!$this->enTabla) { mydebug("CW::anadirColumna: ERROR no se ha indicado el principio de TABLA previo"); } else { mydebug("CW::anadirColumna: COLUMNA añadida"); $this->aColumnas[]=$caracteristicas; } } function pre($variable) { /* muestra por pantalla el contenido de la variable $variable, con print_r y
 alrededor... */
	echo "
";
	print_r($variable);
	echo "
"; } //Establece si las pestañas del panel son con imagen. function setConImagen($conImagen){ $this->conImagen=$conImagen; } //Obtiene si las pestañas del panel son con imagen. function getConImagen(){ return $this->conImagen; } //Establece el ancho de la imagen de las pestañas del panel. function setAnchoImagen($anchoImagen){ $this->anchoImagen=$anchoImagen; } //Obtiene el ancho de la imagen de las pestañas del panel. function getAnchoImagen(){ return $this->anchoImagen; } //Establece el alto de la imagen de las pestañas del panel. function setAltoImagen($altoImagen){ $this->altoImagen=$altoImagen; } //Obtiene el alto de la imagen de las pestañas del panel. function getAltoImagen(){ return $this->altoImagen; } //Establece el nombre del panel. function setPanelName($name){ $this->name=$name; } //Obtiene nombre del panel. function getPanelName(){ return $this->name; } //Establece el estilo de la pestanya desactivada del panel. function setEstiloPestanyaIna($estiloPestanyaIna){ $this->estiloPestanyaIna=$estiloPestanyaIna; } //Obtiene el estilo de la pestanya desactivada del panel. function getEstiloPestanyaIna(){ return $this->estiloPestanyaIna; } //Establece el estilo de la pestanya activada del panel. function setEstiloPestanyaAct($estiloPestanyaAct){ $this->estiloPestanyaAct=$estiloPestanyaAct; } //Obtiene el estilo de la pestanya activada del panel. function getEstiloPestanyaAct(){ return $this->estiloPestanyaAct; } //Aumenta el número de pestañas existentes en el panel. function setNumPestanyas(){ $this->numPestanyas++; } //decrementa el número de pestañas existentes en el panel. function decrementarPestanyas(){ $this->numPestanyas--; } //Inicializa el número de pestañas existentes en el panel. function inicioNumPestanyas(){ $this->numPestanyas=0; } //Obtiene el número de pestañas existentes en el panel. function getNumPestanyas(){ return $this->numPestanyas; } //Ajusta la alineación de las pestañas existentes en el panel. function setAlignPestanyas($alignPestanyas){ $this->alignPestanyas=$alignPestanyas; } //Obtiene la alineación de las pestañas existentes en el panel. function getAlignPestanyas(){ return $this->alignPestanyas; } //Insertar pestanya en el final del array function insertarPestanya($pestanya){ array_push($this->pestanyasPanel,$pestanya); } //Extrae pestanya del comienzo del array function extraerPestanya(){ $pestanya=array_shift($this->pestanyasPanel); return $pestanya; } //Almacena las cadenas HTML de los componentes de una fila. function guardarComponentesFila($cadena){ array_push($this->componentesFila,$cadena); } //Extrae una copia de la cadena coponente anidado en la columna $columna. function obtebnerCadenaComponente($columna){ $cadena=$this->componentesFila[$columna]; return $cadena; } function empezarMenuAplicacion() { // Se comprueba que NO se este en un MenuAplicacion if (!$this->enMenuAplicacion) { $this->enMenuAplicacion=true; } else { mydebug("CW::MenuAplicacion: ERROR ya se ha abierto MenuAplicacion"); } }//FIN empezarMenu function acabarMenuAplicacion() { // Se comprueba que SI se este en un MenuAplicacion if($this->enMenuAplicacion) { $this->enMenuAplicacion=false; } else { mydebug("CW::MenuAplicacion: ERROR no se ha abierto MenuAplicacion"); } }//FIN funcion acabarMenu function guardaMenuAplicacion($menu) { //Se van almacenando los menuaplicacion que se le pasan en le orden correspondiente if (substr_count($menu,"MENU") > 0) { //Si es titulo $this->numMenuAplicacion++; } $this->aElementosMenuAplicacion[] = $menu; }//FIN funcion guardaMenuAplicacion function guardarActionForm($actionForm) { /* guarda el action del formulario en el que nos encontramos. */ $this->actionForm=$actionForm; } function obtenerActionForm() { /* devuelve el action del formulario en el que nos encontramos. */ return $this->actionForm; } }//FIN clase ?>