diff --git a/classes/output/renderer.php b/classes/output/renderer.php index 5249bd9c14073fdab24a8d06110492783e5e1567..70840f09da6b71e38a118e779796e7688beaabb7 100644 --- a/classes/output/renderer.php +++ b/classes/output/renderer.php @@ -180,7 +180,7 @@ class qtype_moopt_renderer extends qtype_renderer { global $PAGE; $o = '<br>'; - $o .= $this->output->heading(get_string('gradingscheme', 'qtype_moopt'), 3);# + $o .= $this->output->heading(get_string('gradingscheme', 'qtype_moopt'), 3); $blockid = "moopt-gradingscheme-" . $qa->get_usage_id() . "-" . $qa->get_slot(); $PAGE->requires->js_call_amd('qtype_moopt/toggle_all_grading_scheme_buttons', 'init', [$blockid]); @@ -215,50 +215,68 @@ class qtype_moopt_renderer extends qtype_renderer { private function render_downloadable_files(question_attempt $qa, question_display_options $options) { global $DB; + $question = $qa->get_question(); + $questionid = $question->id; + $o = ''; + $isteacher = has_capability('mod/quiz:grade', $options->context); + + $studentfiles = $DB->get_records('qtype_moopt_files', array('questionid' => $questionid, + 'visibletostudents' => 'yes', 'usagebylms' => 'download')); + if(count($studentfiles) != 0) { + $o .= $this->render_downloadable_files_only($qa, $options, $studentfiles, 'providedfiles'); + } + + if ($isteacher){ + $teacherfiles = $DB->get_records('qtype_moopt_files', array('questionid' => $questionid, 'visibletostudents' => 'no')); + if(count($teacherfiles) != 0) { + $o .= $this->render_downloadable_files_only($qa, $options, $teacherfiles, 'providedfilesteacher'); + } + } + return $o; + } + + private function render_downloadable_files_only (question_attempt $qa, question_display_options $options, $files, $divclass) { $question = $qa->get_question(); $qubaid = $qa->get_usage_id(); $slot = $qa->get_slot(); $questionid = $question->id; - $o = ''; $isteacher = has_capability('mod/quiz:grade', $options->context); + $o = ''; - $files = $DB->get_records('qtype_moopt_files', array('questionid' => $questionid)); $anythingtodisplay = false; - if (count($files) != 0) { // TODO: this check should happen before these render methods are called - $downloadurls = ''; - $downloadurls .= $this->output->heading(get_string('providedfiles', 'qtype_moopt'), 3); - $downloadurls .= html_writer::start_div('providedfiles'); - $downloadurls .= '<ul>'; - foreach ($files as $file) { - // skip files that are - // - not configured to be downloadable (usagebylms) - // - not visible to students - if ($file->usagebylms == 'display' - || ($file->visibletostudents == 'no' && !$isteacher) - || ($file->usagebylms == 'edit' && !$isteacher)) { - continue; - } - - $anythingtodisplay = true; - $url = moodle_url::make_pluginfile_url($question->contextid, COMPONENT_NAME, $file->filearea, - "$qubaid/$slot/$questionid", $file->filepath, $file->filename, true); - if ($file->filearea == PROFORMA_ATTACHED_TASK_FILES_FILEAREA) { - $folderdisplay = $file->filepath; - // remove leading slash: - if (strlen($folderdisplay) > 0 && $folderdisplay[0] == '/') $folderdisplay = substr($folderdisplay, 1); - } else { - $folderdisplay = ''; - } - $linkdisplay = $folderdisplay . $file->filename; - $downloadurls .= '<li><a href="' . $url . '">' . $linkdisplay . '</a></li>'; + $downloadurls = ''; + if(!$isteacher) { + $o .= $this->output->heading(get_string('providedfiles', 'qtype_moopt'), 3); + } + $downloadurls .= html_writer::start_div($divclass); + $downloadurls .= '<ul>'; + foreach ($files as $file) { + // skip files that are + // - not configured to be downloadable (usagebylms) + if ($file->usagebylms == 'display') { + continue; } - $downloadurls .= '</ul>'; - $downloadurls .= html_writer::end_div('providedfiles'); - if ($anythingtodisplay) { - $o .= $downloadurls; + $anythingtodisplay = true; + $url = moodle_url::make_pluginfile_url($question->contextid, COMPONENT_NAME, $file->filearea, + "$qubaid/$slot/$questionid", $file->filepath, $file->filename, true); + if ($file->filearea == PROFORMA_ATTACHED_TASK_FILES_FILEAREA) { + $folderdisplay = $file->filepath; + // remove leading slash: + if (strlen($folderdisplay) > 0 && $folderdisplay[0] == '/') $folderdisplay = substr($folderdisplay, 1); + } else { + $folderdisplay = ''; } + $linkdisplay = $folderdisplay . $file->filename; + $downloadurls .= '<li><a href="' . $url . '">' . $linkdisplay . '</a></li>'; + } + $downloadurls .= '</ul>'; + $downloadurls .= html_writer::end_div($divclass); + + if ($anythingtodisplay) { + $o .= $downloadurls; } + return $o; } diff --git a/styles.css b/styles.css index 4d54b9096b4cfe0d89b3e458efef337b5a49a51e..2134e1cd72044bd0a184a7333f60c4750fb09b1c 100644 --- a/styles.css +++ b/styles.css @@ -73,7 +73,7 @@ p.expandcollapselink a { margin-left: 10px; } -.providedfiles{ +.providedfiles, .providedfilesteacher{ margin-left: 10px; } @@ -90,7 +90,7 @@ p.expandcollapselink a { 100% { transform: rotate(360deg); } } -.internaldescription, .gradingscheme { +.internaldescription, .gradingscheme, .providedfilesteacher { background-color: #73afdc; margin-top: 10px; } \ No newline at end of file