From 42f50aec5966d640cd6dcb167d9b3a827271301e Mon Sep 17 00:00:00 2001 From: skodak Date: Mon, 25 Feb 2008 13:34:17 +0000 Subject: [PATCH] MDL-9657 advanced upload assignment draft tracking now available as activity setting; merged from MOODLE_19_STABLE --- lang/en_utf8/assignment.php | 1 + lang/en_utf8/help/assignment/trackdrafts.html | 3 +++ mod/assignment/db/upgrade.php | 6 +++++ .../type/upload/assignment.class.php | 26 +++++++++++++++---- mod/assignment/version.php | 2 +- 5 files changed, 32 insertions(+), 6 deletions(-) create mode 100644 lang/en_utf8/help/assignment/trackdrafts.html diff --git a/lang/en_utf8/assignment.php b/lang/en_utf8/assignment.php index 69233bea2a..c55d018ffd 100644 --- a/lang/en_utf8/assignment.php +++ b/lang/en_utf8/assignment.php @@ -117,6 +117,7 @@ $string['submitedformarking'] = 'Assignment was already submitted for marking an $string['submitformarking'] = 'Final submission for assignment marking'; $string['submitted'] = 'Submitted'; $string['submittedfiles'] = 'Submitted files'; +$string['trackdrafts'] = 'Enable Send for marking'; $string['typeoffline'] = 'Offline activity'; $string['typeonline'] = 'Online text'; $string['typeupload'] = 'Advanced uploading of files'; diff --git a/lang/en_utf8/help/assignment/trackdrafts.html b/lang/en_utf8/help/assignment/trackdrafts.html new file mode 100644 index 0000000000..f8663c52fe --- /dev/null +++ b/lang/en_utf8/help/assignment/trackdrafts.html @@ -0,0 +1,3 @@ +

Enable Send for marking

+ +

Send for marking button allows students to indicate that they finished working on assignment. Teacher may also prevent further submission or revert to draft.

diff --git a/mod/assignment/db/upgrade.php b/mod/assignment/db/upgrade.php index a5b8101213..e49afc3759 100644 --- a/mod/assignment/db/upgrade.php +++ b/mod/assignment/db/upgrade.php @@ -49,6 +49,12 @@ function xmldb_assignment_upgrade($oldversion=0) { $result = $result && change_field_notnull($table, $field); } + if ($result && $oldversion < 2007091902) { + // add draft tracking default to existing upload assignments + $sql = "UPDATE {$CFG->prefix}assignment SET var4=1 WHERE assignmenttype='upload'"; + $result = execute_sql($sql); + } + return $result; } diff --git a/mod/assignment/type/upload/assignment.class.php b/mod/assignment/type/upload/assignment.class.php index 3d02b463a7..40d6aeae6b 100644 --- a/mod/assignment/type/upload/assignment.class.php +++ b/mod/assignment/type/upload/assignment.class.php @@ -42,7 +42,7 @@ class assignment_upload extends assignment_base { $this->view_feedback(); - if (!$this->isopen() or $this->is_finalized($submission)) { + if (!$this->drafts_tracked() or !$this->isopen() or $this->is_finalized($submission)) { print_heading(get_string('submission', 'assignment'), '', 3); } else { print_heading(get_string('submissiondraft', 'assignment'), '', 3); @@ -202,7 +202,7 @@ class assignment_upload extends assignment_base { } else if (!$this->isopen()) { print_heading(get_string('nomoresubmissions','assignment'), '', 3); - } else if ($state = $this->is_finalized($submission)) { + } else if ($this->drafts_tracked() and $state = $this->is_finalized($submission)) { if ($state == ASSIGNMENT_STATUS_SUBMITTED) { print_heading(get_string('submitedformarking','assignment'), '', 3); } else { @@ -272,7 +272,7 @@ class assignment_upload extends assignment_base { $output = ''; if ($basedir = $this->file_area($userid)) { - if ($this->isopen() and !$this->is_finalized($submission)) { + if ($this->drafts_tracked() and $this->isopen() and !$this->is_finalized($submission)) { $output .= ''.get_string('draft', 'assignment').': '; } @@ -327,7 +327,7 @@ class assignment_upload extends assignment_base { $candelete = $this->can_delete_files($submission); $strdelete = get_string('delete'); - if ($this->isopen() and !$this->is_finalized($submission) and !empty($mode)) { // only during grading + if ($this->drafts_tracked() and $this->isopen() and !$this->is_finalized($submission) and !empty($mode)) { // only during grading $output .= ''.get_string('draft', 'assignment').':
'; } @@ -860,13 +860,20 @@ class assignment_upload extends assignment_base { } } + function drafts_tracked() { + return !empty($this->assignment->var4); + } + /** * Returns submission status * @param object $submission - may be empty * @return string submission state - empty, ASSIGNMENT_STATUS_SUBMITTED or ASSIGNMENT_STATUS_CLOSED */ function is_finalized($submission) { - if (empty($submission)) { + if (!$this->drafts_tracked()) { + return ''; + + } else if (empty($submission)) { return ''; } else if ($submission->data2 == ASSIGNMENT_STATUS_SUBMITTED or $submission->data2 == ASSIGNMENT_STATUS_CLOSED) { @@ -878,6 +885,9 @@ class assignment_upload extends assignment_base { } function can_unfinalize($submission) { + if (!$this->drafts_tracked()) { + return false; + } if (has_capability('mod/assignment:grade', $this->context) and $this->isopen() and $this->is_finalized($submission)) { @@ -889,6 +899,9 @@ class assignment_upload extends assignment_base { function can_finalize($submission) { global $USER; + if (!$this->drafts_tracked()) { + return false; + } if ($this->is_finalized($submission)) { return false; @@ -995,6 +1008,9 @@ class assignment_upload extends assignment_base { $mform->setHelpButton('emailteachers', array('emailteachers', get_string('emailteachers', 'assignment'), 'assignment')); $mform->setDefault('emailteachers', 0); + $mform->addElement('select', 'var4', get_string("trackdrafts", "assignment"), $ynoptions); + $mform->setHelpButton('var4', array('trackdrafts', get_string('trackdrafts', 'assignment'), 'assignment')); + $mform->setDefault('trackdrafts', 1); } diff --git a/mod/assignment/version.php b/mod/assignment/version.php index b0cee508b0..7e899d744d 100644 --- a/mod/assignment/version.php +++ b/mod/assignment/version.php @@ -5,7 +5,7 @@ // This fragment is called by /admin/index.php //////////////////////////////////////////////////////////////////////////////// -$module->version = 2007091900; +$module->version = 2007091902; $module->requires = 2007101000; // Requires this Moodle version $module->cron = 60; -- 2.39.5