Sotaro KARASAWA 10 лет назад
Родитель
Сommit
fe1763461d

+ 4 - 0
lib/models/bookmark.js

@@ -28,6 +28,7 @@ module.exports = function(crowi) {
   };
 
   bookmarkSchema.statics.findByUser = function(user, option) {
+    var User = crowi.model('User');
     var Bookmark = this;
 
     var limit = option.limit || 50;
@@ -38,12 +39,15 @@ module.exports = function(crowi) {
         .find({ user: user._id })
         .sort({createdAt: -1})
         .skip(offset)
+        .populate([{path: 'page'}, {path: 'user', select: User.USER_PUBLIC_FIELDS}])
         .limit(limit)
         .exec(function(err, bookmarks) {
           if (err) {
             return reject(err);
           }
 
+          //Page.populatePageList();
+
           return resolve(bookmarks);
         });
     });

+ 28 - 0
lib/models/page.js

@@ -196,6 +196,34 @@ module.exports = function(crowi) {
     });
   };
 
+  pageSchema.statics.populatePageList = function(pageList) {
+    var Page = self;
+
+    return new Promise(function(resolve, reject) {
+      Page.populate(
+        pageList,
+        [
+          {path: 'creator', model: 'User', select: USER_PUBLIC_FIELDS},
+          {path: 'revision', model: 'Revision'}
+        ],
+        function(err, pageList) {
+          if (err) {
+            return reject(err);
+          }
+
+          Page.populate(pageList, {path: 'revision.author', model: 'User', select: USER_PUBLIC_FIELDS}, function(err, data) {
+            if (err) {
+              return reject(err);
+            }
+
+            resolve(data);
+          });
+        }
+      );
+    });
+  };
+
+
   pageSchema.statics.updateCommentCount = function (page, num)
   {
     var self = this;

+ 26 - 1
lib/routes/page.js

@@ -254,11 +254,36 @@ 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 offset = req.query.offset || 0;
+    var userData;
+    var renderVars = {};
+
+    User.findUserByUsername(username)
+    .then(function(data) {
+      if (data === null) {
+        throw new Error('The user not found.');
+      }
+      renderVars.pageUser = userData = data;
+
+      return Bookmark.findByUser(userData, {offset: offset, limit: 50}).then(function(bookmarkList) {
+        return Page.findListByPageIds(Object.keys(bookmarkList).map(function(e) { return bookmarkList[e].page; }), {});
+      });
+    }).catch(function(err) {
+      debug('Error on rendereing bookmark', err);
+      res.redirect('/');
+    });
+    return res.render('user/bookmarks', {
+      username: username
+    });
   };
 
-  // app.get( '/users/:username([^/]+)/recent-created' , loginRequired(crowi, app) , page.userRecentCreatedList);
+  // app.get( '/users/:username([^/]+)/recent-create' , loginRequired(crowi, app) , page.userRecentCreatedList);
   actions.userRecentCreatedList = function(req, res) {
     var username = req.params.username;
+
+    return res.render('user/recent-create', {
+      username: username
+    });
   };
 
   var api = actions.api = {};

+ 1 - 0
lib/views/user/bookmarks.html

@@ -0,0 +1 @@
+{{ username }}

+ 1 - 0
lib/views/user/recent-create.html

@@ -0,0 +1 @@
+{{ username }}

+ 1 - 1
lib/views/user_page.html

@@ -62,7 +62,7 @@
           {% else %}
             {% include 'widget/page_list.html' with { pages: createdList } %}
             <div class="user-page-list-additional-link">
-              <a href="/user/{{ pageUser.username }}/recent-created"><i class="fa fa-angle-double-right"></i> See created pages</a>
+              <a href="/user/{{ pageUser.username }}/recent-create"><i class="fa fa-angle-double-right"></i> See created pages</a>
             </div>
           {% endif %}
         </div>