Protokoll #12397

ID12397
Zeitstempel2025-12-24 01:16:15.092145
Clientroot
IP
Warning: Undefined array key "request_ip" in /var/www/dev.campus.systemische-tools.de/src/View/protokoll/show.php on line 13

Deprecated: htmlspecialchars(): Passing null to parameter #1 ($string) of type string is deprecated in /var/www/dev.campus.systemische-tools.de/src/View/protokoll/show.php on line 13
Modellclaude-sonnet-4-20250514
Statuscompleted
Tokens6,357 (Input: 0, Output: 0)
Dauer92 ms
Request-Zeit
Warning: Undefined array key "request_timestamp" in /var/www/dev.campus.systemische-tools.de/src/View/protokoll/show.php on line 18
Response-Zeit-

Warning: Undefined array key "error_message" in /var/www/dev.campus.systemische-tools.de/src/View/protokoll/show.php on line 22

Request

{
    "event": "PreToolUse",
    "tool_name": "Edit",
    "tool_input": {
        "file_path": "\/var\/www\/dev.campus.systemische-tools.de\/src\/View\/content\/partials\/critique.php",
        "old_string": "<?php\n\/**\n * Content Critique Partial\n *\n * @var array $critiques Critique results\n * @var bool $allPassed Whether all critics passed\n * @var int|string $round Critique round number\n *\/\n?>\n<div class=\"critique-results\">\n    <div class=\"critique-header\">\n        <span>Kritik-Runde <?= htmlspecialchars((string) $round) ?><\/span>\n        <?php if ($allPassed): ?>\n            <span class=\"badge success\">Bestanden<\/span>\n        <?php else: ?>\n            <span class=\"badge warning\">Revision nötig<\/span>\n        <?php endif; ?>\n    <\/div>\n\n    <?php foreach ($critiques as $critique): ?>\n        <?php\n        $passed = $critique['passed'] ?? false;\n        $icon = $passed ? '✓' : '⚠';\n        $class = $passed ? 'passed' : 'failed';\n        ?>\n        <div class=\"critique-item <?= $class ?>\">\n            <div class=\"critique-title\"><?= $icon ?> <?= htmlspecialchars($critique['critic_name'] ?? '') ?><\/div>\n            <div class=\"critique-rating\">Bewertung: <?= $critique['rating'] ?? 'N\/A' ?>\/10<\/div>\n\n            <?php if (!empty($critique['issues'])): ?>\n            <div class=\"critique-issues\">\n                <strong>Probleme:<\/strong>\n                <ul>\n                <?php foreach ($critique['issues'] as $issue): ?>\n                    <li><?= htmlspecialchars($issue) ?><\/li>\n                <?php endforeach; ?>\n                <\/ul>\n            <\/div>\n            <?php endif; ?>\n\n            <?php if (!empty($critique['summary'])): ?>\n            <div class=\"critique-summary\"><?= htmlspecialchars($critique['summary']) ?><\/div>\n            <?php endif; ?>\n        <\/div>\n    <?php endforeach; ?>\n<\/div>",
        "new_string": "<?php\n\/**\n * Content Critique Partial\n *\n * @var array $critiques Critique results\n * @var bool $allPassed Whether all critics passed\n * @var int|string $round Critique round number\n *\/\n$passedCount = 0;\n$totalCount = count($critiques);\nforeach ($critiques as $c) {\n    if ($c['passed'] ?? false) {\n        $passedCount++;\n    }\n}\n?>\n<div class=\"critique-results\">\n    <div class=\"critique-summary-box <?= $allPassed ? 'critique-summary-box--success' : 'critique-summary-box--warning' ?>\">\n        <div class=\"critique-summary-title\">\n            <?php if ($allPassed): ?>\n                Kritik-Runde <?= htmlspecialchars((string) $round) ?> bestanden\n            <?php else: ?>\n                Kritik-Runde <?= htmlspecialchars((string) $round) ?>: Revision empfohlen\n            <?php endif; ?>\n        <\/div>\n        <div class=\"critique-summary-stats\">\n            <?= $passedCount ?> von <?= $totalCount ?> Kritikern zufrieden\n        <\/div>\n        <div class=\"critique-summary-action\">\n            <?php if ($allPassed): ?>\n                Der Content hat alle Qualitaetspruefungen bestanden. Sie koennen ihn jetzt genehmigen.\n            <?php else: ?>\n                Mindestens ein Kritiker hat Verbesserungsvorschlaege. Nutzen Sie \"Revision erstellen\" um den Content zu ueberarbeiten.\n            <?php endif; ?>\n        <\/div>\n    <\/div>\n\n    <div class=\"critique-details\">\n        <div class=\"critique-details-title\">Detaillierte Kritiken:<\/div>\n        <?php foreach ($critiques as $critique): ?>\n            <?php\n            $passed = $critique['passed'] ?? false;\n            $icon = $passed ? '&#10003;' : '&#9888;';\n            $class = $passed ? 'passed' : 'failed';\n            $rating = $critique['rating'] ?? 0;\n            ?>\n            <div class=\"critique-item <?= $class ?>\">\n                <div class=\"critique-item-header\">\n                    <span class=\"critique-icon\"><?= $icon ?><\/span>\n                    <span class=\"critique-name\"><?= htmlspecialchars($critique['critic_name'] ?? 'Kritiker') ?><\/span>\n                    <span class=\"critique-rating-badge\"><?= $rating ?>\/10<\/span>\n                <\/div>\n\n                <?php if (!empty($critique['summary'])): ?>\n                <div class=\"critique-text\"><?= htmlspecialchars($critique['summary']) ?><\/div>\n                <?php endif; ?>\n\n                <?php if (!empty($critique['issues'])): ?>\n                <div class=\"critique-issues\">\n                    <strong>Probleme:<\/strong>\n                    <ul>\n                    <?php foreach ($critique['issues'] as $issue): ?>\n                        <li><?= htmlspecialchars($issue) ?><\/li>\n                    <?php endforeach; ?>\n                    <\/ul>\n                <\/div>\n                <?php endif; ?>\n\n                <?php if (!empty($critique['suggestions'])): ?>\n                <div class=\"critique-suggestions\">\n                    <strong>Vorschlaege:<\/strong>\n                    <ul>\n                    <?php foreach ($critique['suggestions'] as $suggestion): ?>\n                        <li><?= htmlspecialchars($suggestion) ?><\/li>\n                    <?php endforeach; ?>\n                    <\/ul>\n                <\/div>\n                <?php endif; ?>\n            <\/div>\n        <?php endforeach; ?>\n    <\/div>\n<\/div>\n\n<style>\n.critique-results {\n    margin: var(--space-md) 0;\n}\n.critique-summary-box {\n    padding: var(--space-md);\n    border-radius: 8px;\n    margin-bottom: var(--space-md);\n}\n.critique-summary-box--success {\n    background: #d4edda;\n    border: 1px solid #28a745;\n    color: #155724;\n}\n.critique-summary-box--warning {\n    background: #fff3cd;\n    border: 1px solid #ffc107;\n    color: #856404;\n}\n.critique-summary-title {\n    font-size: 1.1rem;\n    font-weight: 600;\n    margin-bottom: var(--space-xs);\n}\n.critique-summary-stats {\n    font-size: 0.9rem;\n    margin-bottom: var(--space-sm);\n}\n.critique-summary-action {\n    font-size: 0.85rem;\n    opacity: 0.9;\n}\n.critique-details {\n    background: var(--color-bg-muted);\n    border: 1px solid var(--color-border);\n    border-radius: 8px;\n    padding: var(--space-md);\n}\n.critique-details-title {\n    font-weight: 600;\n    margin-bottom: var(--space-sm);\n    color: var(--color-text-muted);\n    font-size: 0.85rem;\n    text-transform: uppercase;\n}\n.critique-item {\n    background: var(--color-bg);\n    border: 1px solid var(--color-border);\n    border-radius: 6px;\n    padding: var(--space-sm);\n    margin-bottom: var(--space-sm);\n}\n.critique-item:last-child {\n    margin-bottom: 0;\n}\n.critique-item.passed {\n    border-left: 3px solid #28a745;\n}\n.critique-item.failed {\n    border-left: 3px solid #dc3545;\n}\n.critique-item-header {\n    display: flex;\n    align-items: center;\n    gap: var(--space-sm);\n    margin-bottom: var(--space-xs);\n}\n.critique-icon {\n    font-size: 1rem;\n}\n.critique-item.passed .critique-icon { color: #28a745; }\n.critique-item.failed .critique-icon { color: #dc3545; }\n.critique-name {\n    font-weight: 600;\n    flex: 1;\n}\n.critique-rating-badge {\n    background: var(--color-bg-muted);\n    padding: 2px 8px;\n    border-radius: 12px;\n    font-size: 0.8rem;\n    font-weight: 500;\n}\n.critique-text {\n    font-size: 0.9rem;\n    color: var(--color-text);\n    line-height: 1.5;\n    margin-bottom: var(--space-xs);\n}\n.critique-issues, .critique-suggestions {\n    font-size: 0.85rem;\n    margin-top: var(--space-xs);\n}\n.critique-issues ul, .critique-suggestions ul {\n    margin: var(--space-xs) 0 0 var(--space-md);\n    padding: 0;\n}\n.critique-issues li, .critique-suggestions li {\n    margin-bottom: 4px;\n}\n<\/style>\n\n<script>\n\/\/ Reload page after showing critique results to update buttons\nsetTimeout(function() { window.location.reload(); }, 2000);\n<\/script>"
    }
}

Response

{
    "tool_response": {
        "filePath": "\/var\/www\/dev.campus.systemische-tools.de\/src\/View\/content\/partials\/critique.php",
        "oldString": "<?php\n\/**\n * Content Critique Partial\n *\n * @var array $critiques Critique results\n * @var bool $allPassed Whether all critics passed\n * @var int|string $round Critique round number\n *\/\n?>\n<div class=\"critique-results\">\n    <div class=\"critique-header\">\n        <span>Kritik-Runde <?= htmlspecialchars((string) $round) ?><\/span>\n        <?php if ($allPassed): ?>\n            <span class=\"badge success\">Bestanden<\/span>\n        <?php else: ?>\n            <span class=\"badge warning\">Revision nötig<\/span>\n        <?php endif; ?>\n    <\/div>\n\n    <?php foreach ($critiques as $critique): ?>\n        <?php\n        $passed = $critique['passed'] ?? false;\n        $icon = $passed ? '✓' : '⚠';\n        $class = $passed ? 'passed' : 'failed';\n        ?>\n        <div class=\"critique-item <?= $class ?>\">\n            <div class=\"critique-title\"><?= $icon ?> <?= htmlspecialchars($critique['critic_name'] ?? '') ?><\/div>\n            <div class=\"critique-rating\">Bewertung: <?= $critique['rating'] ?? 'N\/A' ?>\/10<\/div>\n\n            <?php if (!empty($critique['issues'])): ?>\n            <div class=\"critique-issues\">\n                <strong>Probleme:<\/strong>\n                <ul>\n                <?php foreach ($critique['issues'] as $issue): ?>\n                    <li><?= htmlspecialchars($issue) ?><\/li>\n                <?php endforeach; ?>\n                <\/ul>\n            <\/div>\n            <?php endif; ?>\n\n            <?php if (!empty($critique['summary'])): ?>\n            <div class=\"critique-summary\"><?= htmlspecialchars($critique['summary']) ?><\/div>\n            <?php endif; ?>\n        <\/div>\n    <?php endforeach; ?>\n<\/div>",
        "newString": "<?php\n\/**\n * Content Critique Partial\n *\n * @var array $critiques Critique results\n * @var bool $allPassed Whether all critics passed\n * @var int|string $round Critique round number\n *\/\n$passedCount = 0;\n$totalCount = count($critiques);\nforeach ($critiques as $c) {\n    if ($c['passed'] ?? false) {\n        $passedCount++;\n    }\n}\n?>\n<div class=\"critique-results\">\n    <div class=\"critique-summary-box <?= $allPassed ? 'critique-summary-box--success' : 'critique-summary-box--warning' ?>\">\n        <div class=\"critique-summary-title\">\n            <?php if ($allPassed): ?>\n                Kritik-Runde <?= htmlspecialchars((string) $round) ?> bestanden\n            <?php else: ?>\n                Kritik-Runde <?= htmlspecialchars((string) $round) ?>: Revision empfohlen\n            <?php endif; ?>\n        <\/div>\n        <div class=\"critique-summary-stats\">\n            <?= $passedCount ?> von <?= $totalCount ?> Kritikern zufrieden\n        <\/div>\n        <div class=\"critique-summary-action\">\n            <?php if ($allPassed): ?>\n                Der Content hat alle Qualitaetspruefungen bestanden. Sie koennen ihn jetzt genehmigen.\n            <?php else: ?>\n                Mindestens ein Kritiker hat Verbesserungsvorschlaege. Nutzen Sie \"Revision erstellen\" um den Content zu ueberarbeiten.\n            <?php endif; ?>\n        <\/div>\n    <\/div>\n\n    <div class=\"critique-details\">\n        <div class=\"critique-details-title\">Detaillierte Kritiken:<\/div>\n        <?php foreach ($critiques as $critique): ?>\n            <?php\n            $passed = $critique['passed'] ?? false;\n            $icon = $passed ? '&#10003;' : '&#9888;';\n            $class = $passed ? 'passed' : 'failed';\n            $rating = $critique['rating'] ?? 0;\n            ?>\n            <div class=\"critique-item <?= $class ?>\">\n                <div class=\"critique-item-header\">\n                    <span class=\"critique-icon\"><?= $icon ?><\/span>\n                    <span class=\"critique-name\"><?= htmlspecialchars($critique['critic_name'] ?? 'Kritiker') ?><\/span>\n                    <span class=\"critique-rating-badge\"><?= $rating ?>\/10<\/span>\n                <\/div>\n\n                <?php if (!empty($critique['summary'])): ?>\n                <div class=\"critique-text\"><?= htmlspecialchars($critique['summary']) ?><\/div>\n                <?php endif; ?>\n\n                <?php if (!empty($critique['issues'])): ?>\n                <div class=\"critique-issues\">\n                    <strong>Probleme:<\/strong>\n                    <ul>\n                    <?php foreach ($critique['issues'] as $issue): ?>\n                        <li><?= htmlspecialchars($issue) ?><\/li>\n                    <?php endforeach; ?>\n                    <\/ul>\n                <\/div>\n                <?php endif; ?>\n\n                <?php if (!empty($critique['suggestions'])): ?>\n                <div class=\"critique-suggestions\">\n                    <strong>Vorschlaege:<\/strong>\n                    <ul>\n                    <?php foreach ($critique['suggestions'] as $suggestion): ?>\n                        <li><?= htmlspecialchars($suggestion) ?><\/li>\n                    <?php endforeach; ?>\n                    <\/ul>\n                <\/div>\n                <?php endif; ?>\n            <\/div>\n        <?php endforeach; ?>\n    <\/div>\n<\/div>\n\n<style>\n.critique-results {\n    margin: var(--space-md) 0;\n}\n.critique-summary-box {\n    padding: var(--space-md);\n    border-radius: 8px;\n    margin-bottom: var(--space-md);\n}\n.critique-summary-box--success {\n    background: #d4edda;\n    border: 1px solid #28a745;\n    color: #155724;\n}\n.critique-summary-box--warning {\n    background: #fff3cd;\n    border: 1px solid #ffc107;\n    color: #856404;\n}\n.critique-summary-title {\n    font-size: 1.1rem;\n    font-weight: 600;\n    margin-bottom: var(--space-xs);\n}\n.critique-summary-stats {\n    font-size: 0.9rem;\n    margin-bottom: var(--space-sm);\n}\n.critique-summary-action {\n    font-size: 0.85rem;\n    opacity: 0.9;\n}\n.critique-details {\n    background: var(--color-bg-muted);\n    border: 1px solid var(--color-border);\n    border-radius: 8px;\n    padding: var(--space-md);\n}\n.critique-details-title {\n    font-weight: 600;\n    margin-bottom: var(--space-sm);\n    color: var(--color-text-muted);\n    font-size: 0.85rem;\n    text-transform: uppercase;\n}\n.critique-item {\n    background: var(--color-bg);\n    border: 1px solid var(--color-border);\n    border-radius: 6px;\n    padding: var(--space-sm);\n    margin-bottom: var(--space-sm);\n}\n.critique-item:last-child {\n    margin-bottom: 0;\n}\n.critique-item.passed {\n    border-left: 3px solid #28a745;\n}\n.critique-item.failed {\n    border-left: 3px solid #dc3545;\n}\n.critique-item-header {\n    display: flex;\n    align-items: center;\n    gap: var(--space-sm);\n    margin-bottom: var(--space-xs);\n}\n.critique-icon {\n    font-size: 1rem;\n}\n.critique-item.passed .critique-icon { color: #28a745; }\n.critique-item.failed .critique-icon { color: #dc3545; }\n.critique-name {\n    font-weight: 600;\n    flex: 1;\n}\n.critique-rating-badge {\n    background: var(--color-bg-muted);\n    padding: 2px 8px;\n    border-radius: 12px;\n    font-size: 0.8rem;\n    font-weight: 500;\n}\n.critique-text {\n    font-size: 0.9rem;\n    color: var(--color-text);\n    line-height: 1.5;\n    margin-bottom: var(--space-xs);\n}\n.critique-issues, .critique-suggestions {\n    font-size: 0.85rem;\n    margin-top: var(--space-xs);\n}\n.critique-issues ul, .critique-suggestions ul {\n    margin: var(--space-xs) 0 0 var(--space-md);\n    padding: 0;\n}\n.critique-issues li, .critique-suggestions li {\n    margin-bottom: 4px;\n}\n<\/style>\n\n<script>\n\/\/ Reload page after showing critique results to update buttons\nsetTimeout(function() { window.location.reload(); }, 2000);\n<\/script>",
        "originalFile": "<?php\n\/**\n * Content Critique Partial\n *\n * @var array $critiques Critique results\n * @var bool $allPassed Whether all critics passed\n * @var int|string $round Critique round number\n *\/\n?>\n<div class=\"critique-results\">\n    <div class=\"critique-header\">\n        <span>Kritik-Runde <?= htmlspecialchars((string) $round) ?><\/span>\n        <?php if ($allPassed): ?>\n            <span class=\"badge success\">Bestanden<\/span>\n        <?php else: ?>\n            <span class=\"badge warning\">Revision nötig<\/span>\n        <?php endif; ?>\n    <\/div>\n\n    <?php foreach ($critiques as $critique): ?>\n        <?php\n        $passed = $critique['passed'] ?? false;\n        $icon = $passed ? '✓' : '⚠';\n        $class = $passed ? 'passed' : 'failed';\n        ?>\n        <div class=\"critique-item <?= $class ?>\">\n            <div class=\"critique-title\"><?= $icon ?> <?= htmlspecialchars($critique['critic_name'] ?? '') ?><\/div>\n            <div class=\"critique-rating\">Bewertung: <?= $critique['rating'] ?? 'N\/A' ?>\/10<\/div>\n\n            <?php if (!empty($critique['issues'])): ?>\n            <div class=\"critique-issues\">\n                <strong>Probleme:<\/strong>\n                <ul>\n                <?php foreach ($critique['issues'] as $issue): ?>\n                    <li><?= htmlspecialchars($issue) ?><\/li>\n                <?php endforeach; ?>\n                <\/ul>\n            <\/div>\n            <?php endif; ?>\n\n            <?php if (!empty($critique['summary'])): ?>\n            <div class=\"critique-summary\"><?= htmlspecialchars($critique['summary']) ?><\/div>\n            <?php endif; ?>\n        <\/div>\n    <?php endforeach; ?>\n<\/div>\n",
        "structuredPatch": [
            {
                "oldStart": 6,
                "oldLines": 41,
                "newStart": 6,
                "newLines": 184,
                "lines": [
                    "  * @var bool $allPassed Whether all critics passed",
                    "  * @var int|string $round Critique round number",
                    "  *\/",
                    "+$passedCount = 0;",
                    "+$totalCount = count($critiques);",
                    "+foreach ($critiques as $c) {",
                    "+    if ($c['passed'] ?? false) {",
                    "+        $passedCount++;",
                    "+    }",
                    "+}",
                    " ?>",
                    " <div class=\"critique-results\">",
                    "-    <div class=\"critique-header\">",
                    "-        <span>Kritik-Runde <?= htmlspecialchars((string) $round) ?><\/span>",
                    "-        <?php if ($allPassed): ?>",
                    "-            <span class=\"badge success\">Bestanden<\/span>",
                    "-        <?php else: ?>",
                    "-            <span class=\"badge warning\">Revision nötig<\/span>",
                    "-        <?php endif; ?>",
                    "+    <div class=\"critique-summary-box <?= $allPassed ? 'critique-summary-box--success' : 'critique-summary-box--warning' ?>\">",
                    "+        <div class=\"critique-summary-title\">",
                    "+            <?php if ($allPassed): ?>",
                    "+                Kritik-Runde <?= htmlspecialchars((string) $round) ?> bestanden",
                    "+            <?php else: ?>",
                    "+                Kritik-Runde <?= htmlspecialchars((string) $round) ?>: Revision empfohlen",
                    "+            <?php endif; ?>",
                    "+        <\/div>",
                    "+        <div class=\"critique-summary-stats\">",
                    "+            <?= $passedCount ?> von <?= $totalCount ?> Kritikern zufrieden",
                    "+        <\/div>",
                    "+        <div class=\"critique-summary-action\">",
                    "+            <?php if ($allPassed): ?>",
                    "+                Der Content hat alle Qualitaetspruefungen bestanden. Sie koennen ihn jetzt genehmigen.",
                    "+            <?php else: ?>",
                    "+                Mindestens ein Kritiker hat Verbesserungsvorschlaege. Nutzen Sie \"Revision erstellen\" um den Content zu ueberarbeiten.",
                    "+            <?php endif; ?>",
                    "+        <\/div>",
                    "     <\/div>",
                    " ",
                    "-    <?php foreach ($critiques as $critique): ?>",
                    "-        <?php",
                    "-        $passed = $critique['passed'] ?? false;",
                    "-        $icon = $passed ? '✓' : '⚠';",
                    "-        $class = $passed ? 'passed' : 'failed';",
                    "-        ?>",
                    "-        <div class=\"critique-item <?= $class ?>\">",
                    "-            <div class=\"critique-title\"><?= $icon ?> <?= htmlspecialchars($critique['critic_name'] ?? '') ?><\/div>",
                    "-            <div class=\"critique-rating\">Bewertung: <?= $critique['rating'] ?? 'N\/A' ?>\/10<\/div>",
                    "+    <div class=\"critique-details\">",
                    "+        <div class=\"critique-details-title\">Detaillierte Kritiken:<\/div>",
                    "+        <?php foreach ($critiques as $critique): ?>",
                    "+            <?php",
                    "+            $passed = $critique['passed'] ?? false;",
                    "+            $icon = $passed ? '&#10003;' : '&#9888;';",
                    "+            $class = $passed ? 'passed' : 'failed';",
                    "+            $rating = $critique['rating'] ?? 0;",
                    "+            ?>",
                    "+            <div class=\"critique-item <?= $class ?>\">",
                    "+                <div class=\"critique-item-header\">",
                    "+                    <span class=\"critique-icon\"><?= $icon ?><\/span>",
                    "+                    <span class=\"critique-name\"><?= htmlspecialchars($critique['critic_name'] ?? 'Kritiker') ?><\/span>",
                    "+                    <span class=\"critique-rating-badge\"><?= $rating ?>\/10<\/span>",
                    "+                <\/div>",
                    " ",
                    "-            <?php if (!empty($critique['issues'])): ?>",
                    "-            <div class=\"critique-issues\">",
                    "-                <strong>Probleme:<\/strong>",
                    "-                <ul>",
                    "-                <?php foreach ($critique['issues'] as $issue): ?>",
                    "-                    <li><?= htmlspecialchars($issue) ?><\/li>",
                    "-                <?php endforeach; ?>",
                    "-                <\/ul>",
                    "-            <\/div>",
                    "-            <?php endif; ?>",
                    "+                <?php if (!empty($critique['summary'])): ?>",
                    "+                <div class=\"critique-text\"><?= htmlspecialchars($critique['summary']) ?><\/div>",
                    "+                <?php endif; ?>",
                    " ",
                    "-            <?php if (!empty($critique['summary'])): ?>",
                    "-            <div class=\"critique-summary\"><?= htmlspecialchars($critique['summary']) ?><\/div>",
                    "-            <?php endif; ?>",
                    "-        <\/div>",
                    "-    <?php endforeach; ?>",
                    "+                <?php if (!empty($critique['issues'])): ?>",
                    "+                <div class=\"critique-issues\">",
                    "+                    <strong>Probleme:<\/strong>",
                    "+                    <ul>",
                    "+                    <?php foreach ($critique['issues'] as $issue): ?>",
                    "+                        <li><?= htmlspecialchars($issue) ?><\/li>",
                    "+                    <?php endforeach; ?>",
                    "+                    <\/ul>",
                    "+                <\/div>",
                    "+                <?php endif; ?>",
                    "+",
                    "+                <?php if (!empty($critique['suggestions'])): ?>",
                    "+                <div class=\"critique-suggestions\">",
                    "+                    <strong>Vorschlaege:<\/strong>",
                    "+                    <ul>",
                    "+                    <?php foreach ($critique['suggestions'] as $suggestion): ?>",
                    "+                        <li><?= htmlspecialchars($suggestion) ?><\/li>",
                    "+                    <?php endforeach; ?>",
                    "+                    <\/ul>",
                    "+                <\/div>",
                    "+                <?php endif; ?>",
                    "+            <\/div>",
                    "+        <?php endforeach; ?>",
                    "+    <\/div>",
                    " <\/div>",
                    "+",
                    "+<style>",
                    "+.critique-results {",
                    "+    margin: var(--space-md) 0;",
                    "+}",
                    "+.critique-summary-box {",
                    "+    padding: var(--space-md);",
                    "+    border-radius: 8px;",
                    "+    margin-bottom: var(--space-md);",
                    "+}",
                    "+.critique-summary-box--success {",
                    "+    background: #d4edda;",
                    "+    border: 1px solid #28a745;",
                    "+    color: #155724;",
                    "+}",
                    "+.critique-summary-box--warning {",
                    "+    background: #fff3cd;",
                    "+    border: 1px solid #ffc107;",
                    "+    color: #856404;",
                    "+}",
                    "+.critique-summary-title {",
                    "+    font-size: 1.1rem;",
                    "+    font-weight: 600;",
                    "+    margin-bottom: var(--space-xs);",
                    "+}",
                    "+.critique-summary-stats {",
                    "+    font-size: 0.9rem;",
                    "+    margin-bottom: var(--space-sm);",
                    "+}",
                    "+.critique-summary-action {",
                    "+    font-size: 0.85rem;",
                    "+    opacity: 0.9;",
                    "+}",
                    "+.critique-details {",
                    "+    background: var(--color-bg-muted);",
                    "+    border: 1px solid var(--color-border);",
                    "+    border-radius: 8px;",
                    "+    padding: var(--space-md);",
                    "+}",
                    "+.critique-details-title {",
                    "+    font-weight: 600;",
                    "+    margin-bottom: var(--space-sm);",
                    "+    color: var(--color-text-muted);",
                    "+    font-size: 0.85rem;",
                    "+    text-transform: uppercase;",
                    "+}",
                    "+.critique-item {",
                    "+    background: var(--color-bg);",
                    "+    border: 1px solid var(--color-border);",
                    "+    border-radius: 6px;",
                    "+    padding: var(--space-sm);",
                    "+    margin-bottom: var(--space-sm);",
                    "+}",
                    "+.critique-item:last-child {",
                    "+    margin-bottom: 0;",
                    "+}",
                    "+.critique-item.passed {",
                    "+    border-left: 3px solid #28a745;",
                    "+}",
                    "+.critique-item.failed {",
                    "+    border-left: 3px solid #dc3545;",
                    "+}",
                    "+.critique-item-header {",
                    "+    display: flex;",
                    "+    align-items: center;",
                    "+    gap: var(--space-sm);",
                    "+    margin-bottom: var(--space-xs);",
                    "+}",
                    "+.critique-icon {",
                    "+    font-size: 1rem;",
                    "+}",
                    "+.critique-item.passed .critique-icon { color: #28a745; }",
                    "+.critique-item.failed .critique-icon { color: #dc3545; }",
                    "+.critique-name {",
                    "+    font-weight: 600;",
                    "+    flex: 1;",
                    "+}",
                    "+.critique-rating-badge {",
                    "+    background: var(--color-bg-muted);",
                    "+    padding: 2px 8px;",
                    "+    border-radius: 12px;",
                    "+    font-size: 0.8rem;",
                    "+    font-weight: 500;",
                    "+}",
                    "+.critique-text {",
                    "+    font-size: 0.9rem;",
                    "+    color: var(--color-text);",
                    "+    line-height: 1.5;",
                    "+    margin-bottom: var(--space-xs);",
                    "+}",
                    "+.critique-issues, .critique-suggestions {",
                    "+    font-size: 0.85rem;",
                    "+    margin-top: var(--space-xs);",
                    "+}",
                    "+.critique-issues ul, .critique-suggestions ul {",
                    "+    margin: var(--space-xs) 0 0 var(--space-md);",
                    "+    padding: 0;",
                    "+}",
                    "+.critique-issues li, .critique-suggestions li {",
                    "+    margin-bottom: 4px;",
                    "+}",
                    "+<\/style>",
                    "+",
                    "+<script>",
                    "+\/\/ Reload page after showing critique results to update buttons",
                    "+setTimeout(function() { window.location.reload(); }, 2000);",
                    "+<\/script>"
                ]
            }
        ],
        "userModified": false,
        "replaceAll": false
    }
}
← Vorheriger Zur Liste Nächster →