1: <?php
2:
3:
4:
5:
6: class Tabs4 extends Control{
7: private $activeli = 1;
8: private $disabletabs = array();
9: private $activeblock = 1;
10:
11: public function oncreate($element) {
12: global $Client;
13: if($Client->request($this->name .'li')!="" && $Client->request($this->name .'li')!="null"){
14: $this->activeli = $Client->request($this->name . 'li');
15: }
16: }
17: public function disableTabs($param) {
18: $arr = explode(",",$param);
19: foreach ($arr as $key => $value) {
20: $this->disabletabs[$value] = $value;
21: }
22: }
23: public function onparse($event,$element) {
24: global $ctrl;
25: // $ctrl->debug->println("activeBlock set $event $element->tagName");
26: if($event=="start"){
27: static $countli;
28: if($element->attributes['class']=="nav-link"){
29: $countli += 1;
30: $element->attributes['data-linum'] = $countli;
31: if(isset($this->disabletabs[$countli])){
32: $element->attributes['class'] = $element->getAttribute("class") . " disabled";
33: }
34: else if($this->activeli == $countli){
35: $cls = "";
36: if(isset($element->attributes['class'])){
37: $cls = $element->attributes['class'];
38: }
39: $element->attributes['class'] = $cls . " active " ;
40: $this->activeblock = $countli;
41: }
42: if($this->activeblock == $countli){
43: $this->activeblock = substr($element->attributes['href'],1);
44: }
45: }else if(isset($element->attributes['id']) && $element->attributes['id'] == $this->activeblock){
46: $cls = "";
47: if(isset($element->attributes['class'])){
48: $cls = $element->attributes['class'];
49: }
50: $element->attributes['class'] = $cls . " in active" ;
51: }
52:
53: }
54: }
55: public function onjsrender() {
56: addHeaderJSFunctionCode('ready', 'tab1', ' $(".nav-tabs").on(\'show.bs.tab\', "li.disabled a", function(event) {
57: event.stopImmediatePropagation();
58: return false;
59: });
60: $(".nav-tabs").off(\'show.bs.tab\', "li:not(.disabled) a");
61: $(\'.nav-tabs\').on(\'shown.bs.tab\', "li:not(.disabled) a", function(e){
62: activeTab = $(e.target).data("linum");
63: previousTab = $(e.relatedTarget).data("linum");
64: });');
65: addHeaderJSCode('tab1', ' activeTab = "'.$this->activeli.'"; previousTab = "null";');
66: }
67: public function onrender(){
68: global $ctrl;
69:
70: $this->parseMe();
71: $this->class .= "tabblock";
72: }
73:
74: }
75: