/** * Creates the multi select input for the form (this is overwritten by the Fuel_custom_fields to give more functionaltity) * * @access public * @param array fields parameters * @return string */ public function create_multi($params) { $defaults = array('options' => array(), 'mode' => NULL, 'wrapper_tag' => 'span', 'wrapper_class' => 'multi_field', 'spacer' => " "); $params = $this->normalize_params($params, $defaults); $str = ''; $mode = !empty($params['mode']) ? $params['mode'] : $this->multi_select_mode; if ($mode == 'checkbox' or $mode == 'auto' and (isset($params['options']) and count($params['options']) <= 5)) { $value = isset($params['value']) ? (array) $params['value'] : array(); $params['name'] = $params['name'] . '[]'; $i = 1; if (!empty($params['options'])) { foreach ($params['options'] as $key => $val) { $tabindex_id = $i - 1; $str .= '<' . $params['wrapper_tag'] . ' class="' . $params['wrapper_class'] . '">'; $attrs = array('readonly' => $params['readonly'], 'disabled' => $params['disabled'], 'id' => Form::create_id($params['name']) . $i, 'style' => '', 'tabindex' => (is_array($params['tabindex']) and isset($params['tabindex'][$i - 1])) ? $params['tabindex'][$i - 1] : NULL, 'attributes' => $params['attributes']); if (in_array($key, $value)) { $attrs['checked'] = 'checked'; } $str .= $this->form->checkbox($params['name'], $key, $attrs); $label = ($lang = $this->label_lang($attrs['id'])) ? $lang : $val; $enum_params = array('label' => $label, 'name' => $attrs['id']); $str .= ' ' . $this->create_label($enum_params); $str .= $params['spacer']; $str .= '</' . $params['wrapper_tag'] . '>'; $i++; } } } else { $params['multiple'] = TRUE; $str .= $this->create_select($params); } return $str; }
/** * Writes the html output of the form element * * @access public * @return string */ public function writeIt() { $id = ''; if (strpos($this->attrs, 'id="') === FALSE) { $name = Form::create_id($this->name); $id = $this->type == 'radio' ? ' id="' . $name . '_' . str_replace(' ', '_', $this->value) . '"' : ' id="' . $name . '"'; } $this->attrs = str_replace('id=""', '', $this->attrs); $str = "<button type=\"" . $this->type . "\" name=\"" . $this->name . "\"" . $id . " value=\"" . $this->value . "\"" . $this->attrs . ">" . $this->value . "</button>"; return $str; }
/** * Creates the multi select input for the form * * @access public * @param array fields parameters * @return string */ public function create_multi($params) { $str = ''; $mode = !empty($params['mode']) ? $params['mode'] : $this->multi_select_mode; if ($mode == 'checkbox' or $mode == 'auto' and count($params['options']) <= 5) { $value = isset($params['value']) ? (array) $params['value'] : array(); $params['name'] = $params['name'] . '[]'; $i = 1; foreach ($params['options'] as $key => $val) { $str .= '<span class="multi_field">'; $attrs = array('readonly' => $params['readonly'], 'disabled' => $params['disabled'], 'id' => Form::create_id($params['name']) . $i, 'style' => ''); if (in_array($key, $value)) { $attrs['checked'] = 'checked'; } $str .= $this->form->checkbox($params['name'], $key, $attrs); $str .= ' <label for="' . $attrs['id'] . '">' . $val . '</label>'; $str .= " "; $str .= '</span>'; $i++; } } else { $params['multiple'] = TRUE; $str .= $this->create_select($params); if (!empty($params['sorting'])) { if ($params['sorting'] === TRUE && is_array($params['value'])) { $params['sorting'] = $params['value']; } $sorting_params['name'] = 'sorting_' . $params['name']; $sorting_params['value'] = rawurlencode(json_encode($params['sorting'])); $str .= $this->create_hidden($sorting_params); } } return $str; }
/** * Writes the html output of the form element * * @access public * @return string */ public function render() { $id = ''; if (strpos($this->attrs, 'id="') === FALSE) { $name = Form::create_id($this->name); } $this->attrs = str_replace('id=""', '', $this->attrs); $str = "<button type=\"" . $this->type . "\" name=\"" . $this->name . "\"" . $id . " value=\"" . $this->value . "\"" . $this->attrs . ">" . $this->value . "</button>"; return $str; }
/** * Creates the multi select input for the form * * @access public * @param array Fields parameters * @return string */ public function multi($params) { $form_builder =& $params['instance']; $defaults = array('sorting' => NULL, 'options' => array(), 'mode' => NULL, 'model' => NULL, 'model_params' => NULL, 'wrapper_tag' => 'span', 'wrapper_class' => 'multi_field', 'module' => NULL, 'spacer' => " "); $params = $form_builder->normalize_params($params, $defaults); // force to multi if sorting is selected if ($params['sorting'] === TRUE) { $params['mode'] = 'multi'; } // grab options from a model if a model is specified if (!empty($params['model'])) { $model_params = !empty($params['model_params']) ? $params['model_params'] : array(); $params['options'] = $form_builder->options_from_model($params['model'], $model_params); } if (!empty($params['module'])) { // // hackalicious... used to check for a model's module $modules = $this->CI->fuel->modules->get(NULL, FALSE); foreach ($modules as $key => $mod) { $mod_name = preg_replace('#(\\w+)_model$#', '$1', strtolower($mod->info('model_name'))); if (strtolower($params['module']) == $mod_name) { $params['module'] = $key; break; } } if (strpos($params['module'], '/') === FALSE) { $module = $this->CI->fuel->modules->get($params['module'], FALSE); $uri = !empty($module) ? $module->info('module_uri') : ''; } else { $uri = $params['module']; } // check for modules with fuel_ prefix $permission = !empty($module) ? $module->permission : $uri; if (!empty($params['module']) and $this->fuel->auth->has_permission($permission)) { $inline_class = 'add_edit ' . $uri; $params['class'] = !empty($params['class']) ? $params['class'] . ' ' . $inline_class : $inline_class; $params['data'] = array('module' => $uri); } } $str = ''; $mode = !empty($params['mode']) ? $params['mode'] : $form_builder->multi_select_mode; if ($mode == 'checkbox' or $mode == 'auto' and (isset($params['options']) and count($params['options']) <= 5)) { $value = isset($params['value']) ? (array) $params['value'] : array(); $params['name'] = $params['name'] . '[]'; $i = 1; if (!empty($params['options'])) { if (!empty($inline_class)) { $data_value = is_array($params['value']) ? implode(',', $params['value']) : $params['value']; $str .= ' <span class="' . $inline_class . '" data-module="' . $uri . '" id="' . $params['orig_name'] . '" data-value="' . $data_value . '">'; } foreach ($params['options'] as $key => $val) { $str .= '<' . $params['wrapper_tag'] . ' class="' . $params['wrapper_class'] . '">'; $attrs = array('readonly' => $params['readonly'], 'disabled' => $params['disabled'], 'id' => Form::create_id($params['name']) . $i, 'style' => ''); if (in_array($key, $value)) { $attrs['checked'] = 'checked'; } $str .= $form_builder->form->checkbox($params['name'], $key, $attrs); $label = ($lang = $form_builder->label_lang($attrs['id'])) ? $lang : $val; $enum_params = array('label' => $label, 'name' => $attrs['id']); $str .= ' ' . $form_builder->create_label($enum_params); $str .= $params['spacer']; $str .= '</' . $params['wrapper_tag'] . '>'; $i++; } if (!empty($inline_class)) { '</span>'; } } } else { $params['multiple'] = TRUE; $str .= $form_builder->create_select($params); if (!empty($params['sorting'])) { if ($params['sorting'] === TRUE and is_array($params['value'])) { $params['sorting'] = $params['value']; } $sorting_params['name'] = 'sorting_' . $params['orig_name']; $sorting_params['value'] = rawurlencode(json_encode($params['sorting'])); $sorting_params['class'] = 'sorting'; $str .= $form_builder->create_hidden($sorting_params); } } // needed to detect when none exists $exists_params['name'] = 'exists_' . $params['orig_name']; $exists_params['value'] = 1; $exists_params['type'] = 'hidden'; $exists_params['ignore_representative'] = TRUE; $str .= $form_builder->create_field($exists_params); return $str; }
/** * Creates the multi select input for the form * * @access public * @param array fields parameters * @return string */ public function create_multi($params) { $params = $this->_normalize_value($params); $str = ''; $mode = (!empty($params['mode'])) ? $params['mode'] : $this->multi_select_mode; if ($mode == 'checkbox' OR ($mode == 'auto' AND count($params['options']) <= 5)) { $value = (isset($params['value'])) ? (array)$params['value'] : array(); $params['name'] = $params['name'].'[]'; $i = 1; foreach($params['options'] as $key => $val) { $str .= '<span class="multi_field">'; $attrs = array( 'readonly' => $params['readonly'], 'disabled' => $params['disabled'], 'id' => Form::create_id($params['name']).$i, 'style' => '' // to overwrite any input width styles ); if (in_array($key, $value)) { $attrs['checked'] = 'checked'; } $str .= $this->form->checkbox($params['name'], $key, $attrs); $label = ($lang = $this->_label_lang($attrs['id'])) ? $lang : $val; $enum_params = array('label' => $label, 'name' => $attrs['id']); $str .= ' '.$this->create_label($enum_params); $str .= " "; $str .= '</span>'; $i++; } } else { $params['multiple'] = TRUE; $str .= $this->create_select($params); if (!empty($params['sorting'])) { if ($params['sorting'] === TRUE && is_array($params['value'])) { $params['sorting'] = $params['value']; } $sorting_params['name'] = 'sorting_'.$params['orig_name']; $sorting_params['value'] = rawurlencode(json_encode($params['sorting'])); $str .= $this->create_hidden($sorting_params); } } return $str; }