From ab98918f096782688ef0c1345fccecd04f8e8942 Mon Sep 17 00:00:00 2001 From: gustav_delius Date: Sun, 5 Dec 2004 11:49:18 +0000 Subject: [PATCH] Workshop module now works with dates rather than phases, see http://moodle.org/mod/forum/discuss.php?d=15541. --- lang/en/workshop.php | 28 +- mod/workshop/assessments.php | 2314 ++++++++++++++++----------------- mod/workshop/backuplib.php | 5 +- mod/workshop/db/mysql.php | 116 +- mod/workshop/db/mysql.sql | 6 +- mod/workshop/db/postgres7.php | 98 +- mod/workshop/db/postgres7.sql | 5 +- mod/workshop/index.php | 22 +- mod/workshop/lib.php | 175 ++- mod/workshop/locallib.php | 147 +-- mod/workshop/mod.html | 106 +- mod/workshop/restorelib.php | 5 +- mod/workshop/submissions.php | 239 ++-- mod/workshop/upload.php | 4 +- mod/workshop/version.php | 4 +- mod/workshop/view.php | 489 +++---- 16 files changed, 1879 insertions(+), 1884 deletions(-) diff --git a/lang/en/workshop.php b/lang/en/workshop.php index 585d24c670..95338c28c5 100644 --- a/lang/en/workshop.php +++ b/lang/en/workshop.php @@ -22,6 +22,8 @@ $string['assessedon'] = 'Assessed on $a'; $string['assessment'] = 'Assessment'; $string['assessmentby'] = 'Assessment by $a'; $string['assessmentdropped'] = 'Assessment Dropped'; +$string['assessmentend'] = 'End of assessments'; +$string['assessmentendevent'] = 'End of assessments for $a'; $string['assessmentgrade'] = 'Assessment Grade: $a'; $string['assessmentnotyetagreed'] = 'Assessment not yet agreed'; $string['assessmentnotyetgraded'] = 'Assessment not yet graded'; @@ -33,6 +35,8 @@ $string['assessmentsby'] = 'Assessments by $a'; $string['assessmentsdone'] = 'Assessments Done'; $string['assessmentsexcluded'] = 'Number of Assessments excluded for this $a'; $string['assessmentsmustbeagreed'] = 'Assessments must be agreed'; +$string['assessmentstart'] = 'Start of assessments'; +$string['assessmentstartevent'] = 'Start of assessments for $a'; $string['assessmentwasagreedon'] = 'Assessment was agreed on $a'; $string['assessor'] = 'Assessor'; $string['assessthissubmission'] = 'Assess this submission'; @@ -54,8 +58,9 @@ $string['confirmdeletionofthisitem'] = 'Confirm Deletion of this $a'; $string['correct'] = 'Correct'; $string['count'] = 'Count'; $string['criterion'] = 'Criterion'; -$string['deadline'] = 'Deadline'; -$string['deadlineis'] = 'The Deadline is $a'; +$string['currentphase'] = 'Current phase'; +$string['deadline'] = 'Deadline for submission'; +$string['deadlineis'] = 'The Deadline for submission is $a'; $string['delete'] = 'Delete'; $string['deleting'] = 'Deleting'; $string['description'] = 'Description'; @@ -102,6 +107,8 @@ $string['hidegradesbeforeagreement'] = 'Hide Grades before Agreement'; $string['hidenamesfromstudents'] = 'Hide Names from $a'; $string['includeteachersgrade'] = 'Include Teacher\'s Grade'; $string['incorrect'] = 'Incorrect'; +$string['info'] = 'Info'; +$string['invaliddates'] = 'The dates you have entered are not possible.
Use the browser\'s Back button to return to the form and correct the dates.'; $string['iteration'] = 'Iteration $a completed'; $string['lax'] = "Lax"; $string['leaguetable'] = 'League Table of Submitted Work'; @@ -137,14 +144,15 @@ $string['noassessmentsdone'] = 'No Assessments Done'; $string['noattachments'] = 'No Attachments'; $string['nosubmission'] = 'No Submission'; $string['nosubmissionsavailableforassessment'] = 'No Submissions available for assessment'; +$string['notallowed'] = 'You are not allowed on this page at this time'; $string['notavailable'] = 'Not Available'; $string['notenoughexamplessubmitted'] = 'Not enough Examples submitted.'; $string['noteonassessmentelements'] = 'Note that grading is broken down into a number of \'Assessment Elements\'.
- This makes the grading easier and more consistent. As teacher you must add these
- Elements before making the assignment available to students. This is done by
- clicking on the assignment in the course, if no elements are present you will be asked
- to add them. You can change the number of elements using the Edit Assignment screen,
- the elements themselves can be amended from the "Managing Assessment" screen. '; + This makes the grading easier and more consistent. As teacher you must add these
+ Elements before making the assignment available to students. This is done by
+ clicking on the assignment in the course, if no elements are present you will be asked
+ to add them. You can change the number of elements using the Edit Assignment screen,
+ the elements themselves can be amended from the "Managing Assessment" screen. '; $string['noteonstudentassessments'] = '{Grade from Student / Grading Grade for Assessment}'; $string['notgraded'] = 'Not Graded'; $string['notitle'] = 'No Title'; @@ -173,6 +181,8 @@ $string['ownwork'] = 'Own Work'; $string['passwordprotectedworkshop'] = "Password Protected Workshop"; $string['percentageofassessments'] = 'Percentage of Assessments to Drop'; $string['phase'] = 'Phase'; +$string['phase0'] = 'Inactive'; +$string['phase0short'] = 'Inactive'; $string['phase1'] = 'Set Up Assignment'; $string['phase1short'] = 'Set Up'; $string['phase2'] = 'Allow $a Submissions'; @@ -228,8 +238,12 @@ $string['studentgrades'] = '$a Grades'; $string['studentsubmissions'] = '$a Submissions'; $string['studentsubmissionsforassessment'] = '$a Student Submissions for Assessment'; $string['submission'] = 'Submission'; +$string['submissionend'] = 'End of submissions'; +$string['submissionendevent'] = 'End of submissions for $a'; $string['submissions'] = 'Submissions'; $string['submissionsnolongerallowed'] = 'Submissions no longer allowed'; +$string['submissionstart'] = 'Start of submissions'; +$string['submissionstartevent'] = 'Start of submissions for $a'; $string['submissionsused'] = '$a Submissions used in this table'; $string['submitassignment'] = 'Submit Assignment'; $string['submitassignmentusingform'] = 'Submit your Assignment using this Form'; diff --git a/mod/workshop/assessments.php b/mod/workshop/assessments.php index 2f6391a22d..4a015cd9af 100644 --- a/mod/workshop/assessments.php +++ b/mod/workshop/assessments.php @@ -3,30 +3,30 @@ /************************************************* ACTIONS handled are: - addcomment - addstockcomment + addcomment + addstockcomment adminconfirmdelete - admindelete - adminlist - agreeassessment - assesssubmission - displaygradingform - editcomment - editelements (teachers only) + admindelete + adminlist + agreeassessment + assesssubmission + displaygradingform + editcomment + editelements (teachers only) gradeallassessments (teachers only) - gradeassessment (teachers only) - insertcomment - insertelements (for teachers) - listungradedstudentsubmissions (for teachers) - listungradedteachersubmissions (for teachers) - listteachersubmissions + gradeassessment (teachers only) + insertcomment + insertelements (for teachers) + listungradedstudentsubmissions (for teachers) + listungradedteachersubmissions (for teachers) + listteachersubmissions regradestudentassessments (for teachers) - updateassessment - updatecomment - updategrading - userconfirmdelete - userdelete - viewassessment + updateassessment + updatecomment + updategrading + userconfirmdelete + userdelete + viewassessment ************************************************/ @@ -34,7 +34,7 @@ require("lib.php"); require("locallib.php"); - require_variable($id); // Course Module ID + require_variable($id); // Course Module ID // get some useful stuff... if (! $cm = get_record("course_modules", "id", $id)) { @@ -64,47 +64,47 @@ id\">$workshop->name -> $strassessments", "", "", true); - //...get the action - require_variable($action); - - - /*************** add comment to assessment (by author, assessor or teacher) ***************************/ - if ($action == 'addcomment') { - - print_heading_with_help(get_string("addacomment", "workshop"), "addingacomment", "workshop"); - // get assessment record - if (!$assessmentid = $_REQUEST['aid']) { // comes from link or hidden form variable - error("Assessment id not given"); - } - $assessment = get_record("workshop_assessments", "id", $assessmentid); - if (!$submission = get_record("workshop_submissions", "id", $assessment->submissionid)) { - error("Submission not found"); - } - ?> -
- - - -
- - \n"; - - echo " \n"; - - echo "
". get_string("comment", "workshop").":\n"; - - echo " \n"; - - echo "
\n"; - echo "\n"; - echo "
\n"; - echo "
".get_string("assessment", "workshop"). "
\n"; - workshop_print_assessment($workshop, $assessment); - } + //...get the action + require_variable($action); + + + /*************** add comment to assessment (by author, assessor or teacher) ***************************/ + if ($action == 'addcomment') { + + print_heading_with_help(get_string("addacomment", "workshop"), "addingacomment", "workshop"); + // get assessment record + if (!$assessmentid = $_REQUEST['aid']) { // comes from link or hidden form variable + error("Assessment id not given"); + } + $assessment = get_record("workshop_assessments", "id", $assessmentid); + if (!$submission = get_record("workshop_submissions", "id", $assessment->submissionid)) { + error("Submission not found"); + } + ?> +
+ + + +
+ + \n"; + + echo " \n"; + + echo "
". get_string("comment", "workshop").":\n"; + + echo " \n"; + + echo "
\n"; + echo "\n"; + echo "
\n"; + echo "
".get_string("assessment", "workshop"). "
\n"; + workshop_print_assessment($workshop, $assessment); + } @@ -115,21 +115,21 @@ require_variable($elementno); if (!isteacher($course->id)) { - error("Only teachers can look at this page"); - } + error("Only teachers can look at this page"); + } if (!$assessment = get_record("workshop_assessments", "id", $aid)) { error("workshop assessment is misconfigured"); } - $form = data_submitted("nomatch"); // probably always come from the same page, change this statement + $form = data_submitted("nomatch"); // probably always come from the same page, change this statement // store the comment in the stock comments table if ($elementno == 99) { // it's the general comment $form->feedback_99 = $form->generalcomment; } - $comment->workshopid = $workshop->id; - $comment->elementno = $elementno; - $comment->comments = $form->{"feedback_$elementno"}; + $comment->workshopid = $workshop->id; + $comment->elementno = $elementno; + $comment->comments = $form->{"feedback_$elementno"}; if (!(trim($comment->comments))) { // no comment given - just redisplay assessment form workshop_print_assessment($workshop, $assessment, true, true, $form->returnto); @@ -137,9 +137,9 @@ exit(); } - if (!$element->id = insert_record("workshop_stockcomments", $comment)) { - error("Could not insert comment into comment bank"); - } + if (!$element->id = insert_record("workshop_stockcomments", $comment)) { + error("Could not insert comment into comment bank"); + } // now upate the assessment (just the elements, the assessment itself is not updated) @@ -158,148 +158,148 @@ $timenow = time(); // don't fiddle about, delete all the old and add the new! - delete_records("workshop_grades", "assessmentid", $assessment->id); - - - //determine what kind of grading we have - switch ($workshop->gradingstrategy) { - case 0: // no grading - // Insert all the elements that contain something - for ($i = 0; $i < $workshop->nelements; $i++) { - unset($element); - $element->workshopid = $workshop->id; - $element->assessmentid = $assessment->id; - $element->elementno = $i; - $element->feedback = $form->{"feedback_$i"}; - if (!$element->id = insert_record("workshop_grades", $element)) { - error("Could not insert workshop grade!"); - } - } - $grade = 0; // set to satisfy save to db - break; - - case 1: // accumulative grading - // Insert all the elements that contain something - foreach ($form->grade as $key => $thegrade) { - unset($element); - $element->workshopid = $workshop->id; - $element->assessmentid = $assessment->id; - $element->elementno = $key; - $element->feedback = $form->{"feedback_$key"}; - $element->grade = $thegrade; - if (!$element->id = insert_record("workshop_grades", $element)) { - error("Could not insert workshop grade!"); - } - } - // now work out the grade... - $rawgrade=0; - $totalweight=0; - foreach ($form->grade as $key => $grade) { - $maxscore = $elements[$key]->maxscore; - $weight = $WORKSHOP_EWEIGHTS[$elements[$key]->weight]; - if ($weight > 0) { - $totalweight += $weight; - } - $rawgrade += ($grade / $maxscore) * $weight; - // echo "\$key, \$maxscore, \$weight, \$totalweight, \$grade, \$rawgrade : $key, $maxscore, $weight, $totalweight, $grade, $rawgrade
"; - } - $grade = 100.0 * ($rawgrade / $totalweight); - break; - - case 2: // error banded graded - // Insert all the elements that contain something - $error = 0.0; - for ($i =0; $i < $workshop->nelements; $i++) { - unset($element); - $element->workshopid = $workshop->id; - $element->assessmentid = $assessment->id; - $element->elementno = $i; - $element->feedback = $form->{"feedback_$i"}; - $element->grade = $form->grade[$i]; - if (!$element->id = insert_record("workshop_grades", $element)) { - error("Could not insert workshop grade!"); - } - if (empty($form->grade[$i])){ - $error += $WORKSHOP_EWEIGHTS[$elements[$i]->weight]; - } - } - // now save the adjustment - unset($element); - $i = $workshop->nelements; - $element->workshopid = $workshop->id; - $element->assessmentid = $assessment->id; - $element->elementno = $i; - $element->grade = $form->grade[$i]; - if (!$element->id = insert_record("workshop_grades", $element)) { - error("Could not insert workshop grade!"); - } - $grade = ($elements[intval($error + 0.5)]->maxscore + $form->grade[$i]) * 100 / $workshop->grade; + delete_records("workshop_grades", "assessmentid", $assessment->id); + + + //determine what kind of grading we have + switch ($workshop->gradingstrategy) { + case 0: // no grading + // Insert all the elements that contain something + for ($i = 0; $i < $workshop->nelements; $i++) { + unset($element); + $element->workshopid = $workshop->id; + $element->assessmentid = $assessment->id; + $element->elementno = $i; + $element->feedback = $form->{"feedback_$i"}; + if (!$element->id = insert_record("workshop_grades", $element)) { + error("Could not insert workshop grade!"); + } + } + $grade = 0; // set to satisfy save to db + break; + + case 1: // accumulative grading + // Insert all the elements that contain something + foreach ($form->grade as $key => $thegrade) { + unset($element); + $element->workshopid = $workshop->id; + $element->assessmentid = $assessment->id; + $element->elementno = $key; + $element->feedback = $form->{"feedback_$key"}; + $element->grade = $thegrade; + if (!$element->id = insert_record("workshop_grades", $element)) { + error("Could not insert workshop grade!"); + } + } + // now work out the grade... + $rawgrade=0; + $totalweight=0; + foreach ($form->grade as $key => $grade) { + $maxscore = $elements[$key]->maxscore; + $weight = $WORKSHOP_EWEIGHTS[$elements[$key]->weight]; + if ($weight > 0) { + $totalweight += $weight; + } + $rawgrade += ($grade / $maxscore) * $weight; + // echo "\$key, \$maxscore, \$weight, \$totalweight, \$grade, \$rawgrade : $key, $maxscore, $weight, $totalweight, $grade, $rawgrade
"; + } + $grade = 100.0 * ($rawgrade / $totalweight); + break; + + case 2: // error banded graded + // Insert all the elements that contain something + $error = 0.0; + for ($i =0; $i < $workshop->nelements; $i++) { + unset($element); + $element->workshopid = $workshop->id; + $element->assessmentid = $assessment->id; + $element->elementno = $i; + $element->feedback = $form->{"feedback_$i"}; + $element->grade = $form->grade[$i]; + if (!$element->id = insert_record("workshop_grades", $element)) { + error("Could not insert workshop grade!"); + } + if (empty($form->grade[$i])){ + $error += $WORKSHOP_EWEIGHTS[$elements[$i]->weight]; + } + } + // now save the adjustment + unset($element); + $i = $workshop->nelements; + $element->workshopid = $workshop->id; + $element->assessmentid = $assessment->id; + $element->elementno = $i; + $element->grade = $form->grade[$i]; + if (!$element->id = insert_record("workshop_grades", $element)) { + error("Could not insert workshop grade!"); + } + $grade = ($elements[intval($error + 0.5)]->maxscore + $form->grade[$i]) * 100 / $workshop->grade; // do sanity check if ($grade < 0) { $grade = 0; } elseif ($grade > 100) { $grade = 100; } - echo "".get_string("weightederrorcount", "workshop", intval($error + 0.5))."\n"; - break; - - case 3: // criteria grading - // save in the selected criteria value in element zero, - unset($element); - $element->workshopid = $workshop->id; - $element->assessmentid = $assessment->id; - $element->elementno = 0; - $element->grade = $form->grade[0]; - if (!$element->id = insert_record("workshop_grades", $element)) { - error("Could not insert workshop grade!"); - } - // now save the adjustment in element one - unset($element); - $element->workshopid = $workshop->id; - $element->assessmentid = $assessment->id; - $element->elementno = 1; - $element->grade = $form->grade[1]; - if (!$element->id = insert_record("workshop_grades", $element)) { - error("Could not insert workshop grade!"); - } - $grade = ($elements[$form->grade[0]]->maxscore + $form->grade[1]); - break; - - case 4: // rubric grading (identical to accumulative grading) - // Insert all the elements that contain something - foreach ($form->grade as $key => $thegrade) { - unset($element); - $element->workshopid = $workshop->id; - $element->assessmentid = $assessment->id; - $element->elementno = $key; - $element->feedback = $form->{"feedback_$key"}; - $element->grade = $thegrade; - if (!$element->id = insert_record("workshop_grades", $element)) { - error("Could not insert workshop grade!"); - } - } - // now work out the grade... - $rawgrade=0; - $totalweight=0; - foreach ($form->grade as $key => $grade) { - $maxscore = $elements[$key]->maxscore; - $weight = $WORKSHOP_EWEIGHTS[$elements[$key]->weight]; - if ($weight > 0) { - $totalweight += $weight; - } - $rawgrade += ($grade / $maxscore) * $weight; - } - $grade = 100.0 * ($rawgrade / $totalweight); - break; - - } // end of switch - + echo "".get_string("weightederrorcount", "workshop", intval($error + 0.5))."\n"; + break; + + case 3: // criteria grading + // save in the selected criteria value in element zero, + unset($element); + $element->workshopid = $workshop->id; + $element->assessmentid = $assessment->id; + $element->elementno = 0; + $element->grade = $form->grade[0]; + if (!$element->id = insert_record("workshop_grades", $element)) { + error("Could not insert workshop grade!"); + } + // now save the adjustment in element one + unset($element); + $element->workshopid = $workshop->id; + $element->assessmentid = $assessment->id; + $element->elementno = 1; + $element->grade = $form->grade[1]; + if (!$element->id = insert_record("workshop_grades", $element)) { + error("Could not insert workshop grade!"); + } + $grade = ($elements[$form->grade[0]]->maxscore + $form->grade[1]); + break; + + case 4: // rubric grading (identical to accumulative grading) + // Insert all the elements that contain something + foreach ($form->grade as $key => $thegrade) { + unset($element); + $element->workshopid = $workshop->id; + $element->assessmentid = $assessment->id; + $element->elementno = $key; + $element->feedback = $form->{"feedback_$key"}; + $element->grade = $thegrade; + if (!$element->id = insert_record("workshop_grades", $element)) { + error("Could not insert workshop grade!"); + } + } + // now work out the grade... + $rawgrade=0; + $totalweight=0; + foreach ($form->grade as $key => $grade) { + $maxscore = $elements[$key]->maxscore; + $weight = $WORKSHOP_EWEIGHTS[$elements[$key]->weight]; + if ($weight > 0) { + $totalweight += $weight; + } + $rawgrade += ($grade / $maxscore) * $weight; + } + $grade = 100.0 * ($rawgrade / $totalweight); + break; + + } // end of switch + // any comment? - if (!empty($form->generalcomment)) { // update the object (no need to update the db record) + if (!empty($form->generalcomment)) { // update the object (no need to update the db record) $assessment->generalcomment = $form->generalcomment; - } - + } + // redisplay form, going back to original returnto address workshop_print_assessment($workshop, $assessment, true, true, $form->returnto); @@ -308,107 +308,107 @@ } - /******************* admin confirm delete ************************************/ - elseif ($action == 'adminconfirmdelete' ) { - - if (!isteacher($course->id)) { - error("Only teachers can look at this page"); - } - if (empty($_GET['aid'])) { - error("Admin confirm delete: assessment id missing"); - } - - notice_yesno(get_string("confirmdeletionofthisitem","workshop", get_string("assessment", "workshop")), - "assessments.php?action=admindelete&id=$cm->id&aid=$_GET[aid]", "submissions.php?action=adminlist&id=$cm->id"); - } - - - /******************* admin delete ************************************/ - elseif ($action == 'admindelete' ) { - - if (!isteacher($course->id)) { - error("Only teachers can look at this page"); - } - if (empty($_GET['aid'])) { - error("Admin delete: submission id missing"); - } - - print_string("deleting", "workshop"); - // first delete all the associated records... - delete_records("workshop_comments", "assessmentid", $_GET['aid']); - delete_records("workshop_grades", "assessmentid", $_GET['aid']); - // ...now delete the assessment... - delete_records("workshop_assessments", "id", $_GET['aid']); - - print_continue("submissions.php?id=$cm->id&action=adminlist"); - } - - - /*********************** admin list of asssessments (of a submission) (by teachers)**************/ - elseif ($action == 'adminlist') { - - if (!isteacher($course->id)) { - error("Only teachers can look at this page"); - } - - if (empty($_GET['sid'])) { - error ("Workshop asssessments: adminlist called with no sid"); - } - $submission = get_record("workshop_submissions", "id", $_GET['sid']); - workshop_print_assessments_for_admin($workshop, $submission); - print_continue("submissions.php?action=adminlist&id=$cm->id"); - } - - - /*********************** admin list of asssessments by a student (used by teachers only )******************/ - elseif ($action == 'adminlistbystudent') { - - if (!isteacher($course->id)) { - error("Only teachers can look at this page"); - } - - if (empty($_GET['userid'])) { - error ("Workshop asssessments: adminlistbystudent called with no userid"); - } - $user = get_record("user", "id", $_GET['userid']); - workshop_print_assessments_by_user_for_admin($workshop, $user); - print_continue("submissions.php?action=adminlist&id=$cm->id"); - } - - - /*************** agree (to) assessment (by student) ***************************/ - elseif ($action == 'agreeassessment') { - $timenow = time(); - // assessment id comes from link or hidden form variable - if (!$assessment = get_record("workshop_assessments", "id", $_REQUEST['aid'])) { - error("Assessment : agree assessment failed"); - } - //save time of agreement - set_field("workshop_assessments", "timeagreed", $timenow, "id", $assessment->id); - echo "".get_string("savedok", "workshop")."
\n"; - - add_to_log($course->id, "workshop", "agree", "assessments.php?action=viewassessment&id=$cm->id&aid=$assessment->id", "$assessment->id"); - print_continue("view.php?id=$cm->id"); - } - - - - /*************** Assess submission (by teacher or student) ***************************/ - elseif ($action == 'assesssubmission') { - - require_variable($sid); - - optional_variable($allowcomments); - if (!isset($allowcomments)) { - $allowcomments = false; - } - - if (! $submission = get_record("workshop_submissions", "id", $sid)) { - error("Assess submission is misconfigured - no submission record!"); - } + /******************* admin confirm delete ************************************/ + elseif ($action == 'adminconfirmdelete' ) { + + if (!isteacher($course->id)) { + error("Only teachers can look at this page"); + } + if (empty($_GET['aid'])) { + error("Admin confirm delete: assessment id missing"); + } + + notice_yesno(get_string("confirmdeletionofthisitem","workshop", get_string("assessment", "workshop")), + "assessments.php?action=admindelete&id=$cm->id&aid=$_GET[aid]", "submissions.php?action=adminlist&id=$cm->id"); + } + + + /******************* admin delete ************************************/ + elseif ($action == 'admindelete' ) { + + if (!isteacher($course->id)) { + error("Only teachers can look at this page"); + } + if (empty($_GET['aid'])) { + error("Admin delete: submission id missing"); + } + + print_string("deleting", "workshop"); + // first delete all the associated records... + delete_records("workshop_comments", "assessmentid", $_GET['aid']); + delete_records("workshop_grades", "assessmentid", $_GET['aid']); + // ...now delete the assessment... + delete_records("workshop_assessments", "id", $_GET['aid']); + + print_continue("submissions.php?id=$cm->id&action=adminlist"); + } + + + /*********************** admin list of asssessments (of a submission) (by teachers)**************/ + elseif ($action == 'adminlist') { + + if (!isteacher($course->id)) { + error("Only teachers can look at this page"); + } + + if (empty($_GET['sid'])) { + error ("Workshop asssessments: adminlist called with no sid"); + } + $submission = get_record("workshop_submissions", "id", $_GET['sid']); + workshop_print_assessments_for_admin($workshop, $submission); + print_continue("submissions.php?action=adminlist&id=$cm->id"); + } + + + /*********************** admin list of asssessments by a student (used by teachers only )******************/ + elseif ($action == 'adminlistbystudent') { + + if (!isteacher($course->id)) { + error("Only teachers can look at this page"); + } + + if (empty($_GET['userid'])) { + error ("Workshop asssessments: adminlistbystudent called with no userid"); + } + $user = get_record("user", "id", $_GET['userid']); + workshop_print_assessments_by_user_for_admin($workshop, $user); + print_continue("submissions.php?action=adminlist&id=$cm->id"); + } + + + /*************** agree (to) assessment (by student) ***************************/ + elseif ($action == 'agreeassessment') { + $timenow = time(); + // assessment id comes from link or hidden form variable + if (!$assessment = get_record("workshop_assessments", "id", $_REQUEST['aid'])) { + error("Assessment : agree assessment failed"); + } + //save time of agreement + set_field("workshop_assessments", "timeagreed", $timenow, "id", $assessment->id); + echo "".get_string("savedok", "workshop")."
\n"; + + add_to_log($course->id, "workshop", "agree", "assessments.php?action=viewassessment&id=$cm->id&aid=$assessment->id", "$assessment->id"); + print_continue("view.php?id=$cm->id"); + } + + + + /*************** Assess submission (by teacher or student) ***************************/ + elseif ($action == 'assesssubmission') { + + require_variable($sid); - // there can be an assessment record (for teacher submissions), if there isn't... - if (!$assessment = get_record("workshop_assessments", "submissionid", $submission->id, "userid", + optional_variable($allowcomments); + if (!isset($allowcomments)) { + $allowcomments = false; + } + + if (! $submission = get_record("workshop_submissions", "id", $sid)) { + error("Assess submission is misconfigured - no submission record!"); + } + + // there can be an assessment record (for teacher submissions), if there isn't... + if (!$assessment = get_record("workshop_assessments", "submissionid", $submission->id, "userid", $USER->id)) { // if it's the teacher see if the user has done a self assessment if so copy it if (isteacher($course->id) and ($assessment = get_record("workshop_assessments", "submissionid", @@ -427,523 +427,523 @@ $assessment->userid = $USER->id; $assessment->timecreated = $yearfromnow; $assessment->grade = -1; // set impossible grade - $assessment->timegraded = 0; - $assessment->timeagreed = 0; - $assessment->resubmission = 0; - if (!$assessment->id = insert_record("workshop_assessments", $assessment)) { - error("Could not insert workshop assessment!"); + $assessment->timegraded = 0; + $assessment->timeagreed = 0; + $assessment->resubmission = 0; + if (!$assessment->id = insert_record("workshop_assessments", $assessment)) { + error("Could not insert workshop assessment!"); } // if it's the teacher and the workshop is error banded set all the elements to Yes if (isteacher($course->id) and ($workshop->gradingstrategy == 2)) { - for ($i =0; $i < $workshop->nelements; $i++) { - unset($element); - $element->workshopid = $workshop->id; - $element->assessmentid = $assessment->id; - $element->elementno = $i; - $element->feedback = ''; - $element->grade = 1; - if (!$element->id = insert_record("workshop_grades", $element)) { - error("Could not insert workshop grade!"); - } - } - // now set the adjustment - unset($element); - $i = $workshop->nelements; - $element->workshopid = $workshop->id; - $element->assessmentid = $assessment->id; - $element->elementno = $i; - $element->grade = 0; - if (!$element->id = insert_record("workshop_grades", $element)) { - error("Could not insert workshop grade!"); - } + for ($i =0; $i < $workshop->nelements; $i++) { + unset($element); + $element->workshopid = $workshop->id; + $element->assessmentid = $assessment->id; + $element->elementno = $i; + $element->feedback = ''; + $element->grade = 1; + if (!$element->id = insert_record("workshop_grades", $element)) { + error("Could not insert workshop grade!"); + } + } + // now set the adjustment + unset($element); + $i = $workshop->nelements; + $element->workshopid = $workshop->id; + $element->assessmentid = $assessment->id; + $element->elementno = $i; + $element->grade = 0; + if (!$element->id = insert_record("workshop_grades", $element)) { + error("Could not insert workshop grade!"); + } } } - } - - print_heading_with_help(get_string("assessthissubmission", "workshop"), "grading", "workshop"); - - // show assessment and allow changes - workshop_print_assessment($workshop, $assessment, true, $allowcomments, $_SERVER["HTTP_REFERER"]); + } + + print_heading_with_help(get_string("assessthissubmission", "workshop"), "grading", "workshop"); + + // show assessment and allow changes + workshop_print_assessment($workshop, $assessment, true, $allowcomments, $_SERVER["HTTP_REFERER"]); + } + + + /*************** display grading form (viewed by student) *********************************/ + elseif ($action == 'displaygradingform') { + + print_heading_with_help(get_string("specimenassessmentform", "workshop"), "specimen", "workshop"); + + workshop_print_assessment($workshop); // called with no assessment + print_continue("view.php?id=$cm->id"); } - /*************** display grading form (viewed by student) *********************************/ - elseif ($action == 'displaygradingform') { - - print_heading_with_help(get_string("specimenassessmentform", "workshop"), "specimen", "workshop"); - - workshop_print_assessment($workshop); // called with no assessment - print_continue("view.php?id=$cm->id"); - } - - - /*************** edit comment on assessment (by author, assessor or teacher) ***************************/ - elseif ($action == 'editcomment') { - - print_heading_with_help(get_string("editacomment", "workshop"), "editingacomment", "workshop"); - // get the comment record... - if (!$comment = get_record("workshop_comments", "id", $_GET['cid'])) { - error("Edit Comment: Comment not found"); - } - if (!$assessment = get_record("workshop_assessments", "id", $comment->assessmentid)) { - error("Edit Comment: Assessment not found"); - } - if (!$submission = get_record("workshop_submissions", "id", $assessment->submissionid)) { - error("Edit Comment: Submission not found"); - } - ?> -
- - - -
- - \n"; - echo " \n"; - echo "
". get_string("comment", "workshop").":\n"; - echo " \n"; - echo "
\n"; - echo "\n"; - echo "
\n"; - workshop_print_assessment($workshop, $assessment); - } - - - /*********************** edit assessment elements (for teachers) ***********************/ - elseif ($action == 'editelements') { - - if (!isteacher($course->id)) { - error("Only teachers can look at this page"); - } - - $count = count_records("workshop_grades", "workshopid", $workshop->id); - if ($workshop->phase > 1 and $count) { - notify(get_string("warningonamendingelements", "workshop")); - } - // set up heading, form and table - print_heading_with_help(get_string("editingassessmentelements", "workshop"), "elements", "workshop"); - ?> -
- - -
- id, "elementno ASC" )) { - foreach ($elementsraw as $element) { - $elements[] = $element; // to renumber index 0,1,2... - } - } - // check for missing elements (this happens either the first time round or when the number of elements is icreased) - for ($i=0; $i<$workshop->nelements; $i++) { - if (!isset($elements[$i])) { - $elements[$i]->description = ''; - $elements[$i]->scale =0; - $elements[$i]->maxscore = 0; - $elements[$i]->weight = 11; - } - } + /*************** edit comment on assessment (by author, assessor or teacher) ***************************/ + elseif ($action == 'editcomment') { + + print_heading_with_help(get_string("editacomment", "workshop"), "editingacomment", "workshop"); + // get the comment record... + if (!$comment = get_record("workshop_comments", "id", $_GET['cid'])) { + error("Edit Comment: Comment not found"); + } + if (!$assessment = get_record("workshop_assessments", "id", $comment->assessmentid)) { + error("Edit Comment: Assessment not found"); + } + if (!$submission = get_record("workshop_submissions", "id", $assessment->submissionid)) { + error("Edit Comment: Submission not found"); + } + ?> + + + + +
+
+ \n"; + echo " \n"; + echo "
". get_string("comment", "workshop").":\n"; + echo " \n"; + echo "
\n"; + echo "\n"; + echo "
\n"; + workshop_print_assessment($workshop, $assessment); + } + + + /*********************** edit assessment elements (for teachers) ***********************/ + elseif ($action == 'editelements') { + + if (!isteacher($course->id)) { + error("Only teachers can look at this page"); + } + + $count = count_records("workshop_grades", "workshopid", $workshop->id); + if ($count) { + notify(get_string("warningonamendingelements", "workshop")); + } + // set up heading, form and table + print_heading_with_help(get_string("editingassessmentelements", "workshop"), "elements", "workshop"); + ?> +
+ + +
+ id, "elementno ASC" )) { + foreach ($elementsraw as $element) { + $elements[] = $element; // to renumber index 0,1,2... + } + } + // check for missing elements (this happens either the first time round or when the number of elements is icreased) + for ($i=0; $i<$workshop->nelements; $i++) { + if (!isset($elements[$i])) { + $elements[$i]->description = ''; + $elements[$i]->scale =0; + $elements[$i]->maxscore = 0; + $elements[$i]->weight = 11; + } + } + + switch ($workshop->gradingstrategy) { + case 0: // no grading + for ($i=0; $i<$workshop->nelements; $i++) { + $iplus1 = $i+1; + echo "\n"; + echo " \n"; + echo "\n"; + echo "\n"; + echo " \n"; + echo "\n"; + } + break; + + case 1: // accumulative grading + // set up scales name + foreach ($WORKSHOP_SCALES as $KEY => $SCALE) { + $SCALES[] = $SCALE['name']; + } + for ($i=0; $i<$workshop->nelements; $i++) { + $iplus1 = $i+1; + echo "\n"; + echo " \n"; + echo "\n"; + echo "\n"; + echo " \n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo " \n"; + echo "\n"; + } + break; + + case 2: // error banded grading + for ($i=0; $i<$workshop->nelements; $i++) { + $iplus1 = $i+1; + echo "\n"; + echo " \n"; + echo "\n"; + if ($elements[$i]->weight == '') { // not set + $elements[$i]->weight = 11; // unity + } + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo " \n"; + echo "\n"; + } + echo "
". get_string("element","workshop")." $iplus1:\n"; + echo "
cellheading2\"> 
". get_string("element","workshop")." $iplus1:\n"; + echo "
". get_string("typeofscale", "workshop"). ":\n"; + choose_from_menu($SCALES, "scale[]", $elements[$i]->scale, ""); + if ($elements[$i]->weight == '') { // not set + $elements[$i]->weight = 11; // unity + } + echo "
".get_string("elementweight", "workshop").":\n"; + workshop_choose_from_menu($WORKSHOP_EWEIGHTS, "weight[]", $elements[$i]->weight, ""); + echo "
cellheading2\"> 
". get_string("element","workshop")." $iplus1:\n"; + echo "
".get_string("elementweight", "workshop").":\n"; + workshop_choose_from_menu($WORKSHOP_EWEIGHTS, "weight[]", $elements[$i]->weight, ""); + echo "
cellheading2\"> 

\n"; + echo "
".get_string("gradetable","workshop")."
\n"; + echo "
\n"; + for ($j = $workshop->grade; $j >= 0; $j--) { + $numbers[$j] = $j; + } + for ($i=0; $i<=$workshop->nelements; $i++) { + echo "\n"; + } + echo "
". + get_string("numberofnegativeresponses", "workshop"); + echo "". get_string("suggestedgrade", "workshop")."
$i"; + if (!isset($elements[$i])) { // the "last one" will be! + $elements[$i]->description = ""; + $elements[$i]->maxscore = 0; + } + choose_from_menu($numbers, "maxscore[$i]", $elements[$i]->maxscore, ""); + echo "
\n"; + break; + + case 3: // criterion grading + for ($j = 100; $j >= 0; $j--) { + $numbers[$j] = $j; + } + for ($i=0; $i<$workshop->nelements; $i++) { + $iplus1 = $i+1; + echo "\n"; + echo " ". get_string("criterion","workshop")." $iplus1:\n"; + echo "\n"; + echo " \n"; + echo "". get_string("suggestedgrade", "workshop").":\n"; + choose_from_menu($numbers, "maxscore[$i]", $elements[$i]->maxscore, ""); + echo "\n"; + echo "\n"; + echo " cellheading2\"> \n"; + echo "\n"; + } + break; + + case 4: // rubric + for ($j = 100; $j >= 0; $j--) { + $numbers[$j] = $j; + } + if ($rubricsraw = get_records("workshop_rubrics", "workshopid", $workshop->id)) { + foreach ($rubricsraw as $rubric) { + $rubrics[$rubric->elementno][$rubric->rubricno] = $rubric->description; // reindex 0,1,2... + } + } + for ($i=0; $i<$workshop->nelements; $i++) { + $iplus1 = $i+1; + echo "\n"; + echo " ". get_string("element","workshop")." $iplus1:\n"; + echo "\n"; + echo " \n"; + echo "".get_string("elementweight", "workshop").":\n"; + workshop_choose_from_menu($WORKSHOP_EWEIGHTS, "weight[]", $elements[$i]->weight, ""); + echo " \n"; + echo "\n"; + + for ($j=0; $j<5; $j++) { + $jplus1 = $j+1; + if (empty($rubrics[$i][$j])) { + $rubrics[$i][$j] = ""; + } + echo "\n"; + echo " ". get_string("grade","workshop")." $j:\n"; + echo "\n"; + echo " \n"; + } + echo "\n"; + echo " cellheading2\"> \n"; + echo "\n"; + } + break; + } + // close table and form + + ?> +
+ " /> + " /> +
+
+ gradingstrategy) { - case 0: // no grading - for ($i=0; $i<$workshop->nelements; $i++) { - $iplus1 = $i+1; - echo "\n"; - echo " ". get_string("element","workshop")." $iplus1:\n"; - echo "\n"; - echo " \n"; - echo "\n"; - echo " cellheading2\"> \n"; - echo "\n"; - } - break; - - case 1: // accumulative grading - // set up scales name - foreach ($WORKSHOP_SCALES as $KEY => $SCALE) { - $SCALES[] = $SCALE['name']; - } - for ($i=0; $i<$workshop->nelements; $i++) { - $iplus1 = $i+1; - echo "\n"; - echo " ". get_string("element","workshop")." $iplus1:\n"; - echo "\n"; - echo " \n"; - echo "\n"; - echo " ". get_string("typeofscale", "workshop"). ":\n"; - echo "\n"; - choose_from_menu($SCALES, "scale[]", $elements[$i]->scale, ""); - if ($elements[$i]->weight == '') { // not set - $elements[$i]->weight = 11; // unity - } - echo "\n"; - echo "".get_string("elementweight", "workshop").":\n"; - workshop_choose_from_menu($WORKSHOP_EWEIGHTS, "weight[]", $elements[$i]->weight, ""); - echo " \n"; - echo "\n"; - echo "\n"; - echo " cellheading2\"> \n"; - echo "\n"; - } - break; - - case 2: // error banded grading - for ($i=0; $i<$workshop->nelements; $i++) { - $iplus1 = $i+1; - echo "\n"; - echo " ". get_string("element","workshop")." $iplus1:\n"; - echo "\n"; - echo " \n"; - if ($elements[$i]->weight == '') { // not set - $elements[$i]->weight = 11; // unity - } - echo "\n"; - echo "".get_string("elementweight", "workshop").":\n"; - workshop_choose_from_menu($WORKSHOP_EWEIGHTS, "weight[]", $elements[$i]->weight, ""); - echo " \n"; - echo "\n"; - echo "\n"; - echo " cellheading2\"> \n"; - echo "\n"; - } - echo "
\n"; - echo "
".get_string("gradetable","workshop")."
\n"; - echo "
\n"; - for ($j = $workshop->grade; $j >= 0; $j--) { - $numbers[$j] = $j; - } - for ($i=0; $i<=$workshop->nelements; $i++) { - echo "\n"; - } - echo "
". - get_string("numberofnegativeresponses", "workshop"); - echo "". get_string("suggestedgrade", "workshop")."
$i"; - if (!isset($elements[$i])) { // the "last one" will be! - $elements[$i]->description = ""; - $elements[$i]->maxscore = 0; - } - choose_from_menu($numbers, "maxscore[$i]", $elements[$i]->maxscore, ""); - echo "
\n"; - break; - - case 3: // criterion grading - for ($j = 100; $j >= 0; $j--) { - $numbers[$j] = $j; - } - for ($i=0; $i<$workshop->nelements; $i++) { - $iplus1 = $i+1; - echo "\n"; - echo " ". get_string("criterion","workshop")." $iplus1:\n"; - echo "\n"; - echo " \n"; - echo "". get_string("suggestedgrade", "workshop").":\n"; - choose_from_menu($numbers, "maxscore[$i]", $elements[$i]->maxscore, ""); - echo "\n"; - echo "\n"; - echo " cellheading2\"> \n"; - echo "\n"; - } - break; - - case 4: // rubric - for ($j = 100; $j >= 0; $j--) { - $numbers[$j] = $j; - } - if ($rubricsraw = get_records("workshop_rubrics", "workshopid", $workshop->id)) { - foreach ($rubricsraw as $rubric) { - $rubrics[$rubric->elementno][$rubric->rubricno] = $rubric->description; // reindex 0,1,2... - } - } - for ($i=0; $i<$workshop->nelements; $i++) { - $iplus1 = $i+1; - echo "\n"; - echo " ". get_string("element","workshop")." $iplus1:\n"; - echo "\n"; - echo " \n"; - echo "".get_string("elementweight", "workshop").":\n"; - workshop_choose_from_menu($WORKSHOP_EWEIGHTS, "weight[]", $elements[$i]->weight, ""); - echo " \n"; - echo "\n"; - - for ($j=0; $j<5; $j++) { - $jplus1 = $j+1; - if (empty($rubrics[$i][$j])) { - $rubrics[$i][$j] = ""; - } - echo "\n"; - echo " ". get_string("grade","workshop")." $j:\n"; - echo "\n"; - echo " \n"; - } - echo "\n"; - echo " cellheading2\"> \n"; - echo "\n"; - } - break; - } - // close table and form - - ?> -
- " /> - " /> - - - id)) { - error("Only teachers can look at this page"); - } + if (!isteacher($course->id)) { + error("Only teachers can look at this page"); + } print_heading(get_string("gradingallassessments", "workshop")); workshop_grade_assessments($workshop); - print_continue("view.php?id=$cm->id"); - } - - - /*************** grade (student's) assessment (by teacher) ***************************/ - elseif ($action == 'gradeassessment') { - - if (!isteacher($course->id)) { - error("Only teachers can look at this page"); - } - - // set up coment scale - for ($i=COMMENTSCALE; $i>=0; $i--) { - $num[$i] = $i; - } - - print_heading_with_help(get_string("gradeassessment", "workshop"), "gradingassessments", "workshop"); - // get assessment record - if (!$assessmentid = $_GET['aid']) { - error("Assessment id not given"); - } - $assessment = get_record("workshop_assessments", "id", $assessmentid); - if (!$submission = get_record("workshop_submissions", "id", $assessment->submissionid)) { - error("Submission not found"); - } - // get the teacher's assessment first - if ($teachersassessment = workshop_get_submission_assessment($submission, $USER)) { - echo "
".get_string("teacherassessments", "workshop", $course->teacher)."
\n"; - workshop_print_assessment($workshop, $teachersassessment); - } - // now the student's assessment (don't allow changes) - $user = get_record("user", "id", $assessment->userid); - echo "
".get_string("assessmentby", "workshop", $user->firstname." ".$user->lastname)."
\n"; - workshop_print_assessment($workshop, $assessment); - - ?> -
- - - - -
- - \n"; - echo " \n"; - echo " \n"; - echo "\n"; - echo "
". get_string("teacherscomment", "workshop").":\n"; - echo " \n"; - echo "
".get_string("gradeforstudentsassessment", "workshop")."\n"; - choose_from_menu($num, "gradinggrade", $assessment->gradinggrade, ""); - echo "
\n"; - echo "\n"; - echo "
\n"; - } - - - /*************** insert (new) comment (by author, assessor or teacher) ***************************/ - elseif ($action == 'insertcomment') { - $timenow = time(); - - $form = (object)$_POST; - - if (!$assessment = get_record("workshop_assessments", "id", $_POST['aid'])) { - error("Unable to insert comment"); - } - // save the comment... - $comment->workshopid = $workshop->id; - $comment->assessmentid = $assessment->id; - $comment->userid = $USER->id; - $comment->timecreated = $timenow; - $comment->comments = $form->comments; - if (!$comment->id = insert_record("workshop_comments", $comment)) { - error("Could not insert workshop comment!"); - } - - add_to_log($course->id, "workshop", "comment", "view.php?id=$cm->id", "$comment->id"); - - print_continue("assessments.php?action=viewassessment&id=$cm->id&aid=$assessment->id"); - } - - - /*********************** insert/update assignment elements (for teachers)***********************/ - elseif ($action == 'insertelements') { - - if (!isteacher($course->id)) { - error("Only teachers can look at this page"); - } - - $form = (object)$HTTP_POST_VARS; - - // let's not fool around here, dump the junk! - delete_records("workshop_elements", "workshopid", $workshop->id); - - // determine wich type of grading - switch ($workshop->gradingstrategy) { - case 0: // no grading - // Insert all the elements that contain something - foreach ($form->description as $key => $description) { - if ($description) { - unset($element); - $element->description = $description; - $element->workshopid = $workshop->id; - $element->elementno = $key; - if (!$element->id = insert_record("workshop_elements", $element)) { - error("Could not insert workshop element!"); - } - } - } - break; - - case 1: // accumulative grading - // Insert all the elements that contain something - foreach ($form->description as $key => $description) { - if ($description) { - unset($element); - $element->description = $description; - $element->workshopid = $workshop->id; - $element->elementno = $key; - if (isset($form->scale[$key])) { - $element->scale = $form->scale[$key]; - switch ($WORKSHOP_SCALES[$form->scale[$key]]['type']) { - case 'radio' : $element->maxscore = $WORKSHOP_SCALES[$form->scale[$key]]['size'] - 1; - break; - case 'selection' : $element->maxscore = $WORKSHOP_SCALES[$form->scale[$key]]['size']; - break; - } - } - if (isset($form->weight[$key])) { - $element->weight = $form->weight[$key]; - } - if (!$element->id = insert_record("workshop_elements", $element)) { - error("Could not insert workshop element!"); - } - } - } - break; - - case 2: // error banded grading... - case 3: // ...and criterion grading - // Insert all the elements that contain something, the number of descriptions is one less than the number of grades - foreach ($form->maxscore as $key => $themaxscore) { - unset($element); - $element->workshopid = $workshop->id; - $element->elementno = $key; - $element->maxscore = $themaxscore; - if (isset($form->description[$key])) { - $element->description = $form->description[$key]; - } - if (isset($form->weight[$key])) { - $element->weight = $form->weight[$key]; - } - if (!$element->id = insert_record("workshop_elements", $element)) { - error("Could not insert workshop element!"); - } - } - break; - - case 4: // ...and criteria grading - // Insert all the elements that contain something - foreach ($form->description as $key => $description) { - unset($element); - $element->workshopid = $workshop->id; - $element->elementno = $key; - $element->description = $description; - $element->weight = $form->weight[$key]; - for ($j=0;$j<5;$j++) { - if (empty($form->rubric[$key][$j])) - break; - } - $element->maxscore = $j - 1; - if (!$element->id = insert_record("workshop_elements", $element)) { - error("Could not insert workshop element!"); - } - } - // let's not fool around here, dump the junk! - delete_records("workshop_rubrics", "workshopid", $workshop->id); - for ($i=0;$i<$workshop->nelements;$i++) { - for ($j=0;$j<5;$j++) { - unset($element); - if (empty($form->rubric[$i][$j])) { // OK to have an element with fewer than 5 items - break; - } - $element->workshopid = $workshop->id; - $element->elementno = $i; - $element->rubricno = $j; - $element->description = $form->rubric[$i][$j]; - if (!$element->id = insert_record("workshop_rubrics", $element)) { - error("Could not insert workshop element!"); - } - } - } - break; - } // end of switch - - redirect("view.php?id=$cm->id", get_string("savedok","workshop")); - } - - - /*********************** list assessments for grading (Student submissions)(by teachers)***********************/ - elseif ($action == 'listungradedstudentsubmissions') { - - if (!isteacher($course->id)) { - error("Only teachers can look at this page"); - } - workshop_list_ungraded_assessments($workshop, "student"); - print_continue("view.php?id=$cm->id"); - } - - - /*********************** list assessments for grading (Teacher submissions) (by teachers)***********************/ - elseif ($action == 'listungradedteachersubmissions') { - - if (!isteacher($course->id)) { - error("Only teachers can look at this page"); - } - workshop_list_ungraded_assessments($workshop, "teacher"); - print_continue("view.php?id=$cm->id"); - } - - - /****************** list teacher submissions ***********************/ - elseif ($action == 'listteachersubmissions') { - - workshop_list_teacher_submissions($workshop, $USER); - print_continue("view.php?id=$cm->id"); - } + print_continue("view.php?id=$cm->id"); + } + + + /*************** grade (student's) assessment (by teacher) ***************************/ + elseif ($action == 'gradeassessment') { + + if (!isteacher($course->id)) { + error("Only teachers can look at this page"); + } + + // set up coment scale + for ($i=COMMENTSCALE; $i>=0; $i--) { + $num[$i] = $i; + } + + print_heading_with_help(get_string("gradeassessment", "workshop"), "gradingassessments", "workshop"); + // get assessment record + if (!$assessmentid = $_GET['aid']) { + error("Assessment id not given"); + } + $assessment = get_record("workshop_assessments", "id", $assessmentid); + if (!$submission = get_record("workshop_submissions", "id", $assessment->submissionid)) { + error("Submission not found"); + } + // get the teacher's assessment first + if ($teachersassessment = workshop_get_submission_assessment($submission, $USER)) { + echo "
".get_string("teacherassessments", "workshop", $course->teacher)."
\n"; + workshop_print_assessment($workshop, $teachersassessment); + } + // now the student's assessment (don't allow changes) + $user = get_record("user", "id", $assessment->userid); + echo "
".get_string("assessmentby", "workshop", $user->firstname." ".$user->lastname)."
\n"; + workshop_print_assessment($workshop, $assessment); + + ?> +
+ + + + +
+ + \n"; + echo " \n"; + echo " \n"; + echo "\n"; + echo "
". get_string("teacherscomment", "workshop").":\n"; + echo " \n"; + echo "
".get_string("gradeforstudentsassessment", "workshop")."\n"; + choose_from_menu($num, "gradinggrade", $assessment->gradinggrade, ""); + echo "
\n"; + echo "\n"; + echo "
\n"; + } + + + /*************** insert (new) comment (by author, assessor or teacher) ***************************/ + elseif ($action == 'insertcomment') { + $timenow = time(); + + $form = (object)$_POST; + + if (!$assessment = get_record("workshop_assessments", "id", $_POST['aid'])) { + error("Unable to insert comment"); + } + // save the comment... + $comment->workshopid = $workshop->id; + $comment->assessmentid = $assessment->id; + $comment->userid = $USER->id; + $comment->timecreated = $timenow; + $comment->comments = $form->comments; + if (!$comment->id = insert_record("workshop_comments", $comment)) { + error("Could not insert workshop comment!"); + } + + add_to_log($course->id, "workshop", "comment", "view.php?id=$cm->id", "$comment->id"); + + print_continue("assessments.php?action=viewassessment&id=$cm->id&aid=$assessment->id"); + } + + + /*********************** insert/update assignment elements (for teachers)***********************/ + elseif ($action == 'insertelements') { + + if (!isteacher($course->id)) { + error("Only teachers can look at this page"); + } + + $form = (object)$HTTP_POST_VARS; + + // let's not fool around here, dump the junk! + delete_records("workshop_elements", "workshopid", $workshop->id); + + // determine wich type of grading + switch ($workshop->gradingstrategy) { + case 0: // no grading + // Insert all the elements that contain something + foreach ($form->description as $key => $description) { + if ($description) { + unset($element); + $element->description = $description; + $element->workshopid = $workshop->id; + $element->elementno = $key; + if (!$element->id = insert_record("workshop_elements", $element)) { + error("Could not insert workshop element!"); + } + } + } + break; + + case 1: // accumulative grading + // Insert all the elements that contain something + foreach ($form->description as $key => $description) { + if ($description) { + unset($element); + $element->description = $description; + $element->workshopid = $workshop->id; + $element->elementno = $key; + if (isset($form->scale[$key])) { + $element->scale = $form->scale[$key]; + switch ($WORKSHOP_SCALES[$form->scale[$key]]['type']) { + case 'radio' : $element->maxscore = $WORKSHOP_SCALES[$form->scale[$key]]['size'] - 1; + break; + case 'selection' : $element->maxscore = $WORKSHOP_SCALES[$form->scale[$key]]['size']; + break; + } + } + if (isset($form->weight[$key])) { + $element->weight = $form->weight[$key]; + } + if (!$element->id = insert_record("workshop_elements", $element)) { + error("Could not insert workshop element!"); + } + } + } + break; + + case 2: // error banded grading... + case 3: // ...and criterion grading + // Insert all the elements that contain something, the number of descriptions is one less than the number of grades + foreach ($form->maxscore as $key => $themaxscore) { + unset($element); + $element->workshopid = $workshop->id; + $element->elementno = $key; + $element->maxscore = $themaxscore; + if (isset($form->description[$key])) { + $element->description = $form->description[$key]; + } + if (isset($form->weight[$key])) { + $element->weight = $form->weight[$key]; + } + if (!$element->id = insert_record("workshop_elements", $element)) { + error("Could not insert workshop element!"); + } + } + break; + + case 4: // ...and criteria grading + // Insert all the elements that contain something + foreach ($form->description as $key => $description) { + unset($element); + $element->workshopid = $workshop->id; + $element->elementno = $key; + $element->description = $description; + $element->weight = $form->weight[$key]; + for ($j=0;$j<5;$j++) { + if (empty($form->rubric[$key][$j])) + break; + } + $element->maxscore = $j - 1; + if (!$element->id = insert_record("workshop_elements", $element)) { + error("Could not insert workshop element!"); + } + } + // let's not fool around here, dump the junk! + delete_records("workshop_rubrics", "workshopid", $workshop->id); + for ($i=0;$i<$workshop->nelements;$i++) { + for ($j=0;$j<5;$j++) { + unset($element); + if (empty($form->rubric[$i][$j])) { // OK to have an element with fewer than 5 items + break; + } + $element->workshopid = $workshop->id; + $element->elementno = $i; + $element->rubricno = $j; + $element->description = $form->rubric[$i][$j]; + if (!$element->id = insert_record("workshop_rubrics", $element)) { + error("Could not insert workshop element!"); + } + } + } + break; + } // end of switch + + redirect("view.php?id=$cm->id", get_string("savedok","workshop")); + } + + + /*********************** list assessments for grading (Student submissions)(by teachers)***********************/ + elseif ($action == 'listungradedstudentsubmissions') { + + if (!isteacher($course->id)) { + error("Only teachers can look at this page"); + } + workshop_list_ungraded_assessments($workshop, "student"); + print_continue("view.php?id=$cm->id"); + } + + + /*********************** list assessments for grading (Teacher submissions) (by teachers)***********************/ + elseif ($action == 'listungradedteachersubmissions') { + + if (!isteacher($course->id)) { + error("Only teachers can look at this page"); + } + workshop_list_ungraded_assessments($workshop, "teacher"); + print_continue("view.php?id=$cm->id"); + } + + + /****************** list teacher submissions ***********************/ + elseif ($action == 'listteachersubmissions') { + + workshop_list_teacher_submissions($workshop, $USER); + print_continue("view.php?id=$cm->id"); + } /******************* regrade student assessments ************************************/ @@ -976,18 +976,18 @@ require_variable($stockcommentid); if (!isteacher($course->id)) { - error("Only teachers can look at this page"); - } + error("Only teachers can look at this page"); + } if (!$assessment = get_record("workshop_assessments", "id", $aid)) { error("workshop assessment is misconfigured"); } - $form = data_submitted("nomatch"); // probably always come from the same page, change this statement - + $form = data_submitted("nomatch"); // probably always come from the same page, change this statement + // delete the comment from the stock comments table - if (!delete_records("workshop_stockcomments", "id", $stockcommentid)) { - error("Could not remove comment from the comment bank"); - } + if (!delete_records("workshop_stockcomments", "id", $stockcommentid)) { + error("Could not remove comment from the comment bank"); + } // now upate the assessment (just the elements, the assessment itself is not updated) @@ -1006,148 +1006,148 @@ $timenow = time(); // don't fiddle about, delete all the old and add the new! - delete_records("workshop_grades", "assessmentid", $assessment->id); - - - //determine what kind of grading we have - switch ($workshop->gradingstrategy) { - case 0: // no grading - // Insert all the elements that contain something - for ($i =0; $i < $workshop->nelements; $i++) { - unset($element); - $element->workshopid = $workshop->id; - $element->assessmentid = $assessment->id; - $element->elementno = $i; - $element->feedback = $form->{"feedback_$i"}; - if (!$element->id = insert_record("workshop_grades", $element)) { - error("Could not insert workshop grade!"); - } - } - $grade = 0; // set to satisfy save to db - break; - - case 1: // accumulative grading - // Insert all the elements that contain something - foreach ($form->grade as $key => $thegrade) { - unset($element); - $element->workshopid = $workshop->id; - $element->assessmentid = $assessment->id; - $element->elementno = $key; - $element->feedback = $form->{"feedback_$key"}; - $element->grade = $thegrade; - if (!$element->id = insert_record("workshop_grades", $element)) { - error("Could not insert workshop grade!"); - } - } - // now work out the grade... - $rawgrade=0; - $totalweight=0; - foreach ($form->grade as $key => $grade) { - $maxscore = $elements[$key]->maxscore; - $weight = $WORKSHOP_EWEIGHTS[$elements[$key]->weight]; - if ($weight > 0) { - $totalweight += $weight; - } - $rawgrade += ($grade / $maxscore) * $weight; - // echo "\$key, \$maxscore, \$weight, \$totalweight, \$grade, \$rawgrade : $key, $maxscore, $weight, $totalweight, $grade, $rawgrade
"; - } - $grade = 100.0 * ($rawgrade / $totalweight); - break; - - case 2: // error banded graded - // Insert all the elements that contain something - $error = 0.0; - for ($i =0; $i < $workshop->nelements; $i++) { - unset($element); - $element->workshopid = $workshop->id; - $element->assessmentid = $assessment->id; - $element->elementno = $i; - $element->feedback = $form->{"feedback_$i"}; - $element->grade = $form->grade[$i]; - if (!$element->id = insert_record("workshop_grades", $element)) { - error("Could not insert workshop grade!"); - } - if (empty($form->grade[$i])){ - $error += $WORKSHOP_EWEIGHTS[$elements[$i]->weight]; - } - } - // now save the adjustment - unset($element); - $i = $workshop->nelements; - $element->workshopid = $workshop->id; - $element->assessmentid = $assessment->id; - $element->elementno = $i; - $element->grade = $form->grade[$i]; - if (!$element->id = insert_record("workshop_grades", $element)) { - error("Could not insert workshop grade!"); - } - $grade = ($elements[intval($error + 0.5)]->maxscore + $form->grade[$i]) * 100 / $workshop->grade; + delete_records("workshop_grades", "assessmentid", $assessment->id); + + + //determine what kind of grading we have + switch ($workshop->gradingstrategy) { + case 0: // no grading + // Insert all the elements that contain something + for ($i =0; $i < $workshop->nelements; $i++) { + unset($element); + $element->workshopid = $workshop->id; + $element->assessmentid = $assessment->id; + $element->elementno = $i; + $element->feedback = $form->{"feedback_$i"}; + if (!$element->id = insert_record("workshop_grades", $element)) { + error("Could not insert workshop grade!"); + } + } + $grade = 0; // set to satisfy save to db + break; + + case 1: // accumulative grading + // Insert all the elements that contain something + foreach ($form->grade as $key => $thegrade) { + unset($element); + $element->workshopid = $workshop->id; + $element->assessmentid = $assessment->id; + $element->elementno = $key; + $element->feedback = $form->{"feedback_$key"}; + $element->grade = $thegrade; + if (!$element->id = insert_record("workshop_grades", $element)) { + error("Could not insert workshop grade!"); + } + } + // now work out the grade... + $rawgrade=0; + $totalweight=0; + foreach ($form->grade as $key => $grade) { + $maxscore = $elements[$key]->maxscore; + $weight = $WORKSHOP_EWEIGHTS[$elements[$key]->weight]; + if ($weight > 0) { + $totalweight += $weight; + } + $rawgrade += ($grade / $maxscore) * $weight; + // echo "\$key, \$maxscore, \$weight, \$totalweight, \$grade, \$rawgrade : $key, $maxscore, $weight, $totalweight, $grade, $rawgrade
"; + } + $grade = 100.0 * ($rawgrade / $totalweight); + break; + + case 2: // error banded graded + // Insert all the elements that contain something + $error = 0.0; + for ($i =0; $i < $workshop->nelements; $i++) { + unset($element); + $element->workshopid = $workshop->id; + $element->assessmentid = $assessment->id; + $element->elementno = $i; + $element->feedback = $form->{"feedback_$i"}; + $element->grade = $form->grade[$i]; + if (!$element->id = insert_record("workshop_grades", $element)) { + error("Could not insert workshop grade!"); + } + if (empty($form->grade[$i])){ + $error += $WORKSHOP_EWEIGHTS[$elements[$i]->weight]; + } + } + // now save the adjustment + unset($element); + $i = $workshop->nelements; + $element->workshopid = $workshop->id; + $element->assessmentid = $assessment->id; + $element->elementno = $i; + $element->grade = $form->grade[$i]; + if (!$element->id = insert_record("workshop_grades", $element)) { + error("Could not insert workshop grade!"); + } + $grade = ($elements[intval($error + 0.5)]->maxscore + $form->grade[$i]) * 100 / $workshop->grade; // do sanity check if ($grade < 0) { $grade = 0; } elseif ($grade > 100) { $grade = 100; } - echo "".get_string("weightederrorcount", "workshop", intval($error + 0.5))."\n"; - break; - - case 3: // criteria grading - // save in the selected criteria value in element zero, - unset($element); - $element->workshopid = $workshop->id; - $element->assessmentid = $assessment->id; - $element->elementno = 0; - $element->grade = $form->grade[0]; - if (!$element->id = insert_record("workshop_grades", $element)) { - error("Could not insert workshop grade!"); - } - // now save the adjustment in element one - unset($element); - $element->workshopid = $workshop->id; - $element->assessmentid = $assessment->id; - $element->elementno = 1; - $element->grade = $form->grade[1]; - if (!$element->id = insert_record("workshop_grades", $element)) { - error("Could not insert workshop grade!"); - } - $grade = ($elements[$form->grade[0]]->maxscore + $form->grade[1]); - break; - - case 4: // rubric grading (identical to accumulative grading) - // Insert all the elements that contain something - foreach ($form->grade as $key => $thegrade) { - unset($element); - $element->workshopid = $workshop->id; - $element->assessmentid = $assessment->id; - $element->elementno = $key; - $element->feedback = $form->{"feedback_$key"}; - $element->grade = $thegrade; - if (!$element->id = insert_record("workshop_grades", $element)) { - error("Could not insert workshop grade!"); - } - } - // now work out the grade... - $rawgrade=0; - $totalweight=0; - foreach ($form->grade as $key => $grade) { - $maxscore = $elements[$key]->maxscore; - $weight = $WORKSHOP_EWEIGHTS[$elements[$key]->weight]; - if ($weight > 0) { - $totalweight += $weight; - } - $rawgrade += ($grade / $maxscore) * $weight; - } - $grade = 100.0 * ($rawgrade / $totalweight); - break; - - } // end of switch - + echo "".get_string("weightederrorcount", "workshop", intval($error + 0.5))."\n"; + break; + + case 3: // criteria grading + // save in the selected criteria value in element zero, + unset($element); + $element->workshopid = $workshop->id; + $element->assessmentid = $assessment->id; + $element->elementno = 0; + $element->grade = $form->grade[0]; + if (!$element->id = insert_record("workshop_grades", $element)) { + error("Could not insert workshop grade!"); + } + // now save the adjustment in element one + unset($element); + $element->workshopid = $workshop->id; + $element->assessmentid = $assessment->id; + $element->elementno = 1; + $element->grade = $form->grade[1]; + if (!$element->id = insert_record("workshop_grades", $element)) { + error("Could not insert workshop grade!"); + } + $grade = ($elements[$form->grade[0]]->maxscore + $form->grade[1]); + break; + + case 4: // rubric grading (identical to accumulative grading) + // Insert all the elements that contain something + foreach ($form->grade as $key => $thegrade) { + unset($element); + $element->workshopid = $workshop->id; + $element->assessmentid = $assessment->id; + $element->elementno = $key; + $element->feedback = $form->{"feedback_$key"}; + $element->grade = $thegrade; + if (!$element->id = insert_record("workshop_grades", $element)) { + error("Could not insert workshop grade!"); + } + } + // now work out the grade... + $rawgrade=0; + $totalweight=0; + foreach ($form->grade as $key => $grade) { + $maxscore = $elements[$key]->maxscore; + $weight = $WORKSHOP_EWEIGHTS[$elements[$key]->weight]; + if ($weight > 0) { + $totalweight += $weight; + } + $rawgrade += ($grade / $maxscore) * $weight; + } + $grade = 100.0 * ($rawgrade / $totalweight); + break; + + } // end of switch + // any comment? - if (!empty($form->generalcomment)) { // update the object (no need to update the db record) + if (!empty($form->generalcomment)) { // update the object (no need to update the db record) $assessment->generalcomment = $form->generalcomment; - } - + } + // redisplay form, going back to original returnto address workshop_print_assessment($workshop, $assessment, true, true, $form->returnto); @@ -1179,161 +1179,161 @@ $timenow = time(); // don't fiddle about, delete all the old and add the new! - delete_records("workshop_grades", "assessmentid", $assessment->id); - - $form = data_submitted("nomatch"); // probably always come from the same page, change this statement - - //determine what kind of grading we have - switch ($workshop->gradingstrategy) { - case 0: // no grading - // Insert all the elements that contain something - for ($i = 0; $i < $workshop->nelements; $i++) { - unset($element); - $element->workshopid = $workshop->id; - $element->assessmentid = $assessment->id; - $element->elementno = $i; - $element->feedback = $form->{"feedback_$i"}; - if (!$element->id = insert_record("workshop_grades", $element)) { - error("Could not insert workshop grade!"); - } - } - $grade = 0; // set to satisfy save to db - break; - - case 1: // accumulative grading - // Insert all the elements that contain something - foreach ($form->grade as $key => $thegrade) { - unset($element); - $element->workshopid = $workshop->id; - $element->assessmentid = $assessment->id; - $element->elementno = $key; - $element->feedback = $form->{"feedback_$key"}; - $element->grade = $thegrade; - if (!$element->id = insert_record("workshop_grades", $element)) { - error("Could not insert workshop grade!"); - } - } - // now work out the grade... - $rawgrade=0; - $totalweight=0; - foreach ($form->grade as $key => $grade) { - $maxscore = $elements[$key]->maxscore; - $weight = $WORKSHOP_EWEIGHTS[$elements[$key]->weight]; - if ($weight > 0) { - $totalweight += $weight; - } - $rawgrade += ($grade / $maxscore) * $weight; - // echo "\$key, \$maxscore, \$weight, \$totalweight, \$grade, \$rawgrade : $key, $maxscore, $weight, $totalweight, $grade, $rawgrade
"; - } - $grade = 100.0 * ($rawgrade / $totalweight); - break; - - case 2: // error banded graded - // Insert all the elements that contain something - $error = 0.0; - for ($i =0; $i < $workshop->nelements; $i++) { - unset($element); - $element->workshopid = $workshop->id; - $element->assessmentid = $assessment->id; - $element->elementno = $i; - $element->feedback = $form->{"feedback_$i"}; - $element->grade = $form->grade[$i]; - if (!$element->id = insert_record("workshop_grades", $element)) { - error("Could not insert workshop grade!"); - } - if (empty($form->grade[$i])){ - $error += $WORKSHOP_EWEIGHTS[$elements[$i]->weight]; - } - } - // now save the adjustment - unset($element); - $i = $workshop->nelements; - $element->workshopid = $workshop->id; - $element->assessmentid = $assessment->id; - $element->elementno = $i; - $element->grade = $form->grade[$i]; - if (!$element->id = insert_record("workshop_grades", $element)) { - error("Could not insert workshop grade!"); - } - $grade = ($elements[intval($error + 0.5)]->maxscore + $form->grade[$i]) * 100 / $workshop->grade; + delete_records("workshop_grades", "assessmentid", $assessment->id); + + $form = data_submitted("nomatch"); // probably always come from the same page, change this statement + + //determine what kind of grading we have + switch ($workshop->gradingstrategy) { + case 0: // no grading + // Insert all the elements that contain something + for ($i = 0; $i < $workshop->nelements; $i++) { + unset($element); + $element->workshopid = $workshop->id; + $element->assessmentid = $assessment->id; + $element->elementno = $i; + $element->feedback = $form->{"feedback_$i"}; + if (!$element->id = insert_record("workshop_grades", $element)) { + error("Could not insert workshop grade!"); + } + } + $grade = 0; // set to satisfy save to db + break; + + case 1: // accumulative grading + // Insert all the elements that contain something + foreach ($form->grade as $key => $thegrade) { + unset($element); + $element->workshopid = $workshop->id; + $element->assessmentid = $assessment->id; + $element->elementno = $key; + $element->feedback = $form->{"feedback_$key"}; + $element->grade = $thegrade; + if (!$element->id = insert_record("workshop_grades", $element)) { + error("Could not insert workshop grade!"); + } + } + // now work out the grade... + $rawgrade=0; + $totalweight=0; + foreach ($form->grade as $key => $grade) { + $maxscore = $elements[$key]->maxscore; + $weight = $WORKSHOP_EWEIGHTS[$elements[$key]->weight]; + if ($weight > 0) { + $totalweight += $weight; + } + $rawgrade += ($grade / $maxscore) * $weight; + // echo "\$key, \$maxscore, \$weight, \$totalweight, \$grade, \$rawgrade : $key, $maxscore, $weight, $totalweight, $grade, $rawgrade
"; + } + $grade = 100.0 * ($rawgrade / $totalweight); + break; + + case 2: // error banded graded + // Insert all the elements that contain something + $error = 0.0; + for ($i =0; $i < $workshop->nelements; $i++) { + unset($element); + $element->workshopid = $workshop->id; + $element->assessmentid = $assessment->id; + $element->elementno = $i; + $element->feedback = $form->{"feedback_$i"}; + $element->grade = $form->grade[$i]; + if (!$element->id = insert_record("workshop_grades", $element)) { + error("Could not insert workshop grade!"); + } + if (empty($form->grade[$i])){ + $error += $WORKSHOP_EWEIGHTS[$elements[$i]->weight]; + } + } + // now save the adjustment + unset($element); + $i = $workshop->nelements; + $element->workshopid = $workshop->id; + $element->assessmentid = $assessment->id; + $element->elementno = $i; + $element->grade = $form->grade[$i]; + if (!$element->id = insert_record("workshop_grades", $element)) { + error("Could not insert workshop grade!"); + } + $grade = ($elements[intval($error + 0.5)]->maxscore + $form->grade[$i]) * 100 / $workshop->grade; // do sanity check if ($grade < 0) { $grade = 0; } elseif ($grade > 100) { $grade = 100; } - echo "".get_string("weightederrorcount", "workshop", intval($error + 0.5))."\n"; - break; - - case 3: // criteria grading - // save in the selected criteria value in element zero, - unset($element); - $element->workshopid = $workshop->id; - $element->assessmentid = $assessment->id; - $element->elementno = 0; - $element->grade = $form->grade[0]; - if (!$element->id = insert_record("workshop_grades", $element)) { - error("Could not insert workshop grade!"); - } - // now save the adjustment in element one - unset($element); - $element->workshopid = $workshop->id; - $element->assessmentid = $assessment->id; - $element->elementno = 1; - $element->grade = $form->grade[1]; - if (!$element->id = insert_record("workshop_grades", $element)) { - error("Could not insert workshop grade!"); - } - $grade = ($elements[$form->grade[0]]->maxscore + $form->grade[1]); - break; - - case 4: // rubric grading (identical to accumulative grading) - // Insert all the elements that contain something - foreach ($form->grade as $key => $thegrade) { - unset($element); - $element->workshopid = $workshop->id; - $element->assessmentid = $assessment->id; - $element->elementno = $key; - $element->feedback = $form->{"feedback_$key"}; - $element->grade = $thegrade; - if (!$element->id = insert_record("workshop_grades", $element)) { - error("Could not insert workshop grade!"); - } - } - // now work out the grade... - $rawgrade=0; - $totalweight=0; - foreach ($form->grade as $key => $grade) { - $maxscore = $elements[$key]->maxscore; - $weight = $WORKSHOP_EWEIGHTS[$elements[$key]->weight]; - if ($weight > 0) { - $totalweight += $weight; - } - $rawgrade += ($grade / $maxscore) * $weight; - } - $grade = 100.0 * ($rawgrade / $totalweight); - break; - - } // end of switch - - // update the time of the assessment record (may be re-edited)... - set_field("workshop_assessments", "timecreated", $timenow, "id", $assessment->id); - - if (!$submission = get_record("workshop_submissions", "id", $assessment->submissionid)) { - error ("Updateassessment: submission record not found"); - } - - // if the workshop does need peer agreement AND it's self assessment then set timeagreed - if ($workshop->agreeassessments and ($submission->userid == $assessment->userid)) { - set_field("workshop_assessments", "timeagreed", $timenow, "id", $assessment->id); - } - + echo "".get_string("weightederrorcount", "workshop", intval($error + 0.5))."\n"; + break; + + case 3: // criteria grading + // save in the selected criteria value in element zero, + unset($element); + $element->workshopid = $workshop->id; + $element->assessmentid = $assessment->id; + $element->elementno = 0; + $element->grade = $form->grade[0]; + if (!$element->id = insert_record("workshop_grades", $element)) { + error("Could not insert workshop grade!"); + } + // now save the adjustment in element one + unset($element); + $element->workshopid = $workshop->id; + $element->assessmentid = $assessment->id; + $element->elementno = 1; + $element->grade = $form->grade[1]; + if (!$element->id = insert_record("workshop_grades", $element)) { + error("Could not insert workshop grade!"); + } + $grade = ($elements[$form->grade[0]]->maxscore + $form->grade[1]); + break; + + case 4: // rubric grading (identical to accumulative grading) + // Insert all the elements that contain something + foreach ($form->grade as $key => $thegrade) { + unset($element); + $element->workshopid = $workshop->id; + $element->assessmentid = $assessment->id; + $element->elementno = $key; + $element->feedback = $form->{"feedback_$key"}; + $element->grade = $thegrade; + if (!$element->id = insert_record("workshop_grades", $element)) { + error("Could not insert workshop grade!"); + } + } + // now work out the grade... + $rawgrade=0; + $totalweight=0; + foreach ($form->grade as $key => $grade) { + $maxscore = $elements[$key]->maxscore; + $weight = $WORKSHOP_EWEIGHTS[$elements[$key]->weight]; + if ($weight > 0) { + $totalweight += $weight; + } + $rawgrade += ($grade / $maxscore) * $weight; + } + $grade = 100.0 * ($rawgrade / $totalweight); + break; + + } // end of switch + + // update the time of the assessment record (may be re-edited)... + set_field("workshop_assessments", "timecreated", $timenow, "id", $assessment->id); + + if (!$submission = get_record("workshop_submissions", "id", $assessment->submissionid)) { + error ("Updateassessment: submission record not found"); + } + + // if the workshop does need peer agreement AND it's self assessment then set timeagreed + if ($workshop->agreeassessments and ($submission->userid == $assessment->userid)) { + set_field("workshop_assessments", "timeagreed", $timenow, "id", $assessment->id); + } + // set grade... - set_field("workshop_assessments", "grade", $grade, "id", $assessment->id); + set_field("workshop_assessments", "grade", $grade, "id", $assessment->id); // ...and clear the timegraded but set the graddinggrade to maximum, may to reduced subsequently... - set_field("workshop_assessments", "timegraded", 0, "id", $assessment->id); - set_field("workshop_assessments", "gradinggrade", 100, "id", $assessment->id); - // ...and the resubmission flag + set_field("workshop_assessments", "timegraded", 0, "id", $assessment->id); + set_field("workshop_assessments", "gradinggrade", 100, "id", $assessment->id); + // ...and the resubmission flag set_field("workshop_assessments", "resubmission", 0, "id", $assessment->id); // if there's examples or peer assessments clear the counter in the submission so that @@ -1370,10 +1370,10 @@ } // any comment? - if (!empty($form->generalcomment)) { - set_field("workshop_assessments", "generalcomment", $form->generalcomment, "id", $assessment->id); - } - + if (!empty($form->generalcomment)) { + set_field("workshop_assessments", "generalcomment", $form->generalcomment, "id", $assessment->id); + } + add_to_log($course->id, "workshop", "assess", "assessments.php?action=viewassessment&id=$cm->id&aid=$assessment->id", "$assessment->id", "$cm->id"); @@ -1474,62 +1474,62 @@ /****************** user delete ************************************/ elseif ($action == 'userdelete' ) { - if (empty($_GET['aid'])) { - error("User delete: assessment id missing"); - } - - print_string("deleting", "workshop"); - // first delete all the associated records... - delete_records("workshop_comments", "assessmentid", $_GET['aid']); - delete_records("workshop_grades", "assessmentid", $_GET['aid']); - // ...now delete the assessment... - delete_records("workshop_assessments", "id", $_GET['aid']); - - print_continue("view.php?id=$cm->id"); - } - - - /****************** view all assessments ***********************/ - elseif ($action == 'viewallassessments') { - - if (!$submission = get_record("workshop_submissions", "id", $_GET['sid'])) { - error("View All Assessments: submission record not found"); - } - - if ($assessments = workshop_get_assessments($submission)) { - foreach ($assessments as $assessment) { - workshop_print_assessment($workshop, $assessment); - } - } - // only called from list all submissions - print_continue("submissions.php?action=listallsubmissions&id=$cm->id"); - } - - - /****************** view assessment *****************************/ - elseif ($action == 'viewassessment') { - - optional_variable($allowcomments); - if (!isset($allowcomments)) { - $allowcomments = false; - } - - // get the assessment record - if (!$assessment = get_record("workshop_assessments", "id", $_GET['aid'])) { - error("Assessment record not found"); - } - - // show assessment but don't allow changes - workshop_print_assessment($workshop, $assessment, false, $allowcomments); - - print_continue("view.php?id=$cm->id"); - } - - - /*************** no man's land **************************************/ - else { - error("Fatal Error: Unknown Action: ".$action."\n"); - } + if (empty($_GET['aid'])) { + error("User delete: assessment id missing"); + } + + print_string("deleting", "workshop"); + // first delete all the associated records... + delete_records("workshop_comments", "assessmentid", $_GET['aid']); + delete_records("workshop_grades", "assessmentid", $_GET['aid']); + // ...now delete the assessment... + delete_records("workshop_assessments", "id", $_GET['aid']); + + print_continue("view.php?id=$cm->id"); + } + + + /****************** view all assessments ***********************/ + elseif ($action == 'viewallassessments') { + + if (!$submission = get_record("workshop_submissions", "id", $_GET['sid'])) { + error("View All Assessments: submission record not found"); + } + + if ($assessments = workshop_get_assessments($submission)) { + foreach ($assessments as $assessment) { + workshop_print_assessment($workshop, $assessment); + } + } + // only called from list all submissions + print_continue("submissions.php?action=listallsubmissions&id=$cm->id"); + } + + + /****************** view assessment *****************************/ + elseif ($action == 'viewassessment') { + + optional_variable($allowcomments); + if (!isset($allowcomments)) { + $allowcomments = false; + } + + // get the assessment record + if (!$assessment = get_record("workshop_assessments", "id", $_GET['aid'])) { + error("Assessment record not found"); + } + + // show assessment but don't allow changes + workshop_print_assessment($workshop, $assessment, false, $allowcomments); + + print_continue("view.php?id=$cm->id"); + } + + + /*************** no man's land **************************************/ + else { + error("Fatal Error: Unknown Action: ".$action."\n"); + } print_footer($course); diff --git a/mod/workshop/backuplib.php b/mod/workshop/backuplib.php index 87987c7052..ae3f283c78 100644 --- a/mod/workshop/backuplib.php +++ b/mod/workshop/backuplib.php @@ -65,7 +65,10 @@ fwrite ($bf,full_tag("ANONYMOUS",4,false,$workshop->anonymous)); fwrite ($bf,full_tag("INCLUDESELF",4,false,$workshop->includeself)); fwrite ($bf,full_tag("MAXBYTES",4,false,$workshop->maxbytes)); - fwrite ($bf,full_tag("DEADLINE",4,false,$workshop->deadline)); + fwrite ($bf,full_tag("SUBMISSIONSTART",4,false,$workshop->submissionstart)); + fwrite ($bf,full_tag("ASSESSMENTSTART",4,false,$workshop->assessmentstart)); + fwrite ($bf,full_tag("SUBMISSIONEND",4,false,$workshop->submissionend)); + fwrite ($bf,full_tag("ASSESSMENTEND",4,false,$workshop->submissionstart)); fwrite ($bf,full_tag("RELEASEGRADES",4,false,$workshop->releasegrades)); fwrite ($bf,full_tag("GRADE",4,false,$workshop->grade)); fwrite ($bf,full_tag("GRADINGGRADE",4,false,$workshop->gradinggrade)); diff --git a/mod/workshop/db/mysql.php b/mod/workshop/db/mysql.php index d576616a3c..b5f160dc93 100644 --- a/mod/workshop/db/mysql.php +++ b/mod/workshop/db/mysql.php @@ -7,52 +7,52 @@ function workshop_upgrade($oldversion) { global $CFG; if ($oldversion < 2003050400) { - execute_sql(" ALTER TABLE `{$CFG->prefix}workshop` CHANGE `graded` `agreeassessments` TINYINT(2) UNSIGNED DEFAULT '0' NOT NULL"); - execute_sql(" ALTER TABLE `{$CFG->prefix}workshop` CHANGE `showgrades` `hidegrades` TINYINT(2) UNSIGNED DEFAULT '0' NOT NULL"); - execute_sql(" ALTER TABLE `{$CFG->prefix}workshop_assessments` ADD `timeagreed` INT(10) UNSIGNED DEFAULT '0' NOT NULL AFTER `timecreated`"); - execute_sql(" + execute_sql(" ALTER TABLE `{$CFG->prefix}workshop` CHANGE `graded` `agreeassessments` TINYINT(2) UNSIGNED DEFAULT '0' NOT NULL"); + execute_sql(" ALTER TABLE `{$CFG->prefix}workshop` CHANGE `showgrades` `hidegrades` TINYINT(2) UNSIGNED DEFAULT '0' NOT NULL"); + execute_sql(" ALTER TABLE `{$CFG->prefix}workshop_assessments` ADD `timeagreed` INT(10) UNSIGNED DEFAULT '0' NOT NULL AFTER `timecreated`"); + execute_sql(" CREATE TABLE `{$CFG->prefix}workshop_comments` ( `id` int(10) unsigned NOT NULL auto_increment, - # workshopid not necessary just makes deleting instance easier - `workshopid` int(10) unsigned NOT NULL default '0', + # workshopid not necessary just makes deleting instance easier + `workshopid` int(10) unsigned NOT NULL default '0', `assessmentid` int(10) unsigned NOT NULL default '0', `userid` int(10) unsigned NOT NULL default '0', `timecreated` int(10) unsigned NOT NULL default '0', - `mailed` tinyint(2) unsigned NOT NULL default '0', + `mailed` tinyint(2) unsigned NOT NULL default '0', `comments` text NOT NULL, PRIMARY KEY (`id`) ) COMMENT='Defines comments' "); - } - - if ($oldversion < 2003051400) { - execute_sql(" ALTER TABLE `{$CFG->prefix}workshop` ADD `showleaguetable` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0' AFTER `gradingweight`"); - execute_sql(" - CREATE TABLE `{$CFG->prefix}workshop_rubrics` ( - `id` int(10) unsigned NOT NULL auto_increment, - `workshopid` int(10) unsigned NOT NULL default '0', - `elementid` int(10) unsigned NOT NULL default '0', - `rubricno` tinyint(3) unsigned NOT NULL default '0', - `description` text NOT NULL, - PRIMARY KEY (`id`) - ) COMMENT='Info about the rubrics marking scheme' + } + + if ($oldversion < 2003051400) { + execute_sql(" ALTER TABLE `{$CFG->prefix}workshop` ADD `showleaguetable` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0' AFTER `gradingweight`"); + execute_sql(" + CREATE TABLE `{$CFG->prefix}workshop_rubrics` ( + `id` int(10) unsigned NOT NULL auto_increment, + `workshopid` int(10) unsigned NOT NULL default '0', + `elementid` int(10) unsigned NOT NULL default '0', + `rubricno` tinyint(3) unsigned NOT NULL default '0', + `description` text NOT NULL, + PRIMARY KEY (`id`) + ) COMMENT='Info about the rubrics marking scheme' "); - } - - if ($oldversion < 2003082200) { - - execute_sql(" ALTER TABLE `{$CFG->prefix}workshop_rubrics` CHANGE `elementid` `elementno` INT(10) UNSIGNED NOT NULL DEFAULT '0'"); - } + } + + if ($oldversion < 2003082200) { + + execute_sql(" ALTER TABLE `{$CFG->prefix}workshop_rubrics` CHANGE `elementid` `elementno` INT(10) UNSIGNED NOT NULL DEFAULT '0'"); + } - if ($oldversion < 2003092500) { - execute_sql(" ALTER TABLE `{$CFG->prefix}workshop` ADD `overallocation` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0' AFTER `nsassessments`"); - } + if ($oldversion < 2003092500) { + execute_sql(" ALTER TABLE `{$CFG->prefix}workshop` ADD `overallocation` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0' AFTER `nsassessments`"); + } if ($oldversion < 2003100200) { - - execute_sql(" ALTER TABLE `{$CFG->prefix}workshop_assessments` ADD `resubmission` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0' AFTER `mailed`"); - } - + + execute_sql(" ALTER TABLE `{$CFG->prefix}workshop_assessments` ADD `resubmission` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0' AFTER `mailed`"); + } + if ($oldversion < 2003100800) { // tidy up log_display entries execute_sql("DELETE FROM `{$CFG->prefix}log_display` WHERE `module` = 'workshop'"); @@ -82,8 +82,8 @@ function workshop_upgrade($oldversion) { } if ($oldversion < 2004081100) { - table_column("workshop", "", "gradinggrade", "INTEGER", "4", "UNSIGNED", "0", "NOT NULL", "grade"); - table_column("workshop", "", "assessmentcomps", "INTEGER", "4", "UNSIGNED", "2", "NOT NULL", "ntassessments"); + table_column("workshop", "", "gradinggrade", "INTEGER", "4", "UNSIGNED", "0", "NOT NULL", "grade"); + table_column("workshop", "", "assessmentcomps", "INTEGER", "4", "UNSIGNED", "2", "NOT NULL", "ntassessments"); execute_sql("ALTER TABLE `{$CFG->prefix}workshop` DROP COLUMN `gradingweight`"); execute_sql("ALTER TABLE `{$CFG->prefix}workshop` DROP COLUMN `mergegrades`"); execute_sql("ALTER TABLE `{$CFG->prefix}workshop` DROP COLUMN `peerweight`"); @@ -95,18 +95,18 @@ function workshop_upgrade($oldversion) { } if ($oldversion < 2004092400) { - table_column("workshop", "", "nattachments", "INTEGER", "4", "UNSIGNED", "0", "NOT NULL", "nelements"); - table_column("workshop_submissions", "", "description", "TEXT", "", "", "", "", "mailed"); + table_column("workshop", "", "nattachments", "INTEGER", "4", "UNSIGNED", "0", "NOT NULL", "nelements"); + table_column("workshop_submissions", "", "description", "TEXT", "", "", "", "", "mailed"); execute_sql("ALTER TABLE `{$CFG->prefix}workshop_submissions` ADD INDEX (`userid`)"); execute_sql("ALTER TABLE `{$CFG->prefix}workshop_assessments` ADD INDEX (`submissionid`)"); 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"); + 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")) { @@ -120,22 +120,22 @@ function workshop_upgrade($oldversion) { } if ($oldversion < 2004102800) { - table_column("workshop", "", "releasegrades", "INTEGER", "10", "UNSIGNED", "0", "NOT NULL", "deadline"); - execute_sql(" + table_column("workshop", "", "releasegrades", "INTEGER", "10", "UNSIGNED", "0", "NOT NULL", "deadline"); + execute_sql(" CREATE TABLE `{$CFG->prefix}workshop_stockcomments` ( `id` int(10) unsigned NOT NULL auto_increment, - `workshopid` int(10) unsigned NOT NULL default '0', + `workshopid` int(10) unsigned NOT NULL default '0', `elementno` int(10) unsigned NOT NULL default '0', `comments` text NOT NULL, PRIMARY KEY (`id`) ) COMMENT='Defines stockcomments, the teacher comment bank' "); - } + } if ($oldversion < 2004111000) { - table_column("workshop_elements", "", "stddev", "FLOAT", "", "", "0", "NOT NULL"); - table_column("workshop_elements", "", "totalassessments", "INTEGER", "10", "", "0", "NOT NULL"); - execute_sql(" ALTER TABLE `{$CFG->prefix}workshop_elements` CHANGE `weight` `weight` INT(4) UNSIGNED NOT NULL DEFAULT '11'"); + table_column("workshop_elements", "", "stddev", "FLOAT", "", "", "0", "NOT NULL"); + table_column("workshop_elements", "", "totalassessments", "INTEGER", "10", "", "0", "NOT NULL"); + execute_sql(" ALTER TABLE `{$CFG->prefix}workshop_elements` CHANGE `weight` `weight` INT(4) UNSIGNED NOT NULL DEFAULT '11'"); table_column("workshop_submissions", "", "nassessments", "INTEGER", "10", "", "0", "NOT NULL"); execute_sql("ALTER TABLE `{$CFG->prefix}workshop_submissions` DROP COLUMN `teachergrade`"); execute_sql("ALTER TABLE `{$CFG->prefix}workshop_submissions` DROP COLUMN `peergrade`"); @@ -177,6 +177,26 @@ function workshop_upgrade($oldversion) { modify_database('','ALTER TABLE prefix_workshop_submissions ADD INDEX mailed (mailed);'); } + if ($oldversion < 2004120402) { + table_column('workshop', '', 'submissionstart', 'INTEGER', '10', 'UNSIGNED', '0', 'NOT NULL', 'maxbytes'); + table_column('workshop', '', 'assessmentstart', 'INTEGER', '10', 'UNSIGNED', '0', 'NOT NULL', 'submissionstart'); + table_column('workshop', 'deadline', 'submissionend', 'INTEGER', '10', 'UNSIGNED', '0', 'NOT NULL', 'assessmentstart'); + table_column('workshop', '', 'assessmentend', 'INTEGER', '10', 'UNSIGNED', '0', 'NOT NULL', 'submissionend'); + + $workshops = get_records('workshop'); + foreach ($workshops as $workshop) { + $early = (time() < $workshop->submissionend) ? 0 : $workshop->submissionend; + $late = (time() > $workshop->submissionend) ? 0 : $workshop->submissionend; + set_field('workshop', 'submissionstart', ($workshop->phase > 1) ? $early : $late, 'id', $workshop->id); + set_field('workshop', 'assessmentstart', ($workshop->phase > 2) ? $early : $late, 'id', $workshop->id); + set_field('workshop', 'submissionend', ($workshop->phase > 3) ? $early : $late, 'id', $workshop->id); + set_field('workshop', 'assessmentend', ($workshop->phase > 4) ? $early : $late, 'id', $workshop->id); + } + execute_sql('ALTER TABLE '. $CFG->prefix .'workshop DROP COLUMN phase'); + + execute_sql("UPDATE {$CFG->prefix}event SET eventtype = 'submissionend' WHERE eventtype = 'deadline' AND modulename = 'workshop'", false); + } + return true; } diff --git a/mod/workshop/db/mysql.sql b/mod/workshop/db/mysql.sql index 5d598d2fec..3d004eeb55 100644 --- a/mod/workshop/db/mysql.sql +++ b/mod/workshop/db/mysql.sql @@ -19,7 +19,10 @@ CREATE TABLE `prefix_workshop` ( `anonymous` tinyint(2) unsigned NOT NULL default '0', `includeself` tinyint(2) unsigned NOT NULL default '0', `maxbytes` int(10) unsigned NOT NULL default '100000', - `deadline` int(10) unsigned NOT NULL default '0', + `submissionstart` int(10) unsigned NOT NULL default '0', + `assessmentstart` int(10) unsigned NOT NULL default '0', + `submissionend` int(10) unsigned NOT NULL default '0', + `assessmentend` int(10) unsigned NOT NULL default '0', `releasegrades` int(10) unsigned NOT NULL default '0', `grade` tinyint(3) NOT NULL default '0', `gradinggrade` tinyint(3) NOT NULL default '0', @@ -182,4 +185,3 @@ INSERT INTO `prefix_log_display` VALUES ('workshop', 'set up', 'workshop', 'name INSERT INTO `prefix_log_display` VALUES ('workshop', 'submissions', 'workshop', 'name'); INSERT INTO `prefix_log_display` VALUES ('workshop', 'view', 'workshop', 'name'); INSERT INTO `prefix_log_display` VALUES ('workshop', 'update', 'workshop', 'name'); - diff --git a/mod/workshop/db/postgres7.php b/mod/workshop/db/postgres7.php index 0095c50259..980dceb438 100644 --- a/mod/workshop/db/postgres7.php +++ b/mod/workshop/db/postgres7.php @@ -7,18 +7,18 @@ function workshop_upgrade($oldversion) { global $CFG; if ($oldversion < 2003050400) { - table_column("workshop","graded", "agreeassessments", "INT","2", "", "0" ,"NOT NULL"); - table_column("workshop", "showgrades","hidegrades", "INT","2", "","0", "NOT NULL"); - table_column("workshop_assessments","","timeagreed", "INT","8", "UNSIGNED", "0", "NOT NULL" ); - - execute_sql(" + table_column("workshop","graded", "agreeassessments", "INT","2", "", "0" ,"NOT NULL"); + table_column("workshop", "showgrades","hidegrades", "INT","2", "","0", "NOT NULL"); + table_column("workshop_assessments","","timeagreed", "INT","8", "UNSIGNED", "0", "NOT NULL" ); + + execute_sql(" CREATE TABLE {$CFG->prefix}workshop_comments ( id SERIAL8 PRIMARY KEY , workshopid int8 NOT NULL default '0', assessmentid int8 NOT NULL default '0', userid int8 NOT NULL default '0', timecreated int8 NOT NULL default '0', - mailed int2 NOT NULL default '0', + mailed int2 NOT NULL default '0', comments text NOT NULL ) "); @@ -26,30 +26,30 @@ function workshop_upgrade($oldversion) { if ($oldversion < 2003051400) { table_column("workshop","","showleaguetable", "INTEGER", "4", "unsigned", "0", "not null", "gradingweight"); - execute_sql(" - CREATE TABLE {$CFG->prefix}workshop_rubrics ( - id SERIAL8 PRIMARY KEY, - workshopid int8 NOT NULL default '0', - elementid int8 NOT NULL default '0', - rubricno int4 NOT NULL default '0', - description text NOT NULL, - ) + execute_sql(" + CREATE TABLE {$CFG->prefix}workshop_rubrics ( + id SERIAL8 PRIMARY KEY, + workshopid int8 NOT NULL default '0', + elementid int8 NOT NULL default '0', + rubricno int4 NOT NULL default '0', + description text NOT NULL, + ) "); - } - - if ($oldversion < 2003082200) { - table_column("workshop_rubrics", "elementid", "elementno", "INTEGER", "10", "unsigned", "0", "not null", "id"); - } + } + + if ($oldversion < 2003082200) { + table_column("workshop_rubrics", "elementid", "elementno", "INTEGER", "10", "unsigned", "0", "not null", "id"); + } - if ($oldversion < 2003092500) { + if ($oldversion < 2003092500) { table_column("workshop", "", "overallocation", "INTEGER", "4", "unsigned", "0", "not null", "nsassesments"); - } + } if ($oldversion < 2003100200) { - + table_column("workshop_assesments", "", "resubmission", "INTEGER", "4", "unsigned", "0", "not null", "mailed"); - } - + } + if ($oldversion < 2003100800) { // tidy up log_display entries execute_sql("DELETE FROM {$CFG->prefix}log_display WHERE module = 'workshop'"); @@ -76,8 +76,8 @@ function workshop_upgrade($oldversion) { } if ($oldversion < 2004081100) { - table_column("workshop", "", "gradinggrade", "INTEGER", "4", "UNSIGNED", "0", "NOT NULL", "grade"); - table_column("workshop", "", "assessmentcomps", "INTEGER", "4", "UNSIGNED", "2", "NOT NULL", "ntassessments"); + table_column("workshop", "", "gradinggrade", "INTEGER", "4", "UNSIGNED", "0", "NOT NULL", "grade"); + table_column("workshop", "", "assessmentcomps", "INTEGER", "4", "UNSIGNED", "2", "NOT NULL", "ntassessments"); execute_sql("ALTER TABLE {$CFG->prefix}workshop DROP COLUMN gradingweight"); execute_sql("ALTER TABLE {$CFG->prefix}workshop DROP COLUMN mergegrades"); execute_sql("ALTER TABLE {$CFG->prefix}workshop DROP COLUMN peerweight"); @@ -89,18 +89,18 @@ function workshop_upgrade($oldversion) { } if ($oldversion < 2004092400) { - table_column("workshop", "", "nattachments", "INTEGER", "4", "UNSIGNED", "0", "NOT NULL", "nelements"); - table_column("workshop_submissions", "", "description", "TEXT", "", "", "", "", "mailed"); + table_column("workshop", "", "nattachments", "INTEGER", "4", "UNSIGNED", "0", "NOT NULL", "nelements"); + table_column("workshop_submissions", "", "description", "TEXT", "", "", "", "", "mailed"); execute_sql("CREATE INDEX {$CFG->prefix}workshop_submissions_userid_idx ON {$CFG->prefix}workshop_submissions (userid)"); execute_sql("CREATE INDEX {$CFG->prefix}workshop_assessments_submissionid_idx ON {$CFG->prefix}workshop_assessments (submissionid)"); execute_sql("CREATE INDEX {$CFG->prefix}workshop_assessments_userid_idx ON {$CFG->prefix}workshop_assessments (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"); + 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")) { @@ -114,21 +114,21 @@ function workshop_upgrade($oldversion) { } if ($oldversion < 2004102800) { - table_column("workshop", "", "releasegrades", "INTEGER", "10", "UNSIGNED", "0", "NOT NULL", "deadline"); - execute_sql(" + table_column("workshop", "", "releasegrades", "INTEGER", "10", "UNSIGNED", "0", "NOT NULL", "deadline"); + execute_sql(" CREATE TABLE {$CFG->prefix}workshop_stockcomments ( id SERIAL PRIMARY KEY, - workshopid INT8 NOT NULL default '0', + workshopid INT8 NOT NULL default '0', elementno INT8 NOT NULL default '0', comments text NOT NULL ) "); - } + } if ($oldversion < 2004111000) { - table_column("workshop_elements", "", "stddev", "FLOAT", "", "", "0", "NOT NULL"); - table_column("workshop_elements", "", "totalassessments", "INTEGER", "10", "", "0", "NOT NULL"); - table_column("workshop_elements", "weight", "weight", "INTEGER", "4", "UNSIGNED", "11", "NOT NULL"); + table_column("workshop_elements", "", "stddev", "FLOAT", "", "", "0", "NOT NULL"); + table_column("workshop_elements", "", "totalassessments", "INTEGER", "10", "", "0", "NOT NULL"); + table_column("workshop_elements", "weight", "weight", "INTEGER", "4", "UNSIGNED", "11", "NOT NULL"); table_column("workshop_submissions", "", "nassessments", "INTEGER", "10", "", "0", "NOT NULL"); execute_sql("ALTER TABLE {$CFG->prefix}workshop_submissions DROP COLUMN teachergrade"); execute_sql("ALTER TABLE {$CFG->prefix}workshop_submissions DROP COLUMN peergrade"); @@ -170,6 +170,26 @@ function workshop_upgrade($oldversion) { modify_database('','CREATE INDEX prefix_workshop_submissions_mailed_idx ON prefix_workshop_submissions (mailed);'); } + if ($oldversion < 2004120402) { + table_column('workshop', '', 'submissionstart', 'INTEGER', '10', 'UNSIGNED', '0', 'NOT NULL', 'maxbytes'); + table_column('workshop', '', 'assessmentstart', 'INTEGER', '10', 'UNSIGNED', '0', 'NOT NULL', 'submissionstart'); + table_column('workshop', 'deadline', 'submissionend', 'INTEGER', '10', 'UNSIGNED', '0', 'NOT NULL', 'assessmentstart'); + table_column('workshop', '', 'assessmentend', 'INTEGER', '10', 'UNSIGNED', '0', 'NOT NULL', 'submissionend'); + + $workshops = get_records('workshop'); + foreach ($workshops as $workshop) { + $early = (time() < $workshop->submissionend) ? 0 : $workshop->submissionend; + $late = (time() > $workshop->submissionend) ? 0 : $workshop->submissionend; + set_field('workshop', 'submissionstart', ($workshop->phase > 1) ? $early : $late, 'id', $workshop->id); + set_field('workshop', 'assessmentstart', ($workshop->phase > 2) ? $early : $late, 'id', $workshop->id); + set_field('workshop', 'submissionend', ($workshop->phase > 3) ? $early : $late, 'id', $workshop->id); + set_field('workshop', 'assessmentend', ($workshop->phase > 4) ? $early : $late, 'id', $workshop->id); + } + execute_sql('ALTER TABLE '. $CFG->prefix .'workshop DROP COLUMN phase'); + + execute_sql("UPDATE {$CFG->prefix}event SET eventtype = 'submissionend' WHERE eventtype = 'deadline' AND modulename = 'workshop'", false); + } + return true; } diff --git a/mod/workshop/db/postgres7.sql b/mod/workshop/db/postgres7.sql index 73274321bc..0ce59fa545 100644 --- a/mod/workshop/db/postgres7.sql +++ b/mod/workshop/db/postgres7.sql @@ -19,7 +19,10 @@ CREATE TABLE prefix_workshop ( anonymous INT2 NOT NULL default '0', includeself INT2 NOT NULL default '0', maxbytes INT8 NOT NULL default '100000', - deadline INT8 NOT NULL default '0', + submissionstart INT8 NOT NULL default '0', + assessmentstart INT8 NOT NULL default '0', + submissionend INT8 NOT NULL default '0', + assessmentend INT8 NOT NULL default '0', releasegrades INT8 NOT NULL "0", grade INT8 NOT NULL default '0', gradinggrade INT4 NOT NULL default '0', diff --git a/mod/workshop/index.php b/mod/workshop/index.php index 9c2c4d013c..e60e548f37 100644 --- a/mod/workshop/index.php +++ b/mod/workshop/index.php @@ -48,35 +48,24 @@ foreach ($workshops as $workshop) { if (isteacher($course->id, $USER->id)) { // teacher see info (students see grade) - switch ($workshop->phase) { - case 0: - case 1: $info = get_string("phase1short", "workshop"); - break; - case 2: $info = get_string("phase2short", "workshop"); - break; - case 3: $info = get_string("phase3short", "workshop"); - break; - case 4: $info = get_string("phase4short", "workshop"); - break; - case 5: $info = get_string("phase5short", "workshop"); - break; - } - if ($workshop->phase > 1) { + $info = workshop_phase($workshop, 'short'); + if (time() > $workshop->submissionstart) { if ($num = workshop_count_student_submissions_for_assessment($workshop, $USER)) { $info .= " [".get_string("unassessed", "workshop", $num)."]"; } } } + $due = userdate($workshop->submissionend); + if ($submissions = workshop_get_user_submissions($workshop, $USER)) { foreach ($submissions as $submission) { - if ($submission->timecreated <= $workshop->deadline) { + if ($submission->timecreated <= $workshop->submissionend) { $submitted = userdate($submission->timecreated); } else { $submitted = "".userdate($submission->timecreated).""; } - $due = userdate($workshop->deadline); if (!$workshop->visible) { //Show dimmed if the mod is hidden $link = "coursemodule\">$workshop->name
"; @@ -119,7 +108,6 @@ } else { // no submission $submitted = get_string("no"); - $due = userdate($workshop->deadline); if (!$workshop->visible) { //Show dimmed if the mod is hidden $link = "coursemodule\">$workshop->name"; diff --git a/mod/workshop/lib.php b/mod/workshop/lib.php index 356fb3bcaf..8150804b77 100644 --- a/mod/workshop/lib.php +++ b/mod/workshop/lib.php @@ -65,6 +65,7 @@ $WORKSHOP_ASSESSMENT_COMPS = array ( /*** Standard Moodle functions ****************** workshop_add_instance($workshop) +workshop_check_dates($workshop) workshop_cron () workshop_delete_instance($id) workshop_grades($workshopid) @@ -83,35 +84,74 @@ function workshop_add_instance($workshop) { // of the new instance. $workshop->timemodified = time(); - - $workshop->deadline = make_timestamp($workshop->deadlineyear, - $workshop->deadlinemonth, $workshop->deadlineday, $workshop->deadlinehour, - $workshop->deadlineminute); + + $workshop->submissionstart = make_timestamp($workshop->submissionstartyear, + $workshop->submissionstartmonth, $workshop->submissionstartday, $workshop->submissionstarthour, + $workshop->submissionstartminute); + + $workshop->assessmentstart = make_timestamp($workshop->assessmentstartyear, + $workshop->assessmentstartmonth, $workshop->assessmentstartday, $workshop->assessmentstarthour, + $workshop->assessmentstartminute); + + $workshop->submissionend = make_timestamp($workshop->submissionendyear, + $workshop->submissionendmonth, $workshop->submissionendday, $workshop->submissionendhour, + $workshop->submissionendminute); + + $workshop->assessmentend = make_timestamp($workshop->assessmentendyear, + $workshop->assessmentendmonth, $workshop->assessmentendday, $workshop->assessmentendhour, + $workshop->assessmentendminute); $workshop->releasegrades = make_timestamp($workshop->releaseyear, $workshop->releasemonth, $workshop->releaseday, $workshop->releasehour, $workshop->releaseminute); + + if (!workshop_check_dates($workshop)) { + return get_string('invaliddates', 'workshop'); + } if ($returnid = insert_record("workshop", $workshop)) { $event = NULL; - $event->name = $workshop->name; + $event->name = get_string('submissionstartevent','workshop', $workshop->name); $event->description = $workshop->description; $event->courseid = $workshop->course; $event->groupid = 0; $event->userid = 0; $event->modulename = 'workshop'; $event->instance = $returnid; - $event->eventtype = 'deadline'; - $event->timestart = $workshop->deadline; + $event->eventtype = 'submissionstart'; + $event->timestart = $workshop->submissionstart; $event->timeduration = 0; + add_event($event); + + $event->name = get_string('submissionendevent','workshop', $workshop->name); + $event->eventtype = 'submissionend'; + $event->timestart = $workshop->submissionend; + add_event($event); + $event->name = get_string('assessmentstartevent','workshop', $workshop->name); + $event->eventtype = 'assessmentstart'; + $event->timestart = $workshop->assessmentstart; + add_event($event); + + $event->name = get_string('assessmentendevent','workshop', $workshop->name); + $event->eventtype = 'assessmentend'; + $event->timestart = $workshop->assessmentend; add_event($event); } return $returnid; } +/////////////////////////////////////////////////////////////////////////////// +// returns true if the dates are valid, false otherwise +function workshop_check_dates($workshop) { + return ($workshop->submissionstart < $workshop->submissionend and + $workshop->submissionstart <= $workshop->assessmentstart and + $workshop->assessmentstart <= $workshop->assessmentend and + $workshop->submissionend < $workshop->assessmentend); +} + /////////////////////////////////////////////////////////////////////////////// function workshop_cron () { @@ -525,13 +565,13 @@ function workshop_delete_instance($id) { /////////////////////////////////////////////////////////////////////////////// function workshop_grades($workshopid) { /// Must return an array of grades, indexed by user, and a max grade. -/// only returns grades in phase 2 or greater +/// only returns grades once assessment has started /// returns nothing if workshop is not graded global $CFG; $return = null; if ($workshop = get_record("workshop", "id", $workshopid)) { - if (($workshop->phase > 1) and $workshop->gradingstrategy) { + if (($workshop->assessmentstart < time()) and $workshop->gradingstrategy) { if ($students = get_course_students($workshop->course)) { foreach ($students as $student) { if ($workshop->wtype) { @@ -809,26 +849,37 @@ function workshop_refresh_events($courseid = 0) { $moduleid = get_field('modules', 'id', 'name', 'workshop'); foreach ($workshops as $workshop) { - $event = NULL; - $event->name = addslashes($workshop->name); - $event->description = addslashes($workshop->description); - $event->timestart = $workshop->deadline; - - if ($event->id = get_field('event', 'id', 'modulename', 'workshop', 'instance', $workshop->id)) { - update_event($event); - } else { - $event->courseid = $workshop->course; - $event->groupid = 0; - $event->userid = 0; - $event->modulename = 'workshop'; - $event->instance = $workshop->id; - $event->eventtype = 'deadline'; - $event->timeduration = 0; - $event->visible = get_field('course_modules', 'visible', 'module', $moduleid, 'instance', $workshop->id); - add_event($event); + $dates = array( + 'submissionstart' => $workshop->submissionstart, + 'submissionend' => $workshop->submissionend, + 'assessmentstart' => $workshop->assessmentstart, + 'assessmentend' => $workshop->assessmentend + ); + + foreach ($dates as $type => $date) { + + if ($date) { + if ($event = get_record('event', 'modulename', 'workshop', 'instance', $workshop->id, 'eventtype', $type)) { + $event->name = addslashes(get_string($type.'event','workshop', $workshop->name)); + $event->description = addslashes($workshop->description); + $event->eventtype = $type; + $event->timestart = $date; + update_event($event); + } else { + $event->courseid = $workshop->course; + $event->modulename = 'workshop'; + $event->instance = $workshop->id; + $event->name = addslashes(get_string($type.'event','workshop', $workshop->name)); + $event->description = addslashes($workshop->description); + $event->eventtype = $type; + $event->timestart = $date; + $event->timeduration = 0; + $event->visible = get_field('course_modules', 'visible', 'module', $moduleid, 'instance', $workshop->id); + add_event($event); + } + } } - } return true; } @@ -842,13 +893,29 @@ function workshop_update_instance($workshop) { $workshop->timemodified = time(); - $workshop->deadline = make_timestamp($workshop->deadlineyear, - $workshop->deadlinemonth, $workshop->deadlineday, $workshop->deadlinehour, - $workshop->deadlineminute); + $workshop->submissionstart = make_timestamp($workshop->submissionstartyear, + $workshop->submissionstartmonth, $workshop->submissionstartday, $workshop->submissionstarthour, + $workshop->submissionstartminute); + + $workshop->assessmentstart = make_timestamp($workshop->assessmentstartyear, + $workshop->assessmentstartmonth, $workshop->assessmentstartday, $workshop->assessmentstarthour, + $workshop->assessmentstartminute); + + $workshop->submissionend = make_timestamp($workshop->submissionendyear, + $workshop->submissionendmonth, $workshop->submissionendday, $workshop->submissionendhour, + $workshop->submissionendminute); + + $workshop->assessmentend = make_timestamp($workshop->assessmentendyear, + $workshop->assessmentendmonth, $workshop->assessmentendday, $workshop->assessmentendhour, + $workshop->assessmentendminute); $workshop->releasegrades = make_timestamp($workshop->releaseyear, $workshop->releasemonth, $workshop->releaseday, $workshop->releasehour, $workshop->releaseminute); + + if (!workshop_check_dates($workshop)) { + return get_string('invaliddates', 'workshop'); + } // set the workshop's type $wtype = 0; // 3 phases, no grading grades @@ -858,31 +925,51 @@ function workshop_update_instance($workshop) { // encode password if necessary if (!empty($workshop->password)) { - $workshop->password = md5($workshop->password); - } else { - unset($workshop->password); - } + $workshop->password = md5($workshop->password); + } else { + unset($workshop->password); + } $workshop->id = $workshop->instance; if ($returnid = update_record("workshop", $workshop)) { - $event = NULL; - - if ($event->id = get_field('event', 'id', 'modulename', 'workshop', 'instance', $workshop->id)) { - - $event->name = $workshop->name; - $event->description = $workshop->description; - $event->timestart = $workshop->deadline; - - update_event($event); + $dates = array( + 'submissionstart' => $workshop->submissionstart, + 'submissionend' => $workshop->submissionend, + 'assessmentstart' => $workshop->assessmentstart, + 'assessmentend' => $workshop->assessmentend + ); + $moduleid = get_field('modules', 'id', 'name', 'workshop'); + + foreach ($dates as $type => $date) { + if ($event = get_record('event', 'modulename', 'workshop', 'instance', $workshop->id, 'eventtype', $type)) { + $event->name = get_string($type.'event','workshop', $workshop->name); + $event->description = $workshop->description; + $event->eventtype = $type; + $event->timestart = $date; + update_event($event); + } else if ($date) { + $event = NULL; + $event->name = get_string($type.'event','workshop', $workshop->name); + $event->description = $workshop->description; + $event->courseid = $workshop->course; + $event->groupid = 0; + $event->userid = 0; + $event->modulename = 'workshop'; + $event->instance = $workshop->instance; + $event->eventtype = $type; + $event->timestart = $date; + $event->timeduration = 0; + $event->visible = get_field('course_modules', 'visible', 'module', $moduleid, 'instance', $workshop->id); + add_event($event); + } } } return $returnid; } - /////////////////////////////////////////////////////////////////////////////// function workshop_user_complete($course, $user, $mod, $workshop) { if ($submission = workshop_get_student_submission($workshop, $user)) { diff --git a/mod/workshop/locallib.php b/mod/workshop/locallib.php index 08c1c8e423..51b16904be 100644 --- a/mod/workshop/locallib.php +++ b/mod/workshop/locallib.php @@ -67,6 +67,7 @@ workshop_list_unassessed_teacher_submissions($workshop, $user) { workshop_list_ungraded_assessments($workshop, $stype) { workshop_list_user_submissions($workshop, $user) { +workshop_calculate_phase($workshop, $style='') { workshop_print_assessment($workshop, $assessment, $allowchanges, $showcommentlinks, $returnto) workshop_print_assessments_by_user_for_admin($workshop, $user) { @@ -77,7 +78,6 @@ workshop_print_feedback($course, $submission) { workshop_print_league_table($workshop) { workshop_print_submission_assessments($workshop, $submission, $type) { workshop_print_submission_title($workshop, $user) { -workshop_print_tabbed_table($table) { workshop_print_time_to_deadline($time) { workshop_print_upload_form($workshop) { workshop_print_user_assessments($workshop, $user) { @@ -959,6 +959,7 @@ function workshop_list_assessed_submissions($workshop, $user) { } + ////////////////////////////////////////////////////////////////////////////////////// function workshop_list_peer_assessments($workshop, $user) { global $CFG; @@ -1791,9 +1792,8 @@ function workshop_list_user_submissions($workshop, $user) { if ($submissions = workshop_get_user_submissions($workshop, $user)) { foreach ($submissions as $submission) { - // allow user to edit or delete a submission if it's warm OR if the workshop is still in - // the submission phase - if (($submission->timecreated > ($timenow - $CFG->maxeditingtime)) or ($workshop->phase == 2)) { + // allow user to edit or delete a submission if it's warm OR if assessment period has not started + if (($submission->timecreated > ($timenow - $CFG->maxeditingtime)) or ($workshop->assessmentstart > time())) { $action = "id&sid=$submission->id\">". get_string("edit", "workshop")." | ". "id&sid=$submission->id\">". @@ -1816,6 +1816,33 @@ function workshop_list_user_submissions($workshop, $user) { } + +/////////////////////////////////////////////////////////////////////////////// +function workshop_phase($workshop, $style='') { + $time = time(); + if ($time < $workshop->submissionstart) { + return get_string('phase1'.$style, 'workshop'); + } + else if ($time < $workshop->submissionend) { + if ($time < $workshop->assessmentstart) { + return get_string('phase2'.$style, 'workshop'); + } else { + return get_string('phase3'.$style, 'workshop'); + } + } + else if ($time < $workshop->assessmentstart) { + return get_string('phase0'.$style, 'workshop'); + } + else if ($time < $workshop->assessmentend) { + return get_string('phase4'.$style, 'workshop'); + } + else { + return get_string('phase5'.$style, 'workshop'); + } + error('Something is wrong with the workshop dates'); +} + + ////////////////////////////////////////////////////////////////////////////////////// function workshop_print_assessment($workshop, $assessment = false, $allowchanges = false, $showcommentlinks = false, $returnto = '') { @@ -2543,17 +2570,31 @@ function workshop_print_assignment_info($workshop) { error("Course Module ID was incorrect"); } // print standard assignment heading - $strdifference = format_time($workshop->deadline - time()); - if (($workshop->deadline - time()) < 0) { - $strdifference = "$strdifference"; - } - $strduedate = userdate($workshop->deadline)." ($strdifference)"; print_simple_box_start("center"); print_heading($workshop->name, "center"); print_simple_box_start("center"); - echo "".get_string("duedate", "assignment").": $strduedate
"; + + // print phase and date info + $string = ''.get_string('currentphase', 'workshop').': '.workshop_phase($workshop).'
'; + $dates = array( + 'submissionstart' => $workshop->submissionstart, + 'submissionend' => $workshop->submissionend, + 'assessmentstart' => $workshop->assessmentstart, + 'assessmentend' => $workshop->assessmentend + ); + foreach ($dates as $type => $date) { + if ($date) { + $strdifference = format_time($date - time()); + if (($date - time()) < 0) { + $strdifference = "$strdifference"; + } + $string .= ''.get_string($type, 'workshop').': '.userdate($date)." ($strdifference)
"; + } + } + echo $string; + $grade = $workshop->gradinggrade + $workshop->grade; - echo "".get_string("maximumgrade").": $grade
"; + echo "
".get_string("maximumgrade").": $grade
"; echo "".get_string("detailsofassessment", "workshop").":
id&action=displaygradingform\">". get_string("specimenassessmentform", "workshop")."
"; @@ -2836,90 +2877,6 @@ function workshop_print_submission_title($workshop, $submission) { } -////////////////////////////////////////////////////////////////////////////////////// -function workshop_print_tabbed_heading($tabs) { -// Prints a tabbed heading where one of the tabs highlighted. -// $tabs is an object with several properties. -// $tabs->names is an array of tab names -// $tabs->urls is an array of links -// $tabs->align is an array of column alignments (defaults to "center") -// $tabs->size is an array of column sizes -// $tabs->wrap is an array of "nowrap"s or nothing -// $tabs->highlight is an index (zero based) of "active" heading . -// $tabs->width is an percentage of the page (defualts to 80%) -// $tabs->cellpadding padding on each cell (defaults to 5) - - global $CFG, $THEME; - - if (isset($tabs->names)) { - foreach ($tabs->names as $key => $name) { - if (!empty($tabs->urls[$key])) { - $url =$tabs->urls[$key]; - if ($tabs->highlight == $key) { - $tabcontents[$key] = "$name"; - } else { - $tabcontents[$key] = "$name"; - } - } else { - $tabcontents[$key] = "$name"; - } - } - } - - if (empty($tabs->width)) { - $tabs->width = "80%"; - } - - if (empty($tabs->cellpadding)) { - $tabs->cellpadding = "5"; - } - - // print_simple_box_start("center", "$table->width", "#ffffff", 0); - echo "cellpadding\" cellspacing=\"0\" class=\"generaltable\">\n"; - - if (!empty($tabs->names)) { - echo ""; - echo "\n"; - foreach ($tabcontents as $key => $tab) { - if (isset($align[$key])) { - $alignment = "align=\"$align[$key]\""; - } else { - $alignment = "align=\"center\""; - } - if (isset($size[$key])) { - $width = "width=\"$size[$key]\""; - } else { - $width = ""; - } - if (isset($wrap[$key])) { - $wrapping = "no wrap"; - } else { - $wrapping = ""; - } - if ($key == $tabs->highlight) { - echo "\n"; - } else { - echo "\n"; - } - echo "\n"; - } - echo "\n"; - } else { - echo "\n"; - } - // bottom stripe - $ncells = count($tabs->names)*2 +1; - $height = 2; - echo "\n"; - echo "
". - "wwwroot/pix/spacer.gif\" alt=\"\" />cellheading2\">$tabcellheading\">$tab". - "wwwroot/pix/spacer.gif\" alt=\"\" />
No names specified
cellheading2\">". - "wwwroot/pix/spacer.gif\" alt=\"\" />
\n"; - // print_simple_box_end(); - - return true; -} function workshop_print_time_to_deadline($time) { if ($time < 0) { diff --git a/mod/workshop/mod.html b/mod/workshop/mod.html index acbfd26fb7..d236f33ebc 100644 --- a/mod/workshop/mod.html +++ b/mod/workshop/mod.html @@ -1,5 +1,5 @@ dirroot/mod/workshop/lib.php"); // for parameter arrays + require_once("$CFG->dirroot/mod/workshop/lib.php"); // for parameter arrays // ...and fill the form if needed if (empty($form->name)) { $form->name = ""; @@ -17,8 +17,8 @@ $form->grade = 100; } if (!isset($form->gradingstrategy)) { - $form->gradingstrategy = 1; // default is accumulative - } + $form->gradingstrategy = 1; // default is accumulative + } if (!isset($form->nelements)) { $form->nelements = 1; } @@ -64,8 +64,20 @@ if (empty($form->maxbytes)) { $form->maxbytes = ""; } - if (empty($form->deadline)) { - $form->deadline = ""; + if (empty($form->submissionstart)) { + $form->submissionstart = time(); + } + if (empty($form->assessmentstart)) { + $form->assessmentstart = time(); + } + if (empty($form->submissionend)) { + $form->submissionend = time(); + } + if (empty($form->assessmentend)) { + $form->assessmentend = time(); + } + if (empty($form->releasegrades)) { + $form->releasegrades = time(); } ?> @@ -143,7 +155,7 @@ : gradingstrategy, ""); + choose_from_menu($WORKSHOP_TYPE, "gradingstrategy", $form->gradingstrategy, ""); helpbutton("gradingstrategy", get_string("gradingstrategy", "workshop"), "workshop"); ?> @@ -190,14 +202,14 @@ : - =0; $i--) { - $numbers[$i] = $i; - } - choose_from_menu($numbers, "ntassessments", $form->ntassessments, ""); + for ($i=20; $i>=0; $i--) { + $numbers[$i] = $i; + } + choose_from_menu($numbers, "ntassessments", $form->ntassessments, ""); helpbutton("nassessmentsofteachersexamples", get_string("numberofassessmentsofteachersexamples", "workshop"), "workshop"); - ?> + ?> @@ -205,10 +217,10 @@ : $COMPARISON) { $COMPARISONS[] = $COMPARISON['name']; - } + } choose_from_menu($COMPARISONS, "assessmentcomps", $form->assessmentcomps, ""); helpbutton("comparisonofassessments", get_string("comparisonofassessments", "workshop"), "workshop"); ?> @@ -218,28 +230,28 @@ : - =0; $i--) { - $numbers[$i] = $i; - } - choose_from_menu($numbers, "nsassessments", $form->nsassessments, ""); + for ($i=20; $i>=0; $i--) { + $numbers[$i] = $i; + } + choose_from_menu($numbers, "nsassessments", $form->nsassessments, ""); helpbutton("nassessmentsofstudentsubmissions", get_string("numberofassessmentsofstudentsubmissions", "workshop"), "workshop"); - ?> + ?> : - =0; $i--) { - $numbers[$i] = $i; - } - choose_from_menu($numbers, "teacherweight", $form->teacherweight, ""); + for ($i=10; $i>=0; $i--) { + $numbers[$i] = $i; + } + choose_from_menu($numbers, "teacherweight", $form->teacherweight, ""); helpbutton("teacherweight", get_string("weightforteacherassessments", "workshop"), "workshop"); - ?> + ?> @@ -319,7 +331,7 @@ usepassword, ""); + choose_from_menu($options, "usepassword", $form->usepassword, ""); helpbutton("usepassword", get_string("usepassword", "workshop"), "workshop"); ?> @@ -329,7 +341,7 @@ : " /> - + @@ -360,14 +372,44 @@ - : + : + submissionstart); + echo " - "; + print_time_selector("submissionstarthour", "submissionstartminute", $form->submissionstart); + helpbutton("submissionstart", get_string("submissionstart", "workshop"), "workshop"); + ?> + + + + : deadline); - echo " - "; - print_time_selector("deadlinehour", "deadlineminute", $form->deadline); + print_date_selector("assessmentstartday", "assessmentstartmonth", "assessmentstartyear", $form->assessmentstart); + echo " - "; + print_time_selector("assessmentstarthour", "assessmentstartminute", $form->assessmentstart); + helpbutton("assessmentstart", get_string("assessmentstart", "workshop"), "workshop"); ?> + + : + submissionend); + echo " - "; + print_time_selector("submissionendhour", "submissionendminute", $form->submissionend); + helpbutton("submissionend", get_string("submissionend", "workshop"), "workshop"); + ?> + + + + : + assessmentend); + echo " - "; + print_time_selector("assessmentendhour", "assessmentendminute", $form->assessmentend); + helpbutton("assessmentend", get_string("assessmentend", "workshop"), "workshop"); + ?> + : anonymous = backup_todb($info['MOD']['#']['ANONYMOUS']['0']['#']); $workshop->includeself = backup_todb($info['MOD']['#']['INCLUDESELF']['0']['#']); $workshop->maxbytes = backup_todb($info['MOD']['#']['MAXBYTES']['0']['#']); - $workshop->deadline = backup_todb($info['MOD']['#']['DEADLINE']['0']['#']); + $workshop->submissionstart = backup_todb($info['MOD']['#']['SUBMISSIONSTART']['0']['#']); + $workshop->assessmentstart = backup_todb($info['MOD']['#']['ASSESSMENTSTART']['0']['#']); + $workshop->submissionend = backup_todb($info['MOD']['#']['SUBMISSIONEND']['0']['#']); + $workshop->assessmentend = backup_todb($info['MOD']['#']['ASSESSMENTEND']['0']['#']); $workshop->releasegrades = backup_todb($info['MOD']['#']['RELEASEGRADES']['0']['#']); $workshop->grade = backup_todb($info['MOD']['#']['GRADE']['0']['#']); $workshop->gradinggrade = backup_todb($info['MOD']['#']['GRADINGGRADE']['0']['#']); diff --git a/mod/workshop/submissions.php b/mod/workshop/submissions.php index 73fbce74e7..bdb9a1cdf0 100644 --- a/mod/workshop/submissions.php +++ b/mod/workshop/submissions.php @@ -5,8 +5,8 @@ dminamendtitle adminconfirmdelete - admindelete - adminlist + admindelete + adminlist displayfinalgrades (teachers only) editsubmission listallsubmissions @@ -24,7 +24,7 @@ require("lib.php"); require("locallib.php"); - require_variable($id); // Course Module ID + require_variable($id); // Course Module ID // get some useful stuff... if (! $cm = get_record("course_modules", "id", $id)) { @@ -232,41 +232,41 @@ } - /*************** display final grades (by teacher) ***************************/ - elseif ($action == 'displayfinalgrades') { + /*************** display final grades (by teacher) ***************************/ + elseif ($action == 'displayfinalgrades') { if (groupmode($course, $cm) == SEPARATEGROUPS) { $groupid = get_current_group($course->id); } else { $groupid = 0; } - // Get all the students - if (!$users = get_course_students($course->id, "u.lastname, u.firstname")) { - print_heading(get_string("nostudentsyet")); - print_footer($course); - exit; - } - - // show the final grades as stored in the tables... - print_heading_with_help(get_string("displayoffinalgrades", "workshop"), "finalgrades", "workshop"); - echo "
- "; - echo ""; - if ($workshop->wtype) { + // Get all the students + if (!$users = get_course_students($course->id, "u.lastname, u.firstname")) { + print_heading(get_string("nostudentsyet")); + print_footer($course); + exit; + } + + // show the final grades as stored in the tables... + print_heading_with_help(get_string("displayoffinalgrades", "workshop"), "finalgrades", "workshop"); + echo "
cellheading2\">".$course->student."cellheading2\">".get_string("submission", "workshop")."
+ "; + echo ""; + if ($workshop->wtype) { echo ""; - echo ""; } - echo ""; - if ($workshop->wtype) { + if ($workshop->wtype) { echo ""; } - echo ""; - echo "\n"; foreach ($users as $user) { @@ -276,48 +276,48 @@ continue; } } - if ($submissions = workshop_get_user_submissions($workshop, $user)) { + if ($submissions = workshop_get_user_submissions($workshop, $user)) { $gradinggrade = workshop_gradinggrade($workshop, $user); - foreach ($submissions as $submission) { + foreach ($submissions as $submission) { $grade = workshop_submission_grade($workshop, $submission); - echo ""; - echo "\n"; - if ($workshop->wtype) { + echo ""; + echo "\n"; + if ($workshop->wtype) { echo ""; - echo ""; + echo ""; } - echo ""; - if ($workshop->wtype) { + if ($workshop->wtype) { echo ""; } - echo ""; - echo "\n"; - } - } - } - echo "
cellheading2\">".$course->student."cellheading2\">".get_string("submission", "workshop")."cellheading2\" align=\"center\">".get_string("assessmentsdone", "workshop"). "cellheading2\" align=\"center\">".get_string("gradeforassessments", + echo "cellheading2\" align=\"center\">".get_string("gradeforassessments", "workshop")."cellheading2\" align=\"center\">".get_string("assessmentsby", "workshop", + echo "cellheading2\" align=\"center\">".get_string("assessmentsby", "workshop", $course->teachers)."cellheading2\" align=\"center\">".get_string("assessmentsby", "workshop", $course->students)."cellheading2\" align=\"center\">".get_string("gradeforsubmission", + echo "cellheading2\" align=\"center\">".get_string("gradeforsubmission", "workshop")."cellheading2\" align=\"center\">".get_string("overallgrade", "workshop"). + echo "cellheading2\" align=\"center\">".get_string("overallgrade", "workshop"). "
$user->firstname $user->lastname".workshop_print_submission_title($workshop, $submission)."
$user->firstname $user->lastname".workshop_print_submission_title($workshop, $submission)."".workshop_print_user_assessments($workshop, $user)."$gradinggrade$gradinggrade".workshop_print_submission_assessments($workshop, $submission, + echo "".workshop_print_submission_assessments($workshop, $submission, "teacher")."".workshop_print_submission_assessments($workshop, $submission, "student")."$grade".number_format($gradinggrade + $grade, 1)."

\n"; + echo "$grade"; + echo "".number_format($gradinggrade + $grade, 1)."\n"; + } + } + } + echo "
\n"; workshop_print_key($workshop); - if ($workshop->showleaguetable) { - workshop_print_league_table($workshop); - if ($workshop->anonymous) { - echo "

".get_string("namesnotshowntostudents", "workshop", $course->students)."

\n"; - } - } - print_continue("view.php?id=$cm->id"); - } + if ($workshop->showleaguetable) { + workshop_print_league_table($workshop); + if ($workshop->anonymous) { + echo "

".get_string("namesnotshowntostudents", "workshop", $course->students)."

\n"; + } + } + print_continue("view.php?id=$cm->id"); + } - /*************** display current grades (by teacher) ***************************/ - elseif ($action == 'displaycurrentgrades') { + /*************** display current grades (by teacher) ***************************/ + elseif ($action == 'displaycurrentgrades') { if (groupmode($course, $cm) == SEPARATEGROUPS) { $groupid = get_current_group($course->id); } else { $groupid = 0; } - print_heading_with_help(get_string("displayofcurrentgrades", "workshop"), "finalgrades", "workshop"); + print_heading_with_help(get_string("displayofcurrentgrades", "workshop"), "finalgrades", "workshop"); if ($workshop->ntassessments) { // display the teacher's submissions @@ -341,32 +341,32 @@ workshop_print_key($workshop); } - // Get all the students - if (!$users = get_course_students($course->id, "u.lastname, u.firstname")) { - print_heading(get_string("nostudentsyet")); - print_footer($course); - exit; - } - - // show the current grades as stored in the tables... - echo "
- "; - echo ""; - if ($workshop->wtype) { + // Get all the students + if (!$users = get_course_students($course->id, "u.lastname, u.firstname")) { + print_heading(get_string("nostudentsyet")); + print_footer($course); + exit; + } + + // show the current grades as stored in the tables... + echo "
cellheading2\">".$course->student."cellheading2\">".get_string("submission", "workshop")."
+ "; + echo ""; + if ($workshop->wtype) { echo ""; - echo ""; } - echo ""; - if ($workshop->wtype) { + if ($workshop->wtype) { echo ""; } - echo ""; - echo "\n"; foreach ($users as $user) { @@ -376,31 +376,31 @@ continue; } } - if ($submissions = workshop_get_user_submissions($workshop, $user)) { + if ($submissions = workshop_get_user_submissions($workshop, $user)) { $gradinggrade = workshop_gradinggrade($workshop, $user); - foreach ($submissions as $submission) { + foreach ($submissions as $submission) { $grade = workshop_submission_grade($workshop, $submission); - echo ""; - echo "\n"; - if ($workshop->wtype) { + echo ""; + echo "\n"; + if ($workshop->wtype) { echo ""; - echo ""; + echo ""; } - echo ""; - if ($workshop->wtype) { + if ($workshop->wtype) { echo ""; } - echo ""; - echo "\n"; - } - } - } - echo "
cellheading2\">".$course->student."cellheading2\">".get_string("submission", "workshop")."cellheading2\" align=\"center\">".get_string("assessmentsdone", "workshop"). "cellheading2\" align=\"center\">".get_string("gradeforassessments", + echo "cellheading2\" align=\"center\">".get_string("gradeforassessments", "workshop")."cellheading2\" align=\"center\">".get_string("assessmentsby", "workshop", + echo "cellheading2\" align=\"center\">".get_string("assessmentsby", "workshop", $course->teachers)."cellheading2\" align=\"center\">".get_string("assessmentsby", "workshop", $course->students)."cellheading2\" align=\"center\">".get_string("gradeforsubmission", + echo "cellheading2\" align=\"center\">".get_string("gradeforsubmission", "workshop")."cellheading2\" align=\"center\">".get_string("overallgrade", "workshop"). + echo "cellheading2\" align=\"center\">".get_string("overallgrade", "workshop"). "
$user->firstname $user->lastname".workshop_print_submission_title($workshop, $submission)."
$user->firstname $user->lastname".workshop_print_submission_title($workshop, $submission)."".workshop_print_user_assessments($workshop, $user)."$gradinggrade$gradinggrade".workshop_print_submission_assessments($workshop, $submission, + echo "".workshop_print_submission_assessments($workshop, $submission, "teacher")."".workshop_print_submission_assessments($workshop, $submission, "student")."$grade".number_format($gradinggrade + $grade, 1)."

\n"; + echo "$grade"; + echo "".number_format($gradinggrade + $grade, 1)."\n"; + } + } + } + echo "
\n"; workshop_print_key($workshop); - print_continue("view.php?id=$cm->id"); - } + print_continue("view.php?id=$cm->id"); + } /******************* edit submission ************************************/ @@ -416,6 +416,9 @@ if ($submission->userid <> $USER->id) { error("Edit submission: Userids do not match"); } + if (($submission->timecreated < ($timenow - $CFG->maxeditingtime)) and ($workshop->assessmentstart < time()) { + error(get_string('notallowed', 'workshop')); + } ?>
@@ -471,45 +474,45 @@ } - /******************* list all submissions ************************************/ - elseif ($action == 'listallsubmissions' ) { - if (!$users = get_course_students($course->id)) { - print_heading(get_string("nostudentsyet")); - print_footer($course); - exit; - } - print_heading(get_string("listofallsubmissions", "workshop").":", "CENTER"); - workshop_list_all_submissions($workshop, $USER); - print_continue("view.php?id=$cm->id"); - - } - - - /******************* list for assessment student (submissions) ************************************/ - elseif ($action == 'listforassessmentstudent' ) { - if (!$users = get_course_students($course->id)) { - print_heading(get_string("nostudentsyet")); - print_footer($course); - exit; - } - workshop_list_unassessed_student_submissions($workshop, $USER); - print_continue("view.php?id=$cm->id"); - - } - - - /******************* list for assessment teacher (submissions) ************************************/ - elseif ($action == 'listforassessmentteacher' ) { + /******************* list all submissions ************************************/ + elseif ($action == 'listallsubmissions' ) { + if (!$users = get_course_students($course->id)) { + print_heading(get_string("nostudentsyet")); + print_footer($course); + exit; + } + print_heading(get_string("listofallsubmissions", "workshop").":", "CENTER"); + workshop_list_all_submissions($workshop, $USER); + print_continue("view.php?id=$cm->id"); + + } + + + /******************* list for assessment student (submissions) ************************************/ + elseif ($action == 'listforassessmentstudent' ) { + if (!$users = get_course_students($course->id)) { + print_heading(get_string("nostudentsyet")); + print_footer($course); + exit; + } + workshop_list_unassessed_student_submissions($workshop, $USER); + print_continue("view.php?id=$cm->id"); + + } + + + /******************* list for assessment teacher (submissions) ************************************/ + elseif ($action == 'listforassessmentteacher' ) { if (!isteacher($course->id)) { - error("Only teachers can look at this page"); - } + error("Only teachers can look at this page"); + } - workshop_list_unassessed_teacher_submissions($workshop, $USER); - print_continue("view.php?id=$cm->id"); - - } - + workshop_list_unassessed_teacher_submissions($workshop, $USER); + print_continue("view.php?id=$cm->id"); + + } + /******************* remove (all) attachments ************************************/ elseif ($action == 'removeattachments' ) { @@ -545,7 +548,7 @@ $submission = get_record("workshop_submissions", "id", $_GET['sid']); workshop_print_submission($workshop, $submission); - print_continue("view.php?id=$cm->id"); + print_continue("view.php?id=$cm->id"); } diff --git a/mod/workshop/upload.php b/mod/workshop/upload.php index c89b837f59..9f9c79d760 100644 --- a/mod/workshop/upload.php +++ b/mod/workshop/upload.php @@ -60,14 +60,14 @@ $newsubmission->title = $title; $newsubmission->description = trim($form->description); $newsubmission->timecreated = $timenow; - if ($timenow > $workshop->deadline) { + if ($timenow > $workshop->submissionend) { $newsubmission->late = 1; } if (!$newsubmission->id = insert_record("workshop_submissions", $newsubmission)) { error("Workshop upload: Failure to create new submission record!"); } // see if this is a resubmission by looking at the previous submissions... - if ($submissions and ($workshop->phase >1)) { // ...but not teacher submissions + if ($submissions and ($workshop->submissionstart > time())) { // ...but not teacher submissions // find the last submission foreach ($submissions as $submission) { $lastsubmission = $submission; diff --git a/mod/workshop/version.php b/mod/workshop/version.php index 41abc368e4..ba58c24abc 100644 --- a/mod/workshop/version.php +++ b/mod/workshop/version.php @@ -5,8 +5,8 @@ // This fragment is called by /admin/index.php //////////////////////////////////////////////////////////////////////////////// -$module->version = 2004111200; -$module->requires = 2004091700; // Requires this Moodle version +$module->version = 2004120402; +$module->requires = 2004052505; // Requires this Moodle version $module->cron = 60; ?> diff --git a/mod/workshop/view.php b/mod/workshop/view.php index ed7eb8b1e2..c53fbc8282 100644 --- a/mod/workshop/view.php +++ b/mod/workshop/view.php @@ -3,13 +3,8 @@ /************************************************* ACTIONS handled are: - allowassessments (for teachers) - allowboth (for teachers) - allowsubmissions (for teachers) - close workshop( for teachers) displayfinalgrade (for students) notavailable (for students) - setupassignment (for teachers) studentsview submitexample teachersview @@ -19,8 +14,8 @@ require("../../config.php"); require("lib.php"); require("locallib.php"); - - require_variable($id); // Course Module ID + + require_variable($id); // Course Module ID // get some useful stuff... if (! $cm = get_record("course_modules", "id", $id)) { @@ -50,99 +45,46 @@ optional_variable($action); if (isteacher($course->id)) { - if (empty($action)) { // no action specified, either go straight to elements page else the admin page - // has the assignment any elements - if (count_records("workshop_elements", "workshopid", $workshop->id) >= $workshop->nelements) { - $action = "teachersview"; - } - else { - redirect("assessments.php?action=editelements&id=$cm->id"); - } - } - } - elseif (!isguest()) { // it's a student then - if (!$cm->visible) { - notice(get_string("activityiscurrentlyhidden")); - } - switch ($workshop->phase) { - case 0 : - case 1 : $action = 'notavailable'; break; - case 2 : - case 3 : - case 4 : $action = 'studentsview'; break; - case 5 : $action = 'displayfinalgrade'; - } - } - else { // it's a guest, oh no! - $action = 'notavailable'; - } - - - /************** allow (peer) assessments only (move to phase 4) (for teachers)**/ - if ($action == 'allowassessments') { - - if (!isteacher($course->id)) { - error("Only teachers can look at this page"); - } - - // move to phase 4 - set_field("workshop", "phase", 4, "id", "$workshop->id"); - add_to_log($course->id, "workshop", "assessments only", "view.php?id=$cm->id", "$workshop->id", $cm->id); - redirect("view.php?id=$cm->id", get_string("movingtophase", "workshop", 4)); - } - - - /************** allow both (submissions and assessments) (move to phase 3) (for teachers)**/ - if ($action == 'allowboth') { - - if (!isteacher($course->id)) { - error("Only teachers can look at this page"); - } - - // move to phase 3 - set_field("workshop", "phase", 3, "id", "$workshop->id"); - add_to_log($course->id, "workshop", "allow both", "view.php?id=$cm->id", "$workshop->id", $cm->id); - redirect("view.php?id=$cm->id", get_string("movingtophase", "workshop", 3)); - } - - - /************** allow submissions only (move to phase 2) (for teachers)**/ - if ($action == 'allowsubmissions') { - - if (!isteacher($course->id)) { - error("Only teachers can look at this page"); - } - - // move to phase 2, check that teacher has made enough submissions - if (workshop_count_teacher_submissions($workshop) < $workshop->ntassessments) { - redirect("view.php?id=$cm->id", get_string("notenoughexamplessubmitted", "workshop", - $course->teacher)); - } - else { - if ($n = workshop_count_teacher_submissions_for_assessment($workshop, $USER)) { - notify(get_string("teachersubmissionsforassessment", "workshop", $n)); + if (empty($action)) { // no action specified, either go straight to elements page else the admin page + // has the assignment any elements + if (count_records("workshop_elements", "workshopid", $workshop->id) >= $workshop->nelements) { + $action = "teachersview"; } - set_field("workshop", "phase", 2, "id", "$workshop->id"); - add_to_log($course->id, "workshop", "submissions", "view.php?id=$cm->id", "$workshop->id", $cm->id); - redirect("view.php?id=$cm->id", get_string("movingtophase", "workshop", 2)); - } - } - + else { + redirect("assessments.php?action=editelements&id=$cm->id"); + } + } + } + elseif (!isguest()) { // it's a student then + if (!$cm->visible) { + notice(get_string("activityiscurrentlyhidden")); + } + if (time() < $workshop->submissionstart) { + $action = 'notavailable'; + } else if (time() < $workshop->assessmentend) { + $action = 'studentsview'; + } else { + $action = 'displayfinalgrade'; + } + } + else { // it's a guest, oh no! + $action = 'notavailable'; + } - /****************** display final grade (for students) ************************************/ - elseif ($action == 'displayfinalgrade' ) { - - // show the final grades as stored in the tables... - print_heading_with_help(get_string("displayoffinalgrades", "workshop"), "finalgrades", "workshop"); - if ($submissions = workshop_get_user_submissions($workshop, $USER)) { // any submissions from user? - echo "
"; - echo ""; + /****************** display final grade (for students) ************************************/ + if ($action == 'displayfinalgrade' ) { + + // show the final grades as stored in the tables... + print_heading_with_help(get_string("displayoffinalgrades", "workshop"), "finalgrades", "workshop"); + if ($submissions = workshop_get_user_submissions($workshop, $USER)) { // any submissions from user? + echo "
".get_string("submissions", "workshop")."
"; + echo ""; if ($workshop->wtype) { echo ""; echo ""; } - echo ""; if ($workshop->wtype) { echo "
".get_string("submissions", "workshop")."".get_string("assessmentsdone", "workshop")."".get_string("gradeforassessments", "workshop")."".get_string("teacherassessments", "workshop", + echo "".get_string("teacherassessments", "workshop", $course->teacher)."".get_string("studentassessments", "workshop", @@ -169,88 +111,62 @@ } } echo "

\n"; - workshop_print_key($workshop); + workshop_print_key($workshop); if ($workshop->showleaguetable) { - workshop_print_league_table($workshop); - } - } - - - /****************** make final grades available (go to phase 5) (for teachers only)********/ - elseif ($action == 'makefinalgradesavailable') { - - if (!isteacher($course->id)) { - error("Only teachers can look at this page"); - } - - set_field("workshop", "phase", 5, "id", "$workshop->id"); - add_to_log($course->id, "workshop", "display grades", "view.php?id=$cm->id", "$workshop->id", $cm->id); - redirect("view.php?id=$cm->id", get_string("movingtophase", "workshop", 5)); - } - - - /****************** assignment not available (for students)***********************/ - elseif ($action == 'notavailable') { - print_heading(get_string("notavailable", "workshop")); - } - + workshop_print_league_table($workshop); + } + } - /****************** set up assignment (move back to phase 1) (for teachers)***********************/ - elseif ($action == 'setupassignment') { + + /****************** assignment not available (for students)***********************/ + elseif ($action == 'notavailable') { + print_heading(get_string("notavailable", "workshop")); + } - if (!isteacher($course->id)) { - error("Only teachers can look at this page"); - } - set_field("workshop", "phase", 1, "id", "$workshop->id"); - add_to_log($course->id, "workshop", "set up", "view.php?id=$cm->id", "$workshop->id", $cm->id); - redirect("view.php?id=$cm->id", get_string("movingtophase", "workshop", 1)); - } - - - /****************** student's view could be in 1 of 4 stages ***********************/ - elseif ($action == 'studentsview') { + /****************** student's view could be in 1 of 4 stages ***********************/ + elseif ($action == 'studentsview') { // is a password needed? - if ($workshop->usepassword) { - $correctpass = false; - if (isset($_POST['userpassword'])) { - if ($workshop->password == md5(trim($_POST['userpassword']))) { - $USER->workshoploggedin[$workshop->id] = true; - $correctpass = true; - } - } elseif (isset($USER->workshoploggedin[$workshop->id])) { - $correctpass = true; - } + if ($workshop->usepassword) { + $correctpass = false; + if (isset($_POST['userpassword'])) { + if ($workshop->password == md5(trim($_POST['userpassword']))) { + $USER->workshoploggedin[$workshop->id] = true; + $correctpass = true; + } + } elseif (isset($USER->workshoploggedin[$workshop->id])) { + $correctpass = true; + } - if (!$correctpass) { - print_simple_box_start("center"); - echo "\n"; - echo "id\" />\n"; - echo ""; - if (isset($_POST['userpassword'])) { - echo "
".get_string("wrongpassword", "workshop"). + if (!$correctpass) { + print_simple_box_start("center"); + echo "\n"; + echo "id\" />\n"; + echo ""; + if (isset($_POST['userpassword'])) { + echo ""; - } - echo ""; - echo ""; - - echo "
".get_string("wrongpassword", "workshop"). "
".get_string("passwordprotectedworkshop", "workshop", $workshop->name). + } + echo "
".get_string("passwordprotectedworkshop", "workshop", $workshop->name). "
".get_string("enterpassword", "workshop"). + echo "
".get_string("enterpassword", "workshop"). "
"; - echo ""; + echo "id';\"> "; - echo ""; - echo "
"; - print_simple_box_end(); - exit(); - } - } - workshop_print_assignment_info($workshop); - // in Stage 1? - are there any teacher's submissions? and... - // ...has student assessed the required number of the teacher's submissions - if ($workshop->ntassessments and (!workshop_test_user_assessments($workshop, $USER))) { - print_heading(get_string("pleaseassesstheseexamplesfromtheteacher", "workshop", + echo "
"; + print_simple_box_end(); + exit(); + } + } + workshop_print_assignment_info($workshop); + // in Stage 1? - are there any teacher's submissions? and... + // ...has student assessed the required number of the teacher's submissions + if ($workshop->ntassessments and (!workshop_test_user_assessments($workshop, $USER))) { + print_heading(get_string("pleaseassesstheseexamplesfromtheteacher", "workshop", $course->teacher)); workshop_list_teacher_submissions($workshop, $USER); } @@ -262,9 +178,9 @@ $course->teacher)); workshop_list_teacher_submissions($workshop, $USER); } - // has user submitted anything yet? (only allowed in phases 2 and 3) + // has user submitted anything yet? if (!workshop_get_user_submissions($workshop, $USER)) { - if ($workshop->phase < 4) { + if (time() < $workshop->submissionend) { // print upload form print_heading(get_string("submitassignmentusingform", "workshop").":"); workshop_print_upload_form($workshop); @@ -279,8 +195,8 @@ // prints a table if there are any submissions which have not been self assessed yet workshop_list_self_assessments($workshop, $USER); } - // if peer assessments are being done and workshop is in phase 3 then show some to assess... - if ($workshop->nsassessments and ($workshop->phase > 2)) { + // if peer assessments are being done then show some to assess... + if ($workshop->nsassessments and ($workshop->assessmentstart > time() and $workshop->assessmentend < time())) { workshop_list_student_submissions($workshop, $USER); } // ..and any they have already done (and have gone cold)... @@ -303,7 +219,7 @@ print_heading(get_string("submissions", "workshop")); workshop_list_user_submissions($workshop, $USER); // are resubmissions allowed and the workshop is in submission/assessment phase? - if ($workshop->resubmit and ($workshop->phase == 3)) { + if ($workshop->resubmit and (time() > $workshop->assessmentstart and time() < $workshop->submissionend)) { // see if there are any cold assessments of the last submission // if there are then print upload form if ($submissions = workshop_get_user_submissions($workshop, $USER)) { @@ -326,46 +242,40 @@ echo "
"; } } - } - } - } - } + } + } + } + } - /****************** submission of example by teacher only***********************/ - elseif ($action == 'submitexample') { - - if (!isteacher($course->id)) { - error("Only teachers can look at this page"); - } - - $strdifference = format_time($workshop->deadline - time()); - if (($workshop->deadline - time()) < 0) { - $strdifference = "$strdifference"; - } - $strduedate = userdate($workshop->deadline)." ($strdifference)"; - - workshop_print_assignment_info($workshop); - - // list previous submissions from teacher - workshop_list_user_submissions($workshop, $USER); - - echo "
"; - - // print upload form - print_heading(get_string("submitexampleassignment", "workshop").":"); - workshop_print_upload_form($workshop); - } + /****************** submission of example by teacher only***********************/ + elseif ($action == 'submitexample') { + + if (!isteacher($course->id)) { + error("Only teachers can look at this page"); + } + + workshop_print_assignment_info($workshop); + + // list previous submissions from teacher + workshop_list_user_submissions($workshop, $USER); + + echo "
"; + + // print upload form + print_heading(get_string("submitexampleassignment", "workshop").":"); + workshop_print_upload_form($workshop); + } - /****************** teacher's view - display admin page (current phase options) ************/ - elseif ($action == 'teachersview') { + /****************** teacher's view - display admin page ************/ + elseif ($action == 'teachersview') { - if (!isteacher($course->id)) { - error("Only teachers can look at this page"); - } + if (!isteacher($course->id)) { + error("Only teachers can look at this page"); + } - /// Check to see if groups are being used in this workshop + /// Check to see if groups are being used in this workshop /// and if so, set $currentgroup to reflect the current group $changegroup = isset($_GET['group']) ? $_GET['group'] : -1; // Group change requested? $groupmode = groupmode($course, $cm); // Groups are being used? @@ -377,130 +287,73 @@ print_group_menu($groups, $groupmode, $currentgroup, "view.php?id=$cm->id"); } } - - print_heading_with_help(get_string("managingassignment", "workshop"), "managing2", "workshop"); - - workshop_print_assignment_info($workshop); - - if ($workshop->wtype < 2) { - $tabs->names = array("1. ".get_string("phase1", "workshop"), - "2. ".get_string("phase2", "workshop", $course->student), - "3. ".get_string("phase5", "workshop")); - $tabs->urls = array("view.php?id=$cm->id&action=setupassignment", - "view.php?id=$cm->id&action=allowboth", - "view.php?id=$cm->id&action=makefinalgradesavailable"); - } else { - $tabs->names = array("1. ".get_string("phase1", "workshop"), - "2. ".get_string("phase2", "workshop", $course->student), - "3. ".get_string("phase3", "workshop", $course->student), - "4. ".get_string("phase4", "workshop", $course->student), - "5. ".get_string("phase5", "workshop")); - if (isteacheredit($course->id)) { - $tabs->urls = array("view.php?id=$cm->id&action=setupassignment", - "view.php?id=$cm->id&action=allowsubmissions", - "view.php?id=$cm->id&action=allowboth", - "view.php?id=$cm->id&action=allowassessments", - "view.php?id=$cm->id&action=makefinalgradesavailable"); - } else { - // non editing teachers cannot change phase - $tabs->urls = array("view.php?id=$cm->id", - "view.php?id=$cm->id", - "view.php?id=$cm->id", - "view.php?id=$cm->id", - "view.php?id=$cm->id"); - } + + print_heading_with_help(get_string("managingassignment", "workshop"), "managing2", "workshop"); + + workshop_print_assignment_info($workshop); + + echo "
\n"; + + // if there are assessment elements show link to edit them + if ($workshop->nelements) { + echo "
id&action=editelements\">". + get_string("amendassessmentelements", "workshop")." \n"; + helpbutton("elements", get_string("amendassessmentelements", "workshop"), "workshop"); } - if ($workshop->phase) { // phase 1 or more - if ($workshop->wtype < 2) { - $tabs->highlight = ($workshop->phase - 1) / 2; - } else { - $tabs->highlight = $workshop->phase - 1; + + // if teacher examples show submission and assessment links + if ($workshop->ntassessments) { + // submission link for teacher examples + echo "
id&action=submitexample\">". + get_string("submitexampleassignment", "workshop")." \n"; + helpbutton("submissionofexamples", get_string("submitexampleassignment", "workshop"), + "workshop"); + // show assessment link for teachers examples only once there are such examples + if ($n = workshop_count_teacher_submissions_for_assessment($workshop, $USER)) { + echo "
id&action=listforassessmentteacher\">". + get_string("teachersubmissionsforassessment", "workshop", $n)." \n"; + helpbutton("assessmentofexamples", get_string("teachersubmissionsforassessment", + "workshop"), "workshop"); } - } else { - $tabs->highlight = 0; // phase is zero } - workshop_print_tabbed_heading($tabs); - echo "
\n"; - switch ($workshop->phase) { - case 0: - case 1: // set up assignment - if ($workshop->nelements) { - echo "
id&action=editelements\">". - get_string("amendassessmentelements", "workshop")." \n"; - helpbutton("elements", get_string("amendassessmentelements", "workshop"), "workshop"); - } - if ($workshop->ntassessments) { - // if teacher examples show submission and assessment links - echo "
id&action=submitexample\">". - get_string("submitexampleassignment", "workshop")." \n"; - helpbutton("submissionofexamples", get_string("submitexampleassignment", "workshop"), - "workshop"); - echo "
id&action=listforassessmentteacher\">". - get_string("teachersubmissionsforassessment", "workshop", - workshop_count_teacher_submissions_for_assessment($workshop, $USER)). - " \n"; - helpbutton("assessmentofexamples", get_string("teachersubmissionsforassessment", - "workshop"), "workshop"); - } - break; - case 2: // submissions - case 3: // submissions and assessments - case 4: // assessments - if ($workshop->ntassessments) { // if teacher examples show assessment link - if ($n = workshop_count_teacher_submissions_for_assessment($workshop, $USER)) { - echo "
id&action=listforassessmentteacher\">". - get_string("teachersubmissionsforassessment", "workshop", $n)." \n"; - helpbutton("assessmentofexamples", get_string("teachersubmissionsforassessment", - "workshop"), "workshop"); - } - } - // only show grading assessments if there are grading grades involved - if ($workshop->wtype) { - echo "
id&action=gradeallassessments\">". - get_string("ungradedassessments", "workshop", - workshop_count_ungraded_assessments($workshop))." \n"; - helpbutton("ungradedassessments", - get_string("ungradedassessments", "workshop"), "workshop"); - } - // don't show the assessment of student submissions in phase 2 if it's a 5 phase workshop - if (!(($workshop->phase == 2) and ($workshop->wtype > 1))) { - echo "
id&action=listforassessmentstudent\">". - get_string("studentsubmissionsforassessment", "workshop", - workshop_count_student_submissions_for_assessment($workshop, $USER))." \n"; - helpbutton("gradingsubmissions", - get_string("studentsubmissionsforassessment", "workshop"), "workshop"); - } - print_heading("id&action=displaycurrentgrades\">". - get_string("displayofcurrentgrades", "workshop").""); - break; + if ($workshop->wtype) { + // only show grading assessments if there are grading grades involved + if ($numberofassessments = workshop_count_ungraded_assessments($workshop)) { + echo "
id&action=gradeallassessments\">". + get_string("ungradedassessments", "workshop", + $numberofassessments)." \n"; + helpbutton("ungradedassessments", + get_string("ungradedassessments", "workshop"), "workshop"); + } + } - case 5: // Show "Final" Grades - if ($workshop->ntassessments) { // if teacher examples show assessment link - if ($n = workshop_count_teacher_submissions_for_assessment($workshop, $USER)) { - echo "
id&action=listforassessmentteacher\">". - get_string("teachersubmissionsforassessment", "workshop", $n)." \n"; - helpbutton("assessmentofexamples", get_string("teachersubmissionsforassessment", - "workshop"), "workshop"); - } - } - if ($workshop->wtype) { - echo "
id&action=gradeallassessments\">". - get_string("ungradedassessments", "workshop", - workshop_count_ungraded_assessments($workshop))." \n"; - helpbutton("ungradedassessments", get_string("ungradedassessments", "workshop"), "workshop"); - } + // Show link to student submissions for assessment only if assessment has started + if (time() > $workshop->assessmentstart) { + if ($numberofsubmissions = workshop_count_student_submissions_for_assessment($workshop, $USER)) { echo "
id&action=listforassessmentstudent\">". get_string("studentsubmissionsforassessment", "workshop", - workshop_count_student_submissions_for_assessment($workshop, $USER))." \n"; + $numberofsubmissions)." \n"; helpbutton("gradingsubmissions", - get_string("studentsubmissionsforassessment", "workshop"), "workshop"); - print_heading("id&action=displayfinalgrades\">". - get_string("displayoffinalgrades", "workshop").""); + get_string("studentsubmissionsforassessment", "workshop"), "workshop"); + } } - echo '
'; - print_heading("id&action=adminlist\">". - get_string("administration").""); + + // Show link to current grades + if (time() > $workshop->assessmentstart) { + if (time() < $workshop->assessmentend) { + echo "
id&action=displaycurrentgrades\">". + get_string("displayofcurrentgrades", "workshop")." \n"; + } else { + echo "
id&action=displayfinalgrades\">". + get_string("displayoffinalgrades", "workshop")." \n"; + } + } + + echo "
id&action=adminlist\">". + get_string("administration")." \n"; + + echo '

'; } -- 2.39.5