+
+
+
+
Nieuwe Brainstormsessie
-
+
@@ -136,14 +136,14 @@ require_once __DIR__ . '/includes/header.php';
- Onderwerp / Titel
-
+ Onderwerp / Titel
+
-
+
Sessie Aanmaken & Canvas Openen
-
+
Annuleren
@@ -170,4 +170,3 @@ require_once __DIR__ . '/includes/header.php';
-
diff --git a/brainstorm_canvas.php b/brainstorm_canvas.php
index 3f69f91..a64d0be 100644
--- a/brainstorm_canvas.php
+++ b/brainstorm_canvas.php
@@ -17,7 +17,7 @@ $stmtSession->execute([$sessionId]);
$session = $stmtSession->fetch();
if (!$session) {
- echo "
Brainstormsessie niet gevonden.
Terug ";
+ echo "
Brainstormsessie niet gevonden.
Terug ";
require_once __DIR__ . '/includes/footer.php';
exit;
}
@@ -32,41 +32,69 @@ $stmtCards->execute([$sessionId]);
$cards = $stmtCards->fetchAll();
$categories = [
- 'Ideeën' => ['title' => 'Ideeën & Concepten', 'icon' => 'lightbulb', 'color' => 'amber', 'border' => 'border-amber-500/40', 'bg' => 'bg-amber-950/20', 'badge' => 'bg-amber-500/20 text-amber-300'],
- 'Knelpunten' => ['title' => 'Knelpunten & Uitdagingen', 'icon' => 'alert-triangle', 'color' => 'rose', 'border' => 'border-rose-500/40', 'bg' => 'bg-rose-950/20', 'badge' => 'bg-rose-500/20 text-rose-300'],
- 'Oplossingen' => ['title' => 'Oplossingen & Features', 'icon' => 'rocket', 'color' => 'emerald', 'border' => 'border-emerald-500/40', 'bg' => 'bg-emerald-950/20', 'badge' => 'bg-emerald-500/20 text-emerald-300'],
- 'Quick Wins' => ['title' => 'Quick Wins (Direct te doen)', 'icon' => 'zap', 'color' => 'blue', 'border' => 'border-blue-500/40', 'bg' => 'bg-blue-950/20', 'badge' => 'bg-blue-500/20 text-blue-300'],
+ 'Ideeën' => [
+ 'title' => 'Ideeën & Concepten',
+ 'icon' => 'lightbulb',
+ 'color' => 'amber',
+ 'border' => 'border-amber-200 dark:border-amber-500/40',
+ 'bg' => 'bg-amber-50/60 dark:bg-amber-950/20',
+ 'badge' => 'bg-amber-500/15 text-amber-800 dark:text-amber-300'
+ ],
+ 'Knelpunten' => [
+ 'title' => 'Knelpunten & Uitdagingen',
+ 'icon' => 'alert-triangle',
+ 'color' => 'rose',
+ 'border' => 'border-rose-200 dark:border-rose-500/40',
+ 'bg' => 'bg-rose-50/60 dark:bg-rose-950/20',
+ 'badge' => 'bg-rose-500/15 text-rose-800 dark:text-rose-300'
+ ],
+ 'Oplossingen' => [
+ 'title' => 'Oplossingen & Features',
+ 'icon' => 'rocket',
+ 'color' => 'emerald',
+ 'border' => 'border-emerald-200 dark:border-emerald-500/40',
+ 'bg' => 'bg-emerald-50/60 dark:bg-emerald-950/20',
+ 'badge' => 'bg-emerald-500/15 text-emerald-800 dark:text-emerald-300'
+ ],
+ 'Quick Wins' => [
+ 'title' => 'Quick Wins (Direct te doen)',
+ 'icon' => 'zap',
+ 'color' => 'blue',
+ 'border' => 'border-blue-200 dark:border-blue-500/40',
+ 'bg' => 'bg-blue-50/60 dark:bg-blue-950/20',
+ 'badge' => 'bg-blue-500/15 text-blue-800 dark:text-blue-300'
+ ],
];
?>
-
+
-
+
-
+
-
+
= htmlspecialchars($session['theme']) ?>
- Gestart door = htmlspecialchars($session['creator_name']) ?>
+ Gestart door = htmlspecialchars($session['creator_name']) ?>
-
+
= htmlspecialchars($session['title']) ?>
-
-
+
+
Nieuwe Kaart
-
+
Zet om naar Roadmap
@@ -78,14 +106,14 @@ $categories = [
$catConfig):
$catCards = array_filter($cards, fn($c) => $c['category'] === $catKey);
?>
-
+
-
+
-
-
= $catConfig['title'] ?>
+
+ = $catConfig['title'] ?>
-
+
= count($catCards) ?>
@@ -93,22 +121,22 @@ $categories = [
-
+
Nog geen kaarten in deze categorie.
-
+
-
- Selecteer
+
+ Selecteer
-
+
Op Roadmap
@@ -116,23 +144,23 @@ $categories = [
-
+
= htmlspecialchars($card['content']) ?>
-
+
= htmlspecialchars($card['author_name'] ?? 'Collega') ?>
-
+
= $card['votes'] ?>
-
+
@@ -143,7 +171,7 @@ $categories = [
-
+
Kaart toevoegen
@@ -153,22 +181,22 @@ $categories = [
-
-
-
-
-
+
+
+
+
+
Brainstormkaart Toevoegen
-
+
- Categorie
-
+ Categorie
+
💡 Ideeën & Concepten
⚠️ Knelpunten & Uitdagingen
🚀 Oplossingen & Features
@@ -177,15 +205,15 @@ $categories = [
- Idee / Beschrijving
-
+ Idee / Beschrijving
+
-
+
Plaats op Canvas
-
+
Annuleren
@@ -194,27 +222,27 @@ $categories = [
-
-
-
-
-
+
+
+
+
+
Zet Brainstorm om naar Roadmap
-
+
-
+
0 kaarten geselecteerd om om te zetten naar planbare roadmap items.
- Doel Kwartaal
-
+ Doel Kwartaal
+
Q1 (Jan - Mrt)
Q2 (Apr - Jun)
Q3 (Jul - Sep)
@@ -223,8 +251,8 @@ $categories = [
-
Item Type
-
+ Item Type
+
Feature / Functionaliteit
Epic (Groot project)
Mijlpaal
@@ -235,8 +263,8 @@ $categories = [
-
+
Definitief Toevoegen aan Roadmap
-
+
Annuleren
@@ -368,4 +396,3 @@ async function submitConvertToRoadmap() {
-
diff --git a/includes/auth.php b/includes/auth.php
index dd05667..92aa78e 100644
--- a/includes/auth.php
+++ b/includes/auth.php
@@ -98,6 +98,24 @@ function ensure_notification_columns(PDO $db): void {
}
}
+/**
+ * Garandeert dat de kolom voor weergavethema (dark, light, system) aanwezig is in MariaDB
+ */
+function ensure_theme_column(PDO $db): void {
+ static $themeChecked = false;
+ if ($themeChecked) return;
+ $themeChecked = true;
+
+ try {
+ $result = $db->query("SHOW COLUMNS FROM `users` LIKE 'theme'");
+ if (!$result || $result->rowCount() === 0) {
+ $db->exec("ALTER TABLE `users` ADD COLUMN `theme` VARCHAR(20) NOT NULL DEFAULT 'dark' AFTER `notification_settings`");
+ }
+ } catch (Throwable $e) {
+ // Stil negeren indien al aanwezig
+ }
+}
+
/**
* Genereert en bewaart een persistente 'Onthoud mij' token in MariaDB en plaatst een veilige cookie
*/
@@ -399,4 +417,43 @@ function update_user_notification_settings(int $userId, array $settings): bool {
}
}
+/**
+ * Haalt het voorkeursthema op voor een gebruiker ('dark', 'light' of 'system')
+ */
+function get_user_theme(int $userId): string {
+ $db = get_db_connection();
+ ensure_theme_column($db);
+
+ try {
+ $stmt = $db->prepare("SELECT theme FROM users WHERE id = ?");
+ $stmt->execute([$userId]);
+ $theme = $stmt->fetchColumn();
+ if ($theme && in_array($theme, ['dark', 'light', 'system'])) {
+ return $theme;
+ }
+ } catch (Throwable $e) {
+ error_log("get_user_theme error: " . $e->getMessage());
+ }
+
+ return 'dark';
+}
+
+/**
+ * Slaat het voorkeursthema van een gebruiker op ('dark', 'light' of 'system')
+ */
+function update_user_theme(int $userId, string $theme): bool {
+ $db = get_db_connection();
+ ensure_theme_column($db);
+
+ $theme = in_array($theme, ['dark', 'light', 'system']) ? $theme : 'dark';
+
+ try {
+ $stmt = $db->prepare("UPDATE users SET theme = ? WHERE id = ?");
+ return $stmt->execute([$theme, $userId]);
+ } catch (Throwable $e) {
+ error_log("update_user_theme error: " . $e->getMessage());
+ return false;
+ }
+}
+
diff --git a/includes/footer.php b/includes/footer.php
index 65cb76f..e50eeda 100644
--- a/includes/footer.php
+++ b/includes/footer.php
@@ -1,14 +1,14 @@
-
+
- Fociz
+ Fociz
•
- Focus & Structuur Systeem
+ Focus & Structuur Systeem
- Beveiligd met MariaDB & Tweestapsverificatie (2FA)
+ Beveiligd met MariaDB & Tweestapsverificatie (2FA)
@@ -24,4 +24,3 @@