trim pagination numberS

v1.18.x
Baris Soner Usakli 11 years ago
parent 6628db89af
commit 1afd7ae332

@ -33,5 +33,8 @@
"motd.get": "Get NodeBB", "motd.get": "Get NodeBB",
"motd.fork": "Fork", "motd.fork": "Fork",
"motd.like": "Like", "motd.like": "Like",
"motd.follow": "Follow" "motd.follow": "Follow",
"previouspage": "Previous Page",
"nextpage": "Next Page"
} }

@ -10,7 +10,7 @@ define(function() {
pagination.currentPage = parseInt(currentPage, 10); pagination.currentPage = parseInt(currentPage, 10);
pagination.pageCount = parseInt(pageCount, 10); pagination.pageCount = parseInt(pageCount, 10);
updatePageLinks(); pagination.recreatePaginationLinks(pageCount);
$('.pagination').on('click', '.previous', function() { $('.pagination').on('click', '.previous', function() {
pagination.loadPage(pagination.currentPage - 1); pagination.loadPage(pagination.currentPage - 1);
@ -25,18 +25,42 @@ define(function() {
}); });
} }
pagination.recreatePaginationLinks = function(template, newPageCount) { pagination.recreatePaginationLinks = function(newPageCount) {
pagination.pageCount = parseInt(newPageCount, 10); pagination.pageCount = parseInt(newPageCount, 10);
var pages = []; var pagesToShow = [1, pagination.pageCount];
for(var i=1; i<=pagination.pageCount; ++i) {
pages.push({pageNumber: i}); var previous = pagination.currentPage - 1;
var next = pagination.currentPage + 1;
if(previous > 1 && pagesToShow.indexOf(previous) === -1) {
pagesToShow.push(previous);
}
if(next < pagination.pageCount && pagesToShow.indexOf(next) === -1) {
pagesToShow.push(next);
}
if(pagesToShow.indexOf(pagination.currentPage) === -1) {
pagesToShow.push(pagination.currentPage);
}
pagesToShow.sort(function(a, b) {
return parseInt(a, 10) - parseInt(b, 10);
});
var html = '';
for(var i=0; i<pagesToShow.length; ++i) {
if(i > 0) {
if (pagesToShow[i] - 1 !== pagesToShow[i-1]) {
html += '<li class="disabled"><a href="#">|</a></li>';
}
}
html += '<li class="page" data-page="' + pagesToShow[i] + '"><a href="#">' + pagesToShow[i] + '</a></li>';
} }
var html = templates.prepare(templates[template].blocks['pages']).parse({pages:pages});
html = $(html);
$('.pagination li.page').remove(); $('.pagination li.page').remove();
html.insertAfter($('.pagination li.previous')); $(html).insertAfter($('.pagination li.previous'));
updatePageLinks(); updatePageLinks();
} }

@ -87,11 +87,8 @@
<!-- IF usePagination --> <!-- IF usePagination -->
<div class="text-center"> <div class="text-center">
<ul class="pagination"> <ul class="pagination">
<li class="previous pull-left"><a href="#">&larr; Older</a></li> <li class="previous pull-left"><a href="#"><i class="fa fa-chevron-left"></i> [[global:previouspage]]</a></li>
<!-- BEGIN pages --> <li class="next pull-right"><a href="#">[[global:nextpage]] <i class="fa fa-chevron-right"></i></a></li>
<li class="page" data-page="{pages.pageNumber}"><a href="#">{pages.pageNumber}</a></li>
<!-- END pages -->
<li class="next pull-right"><a href="#">Newer &rarr;</a></li>
</ul> </ul>
</div> </div>
<!-- ENDIF usePagination --> <!-- ENDIF usePagination -->

@ -206,11 +206,8 @@
<!-- IF usePagination --> <!-- IF usePagination -->
<div class="text-center"> <div class="text-center">
<ul class="pagination"> <ul class="pagination">
<li class="previous pull-left"><a href="#">&larr; Older</a></li> <li class="previous pull-left"><a href="#"><i class="fa fa-chevron-left"></i> [[global:previouspage]]</a></li>
<!-- BEGIN pages --> <li class="next pull-right"><a href="#">[[global:nextpage]] <i class="fa fa-chevron-right"></i></a></li>
<li class="page" data-page="{pages.pageNumber}"><a href="#">{pages.pageNumber}</a></li>
<!-- END pages -->
<li class="next pull-right"><a href="#">Newer &rarr;</a></li>
</ul> </ul>
</div> </div>
<!-- ENDIF usePagination --> <!-- ENDIF usePagination -->

@ -66,15 +66,15 @@ var db = require('./database.js'),
}); });
} }
function getPages(next) { function getPageCount(next) {
Categories.getPages(category_id, next); Categories.getPageCount(category_id, next);
} }
async.parallel([getTopicIds, getActiveUsers, getSidebars, getPages], function(err, results) { async.parallel([getTopicIds, getActiveUsers, getSidebars, getPageCount], function(err, results) {
var tids = results[0], var tids = results[0],
active_users = results[1], active_users = results[1],
sidebars = results[2], sidebars = results[2],
pages = results[3]; pageCount = results[3];
var category = { var category = {
'category_name': categoryData.name, 'category_name': categoryData.name,
@ -88,8 +88,7 @@ var db = require('./database.js'),
'category_id': category_id, 'category_id': category_id,
'active_users': [], 'active_users': [],
'topics': [], 'topics': [],
'pages': pages, 'pageCount': pageCount,
'pageCount': pages.length,
'disableSocialButtons': meta.config.disableSocialButtons !== undefined ? parseInt(meta.config.disableSocialButtons, 10) !== 0 : false, 'disableSocialButtons': meta.config.disableSocialButtons !== undefined ? parseInt(meta.config.disableSocialButtons, 10) !== 0 : false,
'sidebars': sidebars 'sidebars': sidebars
}; };
@ -145,19 +144,6 @@ var db = require('./database.js'),
db.getSortedSetRevRange('categories:' + cid + ':tid', start, stop, callback); db.getSortedSetRevRange('categories:' + cid + ':tid', start, stop, callback);
}; };
Categories.getPages = function(cid, callback) {
Categories.getPageCount(cid, function(err, pageCount) {
if(err) {
return callback(err);
}
var pages = [];
for(var i=1; i<=pageCount; ++i) {
pages.push({pageNumber: i});
}
callback(null, pages);
});
};
Categories.getPageCount = function(cid, callback) { Categories.getPageCount = function(cid, callback) {
db.sortedSetCard('categories:' + cid + ':tid', function(err, topicCount) { db.sortedSetCard('categories:' + cid + ':tid', function(err, topicCount) {
if(err) { if(err) {

@ -392,19 +392,6 @@ var async = require('async'),
}); });
} }
Topics.getPages = function(tid, callback) {
Topics.getPageCount(tid, function(err, pageCount) {
if(err) {
return callback(err);
}
var pages = [];
for(var i=1; i<=pageCount; ++i) {
pages.push({pageNumber: i});
}
callback(null, pages);
});
}
Topics.getPageCount = function(tid, callback) { Topics.getPageCount = function(tid, callback) {
db.sortedSetCard('tid:' + tid + ':posts', function(err, postCount) { db.sortedSetCard('tid:' + tid + ':posts', function(err, postCount) {
if(err) { if(err) {
@ -794,11 +781,11 @@ var async = require('async'),
Topics.getCategoryData(tid, next); Topics.getCategoryData(tid, next);
} }
function getPages(next) { function getPageCount(next) {
Topics.getPages(tid, next); Topics.getPageCount(tid, next);
} }
async.parallel([getTopicData, getTopicPosts, getPrivileges, getCategoryData, getPages], function(err, results) { async.parallel([getTopicData, getTopicPosts, getPrivileges, getCategoryData, getPageCount], function(err, results) {
if (err) { if (err) {
winston.error('[Topics.getTopicWithPosts] Could not retrieve topic data: ', err.message); winston.error('[Topics.getTopicWithPosts] Could not retrieve topic data: ', err.message);
return callback(err, null); return callback(err, null);
@ -808,7 +795,7 @@ var async = require('async'),
topicPosts = results[1], topicPosts = results[1],
privileges = results[2], privileges = results[2],
categoryData = results[3], categoryData = results[3],
pages = results[4]; pageCount = results[4];
var postsPerPage = parseInt(meta.config.postsPerPage, 10); var postsPerPage = parseInt(meta.config.postsPerPage, 10);
postsPerPage = postsPerPage ? postsPerPage : 20; postsPerPage = postsPerPage ? postsPerPage : 20;
@ -824,8 +811,7 @@ var async = require('async'),
'slug': topicData.slug, 'slug': topicData.slug,
'postcount': topicData.postcount, 'postcount': topicData.postcount,
'viewcount': topicData.viewcount, 'viewcount': topicData.viewcount,
'pages': pages, 'pageCount': pageCount,
'pageCount': pages.length,
'unreplied': parseInt(topicData.postcount, 10) > 1, 'unreplied': parseInt(topicData.postcount, 10) > 1,
'topic_id': tid, 'topic_id': tid,
'expose_tools': privileges.editable ? 1 : 0, 'expose_tools': privileges.editable ? 1 : 0,

Loading…
Cancel
Save