Backup #1671

ID1671
Dateipfad/var/www/dev.campus.systemische-tools.de/src/View/prompts/index.php
Version1
Typ modified
Größe5.2 KB
Hash5a55e32b67c2e5206a9ca253401f42965ba477f6c09ab817750c5a1cfeb8584c
Datum2025-12-27 11:30:03
Geändert vonclaude-code-hook
GrundClaude Code Pre-Hook Backup vor Edit-Operation
Datei existiert Ja

Dateiinhalt

<?php ob_start(); ?>

<h1>Prompts verwalten</h1>

<div class="stats-grid">
    <div class="stat-card">
        <span class="stat-card__value"><?= $stats['total'] ?? 0 ?></span>
        <span class="stat-card__label">Gesamt</span>
    </div>
    <div class="stat-card stat-card--success">
        <span class="stat-card__value"><?= $stats['active'] ?? 0 ?></span>
        <span class="stat-card__label">Aktiv</span>
    </div>
    <div class="stat-card stat-card--muted">
        <span class="stat-card__value"><?= $stats['inactive'] ?? 0 ?></span>
        <span class="stat-card__label">Inaktiv</span>
    </div>
    <div class="stat-card stat-card--info">
        <span class="stat-card__value"><?= $stats['linked_to_critics'] ?? 0 ?></span>
        <span class="stat-card__label">Mit Critics verknüpft</span>
    </div>
</div>

<div class="page-actions">
    <a href="/prompts/new" class="btn btn--primary">Neuer Prompt</a>
    <a href="/critics" class="btn btn--secondary">Critics verwalten</a>
</div>

<?php if (isset($_SESSION['success'])): ?>
<div class="alert alert--success"><?= htmlspecialchars($_SESSION['success']) ?></div>
<?php unset($_SESSION['success']); endif; ?>

<?php if (isset($_SESSION['error'])): ?>
<div class="alert alert--error"><?= htmlspecialchars($_SESSION['error']) ?></div>
<?php unset($_SESSION['error']); endif; ?>

<h2>Prompts</h2>
<p class="text-muted">Prompt-Templates für Content-Generierung, Kritik und Revision.</p>

<div class="filters">
    <input type="search" id="prompts-search" class="form-input" placeholder="Durchsuchen...">
</div>

<table id="prompts-table" data-sortable>
    <thead>
        <tr>
            <th data-sort="id">ID</th>
            <th data-sort="name">Name</th>
            <th data-sort="version">Version</th>
            <th>Typ</th>
            <th data-sort="is_active">Status</th>
            <th>Verknüpfte Critics</th>
            <th data-sort="updated_at">Aktualisiert</th>
            <th>Aktionen</th>
        </tr>
    </thead>
    <tbody>
        <?php if (!empty($prompts)): ?>
        <?php foreach ($prompts as $prompt): ?>
        <?php
            // Detect prompt type from name
            $type = 'other';
            if (str_starts_with($prompt['name'], 'critic-')) {
                $type = 'critic';
            } elseif (str_starts_with($prompt['name'], 'content-generate')) {
                $type = 'generate';
            } elseif (str_starts_with($prompt['name'], 'content-revise')) {
                $type = 'revise';
            } elseif (str_contains($prompt['name'], 'system')) {
                $type = 'system';
            }
            ?>
        <tr>
            <td><a href="/prompts/<?= $prompt['id'] ?>"><?= $prompt['id'] ?></a></td>
            <td><a href="/prompts/<?= $prompt['id'] ?>"><?= htmlspecialchars($prompt['name']) ?></a></td>
            <td>v<?= htmlspecialchars($prompt['version']) ?></td>
            <td><span class="badge badge--type-<?= $type ?>"><?= $promptTypes[$type] ?? $type ?></span></td>
            <td>
                <?php if ($prompt['is_active']): ?>
                <span class="badge badge--success">Aktiv</span>
                <?php else: ?>
                <span class="badge badge--muted">Inaktiv</span>
                <?php endif; ?>
            </td>
            <td>
                <?php if ($prompt['critic_count'] > 0): ?>
                <span class="badge badge--info"><?= $prompt['critic_count'] ?> Critic(s)</span>
                <?php else: ?>
                <span class="text-muted">-</span>
                <?php endif; ?>
            </td>
            <td><?= substr($prompt['updated_at'], 0, 16) ?></td>
            <td class="actions">
                <a href="/prompts/<?= $prompt['id'] ?>/edit" class="btn btn--small">Bearbeiten</a>
                <form method="post" action="/prompts/<?= $prompt['id'] ?>/duplicate" style="display:inline">
                    <?= $csrfField ?>
                    <button type="submit" class="btn btn--small btn--secondary">Duplizieren</button>
                </form>
            </td>
        </tr>
        <?php endforeach; ?>
        <?php else: ?>
        <tr><td colspan="8" class="empty-state empty-state--small">Keine Prompts vorhanden</td></tr>
        <?php endif; ?>
    </tbody>
</table>

<script type="module">
import { init } from '/js/components/data-table.js';

const dataTable = init({
    clock: { now_epoch_ms_utc: () => Date.now() },
    logger: console,
    ui: {
        showMessage: (msg) => { console.log(msg.type + ': ' + msg.text); },
        disableFeature: (key) => { console.warn('Feature disabled: ' + key); },
        offerRetry: () => Promise.resolve(false)
    },
    runId: crypto.randomUUID()
});

dataTable.create('prompts-table', {
    searchInput: 'prompts-search',
    pageSize: 20
});
</script>

<style>
.actions { white-space: nowrap; }
.actions form { display: inline; margin-left: 0.25rem; }
.badge--type-critic { background: #6366f1; color: white; }
.badge--type-generate { background: #10b981; color: white; }
.badge--type-revise { background: #f59e0b; color: white; }
.badge--type-system { background: #ec4899; color: white; }
.badge--type-other { background: #6b7280; color: white; }
</style>

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

Vollständig herunterladen

Aktionen

Herunterladen

Andere Versionen dieser Datei

ID Version Typ Größe Datum
1785 3 modified 5.2 KB 2025-12-27 14:07
1677 2 modified 5.2 KB 2025-12-27 11:46
1671 1 modified 5.2 KB 2025-12-27 11:30

← Zurück zur Übersicht