From a13c0702e9d668677bfe15c2704f271e998ba279 Mon Sep 17 00:00:00 2001 From: dgt41 Date: Sun, 3 Jul 2016 22:31:22 +0300 Subject: [PATCH 1/2] email --- layouts/joomla/form/field/email.php | 75 +++++++++++++++++++ libraries/joomla/form/fields/email.php | 52 ++++++------- .../form/fields/JFormFieldEmailTest.php | 6 +- 3 files changed, 105 insertions(+), 28 deletions(-) create mode 100644 layouts/joomla/form/field/email.php diff --git a/layouts/joomla/form/field/email.php b/layouts/joomla/form/field/email.php new file mode 100644 index 0000000000000..99177dfaca791 --- /dev/null +++ b/layouts/joomla/form/field/email.php @@ -0,0 +1,75 @@ + section in form XML. + * @var boolean $hidden Is this field hidden in the form? + * @var string $hint Placeholder for the field. + * @var string $id DOM id of the field. + * @var string $label Label of the field. + * @var string $labelclass Classes to apply to the label. + * @var boolean $multiple Does this field support multiple values? + * @var string $name Name of the input field. + * @var string $onchange Onchange attribute for the field. + * @var string $onclick Onclick attribute for the field. + * @var string $pattern Pattern (Reg Ex) of value of the form field. + * @var boolean $readonly Is this field read only? + * @var boolean $repeat Allows extensions to duplicate elements. + * @var boolean $required Is this field required? + * @var integer $size Size attribute of the input. + * @var boolean $spellcheck Spellcheck state for the form field. + * @var string $validate Validation rules to apply. + * @var string $value Value attribute of the field. + * @var array $checkedOptions Options that will be set as checked. + * @var boolean $hasValue Has this field a value assigned? + * @var array $options Options available for this field. + * @var array $inputType Options available for this field. + * @var array $spellcheck Options available for this field. + * @var string $accept File types that are accepted. + */ + +$autocomplete = !$autocomplete ? 'autocomplete="off"' : 'autocomplete="' . $autocomplete . '"'; +$autocomplete = $autocomplete == 'autocomplete="on"' ? '' : $autocomplete; + +$attributes = array( + $spellcheck ? '' : 'spellcheck="false"', + !empty($size) ? 'size="' . $size . '"' : '', + $disabled ? 'disabled' : '', + $readonly ? 'readonly' : '', + $onchange ? 'onchange="' . $onchange . '"' : '', + $autocomplete, + $multiple ? 'multiple' : '', + !empty($maxLength) ? 'maxlength="' . $maxLength . '"' : '', + strlen($hint) ? 'placeholder="' . $hint . '"' : '', + $required ? 'required aria-required="true"' : '', + $autofocus ? 'autofocus' : '', +); + +// Including fallback code for HTML5 non supported browsers. +JHtml::_('jquery.framework'); +JHtml::_('script', 'system/html5fallback.js', false, true); + +?> + id="" value="" + /> diff --git a/libraries/joomla/form/fields/email.php b/libraries/joomla/form/fields/email.php index 15a5fa3d640f5..0e986514a910a 100644 --- a/libraries/joomla/form/fields/email.php +++ b/libraries/joomla/form/fields/email.php @@ -29,6 +29,14 @@ class JFormFieldEMail extends JFormFieldText */ protected $type = 'Email'; + /** + * Name of the layout being used to render the field + * + * @var string + * @since 3.7 + */ + protected $layout = 'joomla.form.field.email'; + /** * Method to get the field input markup for e-mail addresses. * @@ -38,32 +46,24 @@ class JFormFieldEMail extends JFormFieldText */ protected function getInput() { - // Translate placeholder text - $hint = $this->translateHint ? JText::_($this->hint) : $this->hint; - - // Initialize some field attributes. - $size = !empty($this->size) ? ' size="' . $this->size . '"' : ''; - $maxLength = !empty($this->maxLength) ? ' maxlength="' . $this->maxLength . '"' : ''; - $class = !empty($this->class) ? ' class="validate-email ' . $this->class . '"' : ' class="validate-email"'; - $readonly = $this->readonly ? ' readonly' : ''; - $disabled = $this->disabled ? ' disabled' : ''; - $required = $this->required ? ' required aria-required="true"' : ''; - $hint = strlen($hint) ? ' placeholder="' . $hint . '"' : ''; - $autocomplete = !$this->autocomplete ? ' autocomplete="off"' : ' autocomplete="' . $this->autocomplete . '"'; - $autocomplete = $autocomplete == ' autocomplete="on"' ? '' : $autocomplete; - $autofocus = $this->autofocus ? ' autofocus' : ''; - $multiple = $this->multiple ? ' multiple' : ''; - $spellcheck = $this->spellcheck ? '' : ' spellcheck="false"'; - - // Initialize JavaScript field attributes. - $onchange = $this->onchange ? ' onchange="' . $this->onchange . '"' : ''; - - // Including fallback code for HTML5 non supported browsers. - JHtml::_('jquery.framework'); - JHtml::_('script', 'system/html5fallback.js', false, true); + // Trim the trailing line in the layout file + return rtrim($this->getRenderer($this->layout)->render($this->getLayoutData()), PHP_EOL); + } + /** + * Method to get the data to be passed to the layout for rendering. + * + * @return array + * + * @since 3.5 + */ + protected function getLayoutData() + { + $data = parent::getLayoutData(); - return ''; + $extraData = array( + 'maxLength' => $this->maxLength, + 'multiple' => $this->multiple, + ); + return array_merge($data, $extraData); } } diff --git a/tests/unit/suites/libraries/joomla/form/fields/JFormFieldEmailTest.php b/tests/unit/suites/libraries/joomla/form/fields/JFormFieldEmailTest.php index 67d6493bbee23..ab529a5734801 100644 --- a/tests/unit/suites/libraries/joomla/form/fields/JFormFieldEmailTest.php +++ b/tests/unit/suites/libraries/joomla/form/fields/JFormFieldEmailTest.php @@ -91,9 +91,11 @@ public function testGetInput($data, $expected) TestReflection::setValue($formField, $attr, $value); } + $replaces = array("\n", "\r"," ", "\t"); + $this->assertEquals( - $expected, - TestReflection::invoke($formField, 'getInput'), + str_replace($replaces, '', $expected), + str_replace($replaces, '', TestReflection::invoke($formField, 'getInput')), 'Line:' . __LINE__ . ' The field with no value and no checked attribute did not produce the right html' ); } From 0656f2d277d6457be09875d2e5c338903fb87072 Mon Sep 17 00:00:00 2001 From: dgt41 Date: Sun, 3 Jul 2016 22:40:14 +0300 Subject: [PATCH 2/2] really? --- layouts/joomla/form/field/email.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/layouts/joomla/form/field/email.php b/layouts/joomla/form/field/email.php index 99177dfaca791..3ee9827cc0ae3 100644 --- a/layouts/joomla/form/field/email.php +++ b/layouts/joomla/form/field/email.php @@ -72,4 +72,4 @@ echo !empty($class) ? ' class="validate-email ' . $class . '"' : ' class="validate-email"'; ?> id="" value="" - /> + />