Location: PHPKode > scripts > sClassHTML > sclasshtml/library/sForm.class.php
<?php
/**
 *  Classe sForm
 */

// **********************************************************
//  Classe sForm
// **********************************************************
/** 
 * Questa classe implementa un oggetto sForm
 *   
 * In questo esempio viene mostrato come implementare un oggetto sForm
 * completo di elementi sLabel e di testo sText.
 * 
 * <code>
 * // creazione oggetto sForm 
 * $form = new sForm("formcms.php", "post");
 * 
 * // creazione di oggetti contenuti in un form  
 * $labelnome = new sLabel("Inserisci nome:", "descrizione");
 * $nome = new sText("nome", $_POST['nome'], 20, 20, "campo";
 * $labelcognome = new sLabel("Inserisci cognome:", "descrizione");
 * $cognome = new sText("cognome", $_POST['cognome'], 20, 20, "campo");
 * $invia = new sSubmit("submit", "Invia", "descrizione");
 * 
 * // assegnazione degli oggetti al form
 * $form->addObj($labelnome);
 * $form->addObj($nome);
 * $form->addObj($labelcognome);
 * $form->addObj($cognome);
 * $form->addObj($invia);  
 * 
 * // visualizzazione del codice html
 * echo $form;       
 * </code>
 *  
 * @author Dario Mazzeo <hide@address.com>
 * @version 1.0.0
 * @copyright Freesoftware Italia - www.freesoftwareitalia.it  
 * @package sClassHTML
 */
class sForm extends sClassHTML{
protected $action;
protected $method;

/**
 *  Creazione dell'oggetto sForm
 *  
 *  Esempio:
 *   
 *  <code>
 *  $myform = new sForm("index.php");
 *   
 *  $myform = new sForm("index.php", "post");
 *  
 *  $myform = new sForm("index.php", "get", "classecss");
 *  </code> 
 *  
 *  @param string $action Link alla pagina web di destinazione
 *  @param string $method Tipo di metodo per l'inivo dei dati (GET o POST)
 *  @param string $classe Nome della classe CSS  
 */ 
  public function __construct($action, $method="post", $classe="css_form"){
    $this->action=$action;
    $this->method=$method;
    $this->classe=$classe;    
  }

/**
 *  Aggiunta di un oggetto
 * 
 *  Esempio:
 *  
 *  <code>
 *  $myform = new sForm("index.php", "post");
 *  ...
 *  $myform->addObj($oggetto1_input);
 *  $myform->addObj($oggetto2_input, false);
 *  ...
 *  $oggetto2->metodo(...);  
 *  </code>    
 *  
 *  @param sClassHTML &$obj Oggetto passato per riferimento
 *  @param bool $delete Se la proprietà è impostata su true, l'oggetto viene cancellato    
 *  @return null
 */    
  public function addObj(sClassHTML &$obj, $delete=true){
    if ($obj->getZindex()>$this->getZindex()){
      $this->html.=$obj->getHtml();
      if ($delete) $obj=null;
    }
    else {
      throw new Exception("ATTENZIONE non è possibile aggiungere questa classe!");
    }
  }
  
/**
 *  Questo metodo consente l'aggiunta di una stringa all'interno del tag form
 *  
 *  Esempio di tag form:  
 *   
 *  <code>
 *  <form <tag_da_inserire> class='classe_css' ...>
 *  </code>
 *   
 *  Esempio:
 *   
 *  <code> 
 *  $myform->setTag("border='1'");
 *  </code>       
 *  
 *  @param string $tag Impostare la stringa da aggiungere al tag del modulo form     
 *  @return null 
 */
  public function setTag($tag){
    $this->tag=" ".$tag;
  }
  
  /**
   * Questo metodo ritorna il livello di incapsulamento
   *
   * @return int
   */
  public function getZindex(){
  	return 2;
  }

  /**
   * Questo metodo elabora l'HTML dell'oggetto
   * 
   * @return null
   */
  protected function elaboraHtml(){
    if ($this->classe!="") $myclasse=" class='".$this->classe."'";
  	$this->html="\r\n<form".$myclasse.$this->tag." action='".$this->action."' method='".$this->method."'>\r\n<p>".$this->html."\r\n</p>\r\n</form>";
  }
  
/**
 *  Questo metodo restituisce l'equivalente html dell'oggetto creato
 *  
 *  Esempio:
 *  
 *  <code>
 *  echo $contenitore;  
 *  </code>        
 *  
 *  @return string Ritorna la stringa HTML  
 */
  public function __toString(){
	$this->elaboraHtml();
    return parent::__toString();
  }
  
/**
 *  Questo metodo restituisce l'equivalente html dell'oggetto creato
 *  
 *  Esempio:
 *  
 *  <code>
 *  echo $contenitore->getHtml();  
 *  </code>        
 *  
 *  @return string Ritorna la stringa HTML  
 */
  public function getHtml(){
	$this->elaboraHtml();
    return parent::getHtml();
  }
}


// **********************************************************
//  Classe sLabel
// **********************************************************
/**
 * Questa classe implementa un oggetto sLabel
 *  
 * @author Dario Mazzeo <hide@address.com>
 * @version 1.0.0
 * @copyright Freesoftware Italia - www.freesoftwareitalia.it 
 * @package sClassHTML   
 */
class sLabel extends sForm{
protected $descr;

/**
 *  Creazione dell'oggetto 
 *  
 *  Esempio:
 *  
 *  <code>
 *  $label1 = new sLabel("Inserisci il cognome:", "classecss");
 *  $label2 = new sLabel("Inserisci il nome:", "classecss");
 *  ...
 *  $form->addObj($label1); // da questo momento in poi $label1 non è disponibile
 *  $form->addObj($label2, false); // $label2 è ancora disponibile
 *  ...
 *  $myarray = array("Nome", "Cognome"); 
 *  $label3 = new sLabel($myarray, "classecss");
 *  </code>     
 *  
 *  @param string $descr Stringa da visualizzare
 *  @param string $classe Classe CSS    
 */  
  public function __construct($descr="", $classe=""){
    $this->descr=$descr;
    $this->classe=$classe;
  }

  /**
   * Questo metodo ritorna il livello di incapsulamento
   *
   * @return int
   */
  public function getZindex(){
  	return 3;
  }
  
  /**
   * Questo metodo elabora l'HTML dell'oggetto
   * 
   * @return null
   */
  protected function elaboraHtml(){
    $this->html="";
  	if ($this->classe!="") $myclasse=" class='".$this->classe."'";
  	if ($this->html!=""){ 
      $this->html="\r\n<label".$myclasse.$this->tag.">".$this->html."\r\n</label>";
    }
    else{
      if (is_array($this->descr)){
        foreach ($this->descr as $i => $val){
          ($this->conversion) ? $tmp=str_html($val) : $tmp=$val;
          $this->html.="\r\n<label".$myclasse.$this->tag.">".$tmp."</label>";
        }
      }
      else{   
      	($this->conversion) ? $tmp=str_html($this->descr) : $tmp=$this->descr;
        $this->html="\r\n<label".$myclasse.$this->tag.">".$tmp."</label>";
      }
    }
  }
  
/**
 *  Questo metodo restituisce l'equivalente html dell'oggetto creato
 *  
 *  Esempio:
 *  
 *  <code>
 *  echo $contenitore;  
 *  </code>        
 *  
 *  @return string Ritorna la stringa HTML  
 */
  public function __toString(){
	$this->elaboraHtml();
    return parent::__toString();
  }
  
/**
 *  Questo metodo restituisce l'equivalente html dell'oggetto creato
 *  
 *  Esempio:
 *  
 *  <code>
 *  echo $contenitore->getHtml();  
 *  </code>        
 *  
 *  @return string Ritorna la stringa HTML  
 */
  public function getHtml(){
	$this->elaboraHtml();
    return parent::getHtml();
  }
}


// **********************************************************
//  Classe sText
// **********************************************************
/**
 *  Questa classe implementa un oggetto sText
 *  
 * @author Dario Mazzeo <hide@address.com>
 * @version 1.0.0
 * @copyright Freesoftware Italia - www.freesoftwareitalia.it     
 * @package sClassHTML
 */ 
class sText extends sForm{
protected $type;
protected $name;
protected $value;
protected $size;
protected $txtsize;
protected $maxlength;
protected $txtmaxlength;

/**
 *  Creazione dell'oggetto
 * 
 *  Esempio:
 *  
 *  <code>
 *  $text1 = new sText("cognome", $_POST['cognome'], 20, 20, "classecss");
 *  </code>    
 *  
 *  Utilizzando come valore $_POST['cognome'], è possibile impostare in automatico
 *  il valore del campo inviato dal modulo form.   
 *  
 *  @param string $name Nome del campo che identifica l'oggetto nel form
 *  @param string $value Valore preimpostato del campo
 *  @param int $size Larghezza del campo
 *  @param int $maxlength Numero massimo di caratteri inseribili nel campo
 *  @param string $classe Classe CSS         
 */  
  public function __construct($name, $value="", $size=0, $maxlength=0, $classe=""){
    $this->type="text";
    $this->name=$name;
    $this->value=$value;
    $this->classe=$classe;
    ($size>0) ? $this->txtsize=" size='".$size."'" : $this->txtsize="";
    ($maxlength>0) ? $this->txtmaxlength=" maxlength='".$maxlength."'" : $this->txtmaxlength="";
  }

  /**
   * Questo metodo ritorna il livello di incapsulamento
   *
   * @return int
   */
  public function getZindex(){
  	return 5;
  }
  
  /**
   * Questo metodo elabora l'HTML dell'oggetto
   * 
   * @return null
   */
  protected function elaboraHtml(){
    if ($this->classe!="") $myclasse=" class='".$this->classe."'";
    ($this->conversion) ? $tmp=str_html($this->value) : $tmp=$this->value;
  	$this->html="\r\n<input".$this->tag." type='".$this->type."' name='".$this->name."'".$this->txtsize." value='".$tmp."'".$this->txtmaxlength.$this->tag_close;
    if ($this->classe!="") $this->html="\r\n<label".$myclasse.">\t\t".$this->html."\r\n</label>";
	}
  
/**
 *  Questo metodo restituisce l'equivalente html dell'oggetto creato
 *  
 *  Esempio:
 *  
 *  <code>
 *  echo $contenitore;  
 *  </code>        
 *  
 *  @return string Ritorna la stringa HTML  
 */
  public function __toString(){
	$this->elaboraHtml();
    return parent::__toString();
  }
  
/**
 *  Questo metodo restituisce l'equivalente html dell'oggetto creato
 *  
 *  Esempio:
 *  
 *  <code>
 *  echo $contenitore->getHtml();  
 *  </code>        
 *  
 *  @return string Ritorna la stringa HTML  
 */
  public function getHtml(){
	$this->elaboraHtml();
    return parent::getHtml();
  }
}


// **********************************************************
//  Classe sPassword
// **********************************************************
/**
 *  Questa classe implementa un oggetto sPassword
 *  
 * @author Dario Mazzeo <hide@address.com>
 * @version 1.0.0
 * @copyright Freesoftware Italia - www.freesoftwareitalia.it    
 * @package sClassHTML 
 */ 
class sPassword extends sText{

/**
 *  Creazione dell'oggetto
 *  
 *  Esempio:
 *  
 *  <code>
 *  $pswd1 = new sText("pswd", $_POST['pswd'], 20, 20, "classecss");
 *  </code>    
 *  
 *  Utilizzando come valore $_POST['pswd'], è possibile impostare in automatico
 *  il valore del campo inviato dal modulo form.   
 *  
 *  @param string $name Nome del campo che identifica l'oggetto nel form
 *  @param string $value Valore preimpostato del campo
 *  @param int $size Larghezza del campo
 *  @param int $maxlength Numero massimo di caratteri inseribili nel campo
 *  @param string $classe Classe CSS      
 */  
  public function __construct($name, $value="", $size=0, $maxlength=0, $classe=""){
    parent::__construct($name, $value, $size, $maxlength, $classe);
    $this->type="password";
  }  
}


// **********************************************************
//  Classe sTextArea
// **********************************************************
/**
 *  Questa classe implementa un oggetto sTextArea
 *
 *  L'oggetto è in grado di contenere del testo su più righe.  
 *  
 * @author Dario Mazzeo <hide@address.com>
 * @version 1.0.0
 * @copyright Freesoftware Italia - www.freesoftwareitalia.it     
 * @package sClassHTML
 */ 
class sTextArea extends sText{
protected $cols;
protected $txtcols;
protected $rows;
protected $txtrows;

/**
 *  Creazione dell'oggetto
 *   
 *  Esempio:
 *  
 *  <code>
 *  $memo1 = new sTextArea("memo", $_POST['memo'], 20, 5, "classecss");
 *  </code>    
 *  
 *  Utilizzando come valore $_POST['memo'], è possibile impostare in automatico
 *  il valore del campo inviato dal modulo form.
 *  
 *  @param string $name Nome del campo che identifica l'oggetto nel form
 *  @param string $value Valore preimpostato del campo
 *  @param int $cols Larghezza del campo
 *  @param int $rows Numero di righe del campo
 *  @param string $classe Classe CSS           
 */  
  public function __construct($name, $value="", $cols=0, $rows=0, $classe=""){
    $this->name=$name;
    $this->value=$value;
    $this->cols=$cols;
    $this->rows=$rows;
    $this->classe=$classe;
    ($rows>0) ? $this->txtrows=" rows='".$rows."' " : $this->txtrows="";
    ($cols>0) ? $this->txtcols=" cols='".$cols."' " : $this->txtcols="";
  }

  /**
   * Questo metodo elabora l'HTML dell'oggetto
   * 
   * @return null
   */
  protected function elaboraHtml(){
    if ($this->classe!="") $myclasse=" class='".$this->classe."'";
    ($this->conversion) ? $tmp=str_html($this->value) : $tmp=$this->value;
  	$this->html="\r\n<textarea".$this->tag." name='".$this->name."'".$this->txtcols.$this->txtrows.">".$tmp."</textarea>";
    if ($this->classe!="") $this->html="\r\n<label".$myclasse.">".$this->html."\r\n</label>";
  }
  
/**
 *  Questo metodo restituisce l'equivalente html dell'oggetto creato
 *  
 *  Esempio:
 *  
 *  <code>
 *  echo $contenitore;  
 *  </code>        
 *  
 *  @return string Ritorna la stringa HTML  
 */
  public function __toString(){
	$this->elaboraHtml();
    return parent::__toString();
  }
  
/**
 *  Questo metodo restituisce l'equivalente html dell'oggetto creato
 *  
 *  Esempio:
 *  
 *  <code>
 *  echo $contenitore->getHtml();  
 *  </code>        
 *  
 *  @return string Ritorna la stringa HTML  
 */
  public function getHtml(){
	$this->elaboraHtml();
    return parent::getHtml();
  }
}


// **********************************************************
//  Classe sSubmit
// **********************************************************
/**
 *  Questa classe implementa un oggetto sSubmit
 *  
 *  Il bottone Submit permette l'invio dei campi di un modulo form.   
 *  
 * @author Dario Mazzeo <hide@address.com>
 * @version 1.0.0
 * @copyright Freesoftware Italia - www.freesoftwareitalia.it    
 * @package sClassHTML 
 */ 
class sSubmit extends sForm{
protected $type;
protected $name;
protected $value;

/**
 *  Creazione dell'oggetto
 * 
 *  Esempio:
 *  
 *  <code>
 *  $invio = new sSubmit("Invia", "Invia");
 *  </code>
 *  
 *  @param string $name Nome del campo che identifica l'oggetto nel form
 *  @param string $value Valore preimpostato del campo
 *  @param string $classe Classe CSS
 *  @return null         
 */   
  public function __construct($name, $value="", $classe=""){
    $this->name=$name;  
    $this->value=$value;
    $this->type="submit";
    $this->classe=$classe;
  }
  
  /**
   * Questo metodo ritorna il livello di incapsulamento
   *
   * @return int
   */
  public function getZindex(){
  	return 5;
  }
  
  /**
   * Questo metodo elabora l'HTML dell'oggetto
   * 
   * @return null
   */
  protected function elaboraHtml(){
    if ($this->classe!="") $myclasse=" class='".$this->classe."'";
  	$this->html="\r\n<input".$this->tag." type='".$this->type."' name='".$this->name."' value='".$this->value."'".$this->tag_close;
    if ($this->classe!="") $this->html="\r\n<label".$myclasse.">".$this->html."\r\n</label>";
  }
  
/**
 *  Questo metodo restituisce l'equivalente html dell'oggetto creato
 *  
 *  Esempio:
 *  
 *  <code>
 *  echo $contenitore;  
 *  </code>        
 *  
 *  @return string Ritorna la stringa HTML  
 */
  public function __toString(){
	$this->elaboraHtml();
    return parent::__toString();
  }
  
/**
 *  Questo metodo restituisce l'equivalente html dell'oggetto creato
 *  
 *  Esempio:
 *  
 *  <code>
 *  echo $contenitore->getHtml();  
 *  </code>        
 *  
 *  @return string Ritorna la stringa HTML  
 */
  public function getHtml(){
	$this->elaboraHtml();
    return parent::getHtml();
  }
}


// **********************************************************
//  Classe sReset
// **********************************************************
/**
 *  Questa classe implementa un oggetto sReset
 *  
 *  Il bottone Reset permette di cancellare tutti i campi appartenenti
 *  al modulo form.
 *  
 * @author Dario Mazzeo <hide@address.com>
 * @version 1.0.0
 * @copyright Freesoftware Italia - www.freesoftwareitalia.it     
 * @package sClassHTML   
 */ 
class sReset extends sSubmit{

/**
 *  Creazione dell'oggetto
 *  
 *  Esempio:
 *  
 *  <code>
 *  $reset = new sReset("Cancella", "Cancella");
 *  </code>
 *  
 *  @param string $name Nome del campo che identifica l'oggetto nel form
 *  @param string $value Valore preimpostato del campo
 *  @param string $classe Classe CSS      
 */  
  public function __construct($name, $value="", $classe=""){
    parent::__construct($name, $value, $classe);
    $this->type="reset";
  }
}


// **********************************************************
//  Classe sButton
// **********************************************************
/**
 *  Questa classe implementa un oggetto sButton
 *  
 *  Al generico bottone è possibile associare un javascript.   
 *  
 * @author Dario Mazzeo <hide@address.com>
 * @version 1.0.0
 * @copyright Freesoftware Italia - www.freesoftwareitalia.it    
 * @package sClassHTML 
 */ 
class sButton extends sSubmit{

/**
 *  Creazione dell'oggetto
 *  
 *  Esempio:
 *  
 *  <code>
 *  $bottone = new sButton("Avanti", "Avanti");
 *  </code>    
 *  
 *  @param string $name Nome del campo che identifica l'oggetto nel form
 *  @param string $value Valore preimpostato del campo
 *  @param string $classe Classe CSS  
 */  
  public function __construct($name, $value="", $classe=""){
    parent::__construct($name, $value, $classe);
    $this->type="button";
  }
}


// **********************************************************
//  Classe sHidden
// **********************************************************
/**
 *  Questa classe implementa un oggetto sHidden
 *  
 *  Il campo Hidden, in un modulo form, permette l'invio di informazioni tra
 *  pagine web.
 *  
 * @author Dario Mazzeo <hide@address.com>
 * @version 1.0.0
 * @copyright Freesoftware Italia - www.freesoftwareitalia.it     
 * @package sClassHTML
 */ 
class sHidden extends sSubmit{

/**
 *  Creazione dell'oggetto
 * 
 *  Esempio:
 *  
 *  <code>
 *  $info = new sHidden("info", $_POST['info']);
 *  </code>    
 *  
 *  Utilizzando come valore $_POST['info'], è possibile impostare in automatico
 *  il valore del campo inviato dal modulo form.
 *  
 *  @param string $name Nome del campo che identifica l'oggetto nel form
 *  @param string $value Valore preimpostato del campo
 *  @param string $classe Classe CSS     
 */  
  public function __construct($name, $value="", $classe=""){
    parent::__construct($name, $value, $classe);
    $this->type="hidden";
  }
  
  /**
   * Questo metodo elabora l'HTML dell'oggetto
   * 
   * @return null
   */
  protected function elaboraHtml(){
  	if ($this->classe!="") $myclasse=" class='".$this->classe."'";
    $this->html="\r\n<input".$this->tag." type='".$this->type."' name='".$this->name."' value='".$this->value."'".$this->tag_close;
    $this->html="\r\n<label".$myclasse.">".$this->html."\r\n</label>";
  }
  
/**
 *  Questo metodo restituisce l'equivalente html dell'oggetto creato
 *  
 *  Esempio:
 *  
 *  <code>
 *  echo $contenitore;  
 *  </code>        
 *  
 *  @return string Ritorna la stringa HTML  
 */
  public function __toString(){
	$this->elaboraHtml();
    return parent::__toString();
  }
  
/**
 *  Questo metodo restituisce l'equivalente html dell'oggetto creato
 *  
 *  Esempio:
 *  
 *  <code>
 *  echo $contenitore->getHtml();  
 *  </code>        
 *  
 *  @return string Ritorna la stringa HTML  
 */
  public function getHtml(){
	$this->elaboraHtml();
    return parent::getHtml();
  }
}


// **********************************************************
//  Classe sCheckbox
// **********************************************************
/**
 *  Questa classe implementa un oggetto sCheckbox
 *  
 * @author Dario Mazzeo <hide@address.com>
 * @version 1.0.0
 * @copyright Freesoftware Italia - www.freesoftwareitalia.it   
 * @package sClassHTML  
 */ 
class sCheckbox extends sForm{
protected $name;
protected $value;
protected $check;
protected $selected;
protected $type;

/**
 *  Creazione dell'oggetto
 *  
 *  Il parametro <selected> consente l'abilitazione automatica del campo e può
 *  essere un numero intero, un'array o del testo.
 *  Nel caso in cui sono previsti campi checkbox multipli, è necessario specificare 
 *  come parametro <name> un array (nome seguito da parentesi quadre "[]");  
 * 
 *  Esempio:
 *  
 *  <code>
 *  $pref = array("pittura", "lettura", "arte");
 *  $sel1 = new sCheckbox("preferenza[]", $pref, $_POST['preferenza'], "selezione");
 *  </code>    
 *  
 *  Utilizzando come valore $_POST['preferenza'], è possibile impostare in automatico
 *  i valori dei campi inviati dal modulo form.
 *  
 *  @param string $name Nome del campo che identifica l'oggetto nel form
 *  @param string $value Valore preimpostato del campo
 *  @param string[]/int $selected Specifica i campi da selezionare 
 *  @param string $classe Classe CSS              
 */  
  public function __construct($name, $value="", $selected=-1, $classe=""){
    $this->type="checkbox";
    $this->name=$name;
    $this->value=$value;
    $this->classe=$classe;
    $this->selected=$selected;
  }

  /**
   * Questo metodo ritorna il livello di incapsulamento
   *
   * @return int
   */
  public function getZindex(){
  	return 5;
  }  

  /**
   * Questo metodo elabora l'HTML dell'oggetto
   * 
   * @return null
   */
  protected function elaboraHtml(){
    $this->html="";
  	if ($this->classe!="") $myclasse=" class='".$this->classe."'";
  	foreach ($this->value as $i => $val){
      $this->html.="\r\n<label".$myclasse.">";
      if (ctype_digit($this->selected)) //verifica se è un numero
        ($i==$this->selected) ? $seltxt=" ".$this->tag_checked : $seltxt="";
      elseif (is_array($this->selected))
        (in_array($val, $this->selected)) ? $seltxt=" ".$this->tag_checked : $seltxt="";
      else
        ($val==$this->selected) ? $seltxt=" ".$this->tag_checked : $seltxt="";
      ($this->conversion) ? $tmp=str_html($val) : $tmp=$val;
      $this->html.="\r\n<input".$this->tag." type='".$this->type."' name='".$this->name."' value='".str_html($val)."'".$seltxt.$this->tag_close.$tmp."\r\n</label>";
    }
  }
  
/**
 *  Questo metodo restituisce l'equivalente html dell'oggetto creato
 *  
 *  Esempio:
 *  
 *  <code>
 *  echo $contenitore;  
 *  </code>        
 *  
 *  @return string Ritorna la stringa HTML  
 */
  public function __toString(){
	$this->elaboraHtml();
    return parent::__toString();
  }
  
/**
 *  Questo metodo restituisce l'equivalente html dell'oggetto creato
 *  
 *  Esempio:
 *  
 *  <code>
 *  echo $contenitore->getHtml();  
 *  </code>        
 *  
 *  @return string Ritorna la stringa HTML  
 */
  public function getHtml(){
	$this->elaboraHtml();
    return parent::getHtml();
  }
}


// **********************************************************
//  Classe sRadio
// **********************************************************
/**
 *  Questa classe implementa un oggetto sRadio
 *  
 * @author Dario Mazzeo <hide@address.com>
 * @version 1.0.0
 * @copyright Freesoftware Italia - www.freesoftwareitalia.it   
 * @package sClassHTML  
 */ 
class sRadio extends sCheckbox{

/**
 *  Creazione dell'oggetto
 *  
 *  Il parametro <selected> consente l'abilitazione automatica del campo.
 * 
 *  Esempio:
 *  
 *  <code>
 *  $pref = array("pittura", "lettura", "arte");
 *  $sel1 = new sRadio("preferenza", $pref, $_POST['preferenza'], "selezione");
 *  </code>    
 *  
 *  Utilizzando come valore $_POST['preferenza'], è possibile impostare in automatico
 *  il valore del campo inviato dal modulo form.    
 *  
 *  @param string $name Nome del campo che identifica l'oggetto nel form
 *  @param string $value Valore preimpostato del campo
 *  @param string/int $selected Specifica il campo da selezionare
 *  @param string $classe Classe CSS
 */  
  public function __construct($name, $value="", $selected=-1, $classe=""){
    parent::__construct($name, $value, $selected, $classe);
    $this->type="radio";
  }
}


// **********************************************************
//  Classe sFile
// **********************************************************
/**
 *  Questa classe implementa un oggetto sFile
 *  
 * @author Dario Mazzeo <hide@address.com>
 * @version 1.0.0
 * @copyright Freesoftware Italia - www.freesoftwareitalia.it     
 * @package sClassHTML
 */ 
class sFile extends sForm{
protected $name;

/**
 *  Creazione dell'oggetto
 *  
 *  Esempio:
 *  
 *  <code>
 *  $myfile = new sFile("../image/busta.gif", "classecss");
 *  </code>
 * 
 *  @param string $name Nome del campo che identifica l'oggetto nel form
 *  @param string $classe Classe CSS
 */  
  public function __construct($name, $classe=""){
    $this->name=$name;
    $this->classe=$classe;
  }

  /**
   * Questo metodo ritorna il livello di incapsulamento
   *
   * @return int
   */
  public function getZindex(){
  	return 5;
  }  

  /**
   * Questo metodo elabora l'HTML dell'oggetto
   * 
   * @return null
   */
  protected function elaboraHtml(){
    if ($this->classe!="") $myclasse=" class='".$this->classe."'";
  	$this->html="\r\n<input".$this->tag." type='file' name='".$this->name."'".$this->tag_close;
    if ($this->classe!="") $this->html="\r\n<label".$myclasse.">".$this->html."\r\n</label>";
  }
  
/**
 *  Questo metodo restituisce l'equivalente html dell'oggetto creato
 *  
 *  Esempio:
 *  
 *  <code>
 *  echo $contenitore;  
 *  </code>        
 *  
 *  @return string Ritorna la stringa HTML  
 */
  public function __toString(){
	$this->elaboraHtml();
    return parent::__toString();
  }
  
/**
 *  Questo metodo restituisce l'equivalente html dell'oggetto creato
 *  
 *  Esempio:
 *  
 *  <code>
 *  echo $contenitore->getHtml();  
 *  </code>        
 *  
 *  @return string Ritorna la stringa HTML  
 */
  public function getHtml(){
	$this->elaboraHtml();
    return parent::getHtml();
  }
}


// **********************************************************
//  Classe sSelect
// **********************************************************
/**
 *  Questa classe implementa un oggetto sSelect
 *  
 * @author Dario Mazzeo <hide@address.com>
 * @version 1.0.0
 * @copyright Freesoftware Italia - www.freesoftwareitalia.it     
 * @package sClassHTML
 */ 
class sSelect extends sForm{
protected $name;
protected $value;
protected $size;
protected $txtsize;

/**
 *  Creazione dell'oggetto
 * 
 *  Esempio:
 *  
 *  <code>
 *  $menu=array("campo1"=>"valore1",
 *              "campo2"=>"valore2");
 *  $selmenu=new sSelect("menu", $menu, 1, $_POST['menu'], "campo");
 *  </code>    
 *  
 *  Utilizzando come valore $_POST['menu'], è possibile impostare in automatico
 *  i valori dei campi inviati dal modulo form.
 *  
 *  @param string $name Nome del campo che identifica l'oggetto nel form
 *  @param string $value Valore preimpostato del campo
 *  @param int $size Specifica il numero di righe da visualizzare
 *  @param string $classe Classe CSS
 */  
  public function __construct($name, $value, $size=0, $selected=-1, $classe=""){
    ($size>0) ? $this->txtsize=" size='".$size."'" : $this->txtsize="";
    $this->classe=$classe;
    $this->selected=$selected;
    $this->name=$name;
    $this->value=$value;
  }

  /**
   * Questo metodo ritorna il livello di incapsulamento
   *
   * @return int
   */
  public function getZindex(){
  	return 5;
  }  
  
  /**
   * Questo metodo elabora l'HTML dell'oggetto
   * 
   * @return null
   */
  protected function elaboraHtml(){
    if ($this->classe!="") $myclasse=" class='".$this->classe."'";
  	$this->html="\r\n<select".$this->tag." name='".$this->name."'".$this->txtsize.">";
    foreach ($this->value as $i => $val){
      if (ctype_digit($this->selected)) //verifica se è un numero
        ($i==$this->selected) ? $seltxt=" ".$this->tag_selected : $seltxt="";
      else
        ($val==$this->selected) ? $seltxt=" ".$this->tag_selected : $seltxt="";
      $this->html.="\r\n<option value='".$val."'".$seltxt.">".$i."</option>"; 
    }  
    $this->html.="\r\n</select>";
    if ($this->classe!="") $this->html="\r\n<label".$myclasse.">".$this->html."\r\n</label>";
  }
  
/**
 *  Questo metodo restituisce l'equivalente html dell'oggetto creato
 *  
 *  Esempio:
 *  
 *  <code>
 *  echo $contenitore;  
 *  </code>        
 *  
 *  @return string Ritorna la stringa HTML  
 */
  public function __toString(){
	$this->elaboraHtml();
    return parent::__toString();
  }
  
/**
 *  Questo metodo restituisce l'equivalente html dell'oggetto creato
 *  
 *  Esempio:
 *  
 *  <code>
 *  echo $contenitore->getHtml();  
 *  </code>        
 *  
 *  @return string Ritorna la stringa HTML  
 */
  public function getHtml(){
	$this->elaboraHtml();
    return parent::getHtml();
  }
}


// **********************************************************
//  Classe sImage
// **********************************************************
/**
 *  Questa classe implementa un oggetto sImage
 *  
 * @author Dario Mazzeo <hide@address.com>
 * @version 1.0.0
 * @copyright Freesoftware Italia - www.freesoftwareitalia.it     
 * @package sClassHTML
 */ 
class sImage extends sForm{
protected $name;
protected $src;
protected $alt;

/**
 *  Creazione dell'oggetto
 *   
 *  Esempio:
 *  
 *  <code>
 *  $img1 = new sImage("../image/email.gif", "busta e-mail", "classecss");
 *  </code>
 *  
 *  @param string $src Link al file da visualizzare
 *  @param string $alt Descrizione dell'immagine
 *  @param string $classe Classe CSS  
 */  
  public function __construct($src, $alt="", $classe=""){
    $this->src=$src;
    $this->alt=" alt='".$alt."'";
    $this->classe=$classe;
  }

  /**
   * Questo metodo ritorna il livello di incapsulamento
   *
   * @return int
   */
  public function getZindex(){
  	return 5;
  }  

  /**
   * Questo metodo elabora l'HTML dell'oggetto
   * 
   * @return null
   */
  protected function elaboraHtml(){
    if ($this->classe!="") $myclasse=" class='".$this->classe."'";
  	$this->html="\r\n<img".$this->tag." src='".$this->src."'".$this->alt.$this->tag_close;
    if ($this->classe!="") $this->html="\r\n<label".$myclasse.">".$this->html."\r\n</label>";
  }
  
/**
 *  Questo metodo restituisce l'equivalente html dell'oggetto creato
 *  
 *  Esempio:
 *  
 *  <code>
 *  echo $contenitore;  
 *  </code>        
 *  
 *  @return string Ritorna la stringa HTML  
 */
  public function __toString(){
	$this->elaboraHtml();
    return parent::__toString();
  }
  
/**
 *  Questo metodo restituisce l'equivalente html dell'oggetto creato
 *  
 *  Esempio:
 *  
 *  <code>
 *  echo $contenitore->getHtml();  
 *  </code>        
 *  
 *  @return string Ritorna la stringa HTML  
 */
  public function getHtml(){
	$this->elaboraHtml();
    return parent::getHtml();
  }
}


// **********************************************************
//  Classe sLink
// **********************************************************
/**
 *  Questa classe implementa un oggetto sLink
 *  
 * @author Dario Mazzeo <hide@address.com>
 * @version 1.0.0
 * @copyright Freesoftware Italia - www.freesoftwareitalia.it     
 * @package sClassHTML
 */ 
class sLink extends sForm{
protected $value;
protected $href;
protected $target;

/**
 *  Creazione dell'oggetto
 * 
 *  Esempio:
 *  
 *  <code>
 *  // link semplice  
 *  $link1 = new sLink("Clicca per inviare una e-mail", "mailto:hide@address.com");
 *  
 *  // link su immagine
 *  $img = new sImage("../image/busta.gif", "busta e-mail");
 *  $link2 = new sLink($img, "mailto:hide@address.com");    
 * 
 *  // link multipli
 *  $menu = array("Home", "Chi siamo", "Profile", "Contatti");
 *  $link = array("home.php?id=123", "chisiamo.php", "profile.php", "contact.php");
 *  $menu = new sLink($menu, $link, "descrizioneMenu");
 * 
 *  // questa proprietà disabilita la conversione dell'URL in formato UTF-8
 *  $menu->conversion=false;
 * 
 *  $contenitore->addObj($menu);   
 *  </code>    
 *  
 *  @param string[] $value Può essere una descrizione o l'equivalente HTML di un oggetto
 *  @param string[] $href Link alla risorsa
 *  @param string $classe Classe CSS
 */
  public function __construct($value, $href, $classe=""){
    $this->value=$value;
    $this->href=$href;
    $this->target="";
    $this->classe=$classe;
  }
  
  /**
   * Questo metodo ritorna il livello di incapsulamento
   *
   * @return int
   */
  public function getZindex(){
  	return 4;
  }

  /**
   * Questo metodo elabora l'HTML dell'oggetto
   * 
   * @return null
   */
  protected function elaboraHtml(){
    $this->html="";
  	if ($this->classe!="") $myclasse=" class='".$this->classe."'";
  	if (is_array($this->value)) {
      $num=count($this->value);
      for ($i=0; $i<$num; $i++){
      	($this->conversion) ? $tmp=str_url($this->href[$i]) : $tmp=$this->href[$i];
        $this->html.="\r\n<a".$myclasse." href='".$tmp."'".$this->tag.$this->target.">".$this->value[$i]."</a>";
      }    
    }
    else{
    	($this->conversion) ? $tmp=str_url($this->href) : $tmp=$this->href;
      	$this->html="\r\n<a".$myclasse." href='".$tmp."'".$this->tag.$this->target.">".$this->value."</a>";
    }
  }
  
/**
 *  Questo metodo restituisce l'equivalente html dell'oggetto creato
 *  
 *  Esempio:
 *  
 *  <code>
 *  echo $contenitore;  
 *  </code>        
 *  
 *  @return string Ritorna la stringa HTML  
 */
  public function __toString(){
	$this->elaboraHtml();
    return parent::__toString();
  }
  
/**
 *  Questo metodo restituisce l'equivalente html dell'oggetto creato
 *  
 *  Esempio:
 *  
 *  <code>
 *  echo $contenitore->getHtml();  
 *  </code>        
 *  
 *  @return string Ritorna la stringa HTML  
 */
  public function getHtml(){
	$this->elaboraHtml();
    return parent::getHtml();
  }
}
?>
Return current item: sClassHTML