|
@@ -8,6 +8,7 @@ module.exports = function(crowi, app) {
|
|
|
, config = crowi.getConfig()
|
|
, config = crowi.getConfig()
|
|
|
, Revision = crowi.model('Revision')
|
|
, Revision = crowi.model('Revision')
|
|
|
, Bookmark = crowi.model('Bookmark')
|
|
, Bookmark = crowi.model('Bookmark')
|
|
|
|
|
+ , UserGroupRelation = crowi.model('UserGroupRelation')
|
|
|
, ApiResponse = require('../util/apiResponse')
|
|
, ApiResponse = require('../util/apiResponse')
|
|
|
, interceptorManager = crowi.getInterceptorManager()
|
|
, interceptorManager = crowi.getInterceptorManager()
|
|
|
|
|
|
|
@@ -69,11 +70,11 @@ module.exports = function(crowi, app) {
|
|
|
actions.pageListShowWrapper = function(req, res) {
|
|
actions.pageListShowWrapper = function(req, res) {
|
|
|
const behaviorType = Config.behaviorType(config);
|
|
const behaviorType = Config.behaviorType(config);
|
|
|
|
|
|
|
|
- if ('crowi-plus' === behaviorType) {
|
|
|
|
|
- return actions.pageListShowForCrowiPlus(req, res);
|
|
|
|
|
|
|
+ if (!behaviorType || 'crowi' === behaviorType) {
|
|
|
|
|
+ return actions.pageListShow(req, res);
|
|
|
}
|
|
}
|
|
|
else {
|
|
else {
|
|
|
- return actions.pageListShow(req, res);
|
|
|
|
|
|
|
+ return actions.pageListShowForCrowiPlus(req, res);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
/**
|
|
/**
|
|
@@ -82,11 +83,11 @@ module.exports = function(crowi, app) {
|
|
|
actions.pageShowWrapper = function(req, res) {
|
|
actions.pageShowWrapper = function(req, res) {
|
|
|
const behaviorType = Config.behaviorType(config);
|
|
const behaviorType = Config.behaviorType(config);
|
|
|
|
|
|
|
|
- if ('crowi-plus' === behaviorType) {
|
|
|
|
|
- return actions.pageShowForCrowiPlus(req, res);
|
|
|
|
|
|
|
+ if (!behaviorType || 'crowi' === behaviorType) {
|
|
|
|
|
+ return actions.pageShow(req, res);
|
|
|
}
|
|
}
|
|
|
else {
|
|
else {
|
|
|
- return actions.pageShow(req, res);
|
|
|
|
|
|
|
+ return actions.pageShowForCrowiPlus(req, res);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
/**
|
|
/**
|
|
@@ -95,13 +96,13 @@ module.exports = function(crowi, app) {
|
|
|
actions.trashPageListShowWrapper = function(req, res) {
|
|
actions.trashPageListShowWrapper = function(req, res) {
|
|
|
const behaviorType = Config.behaviorType(config);
|
|
const behaviorType = Config.behaviorType(config);
|
|
|
|
|
|
|
|
- if ('crowi-plus' === behaviorType) {
|
|
|
|
|
- // redirect to '/trash'
|
|
|
|
|
- return res.redirect('/trash');
|
|
|
|
|
|
|
+ if (!behaviorType || 'crowi' === behaviorType) {
|
|
|
|
|
+ // Crowi behavior for '/trash/*'
|
|
|
|
|
+ return actions.deletedPageListShow(req, res);
|
|
|
}
|
|
}
|
|
|
- // official Crowi behavior for '/trash/*'
|
|
|
|
|
else {
|
|
else {
|
|
|
- return actions.deletedPageListShow(req, res);
|
|
|
|
|
|
|
+ // redirect to '/trash'
|
|
|
|
|
+ return res.redirect('/trash');
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
/**
|
|
/**
|
|
@@ -110,14 +111,14 @@ module.exports = function(crowi, app) {
|
|
|
actions.trashPageShowWrapper = function(req, res) {
|
|
actions.trashPageShowWrapper = function(req, res) {
|
|
|
const behaviorType = Config.behaviorType(config);
|
|
const behaviorType = Config.behaviorType(config);
|
|
|
|
|
|
|
|
- if ('crowi-plus' === behaviorType) {
|
|
|
|
|
- // official Crowi behavior for '/trash/*'
|
|
|
|
|
- return actions.deletedPageListShow(req, res);
|
|
|
|
|
- }
|
|
|
|
|
- else {
|
|
|
|
|
|
|
+ if (!behaviorType || 'crowi' === behaviorType) {
|
|
|
// redirect to '/trash/'
|
|
// redirect to '/trash/'
|
|
|
return res.redirect('/trash/');
|
|
return res.redirect('/trash/');
|
|
|
}
|
|
}
|
|
|
|
|
+ else {
|
|
|
|
|
+ // Crowi behavior for '/trash/*'
|
|
|
|
|
+ return actions.deletedPageListShow(req, res);
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
}
|
|
}
|
|
|
/**
|
|
/**
|
|
@@ -126,13 +127,13 @@ module.exports = function(crowi, app) {
|
|
|
actions.deletedPageListShowWrapper = function(req, res) {
|
|
actions.deletedPageListShowWrapper = function(req, res) {
|
|
|
const behaviorType = Config.behaviorType(config);
|
|
const behaviorType = Config.behaviorType(config);
|
|
|
|
|
|
|
|
- if ('crowi-plus' === behaviorType) {
|
|
|
|
|
- const path = '/trash' + getPathFromRequest(req);
|
|
|
|
|
- return res.redirect(path);
|
|
|
|
|
|
|
+ if (!behaviorType || 'crowi' === behaviorType) {
|
|
|
|
|
+ // Crowi behavior for '/trash/*'
|
|
|
|
|
+ return actions.deletedPageListShow(req, res);
|
|
|
}
|
|
}
|
|
|
- // official Crowi behavior for '/trash/*'
|
|
|
|
|
else {
|
|
else {
|
|
|
- return actions.deletedPageListShow(req, res);
|
|
|
|
|
|
|
+ const path = '/trash' + getPathFromRequest(req);
|
|
|
|
|
+ return res.redirect(path);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -160,6 +161,7 @@ module.exports = function(crowi, app) {
|
|
|
var renderVars = {
|
|
var renderVars = {
|
|
|
page: null,
|
|
page: null,
|
|
|
path: path,
|
|
path: path,
|
|
|
|
|
+ isPortal: false,
|
|
|
pages: [],
|
|
pages: [],
|
|
|
tree: [],
|
|
tree: [],
|
|
|
};
|
|
};
|
|
@@ -167,6 +169,7 @@ module.exports = function(crowi, app) {
|
|
|
Page.hasPortalPage(path, req.user, req.query.revision)
|
|
Page.hasPortalPage(path, req.user, req.query.revision)
|
|
|
.then(function(portalPage) {
|
|
.then(function(portalPage) {
|
|
|
renderVars.page = portalPage;
|
|
renderVars.page = portalPage;
|
|
|
|
|
+ renderVars.isPortal = (portalPage != null);
|
|
|
|
|
|
|
|
if (portalPage) {
|
|
if (portalPage) {
|
|
|
renderVars.revision = portalPage.revision;
|
|
renderVars.revision = portalPage.revision;
|
|
@@ -231,6 +234,7 @@ module.exports = function(crowi, app) {
|
|
|
author: false,
|
|
author: false,
|
|
|
pages: [],
|
|
pages: [],
|
|
|
tree: [],
|
|
tree: [],
|
|
|
|
|
+ userRelatedGroups: [],
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
var pageTeamplate = 'customlayout-selector/page';
|
|
var pageTeamplate = 'customlayout-selector/page';
|
|
@@ -331,6 +335,15 @@ module.exports = function(crowi, app) {
|
|
|
debug('Error on rendering pageListShowForCrowiPlus', err);
|
|
debug('Error on rendering pageListShowForCrowiPlus', err);
|
|
|
});
|
|
});
|
|
|
}
|
|
}
|
|
|
|
|
+ })
|
|
|
|
|
+ .then(function() {
|
|
|
|
|
+ return UserGroupRelation.findAllRelationForUser(req.user);
|
|
|
|
|
+ }).then(function (groupRelations) {
|
|
|
|
|
+ debug('findPage : relatedGroups ', groupRelations);
|
|
|
|
|
+ renderVars.userRelatedGroups = groupRelations.map(relation => relation.relatedGroup);
|
|
|
|
|
+ debug('findPage : groups ', renderVars.userRelatedGroups);
|
|
|
|
|
+
|
|
|
|
|
+ return Promise.resolve();
|
|
|
});
|
|
});
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -406,7 +419,7 @@ module.exports = function(crowi, app) {
|
|
|
function renderPage(pageData, req, res) {
|
|
function renderPage(pageData, req, res) {
|
|
|
// create page
|
|
// create page
|
|
|
if (!pageData) {
|
|
if (!pageData) {
|
|
|
- return res.render('page', {
|
|
|
|
|
|
|
+ return res.render('customlayout-selector/not_found', {
|
|
|
author: {},
|
|
author: {},
|
|
|
page: false,
|
|
page: false,
|
|
|
});
|
|
});
|
|
@@ -548,6 +561,7 @@ module.exports = function(crowi, app) {
|
|
|
var currentRevision = pageForm.currentRevision;
|
|
var currentRevision = pageForm.currentRevision;
|
|
|
var grant = pageForm.grant;
|
|
var grant = pageForm.grant;
|
|
|
var path = pageForm.path;
|
|
var path = pageForm.path;
|
|
|
|
|
+ var grantUserGroupId = pageForm.grantUserGroupId
|
|
|
|
|
|
|
|
// TODO: make it pluggable
|
|
// TODO: make it pluggable
|
|
|
var notify = pageForm.notify || {};
|
|
var notify = pageForm.notify || {};
|
|
@@ -586,11 +600,11 @@ module.exports = function(crowi, app) {
|
|
|
|
|
|
|
|
if (data) {
|
|
if (data) {
|
|
|
previousRevision = data.revision;
|
|
previousRevision = data.revision;
|
|
|
- return Page.updatePage(data, body, req.user, {grant: grant});
|
|
|
|
|
|
|
+ return Page.updatePage(data, body, req.user, { grant: grant, grantUserGroupId: grantUserGroupId});
|
|
|
} else {
|
|
} else {
|
|
|
// new page
|
|
// new page
|
|
|
updateOrCreate = 'create';
|
|
updateOrCreate = 'create';
|
|
|
- return Page.create(path, body, req.user, {grant: grant});
|
|
|
|
|
|
|
+ return Page.create(path, body, req.user, { grant: grant, grantUserGroupId: grantUserGroupId});
|
|
|
}
|
|
}
|
|
|
}).then(function(data) {
|
|
}).then(function(data) {
|
|
|
// data is a saved page data.
|
|
// data is a saved page data.
|
|
@@ -623,80 +637,7 @@ module.exports = function(crowi, app) {
|
|
|
});
|
|
});
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
- // app.get( '/users/:username([^/]+)/bookmarks' , loginRequired(crowi, app) , page.userBookmarkList);
|
|
|
|
|
- actions.userBookmarkList = function(req, res) {
|
|
|
|
|
- var username = req.params.username;
|
|
|
|
|
- var limit = 50;
|
|
|
|
|
- var offset = parseInt(req.query.offset) || 0;
|
|
|
|
|
-
|
|
|
|
|
- var user;
|
|
|
|
|
- var renderVars = {};
|
|
|
|
|
|
|
|
|
|
- var pagerOptions = { offset: offset, limit : limit };
|
|
|
|
|
- var queryOptions = { offset: offset, limit : limit + 1, populatePage: true, requestUser: req.user};
|
|
|
|
|
-
|
|
|
|
|
- User.findUserByUsername(username)
|
|
|
|
|
- .then(function(user) {
|
|
|
|
|
- if (user === null) {
|
|
|
|
|
- throw new Error('The user not found.');
|
|
|
|
|
- }
|
|
|
|
|
- renderVars.pageUser = user;
|
|
|
|
|
-
|
|
|
|
|
- return Bookmark.findByUser(user, queryOptions);
|
|
|
|
|
- }).then(function(bookmarks) {
|
|
|
|
|
-
|
|
|
|
|
- if (bookmarks.length > limit) {
|
|
|
|
|
- bookmarks.pop();
|
|
|
|
|
- }
|
|
|
|
|
- pagerOptions.length = bookmarks.length;
|
|
|
|
|
-
|
|
|
|
|
- renderVars.pager = generatePager(pagerOptions);
|
|
|
|
|
- renderVars.bookmarks = bookmarks;
|
|
|
|
|
-
|
|
|
|
|
- return res.render('user/bookmarks', renderVars);
|
|
|
|
|
- }).catch(function(err) {
|
|
|
|
|
- debug('Error on rendereing bookmark', err);
|
|
|
|
|
- res.redirect('/');
|
|
|
|
|
- });
|
|
|
|
|
- };
|
|
|
|
|
-
|
|
|
|
|
- // app.get( '/users/:username([^/]+)/recent-create' , loginRequired(crowi, app) , page.userRecentCreatedList);
|
|
|
|
|
- actions.userRecentCreatedList = function(req, res) {
|
|
|
|
|
- var username = req.params.username;
|
|
|
|
|
- var limit = 50;
|
|
|
|
|
- var offset = parseInt(req.query.offset) || 0;
|
|
|
|
|
-
|
|
|
|
|
- var user;
|
|
|
|
|
- var renderVars = {};
|
|
|
|
|
-
|
|
|
|
|
- var pagerOptions = { offset: offset, limit : limit };
|
|
|
|
|
- var queryOptions = { offset: offset, limit : limit + 1};
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
- User.findUserByUsername(username)
|
|
|
|
|
- .then(function(user) {
|
|
|
|
|
- if (user === null) {
|
|
|
|
|
- throw new Error('The user not found.');
|
|
|
|
|
- }
|
|
|
|
|
- renderVars.pageUser = user;
|
|
|
|
|
-
|
|
|
|
|
- return Page.findListByCreator(user, queryOptions, req.user);
|
|
|
|
|
- }).then(function(pages) {
|
|
|
|
|
-
|
|
|
|
|
- if (pages.length > limit) {
|
|
|
|
|
- pages.pop();
|
|
|
|
|
- }
|
|
|
|
|
- pagerOptions.length = pages.length;
|
|
|
|
|
-
|
|
|
|
|
- renderVars.pager = generatePager(pagerOptions);
|
|
|
|
|
- renderVars.pages = pages;
|
|
|
|
|
-
|
|
|
|
|
- return res.render('user/recent-create', renderVars);
|
|
|
|
|
- }).catch(function(err) {
|
|
|
|
|
- debug('Error on rendereing recent-created', err);
|
|
|
|
|
- res.redirect('/');
|
|
|
|
|
- });
|
|
|
|
|
- };
|
|
|
|
|
|
|
|
|
|
var api = actions.api = {};
|
|
var api = actions.api = {};
|
|
|
|
|
|
|
@@ -788,6 +729,7 @@ module.exports = function(crowi, app) {
|
|
|
var body = req.body.body || null;
|
|
var body = req.body.body || null;
|
|
|
var pagePath = req.body.path || null;
|
|
var pagePath = req.body.path || null;
|
|
|
var grant = req.body.grant || null;
|
|
var grant = req.body.grant || null;
|
|
|
|
|
+ var grantUserGroupId = req.body.grantUserGroupId || null;
|
|
|
|
|
|
|
|
if (body === null || pagePath === null) {
|
|
if (body === null || pagePath === null) {
|
|
|
return res.json(ApiResponse.error('Parameters body and path are required.'));
|
|
return res.json(ApiResponse.error('Parameters body and path are required.'));
|
|
@@ -800,7 +742,7 @@ module.exports = function(crowi, app) {
|
|
|
throw new Error('Page exists');
|
|
throw new Error('Page exists');
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- return Page.create(pagePath, body, req.user, {grant: grant});
|
|
|
|
|
|
|
+ return Page.create(pagePath, body, req.user, { grant: grant, grantUserGroupId: grantUserGroupId});
|
|
|
}).then(function(data) {
|
|
}).then(function(data) {
|
|
|
if (!data) {
|
|
if (!data) {
|
|
|
throw new Error('Failed to create page.');
|
|
throw new Error('Failed to create page.');
|
|
@@ -835,6 +777,7 @@ module.exports = function(crowi, app) {
|
|
|
var pageId = req.body.page_id || null;
|
|
var pageId = req.body.page_id || null;
|
|
|
var revisionId = req.body.revision_id || null;
|
|
var revisionId = req.body.revision_id || null;
|
|
|
var grant = req.body.grant || null;
|
|
var grant = req.body.grant || null;
|
|
|
|
|
+ var grantUserGroupId = req.body.grantUserGroupId || null;
|
|
|
|
|
|
|
|
if (pageId === null || pageBody === null) {
|
|
if (pageId === null || pageBody === null) {
|
|
|
return res.json(ApiResponse.error('page_id and body are required.'));
|
|
return res.json(ApiResponse.error('page_id and body are required.'));
|
|
@@ -850,6 +793,9 @@ module.exports = function(crowi, app) {
|
|
|
if (grant !== null) {
|
|
if (grant !== null) {
|
|
|
grantOption.grant = grant;
|
|
grantOption.grant = grant;
|
|
|
}
|
|
}
|
|
|
|
|
+ if (grantUserGroupId != null) {
|
|
|
|
|
+ grantOption.grantUserGroupId = grantUserGroupId;
|
|
|
|
|
+ }
|
|
|
return Page.updatePage(pageData, pageBody, req.user, grantOption);
|
|
return Page.updatePage(pageData, pageBody, req.user, grantOption);
|
|
|
}).then(function(pageData) {
|
|
}).then(function(pageData) {
|
|
|
var result = {
|
|
var result = {
|