Skip to content

Commit 188dc71

Browse files
authored
Merge pull request #68 from gemini1389/master
New settings and Advanced example for ListView
2 parents e9e8ce9 + a19f973 commit 188dc71

File tree

2 files changed

+72
-10
lines changed

2 files changed

+72
-10
lines changed

README.md

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,44 @@ echo ListView::widget([
5555
]);
5656
```
5757

58+
### ListView (Advanced example)
59+
60+
Here you can see how you can use variable `{{ias}}` for events. In this example are added the new settings `linkPager`, `linkPagerOptions` and `linkPagerWrapperTemplate`.
61+
```php
62+
echo ListView::widget([
63+
'options' => ['class' => 'list-view'],
64+
'dataProvider' => $listDataProvider,
65+
'itemOptions' => ['tag' => false],
66+
'itemView' => '_list_item',
67+
'summary' => '',
68+
'layout' => '{items}{pager}',
69+
'pager' => [
70+
'class' => \kop\y2sp\ScrollPager::className(),
71+
'item' => 'article',
72+
'next' => '.next a',
73+
'paginationSelector' => '.list-view .pagination',
74+
'triggerText' => Yii::t('app', 'Show more'),
75+
'triggerTemplate' => '<span class="reveal-btn">{text}</span>',
76+
'noneLeftText' => '',
77+
'noneLeftTemplate' => '',
78+
'spinnerSrc' => '',
79+
'spinnerTemplate' => '',
80+
'linkPager' => [
81+
'prevPageCssClass' => 'btn-link prev',
82+
'nextPageCssClass' => 'btn-link next',
83+
'prevPageLabel' => '<span class="prev-page">prev</span>',
84+
'nextPageLabel' => '<span class="next-page">next</span>',
85+
],
86+
'linkPagerOptions' => [
87+
'class' => 'pagination',
88+
],
89+
'linkPagerWrapperTemplate' => '<div class="button-news-more"><div class="wrapper"><div class="paging">{pager}</div></div></div>',
90+
'eventOnPageChange' => 'function() {{{ias}}.hidePagination();}',
91+
'eventOnReady' => 'function() {{{ias}}.restorePagination();}',
92+
],
93+
]);
94+
```
95+
5896
### GridView
5997

6098
```php

ScrollPager.php

Lines changed: 34 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -232,6 +232,17 @@ class ScrollPager extends Widget
232232
*/
233233
public $pagination;
234234

235+
/**
236+
* @var array The options for yii\widgets\LinkPager.
237+
*/
238+
public $linkPager = [];
239+
public $linkPagerOptions;
240+
241+
/**
242+
* @var $linkPagerWrapper string Wrapper template for pagination.
243+
*/
244+
public $linkPagerWrapperTemplate = '{pager}';
245+
235246
/**
236247
* Initializes the pager.
237248
*/
@@ -262,6 +273,14 @@ public function init()
262273
if ($this->noneLeftText === null) {
263274
$this->noneLeftText = Yii::t('kop\y2sp', 'You reached the end');
264275
}
276+
277+
// Set default class for pagination
278+
if ($this->linkPagerOptions === null) {
279+
$this->linkPagerOptions = ['class' => 'pagination hidden'];
280+
}
281+
elseif (!isset($this->linkPagerOptions['class'])) {
282+
$this->linkPagerOptions['class'] = 'pagination hidden';
283+
}
265284
}
266285

267286
/**
@@ -286,7 +305,7 @@ public function run()
286305
$initString = empty($this->overflowContainer)
287306
? "var {$this->id}_ias = jQuery.ias({$pluginSettings});"
288307
: "var {$this->id}_ias = jQuery('{$this->overflowContainer}').ias({$pluginSettings});";
289-
$this->view->registerJs($initString, View::POS_READY, "{$this->id}_ias_main");
308+
$this->view->registerJs($initString, View::POS_READY, "{$this->id}_ias_main");
290309

291310
// Register IAS extensions
292311
$this->registerExtensions([
@@ -338,17 +357,19 @@ public function run()
338357
'next' => [],
339358
'ready' => [],
340359
'pageChange' => [
341-
self::EXTENSION_PAGING
360+
self::EXTENSION_PAGING,
342361
]
343362
]);
344363

345-
// Render pagination links
346-
echo LinkPager::widget([
347-
'pagination' => $this->pagination,
348-
'options' => [
349-
'class' => 'pagination hidden'
350-
]
351-
]);
364+
// Render pagination links with wrapper
365+
echo str_replace(
366+
'{pager}',
367+
LinkPager::widget([
368+
'pagination' => $this->pagination,
369+
'options' => $this->linkPagerOptions,
370+
] + $this->linkPager),
371+
$this->linkPagerWrapperTemplate
372+
);
352373
}
353374

354375
/**
@@ -423,9 +444,12 @@ protected function registerEventHandlers(array $config)
423444
);
424445
}
425446

447+
// Replace the variable template
448+
$callback = str_replace('{{ias}}', "{$this->id}_ias", $this->$eventName);
449+
426450
// Register event
427451
$this->view->registerJs(
428-
"{$this->id}_ias.on('{$name}', {$this->$eventName});",
452+
"{$this->id}_ias.on('{$name}', {$callback});",
429453
View::POS_READY,
430454
"{$this->id}_ias_event_{$eventName}"
431455
);

0 commit comments

Comments
 (0)