1 <?php
2 3 4 5 6 7 8 9
10
11 12 13 14
15 class TbScrollSpy extends CWidget
16 {
17 18 19
20 public $selector = 'body';
21 22 23
24 public $target;
25 26 27
28 public $offset;
29 30 31
32 public $events = array();
33
34 35 36
37 public function run()
38 {
39 $script = "jQuery('{$this->selector}').attr('data-spy', 'scroll');";
40
41 if (isset($this->target))
42 $script .= "jQuery('{$this->selector}').attr('data-target', '{$this->target}');";
43
44 if (isset($this->offset))
45 $script .= "jQuery('{$this->selector}').attr('data-offset', '{$this->offset}');";
46
47
48 $cs = Yii::app()->getClientScript();
49 $cs->registerScript(__CLASS__.'#'.$this->selector, $script, CClientScript::POS_BEGIN);
50
51 foreach ($this->events as $name => $handler)
52 {
53 $handler = CJavaScript::encode($handler);
54 $cs->registerScript(__CLASS__.'#'.$this->selector.'_'.$name, "jQuery('{$this->selector}').on('{$name}', {$handler});");
55 }
56 }
57 }
58
59