From 491f7d35826f696ba93a0e2d7981b79b98e9199b Mon Sep 17 00:00:00 2001 From: Sarah Vaupel Date: Sat, 19 Jun 2021 12:10:50 +0200 Subject: [PATCH] chore: refactor authship statement messages --- .../courses/exam/exam/de-de-formal.msg | 16 ++----- .../categories/courses/exam/exam/en-eu.msg | 18 ++------ .../categories/courses/sheet/de-de-formal.msg | 14 ++---- .../categories/courses/sheet/en-eu.msg | 12 ++---- .../categories/school/de-de-formal.msg | 18 ++++---- messages/uniworx/categories/school/en-eu.msg | 12 +++--- src/Handler/Exam/Form.hs | 5 +-- src/Handler/Sheet/Form.hs | 43 ++++++++++--------- 8 files changed, 53 insertions(+), 85 deletions(-) diff --git a/messages/uniworx/categories/courses/exam/exam/de-de-formal.msg b/messages/uniworx/categories/courses/exam/exam/de-de-formal.msg index baac78f3f..bbcf9f472 100644 --- a/messages/uniworx/categories/courses/exam/exam/de-de-formal.msg +++ b/messages/uniworx/categories/courses/exam/exam/de-de-formal.msg @@ -313,19 +313,9 @@ ExamGradingGrades: Numerische Noten ExamGradingMixed: Gemischt ExamFinished: Ergebnisse sichtbar ab -ExamAuthorshipStatementSection: Eigenständigkeitserklärungen +ExamAuthorshipStatementSection: Eigenständigkeitserklärung 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? -ExamAuthorshipStatementRequiredDisabledOffTip: Für dieses Institut sind Eigenständigkeitserklärungen für prüfungsrelevante Übungsblätter deaktiviert. -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 +ExamAuthorshipStatementRequiredForcedTip: Für dieses Institut sind Eigenständigkeitserklärungen für prüfungszugehörige Übungsblätter vorgeschrieben. 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. - -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. \ No newline at end of file +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. \ No newline at end of file diff --git a/messages/uniworx/categories/courses/exam/exam/en-eu.msg b/messages/uniworx/categories/courses/exam/exam/en-eu.msg index ab41c986a..756491717 100644 --- a/messages/uniworx/categories/courses/exam/exam/en-eu.msg +++ b/messages/uniworx/categories/courses/exam/exam/en-eu.msg @@ -311,19 +311,9 @@ ExamGradingGrades: Numeric grades ExamGradingMixed: Mixed ExamFinished: Results visible from -ExamAuthorshipStatementSection: Statements of Authorship +ExamAuthorshipStatementSection: Statement of Authorship 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? -ExamAuthorshipStatementRequiredDisabledOffTip: This school permits Statements of Authorship for exam-related 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 +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? +ExamAuthorshipStatementRequiredForcedTip: This school enforces Statements of Authorship for all exam-related exercise sheets. 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. - -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. \ No newline at end of file +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. \ No newline at end of file diff --git a/messages/uniworx/categories/courses/sheet/de-de-formal.msg b/messages/uniworx/categories/courses/sheet/de-de-formal.msg index b24c3cc85..e7a8b11a6 100644 --- a/messages/uniworx/categories/courses/sheet/de-de-formal.msg +++ b/messages/uniworx/categories/courses/sheet/de-de-formal.msg @@ -153,14 +153,8 @@ SheetGradingPassBinary: Bestanden/Nicht Bestanden SheetGradingPassAlways: Automatisch bestanden, sobald korrigiert SheetAuthorshipStatementSection: Eigenständigkeitserklärung -SheetAuthorshipStatementRequired: Eigenständigkeitserklärung 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.) -SheetAuthorshipStatementRequiredDisabled: Eigenständigkeitserklärungen für nicht-prüfungsrelevante Übungsblattabgaben sind institutsweit deaktiviert. -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 +SheetAuthorshipStatementRequired: Eigenständigkeitserklärung für Übungsblattabgaben einfordern? +SheetAuthorshipStatementRequiredTip: Sollen die Abgebenden (bei Abgabegruppen jedes Gruppenmitglied) aufgefordert werden, eine Eigenständigkeitserklärung zu akzeptieren? +SheetAuthorshipStatementRequiredForcedTip: Für dieses Institut sind Eigenständigkeitserklärungen für nicht-prüfungszugehörige Übungsblätter vorgeschrieben. 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. diff --git a/messages/uniworx/categories/courses/sheet/en-eu.msg b/messages/uniworx/categories/courses/sheet/en-eu.msg index b7e46a205..d72478c60 100644 --- a/messages/uniworx/categories/courses/sheet/en-eu.msg +++ b/messages/uniworx/categories/courses/sheet/en-eu.msg @@ -153,13 +153,7 @@ SheetGradingPassAlways: Automatically passed when corrected SheetAuthorshipStatementSection: Statement of Authorship 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.) -SheetAuthorshipStatementRequiredDisabled: The school settings prohibit Statements of Authorship for exam-unrelated exercise sheet submissions. -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 +SheetAuthorshipStatementRequiredTip: Should submittors (each group member in case of submission groups) be required to accept a Statement of Authorship? +SheetAuthorshipStatementRequiredForcedTip: This school enforces Statements of Authorship for all exam-unrelated exercise sheets. 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. diff --git a/messages/uniworx/categories/school/de-de-formal.msg b/messages/uniworx/categories/school/de-de-formal.msg index 8a0c21c8e..66e657534 100644 --- a/messages/uniworx/categories/school/de-de-formal.msg +++ b/messages/uniworx/categories/school/de-de-formal.msg @@ -26,15 +26,15 @@ SchoolExamOffice: Prüfungsverwaltung SchoolAllocation: Zentralanmeldungs-Administration 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 SchoolAuthorshipStatementModeOptional: Eigenständigkeitserklärung optional einforderbar SchoolAuthorshipStatementModeRequired: Eigenständigkeitserklärung immer erforderlich -SchoolAuthorshipStatementSheetMode: Modus für nicht-prüfungsrelevante Übungsblattabgaben -SchoolAuthorshipStatementSheetDefinition: Eigenständigkeitserklärung für nicht-prüfungsrelevante Übungsblattabgaben -SchoolAuthorshipStatementSheetDefinitionTip: Deutsch und Englisch -SchoolAuthorshipStatementSheetAllowOther: Abweichende Erklärungen für nicht-prüfungsrelevante Übungsblätter erlauben? -SchoolAuthorshipStatementSheetExamMode: Modus für prüfungsrelevante Übungsblattabgaben -SchoolAuthorshipStatementSheetExamDefinition: Eigenständigkeitserklärung für prüfungsrelevante Übungsblattabgaben -SchoolAuthorshipStatementSheetExamDefinitionTip: Deutsch und Englisch -SchoolAuthorshipStatementSheetExamAllowOther: Abweichende Erklärungen für prüfungsrelevante Übungsblätter erlauben? \ No newline at end of file +SchoolAuthorshipStatementSheetDefinition: Eigenständigkeitserklärung für nicht-prüfungszugehörige Übungsblattabgaben +SchoolAuthorshipStatementSheetDefinitionTip: Bitte in sowohl deutscher als auch englischer Sprache angeben. +SchoolAuthorshipStatementSheetExamDefinition: Eigenständigkeitserklärung für prüfungszugehörige Übungsblattabgaben +SchoolAuthorshipStatementSheetExamDefinitionTip: Bitte in sowohl deutscher als auch englischer Sprache angeben. +SchoolAuthorshipStatementSheetAllowOther: Abweichende Eigenständigkeitserklärungen für nicht-prüfungszugehörige Übungsblätter erlauben? +SchoolAuthorshipStatementSheetExamAllowOther: Abweichende Eigenständigkeitserklärungen für prüfungszugehörige Übungsblätter erlauben? \ No newline at end of file diff --git a/messages/uniworx/categories/school/en-eu.msg b/messages/uniworx/categories/school/en-eu.msg index 008b44ed2..31d499c65 100644 --- a/messages/uniworx/categories/school/en-eu.msg +++ b/messages/uniworx/categories/school/en-eu.msg @@ -26,15 +26,15 @@ SchoolEvaluation: Course evaluation SchoolExamOffice: Exam office 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 SchoolAuthorshipStatementModeOptional: Statement of Authorship optionally activatable SchoolAuthorshipStatementModeRequired: Statement of Authorship always required -SchoolAuthorshipStatementSheetMode: Mode for exam-unrelated exercise sheets SchoolAuthorshipStatementSheetDefinition: Statement of Authorship for exam-unrelated exercise sheets -SchoolAuthorshipStatementSheetDefinitionTip: German and English -SchoolAuthorshipStatementSheetAllowOther: Allow adaptations for exam-unrelated exercise sheets? -SchoolAuthorshipStatementSheetExamMode: Mode for exam-related exercise sheets +SchoolAuthorshipStatementSheetDefinitionTip: Please enter both german and english statements. 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? \ No newline at end of file diff --git a/src/Handler/Exam/Form.hs b/src/Handler/Exam/Form.hs index 1e9138afa..fc1b3f020 100644 --- a/src/Handler/Exam/Form.hs +++ b/src/Handler/Exam/Form.hs @@ -147,7 +147,6 @@ examForm (Entity _ Course{..}) template csrf = hoist liftHandler $ do <*> examCorrectorsForm (efCorrectors <$> template) <* aformSection MsgExamFormParts <*> 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 reqContentField :: (FieldSettings UniWorX -> FieldSettings UniWorX) -> AForm Handler StoredMarkup reqContentField ttip = areq htmlField @@ -156,7 +155,7 @@ examForm (Entity _ Course{..}) template csrf = hoist liftHandler $ do <|> (authorshipStatementDefinitionContent . entityVal <$> mSchoolAuthorshipStatement) ) forcedContentField = aforced htmlField - (fslI MsgExamAuthorshipStatementContent & setTooltip MsgExamAuthorshipStatementAllowOtherFalseTip) + (fslI MsgExamAuthorshipStatementContent & setTooltip MsgExamAuthorshipStatementContentForcedTip) (maybe mempty (authorshipStatementDefinitionContent . entityVal) mSchoolAuthorshipStatement) contentField ttipReq = bool forcedContentField (reqContentField ttipReq) schoolSheetExamAuthorshipStatementAllowOther in case schoolSheetExamAuthorshipStatementMode of @@ -166,7 +165,7 @@ examForm (Entity _ Course{..}) template csrf = hoist liftHandler $ do SchoolAuthorshipStatementModeOptional -> optionalActionA (contentField id) (fslI MsgExamAuthorshipStatementRequired & setTooltip MsgExamAuthorshipStatementRequiredTip) (is _Just . efAuthorshipStatement <$> template) - SchoolAuthorshipStatementModeRequired -> fmap Just . contentField $ setTooltip MsgExamAuthorshipStatementRequiredDisabledOnTip + SchoolAuthorshipStatementModeRequired -> fmap Just . contentField $ setTooltip MsgExamAuthorshipStatementRequiredForcedTip _none -> pure Nothing officeSchoolsForm :: Maybe (Set SchoolId) -> AForm Handler (Set SchoolId) diff --git a/src/Handler/Sheet/Form.hs b/src/Handler/Sheet/Form.hs index 32c886c06..f5b94480e 100644 --- a/src/Handler/Sheet/Form.hs +++ b/src/Handler/Sheet/Form.hs @@ -108,27 +108,28 @@ makeSheetForm cId msId template = identifyForm FIDsheet . validateForm validateS <* 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: compare versions: school > msId if school statement is newer than msId statement, msId > school otherwise (TODO: add lastEdited to model) - <*> optionalActionA - ( 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: otherwise, take value from template, or take exam-wide statement if there is any, or take the school default if there is any - Nothing - ) - ) - ( fslI MsgSheetAuthorshipStatementRequired - & setTooltip MsgSheetAuthorshipStatementRequiredTip - -- 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: otherwise, take value from template, or `Just True` if the school has a non-empty school-wide default - Nothing - ) + <*> pure Nothing -- TODO + -- <*> optionalActionA + -- ( 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: 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 + -- -- 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: otherwise, take value from template, or `Just True` if the school has a non-empty school-wide default + -- (is _Just . sfAuthorshipStatement <$> template) + -- ) where makeSheetPersonalisedFilesForm :: Maybe SheetPersonalisedFilesForm -> MForm Handler (AForm Handler SheetPersonalisedFilesForm) makeSheetPersonalisedFilesForm template' = do