]> git.mjollnir.org Git - moodle.git/commitdiff
MDL-6591 inverted checkbox for email notification; MDL-9657 - fixed date issues in...
authorskodak <skodak>
Tue, 26 Feb 2008 19:27:43 +0000 (19:27 +0000)
committerskodak <skodak>
Tue, 26 Feb 2008 19:27:43 +0000 (19:27 +0000)
lang/en_utf8/assignment.php
lang/en_utf8/help/assignment/enableemailnotification.html [moved from lang/en_utf8/help/assignment/disableemailnotification.html with 78% similarity]
mod/assignment/lib.php
mod/assignment/type/upload/assignment.class.php

index 1761d652957a8efb46e2ae1132c9884d70882a76..850934d40a6916bcfa2c3b8f2d6c6d36e6c4e9e1 100644 (file)
@@ -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 <i>\'$a->assignment\'</i><br /><br />
 It is <a href=\"$a->url\">available on the web site</a>.';
 $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';
similarity index 78%
rename from lang/en_utf8/help/assignment/disableemailnotification.html
rename to lang/en_utf8/help/assignment/enableemailnotification.html
index 36551b6a8468fcaf875813daf9846665edfc0fca..b0d41adefb7aaf25b225efb32ad9d1b5ad9d319d 100644 (file)
@@ -1,4 +1,4 @@
-<h1>Disable notification emails</h1>
+<h1>Send feedback/grade notification emails</h1>
 
 <p>Do you want to notify students about received grades and feedback via email?</p>
 
index e599f5109954b17ef7c373c74ecb446e3028ab98..82534428d903aaa9ac90fa4670aa0f1d48d74529 100644 (file)
@@ -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 '<input type="hidden" name="mailinfo" value="1" />';
-        echo '<input type="checkbox" id="mailinfo" name="mailinfo" value="0" '.$lastmailinfo.' /><label for="mailinfo">'.get_string('disableemailnotification','assignment').'</label>';
+        echo '<input type="hidden" name="mailinfo" value="0" />';
+        echo '<input type="checkbox" id="mailinfo" name="mailinfo" value="1" '.$lastmailinfo.' /><label for="mailinfo">'.get_string('enableemailnotification','assignment').'</label>';
         echo '<div class="buttons">';
         echo '<input type="submit" name="submit" value="'.get_string('savechanges').'" onclick = "document.getElementById(\'submitform\').menuindex.value = document.getElementById(\'submitform\').grade.selectedIndex" />';
         echo '<input type="submit" name="cancel" value="'.get_string('cancel').'" />';
@@ -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 '<div class="fgcontrols">';
             echo '<div class="emailnotification">';
-            echo '<label for="mailinfo">'.get_string('disableemailnotification','assignment').'</label>';
-            echo '<input type="hidden" name="mailinfo" value="1" />';
-            echo '<input type="checkbox" id="mailinfo" name="mailinfo" value="0" '.$lastmailinfo.' />';
-            helpbutton('disableemailnotification', get_string('disableemailnotification', 'assignment'), 'assignment').'</p></div>';
+            echo '<label for="mailinfo">'.get_string('enableemailnotification','assignment').'</label>';
+            echo '<input type="hidden" name="mailinfo" value="0" />';
+            echo '<input type="checkbox" id="mailinfo" name="mailinfo" value="1" '.$lastmailinfo.' />';
+            helpbutton('enableemailnotification', get_string('enableemailnotification', 'assignment'), 'assignment').'</p></div>';
             echo '</div>';
             echo '<div class="fastgbutton"><input type="submit" name="fastg" value="'.get_string('saveallfeedback', 'assignment').'" /></div>';
             echo '</div>';
@@ -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        = '';
index 598806eb54b29ad9a7ecc8aa73c010c10a5d47ac..0b8fe8a8d27bb39024c95fc4165d34657871eccf 100644 (file)
@@ -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}&amp;userid=$userid&amp;mode=$mode&amp;offset=$offset&amp;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}&amp;userid=$userid&amp;mode=$mode&amp;offset=$offset&amp;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);
     }