refactor(messages): msgmenu only for navLabel, gender-neutral language navigation
This commit is contained in:
parent
c796bd5934
commit
8d9d3c613f
@ -39,13 +39,47 @@ BtnSystemMessageUnhide: Nicht mehr verstecken
|
||||
BtnCommunicationSend: Senden
|
||||
BtnCommunicationTest: Test-Nachricht verschicken
|
||||
|
||||
EmailTable: Email
|
||||
StudyTermTable: Studiengang
|
||||
StudyFeatureAgeTable: Fachsemester
|
||||
StudyFeatureDegreeTable: Abschluss
|
||||
StudyFeatureTypeTable:
|
||||
StudyFeatureValidTable: Aktiv
|
||||
StudyFeatureUpdateTable: Abgeglichen
|
||||
TableEmail: Email
|
||||
TableStudyTerm: Studiengang
|
||||
TableStudyFeatureAge: Fachsemester
|
||||
TableStudyFeatureDegree: Abschluss
|
||||
TableStudyFeatureType:
|
||||
TableStudyFeatureValid: Aktiv
|
||||
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
|
||||
|
||||
@ -152,7 +186,6 @@ CourseEditDupShort tid@TermId ssh@SchoolId csh@CourseShorthand: Kurs #{tid}-#{ss
|
||||
FFSheetName: Name
|
||||
TermCourseListHeading tid@TermId: Kursübersicht #{tid}
|
||||
TermSchoolCourseListHeading tid@TermId school@SchoolName: Kursübersicht #{tid} für #{school}
|
||||
CourseListTitle: Alle Kurse
|
||||
TermCourseListTitle tid@TermId: Kurse #{tid}
|
||||
TermSchoolCourseListTitle tid@TermId school@SchoolName: Kurse #{tid} für #{school}
|
||||
CourseNewHeading: Neuen Kurs anlegen
|
||||
@ -1935,7 +1968,7 @@ CourseApplicationsTableCsvExceptionNoMatchingUser: Bewerber konnte nicht eindeut
|
||||
CourseApplicationsTableCsvExceptionNoMatchingAllocation: Zentralanmeldung konnte nicht eindeutig identifiziert werden
|
||||
CourseApplicationsTableCsvExceptionNoMatchingStudyFeatures: Das angegebene Studienfach konnte keinem Studienfach des Kursteilnehmers zugeordnet werden
|
||||
|
||||
TableHeadingFilter: Filter
|
||||
|
||||
TableHeadingCsvImport: CSV-Import
|
||||
TableHeadingCsvExport: CSV-Export
|
||||
|
||||
|
||||
@ -39,13 +39,47 @@ BtnSystemMessageUnhide: Unhide
|
||||
BtnCommunicationSend: Send
|
||||
BtnCommunicationTest: Send test message
|
||||
|
||||
EmailTable: Email
|
||||
StudyFeatureTypeTable:
|
||||
StudyFeatureValidTable: Valid
|
||||
StudyFeatureUpdateTable: Updated
|
||||
StudyFeatureAgeTable: Semester
|
||||
StudyFeatureDegreeTable: Degree
|
||||
StudyTermTable: Field of study
|
||||
TableEmail: Email
|
||||
TableStudyFeatureType:
|
||||
TableStudyFeatureValid: Valid
|
||||
TableStudyFeatureUpdate: Updated
|
||||
TableStudyFeatureAge: Semester
|
||||
TableStudyFeatureDegree: Degree
|
||||
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
|
||||
|
||||
@ -152,7 +186,7 @@ CourseEditDupShort tid ssh csh: Could not edit course #{tid}-#{ssh}-#{csh}. Anot
|
||||
FFSheetName: Name
|
||||
TermCourseListHeading tid: Courses #{tid}
|
||||
TermSchoolCourseListHeading tid school: Courses #{tid}, #{school}
|
||||
CourseListTitle: All courses
|
||||
|
||||
TermCourseListTitle tid: Courses #{tid}
|
||||
TermSchoolCourseListTitle tid school: Courses #{tid}, #{school}
|
||||
CourseNewHeading: Create new course
|
||||
@ -1928,7 +1962,7 @@ CourseApplicationsTableCsvExceptionNoMatchingUser: Applicant could not be identi
|
||||
CourseApplicationsTableCsvExceptionNoMatchingAllocation: Central allocation could not be identified uniquely
|
||||
CourseApplicationsTableCsvExceptionNoMatchingStudyFeatures: The specified field did not match with any of the participant's fields of study
|
||||
|
||||
TableHeadingFilter: Filter
|
||||
|
||||
TableHeadingCsvImport: CSV import
|
||||
TableHeadingCsvExport: CSV export
|
||||
|
||||
|
||||
1
messages/uniworx/uniworx_new/courses/de-de-formal.msg
Normal file
1
messages/uniworx/uniworx_new/courses/de-de-formal.msg
Normal file
@ -0,0 +1 @@
|
||||
CourseListTitle: Alle Kurse
|
||||
1
messages/uniworx/uniworx_new/courses/en-eu.msg
Normal file
1
messages/uniworx/uniworx_new/courses/en-eu.msg
Normal file
@ -0,0 +1 @@
|
||||
CourseListTitle: All courses
|
||||
@ -1,13 +1,13 @@
|
||||
MenuAdminHeading: Administration
|
||||
MenuAdminFeaturesHeading: Studiengänge
|
||||
MenuInfoLecturerTitle: Hinweise für Veranstalter
|
||||
MenuInfoLecturerTitle: Hinweise für Veranstalter:innen
|
||||
MenuInfoLecturerCourses: Veranstaltungen
|
||||
MenuInfoLecturerExercises: Übungsbetrieb
|
||||
MenuInfoLecturerTutorials: Tutorien
|
||||
MenuInfoLecturerExams: Prüfungen
|
||||
MenuInfoLecturerAllocations: Zentralanmeldungen
|
||||
MenuCsvOptions: CSV-Optionen
|
||||
MenuCorrectorAssignTitle: Korrektor zuweisen
|
||||
MenuCorrectorAssignTitle: Korrektor:in zuweisen
|
||||
MenuOpenCourses: Kurse mit offener Registrierung
|
||||
MenuOpenAllocations: Aktive Zentralanmeldungen
|
||||
MenuNews: Aktuell
|
||||
@ -26,15 +26,15 @@ MenuLogin: Login
|
||||
MenuLogout: Logout
|
||||
MenuAllocationList: Zentralanmeldungen
|
||||
MenuCourseList: Kurse
|
||||
MenuCourseMembers: Kursteilnehmer
|
||||
MenuCourseAddMembers: Kursteilnehmer hinzufügen
|
||||
MenuCourseMembers: Kursteilnehmer:innen
|
||||
MenuCourseAddMembers: KursteilnehmerInnen hinzufügen
|
||||
MenuCourseCommunication: Kursmitteilung (E-Mail)
|
||||
MenuCourseApplications: Bewerbungen
|
||||
MenuCourseExamOffice: Prüfungsbeauftragte
|
||||
MenuTermShow: Semester
|
||||
MenuSubmissionDelete: Abgabe löschen
|
||||
MenuUsers: Benutzer
|
||||
MenuUserAdd: Benutzer anlegen
|
||||
MenuUsers: Benutzer:in
|
||||
MenuUserAdd: Benutzer:in anlegen
|
||||
MenuUserNotifications: Benachrichtigungs-Einstellungen
|
||||
MenuUserPassword: Passwort
|
||||
MenuAdminTest: Admin-Demo
|
||||
@ -59,14 +59,13 @@ MenuTutorialList: Tutorien
|
||||
MenuTutorialNew: Neues Tutorium anlegen
|
||||
MenuSheetNew: Neues Übungsblatt anlegen
|
||||
MenuSheetCurrent: Aktuelles Übungsblatt
|
||||
MenuSheetOldUnassigned: Abgaben ohne Korrektor
|
||||
MenuSheetOldUnassigned: Abgaben ohne Korrektor:in
|
||||
MenuCourseEdit: Kurs editieren
|
||||
MenuCourseClone: Als neuen Kurs klonen
|
||||
MenuCourseDelete: Kurs löschen
|
||||
MenuSubmissionNew: Abgabe anlegen
|
||||
MenuSubmissionOwn: Abgabe
|
||||
MenuCorrectors: Korrektoren
|
||||
MenuCorrectorsChange: Korrektoren ändern
|
||||
MenuCorrectors: Korrektor:innen
|
||||
MenuSheetEdit: Übungsblatt editieren
|
||||
MenuSheetDelete: Übungsblatt löschen
|
||||
MenuSheetClone: Als neues Übungsblatt klonen
|
||||
@ -79,35 +78,35 @@ MenuCorrectionsAssignSheet name@Text: Zuteilung der Korrekturen von #{name}
|
||||
MenuAuthPreds: Authorisierungseinstellungen
|
||||
MenuTutorialDelete: Tutorium löschen
|
||||
MenuTutorialEdit: Tutorium editieren
|
||||
MenuTutorialComm: Mitteilung an Teilnehmer
|
||||
MenuTutorialComm: Mitteilung an Teilnehmer:innen
|
||||
MenuExamList: Prüfungen
|
||||
MenuExamNew: Neue Prüfung anlegen
|
||||
MenuExamEdit: Prüfung bearbeiten
|
||||
MenuExamUsers: Teilnehmer
|
||||
MenuExamUsers: Teilnehmer:innen
|
||||
MenuExamGrades: Prüfungsleistungen
|
||||
MenuExamAddMembers: Prüfungsteilnehmer hinzufügen
|
||||
MenuExamCorrect: Prüfungsergebnisse eintragen
|
||||
MenuExamOfficeExams: Prüfungen
|
||||
MenuExamOfficeFields: Fächer
|
||||
MenuExamOfficeUsers: Benutzer
|
||||
MenuExamOfficeUsers: Benutzer:innen
|
||||
MenuLecturerInvite: Funktionäre hinzufügen
|
||||
MenuAllocationInfo: Hinweise zum Ablauf einer Zentralanmeldung
|
||||
MenuCourseApplicationsFiles: Dateien aller Bewerbungen
|
||||
MenuSchoolList: Institute
|
||||
MenuSchoolNew: Neues Institut anlegen
|
||||
MenuExternalExamGrades: Prüfungsleistungen
|
||||
MenuExternalExamUsers: Teilnehmer
|
||||
MenuExternalExamUsers: Teilnehmer:innen
|
||||
MenuExternalExamEdit: Bearbeiten
|
||||
MenuExternalExamNew: Neue externe Prüfung
|
||||
MenuExternalExamList: Externe Prüfungen
|
||||
MenuExternalExamCorrect: Prüfungsleistungen eintragen
|
||||
MenuParticipantsList: Kursteilnehmerlisten
|
||||
MenuParticipantsIntersect: Überschneidung von Kursteilnehmern
|
||||
MenuAllocationUsers: Bewerber
|
||||
MenuParticipantsIntersect: Überschneidung von Kursteilnehmer:innen
|
||||
MenuAllocationUsers: Bewerber:innen
|
||||
MenuAllocationPriorities: Zentrale Dringlichkeiten
|
||||
MenuAllocationCompute: Platzvergabe berechnen
|
||||
MenuAllocationAccept: Platzvergabe akzeptieren
|
||||
MenuAllocationAddUser: Bewerber hinzufügen
|
||||
|
||||
MenuAllocationAddUser: Bewerber:in hinzufügen
|
||||
MenuFaq: FAQ
|
||||
MenuSheetPersonalisedFiles: Personalisierte Dateien herunterladen
|
||||
MenuCourseSheetPersonalisedFiles: Vorlage für personalisierte Übungsblatt-Dateien herunterladen
|
||||
|
||||
@ -66,7 +66,7 @@ MenuCourseDelete: Delete course
|
||||
MenuSubmissionNew: Create submission
|
||||
MenuSubmissionOwn: Submission
|
||||
MenuCorrectors: Correctors
|
||||
MenuCorrectorsChange: Adjust correctors
|
||||
|
||||
MenuSheetEdit: Edit exercise sheet
|
||||
MenuSheetDelete: Delete exercise sheet
|
||||
MenuSheetClone: Clone exercise sheet
|
||||
@ -106,7 +106,7 @@ MenuParticipantsIntersect: Common course participants
|
||||
MenuAllocationUsers: Applicants
|
||||
MenuAllocationPriorities: Central priorities
|
||||
MenuAllocationCompute: Compute allocation
|
||||
MenuAllocationAccept: Accept allocation
|
||||
|
||||
MenuAllocationAddUser: Add applicant
|
||||
MenuFaq: FAQ
|
||||
MenuSheetPersonalisedFiles: Download personalised sheet files
|
||||
|
||||
@ -5,6 +5,7 @@ module Foundation.I18n
|
||||
( appLanguages, appLanguagesOpts
|
||||
, UniWorXMessage(..), UniWorXTestMessage(..), UniWorXSettingsMessage(..)
|
||||
, UniWorXHelpMessage(..), UniWorXNavigationMessage(..), UniWorXWorkflowMessage(..)
|
||||
, UniWorXCourseMessage(..)
|
||||
, ShortTermIdentifier(..)
|
||||
, MsgLanguage(..)
|
||||
, 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 "Navigation" "messages/uniworx/uniworx_new/navigation" "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 ''DummyMessage "messages/auth/dummy" "de"
|
||||
mkMessageVariant ''UniWorX ''PWHashMessage "messages/auth/pw-hash" "de"
|
||||
|
||||
@ -46,8 +46,8 @@ getAdminCrontabR = do
|
||||
encodeBearer =<< bearerToken (HashSet.singleton . Left $ toJSON UserGroupCrontab) Nothing (HashMap.singleton BearerTokenRouteEval $ HashSet.singleton AdminCrontabR) Nothing (Just Nothing) Nothing
|
||||
|
||||
|
||||
siteLayoutMsg MsgMenuAdminCrontab $ do
|
||||
setTitleI MsgMenuAdminCrontab
|
||||
siteLayoutMsg MsgHeadingAdminCrontab $ do
|
||||
setTitleI MsgHeadingAdminCrontab
|
||||
[whamlet|
|
||||
$newline never
|
||||
$maybe t <- crontabBearer
|
||||
|
||||
@ -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
|
||||
|
||||
siteLayoutMsg MsgMenuAdminTokens $ do
|
||||
setTitleI MsgMenuAdminTokens
|
||||
siteLayoutMsg MsgHeadingAdminTokens $ do
|
||||
setTitleI MsgHeadingAdminTokens
|
||||
|
||||
let bearerForm = wrapForm bearerView def
|
||||
{ formMethod = POST
|
||||
|
||||
@ -157,8 +157,8 @@ postAAcceptR tid ssh ash = do
|
||||
addMessageI Success MsgAllocationAccepted
|
||||
redirect $ AllocationR tid ssh ash AUsersR
|
||||
|
||||
siteLayoutMsg MsgMenuAllocationAccept $ do
|
||||
setTitleI MsgMenuAllocationAccept
|
||||
siteLayoutMsg MsgHeadingAllocationAccept $ do
|
||||
setTitleI MsgHeadingAllocationAccept
|
||||
|
||||
wrapForm' BtnAllocationAccept acceptView def
|
||||
{ formEncoding = acceptEnctype
|
||||
|
||||
@ -142,8 +142,8 @@ postAComputeR tid ssh ash = do
|
||||
|
||||
return (aEnt, formRes)
|
||||
|
||||
siteLayoutMsg MsgMenuAllocationCompute $ do
|
||||
setTitleI MsgMenuAllocationCompute
|
||||
siteLayoutMsg MsgHeadingAllocationCompute $ do
|
||||
setTitleI MsgHeadingAllocationCompute
|
||||
|
||||
wrapForm' BtnAllocationCompute computeFormView def
|
||||
{ formEncoding = computeFormEnctype
|
||||
|
||||
@ -8,6 +8,6 @@ import Handler.Utils
|
||||
|
||||
getInfoAllocationR :: Handler Html
|
||||
getInfoAllocationR =
|
||||
siteLayoutMsg MsgMenuAllocationInfo $ do
|
||||
setTitleI MsgMenuAllocationInfo
|
||||
siteLayoutMsg MsgHeadingAllocationInfo $ do
|
||||
setTitleI MsgHeadingAllocationInfo
|
||||
$(i18nWidgetFile "allocation-info")
|
||||
|
||||
@ -83,7 +83,7 @@ postAPriosR tid ssh ash = do
|
||||
addMessageI Error $ MsgAllocationPrioritiesMissing matrMissing
|
||||
redirect $ AllocationR tid ssh ash AUsersR
|
||||
|
||||
siteLayoutMsg MsgMenuAllocationPriorities $ do
|
||||
siteLayoutMsg MsgAllocationPriorities $ do
|
||||
setTitleI $ MsgAllocationPrioritiesTitle tid ssh ash
|
||||
|
||||
let priosForm = wrapForm priosView def
|
||||
|
||||
@ -198,7 +198,7 @@ postAShowR tid ssh ash = do
|
||||
^{wdgt}
|
||||
|]
|
||||
let daysToRegistrationStart = assertM (>0) $ (`diffUTCTime` now) <$> allocationRegisterFrom
|
||||
allocationInfoModal = modal [whamlet|_{MsgMenuAllocationInfo}|] $ Left $ SomeRoute InfoAllocationR
|
||||
allocationInfoModal = modal [whamlet|_{MsgHeadingAllocationInfo}|] $ Left $ SomeRoute InfoAllocationR
|
||||
numCourses = length courses
|
||||
numAppliedCourses = lengthOf (folded . _2 . _Just) courses
|
||||
$(widgetFile "allocation/show")
|
||||
|
||||
@ -335,7 +335,7 @@ postAUsersR tid ssh ash = do
|
||||
, formEncoding = acceptEnctype
|
||||
}
|
||||
|
||||
siteLayoutMsg MsgMenuAllocationUsers $ do
|
||||
siteLayoutMsg MsgAllocationUsers $ do
|
||||
setTitleI $ MsgAllocationUsersTitle tid ssh ash
|
||||
|
||||
$(widgetFile "allocation/users")
|
||||
|
||||
@ -684,7 +684,7 @@ postCUsersR tid ssh csh = do
|
||||
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
|
||||
siteLayout headingLong $ do
|
||||
setTitleI headingShort
|
||||
|
||||
@ -61,8 +61,8 @@ postCExamOfficeR tid ssh csh = do
|
||||
, formAttrs = [ asyncSubmitAttr | isModal ]
|
||||
}
|
||||
|
||||
siteLayoutMsg MsgMenuCourseExamOffice $ do
|
||||
setTitleI MsgMenuCourseExamOffice
|
||||
siteLayoutMsg MsgHeadingCourseExamOffice $ do
|
||||
setTitleI MsgHeadingCourseExamOffice
|
||||
|
||||
let explanation = $(i18nWidgetFile "course-exam-office-explanation")
|
||||
|
||||
|
||||
@ -222,6 +222,6 @@ getEOExamsR = do
|
||||
|
||||
dbTableWidget' examsDBTableValidator examsDBTable
|
||||
|
||||
siteLayoutMsg MsgMenuExamList $ do
|
||||
setTitleI MsgMenuExamList
|
||||
siteLayoutMsg MsgHeadingExamList $ do
|
||||
setTitleI MsgHeadingExamList
|
||||
examsTable
|
||||
|
||||
@ -104,8 +104,8 @@ postEOFieldsR = do
|
||||
, formEncoding = fieldsEnc
|
||||
}
|
||||
|
||||
siteLayoutMsg MsgMenuExamOfficeFields $ do
|
||||
setTitleI MsgMenuExamOfficeFields
|
||||
siteLayoutMsg MsgHeadingExamOfficeFields $ do
|
||||
setTitleI MsgHeadingExamOfficeFields
|
||||
|
||||
[whamlet|
|
||||
$newline never
|
||||
|
||||
@ -174,8 +174,8 @@ postEOUsersR = do
|
||||
, formEncoding = usersEnc
|
||||
}
|
||||
|
||||
siteLayoutMsg MsgMenuExamOfficeUsers $ do
|
||||
setTitleI MsgMenuExamOfficeUsers
|
||||
siteLayoutMsg MsgHeadingExamOfficeUsers $ do
|
||||
setTitleI MsgHeadingExamOfficeUsers
|
||||
|
||||
[whamlet|
|
||||
$newline never
|
||||
|
||||
@ -77,7 +77,7 @@ getEExamListR = do
|
||||
|
||||
examTable <- runDB $ dbTableWidget' examDBTableValidator examDBTable
|
||||
|
||||
let heading = MsgMenuExternalExamList
|
||||
let heading = MsgHeadingExternalExamList
|
||||
|
||||
siteLayoutMsg heading $ do
|
||||
setTitleI heading
|
||||
|
||||
@ -62,7 +62,7 @@ postEExamNewR = do
|
||||
addMessageI Success $ MsgExternalExamCreated eefCourseName eefExamName
|
||||
redirect $ EExamR eefTerm eefSchool eefCourseName eefExamName EEShowR
|
||||
|
||||
let heading = MsgMenuExternalExamNew
|
||||
let heading = MsgHeadingExternalExamNew
|
||||
|
||||
siteLayoutMsg heading $ do
|
||||
setTitleI heading
|
||||
|
||||
@ -27,7 +27,7 @@ getVersionR = selectRep $ do
|
||||
-- | Datenschutzerklaerung und Aufbewahrungspflichten, Nutzungsbedingungen, Urheberrecht, Impressum
|
||||
getLegalR :: Handler Html
|
||||
getLegalR =
|
||||
siteLayoutMsg MsgMenuLegal $ do
|
||||
siteLayoutMsg MsgHeadingLegal $ do
|
||||
setTitleI MsgLegalHeading
|
||||
let dataProtection = $(i18nWidgetFile "data-protection")
|
||||
termsUse = $(i18nWidgetFile "terms-of-use")
|
||||
|
||||
@ -151,7 +151,7 @@ newsUpcomingSheets uid = do
|
||||
Nothing -> cell $ do
|
||||
let submitRoute = CSheetR tid ssh csh shn SubmissionNewR
|
||||
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)
|
||||
(hasTickmark True)
|
||||
]
|
||||
|
||||
@ -56,8 +56,8 @@ getParticipantsListR = do
|
||||
let schoolTerms :: Set (SchoolId, TermId)
|
||||
schoolTerms = setOf (folded . $(multifocusG 2) (_1 . _Value) (_2 . _Value)) schoolTerms'
|
||||
|
||||
siteLayoutMsg MsgMenuParticipantsList $ do
|
||||
setTitleI MsgMenuParticipantsList
|
||||
siteLayoutMsg MsgParticipantsList $ do
|
||||
setTitleI MsgParticipantsList
|
||||
|
||||
let schools :: Set SchoolId
|
||||
schools = Set.map (view _1) schoolTerms
|
||||
@ -130,6 +130,6 @@ postParticipantsIntersectR = do
|
||||
|
||||
lIxed = zip [0..]
|
||||
|
||||
siteLayoutMsg MsgMenuParticipantsIntersect $ do
|
||||
setTitleI MsgMenuParticipantsIntersect
|
||||
siteLayoutMsg MsgParticipantsIntersect $ do
|
||||
setTitleI MsgParticipantsIntersect
|
||||
$(widgetFile "participants-intersect")
|
||||
|
||||
@ -449,7 +449,7 @@ getProfileDataR = do
|
||||
userEnt <- requireAuth
|
||||
dataWidget <- runDB $ makeProfileData userEnt
|
||||
defaultLayout $ do
|
||||
setTitleI MsgMenuProfileData
|
||||
setTitleI MsgHeadingProfileData
|
||||
dataWidget
|
||||
|
||||
makeProfileData :: Entity User -> DB Widget
|
||||
|
||||
@ -55,7 +55,7 @@ getSchoolListR = do
|
||||
|
||||
table <- runDB $ dbTableWidget' psValidator DBTable{..}
|
||||
|
||||
let title = MsgMenuSchoolList
|
||||
let title = MsgHeadingSchoolList
|
||||
siteLayoutMsg title $ do
|
||||
setTitleI title
|
||||
table
|
||||
|
||||
@ -111,7 +111,7 @@ makeSheetForm cId msId template = identifyForm FIDsheet . validateForm validateS
|
||||
= [whamlet|
|
||||
$newline never
|
||||
#{iconFileZip}
|
||||
\ _{MsgMenuSheetPersonalisedFiles}
|
||||
\ _{MsgSheetPersonalisedFilesDownload}
|
||||
|]
|
||||
listRoute <- for mbSheet $ \(sheetName -> shn) -> toTextUrl
|
||||
( CourseR courseTerm courseSchool courseShorthand CUsersR
|
||||
|
||||
@ -402,8 +402,8 @@ getPersonalFilesR cId mbsid = do
|
||||
|
||||
isModal <- hasCustomHeader HeaderIsModal
|
||||
|
||||
fmap toTypedContent . siteLayoutMsg MsgMenuSheetPersonalisedFiles $ do
|
||||
setTitleI MsgMenuSheetPersonalisedFiles
|
||||
fmap toTypedContent . siteLayoutMsg MsgSheetPersonalisedFiles $ do
|
||||
setTitleI MsgSheetPersonalisedFiles
|
||||
wrapForm psfWdgt def
|
||||
{ formMethod = GET
|
||||
, formAction = SomeRoute <$> cRoute
|
||||
|
||||
@ -259,8 +259,8 @@ assignHandler tid ssh csh cid assignSids = do
|
||||
showAvgsDays :: Maybe NominalDiffTime -> Integer -> Text
|
||||
showAvgsDays Nothing _ = mempty
|
||||
showAvgsDays (Just dt) n = formatDiffDays $ dt / fromIntegral n
|
||||
let headingShort = MsgMenuCorrectionsAssign
|
||||
headingLong = prependCourseTitle tid ssh csh MsgMenuCorrectionsAssign
|
||||
let headingShort = MsgHeadingCorrectionsAssign
|
||||
headingLong = prependCourseTitle tid ssh csh MsgHeadingCorrectionsAssign
|
||||
|
||||
unassignableSheets = filter (`Map.notMember` assignment) assignSheetNames
|
||||
unless (null unassignableSheets) $ addMessageI Warning $ MsgSheetsUnassignable $ Text.intercalate ", " $ fmap CI.original unassignableSheets
|
||||
|
||||
@ -110,8 +110,8 @@ postAdminUserAddR = do
|
||||
Nothing ->
|
||||
addMessageI Error MsgUserCollision
|
||||
|
||||
siteLayoutMsg MsgMenuUserAdd $ do
|
||||
setTitleI MsgMenuUserAdd
|
||||
siteLayoutMsg MsgHeadingUserAdd $ do
|
||||
setTitleI MsgHeadingUserAdd
|
||||
wrapForm userView def
|
||||
{ formAction = Just $ SomeRoute AdminUserAddR
|
||||
, formEncoding = userEnctype
|
||||
|
||||
@ -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)
|
||||
[whamlet|
|
||||
$newline never
|
||||
_{StudyDegreeTerm degree terms}, _{MsgStudyFeatureAgeTable} #{studyFeaturesSemester}
|
||||
_{StudyDegreeTerm degree terms}, _{MsgTableStudyFeatureAge} #{studyFeaturesSemester}
|
||||
|]
|
||||
|
||||
|
||||
|
||||
@ -590,7 +590,7 @@ fltrUserMatriclenrUI mPrev =
|
||||
----------------
|
||||
-- User E-Mail
|
||||
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 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 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 resultDegree = Colonnade.singleton (fromSortable header) body
|
||||
where
|
||||
header = Sortable (Just "features-degree") (i18nCell MsgStudyFeatureDegreeTable)
|
||||
header = Sortable (Just "features-degree") (i18nCell MsgTableStudyFeatureDegree)
|
||||
body = views resultDegree $ \StudyDegree{..}
|
||||
-> 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)
|
||||
|
||||
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 resultTerms = Colonnade.singleton (fromSortable header) body
|
||||
where
|
||||
header = Sortable (Just "features-terms") (i18nCell MsgStudyTermTable)
|
||||
header = Sortable (Just "features-terms") (i18nCell MsgTableStudyTerm)
|
||||
body = views resultTerms $ \StudyTerms{..}
|
||||
-> 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)
|
||||
|
||||
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 resultSemester = Colonnade.singleton (fromSortable header) body
|
||||
where
|
||||
header = Sortable (Just "features-semester") (i18nCell MsgStudyFeatureAgeTable)
|
||||
header = Sortable (Just "features-semester") (i18nCell MsgTableStudyFeatureAge)
|
||||
body = views resultSemester $ cell . toWidget . toMarkup
|
||||
|
||||
sortStudyFeaturesSemester :: forall semester. PersistField semester => OpticSortColumn semester
|
||||
@ -711,11 +711,11 @@ fltrStudyFeaturesSemester querySemester = singletonMap "features-semester" . Fil
|
||||
unSqlProject' = E.unSqlProject (Proxy @StudyFeatures) (Proxy @studyFeatures)
|
||||
|
||||
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 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 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 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 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 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 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)
|
||||
|
||||
@ -133,7 +133,7 @@ $newline never
|
||||
$maybe CorrectionInfo{ciSubmissions} <- Map.lookup shn sheetMap
|
||||
<td .table__th>#{getLoadSum shn}
|
||||
<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)
|
||||
<tr .table__row>
|
||||
|
||||
@ -237,7 +237,7 @@ $# $if NTop (Just 0) < NTop (courseCapacity course)
|
||||
$if mayViewAnySheet
|
||||
_{MsgCourseSheetsFoundHere}: #
|
||||
<a href=@{CourseR tid ssh csh SheetListR}>
|
||||
_{MsgMenuSheetList}
|
||||
_{MsgSheetListCourse}
|
||||
$else
|
||||
_{MsgCourseSheetsNoneVisible}
|
||||
$if mayViewMaterials
|
||||
@ -245,7 +245,7 @@ $# $if NTop (Just 0) < NTop (courseCapacity course)
|
||||
$if mayViewAnyMaterial
|
||||
_{MsgCourseMaterialsFoundHere}: #
|
||||
<a href=@{CourseR tid ssh csh MaterialListR}>
|
||||
_{MsgMenuMaterialList}
|
||||
_{MsgMaterialList}
|
||||
$else
|
||||
_{MsgCourseMaterialsNoneVisible}
|
||||
<p .explanation>
|
||||
|
||||
@ -24,6 +24,6 @@ $if mayAccept
|
||||
^{acceptWgt}
|
||||
|
||||
<section>
|
||||
<h2>_{MsgMenuCourseApplications}
|
||||
<h2>_{MsgCourseApplications}
|
||||
^{notification NotificationBroad =<< messageWidget Warning studyFeaturesWarning}
|
||||
^{table}
|
||||
|
||||
@ -18,7 +18,7 @@ $newline never
|
||||
$maybe sex <- guardOn showSex =<< userSex
|
||||
<dt .deflist__dt>_{MsgSex}
|
||||
<dd .deflist__dd>_{sex}
|
||||
<dt .deflist__dt>_{MsgEmailTable}
|
||||
<dt .deflist__dt>_{MsgTableEmail}
|
||||
<dd .deflist__dd>#{mailtoHtml userEmail}
|
||||
$maybe date <- mRegAt
|
||||
<dt .deflist__dt>_{MsgRegisteredSince}
|
||||
@ -38,12 +38,12 @@ $newline never
|
||||
<div .scrolltable>
|
||||
<table .table.table--striped.table--hover.table--condensed>
|
||||
<tr .table__row>
|
||||
<th .table__th>_{MsgStudyTermTable}
|
||||
<th .table__th>_{MsgStudyFeatureDegreeTable}
|
||||
<th .table__th>_{MsgStudyFeatureTypeTable}
|
||||
<th .table__th>_{MsgStudyFeatureAgeTable}
|
||||
<th .table__th>_{MsgStudyFeatureValidTable}
|
||||
<th .table__th>_{MsgStudyFeatureUpdateTable}
|
||||
<th .table__th>_{MsgTableStudyTerm}
|
||||
<th .table__th>_{MsgTableStudyFeatureDegree}
|
||||
<th .table__th>_{MsgTableStudyFeatureType}
|
||||
<th .table__th>_{MsgTableStudyFeatureAge}
|
||||
<th .table__th>_{MsgTableStudyFeatureValid}
|
||||
<th .table__th>_{MsgTableStudyFeatureUpdate}
|
||||
$forall ((Entity _ StudyFeatures{studyFeaturesType, studyFeaturesSemester, studyFeaturesValid, studyFeaturesFirstObserved, studyFeaturesLastObserved}), (Entity _ degree), (Entity _ field)) <- studies
|
||||
<tr .table__row>
|
||||
<td .table__td>_{field}
|
||||
|
||||
@ -2,20 +2,20 @@ $newline never
|
||||
<div .two-columns>
|
||||
<section>
|
||||
<h2 id="data-protection">
|
||||
_{MsgMenuDataProt}
|
||||
_{MsgHeadingDataProt}
|
||||
^{dataProtection}
|
||||
|
||||
<section>
|
||||
<h2 id="terms-of-use">
|
||||
_{MsgMenuTermsUse}
|
||||
_{MsgHeadingTermsUse}
|
||||
^{termsUse}
|
||||
|
||||
<section>
|
||||
<h2 id="copyright">
|
||||
_{MsgMenuCopyright}
|
||||
_{MsgHeadingCopyright}
|
||||
^{copyright}
|
||||
|
||||
<section>
|
||||
<h2 id="imprint">
|
||||
_{MsgMenuImprint}
|
||||
_{MsgHeadingImprint}
|
||||
^{imprint}
|
||||
|
||||
@ -30,7 +30,7 @@ $newline never
|
||||
_{SomeMessage MsgMailAllocationStaffRegisterNewCourse}
|
||||
<br>
|
||||
<a href=@{CourseNewR}>
|
||||
_{SomeMessage MsgMenuCourseNew}
|
||||
_{SomeMessage MsgCourseNew}
|
||||
|
||||
$if doRegisterDeadlines
|
||||
$if singleRegisterDeadline
|
||||
|
||||
@ -19,7 +19,7 @@ $newline never
|
||||
<dd .deflist__dd>
|
||||
#{matnr}
|
||||
<dt .deflist__dt>
|
||||
_{MsgEmailTable}
|
||||
_{MsgTableEmail}
|
||||
<dd .deflist__dd>
|
||||
#{mailtoHtml userEmail}
|
||||
$if userEmail /= userDisplayEmail
|
||||
@ -78,12 +78,12 @@ $newline never
|
||||
<div .scrolltable>
|
||||
<table .table.table--striped.table--hover.table--condensed>
|
||||
<tr .table__row>
|
||||
<th .table__th>_{MsgStudyTermTable}
|
||||
<th .table__th>_{MsgStudyFeatureDegreeTable}
|
||||
<th .table__th>_{MsgStudyFeatureTypeTable}
|
||||
<th .table__th>_{MsgStudyFeatureAgeTable}
|
||||
<th .table__th>_{MsgStudyFeatureValidTable}
|
||||
<th .table__th>_{MsgStudyFeatureUpdateTable}
|
||||
<th .table__th>_{MsgTableStudyTerm}
|
||||
<th .table__th>_{MsgTableStudyFeatureDegree}
|
||||
<th .table__th>_{MsgTableStudyFeatureType}
|
||||
<th .table__th>_{MsgTableStudyFeatureAge}
|
||||
<th .table__th>_{MsgTableStudyFeatureValid}
|
||||
<th .table__th>_{MsgTableStudyFeatureUpdate}
|
||||
|
||||
$forall ((Entity _ StudyFeatures{studyFeaturesType, studyFeaturesSemester, studyFeaturesValid, studyFeaturesFirstObserved, studyFeaturesLastObserved}), (Entity _ degree), (Entity _ field)) <- studies
|
||||
<tr.table__row>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user