diff --git a/mod/workshop/db/mysql.php b/mod/workshop/db/mysql.php index 8cf9eeeb4cd..6fafac0905b 100644 --- a/mod/workshop/db/mysql.php +++ b/mod/workshop/db/mysql.php @@ -102,6 +102,23 @@ function workshop_upgrade($oldversion) { execute_sql("ALTER TABLE `{$CFG->prefix}workshop_assessments` ADD INDEX (`userid`)"); } + if ($oldversion < 2004092700) { + table_column("workshop", "", "wtype", "INTEGER", "4", "UNSIGNED", "0", "NOT NULL", "description"); + table_column("workshop", "", "usepassword", "INTEGER", "4", "UNSIGNED", "0", "NOT NULL"); + table_column("workshop", "", "password", "VARCHAR", "32", "", "", "NOT NULL"); + table_column("workshop_submissions", "", "late", "INTEGER", "4", "UNSIGNED", "0", "NOT NULL"); + + // update wkey value + if ($workshops = get_records("workshop")) { + foreach ($workshops as $workshop) { + $wtype = 0; // 3 phases, no grading grades + if ($workshop->includeself or $workshop->ntassessments) $wtype = 1; // 3 phases with grading grades + if ($workshop->nsassessments) $wtype = 2; // 5 phases with grading grades + set_field("workshop", "wtype", $wtype, "id", $workshop->id); + } + } + } + return true; } diff --git a/mod/workshop/db/mysql.sql b/mod/workshop/db/mysql.sql index bb2fe4d3850..23be149484a 100644 --- a/mod/workshop/db/mysql.sql +++ b/mod/workshop/db/mysql.sql @@ -7,6 +7,7 @@ CREATE TABLE `prefix_workshop` ( `course` int(10) unsigned NOT NULL default '0', `name` varchar(255) NOT NULL default '', `description` text NOT NULL, + `wtype` tinyint(3) unsigned NOT NULL default '0', `nelements` tinyint(3) unsigned NOT NULL default '1', `nattachments` tinyint(3) unsigned NOT NULL default '0', `phase` tinyint(2) unsigned NOT NULL default '0', @@ -28,6 +29,8 @@ CREATE TABLE `prefix_workshop` ( `timemodified` int(10) unsigned NOT NULL default '0', `teacherweight` tinyint(3) unsigned NOT NULL default '1', `showleaguetable` tinyint(3) unsigned NOT NULL default '0', + `usepassword` tinyint(3) unsigned NOT NULL default '0', + `password` varchar(32) NOT NULL default '', PRIMARY KEY (`id`) ) COMMENT='Defines workshop'; # -------------------------------------------------------- @@ -50,6 +53,7 @@ CREATE TABLE `prefix_workshop_submissions` ( `reliabilitygrade` int(3) unsigned NOT NULL default '0', `gradinggrade` int(3) unsigned NOT NULL default '0', `finalgrade` int(3) unsigned NOT NULL default '0', + `late` int(3) unsigned NOT NULL default '0', PRIMARY KEY (`id`), INDEX `userid` (`userid`) ) COMMENT='Info about submitted work from teacher and students'; diff --git a/mod/workshop/index.php b/mod/workshop/index.php index d6bc2b311b9..99d2a72dd74 100644 --- a/mod/workshop/index.php +++ b/mod/workshop/index.php @@ -80,8 +80,13 @@ $link .= " ($submission->title)"; // show students the title of their submission(s) $gradinggrade = workshop_gradinggrade($workshop, $USER); $grade = workshop_submission_grade($workshop, $submission); - $info = get_string("gradeforassessments", "workshop").": $gradinggrade/$workshop->gradinggrade; ". - get_string("gradeforsubmission", "workshop").": $grade/$workshop->grade"; + if ($workshop->wtype) { + $info = get_string("gradeforassessments", "workshop"). + ": $gradinggrade/$workshop->gradinggrade; ".get_string("gradeforsubmission", "workshop"). + ": $grade/$workshop->grade"; + } else { // simple assignemnt, don't show grading grade + $info = get_string("gradeforsubmission", "workshop").": $grade/$workshop->grade"; + } } if ($course->format == "weeks" or $course->format == "topics") { $table->data[] = array ($workshop->section, $link, $info, $submitted, $due); diff --git a/mod/workshop/lib.php b/mod/workshop/lib.php index e3acd03be06..8f82f5086f6 100644 --- a/mod/workshop/lib.php +++ b/mod/workshop/lib.php @@ -619,11 +619,19 @@ global $CFG; if ($workshop->phase > 1) { if ($students = get_course_students($workshop->course)) { foreach ($students as $student) { - $gradinggrade = workshop_gradinggrade($workshop, $student); + if ($workshop->wtype) { + $gradinggrade = workshop_gradinggrade($workshop, $student); + } else { // ignore grading grades for simple assignments + $gradinggrade = 0; + } $bestgrade = 0; if ($submissions = workshop_get_user_submissions($workshop, $student)) { foreach ($submissions as $submission) { - $grade = workshop_submission_grade($workshop, $submission); + if (!$submission->late) { + $grade = workshop_submission_grade($workshop, $submission); + } else { + $grade = 0.01; + } if ($grade > $bestgrade) { $bestgrade = $grade; } @@ -633,7 +641,11 @@ global $CFG; } } } - $return->maxgrade = $workshop->grade + $workshop->gradinggrade; + if ($workshop->wtype) { + $return->maxgrade = $workshop->grade + $workshop->gradinggrade; + } else { // ignore grading grades for simple assignemnts + $return->maxgrade = $workshop->grade; + } } return $return; } @@ -916,6 +928,19 @@ function workshop_update_instance($workshop) { $workshop->deadlinemonth, $workshop->deadlineday, $workshop->deadlinehour, $workshop->deadlineminute); + // set the workshop's type + $wtype = 0; // 3 phases, no grading grades + if ($workshop->includeself or $workshop->ntassessments) $wtype = 1; // 3 phases with grading grades + if ($workshop->nsassessments) $wtype = 2; // 5 phases with grading grades + $workshop->wtype = $wtype; + + // encode password if necessary + if (!empty($workshop->password)) { + $workshop->password = md5($workshop->password); + } else { + unset($workshop->password); + } + $workshop->id = $workshop->instance; if ($returnid = update_record("workshop", $workshop)) { diff --git a/mod/workshop/locallib.php b/mod/workshop/locallib.php index c1b6586f0ee..28f664456c4 100644 --- a/mod/workshop/locallib.php +++ b/mod/workshop/locallib.php @@ -1352,16 +1352,18 @@ function workshop_list_submissions_for_admin($workshop, $order) { switch ($order) { case "title" : $table->head = array("id&order=name\">". - get_string("submittedby", "workshop")."", get_string("title", "workshop"), get_string("action", "workshop")); + get_string("submittedby", "workshop")."", get_string("title", "workshop"), + get_string("submitted", "workshop"), get_string("action", "workshop")); break; case "name" : $table->head = array (get_string("submittedby", "workshop"), "id&order=title\">". - get_string("title", "workshop")."", get_string("action", "workshop")); + get_string("title", "workshop")."", get_string("submitted", "workshop"), + get_string("action", "workshop")); break; } - $table->align = array ("left", "left", "left"); - $table->size = array ("*", "*", "*"); + $table->align = array ("left", "left", "left", "left"); + $table->size = array ("*", "*", "*", "*"); $table->cellpadding = 2; $table->cellspacing = 0; @@ -1377,6 +1379,10 @@ function workshop_list_submissions_for_admin($workshop, $order) { continue; // skip this user } } + $datesubmitted = userdate($submission->timecreated); + if ($submission->late) { + $datesubmitted = "".$datesubmitted.""; + } $action = "id&sid=$submission->id\">". get_string("amendtitle", "workshop").""; // has teacher already assessed this submission @@ -1400,12 +1406,17 @@ function workshop_list_submissions_for_admin($workshop, $order) { $action .= " | id&sid=$submission->id\">". get_string("listassessments", "workshop")." ($nassessments)"; } + if ($submission->late) { + $action .= " | id&sid=$submission->id\">". + get_string("clearlateflag", "workshop").""; + } $action .= " | id&sid=$submission->id\">". get_string("delete", "workshop").""; $table->data[] = array("$user->firstname $user->lastname", $submission->title. " (".get_string("grade").": ".workshop_submission_grade($workshop, $submission)." ". workshop_print_submission_assessments($workshop, $submission, "teacher"). - " ".workshop_print_submission_assessments($workshop, $submission, "student").")", $action); + " ".workshop_print_submission_assessments($workshop, $submission, "student").")", $datesubmitted, + $action); } print_heading(get_string("studentsubmissions", "workshop", $course->student), "center"); print_table($table); @@ -1754,10 +1765,14 @@ function workshop_list_user_submissions($workshop, $user) { else { $action = ''; } + $datesubmitted = userdate($submission->timecreated); + if ($submission->late) { + $datesubmitted = "".$datesubmitted.""; + } $n = count_records_select("workshop_assessments", "submissionid = $submission->id AND timecreated < ($timenow - $CFG->maxeditingtime)"); $table->data[] = array(workshop_print_submission_title($workshop, $submission), $action, - userdate($submission->timecreated), $n); + $datesubmitted, $n); } print_table($table); } @@ -2599,9 +2614,12 @@ function workshop_print_submission_assessments($workshop, $submission, $type) { $str .= "<".number_format($assessment->grade, 0)." (0)> "; } } else { - $str .= "[".number_format($assessment->grade, 0)." ((". - number_format($assessment->gradinggrade * $workshop->gradinggrade / 100, 0). - "))] "; + $str .= "[".number_format($assessment->grade, 0); + if ($workshop->wtype) { // print null grade if there are student assessments + $str .= " ((".number_format($assessment->gradinggrade * $workshop->gradinggrade / 100, + 0)."))"; + } + $str .= "] "; } } } diff --git a/mod/workshop/mod.html b/mod/workshop/mod.html index 75ce0b2343f..30d176ec9f6 100644 --- a/mod/workshop/mod.html +++ b/mod/workshop/mod.html @@ -310,6 +310,25 @@ +
:
:
:
| cellheading2\">".$course->student." | "; echo "cellheading2\">".get_string("submission", "workshop")." | "; - echo "cellheading2\" align=\"center\">".get_string("assessmentsdone", "workshop"). + if ($workshop->wtype) { + echo " | cellheading2\" align=\"center\">".get_string("assessmentsdone", "workshop"). " | "; - echo "cellheading2\" align=\"center\">".get_string("gradeforassessments", + echo " | cellheading2\" align=\"center\">".get_string("gradeforassessments", "workshop")." | "; + } echo "cellheading2\" align=\"center\">".get_string("assessmentsby", "workshop", $course->teachers)." | "; - echo "cellheading2\" align=\"center\">".get_string("assessmentsby", "workshop", + if ($workshop->wtype) { + echo " | cellheading2\" align=\"center\">".get_string("assessmentsby", "workshop", $course->students)." | "; + } echo "cellheading2\" align=\"center\">".get_string("gradeforsubmission", "workshop")." | "; echo "cellheading2\" align=\"center\">".get_string("overallgrade", "workshop").
@@ -236,12 +282,16 @@
$grade = workshop_submission_grade($workshop, $submission);
echo "| $user->firstname $user->lastname | ";
echo "".workshop_print_submission_title($workshop, $submission)." | \n";
- echo "".workshop_print_user_assessments($workshop, $user)." | ";
- echo "$gradinggrade | ";
+ if ($workshop->wtype) {
+ echo "".workshop_print_user_assessments($workshop, $user)." | ";
+ echo "$gradinggrade | ";
+ }
echo "".workshop_print_submission_assessments($workshop, $submission,
"teacher")." | ";
- echo "".workshop_print_submission_assessments($workshop, $submission,
+ if ($workshop->wtype) {
+ echo " | ".workshop_print_submission_assessments($workshop, $submission,
"student")." | ";
+ }
echo "$grade | ";
echo "".number_format($gradinggrade + $grade, 1)." |
|