-
-
Notifications
You must be signed in to change notification settings - Fork 23
/
Bootstrap4Renderer.php
130 lines (109 loc) · 3.78 KB
/
Bootstrap4Renderer.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
<?php declare(strict_types = 1);
namespace Zet\FileUpload\Template\Renderer;
use Nette\Utils\Html;
/**
* Class Bootstrap4Renderer
*
* @author Zechy <email@zechy.cz>
* @package Zet\FileUpload\Template\Renderer
*/
class Bootstrap4Renderer extends BaseRenderer
{
public function init(): void
{
parent::init();
$this->elements["globalProgressValue"] = '';
$this->elements["fileProgressValue"] = '';
}
/**
* Sestavení výchozí šablony uploaderu.
*/
public function buildDefaultTemplate(): Html
{
$customContainer = Html::el("div");
/** @var Html $input */
$input = $this->elements["input"];
$input->setAttribute("style", "display: none");
/** @var Html $input */
$input = $this->elements["input"];
$id = $input->getAttribute("id");
$button = Html::el("button type='button' class='btn btn-primary mb-2'");
$button->setAttribute("onclick", "document.getElementById('$id').click(); return false;");
$button->setText("Nahrát soubor");
$customContainer->addHtml($this->elements["input"]);
$customContainer->addHtml($button);
/** @var Html $globalProgress */
$globalProgress = $this->elements["globalProgress"];
$globalProgress->setAttribute("class", "progress-bar")
->setAttribute("style", "height: 20px");
$progressContainer = Html::el("div class='progress mb-2'");
$progressContainer->addHtml($globalProgress);
$customContainer->addHtml($progressContainer);
/** @var Html $container */
$container = $this->elements["container"];
$container->setName("table");
$container->setAttribute("class", "table");
$thead = Html::el("thead class='thead-inverse'");
$tr = Html::el("tr");
$preview = Html::el("th style='width: 15%;'");
$tr->addHtml($preview);
$filename = Html::el("th")->setText("Soubor");
$tr->addHtml($filename);
$status = Html::el("th style='width: 20%'")->setText("Stav");
$tr->addHtml($status);
$actions = Html::el("th style='width: 50px'");
$tr->addHtml($actions);
$thead->addHtml($tr);
$container->addHtml($thead);
$customContainer->addHtml($container);
return $customContainer;
}
/**
* Sestavení šablony pro vkládání nových souborů.
*/
public function buildFileContainerTemplate(): Html
{
$tr = Html::el("tr");
$preview = Html::el("td class='align-middle'");
/** @var Html $imagePreview */
$imagePreview = $this->elements["imagePreview"];
$preview->addHtml($imagePreview->setAttribute("width", "100%")->setAttribute("class", "rounded"));
/** @var Html $filePreview */
$filePreview = $this->elements["filePreview"];
$preview->addHtml($filePreview->setName("span")->setAttribute("class", "badge badge-pill badge-info"));
$tr->addHtml($preview);
$name = Html::el("td class='align-middle'");
$name->addHtml($this->elements["filename"]);
$tr->addHtml($name);
$progressTd = Html::el("td class='align-middle'");
$progressContainer = Html::el("div class='progress'");
/** @var Html $fileProgress */
$fileProgress = $this->elements["fileProgress"];
$progress = $fileProgress->setAttribute("class", "progress-bar")
->setAttribute("style", "height: 10px");
$progressContainer->addHtml($progress);
$progressTd->addHtml($progressContainer);
$tr->addHtml($progressTd);
$delete = Html::el("td class='align-middle text-center'");
/** @var Html $delEl */
$delEl = $this->elements["delete"];
$delEl->setAttribute("class", "btn btn-outline-danger")
->setHtml("×");
$delete->addHtml($delEl);
$tr->addHtml($delete);
return $tr;
}
/**
* Sestavení šablony pro soubor, u kterého vznikla chyba.
*/
public function buildFileError(): Html
{
$tr = Html::el("tr class='bg-danger text-light'");
/** @var Html $errorMessage */
$errorMessage = $this->elements["errorMessage"];
$tr->addHtml($errorMessage->setName("td")->addAttributes([
"colspan" => 4,
]));
return $tr;
}
}