]> git.mjollnir.org Git - moodle.git/commitdiff
Displays all assigned submissions to be reviewed and saves the calculated grade
authorDavid Mudrak <david.mudrak@gmail.com>
Mon, 4 Jan 2010 18:02:16 +0000 (18:02 +0000)
committerDavid Mudrak <david.mudrak@gmail.com>
Mon, 4 Jan 2010 18:02:16 +0000 (18:02 +0000)
mod/workshop/assessment.php
mod/workshop/grading/accumulative/strategy.php
mod/workshop/lang/en_utf8/workshop.php
mod/workshop/locallib.php
mod/workshop/renderer.php
mod/workshop/styles.php
mod/workshop/view.php

index 246f20547e81ef8c6c68ca650d5e56b94b39798f..2716750dd0e2440017f2d88ca083bc3fc595a2ea 100644 (file)
@@ -93,7 +93,6 @@ if ($mform->is_cancelled()) {
     $rawgrade = $strategy->save_assessment($assessment, $data);
     if (!is_null($rawgrade) and isset($data->saveandclose)) {
         echo $OUTPUT->header();
-        include(dirname(__FILE__) . '/tabs.php');
         echo $OUTPUT->heading(get_string('assessmentresult', 'workshop'), 2);
         echo $OUTPUT->box('Given grade: ' . sprintf("%01.2f", $rawgrade * 100) . ' %'); // todo more detailed info using own renderer
         echo $OUTPUT->continue_button($workshop->view_url());
@@ -109,7 +108,6 @@ if ($mform->is_cancelled()) {
 // Output starts here
 
 echo $OUTPUT->header();
-include(dirname(__FILE__) . '/tabs.php');
 echo $OUTPUT->heading(get_string('assessmentform', 'workshop'), 2);
 
 if ('assessment' === $mode) {
@@ -120,8 +118,9 @@ if ('assessment' === $mode) {
         $showname   = false;
         $author     = null;
     }
-    $wsoutput = $PAGE->theme->get_renderer('mod_workshop', $PAGE);    // workshop renderer
-    echo $wsoutput->submission_full($submission, $showname, $author);
+    $wsoutput = $PAGE->theme->get_renderer('mod_workshop', $PAGE);      // workshop renderer
+    $submission = $workshop->get_submission_by_id($submission->id);     // reload so can be passed to the renderer
+    echo $wsoutput->submission_full($submission, $showname);
 }
 
 $mform->display();
index 6b750e6df25928ba36b412264e6fd711cc9a4095..d85aafede7b1ddcdb00fec55e82ab6d713deda1a 100644 (file)
@@ -381,7 +381,7 @@ class workshop_accumulative_strategy implements workshop_strategy {
         $grades     = $this->get_current_assessment_data($assessment);
         $suggested  = $this->calculate_peer_grade($grades);
         if (!is_null($suggested)) {
-            // todo save into workshop_assessments
+            $this->workshop->set_peer_grade($assessment->id, $suggested);
         }
         return $suggested;
     }
index 94e1cc78375e1706040051faf1406e3858f322cc..15f2f12f2dfb4775b6bd93afa4d0b4a27f99a5e5 100644 (file)
@@ -28,11 +28,11 @@ defined('MOODLE_INTERNAL') || die();
 $string[''] = '';
 $string[''] = '';
 $string[''] = '';
-$string[''] = '';
-$string[''] = '';
-$string[''] = '';
-$string[''] = '';
-$string[''] = '';
+$string['assignedassessmentsnone'] = 'You have no assigned submission to assess';
+$string['reassess'] = 'Re-assess';
+$string['assess'] = 'Assess';
+$string['assignedassessments'] = 'Assigned submissions to assess';
+$string['givengrade'] = 'Given grade: $a';
 $string['someuserswosubmission'] = 'There are some users who have not submitted yet';
 $string['accesscontrol'] = 'Access control';
 $string['agreeassessments'] = 'Assessments must be agreed';
index cffdd7ba20d4a658f759b93932be88eb3cfc007c..85feaba2702babe2d848769f321e216e41dddc3d 100644 (file)
@@ -311,7 +311,7 @@ class workshop {
                        a.grade, a.gradinggrade, a.gradinggradeover, a.gradinggradeoverby,
                        reviewer.id AS reviewerid,reviewer.firstname AS reviewerfirstname,reviewer.lastname as reviewerlastname,
                        s.title,
-                       author.id AS authorid, author.firstname AS authorfirstname,author.lastname as authorlastname
+                       author.id AS authorid, author.firstname AS authorfirstname,author.lastname AS authorlastname
                   FROM {workshop_assessments} a
             INNER JOIN {user} reviewer ON (a.userid = reviewer.id)
             INNER JOIN {workshop_submissions} s ON (a.submissionid = s.id)
@@ -356,9 +356,11 @@ class workshop {
         global $DB;
 
         $sql = 'SELECT a.*,
-                       reviewer.id AS reviewerid,reviewer.firstname AS reviewerfirstname,reviewer.lastname as reviewerlastname,
-                       s.title,
-                       author.id AS authorid, author.firstname AS authorfirstname,author.lastname as authorlastname
+                       reviewer.id AS reviewerid,reviewer.firstname AS reviewerfirstname,reviewer.lastname AS reviewerlastname,
+                       s.id AS submissionid, s.title AS submissiontitle, s.timecreated AS submissioncreated,
+                       s.timemodified AS submissionmodified,
+                       author.id AS authorid, author.firstname AS authorfirstname,author.lastname AS authorlastname,
+                       author.picture AS authorpicture, author.imagealt AS authorimagealt
                   FROM {workshop_assessments} a
             INNER JOIN {user} reviewer ON (a.userid = reviewer.id)
             INNER JOIN {workshop_submissions} s ON (a.submissionid = s.id)
@@ -918,4 +920,24 @@ class workshop {
         $DB->set_field('workshop', 'phase', $newphase, array('id' => $this->id));
         return true;
     }
+
+    /**
+     * Saves a raw grade for submission as calculated from the assessment form fields
+     *
+     * @param array $assessmentid assessment record id, must exists
+     * @param mixed $grade        raw percentual grade from 0 to 1
+     * @return false|float        the saved grade
+     */
+    public function set_peer_grade($assessmentid, $grade) {
+        global $DB;
+
+        if (is_null($grade)) {
+            return false;
+        }
+        $data = new stdClass();
+        $data->id = $assessmentid;
+        $data->grade = $grade;
+        $DB->update_record('workshop_assessments', $data);
+        return $grade;
+    }
 }
index ffd494dc7772bdb768edfde156946a91b2931894..d605dea9a1b11038cd8342916502fea3b3b216c2 100644 (file)
@@ -114,6 +114,9 @@ class moodle_mod_workshop_renderer extends moodle_renderer_base {
     /**
      * Display a short summary of the submission
      *
+     * The passed submission object must define at least: id, title, timecreated, timemodified,
+     * authorid, authorfirstname, authorlastname, authorpicture and authorimagealt
+     *
      * @param stdClass $submission     The submission record
      * @param bool     $showauthorname Should the author name be displayed
      * @return string html to be echoed
@@ -174,7 +177,7 @@ class moodle_mod_workshop_renderer extends moodle_renderer_base {
      *
      * By default, this looks similar to a forum post.
      *
-     * @param stdClass $submission     The submission record
+     * @param stdClass $submission     The submission data
      * @param bool     $showauthorname Should the author name be displayed
      * @return string html to be echoed
      */
index 3100e54e1f711b33b2a1e4fe9cd459f306322733..95d3644885b9db65c0996bf2e8096da5db1fa532 100644 (file)
     padding: 0px 10px 0px 25px;
     font-size: 80%;
 }
+
+/**
+ * Assessment
+ */
+.assessment-summary.graded {
+    background-color: #e7f1c3;
+}
+
index 66ea6e73bde63c2c2b101cf66d6528cc90e38ca3..0483d8c1a82e9e20df262de0cb66964560abbfad 100644 (file)
@@ -102,19 +102,49 @@ case workshop::PHASE_SUBMISSION:
     if (has_capability('mod/workshop:viewallsubmissions', $PAGE->context)) {
         $shownames = has_capability('mod/workshop:viewauthornames', $PAGE->context);
         echo $OUTPUT->box_start('generalbox allsubmissions');
-        $counter = 0;
-        $submissions = $workshop->get_submissions('all', false);
+        if (! $submissions = $workshop->get_submissions('all', false)) {
+            echo $OUTPUT->container(get_string('nosubmissions', 'workshop'), 'nosubmissions');
+        }
         foreach ($submissions as $submission) {
-            $counter++;
             echo $wsoutput->submission_summary($submission, $shownames);
         }
-        if ($counter == 0) {
-            echo $OUTPUT->container(get_string('nosubmissions', 'workshop'), 'nosubmissions');
-        }
         echo $OUTPUT->box_end();
     }
     break;
 case workshop::PHASE_ASSESSMENT:
+    if (! $assessments = $workshop->get_assessments_by_reviewer($USER->id)) {
+        echo $OUTPUT->heading(get_string('assignedassessmentsnone', 'workshop'), 3);
+    } else {
+        echo $OUTPUT->heading(get_string('assignedassessments', 'workshop'), 3);
+        $shownames = has_capability('mod/workshop:viewauthornames', $PAGE->context);
+        foreach ($assessments as $assessment) {
+            $submission = clone($assessment);
+            $submission->id = $submission->submissionid;
+            $submission->title = $submission->submissiontitle;
+            $submission->timecreated = $submission->submissioncreated;
+            $submission->timemodified = $submission->submissionmodified;
+            if (is_null($assessment->grade)) {
+                $class      = ' notgraded';
+                $givengrade = get_string('nogradeyet', 'workshop');
+                $buttontext = get_string('assess', 'workshop');
+            } else {
+                $class      = ' graded';
+                // todo format grade
+                $givengrade = $assessment->grade;
+                $buttontext = get_string('reassess', 'workshop');
+            }
+            echo $OUTPUT->box_start('generalbox assessment-summary' . $class);
+            echo $wsoutput->submission_summary($submission, $shownames);
+            echo get_string('givengrade', 'workshop', $givengrade);
+            $button = new html_form();
+            $button->method         = 'get';
+            $button->button->text   = $buttontext;
+            $button->url            = $workshop->assess_url($assessment->id);
+            echo $OUTPUT->button($button);
+            echo $OUTPUT->box_end();
+        }
+    }
+
 case workshop::PHASE_EVALUATION:
 case workshop::PHASE_CLOSED:
 default: