HCE Project DC service web UI  0.2
Hierarchical Cluster Engine DC service web UI
 All Classes Namespaces Files Functions Variables Pages
TbTabView.php
Go to the documentation of this file.
1 <?php
10 Yii::import('booster.widgets.TbTabs');
11 
19 class TbTabView extends TbTabs
20 {
21 
27  public $viewData;
28 
40  protected function normalizeTabs($tabs, &$panes, &$i = 0)
41  {
42  $id = $this->getId();
43  $items = array();
44 
45  //---------------- new -------------------
46  //Check if has an active item
47  $hasActiveItem = false;
48  foreach ($tabs as $tab) {
49  $hasActiveItem = isset($tab['active']) ? $tab['active'] : false;
50  if ($hasActiveItem) {
51  break;
52  }
53  }
54  //---------------- end new -------------------
55 
56  foreach ($tabs as $tab) {
57  $item = $tab;
58 
59  if (isset($item['visible']) && $item['visible'] === false) {
60  continue;
61  }
62 
63  //---------------- new -------------------
64  //check first active
65  if (!$hasActiveItem && $i == 0) {
66  $item['active'] = true;
67  }
68 
69  //title -> label
70  if (isset($item['title'])) {
71  if (!isset($item['label'])) {
72  $item['label'] = $item['title'];
73  }
74  unset($item['title']);
75  }
76  //------ end new ----------------
77 
78  if (!isset($item['itemOptions'])) {
79  $item['itemOptions'] = array();
80  }
81 
82  $item['linkOptions']['data-toggle'] = 'tab';
83 
84  if (isset($tab['items'])) {
85  $item['items'] = $this->normalizeTabs($item['items'], $panes, $i);
86  } else {
87  if (!isset($item['id'])) {
88  $item['id'] = $id . '_tab_' . ($i + 1);
89  }
90 
91  $item['url'] = '#' . $item['id'];
92 
93  //if (!isset($item['content'])) removed
94  // $item['content'] = '';
95 
96  //--------------- new ---------------
97  if (!isset($item['content'])) {
98  if (isset($item['view'])) {
99  if (isset($item['data'])) {
100  if (is_array($this->viewData)) {
101  $data = array_merge($this->viewData, $item['data']);
102  } else {
103  $data = $item['data'];
104  }
105 
106  unset($item['data']);
107  } else {
109  }
110 
111  $item['content'] = $this->getController()->renderPartial($item['view'], $data, true);
112 
113  unset($item['view']);
114  } else {
115  $item['content'] = '';
116  }
117  }
118  //--------------- end new ---------------
119 
120  $content = $item['content'];
121  unset($item['content']);
122 
123  if (!isset($item['paneOptions'])) {
124  $item['paneOptions'] = array();
125  }
126 
127  $paneOptions = $item['paneOptions'];
128  unset($item['paneOptions']);
129 
130  $paneOptions['id'] = $item['id'];
131 
132  $classes = array('tab-pane fade');
133 
134  if (isset($item['active']) && $item['active']) {
135  $classes[] = 'active in';
136  }
137 
138  $classes = implode(' ', $classes);
139  if (isset($paneOptions['class'])) {
140  $paneOptions['class'] .= ' ' . $classes;
141  } else {
142  $paneOptions['class'] = $classes;
143  }
144 
145  $panes[] = CHtml::tag('div', $paneOptions, $content);
146 
147  $i++; // increment the tab-index
148  }
149 
150  $items[] = $item;
151  }
152 
153  return $items;
154  }
155 
156 }