Skip to content

Commit bb25c53

Browse files
committed
Added pagination to dashboard
1 parent b89b6f2 commit bb25c53

File tree

5 files changed

+56
-14
lines changed

5 files changed

+56
-14
lines changed

CHANGELOG.md

+4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
# Release Notes for Abandoned Cart
22

3+
## 1.1.1 - 2019-03-23
4+
### Added
5+
- Added pagination to the dashboard to handle sites with large amounts of orders
6+
37
## 1.1.0 - 2019-03-19
48
### Added
59
- You can now manually trigger the job that searches for abandoned carts! Useful if you don't have access to cron jobs

composer.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"name": "mediabeastnz/craft-commerce-abandoned-cart",
33
"description": "Abandoned Cart plugin for Craft Commerce 2",
44
"type": "craft-plugin",
5-
"version": "1.1.0",
5+
"version": "1.1.1",
66
"keywords": [
77
"craft",
88
"cms",

src/controllers/BaseController.php

+44-7
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,17 @@
77
namespace mediabeastnz\abandonedcart\controllers;
88

99
use mediabeastnz\abandonedcart\AbandonedCart;
10+
use mediabeastnz\abandonedcart\records\AbandonedCart as CartRecord;
11+
use mediabeastnz\abandonedcart\models\AbandonedCart as CartModel;
12+
1013

1114
use Craft;
1215
use craft\web\Controller;
1316
use craft\helpers\UrlHelper;
1417
use craft\commerce\elements\Order;
18+
use craft\db\Paginator;
19+
use craft\db\Query;
20+
use craft\web\twig\variables\Paginate;
1521

1622
use yii\web\Response;
1723

@@ -37,13 +43,44 @@ public function actionSettings()
3743

3844
public function actionIndex()
3945
{
40-
$carts = AbandonedCart::$plugin->carts->getAbandonedCarts(25);
41-
return $this->renderTemplate('abandoned-cart/index', array(
42-
'carts' => $carts,
43-
'totalCarts' => AbandonedCart::$plugin->carts->getAbandonedCartsTotal(),
44-
'totalRecovered' => AbandonedCart::$plugin->carts->getAbandonedCartsRecovered(),
45-
'conversionRate' => AbandonedCart::$plugin->carts->getAbandondedCartsConversion()
46-
));
46+
$c = new Query();
47+
$c->select('*')->from(['{{%abandonedcart_carts}}'])->orderBy('dateUpdated desc');
48+
$paginator = new Paginator($c, [
49+
'pageSize' => 20,
50+
'currentPage' => \Craft::$app->request->pageNum,
51+
]);
52+
53+
$pageResults = $paginator->getPageResults();
54+
if($pageResults && count($pageResults)) {
55+
$carts = [];
56+
foreach ($pageResults as $pageResult) {
57+
$carts[] = new CartModel($pageResult);
58+
}
59+
60+
$pageOffset = $paginator->getPageOffset();
61+
$page = Paginate::create($paginator);
62+
63+
return $this->renderTemplate('abandoned-cart/index', [
64+
'carts' => $carts,
65+
'pageInfo' => [
66+
'first' => $pageOffset + 1,
67+
'last' => $pageOffset + count($pageResults),
68+
'total' => $paginator->getTotalResults(),
69+
'currentPage' => $paginator->getCurrentPage(),
70+
'totalPages' => $paginator->getTotalPages(),
71+
'prevUrl' => $page->getPrevUrl(),
72+
'nextUrl' => $page->getNextUrl(),
73+
],
74+
'totalRecovered' => AbandonedCart::$plugin->carts->getAbandonedCartsRecovered(),
75+
'conversionRate' => AbandonedCart::$plugin->carts->getAbandondedCartsConversion()
76+
]);
77+
} else {
78+
return $this->renderTemplate('abandoned-cart/index', [
79+
'carts' => false,
80+
'totalRecovered' => AbandonedCart::$plugin->carts->getAbandonedCartsRecovered(),
81+
'conversionRate' => AbandonedCart::$plugin->carts->getAbandondedCartsConversion()
82+
]);
83+
}
4784
}
4885

4986
public function actionFindCarts()

src/models/AbandonedCart.php

-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
namespace mediabeastnz\abandonedcart\models;
88

99
use mediabeastnz\abandonedcart\AbandonedCart as Plugin;
10-
use mediabeastnz\abandonedcart\records\AbandonedCart as CartRecord;
1110

1211
use craft\base\Model;
1312
use craft\validators\HandleValidator;

src/templates/index.twig

+7-5
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@
3030
If a new cart is found it will be marked as scheduled and added to the queue.<br />
3131
Items in the queue will be scheduled as per your settings.
3232
</p>
33-
{% if carts|length %}<p><em>Showing the last {{ carts|length }} out of {{ totalCarts }}</em></p>{% endif %}
3433
</div>
3534
</div>
3635
</div>
@@ -49,8 +48,6 @@
4948

5049
{% if carts | length %}
5150

52-
{% set abandonedCarts = carts %}
53-
5451
<table id="carts" class="data fullwidth collapsible">
5552
<thead>
5653
<th scope="col">{{ "Cart" | t('app') }}</th>
@@ -60,10 +57,11 @@
6057
<th scope="col">{{ "2nd Reminder" | t('app') }}</th>
6158
<th scope="col">{{ "Clicked" | t('app') }}</th>
6259
<th scope="col">{{ "Status" | t('app') }}</th>
60+
<th scope="col">{{ "Updated" | t('app') }}</th>
6361
</thead>
6462
<tbody>
65-
{% for cart in abandonedCarts %}
66-
<tr data-id="{{ cart.id }}" data-name="{{ cart.order[0].reference | t('site') }}">
63+
{% for cart in carts %}
64+
<tr data-id="{{ cart.id }}" data-name="{{ cart.order[0].reference | t('site') }}" style="font-size: 13px;">
6765
<td scope="row" data-title="{{ 'Order' | t('app') }}">
6866
<a class="nav-anchor" href="{{ url('commerce/orders/' ~ cart.order[0].id) }}">{{ "View" | t('app') }}</a>
6967
</td>
@@ -115,10 +113,14 @@
115113

116114
{{ status }}
117115
</td>
116+
<td scope="row" data-title="{{ 'Order' | t('app') }}">
117+
{{cart.dateUpdated.nice}}
118+
</td>
118119
</tr>
119120
{% endfor %}
120121
</tbody>
121122
</table>
123+
{% include "_includes/pagination" %}
122124
{% endif %}
123125

124126
{% endset %}

0 commit comments

Comments
 (0)