|
@@ -62,6 +62,7 @@ module.exports = function(crowi, app) {
|
|
|
var SEENER_THRESHOLD = 10;
|
|
var SEENER_THRESHOLD = 10;
|
|
|
path = path + (path == '/' ? '' : '/');
|
|
path = path + (path == '/' ? '' : '/');
|
|
|
|
|
|
|
|
|
|
+ debug('Page list show', path);
|
|
|
// index page
|
|
// index page
|
|
|
var pagerOptions = {
|
|
var pagerOptions = {
|
|
|
offset: offset,
|
|
offset: offset,
|
|
@@ -102,6 +103,45 @@ module.exports = function(crowi, app) {
|
|
|
});
|
|
});
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
|
|
+ actions.deletedPageListShow = function(req, res) {
|
|
|
|
|
+ var path = '/trash' + getPathFromRequest(req);
|
|
|
|
|
+ var limit = 50;
|
|
|
|
|
+ var offset = parseInt(req.query.offset) || 0;
|
|
|
|
|
+
|
|
|
|
|
+ // index page
|
|
|
|
|
+ var pagerOptions = {
|
|
|
|
|
+ offset: offset,
|
|
|
|
|
+ limit : limit
|
|
|
|
|
+ };
|
|
|
|
|
+ var queryOptions = {
|
|
|
|
|
+ offset: offset,
|
|
|
|
|
+ limit : limit + 1,
|
|
|
|
|
+ includeDeletedPage: true,
|
|
|
|
|
+ };
|
|
|
|
|
+
|
|
|
|
|
+ var renderVars = {
|
|
|
|
|
+ page: null,
|
|
|
|
|
+ path: path,
|
|
|
|
|
+ pages: [],
|
|
|
|
|
+ };
|
|
|
|
|
+
|
|
|
|
|
+ Page.findListByStartWith(path, req.user, queryOptions)
|
|
|
|
|
+ .then(function(pageList) {
|
|
|
|
|
+
|
|
|
|
|
+ if (pageList.length > limit) {
|
|
|
|
|
+ pageList.pop();
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ pagerOptions.length = pageList.length;
|
|
|
|
|
+
|
|
|
|
|
+ renderVars.pager = generatePager(pagerOptions);
|
|
|
|
|
+ renderVars.pages = pageList;
|
|
|
|
|
+ res.render('page_list', renderVars);
|
|
|
|
|
+ }).catch(function(err) {
|
|
|
|
|
+ debug('Error on rendering deletedPageListShow', err);
|
|
|
|
|
+ });
|
|
|
|
|
+ };
|
|
|
|
|
+
|
|
|
actions.search = function(req, res) {
|
|
actions.search = function(req, res) {
|
|
|
// spec: ?q=query&sort=sort_order&author=author_filter
|
|
// spec: ?q=query&sort=sort_order&author=author_filter
|
|
|
var query = req.query.q;
|
|
var query = req.query.q;
|
|
@@ -244,7 +284,7 @@ module.exports = function(crowi, app) {
|
|
|
|
|
|
|
|
// pageShow は /* にマッチしてる最後の砦なので、creatableName でない routing は
|
|
// pageShow は /* にマッチしてる最後の砦なので、creatableName でない routing は
|
|
|
// これ以前に定義されているはずなので、こうしてしまって問題ない。
|
|
// これ以前に定義されているはずなので、こうしてしまって問題ない。
|
|
|
- if (!Page.isCreatableName(path) && page.isDeleted()) {
|
|
|
|
|
|
|
+ if (!Page.isCreatableName(path) && !page.isDeleted()) {
|
|
|
// 削除済みページの場合 /trash 以下に移動しているので creatableName になっていないので、表示を許可
|
|
// 削除済みページの場合 /trash 以下に移動しているので creatableName になっていないので、表示を許可
|
|
|
debug('Page is not creatable name.', path);
|
|
debug('Page is not creatable name.', path);
|
|
|
res.redirect('/');
|
|
res.redirect('/');
|
|
@@ -601,15 +641,20 @@ module.exports = function(crowi, app) {
|
|
|
|
|
|
|
|
Page.findPageByIdAndGrantedUser(pageId, req.user)
|
|
Page.findPageByIdAndGrantedUser(pageId, req.user)
|
|
|
.then(function(pageData) {
|
|
.then(function(pageData) {
|
|
|
|
|
+ debug('Delete page', pageData._id, pageData.path);
|
|
|
|
|
+
|
|
|
|
|
+ if (!pageData.isUpdatable(previousRevision)) {
|
|
|
|
|
+ throw new Error('Someone could update this page, so couldn\'t delete.');
|
|
|
|
|
+ }
|
|
|
return Page.deletePage(pageData, req.user);
|
|
return Page.deletePage(pageData, req.user);
|
|
|
}).then(function(data) {
|
|
}).then(function(data) {
|
|
|
debug('Page deleted', data);
|
|
debug('Page deleted', data);
|
|
|
var result = {};
|
|
var result = {};
|
|
|
- result.page = pageData;
|
|
|
|
|
|
|
+ result.page = data;
|
|
|
|
|
|
|
|
return res.json(ApiResponse.success(result));
|
|
return res.json(ApiResponse.success(result));
|
|
|
}).catch(function(err) {
|
|
}).catch(function(err) {
|
|
|
- debug('Error occured while get setting', err);
|
|
|
|
|
|
|
+ debug('Error occured while get setting', err, err.stack);
|
|
|
return res.json(ApiResponse.error('Failed to delete page.'));
|
|
return res.json(ApiResponse.error('Failed to delete page.'));
|
|
|
});
|
|
});
|
|
|
};
|
|
};
|
|
@@ -649,7 +694,7 @@ module.exports = function(crowi, app) {
|
|
|
.then(function(pageData) {
|
|
.then(function(pageData) {
|
|
|
page = pageData;
|
|
page = pageData;
|
|
|
if (!pageData.isUpdatable(previousRevision)) {
|
|
if (!pageData.isUpdatable(previousRevision)) {
|
|
|
- return res.json(ApiResponse.error('誰かが更新している可能性があります。ページを更新できません。'));
|
|
|
|
|
|
|
+ throw new Error('Someone could update this page, so couldn\'t delete.');
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
return Page.rename(pageData, newPagePath, req.user, options);
|
|
return Page.rename(pageData, newPagePath, req.user, options);
|