From 913c931cb0c5c2dd9cdd8e37d2ed8264ca52044f Mon Sep 17 00:00:00 2001 From: blair Date: Wed, 22 Feb 2012 11:45:50 -0800 Subject: [PATCH] [mailing list] add paging Summary: The mailing list page in MetaMTA only showed the first 100 sorted by ID, so it made it seem like lists were missing. Changed it to do paging and short by name, so it has some user-understandable order. Test Plan: - Go to /mail/lists/ - Step through pager, confirm ordering. Reviewers: nh, epriestley Reviewed By: epriestley CC: aran, epriestley Differential Revision: https://secure.phabricator.com/D1670 --- ...abricatorMetaMTAMailingListsController.php | 26 ++++++++++++++++--- .../controller/mailinglists/__init__.php | 3 ++- 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/src/applications/metamta/controller/mailinglists/PhabricatorMetaMTAMailingListsController.php b/src/applications/metamta/controller/mailinglists/PhabricatorMetaMTAMailingListsController.php index 86f7e4ea61..858d6fb38b 100644 --- a/src/applications/metamta/controller/mailinglists/PhabricatorMetaMTAMailingListsController.php +++ b/src/applications/metamta/controller/mailinglists/PhabricatorMetaMTAMailingListsController.php @@ -1,7 +1,7 @@ loadAllWhere( - '1 = 1 ORDER BY id DESC LIMIT 100'); + $request = $this->getRequest(); + $user = $request->getUser(); + $offset = $request->getInt('offset', 0); + + $pager = new AphrontPagerView(); + $pager->setPageSize(1000); + $pager->setOffset($offset); + $pager->setURI($request->getRequestURI(), 'offset'); + + $list = new PhabricatorMetaMTAMailingList(); + $conn_r = $list->establishConnection('r'); + $data = queryfx_all( + $conn_r, + 'SELECT * FROM %T + ORDER BY name ASC + LIMIT %d, %d', + $list->getTableName(), + $pager->getOffset(), $pager->getPageSize() + 1); + $data = $pager->sliceResults($data); + + $lists = $list->loadAllFromArray($data); $rows = array(); foreach ($lists as $list) { @@ -59,6 +78,7 @@ class PhabricatorMetaMTAMailingListsController $panel->appendChild($table); $panel->setHeader('Mailing Lists'); $panel->setCreateButton('Add New List', '/mail/lists/edit/'); + $panel->appendChild($pager); return $this->buildStandardPageResponse( $panel, diff --git a/src/applications/metamta/controller/mailinglists/__init__.php b/src/applications/metamta/controller/mailinglists/__init__.php index 119d4a1842..3f67bd6199 100644 --- a/src/applications/metamta/controller/mailinglists/__init__.php +++ b/src/applications/metamta/controller/mailinglists/__init__.php @@ -8,11 +8,12 @@ phutil_require_module('phabricator', 'applications/metamta/controller/base'); phutil_require_module('phabricator', 'applications/metamta/storage/mailinglist'); +phutil_require_module('phabricator', 'storage/queryfx'); +phutil_require_module('phabricator', 'view/control/pager'); phutil_require_module('phabricator', 'view/control/table'); phutil_require_module('phabricator', 'view/layout/panel'); phutil_require_module('phutil', 'markup'); -phutil_require_module('phutil', 'utils'); phutil_require_source('PhabricatorMetaMTAMailingListsController.php');