]> git.mjollnir.org Git - moodle.git/commitdiff
Workshop module now works with dates rather than phases, see http://moodle.org/mod...
authorgustav_delius <gustav_delius>
Sun, 5 Dec 2004 11:49:18 +0000 (11:49 +0000)
committergustav_delius <gustav_delius>
Sun, 5 Dec 2004 11:49:18 +0000 (11:49 +0000)
16 files changed:
lang/en/workshop.php
mod/workshop/assessments.php
mod/workshop/backuplib.php
mod/workshop/db/mysql.php
mod/workshop/db/mysql.sql
mod/workshop/db/postgres7.php
mod/workshop/db/postgres7.sql
mod/workshop/index.php
mod/workshop/lib.php
mod/workshop/locallib.php
mod/workshop/mod.html
mod/workshop/restorelib.php
mod/workshop/submissions.php
mod/workshop/upload.php
mod/workshop/version.php
mod/workshop/view.php

index 585d24c670587cd246d2a76371c921c030f5b539..95338c28c5ccc38299bee182a189ef5322fc5391 100644 (file)
@@ -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.<br />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\'.<br />
-       This makes the grading easier and more consistent. As teacher you must add these <br />
-       Elements before making the assignment available to students. This is done by<br />
-       clicking on the assignment in the course, if no elements are present you will be asked<br />
-       to add them. You can change the number of elements using the Edit Assignment screen,<br />
-       the elements themselves can be amended from the &quot;Managing Assessment&quot; screen. ';
+    This makes the grading easier and more consistent. As teacher you must add these <br />
+    Elements before making the assignment available to students. This is done by<br />
+    clicking on the assignment in the course, if no elements are present you will be asked<br />
+    to add them. You can change the number of elements using the Edit Assignment screen,<br />
+    the elements themselves can be amended from the &quot;Managing Assessment&quot; 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';
index 2f6391a22daefa5fe006b0de48fed695d5cc5586..4a015cd9af8db99a573db15aea1825cecfe89ed1 100644 (file)
@@ -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)) {
                   <a href=\"view.php?id=$cm->id\">$workshop->name</a> -> $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");
-                       }
-               ?>
-               <form name="commentform" action="assessments.php" method="post">
-               <input type="hidden" name="action" value="insertcomment" />
-               <input type="hidden" name="id" value="<?php echo $cm->id ?>" />
-               <input type="hidden" name="aid" value="<?php echo $_REQUEST['aid'] ?>" />
-               <center>
-               <table cellpadding="5" border="1">
-               <?php
-
-               // now get the comment
-               echo "<tr valign=\"top\">\n";
-
-               echo "  <td align=\"right\"><b>". get_string("comment", "workshop").":</b></td>\n";
-
-               echo "  <td>\n";
-
-               echo "          <textarea name=\"comments\" rows=\"5\" cols=\"75\">\n";
-               echo "</textarea>\n";
-
-               echo "  </td></tr></table>\n";
-               echo "<input type=\"submit\" value=\"".get_string("savemycomment", "workshop")."\" />\n";
-               echo "</center></form>\n";
-               echo "<center><b>".get_string("assessment", "workshop"). "</b></center>\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");
+            }
+        ?>
+        <form name="commentform" action="assessments.php" method="post">
+        <input type="hidden" name="action" value="insertcomment" />
+        <input type="hidden" name="id" value="<?php echo $cm->id ?>" />
+        <input type="hidden" name="aid" value="<?php echo $_REQUEST['aid'] ?>" />
+        <center>
+        <table cellpadding="5" border="1">
+        <?php
+
+        // now get the comment
+        echo "<tr valign=\"top\">\n";
+
+        echo "  <td align=\"right\"><b>". get_string("comment", "workshop").":</b></td>\n";
+
+        echo "  <td>\n";
+
+        echo "      <textarea name=\"comments\" rows=\"5\" cols=\"75\">\n";
+        echo "</textarea>\n";
+
+        echo "  </td></tr></table>\n";
+        echo "<input type=\"submit\" value=\"".get_string("savemycomment", "workshop")."\" />\n";
+        echo "</center></form>\n";
+        echo "<center><b>".get_string("assessment", "workshop"). "</b></center>\n";
+        workshop_print_assessment($workshop, $assessment);
+        }
 
 
 
         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);
             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)
 
 
         $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<br />";
-                               }
-                               $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<br />";
+                }
+                $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 "<b>".get_string("weightederrorcount", "workshop", intval($error + 0.5))."</b>\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 "<b>".get_string("weightederrorcount", "workshop", intval($error + 0.5))."</b>\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);
         
     }
 
 
-       /******************* 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&amp;id=$cm->id&amp;aid=$_GET[aid]", "submissions.php?action=adminlist&amp;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&amp;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&amp;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&amp;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 "<centre><b>".get_string("savedok", "workshop")."</b></center><br />\n";
-                       
-               add_to_log($course->id, "workshop", "agree", "assessments.php?action=viewassessment&amp;id=$cm->id&amp;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&amp;id=$cm->id&amp;aid=$_GET[aid]", "submissions.php?action=adminlist&amp;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&amp;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&amp;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&amp;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 "<centre><b>".get_string("savedok", "workshop")."</b></center><br />\n";
+            
+        add_to_log($course->id, "workshop", "agree", "assessments.php?action=viewassessment&amp;id=$cm->id&amp;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", 
                 $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");
-                       }
-               ?>
-               <form name="gradingform" action="assessments.php" method="post">
-               <input type="hidden" name="action" value="updatecomment" />
-               <input type="hidden" name="id" value="<?php echo $cm->id ?>" />
-               <input type="hidden" name="cid" value="<?php echo $_GET['cid'] ?>" />
-               <center>
-               <table cellpadding="5" border="1">
-               <?php
-
-               // now show the comment
-               echo "<tr valign=\"top\">\n";
-               echo "  <td align=\"right\"><b>". get_string("comment", "workshop").":</b></td>\n";
-               echo "  <td>\n";
-               echo "          <textarea name=\"comments\" rows=\"5\" cols=\"75\">\n";
-               if (isset($comment->comments)) {
-                       echo $comment->comments;
-                       }
-               echo "      </textarea>\n";
-               echo "  </td></tr></table>\n";
-               echo "<input type=\"submit\" value=\"".get_string("savemycomment", "workshop")."\" />\n";
-               echo "</center></form>\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");
-               ?>
-               <form name="form" method="post" action="assessments.php">
-               <input type="hidden" name="id" value="<?php echo $cm->id ?>" />
-               <input type="hidden" name="action" value="insertelements" />
-               <center><table cellpadding="5" border="1">
-               <?php
-               
-               // get existing elements, if none set up appropriate default ones
-               if ($elementsraw = get_records("workshop_elements", "workshopid", $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");
+            }
+        ?>
+        <form name="gradingform" action="assessments.php" method="post">
+        <input type="hidden" name="action" value="updatecomment" />
+        <input type="hidden" name="id" value="<?php echo $cm->id ?>" />
+        <input type="hidden" name="cid" value="<?php echo $_GET['cid'] ?>" />
+        <center>
+        <table cellpadding="5" border="1">
+        <?php
+
+        // now show the comment
+        echo "<tr valign=\"top\">\n";
+        echo "  <td align=\"right\"><b>". get_string("comment", "workshop").":</b></td>\n";
+        echo "  <td>\n";
+        echo "      <textarea name=\"comments\" rows=\"5\" cols=\"75\">\n";
+        if (isset($comment->comments)) {
+            echo $comment->comments;
+            }
+        echo "      </textarea>\n";
+        echo "  </td></tr></table>\n";
+        echo "<input type=\"submit\" value=\"".get_string("savemycomment", "workshop")."\" />\n";
+        echo "</center></form>\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");
+        ?>
+        <form name="form" method="post" action="assessments.php">
+        <input type="hidden" name="id" value="<?php echo $cm->id ?>" />
+        <input type="hidden" name="action" value="insertelements" />
+        <center><table cellpadding="5" border="1">
+        <?php
+        
+        // get existing elements, if none set up appropriate default ones
+        if ($elementsraw = get_records("workshop_elements", "workshopid", $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 "<tr valign=\"top\">\n";
+                    echo "  <td align=\"right\"><b>". get_string("element","workshop")." $iplus1:</b></td>\n";
+                    echo "<td><textarea name=\"description[]\" rows=\"3\" cols=\"75\">".$elements[$i]->description."</textarea>\n";
+                    echo "  </td></tr>\n";
+                    echo "<tr valign=\"top\">\n";
+                    echo "  <td colspan=\"2\" bgcolor=\"$THEME->cellheading2\">&nbsp;</td>\n";
+                    echo "</tr>\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 "<tr valign=\"top\">\n";
+                    echo "  <td align=\"right\"><b>". get_string("element","workshop")." $iplus1:</b></td>\n";
+                    echo "<td><textarea name=\"description[]\" rows=\"3\" cols=\"75\">".$elements[$i]->description."</textarea>\n";
+                    echo "  </td></tr>\n";
+                    echo "<tr valign=\"top\">\n";
+                    echo "  <td align=\"right\"><b>". get_string("typeofscale", "workshop"). ":</b></td>\n";
+                    echo "<td valign=\"top\">\n";
+                    choose_from_menu($SCALES, "scale[]", $elements[$i]->scale, "");
+                    if ($elements[$i]->weight == '') { // not set
+                        $elements[$i]->weight = 11; // unity
+                    }
+                    echo "</td></tr>\n";
+                    echo "<tr valign=\"top\"><td align=\"right\"><b>".get_string("elementweight", "workshop").":</b></td><td>\n";
+                    workshop_choose_from_menu($WORKSHOP_EWEIGHTS, "weight[]", $elements[$i]->weight, "");
+                    echo "      </td>\n";
+                    echo "</tr>\n";
+                    echo "<tr valign=\"top\">\n";
+                    echo "  <td colspan=\"2\" bgcolor=\"$THEME->cellheading2\">&nbsp;</td>\n";
+                    echo "</tr>\n";
+                }
+                break;
+                
+            case 2: // error banded grading
+                for ($i=0; $i<$workshop->nelements; $i++) {
+                    $iplus1 = $i+1;
+                    echo "<tr valign=\"top\">\n";
+                    echo "  <td align=\"right\"><b>". get_string("element","workshop")." $iplus1:</b></td>\n";
+                    echo "<td><textarea name=\"description[$i]\" rows=\"3\" cols=\"75\">".$elements[$i]->description."</textarea>\n";
+                    echo "  </td></tr>\n";
+                    if ($elements[$i]->weight == '') { // not set
+                        $elements[$i]->weight = 11; // unity
+                        }
+                    echo "</tr>\n";
+                    echo "<tr valign=\"top\"><td align=\"right\"><b>".get_string("elementweight", "workshop").":</b></td><td>\n";
+                    workshop_choose_from_menu($WORKSHOP_EWEIGHTS, "weight[]", $elements[$i]->weight, "");
+                    echo "      </td>\n";
+                    echo "</tr>\n";
+                    echo "<tr valign=\"top\">\n";
+                    echo "  <td colspan=\"2\" bgcolor=\"$THEME->cellheading2\">&nbsp;</td>\n";
+                    echo "</tr>\n";
+                }
+                echo "</center></table><br />\n";
+                echo "<center><b>".get_string("gradetable","workshop")."</b></center>\n";
+                echo "<center><table cellpadding=\"5\" border=\"1\"><tr><td align=\"CENTER\">".
+                    get_string("numberofnegativeresponses", "workshop");
+                echo "</td><td>". get_string("suggestedgrade", "workshop")."</td></tr>\n";
+                for ($j = $workshop->grade; $j >= 0; $j--) {
+                    $numbers[$j] = $j;
+                }
+                for ($i=0; $i<=$workshop->nelements; $i++) {
+                    echo "<tr><td align=\"CENTER\">$i</td><td align=\"CENTER\">";
+                    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 "</td></tr>\n";
+                }
+                echo "</table></center>\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 "<tr valign=\"top\">\n";
+                    echo "  <td align=\"right\"><b>". get_string("criterion","workshop")." $iplus1:</b></td>\n";
+                    echo "<td><textarea name=\"description[$i]\" rows=\"3\" cols=\"75\">".$elements[$i]->description."</textarea>\n";
+                    echo "  </td></tr>\n";
+                    echo "<tr><td><b>". get_string("suggestedgrade", "workshop").":</b></td><td>\n";
+                    choose_from_menu($numbers, "maxscore[$i]", $elements[$i]->maxscore, "");
+                    echo "</td></tr>\n";
+                    echo "<tr valign=\"top\">\n";
+                    echo "  <td colspan=\"2\" bgcolor=\"$THEME->cellheading2\">&nbsp;</td>\n";
+                    echo "</tr>\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 "<tr valign=\"top\">\n";
+                    echo "  <td align=\"right\"><b>". get_string("element","workshop")." $iplus1:</b></td>\n";
+                    echo "<td><textarea name=\"description[$i]\" rows=\"3\" cols=\"75\">".$elements[$i]->description."</textarea>\n";
+                    echo "  </td></tr>\n";
+                    echo "<tr valign=\"top\"><td align=\"right\"><b>".get_string("elementweight", "workshop").":</b></td><td>\n";
+                    workshop_choose_from_menu($WORKSHOP_EWEIGHTS, "weight[]", $elements[$i]->weight, "");
+                    echo "      </td>\n";
+                    echo "</tr>\n";
+
+                    for ($j=0; $j<5; $j++) {
+                        $jplus1 = $j+1;
+                        if (empty($rubrics[$i][$j])) {
+                            $rubrics[$i][$j] = "";
+                        }
+                        echo "<tr valign=\"top\">\n";
+                        echo "  <td align=\"right\"><b>". get_string("grade","workshop")." $j:</b></td>\n";
+                        echo "<td><textarea name=\"rubric[$i][$j]\" rows=\"3\" cols=\"75\">".$rubrics[$i][$j]."</textarea>\n";
+                        echo "  </td></tr>\n";
+                        }
+                    echo "<tr valign=\"top\">\n";
+                    echo "  <td colspan=\"2\" bgcolor=\"$THEME->cellheading2\">&nbsp;</td>\n";
+                    echo "</tr>\n";
+                    }
+                break;
+            }
+        // close table and form
+
+        ?>
+        </table><br />
+        <input type="submit" value="<?php  print_string("savechanges") ?>" />
+        <input type="submit" name="cancel" value="<?php  print_string("cancel") ?>" />
+        </center>
+        </form>
+        <?php
+    }
+    
+    
+    /*************** grade all assessments (by teacher) ***************************/
+    elseif ($action == 'gradeallassessments') {
         
-               switch ($workshop->gradingstrategy) {
-                       case 0: // no grading
-                               for ($i=0; $i<$workshop->nelements; $i++) {
-                                       $iplus1 = $i+1;
-                                       echo "<tr valign=\"top\">\n";
-                                       echo "  <td align=\"right\"><b>". get_string("element","workshop")." $iplus1:</b></td>\n";
-                                       echo "<td><textarea name=\"description[]\" rows=\"3\" cols=\"75\">".$elements[$i]->description."</textarea>\n";
-                                       echo "  </td></tr>\n";
-                                       echo "<tr valign=\"top\">\n";
-                                       echo "  <td colspan=\"2\" bgcolor=\"$THEME->cellheading2\">&nbsp;</td>\n";
-                                       echo "</tr>\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 "<tr valign=\"top\">\n";
-                                       echo "  <td align=\"right\"><b>". get_string("element","workshop")." $iplus1:</b></td>\n";
-                                       echo "<td><textarea name=\"description[]\" rows=\"3\" cols=\"75\">".$elements[$i]->description."</textarea>\n";
-                                       echo "  </td></tr>\n";
-                                       echo "<tr valign=\"top\">\n";
-                                       echo "  <td align=\"right\"><b>". get_string("typeofscale", "workshop"). ":</b></td>\n";
-                                       echo "<td valign=\"top\">\n";
-                                       choose_from_menu($SCALES, "scale[]", $elements[$i]->scale, "");
-                                       if ($elements[$i]->weight == '') { // not set
-                                               $elements[$i]->weight = 11; // unity
-                                       }
-                                       echo "</td></tr>\n";
-                                       echo "<tr valign=\"top\"><td align=\"right\"><b>".get_string("elementweight", "workshop").":</b></td><td>\n";
-                                       workshop_choose_from_menu($WORKSHOP_EWEIGHTS, "weight[]", $elements[$i]->weight, "");
-                                       echo "          </td>\n";
-                                       echo "</tr>\n";
-                                       echo "<tr valign=\"top\">\n";
-                                       echo "  <td colspan=\"2\" bgcolor=\"$THEME->cellheading2\">&nbsp;</td>\n";
-                                       echo "</tr>\n";
-                               }
-                               break;
-                               
-                       case 2: // error banded grading
-                               for ($i=0; $i<$workshop->nelements; $i++) {
-                                       $iplus1 = $i+1;
-                                       echo "<tr valign=\"top\">\n";
-                                       echo "  <td align=\"right\"><b>". get_string("element","workshop")." $iplus1:</b></td>\n";
-                                       echo "<td><textarea name=\"description[$i]\" rows=\"3\" cols=\"75\">".$elements[$i]->description."</textarea>\n";
-                                       echo "  </td></tr>\n";
-                                       if ($elements[$i]->weight == '') { // not set
-                                               $elements[$i]->weight = 11; // unity
-                                               }
-                                       echo "</tr>\n";
-                                       echo "<tr valign=\"top\"><td align=\"right\"><b>".get_string("elementweight", "workshop").":</b></td><td>\n";
-                                       workshop_choose_from_menu($WORKSHOP_EWEIGHTS, "weight[]", $elements[$i]->weight, "");
-                                       echo "          </td>\n";
-                                       echo "</tr>\n";
-                                       echo "<tr valign=\"top\">\n";
-                                       echo "  <td colspan=\"2\" bgcolor=\"$THEME->cellheading2\">&nbsp;</td>\n";
-                                       echo "</tr>\n";
-                               }
-                               echo "</center></table><br />\n";
-                               echo "<center><b>".get_string("gradetable","workshop")."</b></center>\n";
-                               echo "<center><table cellpadding=\"5\" border=\"1\"><tr><td align=\"CENTER\">".
-                                       get_string("numberofnegativeresponses", "workshop");
-                               echo "</td><td>". get_string("suggestedgrade", "workshop")."</td></tr>\n";
-                               for ($j = $workshop->grade; $j >= 0; $j--) {
-                                       $numbers[$j] = $j;
-                               }
-                               for ($i=0; $i<=$workshop->nelements; $i++) {
-                                       echo "<tr><td align=\"CENTER\">$i</td><td align=\"CENTER\">";
-                                       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 "</td></tr>\n";
-                               }
-                               echo "</table></center>\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 "<tr valign=\"top\">\n";
-                                       echo "  <td align=\"right\"><b>". get_string("criterion","workshop")." $iplus1:</b></td>\n";
-                                       echo "<td><textarea name=\"description[$i]\" rows=\"3\" cols=\"75\">".$elements[$i]->description."</textarea>\n";
-                                       echo "  </td></tr>\n";
-                                       echo "<tr><td><b>". get_string("suggestedgrade", "workshop").":</b></td><td>\n";
-                                       choose_from_menu($numbers, "maxscore[$i]", $elements[$i]->maxscore, "");
-                                       echo "</td></tr>\n";
-                                       echo "<tr valign=\"top\">\n";
-                                       echo "  <td colspan=\"2\" bgcolor=\"$THEME->cellheading2\">&nbsp;</td>\n";
-                                       echo "</tr>\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 "<tr valign=\"top\">\n";
-                                       echo "  <td align=\"right\"><b>". get_string("element","workshop")." $iplus1:</b></td>\n";
-                                       echo "<td><textarea name=\"description[$i]\" rows=\"3\" cols=\"75\">".$elements[$i]->description."</textarea>\n";
-                                       echo "  </td></tr>\n";
-                                       echo "<tr valign=\"top\"><td align=\"right\"><b>".get_string("elementweight", "workshop").":</b></td><td>\n";
-                                       workshop_choose_from_menu($WORKSHOP_EWEIGHTS, "weight[]", $elements[$i]->weight, "");
-                                       echo "          </td>\n";
-                                       echo "</tr>\n";
-
-                                       for ($j=0; $j<5; $j++) {
-                                               $jplus1 = $j+1;
-                                               if (empty($rubrics[$i][$j])) {
-                                                       $rubrics[$i][$j] = "";
-                                               }
-                                               echo "<tr valign=\"top\">\n";
-                                               echo "  <td align=\"right\"><b>". get_string("grade","workshop")." $j:</b></td>\n";
-                                               echo "<td><textarea name=\"rubric[$i][$j]\" rows=\"3\" cols=\"75\">".$rubrics[$i][$j]."</textarea>\n";
-                                               echo "  </td></tr>\n";
-                                               }
-                                       echo "<tr valign=\"top\">\n";
-                                       echo "  <td colspan=\"2\" bgcolor=\"$THEME->cellheading2\">&nbsp;</td>\n";
-                                       echo "</tr>\n";
-                                       }
-                               break;
-                       }
-               // close table and form
-
-               ?>
-               </table><br />
-               <input type="submit" value="<?php  print_string("savechanges") ?>" />
-               <input type="submit" name="cancel" value="<?php  print_string("cancel") ?>" />
-               </center>
-               </form>
-               <?php
-       }
-       
-       
-       /*************** grade all assessments (by teacher) ***************************/
-       elseif ($action == 'gradeallassessments') {
-               
-               if (!isteacher($course->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 "<center><b>".get_string("teacherassessments", "workshop", $course->teacher)."</b></center>\n";
-                       workshop_print_assessment($workshop, $teachersassessment);
-               }
-               // now the student's assessment (don't allow changes)
-               $user = get_record("user", "id", $assessment->userid);
-               echo "<center><b>".get_string("assessmentby", "workshop", $user->firstname." ".$user->lastname)."</b></center>\n";
-               workshop_print_assessment($workshop, $assessment);
-               
-               ?>
-               <form name="gradingform" action="assessments.php" method="post">
-               <input type="hidden" name="action" value="updategrading" />
-               <input type="hidden" name="id" value="<?php echo $cm->id ?>" />
-               <input type="hidden" name="stype" value="<?php echo $_GET['stype'] ?>" />
-               <input type="hidden" name="aid" value="<?php echo $_GET['aid'] ?>" />
-               <center>
-               <table cellpadding="5" border="1">
-               <?php
-
-               // now get the teacher's comment
-               echo "<tr valign=\"top\">\n";
-               echo "  <td align=\"right\"><b>". get_string("teacherscomment", "workshop").":</b></td>\n";
-               echo "  <td>\n";
-               echo "          <textarea name=\"teachercomment\" rows=\"5\" cols=\"75\">\n";
-               if (isset($assessment->teachercomment)) {
-                       echo $assessment->teachercomment;
-               }
-               echo "</textarea>\n";
-               echo "  </td>\n";
-               echo "</tr>\n";
-               echo "<tr><td align=\"right\"><b>".get_string("gradeforstudentsassessment", "workshop")."</td><td>\n";
-               choose_from_menu($num, "gradinggrade", $assessment->gradinggrade, "");
-               echo "</td></tr></table>\n";
-               echo "<input type=\"submit\" value=\"".get_string("savemygrading", "workshop")."\" />\n";
-               echo "</center></form>\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&amp;id=$cm->id&amp;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 "<center><b>".get_string("teacherassessments", "workshop", $course->teacher)."</b></center>\n";
+            workshop_print_assessment($workshop, $teachersassessment);
+        }
+        // now the student's assessment (don't allow changes)
+        $user = get_record("user", "id", $assessment->userid);
+        echo "<center><b>".get_string("assessmentby", "workshop", $user->firstname." ".$user->lastname)."</b></center>\n";
+        workshop_print_assessment($workshop, $assessment);
+        
+        ?>
+        <form name="gradingform" action="assessments.php" method="post">
+        <input type="hidden" name="action" value="updategrading" />
+        <input type="hidden" name="id" value="<?php echo $cm->id ?>" />
+        <input type="hidden" name="stype" value="<?php echo $_GET['stype'] ?>" />
+        <input type="hidden" name="aid" value="<?php echo $_GET['aid'] ?>" />
+        <center>
+        <table cellpadding="5" border="1">
+        <?php
+
+        // now get the teacher's comment
+        echo "<tr valign=\"top\">\n";
+        echo "  <td align=\"right\"><b>". get_string("teacherscomment", "workshop").":</b></td>\n";
+        echo "  <td>\n";
+        echo "      <textarea name=\"teachercomment\" rows=\"5\" cols=\"75\">\n";
+        if (isset($assessment->teachercomment)) {
+            echo $assessment->teachercomment;
+        }
+        echo "</textarea>\n";
+        echo "  </td>\n";
+        echo "</tr>\n";
+        echo "<tr><td align=\"right\"><b>".get_string("gradeforstudentsassessment", "workshop")."</td><td>\n";
+        choose_from_menu($num, "gradinggrade", $assessment->gradinggrade, "");
+        echo "</td></tr></table>\n";
+        echo "<input type=\"submit\" value=\"".get_string("savemygrading", "workshop")."\" />\n";
+        echo "</center></form>\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&amp;id=$cm->id&amp;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 ************************************/
         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)
 
 
         $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<br />";
-                               }
-                               $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<br />";
+                }
+                $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 "<b>".get_string("weightederrorcount", "workshop", intval($error + 0.5))."</b>\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 "<b>".get_string("weightederrorcount", "workshop", intval($error + 0.5))."</b>\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);
         
 
         $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<br />";
-                               }
-                               $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<br />";
+                }
+                $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 "<b>".get_string("weightederrorcount", "workshop", intval($error + 0.5))."</b>\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 "<b>".get_string("weightederrorcount", "workshop", intval($error + 0.5))."</b>\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
         }
         
         // 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&amp;id=$cm->id&amp;aid=$assessment->id", "$assessment->id", "$cm->id");
         
     /****************** 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&amp;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&amp;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);
  
index 87987c7052210618b39a1826ef8c7b3fbf2e9002..ae3f283c78703de628d2cd96535d60f2bb9b6e67 100644 (file)
                 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));
index d576616a3cad436ad68fa0a64604f6ddeb95cfb2..b5f160dc939d19af96f893afe03b768a74fe7559 100644 (file)
@@ -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;
 }
 
index 5d598d2fec29e3649cc0abe9db7961c4ef0859d2..3d004eeb550e369d6f98bf726b7d163f43dee56e 100644 (file)
@@ -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');
-
index 0095c50259d6ee0203e40d2c495a4f89533303b3..980dceb4382d5e3772d352042a35cf7a0a423ae6 100644 (file)
@@ -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;
 
 }    
index 73274321bca61e6797132545fd67cdb88809528f..0ce59fa545a07c5b4b43366cd0b5d3c2ad2a4e4f 100644 (file)
@@ -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',
index 9c2c4d013cd207734374e5bc706a100765a08bbb..e60e548f3722a28886eb03985ec8d57bfa7a78d2 100644 (file)
 
     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 = "<font color=\"red\">".userdate($submission->timecreated)."</font>";
                 }
-                $due = userdate($workshop->deadline);
                 if (!$workshop->visible) {
                     //Show dimmed if the mod is hidden
                     $link = "<a class=\"dimmed\" href=\"view.php?id=$workshop->coursemodule\">$workshop->name</a><br />";
         }
         else { // no submission
             $submitted = get_string("no");
-            $due = userdate($workshop->deadline);
             if (!$workshop->visible) {
                 //Show dimmed if the mod is hidden
                 $link = "<a class=\"dimmed\" href=\"view.php?id=$workshop->coursemodule\">$workshop->name</a>";
index 356fb3bcafc7702d1515402400b7fdd5885952f0..8150804b7739e81b784dae951499ff777e4f8abc 100644 (file)
@@ -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)) {
index 08c1c8e423c065c7d3525b2e4a1606fe8cfaf64c..51b16904be2f3346febe0df992dd8b9b82145021 100644 (file)
@@ -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 = "<a href=\"submissions.php?action=editsubmission&amp;id=$cm->id&amp;sid=$submission->id\">".
                     get_string("edit", "workshop")."</a> | ".
                     "<a href=\"submissions.php?action=userconfirmdelete&amp;id=$cm->id&amp;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 = "<font color=\"red\">$strdifference</font>";
-    }
-    $strduedate = userdate($workshop->deadline)." ($strdifference)";
     print_simple_box_start("center");
     print_heading($workshop->name, "center");
     print_simple_box_start("center");
-    echo "<b>".get_string("duedate", "assignment")."</b>: $strduedate<br />";
+
+    // print phase and date info
+    $string = '<b>'.get_string('currentphase', 'workshop').'</b>: '.workshop_phase($workshop).'<br />';
+    $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 = "<font color=\"red\">$strdifference</font>";
+            }
+            $string .= '<b>'.get_string($type, 'workshop').'</b>: '.userdate($date)." ($strdifference)<br />";
+        }
+    }
+    echo $string;
+
     $grade = $workshop->gradinggrade + $workshop->grade;
-    echo "<b>".get_string("maximumgrade")."</b>: $grade<br />";
+    echo "<br /><b>".get_string("maximumgrade")."</b>: $grade<br />";
     echo "<b>".get_string("detailsofassessment", "workshop")."</b>: 
         <a href=\"assessments.php?id=$cm->id&amp;action=displaygradingform\">".
         get_string("specimenassessmentform", "workshop")."</a><br />";
@@ -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] = "<b>$name</b>";
-                } else {
-                    $tabcontents[$key] = "<a class= \"dimmed\" href=\"$url\"><b>$name</b></a>";
-                }
-            } else {
-                $tabcontents[$key] = "<b>$name</b>";
-            }
-        }
-    }
-
-    if (empty($tabs->width)) {
-        $tabs->width = "80%";
-    }
-
-    if (empty($tabs->cellpadding)) {
-        $tabs->cellpadding = "5";
-    }
-
-    // print_simple_box_start("center", "$table->width", "#ffffff", 0);
-    echo "<table width=\"$tabs-width\" border=\"0\" align=\"center\" ";
-    echo " cellpadding=\"$tabs->cellpadding\" cellspacing=\"0\" class=\"generaltable\">\n";
-
-    if (!empty($tabs->names)) {
-        echo "<tr>";
-        echo "<td  class=\"generaltablecell\">".
-            "<img width=\"10\" src=\"$CFG->wwwroot/pix/spacer.gif\" alt=\"\" /></td>\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 "<td valign=\"top\" class=\"generaltabselected\" $alignment $width $wrapping bgcolor=\"$THEME->cellheading2\">$tab</td>\n";
-            } else {
-                echo "<td valign=\"top\" class=\"generaltab\" $alignment $width $wrapping bgcolor=\"$THEME->cellheading\">$tab</td>\n";
-            }
-        echo "<td  class=\"generaltablecell\">".
-            "<img width=\"10\" src=\"$CFG->wwwroot/pix/spacer.gif\" alt=\"\" /></td>\n";
-        }
-        echo "</tr>\n";
-    } else {
-        echo "<tr><td>No names specified</td></tr>\n";
-    }
-    // bottom stripe
-    $ncells = count($tabs->names)*2 +1;
-    $height = 2;
-    echo "<tr><td colspan=\"$ncells\" bgcolor=\"$THEME->cellheading2\">".
-        "<img height=\"$height\" src=\"$CFG->wwwroot/pix/spacer.gif\" alt=\"\" /></td></tr>\n";
-    echo "</table>\n";
-    // print_simple_box_end();
-
-    return true;
-}
 
 function workshop_print_time_to_deadline($time) {
     if ($time < 0) {
index acbfd26fb7c55e5786593c1e00def9303c862ff2..d236f33ebc33b81d8981f7e88eae8f2d08f21b40 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-       require("$CFG->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;
     }
     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();
     }
 ?>
 
     <td align="right"><b><?php  print_string("gradingstrategy", "workshop") ?>:</b></td>
     <td>
     <?php
-          choose_from_menu($WORKSHOP_TYPE, "gradingstrategy", $form->gradingstrategy, "");
+       choose_from_menu($WORKSHOP_TYPE, "gradingstrategy", $form->gradingstrategy, "");
        helpbutton("gradingstrategy", get_string("gradingstrategy", "workshop"), "workshop");
     ?>
     </td>
 <tr valign="top">
     <td align="right"><b><?php  print_string("numberofassessmentsofteachersexamples", "workshop") ?>:</b></td>
     <td>
-               <?php
+        <?php
         unset($numbers);
-               for ($i=20; $i>=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");
-               ?>
+        ?>
     </td>
 </tr>
 
     <td align="right"><b><?php print_string("comparisonofassessments", "workshop") ?>:</b></td>
     <td>
         <?php
-               // set up comparison names
+        // set up comparison names
         foreach ($WORKSHOP_ASSESSMENT_COMPS as $KEY => $COMPARISON) {
             $COMPARISONS[] = $COMPARISON['name'];
-               }
+        }
         choose_from_menu($COMPARISONS, "assessmentcomps", $form->assessmentcomps, "");
         helpbutton("comparisonofassessments", get_string("comparisonofassessments", "workshop"), "workshop");
     ?>
 <tr valign="top">
     <td align="right"><b><?php  print_string("numberofassessmentsofstudentsubmissions", "workshop") ?>:</b></td>
     <td>
-               <?php
+        <?php
         unset($numbers);
-               for ($i=20; $i>=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");
-               ?>
+        ?>
     </td>
 </tr>
 
 <tr valign="top">
     <td align="right"><b><?php  print_string("weightforteacherassessments", "workshop") ?>:</b></td>
     <td>
-               <?php
+        <?php
         unset($numbers);
-               for ($i=10; $i>=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");
-               ?>
+        ?>
     </td>
 </tr>
 
     <td>
     <?php 
         $options[0] = get_string("no"); $options[1] = get_string("yes");
-               choose_from_menu($options, "usepassword", $form->usepassword, "");
+        choose_from_menu($options, "usepassword", $form->usepassword, "");
         helpbutton("usepassword", get_string("usepassword", "workshop"), "workshop");
     ?>
     </td>
     <td align="right"><b><?php  print_string("password"); ?>:</b></td>
     <td>
         <input type="text" name="password" size="10" value="" alt="<?php  print_string("password"); ?>" /> <?php echo " (".get_string("leavetokeep").")"; ?>
-               <?php helpbutton("password", get_string("password"), "workshop"); ?>
+        <?php helpbutton("password", get_string("password"), "workshop"); ?>
     </td>
 </tr>
 
 </tr>
 
 <tr valign="top">
-    <td align="right"><b><?php  print_string("deadline", "workshop") ?>:</b></td>
+    <td align="right"><b><?php  print_string("submissionstart", "workshop") ?>:</b></td>
+    <td><?php
+            print_date_selector("submissionstartday", "submissionstartmonth", "submissionstartyear", $form->submissionstart);
+            echo "&nbsp;-&nbsp;";
+            print_time_selector("submissionstarthour", "submissionstartminute", $form->submissionstart);
+            helpbutton("submissionstart", get_string("submissionstart", "workshop"), "workshop");
+    ?></td>
+</tr>
+
+<tr valign="top">
+    <td align="right"><b><?php  print_string("assessmentstart", "workshop") ?>:</b></td>
     <td><?php
-           print_date_selector("deadlineday", "deadlinemonth", "deadlineyear", $form->deadline);
-           echo "&nbsp;-&nbsp;";
-           print_time_selector("deadlinehour", "deadlineminute", $form->deadline);
+            print_date_selector("assessmentstartday", "assessmentstartmonth", "assessmentstartyear", $form->assessmentstart);
+            echo "&nbsp;-&nbsp;";
+            print_time_selector("assessmentstarthour", "assessmentstartminute", $form->assessmentstart);
+            helpbutton("assessmentstart", get_string("assessmentstart", "workshop"), "workshop");
     ?></td>
 </tr>
 
+<tr valign="top">
+    <td align="right"><b><?php  print_string("submissionend", "workshop") ?>:</b></td>
+    <td><?php
+            print_date_selector("submissionendday", "submissionendmonth", "submissionendyear", $form->submissionend);
+            echo "&nbsp;-&nbsp;";
+            print_time_selector("submissionendhour", "submissionendminute", $form->submissionend);
+            helpbutton("submissionend", get_string("submissionend", "workshop"), "workshop");
+    ?></td>
+</tr>
+
+<tr valign="top">
+    <td align="right"><b><?php  print_string("assessmentend", "workshop") ?>:</b></td>
+    <td><?php
+            print_date_selector("assessmentendday", "assessmentendmonth", "assessmentendyear", $form->assessmentend);
+            echo "&nbsp;-&nbsp;";
+            print_time_selector("assessmentendhour", "assessmentendminute", $form->assessmentend);
+            helpbutton("assessmentend", get_string("assessmentend", "workshop"), "workshop");
+    ?></td>
+</tr>
 <tr valign="top">
     <td align="right"><b><?php  print_string("releaseteachergrades", "workshop") ?>:</b></td>
     <td><?php
index b68bfd62f853a09d56d0ab4e6ef230041a768e61..3c5a29962646b8b39392576b16695fe4d24b5947 100644 (file)
             $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']['#']);
index 73fbce74e7cdffbf663515b5c5ce82662eaf674c..bdb9a1cdf072a48540679581922b8d0c7486a5ac 100644 (file)
@@ -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)) {
         }
     
 
-       /*************** 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 "<center><table border=\"1\" width=\"90%\"><tr>
-                       <td bgcolor=\"$THEME->cellheading2\"><b>".$course->student."</b></td>";
-               echo "<td bgcolor=\"$THEME->cellheading2\"><b>".get_string("submission", "workshop")."</b></td>";
-               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 "<center><table border=\"1\" width=\"90%\"><tr>
+            <td bgcolor=\"$THEME->cellheading2\"><b>".$course->student."</b></td>";
+        echo "<td bgcolor=\"$THEME->cellheading2\"><b>".get_string("submission", "workshop")."</b></td>";
+        if ($workshop->wtype) {
             echo "<td bgcolor=\"$THEME->cellheading2\" align=\"center\"><b>".get_string("assessmentsdone", "workshop").
                 "</b></td>";
-                   echo "<td bgcolor=\"$THEME->cellheading2\" align=\"center\"><b>".get_string("gradeforassessments", 
+            echo "<td bgcolor=\"$THEME->cellheading2\" align=\"center\"><b>".get_string("gradeforassessments", 
                 "workshop")."</b></td>";
         }
-               echo "<td bgcolor=\"$THEME->cellheading2\" align=\"center\"><b>".get_string("assessmentsby", "workshop", 
+        echo "<td bgcolor=\"$THEME->cellheading2\" align=\"center\"><b>".get_string("assessmentsby", "workshop", 
                 $course->teachers)."</b></td>";
-           if ($workshop->wtype) {
+        if ($workshop->wtype) {
             echo "<td bgcolor=\"$THEME->cellheading2\" align=\"center\"><b>".get_string("assessmentsby", "workshop", 
                 $course->students)."</b></td>";
         }
-               echo "<td bgcolor=\"$THEME->cellheading2\" align=\"center\"><b>".get_string("gradeforsubmission", 
+        echo "<td bgcolor=\"$THEME->cellheading2\" align=\"center\"><b>".get_string("gradeforsubmission", 
                 "workshop")."</b></td>";
-               echo "<td bgcolor=\"$THEME->cellheading2\" align=\"center\"><b>".get_string("overallgrade", "workshop").
+        echo "<td bgcolor=\"$THEME->cellheading2\" align=\"center\"><b>".get_string("overallgrade", "workshop").
                 "</b></td></tr>\n";
 
         foreach ($users as $user) {
                     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 "<tr><td>$user->firstname $user->lastname</td>";
-                                       echo "<td>".workshop_print_submission_title($workshop, $submission)."</td>\n";
-                                       if ($workshop->wtype) {
+                    echo "<tr><td>$user->firstname $user->lastname</td>";
+                    echo "<td>".workshop_print_submission_title($workshop, $submission)."</td>\n";
+                    if ($workshop->wtype) {
                         echo "<td align=\"center\">".workshop_print_user_assessments($workshop, $user)."</td>";
-                                           echo "<td align=\"center\">$gradinggrade</td>";
+                        echo "<td align=\"center\">$gradinggrade</td>";
                     }
-                                       echo "<td align=\"center\">".workshop_print_submission_assessments($workshop, $submission, 
+                    echo "<td align=\"center\">".workshop_print_submission_assessments($workshop, $submission, 
                             "teacher")."</td>";
-                                       if ($workshop->wtype) {
+                    if ($workshop->wtype) {
                         echo "<td align=\"center\">".workshop_print_submission_assessments($workshop, $submission, 
                             "student")."</td>";
                     }
-                                       echo "<td align=\"center\">$grade</td>";
-                                       echo "<td align=\"center\">".number_format($gradinggrade + $grade, 1)."</td></tr>\n";
-                               }
-                       }
-               }
-               echo "</table><br clear=\"all\" />\n";
+                    echo "<td align=\"center\">$grade</td>";
+                    echo "<td align=\"center\">".number_format($gradinggrade + $grade, 1)."</td></tr>\n";
+                }
+            }
+        }
+        echo "</table><br clear=\"all\" />\n";
         workshop_print_key($workshop);
-               if ($workshop->showleaguetable) {
-                       workshop_print_league_table($workshop);
-                       if ($workshop->anonymous) {
-                               echo "<p>".get_string("namesnotshowntostudents", "workshop", $course->students)."</p>\n";
-                       }
-               }
-               print_continue("view.php?id=$cm->id");
-       }
+        if ($workshop->showleaguetable) {
+            workshop_print_league_table($workshop);
+            if ($workshop->anonymous) {
+                echo "<p>".get_string("namesnotshowntostudents", "workshop", $course->students)."</p>\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
             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 "<center><table border=\"1\" width=\"90%\"><tr>
-                       <td bgcolor=\"$THEME->cellheading2\"><b>".$course->student."</b></td>";
-               echo "<td bgcolor=\"$THEME->cellheading2\"><b>".get_string("submission", "workshop")."</b></td>";
-               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 "<center><table border=\"1\" width=\"90%\"><tr>
+            <td bgcolor=\"$THEME->cellheading2\"><b>".$course->student."</b></td>";
+        echo "<td bgcolor=\"$THEME->cellheading2\"><b>".get_string("submission", "workshop")."</b></td>";
+        if ($workshop->wtype) {
             echo "<td bgcolor=\"$THEME->cellheading2\" align=\"center\"><b>".get_string("assessmentsdone", "workshop").
                 "</b></td>";
-                   echo "<td bgcolor=\"$THEME->cellheading2\" align=\"center\"><b>".get_string("gradeforassessments", 
+            echo "<td bgcolor=\"$THEME->cellheading2\" align=\"center\"><b>".get_string("gradeforassessments", 
                 "workshop")."</b></td>";
         }
-               echo "<td bgcolor=\"$THEME->cellheading2\" align=\"center\"><b>".get_string("assessmentsby", "workshop", 
+        echo "<td bgcolor=\"$THEME->cellheading2\" align=\"center\"><b>".get_string("assessmentsby", "workshop", 
                 $course->teachers)."</b></td>";
-           if ($workshop->wtype) {
+        if ($workshop->wtype) {
             echo "<td bgcolor=\"$THEME->cellheading2\" align=\"center\"><b>".get_string("assessmentsby", "workshop", 
                 $course->students)."</b></td>";
         }
-               echo "<td bgcolor=\"$THEME->cellheading2\" align=\"center\"><b>".get_string("gradeforsubmission", 
+        echo "<td bgcolor=\"$THEME->cellheading2\" align=\"center\"><b>".get_string("gradeforsubmission", 
                 "workshop")."</b></td>";
-               echo "<td bgcolor=\"$THEME->cellheading2\" align=\"center\"><b>".get_string("overallgrade", "workshop").
+        echo "<td bgcolor=\"$THEME->cellheading2\" align=\"center\"><b>".get_string("overallgrade", "workshop").
                 "</b></td></tr>\n";
 
         foreach ($users as $user) {
                     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 "<tr><td>$user->firstname $user->lastname</td>";
-                                       echo "<td>".workshop_print_submission_title($workshop, $submission)."</td>\n";
-                                       if ($workshop->wtype) {
+                    echo "<tr><td>$user->firstname $user->lastname</td>";
+                    echo "<td>".workshop_print_submission_title($workshop, $submission)."</td>\n";
+                    if ($workshop->wtype) {
                         echo "<td align=\"center\">".workshop_print_user_assessments($workshop, $user)."</td>";
-                                           echo "<td align=\"center\">$gradinggrade</td>";
+                        echo "<td align=\"center\">$gradinggrade</td>";
                     }
-                                       echo "<td align=\"center\">".workshop_print_submission_assessments($workshop, $submission, 
+                    echo "<td align=\"center\">".workshop_print_submission_assessments($workshop, $submission, 
                             "teacher")."</td>";
-                                       if ($workshop->wtype) {
+                    if ($workshop->wtype) {
                         echo "<td align=\"center\">".workshop_print_submission_assessments($workshop, $submission, 
                             "student")."</td>";
                     }
-                                       echo "<td align=\"center\">$grade</td>";
-                                       echo "<td align=\"center\">".number_format($gradinggrade + $grade, 1)."</td></tr>\n";
-                               }
-                       }
-               }
-               echo "</table><br clear=\"all\" />\n";
+                    echo "<td align=\"center\">$grade</td>";
+                    echo "<td align=\"center\">".number_format($gradinggrade + $grade, 1)."</td></tr>\n";
+                }
+            }
+        }
+        echo "</table><br clear=\"all\" />\n";
         workshop_print_key($workshop);
-               print_continue("view.php?id=$cm->id");
-       }
+        print_continue("view.php?id=$cm->id");
+    }
 
 
     /******************* edit submission ************************************/
         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'));
+        }
         ?>
         <form name="editform" enctype="multipart/form-data" action="submissions.php" method="post">
         <input type="hidden" name="action" value="updatesubmission" />
         }
     
 
-       /******************* 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' ) {
         
         $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");
         }
     
 
index c89b837f591b4a9b364eb965c6ecc3e1ac36af6f..9f9c79d7602a98fe374fd8f11aca4b2a5875eb51 100644 (file)
     $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;
index 41abc368e4bb83907876e7d972863ae883177228..ba58c24abcbd885136bac5410b6c0a79f8083912 100644 (file)
@@ -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;
 
 ?>
index ed7eb8b1e247f79c9383c00adfb2fe10e0d07e6e..c53fbc8282906acaaed54c7b8923682f3309abc8 100644 (file)
@@ -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)) {
     
     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 "<center><table border=\"1\" width=\"90%\"><tr>";
-                       echo "<td><b>".get_string("submissions", "workshop")."</b></td>";
+    /****************** 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 "<center><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>";
             }
-                       echo "<td align=\"center\"><b>".get_string("teacherassessments", "workshop", 
+            echo "<td align=\"center\"><b>".get_string("teacherassessments", "workshop", 
                         $course->teacher)."</b></td>";
             if ($workshop->wtype) {
                 echo "<td align=\"center\"><b>".get_string("studentassessments", "workshop", 
             }
         }
         echo "</table><br clear=\"all\" />\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 "<form name=\"password\" method=\"post\" action=\"view.php\">\n";
-                               echo "<input type=\"hidden\" name=\"id\" value=\"$cm->id\" />\n";
-                               echo "<table cellpadding=\"7px\">";
-                               if (isset($_POST['userpassword'])) {
-                                       echo "<tr align=\"center\" style='color:#DF041E;'><td>".get_string("wrongpassword", "workshop").
+            if (!$correctpass) {
+                print_simple_box_start("center");
+                echo "<form name=\"password\" method=\"post\" action=\"view.php\">\n";
+                echo "<input type=\"hidden\" name=\"id\" value=\"$cm->id\" />\n";
+                echo "<table cellpadding=\"7px\">";
+                if (isset($_POST['userpassword'])) {
+                    echo "<tr align=\"center\" style='color:#DF041E;'><td>".get_string("wrongpassword", "workshop").
                         "</td></tr>";
-                               }
-                               echo "<tr align=\"center\"><td>".get_string("passwordprotectedworkshop", "workshop", $workshop->name).
+                }
+                echo "<tr align=\"center\"><td>".get_string("passwordprotectedworkshop", "workshop", $workshop->name).
                     "</td></tr>";
-                               echo "<tr align=\"center\"><td>".get_string("enterpassword", "workshop").
+                echo "<tr align=\"center\"><td>".get_string("enterpassword", "workshop").
                     " <input type=\"password\" name=\"userpassword\" /></td></tr>";
-                                               
-                               echo "<tr align=\"center\"><td>";
-                               echo "<input type=\"button\" value=\"".get_string("cancel").
+                        
+                echo "<tr align=\"center\"><td>";
+                echo "<input type=\"button\" value=\"".get_string("cancel").
                     "\" onclick=\"parent.location='../../course/view.php?id=$course->id';\">  ";
-                               echo "<input type=\"button\" value=\"".get_string("continue").
+                echo "<input type=\"button\" value=\"".get_string("continue").
                     "\" onclick=\"document.password.submit();\" />";
-                               echo "</td></tr></table>";
-                               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 "</td></tr></table>";
+                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);
         }
                             $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);
                     // 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)...
                 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)) {
                             echo "<hr size=\"1\" noshade=\"noshade\" />";
                         }
                     }
-                               }
-                       }
-               }
-       }
+                }
+            }
+        }
+    }
 
 
-       /****************** 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 = "<font color=\"red\">$strdifference</font>";
-               }
-               $strduedate = userdate($workshop->deadline)." ($strdifference)";
-       
-               workshop_print_assignment_info($workshop);
-               
-               // list previous submissions from teacher 
-               workshop_list_user_submissions($workshop, $USER);
-       
-               echo "<hr size=\"1\" noshade=\"noshade\" />";
-       
-               // 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 "<hr size=\"1\" noshade=\"noshade\" />";
+    
+        // 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?
                 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&amp;action=setupassignment", 
-                "view.php?id=$cm->id&amp;action=allowboth",
-                "view.php?id=$cm->id&amp;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&amp;action=setupassignment", 
-                    "view.php?id=$cm->id&amp;action=allowsubmissions",
-                    "view.php?id=$cm->id&amp;action=allowboth",
-                    "view.php?id=$cm->id&amp;action=allowassessments",
-                    "view.php?id=$cm->id&amp;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 "<center>\n";
+        
+        // if there are assessment elements show link to edit them
+        if ($workshop->nelements) {
+            echo "<br /><b><a href=\"assessments.php?id=$cm->id&amp;action=editelements\">".
+                get_string("amendassessmentelements", "workshop")."</a></b> \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 "<br /><b><a href=\"view.php?id=$cm->id&amp;action=submitexample\">".
+                get_string("submitexampleassignment", "workshop")."</a></b> \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 "<br /><b><a href=\"submissions.php?id=$cm->id&amp;action=listforassessmentteacher\">".
+                    get_string("teachersubmissionsforassessment", "workshop", $n)."</a></b> \n";
+                helpbutton("assessmentofexamples", get_string("teachersubmissionsforassessment", 
+                            "workshop"), "workshop");
             }
-        } else {
-            $tabs->highlight = 0; // phase is zero
         }
-        workshop_print_tabbed_heading($tabs);
-        echo "<center>\n";
-        switch ($workshop->phase) {
-            case 0:
-            case 1: // set up assignment
-                if ($workshop->nelements) {
-                    echo "<br /><b><a href=\"assessments.php?id=$cm->id&amp;action=editelements\">".
-                        get_string("amendassessmentelements", "workshop")."</a></b> \n";
-                    helpbutton("elements", get_string("amendassessmentelements", "workshop"), "workshop");
-                }
-                if ($workshop->ntassessments) { 
-                    // if teacher examples show submission and assessment links
-                    echo "<br /><b><a href=\"view.php?id=$cm->id&amp;action=submitexample\">".
-                        get_string("submitexampleassignment", "workshop")."</a></b> \n";
-                    helpbutton("submissionofexamples", get_string("submitexampleassignment", "workshop"),
-                            "workshop");
-                    echo "<br /><b><a href=\"submissions.php?id=$cm->id&amp;action=listforassessmentteacher\">".
-                        get_string("teachersubmissionsforassessment", "workshop", 
-                                workshop_count_teacher_submissions_for_assessment($workshop, $USER)).
-                        "</a></b> \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 "<br /><b><a href=\"submissions.php?id=$cm->id&amp;action=listforassessmentteacher\">".
-                            get_string("teachersubmissionsforassessment", "workshop", $n)."</a></b> \n";
-                        helpbutton("assessmentofexamples", get_string("teachersubmissionsforassessment", 
-                                    "workshop"), "workshop");
-                    }
-                }
-                // only show grading assessments if there are grading grades involved
-                if ($workshop->wtype) {
-                    echo "<br /><b><a href=\"assessments.php?id=$cm->id&amp;action=gradeallassessments\">".
-                        get_string("ungradedassessments", "workshop", 
-                        workshop_count_ungraded_assessments($workshop))."</a></b> \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 "<br /><b><a href=\"submissions.php?id=$cm->id&amp;action=listforassessmentstudent\">".
-                        get_string("studentsubmissionsforassessment", "workshop", 
-                        workshop_count_student_submissions_for_assessment($workshop, $USER))."</a></b> \n";
-                    helpbutton("gradingsubmissions", 
-                        get_string("studentsubmissionsforassessment", "workshop"), "workshop");
-                }
-                print_heading("<a href=\"submissions.php?id=$cm->id&amp;action=displaycurrentgrades\">".
-                        get_string("displayofcurrentgrades", "workshop")."</a>");
-                break;
+        if ($workshop->wtype) {
+            // only show grading assessments if there are grading grades involved
+            if ($numberofassessments = workshop_count_ungraded_assessments($workshop)) {
+                echo "<br /><b><a href=\"assessments.php?id=$cm->id&amp;action=gradeallassessments\">".
+                    get_string("ungradedassessments", "workshop", 
+                    $numberofassessments)."</a></b> \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 "<br /><b><a href=\"submissions.php?id=$cm->id&amp;action=listforassessmentteacher\">".
-                            get_string("teachersubmissionsforassessment", "workshop", $n)."</a></b> \n";
-                        helpbutton("assessmentofexamples", get_string("teachersubmissionsforassessment", 
-                                    "workshop"), "workshop");
-                    }
-                }
-                if ($workshop->wtype) {
-                    echo "<br /><b><a href=\"assessments.php?id=$cm->id&amp;action=gradeallassessments\">".
-                        get_string("ungradedassessments", "workshop", 
-                        workshop_count_ungraded_assessments($workshop))."</a></b> \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 "<br /><b><a href=\"submissions.php?id=$cm->id&amp;action=listforassessmentstudent\">".
                     get_string("studentsubmissionsforassessment", "workshop", 
-                            workshop_count_student_submissions_for_assessment($workshop, $USER))."</a></b> \n";
+                    $numberofsubmissions)."</a></b> \n";
                 helpbutton("gradingsubmissions", 
-                        get_string("studentsubmissionsforassessment", "workshop"), "workshop");
-                print_heading("<a href=\"submissions.php?id=$cm->id&amp;action=displayfinalgrades\">".
-                        get_string("displayoffinalgrades", "workshop")."</a>");
+                    get_string("studentsubmissionsforassessment", "workshop"), "workshop");
+            }
         }
-        echo '</center>';
-        print_heading("<a href=\"submissions.php?id=$cm->id&amp;action=adminlist\">".
-            get_string("administration")."</a>");
+        
+        // Show link to current grades
+        if (time() > $workshop->assessmentstart) {
+            if (time() < $workshop->assessmentend) {
+                echo "<br /><b><a href=\"submissions.php?id=$cm->id&amp;action=displaycurrentgrades\">".
+                        get_string("displayofcurrentgrades", "workshop")."</a></b> \n";
+            } else {
+                echo "<br /><b><a href=\"submissions.php?id=$cm->id&amp;action=displayfinalgrades\">".
+                        get_string("displayoffinalgrades", "workshop")."</a></b> \n";
+            }
+        }
+
+        echo "<br /><b><a href=\"submissions.php?id=$cm->id&amp;action=adminlist\">".
+            get_string("administration")."</a></b> \n";
+        
+        echo '</center><br />';
     }