/**
* Seitenleiste im Mitarbeiterbereich: ein-/ausklappen. Eingeklappt bleibt eine schmale Iconleiste sichtbar.
* Die Icons werden hier anhand der Seitenadresse zugeordnet, auch für Menüpunkte von Plugins (sonst ein Puzzle-Teil).
*/
(function () {
var root = document.documentElement, KEY = 'deskhub_sidebar';
var side = document.getElementById('sidebar');
if (!side) return;
var P = {
grid: '',
chart: '',
inbox: '',
check: '',
ban: '',
users: '',
user: '',
phone: '',
chat: '',
puzzle: '',
building: '',
flag: '',
clock: '',
help: '',
sliders: '',
key: '',
link: '',
list: '',
file: '',
mail: '',
book: '',
bot: '',
briefcase: '',
shield: '',
shieldCheck: '',
calendar: '',
clipboard: '',
branch: '',
trend: '',
repeat: '',
gear: '',
db: '',
download: '',
lock: '',
activity: '',
megaphone: '',
sun: '',
userx: '',
logout: '',
globe: '',
filter: ''
};
var PAGES = {
reports: 'grid', report_builder: 'chart', tickets: 'inbox', tasks: 'check', banlist: 'ban', agent_directory: 'users', apps: 'phone', live_chat: 'chat',
departments: 'building', priorities: 'flag', sla_plans: 'clock', help_topics: 'help', custom_fields: 'sliders', api_keys: 'key', webhooks: 'link',
custom_lists: 'list', canned_responses: 'file', site_pages: 'file', email_addresses: 'mail', email_templates: 'mail', kb_manage: 'book', assistant: 'bot',
plugins: 'puzzle', customers: 'user', organizations: 'briefcase', staff_manage: 'users', teams: 'users', roles: 'shield', availability: 'calendar',
security_check: 'shieldCheck', audit_log: 'clipboard', ticket_rules: 'branch', escalation_rules: 'trend', recurring_tickets: 'repeat', time_entries: 'clock',
business_hours: 'clock', settings: 'gear', backup: 'db', update: 'download', profile: 'user', logout: 'logout', ticket_templates: 'file', status_page: 'activity', languages: 'globe'
};
var PLUGINS = {
schichtuebergabe: 'sun', spamfilter: 'filter', vertretung: 'userx', virenscan: 'shieldCheck', datenschutz: 'lock', ueberwachung: 'activity', rundmail: 'megaphone',
'community-bot': 'bot', 'nas-backup': 'db', tagesbericht: 'clipboard'
};
function svg(name) {
return '';
}
function iconFor(a) {
var u;
try { u = new URL(a.getAttribute('href'), location.href); } catch (e) { return 'puzzle'; }
if (/\/staff\/plugin\.php$/.test(u.pathname)) return PLUGINS[u.searchParams.get('p')] || 'puzzle';
var m = u.pathname.match(/\/([a-z_]+)\.php$/);
return (m && PAGES[m[1]]) || 'puzzle';
}
var links = side.querySelectorAll('nav a[href], .sidebar-footer a[href$="profile.php"], .sidebar-footer a[href$="logout.php"]');
Array.prototype.forEach.call(links, function (a) {
if (a.querySelector('.nav-ico')) return;
var text = (a.textContent || '').replace(/\s+/g, ' ').trim();
if (!text) return;
var ico = document.createElement('span');
ico.className = 'nav-ico';
ico.innerHTML = svg(iconFor(a));
var label = document.createElement('span');
label.className = 'nav-label';
while (a.firstChild) label.appendChild(a.firstChild);
a.appendChild(ico);
a.appendChild(label);
a.setAttribute('title', text.replace(/\s*\d+\s*$/, ''));
});
var btn = document.getElementById('sidebar-toggle');
function paint() {
var closed = root.classList.contains('sidebar-closed');
btn.innerHTML = closed ? '»' : '«';
var t = closed ? 'Seitenleiste ausklappen' : 'Seitenleiste einklappen';
btn.setAttribute('title', t);
btn.setAttribute('aria-label', t);
}
btn.addEventListener('click', function () {
var closed = !root.classList.contains('sidebar-closed');
root.classList.toggle('sidebar-closed', closed);
try { localStorage.setItem(KEY, closed ? 'closed' : 'open'); } catch (e) {}
paint();
});
paint();
})();