-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathBaseListItem.php
131 lines (94 loc) · 2.65 KB
/
BaseListItem.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
<?php
/* Icinga for Kubernetes Web | (c) 2023 Icinga GmbH | AGPLv3 */
namespace Icinga\Module\Kubernetes\Common;
use ipl\Html\BaseHtmlElement;
use ipl\Html\Html;
use ipl\Html\HtmlElement;
/**
* Base class for list items
*/
abstract class BaseListItem extends BaseHtmlElement
{
use ViewMode;
protected array $baseAttributes = ['class' => 'list-item'];
protected $item;
protected BaseItemList $list;
protected $tag = 'li';
/**
* Create a new list item
*
* @param object $item
* @param BaseItemList $list
*/
public function __construct($item, BaseItemList $list)
{
$this->item = $item;
$this->list = $list;
$this->addAttributes($this->baseAttributes);
$this->init();
}
/**
* Initialize the list item
* If you want to adjust the list item after construction, override this method.
*/
protected function init(): void
{
}
protected function assemble(): void
{
$this->add([
$this->createVisual(),
$this->createMain()
]);
}
protected function createVisual(): ?BaseHtmlElement
{
$visual = Html::tag('div', ['class' => 'visual']);
$this->assembleVisual($visual);
return $visual;
}
protected function createMain(): BaseHtmlElement
{
$main = Html::tag('div', ['class' => 'main']);
$this->assembleMain($main);
return $main;
}
protected function assembleVisual(BaseHtmlElement $visual): void
{
}
abstract protected function assembleMain(BaseHtmlElement $main): void;
protected function createCaption(): BaseHtmlElement
{
$caption = Html::tag('section', ['class' => 'caption']);
$this->assembleCaption($caption);
return $caption;
}
protected function assembleCaption(BaseHtmlElement $caption)
{
}
protected function createFooter(): BaseHtmlElement
{
$footer = new HtmlElement('footer');
$this->assembleFooter($footer);
return $footer;
}
protected function assembleFooter(BaseHtmlElement $footer): void
{
}
protected function createHeader(): BaseHtmlElement
{
$header = Html::tag('header');
$this->assembleHeader($header);
return $header;
}
abstract protected function assembleHeader(BaseHtmlElement $header): void;
protected function createTitle(): BaseHtmlElement
{
$title = HTML::tag('div', ['class' => 'title']);
$this->assembleTitle($title);
return $title;
}
protected function assembleTitle(BaseHtmlElement $title): void
{
}
}