form.php

Code Hygiene Score: 100

Keine Issues gefunden.

Versionen 1

Code

<?php

declare(strict_types=1);

// @responsibility: View für Prompt erstellen/bearbeiten mit HTMX-Formular

ob_start();
?>

<h1><?= $isEdit ? 'Prompt bearbeiten' : 'Neuer Prompt' ?></h1>

<nav class="breadcrumb">
    <a href="/prompts">Prompts</a>
    <?php if ($isEdit): ?>
    <span>/</span>
    <a href="/prompts/<?= $prompt['id'] ?>"><?= htmlspecialchars($prompt['name']) ?></a>
    <span>/</span>
    <span>Bearbeiten</span>
    <?php else: ?>
    <span>/</span>
    <span>Neu</span>
    <?php endif; ?>
</nav>

<form class="form"
      hx-post="<?= $isEdit ? '/prompts/' . $prompt['id'] : '/prompts' ?>"
      hx-headers='{"X-CSRF-TOKEN": "<?= $csrfToken ?>"}'
      hx-disabled-elt="button[type=submit]">

    <div class="form-row">
        <div class="form-group form-group--large">
            <label for="name">Name *</label>
            <input type="text" id="name" name="name" class="form-input"
                   value="<?= htmlspecialchars($prompt['name'] ?? '') ?>" required>
            <small class="form-help">Eindeutiger Name (z.B. "critic-faktenprufer", "content-generate")</small>
        </div>

        <div class="form-group form-group--small">
            <label for="version">Version</label>
            <input type="text" id="version" name="version" class="form-input"
                   value="<?= htmlspecialchars($prompt['version'] ?? '1.0') ?>">
        </div>
    </div>

    <div class="form-group">
        <label for="content">Prompt-Inhalt *</label>
        <textarea id="content" name="content" class="form-textarea form-textarea--code" rows="20"><?= htmlspecialchars($prompt['content'] ?? '') ?></textarea>
        <small class="form-help">
            Verwende Platzhalter: <code>{fokus}</code>, <code>{content}</code>, <code>{feedback}</code>,
            <code>{briefing}</code>, <code>{context}</code>, <code>{profile_text}</code>, etc.
        </small>
    </div>

    <div class="form-group">
        <label class="checkbox-label">
            <input type="checkbox" name="is_active" value="1"
                   <?= ($prompt['is_active'] ?? 1) ? 'checked' : '' ?>>
            Aktiv
        </label>
        <small class="form-help">Nur aktive Prompts werden fuer Generierung verwendet</small>
    </div>

    <div class="form-actions">
        <button type="submit" class="btn btn--primary"><?= $isEdit ? 'Speichern' : 'Erstellen' ?></button>
        <a href="<?= $isEdit ? '/prompts/' . $prompt['id'] : '/prompts' ?>" class="btn btn--secondary">Abbrechen</a>
        <?php if ($isEdit): ?>
        <button type="button"
                class="btn btn--danger"
                hx-post="/prompts/<?= $prompt['id'] ?>/delete"
                hx-headers='{"X-CSRF-TOKEN": "<?= $csrfToken ?>"}'
                hx-confirm="Prompt &quot;<?= htmlspecialchars($prompt['name']) ?>&quot; wirklich loeschen?"
                hx-disabled-elt="this">
            Loeschen
        </button>
        <?php endif; ?>
    </div>
</form>

<style>
.form-row { display: flex; gap: 1rem; }
.form-group--large { flex: 3; }
.form-group--small { flex: 1; }
.checkbox-label { display: flex; align-items: center; gap: 0.5rem; cursor: pointer; }
.form-actions { display: flex; gap: 0.5rem; margin-top: 1.5rem; }
.btn--danger { background: #dc2626; color: white; margin-left: auto; }
.btn--danger:hover { background: #b91c1c; }
.form-textarea--code { font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace; font-size: 0.875rem; }
code { background: var(--bg-alt); padding: 0.125rem 0.375rem; border-radius: 3px; font-size: 0.8rem; }
</style>

<?php $content = ob_get_clean(); ?>
<?php require VIEW_PATH . '/layout.php'; ?>
← Übersicht