From ef8a6dfb33c572beb0982818e9380476d6e636e2 Mon Sep 17 00:00:00 2001 From: Gareth J Barnard Date: Fri, 19 Apr 2013 13:41:51 +0100 Subject: [PATCH] MDL-37490 mod_assign: Add setting to show the due date on the course page. --- .../backup/moodle2/backup_assign_stepslib.php | 1 + mod/assign/db/install.xml | 1 + mod/assign/db/upgrade.php | 11 ++++++++ mod/assign/lang/en/assign.php | 2 ++ mod/assign/lib.php | 10 ++++++- mod/assign/locallib.php | 22 +++++++++++++-- mod/assign/mod_form.php | 28 +++++++++++++++---- mod/assign/tests/generator/lib.php | 1 + mod/assign/upgradelib.php | 1 + 9 files changed, 69 insertions(+), 8 deletions(-) diff --git a/mod/assign/backup/moodle2/backup_assign_stepslib.php b/mod/assign/backup/moodle2/backup_assign_stepslib.php index 8696fa8e10a..7ff7bc6b954 100644 --- a/mod/assign/backup/moodle2/backup_assign_stepslib.php +++ b/mod/assign/backup/moodle2/backup_assign_stepslib.php @@ -52,6 +52,7 @@ class backup_assign_activity_structure_step extends backup_activity_structure_st 'sendnotifications', 'sendlatenotifications', 'duedate', + 'displayduedate', 'cutoffdate', 'allowsubmissionsfromdate', 'grade', diff --git a/mod/assign/db/install.xml b/mod/assign/db/install.xml index 271062eeaac..1d7a4767043 100644 --- a/mod/assign/db/install.xml +++ b/mod/assign/db/install.xml @@ -17,6 +17,7 @@ + diff --git a/mod/assign/db/upgrade.php b/mod/assign/db/upgrade.php index d7136decfe0..6ec82a7036a 100644 --- a/mod/assign/db/upgrade.php +++ b/mod/assign/db/upgrade.php @@ -207,6 +207,17 @@ function xmldb_assign_upgrade($oldversion) { // Moodle v2.4.0 release upgrade line. // Put any upgrade step following this. + if ($oldversion < 2012112902) { + // Define field displayduedate to be added to assign. + $table = new xmldb_table('assign'); + $field = new xmldb_field('displayduedate', XMLDB_TYPE_INTEGER, '2', null, null, null, '0', 'duedate'); + if (!$dbman->field_exists($table, $field)) { + $dbman->add_field($table, $field); + } + + // Assign savepoint reached. + upgrade_mod_savepoint(true, 2012112902, 'assign'); + } if ($oldversion < 2013030600) { upgrade_set_timeout(60*20); diff --git a/mod/assign/lang/en/assign.php b/mod/assign/lang/en/assign.php index f9cfea26204..b02ea7c0e33 100644 --- a/mod/assign/lang/en/assign.php +++ b/mod/assign/lang/en/assign.php @@ -115,6 +115,8 @@ $string['deletepluginareyousure'] = 'Delete assignment plugin {$a}: are you sure $string['deletepluginareyousuremessage'] = 'You are about to completely delete the assignment plugin {$a}. This will completely delete everything in the database associated with this assignment plugin. Are you SURE you want to continue?'; $string['deletingplugin'] = 'Deleting plugin {$a}.'; $string['description'] = 'Description'; +$string['displayduedate'] = 'Display due date'; +$string['displayduedate_help'] = "If enabled the due date will be displayed on the course page if one has been set and enabled."; $string['downloadall'] = 'Download all submissions'; $string['download all submissions'] = 'Download all submissions in a zip file.'; $string['duedate'] = 'Due date'; diff --git a/mod/assign/lib.php b/mod/assign/lib.php index 0cff70dff91..d43e61d07c3 100644 --- a/mod/assign/lib.php +++ b/mod/assign/lib.php @@ -257,7 +257,7 @@ function assign_get_coursemodule_info($coursemodule) { global $CFG, $DB; $dbparams = array('id'=>$coursemodule->instance); - $fields = 'id, name, alwaysshowdescription, allowsubmissionsfromdate, intro, introformat'; + $fields = 'id, name, alwaysshowdescription, allowsubmissionsfromdate, intro, introformat, duedate, displayduedate'; if (! $assignment = $DB->get_record('assign', $dbparams, $fields)) { return false; } @@ -270,6 +270,14 @@ function assign_get_coursemodule_info($coursemodule) { $result->content = format_module_intro('assign', $assignment, $coursemodule->id, false); } } + + if (($assignment->duedate > 0) && ($assignment->displayduedate)) { + if (empty($result->content)){ + $result->content = ''; + } + $result->content .= html_writer::tag('p', get_string('duedate', 'assign') . ': ' . userdate($assignment->duedate)); + } + return $result; } diff --git a/mod/assign/locallib.php b/mod/assign/locallib.php index 2267c9678fc..811fa51daea 100644 --- a/mod/assign/locallib.php +++ b/mod/assign/locallib.php @@ -524,7 +524,16 @@ class assign { $update->requiresubmissionstatement = $formdata->requiresubmissionstatement; $update->sendnotifications = $formdata->sendnotifications; $update->sendlatenotifications = $formdata->sendlatenotifications; - $update->duedate = $formdata->duedate; + if (empty($formdata->duedateenable)) { + $update->duedate = 0; + } else { + $update->duedate = $formdata->duedate; + } + if (empty($formdata->displayduedate)) { + $update->displayduedate = 0; + } else { + $update->displayduedate = $formdata->displayduedate; + } $update->cutoffdate = $formdata->cutoffdate; $update->allowsubmissionsfromdate = $formdata->allowsubmissionsfromdate; $update->grade = $formdata->grade; @@ -845,7 +854,16 @@ class assign { $update->requiresubmissionstatement = $formdata->requiresubmissionstatement; $update->sendnotifications = $formdata->sendnotifications; $update->sendlatenotifications = $formdata->sendlatenotifications; - $update->duedate = $formdata->duedate; + if (empty($formdata->duedateenable)) { + $update->duedate = 0; + } else { + $update->duedate = $formdata->duedate; + } + if (empty($formdata->displayduedate)) { + $update->displayduedate = 0; + } else { + $update->displayduedate = $formdata->displayduedate; + } $update->cutoffdate = $formdata->cutoffdate; $update->allowsubmissionsfromdate = $formdata->allowsubmissionsfromdate; $update->grade = $formdata->grade; diff --git a/mod/assign/mod_form.php b/mod/assign/mod_form.php index 4101ab11283..6dd05dcc67c 100644 --- a/mod/assign/mod_form.php +++ b/mod/assign/mod_form.php @@ -42,7 +42,7 @@ class mod_assign_mod_form extends moodleform_mod { * @return void */ public function definition() { - global $CFG, $DB, $PAGE; + global $CFG, $DB, $PAGE, $OUTPUT; $mform = $this->_form; $mform->addElement('header', 'general', get_string('general', 'form')); @@ -83,10 +83,28 @@ class mod_assign_mod_form extends moodleform_mod { $mform->addHelpButton('allowsubmissionsfromdate', 'allowsubmissionsfromdate', 'assign'); $mform->setDefault('allowsubmissionsfromdate', time()); - $name = get_string('duedate', 'assign'); - $mform->addElement('date_time_selector', 'duedate', $name, array('optional'=>true)); - $mform->addHelpButton('duedate', 'duedate', 'assign'); - $mform->setDefault('duedate', time()+7*24*3600); + $name = get_string('duedate', 'assign').$OUTPUT->help_icon('duedate', 'assign'); + $duedateelements[] = $mform->createElement('date_time_selector', 'duedate', $name); + $duedateelements[] = $mform->createElement('checkbox', 'duedateenable', null, get_string('enable')); + try { + $duedate = $assignment->get_instance()->duedate; + } catch (Exception $e) { + $duedate = 0; + } + if ($duedate > 0) { + $mform->setDefault('duedate', $duedate); + $mform->setDefault('duedateenable', 1); + } else { + $mform->setDefault('duedate', time()+7*24*3600); + $mform->setDefault('duedateenable', 0); + } + + $dddname = get_string('displayduedate', 'assign').$OUTPUT->help_icon('displayduedate', 'assign'); + $duedateelements[] = $mform->createElement('checkbox', 'displayduedate', null, $dddname); + $mform->setDefault('displayduedate', 0); + + $mform->addGroup($duedateelements, 'duedategrp', $name, null, false); + $mform->disabledIf('duedategrp', 'duedateenable'); $name = get_string('cutoffdate', 'assign'); $mform->addElement('date_time_selector', 'cutoffdate', $name, array('optional'=>true)); diff --git a/mod/assign/tests/generator/lib.php b/mod/assign/tests/generator/lib.php index 6c225819bfa..daf1eed2394 100644 --- a/mod/assign/tests/generator/lib.php +++ b/mod/assign/tests/generator/lib.php @@ -56,6 +56,7 @@ class mod_assign_generator extends testing_module_generator { 'sendnotifications' => 0, 'sendlatenotifications' => 0, 'duedate' => 0, + 'displayduedate' => 0, 'allowsubmissionsfromdate' => 0, 'grade' => 100, 'cutoffdate' => 0, diff --git a/mod/assign/upgradelib.php b/mod/assign/upgradelib.php index e3899dda2fb..2d76aeabf29 100644 --- a/mod/assign/upgradelib.php +++ b/mod/assign/upgradelib.php @@ -86,6 +86,7 @@ class assign_upgrade_manager { $data->sendnotifications = $oldassignment->emailteachers; $data->sendlatenotifications = $oldassignment->emailteachers; $data->duedate = $oldassignment->timedue; + $data->displayduedate = 0; $data->allowsubmissionsfromdate = $oldassignment->timeavailable; $data->grade = $oldassignment->grade; $data->submissiondrafts = $oldassignment->resubmit; -- 2.43.0