mirror of
https://github.com/moodle/moodle.git
synced 2025-02-02 14:19:07 +01:00
Paging discussions is in CVS just now :-)
This commit is contained in:
parent
ed5bdd6585
commit
f6bb7eaa39
@ -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 "<center>";
|
||||
print_paging_bar($numdiscussions, $page, $forum_numdiscussions, "view.php?f=$forum->id&");
|
||||
echo "</center>";
|
||||
|
||||
//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 "<a href=\"$CFG->wwwroot/mod/forum/view.php?f=$forum->id&showall=1\">";
|
||||
echo get_string("olderdiscussions", "forum")."</a> ...</p>";
|
||||
}
|
||||
|
||||
//If we want paging
|
||||
if ($page != -1) {
|
||||
///Show the paging bar
|
||||
echo "<center>";
|
||||
print_paging_bar($numdiscussions, $page, $forum_numdiscussions, "view.php?f=$forum->id&");
|
||||
echo "</center>";
|
||||
}
|
||||
}
|
||||
|
||||
function forum_print_discussion($course, $forum, $discussion, $post, $mode, $canreply=NULL) {
|
||||
|
@ -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;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user