From: stronk7 Date: Tue, 10 Aug 2004 09:37:02 +0000 (+0000) Subject: Paging discussions is in CVS just now :-) X-Git-Url: http://git.mjollnir.org/gw?a=commitdiff_plain;h=f6bb7eaa39a6bfea8ade56b2969c33c904768c71;p=moodle.git Paging discussions is in CVS just now :-) --- diff --git a/mod/forum/lib.php b/mod/forum/lib.php index 7f3c550db5..b1ba8b399e 100644 --- a/mod/forum/lib.php +++ b/mod/forum/lib.php @@ -2321,7 +2321,7 @@ function forum_user_can_post($forum, $user=NULL) { function forum_print_latest_discussions($forum_id=0, $forum_numdiscussions=5, $forum_style="plain", $forum_sort="", - $currentgroup=0, $groupmode=-1) { + $currentgroup=0, $groupmode=-1, $page=-1) { global $CFG, $USER; if ($forum_id) { @@ -2398,6 +2398,27 @@ function forum_print_latest_discussions($forum_id=0, $forum_numdiscussions=5, return; } + //If forum_numdiscussions <= 0 don't paging (to avoid some divided by 0 errors) + if ($forum_numdiscussions <= 0) { + $page = -1; + $forum_numdiscussions = 0; + } + + //If we want paging + if ($page != -1) { + ///Get the number of discussions found + $numdiscussions = count($discussions); + + ///Show the paging bar + echo "
"; + print_paging_bar($numdiscussions, $page, $forum_numdiscussions, "view.php?f=$forum->id&"); + echo "
"; + + //Calculate the page "window" + $pagestart = ($page * $forum_numdiscussions) + 1; + $pageend = $pagestart + $forum_numdiscussions - 1; + } + $replies = forum_count_discussion_replies($forum->id); $canreply = forum_user_can_post($forum); @@ -2426,7 +2447,15 @@ function forum_print_latest_discussions($forum_id=0, $forum_numdiscussions=5, foreach ($discussions as $discussion) { $discussioncount++; - if ($forum_numdiscussions && ($discussioncount > $forum_numdiscussions)) { + //If we want paging + if ($page != -1) { + //And we aren't inside the page "window" + if ($discussioncount < $pagestart || $discussioncount > $pageend) { + //Skip this discussion + continue; + } + //Without paging, old approach + } else if ($forum_numdiscussions && ($discussioncount > $forum_numdiscussions)) { $olddiscussionlink = true; break; } @@ -2486,6 +2515,14 @@ function forum_print_latest_discussions($forum_id=0, $forum_numdiscussions=5, echo "wwwroot/mod/forum/view.php?f=$forum->id&showall=1\">"; echo get_string("olderdiscussions", "forum")." ...

"; } + + //If we want paging + if ($page != -1) { + ///Show the paging bar + echo "
"; + print_paging_bar($numdiscussions, $page, $forum_numdiscussions, "view.php?f=$forum->id&"); + echo "
"; + } } function forum_print_discussion($course, $forum, $discussion, $post, $mode, $canreply=NULL) { diff --git a/mod/forum/view.php b/mod/forum/view.php index 51a7792c15..2835afa33c 100644 --- a/mod/forum/view.php +++ b/mod/forum/view.php @@ -10,6 +10,7 @@ optional_variable($search, ""); // search string optional_variable($showall, ""); // show all discussions on one page optional_variable($group, -1); // choose the current group + optional_variable($page, "0"); // which page to show if ($id) { if (! $cm = get_record("course_modules", "id", $id)) { @@ -212,7 +213,7 @@ if (!empty($showall)) { forum_print_latest_discussions($forum->id, 0, 'header', '', $currentgroup, $groupmode); } else { - forum_print_latest_discussions($forum->id, $CFG->forum_manydiscussions, 'header', '', $currentgroup, $groupmode); + forum_print_latest_discussions($forum->id, $CFG->forum_manydiscussions, 'header', '', $currentgroup, $groupmode, $page); } break; @@ -220,7 +221,7 @@ if (!empty($showall)) { forum_print_latest_discussions($forum->id, 0, 'header', '', $currentgroup, $groupmode); } else { - forum_print_latest_discussions($forum->id, $CFG->forum_manydiscussions, 'header', '', $currentgroup, $groupmode); + forum_print_latest_discussions($forum->id, $CFG->forum_manydiscussions, 'header', '', $currentgroup, $groupmode, $page); } break; @@ -232,7 +233,7 @@ if (!empty($showall)) { forum_print_latest_discussions($forum->id, 0, 'header', '', $currentgroup, $groupmode); } else { - forum_print_latest_discussions($forum->id, $CFG->forum_manydiscussions, 'header', '', $currentgroup, $groupmode); + forum_print_latest_discussions($forum->id, $CFG->forum_manydiscussions, 'header', '', $currentgroup, $groupmode, $page); } break; }