/** * Creates an especial array with the navigation tabs for emarking markers training mode * * @param unknown $context * The course context to validate capabilit * @param unknown $cm * The course module (emarking activity) * @return multitype:tabobject */ function emarking_tabs_markers_training($context, $cm, $emarking, $generalprogress, $delphiprogress) { global $CFG; global $USER; global $OUTPUT; // Tab's icons. $timeicon = $OUTPUT->pix_icon('i/scheduled', null); $scalesicon = $OUTPUT->pix_icon('i/scales', null); // Array for tabs data. $tabs = array(); $firststagetable = new html_table(); $firststagetable->data[] = array(get_string('stage', 'mod_emarking'), $timeicon . " " . get_string('marking_deadline', 'mod_emarking'), $scalesicon . " " . get_string('stage_general_progress', 'mod_emarking')); if ($generalprogress >= 100 && $emarking->firststagedate < time()) { $firststagetable->data[] = array(get_string('delphi_stage_one', 'mod_emarking'), " ", $OUTPUT->pix_icon('i/grade_correct', "")); } else { $firststagetable->data[] = array(get_string('delphi_stage_one', 'mod_emarking'), emarking_time_difference($emarking->firststagedate, time(), false), emarking_get_progress_circle($generalprogress)); } $firststagetable->data[] = array(get_string('delphi_stage_two', 'mod_emarking'), emarking_time_difference($emarking->secondstagedate, time(), false), emarking_get_progress_circle($delphiprogress)); return html_writer::table($firststagetable); }
/** * Creates a draft status information in HTML format * * @param unknown $draftid * @param unknown $status * @param unknown $qc * @param unknown $criteriaids * @param unknown $criteriascores * @param unknown $comments * @param unknown $pctmarked * @param unknown $pctmarkeduser * @param unknown $regrades * @param unknown $pages * @param unknown $numcriteria * @param unknown $numcriteriauser * @param unknown $emarking * @return string */ function emarking_get_draft_status_info($exam, $d, $numcriteria, $numcriteriauser, $emarking, $rubriccriteria) { global $OUTPUT; // Add warning icon if there are missing pages in draft. $totalpages = $exam->usebackside == 0 ? $exam->totalpages : $exam->totalpages * 2; $missingpages = $totalpages > 0 && $totalpages > $d->pages && $d->status > EMARKING_STATUS_MISSING; $missingpagesmessage = $missingpages ? $OUTPUT->pix_icon('i/risk_xss', get_string('missingpages', 'mod_emarking')) : ''; // If the draft is published or the student was absent just show the icon. if ($d->status <= EMARKING_STATUS_ABSENT || $d->status == EMARKING_STATUS_PUBLISHED || $d->status == EMARKING_STATUS_GRADING && $d->pctmarked == 100) { return emarking_get_draft_status_icon($d->status, true, 100) . $missingpagesmessage; } if (($emarking->type == EMARKING_TYPE_ON_SCREEN_MARKING || $emarking->type == EMARKING_TYPE_PEER_REVIEW) && ($d->status == EMARKING_STATUS_GRADING || $d->status == EMARKING_STATUS_SUBMITTED)) { // Completion matrix. $matrix = ''; $markedcriteria = explode(",", $d->criteriaids); $markedcriteriascores = explode(",", $d->criteriascores); if (count($markedcriteria) > 0 && $numcriteria > 0) { $matrix = "<div id='sub-{$d->id}' style='display:none;'>\n <table width='100%'>"; $matrix .= "<tr><th>" . get_string('criterion', 'mod_emarking') . "</th><th style='text-align:center'>" . get_string('corrected', 'mod_emarking') . "</th></tr>"; foreach ($rubriccriteria->rubric_criteria as $criterion) { $matrix .= "<tr><td>" . $criterion['description'] . "</td><td style='text-align:center'>"; $key = array_search($criterion['id'], $markedcriteria); if ($key !== false) { $matrix .= $OUTPUT->pix_icon('i/completion-manual-y', round($markedcriteriascores[$key], 1) . "pts"); } else { $matrix .= $OUTPUT->pix_icon('i/completion-manual-n', null); } $matrix .= "</td></tr>"; } $matrix .= "</table></div>"; } $pct = round($d->pctmarked, 0); $matrixlink = html_writer::start_div(); $matrixlink .= emarking_get_progress_circle($d->pctmarked, 'green', 'onclick=\'$("#sub-' . $d->id . '").dialog({modal:true,buttons:{Ok: function(){$(this).dialog("close");}}});\'', get_string('marking_progress', 'mod_emarking')) . $matrix; if ($numcriteriauser > 0) { $matrixlink .= emarking_get_progress_circle($d->pctmarkeduser, 'orange', '', get_string('yourcontribution', 'mod_emarking')); } $matrixlink .= html_writer::end_div(); return $matrixlink . $missingpagesmessage; } if ($d->status == EMARKING_STATUS_REGRADING) { // Percentage of criteria already marked for this draft. $pctmarkedtitle = $numcriteria - $d->comments . " pending criteria"; $matrixlink = "" . ($numcriteriauser > 0 ? $d->pctmarkeduser . "% / " : '') . $d->pctmarked . "%" . ($d->regrades > 0 ? '<br/>' . $d->regrades . ' ' . get_string('regradespending', 'mod_emarking') : ''); } $statushtml = $d->qc == 0 ? emarking_get_draft_status_icon($d->status, true) : $OUTPUT->pix_icon('i/completion-auto-y', get_string("qualitycontrol", "mod_emarking")); return $statushtml . $missingpagesmessage; }
$firststagetable->data[] = array($OUTPUT->heading(get_string("exams", "mod_emarking"), 5)); foreach ($dataexams as $sid => $d) { $examurl = new moodle_url("/mod/emarking/marking/agreement.php", array("id" => $cm->id, "exam" => $sid)); $firststagetable->data[] = array($OUTPUT->action_link($examurl, emarking_get_progress_circle($d, 'green') . ' ' . get_string("exam", "mod_emarking") . ' ' . $sid)); } $secondstagetable = new html_table(); $secondstagetable->data[] = array($OUTPUT->heading(get_string("criteria", "mod_emarking"), 5)); foreach ($datacriteria as $cid => $d) { $criterionurl = new moodle_url("/mod/emarking/marking/agreement.php", array("id" => $cm->id, "criterion" => $cid)); $secondstagetable->data[] = array($OUTPUT->action_link($criterionurl, emarking_get_progress_circle($d, 'green') . ' ' . $definition->rubric_criteria[$cid]['description'])); } $thirdstagetable = new html_table(); $thirdstagetable->data[] = array($OUTPUT->heading(get_string("marker", "mod_emarking"), 5)); foreach ($datamarkers as $mid => $d) { $markerurl = new moodle_url("/mod/emarking/marking/agreement.php", array("id" => $cm->id, "marker" => $mid)); $thirdstagetable->data[] = array(emarking_get_progress_circle($d, 'green') . ' ' . $OUTPUT->action_link($markerurl, $markersnames[$mid])); } // Get the course module for the emarking, to build the emarking url. $urlagreement = new moodle_url('/mod/emarking/marking/agreement.php', array('id' => $cm->id)); // Heading and tabs if we are within a course module. echo $OUTPUT->heading($emarking->name); echo emarking_tabs_markers_training($context, $cm, $emarking, 100, $avgagreement); emarking_show_export_buttons($issupervisor, $definition, $cm, $emarking, $numdraftsgrading); echo $OUTPUT->heading(get_string('agreement', 'mod_emarking'), 4); echo html_writer::start_tag('table', array('class' => 'agreementtable')); echo html_writer::start_tag('tr'); echo html_writer::tag('td', html_writer::table($firststagetable)); echo html_writer::tag('td', html_writer::table($secondstagetable)); echo html_writer::tag('td', html_writer::table($thirdstagetable)); echo html_writer::end_tag('tr'); echo html_writer::end_tag('table');