Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 23
0.00% covered (danger)
0.00%
0 / 1
CRAP
0.00% covered (danger)
0.00%
0 / 1
OlzEditableText
0.00% covered (danger)
0.00%
0 / 23
0.00% covered (danger)
0.00%
0 / 1
20
0.00% covered (danger)
0.00%
0 / 1
 getHtml
0.00% covered (danger)
0.00%
0 / 23
0.00% covered (danger)
0.00%
0 / 1
20
1<?php
2
3namespace Olz\Components\Common\OlzEditableText;
4
5use Olz\Components\Common\OlzComponent;
6use Olz\Entity\Snippets\Snippet;
7use Olz\Repository\Snippets\PredefinedSnippet;
8
9/** @extends OlzComponent<array{snippet_id?: ?int, snippet?: ?PredefinedSnippet}> */
10class OlzEditableText extends OlzComponent {
11    public function getHtml(mixed $args): string {
12        $code_href = $this->envUtils()->getCodeHref();
13
14        $snippet_id = intval($args['snippet_id'] ?? $args['snippet']->value ?? 0);
15        $esc_id = htmlentities(json_encode($snippet_id) ?: '0');
16        $entityManager = $this->dbUtils()->getEntityManager();
17        $snippet_repo = $entityManager->getRepository(Snippet::class);
18        $snippet = $snippet_repo->findOneBy(['id' => $snippet_id]);
19
20        $snippet_text = $snippet?->getText() ?? '';
21        $snippet_html = $this->htmlUtils()->renderMarkdown($snippet_text);
22        if ($snippet) {
23            $snippet_html = $snippet->replaceImagePaths($snippet_html);
24            $snippet_html = $snippet->replaceFilePaths($snippet_html);
25        }
26
27        $has_access = $this->authUtils()->hasPermission("snippet_{$snippet_id}");
28        if (!$has_access) {
29            return <<<ZZZZZZZZZZ
30                <div class='olz-editable-text'>
31                    {$snippet_html}
32                </div>
33                ZZZZZZZZZZ;
34        }
35
36        return <<<ZZZZZZZZZZ
37            <div class='olz-editable-text editable'>
38                <button
39                    type='button'
40                    onclick='olz.olzEditableTextEditSnippet({$esc_id})'
41                    class='btn btn-link olz-edit-button'
42                >
43                    <img src='{$code_href}assets/icns/edit_16.svg' alt='Bearbeiten' class='noborder' />
44                </button>
45                {$snippet_html}
46            </div>
47            ZZZZZZZZZZ;
48    }
49}