Code Coverage |
||||||||||
Lines |
Functions and Methods |
Classes and Traits |
||||||||
Total | |
0.00% |
0 / 49 |
|
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 / 49 |
|
0.00% |
0 / 1 |
110 | |
0.00% |
0 / 1 |
getHtml | |
0.00% |
0 / 49 |
|
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_filename = json_encode(['file' => $filename]); |
38 | $edit_admin = <<<ZZZZZZZZZZ |
39 | <button |
40 | id='edit-result-button' |
41 | class='btn btn-secondary' |
42 | onclick='return olzResults.initOlzEditResultModal(null, {$enc_filename})' |
43 | > |
44 | <img src='{$code_href}assets/icns/edit_white_16.svg' class='noborder' /> |
45 | Resultate bearbeiten |
46 | </button> |
47 | ZZZZZZZZZZ; |
48 | } |
49 | $out .= <<<ZZZZZZZZZZ |
50 | {$edit_admin} |
51 | <div id='title-box'> |
52 | <div id='backbutton' onclick='olzResults.popHash()'><</div> |
53 | <h1 id='title'></h1> |
54 | </div> |
55 | <div id='results-content'> |
56 | <div id='classes-box'></div> |
57 | <div id='content-box'></div> |
58 | <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> |
59 | </div> |
60 | ZZZZZZZZZZ; |
61 | } elseif ($this->authUtils()->hasPermission('any')) { |
62 | $enc_filename = json_encode(['file' => $filename]); |
63 | $out .= <<<ZZZZZZZZZZ |
64 | <div> |
65 | <button |
66 | id='create-result-button' |
67 | class='btn btn-secondary' |
68 | onclick='return olzResults.initOlzEditResultModal(null, {$enc_filename})' |
69 | > |
70 | <img src='{$code_href}assets/icns/new_white_16.svg' class='noborder' /> |
71 | Resultate hochladen |
72 | </button> |
73 | </div> |
74 | ZZZZZZZZZZ; |
75 | } else { |
76 | $out .= OlzNoAppAccess::render([ |
77 | 'app' => $metadata, |
78 | ]); |
79 | } |
80 | } else { |
81 | $out .= "<ul>"; |
82 | $contents = scandir("{$data_path}results") ?: []; |
83 | foreach ($contents as $entry) { |
84 | if (preg_match('/\.xml$/', $entry) && !preg_match('/\.bak\./', $entry)) { |
85 | $out .= "<li><a href='?file={$entry}'>{$entry}</a></li>\n"; |
86 | } |
87 | } |
88 | $out .= "</ul>"; |
89 | if ($this->authUtils()->hasPermission('any')) { |
90 | $out .= <<<ZZZZZZZZZZ |
91 | <div> |
92 | <button |
93 | id='create-result-button' |
94 | class='btn btn-secondary' |
95 | onclick='return olzResults.initOlzEditResultModal()' |
96 | > |
97 | <img src='{$code_href}assets/icns/new_white_16.svg' class='noborder' /> |
98 | Resultate hochladen |
99 | </button> |
100 | </div> |
101 | ZZZZZZZZZZ; |
102 | } |
103 | } |
104 | $out .= "</div>"; |
105 | |
106 | $out .= $metadata->getJsCssImports(); |
107 | |
108 | $out .= OlzFooter::render(); |
109 | |
110 | return $out; |
111 | } |
112 | } |