From b52c45329cc04482e53770e981a0a8aed6643899 Mon Sep 17 00:00:00 2001 From: Ramon Date: Mon, 13 Jul 2026 10:39:50 +0200 Subject: [PATCH] v0.2.08-beta: instellingen-pagina, vernieuwd inlogscherm, centrale permissiematrix + rolwijziging MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Inlogscherm herzien: aparte tabs voor "Inloggen" en "Koppelcode activeren" i.p.v. één doorlopende vorm - Nieuwe Instellingen-pagina: account-info, wachtwoord wijzigen en uitloggen zijn verplaatst uit het inlogscherm naar een eigen scherm (👤-knop opent nu Instellingen i.p.v. het inlogscherm zodra je bent ingelogd) - Laadstatus op de inlog-, koppelcode- en wachtwoordknoppen tijdens het versturen; consistente foutmeldingen i.p.v. een losse alert() bij het wijzigen van je eigen wachtwoord - Centrale, benoemde permissiematrix (nieuw: src/permissions.js + public/js/permissions.js) vervangt de verspreide rol-arrays in src/api.js en de losse rol-checks in admin.js/core.js - Nieuw: een overkoepelend beheerder (super) kan nu de rol van een stafaccount (groepsleiding/schoolbeheerder/overkoepelend) rechtstreeks in het beheerpaneel wijzigen; leerlingaccounts blijven altijd leerling Co-Authored-By: Claude Sonnet 5 --- public/css/teach.css | 21 +++++------ public/index.html | 34 +++++++++++------ public/js/admin.js | 31 ++++++++++------ public/js/core.js | 79 ++++++++++++++++++++++++++++++---------- public/js/permissions.js | 26 +++++++++++++ src/api.js | 40 ++++++++++---------- src/permissions.js | 26 +++++++++++++ 7 files changed, 184 insertions(+), 73 deletions(-) create mode 100644 public/js/permissions.js create mode 100644 src/permissions.js diff --git a/public/css/teach.css b/public/css/teach.css index 3d3d1c5..9abf3c0 100644 --- a/public/css/teach.css +++ b/public/css/teach.css @@ -51,6 +51,7 @@ .tbtn:hover{background:var(--blue-d);} .tbtn.ghost{background:#e8eef6; color:var(--ink);} .tbtn.ghost:hover{background:#dbe5f1;} + .tbtn:disabled{opacity:.55; cursor:default;} #btnSave{min-width:158px; text-align:center;} #btnSave.ok{background:var(--green); color:#fff;} #btnUser.on{background:var(--green); color:#fff;} @@ -411,22 +412,21 @@ .gcard .gi{font-size:38px;} .gcard .gn{font-weight:800; margin-top:8px; font-size:15px;} .gcard .gd{font-size:12.5px; color:var(--muted); margin-top:4px; line-height:1.35;} - /* login modal */ - #loginModal{width:min(400px,92vw);} - #loginModal input{ + /* login + instellingen modals */ + #loginModal,#settingsModal{width:min(400px,92vw);} + #loginModal input,#settingsModal input{ width:100%; border:2px solid #cdd9e8; border-radius:12px; padding:11px 12px; font:inherit; font-size:16px; outline:none; margin-bottom:10px; } - #loginModal input:focus{border-color:var(--blue);} + #loginModal input:focus,#settingsModal input:focus{border-color:var(--blue);} .lrow{display:flex; gap:8px;} .lrow .tbtn{flex:1;} .lrow input{flex:1; min-width:0; margin-bottom:0;} .lrow .pwtoggle{flex:0 0 auto; white-space:nowrap; padding-left:10px; padding-right:10px;} - #loginMsg{min-height:20px; font-size:13.5px; font-weight:700; color:var(--red); margin:6px 0;} - #loginMsg.ok{color:var(--green);} + .formMsg{min-height:20px; font-size:13.5px; font-weight:700; color:var(--red); margin:6px 0;} + .formMsg.ok{color:var(--green);} .guestnote{font-size:13px; color:var(--muted); margin-top:12px; line-height:1.45;} - #loggedBox{display:none;} - #loggedBox .hello{font-size:18px; font-weight:800; margin-bottom:14px;} + #settingsModal .hello{font-size:18px; font-weight:800; margin-bottom:14px;} /* ========================================================= Letter game widget ==========================================================*/ @@ -966,10 +966,9 @@ width:100%; border:2px solid #cdd9e8; border-radius:12px; padding:11px 12px; font:inherit; font-size:15px; outline:none; margin-bottom:10px; background:#fff; } -.lidiv{height:1.5px; background:#e3eaf3; margin:14px 0;} .lisub{font-size:13px; font-weight:700; color:var(--muted); margin-bottom:8px;} -#ownPwRow{margin-bottom:10px;} -#ownPwRow input{ +#ownPwBlock .lrow{margin-bottom:10px;} +#ownPwBlock input{ flex:1; min-width:0; border:2px solid #cdd9e8; border-radius:12px; padding:10px 12px; font:inherit; font-size:15px; outline:none; } diff --git a/public/index.html b/public/index.html index 5d8233c..b480547 100644 --- a/public/index.html +++ b/public/index.html @@ -69,16 +69,21 @@