<?php
/**
* simbio_form_maker
* Class for creating form with element based on simbio form elements
*
* Copyright (C) 2007,2008 Arie Nugraha (hide@address.com)
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*
*/
require 'simbio_form_element.inc.php';
/**
* A Helper class for containing anything in form
*/
class simbio_form_maker_anything extends abs_simbio_form_element
{
public $content = '';
public function out()
{
return $this->content;
}
}
class simbio_form_maker
{
public $submit_target = '_self';
protected $elements = array();
protected $hidden_elements = array();
protected $form_name = '';
protected $form_method = '';
protected $form_action = '';
protected $disable = '';
protected $enable_upload = true;
/**
* Class Constructor
*
* @param string $str_form_name
* @param string $str_form_action
* @param string $str_form_method
* @param boolean $bool_enable_upload
*/
public function __construct($str_form_name = 'mainForm', $str_form_action = '', $str_form_method = 'post', $bool_enable_upload = true)
{
$this->form_name = $str_form_name;
$this->form_action = $str_form_action;
$this->form_method = $str_form_method;
$this->enable_upload = $bool_enable_upload;
}
/**
* Method to start form
*
* @return string
*/
public function startForm()
{
return '<form name="'.$this->form_name.'" id="'.$this->form_name.'" '
.'method="'.$this->form_method.'" '
.'action="'.$this->form_action.'" target="'.$this->submit_target.'"'.($this->enable_upload?' enctype="multipart/form-data"':'').'>';
}
/**
* Method to end form
*
* @return string
*/
public function endForm()
{
return '</form>';
}
/**
* Method to printOut form object
*
*/
protected function printOut()
{
// please extends this method
}
/**
* Method to add text field to form
*
* @param string $str_elmnt_type
* @param string $str_elmnt_name
* @param string $str_elmnt_label
* @param string $str_elmnt_value
* @param string $str_elmnt_attr
* @param string $str_elmnt_info
* @return void
*/
public function addTextField($str_elmnt_type, $str_elmnt_name, $str_elmnt_label, $str_elmnt_value = '', $str_elmnt_attr = '', $str_elmnt_info = '')
{
// create instance
$_form_element = new simbio_fe_text();
// set form element object properties
$_form_element->element_type = $str_elmnt_type;
$_form_element->element_name = $str_elmnt_name;
$_form_element->element_value = $str_elmnt_value;
$_form_element->element_attr = $str_elmnt_attr;
$this->elements[$str_elmnt_name] = array('label' => $str_elmnt_label, 'element' => $_form_element, 'info' => $str_elmnt_info);
}
/**
* Method to add select list field to form
*
* @param string $str_elmnt_name
* @param string $str_elmnt_label
* @param array $array_option
* @param string $str_default_selected
* @param string $str_elmnt_attr
* @param string $str_elmnt_info
* @return void
*/
public function addSelectList($str_elmnt_name, $str_elmnt_label, $array_option, $str_default_selected = '', $str_elmnt_attr = '', $str_elmnt_info = '')
{
// create instance
$_form_element = new simbio_fe_select();
// set form element object properties
$_form_element->element_name = $str_elmnt_name;
$_form_element->element_options = $array_option;
$_form_element->element_value = $str_default_selected;
$_form_element->element_attr = $str_elmnt_attr;
$this->elements[$str_elmnt_name] = array('label' => $str_elmnt_label, 'element' => $_form_element, 'info' => $str_elmnt_info);
}
/**
* Method to add checkbox field to form
*
* @param string $str_elmnt_name
* @param string $str_elmnt_label
* @param array $array_chbox
* @param mixed $default_checked
* @param string $str_elmnt_info
* @return void
*/
public function addCheckBox($str_elmnt_name, $str_elmnt_label, $array_chbox, $default_checked = '', $str_elmnt_info = '')
{
// create instance
$_form_element = new simbio_fe_checkbox();
// set form element object properties
$_form_element->element_name = $str_elmnt_name;
$_form_element->element_options = $array_chbox;
$_form_element->element_value = $default_checked;
$this->elements[$str_elmnt_name] = array('label' => $str_elmnt_label, 'element' => $_form_element, 'info' => $str_elmnt_info);
}
/**
* Method to add radio button field to form
*
* @param string $str_elmnt_name
* @param string $str_elmnt_label
* @param array $array_option
* @param mixed $default_checked
* @param string $str_elmnt_info
* @return void
*/
public function addRadio($str_elmnt_name, $str_elmnt_label, $array_option, $default_checked = '', $str_elmnt_info = '')
{
// create instance
$_form_element = new simbio_fe_radio();
// set form element object properties
$_form_element->element_name = $str_elmnt_name;
$_form_element->element_options = $array_option;
$_form_element->element_value = $default_checked;
$this->elements[$str_elmnt_name] = array('label' => $str_elmnt_label, 'element' => $_form_element, 'info' => $str_elmnt_info);
}
/**
* Method to add date selection field to form
*
* @param string $str_date_elmnt_name
* @param string $str_month_elmnt_name
* @param string $str_year_elmnt_name
* @param string $str_elmnt_label
* @param string $str_date
* @param string $str_elmnt_info
* @return void
*/
public function addDateField($str_date_elmnt_name = 'date', $str_month_elmnt_name = 'month', $str_year_elmnt_name = 'year', $str_elmnt_label = 'Date', $str_date = '', $str_elmnt_info = '')
{
$_form_element = new simbio_fe_date();
// set date element properties
$_form_element->date_elmnt_name = $str_date_elmnt_name;
$_form_element->month_elmnt_name = $str_month_elmnt_name;
$_form_element->year_elmnt_name = $str_year_elmnt_name;
$_form_element->default_date = $str_date;
$this->elements[$str_date_elmnt_name] = array('label' => $str_elmnt_label, 'element' => $_form_element, 'info' => $str_elmnt_info);
}
/**
* Method to add hidden fields
*
* @param string $str_elmnt_name
* @param string $str_elmnt_value
* @return void
*/
public function addHidden($str_elmnt_name, $str_elmnt_value)
{
$_form_element = new simbio_fe_text();
$_form_element->element_type = 'hidden';
$_form_element->element_name = $str_elmnt_name;
$_form_element->element_value = $str_elmnt_value;
$this->hidden_elements[] = $_form_element;
}
/**
* Method to add anything such as text or other HTML element to form
*
* @param string $str_elmnt_label
* @param string $str_content
* @return void
*/
public function addAnything($str_elmnt_label, $str_content)
{
$_form_element = new simbio_form_maker_anything();
$_form_element->content = $str_content;
$this->elements[] = array('label' => $str_elmnt_label, 'element' => $_form_element, 'info' => null);
}
/**
* Method to add simbio form elements object directly
*
* @param string $str_elmnt_label
* @param object $obj_simbio_fe
* @return void
*/
public function addFormObject($str_elmnt_label, $obj_simbio_fe, $str_elmnt_info = '')
{
$this->elements[$obj_simbio_fe->element_name] = array('label' => $str_elmnt_label, 'element' => $obj_simbio_fe, 'info' => $str_elmnt_info);
}
}
?>