} else { if (!$action) { if ($timenow < $workshop->assessmentend) { $action = 'studentsview'; } else { $action = 'displayfinalgrade'; } } } } // ...display header... $navigation = build_navigation($action, $cm); print_header_simple(format_string($workshop->name), "", $navigation, "", "", true, update_module_button($cm->id, $course->id, $strworkshop), navmenu($course, $cm)); // ...log activity... add_to_log($course->id, "workshop", "view", "view.php?id={$cm->id}", $workshop->id, $cm->id); if ($action == 'studentsview' and !workshop_is_student($workshop)) { $action = 'showdescription'; } /****************** display final grade (for students) ************************************/ if ($action == 'displayfinalgrade') { require_capability('mod/workshop:participate', $context); print_heading("<b><a href=\"view.php?id={$cm->id}&action=showdescription\">" . get_string("showdescription", 'workshop') . "</a></b>"); // show the final grades as stored in the tables... if ($submissions = workshop_get_user_submissions($workshop, $USER)) { // any submissions from user? print_heading(get_string("displayoffinalgrades", "workshop")); echo "<div class=\"boxaligncenter\"><table border=\"1\" width=\"90%\"><tr>"; echo "<td><b>" . get_string("submissions", "workshop") . "</b></td>"; if ($workshop->wtype) { echo "<td align=\"center\"><b>" . get_string("assessmentsdone", "workshop") . "</b></td>"; echo "<td align=\"center\"><b>" . get_string("gradeforassessments", "workshop") . "</b></td>";
function workshop_count_ungraded_assessments($workshop) { // function returns the number of ungraded assessments by students global $CFG; $timenow = time(); $n = 0; // get all the cold assessments that have not been graded if ($assessments = get_records_select("workshop_assessments", "workshopid = {$workshop->id} AND\n (timecreated + {$CFG->maxeditingtime}) < {$timenow} AND timegraded = 0")) { foreach ($assessments as $assessment) { if (workshop_is_student($workshop, $assessment->userid)) { $n++; } } } return $n; }
// ...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 // all assessments for this submission will be regraded if ($workshop->ntassessments or $workshop->nsassessments) { set_field("workshop_submissions", "nassessments", 0, "id", $submission->id); workshop_grade_assessments($workshop); } else { // it could be self assessment.... // now see if there's a corresponding assessment so that the gradinggrade can be set if (workshop_is_teacher($workshop)) { // see if there's are student assessments, if so set their gradinggrade if ($assessments = workshop_get_assessments($submission)) { foreach ($assessments as $studentassessment) { // skip if it's not a student assessment if (!workshop_is_student($workshop, $studentassessment->userid)) { continue; } $gradinggrade = workshop_compare_assessments($workshop, $assessment, $studentassessment); set_field("workshop_assessments", "timegraded", $timenow, "id", $studentassessment->id); set_field("workshop_assessments", "gradinggrade", $gradinggrade, "id", $studentassessment->id); } } } else { //it's a student assessment, see if there's a corresponding teacher's assessment if ($assessments = workshop_get_assessments($submission)) { foreach ($assessments as $teacherassessment) { if (workshop_is_teacher($workshop, $teacherassessment->userid)) { $gradinggrade = workshop_compare_assessments($workshop, $assessment, $teacherassessment); set_field("workshop_assessments", "timegraded", $timenow, "id", $assessment->id); set_field("workshop_assessments", "gradinggrade", $gradinggrade, "id", $assessment->id);
require_login($course->id, false, $cm); $strworkshops = get_string('modulenameplural', 'workshop'); $strworkshop = get_string('modulename', 'workshop'); $strsubmission = get_string('submission', 'workshop'); $navigation = build_navigation($strsubmission, $cm); print_header_simple(format_string($workshop->name) . " : {$strsubmission}", "", $navigation, "", "", true); $timenow = time(); $form = data_submitted("nomatch"); // POST may come from two forms // don't be picky about not having a title if (!($title = $form->title)) { $title = get_string("notitle", "workshop"); } // check that this is not a "rapid" second submission, caused by using the back button // only check if a student, teachers may want to submit a set of workshop examples rapidly if (workshop_is_student($workshop)) { if ($submissions = workshop_get_user_submissions($workshop, $USER)) { // returns all submissions, newest on first foreach ($submissions as $submission) { if ($submission->timecreated > $timenow - $CFG->maxeditingtime) { // ignore this new submission redirect("view.php?id={$cm->id}"); print_footer($course); exit; } } } } // get the current set of submissions $submissions = workshop_get_user_submissions($workshop, $USER); // add new submission record
function workshop_print_submission_assessments($workshop, $submission, $type) { global $USER, $CFG; // Returns the teacher or peer grade and a hyperlinked list of grades for this submission if (!($cm = get_coursemodule_from_instance("workshop", $workshop->id, $workshop->course))) { error("Course Module ID was incorrect"); } $str = ''; // get the assessments in grade order, highest first if ($assessments = workshop_get_assessments($submission, "", "grade DESC")) { if ($type == 'teacher' or $type == 'all') { // students can see teacher assessments only if the release date has passed $timenow = time(); if (workshop_is_teacher($workshop, $USER->id) or $timenow > $workshop->releasegrades) { foreach ($assessments as $assessment) { if (workshop_is_teacher($workshop, $assessment->userid)) { if ($type == 'all') { $str .= workshop_fullname($assessment->userid, $workshop->course) . ': '; } $str .= "<a href=\"viewassessment.php?aid={$assessment->id}\">" . "[" . number_format($assessment->grade * $workshop->grade / 100, 0) . "]</a>"; if (workshop_is_teacher($workshop, $USER->id)) { $str .= ' <a title="' . get_string('reassess', 'workshop') . "\" href=\"assess.php?id={$cm->id}&sid={$submission->id}\"><img src=\"{$CFG->pixpath}/t/edit.gif\" " . ' class="iconsmall" alt="' . get_string('reassess', 'workshop') . '" /></a>'; $str .= ' <a title="' . get_string('delete', 'workshop') . "\" href=\"assessments.php?action=confirmdelete&wid={$workshop->id}&aid={$assessment->id}\"><img src=\"{$CFG->pixpath}/t/delete.gif\" " . ' class="iconsmall" alt="' . get_string('delete', 'workshop') . '" /></a><br />'; } } } } } if ($type == 'student' or $type == 'all') { foreach ($assessments as $assessment) { if (workshop_is_student($workshop, $assessment->userid)) { if ($type == 'all') { $str .= workshop_fullname($assessment->userid, $workshop->course) . ': '; } $str .= "<a href=\"viewassessment.php?aid={$assessment->id}\">"; if ($workshop->agreeassessments and !$assessment->timeagreed and workshop_is_student($workshop, $submission->userid)) { // agreement on student work only $str .= "<<" . number_format($assessment->grade * $workshop->grade / 100, 0) . " (" . number_format($assessment->gradinggrade * $workshop->gradinggrade / 100, 0) . ")>></a> "; } elseif ($assessment->timegraded) { if ($assessment->gradinggrade) { $str .= "{" . number_format($assessment->grade * $workshop->grade / 100, 0); if ($assessment->teachergraded) { $str .= " [" . number_format($assessment->gradinggrade * $workshop->gradinggrade / 100, 0) . "]}</a> "; } else { $str .= " (" . number_format($assessment->gradinggrade * $workshop->gradinggrade / 100, 0) . ")}</a> "; } } else { $str .= "<" . number_format($assessment->grade * $workshop->grade / 100, 0) . " (0)></a> "; } } else { $str .= "{" . number_format($assessment->grade * $workshop->grade / 100, 0) . "}</a> "; } $str .= '<br />'; } } } } if (!$str) { $str = " "; // be kind to Mozilla browsers! } return $str; }