]> git.mjollnir.org Git - moodle.git/commitdiff
MDL-16564 Make admin settings work better with the cnfig_plugins table.
authortjhunt <tjhunt>
Thu, 18 Sep 2008 09:55:04 +0000 (09:55 +0000)
committertjhunt <tjhunt>
Thu, 18 Sep 2008 09:55:04 +0000 (09:55 +0000)
Also, take the opportunity to take the quiz-specific stuff out of adminlib.php, to make Petr happy.

admin/settings/courses.php
lib/adminlib.php
mod/quiz/settingslib.php [new file with mode: 0644]
mod/quiz/settingstree.php

index 60f10c5ccc92e7b3e74dd6440920d47182cb5ed2..4a34a7affe5a03e04f356e53552d49c62a828cd4 100644 (file)
@@ -19,43 +19,41 @@ if ($hassiteconfig
 
     // "backups" settingpage
     if (!empty($CFG->backup_version)) {
-        $bi = array();
-        $bi[] = new admin_setting_configcheckbox('backup_sche_modules', get_string('includemodules'), get_string('backupincludemoduleshelp'), 0);
-        $bi[] = new admin_setting_configcheckbox('backup_sche_withuserdata', get_string('includemoduleuserdata'), get_string('backupincludemoduleuserdatahelp'), 0);
-        $bi[] = new admin_setting_configcheckbox('backup_sche_metacourse', get_string('metacourse'), get_string('backupmetacoursehelp'), 0);
-        $bi[] = new admin_setting_configselect('backup_sche_users', get_string('users'), get_string('backupusershelp'),
-                                               0, array(0 => get_string('all'), 1 => get_string('course')));
-        $bi[] = new admin_setting_configcheckbox('backup_sche_logs', get_string('logs'), get_string('backuplogshelp'), 0);
-        $bi[] = new admin_setting_configcheckbox('backup_sche_userfiles', get_string('userfiles'), get_string('backupuserfileshelp'), 0);
-        $bi[] = new admin_setting_configcheckbox('backup_sche_coursefiles', get_string('coursefiles'), get_string('backupcoursefileshelp'), 0);
-        $bi[] = new admin_setting_configcheckbox('backup_sche_sitefiles', get_string('sitefiles'), get_string('backupsitefileshelp'), 0);
-        $bi[] = new admin_setting_configcheckbox('backup_sche_messages', get_string('messages', 'message'), get_string('backupmessageshelp','message'), 0);
-        $bi[] = new admin_setting_configcheckbox('backup_sche_blogs', get_string('blogs', 'blog'), get_string('backupblogshelp','blog'), 0);
-        $bi[] = new admin_setting_configselect('backup_sche_keep', get_string('keep'),
-                                               get_string('backupkeephelp'), 1, array(0 => get_string('all'), 1 => '1',
-                                                                                                              2 => '2',
-                                                                                                              5 => '5',
-                                                                                                              10 => '10',
-                                                                                                              20 => '20',
-                                                                                                              30 => '30',
-                                                                                                              40 => '40',
-                                                                                                              50 => '50',
-                                                                                                              100 => '100',
-                                                                                                              200 => '200',
-                                                                                                              300 => '300',
-                                                                                                              400 => '400',
-                                                                                                              500 => '500'));
-        $bi[] = new admin_setting_configcheckbox('backup_sche_active', get_string('active'), get_string('backupactivehelp'), 0);
-        $bi[] = new admin_setting_special_backupdays();
-        $bi[] = new admin_setting_configtime('backup_sche_hour', 'backup_sche_minute', get_string('executeat'),
-                                             get_string('backupexecuteathelp'), array('h' => 0, 'm' => 0));
-        $bi[] = new admin_setting_configdirectory('backup_sche_destination', get_string('saveto'), get_string('backupsavetohelp'), '');
-
         $temp = new admin_settingpage('backups', get_string('backups','admin'), 'moodle/site:backup');
-        foreach ($bi as $backupitem) {
-            $backupitem->plugin = 'backup';
-            $temp->add($backupitem);
-        }
+        $temp->add(new admin_setting_configcheckbox('backup/backup_sche_modules', get_string('includemodules'), get_string('backupincludemoduleshelp'), 0));
+        $temp->add(new admin_setting_configcheckbox('backup/backup_sche_withuserdata', get_string('includemoduleuserdata'), get_string('backupincludemoduleuserdatahelp'), 0));
+        $temp->add(new admin_setting_configcheckbox('backup/backup_sche_metacourse', get_string('metacourse'), get_string('backupmetacoursehelp'), 0));
+        $temp->add(new admin_setting_configselect('backup/backup_sche_users', get_string('users'), get_string('backupusershelp'),
+                0, array(0 => get_string('all'), 1 => get_string('course'))));
+        $temp->add(new admin_setting_configcheckbox('backup/backup_sche_logs', get_string('logs'), get_string('backuplogshelp'), 0));
+        $temp->add(new admin_setting_configcheckbox('backup/backup_sche_userfiles', get_string('userfiles'), get_string('backupuserfileshelp'), 0));
+        $temp->add(new admin_setting_configcheckbox('backup/backup_sche_coursefiles', get_string('coursefiles'), get_string('backupcoursefileshelp'), 0));
+        $temp->add(new admin_setting_configcheckbox('backup/backup_sche_sitefiles', get_string('sitefiles'), get_string('backupsitefileshelp'), 0));
+        $temp->add(new admin_setting_configcheckbox('backup/backup_sche_messages', get_string('messages', 'message'), get_string('backupmessageshelp','message'), 0));
+        $temp->add(new admin_setting_configcheckbox('backup/backup_sche_blogs', get_string('blogs', 'blog'), get_string('backupblogshelp','blog'), 0));
+
+        $keepoptoins = array(
+            0 => get_string('all'), 1 => '1',
+            2 => '2',
+            5 => '5',
+            10 => '10',
+            20 => '20',
+            30 => '30',
+            40 => '40',
+            50 => '50',
+            100 => '100',
+            200 => '200',
+            300 => '300',
+            400 => '400',
+            500 => '500');
+        $temp->add(new admin_setting_configselect('backup/backup_sche_keep', get_string('keep'),
+                get_string('backupkeephelp'), 1, $keepoptoins));
+        $temp->add(new admin_setting_configcheckbox('backup/backup_sche_active', get_string('active'), get_string('backupactivehelp'), 0));
+        $temp->add(new admin_setting_special_backupdays());
+        $temp->add(new admin_setting_configtime('backup/backup_sche_hour', 'backup_sche_minute', get_string('executeat'),
+                get_string('backupexecuteathelp'), array('h' => 0, 'm' => 0)));
+        $temp->add(new admin_setting_configdirectory('backup/backup_sche_destination', get_string('saveto'), get_string('backupsavetohelp'), ''));
+
         $ADMIN->add('courses', $temp);
     }
 
index e4df8f088aae7c68600641e941fd5237d0062df6..b8a363abea6827bac700e528360a1b8a9105a330 100644 (file)
@@ -2377,12 +2377,37 @@ class admin_setting {
      * @param mixed $defaultsetting string or array depending on implementation
      */
     function admin_setting($name, $visiblename, $description, $defaultsetting) {
-        $this->name           = $name;
+        $this->parse_setting_name($name);
         $this->visiblename    = $visiblename;
         $this->description    = $description;
         $this->defaultsetting = $defaultsetting;
     }
 
+    /**
+     * Set up $this->name and possibly $this->plugin based on whether $name looks
+     * like 'settingname' or 'plugin/settingname'. Also, do some sanity checking
+     * on the names, that is, output a developer debug warning if the name
+     * contains anything other than [a-zA-Z0-9_]+.
+     *
+     * @param string $name the setting name passed in to the constructor.
+     */
+    private function parse_setting_name($name) {
+        $bits = explode('/', $name);
+        if (count($bits) > 2) {
+            throw new moodle_exception('invalidadminsettingname', '', '', $name);
+        }
+        $this->name = array_pop($bits);
+        if (!preg_match('/^[a-zA-Z0-9_]+$/', $this->name)) {
+            throw new moodle_exception('invalidadminsettingname', '', '', $name);
+        }
+        if (!empty($bits)) {
+            $this->plugin = array_pop($bits);
+            if (!preg_match('/^[a-zA-Z0-9_]+$/', $this->plugin)) {
+                throw new moodle_exception('invalidadminsettingname', '', '', $name);
+            }
+        }
+    }
+
     function get_full_name() {
         return 's_'.$this->plugin.'_'.$this->name;
     }
@@ -4188,11 +4213,10 @@ class admin_setting_pickroles extends admin_setting_configmulticheckbox {
 }
 
 /**
- * Text field linked to config_plugins for the quiz, with an advanced checkbox.
+ * Text field with an advanced checkbox, that controls a additional "fix_$name" setting.
  */
-class admin_setting_quiz_text extends admin_setting_configtext {
+class admin_setting_text_with_advanced extends admin_setting_configtext {
     function __construct($name, $visiblename, $description, $defaultsetting, $paramtype) {
-        $this->plugin = 'quiz';
         parent::admin_setting_configtext($name, $visiblename, $description,
                 $defaultsetting, $paramtype);
     }
@@ -4248,11 +4272,10 @@ class admin_setting_quiz_text extends admin_setting_configtext {
 }
 
 /**
- * Dropdown menu linked to config_plugins for the quiz, with an advanced checkbox.
+ * Dropdown menu with an advanced checkbox, that controls a additional "fix_$name" setting.
  */
-class admin_setting_quiz_combo extends admin_setting_configselect {
+class admin_setting_combo_with_advanced extends admin_setting_configselect {
     function __construct($name, $visiblename, $description, $defaultsetting, $choices) {
-        $this->plugin = 'quiz';
         parent::admin_setting_configselect($name, $visiblename, $description,
                 $defaultsetting, $choices);
     }
@@ -4316,106 +4339,11 @@ class admin_setting_quiz_combo extends admin_setting_configselect {
     }
 }
 
-class admin_setting_quiz_reviewoptions extends admin_setting {
-    private static $times = array(
-            QUIZ_REVIEW_IMMEDIATELY => 'reviewimmediately',
-            QUIZ_REVIEW_OPEN => 'reviewopen',
-            QUIZ_REVIEW_CLOSED => 'reviewclosed');
-    private static $things = array(
-            QUIZ_REVIEW_RESPONSES => 'responses',
-            QUIZ_REVIEW_ANSWERS => 'answers',
-            QUIZ_REVIEW_FEEDBACK => 'feedback',
-            QUIZ_REVIEW_GENERALFEEDBACK => 'generalfeedback',
-            QUIZ_REVIEW_SCORES => 'scores',
-            QUIZ_REVIEW_OVERALLFEEDBACK => 'overallfeedback');
-
-    function __construct($name, $visiblename, $description, $defaultsetting) {
-        $this->plugin = 'quiz';
-        parent::admin_setting($name, $visiblename, $description, $defaultsetting);
-    }
-
-    private function normalise_data($data) {
-        $value = 0;
-        foreach (admin_setting_quiz_reviewoptions::$times as $timemask => $timestring) {
-            foreach (admin_setting_quiz_reviewoptions::$things as $thingmask => $thingstring) {
-                if (!empty($data[$timemask][$thingmask])) {
-                    $value += $timemask & $thingmask;
-                }
-            }
-        }
-        return $value;
-    }
-
-    function get_setting() {
-        $value = $this->config_read($this->name);
-        $fix = $this->config_read('fix_' . $this->name);
-        if (is_null($value) or is_null($fix)) {
-            return NULL;
-        }
-        return array('value' => $value, 'fix' => $fix);
-    }
-
-    function write_setting($data) {
-        if (!isset($data['value'])) {
-            $data['value'] = $this->normalise_data($data);
-        }
-        $ok = $this->config_write($this->name, $data['value']);
-        if ($ok) {
-            if (empty($data['fix'])) {
-                $ok = $this->config_write('fix_' . $this->name, 0);
-            } else {
-                $ok = $this->config_write('fix_' . $this->name, 1);
-            }
-        }
-        if (!$ok) {
-            return get_string('errorsetting', 'admin');
-        }
-        return '';
-    }
-
-    function output_html($data, $query='') {
-        if (!isset($data['value'])) {
-            $data['value'] = $this->normalise_data($data);
-        }
-
-        $return = '<div id="adminquizreviewoptions" class="clearfix">' . "\n";
-        foreach (admin_setting_quiz_reviewoptions::$times as $timemask => $timestring) {
-            $return .= '<div class="group"><div class="fitemtitle">' . get_string($timestring, 'quiz') . "</div>\n";
-            $nameprefix = $this->get_full_name() . '[' . $timemask . ']';
-            $idprefix = $this->get_id(). '_' . $timemask . '_';
-            foreach (admin_setting_quiz_reviewoptions::$things as $thingmask => $thingstring) {
-                $id = $idprefix . $thingmask;
-                $state = '';
-                if ($data['value'] & $timemask & $thingmask) {
-                    $state = 'checked="checked" ';
-                }
-                $return .= '<span><input type="checkbox" name="' .
-                        $nameprefix . '[' . $thingmask . ']" value="1" id="' . $id .
-                        '" ' . $state . '/> <label for="' . $id . '">' .
-                        get_string($thingstring, 'quiz') . "</label></span>\n";
-            }
-            $return .= "</div>\n";
-        }
-        $return .= "</div>\n";
-
-        $fix = !empty($data['fix']);
-        $return .= '<input type="checkbox" class="form-checkbox" id="' .
-                $this->get_id() . '_fix" name="' . $this->get_full_name() .
-                '[fix]" value="1" ' . ($fix ? 'checked="checked"' : '') . ' />' .
-                ' <label for="' . $this->get_id() . '_fix">' .
-                get_string('advanced') . '</label> ';
-
-        return format_admin_setting($this, $this->visiblename, $return,
-                $this->description, true, '', get_string('everythingon', 'quiz'), $query);
-    }
-}
-
 /**
- * Specialisation of admin_setting_quiz_combo for easy yes/no choices.
+ * Specialisation of admin_setting_combo_with_advanced for easy yes/no choices.
  */
-class admin_setting_quiz_yesno extends admin_setting_quiz_combo {
+class admin_setting_yesno_with_advanced extends admin_setting_combo_with_advanced {
     function __construct($name, $visiblename, $description, $defaultsetting) {
-        $this->plugin = 'quiz';
         parent::__construct($name, $visiblename, $description,
                 $defaultsetting, array(get_string('no'), get_string('yes')));
     }
diff --git a/mod/quiz/settingslib.php b/mod/quiz/settingslib.php
new file mode 100644 (file)
index 0000000..8c8843c
--- /dev/null
@@ -0,0 +1,101 @@
+<?php  // $Id$
+
+if (!defined('MOODLE_INTERNAL')) {
+    die('Direct access to this script is forbidden.'); /// It must be included from a Moodle page.
+}
+
+// Quiz specific admin settings class.
+class admin_setting_quiz_reviewoptions extends admin_setting {
+    private static $times = array(
+            QUIZ_REVIEW_IMMEDIATELY => 'reviewimmediately',
+            QUIZ_REVIEW_OPEN => 'reviewopen',
+            QUIZ_REVIEW_CLOSED => 'reviewclosed');
+    private static $things = array(
+            QUIZ_REVIEW_RESPONSES => 'responses',
+            QUIZ_REVIEW_ANSWERS => 'answers',
+            QUIZ_REVIEW_FEEDBACK => 'feedback',
+            QUIZ_REVIEW_GENERALFEEDBACK => 'generalfeedback',
+            QUIZ_REVIEW_SCORES => 'scores',
+            QUIZ_REVIEW_OVERALLFEEDBACK => 'overallfeedback');
+
+    function __construct($name, $visiblename, $description, $defaultsetting) {
+        $this->plugin = 'quiz';
+        parent::admin_setting($name, $visiblename, $description, $defaultsetting);
+    }
+
+    private function normalise_data($data) {
+        $value = 0;
+        foreach (admin_setting_quiz_reviewoptions::$times as $timemask => $timestring) {
+            foreach (admin_setting_quiz_reviewoptions::$things as $thingmask => $thingstring) {
+                if (!empty($data[$timemask][$thingmask])) {
+                    $value += $timemask & $thingmask;
+                }
+            }
+        }
+        return $value;
+    }
+
+    function get_setting() {
+        $value = $this->config_read($this->name);
+        $fix = $this->config_read('fix_' . $this->name);
+        if (is_null($value) or is_null($fix)) {
+            return NULL;
+        }
+        return array('value' => $value, 'fix' => $fix);
+    }
+
+    function write_setting($data) {
+        if (!isset($data['value'])) {
+            $data['value'] = $this->normalise_data($data);
+        }
+        $ok = $this->config_write($this->name, $data['value']);
+        if ($ok) {
+            if (empty($data['fix'])) {
+                $ok = $this->config_write('fix_' . $this->name, 0);
+            } else {
+                $ok = $this->config_write('fix_' . $this->name, 1);
+            }
+        }
+        if (!$ok) {
+            return get_string('errorsetting', 'admin');
+        }
+        return '';
+    }
+
+    function output_html($data, $query='') {
+        if (!isset($data['value'])) {
+            $data['value'] = $this->normalise_data($data);
+        }
+
+        $return = '<div id="adminquizreviewoptions" class="clearfix">' . "\n";
+        foreach (admin_setting_quiz_reviewoptions::$times as $timemask => $timestring) {
+            $return .= '<div class="group"><div class="fitemtitle">' . get_string($timestring, 'quiz') . "</div>\n";
+            $nameprefix = $this->get_full_name() . '[' . $timemask . ']';
+            $idprefix = $this->get_id(). '_' . $timemask . '_';
+            foreach (admin_setting_quiz_reviewoptions::$things as $thingmask => $thingstring) {
+                $id = $idprefix . $thingmask;
+                $state = '';
+                if ($data['value'] & $timemask & $thingmask) {
+                    $state = 'checked="checked" ';
+                }
+                $return .= '<span><input type="checkbox" name="' .
+                        $nameprefix . '[' . $thingmask . ']" value="1" id="' . $id .
+                        '" ' . $state . '/> <label for="' . $id . '">' .
+                        get_string($thingstring, 'quiz') . "</label></span>\n";
+            }
+            $return .= "</div>\n";
+        }
+        $return .= "</div>\n";
+
+        $fix = !empty($data['fix']);
+        $return .= '<input type="checkbox" class="form-checkbox" id="' .
+                $this->get_id() . '_fix" name="' . $this->get_full_name() .
+                '[fix]" value="1" ' . ($fix ? 'checked="checked"' : '') . ' />' .
+                ' <label for="' . $this->get_id() . '_fix">' .
+                get_string('advanced') . '</label> ';
+
+        return format_admin_setting($this, $this->visiblename, $return,
+                $this->description, true, '', get_string('everythingon', 'quiz'), $query);
+    }
+}
+?>
\ No newline at end of file
index 671cf6e61802b38a5fa362ec296d0e7aad801c88..1c43d72c3710e7a6ef7e55ab1998c88676ffb08c 100644 (file)
@@ -8,6 +8,7 @@
  */
 
 require_once($CFG->dirroot . '/mod/quiz/lib.php');
+require_once($CFG->dirroot . '/mod/quiz/settingslib.php');
 
 // First get a list of quiz reports with there own settings pages. If there none,
 // we use a simpler overall menu structure.
@@ -39,7 +40,7 @@ $quizsettings = new admin_settingpage('modsettingquiz', $pagetitle, 'moodle/site
 $quizsettings->add(new admin_setting_heading('quizintro', '', get_string('configintro', 'quiz')));
 
 // timelimit
-$quizsettings->add(new admin_setting_quiz_text('timelimit',
+$quizsettings->add(new admin_setting_text_with_advanced('quiz/timelimit',
         get_string('timelimit', 'quiz'), get_string('configtimelimit', 'quiz'),
         array('value' => '0', 'fix' => false), PARAM_INT));
 
@@ -57,10 +58,10 @@ for($i=2; $i<=7; $i++) {
      $seconds = $i*86400;
      $timedelayoptions[$seconds] = get_string('numdays', '', $i);
 }
-$quizsettings->add(new admin_setting_quiz_combo('delay1',
+$quizsettings->add(new admin_setting_combo_with_advanced('quiz/delay1',
         get_string('delay1', 'quiz'), get_string('configdelay1', 'quiz'),
         array('value' => 0, 'fix' => false), $timedelayoptions));
-$quizsettings->add(new admin_setting_quiz_combo('delay2',
+$quizsettings->add(new admin_setting_combo_with_advanced('quiz/delay2',
         get_string('delay2', 'quiz'), get_string('configdelay2', 'quiz'),
         array('value' => 0, 'fix' => false), $timedelayoptions));
 
@@ -71,17 +72,17 @@ $perpage[1] = get_string('aftereachquestion', 'quiz');
 for ($i = 2; $i <= 50; ++$i) {
     $perpage[$i] = get_string('afternquestions', 'quiz', $i);
 }
-$quizsettings->add(new admin_setting_quiz_combo('questionsperpage',
+$quizsettings->add(new admin_setting_combo_with_advanced('quiz/questionsperpage',
         get_string('newpageevery', 'quiz'), get_string('confignewpageevery', 'quiz'),
         array('value' => 1, 'fix' => false), $perpage));
 
 // shufflequestions
-$quizsettings->add(new admin_setting_quiz_yesno('shufflequestions',
+$quizsettings->add(new admin_setting_yesno_with_advanced('quiz/shufflequestions',
         get_string('shufflequestions', 'quiz'), get_string('configshufflequestions', 'quiz'),
         array('value' => 0, 'fix' => false)));
 
 // shuffleanswers
-$quizsettings->add(new admin_setting_quiz_yesno('shuffleanswers',
+$quizsettings->add(new admin_setting_yesno_with_advanced('quiz/shuffleanswers',
         get_string('shufflewithin', 'quiz'), get_string('configshufflewithin', 'quiz'),
         array('value' => 1, 'fix' => false)));
 
@@ -90,33 +91,31 @@ $options = array(get_string('unlimited'));
 for ($i = 1; $i <= 6; $i++) {
     $options[$i] = $i;
 }
-$quizsettings->add(new admin_setting_quiz_combo('attempts',
+$quizsettings->add(new admin_setting_combo_with_advanced('quiz/attempts',
         get_string('attemptsallowed', 'quiz'), get_string('configattemptsallowed', 'quiz'),
         array('value' => 0, 'fix' => false), $options));
 
 // attemptonlast
-$quizsettings->add(new admin_setting_quiz_yesno('attemptonlast',
+$quizsettings->add(new admin_setting_yesno_with_advanced('quiz/attemptonlast',
         get_string('eachattemptbuildsonthelast', 'quiz'), get_string('configeachattemptbuildsonthelast', 'quiz'),
         array('value' => 0, 'fix' => false)));
 
 // optionflags
-$quizsettings->add(new admin_setting_quiz_yesno('optionflags',
+$quizsettings->add(new admin_setting_yesno_with_advanced('quiz/optionflags',
         get_string('adaptive', 'quiz'), get_string('configadaptive', 'quiz'),
         array('value' => 1, 'fix' => false)));
 
 // maximumgrade
-$maxgradesetting = new admin_setting_configtext('maximumgrade',
-        get_string('maximumgrade'), get_string('configmaximumgrade', 'quiz'), 10, PARAM_INT);
-$maxgradesetting->plugin = 'quiz';
-$quizsettings->add($maxgradesetting);
+$quizsettings->add(new admin_setting_configtext('quiz/maximumgrade',
+        get_string('maximumgrade'), get_string('configmaximumgrade', 'quiz'), 10, PARAM_INT));
 
 // grademethod
-$quizsettings->add(new admin_setting_quiz_combo('grademethod',
+$quizsettings->add(new admin_setting_combo_with_advanced('quiz/grademethod',
         get_string('grademethod', 'quiz'), get_string('configgrademethod', 'quiz'),
         array('value' => QUIZ_GRADEHIGHEST, 'fix' => false), quiz_get_grading_options()));
 
 // penaltyscheme
-$quizsettings->add(new admin_setting_quiz_yesno('penaltyscheme',
+$quizsettings->add(new admin_setting_yesno_with_advanced('quiz/penaltyscheme',
         get_string('penaltyscheme', 'quiz'), get_string('configpenaltyscheme', 'quiz'),
         array('value' => 1, 'fix' => false)));
 
@@ -125,27 +124,27 @@ $options = array();
 for ($i = 0; $i <= 5; $i++) {
     $options[$i] = $i;
 }
-$quizsettings->add(new admin_setting_quiz_combo('decimalpoints',
+$quizsettings->add(new admin_setting_combo_with_advanced('quiz/decimalpoints',
         get_string('decimaldigits', 'quiz'), get_string('configdecimaldigits', 'quiz'),
         array('value' => 2, 'fix' => false), $options));
 
 // review
-$quizsettings->add(new admin_setting_quiz_reviewoptions('review',
+$quizsettings->add(new admin_setting_quiz_reviewoptions('quiz/review',
         get_string('reviewoptions', 'quiz'), get_string('configreviewoptions', 'quiz'),
         array('value' => 0x3fffffff, 'fix' => false)));
 
 // popup
-$quizsettings->add(new admin_setting_quiz_yesno('popup',
+$quizsettings->add(new admin_setting_yesno_with_advanced('quiz/popup',
         get_string('popup', 'quiz'), get_string('configpopup', 'quiz'),
         array('value' => 0, 'fix' => false)));
 
 // quizpassword
-$quizsettings->add(new admin_setting_quiz_text('password',
+$quizsettings->add(new admin_setting_text_with_advanced('quiz/password',
         get_string('requirepassword', 'quiz'), get_string('configrequirepassword', 'quiz'),
         array('value' => '', 'fix' => false), PARAM_TEXT));
 
 // subnet
-$quizsettings->add(new admin_setting_quiz_text('subnet',
+$quizsettings->add(new admin_setting_text_with_advanced('quiz/subnet',
         get_string('requiresubnet', 'quiz'), get_string('configrequiresubnet', 'quiz'),
         array('value' => '', 'fix' => false), PARAM_TEXT));