From c6084d31b438bfbd5e513c98ebfb10a13031c9ed Mon Sep 17 00:00:00 2001 From: tjhunt Date: Wed, 29 Jul 2009 03:55:12 +0000 Subject: [PATCH] blocks: MDL-19889 Convert quiz results block to use edit_form.php --- blocks/quiz_results/block_quiz_results.php | 29 +++++++- blocks/quiz_results/config_instance.html | 81 ---------------------- blocks/quiz_results/edit_form.php | 78 +++++++++++++++++++++ 3 files changed, 106 insertions(+), 82 deletions(-) delete mode 100644 blocks/quiz_results/config_instance.html create mode 100644 blocks/quiz_results/edit_form.php diff --git a/blocks/quiz_results/block_quiz_results.php b/blocks/quiz_results/block_quiz_results.php index d7050667e6..af2e0b4567 100644 --- a/blocks/quiz_results/block_quiz_results.php +++ b/blocks/quiz_results/block_quiz_results.php @@ -17,6 +17,33 @@ class block_quiz_results extends block_base { return array('course' => true, 'mod-quiz' => true); } + /** + * If this block belongs to a quiz context, then return that quiz's id. + * Otherwise, return 0. + * @return integer the quiz id. + */ + public function get_owning_quiz() { + if (empty($this->instance->parentcontextid)) { + return 0; + } + $parentcontext = get_context_instance_by_id($this->instance->parentcontextid); + if ($parentcontext->contextlevel != CONTEXT_MODULE) { + return 0; + } + $cm = get_coursemodule_from_id('quiz', $parentcontext->instanceid); + if (!$cm) { + return 0; + } + return $cm->instance; + } + + function instance_config_save($data) { + if (empty($data->quizid)) { + $data->quizid = $this->get_owning_quiz(); + } + parent::instance_config_save($data); + } + function get_content() { global $USER, $CFG, $DB; @@ -32,7 +59,7 @@ class block_quiz_results extends block_base { return $this->content; } - if ($this->page->activityname == 'quiz') { + if ($this->page->activityname == 'quiz' && $this->page->context->id == $this->instance->parentcontextid) { $quiz = $this->page->activityrecord; $quizid = $quiz->id; $courseid = $this->page->course->id; diff --git a/blocks/quiz_results/config_instance.html b/blocks/quiz_results/config_instance.html deleted file mode 100644 index cd9ffa9a75..0000000000 --- a/blocks/quiz_results/config_instance.html +++ /dev/null @@ -1,81 +0,0 @@ - -page->activityname != 'quiz') { ?> - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - get_records('quiz', array('course' => $this->page->course->id), '', 'id, name'); - if(empty($quizzes)) { - echo ''.get_string('config_no_quizzes_in_course', 'block_quiz_results').''; - echo '

'; - } - else { - $options = array(); - foreach($quizzes as $quiz) { - $options[$quiz->id] = $quiz->name; - } - choose_from_menu($options, 'quizid', empty($this->config->quizid) ? 0 : $this->config->quizid); - } - ?> -
- - - -
- - - -
- - - config->usegroups)) echo 'checked="checked"'; ?> value="1" /> - config->usegroups)) echo 'checked="checked"'; ?> value="0" /> -
- - - get_string('config_names_full', 'block_quiz_results'), B_QUIZRESULTS_NAME_FORMAT_ID => get_string('config_names_id', 'block_quiz_results'), B_QUIZRESULTS_NAME_FORMAT_ANON => get_string('config_names_anon', 'block_quiz_results')); - choose_from_menu($usenames, 'nameformat', empty($this->config->nameformat) ? B_QUIZRESULTS_NAME_FORMAT_FULL : $this->config->nameformat, ''); - ?> -
- - - get_string('config_format_percentage', 'block_quiz_results'), B_QUIZRESULTS_GRADE_FORMAT_FRA => get_string('config_format_fraction', 'block_quiz_results'), B_QUIZRESULTS_GRADE_FORMAT_ABS => get_string('config_format_absolute', 'block_quiz_results')); - choose_from_menu($formats, 'gradeformat', empty($this->config->gradeformat) ? 0 : $this->config->gradeformat, ''); - ?> -
- -
\ No newline at end of file diff --git a/blocks/quiz_results/edit_form.php b/blocks/quiz_results/edit_form.php new file mode 100644 index 0000000000..1bfbfa6fe0 --- /dev/null +++ b/blocks/quiz_results/edit_form.php @@ -0,0 +1,78 @@ +. + +/** + * Form for editing Quiz results block instances. + * + * @package moodlecore + * @copyright 2009 Tim Hunt + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +/** + * Form for editing Quiz results block instances. + * + * @copyright 2009 Tim Hunt + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +class block_quiz_results_edit_form extends block_edit_form { + protected function specific_definition($mform) { + global $DB; + + // Fields for editing HTML block title and contents. + $mform->addElement('header', 'configheader', get_string('blocksettings', 'block')); + + if (!$this->block->get_owning_quiz()) { + $quizzes = $DB->get_records_menu('quiz', array('course' => $this->page->course->id), '', 'id, name'); + if(empty($quizzes)) { + $mform->addElement('static', 'noquizzeswarning', get_string('config_select_quiz', 'block_quiz_results'), + get_string('config_no_quizzes_in_course', 'block_quiz_results')); + } else { + foreach($quizzes as $id => $name) { + $quizzes[$id] = strip_tags(format_string($name)); + } + $mform->addElement('select', 'config_quizid', get_string('config_select_quiz', 'block_quiz_results'), $quizzes); + } + } + + $mform->addElement('text', 'config_showbest', get_string('config_show_best', 'block_quiz_results'), array('size' => 3)); + $mform->setDefault('config_showbest', 3); + $mform->setType('config_showbest', PARAM_INTEGER); + + $mform->addElement('text', 'config_showworst', get_string('config_show_worst', 'block_quiz_results'), array('size' => 3)); + $mform->setDefault('config_showworst', 0); + $mform->setType('config_showworst', PARAM_INTEGER); + + $mform->addElement('selectyesno', 'config_usegroups', get_string('config_use_groups', 'block_quiz_results')); + + $nameoptions = array( + B_QUIZRESULTS_NAME_FORMAT_FULL => get_string('config_names_full', 'block_quiz_results'), + B_QUIZRESULTS_NAME_FORMAT_ID => get_string('config_names_id', 'block_quiz_results'), + B_QUIZRESULTS_NAME_FORMAT_ANON => get_string('config_names_anon', 'block_quiz_results') + ); + $mform->addElement('select', 'config_nameformat', get_string('config_name_format', 'block_quiz_results'), $nameoptions); + $mform->setDefault('config_nameformat', B_QUIZRESULTS_NAME_FORMAT_FULL); + + $gradeeoptions = array( + B_QUIZRESULTS_GRADE_FORMAT_PCT => get_string('config_format_percentage', 'block_quiz_results'), + B_QUIZRESULTS_GRADE_FORMAT_FRA => get_string('config_format_fraction', 'block_quiz_results'), + B_QUIZRESULTS_GRADE_FORMAT_ABS => get_string('config_format_absolute', 'block_quiz_results') + ); + $mform->addElement('select', 'config_gradeformat', get_string('config_grade_format', 'block_quiz_results'), $gradeeoptions); + $mform->setDefault('config_gradeformat', B_QUIZRESULTS_GRADE_FORMAT_PCT); + } +} \ No newline at end of file -- 2.39.5