<?
###########################################
//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=" ";
}
$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." ".$e1.$this->rotulo.$e2;
//posición 4: rótulo - campo
} elseif($this->rotulo_pos==4) {
$dump=$br.$e1.$this->rotulo.$e2." ".$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
?> |