-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathArticle.php
150 lines (133 loc) · 3.17 KB
/
Article.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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
<?php
namespace demogorgorn\uikit;
use Yii;
use yii\helpers\ArrayHelper;
use yii\helpers\Html;
/**
* Article renders an article component.
*
* For example,
*
* ```php
* echo Article::widget([
* 'options' => [
* 'class' => 'uk-panel uk-panel-box',
* ],
* 'body' => '<p>Say hello...</p>',
* ]);
* ```
*
* The following example will show the content enclosed between the [[begin()]]
* and [[end()]] calls within the alert box:
*
* ```php
* Article::begin([
* 'title' => 'First Article',
* 'meta' => '09 May 2014',
* 'lead' => 'This is my first article',
* 'options' => ['class' => 'uk-panel uk-panel-box']
* ]);
*
* echo '<p>Say hello...</p>';
*
* Article::end();
* ```
*
* @author Oleg Martemjanov <[email protected]>
* @since 2.0
*
*/
class Article extends Widget
{
/**
* @var string the title of the article.
*/
public $title;
/**
* @var string the meta data of the article.
*/
public $meta;
/**
* @var string the lead of the article.
*/
public $lead;
/**
* @var string the body content in the article component. Note that anything between
* the [[begin()]] and [[end()]] calls of the Article widget will also be treated
* as the body content, and will be rendered before this.
*/
public $body;
/**
* Initializes the widget.
*/
public function init()
{
parent::init();
$this->initOptions();
echo Html::beginTag('article', $this->options) . "\n";
echo $this->renderTitle() . "\n";
echo $this->renderMeta() . "\n";
echo $this->renderLead() . "\n";
}
/**
* Renders the widget.
*/
public function run()
{
echo "\n" . $this->renderBody();
echo "\n" . Html::endTag('article');
$this->registerAsset();
}
/**
* Renders the title of the article.
* @return string the rendering result
*/
protected function renderTitle()
{
if ($this->title !== null) {
return Html::tag('h1', $this->title, ['class' => 'uk-article-title']);
} else {
return null;
}
}
/**
* Renders the meta data.
* @return string the rendering result
*/
protected function renderMeta()
{
if ($this->meta !== null) {
return Html::tag('p', $this->meta, ['class' => 'uk-article-meta']);
} else {
return null;
}
}
/**
* Renders the lead data.
* @return string the rendering result
*/
protected function renderLead()
{
if ($this->lead !== null) {
return Html::tag('p', $this->lead, ['class' => 'uk-article-lead']);
} else {
return null;
}
}
/**
* Renders the article body (if any).
* @return string the rendering result
*/
protected function renderBody()
{
return $this->body . "\n";
}
/**
* Initializes the widget options.
* This method sets the default values for various options.
*/
protected function initOptions()
{
Html::addCssClass($this->options, 'uk-article');
}
}