$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());
// Output starts here
echo $OUTPUT->header();
-include(dirname(__FILE__) . '/tabs.php');
echo $OUTPUT->heading(get_string('assessmentform', 'workshop'), 2);
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();
$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;
}
$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';
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)
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)
$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;
+ }
}
/**
* 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
*
* 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
*/
padding: 0px 10px 0px 25px;
font-size: 80%;
}
+
+/**
+ * Assessment
+ */
+.assessment-summary.graded {
+ background-color: #e7f1c3;
+}
+
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: