From cdc6ca9cf705f36c0936ecefe8162707eee1a3c3 Mon Sep 17 00:00:00 2001 From: ggurdin Date: Wed, 19 Nov 2025 10:09:41 -0500 Subject: [PATCH] feat: add teacher mode to course settings --- lib/l10n/intl_ar.arb | 12 ++++- lib/l10n/intl_be.arb | 12 ++++- lib/l10n/intl_bn.arb | 12 ++++- lib/l10n/intl_bo.arb | 14 +++++- lib/l10n/intl_ca.arb | 12 ++++- lib/l10n/intl_cs.arb | 12 ++++- lib/l10n/intl_da.arb | 12 ++++- lib/l10n/intl_de.arb | 12 ++++- lib/l10n/intl_el.arb | 12 ++++- lib/l10n/intl_en.arb | 4 +- lib/l10n/intl_eo.arb | 12 ++++- lib/l10n/intl_es.arb | 12 ++++- lib/l10n/intl_et.arb | 12 ++++- lib/l10n/intl_eu.arb | 12 ++++- lib/l10n/intl_fa.arb | 12 ++++- lib/l10n/intl_fi.arb | 12 ++++- lib/l10n/intl_fil.arb | 12 ++++- lib/l10n/intl_fr.arb | 12 ++++- lib/l10n/intl_ga.arb | 12 ++++- lib/l10n/intl_gl.arb | 12 ++++- lib/l10n/intl_he.arb | 12 ++++- lib/l10n/intl_hi.arb | 12 ++++- lib/l10n/intl_hr.arb | 12 ++++- lib/l10n/intl_hu.arb | 12 ++++- lib/l10n/intl_ia.arb | 12 ++++- lib/l10n/intl_id.arb | 12 ++++- lib/l10n/intl_ie.arb | 12 ++++- lib/l10n/intl_it.arb | 12 ++++- lib/l10n/intl_ja.arb | 12 ++++- lib/l10n/intl_ka.arb | 12 ++++- lib/l10n/intl_ko.arb | 12 ++++- lib/l10n/intl_lt.arb | 12 ++++- lib/l10n/intl_lv.arb | 12 ++++- lib/l10n/intl_nb.arb | 12 ++++- lib/l10n/intl_nl.arb | 12 ++++- lib/l10n/intl_pl.arb | 12 ++++- lib/l10n/intl_pt.arb | 12 ++++- lib/l10n/intl_pt_BR.arb | 12 ++++- lib/l10n/intl_pt_PT.arb | 12 ++++- lib/l10n/intl_ro.arb | 12 ++++- lib/l10n/intl_ru.arb | 12 ++++- lib/l10n/intl_sk.arb | 12 ++++- lib/l10n/intl_sl.arb | 12 ++++- lib/l10n/intl_sr.arb | 12 ++++- lib/l10n/intl_sv.arb | 12 ++++- lib/l10n/intl_ta.arb | 12 ++++- lib/l10n/intl_te.arb | 12 ++++- lib/l10n/intl_th.arb | 12 ++++- lib/l10n/intl_tr.arb | 12 ++++- lib/l10n/intl_uk.arb | 12 ++++- lib/l10n/intl_vi.arb | 12 ++++- lib/l10n/intl_yue.arb | 12 ++++- lib/l10n/intl_zh.arb | 12 ++++- lib/l10n/intl_zh_Hant.arb | 12 ++++- .../pages/room_details_buttons.dart | 4 ++ .../pages/space_details_content.dart | 50 +++++++++++++++---- .../courses/course_plan_room_extension.dart | 18 +++++++ .../course_settings/course_settings.dart | 7 ++- .../events/constants/pangea_event_types.dart | 1 + lib/utils/client_manager.dart | 1 + 60 files changed, 657 insertions(+), 66 deletions(-) diff --git a/lib/l10n/intl_ar.arb b/lib/l10n/intl_ar.arb index 03b084985..423ba4c17 100644 --- a/lib/l10n/intl_ar.arb +++ b/lib/l10n/intl_ar.arb @@ -1,6 +1,6 @@ { "@@locale": "ar", - "@@last_modified": "2025-10-16 13:08:16.063345", + "@@last_modified": "2025-11-19 10:06:41.335038", "about": "حول", "@about": { "type": "String", @@ -12038,5 +12038,15 @@ "@highlightVocabTooltip": { "type": "String", "placeholders": {} + }, + "teacherModeTitle": "وضع المعلم", + "teacherModeDesc": "قم بالتبديل لفتح جميع المواضيع والأنشطة. فقط لمسؤول الدورة.", + "@teacherModeTitle": { + "type": "String", + "placeholders": {} + }, + "@teacherModeDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_be.arb b/lib/l10n/intl_be.arb index 41d782840..405127496 100644 --- a/lib/l10n/intl_be.arb +++ b/lib/l10n/intl_be.arb @@ -2392,7 +2392,7 @@ "playWithAI": "Пакуль гуляйце з ШІ", "courseStartDesc": "Pangea Bot гатовы да працы ў любы час!\n\n...але навучанне лепш з сябрамі!", "@@locale": "be", - "@@last_modified": "2025-10-16 13:08:21.169808", + "@@last_modified": "2025-11-19 10:06:26.729429", "@alwaysUse24HourFormat": { "type": "String", "placeholders": {} @@ -12920,5 +12920,15 @@ "@highlightVocabTooltip": { "type": "String", "placeholders": {} + }, + "teacherModeTitle": "Рэжым настаўніка", + "teacherModeDesc": "Уключыць, каб разблакаваць усе тэмы і дзейнасці. Толькі для адміністратара курса.", + "@teacherModeTitle": { + "type": "String", + "placeholders": {} + }, + "@teacherModeDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_bn.arb b/lib/l10n/intl_bn.arb index a77977485..7cab38093 100644 --- a/lib/l10n/intl_bn.arb +++ b/lib/l10n/intl_bn.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2025-10-16 13:08:26.192955", + "@@last_modified": "2025-11-19 10:06:57.530222", "about": "সম্পর্কে", "@about": { "type": "String", @@ -12925,5 +12925,15 @@ "@highlightVocabTooltip": { "type": "String", "placeholders": {} + }, + "teacherModeTitle": "শিক্ষক মোড", + "teacherModeDesc": "সব বিষয় এবং কার্যকলাপ আনলক করতে টগল করুন। কোর্স প্রশাসক শুধুমাত্র।", + "@teacherModeTitle": { + "type": "String", + "placeholders": {} + }, + "@teacherModeDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_bo.arb b/lib/l10n/intl_bo.arb index 6e3402847..4ca856e89 100644 --- a/lib/l10n/intl_bo.arb +++ b/lib/l10n/intl_bo.arb @@ -4707,7 +4707,7 @@ "joinPublicTrip": "མི་ཚེས་ལ་ལོག་འབད།", "startOwnTrip": "ངེད་རང་གི་ལོག་ལ་སྦྱོར་བཅོས།", "@@locale": "bo", - "@@last_modified": "2025-10-16 16:03:25.501925", + "@@last_modified": "2025-11-19 10:06:54.787613", "@alwaysUse24HourFormat": { "type": "String", "placeholders": {} @@ -12662,5 +12662,15 @@ "type": "String", "placeholders": {} }, - "error": "The previous response was incomplete and caused a JSON parsing error due to truncation." + "error": "The previous response was incomplete and caused a JSON parsing error due to truncation.", + "teacherModeTitle": "Módus Dócentis", + "teacherModeDesc": "Commuta ut omnes themata et activitates aperias. Solum administratio cursus.", + "@teacherModeTitle": { + "type": "String", + "placeholders": {} + }, + "@teacherModeDesc": { + "type": "String", + "placeholders": {} + } } \ No newline at end of file diff --git a/lib/l10n/intl_ca.arb b/lib/l10n/intl_ca.arb index 7334c4226..75b6191a9 100644 --- a/lib/l10n/intl_ca.arb +++ b/lib/l10n/intl_ca.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2025-10-16 13:30:33.942130", + "@@last_modified": "2025-11-19 10:06:28.272487", "about": "Quant a", "@about": { "type": "String", @@ -11845,5 +11845,15 @@ "@highlightVocabTooltip": { "type": "String", "placeholders": {} + }, + "teacherModeTitle": "Mode Professor", + "teacherModeDesc": "Activa per desbloquejar tots els temes i activitats. Només per a l'administrador del curs.", + "@teacherModeTitle": { + "type": "String", + "placeholders": {} + }, + "@teacherModeDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_cs.arb b/lib/l10n/intl_cs.arb index d5b8ea0ee..b3f2521e5 100644 --- a/lib/l10n/intl_cs.arb +++ b/lib/l10n/intl_cs.arb @@ -1,6 +1,6 @@ { "@@locale": "cs", - "@@last_modified": "2025-10-16 13:30:36.618840", + "@@last_modified": "2025-11-19 10:06:23.270366", "about": "O aplikaci", "@about": { "type": "String", @@ -12428,5 +12428,15 @@ "@highlightVocabTooltip": { "type": "String", "placeholders": {} + }, + "teacherModeTitle": "Režim učitele", + "teacherModeDesc": "Přepněte pro odemčení všech témat a aktivit. Pouze pro administrátory kurzu.", + "@teacherModeTitle": { + "type": "String", + "placeholders": {} + }, + "@teacherModeDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_da.arb b/lib/l10n/intl_da.arb index 8734b72a1..301b24d67 100644 --- a/lib/l10n/intl_da.arb +++ b/lib/l10n/intl_da.arb @@ -2411,7 +2411,7 @@ "playWithAI": "Leg med AI for nu", "courseStartDesc": "Pangea Bot er klar til at starte når som helst!\n\n...men læring er bedre med venner!", "@@locale": "da", - "@@last_modified": "2025-10-16 13:30:39.003047", + "@@last_modified": "2025-11-19 10:05:38.285183", "@aboutHomeserver": { "type": "String", "placeholders": { @@ -12883,5 +12883,15 @@ "@highlightVocabTooltip": { "type": "String", "placeholders": {} + }, + "teacherModeTitle": "Lærerindstilling", + "teacherModeDesc": "Skift for at låse op for alle emner og aktiviteter. Kun kursusadministrator.", + "@teacherModeTitle": { + "type": "String", + "placeholders": {} + }, + "@teacherModeDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_de.arb b/lib/l10n/intl_de.arb index 539207a5b..ba5aa56b9 100644 --- a/lib/l10n/intl_de.arb +++ b/lib/l10n/intl_de.arb @@ -1,6 +1,6 @@ { "@@locale": "de", - "@@last_modified": "2025-10-16 13:30:41.915934", + "@@last_modified": "2025-11-19 10:06:06.868954", "alwaysUse24HourFormat": "true", "@alwaysUse24HourFormat": { "description": "Set to true to always display time of day in 24 hour format." @@ -11828,5 +11828,15 @@ "@highlightVocabTooltip": { "type": "String", "placeholders": {} + }, + "teacherModeTitle": "Lehrermodus", + "teacherModeDesc": "Umschalten, um alle Themen und Aktivitäten freizuschalten. Nur für Kursadministratoren.", + "@teacherModeTitle": { + "type": "String", + "placeholders": {} + }, + "@teacherModeDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_el.arb b/lib/l10n/intl_el.arb index a85d564b4..1d1f241d0 100644 --- a/lib/l10n/intl_el.arb +++ b/lib/l10n/intl_el.arb @@ -4937,7 +4937,7 @@ "playWithAI": "Παίξτε με την Τεχνητή Νοημοσύνη προς το παρόν", "courseStartDesc": "Ο Pangea Bot είναι έτοιμος να ξεκινήσει οποιαδήποτε στιγμή!\n\n...αλλά η μάθηση είναι καλύτερη με φίλους!", "@@locale": "el", - "@@last_modified": "2025-10-16 13:30:44.558485", + "@@last_modified": "2025-11-19 10:07:05.042305", "@alwaysUse24HourFormat": { "type": "String", "placeholders": {} @@ -12879,5 +12879,15 @@ "@highlightVocabTooltip": { "type": "String", "placeholders": {} + }, + "teacherModeTitle": "Λειτουργία Δασκάλου", + "teacherModeDesc": "Εναλλαγή για να ξεκλειδώσετε όλα τα θέματα και τις δραστηριότητες. Μόνο για διαχειριστές μαθημάτων.", + "@teacherModeTitle": { + "type": "String", + "placeholders": {} + }, + "@teacherModeDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_en.arb b/lib/l10n/intl_en.arb index 1e07094c7..e35bc25aa 100644 --- a/lib/l10n/intl_en.arb +++ b/lib/l10n/intl_en.arb @@ -5305,5 +5305,7 @@ "joinCourseWithCode": "Join course with code", "joinPublicCourse": "Join public course", "vocabLevelsDesc": "This is where vocab words will go once you’ve leveled them up!", - "highlightVocabTooltip": "Highlight target vocab words below by sending them or practicing with them in the chat" + "highlightVocabTooltip": "Highlight target vocab words below by sending them or practicing with them in the chat", + "teacherModeTitle": "Teacher Mode", + "teacherModeDesc": "Toggle to unlock all topics and activities. Course admin only." } diff --git a/lib/l10n/intl_eo.arb b/lib/l10n/intl_eo.arb index 809860fe2..eb44a6511 100644 --- a/lib/l10n/intl_eo.arb +++ b/lib/l10n/intl_eo.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2025-10-16 13:30:47.008238", + "@@last_modified": "2025-11-19 10:07:12.448110", "about": "Prio", "@about": { "type": "String", @@ -12910,5 +12910,15 @@ "@highlightVocabTooltip": { "type": "String", "placeholders": {} + }, + "teacherModeTitle": "Instruista Reĝimo", + "teacherModeDesc": "Ŝanĝi por malŝlosi ĉiujn temojn kaj aktivadojn. Nur por kursa administranto.", + "@teacherModeTitle": { + "type": "String", + "placeholders": {} + }, + "@teacherModeDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_es.arb b/lib/l10n/intl_es.arb index 0c0f9a9ea..bb1f6427b 100644 --- a/lib/l10n/intl_es.arb +++ b/lib/l10n/intl_es.arb @@ -1,6 +1,6 @@ { "@@locale": "es", - "@@last_modified": "2025-10-16 13:30:49.638463", + "@@last_modified": "2025-11-19 10:05:31.874796", "about": "Acerca de", "@about": { "type": "String", @@ -7432,5 +7432,15 @@ "@highlightVocabTooltip": { "type": "String", "placeholders": {} + }, + "teacherModeTitle": "Modo Profesor", + "teacherModeDesc": "Activa para desbloquear todos los temas y actividades. Solo para administradores del curso.", + "@teacherModeTitle": { + "type": "String", + "placeholders": {} + }, + "@teacherModeDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_et.arb b/lib/l10n/intl_et.arb index 41c899e52..1b9967838 100644 --- a/lib/l10n/intl_et.arb +++ b/lib/l10n/intl_et.arb @@ -1,6 +1,6 @@ { "@@locale": "et", - "@@last_modified": "2025-10-16 13:30:52.593520", + "@@last_modified": "2025-11-19 10:06:04.654636", "about": "Rakenduse teave", "@about": { "type": "String", @@ -12092,5 +12092,15 @@ "@highlightVocabTooltip": { "type": "String", "placeholders": {} + }, + "teacherModeTitle": "Õpetaja režiim", + "teacherModeDesc": "Lülita sisse, et avada kõik teemad ja tegevused. Ainult kursuse administraator.", + "@teacherModeTitle": { + "type": "String", + "placeholders": {} + }, + "@teacherModeDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_eu.arb b/lib/l10n/intl_eu.arb index 9946601df..0bff2c7b0 100644 --- a/lib/l10n/intl_eu.arb +++ b/lib/l10n/intl_eu.arb @@ -1,6 +1,6 @@ { "@@locale": "eu", - "@@last_modified": "2025-10-16 13:30:55.222415", + "@@last_modified": "2025-11-19 10:06:01.640967", "about": "Honi buruz", "@about": { "type": "String", @@ -11821,5 +11821,15 @@ "@highlightVocabTooltip": { "type": "String", "placeholders": {} + }, + "teacherModeTitle": "Irakasle Modua", + "teacherModeDesc": "Aukeratu gai eta jarduera guztiak desblokeatzeko. Ikasturtea administratzaile bakarrik.", + "@teacherModeTitle": { + "type": "String", + "placeholders": {} + }, + "@teacherModeDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_fa.arb b/lib/l10n/intl_fa.arb index 5c5a80dd7..446a100e3 100644 --- a/lib/l10n/intl_fa.arb +++ b/lib/l10n/intl_fa.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2025-10-16 13:30:57.998791", + "@@last_modified": "2025-11-19 10:06:59.403476", "repeatPassword": "تکرار رمزعبور", "@repeatPassword": {}, "about": "درباره", @@ -12553,5 +12553,15 @@ "@highlightVocabTooltip": { "type": "String", "placeholders": {} + }, + "teacherModeTitle": "حالت معلم", + "teacherModeDesc": "برای باز کردن تمام موضوعات و فعالیت‌ها، تغییر دهید. فقط مدیر دوره.", + "@teacherModeTitle": { + "type": "String", + "placeholders": {} + }, + "@teacherModeDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_fi.arb b/lib/l10n/intl_fi.arb index 77b7245cc..003a5b2d6 100644 --- a/lib/l10n/intl_fi.arb +++ b/lib/l10n/intl_fi.arb @@ -4512,7 +4512,7 @@ "playWithAI": "Leiki tekoälyn kanssa nyt", "courseStartDesc": "Pangea Bot on valmis milloin tahansa!\n\n...mutta oppiminen on parempaa ystävien kanssa!", "@@locale": "fi", - "@@last_modified": "2025-10-16 13:31:00.370211", + "@@last_modified": "2025-11-19 10:05:35.933081", "@alwaysUse24HourFormat": { "type": "String", "placeholders": {} @@ -12466,5 +12466,15 @@ "@highlightVocabTooltip": { "type": "String", "placeholders": {} + }, + "teacherModeTitle": "Opettajan tila", + "teacherModeDesc": "Vaihda avataksesi kaikki aiheet ja aktiviteetit. Vain kurssin ylläpitäjälle.", + "@teacherModeTitle": { + "type": "String", + "placeholders": {} + }, + "@teacherModeDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_fil.arb b/lib/l10n/intl_fil.arb index 6af8ae536..db22e7d00 100644 --- a/lib/l10n/intl_fil.arb +++ b/lib/l10n/intl_fil.arb @@ -3272,7 +3272,7 @@ "selectAll": "Piliin lahat", "deselectAll": "Huwag piliin lahat", "@@locale": "fil", - "@@last_modified": "2025-10-16 13:31:03.387348", + "@@last_modified": "2025-11-19 10:06:38.816684", "@setCustomPermissionLevel": { "type": "String", "placeholders": {} @@ -12797,5 +12797,15 @@ "@highlightVocabTooltip": { "type": "String", "placeholders": {} + }, + "teacherModeTitle": "Guro Mode", + "teacherModeDesc": "I-toggle upang i-unlock ang lahat ng mga paksa at aktibidad. Para lamang sa admin ng kurso.", + "@teacherModeTitle": { + "type": "String", + "placeholders": {} + }, + "@teacherModeDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_fr.arb b/lib/l10n/intl_fr.arb index 0a8606e47..dab28c42f 100644 --- a/lib/l10n/intl_fr.arb +++ b/lib/l10n/intl_fr.arb @@ -1,6 +1,6 @@ { "@@locale": "fr", - "@@last_modified": "2025-10-16 13:31:05.366693", + "@@last_modified": "2025-11-19 10:07:24.904940", "about": "À propos", "@about": { "type": "String", @@ -12145,5 +12145,15 @@ "@highlightVocabTooltip": { "type": "String", "placeholders": {} + }, + "teacherModeTitle": "Mode Enseignant", + "teacherModeDesc": "Basculer pour débloquer tous les sujets et activités. Administration du cours uniquement.", + "@teacherModeTitle": { + "type": "String", + "placeholders": {} + }, + "@teacherModeDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_ga.arb b/lib/l10n/intl_ga.arb index c60467813..461106e7f 100644 --- a/lib/l10n/intl_ga.arb +++ b/lib/l10n/intl_ga.arb @@ -4998,7 +4998,7 @@ "playWithAI": "Imir le AI faoi láthair", "courseStartDesc": "Tá Bot Pangea réidh chun dul am ar bith!\n\n...ach is fearr foghlaim le cairde!", "@@locale": "ga", - "@@last_modified": "2025-10-16 13:31:08.161200", + "@@last_modified": "2025-11-19 10:07:22.635787", "@customReaction": { "type": "String", "placeholders": {} @@ -11819,5 +11819,15 @@ "@highlightVocabTooltip": { "type": "String", "placeholders": {} + }, + "teacherModeTitle": "Mód Múinteora", + "teacherModeDesc": "Cas ar chun gach ábhar agus gníomhaíocht a dhíghlasáil. Riarachán cúrsa amháin.", + "@teacherModeTitle": { + "type": "String", + "placeholders": {} + }, + "@teacherModeDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_gl.arb b/lib/l10n/intl_gl.arb index 698af241d..2e78bfebc 100644 --- a/lib/l10n/intl_gl.arb +++ b/lib/l10n/intl_gl.arb @@ -1,6 +1,6 @@ { "@@locale": "gl", - "@@last_modified": "2025-10-16 13:31:10.613939", + "@@last_modified": "2025-11-19 10:05:33.443954", "about": "Acerca de", "@about": { "type": "String", @@ -11818,5 +11818,15 @@ "@highlightVocabTooltip": { "type": "String", "placeholders": {} + }, + "teacherModeTitle": "Modo Profesor", + "teacherModeDesc": "Activa para desbloquear todos os temas e actividades. Só para administradores do curso.", + "@teacherModeTitle": { + "type": "String", + "placeholders": {} + }, + "@teacherModeDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_he.arb b/lib/l10n/intl_he.arb index 6775d4296..1b50830d1 100644 --- a/lib/l10n/intl_he.arb +++ b/lib/l10n/intl_he.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2025-10-16 13:31:12.984526", + "@@last_modified": "2025-11-19 10:05:51.297421", "about": "אודות", "@about": { "type": "String", @@ -12870,5 +12870,15 @@ "@highlightVocabTooltip": { "type": "String", "placeholders": {} + }, + "teacherModeTitle": "מצב מורה", + "teacherModeDesc": "הפעל כדי לפתוח את כל הנושאים והפעילויות. רק מנהל הקורס.", + "@teacherModeTitle": { + "type": "String", + "placeholders": {} + }, + "@teacherModeDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_hi.arb b/lib/l10n/intl_hi.arb index 56daf2d1d..6e0f0d616 100644 --- a/lib/l10n/intl_hi.arb +++ b/lib/l10n/intl_hi.arb @@ -4964,7 +4964,7 @@ "playWithAI": "अभी के लिए एआई के साथ खेलें", "courseStartDesc": "पैंजिया बॉट कभी भी जाने के लिए तैयार है!\n\n...लेकिन दोस्तों के साथ सीखना बेहतर है!", "@@locale": "hi", - "@@last_modified": "2025-10-16 13:31:15.251036", + "@@last_modified": "2025-11-19 10:07:10.242188", "@alwaysUse24HourFormat": { "type": "String", "placeholders": {} @@ -12906,5 +12906,15 @@ "@highlightVocabTooltip": { "type": "String", "placeholders": {} + }, + "teacherModeTitle": "शिक्षक मोड", + "teacherModeDesc": "सभी विषयों और गतिविधियों को अनलॉक करने के लिए टॉगल करें। केवल पाठ्यक्रम प्रशासक।", + "@teacherModeTitle": { + "type": "String", + "placeholders": {} + }, + "@teacherModeDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_hr.arb b/lib/l10n/intl_hr.arb index cb0f567b2..471c996c5 100644 --- a/lib/l10n/intl_hr.arb +++ b/lib/l10n/intl_hr.arb @@ -1,6 +1,6 @@ { "@@locale": "hr", - "@@last_modified": "2025-10-16 13:31:18.226992", + "@@last_modified": "2025-11-19 10:05:49.974610", "about": "Informacije", "@about": { "type": "String", @@ -12193,5 +12193,15 @@ "@highlightVocabTooltip": { "type": "String", "placeholders": {} + }, + "teacherModeTitle": "Način učitelja", + "teacherModeDesc": "Prebacite da otključate sve teme i aktivnosti. Samo za administratore tečaja.", + "@teacherModeTitle": { + "type": "String", + "placeholders": {} + }, + "@teacherModeDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_hu.arb b/lib/l10n/intl_hu.arb index 20ce6ea45..dccb37979 100644 --- a/lib/l10n/intl_hu.arb +++ b/lib/l10n/intl_hu.arb @@ -1,6 +1,6 @@ { "@@locale": "hu", - "@@last_modified": "2025-10-16 13:31:20.947240", + "@@last_modified": "2025-11-19 10:05:41.188788", "about": "Névjegy", "@about": { "type": "String", @@ -11822,5 +11822,15 @@ "@highlightVocabTooltip": { "type": "String", "placeholders": {} + }, + "teacherModeTitle": "Tanári Mód", + "teacherModeDesc": "Kapcsolja be az összes téma és tevékenység feloldásához. Csak kurzusadminisztrátorok számára.", + "@teacherModeTitle": { + "type": "String", + "placeholders": {} + }, + "@teacherModeDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_ia.arb b/lib/l10n/intl_ia.arb index 8be24de53..57741107b 100644 --- a/lib/l10n/intl_ia.arb +++ b/lib/l10n/intl_ia.arb @@ -2439,7 +2439,7 @@ "playWithAI": "Joca con le IA pro ora", "courseStartDesc": "Pangea Bot es preste a comenzar a qualunque momento!\n\n...ma apprender es melior con amicos!", "@@locale": "ia", - "@@last_modified": "2025-10-16 13:31:23.726766", + "@@last_modified": "2025-11-19 10:05:56.215123", "@alwaysUse24HourFormat": { "type": "String", "placeholders": {} @@ -12899,5 +12899,15 @@ "@highlightVocabTooltip": { "type": "String", "placeholders": {} + }, + "teacherModeTitle": "Modu Instructore", + "teacherModeDesc": "Comuta pro aperiendo omnes argumenta et activitates. Solum administratores cursus.", + "@teacherModeTitle": { + "type": "String", + "placeholders": {} + }, + "@teacherModeDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_id.arb b/lib/l10n/intl_id.arb index 730e03f79..7abf71cba 100644 --- a/lib/l10n/intl_id.arb +++ b/lib/l10n/intl_id.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2025-10-16 13:31:25.902157", + "@@last_modified": "2025-11-19 10:05:43.101922", "setAsCanonicalAlias": "Atur sebagai alias utama", "@setAsCanonicalAlias": { "type": "String", @@ -11812,5 +11812,15 @@ "@highlightVocabTooltip": { "type": "String", "placeholders": {} + }, + "teacherModeTitle": "Mode Guru", + "teacherModeDesc": "Alihkan untuk membuka semua topik dan aktivitas. Hanya untuk admin kursus.", + "@teacherModeTitle": { + "type": "String", + "placeholders": {} + }, + "@teacherModeDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_ie.arb b/lib/l10n/intl_ie.arb index 1cf19b93f..bdc9b46e1 100644 --- a/lib/l10n/intl_ie.arb +++ b/lib/l10n/intl_ie.arb @@ -4853,7 +4853,7 @@ "playWithAI": "Joca con AI pro ora", "courseStartDesc": "Pangea Bot es preste a partir a qualunque momento!\n\n...ma apprender es melior con amicos!", "@@locale": "ie", - "@@last_modified": "2025-10-16 13:31:28.322202", + "@@last_modified": "2025-11-19 10:05:48.013254", "@alwaysUse24HourFormat": { "type": "String", "placeholders": {} @@ -12795,5 +12795,15 @@ "@highlightVocabTooltip": { "type": "String", "placeholders": {} + }, + "teacherModeTitle": "Mod Teacher", + "teacherModeDesc": "Commutar per desbloquear todos os tópicos e atividades. Apenas para administradores do curso.", + "@teacherModeTitle": { + "type": "String", + "placeholders": {} + }, + "@teacherModeDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_it.arb b/lib/l10n/intl_it.arb index 07eccb3ef..c0565c15c 100644 --- a/lib/l10n/intl_it.arb +++ b/lib/l10n/intl_it.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2025-10-16 13:31:31.204302", + "@@last_modified": "2025-11-19 10:06:20.176972", "about": "Informazioni", "@about": { "type": "String", @@ -11824,5 +11824,15 @@ "@highlightVocabTooltip": { "type": "String", "placeholders": {} + }, + "teacherModeTitle": "Modalità Insegnante", + "teacherModeDesc": "Attiva per sbloccare tutti gli argomenti e le attività. Solo per l'amministratore del corso.", + "@teacherModeTitle": { + "type": "String", + "placeholders": {} + }, + "@teacherModeDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_ja.arb b/lib/l10n/intl_ja.arb index 6deb47529..5ae5ff970 100644 --- a/lib/l10n/intl_ja.arb +++ b/lib/l10n/intl_ja.arb @@ -1,6 +1,6 @@ { "@@locale": "ja", - "@@last_modified": "2025-10-16 13:31:33.790667", + "@@last_modified": "2025-11-19 10:07:08.492783", "about": "このアプリについて", "@about": { "type": "String", @@ -12611,5 +12611,15 @@ "@highlightVocabTooltip": { "type": "String", "placeholders": {} + }, + "teacherModeTitle": "教師モード", + "teacherModeDesc": "すべてのトピックとアクティビティをアンロックするために切り替えます。コース管理者のみ。", + "@teacherModeTitle": { + "type": "String", + "placeholders": {} + }, + "@teacherModeDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_ka.arb b/lib/l10n/intl_ka.arb index d3460c7cb..c245e989d 100644 --- a/lib/l10n/intl_ka.arb +++ b/lib/l10n/intl_ka.arb @@ -3075,7 +3075,7 @@ "playWithAI": "ამ დროისთვის ითამაშეთ AI-თან", "courseStartDesc": "Pangea Bot მზადაა ნებისმიერ დროს გასასვლელად!\n\n...მაგრამ სწავლა უკეთესია მეგობრებთან ერთად!", "@@locale": "ka", - "@@last_modified": "2025-10-16 13:31:36.334482", + "@@last_modified": "2025-11-19 10:07:17.607554", "@alwaysUse24HourFormat": { "type": "String", "placeholders": {} @@ -12851,5 +12851,15 @@ "@highlightVocabTooltip": { "type": "String", "placeholders": {} + }, + "teacherModeTitle": "მასწავლებლის რეჟიმი", + "teacherModeDesc": "გამოიყენეთ, რომ გახსნათ ყველა თემა და აქტივობა. მხოლოდ კურსის ადმინისტრატორისთვის.", + "@teacherModeTitle": { + "type": "String", + "placeholders": {} + }, + "@teacherModeDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_ko.arb b/lib/l10n/intl_ko.arb index ada0184df..8493d3200 100644 --- a/lib/l10n/intl_ko.arb +++ b/lib/l10n/intl_ko.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2025-10-16 13:31:39.341446", + "@@last_modified": "2025-11-19 10:05:24.832279", "about": "소개", "@about": { "type": "String", @@ -11929,5 +11929,15 @@ "@highlightVocabTooltip": { "type": "String", "placeholders": {} + }, + "teacherModeTitle": "교사 모드", + "teacherModeDesc": "모든 주제와 활동을 잠금 해제하려면 전환하십시오. 과정 관리자 전용.", + "@teacherModeTitle": { + "type": "String", + "placeholders": {} + }, + "@teacherModeDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_lt.arb b/lib/l10n/intl_lt.arb index c35886cbc..cce4ab91e 100644 --- a/lib/l10n/intl_lt.arb +++ b/lib/l10n/intl_lt.arb @@ -4342,7 +4342,7 @@ "playWithAI": "Žaiskite su dirbtiniu intelektu dabar", "courseStartDesc": "Pangea botas pasiruošęs bet kada pradėti!\n\n...bet mokymasis yra geresnis su draugais!", "@@locale": "lt", - "@@last_modified": "2025-10-16 13:31:41.724130", + "@@last_modified": "2025-11-19 10:06:46.685695", "@alwaysUse24HourFormat": { "type": "String", "placeholders": {} @@ -12626,5 +12626,15 @@ "@highlightVocabTooltip": { "type": "String", "placeholders": {} + }, + "teacherModeTitle": "Mokytojo režimas", + "teacherModeDesc": "Perjungti, kad atrakintumėte visus dalykus ir veiklas. Tik kurso administratoriams.", + "@teacherModeTitle": { + "type": "String", + "placeholders": {} + }, + "@teacherModeDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_lv.arb b/lib/l10n/intl_lv.arb index 34fdf2778..925de1c3c 100644 --- a/lib/l10n/intl_lv.arb +++ b/lib/l10n/intl_lv.arb @@ -4958,7 +4958,7 @@ "playWithAI": "Tagad spēlējiet ar AI", "courseStartDesc": "Pangea bots ir gatavs jebkurā laikā!\n\n...bet mācīties ir labāk ar draugiem!", "@@locale": "lv", - "@@last_modified": "2025-10-16 13:31:44.701808", + "@@last_modified": "2025-11-19 10:06:40.043224", "analyticsInactiveTitle": "Pieprasījumi neaktīviem lietotājiem nevar tikt nosūtīti", "analyticsInactiveDesc": "Neaktīvi lietotāji, kuri nav pieteikušies kopš šīs funkcijas ieviešanas, neredzēs jūsu pieprasījumu.\n\nPieprasījuma poga parādīsies, kad viņi atgriezīsies. Jūs varat atkārtoti nosūtīt pieprasījumu vēlāk, noklikšķinot uz pieprasījuma pogas viņu vārdā, kad tā būs pieejama.", "accessRequestedTitle": "Pieprasījums piekļūt analītikai", @@ -11807,5 +11807,15 @@ "@highlightVocabTooltip": { "type": "String", "placeholders": {} + }, + "teacherModeTitle": "Mācītāja režīms", + "teacherModeDesc": "Pārslēdziet, lai atbloķētu visas tēmas un aktivitātes. Tikai kursa administrators.", + "@teacherModeTitle": { + "type": "String", + "placeholders": {} + }, + "@teacherModeDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_nb.arb b/lib/l10n/intl_nb.arb index a0c64b2fc..4dc170944 100644 --- a/lib/l10n/intl_nb.arb +++ b/lib/l10n/intl_nb.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2025-10-16 13:31:46.932073", + "@@last_modified": "2025-11-19 10:06:25.294989", "about": "Om", "@about": { "type": "String", @@ -12914,5 +12914,15 @@ "@highlightVocabTooltip": { "type": "String", "placeholders": {} + }, + "teacherModeTitle": "Lærermodus", + "teacherModeDesc": "Bytt for å låse opp alle emner og aktiviteter. Kun kursadministrator.", + "@teacherModeTitle": { + "type": "String", + "placeholders": {} + }, + "@teacherModeDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_nl.arb b/lib/l10n/intl_nl.arb index c14256e7c..a61e0b162 100644 --- a/lib/l10n/intl_nl.arb +++ b/lib/l10n/intl_nl.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2025-10-16 13:31:49.093821", + "@@last_modified": "2025-11-19 10:06:52.228480", "about": "Over ons", "@about": { "type": "String", @@ -11821,5 +11821,15 @@ "@highlightVocabTooltip": { "type": "String", "placeholders": {} + }, + "teacherModeTitle": "Docentmodus", + "teacherModeDesc": "Schakel in om alle onderwerpen en activiteiten te ontgrendelen. Alleen voor cursusbeheerders.", + "@teacherModeTitle": { + "type": "String", + "placeholders": {} + }, + "@teacherModeDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_pl.arb b/lib/l10n/intl_pl.arb index 464283a64..75b997285 100644 --- a/lib/l10n/intl_pl.arb +++ b/lib/l10n/intl_pl.arb @@ -1,6 +1,6 @@ { "@@locale": "pl", - "@@last_modified": "2025-10-16 13:31:52.022877", + "@@last_modified": "2025-11-19 10:07:01.450034", "about": "O aplikacji", "@about": { "type": "String", @@ -11821,5 +11821,15 @@ "@highlightVocabTooltip": { "type": "String", "placeholders": {} + }, + "teacherModeTitle": "Tryb Nauczyciela", + "teacherModeDesc": "Przełącz, aby odblokować wszystkie tematy i aktywności. Tylko dla administratora kursu.", + "@teacherModeTitle": { + "type": "String", + "placeholders": {} + }, + "@teacherModeDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_pt.arb b/lib/l10n/intl_pt.arb index 5282214a9..93622eb33 100644 --- a/lib/l10n/intl_pt.arb +++ b/lib/l10n/intl_pt.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2025-10-16 13:31:54.004418", + "@@last_modified": "2025-11-19 10:06:02.778781", "copiedToClipboard": "Copiada para a área de transferência", "@copiedToClipboard": { "type": "String", @@ -12921,5 +12921,15 @@ "@highlightVocabTooltip": { "type": "String", "placeholders": {} + }, + "teacherModeTitle": "Modo Professor", + "teacherModeDesc": "Ative para desbloquear todos os tópicos e atividades. Apenas para administradores do curso.", + "@teacherModeTitle": { + "type": "String", + "placeholders": {} + }, + "@teacherModeDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_pt_BR.arb b/lib/l10n/intl_pt_BR.arb index e60172545..10a9735f2 100644 --- a/lib/l10n/intl_pt_BR.arb +++ b/lib/l10n/intl_pt_BR.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2025-10-16 13:31:56.112352", + "@@last_modified": "2025-11-19 10:05:59.697842", "about": "Sobre", "@about": { "type": "String", @@ -12179,5 +12179,15 @@ "@highlightVocabTooltip": { "type": "String", "placeholders": {} + }, + "teacherModeTitle": "Modo Professor", + "teacherModeDesc": "Ative para desbloquear todos os tópicos e atividades. Somente administrador do curso.", + "@teacherModeTitle": { + "type": "String", + "placeholders": {} + }, + "@teacherModeDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_pt_PT.arb b/lib/l10n/intl_pt_PT.arb index fde9ec765..87d584243 100644 --- a/lib/l10n/intl_pt_PT.arb +++ b/lib/l10n/intl_pt_PT.arb @@ -3816,7 +3816,7 @@ "selectAll": "Selecionar tudo", "deselectAll": "Desmarcar tudo", "@@locale": "pt_PT", - "@@last_modified": "2025-10-16 13:31:58.159625", + "@@last_modified": "2025-11-19 10:06:34.617095", "@alwaysUse24HourFormat": { "type": "String", "placeholders": {} @@ -12850,5 +12850,15 @@ "@highlightVocabTooltip": { "type": "String", "placeholders": {} + }, + "teacherModeTitle": "Modo Professor", + "teacherModeDesc": "Ative para desbloquear todos os tópicos e atividades. Apenas para administradores do curso.", + "@teacherModeTitle": { + "type": "String", + "placeholders": {} + }, + "@teacherModeDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_ro.arb b/lib/l10n/intl_ro.arb index 1d1864c30..275fd7a1b 100644 --- a/lib/l10n/intl_ro.arb +++ b/lib/l10n/intl_ro.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2025-10-16 13:32:00.774739", + "@@last_modified": "2025-11-19 10:05:44.760968", "about": "Despre", "@about": { "type": "String", @@ -12556,5 +12556,15 @@ "@highlightVocabTooltip": { "type": "String", "placeholders": {} + }, + "teacherModeTitle": "Mod Profesor", + "teacherModeDesc": "Comută pentru a debloca toate subiectele și activitățile. Numai pentru administratorul cursului.", + "@teacherModeTitle": { + "type": "String", + "placeholders": {} + }, + "@teacherModeDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_ru.arb b/lib/l10n/intl_ru.arb index 36b8efa22..769ee2780 100644 --- a/lib/l10n/intl_ru.arb +++ b/lib/l10n/intl_ru.arb @@ -1,6 +1,6 @@ { "@@locale": "ru", - "@@last_modified": "2025-10-16 13:32:02.970247", + "@@last_modified": "2025-11-19 10:07:15.570964", "about": "О проекте", "@about": { "type": "String", @@ -11926,5 +11926,15 @@ "@highlightVocabTooltip": { "type": "String", "placeholders": {} + }, + "teacherModeTitle": "Режим учителя", + "teacherModeDesc": "Переключите, чтобы разблокировать все темы и активности. Только для администратора курса.", + "@teacherModeTitle": { + "type": "String", + "placeholders": {} + }, + "@teacherModeDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_sk.arb b/lib/l10n/intl_sk.arb index 89f5a72cf..7cb7db073 100644 --- a/lib/l10n/intl_sk.arb +++ b/lib/l10n/intl_sk.arb @@ -1,6 +1,6 @@ { "@@locale": "sk", - "@@last_modified": "2025-10-16 13:32:06.139506", + "@@last_modified": "2025-11-19 10:05:46.486562", "about": "O aplikácii", "@about": { "type": "String", @@ -12905,5 +12905,15 @@ "@highlightVocabTooltip": { "type": "String", "placeholders": {} + }, + "teacherModeTitle": "Režim učiteľa", + "teacherModeDesc": "Prepnúť na odomknutie všetkých tém a aktivít. Iba administrátor kurzu.", + "@teacherModeTitle": { + "type": "String", + "placeholders": {} + }, + "@teacherModeDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_sl.arb b/lib/l10n/intl_sl.arb index 272aa5bae..fe8941872 100644 --- a/lib/l10n/intl_sl.arb +++ b/lib/l10n/intl_sl.arb @@ -2945,7 +2945,7 @@ "playWithAI": "Za zdaj igrajte z AI-jem", "courseStartDesc": "Pangea Bot je pripravljen kadarkoli!\n\n...ampak je bolje učiti se s prijatelji!", "@@locale": "sl", - "@@last_modified": "2025-10-16 13:32:09.029952", + "@@last_modified": "2025-11-19 10:06:09.338917", "@alwaysUse24HourFormat": { "type": "String", "placeholders": {} @@ -12902,5 +12902,15 @@ "@highlightVocabTooltip": { "type": "String", "placeholders": {} + }, + "teacherModeTitle": "Način učitelja", + "teacherModeDesc": "Preklopi za odklepanje vseh tem in aktivnosti. Samo za skrbnike tečaja.", + "@teacherModeTitle": { + "type": "String", + "placeholders": {} + }, + "@teacherModeDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_sr.arb b/lib/l10n/intl_sr.arb index b1861cce7..930ee21a0 100644 --- a/lib/l10n/intl_sr.arb +++ b/lib/l10n/intl_sr.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2025-10-16 13:32:11.725645", + "@@last_modified": "2025-11-19 10:07:20.801798", "about": "О програму", "@about": { "type": "String", @@ -12923,5 +12923,15 @@ "@highlightVocabTooltip": { "type": "String", "placeholders": {} + }, + "teacherModeTitle": "Režim učitelja", + "teacherModeDesc": "Prebacite da otključate sve teme i aktivnosti. Samo za administratore kursa.", + "@teacherModeTitle": { + "type": "String", + "placeholders": {} + }, + "@teacherModeDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_sv.arb b/lib/l10n/intl_sv.arb index 64e0f60d7..2f56aba62 100644 --- a/lib/l10n/intl_sv.arb +++ b/lib/l10n/intl_sv.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2025-10-16 16:03:28.457217", + "@@last_modified": "2025-11-19 10:07:03.292476", "about": "Om", "@about": { "type": "String", @@ -12299,5 +12299,15 @@ "@highlightVocabTooltip": { "type": "String", "placeholders": {} + }, + "teacherModeTitle": "Lärarläge", + "teacherModeDesc": "Växla för att låsa upp alla ämnen och aktiviteter. Endast kursadministratör.", + "@teacherModeTitle": { + "type": "String", + "placeholders": {} + }, + "@teacherModeDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_ta.arb b/lib/l10n/intl_ta.arb index 21edd3ce2..6548ab80a 100644 --- a/lib/l10n/intl_ta.arb +++ b/lib/l10n/intl_ta.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2025-10-16 13:32:14.869459", + "@@last_modified": "2025-11-19 10:06:50.799508", "acceptedTheInvitation": "👍 {username} அழைப்பை ஏற்றுக்கொண்டது", "@acceptedTheInvitation": { "type": "String", @@ -12045,5 +12045,15 @@ "@highlightVocabTooltip": { "type": "String", "placeholders": {} + }, + "teacherModeTitle": "ஆசிரியர் முறை", + "teacherModeDesc": "எல்லா தலைப்புகள் மற்றும் செயல்பாடுகளை திறக்க மாற்றவும். பாடம் நிர்வாகி மட்டுமே.", + "@teacherModeTitle": { + "type": "String", + "placeholders": {} + }, + "@teacherModeDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_te.arb b/lib/l10n/intl_te.arb index 150f0569d..0431adea4 100644 --- a/lib/l10n/intl_te.arb +++ b/lib/l10n/intl_te.arb @@ -2401,7 +2401,7 @@ "playWithAI": "ఇప్పుడే AI తో ఆడండి", "courseStartDesc": "పాంజియా బాట్ ఎప్పుడైనా సిద్ధంగా ఉంటుంది!\n\n...కానీ స్నేహితులతో నేర్చుకోవడం మెరుగైనది!", "@@locale": "te", - "@@last_modified": "2025-10-16 13:32:18.059294", + "@@last_modified": "2025-11-19 10:06:45.064200", "@setCustomPermissionLevel": { "type": "String", "placeholders": {} @@ -12910,5 +12910,15 @@ "@highlightVocabTooltip": { "type": "String", "placeholders": {} + }, + "teacherModeTitle": "ఉపాధ్యాయ మోడ్", + "teacherModeDesc": "అన్ని అంశాలు మరియు కార్యకలాపాలను అన్లాక్ చేయడానికి టోగుల్ చేయండి. కోర్సు నిర్వాహకుడికి మాత్రమే.", + "@teacherModeTitle": { + "type": "String", + "placeholders": {} + }, + "@teacherModeDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_th.arb b/lib/l10n/intl_th.arb index 2c8261ae1..c1bfc2439 100644 --- a/lib/l10n/intl_th.arb +++ b/lib/l10n/intl_th.arb @@ -4937,7 +4937,7 @@ "playWithAI": "เล่นกับ AI ชั่วคราว", "courseStartDesc": "Pangea Bot พร้อมที่จะเริ่มต้นได้ทุกเมื่อ!\n\n...แต่การเรียนรู้ดีกว่ากับเพื่อน!", "@@locale": "th", - "@@last_modified": "2025-10-16 13:32:20.092719", + "@@last_modified": "2025-11-19 10:06:33.387069", "@alwaysUse24HourFormat": { "type": "String", "placeholders": {} @@ -12879,5 +12879,15 @@ "@highlightVocabTooltip": { "type": "String", "placeholders": {} + }, + "teacherModeTitle": "โหมดครู", + "teacherModeDesc": "สลับเพื่อปลดล็อกหัวข้อและกิจกรรมทั้งหมด เฉพาะผู้ดูแลหลักสูตรเท่านั้น", + "@teacherModeTitle": { + "type": "String", + "placeholders": {} + }, + "@teacherModeDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_tr.arb b/lib/l10n/intl_tr.arb index e76932b1a..514efe6b9 100644 --- a/lib/l10n/intl_tr.arb +++ b/lib/l10n/intl_tr.arb @@ -1,6 +1,6 @@ { "@@locale": "tr", - "@@last_modified": "2025-10-16 13:32:23.571063", + "@@last_modified": "2025-11-19 10:06:43.229771", "about": "Hakkında", "@about": { "type": "String", @@ -12043,5 +12043,15 @@ "@highlightVocabTooltip": { "type": "String", "placeholders": {} + }, + "teacherModeTitle": "Öğretmen Modu", + "teacherModeDesc": "Tüm konuları ve etkinlikleri açmak için geçiş yapın. Sadece kurs yöneticisi.", + "@teacherModeTitle": { + "type": "String", + "placeholders": {} + }, + "@teacherModeDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_uk.arb b/lib/l10n/intl_uk.arb index 0ee7639aa..2f7d4d834 100644 --- a/lib/l10n/intl_uk.arb +++ b/lib/l10n/intl_uk.arb @@ -1,6 +1,6 @@ { "@@locale": "uk", - "@@last_modified": "2025-10-16 13:32:26.039817", + "@@last_modified": "2025-11-19 10:06:21.916637", "about": "Про застосунок", "@about": { "type": "String", @@ -11815,5 +11815,15 @@ "@highlightVocabTooltip": { "type": "String", "placeholders": {} + }, + "teacherModeTitle": "Режим вчителя", + "teacherModeDesc": "Перемкніть, щоб розблокувати всі теми та активності. Тільки для адміністратора курсу.", + "@teacherModeTitle": { + "type": "String", + "placeholders": {} + }, + "@teacherModeDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_vi.arb b/lib/l10n/intl_vi.arb index 021b19791..21d12475c 100644 --- a/lib/l10n/intl_vi.arb +++ b/lib/l10n/intl_vi.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2025-10-16 13:32:28.677939", + "@@last_modified": "2025-11-19 10:06:48.931764", "about": "Giới thiệu", "@about": { "type": "String", @@ -5762,5 +5762,15 @@ "@highlightVocabTooltip": { "type": "String", "placeholders": {} + }, + "teacherModeTitle": "Chế độ Giáo viên", + "teacherModeDesc": "Chuyển đổi để mở khóa tất cả các chủ đề và hoạt động. Chỉ dành cho quản trị viên khóa học.", + "@teacherModeTitle": { + "type": "String", + "placeholders": {} + }, + "@teacherModeDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_yue.arb b/lib/l10n/intl_yue.arb index 5f9fc13a2..3a45af6d0 100644 --- a/lib/l10n/intl_yue.arb +++ b/lib/l10n/intl_yue.arb @@ -2341,7 +2341,7 @@ "selectAll": "全選", "deselectAll": "取消全選", "@@locale": "yue", - "@@last_modified": "2025-10-16 13:32:30.797608", + "@@last_modified": "2025-11-19 10:06:11.264487", "@ignoreUser": { "type": "String", "placeholders": {} @@ -12912,5 +12912,15 @@ "@highlightVocabTooltip": { "type": "String", "placeholders": {} + }, + "teacherModeTitle": "教師模式", + "teacherModeDesc": "切換以解鎖所有主題和活動。僅限課程管理員。", + "@teacherModeTitle": { + "type": "String", + "placeholders": {} + }, + "@teacherModeDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_zh.arb b/lib/l10n/intl_zh.arb index 2dea397dc..50d4e3a7b 100644 --- a/lib/l10n/intl_zh.arb +++ b/lib/l10n/intl_zh.arb @@ -1,6 +1,6 @@ { "@@locale": "zh", - "@@last_modified": "2025-10-16 13:32:33.841766", + "@@last_modified": "2025-11-19 10:06:55.893202", "about": "关于", "@about": { "type": "String", @@ -11812,5 +11812,15 @@ "@highlightVocabTooltip": { "type": "String", "placeholders": {} + }, + "teacherModeTitle": "教师模式", + "teacherModeDesc": "切换以解锁所有主题和活动。仅限课程管理员。", + "@teacherModeTitle": { + "type": "String", + "placeholders": {} + }, + "@teacherModeDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/l10n/intl_zh_Hant.arb b/lib/l10n/intl_zh_Hant.arb index 392205614..6535e9920 100644 --- a/lib/l10n/intl_zh_Hant.arb +++ b/lib/l10n/intl_zh_Hant.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2025-10-16 13:32:35.882830", + "@@last_modified": "2025-11-19 10:06:36.975533", "about": "關於", "@about": { "type": "String", @@ -11819,5 +11819,15 @@ "@highlightVocabTooltip": { "type": "String", "placeholders": {} + }, + "teacherModeTitle": "教師模式", + "teacherModeDesc": "切換以解鎖所有主題和活動。僅限課程管理員。", + "@teacherModeTitle": { + "type": "String", + "placeholders": {} + }, + "@teacherModeDesc": { + "type": "String", + "placeholders": {} } } \ No newline at end of file diff --git a/lib/pangea/chat_settings/pages/room_details_buttons.dart b/lib/pangea/chat_settings/pages/room_details_buttons.dart index 70c2ad6e3..525a6de07 100644 --- a/lib/pangea/chat_settings/pages/room_details_buttons.dart +++ b/lib/pangea/chat_settings/pages/room_details_buttons.dart @@ -11,6 +11,8 @@ class ButtonDetails { final bool visible; final bool enabled; final bool showInMainView; + final bool isToggle; + final bool value; final SpaceSettingsTabs? tab; const ButtonDetails({ @@ -20,6 +22,8 @@ class ButtonDetails { this.visible = true, this.enabled = true, this.onPressed, + this.isToggle = false, + this.value = false, this.showInMainView = true, this.tab, }); diff --git a/lib/pangea/chat_settings/pages/space_details_content.dart b/lib/pangea/chat_settings/pages/space_details_content.dart index a37fb50c2..0cb5c5515 100644 --- a/lib/pangea/chat_settings/pages/space_details_content.dart +++ b/lib/pangea/chat_settings/pages/space_details_content.dart @@ -5,6 +5,7 @@ import 'package:go_router/go_router.dart'; import 'package:material_symbols_icons/symbols.dart'; import 'package:matrix/matrix.dart'; +import 'package:fluffychat/config/app_config.dart'; import 'package:fluffychat/config/themes.dart'; import 'package:fluffychat/l10n/l10n.dart'; import 'package:fluffychat/pages/chat_details/chat_details.dart'; @@ -122,6 +123,19 @@ class SpaceDetailsContent extends StatelessWidget { enabled: room.isRoomAdmin, showInMainView: false, ), + ButtonDetails( + title: L10n.of(context).teacherModeTitle, + description: L10n.of(context).teacherModeDesc, + icon: const Icon(Icons.school_outlined, size: 30.0), + onPressed: () => showFutureLoadingDialog( + context: context, + future: () => room.setTeacherMode(!room.isTeacherMode), + ), + enabled: room.isRoomAdmin, + showInMainView: false, + isToggle: true, + value: room.isTeacherMode, + ), ButtonDetails( title: l10n.permissions, description: l10n.permissionsDesc, @@ -327,16 +341,32 @@ class SpaceDetailsContent extends StatelessWidget { children: buttons.map((b) { return Opacity( opacity: b.enabled ? 1.0 : 0.5, - child: ListTile( - title: Text(b.title), - subtitle: b.description != null - ? Text(b.description!) - : null, - leading: b.icon, - onTap: b.enabled - ? () => b.onPressed?.call() - : null, - ), + child: b.isToggle + ? SwitchListTile( + title: Text(b.title), + subtitle: b.description != null + ? Text(b.description!) + : null, + secondary: b.icon, + value: b.value, + onChanged: b.enabled + ? (value) { + b.onPressed?.call(); + } + : null, + activeThumbColor: + AppConfig.activeToggleColor, + ) + : ListTile( + title: Text(b.title), + subtitle: b.description != null + ? Text(b.description!) + : null, + leading: b.icon, + onTap: b.enabled + ? () => b.onPressed?.call() + : null, + ), ); }).toList(), ), diff --git a/lib/pangea/course_plans/courses/course_plan_room_extension.dart b/lib/pangea/course_plans/courses/course_plan_room_extension.dart index 18be857d1..7a8c4a97d 100644 --- a/lib/pangea/course_plans/courses/course_plan_room_extension.dart +++ b/lib/pangea/course_plans/courses/course_plan_room_extension.dart @@ -101,4 +101,22 @@ extension CoursePlanRoomExtension on Room { } return roomID; } + + bool get isTeacherMode { + final event = getState(PangeaEventTypes.teacherMode, client.userID!); + if (event == null) return false; + final content = event.content; + return content['enabled'] == true; + } + + Future setTeacherMode(bool enabled) async { + await client.setRoomStateWithKey( + id, + PangeaEventTypes.teacherMode, + client.userID!, + { + 'enabled': enabled, + }, + ); + } } diff --git a/lib/pangea/course_settings/course_settings.dart b/lib/pangea/course_settings/course_settings.dart index 14e7494b6..63fa406ce 100644 --- a/lib/pangea/course_settings/course_settings.dart +++ b/lib/pangea/course_settings/course_settings.dart @@ -118,6 +118,8 @@ class CourseSettings extends StatelessWidget { controller.course!, ); + final teacherMode = room.isTeacherMode; + return Column( spacing: isColumnMode ? 40.0 : 36.0, mainAxisSize: MainAxisSize.min, @@ -130,9 +132,12 @@ class CourseSettings extends StatelessWidget { final usersInTopic = userTopics[topicId] ?? []; final activityError = controller.activityErrors[topicId]; - final bool locked = topicIndex == null ? false : index > topicIndex; + final bool locked = + !teacherMode && (topicIndex == null ? false : index > topicIndex); + final disabled = locked || controller.loadingActivities || activityError != null; + return AbsorbPointer( absorbing: disabled, child: Opacity( diff --git a/lib/pangea/events/constants/pangea_event_types.dart b/lib/pangea/events/constants/pangea_event_types.dart index 56564218c..6fda7935c 100644 --- a/lib/pangea/events/constants/pangea_event_types.dart +++ b/lib/pangea/events/constants/pangea_event_types.dart @@ -52,4 +52,5 @@ class PangeaEventTypes { /// Relates to course plans static const coursePlan = "pangea.course_plan"; static const courseUser = "p.course_user"; + static const teacherMode = "pangea.teacher_mode"; } diff --git a/lib/utils/client_manager.dart b/lib/utils/client_manager.dart index a0e4d78f3..ba0870606 100644 --- a/lib/utils/client_manager.dart +++ b/lib/utils/client_manager.dart @@ -150,6 +150,7 @@ abstract class ClientManager { PangeaEventTypes.activityRoomIds, PangeaEventTypes.coursePlan, PangeaEventTypes.courseUser, + PangeaEventTypes.teacherMode, // Pangea# }, logLevel: kReleaseMode ? Level.warning : Level.verbose,