refactor(messages): msgmenu only for navLabel, gender-neutral language navigation

This commit is contained in:
Winnie Ros 2021-03-16 11:43:00 +01:00
parent c796bd5934
commit 8d9d3c613f
40 changed files with 182 additions and 112 deletions

View File

@ -39,13 +39,47 @@ BtnSystemMessageUnhide: Nicht mehr verstecken
BtnCommunicationSend: Senden BtnCommunicationSend: Senden
BtnCommunicationTest: Test-Nachricht verschicken BtnCommunicationTest: Test-Nachricht verschicken
EmailTable: Email TableEmail: Email
StudyTermTable: Studiengang TableStudyTerm: Studiengang
StudyFeatureAgeTable: Fachsemester TableStudyFeatureAge: Fachsemester
StudyFeatureDegreeTable: Abschluss TableStudyFeatureDegree: Abschluss
StudyFeatureTypeTable: TableStudyFeatureType:
StudyFeatureValidTable: Aktiv TableStudyFeatureValid: Aktiv
StudyFeatureUpdateTable: Abgeglichen TableStudyFeatureUpdate: Abgeglichen
TableHeadingFilter: Filter
HeadingLegal: Rechtliche Informationen
SubmissionNew: Abgabe anlegen
ParticipantsList: Kursteilnehmerlisten
ParticipantsIntersect: Überschneidung von Kursteilnehmer:innen
HeadingProfileData: Persönliche Daten
HeadingSchoolList: Institute
HeadingAdminCrontab: Crontab
HeadingAdminTokens: Tokens ausstellen
HeadingAllocationAccept: Platzvergabe akzeptieren
HeadingAllocationCompute: Platzvergabe berechnen
HeadingAllocationInfo: Hinweise zum Ablauf einer Zentralanmeldung
AllocationPriorities: Zentrale Dringlichkeiten
AllocationUsers: Bewerber:innen
HeadingCourseMembers: Kursteilnehmer:innen
HeadingCourseExamOffice: Prüfungsbeauftragte
HeadingExamList: Prüfungen
HeadingExamOfficeFields: Fächer
HeadingExamOfficeUsers: Benutzer:innen
HeadingExternalExamList: Externe Prüfungen
HeadingExternalExamNew: Neue externe Prüfung
SheetPersonalisedFilesDownload: Personalisierte Dateien herunterladen
HeadingCorrectionsAssign: Zuteilung der Korrekturen
HeadingUserAdd: Benutzer:in anlegen
CorrectorsChange: Korrektoren ändern
MaterialList: Material
SheetListCourse: Übungsblätter
HeadingDataProt: Datenschutzerklärung
HeadingTermsUse: Nutzungsbedingungen
HeadingCopyright: Urheberrecht
HeadingImprint: Impressum
CourseApplications: Bewerbungen
CourseNew: Neuen Kurs anlegen
FormFieldWorkflowDatasetTip: Mindestens ein gekennzeichnetes Feld pro Datensatz muss ausgefüllt werden FormFieldWorkflowDatasetTip: Mindestens ein gekennzeichnetes Feld pro Datensatz muss ausgefüllt werden
@ -152,7 +186,6 @@ CourseEditDupShort tid@TermId ssh@SchoolId csh@CourseShorthand: Kurs #{tid}-#{ss
FFSheetName: Name FFSheetName: Name
TermCourseListHeading tid@TermId: Kursübersicht #{tid} TermCourseListHeading tid@TermId: Kursübersicht #{tid}
TermSchoolCourseListHeading tid@TermId school@SchoolName: Kursübersicht #{tid} für #{school} TermSchoolCourseListHeading tid@TermId school@SchoolName: Kursübersicht #{tid} für #{school}
CourseListTitle: Alle Kurse
TermCourseListTitle tid@TermId: Kurse #{tid} TermCourseListTitle tid@TermId: Kurse #{tid}
TermSchoolCourseListTitle tid@TermId school@SchoolName: Kurse #{tid} für #{school} TermSchoolCourseListTitle tid@TermId school@SchoolName: Kurse #{tid} für #{school}
CourseNewHeading: Neuen Kurs anlegen CourseNewHeading: Neuen Kurs anlegen
@ -1935,7 +1968,7 @@ CourseApplicationsTableCsvExceptionNoMatchingUser: Bewerber konnte nicht eindeut
CourseApplicationsTableCsvExceptionNoMatchingAllocation: Zentralanmeldung konnte nicht eindeutig identifiziert werden CourseApplicationsTableCsvExceptionNoMatchingAllocation: Zentralanmeldung konnte nicht eindeutig identifiziert werden
CourseApplicationsTableCsvExceptionNoMatchingStudyFeatures: Das angegebene Studienfach konnte keinem Studienfach des Kursteilnehmers zugeordnet werden CourseApplicationsTableCsvExceptionNoMatchingStudyFeatures: Das angegebene Studienfach konnte keinem Studienfach des Kursteilnehmers zugeordnet werden
TableHeadingFilter: Filter
TableHeadingCsvImport: CSV-Import TableHeadingCsvImport: CSV-Import
TableHeadingCsvExport: CSV-Export TableHeadingCsvExport: CSV-Export

View File

@ -39,13 +39,47 @@ BtnSystemMessageUnhide: Unhide
BtnCommunicationSend: Send BtnCommunicationSend: Send
BtnCommunicationTest: Send test message BtnCommunicationTest: Send test message
EmailTable: Email TableEmail: Email
StudyFeatureTypeTable: TableStudyFeatureType:
StudyFeatureValidTable: Valid TableStudyFeatureValid: Valid
StudyFeatureUpdateTable: Updated TableStudyFeatureUpdate: Updated
StudyFeatureAgeTable: Semester TableStudyFeatureAge: Semester
StudyFeatureDegreeTable: Degree TableStudyFeatureDegree: Degree
StudyTermTable: Field of study TableStudyTerm: Field of study
TableHeadingFilter: Filter
HeadingLegal: Legal
SubmissionNew: Create submission
ParticipantsList: Lists of course participants
ParticipantsIntersect: Common course participants
HeadingProfileData: Personal information
HeadingSchoolList: Departments
HeadingAdminCrontab: Crontab
HeadingAdminTokens: Issue tokens
HeadingAllocationAccept: Accept allocation
HeadingAllocationCompute: Compute allocation
HeadingAllocationInfo: Information regarding central allocations
AllocationPriorities: Central priorities
AllocationUsers: Applicants
HeadingCourseMembers: Participants
HeadingCourseExamOffice: Exam offices
HeadingExamList: Exams
HeadingExamOfficeFields: Fields of study
HeadingExamOfficeUsers: Users
HeadingExternalExamList: External exams
HeadingExternalExamNew: New external exam
SheetPersonalisedFilesDownload: Download personalised sheet files
HeadingCorrectionsAssign: Assign corrections
HeadingUserAdd: Add user
CorrectorsChange: Adjust correctors
MaterialList: Material
SheetListCourse: Exercise sheets
HeadingDataProt: Data protection
HeadingTermsUse: Terms of use
HeadingCopyright: Copyright
HeadingImprint: Imprint
CourseApplications: Applications
CourseNew: Create new course
FormFieldWorkflowDatasetTip: At least one of the marked fields must be filled FormFieldWorkflowDatasetTip: At least one of the marked fields must be filled
@ -152,7 +186,7 @@ CourseEditDupShort tid ssh csh: Could not edit course #{tid}-#{ssh}-#{csh}. Anot
FFSheetName: Name FFSheetName: Name
TermCourseListHeading tid: Courses #{tid} TermCourseListHeading tid: Courses #{tid}
TermSchoolCourseListHeading tid school: Courses #{tid}, #{school} TermSchoolCourseListHeading tid school: Courses #{tid}, #{school}
CourseListTitle: All courses
TermCourseListTitle tid: Courses #{tid} TermCourseListTitle tid: Courses #{tid}
TermSchoolCourseListTitle tid school: Courses #{tid}, #{school} TermSchoolCourseListTitle tid school: Courses #{tid}, #{school}
CourseNewHeading: Create new course CourseNewHeading: Create new course
@ -1928,7 +1962,7 @@ CourseApplicationsTableCsvExceptionNoMatchingUser: Applicant could not be identi
CourseApplicationsTableCsvExceptionNoMatchingAllocation: Central allocation could not be identified uniquely CourseApplicationsTableCsvExceptionNoMatchingAllocation: Central allocation could not be identified uniquely
CourseApplicationsTableCsvExceptionNoMatchingStudyFeatures: The specified field did not match with any of the participant's fields of study CourseApplicationsTableCsvExceptionNoMatchingStudyFeatures: The specified field did not match with any of the participant's fields of study
TableHeadingFilter: Filter
TableHeadingCsvImport: CSV import TableHeadingCsvImport: CSV import
TableHeadingCsvExport: CSV export TableHeadingCsvExport: CSV export

View File

@ -0,0 +1 @@
CourseListTitle: Alle Kurse

View File

@ -0,0 +1 @@
CourseListTitle: All courses

View File

@ -1,13 +1,13 @@
MenuAdminHeading: Administration MenuAdminHeading: Administration
MenuAdminFeaturesHeading: Studiengänge MenuAdminFeaturesHeading: Studiengänge
MenuInfoLecturerTitle: Hinweise für Veranstalter MenuInfoLecturerTitle: Hinweise für Veranstalter:innen
MenuInfoLecturerCourses: Veranstaltungen MenuInfoLecturerCourses: Veranstaltungen
MenuInfoLecturerExercises: Übungsbetrieb MenuInfoLecturerExercises: Übungsbetrieb
MenuInfoLecturerTutorials: Tutorien MenuInfoLecturerTutorials: Tutorien
MenuInfoLecturerExams: Prüfungen MenuInfoLecturerExams: Prüfungen
MenuInfoLecturerAllocations: Zentralanmeldungen MenuInfoLecturerAllocations: Zentralanmeldungen
MenuCsvOptions: CSV-Optionen MenuCsvOptions: CSV-Optionen
MenuCorrectorAssignTitle: Korrektor zuweisen MenuCorrectorAssignTitle: Korrektor:in zuweisen
MenuOpenCourses: Kurse mit offener Registrierung MenuOpenCourses: Kurse mit offener Registrierung
MenuOpenAllocations: Aktive Zentralanmeldungen MenuOpenAllocations: Aktive Zentralanmeldungen
MenuNews: Aktuell MenuNews: Aktuell
@ -26,15 +26,15 @@ MenuLogin: Login
MenuLogout: Logout MenuLogout: Logout
MenuAllocationList: Zentralanmeldungen MenuAllocationList: Zentralanmeldungen
MenuCourseList: Kurse MenuCourseList: Kurse
MenuCourseMembers: Kursteilnehmer MenuCourseMembers: Kursteilnehmer:innen
MenuCourseAddMembers: Kursteilnehmer hinzufügen MenuCourseAddMembers: KursteilnehmerInnen hinzufügen
MenuCourseCommunication: Kursmitteilung (E-Mail) MenuCourseCommunication: Kursmitteilung (E-Mail)
MenuCourseApplications: Bewerbungen MenuCourseApplications: Bewerbungen
MenuCourseExamOffice: Prüfungsbeauftragte MenuCourseExamOffice: Prüfungsbeauftragte
MenuTermShow: Semester MenuTermShow: Semester
MenuSubmissionDelete: Abgabe löschen MenuSubmissionDelete: Abgabe löschen
MenuUsers: Benutzer MenuUsers: Benutzer:in
MenuUserAdd: Benutzer anlegen MenuUserAdd: Benutzer:in anlegen
MenuUserNotifications: Benachrichtigungs-Einstellungen MenuUserNotifications: Benachrichtigungs-Einstellungen
MenuUserPassword: Passwort MenuUserPassword: Passwort
MenuAdminTest: Admin-Demo MenuAdminTest: Admin-Demo
@ -59,14 +59,13 @@ MenuTutorialList: Tutorien
MenuTutorialNew: Neues Tutorium anlegen MenuTutorialNew: Neues Tutorium anlegen
MenuSheetNew: Neues Übungsblatt anlegen MenuSheetNew: Neues Übungsblatt anlegen
MenuSheetCurrent: Aktuelles Übungsblatt MenuSheetCurrent: Aktuelles Übungsblatt
MenuSheetOldUnassigned: Abgaben ohne Korrektor MenuSheetOldUnassigned: Abgaben ohne Korrektor:in
MenuCourseEdit: Kurs editieren MenuCourseEdit: Kurs editieren
MenuCourseClone: Als neuen Kurs klonen MenuCourseClone: Als neuen Kurs klonen
MenuCourseDelete: Kurs löschen MenuCourseDelete: Kurs löschen
MenuSubmissionNew: Abgabe anlegen MenuSubmissionNew: Abgabe anlegen
MenuSubmissionOwn: Abgabe MenuSubmissionOwn: Abgabe
MenuCorrectors: Korrektoren MenuCorrectors: Korrektor:innen
MenuCorrectorsChange: Korrektoren ändern
MenuSheetEdit: Übungsblatt editieren MenuSheetEdit: Übungsblatt editieren
MenuSheetDelete: Übungsblatt löschen MenuSheetDelete: Übungsblatt löschen
MenuSheetClone: Als neues Übungsblatt klonen MenuSheetClone: Als neues Übungsblatt klonen
@ -79,35 +78,35 @@ MenuCorrectionsAssignSheet name@Text: Zuteilung der Korrekturen von #{name}
MenuAuthPreds: Authorisierungseinstellungen MenuAuthPreds: Authorisierungseinstellungen
MenuTutorialDelete: Tutorium löschen MenuTutorialDelete: Tutorium löschen
MenuTutorialEdit: Tutorium editieren MenuTutorialEdit: Tutorium editieren
MenuTutorialComm: Mitteilung an Teilnehmer MenuTutorialComm: Mitteilung an Teilnehmer:innen
MenuExamList: Prüfungen MenuExamList: Prüfungen
MenuExamNew: Neue Prüfung anlegen MenuExamNew: Neue Prüfung anlegen
MenuExamEdit: Prüfung bearbeiten MenuExamEdit: Prüfung bearbeiten
MenuExamUsers: Teilnehmer MenuExamUsers: Teilnehmer:innen
MenuExamGrades: Prüfungsleistungen MenuExamGrades: Prüfungsleistungen
MenuExamAddMembers: Prüfungsteilnehmer hinzufügen MenuExamAddMembers: Prüfungsteilnehmer hinzufügen
MenuExamCorrect: Prüfungsergebnisse eintragen MenuExamCorrect: Prüfungsergebnisse eintragen
MenuExamOfficeExams: Prüfungen MenuExamOfficeExams: Prüfungen
MenuExamOfficeFields: Fächer MenuExamOfficeFields: Fächer
MenuExamOfficeUsers: Benutzer MenuExamOfficeUsers: Benutzer:innen
MenuLecturerInvite: Funktionäre hinzufügen MenuLecturerInvite: Funktionäre hinzufügen
MenuAllocationInfo: Hinweise zum Ablauf einer Zentralanmeldung MenuAllocationInfo: Hinweise zum Ablauf einer Zentralanmeldung
MenuCourseApplicationsFiles: Dateien aller Bewerbungen MenuCourseApplicationsFiles: Dateien aller Bewerbungen
MenuSchoolList: Institute MenuSchoolList: Institute
MenuSchoolNew: Neues Institut anlegen MenuSchoolNew: Neues Institut anlegen
MenuExternalExamGrades: Prüfungsleistungen MenuExternalExamGrades: Prüfungsleistungen
MenuExternalExamUsers: Teilnehmer MenuExternalExamUsers: Teilnehmer:innen
MenuExternalExamEdit: Bearbeiten MenuExternalExamEdit: Bearbeiten
MenuExternalExamNew: Neue externe Prüfung MenuExternalExamNew: Neue externe Prüfung
MenuExternalExamList: Externe Prüfungen MenuExternalExamList: Externe Prüfungen
MenuExternalExamCorrect: Prüfungsleistungen eintragen MenuExternalExamCorrect: Prüfungsleistungen eintragen
MenuParticipantsList: Kursteilnehmerlisten MenuParticipantsList: Kursteilnehmerlisten
MenuParticipantsIntersect: Überschneidung von Kursteilnehmern MenuParticipantsIntersect: Überschneidung von Kursteilnehmer:innen
MenuAllocationUsers: Bewerber MenuAllocationUsers: Bewerber:innen
MenuAllocationPriorities: Zentrale Dringlichkeiten MenuAllocationPriorities: Zentrale Dringlichkeiten
MenuAllocationCompute: Platzvergabe berechnen MenuAllocationCompute: Platzvergabe berechnen
MenuAllocationAccept: Platzvergabe akzeptieren
MenuAllocationAddUser: Bewerber hinzufügen MenuAllocationAddUser: Bewerber:in hinzufügen
MenuFaq: FAQ MenuFaq: FAQ
MenuSheetPersonalisedFiles: Personalisierte Dateien herunterladen MenuSheetPersonalisedFiles: Personalisierte Dateien herunterladen
MenuCourseSheetPersonalisedFiles: Vorlage für personalisierte Übungsblatt-Dateien herunterladen MenuCourseSheetPersonalisedFiles: Vorlage für personalisierte Übungsblatt-Dateien herunterladen

View File

@ -66,7 +66,7 @@ MenuCourseDelete: Delete course
MenuSubmissionNew: Create submission MenuSubmissionNew: Create submission
MenuSubmissionOwn: Submission MenuSubmissionOwn: Submission
MenuCorrectors: Correctors MenuCorrectors: Correctors
MenuCorrectorsChange: Adjust correctors
MenuSheetEdit: Edit exercise sheet MenuSheetEdit: Edit exercise sheet
MenuSheetDelete: Delete exercise sheet MenuSheetDelete: Delete exercise sheet
MenuSheetClone: Clone exercise sheet MenuSheetClone: Clone exercise sheet
@ -106,7 +106,7 @@ MenuParticipantsIntersect: Common course participants
MenuAllocationUsers: Applicants MenuAllocationUsers: Applicants
MenuAllocationPriorities: Central priorities MenuAllocationPriorities: Central priorities
MenuAllocationCompute: Compute allocation MenuAllocationCompute: Compute allocation
MenuAllocationAccept: Accept allocation
MenuAllocationAddUser: Add applicant MenuAllocationAddUser: Add applicant
MenuFaq: FAQ MenuFaq: FAQ
MenuSheetPersonalisedFiles: Download personalised sheet files MenuSheetPersonalisedFiles: Download personalised sheet files

View File

@ -5,6 +5,7 @@ module Foundation.I18n
( appLanguages, appLanguagesOpts ( appLanguages, appLanguagesOpts
, UniWorXMessage(..), UniWorXTestMessage(..), UniWorXSettingsMessage(..) , UniWorXMessage(..), UniWorXTestMessage(..), UniWorXSettingsMessage(..)
, UniWorXHelpMessage(..), UniWorXNavigationMessage(..), UniWorXWorkflowMessage(..) , UniWorXHelpMessage(..), UniWorXNavigationMessage(..), UniWorXWorkflowMessage(..)
, UniWorXCourseMessage(..)
, ShortTermIdentifier(..) , ShortTermIdentifier(..)
, MsgLanguage(..) , MsgLanguage(..)
, ShortSex(..) , ShortSex(..)
@ -138,6 +139,7 @@ mkMessageAddition ''UniWorX "Settings" "messages/uniworx/uniworx_new/settings" "
mkMessageAddition ''UniWorX "Help" "messages/uniworx/uniworx_new/help" "de-de-formal" mkMessageAddition ''UniWorX "Help" "messages/uniworx/uniworx_new/help" "de-de-formal"
mkMessageAddition ''UniWorX "Navigation" "messages/uniworx/uniworx_new/navigation" "de-de-formal" mkMessageAddition ''UniWorX "Navigation" "messages/uniworx/uniworx_new/navigation" "de-de-formal"
mkMessageAddition ''UniWorX "Workflow" "messages/uniworx/uniworx_new/workflows" "de-de-formal" mkMessageAddition ''UniWorX "Workflow" "messages/uniworx/uniworx_new/workflows" "de-de-formal"
mkMessageAddition ''UniWorX "Course" "messages/uniworx/uniworx_new/courses" "de-de-formal"
mkMessageVariant ''UniWorX ''CampusMessage "messages/auth/campus" "de" mkMessageVariant ''UniWorX ''CampusMessage "messages/auth/campus" "de"
mkMessageVariant ''UniWorX ''DummyMessage "messages/auth/dummy" "de" mkMessageVariant ''UniWorX ''DummyMessage "messages/auth/dummy" "de"
mkMessageVariant ''UniWorX ''PWHashMessage "messages/auth/pw-hash" "de" mkMessageVariant ''UniWorX ''PWHashMessage "messages/auth/pw-hash" "de"

View File

@ -46,8 +46,8 @@ getAdminCrontabR = do
encodeBearer =<< bearerToken (HashSet.singleton . Left $ toJSON UserGroupCrontab) Nothing (HashMap.singleton BearerTokenRouteEval $ HashSet.singleton AdminCrontabR) Nothing (Just Nothing) Nothing encodeBearer =<< bearerToken (HashSet.singleton . Left $ toJSON UserGroupCrontab) Nothing (HashMap.singleton BearerTokenRouteEval $ HashSet.singleton AdminCrontabR) Nothing (Just Nothing) Nothing
siteLayoutMsg MsgMenuAdminCrontab $ do siteLayoutMsg MsgHeadingAdminCrontab $ do
setTitleI MsgMenuAdminCrontab setTitleI MsgHeadingAdminCrontab
[whamlet| [whamlet|
$newline never $newline never
$maybe t <- crontabBearer $maybe t <- crontabBearer

View File

@ -88,8 +88,8 @@ postAdminTokensR = do
fmap Just . encodeBearer . set _bearerRestrictions btfRestrict =<< bearerToken btfAuthority' Nothing (maybe HashMap.empty (HashMap.singleton BearerTokenRouteEval) btfRoutes) btfAddAuth btfExpiresAt btfStartsAt fmap Just . encodeBearer . set _bearerRestrictions btfRestrict =<< bearerToken btfAuthority' Nothing (maybe HashMap.empty (HashMap.singleton BearerTokenRouteEval) btfRoutes) btfAddAuth btfExpiresAt btfStartsAt
siteLayoutMsg MsgMenuAdminTokens $ do siteLayoutMsg MsgHeadingAdminTokens $ do
setTitleI MsgMenuAdminTokens setTitleI MsgHeadingAdminTokens
let bearerForm = wrapForm bearerView def let bearerForm = wrapForm bearerView def
{ formMethod = POST { formMethod = POST

View File

@ -157,8 +157,8 @@ postAAcceptR tid ssh ash = do
addMessageI Success MsgAllocationAccepted addMessageI Success MsgAllocationAccepted
redirect $ AllocationR tid ssh ash AUsersR redirect $ AllocationR tid ssh ash AUsersR
siteLayoutMsg MsgMenuAllocationAccept $ do siteLayoutMsg MsgHeadingAllocationAccept $ do
setTitleI MsgMenuAllocationAccept setTitleI MsgHeadingAllocationAccept
wrapForm' BtnAllocationAccept acceptView def wrapForm' BtnAllocationAccept acceptView def
{ formEncoding = acceptEnctype { formEncoding = acceptEnctype

View File

@ -142,8 +142,8 @@ postAComputeR tid ssh ash = do
return (aEnt, formRes) return (aEnt, formRes)
siteLayoutMsg MsgMenuAllocationCompute $ do siteLayoutMsg MsgHeadingAllocationCompute $ do
setTitleI MsgMenuAllocationCompute setTitleI MsgHeadingAllocationCompute
wrapForm' BtnAllocationCompute computeFormView def wrapForm' BtnAllocationCompute computeFormView def
{ formEncoding = computeFormEnctype { formEncoding = computeFormEnctype

View File

@ -8,6 +8,6 @@ import Handler.Utils
getInfoAllocationR :: Handler Html getInfoAllocationR :: Handler Html
getInfoAllocationR = getInfoAllocationR =
siteLayoutMsg MsgMenuAllocationInfo $ do siteLayoutMsg MsgHeadingAllocationInfo $ do
setTitleI MsgMenuAllocationInfo setTitleI MsgHeadingAllocationInfo
$(i18nWidgetFile "allocation-info") $(i18nWidgetFile "allocation-info")

View File

@ -83,7 +83,7 @@ postAPriosR tid ssh ash = do
addMessageI Error $ MsgAllocationPrioritiesMissing matrMissing addMessageI Error $ MsgAllocationPrioritiesMissing matrMissing
redirect $ AllocationR tid ssh ash AUsersR redirect $ AllocationR tid ssh ash AUsersR
siteLayoutMsg MsgMenuAllocationPriorities $ do siteLayoutMsg MsgAllocationPriorities $ do
setTitleI $ MsgAllocationPrioritiesTitle tid ssh ash setTitleI $ MsgAllocationPrioritiesTitle tid ssh ash
let priosForm = wrapForm priosView def let priosForm = wrapForm priosView def

View File

@ -198,7 +198,7 @@ postAShowR tid ssh ash = do
^{wdgt} ^{wdgt}
|] |]
let daysToRegistrationStart = assertM (>0) $ (`diffUTCTime` now) <$> allocationRegisterFrom let daysToRegistrationStart = assertM (>0) $ (`diffUTCTime` now) <$> allocationRegisterFrom
allocationInfoModal = modal [whamlet|_{MsgMenuAllocationInfo}|] $ Left $ SomeRoute InfoAllocationR allocationInfoModal = modal [whamlet|_{MsgHeadingAllocationInfo}|] $ Left $ SomeRoute InfoAllocationR
numCourses = length courses numCourses = length courses
numAppliedCourses = lengthOf (folded . _2 . _Just) courses numAppliedCourses = lengthOf (folded . _2 . _Just) courses
$(widgetFile "allocation/show") $(widgetFile "allocation/show")

View File

@ -335,7 +335,7 @@ postAUsersR tid ssh ash = do
, formEncoding = acceptEnctype , formEncoding = acceptEnctype
} }
siteLayoutMsg MsgMenuAllocationUsers $ do siteLayoutMsg MsgAllocationUsers $ do
setTitleI $ MsgAllocationUsersTitle tid ssh ash setTitleI $ MsgAllocationUsersTitle tid ssh ash
$(widgetFile "allocation/users") $(widgetFile "allocation/users")

View File

@ -684,7 +684,7 @@ postCUsersR tid ssh csh = do
sendResponse <=< serveZipArchive' archiveName $ sourcePersonalisedSheetFiles cid (Just shId) (Just selectedUsers) anonMode Set.empty sendResponse <=< serveZipArchive' archiveName $ sourcePersonalisedSheetFiles cid (Just shId) (Just selectedUsers) anonMode Set.empty
let headingLong = [whamlet|_{MsgMenuCourseMembers} #{courseName} #{tid}|] let headingLong = [whamlet|_{MsgHeadingCourseMembers} #{courseName} #{tid}|]
headingShort = prependCourseTitle tid ssh csh MsgCourseMembers headingShort = prependCourseTitle tid ssh csh MsgCourseMembers
siteLayout headingLong $ do siteLayout headingLong $ do
setTitleI headingShort setTitleI headingShort

View File

@ -61,8 +61,8 @@ postCExamOfficeR tid ssh csh = do
, formAttrs = [ asyncSubmitAttr | isModal ] , formAttrs = [ asyncSubmitAttr | isModal ]
} }
siteLayoutMsg MsgMenuCourseExamOffice $ do siteLayoutMsg MsgHeadingCourseExamOffice $ do
setTitleI MsgMenuCourseExamOffice setTitleI MsgHeadingCourseExamOffice
let explanation = $(i18nWidgetFile "course-exam-office-explanation") let explanation = $(i18nWidgetFile "course-exam-office-explanation")

View File

@ -222,6 +222,6 @@ getEOExamsR = do
dbTableWidget' examsDBTableValidator examsDBTable dbTableWidget' examsDBTableValidator examsDBTable
siteLayoutMsg MsgMenuExamList $ do siteLayoutMsg MsgHeadingExamList $ do
setTitleI MsgMenuExamList setTitleI MsgHeadingExamList
examsTable examsTable

View File

@ -104,8 +104,8 @@ postEOFieldsR = do
, formEncoding = fieldsEnc , formEncoding = fieldsEnc
} }
siteLayoutMsg MsgMenuExamOfficeFields $ do siteLayoutMsg MsgHeadingExamOfficeFields $ do
setTitleI MsgMenuExamOfficeFields setTitleI MsgHeadingExamOfficeFields
[whamlet| [whamlet|
$newline never $newline never

View File

@ -174,8 +174,8 @@ postEOUsersR = do
, formEncoding = usersEnc , formEncoding = usersEnc
} }
siteLayoutMsg MsgMenuExamOfficeUsers $ do siteLayoutMsg MsgHeadingExamOfficeUsers $ do
setTitleI MsgMenuExamOfficeUsers setTitleI MsgHeadingExamOfficeUsers
[whamlet| [whamlet|
$newline never $newline never

View File

@ -77,7 +77,7 @@ getEExamListR = do
examTable <- runDB $ dbTableWidget' examDBTableValidator examDBTable examTable <- runDB $ dbTableWidget' examDBTableValidator examDBTable
let heading = MsgMenuExternalExamList let heading = MsgHeadingExternalExamList
siteLayoutMsg heading $ do siteLayoutMsg heading $ do
setTitleI heading setTitleI heading

View File

@ -62,7 +62,7 @@ postEExamNewR = do
addMessageI Success $ MsgExternalExamCreated eefCourseName eefExamName addMessageI Success $ MsgExternalExamCreated eefCourseName eefExamName
redirect $ EExamR eefTerm eefSchool eefCourseName eefExamName EEShowR redirect $ EExamR eefTerm eefSchool eefCourseName eefExamName EEShowR
let heading = MsgMenuExternalExamNew let heading = MsgHeadingExternalExamNew
siteLayoutMsg heading $ do siteLayoutMsg heading $ do
setTitleI heading setTitleI heading

View File

@ -27,7 +27,7 @@ getVersionR = selectRep $ do
-- | Datenschutzerklaerung und Aufbewahrungspflichten, Nutzungsbedingungen, Urheberrecht, Impressum -- | Datenschutzerklaerung und Aufbewahrungspflichten, Nutzungsbedingungen, Urheberrecht, Impressum
getLegalR :: Handler Html getLegalR :: Handler Html
getLegalR = getLegalR =
siteLayoutMsg MsgMenuLegal $ do siteLayoutMsg MsgHeadingLegal $ do
setTitleI MsgLegalHeading setTitleI MsgLegalHeading
let dataProtection = $(i18nWidgetFile "data-protection") let dataProtection = $(i18nWidgetFile "data-protection")
termsUse = $(i18nWidgetFile "terms-of-use") termsUse = $(i18nWidgetFile "terms-of-use")

View File

@ -151,7 +151,7 @@ newsUpcomingSheets uid = do
Nothing -> cell $ do Nothing -> cell $ do
let submitRoute = CSheetR tid ssh csh shn SubmissionNewR let submitRoute = CSheetR tid ssh csh shn SubmissionNewR
whenM (hasWriteAccessTo submitRoute) $ whenM (hasWriteAccessTo submitRoute) $
modal [whamlet|_{MsgMenuSubmissionNew}|] . Left $ SomeRoute submitRoute modal [whamlet|_{MsgSubmissionNew}|] . Left $ SomeRoute submitRoute
(Just sid) -> anchorCellM (CSubmissionR tid ssh csh shn <$> encrypt sid <*> pure SubShowR) (Just sid) -> anchorCellM (CSubmissionR tid ssh csh shn <$> encrypt sid <*> pure SubShowR)
(hasTickmark True) (hasTickmark True)
] ]

View File

@ -56,8 +56,8 @@ getParticipantsListR = do
let schoolTerms :: Set (SchoolId, TermId) let schoolTerms :: Set (SchoolId, TermId)
schoolTerms = setOf (folded . $(multifocusG 2) (_1 . _Value) (_2 . _Value)) schoolTerms' schoolTerms = setOf (folded . $(multifocusG 2) (_1 . _Value) (_2 . _Value)) schoolTerms'
siteLayoutMsg MsgMenuParticipantsList $ do siteLayoutMsg MsgParticipantsList $ do
setTitleI MsgMenuParticipantsList setTitleI MsgParticipantsList
let schools :: Set SchoolId let schools :: Set SchoolId
schools = Set.map (view _1) schoolTerms schools = Set.map (view _1) schoolTerms
@ -130,6 +130,6 @@ postParticipantsIntersectR = do
lIxed = zip [0..] lIxed = zip [0..]
siteLayoutMsg MsgMenuParticipantsIntersect $ do siteLayoutMsg MsgParticipantsIntersect $ do
setTitleI MsgMenuParticipantsIntersect setTitleI MsgParticipantsIntersect
$(widgetFile "participants-intersect") $(widgetFile "participants-intersect")

View File

@ -449,7 +449,7 @@ getProfileDataR = do
userEnt <- requireAuth userEnt <- requireAuth
dataWidget <- runDB $ makeProfileData userEnt dataWidget <- runDB $ makeProfileData userEnt
defaultLayout $ do defaultLayout $ do
setTitleI MsgMenuProfileData setTitleI MsgHeadingProfileData
dataWidget dataWidget
makeProfileData :: Entity User -> DB Widget makeProfileData :: Entity User -> DB Widget

View File

@ -55,7 +55,7 @@ getSchoolListR = do
table <- runDB $ dbTableWidget' psValidator DBTable{..} table <- runDB $ dbTableWidget' psValidator DBTable{..}
let title = MsgMenuSchoolList let title = MsgHeadingSchoolList
siteLayoutMsg title $ do siteLayoutMsg title $ do
setTitleI title setTitleI title
table table

View File

@ -111,7 +111,7 @@ makeSheetForm cId msId template = identifyForm FIDsheet . validateForm validateS
= [whamlet| = [whamlet|
$newline never $newline never
#{iconFileZip} #{iconFileZip}
\ _{MsgMenuSheetPersonalisedFiles} \ _{MsgSheetPersonalisedFilesDownload}
|] |]
listRoute <- for mbSheet $ \(sheetName -> shn) -> toTextUrl listRoute <- for mbSheet $ \(sheetName -> shn) -> toTextUrl
( CourseR courseTerm courseSchool courseShorthand CUsersR ( CourseR courseTerm courseSchool courseShorthand CUsersR

View File

@ -402,8 +402,8 @@ getPersonalFilesR cId mbsid = do
isModal <- hasCustomHeader HeaderIsModal isModal <- hasCustomHeader HeaderIsModal
fmap toTypedContent . siteLayoutMsg MsgMenuSheetPersonalisedFiles $ do fmap toTypedContent . siteLayoutMsg MsgSheetPersonalisedFiles $ do
setTitleI MsgMenuSheetPersonalisedFiles setTitleI MsgSheetPersonalisedFiles
wrapForm psfWdgt def wrapForm psfWdgt def
{ formMethod = GET { formMethod = GET
, formAction = SomeRoute <$> cRoute , formAction = SomeRoute <$> cRoute

View File

@ -259,8 +259,8 @@ assignHandler tid ssh csh cid assignSids = do
showAvgsDays :: Maybe NominalDiffTime -> Integer -> Text showAvgsDays :: Maybe NominalDiffTime -> Integer -> Text
showAvgsDays Nothing _ = mempty showAvgsDays Nothing _ = mempty
showAvgsDays (Just dt) n = formatDiffDays $ dt / fromIntegral n showAvgsDays (Just dt) n = formatDiffDays $ dt / fromIntegral n
let headingShort = MsgMenuCorrectionsAssign let headingShort = MsgHeadingCorrectionsAssign
headingLong = prependCourseTitle tid ssh csh MsgMenuCorrectionsAssign headingLong = prependCourseTitle tid ssh csh MsgHeadingCorrectionsAssign
unassignableSheets = filter (`Map.notMember` assignment) assignSheetNames unassignableSheets = filter (`Map.notMember` assignment) assignSheetNames
unless (null unassignableSheets) $ addMessageI Warning $ MsgSheetsUnassignable $ Text.intercalate ", " $ fmap CI.original unassignableSheets unless (null unassignableSheets) $ addMessageI Warning $ MsgSheetsUnassignable $ Text.intercalate ", " $ fmap CI.original unassignableSheets

View File

@ -110,8 +110,8 @@ postAdminUserAddR = do
Nothing -> Nothing ->
addMessageI Error MsgUserCollision addMessageI Error MsgUserCollision
siteLayoutMsg MsgMenuUserAdd $ do siteLayoutMsg MsgHeadingUserAdd $ do
setTitleI MsgMenuUserAdd setTitleI MsgHeadingUserAdd
wrapForm userView def wrapForm userView def
{ formAction = Just $ SomeRoute AdminUserAddR { formAction = Just $ SomeRoute AdminUserAddR
, formEncoding = userEnctype , formEncoding = userEnctype

View File

@ -89,7 +89,7 @@ studyFeaturesWidget featId = do
(StudyFeatures{studyFeaturesSemester}, (degree, terms)) <- liftHandler . runDB . ($ featId) . runKleisli $ Kleisli getJust >>> Kleisli return &&& Kleisli (getJust . studyFeaturesDegree) &&& Kleisli (getJust . studyFeaturesField) (StudyFeatures{studyFeaturesSemester}, (degree, terms)) <- liftHandler . runDB . ($ featId) . runKleisli $ Kleisli getJust >>> Kleisli return &&& Kleisli (getJust . studyFeaturesDegree) &&& Kleisli (getJust . studyFeaturesField)
[whamlet| [whamlet|
$newline never $newline never
_{StudyDegreeTerm degree terms}, _{MsgStudyFeatureAgeTable} #{studyFeaturesSemester} _{StudyDegreeTerm degree terms}, _{MsgTableStudyFeatureAge} #{studyFeaturesSemester}
|] |]

View File

@ -590,7 +590,7 @@ fltrUserMatriclenrUI mPrev =
---------------- ----------------
-- User E-Mail -- User E-Mail
colUserEmail :: (IsDBTable m c, HasUser a) => Colonnade Sortable a (DBCell m c) colUserEmail :: (IsDBTable m c, HasUser a) => Colonnade Sortable a (DBCell m c)
colUserEmail = sortable (Just "user-email") (i18nCell MsgEmailTable) cellHasEMail colUserEmail = sortable (Just "user-email") (i18nCell MsgTableEmail) cellHasEMail
sortUserEmail :: IsString d => (t -> E.SqlExpr (Entity User)) -> (d, SortColumn t r') sortUserEmail :: IsString d => (t -> E.SqlExpr (Entity User)) -> (d, SortColumn t r')
sortUserEmail queryUser = ( "user-email", SortColumn $ queryUser >>> (E.^. UserEmail)) sortUserEmail queryUser = ( "user-email", SortColumn $ queryUser >>> (E.^. UserEmail))
@ -604,7 +604,7 @@ fltrUserEmail queryUser = ("user-email", FilterColumn . mkContainsFilter $ query
fltrUserEmailUI :: Maybe (Map FilterKey [Text]) -> AForm (YesodDB UniWorX) (Map FilterKey [Text]) fltrUserEmailUI :: Maybe (Map FilterKey [Text]) -> AForm (YesodDB UniWorX) (Map FilterKey [Text])
fltrUserEmailUI mPrev = fltrUserEmailUI mPrev =
prismAForm (singletonFilter "user-email") mPrev $ aopt textField (fslI MsgEmailTable) prismAForm (singletonFilter "user-email") mPrev $ aopt textField (fslI MsgTableEmail)
-------------------- --------------------
@ -614,7 +614,7 @@ fltrUserEmailUI mPrev =
colStudyDegree :: OpticColonnade StudyDegree colStudyDegree :: OpticColonnade StudyDegree
colStudyDegree resultDegree = Colonnade.singleton (fromSortable header) body colStudyDegree resultDegree = Colonnade.singleton (fromSortable header) body
where where
header = Sortable (Just "features-degree") (i18nCell MsgStudyFeatureDegreeTable) header = Sortable (Just "features-degree") (i18nCell MsgTableStudyFeatureDegree)
body = views resultDegree $ \StudyDegree{..} body = views resultDegree $ \StudyDegree{..}
-> cell . maybe (toWidget $ toMarkup studyDegreeKey) toWidget $ studyDegreeShorthand <|> studyDegreeName -> cell . maybe (toWidget $ toMarkup studyDegreeKey) toWidget $ studyDegreeShorthand <|> studyDegreeName
@ -648,13 +648,13 @@ fltrStudyDegree queryDegree = singletonMap "features-degree" . FilterColumn $ an
unSqlProject' = E.unSqlProject (Proxy @StudyDegree) (Proxy @studyDegree) unSqlProject' = E.unSqlProject (Proxy @StudyDegree) (Proxy @studyDegree)
fltrStudyDegreeUI :: DBFilterUI fltrStudyDegreeUI :: DBFilterUI
fltrStudyDegreeUI mPrev = prismAForm (singletonFilter "features-degree") mPrev $ aopt textField (fslI MsgStudyFeatureDegreeTable) fltrStudyDegreeUI mPrev = prismAForm (singletonFilter "features-degree") mPrev $ aopt textField (fslI MsgTableStudyFeatureDegree)
colStudyTerms :: OpticColonnade StudyTerms colStudyTerms :: OpticColonnade StudyTerms
colStudyTerms resultTerms = Colonnade.singleton (fromSortable header) body colStudyTerms resultTerms = Colonnade.singleton (fromSortable header) body
where where
header = Sortable (Just "features-terms") (i18nCell MsgStudyTermTable) header = Sortable (Just "features-terms") (i18nCell MsgTableStudyTerm)
body = views resultTerms $ \StudyTerms{..} body = views resultTerms $ \StudyTerms{..}
-> cell . maybe (toWidget $ toMarkup studyTermsKey) toWidget $ studyTermsShorthand <|> studyTermsName -> cell . maybe (toWidget $ toMarkup studyTermsKey) toWidget $ studyTermsShorthand <|> studyTermsName
@ -688,13 +688,13 @@ fltrStudyTerms queryTerms = singletonMap "features-terms" . FilterColumn $ anyFi
unSqlProject' = E.unSqlProject (Proxy @StudyTerms) (Proxy @studyTerms) unSqlProject' = E.unSqlProject (Proxy @StudyTerms) (Proxy @studyTerms)
fltrStudyTermsUI :: DBFilterUI fltrStudyTermsUI :: DBFilterUI
fltrStudyTermsUI mPrev = prismAForm (singletonFilter "features-terms") mPrev $ aopt textField (fslI MsgStudyTermTable) fltrStudyTermsUI mPrev = prismAForm (singletonFilter "features-terms") mPrev $ aopt textField (fslI MsgTableStudyTerm)
colStudyFeaturesSemester :: OpticColonnade Int colStudyFeaturesSemester :: OpticColonnade Int
colStudyFeaturesSemester resultSemester = Colonnade.singleton (fromSortable header) body colStudyFeaturesSemester resultSemester = Colonnade.singleton (fromSortable header) body
where where
header = Sortable (Just "features-semester") (i18nCell MsgStudyFeatureAgeTable) header = Sortable (Just "features-semester") (i18nCell MsgTableStudyFeatureAge)
body = views resultSemester $ cell . toWidget . toMarkup body = views resultSemester $ cell . toWidget . toMarkup
sortStudyFeaturesSemester :: forall semester. PersistField semester => OpticSortColumn semester sortStudyFeaturesSemester :: forall semester. PersistField semester => OpticSortColumn semester
@ -711,11 +711,11 @@ fltrStudyFeaturesSemester querySemester = singletonMap "features-semester" . Fil
unSqlProject' = E.unSqlProject (Proxy @StudyFeatures) (Proxy @studyFeatures) unSqlProject' = E.unSqlProject (Proxy @StudyFeatures) (Proxy @studyFeatures)
fltrStudyFeaturesSemesterUI :: DBFilterUI fltrStudyFeaturesSemesterUI :: DBFilterUI
fltrStudyFeaturesSemesterUI mPrev = prismAForm (singletonFilter "features-semester" . maybePrism _PathPiece) mPrev $ aopt (intField :: Field _ Int) (fslI MsgStudyFeatureAgeTable) fltrStudyFeaturesSemesterUI mPrev = prismAForm (singletonFilter "features-semester" . maybePrism _PathPiece) mPrev $ aopt (intField :: Field _ Int) (fslI MsgTableStudyFeatureAge)
colFeaturesSemester :: (IsDBTable m c, HasStudyFeatures x) => Getting (Leftmost x) a x -> Colonnade Sortable a (DBCell m c) colFeaturesSemester :: (IsDBTable m c, HasStudyFeatures x) => Getting (Leftmost x) a x -> Colonnade Sortable a (DBCell m c)
colFeaturesSemester feature = sortable (Just "features-semester") (i18nCell MsgStudyFeatureAgeTable) $ maybe mempty cellHasSemester . firstOf feature colFeaturesSemester feature = sortable (Just "features-semester") (i18nCell MsgTableStudyFeatureAge) $ maybe mempty cellHasSemester . firstOf feature
sortFeaturesSemester :: IsString d => (t -> E.SqlExpr (Maybe (Entity StudyFeatures))) -> (d, SortColumn t r') sortFeaturesSemester :: IsString d => (t -> E.SqlExpr (Maybe (Entity StudyFeatures))) -> (d, SortColumn t r')
sortFeaturesSemester queryFeatures = ("features-semester", SortColumn $ queryFeatures >>> (E.?. StudyFeaturesSemester)) sortFeaturesSemester queryFeatures = ("features-semester", SortColumn $ queryFeatures >>> (E.?. StudyFeaturesSemester))
@ -729,11 +729,11 @@ fltrFeaturesSemester queryFeatures = ("features-semester", FilterColumn . mkExac
fltrFeaturesSemesterUI :: Maybe (Map FilterKey [Text]) -> AForm (YesodDB UniWorX) (Map FilterKey [Text]) fltrFeaturesSemesterUI :: Maybe (Map FilterKey [Text]) -> AForm (YesodDB UniWorX) (Map FilterKey [Text])
fltrFeaturesSemesterUI mPrev = fltrFeaturesSemesterUI mPrev =
prismAForm (singletonFilter "features-semester" . maybePrism _PathPiece) mPrev $ aopt (intField :: Field (YesodDB UniWorX) Int) (fslI MsgStudyFeatureAgeTable) prismAForm (singletonFilter "features-semester" . maybePrism _PathPiece) mPrev $ aopt (intField :: Field (YesodDB UniWorX) Int) (fslI MsgTableStudyFeatureAge)
colField :: (IsDBTable m c, HasStudyTerms x) => Getting (Leftmost x) a x -> Colonnade Sortable a (DBCell m c) colField :: (IsDBTable m c, HasStudyTerms x) => Getting (Leftmost x) a x -> Colonnade Sortable a (DBCell m c)
colField terms = sortable (Just "terms") (i18nCell MsgStudyTermTable) $ maybe mempty cellHasField . firstOf terms colField terms = sortable (Just "terms") (i18nCell MsgTableStudyTerm) $ maybe mempty cellHasField . firstOf terms
sortField :: IsString d => (t -> E.SqlExpr (Maybe (Entity StudyTerms))) -> (d, SortColumn t r') sortField :: IsString d => (t -> E.SqlExpr (Maybe (Entity StudyTerms))) -> (d, SortColumn t r')
sortField queryTerms = ("terms", SortColumn $ queryTerms >>> (E.?. StudyTermsName)) sortField queryTerms = ("terms", SortColumn $ queryTerms >>> (E.?. StudyTermsName))
@ -753,7 +753,7 @@ fltrField queryFeatures = ( "terms"
fltrFieldUI :: Maybe (Map FilterKey [Text]) -> AForm (YesodDB UniWorX) (Map FilterKey [Text]) fltrFieldUI :: Maybe (Map FilterKey [Text]) -> AForm (YesodDB UniWorX) (Map FilterKey [Text])
fltrFieldUI mPrev = fltrFieldUI mPrev =
prismAForm (singletonFilter "terms") mPrev $ aopt textField (fslI MsgStudyTermTable) prismAForm (singletonFilter "terms") mPrev $ aopt textField (fslI MsgTableStudyTerm)
colDegreeShort :: (IsDBTable m c, HasStudyDegree x) => Getting (Leftmost x) a x -> Colonnade Sortable a (DBCell m c) colDegreeShort :: (IsDBTable m c, HasStudyDegree x) => Getting (Leftmost x) a x -> Colonnade Sortable a (DBCell m c)

View File

@ -133,7 +133,7 @@ $newline never
$maybe CorrectionInfo{ciSubmissions} <- Map.lookup shn sheetMap $maybe CorrectionInfo{ciSubmissions} <- Map.lookup shn sheetMap
<td .table__th>#{getLoadSum shn} <td .table__th>#{getLoadSum shn}
<td .table__th>#{ciSubmissions} <td .table__th>#{ciSubmissions}
<td .table__td colspan=3>^{simpleLinkI (SomeMessage MsgMenuCorrectorsChange) (CSheetR tid ssh csh shn SEditR)} <td .table__td colspan=3>^{simpleLinkI (SomeMessage MsgCorrectorsChange) (CSheetR tid ssh csh shn SEditR)}
$if not (null assignment) $if not (null assignment)
<tr .table__row> <tr .table__row>

View File

@ -237,7 +237,7 @@ $# $if NTop (Just 0) < NTop (courseCapacity course)
$if mayViewAnySheet $if mayViewAnySheet
_{MsgCourseSheetsFoundHere}: # _{MsgCourseSheetsFoundHere}: #
<a href=@{CourseR tid ssh csh SheetListR}> <a href=@{CourseR tid ssh csh SheetListR}>
_{MsgMenuSheetList} _{MsgSheetListCourse}
$else $else
_{MsgCourseSheetsNoneVisible} _{MsgCourseSheetsNoneVisible}
$if mayViewMaterials $if mayViewMaterials
@ -245,7 +245,7 @@ $# $if NTop (Just 0) < NTop (courseCapacity course)
$if mayViewAnyMaterial $if mayViewAnyMaterial
_{MsgCourseMaterialsFoundHere}: # _{MsgCourseMaterialsFoundHere}: #
<a href=@{CourseR tid ssh csh MaterialListR}> <a href=@{CourseR tid ssh csh MaterialListR}>
_{MsgMenuMaterialList} _{MsgMaterialList}
$else $else
_{MsgCourseMaterialsNoneVisible} _{MsgCourseMaterialsNoneVisible}
<p .explanation> <p .explanation>

View File

@ -24,6 +24,6 @@ $if mayAccept
^{acceptWgt} ^{acceptWgt}
<section> <section>
<h2>_{MsgMenuCourseApplications} <h2>_{MsgCourseApplications}
^{notification NotificationBroad =<< messageWidget Warning studyFeaturesWarning} ^{notification NotificationBroad =<< messageWidget Warning studyFeaturesWarning}
^{table} ^{table}

View File

@ -18,7 +18,7 @@ $newline never
$maybe sex <- guardOn showSex =<< userSex $maybe sex <- guardOn showSex =<< userSex
<dt .deflist__dt>_{MsgSex} <dt .deflist__dt>_{MsgSex}
<dd .deflist__dd>_{sex} <dd .deflist__dd>_{sex}
<dt .deflist__dt>_{MsgEmailTable} <dt .deflist__dt>_{MsgTableEmail}
<dd .deflist__dd>#{mailtoHtml userEmail} <dd .deflist__dd>#{mailtoHtml userEmail}
$maybe date <- mRegAt $maybe date <- mRegAt
<dt .deflist__dt>_{MsgRegisteredSince} <dt .deflist__dt>_{MsgRegisteredSince}
@ -38,12 +38,12 @@ $newline never
<div .scrolltable> <div .scrolltable>
<table .table.table--striped.table--hover.table--condensed> <table .table.table--striped.table--hover.table--condensed>
<tr .table__row> <tr .table__row>
<th .table__th>_{MsgStudyTermTable} <th .table__th>_{MsgTableStudyTerm}
<th .table__th>_{MsgStudyFeatureDegreeTable} <th .table__th>_{MsgTableStudyFeatureDegree}
<th .table__th>_{MsgStudyFeatureTypeTable} <th .table__th>_{MsgTableStudyFeatureType}
<th .table__th>_{MsgStudyFeatureAgeTable} <th .table__th>_{MsgTableStudyFeatureAge}
<th .table__th>_{MsgStudyFeatureValidTable} <th .table__th>_{MsgTableStudyFeatureValid}
<th .table__th>_{MsgStudyFeatureUpdateTable} <th .table__th>_{MsgTableStudyFeatureUpdate}
$forall ((Entity _ StudyFeatures{studyFeaturesType, studyFeaturesSemester, studyFeaturesValid, studyFeaturesFirstObserved, studyFeaturesLastObserved}), (Entity _ degree), (Entity _ field)) <- studies $forall ((Entity _ StudyFeatures{studyFeaturesType, studyFeaturesSemester, studyFeaturesValid, studyFeaturesFirstObserved, studyFeaturesLastObserved}), (Entity _ degree), (Entity _ field)) <- studies
<tr .table__row> <tr .table__row>
<td .table__td>_{field} <td .table__td>_{field}

View File

@ -2,20 +2,20 @@ $newline never
<div .two-columns> <div .two-columns>
<section> <section>
<h2 id="data-protection"> <h2 id="data-protection">
_{MsgMenuDataProt} _{MsgHeadingDataProt}
^{dataProtection} ^{dataProtection}
<section> <section>
<h2 id="terms-of-use"> <h2 id="terms-of-use">
_{MsgMenuTermsUse} _{MsgHeadingTermsUse}
^{termsUse} ^{termsUse}
<section> <section>
<h2 id="copyright"> <h2 id="copyright">
_{MsgMenuCopyright} _{MsgHeadingCopyright}
^{copyright} ^{copyright}
<section> <section>
<h2 id="imprint"> <h2 id="imprint">
_{MsgMenuImprint} _{MsgHeadingImprint}
^{imprint} ^{imprint}

View File

@ -30,7 +30,7 @@ $newline never
_{SomeMessage MsgMailAllocationStaffRegisterNewCourse} _{SomeMessage MsgMailAllocationStaffRegisterNewCourse}
<br> <br>
<a href=@{CourseNewR}> <a href=@{CourseNewR}>
_{SomeMessage MsgMenuCourseNew} _{SomeMessage MsgCourseNew}
$if doRegisterDeadlines $if doRegisterDeadlines
$if singleRegisterDeadline $if singleRegisterDeadline

View File

@ -19,7 +19,7 @@ $newline never
<dd .deflist__dd> <dd .deflist__dd>
#{matnr} #{matnr}
<dt .deflist__dt> <dt .deflist__dt>
_{MsgEmailTable} _{MsgTableEmail}
<dd .deflist__dd> <dd .deflist__dd>
#{mailtoHtml userEmail} #{mailtoHtml userEmail}
$if userEmail /= userDisplayEmail $if userEmail /= userDisplayEmail
@ -78,12 +78,12 @@ $newline never
<div .scrolltable> <div .scrolltable>
<table .table.table--striped.table--hover.table--condensed> <table .table.table--striped.table--hover.table--condensed>
<tr .table__row> <tr .table__row>
<th .table__th>_{MsgStudyTermTable} <th .table__th>_{MsgTableStudyTerm}
<th .table__th>_{MsgStudyFeatureDegreeTable} <th .table__th>_{MsgTableStudyFeatureDegree}
<th .table__th>_{MsgStudyFeatureTypeTable} <th .table__th>_{MsgTableStudyFeatureType}
<th .table__th>_{MsgStudyFeatureAgeTable} <th .table__th>_{MsgTableStudyFeatureAge}
<th .table__th>_{MsgStudyFeatureValidTable} <th .table__th>_{MsgTableStudyFeatureValid}
<th .table__th>_{MsgStudyFeatureUpdateTable} <th .table__th>_{MsgTableStudyFeatureUpdate}
$forall ((Entity _ StudyFeatures{studyFeaturesType, studyFeaturesSemester, studyFeaturesValid, studyFeaturesFirstObserved, studyFeaturesLastObserved}), (Entity _ degree), (Entity _ field)) <- studies $forall ((Entity _ StudyFeatures{studyFeaturesType, studyFeaturesSemester, studyFeaturesValid, studyFeaturesFirstObserved, studyFeaturesLastObserved}), (Entity _ degree), (Entity _ field)) <- studies
<tr.table__row> <tr.table__row>