diff --git a/lib/adminlib.php b/lib/adminlib.php index d15b8d288a6..71e513330ba 100644 --- a/lib/adminlib.php +++ b/lib/adminlib.php @@ -2489,7 +2489,28 @@ class admin_setting_configpasswordunmask extends admin_setting_configtext { $element = $OUTPUT->render_from_template('core_admin/setting_configpasswordunmask', $context); return format_admin_setting($this, $this->visiblename, $element, $this->description, true, '', null, $query); } +} +/** + * Password field, allows unmasking of password, with an advanced checkbox that controls an additional $name.'_adv' setting. + * + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + * @copyright 2018 Paul Holden (pholden@greenhead.ac.uk) + */ +class admin_setting_configpasswordunmask_with_advanced extends admin_setting_configpasswordunmask { + + /** + * Constructor + * + * @param string $name unique ascii name, either 'mysetting' for settings that in config, or 'myplugin/mysetting' for ones in config_plugins. + * @param string $visiblename localised + * @param string $description long localised info + * @param array $defaultsetting ('value'=>string, 'adv'=>bool) + */ + public function __construct($name, $visiblename, $description, $defaultsetting) { + parent::__construct($name, $visiblename, $description, $defaultsetting['value']); + $this->set_advanced_flag_options(admin_setting_flag::ENABLED, !empty($defaultsetting['adv'])); + } } /** diff --git a/mod/quiz/settings.php b/mod/quiz/settings.php index ef504ce5d1d..16d21a6b1c8 100644 --- a/mod/quiz/settings.php +++ b/mod/quiz/settings.php @@ -181,9 +181,9 @@ if ($ADMIN->fulltree) { array('value' => 0, 'adv' => true))); // Password. - $quizsettings->add(new admin_setting_configtext_with_advanced('quiz/password', + $quizsettings->add(new admin_setting_configpasswordunmask_with_advanced('quiz/password', get_string('requirepassword', 'quiz'), get_string('configrequirepassword', 'quiz'), - array('value' => '', 'adv' => false), PARAM_TEXT)); + array('value' => '', 'adv' => false))); // IP restrictions. $quizsettings->add(new admin_setting_configtext_with_advanced('quiz/subnet',