From 3e1c027532c2eadd29e1b2bea28ce82c5f38cdfe Mon Sep 17 00:00:00 2001 From: Mark Nelson Date: Mon, 13 Feb 2017 15:58:06 +0800 Subject: [PATCH] MDL-57938 mod_assign: added new 'gradingduedate' setting Part of MDL-55611 epic. --- course/tests/courselib_test.php | 1 + .../backup/moodle2/backup_assign_stepslib.php | 1 + .../backup/moodle2/restore_assign_stepslib.php | 3 +++ mod/assign/db/install.xml | 1 + mod/assign/db/upgrade.php | 14 ++++++++++++++ mod/assign/externallib.php | 3 +++ mod/assign/lang/en/assign.php | 2 ++ mod/assign/locallib.php | 2 ++ mod/assign/mod_form.php | 4 ++++ mod/assign/settings.php | 10 ++++++++++ mod/assign/tests/generator/lib.php | 1 + mod/assign/upgradelib.php | 1 + mod/assign/version.php | 2 +- 13 files changed, 44 insertions(+), 1 deletion(-) diff --git a/course/tests/courselib_test.php b/course/tests/courselib_test.php index 348b5964581..d80cca2e1f6 100644 --- a/course/tests/courselib_test.php +++ b/course/tests/courselib_test.php @@ -97,6 +97,7 @@ class core_course_courselib_testcase extends advanced_testcase { $moduleinfo->sendlatenotifications = true; $moduleinfo->duedate = time() + (7 * 24 * 3600); $moduleinfo->cutoffdate = time() + (7 * 24 * 3600); + $moduleinfo->gradingduedate = time() + (7 * 24 * 3600); $moduleinfo->allowsubmissionsfromdate = time(); $moduleinfo->teamsubmission = true; $moduleinfo->requireallteammemberssubmit = true; diff --git a/mod/assign/backup/moodle2/backup_assign_stepslib.php b/mod/assign/backup/moodle2/backup_assign_stepslib.php index 6eb5c52bfbf..4facb4fda31 100644 --- a/mod/assign/backup/moodle2/backup_assign_stepslib.php +++ b/mod/assign/backup/moodle2/backup_assign_stepslib.php @@ -74,6 +74,7 @@ class backup_assign_activity_structure_step extends backup_activity_structure_st 'sendstudentnotifications', 'duedate', 'cutoffdate', + 'gradingduedate', 'allowsubmissionsfromdate', 'grade', 'timemodified', diff --git a/mod/assign/backup/moodle2/restore_assign_stepslib.php b/mod/assign/backup/moodle2/restore_assign_stepslib.php index c4b3722128a..e1e170d68f8 100644 --- a/mod/assign/backup/moodle2/restore_assign_stepslib.php +++ b/mod/assign/backup/moodle2/restore_assign_stepslib.php @@ -113,6 +113,9 @@ class restore_assign_activity_structure_step extends restore_activity_structure_ if (!isset($data->cutoffdate)) { $data->cutoffdate = 0; } + if (!isset($data->gradingduedate)) { + $data->gradingduedate = 0; + } if (!isset($data->markingworkflow)) { $data->markingworkflow = 0; } diff --git a/mod/assign/db/install.xml b/mod/assign/db/install.xml index 9cba667e03a..9b9bb7ed0bf 100644 --- a/mod/assign/db/install.xml +++ b/mod/assign/db/install.xml @@ -23,6 +23,7 @@ + diff --git a/mod/assign/db/upgrade.php b/mod/assign/db/upgrade.php index c070dc81660..6a128fd55c8 100644 --- a/mod/assign/db/upgrade.php +++ b/mod/assign/db/upgrade.php @@ -282,5 +282,19 @@ function xmldb_assign_upgrade($oldversion) { upgrade_mod_savepoint(true, 2017031000, 'assign'); } + if ($oldversion < 2017031300) { + // Add a 'gradingduedate' field to the 'assign' table. + $table = new xmldb_table('assign'); + $field = new xmldb_field('gradingduedate', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, 0, 'cutoffdate'); + + // Conditionally launch add field. + if (!$dbman->field_exists($table, $field)) { + $dbman->add_field($table, $field); + } + + // Assign savepoint reached. + upgrade_mod_savepoint(true, 2017031300, 'assign'); + } + return true; } diff --git a/mod/assign/externallib.php b/mod/assign/externallib.php index 15e20e56c36..9280ffff23f 100644 --- a/mod/assign/externallib.php +++ b/mod/assign/externallib.php @@ -369,6 +369,7 @@ class mod_assign_external extends external_api { 'm.timemodified, '. 'm.completionsubmit, ' . 'm.cutoffdate, ' . + 'm.gradingduedate, ' . 'm.teamsubmission, ' . 'm.requireallteammemberssubmit, '. 'm.teamsubmissiongroupingid, ' . @@ -441,6 +442,7 @@ class mod_assign_external extends external_api { 'timemodified' => $module->timemodified, 'completionsubmit' => $module->completionsubmit, 'cutoffdate' => $assign->get_instance()->cutoffdate, + 'gradingduedate' => $assign->get_instance()->gradingduedate, 'teamsubmission' => $module->teamsubmission, 'requireallteammemberssubmit' => $module->requireallteammemberssubmit, 'teamsubmissiongroupingid' => $module->teamsubmissiongroupingid, @@ -517,6 +519,7 @@ class mod_assign_external extends external_api { 'timemodified' => new external_value(PARAM_INT, 'last time assignment was modified'), 'completionsubmit' => new external_value(PARAM_INT, 'if enabled, set activity as complete following submission'), 'cutoffdate' => new external_value(PARAM_INT, 'date after which submission is not accepted without an extension'), + 'gradingduedate' => new external_value(PARAM_INT, 'the expected date for marking the submissions'), 'teamsubmission' => new external_value(PARAM_INT, 'if enabled, students submit as a team'), 'requireallteammemberssubmit' => new external_value(PARAM_INT, 'if enabled, all team members must submit'), 'teamsubmissiongroupingid' => new external_value(PARAM_INT, 'the grouping id for the team submission groups'), diff --git a/mod/assign/lang/en/assign.php b/mod/assign/lang/en/assign.php index 9a4e07c6c34..0cd78276b12 100644 --- a/mod/assign/lang/en/assign.php +++ b/mod/assign/lang/en/assign.php @@ -249,6 +249,8 @@ $string['gradeoutofhelp_help'] = 'Enter the grade for the student\'s submission $string['gradestudent'] = 'Grade student: (id={$a->id}, fullname={$a->fullname}). '; $string['grading'] = 'Grading'; $string['gradingchangessaved'] = 'The grade changes were saved'; +$string['gradingduedate'] = 'Grading due date'; +$string['gradingduedate_help'] = 'The expected date that marking of the submissions should be completed by. This date is used to prioritise dashboard notifications for teachers.'; $string['gradechangessaveddetail'] = 'The changes to the grade and feedback were saved'; $string['gradingmethodpreview'] = 'Grading criteria'; $string['gradingoptions'] = 'Options'; diff --git a/mod/assign/locallib.php b/mod/assign/locallib.php index 71b4c9efdc6..21c960a546d 100644 --- a/mod/assign/locallib.php +++ b/mod/assign/locallib.php @@ -635,6 +635,7 @@ class assign { } $update->duedate = $formdata->duedate; $update->cutoffdate = $formdata->cutoffdate; + $update->gradingduedate = $formdata->gradingduedate; $update->allowsubmissionsfromdate = $formdata->allowsubmissionsfromdate; $update->grade = $formdata->grade; $update->completionsubmit = !empty($formdata->completionsubmit); @@ -1244,6 +1245,7 @@ class assign { } $update->duedate = $formdata->duedate; $update->cutoffdate = $formdata->cutoffdate; + $update->gradingduedate = $formdata->gradingduedate; $update->allowsubmissionsfromdate = $formdata->allowsubmissionsfromdate; $update->grade = $formdata->grade; if (!empty($formdata->completionunlocked)) { diff --git a/mod/assign/mod_form.php b/mod/assign/mod_form.php index be6166db7de..c4a39e8bea1 100644 --- a/mod/assign/mod_form.php +++ b/mod/assign/mod_form.php @@ -95,6 +95,10 @@ class mod_assign_mod_form extends moodleform_mod { $mform->addElement('date_time_selector', 'cutoffdate', $name, array('optional'=>true)); $mform->addHelpButton('cutoffdate', 'cutoffdate', 'assign'); + $name = get_string('gradingduedate', 'assign'); + $mform->addElement('date_time_selector', 'gradingduedate', $name, array('optional' => true)); + $mform->addHelpButton('gradingduedate', 'gradingduedate', 'assign'); + $name = get_string('alwaysshowdescription', 'assign'); $mform->addElement('checkbox', 'alwaysshowdescription', $name); $mform->addHelpButton('alwaysshowdescription', 'alwaysshowdescription', 'assign'); diff --git a/mod/assign/settings.php b/mod/assign/settings.php index ff0b260ed20..b0f9effd1d9 100644 --- a/mod/assign/settings.php +++ b/mod/assign/settings.php @@ -131,6 +131,16 @@ if ($ADMIN->fulltree) { $setting->set_advanced_flag_options(admin_setting_flag::ENABLED, false); $settings->add($setting); + $name = new lang_string('gradingduedate', 'mod_assign'); + $description = new lang_string('gradingduedate_help', 'mod_assign'); + $setting = new admin_setting_configduration('assign/gradingduedate', + $name, + $description, + 1209600); + $setting->set_enabled_flag_options(admin_setting_flag::ENABLED, true); + $setting->set_advanced_flag_options(admin_setting_flag::ENABLED, false); + $settings->add($setting); + $name = new lang_string('submissiondrafts', 'mod_assign'); $description = new lang_string('submissiondrafts_help', 'mod_assign'); $setting = new admin_setting_configcheckbox('assign/submissiondrafts', diff --git a/mod/assign/tests/generator/lib.php b/mod/assign/tests/generator/lib.php index 07600d8d058..e9d4fa7d0b9 100644 --- a/mod/assign/tests/generator/lib.php +++ b/mod/assign/tests/generator/lib.php @@ -40,6 +40,7 @@ class mod_assign_generator extends testing_module_generator { 'allowsubmissionsfromdate' => 0, 'grade' => 100, 'cutoffdate' => 0, + 'gradingduedate' => 0, 'teamsubmission' => 0, 'requireallteammemberssubmit' => 0, 'teamsubmissiongroupingid' => 0, diff --git a/mod/assign/upgradelib.php b/mod/assign/upgradelib.php index e1e63b9dadd..c4fff773043 100644 --- a/mod/assign/upgradelib.php +++ b/mod/assign/upgradelib.php @@ -96,6 +96,7 @@ class assign_upgrade_manager { $data->markingworkflow = 0; $data->markingallocation = 0; $data->cutoffdate = 0; + $data->gradingduedate = 0; // New way to specify no late submissions. if ($oldassignment->preventlate) { $data->cutoffdate = $data->duedate; diff --git a/mod/assign/version.php b/mod/assign/version.php index cb052f335b3..2ca508dd0c1 100644 --- a/mod/assign/version.php +++ b/mod/assign/version.php @@ -25,6 +25,6 @@ defined('MOODLE_INTERNAL') || die(); $plugin->component = 'mod_assign'; // Full name of the plugin (used for diagnostics). -$plugin->version = 2017031000; // The current module version (Date: YYYYMMDDXX). +$plugin->version = 2017031300; // The current module version (Date: YYYYMMDDXX). $plugin->requires = 2016112900; // Requires this Moodle version. $plugin->cron = 60;