1
1
<?php
2
2
namespace Grav \Plugin ;
3
3
4
+ use Composer \Autoload \ClassLoader ;
4
5
use Grav \Common \Page \Collection ;
5
- use Grav \Common \Page \Page ;
6
+ use Grav \Common \Page \Interfaces \ PageInterface ;
6
7
use Grav \Common \Plugin ;
8
+ use Grav \Plugin \Pagination \PaginationHelper ;
9
+ use Grav \Plugin \Pagination \PaginationPage ;
7
10
use RocketTheme \Toolbox \Event \Event ;
11
+ use Twig \TwigFunction ;
8
12
9
13
class PaginationPlugin extends Plugin
10
14
{
@@ -19,10 +23,23 @@ class PaginationPlugin extends Plugin
19
23
public static function getSubscribedEvents ()
20
24
{
21
25
return [
22
- 'onPluginsInitialized ' => ['onPluginsInitialized ' , 0 ]
26
+ 'onPluginsInitialized ' => [
27
+ ['autoload ' , 100001 ],
28
+ ['onPluginsInitialized ' , 0 ]
29
+ ]
23
30
];
24
31
}
25
32
33
+ /**
34
+ * [onPluginsInitialized:100000] Composer autoload.
35
+ *
36
+ * @return ClassLoader
37
+ */
38
+ public function autoload ()
39
+ {
40
+ return require __DIR__ . '/vendor/autoload.php ' ;
41
+ }
42
+
26
43
/**
27
44
* Initialize configuration
28
45
*/
@@ -33,6 +50,9 @@ public function onPluginsInitialized()
33
50
return ;
34
51
}
35
52
53
+ class_alias (PaginationHelper::class, 'Grav \\Plugin \\PaginationHelper ' );
54
+ class_alias (PaginationPage::class, 'Grav \\Plugin \\PaginationPage ' );
55
+
36
56
$ this ->enable ([
37
57
'onTwigTemplatePaths ' => ['onTwigTemplatePaths ' , 0 ],
38
58
'onPageInitialized ' => ['onPageInitialized ' , 0 ],
@@ -53,17 +73,18 @@ public function onTwigTemplatePaths()
53
73
*/
54
74
public function onTwigExtensions ()
55
75
{
56
- require_once (__DIR__ .'/twig/PaginationTwigExtension.php ' );
57
-
58
- $ this ->grav ['twig ' ]->twig ->addExtension (new PaginationTwigExtension ());
76
+ // Add Twig functions
77
+ $ this ->grav ['twig ' ]->twig ()->addFunction (
78
+ new TwigFunction ('paginate ' , [$ this , 'paginateTwigFunction ' ])
79
+ );
59
80
}
60
81
61
82
/**
62
83
* Enable pagination if page has params.pagination = true.
63
84
*/
64
85
public function onPageInitialized ()
65
86
{
66
- /** @var Page $page */
87
+ /** @var PageInterface $page */
67
88
$ page = $ this ->grav ['page ' ];
68
89
69
90
if ($ page && ($ page ->value ('header.content.pagination ' ) || $ page ->value ('header.pagination ' ))) {
@@ -96,7 +117,6 @@ public function onCollectionProcessed(Event $event)
96
117
}
97
118
98
119
if (!empty ($ params ['limit ' ]) && $ collection ->count () > $ params ['limit ' ]) {
99
- require_once __DIR__ . '/classes/paginationhelper.php ' ;
100
120
$ this ->pagination = new PaginationHelper ($ collection );
101
121
$ collection ->setParams (['pagination ' => $ this ->pagination ]);
102
122
}
@@ -119,14 +139,13 @@ public function onTwigSiteVariables()
119
139
* @param int $limit
120
140
* @param array $ignore_param_array url parameters to be ignored in page links
121
141
*/
122
- public function paginateCollection ( $ collection , $ limit , $ ignore_param_array = [])
142
+ public function paginateCollection ($ collection , $ limit , $ ignore_param_array = [])
123
143
{
124
144
$ collection ->setParams (['pagination ' => 'true ' ]);
125
145
$ collection ->setParams (['limit ' => $ limit ]);
126
146
$ collection ->setParams (['ignore_params ' => $ ignore_param_array ]);
127
147
128
148
if ($ collection ->count () > $ limit ) {
129
- require_once __DIR__ . '/classes/paginationhelper.php ' ;
130
149
$ this ->pagination = new PaginationHelper ($ collection );
131
150
$ collection ->setParams (['pagination ' => $ this ->pagination ]);
132
151
@@ -138,4 +157,9 @@ public function paginateCollection( $collection, $limit, $ignore_param_array = [
138
157
}
139
158
}
140
159
}
160
+
161
+ public function paginateTwigFunction ($ collection , $ limit , $ ignore_url_param_array = [])
162
+ {
163
+ $ this ->paginateCollection ($ collection , $ limit , $ ignore_url_param_array );
164
+ }
141
165
}
0 commit comments