Conjunto de funciones estáticas para generar código de elementos de un form.
class Forms extends Tags{
static function Form($name=NULL,$action=NULL,$attr=NULL,$txt=NULL){
return parent::Tag(
'form',
self::Attr('method','post') . self::Attr('action', $action) .
self::Attr('enctype','multipart/form-data') . self::Name($name) . $attr,
parent::Table(NULL,$txt) . self::Hidden('accion',$name)
);
}
static function Linea($label=null,$txt=null, $attr=null){
return parent::Tr($attr, parent::Td("class='label'",$label) . parent::Td(null,$txt) ) ;
}
static function Label($name=NULL,$txt=NULL){
return ($txt) ? parent::Tag('label', self::Attr('for',$name), $txt) : NULL ;
}
static function Input($type='text',$name=null,$label=null,$value=null,$attr=null,$attrExtra=null){
if($type=='text' || $type=='password' || $type=='file')
return self::Linea(
self::Label($name,$label) ,
parent::Tag('input', self::Type($type) . self::Name($name) . self::Value($value) . $attr, null, true) ,
$attrExtra
);
if($type=='radio' || $type=='submit' || $type=='hidden' || $type=='checkbox')
return parent::Tag('input', self::Type($type) . self::Name($name) . self::Value($value) . $attr, null, true);
}
// tipos de input
static function Text($name=null,$label=null,$value=null,$attr=null,$attrExtra=null){
return self::Input('text',$name,$label,$value,$attr,$attrExtra);
}
static function Hidden($name=null,$value=null){
if($name) return self::Input('hidden',$name,null,$value);
}
static function Textarea($name=null,$label=null,$value=null,$attr=null,$attrExtra=null){
return self::Linea(
self::Label($name,$label),
parent::Tag('textarea', self::Name($name) . $attr, $value),
$attrExtra
);
}
static function Checkbox($name=null,$value=null,$attr=null,$checked=null,$label=NULL){
$checked = ($value==$checked) ? self::Attr('checked','checked') : null;
$checkbox = parent::Tag('input',self::Name($name) . self::Type('checkbox'). self::Value($value) . $checked . $attr, null, true);
if($label) $checkbox = "<label>$checkbox $label</label>";
return $checkbox;
}
static function Password($name=null,$label=null,$value=null,$attr=null,$attrExtra=null){
if($name) return self::Input('password',$name,$label,$value,$attr,$attrExtra);
}
static function File($name=NULL,$label=null,$attr=NULL,$attrExtra=NULL){
if($name) return self::Input('file',$name,$label,null,$attr,$attrExtra);
}
static function Select($name,$label=NULL,$values=NULL,$value=NULL,$attr=null,$attrExtra=NULL){
if($name && $values){
$options = null;
foreach($values as $k=>$v){
$op_attr = ($k==$value) ? self::Attr('selected','selected') : NULL ;
$op_attr.= self::Value($k);
$options.= parent::Tag('option',$op_attr,$v);
}
$select = parent::Tag('select', self::Name($name) . $attr,$options);
return self::Linea(self::Label($name,$label),$select,$attrExtra);
}
}
// elementos discretos
static function Submit($value='Guardar'){
if($value) return self::Input('submit','submit',NULL,$value,self::Attr('class','boton submit') );
}
static function Cancelar($txt='Cancelar',$href='javascript:history.go(-1);'){
if($txt) return parent::A( self::Attr('href',$href) . self::Attr('class','cancelar'), $txt);
}
static function Button($name=null,$value=null){
return parent::Tag('input', self::Type('button') . self::Name($name) . self::Value($value) . self::Attr('class','boton') );
}
// atributos
private static function Name($name=null){ return self::Attr('name',$name) . self::Attr('id',$name) ; }
private static function Type($type=null){ return self::Attr('type',$type); }
private static function Value($value=null){ return self::Attr('value',$value); }
private static function Attr($name=null,$value=null){
if($name && isset($value)) return "$name='$value' ";
}
// combinaciones (atajos)
static function qSubmit($id=NULL, $txt_submit='Guardar'){
$id = ($id) ? self::Hidden('id',$id) : NULL;
return self::Linea( NULL,
$id . self::Submit($txt_submit) , "class='separador'"
);
}
static function qSubmit2($id=NULL, $txt_submit='Guardar', $txt_cancelar='Cancelar'){
$id = ($id) ? self::Hidden('id',$id) : NULL;
return self::Linea(
NULL,
$id . self::Submit($txt_submit) . self::Cancelar($txt_cancelar) , "class='separador'"
);
}
static function qSubmit3($id=null,$txt_submit='Guardar',$txt_cancelar='Cancelar',$txt_eliminar='Eliminar'){
$id = ($id) ? self::Hidden('id',$id) : NULL;
$btn_eliminar = self::Input('submit','eliminar',NULL,$txt_eliminar," class='boton submit' style='float:right'");
return self::Linea(
NULL,
$btn_eliminar . $id . self::Submit($txt_submit) . self::Cancelar($txt_cancelar) , "class='separador'"
);
}
// selector múltiple, mediante option y/o checkbox
// recibe un array con todas las opciones y otro con las seleccionadas
static function SelectorMultiple($tipo=NULL,$name=NULL,$label=NULL,$values=NULL,$values_sel=NULL,$attr=NULL,$attrContenedor=NULL){
$elementos = NULL;
if($values && is_array($values)){
foreach($values as $k=>$v){
$selected = NULL;
$checked = NULL;
if ((!is_array($values_sel) && ($k==$values_sel)) || (is_array($values_sel) && in_array($k,$values_sel)) ) {
$selected = self::Attr('selected','selected');
$checked = self::Attr('checked','checked');
}
if($tipo=='select' || $tipo=='option'){
$elementos.= "<option value='$k' $selected>$v</option>";
}
if($tipo=='checkbox' || $tipo=='radio'){
$elementos.= "<label style='padding-right:8px;'>".
parent::Tag('input',self::Type($tipo).self::Name($name).
self::Value($k).$checked, ' '.$v, true)."</label>";
}
}
}
if($tipo=='select' || $tipo=='option'){
return self::Linea(self::Label($name,$label), parent::Tag('select',self::Name($name) .
$attr." multiple='multiple' ",$elementos), $attrContenedor);
}
if($tipo=='checkbox' || $tipo=='radio'){
return self::Linea(self::Label($name,$label), $elementos, $attrContenedor );
}
}
}