From ef5ce6bcfbcbeff7eec9afbbddbd9a88fd47f73b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=B4me=20Chilliet?= <come@opensides.be> Date: Thu, 18 Oct 2018 13:34:58 +0200 Subject: [PATCH] :ambulance: fix(attributes) Remove form validation attributes from template edition This removes required, pattern and special input types from template edition rendering so that masks can be used. issue #5910 --- .../attributes/class_IntAttribute.inc | 11 ++--- .../attributes/class_StringAttribute.inc | 44 +++++++++++++------ 2 files changed, 36 insertions(+), 19 deletions(-) diff --git a/include/simpleplugin/attributes/class_IntAttribute.inc b/include/simpleplugin/attributes/class_IntAttribute.inc index d54cab6bb..4ee6404f2 100644 --- a/include/simpleplugin/attributes/class_IntAttribute.inc +++ b/include/simpleplugin/attributes/class_IntAttribute.inc @@ -120,12 +120,13 @@ class IntAttribute extends Attribute function renderTemplateInput () { $id = $this->getHtmlId(); - $display = $this->renderInputField( - 'text', $id, - array( - 'value' => '{literal}'.htmlentities($this->getValue(), ENT_COMPAT, 'UTF-8').'{/literal}' - ) + $attributes = array( + 'value' => '{literal}'.htmlentities($this->getValue(), ENT_COMPAT, 'UTF-8').'{/literal}' ); + if ($this->isSubAttribute) { + $attributes['class'] = 'subattribute'; + } + $display = $this->renderInputField('text', $id, $attributes); return $this->renderAcl($display); } } diff --git a/include/simpleplugin/attributes/class_StringAttribute.inc b/include/simpleplugin/attributes/class_StringAttribute.inc index a51f64068..9ea60c5cb 100644 --- a/include/simpleplugin/attributes/class_StringAttribute.inc +++ b/include/simpleplugin/attributes/class_StringAttribute.inc @@ -91,6 +91,22 @@ class StringAttribute extends Attribute return $this->renderAcl($display); } + function renderTemplateInput () + { + $id = $this->getHtmlId(); + $attributes = array( + 'value' => '{literal}'.htmlentities($this->getValue(), ENT_COMPAT, 'UTF-8').'{/literal}' + ); + if ($this->autocomplete !== NULL) { + $attributes['autocomplete'] = ($this->autocomplete ? 'on' : 'off' ); + } + if ($this->isSubAttribute) { + $attributes['class'] = 'subattribute'; + } + $display = $this->renderInputField('text', $id, $attributes); + return $this->renderAcl($display); + } + function fixPostValue ($value) { /* Replace CRLF by LF, to avoid non-ASCII chars in multiline values (mainly useful for textarea) */ @@ -166,6 +182,17 @@ class TextAreaAttribute extends StringAttribute '{literal}'.htmlentities($this->getValue(), ENT_COMPAT, 'UTF-8').'{/literal}</textarea>'; return $this->renderAcl($display); } + + function renderTemplateInput () + { + $id = $this->getHtmlId(); + $display = '<textarea name="'.$id.'" id="'.$id.'"'. + ($this->disabled ? ' disabled="disabled"' : ''). + ($this->isSubAttribute ? ' class="subattribute"' : ''). + '>'. + '{literal}'.htmlentities($this->getValue(), ENT_COMPAT, 'UTF-8').'{/literal}</textarea>'; + return $this->renderAcl($display); + } } /*! \brief This class allow to handle easily a String LDAP attribute that contains a password @@ -174,25 +201,14 @@ class TextAreaAttribute extends StringAttribute class PasswordAttribute extends StringAttribute { protected $autocomplete = FALSE; + protected $inputType = 'password'; function renderFormInput () { - $id = $this->getHtmlId(); - $display = $this->renderInputField( - 'password', $id, - array( - 'value' => '{literal}'.htmlentities($this->getValue(), ENT_COMPAT, 'UTF-8').'{/literal}', - 'autocomplete' => ($this->autocomplete ? 'on' : 'off'), - ) - ); + $display = parent::renderFormInput(); if ($this->autocomplete === FALSE) { $display = '{literal}<input autocomplete="off" value="foolautocompleteworkaround" type="text" style="display:none;"/>{/literal}'.$display; } - return $this->renderAcl($display); - } - - function renderTemplateInput () - { - return parent::renderFormInput(); + return $display; } } -- GitLab