|
|
@@ -24,9 +24,12 @@ module.exports = function(crowi, app) {
|
|
|
|
|
|
// TODO: total とかでちゃんと計算する
|
|
|
function generatePager(options) {
|
|
|
- var next = null, prev = null,
|
|
|
- offset = parseInt(options.offset, 10),
|
|
|
- limit = parseInt(options.limit, 10);
|
|
|
+ var next = null,
|
|
|
+ prev = null,
|
|
|
+ offset = parseInt(options.offset, 10),
|
|
|
+ limit = parseInt(options.limit, 10),
|
|
|
+ length = options.length || 0;
|
|
|
+
|
|
|
|
|
|
if (offset > 0) {
|
|
|
prev = offset - limit;
|
|
|
@@ -35,7 +38,11 @@ module.exports = function(crowi, app) {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- next = offset + limit;
|
|
|
+ if (length < limit) {
|
|
|
+ next = null;
|
|
|
+ } else {
|
|
|
+ next = offset + limit;
|
|
|
+ }
|
|
|
|
|
|
return {
|
|
|
prev: prev,
|
|
|
@@ -48,31 +55,41 @@ module.exports = function(crowi, app) {
|
|
|
// routing
|
|
|
actions.pageListShow = function(req, res) {
|
|
|
var path = getPathFromRequest(req);
|
|
|
+ var limit = parseInt(req.query.limit) || 50;
|
|
|
+ var offset = parseInt(req.query.offset) || 0;
|
|
|
path = path + (path == '/' ? '' : '/');
|
|
|
|
|
|
// index page
|
|
|
- var options = {
|
|
|
- offset: req.query.offset || 0,
|
|
|
- limit : req.query.limit || 50
|
|
|
+ var pagerOptions = {
|
|
|
+ offset: offset,
|
|
|
+ limit : limit
|
|
|
+ };
|
|
|
+ var queryOptions = {
|
|
|
+ offset: offset,
|
|
|
+ limit : limit + 1
|
|
|
};
|
|
|
|
|
|
var renderVars = {
|
|
|
page: null,
|
|
|
path: path,
|
|
|
pages: [],
|
|
|
- pager: generatePager(options)
|
|
|
};
|
|
|
|
|
|
Page.hasPortalPage(path, req.user)
|
|
|
.then(function(portalPage) {
|
|
|
renderVars.page = portalPage;
|
|
|
|
|
|
- return Page.findListByStartWith(path.substr(0, path.length -1), req.user, options);
|
|
|
+ return Page.findListByStartWith(path.substr(0, path.length -1), req.user, queryOptions);
|
|
|
}).then(function(pageList) {
|
|
|
|
|
|
- renderVars.pages = pageList;
|
|
|
- renderVars.pager = generatePager(pageList);
|
|
|
+ if (pageList.length > limit) {
|
|
|
+ pageList.pop();
|
|
|
+ }
|
|
|
|
|
|
+ pagerOptions.length = pageList.length;
|
|
|
+
|
|
|
+ renderVars.pager = generatePager(pagerOptions);
|
|
|
+ renderVars.pages = pageList;
|
|
|
res.render('page_list', renderVars);
|
|
|
});
|
|
|
};
|