2
0
Эх сурвалжийг харах

populate imageAttachment when listing pages

Yuki Takei 7 жил өмнө
parent
commit
9b636ae54c

+ 28 - 14
src/server/models/page.js

@@ -98,12 +98,14 @@ const addSlashOfEnd = (path) => {
  */
  */
 const populateDataToShowRevision = (page, userPublicFields) => {
 const populateDataToShowRevision = (page, userPublicFields) => {
   return page
   return page
-    .populate({ path: 'lastUpdateUser', model: 'User', select: userPublicFields })
-    .populate({ path: 'creator', model: 'User', select: userPublicFields })
-    .populate({ path: 'grantedGroup', model: 'UserGroup' })
-    .populate({ path: 'revision', model: 'Revision', populate: {
-      path: 'author', model: 'User', select: userPublicFields
-    } });
+    .populate([
+      { path: 'lastUpdateUser', model: 'User', select: userPublicFields, populate: { path: 'imageAttachment', select: 'filePathProxied' } },
+      { path: 'creator', model: 'User', select: userPublicFields, populate: { path: 'imageAttachment', select: 'filePathProxied' } },
+      { path: 'grantedGroup', model: 'UserGroup' },
+      { path: 'revision', model: 'Revision', populate: {
+        path: 'author', model: 'User', select: userPublicFields, populate: { path: 'imageAttachment', select: 'filePathProxied' }
+      }}
+    ]);
 };
 };
 
 
 
 
@@ -237,6 +239,15 @@ class PageQueryBuilder {
     return this;
     return this;
   }
   }
 
 
+  populateDataToList(userPublicFields) {
+    this.query = this.query
+      .populate({
+        path: 'lastUpdateUser',
+        select: userPublicFields,
+        populate: { path: 'imageAttachment', select: 'filePathProxied' }
+      });
+  }
+
   populateDataToShowRevision(userPublicFields) {
   populateDataToShowRevision(userPublicFields) {
     this.query = populateDataToShowRevision(this.query, userPublicFields);
     this.query = populateDataToShowRevision(this.query, userPublicFields);
     return this;
     return this;
@@ -715,10 +726,12 @@ module.exports = function(crowi) {
     builder.addConditionToExcludeRedirect();
     builder.addConditionToExcludeRedirect();
     builder.addConditionToPagenate(opt.offset, opt.limit);
     builder.addConditionToPagenate(opt.offset, opt.limit);
 
 
+    // count
     const totalCount = await builder.query.exec('count');
     const totalCount = await builder.query.exec('count');
-    const q = builder.query
-      .populate({ path: 'lastUpdateUser', model: 'User', select: User.USER_PUBLIC_FIELDS });
-    const pages = await q.exec('find');
+
+    // find
+    builder.populateDataToList(User.USER_PUBLIC_FIELDS);
+    const pages = await builder.query.exec('find');
 
 
     const result = { pages, totalCount, offset: opt.offset, limit: opt.limit };
     const result = { pages, totalCount, offset: opt.offset, limit: opt.limit };
     return result;
     return result;
@@ -753,12 +766,13 @@ module.exports = function(crowi) {
     // add grant conditions
     // add grant conditions
     await addConditionToFilteringByViewerForList(builder, user, showAnyoneKnowsLink);
     await addConditionToFilteringByViewerForList(builder, user, showAnyoneKnowsLink);
 
 
-    builder.addConditionToPagenate(opt.offset, opt.limit, sortOpt);
-
+    // count
     const totalCount = await builder.query.exec('count');
     const totalCount = await builder.query.exec('count');
-    const q = builder.query
-      .populate({ path: 'lastUpdateUser', model: 'User', select: User.USER_PUBLIC_FIELDS });
-    const pages = await q.exec('find');
+
+    // find
+    builder.addConditionToPagenate(opt.offset, opt.limit, sortOpt);
+    builder.populateDataToList(User.USER_PUBLIC_FIELDS);
+    const pages = await builder.query.exec('find');
 
 
     const result = { pages, totalCount, offset: opt.offset, limit: opt.limit };
     const result = { pages, totalCount, offset: opt.offset, limit: opt.limit };
     return result;
     return result;

+ 3 - 0
src/server/util/middlewares.js

@@ -89,6 +89,9 @@ exports.swigFilters = function(crowi, app, swig) {
     if (user.image) {
     if (user.image) {
       return user.image;
       return user.image;
     }
     }
+    else if (user.imageAttachment != null) {
+      return user.imageAttachment.filePathProxied;
+    }
     else {
     else {
       return '/images/icons/user.svg';
       return '/images/icons/user.svg';
     }
     }