Persoenliche Angaben unter Vorlagen statt hardcoded/Settings-Modal
- settings-Tabelle um email/telefon/ort/webseite/geburtsdatum erweitert (CREATE + ALTER-Migration + Default-INSERT) - Vorlagen-Seite: neuer Bereich "Persoenliche Angaben" (8 Felder), POST /vorlagen/persoenlich; Settings-Modal + Zahnrad-Button entfernt - Generierung: Kontakt kommt verbindlich aus den Settings (buildHeader laesst gespeicherte Werte ueber die KI-Extraktion gewinnen), bewerber- Fakten + Prompt angepasst; Design-Vorschau zeigt echte Kontaktdaten - main.js: Settings-Modal-Handling entfernt; /api/settings bleibt bestehen Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -474,78 +474,6 @@
|
||||
|
||||
<%- include('partials/footer') %>
|
||||
|
||||
<!-- Settings Modal -->
|
||||
<div id="settingsModal" class="fixed inset-0 bg-black bg-opacity-50 z-50 hidden">
|
||||
<div class="flex items-center justify-center min-h-screen p-4">
|
||||
<div class="bg-white dark:bg-gray-800 rounded-lg shadow-xl w-full max-w-md p-6">
|
||||
<div class="flex justify-between items-center mb-6">
|
||||
<h2 class="text-xl font-bold text-gray-800 dark:text-white">Benutzereinstellungen</h2>
|
||||
<button id="closeSettingsModal" class="text-gray-400 hover:text-gray-600 dark:hover:text-gray-300">
|
||||
<svg class="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12"></path>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<form id="settingsForm" class="space-y-4">
|
||||
<div>
|
||||
<label for="userName" class="block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2">
|
||||
Vollständiger Name *
|
||||
</label>
|
||||
<input
|
||||
type="text"
|
||||
id="userName"
|
||||
name="name"
|
||||
required
|
||||
class="w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-md bg-white dark:bg-gray-700 text-gray-800 dark:text-white"
|
||||
placeholder="Max Mustermann"
|
||||
value="<%= settings.name || '' %>">
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<label for="userAddress" class="block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2">
|
||||
Adresse *
|
||||
</label>
|
||||
<textarea
|
||||
id="userAddress"
|
||||
name="adresse"
|
||||
required
|
||||
rows="2"
|
||||
class="w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-md bg-white dark:bg-gray-700 text-gray-800 dark:text-white"
|
||||
placeholder="Musterstraße 1, 12345 Musterstadt"><%= settings.adresse || '' %></textarea>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<label for="customerNumber" class="block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2">
|
||||
Jobcenter Kundennummer
|
||||
</label>
|
||||
<input
|
||||
type="text"
|
||||
id="customerNumber"
|
||||
name="kundennummer"
|
||||
class="w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-md bg-white dark:bg-gray-700 text-gray-800 dark:text-white"
|
||||
placeholder="z.B. 123456789"
|
||||
value="<%= settings.kundennummer || '' %>">
|
||||
</div>
|
||||
|
||||
<div class="flex justify-end space-x-3 pt-4">
|
||||
<button
|
||||
type="button"
|
||||
id="cancelSettings"
|
||||
class="px-4 py-2 border border-gray-300 dark:border-gray-600 rounded-md text-gray-700 dark:text-gray-300 hover:bg-gray-50 dark:hover:bg-gray-700 transition-colors">
|
||||
Abbrechen
|
||||
</button>
|
||||
<button
|
||||
type="submit"
|
||||
class="px-4 py-2 bg-blue-600 hover:bg-blue-700 text-white rounded-md transition-colors">
|
||||
Speichern
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Add/Edit Application Modal -->
|
||||
<div id="applicationModal" class="fixed inset-0 bg-black bg-opacity-50 z-50 hidden">
|
||||
<div class="flex items-center justify-center min-h-screen p-4">
|
||||
|
||||
@@ -66,20 +66,6 @@
|
||||
</svg>
|
||||
</button>
|
||||
|
||||
<!-- Settings button -->
|
||||
<% if (typeof hideSettings === 'undefined' || !hideSettings) { %>
|
||||
<button
|
||||
id="settingsBtn"
|
||||
class="p-2 rounded-full bg-white/20 hover:bg-white/30 transition-colors text-white"
|
||||
aria-label="Einstellungen"
|
||||
>
|
||||
<svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z"></path>
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 12a3 3 0 11-6 0 3 3 0 016 0z"></path>
|
||||
</svg>
|
||||
</button>
|
||||
<% } %>
|
||||
|
||||
<!-- Notification bell: unread received e-mails (incl. auto-assigned replies) -->
|
||||
<div class="relative" id="notifWrap">
|
||||
<button id="notifBtn" type="button"
|
||||
|
||||
+76
-1
@@ -40,6 +40,81 @@
|
||||
</div>
|
||||
<% } %>
|
||||
|
||||
<!-- Persönliche Angaben (formerly the index-page settings modal) -->
|
||||
<h2 id="persoenlich" class="text-xl font-bold text-gray-800 dark:text-white mt-10 mb-2 scroll-mt-4">Persönliche Angaben</h2>
|
||||
<p class="text-sm text-gray-500 dark:text-gray-400 mb-6">
|
||||
Deine Kontaktdaten fließen in jede Bewerbung ein – oben in Lebenslauf und Anschreiben
|
||||
sowie in die Kontaktleiste. Die KI übernimmt sie unverändert und erfindet nichts mehr;
|
||||
sie müssen dafür nicht länger in den Basis-Unterlagen stehen.
|
||||
</p>
|
||||
|
||||
<section class="bg-white dark:bg-gray-800 rounded-lg shadow-md p-6 mb-8">
|
||||
<form action="/vorlagen/persoenlich" method="POST" class="space-y-4">
|
||||
<div>
|
||||
<label for="name" class="block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2">
|
||||
Vollständiger Name *
|
||||
</label>
|
||||
<input type="text" id="name" name="name" required
|
||||
class="w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-md bg-white dark:bg-gray-700 text-gray-800 dark:text-white"
|
||||
placeholder="Max Mustermann" value="<%= settings.name || '' %>">
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<label for="adresse" class="block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2">
|
||||
Adresse
|
||||
</label>
|
||||
<textarea id="adresse" name="adresse" rows="2"
|
||||
class="w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-md bg-white dark:bg-gray-700 text-gray-800 dark:text-white"
|
||||
placeholder="Musterstraße 1, 12345 Musterstadt"><%= settings.adresse || '' %></textarea>
|
||||
</div>
|
||||
|
||||
<div class="grid gap-4 sm:grid-cols-2">
|
||||
<div>
|
||||
<label for="email" class="block text-xs font-medium text-gray-500 dark:text-gray-400 mb-1">E-Mail</label>
|
||||
<input type="email" id="email" name="email"
|
||||
class="w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-md bg-white dark:bg-gray-700 text-gray-800 dark:text-white"
|
||||
placeholder="name@example.com" value="<%= settings.email || '' %>">
|
||||
</div>
|
||||
<div>
|
||||
<label for="telefon" class="block text-xs font-medium text-gray-500 dark:text-gray-400 mb-1">Telefon</label>
|
||||
<input type="text" id="telefon" name="telefon"
|
||||
class="w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-md bg-white dark:bg-gray-700 text-gray-800 dark:text-white"
|
||||
placeholder="z. B. 02043 123456" value="<%= settings.telefon || '' %>">
|
||||
</div>
|
||||
<div>
|
||||
<label for="ort" class="block text-xs font-medium text-gray-500 dark:text-gray-400 mb-1">Wohnort</label>
|
||||
<input type="text" id="ort" name="ort"
|
||||
class="w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-md bg-white dark:bg-gray-700 text-gray-800 dark:text-white"
|
||||
placeholder="z. B. Gladbeck" value="<%= settings.ort || '' %>">
|
||||
</div>
|
||||
<div>
|
||||
<label for="webseite" class="block text-xs font-medium text-gray-500 dark:text-gray-400 mb-1">Webseite</label>
|
||||
<input type="text" id="webseite" name="webseite"
|
||||
class="w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-md bg-white dark:bg-gray-700 text-gray-800 dark:text-white"
|
||||
placeholder="z. B. hackner.dev" value="<%= settings.webseite || '' %>">
|
||||
</div>
|
||||
<div>
|
||||
<label for="geburtsdatum" class="block text-xs font-medium text-gray-500 dark:text-gray-400 mb-1">Geburtsdatum</label>
|
||||
<input type="text" id="geburtsdatum" name="geburtsdatum"
|
||||
class="w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-md bg-white dark:bg-gray-700 text-gray-800 dark:text-white"
|
||||
placeholder="TT.MM.JJJJ" value="<%= settings.geburtsdatum || '' %>">
|
||||
</div>
|
||||
<div>
|
||||
<label for="kundennummer" class="block text-xs font-medium text-gray-500 dark:text-gray-400 mb-1">Jobcenter-Kundennummer</label>
|
||||
<input type="text" id="kundennummer" name="kundennummer"
|
||||
class="w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-md bg-white dark:bg-gray-700 text-gray-800 dark:text-white"
|
||||
placeholder="z. B. 123456789" value="<%= settings.kundennummer || '' %>">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="flex justify-end">
|
||||
<button type="submit" class="px-4 py-2 bg-green-600 hover:bg-green-700 text-white rounded-md transition-colors">
|
||||
Speichern
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
</section>
|
||||
|
||||
<!-- Existing base documents -->
|
||||
<section class="space-y-4 mb-8">
|
||||
<% if (basisDokumente.length === 0) { %>
|
||||
@@ -257,7 +332,7 @@
|
||||
<p class="text-sm text-gray-500 dark:text-gray-400 mb-6">
|
||||
Aussehen von Anschreiben und Lebenslauf. <strong>Das Anschreiben übernimmt immer das Layout des
|
||||
Lebenslaufs</strong>, damit beide Dokumente als ein Set ankommen. Der Lebenslauf passt in jedem Layout
|
||||
garantiert auf eine Seite. Die Vorschau zeigt Musterinhalte mit deinem Namen, Foto und deiner
|
||||
garantiert auf eine Seite. Die Vorschau zeigt Musterinhalte mit deinen Kontaktdaten, Foto und deiner
|
||||
Unterschrift, ohne dass die KI läuft.
|
||||
</p>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user