|
|
@@ -4,6 +4,7 @@ import { body } from 'express-validator';
|
|
|
import mongoose from 'mongoose';
|
|
|
|
|
|
import loggerFactory from '~/utils/logger';
|
|
|
+import { PageQueryBuilder } from '../models/obsolete-page';
|
|
|
import UpdatePost from '../models/update-post';
|
|
|
import { PageRedirectModel } from '../models/page-redirect';
|
|
|
|
|
|
@@ -283,21 +284,6 @@ module.exports = function(crowi, app) {
|
|
|
renderVars.notFoundTargetPathOrId = pathOrId;
|
|
|
}
|
|
|
|
|
|
- async function addRenderVarsForIdenticalPage(renderVars, pages) {
|
|
|
- const pageIds = pages.map(p => p._id);
|
|
|
-
|
|
|
- const identicalPageDataList = await Promise.all(pages.map(async(page) => {
|
|
|
- page._doc.seenUserCount = (page.seenUsers && page.seenUsers.length) || 0;
|
|
|
- return {
|
|
|
- pageData: page,
|
|
|
- pageMeta: {
|
|
|
- },
|
|
|
- };
|
|
|
- }));
|
|
|
-
|
|
|
- renderVars.identicalPageDataList = identicalPageDataList;
|
|
|
- }
|
|
|
-
|
|
|
function replacePlaceholdersOfTemplate(template, req) {
|
|
|
if (req.user == null) {
|
|
|
return '';
|
|
|
@@ -613,18 +599,21 @@ module.exports = function(crowi, app) {
|
|
|
* redirector
|
|
|
*/
|
|
|
async function redirector(req, res, next, path) {
|
|
|
- const pages = await Page.findByPathAndViewer(path, req.user, null, false, true);
|
|
|
-
|
|
|
const { redirectFrom } = req.query;
|
|
|
|
|
|
- if (pages.length >= 2) {
|
|
|
+ const builder = new PageQueryBuilder(Page.find({ path }));
|
|
|
+ await Page.addConditionToFilteringByViewerForList(builder, req.user);
|
|
|
|
|
|
- const renderVars = {};
|
|
|
+ const pages = await builder.query.lean().clone().exec('find');
|
|
|
+
|
|
|
+ if (pages.length >= 2) {
|
|
|
|
|
|
- await addRenderVarsForIdenticalPage(renderVars, pages);
|
|
|
+ // populate to list
|
|
|
+ builder.populateDataToList(User.USER_FIELDS_EXCEPT_CONFIDENTIAL);
|
|
|
+ const identicalPathPages = await builder.query.lean().exec('find');
|
|
|
|
|
|
return res.render('layout-growi/identical-path-page', {
|
|
|
- ...renderVars,
|
|
|
+ identicalPathPages,
|
|
|
redirectFrom,
|
|
|
path,
|
|
|
});
|