has($name)): $classes = 'form-group has-error has-feedback'; break; case (!is_null($warnings) && $warnings->has($name)): $classes = 'form-group has-warning has-feedback'; break; case (!is_null($successes) && $successes->has($name)): $classes = 'form-group has-success has-feedback'; break; default: $classes = 'form-group'; break; } /* * Add some HTML. */ $html = '
'; $html .= ''; $html .= '
'; /* * Switch input type: */ unset($options['label']); switch ($type) { case 'text': $html .= \Form::input('text', $name, $value, $options); break; case 'amount': $html .= '
'; $html .= \Form::input('number', $name, $value, $options); $html .= '
'; break; case 'number': $html .= \Form::input('number', $name, $value, $options); break; case 'checkbox': $checked = $options['checked']; unset($options['placeholder'], $options['autocomplete'], $options['class']); $html .= '
'; break; case 'date': $html .= \Form::input('date', $name, $value, $options); break; case 'select': $html .= \Form::select($name, $list, $value, $options); break; default: throw new FireflyException('Cannot handle type "' . $type . '" in FFFormBuilder.'); break; } /* * If errors, respond to them: */ if (!is_null($errors)) { if ($errors->has($name)) { $html .= ''; $html .= '

' . e($errors->first($name)) . '

'; } } unset($errors); /* * If warnings, respond to them: */ if (!is_null($warnings)) { if ($warnings->has($name)) { $html .= ''; $html .= '

' . e($warnings->first($name)) . '

'; } } unset($warnings); /* * If successes, respond to them: */ if (!is_null($successes)) { if ($successes->has($name)) { $html .= ''; $html .= '

' . e($successes->first($name)) . '

'; } } unset($successes); $html .= '
'; $html .= '
'; return $html; } /** * @param $name * @param $options * * @return string */ public static function label($name, $options) { if (isset($options['label'])) { return $options['label']; } $labels = ['amount_min' => 'Amount (min)', 'amount_max' => 'Amount (max)', 'match' => 'Matches on', 'repeat_freq' => 'Repetition', 'account_from_id' => 'Account from', 'account_to_id' => 'Account to', 'account_id' => 'Asset account']; return isset($labels[$name]) ? $labels[$name] : str_replace('_', ' ', ucfirst($name)); } /** * @param $name * @param null $value * @param array $options * * @return string * @throws FireflyException */ public static function ffBalance($name, $value = null, array $options = []) { $options['step'] = 'any'; return self::ffInput('amount', $name, $value, $options); } /** * @param $name * @param int $value * @param null $checked * @param array $options * * @return string * @throws FireflyException */ public static function ffCheckbox($name, $value = 1, $checked = null, $options = []) { $options['checked'] = $checked === true ? true : null; return self::ffInput('checkbox', $name, $value, $options); } /** * @param $name * @param null $value * @param array $options * * @return string * @throws FireflyException */ public static function ffDate($name, $value = null, array $options = []) { return self::ffInput('date', $name, $value, $options); } /** * @param $name * @param null $value * @param array $options * * @return string * @throws FireflyException */ public static function ffInteger($name, $value = null, array $options = []) { $options['step'] = '1'; return self::ffInput('number', $name, $value, $options); } /** * Return buttons for update/validate/return. * * @param $type * @param $name * * @return string * @throws FireflyException */ public static function ffOptionsList($type, $name) { $previousValue = \Input::old('post_submit_action'); $previousValue = is_null($previousValue) ? 'store' : $previousValue; /* * Store. */ switch ($type) { case 'create': $store = '
'; $store .= '
'; break; case 'update': $store = '
'; $store .= '
'; break; default: throw new FireflyException('Cannot create ffOptionsList for option (store) ' . $type); break; } /* * validate is always the same: */ $validate = '
'; /* * Store & return: */ switch ($type) { case 'create': $return = '
'; break; case 'update': $return = '
'; break; default: throw new FireflyException('Cannot create ffOptionsList for option (store+return) ' . $type); break; } return $store . $validate . $return; } /** * @param $name * @param array $list * @param null $selected * @param array $options * * @return string * @throws FireflyException */ public static function ffSelect($name, array $list = [], $selected = null, array $options = []) { return self::ffInput('select', $name, $selected, $options, $list); } /** * @param $name * @param null $value * @param array $options * * @return string * @throws FireflyException */ public static function ffTags($name, $value = null, array $options = []) { $options['data-role'] = 'tagsinput'; return self::ffInput('text', $name, $value, $options); } /** * @param $name * @param null $value * @param array $options * * @return string * @throws FireflyException */ public static function ffText($name, $value = null, array $options = []) { return self::ffInput('text', $name, $value, $options); } }