/simbio2/simbio_GUI/form_maker/simbio_form_element.inc.php
PHP | 399 lines | 260 code | 37 blank | 102 comment | 50 complexity | 0ebed90f52719feba77673fc4bceb754 MD5 | raw file
- <?php
- /**
- * simbio_form_element
- * Collection of Form Element Class
- *
- * Copyright (C) 2007,2008 Arie Nugraha (dicarve@yahoo.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
- *
- */
- // be sure that this file not accessed directly
- if (!defined('INDEX_AUTH')) {
- die("can not access this file directly");
- } elseif (INDEX_AUTH != 1) {
- die("can not access this file directly");
- }
- /* abstract form element class to be inherited by form element classes */
- abstract class abs_simbio_form_element
- {
- public $element_type = 'text';
- public $element_name = '';
- public $element_value;
- public $element_options;
- public $element_attr = '';
- public $element_css_class = '';
- public $element_disabled = false;
- public $element_helptext = '';
- /**
- * Below method must be inherited
- *
- * @return string
- */
- abstract protected function out();
- }
- /* Text field object */
- class simbio_fe_text extends abs_simbio_form_element
- {
- public function out()
- {
- $_buffer = '';
- if (!in_array($this->element_type, array('textarea', 'text', 'password', 'button', 'file', 'hidden', 'submit', 'button', 'reset', 'date'))) {
- return 'Unrecognized element type!';
- }
- // check if disabled
- if ($this->element_disabled) {
- $_disabled = ' disabled="disabled"';
- } else { $_disabled = ''; }
- if ($this->element_helptext) {
- $this->element_attr .= ' title="'.$this->element_helptext.'"';
- }
- // maxlength attribute
- if (!stripos($this->element_attr, 'maxlength')) {
- if ($this->element_type == 'text') {
- $this->element_attr .= ' maxlength="256"';
- } else if ($this->element_type == 'textarea') {
- $this->element_attr .= ' maxlength="'.(30*1024).'"';
- }
- }
- // sanitize name for ID
- $_elID = str_replace(array('[', ']', ' '), '', $this->element_name);
- // checking element type
- if ($this->element_type == 'textarea') {
- $_buffer .= '<textarea name="'.$this->element_name.'" id="'.$_elID.'" '.$this->element_attr.''.$_disabled.'>';
- $_buffer .= $this->element_value;
- $_buffer .= '</textarea>'."\n";
- } else if (stripos($this->element_type, 'date', 0) !== false) {
- $_buffer .= '<div class="dateField"><input class="dateInput" type="'.$this->element_type.'" name="'.$this->element_name.'" id="'.$_elID.'" ';
- $_buffer .= 'value="'.$this->element_value.'" '.$this->element_attr.''.$_disabled.' /><a class="calendarLink notAJAX" style="cursor: pointer;" onclick="javascript: dateType = \''.$this->element_type.'\'; openCalendar(\''.$_elID.'\');" title="Open Calendar"></a></div>'."\n";
- } else {
- $_buffer .= '<input type="'.$this->element_type.'" name="'.$this->element_name.'" id="'.$_elID.'" ';
- $_buffer .= 'value="'.$this->element_value.'" '.$this->element_attr.''.$_disabled.' />'."\n";
- }
- return $_buffer;
- }
- }
- /* Drop Down Select List object */
- class simbio_fe_select extends abs_simbio_form_element
- {
- public function out()
- {
- // check for $array_option param
- if (!is_array($this->element_options)) {
- return '<select name="'.$this->element_name.'" '.$this->element_attr.'></select>';
- }
- // check if disabled
- if ($this->element_disabled) {
- $_disabled = ' disabled="disabled"';
- } else { $_disabled = ''; }
- if ($this->element_helptext) {
- $this->element_attr .= ' title="'.$this->element_helptext.'"';
- }
- $_buffer = '<select name="'.$this->element_name.'" id="'.$this->element_name.'" '.$this->element_attr.''.$_disabled.'>'."\n";
- foreach ($this->element_options as $option) {
- if (is_string($option)) {
- // if the selected element is an array then
- // the selected option is also multiple to
- if (is_array($this->element_value)) {
- $_buffer .= '<option value="'.$option.'" '.(in_array($option, $this->element_value)?'selected':'').'>';
- $_buffer .= $option.'</option>'."\n";
- } else {
- $_buffer .= '<option value="'.$option.'" '.(($option == $this->element_value)?'selected':'').'>';
- $_buffer .= $option.'</option>'."\n";
- }
- } else {
- if (is_array($this->element_value)) {
- $_buffer .= '<option value="'.$option[0].'" '.(in_array($option[0], $this->element_value)?'selected':'').'>';
- $_buffer .= $option[1].'</option>'."\n";
- } else {
- $_buffer .= '<option value="'.$option[0].'" '.(($option[0] == $this->element_value)?'selected':'').'>';
- $_buffer .= $option[1].'</option>'."\n";
- }
- }
- }
- $_buffer .= '</select>'."\n";
- return $_buffer;
- }
- }
- /* AJAX drop down select list object */
- class simbio_fe_AJAX_select extends abs_simbio_form_element
- {
- /**
- * AJAX drop down special properties
- */
- public $handler_URL = 'about:blank';
- public $element_dd_list_class = 'ajaxDDlist';
- public $element_dd_list_default_text = 'SEARCHING...';
- public $additional_params = '';
- public function out()
- {
- $_buffer = '<input type="text" autocomplete="off" id="'.$this->element_name.'" name="'.$this->element_name.'" class="'.$this->element_css_class.' notAJAX" onkeyup="showDropDown(\''.$this->handler_URL.'\', \''.$this->element_name.'\', \''.$this->additional_params.'\')" value="'.$this->element_value.'" />';
- $_buffer .= '<ul class="'.$this->element_dd_list_class.'" id="'.$this->element_name.'List"><li style="padding: 2px; font-weight: bold;">'.$this->element_dd_list_default_text.'</li></ul>';
- return $_buffer;
- }
- }
- /* Checkbox button groups object */
- class simbio_fe_checkbox extends abs_simbio_form_element
- {
- public function out()
- {
- // check for $this->element_options param
- if (!is_array($this->element_options)) {
- return 'The radio button options list must be an array';
- } else {
- foreach ($this->element_options as $cbox) {
- // if the $cbox is not an array
- if (!is_array($cbox)) {
- return 'The radio button options list must be a 2 multi-dimensional array';
- }
- }
- }
- $_elmnt_num = count($this->element_options);
- $_row_column = 5;
- $_helptext = '';
- // check if disabled
- if ($this->element_disabled) {
- $_disabled = ' disabled="disabled"';
- } else { $_disabled = ''; }
- if ($this->element_helptext) {
- $_helptext .= ' title="'.$this->element_helptext.'"';
- }
- $_buffer = '';
- if ($_elmnt_num <= $_row_column) {
- foreach ($this->element_options as $_cbox) {
- if (is_array($this->element_value)) {
- $_buffer .= '<div '.$_helptext.'><input type="checkbox" name="'.$this->element_name.'[]"'
- .' value="'.$_cbox[0].'" style="border: 0;" '.(in_array($_cbox[0], $this->element_value)?'checked':'').$_disabled.' />'
- .' '.$_cbox[1]."</div>\n";
- } else {
- $_buffer .= '<div '.$_helptext.'><input type="checkbox" name="'.$this->element_name.'[]"'
- .' value="'.$_cbox[0].'" style="border: 0;" '.(($_cbox[0] == $this->element_value)?'checked':'').$_disabled.' />'
- .' '.$_cbox[1]."</div>\n";
- }
- }
- } else {
- $_column_array = array_chunk($this->element_options, $_row_column);
- $_buffer = '<table '.$_helptext.'>'."\n";
- $_buffer .= '<tr>'."\n";
- foreach ($_column_array as $_chunked_options) {
- $_buffer .= '<td valign="top">'."\n";
- foreach ($_chunked_options as $_cbox) {
- if (is_array($this->element_value)) {
- $_buffer .= '<div><input type="checkbox" name="'.$this->element_name.'[]"'
- .' value="'.$_cbox[0].'" style="border: 0;" '.(in_array($_cbox[0], $this->element_value)?'checked':'').$_disabled.' />'
- .' '.$_cbox[1]."</div>\n";
- } else {
- $_buffer .= '<div><input type="checkbox" name="'.$this->element_name.'[]"'
- .' value="'.$_cbox[0].'" style="border: 0;" '.(($_cbox[0] == $this->element_value)?'checked':'').$_disabled.' />'
- .' '.$_cbox[1]."</div>\n";
- }
- }
- $_buffer .= '</td>'."\n";
- }
- $_buffer .= '</tr>'."\n";
- $_buffer .= '</table>'."\n";
- }
- return $_buffer;
- }
- }
- /* Radio button groups object */
- class simbio_fe_radio extends abs_simbio_form_element
- {
- public function out()
- {
- // check for $this->element_options param
- if (!is_array($this->element_options)) {
- return 'The third argument must be an array';
- }
- $_buffer = '';
- // number of element in each column
- if (count($this->element_options) > 10) {
- $_elmnt_each_column = 4;
- } else {
- $_elmnt_each_column = 2;
- }
- $_helptext = '';
- if ($this->element_helptext) {
- $_helptext .= ' title="'.$this->element_helptext.'"';
- }
- // chunk the array into pieces of array
- $_chunked_array = array_chunk($this->element_options, $_elmnt_each_column, true);
- $_buffer .= '<table '.$_helptext.'>'."\n";
- $_buffer .= '<tr>'."\n";
- foreach ($_chunked_array as $_chunk) {
- $_buffer .= '<td valign="top">';
- foreach ($_chunk as $_radio) {
- if ($_radio[0] == $this->element_value) {
- $_buffer .= '<div><input type="radio" name="'.$this->element_name.'" id="'.$this->element_name.'"'
- .' value="'.$_radio[0].'" style="border: 0;" checked />'
- .' '.$_radio[1]."</div>\n";
- } else {
- $_buffer .= '<div><input type="radio" name="'.$this->element_name.'" id="'.$this->element_name.'"'
- .' value="'.$_radio[0].'" style="border: 0;" />'
- .' '.$_radio[1]."</div>\n";
- }
- }
- $_buffer .= '</td>';
- }
- $_buffer .= '</tr>'."\n";
- $_buffer .= '</table>'."\n";
- return $_buffer;
- }
- }
- /* Date field */
- /* Global vars containing date and month array */
- $simbio_fe_date_array = array( array('01', strtoupper(__('Date')), '01', '02', '03', '04', '05', '06', '07', '08', '09', '10',
- '11', '12', '13', '14', '15', '16', '17', '18', '19', '20',
- '21', '22', '23', '24', '25', '26', '27', '28', '29', '30', '31'));
- $simbio_fe_date_month_array = array( array('01', strtoupper(__('Month')), array('01', 'January'), array('02', 'February'), array('03', 'March'),
- array('04', 'April'), array('05', 'May'), array('06', 'June'),
- array('07', 'July'), array('08', 'August'), array('09', 'September'),
- array('10', 'October'), array('11', 'November'), array('12', 'December')));
- /* Depecrated class for compability with older code */
- class simbio_form_element
- {
- /**
- * Static Method to create input field form element
- *
- * @param string $str_elmnt_type
- * @param string $str_elmnt_name
- * @param string $str_elmnt_value
- * @param string $str_elmnt_attr
- */
- public static function textField($str_elmnt_type, $str_elmnt_name, $str_elmnt_value = '', $str_elmnt_attr = '')
- {
- $_textField = new simbio_fe_text();
- $_textField->element_type = $str_elmnt_type;
- $_textField->element_name = $str_elmnt_name;
- $_textField->element_value = $str_elmnt_value;
- $_textField->element_attr = $str_elmnt_attr;
- return $_textField->out();
- }
- /**
- * Static Method to create form element
- *
- * @param string $str_elmnt_name
- * @param array $array_option
- * @param string $str_default_selected
- * @param string $str_elmnt_attr
- * @return string
- */
- public static function selectList($str_elmnt_name, $array_option, $str_default_selected = '', $str_elmnt_attr = '')
- {
- $_selectList = new simbio_fe_select();
- $_selectList->element_name = $str_elmnt_name;
- $_selectList->element_value = $str_default_selected;
- $_selectList->element_attr = $str_elmnt_attr;
- $_selectList->element_options = $array_option;
- return $_selectList->out();
- }
- /**
- * Static Method to create form element
- *
- * @param string $str_elmnt_name
- * @param string $str_elmnt_label
- * @param array $array_chbox
- * @return string
- */
- public static function checkBox($str_elmnt_name, $array_chbox, $default_checked = '')
- {
- $_checkBox = new simbio_fe_checkbox();
- $_checkBox->element_name = $str_elmnt_name;
- $_checkBox->element_value = $default_checked;
- $_checkBox->element_options = $array_chbox;
- return $_checkBox->out();
- }
- /**
- * Static Method to create form element
- *
- * @param string $str_elmnt_name
- * @param array $array_option
- * @param string $str_default_selected
- * @return string
- */
- public static function radioButton($str_elmnt_name, $array_option, $default_checked = '')
- {
- $_radio = new simbio_fe_select();
- $_radio->element_name = $str_elmnt_name;
- $_radio->element_value = $default_checked;
- $_radio->element_options = $array_option;
- return $_radio->out();
- }
- /**
- * Static Method to create date input field form element
- *
- * @param string $str_date_elmnt_name
- * @param string $str_month_elmnt_name
- * @param string $str_year_elmnt_name
- * @param string $str_date
- * @return string
- */
- public static function dateField($str_elmnt_name, $str_elmnt_value = '', $str_elmnt_attr = '')
- {
- return self::textField('date', $str_elmnt_name, $str_elmnt_value, $str_elmnt_attr);
- }
- /**
- * Static Method to create form element
- *
- * @param string $str_date_elmnt_name
- * @param string $str_elmnt_value
- * @return string
- */
- public static function hiddenField($str_elmnt_name, $str_elmnt_value)
- {
- $_textField = new simbio_fe_text();
- $_textField->element_type = 'hidden';
- $_textField->element_name = $str_elmnt_name;
- $_textField->element_value = $str_elmnt_value;
- return $_textField->out();
- }
- }