feat(dashboard): add content page options menu (#757)

* feat(dashboard): add content page options menu

Add a three-dot menu on the course Content page with actions to unlock
all locked lessons/exercises and toggle content grouping. Reuse shared
locked-content collection logic from course settings.

Co-authored-by: Rotimi Best <rotimi-best@users.noreply.github.com>

* fix(dashboard): keep unlock-all enabled and add menu icons

Show a success snackbar when all content is already unlocked instead of
disabling the action. Add lock-open and table-of-contents icons to menu items.

Co-authored-by: Rotimi Best <rotimi-best@users.noreply.github.com>

* fix(dashboard): check courseApi.update return for grouping toggle

Use the update() return value instead of courseApi.success, which can be
false after a successful PUT if the follow-up refresh request fails.

Co-authored-by: Rotimi Best <rotimi-best@users.noreply.github.com>

---------

Co-authored-by: Rotimi Best <rotimi-best@users.noreply.github.com>
This commit is contained in:
Rotimi Best
2026-07-15 22:28:23 +01:00
committed by GitHub
co-authored by Rotimi Best
parent bfafc685e0
commit 656fa4fa7e
14 changed files with 231 additions and 26 deletions
@@ -289,7 +289,10 @@
"successful_integration": "Integration erfolgreich",
"successful_deletion": "Integration gelöscht",
"update_successful": "Update erfolgreich",
"unlocked_all_content": "Alle Kursgegenstände freigeschaltet"
"unlocked_all_content": "Alle Kursgegenstände freigeschaltet",
"all_content_already_unlocked": "Alle Inhalte sind bereits freigeschaltet",
"content_grouping_enabled": "Inhaltsgruppierung aktiviert",
"content_grouping_disabled": "Inhaltsgruppierung deaktiviert"
}
},
"people": {
@@ -1320,6 +1323,12 @@
"add_content_create_lesson": "Lektion erstellen",
"add_content_section_title_placeholder": "z. B. Modul 1: Einführung",
"add_content_lesson_title_placeholder": "z. B. Erste Schritte mit Variablen",
"content_menu": {
"label": "Inhaltsoptionen",
"unlock_all": "Alle Inhalte freischalten",
"enable_grouping": "Inhaltsgruppierung aktivieren",
"disable_grouping": "Inhaltsgruppierung deaktivieren"
},
"join_lesson": "Nehmen Sie an der Lektion teil",
"no_link": "Kein Link",
"no_tutor": "Kein Tutor hinzugefügt",