|
|
@@ -135,7 +135,6 @@ module.exports = function(crowi, app) {
|
|
|
|
|
|
return Bookmark.findByUser(userData, {limit: 10, populatePage: true, requestUser: req.user});
|
|
|
}).then(function(bookmarkList) {
|
|
|
- debug(bookmarkList);
|
|
|
renderVars.bookmarkList = bookmarkList;
|
|
|
|
|
|
return Page.findListByCreator(userData, {limit: 10});
|
|
|
@@ -219,7 +218,6 @@ module.exports = function(crowi, app) {
|
|
|
var currentRevision = pageForm.currentRevision;
|
|
|
var grant = pageForm.grant;
|
|
|
var path = pageForm.path;
|
|
|
- var extra = pageForm.extra;
|
|
|
|
|
|
// TODO: make it pluggable
|
|
|
var notify = pageForm.notify || {};
|
|
|
@@ -227,6 +225,7 @@ module.exports = function(crowi, app) {
|
|
|
debug('notify: ', notify);
|
|
|
|
|
|
var redirectPath = encodeURI(path);
|
|
|
+ var pageData = {};
|
|
|
|
|
|
// set to render
|
|
|
res.locals.pageForm = pageForm;
|
|
|
@@ -238,25 +237,32 @@ module.exports = function(crowi, app) {
|
|
|
|
|
|
var ignoreNotFound = true;
|
|
|
Page.findPage(path, req.user, null, ignoreNotFound)
|
|
|
- .then(function(pageData) {
|
|
|
+ .then(function(data) {
|
|
|
+ pageData = data;
|
|
|
+
|
|
|
if (!req.form.isValid) {
|
|
|
- return renderPage(pageData, req, res);
|
|
|
+ debug('Form data not valid');
|
|
|
+ throw new Error('Form data not valid.');
|
|
|
}
|
|
|
|
|
|
- if (pageData && !pageData.isUpdatable(currentRevision)) {
|
|
|
+ if (data && !data.isUpdatable(currentRevision)) {
|
|
|
+ debug('Conflict occured');
|
|
|
req.form.errors.push('すでに他の人がこのページを編集していたため保存できませんでした。ページを再読み込み後、自分の編集箇所のみ再度編集してください。');
|
|
|
- return renderPage(pageData, req, res);
|
|
|
+ throw new Error('Conflict.');
|
|
|
}
|
|
|
|
|
|
- if (pageData) {
|
|
|
+ if (data) {
|
|
|
// update existing page
|
|
|
- var newRevision = Revision.prepareRevision(pageData, body, req.user);
|
|
|
- return Page.pushRevision(pageData, newRevision, req.user);
|
|
|
+ var newRevision = Revision.prepareRevision(data, body, req.user);
|
|
|
+ return Page.pushRevision(data, newRevision, req.user);
|
|
|
} else {
|
|
|
// new page
|
|
|
return Page.create(path, body, req.user, {grant: grant});
|
|
|
}
|
|
|
}).then(function(data) {
|
|
|
+ if (!data) {
|
|
|
+ throw new Error('Data not found');
|
|
|
+ }
|
|
|
crowi.getIo().sockets.emit('page edited', {page: data, user: req.user});
|
|
|
|
|
|
if (grant != data.grant) {
|
|
|
@@ -267,7 +273,11 @@ module.exports = function(crowi, app) {
|
|
|
return res.redirect(redirectPath);
|
|
|
}
|
|
|
}).catch(function(err) {
|
|
|
- debug('Create or edit page error', err);
|
|
|
+ debug('Page create or edit error.', err);
|
|
|
+ if (pageData && !req.form.isValid) {
|
|
|
+ return renderPage(pageData, req, res);
|
|
|
+ }
|
|
|
+
|
|
|
return res.redirect(redirectPath);
|
|
|
});
|
|
|
};
|