1 <?php
2 3 4 5 6 7 8 9
10
11 Yii::import('bootstrap.widgets.TbButton');
12
13 14 15 16
17 class TbButtonGroup extends CWidget
18 {
19
20 const TOGGLE_CHECKBOX = 'checkbox';
21 const TOGGLE_RADIO = 'radio';
22
23 24 25 26
27 public $buttonType = TbButton::BUTTON_LINK;
28 29 30 31
32 public $type;
33 34 35 36
37 public $size;
38 39 40
41 public $encodeLabel = true;
42 43 44
45 public $htmlOptions = array();
46 47 48
49 public $buttons = array();
50 51 52
53 public $toggle;
54 55 56
57 public $stacked = false;
58 59 60
61 public $dropup = false;
62
63 64 65
66 public function init()
67 {
68 $classes = array('btn-group');
69
70 if ($this->stacked === true)
71 $classes[] = 'btn-group-vertical';
72
73 if ($this->dropup === true)
74 $classes[] = 'dropup';
75
76 if (!empty($classes))
77 {
78 $classes = implode(' ', $classes);
79 if (isset($this->htmlOptions['class']))
80 $this->htmlOptions['class'] .= ' '.$classes;
81 else
82 $this->htmlOptions['class'] = $classes;
83 }
84
85 $validToggles = array(self::TOGGLE_CHECKBOX, self::TOGGLE_RADIO);
86
87 if (isset($this->toggle) && in_array($this->toggle, $validToggles))
88 $this->htmlOptions['data-toggle'] = 'buttons-'.$this->toggle;
89 }
90
91 92 93
94 public function run()
95 {
96 echo CHtml::openTag('div', $this->htmlOptions);
97
98 foreach ($this->buttons as $button)
99 {
100 if (isset($button['visible']) && $button['visible'] === false)
101 continue;
102
103 $this->controller->widget('bootstrap.widgets.TbButton', array(
104 'buttonType'=>isset($button['buttonType']) ? $button['buttonType'] : $this->buttonType,
105 'type'=>isset($button['type']) ? $button['type'] : $this->type,
106 'size'=>$this->size,
107 'icon'=>isset($button['icon']) ? $button['icon'] : null,
108 'label'=>isset($button['label']) ? $button['label'] : null,
109 'url'=>isset($button['url']) ? $button['url'] : null,
110 'active'=>isset($button['active']) ? $button['active'] : false,
111 'items'=>isset($button['items']) ? $button['items'] : array(),
112 'ajaxOptions'=>isset($button['ajaxOptions']) ? $button['ajaxOptions'] : array(),
113 'htmlOptions'=>isset($button['htmlOptions']) ? $button['htmlOptions'] : array(),
114 'encodeLabel'=>isset($button['encodeLabel']) ? $button['encodeLabel'] : $this->encodeLabel,
115 ));
116 }
117
118 echo '</div>';
119 }
120 }
121