From c49531f692d6d33baeb20917e85c1fc4b49df1ce Mon Sep 17 00:00:00 2001
From: bes-r <27369668+bes-r@users.noreply.github.com>
Date: Mon, 15 Jun 2026 22:52:46 +0200
Subject: [PATCH] Hernoem Leerplein naar Bovenliggende groepen; route
/groepsindeling; categorie Groepsindeling
---
backend/config/settings.py | 2 +-
backend/core/apps.py | 2 +-
.../0003_rename_leerplein_verbose_names.py | 19 +++++++++++
backend/modules/leerplein/models.py | 10 +++---
backend/modules/stage/apps.py | 2 +-
frontend/src/App.jsx | 16 +++++-----
frontend/src/pages.jsx | 32 +++++++++----------
frontend/src/styles.css | 27 ++++++----------
8 files changed, 61 insertions(+), 49 deletions(-)
create mode 100644 backend/modules/leerplein/migrations/0003_rename_leerplein_verbose_names.py
diff --git a/backend/config/settings.py b/backend/config/settings.py
index 8e25f7c..2a77179 100644
--- a/backend/config/settings.py
+++ b/backend/config/settings.py
@@ -72,7 +72,7 @@ CORE_APPS = [
MODULE_APPS = [
"modules.printing", # Printen/Exporteren
"modules.accounts", # Multi-user & toegang
- "modules.leerplein", # Leerplein (groepsstructuur)
+ "modules.leerplein", # Bovenliggende groepen
"modules.stage", # Stage (intern/extern)
]
diff --git a/backend/core/apps.py b/backend/core/apps.py
index 7808263..831d81f 100644
--- a/backend/core/apps.py
+++ b/backend/core/apps.py
@@ -32,7 +32,7 @@ class CoreConfig(AppConfig):
MenuItem("Roostermaker", "/roostermaker", icon="calendar", order=12),
# Submenu Organisatie: wie hoort waar.
MenuItem("Personen", "/personen", icon="users", order=20, group="Organisatie"),
- MenuItem("Groepsindeling", "/structuur", icon="layers", order=24, group="Organisatie"),
+ MenuItem("Groepsindeling", "/groepsindeling", icon="layers", order=24, group="Organisatie"),
MenuItem("Afwezigheid", "/afwezigheid", icon="away", order=28, group="Organisatie"),
),
)
diff --git a/backend/modules/leerplein/migrations/0003_rename_leerplein_verbose_names.py b/backend/modules/leerplein/migrations/0003_rename_leerplein_verbose_names.py
new file mode 100644
index 0000000..234679d
--- /dev/null
+++ b/backend/modules/leerplein/migrations/0003_rename_leerplein_verbose_names.py
@@ -0,0 +1,19 @@
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ("module_leerplein", "0002_leerplein_medewerkers"),
+ ]
+
+ operations = [
+ migrations.AlterModelOptions(
+ name="leerplein",
+ options={
+ "ordering": ["naam"],
+ "verbose_name": "bovenliggende groep",
+ "verbose_name_plural": "bovenliggende groepen",
+ },
+ ),
+ ]
diff --git a/backend/modules/leerplein/models.py b/backend/modules/leerplein/models.py
index 87f9685..7aeba88 100644
--- a/backend/modules/leerplein/models.py
+++ b/backend/modules/leerplein/models.py
@@ -1,8 +1,8 @@
"""
-Leerplein-module: een overkoepelende groepsstructuur.
+Module voor bovenliggende groepen.
-- Een Leerplein bundelt meerdere groepen en/of subgroepen, en kan daarnaast
- losse (individuele) leerlingen bevatten.
+- Een bovenliggende groep bundelt meerdere groepen en/of subgroepen, en kan
+ daarnaast losse (individuele) leerlingen bevatten.
- Een SubgroepGroep-koppeling verbindt een subgroep met een groep.
De module raakt de kernmodellen niet aan; het zijn losse koppeltabellen die
@@ -33,8 +33,8 @@ class Leerplein(models.Model):
aangemaakt_op = models.DateTimeField(auto_now_add=True)
class Meta:
- verbose_name = "leerplein"
- verbose_name_plural = "leerpleinen"
+ verbose_name = "bovenliggende groep"
+ verbose_name_plural = "bovenliggende groepen"
ordering = ["naam"]
def __str__(self) -> str:
diff --git a/backend/modules/stage/apps.py b/backend/modules/stage/apps.py
index 35b898b..f7c27e0 100644
--- a/backend/modules/stage/apps.py
+++ b/backend/modules/stage/apps.py
@@ -19,7 +19,7 @@ class StageConfig(AppConfig):
"krijgen een begeleider; een interne stage ook een ruimte."
),
version="0.1.0",
- category="Structuur",
+ category="Groepsindeling",
core=False,
default_enabled=False,
menu_items=(
diff --git a/frontend/src/App.jsx b/frontend/src/App.jsx
index fb08aff..b698400 100644
--- a/frontend/src/App.jsx
+++ b/frontend/src/App.jsx
@@ -5,7 +5,7 @@ import {
PersonenPage, FunctiesPage,
ActiviteitenPage, LocatiesPage, TijdslotenPage, SchooljaarPage,
RoosterWeergavePage, RoostermakerPage,
- AfwezigheidPage, LeerpleinPage, StagePage, GebruikersPage,
+ AfwezigheidPage, GroepsindelingPage, StagePage, GebruikersPage,
} from "./pages.jsx";
const ICONS = {
@@ -14,16 +14,16 @@ const ICONS = {
away: "🌴", gear: "⚙️",
};
-const STRUCTUUR_PADEN = new Set(["/structuur", "/leerplein", "/groepen", "/subgroepen"]);
-const STRUCTUUR_ITEM = { label: "Groepsindeling", path: "/structuur", icon: "layers", order: 24, group: "Organisatie" };
-const normaliseerPad = (path) => (STRUCTUUR_PADEN.has(path) ? "/structuur" : path);
+const GROEPSINDELING_PADEN = new Set(["/groepsindeling", "/structuur", "/leerplein", "/groepen", "/subgroepen"]);
+const GROEPSINDELING_ITEM = { label: "Groepsindeling", path: "/groepsindeling", icon: "layers", order: 24, group: "Organisatie" };
+const normaliseerPad = (path) => (GROEPSINDELING_PADEN.has(path) ? "/groepsindeling" : path);
// Koppel een menu-pad aan een echt scherm. Onbekende paden tonen een
// placeholder (worden in een latere fase ingevuld).
const PAGES = {
"/rooster": RoosterWeergavePage,
"/roostermaker": RoostermakerPage,
- "/structuur": LeerpleinPage,
+ "/groepsindeling": GroepsindelingPage,
"/personen": PersonenPage,
"/functies": FunctiesPage,
"/activiteiten": ActiviteitenPage,
@@ -137,13 +137,13 @@ function Shell({ user, onLogout }) {
}
// Bouw de navigatie op uit de menu-items die ACTIEVE modules aanbieden.
- // Verouderde structuurpaden blijven werken, maar verschijnen als één tab.
+ // Verouderde groepspaden blijven werken, maar verschijnen als één tab.
const { tabs, instellingenTabs, alleItems } = useMemo(() => {
const perPad = new Map();
const voegToe = (raw) => {
const pad = normaliseerPad(raw.path);
- const item = pad === "/structuur"
- ? { ...raw, ...STRUCTUUR_ITEM, module: raw.module }
+ const item = pad === "/groepsindeling"
+ ? { ...raw, ...GROEPSINDELING_ITEM, module: raw.module }
: { ...raw, path: pad };
const huidig = perPad.get(item.path);
if (!huidig || item.order < huidig.order) perPad.set(item.path, item);
diff --git a/frontend/src/pages.jsx b/frontend/src/pages.jsx
index a36d1a9..f0094a5 100644
--- a/frontend/src/pages.jsx
+++ b/frontend/src/pages.jsx
@@ -199,7 +199,7 @@ export function LocatiesPage() {
/* --------------------------------- Groepen -------------------------------- */
export function GroepenPage() {
- return
Beheer bovenliggende groepen, groepen en subgroepen op één plek. Een groep hoort altijd onder een bovenliggende groep; een subgroep hoort altijd onder een groep.