Zeitplan: gesamten Zeitplan direkt in der Sektion deaktivierbar

aktiv-Hauptschalter aus der Sektion 'Automatische Suche' in die Sektion
'Zeitplan' verschoben, sodass der gesamte Zeitplan dort ein-/ausgeschaltet
werden kann. Wochentage + Uhrzeit werden beim Deaktivieren nur abgedunkelt,
die Einstellungen bleiben erhalten.

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2026-07-20 18:26:00 +02:00
co-authored by Claude
parent 9ac946bc9e
commit 472259f189
+40 -24
View File
@@ -54,28 +54,6 @@
<form action="/jobsuche" method="POST" class="space-y-6">
<% if (fremd) { %><input type="hidden" name="ziel_user" value="<%= zielUser.id %>"><% } %>
<section class="bg-white dark:bg-gray-800 rounded-lg shadow-md p-6">
<div class="flex items-start justify-between gap-4">
<div>
<h3 class="text-base font-semibold text-gray-800 dark:text-white">Automatische Suche</h3>
<p class="text-sm text-gray-500 dark:text-gray-400 mt-1">
Ist sie aktiv, sucht die KI nach Zeitplan und legt neue Treffer als Jobangebote an.
</p>
</div>
<label class="inline-flex items-center gap-2 shrink-0">
<input type="checkbox" name="aktiv" value="1" <%= profil.aktiv ? 'checked' : '' %>
<%= !darfZeitplanAendern ? 'disabled' : '' %>
class="rounded border-gray-300 dark:border-gray-600 text-blue-600 focus:ring-blue-500 disabled:opacity-60">
<span class="text-sm text-gray-700 dark:text-gray-300">aktiv</span>
</label>
</div>
<% if (!darfZeitplanAendern) { %>
<p class="text-xs text-amber-700 dark:text-amber-300 mt-3">
Der Zeitplan (aktiv, Wochentage, Uhrzeit) wird vom Administrator verwaltet.
</p>
<% } %>
</section>
<section class="bg-white dark:bg-gray-800 rounded-lg shadow-md p-6">
<h3 class="text-base font-semibold text-gray-800 dark:text-white">Wo gesucht wird</h3>
<p class="text-sm text-gray-500 dark:text-gray-400 mt-1 mb-5">Modus und Orte.</p>
@@ -163,10 +141,29 @@
</section>
<section class="bg-white dark:bg-gray-800 rounded-lg shadow-md p-6">
<div class="flex items-start justify-between gap-4">
<div>
<h3 class="text-base font-semibold text-gray-800 dark:text-white">Zeitplan</h3>
<p class="text-sm text-gray-500 dark:text-gray-400 mt-1 mb-5">Wann die automatische Suche laufen soll.</p>
<p class="text-sm text-gray-500 dark:text-gray-400 mt-1">
Ist er aktiv, sucht die KI automatisch an den gewählten Tagen zur eingestellten Uhrzeit
und legt neue Treffer als Jobangebote an. Deaktivierst du ihn, läuft keine automatische
Suche mehr — die eingestellten Wochentage und die Uhrzeit bleiben aber erhalten.
</p>
</div>
<label class="inline-flex items-center gap-2 shrink-0">
<input type="checkbox" name="aktiv" value="1" id="zeitplan_aktiv" <%= profil.aktiv ? 'checked' : '' %>
<%= !darfZeitplanAendern ? 'disabled' : '' %>
class="rounded border-gray-300 dark:border-gray-600 text-blue-600 focus:ring-blue-500 disabled:opacity-60">
<span class="text-sm text-gray-700 dark:text-gray-300">aktiv</span>
</label>
</div>
<% if (!darfZeitplanAendern) { %>
<p class="text-xs text-amber-700 dark:text-amber-300 mt-3">
Der Zeitplan (aktiv, Wochentage, Uhrzeit) wird vom Administrator verwaltet.
</p>
<% } %>
<div class="flex flex-wrap gap-2 mb-5">
<div id="zeitplan_felder" class="flex flex-wrap gap-2 mb-5 mt-5 <%= !profil.aktiv ? 'opacity-60' : '' %>">
<% wochentage.forEach(function (t) { %>
<label class="inline-flex items-center gap-1.5 px-3 py-1.5 rounded-md border border-gray-300 dark:border-gray-600 text-sm <%= darfZeitplanAendern ? 'cursor-pointer hover:bg-gray-50 dark:hover:bg-gray-700/40' : 'opacity-70 cursor-not-allowed' %>">
<input type="checkbox" name="tage" value="<%= t.nr %>"
@@ -321,6 +318,25 @@
}
});
})();
// Zeitplan aktiv/deaktiv: stimmt die Sichtbarkeit der Wochentage + Uhrzeit
// mit dem Hauptschalter ab. Die Felder werden nur abgedunkelt, nicht
// deaktiviert — so bleiben die eingestellten Wochentage erhalten, wenn der
// Zeitplan später wieder aktiviert wird. Ist der Schalter gesperrt (Admin
// verwaltet den Zeitplan), greift die serverseitige Vorgabe unverändert.
(function () {
const aktiv = document.getElementById('zeitplan_aktiv');
if (!aktiv || aktiv.disabled) return;
const felder = document.getElementById('zeitplan_felder');
const zeit = document.getElementById('zeitplan_zeit');
function sync() {
const aus = !aktiv.checked;
if (felder) felder.classList.toggle('opacity-60', aus);
if (zeit) zeit.classList.toggle('opacity-60', aus);
}
sync();
aktiv.addEventListener('change', sync);
})();
</script>
</body>
</html>