MDL-64190 mod_quiz: use password unmask config element.
authorPaul Holden <pholden@greenhead.ac.uk>
Thu, 13 Dec 2018 09:27:53 +0000 (09:27 +0000)
committerPaul Holden <pholden@greenhead.ac.uk>
Fri, 11 Jan 2019 15:11:24 +0000 (15:11 +0000)
Also created required admin setting class for creating unmask password
elements with an 'advanced' checkbox control.

lib/adminlib.php
mod/quiz/settings.php

index d15b8d2..71e5133 100644 (file)
@@ -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']));
+    }
 }
 
 /**
index ef504ce..16d21a6 100644 (file)
@@ -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',