/bewerbung: Tabs Unterlagen/E-Mail + Admin-Nutzerdetailseite
- Bewerbungsdetail: Toggle zwischen Bewerbungsunterlagen und E-Mail-Korrespondenz (hash-basiert), weniger Scroll auf der Seite. - Admin: Klick auf einen Nutzer öffnet neue Verwaltungsseite /admin/users/:id (Passwort, Anmelden als, Jobsuche, Admin-Status, Löschen). - Admin-Tabelle: Löschen und Jobsuche aus den Aktionen entfernt (jetzt auf der Nutzerdetailseite). Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
+52
-3
@@ -496,10 +496,30 @@
|
||||
|
||||
</div>
|
||||
<div class="space-y-8">
|
||||
<!-- Bewerbungsunterlagen (KI-generiert) -->
|
||||
<% const genStatus = application.generierung_status; %>
|
||||
<% if (genStatus || (anhaenge && anhaenge.length) || (application.stellenbeschreibung && application.stellenbeschreibung.trim())) { %>
|
||||
<section id="unterlagen" class="bg-white dark:bg-gray-800 rounded-lg shadow-md p-6 mb-8"
|
||||
<% const zeigeUnterlagen = genStatus || (anhaenge && anhaenge.length) || (application.stellenbeschreibung && application.stellenbeschreibung.trim()); %>
|
||||
<% if (zeigeUnterlagen) { %>
|
||||
<!-- Umschalter Unterlagen <-> E-Mail-Korrespondenz -->
|
||||
<style>
|
||||
.bw-tab{display:inline-flex;align-items:center;gap:.45rem;padding:.5rem 1rem;border-radius:.625rem;font-size:.875rem;font-weight:500;color:rgb(75 85 99);background:transparent;border:1px solid transparent;cursor:pointer;transition:background-color .15s,color .15s,border-color .15s}
|
||||
.dark .bw-tab{color:rgb(209 213 219)}
|
||||
.bw-tab:hover{background:rgb(243 244 246)}
|
||||
.dark .bw-tab:hover{background:rgb(55 65 81)}
|
||||
.bw-tab.active{background:rgb(37 99 235);color:#fff}
|
||||
.bw-tab.active:hover{background:rgb(29 78 216)}
|
||||
</style>
|
||||
<div class="flex items-center gap-2" id="rechtsTabs">
|
||||
<button type="button" data-tab="unterlagen" class="bw-tab active">
|
||||
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"></path></svg>
|
||||
Unterlagen
|
||||
</button>
|
||||
<button type="button" data-tab="korrespondenz" class="bw-tab">
|
||||
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"></path></svg>
|
||||
E-Mail
|
||||
</button>
|
||||
</div>
|
||||
<!-- Bewerbungsunterlagen (KI-generiert) -->
|
||||
<section id="unterlagen" class="bg-white dark:bg-gray-800 rounded-lg shadow-md p-6"
|
||||
data-status="<%= genStatus || '' %>">
|
||||
<div class="flex flex-wrap items-center justify-between gap-3 mb-4">
|
||||
<h2 class="text-lg font-semibold text-gray-800 dark:text-white">Bewerbungsunterlagen</h2>
|
||||
@@ -1074,6 +1094,35 @@
|
||||
} catch (e) { /* keep polling */ }
|
||||
}, 4000);
|
||||
}
|
||||
|
||||
// --- Umschalter Unterlagen <-> E-Mail-Korrespondenz (rechte Spalte) ---
|
||||
(function () {
|
||||
var unterlagen = document.getElementById('unterlagen');
|
||||
var korrespondenz = document.getElementById('korrespondenz');
|
||||
if (!unterlagen || !korrespondenz) return; // kein Toggle nötig
|
||||
var tabs = Array.prototype.slice.call(document.querySelectorAll('#rechtsTabs [data-tab]'));
|
||||
function setActive(name) {
|
||||
unterlagen.classList.toggle('hidden', name !== 'unterlagen');
|
||||
korrespondenz.classList.toggle('hidden', name !== 'korrespondenz');
|
||||
tabs.forEach(function (t) { t.classList.toggle('active', t.getAttribute('data-tab') === name); });
|
||||
// E-Mail-iframes nachmessen, falls sie beim Laden versteckt waren.
|
||||
if (name === 'korrespondenz') {
|
||||
korrespondenz.querySelectorAll('.email-html-frame').forEach(fitFrame);
|
||||
}
|
||||
}
|
||||
function fromHash() {
|
||||
var h = (location.hash || '').replace(/^#/, '');
|
||||
return (h === 'unterlagen' || h === 'korrespondenz') ? h : 'unterlagen';
|
||||
}
|
||||
setActive(fromHash());
|
||||
window.addEventListener('hashchange', function () { setActive(fromHash()); });
|
||||
tabs.forEach(function (t) {
|
||||
t.addEventListener('click', function () {
|
||||
history.replaceState(null, '', '#' + t.getAttribute('data-tab'));
|
||||
setActive(t.getAttribute('data-tab'));
|
||||
});
|
||||
});
|
||||
})();
|
||||
})();
|
||||
|
||||
// Generation form: require at least one document, and keep the
|
||||
|
||||
Reference in New Issue
Block a user