From 03076be407d0da5d5b856f11a228959d10715262 Mon Sep 17 00:00:00 2001 From: skodak Date: Tue, 26 Feb 2008 19:27:43 +0000 Subject: [PATCH] MDL-6591 inverted checkbox for email notification; MDL-9657 - fixed date issues in drafts; merged from MOODLE_19_STABLE --- lang/en_utf8/assignment.php | 2 +- ...tion.html => enableemailnotification.html} | 2 +- mod/assignment/lib.php | 30 ++++--- .../type/upload/assignment.class.php | 84 +++++++++++-------- 4 files changed, 67 insertions(+), 51 deletions(-) rename lang/en_utf8/help/assignment/{disableemailnotification.html => enableemailnotification.html} (78%) diff --git a/lang/en_utf8/assignment.php b/lang/en_utf8/assignment.php index 1761d65295..850934d40a 100644 --- a/lang/en_utf8/assignment.php +++ b/lang/en_utf8/assignment.php @@ -33,7 +33,6 @@ $string['confirmdeletefile'] = 'Are you absolutely sure you want to delete this $string['deleteallsubmissions'] = 'Delete all submissions'; $string['deletefilefailed'] = 'Deleting of file failed.'; $string['description'] = 'Description'; -$string['disableemailnotification'] = 'Disable notification emails'; $string['draft'] = 'Draft'; $string['duedate'] = 'Due date'; $string['duedateno'] = 'No due date'; @@ -51,6 +50,7 @@ for \'$a->assignment\'

It is url\">available on the web site.'; $string['emailteachers'] = 'Email alerts to teachers'; $string['emptysubmission'] = 'You have not submitted anything yet'; +$string['enableemailnotification'] = 'Send feedback/grade notification emails'; $string['existingfiledeleted'] = 'Existing file has been deleted: $a'; $string['failedupdatefeedback'] = 'Failed to update submission feedback for user $a'; $string['feedback'] = 'Feedback'; diff --git a/lang/en_utf8/help/assignment/disableemailnotification.html b/lang/en_utf8/help/assignment/enableemailnotification.html similarity index 78% rename from lang/en_utf8/help/assignment/disableemailnotification.html rename to lang/en_utf8/help/assignment/enableemailnotification.html index 36551b6a84..b0d41adefb 100644 --- a/lang/en_utf8/help/assignment/disableemailnotification.html +++ b/lang/en_utf8/help/assignment/enableemailnotification.html @@ -1,4 +1,4 @@ -

Disable notification emails

+

Send feedback/grade notification emails

Do you want to notify students about received grades and feedback via email?

diff --git a/mod/assignment/lib.php b/mod/assignment/lib.php index e599f51099..82534428d9 100644 --- a/mod/assignment/lib.php +++ b/mod/assignment/lib.php @@ -933,11 +933,11 @@ class assignment_base { } } - $lastmailinfo = get_user_preferences('assignment_mailinfo', 1) ? '' : 'checked="checked"'; + $lastmailinfo = get_user_preferences('assignment_mailinfo', 1) ? 'checked="checked"' : ''; ///Print Buttons in Single View - echo ''; - echo ''; + echo ''; + echo ''; echo '
'; echo ''; echo ''; @@ -1312,13 +1312,13 @@ class assignment_base { $table->print_html(); /// Print the whole table if ($quickgrade){ - $lastmailinfo = get_user_preferences('assignment_mailinfo', 1) ? '' : 'checked="checked"'; + $lastmailinfo = get_user_preferences('assignment_mailinfo', 1) ? 'checked="checked"' : ''; echo '
'; echo '
'; - echo ''; - echo ''; - echo ''; - helpbutton('disableemailnotification', get_string('disableemailnotification', 'assignment'), 'assignment').'

'; + echo ''; + echo ''; + echo ''; + helpbutton('enableemailnotification', get_string('enableemailnotification', 'assignment'), 'assignment').'

'; echo '
'; echo '
'; echo ''; @@ -1459,9 +1459,10 @@ class assignment_base { * * @param $userid int The id of the user whose submission we want or 0 in which case USER->id is used * @param $createnew boolean optional Defaults to false. If set to true a new submission object will be created in the database + * @param bool $teachermodified student submission set if false * @return object The submission */ - function get_submission($userid=0, $createnew=false) { + function get_submission($userid=0, $createnew=false, $teachermodified=false) { global $USER; if (empty($userid)) { @@ -1473,7 +1474,7 @@ class assignment_base { if ($submission || !$createnew) { return $submission; } - $newsubmission = $this->prepare_new_submission($userid); + $newsubmission = $this->prepare_new_submission($userid, $teachermodified); if (!insert_record("assignment_submissions", $newsubmission)) { error("Could not insert a new empty submission"); } @@ -1486,16 +1487,21 @@ class assignment_base { * * Sets the assignment, userid and times, everything else is set to default values. * @param $userid int The userid for which we want a submission object + * @param bool $teachermodified student submission set if false * @return object The submission */ - function prepare_new_submission($userid) { + function prepare_new_submission($userid, $teachermodified=false) { $submission = new Object; $submission->assignment = $this->assignment->id; $submission->userid = $userid; //$submission->timecreated = time(); $submission->timecreated = ''; // teachers should not be modifying modified date, except offline assignments - $submission->timemodified = $submission->timecreated; + if ($teachermodified) { + $submission->timemodified = 0; + } else { + $submission->timemodified = $submission->timecreated; + } $submission->numfiles = 0; $submission->data1 = ''; $submission->data2 = ''; diff --git a/mod/assignment/type/upload/assignment.class.php b/mod/assignment/type/upload/assignment.class.php index 598806eb54..0b8fe8a8d2 100644 --- a/mod/assignment/type/upload/assignment.class.php +++ b/mod/assignment/type/upload/assignment.class.php @@ -361,7 +361,8 @@ class assignment_upload extends assignment_base { } } } - if (has_capability('mod/assignment:grade', $this->context) and $mode != '') { // we do not want it on view.php page + + if ($this->drafts_tracked() and $this->isopen() and has_capability('mod/assignment:grade', $this->context) and $mode != '') { // we do not want it on view.php page if ($this->can_unfinalize($submission)) { $options = array ('id'=>$this->cm->id, 'userid'=>$userid, 'action'=>'unfinalize', 'mode'=>$mode, 'offset'=>$offset); $output .= print_single_button('upload.php', $options, get_string('unfinalize', 'assignment'), 'post', '_self', true); @@ -436,7 +437,7 @@ class assignment_upload extends assignment_base { $this->finalize(); break; case 'finalizeclose': - $this->finalize(true); + $this->finalizeclose(); break; case 'unfinalize': $this->unfinalize(); @@ -596,29 +597,19 @@ class assignment_upload extends assignment_base { die; } - function finalize($forceclosing=false) { + function finalize() { global $USER; - $userid = optional_param('userid', 0, PARAM_INT); - - if ($userid) { - $mode = required_param('mode', PARAM_ALPHA); - $offset = required_param('offset', PARAM_INT); - $returnurl = "submissions.php?id={$this->cm->id}&userid=$userid&mode=$mode&offset=$offset&forcerefresh=1"; - $confirm = true; - $submission = $this->get_submission($userid, true); - - } else { - $confirm = optional_param('confirm', 0, PARAM_BOOL); - $returnurl = 'view.php?id='.$this->cm->id; - $submission = $this->get_submission($USER->id, true); - } + $userid = optional_param('userid', 0, PARAM_INT); + $confirm = optional_param('confirm', 0, PARAM_BOOL); + $returnurl = 'view.php?id='.$this->cm->id; + $submission = $this->get_submission($USER->id); if (!$this->can_finalize($submission)) { redirect($returnurl); // probably already graded, redirect to assignment page, the reason should be obvious } - if (!data_submitted('nomatch') or !$confirm) { + if (!data_submitted() or !$confirm) { $optionsno = array('id'=>$this->cm->id); $optionsyes = array ('id'=>$this->cm->id, 'confirm'=>1, 'action'=>'finalize'); $this->view_header(get_string('submitformarking', 'assignment')); @@ -627,27 +618,46 @@ class assignment_upload extends assignment_base { $this->view_footer(); die; + } + $updated = new object(); + $updated->id = $submission->id; + $updated->data2 = ASSIGNMENT_STATUS_SUBMITTED; + $updated->timemodified = time(); + + if (update_record('assignment_submissions', $updated)) { + add_to_log($this->course->id, 'assignment', 'upload', //TODO: add finalize action to log + 'view.php?a='.$this->assignment->id, $this->assignment->id, $this->cm->id); + $this->email_teachers($submission); } else { - $updated = new object(); - $updated->id = $submission->id; - if ($forceclosing) { - $updated->data2 = ASSIGNMENT_STATUS_CLOSED; - } else { - $updated->data2 = ASSIGNMENT_STATUS_SUBMITTED; - } + $this->view_header(get_string('submitformarking', 'assignment')); + notify(get_string('finalizeerror', 'assignment')); + print_continue($returnurl); + $this->view_footer(); + die; + } + redirect($returnurl); + } - $updated->timemodified = time(); - if (update_record('assignment_submissions', $updated)) { - add_to_log($this->course->id, 'assignment', 'upload', //TODO: add finilize action to log - 'view.php?a='.$this->assignment->id, $this->assignment->id, $this->cm->id); - $this->email_teachers($submission); - } else { - $this->view_header(get_string('submitformarking', 'assignment')); - notify(get_string('finalizeerror', 'assignment')); - print_continue($returnurl); - $this->view_footer(); - die; - } + function finalizeclose() { + $userid = optional_param('userid', 0, PARAM_INT); + $mode = required_param('mode', PARAM_ALPHA); + $offset = required_param('offset', PARAM_INT); + $returnurl = "submissions.php?id={$this->cm->id}&userid=$userid&mode=$mode&offset=$offset&forcerefresh=1"; + + // create but do not add student submission date + $submission = $this->get_submission($userid, true, true); + + if (!data_submitted() or !$this->can_finalize($submission)) { + redirect($returnurl); // probably closed already + } + + $updated = new object(); + $updated->id = $submission->id; + $updated->data2 = ASSIGNMENT_STATUS_CLOSED; + + if (update_record('assignment_submissions', $updated)) { + add_to_log($this->course->id, 'assignment', 'upload', //TODO: add finalize action to log + 'view.php?a='.$this->assignment->id, $this->assignment->id, $this->cm->id); } redirect($returnurl); } -- 2.39.5