Last security check
This commit is contained in:
@@ -1232,7 +1232,7 @@ require_once __DIR__ . '/includes/header.php';
|
|||||||
<div class="ml-3">
|
<div class="ml-3">
|
||||||
<div class="flex items-center space-x-1.5">
|
<div class="flex items-center space-x-1.5">
|
||||||
<span class="text-xs font-bold text-slate-900 dark:text-white">30 minuten</span>
|
<span class="text-xs font-bold text-slate-900 dark:text-white">30 minuten</span>
|
||||||
<span class="px-1.5 py-0.2 rounded text-[9px] font-extrabold bg-indigo-100 dark:bg-indigo-900/50 text-indigo-700 dark:text-indigo-300">Aanbevolen</span>
|
<span class="px-1.5 py-0.5 rounded text-[9px] font-extrabold bg-indigo-100 dark:bg-indigo-900/50 text-indigo-700 dark:text-indigo-300">Aanbevolen</span>
|
||||||
</div>
|
</div>
|
||||||
<span class="block text-[11px] text-slate-500 dark:text-slate-400 mt-0.5">NIST SP 800-63B & OWASP ASVS v4.0 standaard</span>
|
<span class="block text-[11px] text-slate-500 dark:text-slate-400 mt-0.5">NIST SP 800-63B & OWASP ASVS v4.0 standaard</span>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -693,7 +693,7 @@ async function aiSuggestRoadmapMeta(btn) {
|
|||||||
headers: {'Content-Type': 'application/json'},
|
headers: {'Content-Type': 'application/json'},
|
||||||
body: JSON.stringify({
|
body: JSON.stringify({
|
||||||
content: firstContent,
|
content: firstContent,
|
||||||
session_title: '<?= htmlspecialchars(addslashes($session['title'])) ?>'
|
session_title: <?= json_encode($session['title']) ?>
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
const data = await res.json();
|
const data = await res.json();
|
||||||
@@ -741,7 +741,7 @@ async function openAiBreakdownModal(cardId, content) {
|
|||||||
currentBreakdownItems = [];
|
currentBreakdownItems = [];
|
||||||
|
|
||||||
document.getElementById('breakdownIdeaText').innerText = `"${content}"`;
|
document.getElementById('breakdownIdeaText').innerText = `"${content}"`;
|
||||||
document.getElementById('breakdownSessionLabel').innerText = `Sessie: <?= htmlspecialchars(addslashes($session['title'])) ?> (<?= htmlspecialchars(addslashes($session['theme'])) ?>)`;
|
document.getElementById('breakdownSessionLabel').innerText = "Sessie: " + <?= json_encode($session['title']) ?> + " (" + <?= json_encode($session['theme']) ?> + ")";
|
||||||
|
|
||||||
const modal = document.getElementById('aiBreakdownModal');
|
const modal = document.getElementById('aiBreakdownModal');
|
||||||
modal.classList.remove('hidden');
|
modal.classList.remove('hidden');
|
||||||
@@ -795,8 +795,8 @@ async function fetchAiBreakdown(content) {
|
|||||||
body: JSON.stringify({
|
body: JSON.stringify({
|
||||||
session_id: sessionId,
|
session_id: sessionId,
|
||||||
content: content,
|
content: content,
|
||||||
session_title: '<?= htmlspecialchars(addslashes($session['title'])) ?>',
|
session_title: <?= json_encode($session['title']) ?>,
|
||||||
theme: '<?= htmlspecialchars(addslashes($session['theme'])) ?>',
|
theme: <?= json_encode($session['theme']) ?>,
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
+3
-2
@@ -131,12 +131,13 @@ function fociz_ai_chat_gemini(array $messages, array $options, array $aiSettings
|
|||||||
$payload['generationConfig']['responseMimeType'] = 'application/json';
|
$payload['generationConfig']['responseMimeType'] = 'application/json';
|
||||||
}
|
}
|
||||||
|
|
||||||
$endpoint = "https://generativelanguage.googleapis.com/v1beta/models/{$model}:generateContent?key=" . urlencode($apiKey);
|
$endpoint = "https://generativelanguage.googleapis.com/v1beta/models/{$model}:generateContent";
|
||||||
|
|
||||||
$response = fociz_http_request($endpoint, [
|
$response = fociz_http_request($endpoint, [
|
||||||
'method' => 'POST',
|
'method' => 'POST',
|
||||||
'headers' => [
|
'headers' => [
|
||||||
'Content-Type' => 'application/json',
|
'Content-Type' => 'application/json',
|
||||||
|
'x-goog-api-key' => $apiKey,
|
||||||
],
|
],
|
||||||
'body' => $payload,
|
'body' => $payload,
|
||||||
'timeout' => 45,
|
'timeout' => 45,
|
||||||
|
|||||||
@@ -56,7 +56,7 @@ $isLive = in_array(strtolower(trim($environment)), ['live', 'production', 'prod'
|
|||||||
<span>Development</span>
|
<span>Development</span>
|
||||||
</span>
|
</span>
|
||||||
|
|
||||||
<span class="hidden sm:inline-block text-[9px] font-mono font-bold px-1.5 py-0.2 rounded bg-red-500/20 text-red-300 border border-red-500/30">
|
<span class="hidden sm:inline-block text-[9px] font-mono font-bold px-1.5 py-0.5 rounded bg-red-500/20 text-red-300 border border-red-500/30">
|
||||||
DEV
|
DEV
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -191,7 +191,7 @@ $boardsJson = json_encode($boards, JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT
|
|||||||
class="flex items-center space-x-2 px-3 py-1.5 rounded-xl text-xs font-semibold bg-slate-100 hover:bg-slate-200 dark:bg-slate-800 dark:hover:bg-slate-700 text-slate-700 dark:text-slate-200 border border-slate-200 dark:border-slate-700 transition cursor-pointer shadow-2xs group">
|
class="flex items-center space-x-2 px-3 py-1.5 rounded-xl text-xs font-semibold bg-slate-100 hover:bg-slate-200 dark:bg-slate-800 dark:hover:bg-slate-700 text-slate-700 dark:text-slate-200 border border-slate-200 dark:border-slate-700 transition cursor-pointer shadow-2xs group">
|
||||||
<i data-lucide="sliders-horizontal" class="w-3.5 h-3.5 text-indigo-500 group-hover:rotate-12 transition-transform"></i>
|
<i data-lucide="sliders-horizontal" class="w-3.5 h-3.5 text-indigo-500 group-hover:rotate-12 transition-transform"></i>
|
||||||
<span>Filters & Statistieken</span>
|
<span>Filters & Statistieken</span>
|
||||||
<span id="activeFilterBadge" class="hidden px-1.5 py-0.2 rounded-full text-[10px] font-black bg-indigo-600 text-white leading-tight">0</span>
|
<span id="activeFilterBadge" class="hidden px-1.5 py-0.5 rounded-full text-[10px] font-black bg-indigo-600 text-white leading-tight">0</span>
|
||||||
<i data-lucide="chevron-down" id="filtersDrawerChevron" class="w-3.5 h-3.5 transition-transform duration-200"></i>
|
<i data-lucide="chevron-down" id="filtersDrawerChevron" class="w-3.5 h-3.5 transition-transform duration-200"></i>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -122,11 +122,11 @@ $jsonMessages = json_encode($messages, JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_Q
|
|||||||
<div class="flex items-center space-x-1.5 bg-slate-100/90 dark:bg-slate-800/60 p-1 rounded-xl border border-slate-200/70 dark:border-slate-700/60 text-xs font-bold w-full sm:w-auto">
|
<div class="flex items-center space-x-1.5 bg-slate-100/90 dark:bg-slate-800/60 p-1 rounded-xl border border-slate-200/70 dark:border-slate-700/60 text-xs font-bold w-full sm:w-auto">
|
||||||
<button onclick="setMailFilter('all')" id="filterBtn_all" class="flex-1 sm:flex-none px-3.5 py-1.5 rounded-lg bg-white dark:bg-slate-900 text-slate-900 dark:text-white shadow-xs transition">
|
<button onclick="setMailFilter('all')" id="filterBtn_all" class="flex-1 sm:flex-none px-3.5 py-1.5 rounded-lg bg-white dark:bg-slate-900 text-slate-900 dark:text-white shadow-xs transition">
|
||||||
<span>Alle Berichten</span>
|
<span>Alle Berichten</span>
|
||||||
<span class="ml-1 px-1.5 py-0.2 rounded-full text-[10px] bg-slate-100 dark:bg-slate-800 text-slate-600 dark:text-slate-400" id="countAll"><?= count($messages) ?></span>
|
<span class="ml-1 px-1.5 py-0.5 rounded-full text-[10px] bg-slate-100 dark:bg-slate-800 text-slate-600 dark:text-slate-400" id="countAll"><?= count($messages) ?></span>
|
||||||
</button>
|
</button>
|
||||||
<button onclick="setMailFilter('unread')" id="filterBtn_unread" class="flex-1 sm:flex-none px-3.5 py-1.5 rounded-lg text-slate-600 dark:text-slate-400 hover:text-slate-900 dark:hover:text-white transition">
|
<button onclick="setMailFilter('unread')" id="filterBtn_unread" class="flex-1 sm:flex-none px-3.5 py-1.5 rounded-lg text-slate-600 dark:text-slate-400 hover:text-slate-900 dark:hover:text-white transition">
|
||||||
<span>Ongelezen</span>
|
<span>Ongelezen</span>
|
||||||
<span class="ml-1 px-1.5 py-0.2 rounded-full text-[10px] bg-sky-100 dark:bg-sky-900/60 text-sky-700 dark:text-sky-300" id="countUnread"><?= $unreadCount ?></span>
|
<span class="ml-1 px-1.5 py-0.5 rounded-full text-[10px] bg-sky-100 dark:bg-sky-900/60 text-sky-700 dark:text-sky-300" id="countUnread"><?= $unreadCount ?></span>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
+4
-4
@@ -799,16 +799,16 @@ for ($h = $startHour; $h <= $endHour; $h++) {
|
|||||||
<div class="truncate">
|
<div class="truncate">
|
||||||
<div class="flex items-center space-x-1.5 truncate">
|
<div class="flex items-center space-x-1.5 truncate">
|
||||||
<?php if ($task['source'] === 'JIRA'): ?>
|
<?php if ($task['source'] === 'JIRA'): ?>
|
||||||
<span class="px-1.5 py-0.2 rounded bg-indigo-50 dark:bg-indigo-500/10 border border-indigo-200 dark:border-indigo-500/20 text-indigo-700 dark:text-indigo-400 font-mono text-[9px] font-bold">
|
<span class="px-1.5 py-0.5 rounded bg-indigo-50 dark:bg-indigo-500/10 border border-indigo-200 dark:border-indigo-500/20 text-indigo-700 dark:text-indigo-400 font-mono text-[9px] font-bold">
|
||||||
JIRA
|
JIRA
|
||||||
</span>
|
</span>
|
||||||
<?php elseif ($task['source'] === 'OUTLOOK_MAIL'): ?>
|
<?php elseif ($task['source'] === 'OUTLOOK_MAIL'): ?>
|
||||||
<span class="px-1.5 py-0.2 rounded bg-violet-50 dark:bg-violet-500/10 border border-violet-200 dark:border-violet-500/20 text-violet-700 dark:text-violet-400 font-mono text-[9px] font-bold flex items-center space-x-0.5">
|
<span class="px-1.5 py-0.5 rounded bg-violet-50 dark:bg-violet-500/10 border border-violet-200 dark:border-violet-500/20 text-violet-700 dark:text-violet-400 font-mono text-[9px] font-bold flex items-center space-x-0.5">
|
||||||
<i data-lucide="mail" class="w-2.5 h-2.5"></i>
|
<i data-lucide="mail" class="w-2.5 h-2.5"></i>
|
||||||
<span>MAIL</span>
|
<span>MAIL</span>
|
||||||
</span>
|
</span>
|
||||||
<?php elseif ($task['source'] === 'OUTLOOK' || !empty($task['external_id'])): ?>
|
<?php elseif ($task['source'] === 'OUTLOOK' || !empty($task['external_id'])): ?>
|
||||||
<span class="px-1.5 py-0.2 rounded bg-sky-50 dark:bg-sky-500/10 border border-sky-200 dark:border-sky-500/20 text-sky-700 dark:text-sky-400 font-mono text-[9px] font-bold flex items-center space-x-0.5">
|
<span class="px-1.5 py-0.5 rounded bg-sky-50 dark:bg-sky-500/10 border border-sky-200 dark:border-sky-500/20 text-sky-700 dark:text-sky-400 font-mono text-[9px] font-bold flex items-center space-x-0.5">
|
||||||
<i data-lucide="calendar" class="w-2.5 h-2.5"></i>
|
<i data-lucide="calendar" class="w-2.5 h-2.5"></i>
|
||||||
<span>OUTLOOK</span>
|
<span>OUTLOOK</span>
|
||||||
</span>
|
</span>
|
||||||
@@ -968,7 +968,7 @@ for ($h = $startHour; $h <= $endHour; $h++) {
|
|||||||
<?= $wd['short_name'] ?>
|
<?= $wd['short_name'] ?>
|
||||||
</span>
|
</span>
|
||||||
<?php if ($wd['is_today']): ?>
|
<?php if ($wd['is_today']): ?>
|
||||||
<span class="px-1.5 py-0.2 rounded-full text-[8px] font-extrabold uppercase bg-indigo-600 text-white shadow-xs">
|
<span class="px-1.5 py-0.5 rounded-full text-[8px] font-extrabold uppercase bg-indigo-600 text-white shadow-xs">
|
||||||
Nu
|
Nu
|
||||||
</span>
|
</span>
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
|
|||||||
Reference in New Issue
Block a user