diff --git a/admin/settings/security.php b/admin/settings/security.php
index 7a476d32dd2..739171b1cda 100644
--- a/admin/settings/security.php
+++ b/admin/settings/security.php
@@ -39,7 +39,7 @@ $temp->add(new admin_setting_configselect('bloglevel', get_string('bloglevel', '
0 => get_string('disableblogs','blog'))));
$temp->add(new admin_setting_configcheckbox('cronclionly', get_string('cronclionly', 'admin'), get_string('configcronclionly', 'admin'), 0));
-$temp->add(new admin_setting_configtext('cronremotepassword', get_string('cronremotepassword', 'admin'), get_string('configcronremotepassword', 'admin'), '', PARAM_RAW));
+$temp->add(new admin_setting_configpasswordreveal('cronremotepassword', get_string('cronremotepassword', 'admin'), get_string('configcronremotepassword', 'admin'), '', PARAM_RAW));
$temp->add(new admin_setting_configcheckbox('passwordpolicy', get_string('passwordpolicy', 'admin'), get_string('configpasswordpolicy', 'admin'), 0));
$temp->add(new admin_setting_configtext('minpasswordlength', get_string('minpasswordlength', 'admin'), get_string('configminpasswordlength', 'admin'), 8, PARAM_INT));
diff --git a/admin/settings/server.php b/admin/settings/server.php
index cefd3e3bc24..e4126077dd0 100644
--- a/admin/settings/server.php
+++ b/admin/settings/server.php
@@ -19,7 +19,7 @@ $ADMIN->add('server', $temp, 0);
$temp = new admin_settingpage('mail', get_string('mail','admin'));
$temp->add(new admin_setting_configtext('smtphosts', get_string('smtphosts', 'admin'), get_string('configsmtphosts', 'admin'), '', PARAM_HOST));
$temp->add(new admin_setting_configtext('smtpuser', get_string('smtpuser', 'admin'), get_string('configsmtpuser', 'admin'), '', PARAM_NOTAGS));
-$temp->add(new admin_setting_configtext('smtppass', get_string('smtppass', 'admin'), get_string('configsmtpuser', 'admin'), '', PARAM_RAW));
+$temp->add(new admin_setting_configpasswordreveal('smtppass', get_string('smtppass', 'admin'), get_string('configsmtpuser', 'admin'), '', PARAM_RAW));
$temp->add(new admin_setting_configtext('noreplyaddress', get_string('noreplyaddress', 'admin'), get_string('confignoreplyaddress', 'admin'), 'noreply@' . $_SERVER['HTTP_HOST'], PARAM_NOTAGS));
$temp->add(new admin_setting_configtext('allowemailaddresses', get_string('allowemailaddresses', 'admin'), get_string('configallowemailaddresses', 'admin'), '', PARAM_NOTAGS));
$temp->add(new admin_setting_configtext('denyemailaddresses', get_string('denyemailaddresses', 'admin'), get_string('configdenyemailaddresses', 'admin'), '', PARAM_NOTAGS));
diff --git a/lib/adminlib.php b/lib/adminlib.php
index fda804a9491..f346a7c6d7c 100644
--- a/lib/adminlib.php
+++ b/lib/adminlib.php
@@ -1427,6 +1427,32 @@ class admin_setting_configtext extends admin_setting {
}
+class admin_setting_configpasswordreveal extends admin_setting_configtext {
+
+ function admin_setting_configpasswordreveal($name, $visiblename, $description, $defaultsetting, $paramtype=PARAM_RAW) {
+ parent::admin_setting_configtext($name, $visiblename, $description, $defaultsetting, $paramtype);
+ }
+
+ function output_html() {
+ if ($this->get_setting() === NULL) {
+ $current = $this->defaultsetting;
+ } else {
+ $current = $this->get_setting();
+ }
+ $id = 'id_s_'.$this->name;
+ $reveal = get_string('revealpassword', 'form');
+ $revealjs = '';
+ return format_admin_setting($this->name, $this->visiblename,
+ ''.$revealjs,
+ $this->description);
+ }
+
+}
+
class admin_setting_configcheckbox extends admin_setting {
function admin_setting_configcheckbox($name, $visiblename, $description, $defaultsetting) {
diff --git a/lib/javascript-static.js b/lib/javascript-static.js
index 65874080ce2..2c38185fb47 100644
--- a/lib/javascript-static.js
+++ b/lib/javascript-static.js
@@ -291,6 +291,7 @@ function revealPassword(id) {
} else {
var newpw = document.createElement('');
}
+ newpw.attributes['class'].nodeValue = pw.attributes['class'].nodeValue;
} catch (e) {
var newpw = document.createElement('input');
newpw.setAttribute('name', pw.name);
@@ -299,6 +300,7 @@ function revealPassword(id) {
} else {
newpw.setAttribute('type', 'password');
}
+ newpw.setAttribute('class', pw.getAttribute('class'));
}
newpw.id = pw.id;
newpw.size = pw.size;
diff --git a/theme/standard/styles_layout.css b/theme/standard/styles_layout.css
index cf86947a4c5..7a3a01392b8 100644
--- a/theme/standard/styles_layout.css
+++ b/theme/standard/styles_layout.css
@@ -978,6 +978,7 @@ body#admin-modules table.generaltable td.c0
float: none;
}
+
/* #adminsettings .admin-configtime .form-select {
display: inline;
float: none;
@@ -994,6 +995,16 @@ body#admin-modules table.generaltable td.c0
padding: 0.3em 0 1.5em 0;
}
+#adminsettings .form-item .reveal input {
+ margin-left:5px;
+ margin-right:3px;
+}
+
+#adminsettings .form-item .reveal label {
+ width: auto;
+ text-align: left;
+}
+
.environmentbox {
margin-top: 1em;
}