/**
  * 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;
 }
Example #2
0
 /**
  * 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;
 }
Example #3
0
 /**
  * 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 .= ' &nbsp;<label for="' . $attrs['id'] . '">' . $val . '</label>';
             $str .= "&nbsp;&nbsp;&nbsp;";
             $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;
 }
Example #4
0
 /**
  * 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' => "&nbsp;&nbsp;&nbsp;");
     $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;
 }
Example #6
0
	/**
	 * 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 .= "&nbsp;&nbsp;&nbsp;";
				$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;
	}