]> git.mjollnir.org Git - moodle.git/commitdiff
question bank: MDL-12787, MDL-17870 field in the question editing form to tag questio...
authortjhunt <tjhunt>
Fri, 16 Jan 2009 08:00:06 +0000 (08:00 +0000)
committertjhunt <tjhunt>
Fri, 16 Jan 2009 08:00:06 +0000 (08:00 +0000)
lib/questionlib.php
question/question.php
question/type/edit_question_form.php

index a7282a17ceb0fae08c6f6c30c6cdae3a419d61f7..cd29147101e8c000e8e9cd540327aaff049ef389 100644 (file)
@@ -836,10 +836,11 @@ function question_load_questions($questionids, $extrafields = '', $join = '') {
  * Private function to factor common code out of get_question_options().
  *
  * @param object $question the question to tidy.
+ * @param boolean $loadtags load the question tags from the tags table. Optional, default false.
  * @return boolean true if successful, else false.
  */
-function _tidy_question(&$question) {
-    global $QTYPES;
+function _tidy_question(&$question, $loadtags = false) {
+    global $CFG, $QTYPES;
     if (!array_key_exists($question->qtype, $QTYPES)) {
         $question->qtype = 'missingtype';
         $question->questiontext = '<p>' . get_string('warningmissingtype', 'quiz') . '</p>' . $question->questiontext;
@@ -850,6 +851,10 @@ function _tidy_question(&$question) {
             unset($question->_partiallyloaded);
         }
     }
+    if ($loadtags && !empty($CFG->usetags)) {
+        require_once($CFG->dirroot . '/tag/lib.php');
+        $question->tags = tag_get_tags_array('question', $question->id);
+    }
     return $success;
 }
 
@@ -862,18 +867,19 @@ function _tidy_question(&$question) {
  *
  * @param mixed $questions Either an array of question objects to be updated
  *         or just a single question object
+ * @param boolean $loadtags load the question tags from the tags table. Optional, default false.
  * @return bool Indicates success or failure.
  */
-function get_question_options(&$questions) {
+function get_question_options(&$questions, $loadtags = false) {
     if (is_array($questions)) { // deal with an array of questions
         foreach ($questions as $i => $notused) {
-            if (!_tidy_question($questions[$i])) {
+            if (!_tidy_question($questions[$i], $loadtags)) {
                 return false;
             }
         }
         return true;
     } else { // deal with single question
-        return _tidy_question($questions);
+        return _tidy_question($questions, $loadtags);
     }
 }
 
index b763976d3e9db8207bbd27c6152dbd69796e64f2..a93ffaf954fa9d22a55c6607ae8f1cace98f5c30 100644 (file)
@@ -46,18 +46,15 @@ if ($cmid){
 }
 $contexts = new question_edit_contexts($thiscontext);
 
-
 if (!$returnurl) {
     $returnurl = "{$CFG->wwwroot}/question/edit.php?courseid={$COURSE->id}";
 }
 
-
-
 if ($id) {
     if (!$question = $DB->get_record('question', array('id' => $id))) {
         print_error('questiondoesnotexist', 'question', $returnurl);
     }
-    get_question_options($question);
+    get_question_options($question, true);
 } else if ($categoryid && $qtype) { // only for creating new questions
     $question = new stdClass;
     $question->category = $categoryid;
@@ -72,7 +69,7 @@ if (!$category = $DB->get_record('question_categories', array('id' => $question-
 }
 
 //permissions
-$question->formoptions = new object();
+$question->formoptions = new stdClass;
 
 $categorycontext = get_context_instance_by_id($category->contextid);
 $addpermission = has_capability('moodle/question:add', $categorycontext);
@@ -99,7 +96,6 @@ if ($id) {
         }
     }
 
-
 } else  { // creating a new question
     require_capability('moodle/question:add', $categorycontext);
     $formeditable = true;
@@ -107,14 +103,12 @@ if ($id) {
     $question->formoptions->movecontext = false;
 }
 
-
 // Validate the question type.
 if (!isset($QTYPES[$question->qtype])) {
     print_error('unknownquestiontype', 'question', $returnurl, $question->qtype);
 }
 $CFG->pagepath = 'question/type/' . $question->qtype;
 
-
 // Create the question editing form.
 if ($wizardnow!=='' && !$movecontext){
     if (!method_exists($QTYPES[$question->qtype], 'next_wizard_form')){
@@ -183,7 +177,12 @@ if ($mform->is_cancelled()){
         }
     }
 
-    $question = $QTYPES[$question->qtype]->save_question($question, $fromform, $COURSE, $wizardnow);
+    $question = $QTYPES[$question->qtype]->save_question($question, $fromform, $COURSE, $wizardnow, true);
+    if (!empty($CFG->usetags)) {
+        require_once($CFG->dirroot.'/tag/lib.php');
+        tag_set('question', $question->id, $fromform->tags);
+    }
+
     if (($QTYPES[$question->qtype]->finished_edit_wizard($fromform)) || $movecontext){
         if ($inpopup) {
             notify(get_string('changessaved'), '');
@@ -242,7 +241,6 @@ if ($mform->is_cancelled()){
         print_header_simple($streditingquestion, '', $navigation);
     }
 
-
     // Display a heading, question editing form and possibly some extra content needed for
     // for this question type.
     $QTYPES[$question->qtype]->display_question_editing_page($mform, $question, $wizardnow);
index 8a51868aaf0feb044317ffe35fc42735ececc493..31c4579b28f25911f789944a66ba13095f388d82 100644 (file)
@@ -146,6 +146,11 @@ class question_edit_form extends moodleform {
         // Any questiontype specific fields.
         $this->definition_inner($mform);
 
+        if (!empty($CFG->usetags)) {
+            $mform->addElement('header', 'tagsheader', get_string('tags'));
+            $mform->addElement('tags', 'tags', get_string('tags'));
+        }
+
         if (!empty($this->question->id)){
             $mform->addElement('header', 'createdmodifiedheader', get_string('createdmodifiedheader', 'question'));
             $a = new object();