Code Coverage |
||||||||||
Lines |
Functions and Methods |
Classes and Traits |
||||||||
Total | |
0.00% |
0 / 54 |
|
0.00% |
0 / 1 |
CRAP | |
0.00% |
0 / 1 |
OlzResultsParams | n/a |
0 / 0 |
n/a |
0 / 0 |
0 | n/a |
0 / 0 |
|||
OlzResults | |
0.00% |
0 / 54 |
|
0.00% |
0 / 1 |
110 | |
0.00% |
0 / 1 |
getHtml | |
0.00% |
0 / 54 |
|
0.00% |
0 / 1 |
110 |
1 | <?php |
2 | |
3 | namespace Olz\Apps\Results\Components\OlzResults; |
4 | |
5 | use Olz\Apps\Results\Metadata; |
6 | use Olz\Components\Apps\OlzNoAppAccess\OlzNoAppAccess; |
7 | use Olz\Components\Common\OlzComponent; |
8 | use Olz\Components\Page\OlzFooter\OlzFooter; |
9 | use Olz\Components\Page\OlzHeader\OlzHeader; |
10 | use Olz\Utils\HttpParams; |
11 | |
12 | /** @extends HttpParams<array{file?: ?string}> */ |
13 | class OlzResultsParams extends HttpParams { |
14 | } |
15 | |
16 | /** @extends OlzComponent<array<string, mixed>> */ |
17 | class OlzResults extends OlzComponent { |
18 | public function getHtml(mixed $args): string { |
19 | $this->httpUtils()->validateGetParams(OlzResultsParams::class); |
20 | |
21 | $code_href = $this->envUtils()->getCodeHref(); |
22 | $data_path = $this->envUtils()->getDataPath(); |
23 | $filename = $this->getParams()['file'] ?? null; |
24 | $metadata = new Metadata(); |
25 | |
26 | $out = OlzHeader::render([ |
27 | 'back_link' => "{$code_href}service/", |
28 | 'title' => "Resultate", |
29 | 'norobots' => true, |
30 | ]); |
31 | |
32 | $out .= "<div class='content-full'>"; |
33 | if ($filename !== null) { |
34 | if (is_file("{$data_path}results/{$filename}")) { |
35 | $edit_admin = ''; |
36 | if ($this->authUtils()->hasPermission('any')) { |
37 | $enc_data = json_encode(['file' => $filename]); |
38 | $edit_admin = <<<ZZZZZZZZZZ |
39 | <button |
40 | id='live-results-button' |
41 | class='btn btn-secondary' |
42 | onclick='return olzResults.initOlzLiveResultsModal({$enc_data})' |
43 | > |
44 | <img src='{$code_href}assets/icns/edit_white_16.svg' class='noborder' /> |
45 | Live Resultate überschreiben |
46 | </button> |
47 | <button |
48 | id='edit-result-button' |
49 | class='btn btn-secondary' |
50 | onclick='return olzResults.initOlzEditResultModal({$enc_data})' |
51 | > |
52 | <img src='{$code_href}assets/icns/edit_white_16.svg' class='noborder' /> |
53 | Resultate bearbeiten |
54 | </button> |
55 | ZZZZZZZZZZ; |
56 | } |
57 | $out .= <<<ZZZZZZZZZZ |
58 | {$edit_admin} |
59 | <div id='title-box'> |
60 | <div id='backbutton' onclick='olzResults.popHash()'><</div> |
61 | <h1 id='title'></h1> |
62 | </div> |
63 | <div id='results-content'> |
64 | <div id='classes-box'></div> |
65 | <div id='content-box'></div> |
66 | <div class='inactive' id='grafik-box'><svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' style='width:100%; height:100%;' id='grafik-svg'></svg></div> |
67 | </div> |
68 | ZZZZZZZZZZ; |
69 | } elseif ($this->authUtils()->hasPermission('any')) { |
70 | $enc_data = json_encode(['file' => $filename]); |
71 | $out .= <<<ZZZZZZZZZZ |
72 | <div> |
73 | <button |
74 | id='live-results-button' |
75 | class='btn btn-secondary' |
76 | onclick='return olzResults.initOlzLiveResultsModal({$enc_data})' |
77 | > |
78 | <img src='{$code_href}assets/icns/new_white_16.svg' class='noborder' /> |
79 | Live Resultate hochladen |
80 | </button> |
81 | <button |
82 | id='create-result-button' |
83 | class='btn btn-secondary' |
84 | onclick='return olzResults.initOlzEditResultModal({$enc_data})' |
85 | > |
86 | <img src='{$code_href}assets/icns/new_white_16.svg' class='noborder' /> |
87 | Resultate hochladen |
88 | </button> |
89 | </div> |
90 | ZZZZZZZZZZ; |
91 | } else { |
92 | $out .= OlzNoAppAccess::render([ |
93 | 'app' => $metadata, |
94 | ]); |
95 | } |
96 | } else { |
97 | $out .= "<ul>"; |
98 | $contents = scandir("{$data_path}results") ?: []; |
99 | foreach ($contents as $entry) { |
100 | if (preg_match('/\.xml$/', $entry) && !preg_match('/\.bak\./', $entry)) { |
101 | $out .= "<li><a href='?file={$entry}'>{$entry}</a></li>\n"; |
102 | } |
103 | } |
104 | $out .= "</ul>"; |
105 | if ($this->authUtils()->hasPermission('any')) { |
106 | $out .= <<<ZZZZZZZZZZ |
107 | <div> |
108 | <button |
109 | id='live-results-button' |
110 | class='btn btn-secondary' |
111 | onclick='return olzResults.initOlzLiveResultsModal()' |
112 | > |
113 | <img src='{$code_href}assets/icns/new_white_16.svg' class='noborder' /> |
114 | Live Resultate hochladen |
115 | </button> |
116 | <button |
117 | id='create-result-button' |
118 | class='btn btn-secondary' |
119 | onclick='return olzResults.initOlzEditResultModal()' |
120 | > |
121 | <img src='{$code_href}assets/icns/new_white_16.svg' class='noborder' /> |
122 | Resultate hochladen |
123 | </button> |
124 | </div> |
125 | ZZZZZZZZZZ; |
126 | } |
127 | } |
128 | $out .= "</div>"; |
129 | |
130 | $out .= $metadata->getJsCssImports(); |
131 | |
132 | $out .= OlzFooter::render(); |
133 | |
134 | return $out; |
135 | } |
136 | } |