Files
Pivot/templates/dashboard.html
2026-10-14 13:34:37 +02:00

269 lines
16 KiB
HTML

{% extends "base.html" %}
{% block title %}Dashboard{% endblock %}
{% block page_title %}Dashboard{% endblock %}
{% block header_nav %}{% endblock %}
{% block content %}
<div class="tile-grid">
{% if mag('toestellen_beheren', 'eigendom_bekijken', 'toestellen_uitdelen', 'herstellingen', 'signpost') %}
<section class="tile">
<div class="tile-head"><span class="tile-icon">
{# Het icoon van Chrome zelf (google.com/chrome); lukt dat niet, dan het gewone icoon #}
<img src="https://www.google.com/chrome/static/images/favicons/favicon-32x32.png" alt="" width="24" height="24"
onerror="this.replaceWith(document.createTextNode('💻'))">
</span><h3>Chromebooks</h3></div>
<ul class="tile-links">
{% if mag('toestellen_beheren') %}<li><a href="{{ url_for('devices.inventaris_toestellen') }}">💻 Alle toestellen</a></li>{% endif %}
{% if mag('eigendom_bekijken') %}<li><a href="{{ url_for('devices.inventaris_eigendom') }}">🏷️ Eigendom bekijken</a></li>{% endif %}
{% if mag('toestellen_uitdelen') %}
<li><a href="{{ url_for('devices.inleveren_page') }}">📥 Toestel inleveren</a></li>
<li><a href="{{ url_for('devices.uitdelen_page') }}">📤 Toestel uitdelen</a></li>
{% endif %}
{% if mag('signpost') %}<li><a href="{{ url_for('signpost_devices.signpost_database_overzicht') }}">📄 Signpost-toestellen</a></li>{% endif %}
{% if mag('herstellingen') %}<li><a href="{{ url_for('repairs.herstellingen') }}">🛠️ Signpost herstellingen</a></li>{% endif %}
</ul>
</section>
{% endif %}
{% if mag('google_wachtwoord', 'google_accounts', 'tweestaps_codes', 'tweestaps_uitzetten', 'google_licenties', 'gedeelde_drives') %}
<section class="tile">
<div class="tile-head"><span class="tile-icon">
{# Het icoon van Google zelf (google.com); lukt dat niet, dan het gewone icoon #}
<img src="https://www.google.com/favicon.ico" alt="" width="24" height="24"
onerror="this.replaceWith(document.createTextNode('🔑'))">
</span><h3>Google</h3></div>
<ul class="tile-links">
{% if mag('google_wachtwoord', 'google_accounts') %}<li><a href="{{ url_for('google.password_reset') }}">🔑 Wachtwoord resetten</a></li>{% endif %}
{% if mag('tweestaps_codes', 'tweestaps_uitzetten') %}<li><a href="{{ url_for('tweestaps.overzicht') }}">🛡️ 2FA-hulp</a></li>{% endif %}
{% if mag('google_licenties') %}<li><a href="{{ url_for('google_licenties.overzicht') }}">🎓 Licenties</a></li>{% endif %}
{% if mag('gedeelde_drives') %}<li><a href="{{ url_for('gedeelde_drives.overzicht') }}" onclick="showLoader('Gedeelde drives ophalen bij Google...')">🗂️ Gedeelde drives</a></li>{% endif %}
</ul>
</section>
{% endif %}
{% if mag('gmail_delegatie', 'verzendlijsten', 'gmail_labels', 'gmail_handtekeningen', 'gmail_contacten') %}
<section class="tile">
<div class="tile-head"><span class="tile-icon">
{# Het icoon van Gmail zelf; lukt dat niet, dan het gewone icoon #}
<img src="https://ssl.gstatic.com/ui/v1/icons/mail/rfr/gmail.ico" alt="" width="24" height="24"
onerror="this.replaceWith(document.createTextNode('✉️'))">
</span><h3>Gmail</h3></div>
<ul class="tile-links">
{% if mag('gmail_delegatie') %}<li><a href="{{ url_for('gmail_delegatie.overzicht') }}">✉️ Mailbox-delegatie</a></li>{% endif %}
{% if mag('verzendlijsten') %}<li><a href="{{ url_for('verzendlijsten.overzicht') }}" onclick="showLoader('Verzendlijsten ophalen bij Google...')">📮 Verzendlijsten</a></li>{% endif %}
{% if mag('gmail_labels') %}<li><a href="{{ url_for('gmail_labels.overzicht') }}">🏷️ Mails verplaatsen</a></li>{% endif %}
{% if mag('gmail_handtekeningen') %}<li><a href="{{ url_for('handtekeningen.overzicht') }}">✍️ Handtekeningen</a></li>{% endif %}
{% if mag('gmail_contacten') %}<li><a href="{{ url_for('contacten.overzicht') }}">📇 Contacten</a></li>{% endif %}
</ul>
</section>
{% endif %}
{% if mag('smartschool', 'smartschool_activiteit', 'afwezigheden', 'laatkomers', 'skore', 'sgr_groepen') %}
{% set ss_platform = (school.waarden.get('SS_API_PLATFORM') if school else '') or '' %}
{% set ss_platform = ss_platform.replace('https://', '').replace('http://', '').strip('/') %}
<section class="tile">
<div class="tile-head"><span class="tile-icon">
{# Het icoon van het eigen Smartschool-platform; lukt dat niet, dan het gewone icoon #}
{% if ss_platform %}<img src="https://{{ ss_platform }}/favicon.ico" alt="" width="26" height="26" style="border-radius:5px"
onerror="this.replaceWith(document.createTextNode('🏫'))">{% else %}🏫{% endif %}
</span><h3>Smartschool</h3></div>
<ul class="tile-links">
{% if mag('smartschool') %}<li><a href="{{ url_for('/ss.smartschool') }}">🏫 Wachtwoord &amp; info</a></li>{% endif %}
{% if mag('smartschool_activiteit') %}
<li><a href="{{ url_for('smartschool.coaccount_overzicht') }}">📈 Co-accounts</a></li>
<li><a href="{{ url_for('smartschool.coaccount_overzicht') }}">📧 Bericht verzenden</a></li>
{% endif %}
{% if mag('afwezigheden') %}<li><a href="{{ url_for('afwezigheden.overzicht') }}">🚩 Afwezigheden (B-codes)</a></li>{% endif %}
{% if mag('laatkomers') %}<li><a href="{{ url_for('afwezigheden.laatkomers') }}">⏰ Laatkomers</a></li>{% endif %}
{% if mag('skore') %}<li><a href="{{ url_for('skore.overzicht') }}">🔁 Skore-synchronisatie</a></li>{% endif %}
{% if mag('sgr_groepen') %}<li><a href="{{ url_for('sgr_groepen.overzicht') }}">👥 SGR groepen</a></li>{% endif %}
</ul>
</section>
{% endif %}
{% if mag('leerlingen_bekijken', 'leerlingenaantal') %}
<section class="tile">
<div class="tile-head"><span class="tile-icon">🎒</span><h3>Leerlingen</h3></div>
<ul class="tile-links">
{% if mag('leerlingen_bekijken') %}<li><a href="{{ url_for('students.inventaris_leerlingen') }}">👥 Leerlingen</a></li>{% endif %}
{% if mag('leerlingenaantal') %}<li><a href="{{ url_for('leerlingenaantal.leerlingenaantal_page') }}">📊 Leerlingenaantallen</a></li>{% endif %}
</ul>
</section>
{% endif %}
{% if mag('internen', 'internaat_aanwezigheid') %}
<section class="tile">
<div class="tile-head"><span class="tile-icon">🛏️</span><h3>Internaat</h3></div>
<ul class="tile-links">
{% if mag('internen') %}<li><a href="{{ url_for('internaat.internen') }}" onclick="showLoader('Internen ophalen uit Informat...')">🧑‍🎓 Internen</a></li>{% endif %}
{% if mag('internaat_aanwezigheid') %}<li><a href="{{ url_for('internaat.aanwezigheden') }}" onclick="showLoader('Register laden...')">✅ Aanwezigheden</a></li>{% endif %}
</ul>
</section>
{% endif %}
{% if school and school.waarden.get('ONDERWIJSNIVEAU') == 'basis' and mag('bingel') %}
<section class="tile">
<div class="tile-head"><span class="tile-icon">🎨</span><h3>Basisonderwijs</h3></div>
<ul class="tile-links">
<li><a href="{{ url_for('basisonderwijs.bingel') }}" onclick="showLoader('Leerlingen ophalen uit Informat...')">📗 Bingel</a></li>
</ul>
</section>
{% endif %}
{% if mag('leerlingfacturatie') %}
<section class="tile">
<div class="tile-head"><span class="tile-icon">🧾</span><h3>Leerlingfacturatie</h3></div>
<ul class="tile-links">
<li><a href="{{ url_for('facturatie.overzicht') }}" onclick="showLoader('Facturen ophalen uit Informat...')">💶 Facturen</a></li>
</ul>
</section>
{% endif %}
{% if mag('gopro', 'personeelsaantal') %}
<section class="tile">
<div class="tile-head"><span class="tile-icon">🧑‍🏫</span><h3>Personeel</h3></div>
<ul class="tile-links">
{% if mag('gopro') %}<li><a href="{{ url_for('gopro.overzicht') }}" onclick="showLoader('Personeel ophalen uit Informat...')">🪪 GO! Pro</a></li>{% endif %}
{% if mag('gopro') %}<li><a href="{{ url_for('gopro.verzameltabel') }}">📚 Verzameltabel GO! Pro</a></li>{% endif %}
{% if mag('personeelsaantal') %}<li><a href="{{ url_for('personeelsaantal.personeelsaantal_page') }}">📊 Personeelsaantallen</a></li>{% endif %}
</ul>
</section>
{% endif %}
<section class="tile">
<div class="tile-head"><span class="tile-icon">🗓️</span><h3>Afwezigheden &amp; activiteiten</h3></div>
<ul class="tile-links">
<li><a href="{{ url_for('personeel.nieuw', soort='afwezigheid') }}">🤒 Afwezigheid melden</a></li>
<li><a href="{{ url_for('personeel.mijn') }}">📋 Nascholing / uitstap aanvragen</a></li>
{% if 'directie' in personeel_rollen %}
<li><a href="{{ url_for('personeel.beoordelen') }}">✅ Te beoordelen</a></li>
{% endif %}
{% if 'secretariaat' in personeel_rollen %}
<li><a href="{{ url_for('personeel.dagoverzicht') }}">🗓️ Dagoverzicht secretariaat</a></li>
{% endif %}
</ul>
</section>
<section class="tile tile-bug">
<div class="tile-head"><span class="tile-icon">🐞</span><h3>Bugs</h3></div>
<ul class="tile-links">
<li><a href="{{ url_for('bugreport.bugreport') }}">🐞 Bug rapporteren</a></li>
{% if mag('bugs_bekijken', 'bugs_beheren') %}<li><a href="{{ url_for('bugreport_overzicht.bugreport_overzicht') }}">📕 Bugs bekijken</a></li>{% endif %}
</ul>
</section>
{% if mag_handleidingen() %}
{% set hls = handleidingen_lijst() %}
<section class="tile tile-handleiding">
<div class="tile-head"><span class="tile-icon">📘</span><h3>Handleidingen</h3></div>
<ul class="tile-links">
{% for h in hls[:5] %}
<li><a href="{{ url_for('handleidingen.bekijk', slug=h.Slug) }}">📄 {{ h.Titel }}</a></li>
{% endfor %}
<li><a href="{{ url_for('handleidingen.overzicht') }}">📚 {{ 'Alle handleidingen' if hls else 'Handleidingen' }}{% if hls|length > 5 %} ({{ hls|length }}){% endif %}</a></li>
</ul>
</section>
{% endif %}
<section class="tile tile-scholengroep">
<div class="tile-head"><span class="tile-icon">
<img src="{{ url_for('static', filename='img/go-logo.png') }}" alt="" width="26" height="26" style="display:block;border-radius:5px">
</span><h3>Scholengroep</h3></div>
<ul class="tile-links">
{# Helpdesk van de scholengroep (osTicket): voor iedereen, opent in een nieuw tabblad #}
<li><a href="http://helpdesk.go-antwerpen.be/" target="_blank" rel="noopener">
<img src="http://helpdesk.go-antwerpen.be/favicon.ico" alt="" width="16" height="16"
style="vertical-align:-3px;margin-right:2px"
onerror="this.replaceWith(document.createTextNode('🎫'))"> Helpdesk</a></li>
</ul>
</section>
{% if mag('qr_codes') %}
<section class="tile tile-tools">
<div class="tile-head"><span class="tile-icon">🧰</span><h3>Tools</h3></div>
<ul class="tile-links">
<li><a href="{{ url_for('qr_generator.qr_generator') }}">💡 QR-code generator</a></li>
</ul>
</section>
{% endif %}
{% if school %}
{% set web_domein = (school.domein or '').strip().lower() %}
{% set ss_url = ((school.waarden.get('SS_API_PLATFORM') or '').replace('https://', '').replace('http://', '').strip().strip('/')) %}
<section class="tile">
<div class="tile-head"><span class="tile-icon">🏫</span><h3>Links</h3></div>
<ul class="tile-links links-lijst">
{% macro ico(url, reserve) -%}
<span class="link-ico"><img src="{{ url }}" alt="" width="16" height="16" onerror="this.replaceWith(document.createTextNode({{ reserve|tojson|forceescape }}))"></span>
{%- endmacro %}
{% if web_domein %}
{% set web = web_domein if web_domein.startswith('www.') else 'www.' ~ web_domein %}
<li><a href="https://{{ web }}" target="_blank" rel="noopener"><span class="link-ico">🌐</span><span class="link-tekst">{{ web_domein }}</span></a></li>
{% endif %}
{% if ss_url %}<li><a href="https://{{ ss_url }}" target="_blank" rel="noopener" title="{{ ss_url }}">{{ ico('https://' ~ ss_url ~ '/favicon.ico', '📘') }}<span class="link-tekst">{{ ss_url }}</span></a></li>{% endif %}
<li><a href="https://start.informatsoftware.be/informat/informat.web/login.aspx?" target="_blank" rel="noopener">{{ ico('https://start.informatsoftware.be/favicon.ico', '📗') }}<span class="link-tekst">Informat</span></a></li>
<li><a href="https://pb-antwerpen.rvl.be/index.php" target="_blank" rel="noopener">{{ ico('https://pb-antwerpen.rvl.be/favicon.ico', '📙') }}<span class="link-tekst">Rivo</span></a></li>
</ul>
</section>
{% endif %}
</div>
{% if mag('co2', 'koppelingen', 'gebruikersbeheer', 'nieuw_schooljaar', 'ip_whitelist', 'database_toestellen') or is_admin or is_superbeheerder %}
<div class="dash-section-title admin">⚙️ Beheer</div>
<div class="tile-grid">
{% if mag('gebruikersbeheer', 'koppelingen') or is_superbeheerder %}
<section class="tile tile-admin">
<div class="tile-head"><span class="tile-icon">🏢</span><h3>PIVOT</h3></div>
<ul class="tile-links">
{% if mag('gebruikersbeheer') %}<li><a href="{{ url_for('admin.settings') }}">🔐 Gebruikers &amp; rechten</a></li>{% endif %}
{% if mag('koppelingen') %}<li><a href="{{ url_for('scholen.mijn_school') }}">🔌 Koppelingen van deze school</a></li>{% endif %}
{% if is_superbeheerder %}<li><a href="{{ url_for('scholen.overzicht') }}">🏫 Alle scholen beheren</a></li>{% endif %}
</ul>
</section>
{% endif %}
{% if is_admin or mag('ip_whitelist') %}
<section class="tile tile-admin">
<div class="tile-head"><span class="tile-icon">🛡️</span><h3>Beveiliging</h3></div>
<ul class="tile-links">
{% if is_admin %}<li><a href="{{ url_for('ipblokkade.overzicht') }}">🚫 IP-blokkades</a></li>
{% else %}<li><a href="{{ url_for('ipblokkade.overzicht') }}">✅ Toegestane IP-adressen</a></li>{% endif %}
</ul>
</section>
{% endif %}
{% if mag('co2') or is_admin %}
<section class="tile tile-admin">
<div class="tile-head"><span class="tile-icon">🌐</span><h3>IoT</h3></div>
<ul class="tile-links">
{% if is_admin %}<li><a href="{{ url_for('tools.internet_status') }}">🌐 Internet status</a></li>{% endif %}
{% if mag('co2') %}<li><a href="{{ url_for('co2_sensor.dashboard') }}">🌬️ CO2-sensor uitlezen</a></li>{% endif %}
</ul>
</section>
{% endif %}
{% if mag('nieuw_schooljaar') %}
<section class="tile tile-admin">
<div class="tile-head"><span class="tile-icon">📚</span><h3>Nieuw schooljaar</h3></div>
<ul class="tile-links">
<li><a href="{{ url_for('accounts_verplaatsen.accounts_verplaatsen') }}">👥 Accounts</a></li>
<li><a href="{{ url_for('toestellen_verplaatsen.move_toestellen') }}">💻 Devices</a></li>
</ul>
</section>
{% endif %}
{% if mag('database_toestellen') %}
<section class="tile tile-admin">
<div class="tile-head"><span class="tile-icon">🗄️</span><h3>Database</h3></div>
<ul class="tile-links">
<li><a href="{{ url_for('database_beheer.toestellen') }}">💻 Toestellen importeren (Excel)</a></li>
</ul>
</section>
{% endif %}
</div>
{% endif %}
{% endblock %}