| | <?php |
| |
|
| | namespace Kanboard\Helper; |
| |
|
| | use Kanboard\Core\Base; |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | class FormHelper extends Base |
| | { |
| | |
| | |
| | |
| | |
| | |
| | |
| | public function csrf() |
| | { |
| | return '<input type="hidden" name="csrf_token" value="'.$this->token->getCSRFToken().'"/>'; |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | public function hidden($name, array $values = array()) |
| | { |
| | return '<input type="hidden" name="'.$name.'" id="form-'.$name.'" '.$this->formValue($values, $name).'/>'; |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | public function select($name, array $options, array $values = array(), array $errors = array(), array $attributes = array(), $class = '') |
| | { |
| | $html = '<select name="'.$name.'" id="form-'.$name.'" class="'.$class.'" '.implode(' ', $attributes).'>'; |
| |
|
| | foreach ($options as $id => $value) { |
| | $html .= '<option value="'.$this->helper->text->e($id).'"'; |
| |
|
| | if (isset($values->$name) && $id == $values->$name) { |
| | $html .= ' selected="selected"'; |
| | } |
| | if (isset($values[$name]) && $id == $values[$name]) { |
| | $html .= ' selected="selected"'; |
| | } |
| |
|
| | $html .= '>'.$this->helper->text->e($value).'</option>'; |
| | } |
| |
|
| | $html .= '</select>'; |
| | $html .= $this->errorList($errors, $name); |
| |
|
| | return $html; |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | public function colorSelect($name, array $values) |
| | { |
| | $colors = $this->colorModel->getList(); |
| | $html = $this->label(t('Color'), $name); |
| | $html .= $this->select($name, $colors, $values, array(), array('tabindex="4"'), 'color-picker'); |
| | return $html; |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | public function radios($name, array $options, array $values = array()) |
| | { |
| | $html = ''; |
| |
|
| | foreach ($options as $value => $label) { |
| | $html .= $this->radio($name, $label, $value, isset($values[$name]) && $values[$name] == $value); |
| | } |
| |
|
| | return $html; |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | public function radio($name, $label, $value, $selected = false, $class = '') |
| | { |
| | return '<label><input type="radio" name="'.$name.'" class="'.$class.'" value="'.$this->helper->text->e($value).'" '.($selected ? 'checked="checked"' : '').'> '.$this->helper->text->e($label).'</label>'; |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | public function checkboxes($name, array $options, array $values = array()) |
| | { |
| | $html = ''; |
| |
|
| | foreach ($options as $value => $label) { |
| | $html .= $this->checkbox($name.'['.$value.']', $label, $value, isset($values[$name]) && in_array($value, $values[$name])); |
| | } |
| |
|
| | return $html; |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | public function checkbox($name, $label, $value, $checked = false, $class = '', array $attributes = array()) |
| | { |
| | $htmlAttributes = ''; |
| |
|
| | if ($checked) { |
| | $attributes['checked'] = 'checked'; |
| | } |
| |
|
| | foreach ($attributes as $attribute => $attributeValue) { |
| | $htmlAttributes .= sprintf('%s="%s"', $attribute, $this->helper->text->e($attributeValue)); |
| | } |
| |
|
| | return sprintf( |
| | '<label><input type="checkbox" name="%s" class="%s" value="%s" %s> %s</label>', |
| | $name, |
| | $class, |
| | $this->helper->text->e($value), |
| | $htmlAttributes, |
| | $this->helper->text->e($label) |
| | ); |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | public function label($label, $name, array $attributes = array()) |
| | { |
| | return '<label for="form-'.$name.'" '.implode(' ', $attributes).'>'.$this->helper->text->e($label).'</label>'; |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | public function textarea($name, $values = array(), array $errors = array(), array $attributes = array(), $class = '') |
| | { |
| | $class .= $this->errorClass($errors, $name); |
| |
|
| | $html = '<textarea name="'.$name.'" id="form-'.$name.'" class="'.$class.'" '; |
| | $html .= implode(' ', $attributes).'>'; |
| | $html .= isset($values[$name]) ? $this->helper->text->e($values[$name]) : ''; |
| | $html .= '</textarea>'; |
| | $html .= $this->errorList($errors, $name); |
| |
|
| | return $html; |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | public function textEditor($name, $values = array(), array $errors = array(), array $attributes = array()) |
| | { |
| | $params = array( |
| | 'name' => $name, |
| | 'css' => $this->errorClass($errors, $name), |
| | 'required' => isset($attributes['required']) && $attributes['required'], |
| | 'tabindex' => isset($attributes['tabindex']) ? $attributes['tabindex'] : '-1', |
| | 'labelPreview' => t('Preview'), |
| | 'previewUrl' => $this->helper->url->to('TaskAjaxController', 'preview'), |
| | 'labelWrite' => t('Write'), |
| | 'labelTitle' => t('Title'), |
| | 'placeholder' => t('Write your text in Markdown'), |
| | 'ariaLabel' => isset($attributes['aria-label']) ? $attributes['aria-label'] : '', |
| | 'autofocus' => isset($attributes['autofocus']) && $attributes['autofocus'], |
| | 'suggestOptions' => array( |
| | 'triggers' => array( |
| | '#' => $this->helper->url->to('TaskAjaxController', 'suggest', array('search' => 'SEARCH_TERM')), |
| | ) |
| | ), |
| | ); |
| |
|
| | if (isset($values['project_id'])) { |
| | $params['suggestOptions']['triggers']['@'] = $this->helper->url->to('UserAjaxController', 'mention', array('project_id' => $values['project_id'], 'search' => 'SEARCH_TERM')); |
| | } |
| |
|
| | $html = '<div class="js-text-editor" data-params=\''.json_encode($params, JSON_HEX_APOS).'\'>'; |
| | $html .= '<script type="text/template">'.(isset($values[$name]) ? htmlspecialchars($values[$name], ENT_QUOTES, 'UTF-8', true) : '').'</script>'; |
| | $html .= '</div>'; |
| | $html .= $this->errorList($errors, $name); |
| |
|
| | return $html; |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | public function file($name, array $errors = array(), $multiple = false) |
| | { |
| | $html = '<input type="file" name="'.$name.'" id="form-'.$name.'" '.($multiple ? 'multiple' : '').'>'; |
| | $html .= $this->errorList($errors, $name); |
| |
|
| | return $html; |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | public function input($type, $name, $values = array(), array $errors = array(), array $attributes = array(), $class = '') |
| | { |
| | $class .= $this->errorClass($errors, $name); |
| |
|
| | $html = '<input type="'.$type.'" name="'.$name.'" id="form-'.$name.'" '.$this->formValue($values, $name).' class="'.$class.'" '; |
| | $html .= implode(' ', $attributes).'>'; |
| |
|
| | if (in_array('required', $attributes)) { |
| | $html .= '<span class="form-required">*</span>'; |
| | } |
| |
|
| | $html .= $this->errorList($errors, $name); |
| |
|
| | return $html; |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | public function text($name, $values = array(), array $errors = array(), array $attributes = array(), $class = '') |
| | { |
| | return $this->input('text', $name, $values, $errors, $attributes, $class); |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | public function password($name, $values = array(), array $errors = array(), array $attributes = array(), $class = '') |
| | { |
| | return $this->input('password', $name, $values, $errors, $attributes, $class); |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | public function email($name, $values = array(), array $errors = array(), array $attributes = array(), $class = '') |
| | { |
| | return $this->input('email', $name, $values, $errors, $attributes, $class); |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | public function number($name, $values = array(), array $errors = array(), array $attributes = array(), $class = '') |
| | { |
| | return $this->input('number', $name, $values, $errors, $attributes, $class); |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | public function numeric($name, $values = array(), array $errors = array(), array $attributes = array(), $class = '') |
| | { |
| | return $this->input('text', $name, $values, $errors, $attributes, $class.' form-numeric'); |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | public function date($label, $name, array $values, array $errors = array(), array $attributes = array()) |
| | { |
| | $userFormat = $this->dateParser->getUserDateFormat(); |
| | $values = $this->dateParser->format($values, array($name), $userFormat); |
| | $attributes = array_merge(array('placeholder="'.date($userFormat).'"'), $attributes); |
| |
|
| | return $this->helper->form->label($label, $name) . |
| | $this->helper->form->text($name, $values, $errors, $attributes, 'form-date'); |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | public function datetime($label, $name, array $values, array $errors = array(), array $attributes = array()) |
| | { |
| | $userFormat = $this->dateParser->getUserDateTimeFormat(); |
| | $values = $this->dateParser->format($values, array($name), $userFormat); |
| | $attributes = array_merge(array('placeholder="'.date($userFormat).'"'), $attributes); |
| |
|
| | return $this->helper->form->label($label, $name) . |
| | $this->helper->form->text($name, $values, $errors, $attributes, 'form-datetime'); |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | private function errorClass(array $errors, $name) |
| | { |
| | return ! isset($errors[$name]) ? '' : ' form-error'; |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | private function errorList(array $errors, $name) |
| | { |
| | $html = ''; |
| |
|
| | if (isset($errors[$name])) { |
| | $html .= '<ul class="form-errors">'; |
| |
|
| | foreach ($errors[$name] as $error) { |
| | $html .= '<li>'.$this->helper->text->e($error).'</li>'; |
| | } |
| |
|
| | $html .= '</ul>'; |
| | } |
| |
|
| | return $html; |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | private function formValue($values, $name) |
| | { |
| | if (isset($values->$name)) { |
| | return 'value="'.$this->helper->text->e($values->$name).'"'; |
| | } |
| |
|
| | return isset($values[$name]) ? 'value="'.$this->helper->text->e($values[$name]).'"' : ''; |
| | } |
| | } |
| |
|