'."\n"; empty($hidden) or $form .= form::hidden($hidden); return $form; } public static function open_multipart($action = NULL, $attr = array(), $hidden = array()) { $attr['enctype'] = 'multipart/form-data'; return form::open($action, $attr, $hidden); } public static function open_fieldset($data = NULL, $extra = '') { return '
'."\n"; } public static function legend($text = '', $data = NULL, $extra = '') { return ''."\n"; } public static function hidden($data, $value = '') { if ( ! is_array($data)) { $data = array ( $data => $value ); } $input = ''; foreach ($data as $name => $value) { $attr = array ( 'type' => 'hidden', 'name' => $name, 'value' => $value ); $input .= form::input($attr)."\n"; } return $input; } public static function input($data, $value = '', $extra = '') { if ( ! is_array($data)) { $data = array('name' => $data); } $data += array ( 'type' => 'text', 'value' => $value ); return ''; } public static function password($data, $value = '', $extra = '') { if ( ! is_array($data)) { $data = array('name' => $data); } $data['type'] = 'password'; return form::input($data, $value, $extra); } public static function upload($data, $value = '', $extra = '') { if ( ! is_array($data)) { $data = array('name' => $data); } $data['type'] = 'file'; return form::input($data, $value, $extra); } public static function textarea($data, $value = '', $extra = '', $double_encode = TRUE) { if ( ! is_array($data)) { $data = array('name' => $data); } $value = isset($data['value']) ? $data['value'] : $value; unset($data['value']); return ''; } public static function dropdown($data, $options = NULL, $selected = NULL, $extra = '') { if ( ! is_array($data)) { $data = array('name' => $data); } else { if (isset($data['options'])) { $options = $data['options']; } if (isset($data['selected'])) { $selected = $data['selected']; } } if (is_array($selected)) { $data['multiple'] = 'multiple'; } else { $selected = array($selected); } $input = ''; return $input; } public static function checkbox($data, $value = '', $checked = FALSE, $extra = '') { if ( ! is_array($data)) { $data = array('name' => $data); } $data['type'] = 'checkbox'; if ($checked == TRUE OR (isset($data['checked']) AND $data['checked'] == TRUE)) { $data['checked'] = 'checked'; } else { unset($data['checked']); } return form::input($data, $value, $extra); } public static function radio($data = '', $value = '', $checked = FALSE, $extra = '') { if ( ! is_array($data)) { $data = array('name' => $data); } $data['type'] = 'radio'; if ($checked == TRUE OR (isset($data['checked']) AND $data['checked'] == TRUE)) { $data['checked'] = 'checked'; } else { unset($data['checked']); } return form::input($data, $value, $extra); } public static function submit($data = '', $value = '', $extra = '') { if ( ! is_array($data)) { $data = array('name' => $data); } if (empty($data['name'])) { unset($data['name']); } $data['type'] = 'submit'; return form::input($data, $value, $extra); } public static function button($data = '', $value = '', $extra = '') { if ( ! is_array($data)) { $data = array('name' => $data); } if (empty($data['name'])) { unset($data['name']); } if (isset($data['value']) AND empty($value)) { $value = arr::remove('value', $data); } return ''; } public static function close($extra = '') { return ''."\n".$extra; } public static function label($data = '', $text = NULL, $extra = '') { if ( ! is_array($data)) { if (is_string($data)) { $data = array('for' => $data); } else { $data = array(); } } if ($text === NULL AND isset($data['for'])) { $text = ucwords(inflector::humanize($data['for'])); } return ''; } public static function attributes($attr, $type = NULL) { if (empty($attr)) return ''; if (isset($attr['name']) AND empty($attr['id']) AND strpos($attr['name'], '[') === FALSE) { if ($type === NULL AND ! empty($attr['type'])) { $type = $attr['type']; } switch ($type) { case 'text': case 'textarea': case 'password': case 'select': case 'checkbox': case 'file': case 'image': case 'button': case 'submit': $attr['id'] = $attr['name']; break; } } $order = array ( 'action', 'method', 'type', 'id', 'name', 'value', 'src', 'size', 'maxlength', 'rows', 'cols', 'accept', 'tabindex', 'accesskey', 'align', 'alt', 'title', 'class', 'style', 'selected', 'checked', 'readonly', 'disabled' ); $sorted = array(); foreach ($order as $key) { if (isset($attr[$key])) { $sorted[$key] = $attr[$key]; unset($attr[$key]); } } return html::attributes(array_merge($sorted, $attr)); } }