MDL-57938 mod_assign: added new 'gradingduedate' setting

Part of MDL-55611 epic.
This commit is contained in:
Mark Nelson 2017-02-13 15:58:06 +08:00 committed by Damyon Wiese
parent 410f2fb30d
commit 3e1c027532
13 changed files with 44 additions and 1 deletions

View File

@ -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;

View File

@ -74,6 +74,7 @@ class backup_assign_activity_structure_step extends backup_activity_structure_st
'sendstudentnotifications',
'duedate',
'cutoffdate',
'gradingduedate',
'allowsubmissionsfromdate',
'grade',
'timemodified',

View File

@ -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;
}

View File

@ -23,6 +23,7 @@
<FIELD NAME="requiresubmissionstatement" TYPE="int" LENGTH="2" NOTNULL="true" DEFAULT="0" SEQUENCE="false" COMMENT="Forces the student to accept a submission statement when submitting an assignment"/>
<FIELD NAME="completionsubmit" TYPE="int" LENGTH="2" NOTNULL="true" DEFAULT="0" SEQUENCE="false" COMMENT="If this field is set to 1, then the activity will be automatically marked as 'complete' once the user submits their assignment."/>
<FIELD NAME="cutoffdate" TYPE="int" LENGTH="10" NOTNULL="true" DEFAULT="0" SEQUENCE="false" COMMENT="The final date after which submissions will no longer be accepted for this assignment without an extensions."/>
<FIELD NAME="gradingduedate" TYPE="int" LENGTH="10" NOTNULL="true" DEFAULT="0" SEQUENCE="false" COMMENT="The expected date for marking the submissions."/>
<FIELD NAME="teamsubmission" TYPE="int" LENGTH="2" NOTNULL="true" DEFAULT="0" SEQUENCE="false" COMMENT="Do students submit in teams?"/>
<FIELD NAME="requireallteammemberssubmit" TYPE="int" LENGTH="2" NOTNULL="true" DEFAULT="0" SEQUENCE="false" COMMENT="If enabled, a submission will not be accepted until all team members have submitted it."/>
<FIELD NAME="teamsubmissiongroupingid" TYPE="int" LENGTH="10" NOTNULL="true" DEFAULT="0" SEQUENCE="false" COMMENT="A grouping id to get groups for team submissions"/>

View File

@ -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;
}

View File

@ -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'),

View File

@ -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';

View File

@ -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)) {

View File

@ -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');

View File

@ -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',

View File

@ -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,

View File

@ -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;

View File

@ -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;