From: moodler Date: Wed, 6 Nov 2002 08:12:06 +0000 (+0000) Subject: Added new type of assignment - offline. X-Git-Url: http://git.mjollnir.org/gw?a=commitdiff_plain;h=b7b4287462be19d6818e740cf23f326afff523dc;p=moodle.git Added new type of assignment - offline. This type of assignment doesn't require anything of the student online, it just tells them about an assignment and the teacher can provide feedback and grades. Useful for offline activities, and also for the teacher to add manual columns to the grades page --- diff --git a/mod/assignment/db/mysql.php b/mod/assignment/db/mysql.php index 873d04fb88..de0d5b3430 100644 --- a/mod/assignment/db/mysql.php +++ b/mod/assignment/db/mysql.php @@ -82,6 +82,9 @@ function assignment_upgrade($oldversion) { if ($oldversion < 2002101600) { execute_sql(" ALTER TABLE `assignment` ADD `format` TINYINT(2) UNSIGNED DEFAULT '0' NOT NULL AFTER `description` "); } + if ($oldversion < 2002110302) { + execute_sql(" UPDATE `assignment` SET `type` = '1'"); + } return true; } diff --git a/mod/assignment/lib.php b/mod/assignment/lib.php index 14f798bfac..1aaafecdc8 100644 --- a/mod/assignment/lib.php +++ b/mod/assignment/lib.php @@ -2,6 +2,11 @@ include_once("$CFG->dirroot/files/mimetypes.php"); +define("OFFLINE", "0"); +define("UPLOADSINGLE", "1"); + +$ASSIGNMENT_TYPE = array (OFFLINE => get_string("typeoffline", "assignment"), + UPLOADSINGLE => get_string("typeuploadsingle", "assignment") ); function assignment_add_instance($assignment) { @@ -267,14 +272,25 @@ function assignment_print_difference($time) { function assignment_print_submission($assignment, $user, $submission, $teachers, $grades) { global $THEME; - echo "\n"; + switch ($assignment->type) { + case OFFLINE: + break; + case UPLOADSINGLE: + break; + } + + echo "\n
"; echo "\n"; - echo "\n"; - echo ""; - echo "\n"; - - if ($submission) { - echo "\n"; - echo ""; } + + echo "\n"; + echo ""; + echo "
body\" WIDTH=35 VALIGN=TOP>"; + if ($assignment->type == OFFLINE) { + echo "\nbody\" WIDTH=35 VALIGN=TOP>"; + } else { + echo "\nbody\" WIDTH=35 VALIGN=TOP>"; + } print_user_picture($user->id, $assignment->course, $user->picture); echo "cellheading\">$user->firstname $user->lastname"; - if ($submission) { + echo "cellheading\">$user->firstname $user->lastname"; + if ($submission->timemodified) { echo "  ".get_string("lastmodified").": "; echo userdate($submission->timemodified); echo assignment_print_difference($assignment->timedue - $submission->timemodified); @@ -282,31 +298,37 @@ function assignment_print_submission($assignment, $user, $submission, $teachers, } echo "
cellcontent\">"; - if ($submission) { - assignment_print_user_files($assignment, $user); - } else { - print_string("notsubmittedyet", "assignment"); - } - echo "
"; - if (!$submission->teacher) { - $submission->teacher = $USER->id; - } - print_user_picture($submission->teacher, $assignment->course, $teachers[$submission->teacher]->picture); - echo "cellheading\">Teacher Feedback:"; - choose_from_menu($grades, "g$submission->id", $submission->grade, get_string("grade")."..."); - if ($submission->timemarked) { - echo "  ".userdate($submission->timemarked).""; + if ($assignment->type != OFFLINE) { + echo "\n
cellcontent\">"; + if ($submission->numfiles) { + assignment_print_user_files($assignment, $user); + } else { + print_string("notsubmittedyet", "assignment"); } - echo "

"; echo "
"; + if (!$submission->teacher) { + $submission->teacher = $USER->id; + } + print_user_picture($submission->teacher, $assignment->course, $teachers[$submission->teacher]->picture); + if ($submission->timemodified > $submission->timemarked) { + echo "cellheading2\">"; + } else { + echo "cellheading\">"; + } + echo "Teacher Feedback:"; + choose_from_menu($grades, "g$submission->id", $submission->grade, get_string("grade")."..."); + if ($submission->timemarked) { + echo "  ".userdate($submission->timemarked).""; + } + echo "

"; + echo "

\n"; } diff --git a/mod/assignment/mod.html b/mod/assignment/mod.html index 5656e9e237..368ecd49d4 100644 --- a/mod/assignment/mod.html +++ b/mod/assignment/mod.html @@ -27,7 +27,7 @@ } else { helpbutton("text", get_string("helptext")); } - echo "

"; + echo "

"; print_string("formattexttype"); echo ": "; if (!$form->format) { @@ -42,8 +42,12 @@

:

- - + dirroot/mod/assignment/lib.php"); + asort($ASSIGNMENT_TYPE); + choose_from_menu($ASSIGNMENT_TYPE, "type", $form->type, ""); + helpbutton("assignmenttype", get_string("assignmenttype", "assignment"), "assignment"); + ?> @@ -53,7 +57,7 @@ for ($i=100; $i>=0; $i--) { $grades[$i] = $i; } - choose_from_menu($grades, "grade", "$form->grade"); + choose_from_menu($grades, "grade", "$form->grade", ""); ?> diff --git a/mod/assignment/submissions.php b/mod/assignment/submissions.php index 7da71fa52d..987fac54b4 100644 --- a/mod/assignment/submissions.php +++ b/mod/assignment/submissions.php @@ -35,7 +35,16 @@ id\">$assignment->name -> $strsubmissions", "", "", true); - // Some easy ways to reference submissions +/// Get all teachers and students + $teachers = get_course_teachers($course->id); + + if (!$users = get_course_students($course->id)) { + print_heading(get_string("nostudentsyet")); + print_footer($course); + exit; + } + +/// Make some easy ways to reference submissions if ($submissions = assignment_get_all_submissions($assignment)) { foreach ($submissions as $submission) { $submissionbyuser[$submission->user] = $submission; @@ -43,7 +52,30 @@ } } - if (match_referer() && isset($HTTP_POST_VARS)) { // Feedback submitted +/// Get all existing submissions and check for missing ones + foreach($users as $user) { + if (!isset($submissionbyuser[$user->id])) { // Need to create empty entry + $newsubmission->assignment = $assignment->id; + $newsubmission->user = $user->id; + $newsubmission->timecreated = time(); + if (!insert_record("assignment_submissions", $newsubmission)) { + error("Could not insert a new empty submission"); + } + } + } + + if (isset($newsubmission)) { // Get them all out again to be sure + if ($submissions = assignment_get_all_submissions($assignment)) { + foreach ($submissions as $submission) { + $submissionbyuser[$submission->user] = $submission; + $submissionbyid[$submission->id] = $submission; + } + } + } + + +/// If data is being submitted, then process it + if (match_referer() && isset($HTTP_POST_VARS)) { $feedback = array(); @@ -89,32 +121,18 @@ $grades[$i] = $i; } - $teachers = get_course_teachers($course->id); - if (! $users = get_course_students($course->id)) { - print_heading(get_string("nostudentsyet")); - - } else { - echo "
\n"; - - if ($usersdone = assignment_get_users_done($assignment)) { - foreach ($usersdone as $user) { - $submission = $submissionbyuser[$user->id]; - assignment_print_submission($assignment, $user, $submission, $teachers, $grades); - } - } + echo "\n"; - $submission = NULL; - foreach ($users as $user) { - if (! $usersdone[$user->id]) { - assignment_print_submission($assignment, $user, $submission, $teachers, $grades); - } - } - echo "
"; - echo "id\">"; - echo ""; - echo "
"; - echo "
"; + foreach ($users as $user) { + $submission = $submissionbyuser[$user->id]; + assignment_print_submission($assignment, $user, $submission, $teachers, $grades); } + + echo "
"; + echo "id\">"; + echo ""; + echo "
"; + echo ""; print_footer($course); diff --git a/mod/assignment/version.php b/mod/assignment/version.php index 67f92314af..60cd7f3fd5 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 = 2002101606; +$module->version = 2002110602; $module->cron = 60; ?> diff --git a/mod/assignment/view.php b/mod/assignment/view.php index 85a74a84bc..f6d5733ea0 100644 --- a/mod/assignment/view.php +++ b/mod/assignment/view.php @@ -47,13 +47,16 @@ "", "", true, update_module_button($cm->id, $course->id, $strassignment)); if (isteacher($course->id)) { - if ($submissions = assignment_get_all_submissions($assignment)) { - $count = count($submissions); + if ($assignment->type == OFFLINE) { + echo "

id\">". + get_string("viewfeedback", "assignment")."

"; } else { - $count = 0; + $count = count_records_sql("SELECT * FROM assignment_submissions + WHERE assignment = '$assignment->id' + AND timemodified > 0"); + echo "

id\">". + get_string("viewsubmissions", "assignment", $count)."

"; } - echo "

id\">". - get_string("viewsubmissions", "assignment", $count)."

"; } $strdifference = format_time($assignment->timedue - time()); @@ -74,28 +77,36 @@ echo "
"; if (!isteacher($course->id) and !isguest()) { - if ($submission = assignment_get_submission($assignment, $USER)) { - print_simple_box_start("center"); - echo "
"; - print_heading(get_string("yoursubmission","assignment").":", "CENTER"); - echo "

".get_string("lastmodified").": ".userdate($submission->timemodified)."

"; - assignment_print_user_files($assignment, $USER); - print_simple_box_end(); - } else { - print_heading(get_string("notsubmittedyet","assignment")); - } - - echo "
"; - - if ($submission->grade) { - print_heading(get_string("submissionfeedback", "assignment").":", "CENTER"); - assignment_print_feedback($course, $submission); + $submission = assignment_get_submission($assignment, $USER); + + if ($assignment->type == OFFLINE) { + if ($submission->timemarked) { + assignment_print_feedback($course, $submission); + } } else { - if ($submission) { - echo "

".get_string("overwritewarning", "assignment")."

"; + if ($submission and $submission->timemodified) { + print_simple_box_start("center"); + echo "
"; + print_heading(get_string("yoursubmission","assignment").":", "CENTER"); + echo "

".get_string("lastmodified").": ".userdate($submission->timemodified)."

"; + assignment_print_user_files($assignment, $USER); + print_simple_box_end(); + } else { + print_heading(get_string("notsubmittedyet","assignment")); + } + + echo "
"; + + if ($submission and $submission->timemarked) { + print_heading(get_string("submissionfeedback", "assignment").":", "CENTER"); + assignment_print_feedback($course, $submission); + } else { + if ($submission and $submission->timemodified) { + echo "

".get_string("overwritewarning", "assignment")."

"; + } + print_heading(get_string("submitassignment", "assignment").":", "CENTER"); + assignment_print_upload_form($assignment); } - print_heading(get_string("submitassignment", "assignment").":", "CENTER"); - assignment_print_upload_form($assignment); } }