diff --git a/README.md b/README.md index f878217..d47fb53 100644 --- a/README.md +++ b/README.md @@ -12,9 +12,11 @@ Fase 3 (afwezigheid, uitzonderingen, effectief weekrooster) en Fase 4 Het Rooster-scherm is een **weekweergave met drag-and-drop** (muis Ên touch) en een **touch-vriendelijk** ontwerp; vrije dagen, afwezigheid en uitzonderingen worden automatisch verwerkt. Het Rooster heeft tabs **Weekrooster / Conflicten / -Instellingen** (tijdsloten, activiteiten en locaties beheer je daar, zodat het -menu rustiger is). De zijbalk groepeert items onder inklapbare submenu's -(Personen, Groepen). +Schooljaar / Instellingen** (tijdsloten, activiteiten en locaties beheer je daar, +en het schooljaar + de kalender voer je in onder de Schooljaar-tab, zodat het menu +rustiger is). De zijbalk groepeert items onder inklapbare submenu's (Personen, +Groepen) en heeft onderaan een subtiel **Instellingen**-blok met Gebruikers en +Modulebeheer. Optionele module **Leerplein**: koppelt subgroepen aan groepen en bundelt groepen, subgroepen Ên losse leerlingen onder een overkoepelend leerplein. diff --git a/ROADMAP.md b/ROADMAP.md index 3005fc5..eaa47a7 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -28,12 +28,12 @@ volgt. bijvoorbeeld **per leerplein een eigen overzicht** in plaats van alles door elkaar. - [ ] **Snelmenu** om per klas of per leerplein direct het rooster te tonen. -- [ ] **Schooljaar uit het hoofdmenu** halen en **onder Rooster** plaatsen, met - een **snelle invoer** van een schooljaar. -- [ ] **Instellingenmenu** (subtiel weggewerkt) waaronder o.a. **Gebruikers** en - **Modulebeheer** verdwijnen. -- [ ] De hint **"Menu's verschijnen alleen voor ingeschakelde modules."** uit de - zijbalk verwijderen. +- [x] **Schooljaar uit het hoofdmenu** halen en **onder Rooster** plaatsen + (tab "Schooljaar") met snelle invoer + kalenderbeheer. +- [x] **Instellingenmenu** (subtiel onderaan de zijbalk) waaronder **Gebruikers** + en **Modulebeheer** verdwijnen. +- [x] De hint **"Menu's verschijnen alleen voor ingeschakelde modules."** uit de + zijbalk verwijderd. ## Vakken diff --git a/backend/core/apps.py b/backend/core/apps.py index b441022..4174825 100644 --- a/backend/core/apps.py +++ b/backend/core/apps.py @@ -27,9 +27,8 @@ class CoreConfig(AppConfig): category="Kern", core=True, menu_items=( - # Hoofdniveau + # Hoofdniveau (Schooljaar zit nu als tab in het Rooster) MenuItem("Rooster", "/rooster", icon="calendar", order=10), - MenuItem("Schooljaar", "/schooljaar", icon="calendar", order=15), # Submenu Personen MenuItem("Personen", "/personen", icon="users", order=20, group="Personen"), MenuItem("Functies", "/functies", icon="badge", order=25, group="Personen"), diff --git a/backend/modules/accounts/apps.py b/backend/modules/accounts/apps.py index 50651b4..8d0c9a8 100644 --- a/backend/modules/accounts/apps.py +++ b/backend/modules/accounts/apps.py @@ -24,7 +24,7 @@ class AccountsConfig(AppConfig): core=False, default_enabled=False, menu_items=( - MenuItem("Gebruikers", "/gebruikers", icon="key", order=300), + MenuItem("Gebruikers", "/gebruikers", icon="key", order=300, group="Instellingen"), ), ) ) diff --git a/frontend/src/App.jsx b/frontend/src/App.jsx index 9ca0204..4629472 100644 --- a/frontend/src/App.jsx +++ b/frontend/src/App.jsx @@ -10,7 +10,7 @@ import { const ICONS = { calendar: "đ ", users: "đĨ", layers: "đī¸", printer: "đ¨ī¸", key: "đ", puzzle: "đ§Š", badge: "đĒĒ", book: "đ", pin: "đ", clock: "đ", - away: "đ´", + away: "đ´", gear: "âī¸", }; // Koppel een menu-pad aan een echt scherm. Onbekende paden tonen een @@ -134,23 +134,26 @@ function Shell({ user, onLogout }) { const [openGroups, setOpenGroups] = useState({}); // Bouw de navigatie op uit de menu-items die ACTIEVE modules aanbieden. - // Items met een `group` komen onder een inklapbaar submenu. - const { topItems, groups, alleItems } = useMemo(() => { + // Items met een `group` komen onder een inklapbaar submenu. De groep + // "Instellingen" wordt apart, subtiel onderaan, getoond. + const { topItems, groups, instellingenItems, alleItems } = useMemo(() => { const items = []; for (const m of modules) { if (!m.enabled) continue; for (const it of m.menu_items) items.push({ ...it, module: m.key }); } if (user.is_staff) { - items.push({ label: "Modulebeheer", path: "/modules", icon: "puzzle", order: 9999, group: "" }); + items.push({ label: "Modulebeheer", path: "/modules", icon: "gear", order: 9999, group: "Instellingen" }); } items.sort((a, b) => a.order - b.order); const top = items.filter((i) => !i.group); const grouped = {}; + const settings = []; for (const i of items) { - if (i.group) (grouped[i.group] = grouped[i.group] || []).push(i); + if (i.group === "Instellingen") settings.push(i); + else if (i.group) (grouped[i.group] = grouped[i.group] || []).push(i); } - return { topItems: top, groups: grouped, alleItems: items }; + return { topItems: top, groups: grouped, instellingenItems: settings, alleItems: items }; }, [modules, user.is_staff]); function NavKnop({ it, indent }) { @@ -189,11 +192,21 @@ function Shell({ user, onLogout }) { ); })} -