MDL-28075 question editing: sort out nav bar when editing in a quiz
authorTim Hunt <T.J.Hunt@open.ac.uk>
Thu, 2 Oct 2014 20:45:15 +0000 (21:45 +0100)
committerTim Hunt <T.J.Hunt@open.ac.uk>
Thu, 2 Oct 2014 21:03:12 +0000 (22:03 +0100)
If you edited a question from the Edit quiz page in a quiz, the navigation
bar was far too long. This was due to some odd code that was trying too
hard to be clever.

Instead, editing a question is now always treated as being logically within
the question bank for the purposes of navigation. That is, even if the
returnurl will end up taking you back to where you where when you have finished.

question/addquestion.php
question/question.php

index 7cff336..0f25e15 100644 (file)
@@ -72,29 +72,22 @@ if (!empty($appendqnumstring)) {
 }
 
 $PAGE->set_url('/question/addquestion.php', $hiddenparams);
+if ($cmid) {
+    $questionbankurl = new moodle_url('/question/edit.php', array('cmid' => $cmid));
+} else {
+    $questionbankurl = new moodle_url('/question/edit.php', array('courseid' => $courseid));
+}
+navigation_node::override_active_url($questionbankurl);
 
 $chooseqtype = get_string('chooseqtypetoadd', 'question');
 $PAGE->set_heading($COURSE->fullname);
-if ($cm !== null) {
-    // Nasty hack, but we don't want this link if returnurl returns to view.php
-    if (stripos($returnurl, "/mod/{$cm->modname}/view.php")!== 0) {
-        $PAGE->navbar->add(get_string('editinga', 'moodle', get_string('modulename', $cm->modname)),$returnurl);
-    }
-    $PAGE->navbar->add($chooseqtype);
-    $PAGE->set_title($chooseqtype);
-    echo $OUTPUT->header();
-} else {
-    $PAGE->navbar->add(get_string('questionbank', 'question'),$returnurl);
-    $PAGE->navbar->add($chooseqtype);
-    $PAGE->set_title($chooseqtype);
-    echo $OUTPUT->header();
-}
+$PAGE->navbar->add($chooseqtype);
+$PAGE->set_title($chooseqtype);
 
 // Display a form to choose the question type.
+echo $OUTPUT->header();
 echo $OUTPUT->notification(get_string('youmustselectaqtype', 'question'));
 echo $OUTPUT->box_start('generalbox boxwidthnormal boxaligncenter', 'chooseqtypebox');
 print_choose_qtype_to_add_form($hiddenparams, null, false);
 echo $OUTPUT->box_end();
-
 echo $OUTPUT->footer();
-
index a11f971..47bd1ae 100644 (file)
@@ -78,15 +78,20 @@ if ($scrollpos) {
 }
 $PAGE->set_url($url);
 
+if ($cmid) {
+    $questionbankurl = new moodle_url('/question/edit.php', array('cmid' => $cmid));
+} else {
+    $questionbankurl = new moodle_url('/question/edit.php', array('courseid' => $courseid));
+}
+navigation_node::override_active_url($questionbankurl);
+
 if ($originalreturnurl) {
     if (strpos($originalreturnurl, '/') !== 0) {
         throw new coding_exception("returnurl must be a local URL starting with '/'. $originalreturnurl was given.");
     }
     $returnurl = new moodle_url($originalreturnurl);
-} else if ($cmid) {
-    $returnurl = new moodle_url('/question/edit.php', array('cmid' => $cmid));
 } else {
-    $returnurl = new moodle_url('/question/edit.php', array('courseid' => $courseid));
+    $returnurl = $questionbankurl;
 }
 if ($scrollpos) {
     $returnurl->param('scrollpos', $scrollpos);
@@ -312,27 +317,11 @@ if ($mform->is_cancelled()) {
     $streditingquestion = $qtypeobj->get_heading();
     $PAGE->set_title($streditingquestion);
     $PAGE->set_heading($COURSE->fullname);
-    if ($cm !== null) {
-        $strmodule = get_string('modulename', $cm->modname);
-        $streditingmodule = get_string('editinga', 'moodle', $strmodule);
-        $PAGE->navbar->add(get_string('modulenameplural', $cm->modname), new moodle_url('/mod/'.$cm->modname.'/index.php', array('id'=>$cm->course)));
-        $PAGE->navbar->add(format_string($module->name), new moodle_url('/mod/'.$cm->modname.'/view.php', array('id'=>$cm->id)));
-        if (stripos($returnurl, "{$CFG->wwwroot}/mod/{$cm->modname}/view.php")!== 0){
-            //don't need this link if returnurl returns to view.php
-            $PAGE->navbar->add($streditingmodule, $returnurl);
-        }
-        $PAGE->navbar->add($streditingquestion);
-        echo $OUTPUT->header();
-
-    } else {
-        $strediting = '<a href="edit.php?courseid='.$COURSE->id.'">'.get_string('editquestions', 'question').'</a> -> '.$streditingquestion;
-        $PAGE->navbar->add(get_string('editquestions', 'question'), $returnurl);
-        $PAGE->navbar->add($streditingquestion);
-        echo $OUTPUT->header();
-    }
+    $PAGE->navbar->add($streditingquestion);
 
     // Display a heading, question editing form and possibly some extra content needed for
     // for this question type.
+    echo $OUTPUT->header();
     $qtypeobj->display_question_editing_page($mform, $question, $wizardnow);
     echo $OUTPUT->footer();
 }