{
"event": "PreToolUse",
"tool_name": "Edit",
"tool_input": {
"file_path": "\/var\/www\/dev.campus.systemische-tools.de\/src\/View\/content\/new.php",
"old_string": "\/* Critic Cards *\/\n.critic-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 0.75rem; }\n.critic-card { display: flex; flex-direction: column; padding: 0.75rem 1rem; border: 2px solid var(--color-border); border-radius: 8px; cursor: pointer; transition: all 0.2s; background: var(--color-bg); }\n.critic-card:hover { border-color: var(--color-primary-light); background: var(--color-bg-muted); }\n.critic-card--selected { border-color: var(--color-primary); background: var(--color-primary-bg, rgba(59, 130, 246, 0.1)); }\n.critic-card input[type=\"checkbox\"] { position: absolute; opacity: 0; pointer-events: none; }\n.critic-card__name { font-weight: 600; font-size: 0.95rem; margin-bottom: 0.25rem; }\n.critic-card__desc { font-size: 0.8rem; color: var(--color-text-muted); line-height: 1.3; }\n\n@media (max-width: 600px) {\n .form-row { flex-direction: column; gap: 0; }\n .critic-grid { grid-template-columns: 1fr; }\n}",
"new_string": "\/* Critic Cards *\/\n.critic-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 0.75rem; }\n.critic-card { display: flex; flex-direction: column; padding: 0.75rem 1rem; border: 2px solid var(--color-border); border-radius: 8px; cursor: pointer; transition: all 0.2s; background: var(--color-bg); }\n.critic-card:hover { border-color: var(--color-primary-light); background: var(--color-bg-muted); }\n.critic-card--selected { border-color: var(--color-primary); background: var(--color-primary-bg, rgba(59, 130, 246, 0.1)); }\n.critic-card input[type=\"checkbox\"] { position: absolute; opacity: 0; pointer-events: none; }\n.critic-card__name { font-weight: 600; font-size: 0.95rem; margin-bottom: 0.25rem; }\n.critic-card__desc { font-size: 0.8rem; color: var(--color-text-muted); line-height: 1.3; }\n\n\/* Inline Editor *\/\n.inline-edit-group { display: flex; gap: 0.5rem; align-items: stretch; }\n.inline-edit-group .form-select { flex: 1; }\n.inline-edit-toggle { padding: 0.5rem 0.75rem; border: 1px solid var(--color-border); border-radius: 4px; background: var(--color-bg); cursor: pointer; font-size: 1rem; transition: all 0.2s; }\n.inline-edit-toggle:hover { background: var(--color-bg-muted); border-color: var(--color-primary); }\n.inline-edit-toggle--active { background: var(--color-primary); color: white; border-color: var(--color-primary); }\n\n.inline-editor { margin-top: 0.5rem; border: 1px solid var(--color-border); border-radius: 6px; overflow: hidden; }\n.inline-editor--hidden { display: none; }\n.inline-editor__textarea { width: 100%; border: none; padding: 0.75rem; font-family: monospace; font-size: 0.85rem; resize: vertical; min-height: 120px; background: var(--color-bg); }\n.inline-editor__textarea:focus { outline: none; background: var(--color-bg-muted); }\n.inline-editor__footer { display: flex; justify-content: space-between; align-items: center; padding: 0.5rem 0.75rem; background: var(--color-bg-muted); border-top: 1px solid var(--color-border); }\n.inline-editor__version { font-size: 0.8rem; color: var(--color-text-muted); }\n.inline-editor__save { padding: 0.4rem 1rem; background: var(--color-primary); color: white; border: none; border-radius: 4px; cursor: pointer; font-size: 0.85rem; transition: background 0.2s; }\n.inline-editor__save:hover { background: var(--color-primary-dark, #2563eb); }\n.inline-editor__save--success { background: var(--color-success, #22c55e); }\n\n@media (max-width: 600px) {\n .form-row { flex-direction: column; gap: 0; }\n .critic-grid { grid-template-columns: 1fr; }\n}"
}
}
{
"tool_response": {
"filePath": "\/var\/www\/dev.campus.systemische-tools.de\/src\/View\/content\/new.php",
"oldString": "\/* Critic Cards *\/\n.critic-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 0.75rem; }\n.critic-card { display: flex; flex-direction: column; padding: 0.75rem 1rem; border: 2px solid var(--color-border); border-radius: 8px; cursor: pointer; transition: all 0.2s; background: var(--color-bg); }\n.critic-card:hover { border-color: var(--color-primary-light); background: var(--color-bg-muted); }\n.critic-card--selected { border-color: var(--color-primary); background: var(--color-primary-bg, rgba(59, 130, 246, 0.1)); }\n.critic-card input[type=\"checkbox\"] { position: absolute; opacity: 0; pointer-events: none; }\n.critic-card__name { font-weight: 600; font-size: 0.95rem; margin-bottom: 0.25rem; }\n.critic-card__desc { font-size: 0.8rem; color: var(--color-text-muted); line-height: 1.3; }\n\n@media (max-width: 600px) {\n .form-row { flex-direction: column; gap: 0; }\n .critic-grid { grid-template-columns: 1fr; }\n}",
"newString": "\/* Critic Cards *\/\n.critic-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 0.75rem; }\n.critic-card { display: flex; flex-direction: column; padding: 0.75rem 1rem; border: 2px solid var(--color-border); border-radius: 8px; cursor: pointer; transition: all 0.2s; background: var(--color-bg); }\n.critic-card:hover { border-color: var(--color-primary-light); background: var(--color-bg-muted); }\n.critic-card--selected { border-color: var(--color-primary); background: var(--color-primary-bg, rgba(59, 130, 246, 0.1)); }\n.critic-card input[type=\"checkbox\"] { position: absolute; opacity: 0; pointer-events: none; }\n.critic-card__name { font-weight: 600; font-size: 0.95rem; margin-bottom: 0.25rem; }\n.critic-card__desc { font-size: 0.8rem; color: var(--color-text-muted); line-height: 1.3; }\n\n\/* Inline Editor *\/\n.inline-edit-group { display: flex; gap: 0.5rem; align-items: stretch; }\n.inline-edit-group .form-select { flex: 1; }\n.inline-edit-toggle { padding: 0.5rem 0.75rem; border: 1px solid var(--color-border); border-radius: 4px; background: var(--color-bg); cursor: pointer; font-size: 1rem; transition: all 0.2s; }\n.inline-edit-toggle:hover { background: var(--color-bg-muted); border-color: var(--color-primary); }\n.inline-edit-toggle--active { background: var(--color-primary); color: white; border-color: var(--color-primary); }\n\n.inline-editor { margin-top: 0.5rem; border: 1px solid var(--color-border); border-radius: 6px; overflow: hidden; }\n.inline-editor--hidden { display: none; }\n.inline-editor__textarea { width: 100%; border: none; padding: 0.75rem; font-family: monospace; font-size: 0.85rem; resize: vertical; min-height: 120px; background: var(--color-bg); }\n.inline-editor__textarea:focus { outline: none; background: var(--color-bg-muted); }\n.inline-editor__footer { display: flex; justify-content: space-between; align-items: center; padding: 0.5rem 0.75rem; background: var(--color-bg-muted); border-top: 1px solid var(--color-border); }\n.inline-editor__version { font-size: 0.8rem; color: var(--color-text-muted); }\n.inline-editor__save { padding: 0.4rem 1rem; background: var(--color-primary); color: white; border: none; border-radius: 4px; cursor: pointer; font-size: 0.85rem; transition: background 0.2s; }\n.inline-editor__save:hover { background: var(--color-primary-dark, #2563eb); }\n.inline-editor__save--success { background: var(--color-success, #22c55e); }\n\n@media (max-width: 600px) {\n .form-row { flex-direction: column; gap: 0; }\n .critic-grid { grid-template-columns: 1fr; }\n}",
"originalFile": "<?php ob_start(); ?>\n\n<nav class=\"breadcrumb\">\n <a href=\"\/content\">Content Studio<\/a> » Neuer Auftrag\n<\/nav>\n\n<h1>Neuer Auftrag<\/h1>\n\n<form class=\"form\" style=\"max-width: 700px;\"\n hx-post=\"\/content\"\n hx-headers='{\"X-CSRF-TOKEN\": \"<?= $csrfToken ?>\"}'\n hx-disabled-elt=\"button[type=submit]\">\n\n <fieldset>\n <legend>Inhalt<\/legend>\n <div class=\"form-group\">\n <label for=\"title\">Titel *<\/label>\n <input type=\"text\" id=\"title\" name=\"title\" class=\"form-input\" required\n placeholder=\"z.B. Blogpost über Teamcoaching\">\n <\/div>\n <div class=\"form-group\">\n <label for=\"briefing\">Briefing *<\/label>\n <textarea id=\"briefing\" name=\"briefing\" class=\"form-textarea\" rows=\"6\" required\n placeholder=\"Beschreibe, was der Content enthalten soll.\"><\/textarea>\n <\/div>\n <\/fieldset>\n\n <fieldset>\n <legend>KI-Einstellungen<\/legend>\n <div class=\"form-row\">\n <div class=\"form-group form-group--half\">\n <label for=\"model\">Sprachmodell<\/label>\n <select id=\"model\" name=\"model\" class=\"form-select\">\n <?php foreach ($models ?? [] as $modelId => $modelName): ?>\n <option value=\"<?= $modelId ?>\" <?= $modelId === ($defaultModel ?? 'claude-sonnet-4-20250514') ? 'selected' : '' ?>><?= htmlspecialchars($modelName) ?><\/option>\n <?php endforeach; ?>\n <\/select>\n <\/div>\n <div class=\"form-group form-group--half\">\n <label for=\"context_limit\">Kontext-Quellen<\/label>\n <?php $ctxLimit = $defaultContextLimit ?? 5; ?>\n <select id=\"context_limit\" name=\"context_limit\" class=\"form-select\">\n <option value=\"3\" <?= $ctxLimit === 3 ? 'selected' : '' ?>>3 Quellen<\/option>\n <option value=\"5\" <?= $ctxLimit === 5 ? 'selected' : '' ?>>5 Quellen<\/option>\n <option value=\"10\" <?= $ctxLimit === 10 ? 'selected' : '' ?>>10 Quellen<\/option>\n <option value=\"15\" <?= $ctxLimit === 15 ? 'selected' : '' ?>>15 Quellen<\/option>\n <\/select>\n <\/div>\n <\/div>\n <div class=\"form-group\">\n <label>Collections (Wissensquellen)<\/label>\n <?php\n $selected = $defaultCollections ?? ['documents'];\n$variant = 'checkbox';\ninclude __DIR__ . '\/..\/partials\/form\/collections-select.php';\n?>\n <\/div>\n <div class=\"form-row\">\n <div class=\"form-group form-group--half\">\n <label for=\"temperature\">Temperatur: <span id=\"tempValue\"><?= number_format($defaultTemperature ?? 0.5, 1) ?><\/span><\/label>\n <input type=\"range\" id=\"temperature\" name=\"temperature\" class=\"form-slider\"\n min=\"0\" max=\"1\" step=\"0.1\" value=\"<?= $defaultTemperature ?? 0.5 ?>\">\n <div class=\"preset-buttons\">\n <button type=\"button\" class=\"preset-btn<?= ($defaultTemperature ?? 0.5) == 0.3 ? ' preset-btn--active' : '' ?>\" data-temp=\"0.3\" data-tokens=\"2048\">Präzise<\/button>\n <button type=\"button\" class=\"preset-btn<?= ($defaultTemperature ?? 0.5) == 0.5 ? ' preset-btn--active' : '' ?>\" data-temp=\"0.5\" data-tokens=\"4096\">Ausgewogen<\/button>\n <button type=\"button\" class=\"preset-btn<?= ($defaultTemperature ?? 0.5) == 0.9 ? ' preset-btn--active' : '' ?>\" data-temp=\"0.9\" data-tokens=\"4096\">Kreativ<\/button>\n <\/div>\n <\/div>\n <div class=\"form-group form-group--half\">\n <label for=\"max_tokens\">Max Tokens<\/label>\n <?php $maxTokens = $defaultMaxTokens ?? 4096; ?>\n <select id=\"max_tokens\" name=\"max_tokens\" class=\"form-select\">\n <option value=\"1024\" <?= $maxTokens === 1024 ? 'selected' : '' ?>>1024<\/option>\n <option value=\"2048\" <?= $maxTokens === 2048 ? 'selected' : '' ?>>2048<\/option>\n <option value=\"4096\" <?= $maxTokens === 4096 ? 'selected' : '' ?>>4096<\/option>\n <option value=\"8192\" <?= $maxTokens === 8192 ? 'selected' : '' ?>>8192<\/option>\n <\/select>\n <\/div>\n <\/div>\n <div class=\"form-row\">\n <div class=\"form-group form-group--half\">\n <label for=\"system_prompt_id\">System Prompt<\/label>\n <div class=\"inline-edit-group\">\n <select id=\"system_prompt_id\" name=\"system_prompt_id\" class=\"form-select\">\n <option value=\"\">-- Standard --<\/option>\n <?php foreach ($systemPrompts ?? [] as $prompt): ?>\n <option value=\"<?= $prompt['id'] ?>\" <?= ($defaultSystemPromptId ?? null) === (int) $prompt['id'] ? 'selected' : '' ?>><?= htmlspecialchars($prompt['name']) ?><\/option>\n <?php endforeach; ?>\n <\/select>\n <button type=\"button\" class=\"inline-edit-toggle\" data-config-type=\"system_prompt\" data-select-id=\"system_prompt_id\" aria-label=\"Bearbeiten\">✎<\/button>\n <\/div>\n <div id=\"systemPromptEditor\" class=\"inline-editor inline-editor--hidden\">\n <textarea id=\"systemPromptContent\" class=\"inline-editor__textarea\" rows=\"6\" placeholder=\"Inhalt wird geladen...\"><\/textarea>\n <div class=\"inline-editor__footer\">\n <span class=\"inline-editor__version\" id=\"systemPromptVersion\"><\/span>\n <button type=\"button\" class=\"inline-editor__save\" data-config-type=\"system_prompt\">Speichern<\/button>\n <\/div>\n <\/div>\n <\/div>\n <div class=\"form-group form-group--half form-group--checkbox\">\n <label class=\"checkbox-toggle\">\n <input type=\"checkbox\" id=\"quality_check\" name=\"quality_check\" value=\"1\" <?= ($defaultQualityCheck ?? false) ? 'checked' : '' ?>>\n <span class=\"checkbox-toggle__label\">Qualitätsprüfung (LLM-Validierung)<\/span>\n <\/label>\n <\/div>\n <\/div>\n <\/fieldset>\n\n <fieldset>\n <legend>Content-Konfiguration<\/legend>\n <div class=\"form-row\">\n <div class=\"form-group form-group--third\">\n <label for=\"author_profile_id\">Autorenprofil<\/label>\n <div class=\"inline-edit-group\">\n <select id=\"author_profile_id\" name=\"author_profile_id\" class=\"form-select\">\n <option value=\"\">-- Kein Profil --<\/option>\n <?php foreach ($profiles ?? [] as $profile): ?>\n <option value=\"<?= $profile['id'] ?>\" <?= ($defaultProfileId ?? null) === (int) $profile['id'] ? 'selected' : '' ?>><?= htmlspecialchars($profile['name']) ?><\/option>\n <?php endforeach; ?>\n <\/select>\n <button type=\"button\" class=\"inline-edit-toggle\" data-config-type=\"author_profile\" data-select-id=\"author_profile_id\" aria-label=\"Bearbeiten\">✎<\/button>\n <\/div>\n <div id=\"authorProfileEditor\" class=\"inline-editor inline-editor--hidden\">\n <textarea id=\"authorProfileContent\" class=\"inline-editor__textarea\" rows=\"6\" placeholder=\"Inhalt wird geladen...\"><\/textarea>\n <div class=\"inline-editor__footer\">\n <span class=\"inline-editor__version\" id=\"authorProfileVersion\"><\/span>\n <button type=\"button\" class=\"inline-editor__save\" data-config-type=\"author_profile\">Speichern<\/button>\n <\/div>\n <\/div>\n <\/div>\n <div class=\"form-group form-group--third\">\n <label for=\"contract_id\">Contract<\/label>\n <select id=\"contract_id\" name=\"contract_id\" class=\"form-select\">\n <option value=\"\">-- Kein Contract --<\/option>\n <?php foreach ($contracts ?? [] as $contract): ?>\n <option value=\"<?= $contract['id'] ?>\" <?= ($defaultContractId ?? null) === (int) $contract['id'] ? 'selected' : '' ?>><?= htmlspecialchars($contract['name']) ?><\/option>\n <?php endforeach; ?>\n <\/select>\n <\/div>\n <div class=\"form-group form-group--third\">\n <label for=\"structure_id\">Struktur<\/label>\n <select id=\"structure_id\" name=\"structure_id\" class=\"form-select\">\n <option value=\"\">-- Keine Struktur --<\/option>\n <?php foreach ($structures ?? [] as $structure): ?>\n <option value=\"<?= $structure['id'] ?>\" <?= ($defaultStructureId ?? null) === (int) $structure['id'] ? 'selected' : '' ?>><?= htmlspecialchars($structure['name']) ?><\/option>\n <?php endforeach; ?>\n <\/select>\n <\/div>\n <\/div>\n <\/fieldset>\n\n <?php if (!empty($critics)): ?>\n <fieldset>\n <legend>Kritiker <span class=\"legend-hint\">(für Qualitätsprüfung)<\/span><\/legend>\n <p class=\"fieldset-info\">Wähle die Kritiker, die den generierten Content prüfen sollen. <a href=\"\/config?type=critic\" class=\"link-muted\">Kritiker verwalten →<\/a><\/p>\n <div class=\"critic-grid\">\n <?php foreach ($critics as $critic):\n $isSelected = in_array((int) $critic['id'], $defaultSelectedCritics ?? [], true);\n ?>\n <label class=\"critic-card <?= $isSelected ? 'critic-card--selected' : '' ?>\">\n <input type=\"checkbox\" name=\"critics[]\" value=\"<?= $critic['id'] ?>\" <?= $isSelected ? 'checked' : '' ?>>\n <span class=\"critic-card__name\"><?= htmlspecialchars($critic['name']) ?><\/span>\n <?php if (!empty($critic['description'])): ?>\n <span class=\"critic-card__desc\"><?= htmlspecialchars($critic['descr... [TRUNCATED-acacea11f1cd1677]",
"structuredPatch": [
{
"oldStart": 218,
"oldLines": 6,
"newStart": 218,
"newLines": 23,
"lines": [
" .critic-card__name { font-weight: 600; font-size: 0.95rem; margin-bottom: 0.25rem; }",
" .critic-card__desc { font-size: 0.8rem; color: var(--color-text-muted); line-height: 1.3; }",
" ",
"+\/* Inline Editor *\/",
"+.inline-edit-group { display: flex; gap: 0.5rem; align-items: stretch; }",
"+.inline-edit-group .form-select { flex: 1; }",
"+.inline-edit-toggle { padding: 0.5rem 0.75rem; border: 1px solid var(--color-border); border-radius: 4px; background: var(--color-bg); cursor: pointer; font-size: 1rem; transition: all 0.2s; }",
"+.inline-edit-toggle:hover { background: var(--color-bg-muted); border-color: var(--color-primary); }",
"+.inline-edit-toggle--active { background: var(--color-primary); color: white; border-color: var(--color-primary); }",
"+",
"+.inline-editor { margin-top: 0.5rem; border: 1px solid var(--color-border); border-radius: 6px; overflow: hidden; }",
"+.inline-editor--hidden { display: none; }",
"+.inline-editor__textarea { width: 100%; border: none; padding: 0.75rem; font-family: monospace; font-size: 0.85rem; resize: vertical; min-height: 120px; background: var(--color-bg); }",
"+.inline-editor__textarea:focus { outline: none; background: var(--color-bg-muted); }",
"+.inline-editor__footer { display: flex; justify-content: space-between; align-items: center; padding: 0.5rem 0.75rem; background: var(--color-bg-muted); border-top: 1px solid var(--color-border); }",
"+.inline-editor__version { font-size: 0.8rem; color: var(--color-text-muted); }",
"+.inline-editor__save { padding: 0.4rem 1rem; background: var(--color-primary); color: white; border: none; border-radius: 4px; cursor: pointer; font-size: 0.85rem; transition: background 0.2s; }",
"+.inline-editor__save:hover { background: var(--color-primary-dark, #2563eb); }",
"+.inline-editor__save--success { background: var(--color-success, #22c55e); }",
"+",
" @media (max-width: 600px) {",
" .form-row { flex-direction: column; gap: 0; }",
" .critic-grid { grid-template-columns: 1fr; }"
]
}
],
"userModified": false,
"replaceAll": false
}
}