Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Workshop: fixed checking of examples assessment before own submission
  • Loading branch information
mudrd8mz committed Jun 10, 2010
1 parent 792fd76 commit 514d8c2
Show file tree
Hide file tree
Showing 4 changed files with 49 additions and 13 deletions.
2 changes: 2 additions & 0 deletions mod/workshop/lang/en/workshop.php
Expand Up @@ -86,6 +86,8 @@
$string['example'] = 'Example submission';
$string['exampleadd'] = 'Add example submission';
$string['exampleassess'] = 'Assess example submission';
$string['exampleassesstask'] = 'Assess examples';
$string['exampleassesstaskdetails'] = 'expected: {$a->expected}<br />assessed: {$a->assessed}';
$string['exampleassessments'] = 'Example submissions to assess';
$string['examplecomparing'] = 'Comparing assessments of example submission';
$string['exampledelete'] = 'Delete example';
Expand Down
26 changes: 25 additions & 1 deletion mod/workshop/locallib.php
Expand Up @@ -1004,7 +1004,9 @@ public function assessing_allowed() {
/**
* Are reviewers allowed to create/edit their assessments of the example submissions?
*
* Note this does not check other conditions like the number of already submitted examples etc.
* Returns null if example submissions are not enabled in this workshop. Otherwise returns
* true or false. Note this does not check other conditions like the number of already
* assessed examples, examples mode etc.
*
* @return null|bool
*/
Expand Down Expand Up @@ -1794,6 +1796,28 @@ public function __construct(workshop $workshop, $userid) {
}
$phase->tasks['instructreviewers'] = $task;
}
if ($this->workshop->useexamples and $this->workshop->examplesmode == workshop::EXAMPLES_BEFORE_SUBMISSION
and has_capability('mod/workshop:submit', $workshop->context, $userid, false)
and !has_capability('mod/workshop:manageexamples', $this->workshop->context, $userid)) {
$task = new stdclass();
$task->title = get_string('exampleassesstask', 'workshop');
$examples = $workshop->get_examples_for_reviewer($userid);
$a = new stdclass();
$a->expected = count($examples);
$a->assessed = 0;
foreach ($examples as $exampleid => $example) {
if (!is_null($example->grade)) {
$a->assessed++;
}
}
$task->details = get_string('exampleassesstaskdetails', 'workshop', $a);
if ($a->assessed == $a->expected) {
$task->completed = true;
} elseif ($this->workshop->phase >= workshop::PHASE_ASSESSMENT) {
$task->completed = false;
}
$phase->tasks['examples'] = $task;
}
if (has_capability('mod/workshop:submit', $this->workshop->context, $userid, false)) {
$task = new stdclass();
$task->title = get_string('tasksubmit', 'workshop');
Expand Down
21 changes: 16 additions & 5 deletions mod/workshop/submission.php
Expand Up @@ -60,8 +60,19 @@
$canallocate = has_capability('mod/workshop:allocate', $workshop->context);
$canoverride = (($workshop->phase == workshop::PHASE_EVALUATION) and has_capability('mod/workshop:overridegrades', $workshop->context));
$isreviewer = $DB->record_exists('workshop_assessments', array('submissionid' => $submission->id, 'reviewerid' => $USER->id));
$editable = $workshop->submitting_allowed();
$edit = ($editable and $edit);
$editable = $cansubmit and $ownsubmission and $workshop->submitting_allowed();
if ($editable and $workshop->useexamples and $workshop->examplesmode == workshop::EXAMPLES_BEFORE_SUBMISSION
and !has_capability('mod/workshop:manageexamples', $workshop->context)) {
// check that all required examples have been assessed by the user
$examples = $workshop->get_examples_for_reviewer($USER->id);
foreach ($examples as $exampleid => $example) {
if (is_null($example->grade)) {
$editable = false;
break;
}
}
}
$edit = ($editable and $edit);

if ($submission->id and ($ownsubmission or $canviewall or $isreviewer)) {
// ok you can go
Expand All @@ -77,7 +88,7 @@
redirect($workshop->assess_url($assessmentid));
}

if ($edit and $ownsubmission) {
if ($edit) {
require_once(dirname(__FILE__).'/submission_form.php');

$maxfiles = $workshop->nattachments;
Expand Down Expand Up @@ -161,7 +172,7 @@

// if in edit mode, display the form to edit the submission

if ($edit and $ownsubmission) {
if ($edit) {
$mform->display();
echo $OUTPUT->footer();
die();
Expand All @@ -176,7 +187,7 @@
echo $OUTPUT->box(get_string('noyoursubmission', 'workshop'));
}

if ($ownsubmission and $editable) {
if ($editable) {
$url = new moodle_url($PAGE->url, array('edit' => 'on', 'id' => $submission->id));
echo $OUTPUT->single_button($url, get_string('editsubmission', 'workshop'), 'get');
}
Expand Down
13 changes: 6 additions & 7 deletions mod/workshop/view.php
Expand Up @@ -101,27 +101,26 @@
print_collapsible_region_end();
}

$examplesdone = true;
$examplesdone = !$workshop->useexamples;
if ($workshop->assessing_examples_allowed()
and has_capability('mod/workshop:submit', $workshop->context)
and ! has_capability('mod/workshop:manageexamples', $workshop->context)) {
$examples = $workshop->get_examples_for_reviewer($USER->id);
$total = count($examples);
$done = 0;
$todo = 0;
$left = 0;
// make sure the current user has all examples allocated
foreach ($examples as $exampleid => $example) {
if (is_null($example->assessmentid)) {
$examples[$exampleid]->assessmentid = $workshop->add_allocation($example, $USER->id, 0);
}
if (is_null($example->grade)) {
$todo++;
} else {
$done++;
$left++;
}
}
if ($todo > 0 and $workshop->examplesmode != workshop::EXAMPLES_VOLUNTARY) {
if ($left > 0 and $workshop->examplesmode != workshop::EXAMPLES_VOLUNTARY) {
$examplesdone = false;
} else {
$examplesdone = true;
}
print_collapsible_region_start('', 'workshop-viewlet-examples', get_string('exampleassessments', 'workshop'));
echo $output->box_start('generalbox exampleassessments');
Expand Down

0 comments on commit 514d8c2

Please sign in to comment.