}
}
- $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').'" />';
$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>';
*
* @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)) {
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");
}
*
* 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 = '';
}
}
}
- 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);
$this->finalize();
break;
case 'finalizeclose':
- $this->finalize(true);
+ $this->finalizeclose();
break;
case 'unfinalize':
$this->unfinalize();
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'));
$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);
}