Login   Register  
PHP Classes
elePHPant
Icontem

File: class_campo_001.php3

Recommend this page to a friend!
Stumble It! Stumble It! Bookmark in del.icio.us Bookmark in del.icio.us
  Classes of Devta Singh  >  Form auto Generator  >  class_campo_001.php3  >  Download  
File: class_campo_001.php3
Role: ???
Content type: text/plain
Description: Class Campo (Field)
Class: Form auto Generator
Author: By
Last change:
Date: 2001-02-12 14:54
Size: 11,153 bytes
 

Contents

Class file image Download
<?
###########################################
//inicio definicion clase Campo
class Campo {

###########################################
//variables de definicion de campo

	var $nombre;					//nombre del campo
	var $tipo;						//tipo de campo (según la lista de arriba)
	var $valor;						//valor asignado por defecto al campo
	
	var $longitud;				//(tipos TEXT y PASSWORD) -> longitud visible del campo 
												//(tipo TEXTAREA) -> numero de columnas

	var $longitud_maxima;	//(tipos TEXT y PASSWORD) -> longitud máxima del contenido del campo 
												//(tipo TEXTAREA) -> numero de filas (líneas)

	var $valores;					//(tipos RADIO y SELECT) -> lista de valores posibles del campo

	var $evento;					//evento de javascript a situar dentro del código de campo	
	var $evento_funciones;//código de las funciones de javascript en caso de que el evento (anterior) lo requiera

	var $habilitado;			//especifica si el campo está habilitado o deshabilitado (disabled)
	var $deshabilitado;	

	var $rotulo;					//TEXTo que acompaña y describe el campo
	var $rotulos;					//(tipos RADIO y SELECT) -> lista de rotulos para cada uno de los valores
	var $rotulo_pos;			//posición del rótulo
	var $rotulo_estilo;		//estilo css del rótulo
	
	var $poner_rotulos;		//determina si los campos se muestran con rótulos o sin ellos
	var $poner_br;				//determina si se incluirán <BR> en los rótulos mostrados
	var $destacar_campo;	//destaca el campo cuyo valor es el valor por defecto (RADIO y SELECT)
	

###########################################
//funciones


	//función que inicia el campo
	function inicia_campo(){
		#global $multiple,$valor;
		$dump="";
		
		if($this->tipo=="TEXT" || $this->tipo=="HIDDEN" || $this->tipo=="CHECKBOX" || $this->tipo=="PASSWORD" || $this->tipo=="BUTTON"){
			$dump="\n<INPUT TYPE=\"$this->tipo\" NAME=\"$this->nombre\"";
		} elseif ($this->tipo=="SELECT") {		
			$dump="\n<SELECT NAME=\"$this->nombre\"".$this->deshabilitado.$this->multiple.$this->evento.">";
			if($this->poner_rotulos){
				if($this->poner_br){
					$br="\n<br>";
				}	else {
					$br="";
				}				
				$dump=$br.$this->rotulo.$dump;
			}
		} elseif ($this->tipo=="TEXTAREA") {		
			$dump="\n<TEXTAREA NAME=\"$this->nombre\"".$this->deshabilitado.$this->multiple.$this->evento."";
		} 
		return($dump);		
	}


	//función que dibuja el nucleo del campo
	function nucleo_campo(){	
		#global $tipo,$valor,$valores,$rotulos,$longitud,$longitud_maxima;
		#global $rotulo_estilo,$rotulo_pos,$nombre;	
		$dump="";	
				
		if($this->tipo=="TEXT" || $this->tipo=="PASSWORD"){
		//campo tipo TEXT o PASSWORD
		
			$dump=" SIZE=\"$this->longitud\" ";
			$dump.="MAXLENGTH=\"$this->longitud_maxima\" ";
			$dump.="VALUE=\"$this->valor\"";
			
		} elseif($this->tipo=="HIDDEN"){
		//campo tipo HIDDEN
		
			$dump.=" VALUE=\"$this->valor\"";
			
		} elseif($this->tipo=="CHECKBOX"){
		//campo tipo CHECKBOX
		
			$dump.=" VALUE=\"$this->valor\"";			
			
		} elseif ($this->tipo=="SELECT") {
		//campo tipo SELECT
		
			$listaval=explode(",",$this->valores);
			$listarot=explode(",",$this->rotulos);
			$n=SIZEof($listaval);
			for($c=0;$c<$n;$c++){
				$val=$listaval[$c];
				$rot=$listarot[$c];
				if($this->valor==$val){
					$seleccionado=" SELECTED";
					$marca="->";
				} else {
					$seleccionado="";
					$marca="&nbsp;&nbsp;&nbsp;&nbsp;";
				}
				$dump.="\n<OPTION VALUE=\"$val\"$seleccionado>$marca$rot</OPTION>";
			}				
			
		} elseif ($this->tipo=="RADIO") {
		//campo tipo RADIOBUTTON
							
			$listaval=explode(",",$this->valores);
			$listarot=explode(",",$this->rotulos);
			$n=sizeof($listaval);
			for($c=0;$c<$n;$c++){
				$val=$listaval[$c];
				$rot=$listarot[$c];

				//si se ha de destacar el campo seleccionado
				if($this->destacar_campo){
					if($this->valor==$val){
						$seleccionado=" CHECKED";
						$marca="#";
						$destacar_campo1="<b>(</b>";
						$destacar_campo2="<b>)</b>";
						$destacar_rotulo1="<b>";
						$destacar_rotulo2="</b>";					

						$destacar1="<b>";
						$destacar2="</b>";
					} else {
						$seleccionado="";
						$marca="";
						$destacar_campo1="";
						$destacar_campo2="";
						$destacar_rotulo1="";
						$destacar_rotulo2="";					
					}
				}
				
				//si se establecio $poner_rotulos
				if($this->poner_rotulos){
					if($this->poner_br){
						$br="\n<br>";
					} else {
						$br="";
					}
				
					//pone los rotulos correspondientes
					$campo_="\n$destacar_campo1<INPUT TYPE=\"RADIO\" NAME=\"$this->nombre\" VALUE=\"$val\"$seleccionado$this->deshabilitado$this->evento>$destacar_campo2";
					$letrero_="\n$br<SPAN CLASS=\"$this->rotulo_estilo\">$destacar_rotulo1$marca$rot$destacar_rotulo2</SPAN>";
					//pone el rotulo en el sitio indicado
					if($this->rotulo_pos==6){
						$dump.=$campo_.$letrero_;
					} elseif($this->rotulo_pos==4) {
						$dump.=$letrero_.":".$campo_;					
					} else {
						$dump.="$campo_$letrero_<br>";
					}

				}else {
					$dump.="\n<INPUT TYPE=\"RADIO\" NAME=\"$this->nombre\" VALUE=\"$val\"$seleccionado$this->deshabilitado$this->evento>";
				}
								
			}//fin del for
			
		} elseif ($this->tipo=="TEXTAREA") {
		//campo tipo TEXTAREA
		
			$dump=" cols=\"$this->longitud\"";
			$dump.=" rows=\"$this->longitud_maxima\">";
			$dump.="$this->valor";

		} elseif($tipo=="BUTTON"){
		//campo tipo BUTTON
		
			$dump.=" VALUE=\"this->$valor\"";			
			
		}//fin del if

		return($dump);
	}//fin de la funcion

	function finaliza_campo(){		
		$dump="";
				
		if($this->tipo=="TEXT" || $this->tipo=="HIDDEN" || $this->tipo=="CHECKBOX" || $this->tipo=="PASSWORD" || $this->tipo=="BUTTON"){
			$dump=$this->deshabilitado.$this->evento.">";
		} elseif ($this->tipo=="SELECT") {		
			$dump="\n</SELECT>";
		} elseif ($this->tipo=="TEXTAREA") {		
			$dump="</TEXTAREA>";
		}		
		return($dump);
	}	

//constructor
//la función constructora es la que se llama igual que la clase

	function Inicializa_Campo($campo){	
			
		#global $nombre,$tipo,$valor,$valores,$rotulos,$evento,$habilitado,$rotulo,$rotulo_pos,$rotulo_estilo,$js_funciones,$multiple;
		#global $longitud,$longitud_maxima,$deshabilitado;
		
		//establece las variables de control de errores
		$allright=1;
		$error_msg="";
		$error_num=0;
		
		//toma el valor del nombre de campo
		$this->nombre=$campo["nombre"];		
		$this->tipo=$campo["tipo"];
		$this->valor=$campo["valor"];
		
		$this->longitud=$campo["longitud"];
		$this->longitud_maxima=$campo["longitud_maxima"];
		
		$this->valores=$campo["valores"];
		$this->rotulos=$campo["rotulos"];
		$this->multiple=$campo["multiple"];
		$this->evento=$campo["evento"];
		$this->habilitado=$campo["habilitado"];
		$this->rotulo=$campo["rotulo"];
		$this->rotulo_pos=$campo["rotulo_pos"];
		$this->rotulo_estilo=$campo["rotulo_estilo"];
		$this->js_funciones=$campo["evento_funciones"];

		//comprueba errores
		//si no se especificó nombre del campo
		if($this->nombre==""){
			$allright=0;
			$error_num++;		
			$error_msg[($error_num - 1)]="Error $error_num - No se especifico NOMBRE del campo, es imprescindible...";			
		}
		
		//si no se especificó tipo del campo
		if($this->tipo==""){
			$allright=0;
			$error_num++;		
			$error_msg[($error_num - 1)]="Error $error_num - No se especifico TIPO del campo, es imprescindible...";			
		}
		
		//determina si esta deshabilitado
		if($this->habilitado){
			$this->deshabilitado="";
		} else {
			$this->deshabilitado=" disabled ";
		}
		
		//si todo ha salido bien, devuelve true, los variables son globales
		if($allright){
			return(true);
		} else {
			$error_msg=implode("\n<BR>",$error_msg);
			print "\n<BR><BR>Se han producido ($error_num) errores al definir el campo:<hr>$error_msg";
			return(false);
		}
	}
	
	function volcado_campo(){
	//esta funcion devuelve el codigo para generar el campo
	
		//variables globales
		#global $tipo,$nombre,$rotulo,$rotulo_pos,$rotulo_estilo,$js_funciones,$valores;
		
		//inicializa el campo a null
		$dump="";
		
		//si hay funciones (javascript) definidas las incorpora al código
		if($this->js_funciones){
			$dump.="\n<SCRIPT language=\"JavaScript\">\n<!--\n$this->js_funciones\n-->\n</SCRIPT>\n";
		}
		
		//añade la parte inicial del campo
		$dump.=$this->inicia_campo();		
		
		//añade el núcleo del campo
		$dump.=$this->nucleo_campo();
		
		//añade el final del campo
		$dump.=$this->finaliza_campo();
		
		//devuelve como resultado el código del campo
		return($dump);
	}
	
	function tipo_de_campo(){
		switch ($this->tipo){
			case TEXT:
			{
				$tipo="T";
				break;
			}
			case PASSWORD:
			{
				$tipo="P";
				break;
			}
			case HIDDEN:
			{
				$tipo="H";
				break;
			}
			case CHECKBOX:
			{
				$tipo="C";
				break;
			}
			case SELECT:
			{
				$tipo="S";
				break;
			}
			case TEXTAREA:
			{
				$tipo="A";
				break;
			}
			case BUTTON:
			{
				$tipo="B";
				break;
			}
			case RADIO:
			{
				$tipo="R";
				break;
			}
			case IMAGE:
			{
				$tipo="I";
				break;
			}			
		}
		return($tipo);
	}
	
	function volcado(){
	//esta funcion devuelve el codigo para generar el campo
	
		//variables globales
		#global $tipo,$nombre,$rotulo,$rotulo_pos,$rotulo_estilo,$js_funciones,$valores;
		
		//inicializa el campo a null
		$dump="";
		
		//si hay funciones (javascript) definidas las incorpora al código
		if($this->js_funciones){
			$dump.="\n<SCRIPT language=\"JavaScript\">\n<!--\n$this->js_funciones\n-->\n</SCRIPT>\n";
		}
		
		//añade la parte inicial del campo
		$dump.=$this->inicia_campo();		
		
		//añade el núcleo del campo
		$dump.=$this->nucleo_campo();
		
		//añade el final del campo
		$dump.=$this->finaliza_campo();
		
		
		if($this->poner_rotulos){
		
			if($this->poner_br){
				$br="\n<br>";
			} else {
				$br="";
			}
		
			//si el el campo es uno de estos tipos
			if($this->tipo=="TEXT" || $this->tipo=="PASSWORD" || $this->tipo=="CHECKBOX" || $this->tipo=="SELECT" || $this->tipo=="TEXTAREA"){

				//si esta definido el estilo (CSS)
				if($this->rotulo_estilo){

					//define el estilo CSS con el que se dibujará el campo
					$e1="<SPAN CLASS=\"$this->rotulo_estilo\">";
					//define el cierre de la llamada de estilo CSS
					$e2="</SPAN>";


					//determina la posicion del rótulo y lo incorpora al código del campo
					//posición 6: campo - rotulo
					if($this->rotulo_pos==6){
						$dump=$br.$dump."&nbsp;".$e1.$this->rotulo.$e2;

					//posición 4: rótulo - campo
					} elseif($this->rotulo_pos==4) {
						$dump=$br.$e1.$this->rotulo.$e2."&nbsp;".$dump;

					//posición 0: sin rótulo
					} elseif($this->rotulo_pos==0) {

					//indeterminado: rotulo<br>campo			
					} else {
						$dump=$e1.$this->rotulo.$e2.$br.$dump;
					}			
				}
			}
		}
		
		//devuelve como resultado el código del campo
		return($dump);
	}	
	
}
//fin de la clase Campo
?>