]> git.mjollnir.org Git - moodle.git/commitdiff
Fixes for MDL-3975
authorvyshane <vyshane>
Thu, 28 Sep 2006 07:29:50 +0000 (07:29 +0000)
committervyshane <vyshane>
Thu, 28 Sep 2006 07:29:50 +0000 (07:29 +0000)
Changes to discuss.php and post.php so that the single discussion type forums are handled more consistently.

mod/forum/discuss.php
mod/forum/post.php

index 36620ce4f22866bfb094e8818ce690513ba01cba..4749b0125bc28c576f1a6eff3151d4af4585d894 100644 (file)
         }
     }
 
+
     if (empty($navtail)) {
-        $navtail = "<a href=\"discuss.php?d=$discussion->id\">".format_string($discussion->name,true)."</a> -> ".format_string($post->subject);
+        $navtail = "-> <a href=\"discuss.php?d=$discussion->id\">".
+                    format_string($discussion->name,true)."</a> -> ".
+                    format_string($post->subject);
     }
-
-    $navmiddle = "<a href=\"../forum/index.php?id=$course->id\">".get_string("forums", "forum")."</a> -> <a href=\"../forum/view.php?f=$forum->id\">".format_string($forum->name,true)."</a>";
+    if ($forum->type == 'single') {
+        $navforum = '';
+    } else {
+        $navforum = "<a href=\"../forum/view.php?f=$forum->id\">".
+                     format_string($forum->name,true)."</a> ";
+    }
+    $navmiddle = "<a href=\"../forum/index.php?id=$course->id\">".
+                  get_string("forums", "forum").'</a> -> '.$navforum;
 
     $searchform = forum_search_form($course);
 
     if ($course->category) {
         print_header("$course->shortname: ".format_string($discussion->name), "$course->fullname",
-                 "<a href=\"../../course/view.php?id=$course->id\">$course->shortname</a> ->
-                  $navmiddle -> $navtail", "", "", true, $searchform, navmenu($course, $cm));
+                     "<a href=\"../../course/view.php?id=$course->id\">$course->shortname</a> ->
+                      $navmiddle $navtail", "", "", true, $searchform, navmenu($course, $cm));
     } else {
         print_header("$course->shortname: ".format_string($discussion->name), "$course->fullname",
-                 "$navmiddle -> $navtail", "", "", true, $searchform, navmenu($course, $cm));
+                     "$navmiddle $navtail", "", "", true, $searchform, navmenu($course, $cm));
     }
 
 
 
     echo "</td><td width=\"33%\">";
     forum_print_mode_form($discussion->id, $displaymode);
-
     echo "</td><td width=\"33%\">";
-    if (has_capability('mod/forum:movediscussions', $modcontext)) { // Popup menu to move discussions to other forums
+
+    if ($forum->type != 'single'
+                && has_capability('mod/forum:movediscussions', $modcontext)) {
+        
+        // Popup menu to move discussions to other forums. The discussion in a
+        // single discussion forum can't be moved.
         if ($forums = get_all_instances_in_course("forum", $course)) {
             if ($course->format == 'weeks') {
                 $strsection = get_string("week");
index af28b03f0b5cec3b670c44596286ceddfe8f0195..91345776d3f6ac44ca570cfbdba712a29bdef258 100644 (file)
             print_header($course->shortname, $course->fullname,
                  "<a href=\"../../course/view.php?id=$course->id\">$course->shortname</a> ->
                   <a href=\"../forum/index.php?id=$course->id\">$strforums</a> ->
-                  <a href=\"view.php?f=$forum->id\">".format_string($forum->name,true)."</a>", '', '', true, "", navmenu($course, $cm));
+                  <a href=\"view.php?f=$forum->id\">".format_string($forum->name,true)."</a>",
+                  '', '', true, "", navmenu($course, $cm));
         } else {
             print_header($course->shortname, $course->fullname,
                  "<a href=\"../forum/index.php?id=$course->id\">$strforums</a> ->
-                  <a href=\"view.php?f=$forum->id\">".format_string($forum->name)."</a>", '', '', true, "", navmenu($course, $cm));
+                  <a href=\"view.php?f=$forum->id\">".format_string($forum->name)."</a>",
+                  '', '', true, "", navmenu($course, $cm));
         }
         notice_yesno(get_string('noguestpost', 'forum').'<br /><br />'.get_string('liketologin'),
                      $wwwroot, $_SERVER['HTTP_REFERER']);
 
                 if (forum_update_post($post,$message)) {
 
-                    add_to_log($course->id, "forum", "update post",
-                            "discuss.php?d=$post->discussion&amp;parent=$post->id", "$post->id", $cm->id);
-
                     $timemessage = 2;
                     if (!empty($message)) { // if we're printing stuff about the file upload
                         $timemessage = 4;
                     if ($subscribemessage = forum_post_subscription($post)) {
                         $timemessage = 4;
                     }
-                    redirect(forum_go_back_to("discuss.php?d=$post->discussion#$post->id"), $message.$subscribemessage, $timemessage);
+                    if ($forum->type == 'single') {
+                        // Single discussion forums are an exception. We show
+                        // the forum itself since it only has one discussion
+                        // thread.
+                        $discussionurl = "view.php?f=$forum->id";
+                    } else {
+                        $discussionurl = "discuss.php?d=$post->discussion#$post->id";
+                    }
+                    add_to_log($course->id, "forum", "update post",
+                            "$discussionurl&amp;parent=$post->id", "$post->id", $cm->id);
+                    
+                    redirect(forum_go_back_to("$discussionurl#$post->id"), $message.$subscribemessage, $timemessage);
 
                 } else {
                     error(get_string("couldnotupdate", "forum"), $errordestination);
             $message = '';
             if ($post->id = forum_add_new_post($post,$message)) {
 
-                add_to_log($course->id, "forum", "add post",
-                          "discuss.php?d=$post->discussion&amp;parent=$post->id", "$post->id", $cm->id);
-
                 $timemessage = 2;
                 if (!empty($message)) { // if we're printing stuff about the file upload
                     $timemessage = 4;
                     $timemessage = 4;
                 }
 
-                redirect(forum_go_back_to("discuss.php?d=$post->discussion#$post->id"), $message.$subscribemessage, $timemessage);
+                if ($forum->type == 'single') {
+                    // Single discussion forums are an exception. We show
+                    // the forum itself since it only has one discussion
+                    // thread.
+                    $discussionurl = "view.php?f=$forum->id";
+                } else {
+                    $discussionurl = "discuss.php?d=$post->discussion";
+                }
+                add_to_log($course->id, "forum", "add post",
+                          "$discussionurl&amp;parent=$post->id", "$post->id", $cm->id);
+
+                redirect(forum_go_back_to("$discussionurl#$post->id"), $message.$subscribemessage, $timemessage);
 
             } else {
                 error(get_string("couldnotadd", "forum"), $errordestination);
 
             } else {
                 if (! $post->parent) {  // post is a discussion topic as well, so delete discussion
-                    if ($forum->type == "single") {
+                    if ($forum->type == 'single') {
                         notice("Sorry, but you are not allowed to delete that discussion!",
                                 forum_go_back_to("discuss.php?d=$post->discussion"));
                     }
                              get_string("deleteddiscussion", "forum"), 1);
 
                 } else if (forum_delete_post($post, has_capability('mod/forum:deleteanypost', $modcontext))) {
-
-                    add_to_log($discussion->course, "forum", "delete post",
-                               "discuss.php?d=$post->discussion", "$post->id", $cm->id);
+                    
+                    if ($forum->type == 'single') {
+                        // Single discussion forums are an exception. We show
+                        // the forum itself since it only has one discussion
+                        // thread.
+                        $discussionurl = "view.php?f=$forum->id";
+                    } else {
+                        $discussionurl = "discuss.php?d=$post->discussion";
+                    }
+                    
+                    add_to_log($discussion->course, "forum", "delete post", $discussionurl, "$post->id", $cm->id);
 
                     $feedback = $replycount ? get_string('deletedposts', 'forum') : get_string('deletedpost', 'forum');
-                    redirect(forum_go_back_to("discuss.php?d=$post->discussion"), $feedback, 1);
+                    redirect(forum_go_back_to($discussionurl), $feedback, 1);
                 } else {
                     error("An error occurred while deleting record $post->id");
                 }
     $strforums = get_string("modulenameplural", "forum");
 
 
-    $navmiddle = "<a href=\"../forum/index.php?id=$course->id\">$strforums</a> -> <a href=\"view.php?f=$forum->id\">".format_string($forum->name,true)."</a>";
+    $navmiddle = "<a href=\"../forum/index.php?id=$course->id\">$strforums</a> -> <a href=\"view.php?f=$forum->id\">".format_string($forum->name,true).'</a> ';
 
     if (empty($discussion->name)) {
         if (empty($discussion)) {
         }
         $discussion->name = $forum->name;
     }
-
+    if ($forum->type == 'single') {
+        // There is only one discussion thread for this forum type. We should
+        // not show the discussion name (same as forum name in this case) in
+        // the breadcrumbs.
+        $strdiscussionname = '';
+        $navtail = '';
+    } else {
+        // Show the discussion name in the breadcrumbs.
+        $strdiscussionname = format_string($discussion->name).':';
+    }
     if ($course->category) {
-        print_header("$course->shortname: ".format_string($discussion->name).": ".format_string($toppost->subject), "$course->fullname",
-                 "<a href=\"../../course/view.php?id=$course->id\">$course->shortname</a> ->
-                  $navmiddle -> $navtail", $formstart, "", true, "", navmenu($course, $cm));
+        print_header("$course->shortname: $strdiscussionname ".
+                      format_string($toppost->subject), "$course->fullname",
+                     "<a href=\"../../course/view.php?id=$course->id\">$course->shortname</a> ->
+                      $navmiddle $navtail", $formstart, "", true, "", navmenu($course, $cm));
 
     } else {
-        print_header("$course->shortname: ".format_string($discussion->name).": ".format_string($toppost->subject), "$course->fullname",
-                 "$navmiddle -> $navtail", "$formstart", "", true, "", navmenu($course, $cm));
+        print_header("$course->shortname: $strdiscussionname ".
+                      format_string($toppost->subject), "$course->fullname",
+                     "$navmiddle $navtail", "$formstart", "", true, "", navmenu($course, $cm));
 
     }