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 * @return string */ public function checkbox($name, $label, $value, $checked = false, $class = '') { return ''; } /** * 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()) { if (! isset($attributes['css'])) { $attributes['css'] = ''; } $attrHtml = ''; $attributes['css'] .= $this->errorClass($errors, $name); foreach ($attributes as $attribute => $value) { $attrHtml .= sprintf(' %s="%s"', $attribute, $value); } $html = sprintf( '', $name, isset($values[$name]) ? $this->helper->text->e($values[$name]) : '', t('Preview'), t('Write'), t('Write your text in Markdown'), $attrHtml ); $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]).'"' : ''; } }