Workdays
This commit is contained in:
@@ -174,6 +174,15 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
||||
|
||||
// 3. Organisatie Werkdag Standaarden opslaan (Release v1.4)
|
||||
elseif ($action === 'save_workday_settings') {
|
||||
$rawWorkdays = isset($_POST['workdays']) && is_array($_POST['workdays'])
|
||||
? array_values(array_filter(array_map('intval', $_POST['workdays']), fn($d) => $d >= 1 && $d <= 7))
|
||||
: [1, 2, 3, 4, 5];
|
||||
if (empty($rawWorkdays)) {
|
||||
$rawWorkdays = [1, 2, 3, 4, 5];
|
||||
}
|
||||
sort($rawWorkdays);
|
||||
$workdaysStr = implode(',', $rawWorkdays);
|
||||
|
||||
$workdayStart = trim($_POST['workday_start'] ?? '08:30');
|
||||
$workdayEnd = trim($_POST['workday_end'] ?? '17:00');
|
||||
$lunchStart = trim($_POST['lunch_start'] ?? '12:30');
|
||||
@@ -183,6 +192,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
||||
$pomoBreak = max(2, min(30, (int)($_POST['pomodoro_break'] ?? 5)));
|
||||
$taskDuration = in_array((int)($_POST['default_task_duration'] ?? 30), [15, 30, 45, 60, 90, 120]) ? (int)$_POST['default_task_duration'] : 30;
|
||||
|
||||
set_system_setting('workdays', $workdaysStr);
|
||||
set_system_setting('workday_start', $workdayStart);
|
||||
set_system_setting('workday_end', $workdayEnd);
|
||||
set_system_setting('lunch_start', $lunchStart);
|
||||
@@ -192,7 +202,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
||||
set_system_setting('pomodoro_break', $pomoBreak);
|
||||
set_system_setting('default_task_duration', $taskDuration);
|
||||
|
||||
fociz_log_audit($userId, 'SETTINGS_UPDATED', 'workday_settings', null, ['workday_start' => $workdayStart, 'workday_end' => $workdayEnd], 'SUCCESS', $adminUser['email']);
|
||||
fociz_log_audit($userId, 'SETTINGS_UPDATED', 'workday_settings', null, ['workdays' => $workdaysStr, 'workday_start' => $workdayStart, 'workday_end' => $workdayEnd], 'SUCCESS', $adminUser['email']);
|
||||
|
||||
$message = "Organisatie werkdagstandaarden zijn succesvol bijgewerkt.";
|
||||
$messageType = 'success';
|
||||
@@ -929,6 +939,54 @@ require_once __DIR__ . '/includes/header.php';
|
||||
<input type="hidden" name="action" value="save_workday_settings">
|
||||
<input type="hidden" name="csrf_token" value="<?= htmlspecialchars(get_csrf_token()) ?>">
|
||||
|
||||
<!-- Actieve Werkdagen & Weekend Configuratie -->
|
||||
<div class="p-4 sm:p-5 rounded-2xl bg-slate-50 dark:bg-[#0c0f17] border border-slate-200 dark:border-slate-800 space-y-3">
|
||||
<div class="flex flex-col sm:flex-row sm:items-center justify-between gap-1">
|
||||
<div class="text-xs font-bold text-slate-900 dark:text-white flex items-center space-x-1.5">
|
||||
<i data-lucide="calendar-days" class="w-4 h-4 text-indigo-500"></i>
|
||||
<span>Actieve Werkdagen vs. Weekend</span>
|
||||
</div>
|
||||
<span class="text-[10px] text-slate-500 dark:text-slate-400">
|
||||
Ma t/m Vr zijn standaard werkdagen; Za & Zo gelden als weekend
|
||||
</span>
|
||||
</div>
|
||||
<p class="text-xs text-slate-500 dark:text-slate-400">
|
||||
Vink de dagen aan die voor uw organisatie als reguliere werkdagen gelden. Niet-aangevinkte dagen worden in Fociz visueel duidelijk gemarkeerd als <strong>Weekend / Vrije dag</strong> in de dagplanning, weekoverzichten en tijdlijnen.
|
||||
</p>
|
||||
|
||||
<?php
|
||||
$dayOptions = [
|
||||
1 => ['short' => 'Ma', 'full' => 'Maandag', 'type' => 'Werkdag'],
|
||||
2 => ['short' => 'Di', 'full' => 'Dinsdag', 'type' => 'Werkdag'],
|
||||
3 => ['short' => 'Wo', 'full' => 'Woensdag', 'type' => 'Werkdag'],
|
||||
4 => ['short' => 'Do', 'full' => 'Donderdag', 'type' => 'Werkdag'],
|
||||
5 => ['short' => 'Vr', 'full' => 'Vrijdag', 'type' => 'Werkdag'],
|
||||
6 => ['short' => 'Za', 'full' => 'Zaterdag', 'type' => 'Weekend'],
|
||||
7 => ['short' => 'Zo', 'full' => 'Zondag', 'type' => 'Weekend'],
|
||||
];
|
||||
?>
|
||||
<div class="grid grid-cols-2 sm:grid-cols-4 md:grid-cols-7 gap-2.5 pt-1">
|
||||
<?php foreach ($dayOptions as $dNum => $dInfo):
|
||||
$isChecked = in_array($dNum, $workdaySettings['workdays'], true);
|
||||
?>
|
||||
<label class="relative flex flex-col p-3 rounded-xl border cursor-pointer select-none transition-all <?= $isChecked ? 'bg-indigo-50/70 dark:bg-indigo-950/30 border-indigo-400 dark:border-indigo-600 shadow-2xs' : 'bg-white dark:bg-[#111622] border-slate-200/80 dark:border-slate-800 opacity-75 hover:opacity-100' ?>">
|
||||
<div class="flex items-center justify-between mb-1.5">
|
||||
<span class="text-xs font-black <?= $isChecked ? 'text-indigo-600 dark:text-indigo-400' : 'text-slate-700 dark:text-slate-300' ?>">
|
||||
<?= $dInfo['short'] ?>
|
||||
</span>
|
||||
<input type="checkbox" name="workdays[]" value="<?= $dNum ?>" <?= $isChecked ? 'checked' : '' ?> class="rounded text-indigo-600 focus:ring-indigo-500 border-slate-300 dark:border-slate-700 w-3.5 h-3.5 cursor-pointer">
|
||||
</div>
|
||||
<div class="text-[11px] font-semibold text-slate-800 dark:text-slate-200 leading-tight">
|
||||
<?= $dInfo['full'] ?>
|
||||
</div>
|
||||
<span class="mt-1 text-[9px] font-bold uppercase tracking-wider <?= $dInfo['type'] === 'Weekend' ? 'text-amber-600 dark:text-amber-400' : 'text-slate-400 dark:text-slate-500' ?>">
|
||||
<?= $dInfo['type'] ?>
|
||||
</span>
|
||||
</label>
|
||||
<?php endforeach; ?>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="grid grid-cols-1 sm:grid-cols-2 gap-4">
|
||||
<!-- Werkdag uren -->
|
||||
<div class="p-4 rounded-2xl bg-slate-50 dark:bg-[#0c0f17] border border-slate-200 dark:border-slate-800 space-y-3">
|
||||
|
||||
Reference in New Issue
Block a user