-
Notifications
You must be signed in to change notification settings - Fork 22
/
CollapseBox.php
113 lines (100 loc) · 2.77 KB
/
CollapseBox.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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
<?php
/**
* Created by solly [25.03.17 17:44]
*/
namespace insolita\wgadminlte;
use yii\bootstrap\ButtonGroup;
use yii\helpers\Html;
/**
* Class CollapseBox
*
* @package insolita\wgadminlte
*/
class CollapseBox extends LteBox
{
/**
* @var string
*/
public $collapsIconClass = "fa-minus";
/**
* @var string
*/
public $expandIconClass = "fa-plus";
/**
* @var boolean $collapseRemember - set cookies for rememer collapse stage*
*/
public $collapseRemember = false;
/**
* @var boolean $collapseDefault - show in collapsed mode inititally
*/
public $collapseDefault = true;
public $collapseButtonTemplate
= <<<HTML
<button class="btn {btnType} btn-xs" data-widget="collapse" id="{uniq}_btn"><i class="fa {iconClass}"></i></button>
HTML;
protected $uniqId;
/**
*
*/
public function init()
{
if (!isset($this->options['id'])) {
$this->uniqId = $this->options['id'] = 'bc_' . $this->getId();
}
if ($this->collapseDefault and !$this->collapseRemember) {
Html::addCssClass($this->options, 'collapsed-box');
}
if($this->collapseRemember){
Html::addCssClass($this->options, 'remember');
}
$this->registerJs();
parent::init();
}
/**
*
*/
public function run()
{
return parent::run();
}
protected function registerJs()
{
if ($this->collapseRemember) {
$view = $this->getView();
JsCookieAsset::register($view);
CollapseBoxAsset::register($view);
}
}
/**
* @return string
*/
protected function prepareBoxTools()
{
$boxTools = '';
$collapseButton = strtr(
$this->collapseButtonTemplate,
[
'{btnType}' => ($this->isTile)?'bg-'.$this->type:'btn-'.$this->type,
'{uniq}' => $this->uniqId,
'{iconClass}' => ($this->collapseDefault && !$this->collapseRemember) ? $this->expandIconClass :
$this->collapsIconClass,
]
);
if (!empty($this->boxTools)) {
if (is_array($this->boxTools)) {
$boxTools[] = $collapseButton;
$boxTools = ButtonGroup::widget(
[
'buttons' => $this->boxTools,
'encodeLabels' => false,
]
);
} else {
$boxTools = $this->boxTools . $collapseButton;
}
} else {
$boxTools = $collapseButton;
}
return Html::tag('div', $boxTools, ['class' => 'box-tools pull-right']);
}
}