From: skodak <skodak> Date: Tue, 26 Aug 2008 06:41:37 +0000 (+0000) Subject: MDL-16115 strict fixes for admin settings unmask field too X-Git-Url: http://git.mjollnir.org/gw?a=commitdiff_plain;h=633239f6196ba470f4bb06326156d96ae02edb38;p=moodle.git MDL-16115 strict fixes for admin settings unmask field too --- diff --git a/lib/adminlib.php b/lib/adminlib.php index a83bddcfe0..c2f955719c 100644 --- a/lib/adminlib.php +++ b/lib/adminlib.php @@ -2161,12 +2161,36 @@ class admin_setting_configpasswordunmask extends admin_setting_configtext { $unmask = get_string('unmaskpassword', 'form'); $unmaskjs = '<script type="text/javascript"> //<![CDATA[ -document.write(\'<span class="unmask"><input id="'.$id.'unmask" value="1" type="checkbox" onclick="unmaskPassword(\\\''.$id.'\\\')"/><label for="'.$id.'unmask">'.addslashes_js($unmask).'<\/label><\/span>\'); -document.getElementById("'.$this->get_id().'").setAttribute("autocomplete", "off"); +var is_ie = (navigator.userAgent.toLowerCase().indexOf("msie") != -1); + +document.getElementById("'.$id.'").setAttribute("autocomplete", "off"); + +var unmaskdiv = document.getElementById("'.$id.'unmaskdiv"); + +var unmaskchb = document.createElement("input"); +unmaskchb.setAttribute("type", "checkbox"); +unmaskchb.setAttribute("id", "'.$id.'unmask"); +unmaskchb.onchange = function() {unmaskPassword("'.$id.'");}; +unmaskdiv.appendChild(unmaskchb); + +var unmasklbl = document.createElement("label"); +unmasklbl.innerHTML = "'.addslashes_js($unmask).'"; +if (is_ie) { + unmasklbl.setAttribute("htmlFor", "'.$id.'unmask"); +} else { + unmasklbl.setAttribute("for", "'.$id.'unmask"); +} +unmaskdiv.appendChild(unmasklbl); + +if (is_ie) { + // ugly hack to work around the famous onchange IE bug + unmaskchb.onclick = function() {this.blur();}; + unmaskdiv.onclick = function() {this.blur();}; +} //]]> </script>'; return format_admin_setting($this, $this->visiblename, - '<div class="form-password"><input type="password" size="'.$this->size.'" id="'.$this->get_id().'" name="'.$this->get_full_name().'" value="'.s($data).'" />'.$unmaskjs.'</div>', + '<div class="form-password"><input type="password" size="'.$this->size.'" id="'.$id.'" name="'.$this->get_full_name().'" value="'.s($data).'" /><div class="unmask" id="'.$id.'unmaskdiv"></div>'.$unmaskjs.'</div>', $this->description, true, '', NULL, $query); } } diff --git a/theme/standard/styles_layout.css b/theme/standard/styles_layout.css index 5a4cdf6dab..a7b90f58a0 100644 --- a/theme/standard/styles_layout.css +++ b/theme/standard/styles_layout.css @@ -1088,6 +1088,10 @@ body#admin-modules table.generaltable td.c0 text-align: left; } +#adminsettings div.form-password div.unmask { + display: inline; +} + #adminsettings fieldset { margin-top: 1em; padding: 1em 0.5em;