/
Dialog.php
88 lines (76 loc) · 1.86 KB
/
Dialog.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
<?php
namespace xj\weui;
use yii\base\InvalidConfigException;
use yii\di\Instance;
use yii\helpers\ArrayHelper;
/**
*
* @author xjflyttp <xjflyttp@gmail.com>
* @see https://github.com/weui/weui/wiki/Dialog
*/
class Dialog extends Widget
{
const TYPE_ALERT = 'weui_dialog_alert';
const TYPE_CONFIRM = 'weui_dialog_confirm';
/**
* @var string
*/
public $type;
/**
* @var bool
*/
public $encodeTitle = true;
/**
* @var string
*/
public $title;
/**
* @var bool
*/
public $encodeContent = true;
/**
* @var string
*/
public $content;
/**
* @var Button[]
*/
public $buttons = [];
public function init()
{
parent::init();
if (null === $this->type) {
throw new InvalidConfigException('type must be set');
}
Html::addCssClass($this->options, [$this->type]);
}
public function run()
{
$title = $this->encodeTitle ? Html::encode($this->title) : $this->title;
$content = $this->encodeContent ? Html::encode($this->content) : $this->content;
$buttons = $this->getButtonsHtml();
$content = <<<EOF
<div class="weui_mask"></div>
<div class="weui_dialog">
<div class="weui_dialog_hd">
<strong class="weui_dialog_title">{$title}</strong>
</div>
<div class="weui_dialog_bd">{$content}</div>
<div class="weui_dialog_ft">
{$buttons}
</div>
</div>
EOF;
return Html::tag('div', $content, $this->options);
}
protected function getButtonsHtml()
{
$buttons = '';
foreach ($this->buttons as $button) {
/* @var $button array */
Html::addCssClass($button, [Button::BTN_DIALOG]);
$buttons .= Button::widget($button);
}
return $buttons;
}
}