From 16a0e6f05c784309ae411878944dfdad54ebc32c Mon Sep 17 00:00:00 2001
From: rkingdon
Date: Tue, 13 May 2003 16:37:47 +0000
Subject: [PATCH] Addition of teacher admin features
---
mod/workshop/assessments.php | 55 ++++++++++++++++++++++++++++++++++-
mod/workshop/lib.php | 56 ++++++++++++++++++++++++------------
mod/workshop/submissions.php | 7 +++--
mod/workshop/todo.txt | 5 +++-
4 files changed, 100 insertions(+), 23 deletions(-)
diff --git a/mod/workshop/assessments.php b/mod/workshop/assessments.php
index 75fccb3b1c..a84c3cd418 100644
--- a/mod/workshop/assessments.php
+++ b/mod/workshop/assessments.php
@@ -5,6 +5,7 @@
ACTIONS handled are:
addcomment
+ adminlist
agreeassessment
assesssubmission
displaygradingform
@@ -110,6 +111,58 @@
}
+ /******************* admin confirm delete ************************************/
+ if ($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"),
+ "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 (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&a=$workshop->id");
+ }
+
+
/*************** agree (to) assessment (by student) ***************************/
elseif ($action == 'agreeassessment') {
$timenow = time();
@@ -159,7 +212,7 @@
/*************** display grading form (viewed by student) *********************************/
elseif ($action == 'displaygradingform') {
- print_heading_with_help(get_string("specimengradingform", "workshop"), "specimen", "workshop");
+ print_heading_with_help(get_string("specimenassessmentform", "workshop"), "specimen", "workshop");
workshop_print_assessment($workshop); // called with no assessment
print_continue("view.php?a=$workshop->id");
diff --git a/mod/workshop/lib.php b/mod/workshop/lib.php
index dbc9842304..bd5d224c6a 100644
--- a/mod/workshop/lib.php
+++ b/mod/workshop/lib.php
@@ -684,6 +684,7 @@ function workshop_list_all_ungraded_assessments($workshop) {
function workshop_list_assessed_submissions($workshop, $user) {
function workshop_list_peer_assessments($workshop, $user) {
function workshop_list_student_submissions($workshop, $user) {
+function workshop_list_submissions_for_admin($workshop, $order) {
function workshop_list_teacher_assessments($workshop, $user) {
function workshop_list_teacher_submissions($workshop) {
function workshop_list_unassessed_student_submissions($workshop, $user) {
@@ -1513,7 +1514,7 @@ function workshop_list_submissions_for_admin($workshop, $order) {
if (!$user = get_record("user", "id", $submission->userid)) {
error("workshop_list_submissions_for_admin: failure to get user record");
}
- // has teacherer already assessed this submission
+ // has teacher already assessed this submission
if ($assessment = get_record_select("workshop_assessments", "submissionid = $submission->id
AND userid = $USER->id")) {
$curtime = time();
@@ -1536,7 +1537,7 @@ function workshop_list_submissions_for_admin($workshop, $order) {
}
$action .= " | id&sid=$submission->id\">".
get_string("delete", "workshop")."";
- $table->data[] = array(workshop_print_submission_title($workshop, $submission), "$user-firstname $user->lastname", $action);
+ $table->data[] = array(workshop_print_submission_title($workshop, $submission), "$user->firstname $user->lastname", $action);
}
print_table($table);
}
@@ -1631,29 +1632,32 @@ function workshop_list_teacher_submissions($workshop, $user) {
}
}
}
- // now list user's assessments
+ // now list user's assessments (but only list those which come from teacher submissions)
if ($assessments = workshop_get_user_assessments($workshop, $user)) {
$timenow = time();
foreach ($assessments as $assessment) {
if (!$submission = get_record("workshop_submissions", "id", $assessment->submissionid)) {
error ("workshop_list_teacher_submissions: unable to get submission");
}
- $comment = '';
- if (($timenow - $assessment->timecreated) > $CFG->maxeditingtime) {
- $action = "id&aid=$assessment->id\">"
- .get_string("view", "workshop")."";
- // has teacher graded user's assessment?
- if ($assessment->timegraded) {
- if (($timenow - $assessment->timegraded) > $CFG->maxeditingtime) {
- $comment .= get_string("gradedbyteacher", "workshop", $course->teacher);
+ // submission from a teacher?
+ if (isteacher($workshop->course, $submission->userid)) {
+ $comment = '';
+ if (($timenow - $assessment->timecreated) > $CFG->maxeditingtime) {
+ $action = "id&aid=$assessment->id\">"
+ .get_string("view", "workshop")."";
+ // has teacher graded user's assessment?
+ if ($assessment->timegraded) {
+ if (($timenow - $assessment->timegraded) > $CFG->maxeditingtime) {
+ $comment .= get_string("gradedbyteacher", "workshop", $course->teacher);
+ }
}
}
+ else { // there's still time left to edit...
+ $action = "id&sid=$submission->id\">".
+ get_string("edit", "workshop")."";
+ }
+ $table->data[] = array(workshop_print_submission_title($workshop, $submission), $action, $comment);
}
- else { // there's still time left to edit...
- $action = "id&sid=$submission->id\">".
- get_string("edit", "workshop")."";
- }
- $table->data[] = array(workshop_print_submission_title($workshop, $submission), $action, $comment);
}
}
print_table($table);
@@ -1816,8 +1820,8 @@ function workshop_print_assessment($workshop, $assessment = FALSE, $showcommentl
if ($assessment) {
// set the internal flag is necessary
- if (($assessment->userid == $USER->id) and (($timenow - $assessment->timecreated) < $CFG->maxeditingtime) or
- !$assessment->timeagreed) {
+ if (($assessment->userid == $USER->id) and ((($timenow - $assessment->timecreated) < $CFG->maxeditingtime) or
+ !$assessment->timeagreed)) {
$allowchanges = true;
}
if ($allowchanges or !$workshop->agreeassessments or !$workshop->hidegrades or $assessment->timeagreed) {
@@ -2271,6 +2275,22 @@ function workshop_print_assessment($workshop, $assessment = FALSE, $showcommentl
}
+function workshop_print_assessments_for_admin($workshop, $submission) {
+
+ if ($assessments =workshop_get_assessments($submission)) {
+ foreach ($assessments as $assessment) {
+ if (!$user = get_record("user", "id", $assessment->userid)) {
+ error (" workshop_print_assessments_for_admin: unable to get user record");
+ }
+ echo "".get_string("assessmentby", "workshop", $user->firstname." ".$user->lastname)."
\n";
+ workshop_print_assessment($workshop, $assessment);
+ echo "id&aid=$assessment->id\">".
+ get_string("delete", "workshop")."
\n";
+ }
+ }
+ }
+
+
function workshop_print_difference($time) {
if ($time < 0) {
$timetext = get_string("late", "assignment", format_time($time));
diff --git a/mod/workshop/submissions.php b/mod/workshop/submissions.php
index a05c4f4cce..92724543ce 100644
--- a/mod/workshop/submissions.php
+++ b/mod/workshop/submissions.php
@@ -78,7 +78,7 @@
if (!isteacher($course->id)) {
error("Only teachers can look at this page");
}
- if (!isset($_GET['sid'])) {
+ if (empty($_GET['sid'])) {
error("Admin confirm delete: submission id missing");
}
@@ -93,10 +93,11 @@
if (!isteacher($course->id)) {
error("Only teachers can look at this page");
}
- if (!$sid = isset($_GET['sid'])) {
+ if (empty($_GET['sid'])) {
error("Admin delete: submission id missing");
}
- if (!$submission = get_record("workshop_submissions", "id", $sid)) {
+
+ if (!$submission = get_record("workshop_submissions", "id", $_GET['sid'])) {
error("Admin delete: can not get submission record");
}
print_string("deleting", "workshop");
diff --git a/mod/workshop/todo.txt b/mod/workshop/todo.txt
index a230affab6..e836973d1a 100644
--- a/mod/workshop/todo.txt
+++ b/mod/workshop/todo.txt
@@ -11,7 +11,10 @@ Comments are seen by a third party, is this standard Moodle behaviour?
Cron function should email something to the assessor when an assessment is
agreed.
+Self assessments may need special handling, remove duplication in student
+ view
+
Ray Kingdon
-8 May 2003
+13 May 2003
--
2.39.5