feat: add teacher mode to course settings

This commit is contained in:
ggurdin 2025-11-19 10:09:41 -05:00
parent 856b57fc85
commit cdc6ca9cf7
No known key found for this signature in database
GPG key ID: A01CB41737CBB478
60 changed files with 657 additions and 66 deletions

View file

@ -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": {}
}
}

View file

@ -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": {}
}
}

View file

@ -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": {}
}
}

View file

@ -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": {}
}
}

View file

@ -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": {}
}
}

View file

@ -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": {}
}
}

View file

@ -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": {}
}
}

View file

@ -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": {}
}
}

View file

@ -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": {}
}
}

View file

@ -5305,5 +5305,7 @@
"joinCourseWithCode": "Join course with code",
"joinPublicCourse": "Join public course",
"vocabLevelsDesc": "This is where vocab words will go once youve 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."
}

View file

@ -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": {}
}
}

View file

@ -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": {}
}
}

View file

@ -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": {}
}
}

View file

@ -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": {}
}
}

View file

@ -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": {}
}
}

View file

@ -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": {}
}
}

View file

@ -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": {}
}
}

View file

@ -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": {}
}
}

View file

@ -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": {}
}
}

View file

@ -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": {}
}
}

View file

@ -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": {}
}
}

View file

@ -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": {}
}
}

View file

@ -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": {}
}
}

View file

@ -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": {}
}
}

View file

@ -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": {}
}
}

View file

@ -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": {}
}
}

View file

@ -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": {}
}
}

View file

@ -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": {}
}
}

View file

@ -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": {}
}
}

View file

@ -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": {}
}
}

View file

@ -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": {}
}
}

View file

@ -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": {}
}
}

View file

@ -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": {}
}
}

View file

@ -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": {}
}
}

View file

@ -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": {}
}
}

View file

@ -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": {}
}
}

View file

@ -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": {}
}
}

View file

@ -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": {}
}
}

View file

@ -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": {}
}
}

View file

@ -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": {}
}
}

View file

@ -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": {}
}
}

View file

@ -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": {}
}
}

View file

@ -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": {}
}
}

View file

@ -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": {}
}
}

View file

@ -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": {}
}
}

View file

@ -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": {}
}
}

View file

@ -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": {}
}
}

View file

@ -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": {}
}
}

View file

@ -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": {}
}
}

View file

@ -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": {}
}
}

View file

@ -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": {}
}
}

View file

@ -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": {}
}
}

View file

@ -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": {}
}
}

View file

@ -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": {}
}
}

View file

@ -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,
});

View file

@ -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(),
),

View file

@ -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<void> setTeacherMode(bool enabled) async {
await client.setRoomStateWithKey(
id,
PangeaEventTypes.teacherMode,
client.userID!,
{
'enabled': enabled,
},
);
}
}

View file

@ -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(

View file

@ -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";
}

View file

@ -150,6 +150,7 @@ abstract class ClientManager {
PangeaEventTypes.activityRoomIds,
PangeaEventTypes.coursePlan,
PangeaEventTypes.courseUser,
PangeaEventTypes.teacherMode,
// Pangea#
},
logLevel: kReleaseMode ? Level.warning : Level.verbose,