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