token->getCSRFToken().'"/>'; } /** * Display a hidden form field * * @access public * @param string $name Field name * @param array $values Form values * @return string */ public function hidden($name, array $values = array()) { return 'formValue($values, $name).'/>'; } /** * Display a select field * * @access public * @param string $name Field name * @param array $options Options * @param array $values Form values * @param array $errors Form errors * @param array $attributes * @param string $class CSS class * @return string */ public function select($name, array $options, array $values = array(), array $errors = array(), array $attributes = array(), $class = '') { $html = ''; $html .= $this->errorList($errors, $name); return $html; } /** * Display a radio field group * * @access public * @param string $name Field name * @param array $options Options * @param array $values Form values * @return string */ 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; } /** * Display a radio field * * @access public * @param string $name Field name * @param string $label Form label * @param string $value Form value * @param boolean $selected Field selected or not * @param string $class CSS class * @return string */ public function radio($name, $label, $value, $selected = false, $class = '') { return ''; } /** * Display a checkboxes group * * @access public * @param string $name Field name * @param array $options Options * @param array $values Form values * @return string */ 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; } /** * Display a checkbox field * * @access public * @param string $name Field name * @param string $label Form label * @param string $value Form value * @param boolean $checked Field selected or not * @param string $class CSS class * @param array $attributes * @return string */ 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( '', $name, $class, $this->helper->text->e($value), $htmlAttributes, $this->helper->text->e($label) ); } /** * Display a form label * * @access public * @param string $name Field name * @param string $label Form label * @param array $attributes HTML attributes * @return string */ public function label($label, $name, array $attributes = array()) { return ''; } /** * Display a textarea * * @access public * @param string $name Field name * @param array $values Form values * @param array $errors Form errors * @param array $attributes HTML attributes * @param string $class CSS class * @return string */ public function textarea($name, $values = array(), array $errors = array(), array $attributes = array(), $class = '') { $class .= $this->errorClass($errors, $name); $html = ''; $html .= $this->errorList($errors, $name); return $html; } /** * Display a markdown editor * * @access public * @param string $name Field name * @param array $values Form values * @param array $errors Form errors * @param array $attributes * @return string */ 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'), 'labelWrite' => t('Write'), 'placeholder' => t('Write your text in Markdown'), '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 = '
'; $html .= ''; $html .= '
'; $html .= $this->errorList($errors, $name); return $html; } /** * Display file field * * @access public * @param string $name * @param array $errors * @param boolean $multiple * @return string */ public function file($name, array $errors = array(), $multiple = false) { $html = ''; $html .= $this->errorList($errors, $name); return $html; } /** * Display a input field * * @access public * @param string $type HMTL input tag type * @param string $name Field name * @param array $values Form values * @param array $errors Form errors * @param array $attributes HTML attributes * @param string $class CSS class * @return string */ public function input($type, $name, $values = array(), array $errors = array(), array $attributes = array(), $class = '') { $class .= $this->errorClass($errors, $name); $html = 'formValue($values, $name).' class="'.$class.'" '; $html .= implode(' ', $attributes).'>'; if (in_array('required', $attributes)) { $html .= '*'; } $html .= $this->errorList($errors, $name); return $html; } /** * Display a text field * * @access public * @param string $name Field name * @param array $values Form values * @param array $errors Form errors * @param array $attributes HTML attributes * @param string $class CSS class * @return string */ public function text($name, $values = array(), array $errors = array(), array $attributes = array(), $class = '') { return $this->input('text', $name, $values, $errors, $attributes, $class); } /** * Display a password field * * @access public * @param string $name Field name * @param array $values Form values * @param array $errors Form errors * @param array $attributes HTML attributes * @param string $class CSS class * @return string */ public function password($name, $values = array(), array $errors = array(), array $attributes = array(), $class = '') { return $this->input('password', $name, $values, $errors, $attributes, $class); } /** * Display an email field * * @access public * @param string $name Field name * @param array $values Form values * @param array $errors Form errors * @param array $attributes HTML attributes * @param string $class CSS class * @return string */ public function email($name, $values = array(), array $errors = array(), array $attributes = array(), $class = '') { return $this->input('email', $name, $values, $errors, $attributes, $class); } /** * Display a number field * * @access public * @param string $name Field name * @param array $values Form values * @param array $errors Form errors * @param array $attributes HTML attributes * @param string $class CSS class * @return string */ public function number($name, $values = array(), array $errors = array(), array $attributes = array(), $class = '') { return $this->input('number', $name, $values, $errors, $attributes, $class); } /** * Display a numeric field (allow decimal number) * * @access public * @param string $name Field name * @param array $values Form values * @param array $errors Form errors * @param array $attributes HTML attributes * @param string $class CSS class * @return string */ public function numeric($name, $values = array(), array $errors = array(), array $attributes = array(), $class = '') { return $this->input('text', $name, $values, $errors, $attributes, $class.' form-numeric'); } /** * Date field * * @access public * @param string $label * @param string $name * @param array $values * @param array $errors * @param array $attributes * @return string */ 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'); } /** * Datetime field * * @access public * @param string $label * @param string $name * @param array $values * @param array $errors * @param array $attributes * @return string */ 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'); } /** * Display the form error class * * @access private * @param array $errors Error list * @param string $name Field name * @return string */ private function errorClass(array $errors, $name) { return ! isset($errors[$name]) ? '' : ' form-error'; } /** * Display a list of form errors * * @access private * @param array $errors List of errors * @param string $name Field name * @return string */ private function errorList(array $errors, $name) { $html = ''; if (isset($errors[$name])) { $html .= ''; } return $html; } /** * Get an escaped form value * * @access private * @param mixed $values Values * @param string $name Field name * @return string */ 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]).'"' : ''; } }