mirror of
https://github.com/moodle/moodle.git
synced 2025-08-04 16:36:37 +02:00
Displays all assigned submissions to be reviewed and saves the calculated grade
This commit is contained in:
parent
3dc78e5b04
commit
ddb59c778f
7 changed files with 84 additions and 22 deletions
|
@ -93,7 +93,6 @@ if ($mform->is_cancelled()) {
|
||||||
$rawgrade = $strategy->save_assessment($assessment, $data);
|
$rawgrade = $strategy->save_assessment($assessment, $data);
|
||||||
if (!is_null($rawgrade) and isset($data->saveandclose)) {
|
if (!is_null($rawgrade) and isset($data->saveandclose)) {
|
||||||
echo $OUTPUT->header();
|
echo $OUTPUT->header();
|
||||||
include(dirname(__FILE__) . '/tabs.php');
|
|
||||||
echo $OUTPUT->heading(get_string('assessmentresult', 'workshop'), 2);
|
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->box('Given grade: ' . sprintf("%01.2f", $rawgrade * 100) . ' %'); // todo more detailed info using own renderer
|
||||||
echo $OUTPUT->continue_button($workshop->view_url());
|
echo $OUTPUT->continue_button($workshop->view_url());
|
||||||
|
@ -109,7 +108,6 @@ if ($mform->is_cancelled()) {
|
||||||
// Output starts here
|
// Output starts here
|
||||||
|
|
||||||
echo $OUTPUT->header();
|
echo $OUTPUT->header();
|
||||||
include(dirname(__FILE__) . '/tabs.php');
|
|
||||||
echo $OUTPUT->heading(get_string('assessmentform', 'workshop'), 2);
|
echo $OUTPUT->heading(get_string('assessmentform', 'workshop'), 2);
|
||||||
|
|
||||||
if ('assessment' === $mode) {
|
if ('assessment' === $mode) {
|
||||||
|
@ -121,7 +119,8 @@ if ('assessment' === $mode) {
|
||||||
$author = null;
|
$author = null;
|
||||||
}
|
}
|
||||||
$wsoutput = $PAGE->theme->get_renderer('mod_workshop', $PAGE); // workshop renderer
|
$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();
|
$mform->display();
|
||||||
|
|
|
@ -381,7 +381,7 @@ class workshop_accumulative_strategy implements workshop_strategy {
|
||||||
$grades = $this->get_current_assessment_data($assessment);
|
$grades = $this->get_current_assessment_data($assessment);
|
||||||
$suggested = $this->calculate_peer_grade($grades);
|
$suggested = $this->calculate_peer_grade($grades);
|
||||||
if (!is_null($suggested)) {
|
if (!is_null($suggested)) {
|
||||||
// todo save into workshop_assessments
|
$this->workshop->set_peer_grade($assessment->id, $suggested);
|
||||||
}
|
}
|
||||||
return $suggested;
|
return $suggested;
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,11 +28,11 @@ defined('MOODLE_INTERNAL') || die();
|
||||||
$string[''] = '';
|
$string[''] = '';
|
||||||
$string[''] = '';
|
$string[''] = '';
|
||||||
$string[''] = '';
|
$string[''] = '';
|
||||||
$string[''] = '';
|
$string['assignedassessmentsnone'] = 'You have no assigned submission to assess';
|
||||||
$string[''] = '';
|
$string['reassess'] = 'Re-assess';
|
||||||
$string[''] = '';
|
$string['assess'] = 'Assess';
|
||||||
$string[''] = '';
|
$string['assignedassessments'] = 'Assigned submissions to assess';
|
||||||
$string[''] = '';
|
$string['givengrade'] = 'Given grade: $a';
|
||||||
$string['someuserswosubmission'] = 'There are some users who have not submitted yet';
|
$string['someuserswosubmission'] = 'There are some users who have not submitted yet';
|
||||||
$string['accesscontrol'] = 'Access control';
|
$string['accesscontrol'] = 'Access control';
|
||||||
$string['agreeassessments'] = 'Assessments must be agreed';
|
$string['agreeassessments'] = 'Assessments must be agreed';
|
||||||
|
|
|
@ -311,7 +311,7 @@ class workshop {
|
||||||
a.grade, a.gradinggrade, a.gradinggradeover, a.gradinggradeoverby,
|
a.grade, a.gradinggrade, a.gradinggradeover, a.gradinggradeoverby,
|
||||||
reviewer.id AS reviewerid,reviewer.firstname AS reviewerfirstname,reviewer.lastname as reviewerlastname,
|
reviewer.id AS reviewerid,reviewer.firstname AS reviewerfirstname,reviewer.lastname as reviewerlastname,
|
||||||
s.title,
|
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
|
FROM {workshop_assessments} a
|
||||||
INNER JOIN {user} reviewer ON (a.userid = reviewer.id)
|
INNER JOIN {user} reviewer ON (a.userid = reviewer.id)
|
||||||
INNER JOIN {workshop_submissions} s ON (a.submissionid = s.id)
|
INNER JOIN {workshop_submissions} s ON (a.submissionid = s.id)
|
||||||
|
@ -356,9 +356,11 @@ class workshop {
|
||||||
global $DB;
|
global $DB;
|
||||||
|
|
||||||
$sql = 'SELECT a.*,
|
$sql = 'SELECT a.*,
|
||||||
reviewer.id AS reviewerid,reviewer.firstname AS reviewerfirstname,reviewer.lastname as reviewerlastname,
|
reviewer.id AS reviewerid,reviewer.firstname AS reviewerfirstname,reviewer.lastname AS reviewerlastname,
|
||||||
s.title,
|
s.id AS submissionid, s.title AS submissiontitle, s.timecreated AS submissioncreated,
|
||||||
author.id AS authorid, author.firstname AS authorfirstname,author.lastname as authorlastname
|
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
|
FROM {workshop_assessments} a
|
||||||
INNER JOIN {user} reviewer ON (a.userid = reviewer.id)
|
INNER JOIN {user} reviewer ON (a.userid = reviewer.id)
|
||||||
INNER JOIN {workshop_submissions} s ON (a.submissionid = s.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));
|
$DB->set_field('workshop', 'phase', $newphase, array('id' => $this->id));
|
||||||
return true;
|
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -114,6 +114,9 @@ class moodle_mod_workshop_renderer extends moodle_renderer_base {
|
||||||
/**
|
/**
|
||||||
* Display a short summary of the submission
|
* 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 stdClass $submission The submission record
|
||||||
* @param bool $showauthorname Should the author name be displayed
|
* @param bool $showauthorname Should the author name be displayed
|
||||||
* @return string html to be echoed
|
* @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.
|
* 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
|
* @param bool $showauthorname Should the author name be displayed
|
||||||
* @return string html to be echoed
|
* @return string html to be echoed
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -318,3 +318,11 @@
|
||||||
padding: 0px 10px 0px 25px;
|
padding: 0px 10px 0px 25px;
|
||||||
font-size: 80%;
|
font-size: 80%;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Assessment
|
||||||
|
*/
|
||||||
|
.assessment-summary.graded {
|
||||||
|
background-color: #e7f1c3;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -102,19 +102,49 @@ case workshop::PHASE_SUBMISSION:
|
||||||
if (has_capability('mod/workshop:viewallsubmissions', $PAGE->context)) {
|
if (has_capability('mod/workshop:viewallsubmissions', $PAGE->context)) {
|
||||||
$shownames = has_capability('mod/workshop:viewauthornames', $PAGE->context);
|
$shownames = has_capability('mod/workshop:viewauthornames', $PAGE->context);
|
||||||
echo $OUTPUT->box_start('generalbox allsubmissions');
|
echo $OUTPUT->box_start('generalbox allsubmissions');
|
||||||
$counter = 0;
|
if (! $submissions = $workshop->get_submissions('all', false)) {
|
||||||
$submissions = $workshop->get_submissions('all', false);
|
|
||||||
foreach ($submissions as $submission) {
|
|
||||||
$counter++;
|
|
||||||
echo $wsoutput->submission_summary($submission, $shownames);
|
|
||||||
}
|
|
||||||
if ($counter == 0) {
|
|
||||||
echo $OUTPUT->container(get_string('nosubmissions', 'workshop'), 'nosubmissions');
|
echo $OUTPUT->container(get_string('nosubmissions', 'workshop'), 'nosubmissions');
|
||||||
}
|
}
|
||||||
|
foreach ($submissions as $submission) {
|
||||||
|
echo $wsoutput->submission_summary($submission, $shownames);
|
||||||
|
}
|
||||||
echo $OUTPUT->box_end();
|
echo $OUTPUT->box_end();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case workshop::PHASE_ASSESSMENT:
|
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_EVALUATION:
|
||||||
case workshop::PHASE_CLOSED:
|
case workshop::PHASE_CLOSED:
|
||||||
default:
|
default:
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue