← Code-Übersicht

prozess-detail.php

Pfad: src/Infrastructure/Http/view/prozess-detail.php

Ext: php

Größe: 2905 Bytes

Geändert: 2026-07-16 01:42:05+02

<?php
declare(strict_types=1);

/**
 * Detailseite eines Prozesses: Kopf, SVG-Fluss und rang-geordnete Schritt-Karten.
 * $svg, $kopfHtml und $schrittHtml stammen aus serverseitigem, escaptem Rendering
 * und werden daher bewusst roh ausgegeben.
 *
 * @var callable(string):string                  $e
 * @var \Demo\Domain\Prozess\ProzessDetail        $detail
 * @var string                                    $svg
 * @var string                                    $kopfHtml
 * @var list<\Demo\Domain\Prozess\Schritt>        $schritte
 * @var array<int,string>                         $schrittHtml
 */
$namen = [];
foreach ($detail->schritte as $s) {
    $namen[$s->id] = $s->name;
}
$vorgaenger = [];
foreach ($detail->kanten as $k) {
    $vorgaenger[$k->schrittId][] = ['name' => $namen[$k->vorgaengerId] ?? ('#' . $k->vorgaengerId), 'ausgang' => $k->ausgang];
}
?>
        <p><a href="/prozesse">&larr; Prozesse</a></p>
        <h1><?= $e($detail->prozess->titel) ?></h1>
<?php if ($detail->prozess->tags !== []): ?>
        <p class="tags"><?= $e(implode(', ', $detail->prozess->tags)) ?></p>
<?php endif; ?>
<?php if (trim($detail->prozess->beschreibung) !== ''): ?>
        <div class="kopf"><?php echo $kopfHtml; ?></div>
<?php endif; ?>
<?php if ($detail->dokus !== []): ?>
        <p>Dokumentation:
<?php foreach ($detail->dokus as $d): ?>
            <a href="/doku/<?= $e($d['slug']) ?>"><?= $e($d['titel']) ?></a>
<?php endforeach; ?>
        </p>
<?php endif; ?>
        <div class="fluss-wrap"><?php echo $svg; ?></div>
        <section class="schritte">
<?php foreach ($schritte as $s): ?>
            <article class="schritt-karte" id="schritt-<?= $e((string) $s->id) ?>">
                <h3><?= $e($s->name) ?></h3>
                <p class="schritt-meta">
<?php if ($s->istAufruf()): ?>
                    Teilprozess: <a href="/prozesse/<?= $e((string) $s->ruftSlug) ?>"><?= $e((string) $s->ruftTitel) ?></a>
<?php else: ?>
                    <?= $e($s->akteur) ?> / <?= $e($s->system) ?><?php if ($s->rolle !== null): ?> · <?= $e($s->rolle) ?><?php endif; ?>
<?php endif; ?>
                </p>
<?php if (trim($s->beschreibung) !== ''): ?>
                <div><?php echo $schrittHtml[$s->id]; ?></div>
<?php endif; ?>
<?php if (isset($vorgaenger[$s->id])): ?>
                <p class="schritt-vorg">Vorgänger:
<?php foreach ($vorgaenger[$s->id] as $v): ?>
                    <?= $e($v['name']) ?><?php if ($v['ausgang'] !== null): ?> (<?= $e($v['ausgang']) ?>)<?php endif; ?>;
<?php endforeach; ?>
                </p>
<?php endif; ?>
<?php if ($s->artefakte !== []): ?>
                <ul class="artefakte">
<?php foreach ($s->artefakte as $a): ?>
                    <li><?= $e($a->typ) ?> · <?= $e($a->bezeichner) ?> · <?= $e($a->beziehung) ?></li>
<?php endforeach; ?>
                </ul>
<?php endif; ?>
            </article>
<?php endforeach; ?>
        </section>