269 lines
16 KiB
HTML
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 & 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 & 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 & 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 %}
|