chore: refactor authship statement messages

This commit is contained in:
Sarah Vaupel 2021-06-19 12:10:50 +02:00 committed by Gregor Kleen
parent 0cd8f4c02f
commit 491f7d3582
8 changed files with 53 additions and 85 deletions

View File

@ -313,19 +313,9 @@ ExamGradingGrades: Numerische Noten
ExamGradingMixed: Gemischt ExamGradingMixed: Gemischt
ExamFinished: Ergebnisse sichtbar ab ExamFinished: Ergebnisse sichtbar ab
ExamAuthorshipStatementSection: Eigenständigkeitserklärungen ExamAuthorshipStatementSection: Eigenständigkeitserklärung
ExamAuthorshipStatementRequired: Eigenständigkeitserklärung für prüfungszugehörige Übungsblattabgaben einfordern? ExamAuthorshipStatementRequired: Eigenständigkeitserklärung für prüfungszugehörige Übungsblattabgaben einfordern?
ExamAuthorshipStatementRequiredTip: Sollen für alle zu dieser Prüfung zugehörige Übungsblätter die Abgebenden (bei Abgabegruppen jedes Gruppenmitglied) aufgefordert werden, eine Eigenständigkeitserklärung zu akzeptieren? ExamAuthorshipStatementRequiredTip: Sollen für alle zu dieser Prüfung zugehörige Übungsblätter die Abgebenden (bei Abgabegruppen jedes Gruppenmitglied) aufgefordert werden, eine Eigenständigkeitserklärung zu akzeptieren?
ExamAuthorshipStatementRequiredDisabledOffTip: Für dieses Institut sind Eigenständigkeitserklärungen für prüfungsrelevante Übungsblätter deaktiviert. ExamAuthorshipStatementRequiredForcedTip: Für dieses Institut sind Eigenständigkeitserklärungen für prüfungszugehörige Übungsblätter vorgeschrieben.
ExamAuthorshipStatementRequiredDisabledOnTip: Für dieses Institut sind Eigenständigkeitserklärungen für prüfungsrelevante Übungsblätter vorgeschrieben.
ExamAuthorshipStatementSchoolDefinition: Institutsweit vorgegebene Eigenständigkeitserklärung
ExamAuthorshipStatementUseCustomDefinition: Benutzerdefinierte Eigenständigkeitserklärung verwenden?
ExamAuthorshipStatementUseCustomDefinitionTip: Soll anstatt der institutsweit vorgegebenen Eigenständigkeitserklärung eine benuzterdefinierte Erklärung für diese Prüfung genutzt werden? (Hinweis: Um konsistente Erklärungen für alle Abgaben der Prüfung zu gewährleisten, dient die institutsweite Erklärung hier nur als Vorlage und wird ab dann getrennt (als Kopie) gespeichert. Ändert sich die institutsweite Erklärung, so muss die Änderung für diese Prüfung manuell übernommen werden, falls erwünscht.)
ExamAuthorshipStatementUseCustomDefinitionDisabledTip: Für dieses Institut ist die institutsweite Vorgabe als Erklärung zu verwenden. Benutzerdefinierte Erklärungen sind nicht gestattet.
ExamAuthorshipStatementCustom: Benutzerdefinierte Eigenständigkeitserklärung
ExamAuthorshipStatementContent: Eigenständigkeitserklärung ExamAuthorshipStatementContent: Eigenständigkeitserklärung
ExamAuthorshipStatementAllowOtherFalseTip: Für dieses Institut ist die institutsweit vorgegebene Eigenständigkeitserklärung für prüfungsrelevante Übungsblätter zu verwenden. Benutzerdefinierte Erklärungen sind nicht gestattet. ExamAuthorshipStatementContentForcedTip: Für dieses Institut ist die institutsweit vorgegebene Eigenständigkeitserklärung für prüfungsrelevante Übungsblätter zu verwenden. Benutzerdefinierte Erklärungen sind nicht gestattet.
ExamAuthorshipStatementMustBeEmpty: Es darf keine Eigenständigkeitserklärung für prüfungsrelevante Übungsblätter angegeben werden.
ExamAuthorshipStatementMustBeNonEmpty: Es muss eine nicht-leere Eigenständigkeitserklärung für prüfungsrelevante Übungsblätter angegeben werden.
ExamAuthorshipStatementMustMatchSchoolDefinition: Die angegebene Eigenständigkeitserklärung für prüfungsrelevante Übungsblätter muss der Vorgabe des Instituts entsprechen.

View File

@ -311,19 +311,9 @@ ExamGradingGrades: Numeric grades
ExamGradingMixed: Mixed ExamGradingMixed: Mixed
ExamFinished: Results visible from ExamFinished: Results visible from
ExamAuthorshipStatementSection: Statements of Authorship ExamAuthorshipStatementSection: Statement of Authorship
ExamAuthorshipStatementRequired: Require Statement of Authorship for exam-related exercise sheet submissions? ExamAuthorshipStatementRequired: Require Statement of Authorship for exam-related exercise sheet submissions?
ExamAuthorshipStatementRequiredTip: Should submittors (in case of submission groups each group member) be required to accept a Statement of Authorship for all exercise sheets related to this exam? ExamAuthorshipStatementRequiredTip: Should submittors (each group member in case of submission groups) be required to accept a Statement of Authorship for all exercise sheets related to this exam?
ExamAuthorshipStatementRequiredDisabledOffTip: This school permits Statements of Authorship for exam-related sheets. ExamAuthorshipStatementRequiredForcedTip: This school enforces Statements of Authorship for all exam-related exercise sheets.
ExamAuthorshipStatementRequiredDisabledOnTip: This school requires Statements of Authorship for exam-related sheets.
ExamAuthorshipStatementSchoolDefinition: School-wide default Statement of Authorship
ExamAuthorshipStatementUseCustomDefinition: Use custom Statement of Authorship?
ExamAuthorshipStatementUseCustomDefinitionTip: Should a custom Statement of Authorship be used for this exam instead of the school-wide default statement? (Hint: To ensure consistent statements for all submissions related to this exam, the school-wide default statement will be used as a template here and will then be stored separately (as a copy). If the school-wide default statement changes, this change must be applied manually for this exam if desired.)
ExamAuthorshipStatementUseCustomDefinitionDisabledTip: This school dictates that the school-wide Statement of Authorship must be used. Custom statements are prohibited.
ExamAuthorshipStatementCustom: Custom Statement of Authorship
ExamAuthorshipStatementContent: Statement of Authorship ExamAuthorshipStatementContent: Statement of Authorship
ExamAuthorshipStatementAllowOtherFalseTip: The settings of this school dictate that the school-wide Statement of Authorship for exam-related sheets must be used. Custom statements are prohibited. ExamAuthorshipStatementContentForcedTip: The settings of this school dictate that the school-wide Statement of Authorship for exam-related sheets must be used. Custom statements are prohibited.
ExamAuthorshipStatementMustBeEmpty: No Statement of Authorship for exam-related sheets may be given.
ExamAuthorshipStatementMustBeNonEmpty: A non-empty Statement of Authorship for exam-related sheets must be given.
ExamAuthorshipStatementMustMatchSchoolDefinition: The given Statement of Authorship for exam-related sheets must match the school-wide Statement of Authorship.

View File

@ -153,14 +153,8 @@ SheetGradingPassBinary: Bestanden/Nicht Bestanden
SheetGradingPassAlways: Automatisch bestanden, sobald korrigiert SheetGradingPassAlways: Automatisch bestanden, sobald korrigiert
SheetAuthorshipStatementSection: Eigenständigkeitserklärung SheetAuthorshipStatementSection: Eigenständigkeitserklärung
SheetAuthorshipStatementRequired: Eigenständigkeitserklärung einfordern? SheetAuthorshipStatementRequired: Eigenständigkeitserklärung für Übungsblattabgaben einfordern?
SheetAuthorshipStatementRequiredTip: Soll jeder Abgebende (bei Abgabegruppen jedes Gruppenmitglied) aufgefordert werden, eine Eigenständigkeitserklärung zu akzeptieren? (Hinweis: Gehört dieses Übungsblatt zu einer Prüfung und sind für die Prüfung Eigenständigkeitserklärungen aktiviert, so überschreibt diese Erklärung die prüfungsweite Eigenständigkeitserklärung für dieses Übungsblatt.) SheetAuthorshipStatementRequiredTip: Sollen die Abgebenden (bei Abgabegruppen jedes Gruppenmitglied) aufgefordert werden, eine Eigenständigkeitserklärung zu akzeptieren?
SheetAuthorshipStatementRequiredDisabled: Eigenständigkeitserklärungen für nicht-prüfungsrelevante Übungsblattabgaben sind institutsweit deaktiviert. SheetAuthorshipStatementRequiredForcedTip: Für dieses Institut sind Eigenständigkeitserklärungen für nicht-prüfungszugehörige Übungsblätter vorgeschrieben.
SheetAuthorshipStatementRequiredForced: Es ist institutsweit vorgeschrieben, dass bei Übungsblattabgaben jeder Abgebende (bei Abgabegruppen jedes Gruppenmitglied) aufgefordert werden muss, eine Eigenständigkeitserklärung zu akzeptieren.
SheetAuthorshipStatementIsRequiredTrue: Erforderlich
SheetAuthorshipStatementIsRequiredFalse: Keine
SheetAuthorshipStatementUseSchoolDefault: Vorgabe des Instituts verwenden?
SheetAuthorshipStatementUseSchoolDefaultTip: Soll die aktuelle Vorgabe des Instituts (siehe unten) verwendet werden? (Hinweis: Um über alle Abgaben eines Blattes hinweg konsistente Eigenständigkeitserklärungen zu gewährleisten, werden Änderungen an der Vorgabe des Instituts nur für neue Blätter angewandt.)
SheetAuthorshipStatementCustom: Benutzerdefinierte Erklärung
SheetAuthorshipStatementSchoolDefault: Vorgabe des Instituts
SheetAuthorshipStatementContent: Eigenständigkeitserklärung SheetAuthorshipStatementContent: Eigenständigkeitserklärung
SheetAuthorshipStatementContentOverridesExamTip: Gehört dieses Übungsblatt zu einer Prüfung mit einer prüfungsweit eingestellten Eigenständigkeitserklärung, so können Sie hier eine für dieses Übungsblatt abweichende Eigenständigkeitserklärung angeben.

View File

@ -153,13 +153,7 @@ SheetGradingPassAlways: Automatically passed when corrected
SheetAuthorshipStatementSection: Statement of Authorship SheetAuthorshipStatementSection: Statement of Authorship
SheetAuthorshipStatementRequired: Require Statement of Authorship for submissions? SheetAuthorshipStatementRequired: Require Statement of Authorship for submissions?
SheetAuthorshipStatementRequiredTip: Should each submittor (in case of submission groups each group member) be required to accept a Statement of Authorship? (Hint: If this sheet is related to an exam and a Statement of Authorship is activated for this exam, this statement will override the exam-wide Statement of Authorship for this specific sheet.) SheetAuthorshipStatementRequiredTip: Should submittors (each group member in case of submission groups) be required to accept a Statement of Authorship?
SheetAuthorshipStatementRequiredDisabled: The school settings prohibit Statements of Authorship for exam-unrelated exercise sheet submissions. SheetAuthorshipStatementRequiredForcedTip: This school enforces Statements of Authorship for all exam-unrelated exercise sheets.
SheetAuthorshipStatementRequiredForced: The school settings enforce that each submittor (in case of submission groups each group member) is required to accept a Statement of Authorship.
SheetAuthorshipStatementIsRequiredTrue: Required
SheetAuthorshipStatementIsRequiredFalse: None
SheetAuthorshipStatementUseSchoolDefault: Use school preset?
SheetAuthorshipStatementUseSchoolDefaultTip: Should the school-wide preset be used? (Hint: To ensure consistent statements across all submissions for a sheet, changes of the school-wide preset will only apply to new exercise sheets.)
SheetAuthorshipStatementCustom: Custom statement
SheetAuthorshipStatementSchoolDefault: School preset
SheetAuthorshipStatementContent: Statement of Authorship SheetAuthorshipStatementContent: Statement of Authorship
SheetAuthorshipStatementContentOverridesExamTip: If this exercise sheet is related to an exam with an exam-wide Statement of Authorship set, a sheet-specific adaptation can be given here.

View File

@ -26,15 +26,15 @@ SchoolExamOffice: Prüfungsverwaltung
SchoolAllocation: Zentralanmeldungs-Administration SchoolAllocation: Zentralanmeldungs-Administration
SchoolAdmin !ident-ok: Admin SchoolAdmin !ident-ok: Admin
SchoolAuthorshipStatementSection: Eigenständigkeitserklärung SchoolAuthorshipStatementSection: Eigenständigkeitserklärungen
SchoolAuthorshipStatementSheetMode: Modus für nicht-prüfungszugehörige Übungsblattabgaben
SchoolAuthorshipStatementSheetExamMode: Modus für prüfungszugehörige Übungsblattabgaben
SchoolAuthorshipStatementModeNone: Keine Eigenständigkeitserklärung erlauben SchoolAuthorshipStatementModeNone: Keine Eigenständigkeitserklärung erlauben
SchoolAuthorshipStatementModeOptional: Eigenständigkeitserklärung optional einforderbar SchoolAuthorshipStatementModeOptional: Eigenständigkeitserklärung optional einforderbar
SchoolAuthorshipStatementModeRequired: Eigenständigkeitserklärung immer erforderlich SchoolAuthorshipStatementModeRequired: Eigenständigkeitserklärung immer erforderlich
SchoolAuthorshipStatementSheetMode: Modus für nicht-prüfungsrelevante Übungsblattabgaben SchoolAuthorshipStatementSheetDefinition: Eigenständigkeitserklärung für nicht-prüfungszugehörige Übungsblattabgaben
SchoolAuthorshipStatementSheetDefinition: Eigenständigkeitserklärung für nicht-prüfungsrelevante Übungsblattabgaben SchoolAuthorshipStatementSheetDefinitionTip: Bitte in sowohl deutscher als auch englischer Sprache angeben.
SchoolAuthorshipStatementSheetDefinitionTip: Deutsch und Englisch SchoolAuthorshipStatementSheetExamDefinition: Eigenständigkeitserklärung für prüfungszugehörige Übungsblattabgaben
SchoolAuthorshipStatementSheetAllowOther: Abweichende Erklärungen für nicht-prüfungsrelevante Übungsblätter erlauben? SchoolAuthorshipStatementSheetExamDefinitionTip: Bitte in sowohl deutscher als auch englischer Sprache angeben.
SchoolAuthorshipStatementSheetExamMode: Modus für prüfungsrelevante Übungsblattabgaben SchoolAuthorshipStatementSheetAllowOther: Abweichende Eigenständigkeitserklärungen für nicht-prüfungszugehörige Übungsblätter erlauben?
SchoolAuthorshipStatementSheetExamDefinition: Eigenständigkeitserklärung für prüfungsrelevante Übungsblattabgaben SchoolAuthorshipStatementSheetExamAllowOther: Abweichende Eigenständigkeitserklärungen für prüfungszugehörige Übungsblätter erlauben?
SchoolAuthorshipStatementSheetExamDefinitionTip: Deutsch und Englisch
SchoolAuthorshipStatementSheetExamAllowOther: Abweichende Erklärungen für prüfungsrelevante Übungsblätter erlauben?

View File

@ -26,15 +26,15 @@ SchoolEvaluation: Course evaluation
SchoolExamOffice: Exam office SchoolExamOffice: Exam office
SchoolAllocation: Administration of central allocations SchoolAllocation: Administration of central allocations
SchoolAuthorshipStatementSection: Statement of Authorship SchoolAuthorshipStatementSection: Statements of Authorship
SchoolAuthorshipStatementSheetMode: Mode for exam-unrelated exercise sheet submissions
SchoolAuthorshipStatementSheetExamMode: Mode for exam-related exercise sheet submissions
SchoolAuthorshipStatementModeNone: No Statement of Authorship allowed SchoolAuthorshipStatementModeNone: No Statement of Authorship allowed
SchoolAuthorshipStatementModeOptional: Statement of Authorship optionally activatable SchoolAuthorshipStatementModeOptional: Statement of Authorship optionally activatable
SchoolAuthorshipStatementModeRequired: Statement of Authorship always required SchoolAuthorshipStatementModeRequired: Statement of Authorship always required
SchoolAuthorshipStatementSheetMode: Mode for exam-unrelated exercise sheets
SchoolAuthorshipStatementSheetDefinition: Statement of Authorship for exam-unrelated exercise sheets SchoolAuthorshipStatementSheetDefinition: Statement of Authorship for exam-unrelated exercise sheets
SchoolAuthorshipStatementSheetDefinitionTip: German and English SchoolAuthorshipStatementSheetDefinitionTip: Please enter both german and english statements.
SchoolAuthorshipStatementSheetAllowOther: Allow adaptations for exam-unrelated exercise sheets?
SchoolAuthorshipStatementSheetExamMode: Mode for exam-related exercise sheets
SchoolAuthorshipStatementSheetExamDefinition: Statement of Authorship for exam-related exercise sheets SchoolAuthorshipStatementSheetExamDefinition: Statement of Authorship for exam-related exercise sheets
SchoolAuthorshipStatementSheetExamDefinitionTip: German and English SchoolAuthorshipStatementSheetExamDefinitionTip: Please enter both german and english statements.
SchoolAuthorshipStatementSheetAllowOther: Allow adaptations for exam-unrelated exercise sheets?
SchoolAuthorshipStatementSheetExamAllowOther: Allow adaptations for exam-related exercise sheets? SchoolAuthorshipStatementSheetExamAllowOther: Allow adaptations for exam-related exercise sheets?

View File

@ -147,7 +147,6 @@ examForm (Entity _ Course{..}) template csrf = hoist liftHandler $ do
<*> examCorrectorsForm (efCorrectors <$> template) <*> examCorrectorsForm (efCorrectors <$> template)
<* aformSection MsgExamFormParts <* aformSection MsgExamFormParts
<*> examPartsForm (efExamParts <$> template) <*> examPartsForm (efExamParts <$> template)
-- TODO: refactor messages to be used across scopes, then define this form section separately (to be used for exams and sheets)
<*> let <*> let
reqContentField :: (FieldSettings UniWorX -> FieldSettings UniWorX) -> AForm Handler StoredMarkup reqContentField :: (FieldSettings UniWorX -> FieldSettings UniWorX) -> AForm Handler StoredMarkup
reqContentField ttip = areq htmlField reqContentField ttip = areq htmlField
@ -156,7 +155,7 @@ examForm (Entity _ Course{..}) template csrf = hoist liftHandler $ do
<|> (authorshipStatementDefinitionContent . entityVal <$> mSchoolAuthorshipStatement) <|> (authorshipStatementDefinitionContent . entityVal <$> mSchoolAuthorshipStatement)
) )
forcedContentField = aforced htmlField forcedContentField = aforced htmlField
(fslI MsgExamAuthorshipStatementContent & setTooltip MsgExamAuthorshipStatementAllowOtherFalseTip) (fslI MsgExamAuthorshipStatementContent & setTooltip MsgExamAuthorshipStatementContentForcedTip)
(maybe mempty (authorshipStatementDefinitionContent . entityVal) mSchoolAuthorshipStatement) (maybe mempty (authorshipStatementDefinitionContent . entityVal) mSchoolAuthorshipStatement)
contentField ttipReq = bool forcedContentField (reqContentField ttipReq) schoolSheetExamAuthorshipStatementAllowOther contentField ttipReq = bool forcedContentField (reqContentField ttipReq) schoolSheetExamAuthorshipStatementAllowOther
in case schoolSheetExamAuthorshipStatementMode of in case schoolSheetExamAuthorshipStatementMode of
@ -166,7 +165,7 @@ examForm (Entity _ Course{..}) template csrf = hoist liftHandler $ do
SchoolAuthorshipStatementModeOptional -> optionalActionA (contentField id) SchoolAuthorshipStatementModeOptional -> optionalActionA (contentField id)
(fslI MsgExamAuthorshipStatementRequired & setTooltip MsgExamAuthorshipStatementRequiredTip) (fslI MsgExamAuthorshipStatementRequired & setTooltip MsgExamAuthorshipStatementRequiredTip)
(is _Just . efAuthorshipStatement <$> template) (is _Just . efAuthorshipStatement <$> template)
SchoolAuthorshipStatementModeRequired -> fmap Just . contentField $ setTooltip MsgExamAuthorshipStatementRequiredDisabledOnTip SchoolAuthorshipStatementModeRequired -> fmap Just . contentField $ setTooltip MsgExamAuthorshipStatementRequiredForcedTip
_none -> pure Nothing _none -> pure Nothing
officeSchoolsForm :: Maybe (Set SchoolId) -> AForm Handler (Set SchoolId) officeSchoolsForm :: Maybe (Set SchoolId) -> AForm Handler (Set SchoolId)

View File

@ -108,27 +108,28 @@ makeSheetForm cId msId template = identifyForm FIDsheet . validateForm validateS
<* aformSection MsgSheetAuthorshipStatementSection <* aformSection MsgSheetAuthorshipStatementSection
-- TODO: add info: applies to exam-unrelated sheets and overrides exam definition if sheet is related to an exam and this exam has an authorship statement -- TODO: add info: applies to exam-unrelated sheets and overrides exam definition if sheet is related to an exam and this exam has an authorship statement
-- TODO: compare versions: school > msId if school statement is newer than msId statement, msId > school otherwise (TODO: add lastEdited to model) -- TODO: compare versions: school > msId if school statement is newer than msId statement, msId > school otherwise (TODO: add lastEdited to model)
<*> optionalActionA <*> pure Nothing -- TODO
( areq htmlField -- <*> optionalActionA
(fslI MsgSheetAuthorshipStatementContent) -- ( areq htmlField
( -- (fslI MsgSheetAuthorshipStatementContent)
-- TODO: select correct school settings wrt. exam-related/exam-unrelated -- (
-- TODO: if school enforces school-wide statement, take school-wide statement -- -- TODO: select correct school settings wrt. exam-related/exam-unrelated
-- TODO: otherwise, take value from template, or take exam-wide statement if there is any, or take the school default if there is any -- -- TODO: if school enforces school-wide statement, take school-wide statement
Nothing -- -- TODO: otherwise, take value from template, or take exam-wide statement if there is any, or take the school default if there is any
) -- (fromMaybe mempty $ sfAuthorshipStatement <$> template <|> (Just . authorshipStatementDefinitionContent . entityVal) <$> mSchoolAuthorshipStatement)
) -- )
( fslI MsgSheetAuthorshipStatementRequired -- )
& setTooltip MsgSheetAuthorshipStatementRequiredTip -- ( fslI MsgSheetAuthorshipStatementRequired
-- TODO: set disabled attr if school mode disables or enforces statements -- & setTooltip MsgSheetAuthorshipStatementRequiredTip
-- TODO: select school mode wrt. exam-related/exam-unrelated: Is this sheet related to an exam? If yes, take school exam sheet mode, otherwise take school sheet mode -- -- TODO: set disabled attr if school mode disables or enforces statements
) -- -- TODO: select school mode wrt. exam-related/exam-unrelated: Is this sheet related to an exam? If yes, take school exam sheet mode, otherwise take school sheet mode
( -- )
-- TODO: if school disables/enforces statements for this sheet (exam-related/exam-unrelated?), set value accordingly -- (
-- TODO: if this sheet is related to an exam and this exam enforces statements, set value accordingly -- -- TODO: if school disables/enforces statements for this sheet (exam-related/exam-unrelated?), set value accordingly
-- TODO: otherwise, take value from template, or `Just True` if the school has a non-empty school-wide default -- -- TODO: if this sheet is related to an exam and this exam enforces statements, set value accordingly
Nothing -- -- TODO: otherwise, take value from template, or `Just True` if the school has a non-empty school-wide default
) -- (is _Just . sfAuthorshipStatement <$> template)
-- )
where where
makeSheetPersonalisedFilesForm :: Maybe SheetPersonalisedFilesForm -> MForm Handler (AForm Handler SheetPersonalisedFilesForm) makeSheetPersonalisedFilesForm :: Maybe SheetPersonalisedFilesForm -> MForm Handler (AForm Handler SheetPersonalisedFilesForm)
makeSheetPersonalisedFilesForm template' = do makeSheetPersonalisedFilesForm template' = do