function hc_form_input($field, $defaults = array(), $errors = array(), $show_label = TRUE) { $out = ''; if (isset($field['hide']) && $field['hide']) { return; } $keep = array('conf', 'data', 'id', 'name', 'value', 'type', 'required', 'label', 'options', 'readonly', 'disabled', 'style', 'extra', 'text_before', 'text_after', 'cols', 'rows', 'help'); $unset = array('type', 'label', 'extra', 'text_before', 'text_after'); reset($keep); $f = array(); foreach ($keep as $k) { if (isset($field[$k])) { $f[$k] = $field[$k]; } } $error = isset($errors[$f['name']]) ? $errors[$f['name']] : ''; $class = $error ? 'control-group error' : 'control-group'; $required = (isset($f['required']) && $f['required'] or isset($field['rules']) && is_array($field['rules']) && in_array('required', $field['rules'])) ? TRUE : FALSE; $type = isset($f['type']) ? $f['type'] : ''; $label = isset($f['label']) ? $f['label'] : ''; $text_before = isset($f['text_before']) ? $f['text_before'] : ''; $text_after = isset($f['text_after']) ? $f['text_after'] : ''; $label = isset($f['label']) ? $f['label'] : ''; $extra = ''; if (isset($field['size'])) { if (isset($f['extra']['style'])) { $f['extra']['style'] .= '; width: ' . $field['size'] . 'em;'; } else { $f['extra']['style'] = 'width: ' . $field['size'] . 'em;'; } } if (isset($f['extra'])) { $extra = array(); reset($f['extra']); foreach ($f['extra'] as $k => $v) { $extra[] = $k . '="' . $v . '"'; } $extra = join(' ', $extra); } if (isset($defaults[$f['name']])) { $default = $defaults[$f['name']]; } elseif (substr($f['name'], -2) == '[]' && isset($defaults[substr($f['name'], 0, -2)])) { $default = $defaults[substr($f['name'], 0, -2)]; } elseif (isset($field['default'])) { $default = $field['default']; } else { $default = NULL; } foreach ($unset as $k) { unset($f[$k]); } if ($type == 'hidden') { $out .= form_hidden($f['name'], $default); } else { $label = Hc_lib::parse_lang($label); if ($show_label) { $out .= '<div class="' . $class . '">'; $out .= '<label class="control-label" for="' . $f['name'] . '">' . $label; if ($required) { $out .= ' *'; } $out .= '</label>'; $out .= '<div class="controls">'; } switch ($type) { case 'plain': if (isset($f['options']) && isset($f['options'][$default])) { $view = $f['options'][$default]; } else { $view = $default; } $out .= $view; break; case 'label': if (isset($f['options']) && isset($f['options'][$default])) { $view = $f['options'][$default]; } else { $view = $default; } $out .= '<span class="uneditable-input">' . $view . '</span>'; break; case 'dropdown': if (isset($f['id'])) { $extra .= ' id="' . $f['id'] . '"'; } $this_name = $f['name']; $multiple = strpos($extra, 'multiple') !== FALSE; if ($multiple) { $this_name = $f['name'] . '[]'; } $out .= form_dropdown($this_name, $f['options'], set_value($f['name'], $default), $extra); if ($text_after) { $out .= ' ' . $text_after; } break; case 'textarea': $out .= form_textarea($f, set_value($f['name'], $default), $extra); break; case 'radio': $out .= '<div class="radio">'; foreach ($f['options'] as $fk => $fv) { $out .= '<label style="display: block;">'; $ff = $f; unset($ff['options']); $checked = $default == $fk ? TRUE : FALSE; $out .= form_radio($ff, $fk, $checked, $extra); $out .= Hc_lib::parse_lang($fv); $out .= '</label>'; } $out .= '</div>'; break; case 'date': $out .= hc_form_date($f, $default, $extra); break; case 'time': $out .= hc_form_time($f, $default, $extra); break; case 'timeframe': $out .= hc_form_timeframe($f, $default, $extra); break; case 'weekday': $out .= hc_form_weekday($f, $default); break; case 'checkbox': if ($text_before) { $out .= $text_before . ' '; } $value = isset($f['value']) ? $f['value'] : 1; if (is_array($default)) { $checked = in_array($value, $default) ? TRUE : FALSE; } else { $checked = $default == $value ? TRUE : FALSE; } if (isset($f['readonly']) && $f['readonly']) { $out .= form_hidden($f['name'], $value); $extra .= ' disabled="disabled"'; $out .= form_checkbox($f['name'] . '_justview', $value, $checked, $extra); } else { $out .= form_checkbox($f['name'], $value, $checked, $extra); } if ($text_after) { $out .= ' ' . $text_after; } break; case 'checkbox_set': if ($text_before) { $out .= $text_before . ' '; } $value = isset($f['value']) ? $f['value'] : $default; if (!is_array($value)) { $value = array($value); } $this_out = array(); foreach ($f['options'] as $option_value => $option_label) { $checkbox_field = array('name' => $f['name'] . '[]', 'type' => 'checkbox', 'value' => $option_value); $checked = in_array($option_value, $value) ? TRUE : FALSE; $this_out[] = '<div class="checkbox checkbox-inline">'; $this_out[] = '<label>' . form_checkbox($checkbox_field, $option_value, $checked) . $option_label . '</label>'; $this_out[] = '</div>'; } $out .= join(' ', $this_out); if ($text_after) { $out .= ' ' . $text_after; } break; case 'password': $f['type'] = 'password'; default: if ($text_before) { $out .= $text_before . ' '; } $out .= form_input($f, $default, $extra); if ($text_after) { $out .= ' ' . $text_after; } break; } if ($error) { $out .= '<span class="help-inline">' . $error . '</span>'; } if (isset($f['help']) && !$error) { $out .= '<span class="help-block"><em>' . Hc_lib::parse_lang($f['help']) . '</em></span>'; } } return $out; }
static function wrap_input($label, $input, $aligned = TRUE) { $return = ''; $inputs = is_array($input) ? $input : array($input); $label = Hc_lib::parse_lang($label); $surroundClass = 'form-group'; if (is_object($input) && $input->error) { $surroundClass .= ' has-error'; } elseif (count($inputs) > 1) { reset($inputs); foreach ($inputs as $in) { if (is_object($in) && $in->error) { $surroundClass .= ' has-error'; break; } } } $return .= '<div class="' . $surroundClass . '">'; if (is_object($input) && $input->type == 'checkbox') { if ($aligned) { // $return .= '<div class="col-sm-10 col-sm-offset-2">'; $return .= '<div class="control-holder">'; } else { $return .= '<div class="col-sm-12">'; } } else { // $return .= '<label class="col-sm-2 control-label">'; $return .= '<label class="control-label">'; $return .= $label; $return .= '</label>'; // $return .= '<div class="col-sm-10">'; $return .= '<div class="control-holder">'; } foreach ($inputs as $input) { if (is_object($input) && $input->type == 'checkbox') { $return .= '<div class="checkbox">'; $return .= '<label>'; $return .= $input->view; if (count($inputs) <= 1) { $return .= ' ' . $label; } $return .= '</label>'; if ($input->error) { $return .= '<span class="help-inline">' . $input->error . '</span>'; } if ($input->help) { $return .= '<span class="help-block">' . $input->help . '</span>'; } $return .= '</div>'; } else { $wrap_start = ''; $wrap_end = ''; if (!is_object($input) or in_array($input->type, array('labelData'))) { if (count($inputs) < 2) { $wrap_start = '<p class="form-control-static">'; $wrap_end = '</p>'; } } if (is_object($input)) { $return .= $wrap_start . $input->view . $wrap_end; } else { $return .= $wrap_start . $input . $wrap_end; } if (is_object($input)) { if ($input->error) { $return .= '<span class="help-inline">' . $input->error . '</span>'; } if ($input->help) { $return .= '<span class="help-block">' . $input->help . '</span>'; } } } } $return .= '</div>'; $return .= '</div>'; return $return; }
function prop_text($pname, $decorate = FALSE, $force_value = NULL) { $return = ''; $CI =& ci_get_instance(); $args = func_get_args(); if (isset($args[2])) { $value = $args[2]; } else { $method = 'get_' . $pname; if (method_exists($this, $method)) { $value = $this->{$method}(); } else { $value = $this->{$pname}; } } /* prop_text explicitely defined */ if (!is_object($value) && isset($this->prop_text[$pname][$value])) { $return = is_array($this->prop_text[$pname][$value]) ? $this->prop_text[$pname][$value][0] : $this->prop_text[$pname][$value]; $return = Hc_lib::parse_lang($return); if ($decorate && is_array($this->prop_text[$pname][$value])) { $class = $this->prop_text[$pname][$value][1]; $return = '<span class="label label-' . $class . '">' . $return . '</span>'; } return $return; } $f = $this->get_field($pname); if (!$f) { return $value; } $type = isset($f['type']) ? $f['type'] : 'text'; switch ($type) { case 'date': $CI->load->library('hc_time'); $CI->hc_time->setDateDb($value); $return = $CI->hc_time->formatDateFull(); break; case 'time': $CI->load->library('hc_time'); $return = $CI->hc_time->formatTimeOfDay($value); break; case 'boolean': $return = $value ? lang('common_yes') : lang('common_no'); break; default: if (is_object($value)) { $return = $value->get()->title(); } else { $return = $value; } break; } return $return; }