-
Notifications
You must be signed in to change notification settings - Fork 0
/
ScrollUpPager.php
93 lines (81 loc) · 2.34 KB
/
ScrollUpPager.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
<?php
/**
* Class IasPager
*/
class ScrollUpPager extends CLinkPager
{
/**
* @var
*/
public $listViewId;
/**
* @var string
*/
public $rowSelector = '.row';
/**
* @var string
*/
public $itemsSelector = ' > .items';
/**
* @var string
*/
public $nextSelector = '.next:not(.disabled):not(.hidden) a';
/**
* @var string
*/
public $pagerSelector = '.pager';
/**
* @var array
*/
public $options = array();
/**
* @var array
*/
public $linkOptions = array();
/**
* @var
*/
private $baseUrl;
/**
*
*/
public function init()
{
parent::init();
$cs = Yii::app()->getClientScript();
$cs->registerCoreScript('jquery');
$assets = dirname(__FILE__) . '/assets/js';
$this->baseUrl = Yii::app()->assetManager->publish($assets);
$cs->registerScriptFile($this->baseUrl . '/jquery.iasUp.js', CClientScript::POS_END);
$cs->registerScriptFile($this->baseUrl . '/callbacks.js', CClientScript::POS_END);
return;
}
/**
*
*/
public function run()
{
$js = "var iasUp = $.iasUp(" .
CJavaScript::encode(
CMap::mergeArray($this->options, array(
'container' => '#' . $this->listViewId . '' . $this->itemsSelector,
'scrollContainer' => "#" . $this->listViewId . "",
'item' => $this->rowSelector,
'pagination' => '#' . $this->listViewId . ' ' . $this->pagerSelector,
'next' => '#' . $this->listViewId . ' ' . $this->nextSelector,
))) . ");
";
$cs = Yii::app()->clientScript;
$cs->registerScript(__CLASS__ . $this->id, $js, CClientScript::POS_LOAD);
$buttons = $this->createPageButtons();
echo $this->header; // if any
echo CHtml::tag('ul', $this->htmlOptions, implode("\n", $buttons));
echo $this->footer; // if any
}
protected function createPageButton($label, $page, $class, $hidden, $selected)
{
if ($hidden || $selected)
$class .= ' ' . ($hidden ? 'disabled' : 'active');
return CHtml::tag('li', array('class' => $class), CHtml::link($label, $this->createPageUrl($page), $this->linkOptions));
}
}