MDL-71902 mod_quiz: Add locked flag option for quiz options

- Applies locked settings to many other quiz general options.
  For example, allows an admin to lock the browsersecurity level so it
  cannot be changed at an instance level, and will apply the 'default'
  option (which is currently None).
This commit is contained in:
Kevin Pham 2021-06-16 13:15:26 +10:00
parent 2b2897bf10
commit 4141f88361

View file

@ -64,6 +64,7 @@ if ($ADMIN->fulltree) {
get_string('timelimit', 'quiz'), get_string('configtimelimitsec', 'quiz'),
'0', 60);
$setting->set_advanced_flag_options(admin_setting_flag::ENABLED, false);
$setting->set_locked_flag_options(admin_setting_flag::ENABLED, false);
$quizsettings->add($setting);
// Delay to notify graded attempts.
@ -71,15 +72,18 @@ if ($ADMIN->fulltree) {
get_string('attemptgradeddelay', 'quiz'), get_string('attemptgradeddelay_desc', 'quiz'), 5 * HOURSECS, HOURSECS));
// What to do with overdue attempts.
$quizsettings->add(new mod_quiz_admin_setting_overduehandling('quiz/overduehandling',
$setting = new mod_quiz_admin_setting_overduehandling('quiz/overduehandling',
get_string('overduehandling', 'quiz'), get_string('overduehandling_desc', 'quiz'),
array('value' => 'autosubmit', 'adv' => false), null));
array('value' => 'autosubmit', 'adv' => false), null);
$setting->set_locked_flag_options(admin_setting_flag::ENABLED, false);
$quizsettings->add($setting);
// Grace period time.
$setting = new admin_setting_configduration('quiz/graceperiod',
get_string('graceperiod', 'quiz'), get_string('graceperiod_desc', 'quiz'),
'86400');
$setting->set_advanced_flag_options(admin_setting_flag::ENABLED, false);
$setting->set_locked_flag_options(admin_setting_flag::ENABLED, false);
$quizsettings->add($setting);
// Minimum grace period used behind the scenes.
@ -96,16 +100,21 @@ if ($ADMIN->fulltree) {
get_string('attemptsallowed', 'quiz'), get_string('configattemptsallowed', 'quiz'),
0, $options);
$setting->set_advanced_flag_options(admin_setting_flag::ENABLED, false);
$setting->set_locked_flag_options(admin_setting_flag::ENABLED, false);
$quizsettings->add($setting);
// Grading method.
$quizsettings->add(new mod_quiz_admin_setting_grademethod('quiz/grademethod',
$setting = new mod_quiz_admin_setting_grademethod('quiz/grademethod',
get_string('grademethod', 'quiz'), get_string('configgrademethod', 'quiz'),
array('value' => QUIZ_GRADEHIGHEST, 'adv' => false), null));
array('value' => QUIZ_GRADEHIGHEST, 'adv' => false), null);
$setting->set_locked_flag_options(admin_setting_flag::ENABLED, false);
$quizsettings->add($setting);
// Maximum grade.
$quizsettings->add(new admin_setting_configtext('quiz/maximumgrade',
get_string('maximumgrade'), get_string('configmaximumgrade', 'quiz'), 10, PARAM_INT));
$setting = new admin_setting_configtext('quiz/maximumgrade',
get_string('maximumgrade'), get_string('configmaximumgrade', 'quiz'), 10, PARAM_INT);
$setting->set_locked_flag_options(admin_setting_flag::ENABLED, false);
$quizsettings->add($setting);
// Questions per page.
$perpage = array();
@ -118,6 +127,7 @@ if ($ADMIN->fulltree) {
get_string('newpageevery', 'quiz'), get_string('confignewpageevery', 'quiz'),
1, $perpage);
$setting->set_advanced_flag_options(admin_setting_flag::ENABLED, false);
$setting->set_locked_flag_options(admin_setting_flag::ENABLED, false);
$quizsettings->add($setting);
// Navigation method.
@ -125,6 +135,7 @@ if ($ADMIN->fulltree) {
get_string('navmethod', 'quiz'), get_string('confignavmethod', 'quiz'),
QUIZ_NAVMETHOD_FREE, quiz_get_navigation_options());
$setting->set_advanced_flag_options(admin_setting_flag::ENABLED, true);
$setting->set_locked_flag_options(admin_setting_flag::ENABLED, false);
$quizsettings->add($setting);
// Shuffle within questions.
@ -132,12 +143,15 @@ if ($ADMIN->fulltree) {
get_string('shufflewithin', 'quiz'), get_string('configshufflewithin', 'quiz'),
1);
$setting->set_advanced_flag_options(admin_setting_flag::ENABLED, false);
$setting->set_locked_flag_options(admin_setting_flag::ENABLED, false);
$quizsettings->add($setting);
// Preferred behaviour.
$quizsettings->add(new admin_setting_question_behaviour('quiz/preferredbehaviour',
$setting = new admin_setting_question_behaviour('quiz/preferredbehaviour',
get_string('howquestionsbehave', 'question'), get_string('howquestionsbehave_desc', 'quiz'),
'deferredfeedback'));
'deferredfeedback');
$setting->set_locked_flag_options(admin_setting_flag::ENABLED, false);
$quizsettings->add($setting);
// Can redo completed questions.
$setting = new admin_setting_configselect('quiz/canredoquestions',
@ -145,6 +159,7 @@ if ($ADMIN->fulltree) {
0,
array(0 => get_string('no'), 1 => get_string('canredoquestionsyes', 'quiz')));
$setting->set_advanced_flag_options(admin_setting_flag::ENABLED, true);
$setting->set_locked_flag_options(admin_setting_flag::ENABLED, false);
$quizsettings->add($setting);
// Each attempt builds on last.
@ -153,6 +168,7 @@ if ($ADMIN->fulltree) {
get_string('configeachattemptbuildsonthelast', 'quiz'),
0);
$setting->set_advanced_flag_options(admin_setting_flag::ENABLED, true);
$setting->set_locked_flag_options(admin_setting_flag::ENABLED, false);
$quizsettings->add($setting);
// Review options.
@ -172,9 +188,11 @@ if ($ADMIN->fulltree) {
}
// Show the user's picture.
$quizsettings->add(new mod_quiz_admin_setting_user_image('quiz/showuserpicture',
$setting = new mod_quiz_admin_setting_user_image('quiz/showuserpicture',
get_string('showuserpicture', 'quiz'), get_string('configshowuserpicture', 'quiz'),
array('value' => 0, 'adv' => false), null));
array('value' => 0, 'adv' => false), null);
$setting->set_locked_flag_options(admin_setting_flag::ENABLED, false);
$quizsettings->add($setting);
// Decimal places for overall grades.
$options = array();
@ -185,6 +203,7 @@ if ($ADMIN->fulltree) {
get_string('decimalplaces', 'quiz'), get_string('configdecimalplaces', 'quiz'),
2, $options);
$setting->set_advanced_flag_options(admin_setting_flag::ENABLED, false);
$setting->set_locked_flag_options(admin_setting_flag::ENABLED, false);
$quizsettings->add($setting);
// Decimal places for question grades.
@ -197,6 +216,7 @@ if ($ADMIN->fulltree) {
get_string('configdecimalplacesquestion', 'quiz'),
-1, $options);
$setting->set_advanced_flag_options(admin_setting_flag::ENABLED, false);
$setting->set_locked_flag_options(admin_setting_flag::ENABLED, false);
$quizsettings->add($setting);
// Show blocks during quiz attempts.
@ -204,6 +224,7 @@ if ($ADMIN->fulltree) {
get_string('showblocks', 'quiz'), get_string('configshowblocks', 'quiz'),
0);
$setting->set_advanced_flag_options(admin_setting_flag::ENABLED, true);
$setting->set_locked_flag_options(admin_setting_flag::ENABLED, false);
$quizsettings->add($setting);
// Password.
@ -212,6 +233,7 @@ if ($ADMIN->fulltree) {
'');
$setting->set_advanced_flag_options(admin_setting_flag::ENABLED, false);
$setting->set_required_flag_options(admin_setting_flag::ENABLED, false);
$setting->set_locked_flag_options(admin_setting_flag::ENABLED, false);
$quizsettings->add($setting);
// IP restrictions.
@ -219,6 +241,7 @@ if ($ADMIN->fulltree) {
get_string('requiresubnet', 'quiz'), get_string('configrequiresubnet', 'quiz'),
'', PARAM_TEXT);
$setting->set_advanced_flag_options(admin_setting_flag::ENABLED, true);
$setting->set_locked_flag_options(admin_setting_flag::ENABLED, false);
$quizsettings->add($setting);
// Enforced delay between attempts.
@ -226,17 +249,21 @@ if ($ADMIN->fulltree) {
get_string('delay1st2nd', 'quiz'), get_string('configdelay1st2nd', 'quiz'),
0, 60);
$setting->set_advanced_flag_options(admin_setting_flag::ENABLED, true);
$setting->set_locked_flag_options(admin_setting_flag::ENABLED, false);
$quizsettings->add($setting);
$setting = new admin_setting_configduration('quiz/delay2',
get_string('delaylater', 'quiz'), get_string('configdelaylater', 'quiz'),
0, 60);
$setting->set_advanced_flag_options(admin_setting_flag::ENABLED, true);
$setting->set_locked_flag_options(admin_setting_flag::ENABLED, false);
$quizsettings->add($setting);
// Browser security.
$quizsettings->add(new mod_quiz_admin_setting_browsersecurity('quiz/browsersecurity',
$setting = new mod_quiz_admin_setting_browsersecurity('quiz/browsersecurity',
get_string('showinsecurepopup', 'quiz'), get_string('configpopup', 'quiz'),
array('value' => '-', 'adv' => true), null));
array('value' => '-', 'adv' => true), null);
$setting->set_locked_flag_options(admin_setting_flag::ENABLED, false);
$quizsettings->add($setting);
$quizsettings->add(new admin_setting_configtext('quiz/initialnumfeedbacks',
get_string('initialnumfeedbacks', 'quiz'), get_string('initialnumfeedbacks_desc', 'quiz'),