Displays all assigned submissions to be reviewed and saves the calculated grade

This commit is contained in:
David Mudrak 2010-01-04 18:02:16 +00:00
parent 3dc78e5b04
commit ddb59c778f
7 changed files with 84 additions and 22 deletions

View 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) {
@ -121,7 +119,8 @@ if ('assessment' === $mode) {
$author = null;
}
$wsoutput = $PAGE->theme->get_renderer('mod_workshop', $PAGE); // workshop renderer
echo $wsoutput->submission_full($submission, $showname, $author);
$submission = $workshop->get_submission_by_id($submission->id); // reload so can be passed to the renderer
echo $wsoutput->submission_full($submission, $showname);
}
$mform->display();

View 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;
}

View 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';

View 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;
}
}

View 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
*/

View file

@ -318,3 +318,11 @@
padding: 0px 10px 0px 25px;
font-size: 80%;
}
/**
* Assessment
*/
.assessment-summary.graded {
background-color: #e7f1c3;
}

View 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);
foreach ($submissions as $submission) {
$counter++;
echo $wsoutput->submission_summary($submission, $shownames);
}
if ($counter == 0) {
if (! $submissions = $workshop->get_submissions('all', false)) {
echo $OUTPUT->container(get_string('nosubmissions', 'workshop'), 'nosubmissions');
}
foreach ($submissions as $submission) {
echo $wsoutput->submission_summary($submission, $shownames);
}
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: