Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 46
0.00% covered (danger)
0.00%
0 / 1
CRAP
0.00% covered (danger)
0.00%
0 / 1
OlzKartenListItem
0.00% covered (danger)
0.00%
0 / 46
0.00% covered (danger)
0.00%
0 / 1
72
0.00% covered (danger)
0.00%
0 / 1
 getHtml
0.00% covered (danger)
0.00%
0 / 46
0.00% covered (danger)
0.00%
0 / 1
72
1<?php
2
3namespace Olz\Karten\Components\OlzKartenListItem;
4
5use Olz\Components\Common\OlzComponent;
6use Olz\Components\Schema\OlzMapData\OlzMapData;
7
8/** @extends OlzComponent<array<string, mixed>> */
9class OlzKartenListItem extends OlzComponent {
10    public function getHtml(mixed $args): string {
11        $out = '';
12        $karte = $args['karte'];
13
14        $code_href = $this->envUtils()->getCodeHref();
15        $data_href = $this->envUtils()->getDataHref();
16        $user = $this->authUtils()->getCurrentUser();
17
18        $owner_user = $karte->getOwnerUser();
19        $is_owner = $user && $owner_user && intval($owner_user->getId() ?? 0) === intval($user->getId());
20        $has_all_permissions = $this->authUtils()->hasPermission('all');
21        $can_edit = $is_owner || $has_all_permissions;
22        $edit_admin = '';
23        if ($can_edit) {
24            $json_id = json_encode($karte->getId());
25            $edit_admin = <<<ZZZZZZZZZZ
26                <button
27                    class='btn btn-secondary-outline btn-sm edit-karten-list-button'
28                    onclick='return olz.kartenListItemEditKarte({$json_id})'
29                >
30                    <img src='{$code_href}assets/icns/edit_16.svg' class='noborder' />
31                </button>
32                ZZZZZZZZZZ;
33        }
34
35        $map = '';
36        $preview = $karte->getPreviewImageId();
37        if ($preview > '') {
38            $img_href = "{$data_href}img/karten/{$karte->getId()}/img/{$preview}";
39            $map = "<span class='lightgallery'><a href='{$img_href}' data-src='{$img_href}'><img src='{$code_href}assets/icns/magnifier_16.svg' style='float:right;border:none;'></a></span>";
40        }
41
42        $out .= OlzMapData::render([
43            'name' => $karte->getName(),
44            'year' => $karte->getYear(),
45            'scale' => $karte->getScale(),
46        ]);
47        $name = $karte->getName();
48        if ($karte->getKind() === 'scool') {
49            $name = $name." (".$karte->getPlace().")";
50        }
51        $scale = $karte->getScale() ?? '';
52        if ($scale === '') {
53            $scale = "&nbsp;";
54        }
55        $json_id = json_encode($karte->getId());
56        $out .= <<<ZZZZZZZZZZ
57            <tr class='olz-karten-list-item'>
58                <td>
59                    {$edit_admin}
60                    <a
61                        href='{$code_href}karten/{$karte->getId()}'
62                        onmouseenter='return olz.kartenLinkEnter({$json_id})'
63                        onmouseleave='return olz.kartenLinkLeave({$json_id})'
64                        class='linkmap'
65                    >
66                        {$name}
67                    </a>
68                    {$map}
69                </td>
70                <td>{$scale}</td>
71                <td>{$karte->getYear()}</td>
72            </tr>
73            ZZZZZZZZZZ;
74
75        return $out;
76    }
77}