PHP Classes
Icontem

File: panel_fichas.php


  Search   All class groups All class groups   Latest entries Latest entries   Top 10 charts Top 10 charts   Newsletter Newsletter   Blog Blog   Forums Forums   Help FAQ Help FAQ  
  Login   Register  
Recommend this page to a friend! ReTweet ReTweet Stumble It! Stumble It! Bookmark in del.icio.us Bookmark in del.icio.us
  Classes of Alfredo Rahn  >  Panel_Fichas tab control  >  panel_fichas.php  
File: panel_fichas.php
Role: Class source
Content type: text/plain
Description: Main panel_fichas class
Class: Panel_Fichas tab control
Deploys and handle HTML Tab Control using pure PHP
 

Contents

Class file image Download
<?php
/**
* Clase para la creación de un panel de fichas (tab control)
*
* @author Alfredo Rahn <arahn@thor.uc.edu.ve>
* @version 0.2 (24-09-2005)
* @version 0.1 (30-06-2005)
*/

/**
* Clase que crea un panel de fichas html
*/
class panel_Fichas {
    
/**
    * El vector con la configuración de las fichas
    */
    
var $CFG;
    
/**
    * El key de la lista activa
    */
    
var $Activa;
    
/**
    * La cantidad de filas entre las que vamos a distribuir las fichas
    */
    
var $Filas;
    
/**
    * Cadena con los atributos de despliegue de la tabla
    */
    
var $TAttr;
    
/**
    * Cadena con los atributos de despliegue de la celda activa
    */
    
var $ACAttr;
    
/**
    * Cadena con los atributos de despliegue de la celda inactiva
    */
    
var $ICAttr;
    
/**
    * El nombre de la variable que contiene la ficha activa
    */
    
var $FA_name;
    
/**
    * Constructor de la Clase 
    *
    * @param array $Fichas Vector referencial con la configuración
    * @param mixed $Activa La llave de la ficha activa (o cero la primera)
    * @param string $TAttr Los atributos para el despliegue de la tabla
    * @param string $ACAttr Atributos para el despliegue de celda activa
    * @param string $ICAttr Atributos para el despliegue de celda activa
    * @param number $filas Número de filas a desplegar
    * @param string $FA_name El nombre de la variable de la ficha activa
    */
    
function panel_Fichas(  $Fichas=array(),
                            
$Activa=0,
                            
$TAttr="",
                            
$ACAttr="",
                            
$ICAttr="",
                            
$filas=1,
                            
$FA_name="ficha") {
        
// Si hay elementos en el vector Fichas
        
if ($bueno=    !empty($Fichas) && is_array($Fichas))
            
// Si estos elementos al menos tienen etiqueta
            
foreach(array_keys($Fichas) as $key)
                if (!(
$bueno strlen($Fichas[$key][LABEL]) > 0))
                    continue;
        
// Si bueno es true, es que el array sirvio para algo
        
$this->CFG $bueno $Fichas : array();

        
// La ficha activa        
        
$this->Activa = ($Activa != 0) && 
                        
in_array($Activa,array_keys($this->CFG)) ?
                        
$Activa 
                        
0;
        
// Los atributos de formato
        
$this->TAttr  = (!empty($TAttr)) ? 
                        
$TAttr :
                        
"";
        
$this->ACAttr = (!empty($ACAttr)) ? 
                        
$ACAttr :
                        
"";
        
$this->ICAttr = (!empty($ICAttr)) ? 
                        
$ICAttr :
                        
"";
        
// El nombre de la variable de la ficha activa
        
$this->FA_name = (strlen($FA_Name) > 0) &&
                         (
htmlentities($FA_Name) == $FA_Name) ? 
                         
$FA_Name :
                         
"ficha";
    }
    
/**
    * Inserta una nueva ficha 
    *
    * @param string $llave El nombre o numero de llave
    * @param string $titulo El titulo a mostrar para la ficha
    * @param string $valor El valor o contenido de la ficha
    * @param string $tipo El tipo de valor o contenido 
    */
    
function nuevaFicha($llave,$titulo,$valor="",$tipo="") {
        
// Si algo anda mal se va
        
if (empty($key) ||
            empty(
$value) ||
            !
is_numeric($pos) ||
            (int)
$pos >= 0) return false;
        
// Monta el valor en el vector
        
$this->Elem array_merge($this->Elem,
                                  array(
$key => $value));
        
// Si esta en el de posiciones tambien
        
if ($pos 0$this->Pos[$key] = $pos;
        return 
true;
    }
    
/**
    * Elimina una Ficha
    *
    * @param string $llave La llave que identifica la ficha a borrar
    */
    
function borrarFicha($llave) {
        
// Si no existe nos vamos
        
if (!isset($this->Elem[$key])) return false;
        
// Si existe en el vector de elementos, borralo
        
unset($this->Elem[$key]);
        
// Si esta en el vector de posiciones borralo
        
if (isset($this->Pos[$key])) unset($this->Pos[$key]);
        return 
true;
    }
    
/**
    * Activa o desactiva (permitir el link) en una ficha
    *  
    * @param string $llave El codigo de la ficha en cuestión
    * @param bool $estado true si se quiere activa, false otherwhise
    */
    
function estadoFicha($llave,$estado="") {
        
// Si la llave no existe, devuelve vacio
        
if (!array_key_exists($llave,$this->CFG))
            return 
"";
        
        if (
$estado === "") {
            return isset(
$this->CFG[$llave][DISABLED]) ?
                    !
$this->CFG[$llave][DISABLED] :
                    
true;
        } else {
            
$this->CFG[$llave][DISABLED] = !(bool)$estado;
            return (bool)
$estado;
        }
    }
    
/**
    * Cambia la ficha activa a solicitud del usuario
    *  
    * @param array $In El vector con las entradas del usuario
    */
    
function cambiarActiva(&$In) {
        if (isset(
$In[$this->FA_name]) &&
            
strlen($In[$this->FA_name]) > &&
            
array_key_exists($In[$this->FA_name],$this->CFG) &&
            !
$this->CFG[$In[$this->FA_name]][DISABLED]) {
            
// Ficha activa la que le dijeron
            
$this->Activa $In[$this->FA_name];
            return 
true;
        } else {
            
// La primera que no este inactiva pues la otra no es válida
            
foreach(array_keys($this->CFG) as $act) {
                if (!
$this->CFG[$act][DISABLED]) {
                    
$this->Activa $act;
                    return 
true;
                }
            }
            return 
false;
        }
    }
    
/**
    * Despliega el html con el formulario
    *
    */
    
function htmlPanel() {
        
$s  "<table {$this->TAttr}>\n"
            
"<tr><TD>\n"
            
"\t<table width=\"100%\" cellpadding=\"3\" cellspacing=\"0\"><TR>\n";
        foreach(
array_keys($this->CFG) as $key) {
            
$fmt = ($this->Activa == $key) ? $this->ACAttr $this->ICAttr;
            
// Imprime las celdas, una ficha en cada una            
            
$s .= "\t<td nowrap $fmt>&nbsp;\n";
                if (
$this->CFG[$key][DISABLED] === true) {
                    
$s .= $this->CFG[$key][LABEL] . "&nbsp;</td>\n";
                } else {
                    
$s .= "\t\t<a href=\"" $_SERVER['PHP_SELF'] . "?" 
                        
$this->FA_name "=" $key "\">"
                        
$this->CFG[$key][LABEL] . "</a>&nbsp;</td>\n";
                }
        }
        
// Imprime la celda mas derecha, la que arriba a las otras
        
$s .= "\t<td width=\"80%\">&nbsp;</td>\n";
        
$s .= "\t</tr>\n\t</table>\n</td></tr>\n"
            
"<TR><td height=\"200\" {$this->ACAttr}>";
        
// Coloca el contenido de la ficha en su celda
        
switch ($this->CFG[$this->Activa][TYPE]) {
            case 
"INCLUDE":
                if (
file_exists($this->CFG[$this->Activa][CONTENT])) 
                    echo 
$s;
                    include(
$this->CFG[$this->Activa][CONTENT]);
                    
$s "";
                break;
            case 
"STRING":
            default:
                
$s .= $this->CFG[$this->Activa][CONTENT];
                break;
        }
        
$s .= "</td></tr>\n</table>";
        echo 
$s;
    }
}
?>

 
  Advertise on this site Advertise on this site   Site map Site map   Statistics Statistics   Site tips Site tips   Privacy policy Privacy policy   Contact Contact  

For more information send a message to :
info at phpclasses dot org.
Copyright (c) Icontem 1999-2009 PHP Classes - PHP Class Scripts
  PHP Book Reviews - Reviews of books and other products