diff --git a/VERSION b/VERSION index 51e8fdc..3bfb9a4 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.2.18 +0.2.20 diff --git a/public/js/admin.js b/public/js/admin.js index d738cfc..3126770 100644 --- a/public/js/admin.js +++ b/public/js/admin.js @@ -283,7 +283,8 @@ return box; } - /* super: schoolkiezer + nieuwe school */ + /* overkoepelend: schoolkiezer + nieuwe school + overkoepelend-beheerders beheren. + Dit tabblad is waar een super zaken regelt die niet aan één school vastzitten. */ function renderScholenPanel(panel){ const bar = h("div","am-add"); const sel = h("select","am-sel"); @@ -307,12 +308,20 @@ }); bar.appendChild(add); panel.appendChild(bar); + + /* overkoepelend beheerders horen niet bij één school, dus het aanmaken ervan + staat hier i.p.v. tussen de school-gebonden gebruikers in de Gebruikers-tab + (de lijst van bestaande supers blijft wel gewoon in Gebruikers staan) */ + if(CREATABLE_ROLES[currentUser.role].includes("super")) panel.appendChild(addForm("super")); } /* klassen (admin/super binnen een school) */ function renderKlassenPanel(panel){ const schoolChosen = currentUser.role!=="super" || !!selSchool; - if(!schoolChosen) return; + if(!schoolChosen){ + panel.appendChild(h("div","guestnote", T("amPickSchoolHint"))); + return; + } const canResetPw = can("schools.resetPasswords"); const cwrapEl = h("div","am-classes"); CLASSES.forEach(c=>{ @@ -394,7 +403,11 @@ const creatable = CREATABLE_ROLES[currentUser.role]; const canAddPupil = schoolChosen && creatable.includes("pupil"); - if(currentUser.role==="teacher"){ + /* per-klas indeling heeft alleen zin met één gekozen school (CLASSES is dan + betrouwbaar); zonder gekozen school (super, alle scholen) of voor groepsleiding + gewoon een platte lijst - anders vallen leerlingen met een classId die niet in + de (dan lege) CLASSES-lijst voorkomt onterecht helemaal weg */ + if(currentUser.role==="teacher" || !schoolChosen){ if(pupils.length){ list.appendChild(h("div","am-group", T("rolePupil"))); pupils.forEach(u=>list.appendChild(userRow(u))); @@ -417,11 +430,12 @@ } panel.appendChild(list); - /* staf-aanmaakformulieren - welke rollen deze gebruiker mag aanmaken (CREATABLE_ROLES) */ + /* staf-aanmaakformulieren - welke rollen deze gebruiker mag aanmaken (CREATABLE_ROLES). + "super" aanmaken staat in het Overkoepelend-tabblad, niet hier (die rol hoort niet + bij één school). */ if(schoolChosen){ ["teacher","admin"].forEach(r=>{ if(creatable.includes(r)) panel.appendChild(addForm(r)); }); } - if(creatable.includes("super")) panel.appendChild(addForm("super")); } function switchAdminTab(tab){ @@ -437,7 +451,7 @@ if(rp) modal.appendChild(rp); const tabDefs = []; - if(currentUser.role==="super") tabDefs.push(["scholen", T("amSchools")]); + if(currentUser.role==="super") tabDefs.push(["scholen", T("amOverarching")]); tabDefs.push(["klassen", T("amClasses")]); tabDefs.push(["gebruikers", T("amUsers")]); if(!tabDefs.some(([t])=>t===adminTab)) adminTab = tabDefs[0][0]; diff --git a/public/js/core.js b/public/js/core.js index a443f74..a3d9089 100644 --- a/public/js/core.js +++ b/public/js/core.js @@ -2,7 +2,7 @@ "use strict"; /* version — shown until /api/version resolves (or if the fetch fails, e.g. offline). Kept in sync by hand with the VERSION file at the repo root on every release. */ -const VERSION = "0.2.18"; +const VERSION = "0.2.20"; (function(){ const tag = document.getElementById("verTag"); tag.textContent = "v"+VERSION; @@ -132,7 +132,8 @@ const I18N = { codePh:"koppelcode", beheer:"Beheer", roleSuper:"Overkoepelend beheerder", roleAdmin:"Schoolbeheerder", roleTeacher:"Groepsleiding", rolePupil:"Leerling", - amUsers:"Gebruikers", amClasses:"Klassen", amSchools:"Scholen", + amUsers:"Gebruikers", amClasses:"Klassen", amSchools:"Scholen", amOverarching:"Overkoepelend", + amPickSchoolHint:"Kies eerst een school bij het tabblad “Overkoepelend”.", amNewSchool:"+ School", amNewClass:"+ Klas", amNewTeacher:"+ Groepsleiding", amNewAdmin:"+ Schoolbeheerder", amNewSuper:"+ Overkoepelend beheerder", amNewPupil:"+ Leerling", amUserPh:"gebruikersnaam…", amNamePh:"naam…", @@ -259,7 +260,8 @@ const I18N = { codePh:"link code", beheer:"Management", roleSuper:"Overarching administrator", roleAdmin:"School administrator", roleTeacher:"Group leader", rolePupil:"Pupil", - amUsers:"Users", amClasses:"Classes", amSchools:"Schools", + amUsers:"Users", amClasses:"Classes", amSchools:"Schools", amOverarching:"Overarching", + amPickSchoolHint:"First pick a school in the “Overarching” tab.", amNewSchool:"+ School", amNewClass:"+ Class", amNewTeacher:"+ Group leader", amNewAdmin:"+ School admin", amNewSuper:"+ Overarching admin", amNewPupil:"+ Pupil", amUserPh:"username…", amNamePh:"name…",