|
@@ -767,6 +767,7 @@ module.exports = function(crowi) {
|
|
|
{grant: GRANT_RESTRICTED, grantedUsers: userData._id},
|
|
{grant: GRANT_RESTRICTED, grantedUsers: userData._id},
|
|
|
{grant: GRANT_SPECIFIED, grantedUsers: userData._id},
|
|
{grant: GRANT_SPECIFIED, grantedUsers: userData._id},
|
|
|
{grant: GRANT_OWNER, grantedUsers: userData._id},
|
|
{grant: GRANT_OWNER, grantedUsers: userData._id},
|
|
|
|
|
+ {grant: GRANT_USER_GROUP},
|
|
|
], })
|
|
], })
|
|
|
.and({
|
|
.and({
|
|
|
$or: pathCondition
|
|
$or: pathCondition
|
|
@@ -974,20 +975,13 @@ module.exports = function(crowi) {
|
|
|
, newPath = Page.getDeletedPageName(pageData.path)
|
|
, newPath = Page.getDeletedPageName(pageData.path)
|
|
|
;
|
|
;
|
|
|
if (Page.isDeletableName(pageData.path)) {
|
|
if (Page.isDeletableName(pageData.path)) {
|
|
|
- return new Promise(function(resolve, reject) {
|
|
|
|
|
- Page.updatePageProperty(pageData, {status: STATUS_DELETED, lastUpdateUser: user})
|
|
|
|
|
- .then(function(data) {
|
|
|
|
|
- pageData.status = STATUS_DELETED;
|
|
|
|
|
-
|
|
|
|
|
- // ページ名が /trash/ 以下に存在する場合、おかしなことになる
|
|
|
|
|
- // が、 /trash 以下にページが有るのは、個別に作っていたケースのみ。
|
|
|
|
|
- // 一応しばらく前から uncreatable pages になっているのでこれでいいことにする
|
|
|
|
|
- debug('Deleted the page, and rename it', pageData.path, newPath);
|
|
|
|
|
- return Page.rename(pageData, newPath, user, {createRedirectPage: true});
|
|
|
|
|
- }).then(function(pageData) {
|
|
|
|
|
- resolve(pageData);
|
|
|
|
|
- }).catch(reject);
|
|
|
|
|
- });
|
|
|
|
|
|
|
+ return Page.rename(pageData, newPath, user, {createRedirectPage: true})
|
|
|
|
|
+ .then((updatedPageData) => {
|
|
|
|
|
+ return Page.updatePageProperty(updatedPageData, {status: STATUS_DELETED, lastUpdateUser: user});
|
|
|
|
|
+ })
|
|
|
|
|
+ .then(() => {
|
|
|
|
|
+ return pageData;
|
|
|
|
|
+ });
|
|
|
}
|
|
}
|
|
|
else {
|
|
else {
|
|
|
return Promise.reject('Page is not deletable.');
|
|
return Promise.reject('Page is not deletable.');
|
|
@@ -1000,18 +994,15 @@ module.exports = function(crowi) {
|
|
|
, options = options || {}
|
|
, options = options || {}
|
|
|
;
|
|
;
|
|
|
|
|
|
|
|
- return new Promise(function(resolve, reject) {
|
|
|
|
|
- Page
|
|
|
|
|
- .generateQueryToListWithDescendants(path, user, options)
|
|
|
|
|
|
|
+ return Page.generateQueryToListWithDescendants(path, user, options)
|
|
|
.then(function(pages) {
|
|
.then(function(pages) {
|
|
|
- Promise.all(pages.map(function(page) {
|
|
|
|
|
|
|
+ return Promise.all(pages.map(function(page) {
|
|
|
return Page.deletePage(page, user, options);
|
|
return Page.deletePage(page, user, options);
|
|
|
- }))
|
|
|
|
|
- .then(function(data) {
|
|
|
|
|
- return resolve(pageData);
|
|
|
|
|
- });
|
|
|
|
|
|
|
+ }));
|
|
|
|
|
+ })
|
|
|
|
|
+ .then(function(data) {
|
|
|
|
|
+ return pageData;
|
|
|
});
|
|
});
|
|
|
- });
|
|
|
|
|
|
|
|
|
|
};
|
|
};
|
|
|
|
|
|
|
@@ -1054,6 +1045,7 @@ module.exports = function(crowi) {
|
|
|
return new Promise(function(resolve, reject) {
|
|
return new Promise(function(resolve, reject) {
|
|
|
Page
|
|
Page
|
|
|
.generateQueryToListWithDescendants(path, user, options)
|
|
.generateQueryToListWithDescendants(path, user, options)
|
|
|
|
|
+ .exec()
|
|
|
.then(function(pages) {
|
|
.then(function(pages) {
|
|
|
Promise.all(pages.map(function(page) {
|
|
Promise.all(pages.map(function(page) {
|
|
|
return Page.revertDeletedPage(page, user, options);
|
|
return Page.revertDeletedPage(page, user, options);
|
|
@@ -1180,25 +1172,22 @@ module.exports = function(crowi) {
|
|
|
, createRedirectPage = options.createRedirectPage || 0
|
|
, createRedirectPage = options.createRedirectPage || 0
|
|
|
, moveUnderTrees = options.moveUnderTrees || 0;
|
|
, moveUnderTrees = options.moveUnderTrees || 0;
|
|
|
|
|
|
|
|
- return new Promise(function(resolve, reject) {
|
|
|
|
|
- // pageData の path を変更
|
|
|
|
|
- Page.updatePageProperty(pageData, {updatedAt: Date.now(), path: newPagePath, lastUpdateUser: user})
|
|
|
|
|
- .then(function(data) {
|
|
|
|
|
|
|
+ return Page.updatePageProperty(pageData, {updatedAt: Date.now(), path: newPagePath, lastUpdateUser: user}) // pageData の path を変更
|
|
|
|
|
+ .then((data) => {
|
|
|
// reivisions の path を変更
|
|
// reivisions の path を変更
|
|
|
return Revision.updateRevisionListByPath(path, {path: newPagePath}, {});
|
|
return Revision.updateRevisionListByPath(path, {path: newPagePath}, {});
|
|
|
- }).then(function(data) {
|
|
|
|
|
|
|
+ })
|
|
|
|
|
+ .then(function(data) {
|
|
|
pageData.path = newPagePath;
|
|
pageData.path = newPagePath;
|
|
|
|
|
|
|
|
if (createRedirectPage) {
|
|
if (createRedirectPage) {
|
|
|
var body = 'redirect ' + newPagePath;
|
|
var body = 'redirect ' + newPagePath;
|
|
|
- Page.create(path, body, user, {redirectTo: newPagePath}).then(resolve).catch(reject);
|
|
|
|
|
- }
|
|
|
|
|
- else {
|
|
|
|
|
- resolve(data);
|
|
|
|
|
|
|
+ Page.create(path, body, user, {redirectTo: newPagePath});
|
|
|
}
|
|
}
|
|
|
pageEvent.emit('update', pageData, user); // update as renamed page
|
|
pageEvent.emit('update', pageData, user); // update as renamed page
|
|
|
|
|
+
|
|
|
|
|
+ return pageData;
|
|
|
});
|
|
});
|
|
|
- });
|
|
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
pageSchema.statics.renameRecursively = function(pageData, newPagePathPrefix, user, options) {
|
|
pageSchema.statics.renameRecursively = function(pageData, newPagePathPrefix, user, options) {
|
|
@@ -1206,20 +1195,17 @@ module.exports = function(crowi) {
|
|
|
, path = pageData.path
|
|
, path = pageData.path
|
|
|
, pathRegExp = new RegExp('^' + escapeStringRegexp(path), 'i');
|
|
, pathRegExp = new RegExp('^' + escapeStringRegexp(path), 'i');
|
|
|
|
|
|
|
|
- return new Promise(function(resolve, reject) {
|
|
|
|
|
- Page
|
|
|
|
|
- .generateQueryToListWithDescendants(path, user, options)
|
|
|
|
|
|
|
+ return Page.generateQueryToListWithDescendants(path, user, options)
|
|
|
.then(function(pages) {
|
|
.then(function(pages) {
|
|
|
- Promise.all(pages.map(function(page) {
|
|
|
|
|
- newPagePath = page.path.replace(pathRegExp, newPagePathPrefix);
|
|
|
|
|
|
|
+ return Promise.all(pages.map(function(page) {
|
|
|
|
|
+ const newPagePath = page.path.replace(pathRegExp, newPagePathPrefix);
|
|
|
return Page.rename(page, newPagePath, user, options);
|
|
return Page.rename(page, newPagePath, user, options);
|
|
|
- }))
|
|
|
|
|
- .then(function() {
|
|
|
|
|
- pageData.path = newPagePathPrefix;
|
|
|
|
|
- return resolve();
|
|
|
|
|
- });
|
|
|
|
|
|
|
+ }));
|
|
|
|
|
+ })
|
|
|
|
|
+ .then(function() {
|
|
|
|
|
+ pageData.path = newPagePathPrefix;
|
|
|
|
|
+ return pageData;
|
|
|
});
|
|
});
|
|
|
- });
|
|
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
pageSchema.statics.getHistories = function() {
|
|
pageSchema.statics.getHistories = function() {
|