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.fork": "Fork",
"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.pageCount = parseInt(pageCount, 10);
updatePageLinks();
pagination.recreatePaginationLinks(pageCount);
$('.pagination').on('click', '.previous', function() {
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);
var pages = [];
for(var i=1; i<=pagination.pageCount; ++i) {
pages.push({pageNumber: i});
var pagesToShow = [1, pagination.pageCount];
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();
html.insertAfter($('.pagination li.previous'));
$(html).insertAfter($('.pagination li.previous'));
updatePageLinks();
}

@ -87,11 +87,8 @@
<!-- IF usePagination -->
<div class="text-center">
<ul class="pagination">
<li class="previous pull-left"><a href="#">&larr; Older</a></li>
<!-- BEGIN pages -->
<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>
<li class="previous pull-left"><a href="#"><i class="fa fa-chevron-left"></i> [[global:previouspage]]</a></li>
<li class="next pull-right"><a href="#">[[global:nextpage]] <i class="fa fa-chevron-right"></i></a></li>
</ul>
</div>
<!-- ENDIF usePagination -->

@ -206,11 +206,8 @@
<!-- IF usePagination -->
<div class="text-center">
<ul class="pagination">
<li class="previous pull-left"><a href="#">&larr; Older</a></li>
<!-- BEGIN pages -->
<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>
<li class="previous pull-left"><a href="#"><i class="fa fa-chevron-left"></i> [[global:previouspage]]</a></li>
<li class="next pull-right"><a href="#">[[global:nextpage]] <i class="fa fa-chevron-right"></i></a></li>
</ul>
</div>
<!-- ENDIF usePagination -->

@ -66,15 +66,15 @@ var db = require('./database.js'),
});
}
function getPages(next) {
Categories.getPages(category_id, next);
function getPageCount(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],
active_users = results[1],
sidebars = results[2],
pages = results[3];
pageCount = results[3];
var category = {
'category_name': categoryData.name,
@ -88,8 +88,7 @@ var db = require('./database.js'),
'category_id': category_id,
'active_users': [],
'topics': [],
'pages': pages,
'pageCount': pages.length,
'pageCount': pageCount,
'disableSocialButtons': meta.config.disableSocialButtons !== undefined ? parseInt(meta.config.disableSocialButtons, 10) !== 0 : false,
'sidebars': sidebars
};
@ -145,19 +144,6 @@ var db = require('./database.js'),
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) {
db.sortedSetCard('categories:' + cid + ':tid', function(err, topicCount) {
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) {
db.sortedSetCard('tid:' + tid + ':posts', function(err, postCount) {
if(err) {
@ -794,11 +781,11 @@ var async = require('async'),
Topics.getCategoryData(tid, next);
}
function getPages(next) {
Topics.getPages(tid, next);
function getPageCount(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) {
winston.error('[Topics.getTopicWithPosts] Could not retrieve topic data: ', err.message);
return callback(err, null);
@ -808,7 +795,7 @@ var async = require('async'),
topicPosts = results[1],
privileges = results[2],
categoryData = results[3],
pages = results[4];
pageCount = results[4];
var postsPerPage = parseInt(meta.config.postsPerPage, 10);
postsPerPage = postsPerPage ? postsPerPage : 20;
@ -824,8 +811,7 @@ var async = require('async'),
'slug': topicData.slug,
'postcount': topicData.postcount,
'viewcount': topicData.viewcount,
'pages': pages,
'pageCount': pages.length,
'pageCount': pageCount,
'unreplied': parseInt(topicData.postcount, 10) > 1,
'topic_id': tid,
'expose_tools': privileges.editable ? 1 : 0,

Loading…
Cancel
Save