-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathPanel.php
76 lines (62 loc) · 2.46 KB
/
Panel.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
<?php
/**
* @copyright (C) FIT-Media.com (fit-media.com), {@link http://tanitacms.net}
* Date: 27.02.15, Time: 18:48
*
* @author Dmitrij "m00nk" Sheremetjev <[email protected]>
* @package
*/
namespace m00nk\b3w;
use yii\helpers\Html;
use yii\base\Widget;
/**
* Панель из bootstrap3.
*
* Пример использования:
*
* ```php
* echo Panel::widget([
* 'title' => 'Заголовок панели',
* 'content' => 'Содержимое панели',
*
* 'type' => 'success',
* 'headerButtons' => [
* 'items' => [
* ['label' => 'Создать', 'url' => ['create'] ]
* ]
* ]
* ]);
* ```
*
* @package m00nk\b3w
*/
class Panel extends Widget
{
/** @var bool|string Заголовок панели или FALSE если не нужен */
public $title = false;
/** @var string Содержимое панели */
public $content = '';
/** @var bool|string Подвал панели или FALSE если не нужен */
public $footer = false;
/** @var bool|string Таблица в панели или FALSE если нет */
public $table = false;
/** @var string тип панели. Варианты: 'default', 'primary', 'success', 'info', 'warning', 'danger' */
public $type = 'default';
/** @var array группа кнопок в заголовке панели. Формат: массив параметров для виджета \m00nk\b3w\ButtonGroup */
public $headerButtons = false;
/** @var array группа кнопок в подвале панели. Формат: массив параметров для виджета \m00nk\b3w\ButtonGroup */
public $footerButtons = false;
public function run()
{
$view = $this->getView();
B3wAsset::register($view);
if(empty($this->content)) return '';
$_hb = $this->headerButtons !== false ? ButtonGroup::widget($this->headerButtons) : '';
$_fb = $this->footerButtons !== false ? ButtonGroup::widget($this->footerButtons) : '';
$header = $this->title!==false ? Html::tag('div', $this->title.$_hb , ['class' => 'panel-heading']) : '';
$footer = $this->footer!==false ? Html::tag('div', $this->footer.$_fb, ['class' => 'panel-footer']) : '';
$this->content = Html::tag('div', $this->content, ['class' => 'panel-body']);
$table = $this->table!==false ? $this->table : '';
return Html::tag('div', $header.$this->content.$table.$footer, ['class' => 'panel panel-'.$this->type, 'id' => $this->id]);
}
}