From a9b34106326794991b0ec54cf7e0f28c7b3a98b7 Mon Sep 17 00:00:00 2001 From: Simey Lameze Date: Wed, 4 Apr 2018 09:49:42 +0800 Subject: [PATCH] MDL-61837 core_question: replace tag fields on tag modal --- question/classes/external.php | 6 +++++- question/lib.php | 4 +++- question/type/tags_form.php | 19 ++++++++++++++----- 3 files changed, 22 insertions(+), 7 deletions(-) diff --git a/question/classes/external.php b/question/classes/external.php index f2011d45e6b..ce21a30a4d1 100644 --- a/question/classes/external.php +++ b/question/classes/external.php @@ -28,6 +28,7 @@ defined('MOODLE_INTERNAL') || die(); require_once("$CFG->libdir/externallib.php"); require_once($CFG->dirroot . '/question/engine/lib.php'); +require_once($CFG->libdir . '/questionlib.php'); /** * Question external functions @@ -166,9 +167,12 @@ class core_question_external extends external_api { $cantag = question_has_capability_on($question, 'tag'); $questioncontext = \context::instance_by_id($question->contextid); + $contexts = new \question_edit_contexts($editingcontext); + $formoptions = [ 'editingcontext' => $editingcontext, - 'questioncontext' => $questioncontext + 'questioncontext' => $questioncontext, + 'contexts' => $contexts->all() ]; $mform = new \core_question\form\tags(null, $formoptions, 'post', '', null, $cantag, $data); diff --git a/question/lib.php b/question/lib.php index 5a731c492c2..209d06b733d 100644 --- a/question/lib.php +++ b/question/lib.php @@ -58,10 +58,12 @@ function core_question_output_fragment_tags_form($args) { $category = $question->categoryobject; $questioncontext = \context::instance_by_id($category->contextid); + $contexts = new \question_edit_contexts($editingcontext); $formoptions = [ 'editingcontext' => $editingcontext, - 'questioncontext' => $questioncontext + 'questioncontext' => $questioncontext, + 'contexts' => $contexts->all() ]; $data = [ 'id' => $question->id, diff --git a/question/type/tags_form.php b/question/type/tags_form.php index bcc2fc502a0..cca587f614a 100644 --- a/question/type/tags_form.php +++ b/question/type/tags_form.php @@ -27,7 +27,7 @@ namespace core_question\form; defined('MOODLE_INTERNAL') || die(); require_once($CFG->dirroot . '/lib/formslib.php'); - +require_once($CFG->dirroot . '/lib/questionlib.php'); /** * The mform class for manage question tags. * @@ -59,8 +59,18 @@ class tags extends \moodleform { $mform->addElement('static', 'context', ''); if (\core_tag_tag::is_enabled('core_question', 'question')) { - $mform->addElement('tags', 'tags', get_string('tags'), - ['itemtype' => 'question', 'component' => 'core_question']); + $tags = \core_tag_tag::get_tags_by_area_in_contexts('core_question', 'question', $customdata['contexts']); + $tagstrings = []; + foreach ($tags as $tag) { + $tagstrings[$tag->name] = $tag->name; + } + + $options = [ + 'tags' => true, + 'multiple' => true, + 'noselectionstring' => get_string('anytags', 'quiz'), + ]; + $mform->addElement('autocomplete', 'tags', get_string('tags'), $tagstrings, $options); // Is the question category in a course context? $qcontext = $customdata['questioncontext']; @@ -77,8 +87,7 @@ class tags extends \moodleform { // allow course tags to be added to the course. $coursetagheader = get_string('questionformtagheader', 'core_question', $editingcoursecontext->get_context_name(true)); - $mform->addElement('tags', 'coursetags', $coursetagheader, - array('itemtype' => 'question', 'component' => 'core_question')); + $mform->addElement('autocomplete', 'coursetags', $coursetagheader, $tagstrings, $options); } } -- 2.43.0