Просмотр исходного кода

Merge pull request #183 from crowi/fix-admin-users-list

Fix: admin users list
Sotaro KARASAWA 9 лет назад
Родитель
Сommit
05f8f2f5ee
5 измененных файлов с 69 добавлено и 56 удалено
  1. 2 2
      lib/models/user.js
  2. 32 34
      lib/routes/admin.js
  3. 2 0
      lib/util/search.js
  4. 1 20
      lib/views/admin/users.html
  5. 32 0
      lib/views/widget/pager.html

+ 2 - 2
lib/models/user.js

@@ -375,13 +375,13 @@ module.exports = function(crowi) {
   userSchema.statics.findUsersWithPagination = function(options, callback) {
   userSchema.statics.findUsersWithPagination = function(options, callback) {
     var sort = options.sort || {status: 1, username: 1, createdAt: 1};
     var sort = options.sort || {status: 1, username: 1, createdAt: 1};
 
 
-    this.paginate({}, { page: options.page || 1, limit: PAGE_ITEMS }, function(err, paginatedResults, pageCount, itemCount) {
+    this.paginate({}, { page: options.page || 1, limit: options.limit || PAGE_ITEMS }, function(err, result) {
       if (err) {
       if (err) {
         debug('Error on pagination:', err);
         debug('Error on pagination:', err);
         return callback(err, null);
         return callback(err, null);
       }
       }
 
 
-      return callback(err, paginatedResults, pageCount, itemCount);
+      return callback(err, result);
     }, { sortBy : sort });
     }, { sortBy : sort });
   };
   };
 
 

+ 32 - 34
lib/routes/admin.js

@@ -11,33 +11,36 @@ module.exports = function(crowi, app) {
     , MAX_PAGE_LIST = 5
     , MAX_PAGE_LIST = 5
     , actions = {};
     , actions = {};
 
 
-  function createPager(currentPage, pageCount, itemCount, maxPageList) {
-    var pager = {};
-    pager.currentPage = currentPage;
-    pager.pageCount = pageCount;
-    pager.itemCount = itemCount;
-
-    pager.previous = null;
-    if (currentPage > 1) {
-      pager.previous = currentPage - 1;
+  function createPager(total, limit, page, pagesCount, maxPageList) {
+    const pager = {
+      page: page,
+      pagesCount: pagesCount,
+      pages: [],
+      total: total,
+      previous: null,
+      previousDots: false,
+      next: null,
+      nextDots: false,
+    };
+
+    if (page > 1) {
+      pager.previous = page - 1;
     }
     }
 
 
-    pager.next = null;
-    if (currentPage < pageCount) {
-      pager.next = currentPage + 1;
+    if (page < pagesCount) {
+      pager.next = page + 1;
     }
     }
 
 
-    pager.pages = [];
-    var pagerMin = Math.max(1, Math.ceil(currentPage - maxPageList/2));
-    var pagerMax = Math.min(pageCount, Math.floor(currentPage + maxPageList/2));
-    if (pagerMin == 1) {
-      if (MAX_PAGE_LIST < pageCount) {
+    let pagerMin = Math.max(1, Math.ceil(page - maxPageList/2));
+    let pagerMax = Math.min(pagesCount, Math.floor(page + maxPageList/2));
+    if (pagerMin === 1) {
+      if (MAX_PAGE_LIST < pagesCount) {
         pagerMax = MAX_PAGE_LIST;
         pagerMax = MAX_PAGE_LIST;
       } else {
       } else {
-        pagerMax = pageCount;
+        pagerMax = pagesCount;
       }
       }
     }
     }
-    if (pagerMax == pageCount) {
+    if (pagerMax === pagesCount) {
       if ((pagerMax - MAX_PAGE_LIST) < 1) {
       if ((pagerMax - MAX_PAGE_LIST) < 1) {
         pagerMin = 1;
         pagerMin = 1;
       } else {
       } else {
@@ -51,13 +54,11 @@ module.exports = function(crowi, app) {
     }
     }
 
 
     pager.nextDots = null;
     pager.nextDots = null;
-    if (pagerMax < pageCount) {
+    if (pagerMax < pagesCount) {
       pager.nextDots = true;
       pager.nextDots = true;
     }
     }
 
 
-    for (var i = pagerMin;
-      i <= pagerMax;
-      i++) {
+    for (let i = pagerMin; i <= pagerMax; i++) {
       pager.pages.push(i);
       pager.pages.push(i);
     }
     }
 
 
@@ -208,19 +209,15 @@ module.exports = function(crowi, app) {
           if (!data.errors) {
           if (!data.errors) {
             debug('Data is successfully indexed.');
             debug('Data is successfully indexed.');
           } else {
           } else {
-            debug('Data index error.', data);
+            debug('Data index error.', data.errors);
           }
           }
-
-          //return res.json(ApiResponse.success({}));
-          req.flash('successMessage', 'Successfully re-build index.');
-          return res.redirect('/admin/search');
         })
         })
         .catch(function(err) {
         .catch(function(err) {
           debug('Error', err);
           debug('Error', err);
-          req.flash('errorMessage', 'Error');
-          return res.redirect('/admin/search');
-          //return res.json(ApiResponse.error(err));
         });
         });
+
+      req.flash('successMessage', 'Now re-building index ... this takes a while.');
+      return res.redirect('/admin/search');
     });
     });
   };
   };
 
 
@@ -228,10 +225,11 @@ module.exports = function(crowi, app) {
   actions.user.index = function(req, res) {
   actions.user.index = function(req, res) {
     var page = parseInt(req.query.page) || 1;
     var page = parseInt(req.query.page) || 1;
 
 
-    User.findUsersWithPagination({page: page}, function(err, users, pageCount, itemCount) {
-      var pager = createPager(page, pageCount, itemCount, MAX_PAGE_LIST);
+    User.findUsersWithPagination({page: page}, function(err, result) {
+      const pager = createPager(result.total, result.limit, result.page, result.pages, MAX_PAGE_LIST);
+
       return res.render('admin/users', {
       return res.render('admin/users', {
-        users: users,
+        users: result.docs,
         pager: pager
         pager: pager
       });
       });
     });
     });

+ 2 - 0
lib/util/search.js

@@ -211,6 +211,8 @@ SearchClient.prototype.addAllPages = function()
   var cursor = Page.getStreamOfFindAll();
   var cursor = Page.getStreamOfFindAll();
   var body = [];
   var body = [];
 
 
+  var counter = 0;
+
   return new Promise(function(resolve, reject) {
   return new Promise(function(resolve, reject) {
     cursor.on('data', function (doc) {
     cursor.on('data', function (doc) {
       if (!doc.creator || !doc.revision || !self.shouldIndexed(doc)) {
       if (!doc.creator || !doc.revision || !self.shouldIndexed(doc)) {

+ 1 - 20
lib/views/admin/users.html

@@ -256,26 +256,7 @@
         </tbody>
         </tbody>
       </table>
       </table>
 
 
-      <ul class="pagination">
-
-        <li {% if pager.currentPage == 1 %}class="disabled"{% endif %}>
-          <a href="/admin/users?page={{ pager.previous|default(1) }}">&laquo;</a>
-        </li>
-        {% if pager.previousDots %}
-        <li><a href="#">...</a></li>
-        {% endif  %}
-        {% for page in pager.pages %}
-        <li {% if pager.currentPage == page %}class="active"{% endif %}>
-          <a href="/admin/users?page={{ page }}">{{ page }}</a>
-        </li>
-        {% endfor %}
-        {% if pager.nextDots %}
-        <li><a href="#">...</a></li>
-        {% endif  %}
-        <li {% if pager.currentPage == pager.pageCount %}class="disabled"{% endif %}>
-          <a href="/admin/users?page={{ pager.next|default(pager.pageCount) }}">&raquo;</a>
-        </li>
-      </ul>
+      {% include '../widget/pager.html' with {path: "/admin/users", pager: pager} %}
 
 
     </div>
     </div>
   </div>
   </div>

+ 32 - 0
lib/views/widget/pager.html

@@ -0,0 +1,32 @@
+<ul class="pagination">
+
+  <li {% if pager.page == 1 %}class="disabled"{% endif %}>
+    <a href="{{ path }}?page={{ pager.previous|default(1) }}">&laquo;</a>
+  </li>
+  {% if pager.previousDots %}
+    {% if pager.page !== 1 %}
+    <li>
+      <a href="{{ path }}?page=1">1</a>
+    </li>
+    {% endif %}
+  <li><a href="#">...</a></li>
+  {% endif  %}
+
+  {% for page in pager.pages %}
+  <li {% if pager.page == page %}class="active"{% endif %}>
+    <a href="{{ path }}?page={{ page }}">{{ page }}</a>
+  </li>
+  {% endfor %}
+
+  {% if pager.nextDots %}
+  <li><a href="#">...</a></li>
+    {% if pager.page !== pager.pagesCount %}
+    <li>
+      <a href="{{ path }}?page={{ pager.pagesCount }}">{{ pager.pagesCount }}</a>
+    </li>
+    {% endif %}
+  {% endif  %}
+  <li {% if pager.page == pager.pagesCount %}class="disabled"{% endif %}>
+    <a href="{{ path }}?page={{ pager.next|default(pager.pagesCount) }}">&raquo;</a>
+  </li>
+</ul>