diff --git a/frontend/src/app.sass b/frontend/src/app.sass
index 86bb47969..6df8a8afa 100644
--- a/frontend/src/app.sass
+++ b/frontend/src/app.sass
@@ -1105,9 +1105,8 @@ th, td
pointer-events: none
#changelog
- font-size: 14px
- white-space: pre-wrap
- font-family: var(--font-monospace)
+ max-height: 75vh
+ overflow: auto
#gitrev
font-size: 12px
diff --git a/messages/uniworx/de-de-formal.msg b/messages/uniworx/de-de-formal.msg
index b46939abf..a1ea08cbf 100644
--- a/messages/uniworx/de-de-formal.msg
+++ b/messages/uniworx/de-de-formal.msg
@@ -2809,4 +2809,7 @@ CronMatchAsap: ASAP
CronMatchNone: Nie
SystemExamOffice: Prüfungsverwaltung
-SystemFaculty: Fakultätsmitglied
\ No newline at end of file
+SystemFaculty: Fakultätsmitglied
+
+ChangelogItemFeature: Feature
+ChangelogItemBugfix: Bugfix
\ No newline at end of file
diff --git a/messages/uniworx/en-eu.msg b/messages/uniworx/en-eu.msg
index 79456dd64..fb29b90ad 100644
--- a/messages/uniworx/en-eu.msg
+++ b/messages/uniworx/en-eu.msg
@@ -2811,3 +2811,6 @@ CronMatchNone: Never
SystemExamOffice: Exam office
SystemFaculty: Faculty member
+
+ChangelogItemFeature: Feature
+ChangelogItemBugfix: Bugfix
\ No newline at end of file
diff --git a/models/changelog.model b/models/changelog.model
new file mode 100644
index 000000000..4cc42cb12
--- /dev/null
+++ b/models/changelog.model
@@ -0,0 +1,4 @@
+ChangelogItemFirstSeen
+ item ChangelogItem
+ firstSeen Day
+ Primary item
diff --git a/src/Data/Time/Calendar/Instances.hs b/src/Data/Time/Calendar/Instances.hs
index 15c77e94b..87e74ad1c 100644
--- a/src/Data/Time/Calendar/Instances.hs
+++ b/src/Data/Time/Calendar/Instances.hs
@@ -1,4 +1,3 @@
-{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# OPTIONS_GHC -fno-warn-orphans #-}
module Data.Time.Calendar.Instances
@@ -11,8 +10,13 @@ import Data.Time.Calendar
import Data.Universe
+import Language.Haskell.TH.Syntax (Lift)
+import Type.Reflection
-deriving newtype instance Hashable Day
+
+deriving instance Lift Day
+instance Hashable Day where
+ hashWithSalt s (ModifiedJulianDay jDay) = s `hashWithSalt` hash (typeRep @Day) `hashWithSalt` jDay
deriving instance Ord DayOfWeek
instance Universe DayOfWeek where
diff --git a/src/Foundation/I18n.hs b/src/Foundation/I18n.hs
index 399ed3793..1d5ac1248 100644
--- a/src/Foundation/I18n.hs
+++ b/src/Foundation/I18n.hs
@@ -225,6 +225,7 @@ embedRenderMessage ''UniWorX ''ExamAidsPreset id
embedRenderMessage ''UniWorX ''ExamOnlinePreset id
embedRenderMessage ''UniWorX ''ExamSynchronicityPreset id
embedRenderMessage ''UniWorX ''ExamRequiredEquipmentPreset id
+embedRenderMessage ''UniWorX ''ChangelogItemKind id
embedRenderMessage ''UniWorX ''AuthenticationMode id
diff --git a/src/Handler/Info.hs b/src/Handler/Info.hs
index 7f4749bb6..c45c5c9d6 100644
--- a/src/Handler/Info.hs
+++ b/src/Handler/Info.hs
@@ -5,7 +5,9 @@ import Handler.Utils
import Handler.Info.TH
import qualified Data.Map as Map
+import Data.Map ((!))
import qualified Data.CaseInsensitive as CI
+import qualified Data.Set as Set
import qualified Database.Esqueleto as E
import qualified Database.Esqueleto.Utils as E
@@ -34,17 +36,26 @@ getLegalR =
-- | Allgemeine Informationen
getInfoR :: Handler Html
-getInfoR = -- do
+getInfoR = do
+ changelogEntries' <- runDB $ selectList [] []
+ let changelogEntries = Map.fromListWith Set.union
+ [ (Down changelogItemFirstSeenFirstSeen, Set.singleton changelogItemFirstSeenItem)
+ | Entity _ ChangelogItemFirstSeen{..} <- changelogEntries'
+ ]
+
siteLayoutMsg MsgInfoHeading $ do
setTitleI MsgInfoHeading
let features = $(i18nWidgetFile "featureList")
- changeLog = $(i18nWidgetFile "changelog")
+ changeLog = $(widgetFile "changelog")
knownBugs = $(i18nWidgetFile "knownBugs")
implementation = $(i18nWidgetFile "implementation")
gitInfo :: Text
gitInfo = $gitDescribe <> " (" <> $gitCommitDate <> ")"
$(widgetFile "versionHistory")
+ where
+ changelogItems = $(i18nWidgetFiles "changelog")
+
getInfoLecturerR :: Handler Html
getInfoLecturerR =
@@ -67,9 +78,9 @@ getInfoLecturerR =
-- new feature with given introduction date
newFeat :: Integer -> Int -> Int -> WidgetFor UniWorX ()
- newFeat year month day = do
+ newFeat y m d = do
currentTime <- liftIO getCurrentTime
- let expiryTime = UTCTime (addGregorianMonthsRollOver 1 $ fromGregorian year month day) 0
+ let expiryTime = UTCTime (addGregorianMonthsRollOver 1 $ fromGregorian y m d) 0
if currentTime > expiryTime
then mempty
else toWidget [whamlet| ^{iconTooltip tooltipNew (Just IconNew) False} |]
diff --git a/src/Handler/Utils/DateTime.hs b/src/Handler/Utils/DateTime.hs
index a321bebff..63bf227ac 100644
--- a/src/Handler/Utils/DateTime.hs
+++ b/src/Handler/Utils/DateTime.hs
@@ -213,9 +213,9 @@ formatDiffDays t
setYear :: Integer -> Day -> Day
-setYear year date = fromGregorian year month day
+setYear year date = fromGregorian year m d
where
- (_,month,day) = toGregorian date
+ (_,m,d) = toGregorian date
addOneWeek :: UTCTime -> UTCTime
addOneWeek = addWeeks 1
@@ -295,7 +295,7 @@ formatTimeRangeMail = formatTimeRange' formatTimeMail
formatGregorianW :: Integer -> Int -> Int -> Widget
-formatGregorianW year month day = formatTimeW SelFormatDate $ fromGregorian year month day
+formatGregorianW y m d = formatTimeW SelFormatDate $ fromGregorian y m d
instance Csv.ToField ZonedTime where
toField = Csv.toField . iso8601Show
diff --git a/src/Model/Migration.hs b/src/Model/Migration.hs
index 55d1ee4ca..27657bbe5 100644
--- a/src/Model/Migration.hs
+++ b/src/Model/Migration.hs
@@ -45,6 +45,10 @@ import Web.ServerSession.Backend.Persistent.Memcached (migrateMemcachedSqlStorag
import Data.Conduit.Algorithms.FastCDC (FastCDCParameters(fastCDCMinBlockSize))
+import Data.Time.Format.ISO8601 (iso8601Show)
+
+import qualified Data.Time.Zones as TZ
+
-- Database versions must follow https://pvp.haskell.org:
-- - Breaking changes are instances where manual migration is necessary (via customMigrations; i.e. changing a columns format)
-- - Non-breaking changes are instances where the automatic migration done by persistent is sufficient (i.e. adding a column or table)
@@ -168,6 +172,19 @@ migrateManual = do
, ("user_ldap_primary_key", "CREATE INDEX user_ldap_primary_key ON \"user\" (ldap_primary_key)" )
, ("file_content_entry_chunk_hash", "CREATE INDEX file_content_entry_chunk_hash ON \"file_content_entry\" (chunk_hash)" )
]
+
+ recordedChangelogItems <- lift . lift $ selectList [] []
+ let missingChangelogItems = Set.toList $ Set.fromList universeF `Set.difference` recordedChangelogItems'
+ where recordedChangelogItems' = Set.fromList [ changelogItemFirstSeenItem | Entity _ ChangelogItemFirstSeen{..} <- recordedChangelogItems ]
+ unless (null missingChangelogItems) $ do
+ now <- iso8601Show . localDay . TZ.utcToLocalTimeTZ appTZ <$> liftIO getCurrentTime
+ addMigration False $
+ let sql = [st|INSERT INTO changelog_item_first_seen (item, first_seen) VALUES #{vals}|]
+ vals = Text.intercalate ", " $ do
+ item <- missingChangelogItems
+ return [st|('#{toPathPiece item}', '#{now}')|]
+ in sql
+
where
addIndex :: Text -> Sql -> Migration
addIndex ixName ixDef = do
@@ -961,6 +978,15 @@ customMigrations = Map.fromListWith (>>)
ALTER TABLE school ADD COLUMN "exam_discouraged_modes" jsonb NOT NULL DEFAULT #{ExamModeDNF predDNFFalse};
|]
)
+ , ( AppliedMigrationKey [migrationVersion|42.0.0|] [version|43.0.0|]
+ , unlessM (tableExists "changelog_item_first_seen") $ do
+ [executeQQ|
+ CREATE TABLE "changelog_item_first_seen" (PRIMARY KEY ("item"), "item" VARCHAR NOT NULL, "first_seen" DATE NOT NULL);
+ |]
+ insertMany_ [ ChangelogItemFirstSeen{..}
+ | (changelogItemFirstSeenItem, changelogItemFirstSeenFirstSeen) <- Map.toList changelogItemDays
+ ]
+ )
]
diff --git a/src/Model/Types.hs b/src/Model/Types.hs
index b40e5c912..a8e437f17 100644
--- a/src/Model/Types.hs
+++ b/src/Model/Types.hs
@@ -17,3 +17,4 @@ import Model.Types.Allocation as Types
import Model.Types.Languages as Types
import Model.Types.File as Types
import Model.Types.User as Types
+import Model.Types.Changelog as Types
diff --git a/src/Model/Types/Changelog.hs b/src/Model/Types/Changelog.hs
new file mode 100644
index 000000000..37d9828d5
--- /dev/null
+++ b/src/Model/Types/Changelog.hs
@@ -0,0 +1,145 @@
+module Model.Types.Changelog
+ ( ChangelogItem(..)
+ , changelogItemMap
+ , ChangelogItemKind(..), _ChangelogItemFeature, _ChangelogItemBugfix
+ , classifyChangelogItem
+ , changelogItemDays
+ ) where
+
+import Import.NoModel
+
+import Model.Types.TH.PathPiece
+
+import qualified Data.Map as Map
+
+
+mkI18nWidgetEnum "Changelog" "changelog"
+derivePersistFieldPathPiece ''ChangelogItem
+pathPieceJSONKey ''ChangelogItem
+pathPieceJSON ''ChangelogItem
+pathPieceHttpApiData ''ChangelogItem
+
+data ChangelogItemKind
+ = ChangelogItemFeature
+ | ChangelogItemBugfix
+ deriving (Eq, Ord, Read, Show, Enum, Bounded, Generic, Typeable)
+ deriving anyclass (Universe, Finite)
+
+makePrisms ''ChangelogItemKind
+
+classifyChangelogItem :: ChangelogItem -> ChangelogItemKind
+classifyChangelogItem = \case
+ ChangelogHaskellCampusLogin -> ChangelogItemBugfix
+ ChangelogTooltipsWithoutJavascript -> ChangelogItemBugfix
+ ChangelogButtonsWorkWithoutJavascript -> ChangelogItemBugfix
+ ChangelogTableFormsWorkAfterAjax -> ChangelogItemBugfix
+ ChangelogPassingByPointsWorks -> ChangelogItemBugfix
+ ChangelogErrorMessagesForTableItemVanish -> ChangelogItemBugfix
+ ChangelogExamAchievementParticipantDuplication -> ChangelogItemBugfix
+ ChangelogFormsTimesReset -> ChangelogItemBugfix
+ _other -> ChangelogItemFeature
+
+changelogItemDays :: Map ChangelogItem Day
+changelogItemDays = Map.fromListWithKey (\k d1 d2 -> bool (error $ "Duplicate changelog days for " <> show k) d1 $ d1 /= d2)
+ [ (ChangelogConfigurableDatetimeFormat, [day|2018-07-10|])
+ , (ChangelogCourseListOverAllTerms, [day|2018-07-31|])
+ , (ChangelogCorrectionsDisplayImprovements, [day|2018-07-31|])
+ , (ChangelogHaskellCampusLogin, [day|2018-08-01|])
+ , (ChangelogFileDownloadOption, [day|2018-08-06|])
+ , (ChangelogSheetsNoSubmissionAndZipControl, [day|2018-09-18|])
+ , (ChangelogSmartCorrectionDistribution, [day|2018-09-18|])
+ , (ChangelogTableSummaries, [day|2018-09-18|])
+ , (ChangelogPersonalInformation, [day|2018-09-18|])
+ , (ChangelogCourseShorthandsWithinSchools, [day|2018-09-18|])
+ , (ChangelogTooltipsWithoutJavascript, [day|2018-09-18|])
+ , (ChangelogEmailNotifications, [day|2018-10-19|])
+ , (ChangelogSupportWidget, [day|2018-10-19|])
+ , (ChangelogAccountDeletionDuringTesting, [day|2018-10-19|])
+ , (ChangelogImprovementsForCorrectors, [day|2018-11-09|])
+ , (ChangelogButtonsWorkWithoutJavascript, [day|2018-11-09|])
+ , (ChangelogTableFormsWorkAfterAjax, [day|2018-11-29|])
+ , (ChangelogPassingByPointsWorks, [day|2018-11-30|])
+ , (ChangelogErrorMessagesForTableItemVanish, [day|2019-01-16|])
+ , (ChangelogAssignedCorrectionsFilters, [day|2019-01-16|])
+ , (ChangelogCourseConvenienceLinks, [day|2019-01-16|])
+ , (ChangelogAsidenav, [day|2019-01-30|])
+ , (ChangelogCourseAssociatedStudyField, [day|2019-03-20|])
+ , (ChangelogStudyFeatures, [day|2019-03-27|])
+ , (ChangelogCourseAdministratorRoles, [day|2019-03-27|])
+ , (ChangelogCourseAdministratorInvitations, [day|2019-04-20|])
+ , (ChangelogCourseMessages, [day|2019-04-20|])
+ , (ChangelogCorrectorsOnCourseShow, [day|2019-04-29|])
+ , (ChangelogTutorials, [day|2019-04-29|])
+ , (ChangelogCourseMaterials, [day|2019-05-04|])
+ , (ChangelogDownloadAllSheetFiles, [day|2019-05-10|])
+ , (ChangelogImprovedSubmittorUi, [day|2019-05-10|])
+ , (ChangelogCourseRegisterByAdmin, [day|2019-05-13|])
+ , (ChangelogReworkedAutomaticCorrectionDistribution, [day|2019-05-20|])
+ , (ChangelogDownloadAllSheetFilesByType, [day|2019-06-07|])
+ , (ChangelogSheetSpecificFiles, [day|2019-06-07|])
+ , (ChangelogExams, [day|2019-06-26|])
+ , (ChangelogCsvExamParticipants, [day|2019-07-23|])
+ , (ChangelogAllocationCourseRegistration, [day|2019-08-12|])
+ , (ChangelogAllocationApplications, [day|2019-08-19|])
+ , (ChangelogCsvCourseApplications, [day|2019-08-27|])
+ , (ChangelogAllocationsNotifications, [day|2019-09-05|])
+ , (ChangelogConfigurableDisplayEmails, [day|2019-09-12|])
+ , (ChangelogConfigurableDisplayNames, [day|2019-09-12|])
+ , (ChangelogEstimateAllocatedCourseCapacity, [day|2019-09-12|])
+ , (ChangelogNotificationExamRegistration, [day|2019-09-13|])
+ , (ChangelogExamClosure, [day|2019-09-16|])
+ , (ChangelogExamOfficeExamNotification, [day|2019-09-16|])
+ , (ChangelogExamOffices, [day|2019-09-16|])
+ , (ChangelogExamAchievementParticipantDuplication, [day|2019-09-25|])
+ , (ChangelogFormsTimesReset, [day|2019-09-25|])
+ , (ChangelogExamAutomaticResults, [day|2019-09-25|])
+ , (ChangelogExamAutomaticBoni, [day|2019-09-25|])
+ , (ChangelogAutomaticallyAcceptCourseApplications, [day|2019-09-27|])
+ , (ChangelogCourseNews, [day|2019-10-01|])
+ , (ChangelogCsvExportCourseParticipants, [day|2019-10-08|])
+ , (ChangelogNotificationCourseParticipantViaAdmin, [day|2019-10-08|])
+ , (ChangelogCsvExportCourseParticipantsFeatures, [day|2019-10-09|])
+ , (ChangelogCourseOccurences, [day|2019-10-09|])
+ , (ChangelogTutorialRegistrationViaParticipantTable, [day|2019-10-10|])
+ , (ChangelogCsvExportCourseParticipantsRegisteredTutorials, [day|2019-10-10|])
+ , (ChangelogCourseParticipantsSex, [day|2019-10-14|])
+ , (ChangelogTutorialTutorControl, [day|2019-10-14|])
+ , (ChangelogCsvOptionCharacterSet, [day|2019-10-23|])
+ , (ChangelogCsvOptionTimestamp, [day|2019-10-23|])
+ , (ChangelogEnglish, [day|2019-10-31|])
+ , (ChangelogI18n, [day|2019-10-31|])
+ , (ChangelogLmuInternalFields, [day|2019-11-28|])
+ , (ChangelogNotificationSubmissionChanged, [day|2019-12-05|])
+ , (ChangelogExportCourseParticipants, [day|2020-01-17|])
+ , (ChangelogExternalExams, [day|2020-01-17|])
+ , (ChangelogExamAutomaticRoomDistribution, [day|2020-01-29|])
+ , (ChangelogWarningMultipleSemesters, [day|2020-01-30|])
+ , (ChangelogExamAutomaticRoomDistributionBetterRulesDisplay, [day|2020-01-30|])
+ , (ChangelogReworkedNavigation, [day|2020-02-07|])
+ , (ChangelogExamCorrect, [day|2020-02-08|])
+ , (ChangelogExamGradingMode, [day|2020-02-19|])
+ , (ChangelogMarkdownEmails, [day|2020-02-23|])
+ , (ChangelogMarkdownHtmlInput, [day|2020-02-23|])
+ , (ChangelogBetterCsvImport, [day|2020-03-06|])
+ , (ChangelogAdditionalDatetimeFormats, [day|2020-03-16|])
+ , (ChangelogServerSideSessions, [day|2020-03-16|])
+ , (ChangelogWebinterfaceAllocationAllocation, [day|2020-03-16|])
+ , (ChangelogBetterTableCellColourCoding, [day|2020-03-16|])
+ , (ChangelogCourseOccurrenceNotes, [day|2020-03-31|])
+ , (ChangelogHideSystemMessages, [day|2020-04-15|])
+ , (ChangelogNonAnonymisedCorrection, [day|2020-04-17|])
+ , (ChangelogBetterCourseParticipantDetailPage, [day|2020-04-17|])
+ , (ChangelogFaq, [day|2020-04-24|])
+ , (ChangelogRegisteredSubmissionGroups, [day|2020-04-28|])
+ , (ChangelogFormerCourseParticipants, [day|2020-05-05|])
+ , (ChangelogBetterFileUploads, [day|2020-05-05|])
+ , (ChangelogSheetPassAlways, [day|2020-05-23|])
+ , (ChangelogBetterCourseCommunicationTutorials, [day|2020-05-25|])
+ , (ChangelogAdditionalSheetNotifications, [day|2020-05-25|])
+ , (ChangelogCourseParticipantsListAddSheets, [day|2020-06-14|])
+ , (ChangelogYamlRatings, [day|2020-06-17|])
+ , (ChangelogSubmissionOnlyExamRegistered, [day|2020-07-20|])
+ , (ChangelogCourseVisibility, [day|2020-08-10|])
+ , (ChangelogPersonalisedSheetFiles, [day|2020-08-10|])
+ , (ChangelogAbolishCourseAssociatedStudyFeatures, [day|2020-08-28|])
+ ]
diff --git a/src/Utils/DateTime.hs b/src/Utils/DateTime.hs
index dc2ce4677..0ef6ca5a0 100644
--- a/src/Utils/DateTime.hs
+++ b/src/Utils/DateTime.hs
@@ -12,6 +12,7 @@ module Utils.DateTime
, nominalHour, nominalMinute
, minNominalYear, avgNominalYear
, module Zones
+ , day
) where
import ClassyPrelude.Yesod hiding (lift)
@@ -23,12 +24,14 @@ import Data.Time.Zones.TH as Zones (includeSystemTZ)
import Data.Time.Zones (localTimeToUTCTZ, timeZoneForUTCTime)
import Data.Time.Format (FormatTime)
import Data.Time.Clock.System (systemEpochDay)
+import qualified Data.Time.Format.ISO8601 as Time
import qualified Data.Time.Format as Time
import qualified Data.List.NonEmpty as NonEmpty
import Language.Haskell.TH
import Language.Haskell.TH.Syntax (Lift(..))
+import Language.Haskell.TH.Quote (QuasiQuoter(..))
import Instances.TH.Lift ()
import Data.Data (Data)
@@ -144,3 +147,15 @@ nominalMinute = 60
minNominalYear, avgNominalYear :: NominalDiffTime
minNominalYear = 365 * nominalDay
avgNominalYear = fromRational $ 365.2425 * toRational nominalDay
+
+---------
+-- Day --
+---------
+
+day :: QuasiQuoter
+day = QuasiQuoter{..}
+ where
+ quotePat = error "day used as pattern"
+ quoteType = error "day used as type"
+ quoteDec = error "day used as declaration"
+ quoteExp dStr = maybe (fail $ "Could not parse ISO8601 day: “" <> dStr <> "”") (lift :: Day -> Q Exp) $ Time.iso8601ParseM dStr
diff --git a/src/Utils/PathPiece.hs b/src/Utils/PathPiece.hs
index 939f47058..1d466b689 100644
--- a/src/Utils/PathPiece.hs
+++ b/src/Utils/PathPiece.hs
@@ -8,6 +8,7 @@ module Utils.PathPiece
, tuplePathPiece
, pathPieceJSON, pathPieceJSONKey
, pathPieceBinary
+ , pathPieceHttpApiData
) where
import ClassyPrelude.Yesod
@@ -40,6 +41,8 @@ import qualified Data.Binary as Binary
import Control.Lens
import Data.Generics.Product.Types
+import Web.HttpApiData
+
mkFiniteFromPathPiece :: Name -> Q ([Dec], Exp)
mkFiniteFromPathPiece finiteType = do
@@ -229,3 +232,11 @@ pathPieceBinary tName
get = Binary.get >>= maybe (fail $ "Could not parse value of " <> $(TH.lift $ nameBase tName) <> " via PathPiece") return . fromPathPiece
put = Binary.put . toPathPiece
|]
+
+pathPieceHttpApiData :: Name -> DecsQ
+pathPieceHttpApiData tName
+ = [d| instance ToHttpApiData $(conT tName) where
+ toUrlPiece = toPathPiece
+ instance FromHttpApiData $(conT tName) where
+ parseUrlPiece = maybe (Left $ "Could not parse value of " <> $(TH.lift $ nameBase tName) <> " via PathPiece") Right . fromPathPiece
+ |]
diff --git a/templates/changelog.hamlet b/templates/changelog.hamlet
new file mode 100644
index 000000000..88f977759
--- /dev/null
+++ b/templates/changelog.hamlet
@@ -0,0 +1,14 @@
+$newline never
+
+ $forall (Down d, es) <- Map.toList changelogEntries
+ - toPathPiece d}>
+ ^{formatTimeW SelFormatDate d}
+
-
+
+ $forall e <- Set.toList es
+ - toPathPiece e}>
+ $if is _ChangelogItemBugfix $ classifyChangelogItem e
+
+ _{ChangelogItemBugfix}
+ : #
+ ^{changelogItems ! toPathPiece e}
diff --git a/templates/i18n/changelog/abolish-course-associated-study-features.de-de-formal.hamlet b/templates/i18n/changelog/abolish-course-associated-study-features.de-de-formal.hamlet
new file mode 100644
index 000000000..bdc6b06e0
--- /dev/null
+++ b/templates/i18n/changelog/abolish-course-associated-study-features.de-de-formal.hamlet
@@ -0,0 +1,4 @@
+$newline never
+Kursassoziierte Studienfächer wurden abgeschafft.
+
+Es werden nun an allen kursbezogenen Stellen jene Studiendaten angezeigt, die während des entsprechenden Semesters aktuell waren.
diff --git a/templates/i18n/changelog/abolish-course-associated-study-features.en-eu.hamlet b/templates/i18n/changelog/abolish-course-associated-study-features.en-eu.hamlet
new file mode 100644
index 000000000..06add0a69
--- /dev/null
+++ b/templates/i18n/changelog/abolish-course-associated-study-features.en-eu.hamlet
@@ -0,0 +1,4 @@
+$newline never
+Abolished course-associated features of study.
+
+In course-related contexts now all study features which were up to date during the relevant term are displayed.
diff --git a/templates/i18n/changelog/account-deletion-during-testing.de-de-formal.hamlet b/templates/i18n/changelog/account-deletion-during-testing.de-de-formal.hamlet
new file mode 100644
index 000000000..deecc7ecd
--- /dev/null
+++ b/templates/i18n/changelog/account-deletion-during-testing.de-de-formal.hamlet
@@ -0,0 +1,2 @@
+$newline never
+Benutzer können sich in der Testphase komplett selbst löschen
diff --git a/templates/i18n/changelog/account-deletion-during-testing.en-eu.hamlet b/templates/i18n/changelog/account-deletion-during-testing.en-eu.hamlet
new file mode 100644
index 000000000..c06dc9956
--- /dev/null
+++ b/templates/i18n/changelog/account-deletion-during-testing.en-eu.hamlet
@@ -0,0 +1,2 @@
+$newline never
+During testing users may completely delete their accounts
diff --git a/templates/i18n/changelog/additional-datetime-formats.de-de-formal.hamlet b/templates/i18n/changelog/additional-datetime-formats.de-de-formal.hamlet
new file mode 100644
index 000000000..14a463e23
--- /dev/null
+++ b/templates/i18n/changelog/additional-datetime-formats.de-de-formal.hamlet
@@ -0,0 +1,2 @@
+$newline never
+Zusätzliche Uhrzeit- und Datumsformate
diff --git a/templates/i18n/changelog/additional-datetime-formats.en-eu.hamlet b/templates/i18n/changelog/additional-datetime-formats.en-eu.hamlet
new file mode 100644
index 000000000..5b8a068a5
--- /dev/null
+++ b/templates/i18n/changelog/additional-datetime-formats.en-eu.hamlet
@@ -0,0 +1,2 @@
+$newline never
+Additional date and time formats
diff --git a/templates/i18n/changelog/additional-sheet-notifications.de-de-formal.hamlet b/templates/i18n/changelog/additional-sheet-notifications.de-de-formal.hamlet
new file mode 100644
index 000000000..0dc85d9f2
--- /dev/null
+++ b/templates/i18n/changelog/additional-sheet-notifications.de-de-formal.hamlet
@@ -0,0 +1,2 @@
+$newline never
+Zusätzliche Benachrichtigungen für Übungsblätter
diff --git a/templates/i18n/changelog/additional-sheet-notifications.en-eu.hamlet b/templates/i18n/changelog/additional-sheet-notifications.en-eu.hamlet
new file mode 100644
index 000000000..2e15f4f5e
--- /dev/null
+++ b/templates/i18n/changelog/additional-sheet-notifications.en-eu.hamlet
@@ -0,0 +1,2 @@
+$newline never
+Additional notifications for exercise sheets
diff --git a/templates/i18n/changelog/allocation-applications.de-de-formal.hamlet b/templates/i18n/changelog/allocation-applications.de-de-formal.hamlet
new file mode 100644
index 000000000..e888c5003
--- /dev/null
+++ b/templates/i18n/changelog/allocation-applications.de-de-formal.hamlet
@@ -0,0 +1,2 @@
+$newline never
+Bewerbungen für Zentralanmeldungen
diff --git a/templates/i18n/changelog/allocation-applications.en-eu.hamlet b/templates/i18n/changelog/allocation-applications.en-eu.hamlet
new file mode 100644
index 000000000..39c759990
--- /dev/null
+++ b/templates/i18n/changelog/allocation-applications.en-eu.hamlet
@@ -0,0 +1,2 @@
+$newline never
+Applications for central allocations
diff --git a/templates/i18n/changelog/allocation-course-registration.de-de-formal.hamlet b/templates/i18n/changelog/allocation-course-registration.de-de-formal.hamlet
new file mode 100644
index 000000000..441fc07b2
--- /dev/null
+++ b/templates/i18n/changelog/allocation-course-registration.de-de-formal.hamlet
@@ -0,0 +1,2 @@
+$newline never
+Kurse zu Zentralanmeldungen eintragen
diff --git a/templates/i18n/changelog/allocation-course-registration.en-eu.hamlet b/templates/i18n/changelog/allocation-course-registration.en-eu.hamlet
new file mode 100644
index 000000000..736472525
--- /dev/null
+++ b/templates/i18n/changelog/allocation-course-registration.en-eu.hamlet
@@ -0,0 +1,2 @@
+$newline never
+Registration of courses for central allocation
diff --git a/templates/i18n/changelog/allocations-notifications.de-de-formal.hamlet b/templates/i18n/changelog/allocations-notifications.de-de-formal.hamlet
new file mode 100644
index 000000000..9abca1630
--- /dev/null
+++ b/templates/i18n/changelog/allocations-notifications.de-de-formal.hamlet
@@ -0,0 +1,2 @@
+$newline never
+Benachrichtigungen für Zentralanmeldungen
diff --git a/templates/i18n/changelog/allocations-notifications.en-eu.hamlet b/templates/i18n/changelog/allocations-notifications.en-eu.hamlet
new file mode 100644
index 000000000..8c4e6d58b
--- /dev/null
+++ b/templates/i18n/changelog/allocations-notifications.en-eu.hamlet
@@ -0,0 +1,2 @@
+$newline never
+Notifications for central allocations
diff --git a/templates/i18n/changelog/asidenav.de-de-formal.hamlet b/templates/i18n/changelog/asidenav.de-de-formal.hamlet
new file mode 100644
index 000000000..ed69dfe36
--- /dev/null
+++ b/templates/i18n/changelog/asidenav.de-de-formal.hamlet
@@ -0,0 +1,2 @@
+$newline never
+Designänderungen
diff --git a/templates/i18n/changelog/asidenav.en-eu.hamlet b/templates/i18n/changelog/asidenav.en-eu.hamlet
new file mode 100644
index 000000000..f07e4024a
--- /dev/null
+++ b/templates/i18n/changelog/asidenav.en-eu.hamlet
@@ -0,0 +1,2 @@
+$newline never
+Design changes
diff --git a/templates/i18n/changelog/assigned-corrections-filters.de-de-formal.hamlet b/templates/i18n/changelog/assigned-corrections-filters.de-de-formal.hamlet
new file mode 100644
index 000000000..19140c401
--- /dev/null
+++ b/templates/i18n/changelog/assigned-corrections-filters.de-de-formal.hamlet
@@ -0,0 +1,2 @@
+$newline never
+Liste zugewiesener Abgaben lassen sich nun filtern
diff --git a/templates/i18n/changelog/assigned-corrections-filters.en-eu.hamlet b/templates/i18n/changelog/assigned-corrections-filters.en-eu.hamlet
new file mode 100644
index 000000000..dfa3a45e2
--- /dev/null
+++ b/templates/i18n/changelog/assigned-corrections-filters.en-eu.hamlet
@@ -0,0 +1,2 @@
+$newline never
+Filters for list of assigned corrections
diff --git a/templates/i18n/changelog/automatically-accept-course-applications.de-de-formal.hamlet b/templates/i18n/changelog/automatically-accept-course-applications.de-de-formal.hamlet
new file mode 100644
index 000000000..9a8d775ac
--- /dev/null
+++ b/templates/i18n/changelog/automatically-accept-course-applications.de-de-formal.hamlet
@@ -0,0 +1,2 @@
+$newline never
+Automatische Anmeldung von Bewerbern in Kursen, die nicht an einer Zentralanmeldung teilnehmen (nach Bewertung der Bewerbung)
diff --git a/templates/i18n/changelog/automatically-accept-course-applications.en-eu.hamlet b/templates/i18n/changelog/automatically-accept-course-applications.en-eu.hamlet
new file mode 100644
index 000000000..ce234699b
--- /dev/null
+++ b/templates/i18n/changelog/automatically-accept-course-applications.en-eu.hamlet
@@ -0,0 +1,2 @@
+$newline never
+Option to automatically accept applications for courses outside of central allocations
diff --git a/templates/i18n/changelog/better-course-communication-tutorials.de-de-formal.hamlet b/templates/i18n/changelog/better-course-communication-tutorials.de-de-formal.hamlet
new file mode 100644
index 000000000..fce341865
--- /dev/null
+++ b/templates/i18n/changelog/better-course-communication-tutorials.de-de-formal.hamlet
@@ -0,0 +1,2 @@
+$newline never
+Besseres Verschicken von Kursmitteilungen an Tutoriumsteilnehmer
diff --git a/templates/i18n/changelog/better-course-communication-tutorials.en-eu.hamlet b/templates/i18n/changelog/better-course-communication-tutorials.en-eu.hamlet
new file mode 100644
index 000000000..89a056989
--- /dev/null
+++ b/templates/i18n/changelog/better-course-communication-tutorials.en-eu.hamlet
@@ -0,0 +1,2 @@
+$newline never
+Better sending of course communications to tutorial participants
diff --git a/templates/i18n/changelog/better-course-participant-detail-page.de-de-formal.hamlet b/templates/i18n/changelog/better-course-participant-detail-page.de-de-formal.hamlet
new file mode 100644
index 000000000..40391a2ad
--- /dev/null
+++ b/templates/i18n/changelog/better-course-participant-detail-page.de-de-formal.hamlet
@@ -0,0 +1,2 @@
+$newline never
+Anzeige von Abgaben, Tutorien und Klausuren auf der Seite für einzelne Kursteilnehmer
diff --git a/templates/i18n/changelog/better-course-participant-detail-page.en-eu.hamlet b/templates/i18n/changelog/better-course-participant-detail-page.en-eu.hamlet
new file mode 100644
index 000000000..307cc232a
--- /dev/null
+++ b/templates/i18n/changelog/better-course-participant-detail-page.en-eu.hamlet
@@ -0,0 +1,2 @@
+$newline never
+Submissions, tutorials, and exams are now shown on the detail page for course participants
diff --git a/templates/i18n/changelog/better-csv-import.de-de-formal.hamlet b/templates/i18n/changelog/better-csv-import.de-de-formal.hamlet
new file mode 100644
index 000000000..857ac9be4
--- /dev/null
+++ b/templates/i18n/changelog/better-csv-import.de-de-formal.hamlet
@@ -0,0 +1,2 @@
+$newline never
+Verbesserter Workflow & Fehlerbehandlung für CSV-Import
diff --git a/templates/i18n/changelog/better-csv-import.en-eu.hamlet b/templates/i18n/changelog/better-csv-import.en-eu.hamlet
new file mode 100644
index 000000000..f585e50b3
--- /dev/null
+++ b/templates/i18n/changelog/better-csv-import.en-eu.hamlet
@@ -0,0 +1,2 @@
+$newline never
+Improved workflow and error-handling for CSV-import
diff --git a/templates/i18n/changelog/better-file-uploads.de-de-formal.hamlet b/templates/i18n/changelog/better-file-uploads.de-de-formal.hamlet
new file mode 100644
index 000000000..5cf99ec89
--- /dev/null
+++ b/templates/i18n/changelog/better-file-uploads.de-de-formal.hamlet
@@ -0,0 +1,2 @@
+$newline never
+Verbesserte Handhabung von Datei-Uploads
diff --git a/templates/i18n/changelog/better-file-uploads.en-eu.hamlet b/templates/i18n/changelog/better-file-uploads.en-eu.hamlet
new file mode 100644
index 000000000..ff090f630
--- /dev/null
+++ b/templates/i18n/changelog/better-file-uploads.en-eu.hamlet
@@ -0,0 +1,2 @@
+$newline never
+Improved handling of file uploads
diff --git a/templates/i18n/changelog/better-table-cell-colour-coding.de-de-formal.hamlet b/templates/i18n/changelog/better-table-cell-colour-coding.de-de-formal.hamlet
new file mode 100644
index 000000000..6a0cbff54
--- /dev/null
+++ b/templates/i18n/changelog/better-table-cell-colour-coding.de-de-formal.hamlet
@@ -0,0 +1,2 @@
+$newline never
+Verbesserte Farbkodierung von Tabellenzellen
diff --git a/templates/i18n/changelog/better-table-cell-colour-coding.en-eu.hamlet b/templates/i18n/changelog/better-table-cell-colour-coding.en-eu.hamlet
new file mode 100644
index 000000000..1f0012e18
--- /dev/null
+++ b/templates/i18n/changelog/better-table-cell-colour-coding.en-eu.hamlet
@@ -0,0 +1,2 @@
+$newline never
+Improved colour coding of table cells
diff --git a/templates/i18n/changelog/buttons-work-without-javascript.de-de-formal.hamlet b/templates/i18n/changelog/buttons-work-without-javascript.de-de-formal.hamlet
new file mode 100644
index 000000000..651a5c3e9
--- /dev/null
+++ b/templates/i18n/changelog/buttons-work-without-javascript.de-de-formal.hamlet
@@ -0,0 +1,2 @@
+$newline never
+Zahlreiche Knöpfe/Formulare funktionieren wieder bei eingeschaltetem Javascript
diff --git a/templates/i18n/changelog/buttons-work-without-javascript.en-eu.hamlet b/templates/i18n/changelog/buttons-work-without-javascript.en-eu.hamlet
new file mode 100644
index 000000000..5ac1ddb5a
--- /dev/null
+++ b/templates/i18n/changelog/buttons-work-without-javascript.en-eu.hamlet
@@ -0,0 +1,2 @@
+$newline never
+Multiple buttons/forms no work again when JavaScript is enabled
diff --git a/templates/i18n/changelog/configurable-datetime-format.de-de-formal.hamlet b/templates/i18n/changelog/configurable-datetime-format.de-de-formal.hamlet
new file mode 100644
index 000000000..d637ae8fd
--- /dev/null
+++ b/templates/i18n/changelog/configurable-datetime-format.de-de-formal.hamlet
@@ -0,0 +1,2 @@
+$newline never
+Wählbares Format für Datum
diff --git a/templates/i18n/changelog/configurable-datetime-format.en-eu.hamlet b/templates/i18n/changelog/configurable-datetime-format.en-eu.hamlet
new file mode 100644
index 000000000..a3d12724d
--- /dev/null
+++ b/templates/i18n/changelog/configurable-datetime-format.en-eu.hamlet
@@ -0,0 +1,2 @@
+$newline never
+Configurable date and time formats
diff --git a/templates/i18n/changelog/configurable-display-emails.de-de-formal.hamlet b/templates/i18n/changelog/configurable-display-emails.de-de-formal.hamlet
new file mode 100644
index 000000000..93e8812fa
--- /dev/null
+++ b/templates/i18n/changelog/configurable-display-emails.de-de-formal.hamlet
@@ -0,0 +1,2 @@
+$newline never
+Anpassbare angezeigte E-Mail Adressen
diff --git a/templates/i18n/changelog/configurable-display-emails.en-eu.hamlet b/templates/i18n/changelog/configurable-display-emails.en-eu.hamlet
new file mode 100644
index 000000000..75e9ea7de
--- /dev/null
+++ b/templates/i18n/changelog/configurable-display-emails.en-eu.hamlet
@@ -0,0 +1,2 @@
+$newline never
+Configulable display emails
diff --git a/templates/i18n/changelog/configurable-display-names.de-de-formal.hamlet b/templates/i18n/changelog/configurable-display-names.de-de-formal.hamlet
new file mode 100644
index 000000000..1c02bad41
--- /dev/null
+++ b/templates/i18n/changelog/configurable-display-names.de-de-formal.hamlet
@@ -0,0 +1,2 @@
+$newline never
+Anpassbare angezeigte Namen
diff --git a/templates/i18n/changelog/configurable-display-names.en-eu.hamlet b/templates/i18n/changelog/configurable-display-names.en-eu.hamlet
new file mode 100644
index 000000000..d0708619b
--- /dev/null
+++ b/templates/i18n/changelog/configurable-display-names.en-eu.hamlet
@@ -0,0 +1,2 @@
+$newline never
+Configurable display names
diff --git a/templates/i18n/changelog/corrections-display-improvements.de-de-formal.hamlet b/templates/i18n/changelog/corrections-display-improvements.de-de-formal.hamlet
new file mode 100644
index 000000000..3c7a1d5bd
--- /dev/null
+++ b/templates/i18n/changelog/corrections-display-improvements.de-de-formal.hamlet
@@ -0,0 +1,2 @@
+$newline never
+Viele Verbesserung zur Anzeige von Korrekturen
diff --git a/templates/i18n/changelog/corrections-display-improvements.en-eu.hamlet b/templates/i18n/changelog/corrections-display-improvements.en-eu.hamlet
new file mode 100644
index 000000000..bda6e1f73
--- /dev/null
+++ b/templates/i18n/changelog/corrections-display-improvements.en-eu.hamlet
@@ -0,0 +1,2 @@
+$newline never
+Numerous improvements for display of corrections
diff --git a/templates/i18n/changelog/correctors-on-course-show.de-de-formal.hamlet b/templates/i18n/changelog/correctors-on-course-show.de-de-formal.hamlet
new file mode 100644
index 000000000..85398c03d
--- /dev/null
+++ b/templates/i18n/changelog/correctors-on-course-show.de-de-formal.hamlet
@@ -0,0 +1,2 @@
+$newline never
+Anzeige von Korrektoren auf den Kursseiten
diff --git a/templates/i18n/changelog/correctors-on-course-show.en-eu.hamlet b/templates/i18n/changelog/correctors-on-course-show.en-eu.hamlet
new file mode 100644
index 000000000..c67066085
--- /dev/null
+++ b/templates/i18n/changelog/correctors-on-course-show.en-eu.hamlet
@@ -0,0 +1,2 @@
+$newline never
+Display of correctors on course overview pages
diff --git a/templates/i18n/changelog/course-administrator-invitations.de-de-formal.hamlet b/templates/i18n/changelog/course-administrator-invitations.de-de-formal.hamlet
new file mode 100644
index 000000000..bd9f67e09
--- /dev/null
+++ b/templates/i18n/changelog/course-administrator-invitations.de-de-formal.hamlet
@@ -0,0 +1,2 @@
+$newline never
+Eintragen von Korrektoren und Kursverwaltern auch ohne bestehenden Account
diff --git a/templates/i18n/changelog/course-administrator-invitations.en-eu.hamlet b/templates/i18n/changelog/course-administrator-invitations.en-eu.hamlet
new file mode 100644
index 000000000..0cc985bf3
--- /dev/null
+++ b/templates/i18n/changelog/course-administrator-invitations.en-eu.hamlet
@@ -0,0 +1,2 @@
+$newline never
+Configuration of course correctors and administrators without existing accounts
diff --git a/templates/i18n/changelog/course-administrator-roles.de-de-formal.hamlet b/templates/i18n/changelog/course-administrator-roles.de-de-formal.hamlet
new file mode 100644
index 000000000..b332852eb
--- /dev/null
+++ b/templates/i18n/changelog/course-administrator-roles.de-de-formal.hamlet
@@ -0,0 +1,2 @@
+$newline never
+Kurse Veranstalter können nun mehrere Dozenten und Assistenten selbst eintragen
diff --git a/templates/i18n/changelog/course-administrator-roles.en-eu.hamlet b/templates/i18n/changelog/course-administrator-roles.en-eu.hamlet
new file mode 100644
index 000000000..6d4f7b3e7
--- /dev/null
+++ b/templates/i18n/changelog/course-administrator-roles.en-eu.hamlet
@@ -0,0 +1,2 @@
+$newline never
+Course administrators can now configure course administrators and assistants themselves
diff --git a/templates/i18n/changelog/course-associated-study-field.de-de-formal.hamlet b/templates/i18n/changelog/course-associated-study-field.de-de-formal.hamlet
new file mode 100644
index 000000000..260f5bb59
--- /dev/null
+++ b/templates/i18n/changelog/course-associated-study-field.de-de-formal.hamlet
@@ -0,0 +1,2 @@
+$newline never
+Kursanmeldung benötigen assoziertes Hauptfach (für Studierende mit mehreren Hauptfächern)
diff --git a/templates/i18n/changelog/course-associated-study-field.en-eu.hamlet b/templates/i18n/changelog/course-associated-study-field.en-eu.hamlet
new file mode 100644
index 000000000..75a164dfc
--- /dev/null
+++ b/templates/i18n/changelog/course-associated-study-field.en-eu.hamlet
@@ -0,0 +1,2 @@
+$newline never
+Course enrollment requires association of a field of study (for students with multiple fields)
diff --git a/templates/i18n/changelog/course-convenience-links.de-de-formal.hamlet b/templates/i18n/changelog/course-convenience-links.de-de-formal.hamlet
new file mode 100644
index 000000000..891f0186a
--- /dev/null
+++ b/templates/i18n/changelog/course-convenience-links.de-de-formal.hamlet
@@ -0,0 +1,2 @@
+$newline never
+Links für Bequemlichkeiten hinzugefügt (z.B. aktuelles Übungsblatt)
diff --git a/templates/i18n/changelog/course-convenience-links.en-eu.hamlet b/templates/i18n/changelog/course-convenience-links.en-eu.hamlet
new file mode 100644
index 000000000..f39a3e6b8
--- /dev/null
+++ b/templates/i18n/changelog/course-convenience-links.en-eu.hamlet
@@ -0,0 +1,2 @@
+$newline never
+Convenience links (i.e. current exercise sheet)
diff --git a/templates/i18n/changelog/course-list-over-all-terms.de-de-formal.hamlet b/templates/i18n/changelog/course-list-over-all-terms.de-de-formal.hamlet
new file mode 100644
index 000000000..631497915
--- /dev/null
+++ b/templates/i18n/changelog/course-list-over-all-terms.de-de-formal.hamlet
@@ -0,0 +1,2 @@
+$newline never
+Kursliste über alle Semester hinweg (Top-Level-Navigation "Kurse"), wird in Zukunft Filter/Suchfunktion erhalten
diff --git a/templates/i18n/changelog/course-list-over-all-terms.en-eu.hamlet b/templates/i18n/changelog/course-list-over-all-terms.en-eu.hamlet
new file mode 100644
index 000000000..91e876e31
--- /dev/null
+++ b/templates/i18n/changelog/course-list-over-all-terms.en-eu.hamlet
@@ -0,0 +1,2 @@
+$newline never
+Overall course list for all semesters (see "Courses"), will have filters and search functions in the future
diff --git a/templates/i18n/changelog/course-materials.de-de-formal.hamlet b/templates/i18n/changelog/course-materials.de-de-formal.hamlet
new file mode 100644
index 000000000..c16c704d7
--- /dev/null
+++ b/templates/i18n/changelog/course-materials.de-de-formal.hamlet
@@ -0,0 +1,2 @@
+$newline never
+Kursmaterial
diff --git a/templates/i18n/changelog/course-materials.en-eu.hamlet b/templates/i18n/changelog/course-materials.en-eu.hamlet
new file mode 100644
index 000000000..5d59fa499
--- /dev/null
+++ b/templates/i18n/changelog/course-materials.en-eu.hamlet
@@ -0,0 +1,2 @@
+$newline never
+Course material
diff --git a/templates/i18n/changelog/course-messages.de-de-formal.hamlet b/templates/i18n/changelog/course-messages.de-de-formal.hamlet
new file mode 100644
index 000000000..1b4eab818
--- /dev/null
+++ b/templates/i18n/changelog/course-messages.de-de-formal.hamlet
@@ -0,0 +1,2 @@
+$newline never
+Versand von Benachrichtigungen an Kursteilnehmer
diff --git a/templates/i18n/changelog/course-messages.en-eu.hamlet b/templates/i18n/changelog/course-messages.en-eu.hamlet
new file mode 100644
index 000000000..689483fba
--- /dev/null
+++ b/templates/i18n/changelog/course-messages.en-eu.hamlet
@@ -0,0 +1,2 @@
+$newline never
+Sending of course messages to participants
diff --git a/templates/i18n/changelog/course-news.de-de-formal.hamlet b/templates/i18n/changelog/course-news.de-de-formal.hamlet
new file mode 100644
index 000000000..3fbfc3a83
--- /dev/null
+++ b/templates/i18n/changelog/course-news.de-de-formal.hamlet
@@ -0,0 +1,2 @@
+$newline never
+"Aktuelles" für Kurse
diff --git a/templates/i18n/changelog/course-news.en-eu.hamlet b/templates/i18n/changelog/course-news.en-eu.hamlet
new file mode 100644
index 000000000..c6c43a3ab
--- /dev/null
+++ b/templates/i18n/changelog/course-news.en-eu.hamlet
@@ -0,0 +1,2 @@
+$newline never
+Course news
diff --git a/templates/i18n/changelog/course-occurences.de-de-formal.hamlet b/templates/i18n/changelog/course-occurences.de-de-formal.hamlet
new file mode 100644
index 000000000..8688159dd
--- /dev/null
+++ b/templates/i18n/changelog/course-occurences.de-de-formal.hamlet
@@ -0,0 +1,2 @@
+$newline never
+Kurstermine
diff --git a/templates/i18n/changelog/course-occurences.en-eu.hamlet b/templates/i18n/changelog/course-occurences.en-eu.hamlet
new file mode 100644
index 000000000..a7d77daed
--- /dev/null
+++ b/templates/i18n/changelog/course-occurences.en-eu.hamlet
@@ -0,0 +1,2 @@
+$newline never
+Course occurrences
diff --git a/templates/i18n/changelog/course-occurrence-notes.de-de-formal.hamlet b/templates/i18n/changelog/course-occurrence-notes.de-de-formal.hamlet
new file mode 100644
index 000000000..0a8df117a
--- /dev/null
+++ b/templates/i18n/changelog/course-occurrence-notes.de-de-formal.hamlet
@@ -0,0 +1,2 @@
+$newline never
+Spalte für Notizen bei Kursterminen
diff --git a/templates/i18n/changelog/course-occurrence-notes.en-eu.hamlet b/templates/i18n/changelog/course-occurrence-notes.en-eu.hamlet
new file mode 100644
index 000000000..1051c42bf
--- /dev/null
+++ b/templates/i18n/changelog/course-occurrence-notes.en-eu.hamlet
@@ -0,0 +1,2 @@
+$newline never
+Column for adding notes to course events
diff --git a/templates/i18n/changelog/course-participants-list-add-sheets.de-de-formal.hamlet b/templates/i18n/changelog/course-participants-list-add-sheets.de-de-formal.hamlet
new file mode 100644
index 000000000..a52c5c6f4
--- /dev/null
+++ b/templates/i18n/changelog/course-participants-list-add-sheets.de-de-formal.hamlet
@@ -0,0 +1,2 @@
+$newline never
+Auswertung des Übungsbetriebs unter „Kursteilnehmer“
diff --git a/templates/i18n/changelog/course-participants-list-add-sheets.en-eu.hamlet b/templates/i18n/changelog/course-participants-list-add-sheets.en-eu.hamlet
new file mode 100644
index 000000000..e19954cb1
--- /dev/null
+++ b/templates/i18n/changelog/course-participants-list-add-sheets.en-eu.hamlet
@@ -0,0 +1,2 @@
+$newline never
+Inclusion of exercise sheets under “Course participants”
diff --git a/templates/i18n/changelog/course-participants-sex.de-de-formal.hamlet b/templates/i18n/changelog/course-participants-sex.de-de-formal.hamlet
new file mode 100644
index 000000000..4e459b27c
--- /dev/null
+++ b/templates/i18n/changelog/course-participants-sex.de-de-formal.hamlet
@@ -0,0 +1,2 @@
+$newline never
+Optionale Anzeige des Geschlechts in Teilnehmerlisten u.Ä.
diff --git a/templates/i18n/changelog/course-participants-sex.en-eu.hamlet b/templates/i18n/changelog/course-participants-sex.en-eu.hamlet
new file mode 100644
index 000000000..198c7c8a9
--- /dev/null
+++ b/templates/i18n/changelog/course-participants-sex.en-eu.hamlet
@@ -0,0 +1,2 @@
+$newline never
+Optionally display sex in (among others) lists of course participants
diff --git a/templates/i18n/changelog/course-register-by-admin.de-de-formal.hamlet b/templates/i18n/changelog/course-register-by-admin.de-de-formal.hamlet
new file mode 100644
index 000000000..edb6ec891
--- /dev/null
+++ b/templates/i18n/changelog/course-register-by-admin.de-de-formal.hamlet
@@ -0,0 +1,2 @@
+$newline never
+Kursverwalter können Teilnehmer hinzufügen
diff --git a/templates/i18n/changelog/course-register-by-admin.en-eu.hamlet b/templates/i18n/changelog/course-register-by-admin.en-eu.hamlet
new file mode 100644
index 000000000..48c54a7a6
--- /dev/null
+++ b/templates/i18n/changelog/course-register-by-admin.en-eu.hamlet
@@ -0,0 +1,2 @@
+$newline never
+Course administrators may enroll participants
diff --git a/templates/i18n/changelog/course-shorthands-within-schools.de-de-formal.hamlet b/templates/i18n/changelog/course-shorthands-within-schools.de-de-formal.hamlet
new file mode 100644
index 000000000..48a6d8d4c
--- /dev/null
+++ b/templates/i18n/changelog/course-shorthands-within-schools.de-de-formal.hamlet
@@ -0,0 +1,2 @@
+$newline never
+Kurskürzel müssen nur innerhalb eines Instituts eindeutig sein
diff --git a/templates/i18n/changelog/course-shorthands-within-schools.en-eu.hamlet b/templates/i18n/changelog/course-shorthands-within-schools.en-eu.hamlet
new file mode 100644
index 000000000..ee559c2e8
--- /dev/null
+++ b/templates/i18n/changelog/course-shorthands-within-schools.en-eu.hamlet
@@ -0,0 +1,2 @@
+$newline never
+Course shorthands now only need to be unique within a department
diff --git a/templates/i18n/changelog/course-visibility.de-de-formal.hamlet b/templates/i18n/changelog/course-visibility.de-de-formal.hamlet
new file mode 100644
index 000000000..8592b6a43
--- /dev/null
+++ b/templates/i18n/changelog/course-visibility.de-de-formal.hamlet
@@ -0,0 +1,2 @@
+$newline never
+Kurse haben nun einen Sichtbarkeitszeitraum.
diff --git a/templates/i18n/changelog/course-visibility.en-eu.hamlet b/templates/i18n/changelog/course-visibility.en-eu.hamlet
new file mode 100644
index 000000000..d95f8e9d6
--- /dev/null
+++ b/templates/i18n/changelog/course-visibility.en-eu.hamlet
@@ -0,0 +1,2 @@
+$newline never
+Courses now have a visibility period.
diff --git a/templates/i18n/changelog/csv-course-applications.de-de-formal.hamlet b/templates/i18n/changelog/csv-course-applications.de-de-formal.hamlet
new file mode 100644
index 000000000..04b0b816a
--- /dev/null
+++ b/templates/i18n/changelog/csv-course-applications.de-de-formal.hamlet
@@ -0,0 +1,2 @@
+$newline never
+Bewertung von Kurs-Bewerbungen via CSV
diff --git a/templates/i18n/changelog/csv-course-applications.en-eu.hamlet b/templates/i18n/changelog/csv-course-applications.en-eu.hamlet
new file mode 100644
index 000000000..cd75ffb4f
--- /dev/null
+++ b/templates/i18n/changelog/csv-course-applications.en-eu.hamlet
@@ -0,0 +1,2 @@
+$newline never
+Grading of course applications via CSV
diff --git a/templates/i18n/changelog/csv-exam-participants.de-de-formal.hamlet b/templates/i18n/changelog/csv-exam-participants.de-de-formal.hamlet
new file mode 100644
index 000000000..6b9bb4062
--- /dev/null
+++ b/templates/i18n/changelog/csv-exam-participants.de-de-formal.hamlet
@@ -0,0 +1,2 @@
+$newline never
+Import & Export von CSV-Dateien für Klausurteilnehmer
diff --git a/templates/i18n/changelog/csv-exam-participants.en-eu.hamlet b/templates/i18n/changelog/csv-exam-participants.en-eu.hamlet
new file mode 100644
index 000000000..98f03ca6c
--- /dev/null
+++ b/templates/i18n/changelog/csv-exam-participants.en-eu.hamlet
@@ -0,0 +1,2 @@
+$newline never
+CSV import & export of exam participants
diff --git a/templates/i18n/changelog/csv-export-course-participants-features.de-de-formal.hamlet b/templates/i18n/changelog/csv-export-course-participants-features.de-de-formal.hamlet
new file mode 100644
index 000000000..6cc7fdcb7
--- /dev/null
+++ b/templates/i18n/changelog/csv-export-course-participants-features.de-de-formal.hamlet
@@ -0,0 +1,2 @@
+$newline never
+CSV-Export für Liste von Kursteilnehmern exportiert nun optional alle Studiengangsdaten der Teilnehmer
diff --git a/templates/i18n/changelog/csv-export-course-participants-features.en-eu.hamlet b/templates/i18n/changelog/csv-export-course-participants-features.en-eu.hamlet
new file mode 100644
index 000000000..8e5edec78
--- /dev/null
+++ b/templates/i18n/changelog/csv-export-course-participants-features.en-eu.hamlet
@@ -0,0 +1,2 @@
+$newline never
+CSV export of course participants now optionally includes all features of study
diff --git a/templates/i18n/changelog/csv-export-course-participants-registered-tutorials.de-de-formal.hamlet b/templates/i18n/changelog/csv-export-course-participants-registered-tutorials.de-de-formal.hamlet
new file mode 100644
index 000000000..8aeb6e503
--- /dev/null
+++ b/templates/i18n/changelog/csv-export-course-participants-registered-tutorials.de-de-formal.hamlet
@@ -0,0 +1,2 @@
+$newline never
+CSV-Export für Liste von Kursteilnehmern exportiert nun auch die angemeldeten Tutorien
diff --git a/templates/i18n/changelog/csv-export-course-participants-registered-tutorials.en-eu.hamlet b/templates/i18n/changelog/csv-export-course-participants-registered-tutorials.en-eu.hamlet
new file mode 100644
index 000000000..64ae6f239
--- /dev/null
+++ b/templates/i18n/changelog/csv-export-course-participants-registered-tutorials.en-eu.hamlet
@@ -0,0 +1,2 @@
+$newline never
+CSV export of course participants now includes registered tutorials
diff --git a/templates/i18n/changelog/csv-export-course-participants.de-de-formal.hamlet b/templates/i18n/changelog/csv-export-course-participants.de-de-formal.hamlet
new file mode 100644
index 000000000..9885bcace
--- /dev/null
+++ b/templates/i18n/changelog/csv-export-course-participants.de-de-formal.hamlet
@@ -0,0 +1,2 @@
+$newline never
+CSV-Export für Liste von Kursteilnehmern
diff --git a/templates/i18n/changelog/csv-export-course-participants.en-eu.hamlet b/templates/i18n/changelog/csv-export-course-participants.en-eu.hamlet
new file mode 100644
index 000000000..38de032e9
--- /dev/null
+++ b/templates/i18n/changelog/csv-export-course-participants.en-eu.hamlet
@@ -0,0 +1,2 @@
+$newline never
+CSV export of course participants
diff --git a/templates/i18n/changelog/csv-option-character-set.de-de-formal.hamlet b/templates/i18n/changelog/csv-option-character-set.de-de-formal.hamlet
new file mode 100644
index 000000000..6b57d4aa5
--- /dev/null
+++ b/templates/i18n/changelog/csv-option-character-set.de-de-formal.hamlet
@@ -0,0 +1,2 @@
+$newline never
+CSV-Export-Option um den beim import und export verwendeten Zeichensatz einzustellen
diff --git a/templates/i18n/changelog/csv-option-character-set.en-eu.hamlet b/templates/i18n/changelog/csv-option-character-set.en-eu.hamlet
new file mode 100644
index 000000000..6ef50ec74
--- /dev/null
+++ b/templates/i18n/changelog/csv-option-character-set.en-eu.hamlet
@@ -0,0 +1,2 @@
+$newline never
+Introduced CSV export option to set the character encoding used
diff --git a/templates/i18n/changelog/csv-option-timestamp.de-de-formal.hamlet b/templates/i18n/changelog/csv-option-timestamp.de-de-formal.hamlet
new file mode 100644
index 000000000..876527d8d
--- /dev/null
+++ b/templates/i18n/changelog/csv-option-timestamp.de-de-formal.hamlet
@@ -0,0 +1,2 @@
+$newline never
+Option um an die Namen aller heruntergeladenen CSV-Dateien einen Zeitstempel vorne anzuhängen
diff --git a/templates/i18n/changelog/csv-option-timestamp.en-eu.hamlet b/templates/i18n/changelog/csv-option-timestamp.en-eu.hamlet
new file mode 100644
index 000000000..0174c9d81
--- /dev/null
+++ b/templates/i18n/changelog/csv-option-timestamp.en-eu.hamlet
@@ -0,0 +1,2 @@
+$newline never
+Introduced option to timestamp all exported CSV files
diff --git a/templates/i18n/changelog/de-de-formal.hamlet b/templates/i18n/changelog/de-de-formal.hamlet
deleted file mode 100644
index 76f81b8af..000000000
--- a/templates/i18n/changelog/de-de-formal.hamlet
+++ /dev/null
@@ -1,463 +0,0 @@
-$newline never
-
- -
- ^{formatGregorianW 2020 09 16}
-
-
-
- -
- Es kann nun die Ausgestaltung von Prüfungen angegeben werden.
-
-
-
- ^{formatGregorianW 2020 08 28}
-
-
-
- -
- Kursassoziierte Studienfächer wurden abgeschafft.
-
- Es werden nun an allen kursbezogenen Stellen jene Studiendaten angezeigt, die während des entsprechenden Semesters aktuell waren.
-
- -
- ^{formatGregorianW 2020 08 10}
-
-
-
- -
- Kursverwalter können pro Teilnehmer personalisierte Übungsblatt-Dateien hinterlegen.
-
-
- Kurse haben nun einen Sichtbarkeitszeitraum.
-
-
-
- ^{formatGregorianW 2020 07 20}
-
-
-
- -
- Abgabe und Download von einzelnen Übungsblättern kann auf Prüfungsteilnehmer beschränkt werden.
-
-
-
- ^{formatGregorianW 2020 06 17}
-
-
-
- -
- Neues (YAML-basiertes) Format für Bewertungsdateien
-
-
-
- ^{formatGregorianW 2020 06 14}
-
-
-
- -
- Auswertung des Übungsbetriebs unter „Kursteilnehmer“
-
-
-
- ^{formatGregorianW 2020 05 25}
-
-
-
- -
- Zusätzliche Benachrichtigungen für Übungsblätter
-
-
- Besseres Verschicken von Kursmitteilungen an Tutoriumsteilnehmer
-
-
-
- ^{formatGregorianW 2020 05 23}
-
-
-
- -
- Bewertungsmodus für Übungsblätter „Automatisch bestanden, wenn korrigiert“
-
-
-
- ^{formatGregorianW 2020 05 05}
-
-
-
- -
- Verbesserte Handhabung von Datei-Uploads
-
-
- Verwaltung von ehemaligen Kursteilnehmern
-
-
-
- ^{formatGregorianW 2020 04 28}
-
-
-
- -
- Registrierte/Feste Abgabegruppen
-
-
-
- ^{formatGregorianW 2020 04 24}
-
-
-
- -
- Häufig gestellte Fragen
-
-
-
- ^{formatGregorianW 2020 04 17}
-
-
-
- -
- Anzeige von Abgaben, Tutorien und Klausuren auf der Seite für einzelne Kursteilnehmer
-
-
- Nicht-anonymisierte Korrektur von Übungsblatt-Abgaben
-
-
-
- ^{formatGregorianW 2020 04 15}
-
-
-
- -
- Verstecken von Systemnachrichten auf "Aktuelles"
-
-
-
- ^{formatGregorianW 2020 03 31}
-
-
-
- -
- Spalte für Notizen bei Kursterminen
-
-
-
- ^{formatGregorianW 2020 03 16}
-
-
-
- -
- Verbesserte Farbkodierung von Tabellenzellen
-
-
- Webinterface zur Berechnung und Durchführung von Zentralvergaben
-
-
- Umstieg auf Serverseitige Sessions
-
-
- Zusätzliche Uhrzeit- und Datumsformate
-
-
-
- ^{formatGregorianW 2020 03 06}
-
-
-
- -
- Verbesserter Workflow & Fehlerbehandlung für CSV-Import
-
-
-
- ^{formatGregorianW 2020 02 23}
-
-
-
- -
- Alle HTML-Eingabefelder akzeptieren nun stattdessen Markdown
-
-
- Alle ausgehenden HTML E-Mails haben nun auch einen #
- Markdown-Teil
-
-
-
- ^{formatGregorianW 2020 02 19}
-
-
-
- -
- Prüfungen können nun angeben in welchem Format Leistungen #
- eingetragen werden dürfen (Bestanden/Nicht Bestanden, #
- Numerische Noten oder Gemischt)
-
-
-
- ^{formatGregorianW 2020 02 08}
-
-
-
- -
- Oberfläche zum schnellen Eintragen von Prüfungsergebnissen
-
-
-
- ^{formatGregorianW 2020 02 07}
-
-
-
- -
- Überarbeitete Navigation
-
-
-
- ^{formatGregorianW 2020 01 30}
-
-
-
- -
- Verbesserung bei der Darstellung von Zuteilungsregeln nach der #
- automatischen Verteilung von Klausurteilnehmern
-
-
- Warnungen beim anlegen von Kursen, die auf mehrere zur Auswahl #
- stehende Semester/Institute hinweisen
-
-
-
- ^{formatGregorianW 2020 01 29}
-
-
-
- -
- Automatische Verteilung von Klausurteilnehmern auf #
- Termine/Räume
-
-
-
- ^{formatGregorianW 2020 01 17}
-
-
-
- -
- Eintragung von Ergebnissen für extern (nicht in Uni2work #
- verwaltete) Klausuren zur Übermittlung an Prüfungsbeauftragte
-
-
- Export von Listen von Kursteilnehmern zur Durchführung von #
- Kursumfragen
-
-
-
- ^{formatGregorianW 2019 12 05}
-
-
-
- - Benachrichtigungen bei Änderungen an Übungsblatt-Abgaben
-
-
-
- ^{formatGregorianW 2019 11 28}
-
-
-
- - Unterstützung für LMU-lokale Studiengänge
-
-
-
- ^{formatGregorianW 2019 10 31}
-
-
-
- - Unterstützung für Internationalisierung
-
- Englische Übersetzung
-
-
-
- ^{formatGregorianW 2019 10 23}
-
-
-
- - Option um an die Namen aller heruntergeladenen CSV-Dateien einen Zeitstempel vorne anzuhängen
-
- CSV-Export-Option um den beim import und export verwendeten Zeichensatz einzustellen
-
-
-
- ^{formatGregorianW 2019 10 14}
-
-
-
- - Kontrolle über Einstellungen eines Tutoriums kann an Tutoren deligiert werden
-
- Optionale Anzeige des Geschlechts in Teilnehmerlisten u.Ä.
-
-
-
- ^{formatGregorianW 2019 10 10}
-
-
-
- - CSV-Export für Liste von Kursteilnehmern exportiert nun auch die angemeldeten Tutorien
-
- Teilnehmer können von der Teilnehmerliste aus in Tutorien angemeldet werden
-
-
-
- ^{formatGregorianW 2019 10 09}
-
-
-
- - Kurstermine
-
- CSV-Export für Liste von Kursteilnehmern exportiert nun optional alle Studiengangsdaten der Teilnehmer
-
-
-
- ^{formatGregorianW 2019 10 08}
-
-
-
- - Benachrichtigung bei nicht-eigenständiger Anmeldung zu einem Kurs
-
- CSV-Export für Liste von Kursteilnehmern
-
-
-
- ^{formatGregorianW 2019 10 01}
-
-
-
- - "Aktuelles" für Kurse
-
-
-
- ^{formatGregorianW 2019 09 27}
-
-
-
- - Automatische Anmeldung von Bewerbern in Kursen, die nicht an einer Zentralanmeldung teilnehmen (nach Bewertung der Bewerbung)
-
-
-
- ^{formatGregorianW 2019 09 25}
-
-
-
- - Automatische Berechnung von Prufüngsboni
-
- Automatische Berechnung von Prüfungsleistungen
-
- Bugfix: Uhrzeiten werden beim Laden eines Formulars nichtmehr zurückgesetzt
-
- Bugfix: Studierende tauchen in der Prüfungsleistungen-Tabelle nicht mehr mehrfach auf
-
-
-
- ^{formatGregorianW 2019 09 16}
-
-
-
- - Prüfungsverwaltung im System inkl. direkte Einsicht in relevante Prüfungsleistungen
-
- E-Mail-Benachrichtigungen an zuständige Prüfungsverwalter bei Abschluss einer Klausur
-
- Abschluss von Klausuren (d.h. Melden der Prüfungsleistungen an die Prüfungsverwalter) jetzt als Button, statt als voreingestellter Zeitpunkt
-
-
-
- ^{formatGregorianW 2019 09 13}
-
-
-
- - Benachrichtigungen bzgl. Klausur An- und Abmeldung
-
-
-
- ^{formatGregorianW 2019 09 12}
-
-
-
- - Abschätzung der durch Zentralanmeldung benötigten Kurskapazität
-
- Anpassbare angezeigte Namen
-
- Anpassbare angezeigte E-Mail Adressen
-
-
-
- ^{formatGregorianW 2019 09 05}
-
-
-
- - Benachrichtigungen für Zentralanmeldungen
-
-
-
- ^{formatGregorianW 2019 08 27}
-
-
-
- - Bewertung von Kurs-Bewerbungen via CSV
-
-
-
- ^{formatGregorianW 2019 08 19}
-
-
-
- - Bewerbungen für Zentralanmeldungen
-
-
-
- ^{formatGregorianW 2019 08 12}
-
-
-
- - Kurse zu Zentralanmeldungen eintragen
-
-
-
- ^{formatGregorianW 2019 07 23}
-
-
-
- - Import & Export von CSV-Dateien für Klausurteilnehmer
-
-
-
- ^{formatGregorianW 2019 06 26}
-
-
-
- - Rudimentäre Unterstützung für Klausurbetrieb
-
-
-
- ^{formatGregorianW 2019 06 07}
-
-
-
- - Abgaben können bestimmte Dateinamen und Endungen erzwingen
-
- Übungsblätter bieten nun Zip-Archive für alle veröffentlichte Dateien, bzw. Dateigruppen an
-
-
-
- ^{formatGregorianW 2019 05 20}
-
-
-
- - Komplett überarbeitete Funktionalität zur automatischen Verteilung von Korrekturen
-
-
-
- ^{formatGregorianW 2019 05 13}
-
-
-
- - Kursverwalter können Teilnehmer hinzufügen
-
-
-
- ^{formatGregorianW 2019 05 10}
-
-
-
- - Besseres Interface zum Einstellen von Abgebenden
-
- Download von allen Dateien pro Kursmaterial/Übungsblatt
-
-
-
- ^{formatGregorianW 2019 05 04}
-
-
-
- - Kursmaterial
-
-
-
- ^{formatGregorianW 2019 04 29}
-
-
-
- - Tutorien
-
- Anzeige von Korrektoren auf den Kursseiten
-
-
-
- ^{formatGregorianW 2019 04 20}
-
-
-
- - Versand von Benachrichtigungen an Kursteilnehmer
-
- Eintragen von Korrektoren und Kursverwaltern auch ohne bestehenden Account
-
-
-
- ^{formatGregorianW 2019 03 27}
-
-
-
- - Kurse Veranstalter können nun mehrere Dozenten und Assistenten selbst eintragen
-
- Erfassung Studiengangsdaten
-
-
-
- ^{formatGregorianW 2019 03 20}
-
-
-
- - Kursanmeldung benötigen assoziertes Hauptfach (für Studierende mit mehreren Hauptfächern)
-
-
-
- ^{formatGregorianW 2019 01 30}
-
-
-
- - Designänderungen
-
-
-
- ^{formatGregorianW 2019 01 16}
-
-
-
- - Links für Bequemlichkeiten hinzugefügt (z.B. aktuelles Übungsblatt)
-
- Liste zugewiesener Abgaben lassen sich nun filtern
-
- Bugfix: Wenn zwischen Anzeige und Empfang eines Tabellen-Formulars Zeilen verschwinden wird nun eine sinnvolle Fehlermeldung angezeigt
-
-
-
- ^{formatGregorianW 2018 11 30}
-
-
-
- - Bugfix: Übungsblätter im "bestehen nach Punkten"-Modus werden wieder korrekt gespeichert
-
-
-
- ^{formatGregorianW 2018 11 29}
-
-
-
- - Bugfix: Formulare innerhalb von Tabellen funktionieren nun auch nach Javascript-Seitenwechsel oder Ändern der Sortierung
-
-
-
- ^{formatGregorianW 2018 11 09}
-
-
-
- - Bugfix: Zahlreiche Knöpfe/Formulare funktionieren wieder bei eingeschaltetem Javascript
-
- Verschiedene Verbesserungen für Korrektoren
-
-
-
- ^{formatGregorianW 2018 10 19}
-
-
-
- - Benutzer können sich in der Testphase komplett selbst löschen
-
- Hilfe Widget
-
- Benachrichtigungen per eMail für einige Ereignisse
-
-
-
- ^{formatGregorianW 2018 09 18}
-
-
-
- - Tooltips funktionieren auch ohne JavaScript
-
- Kurskürzel müssen nur innerhalb eines Instituts eindeutig sein
-
- User Data zeigt nun alle momentan gespeicherten Datensätze an
-
- Unterstützung von Tabellenzusammenfassungen, z.B. Punktsummen
-
- Intelligente Verteilung von Abgaben auf Korrektoren (z.B. bei Krankheit)
-
- Übungsblätter können Abgabe von Dateien verbieten und angeben ob ZIP-Archive entpackt werden sollen
-
-
-
- ^{formatGregorianW 2018 08 06}
-
-
-
- - Einführung einer Option, ob Dateien automatisch heruntergeladen werden sollen
-
-
-
- ^{formatGregorianW 2018 08 01}
-
-
-
- - Verbesserter Campus-Login
- (Ersatz einer C-Bibliothek mit undokumentierter Abhängigkeit durch selbst entwickelten Haskell-Code erlaubt nun auch Umlaute)
-
- -
- ^{formatGregorianW 2018 07 31}
-
-
-
- - Viele Verbesserung zur Anzeige von Korrekturen
-
- Kursliste über alle Semester hinweg (Top-Level-Navigation "Kurse"), wird in Zukunft Filter/Suchfunktion erhalten
-
-
-
- ^{formatGregorianW 2018 07 10}
-
-
-
- - Bugfixes
-
- Wählbares Format für Datum
diff --git a/templates/i18n/changelog/download-all-sheet-files-by-type.de-de-formal.hamlet b/templates/i18n/changelog/download-all-sheet-files-by-type.de-de-formal.hamlet
new file mode 100644
index 000000000..ec5dd6cb2
--- /dev/null
+++ b/templates/i18n/changelog/download-all-sheet-files-by-type.de-de-formal.hamlet
@@ -0,0 +1,2 @@
+$newline never
+Übungsblätter bieten nun Zip-Archive für alle veröffentlichte Dateien, bzw. Dateigruppen an
diff --git a/templates/i18n/changelog/download-all-sheet-files-by-type.en-eu.hamlet b/templates/i18n/changelog/download-all-sheet-files-by-type.en-eu.hamlet
new file mode 100644
index 000000000..7daf597e5
--- /dev/null
+++ b/templates/i18n/changelog/download-all-sheet-files-by-type.en-eu.hamlet
@@ -0,0 +1,2 @@
+$newline never
+Download of all files for exercise sheets (by classification) as ZIP archives
diff --git a/templates/i18n/changelog/download-all-sheet-files.de-de-formal.hamlet b/templates/i18n/changelog/download-all-sheet-files.de-de-formal.hamlet
new file mode 100644
index 000000000..f9b635b41
--- /dev/null
+++ b/templates/i18n/changelog/download-all-sheet-files.de-de-formal.hamlet
@@ -0,0 +1,2 @@
+$newline never
+Download von allen Dateien pro Kursmaterial/Übungsblatt
diff --git a/templates/i18n/changelog/download-all-sheet-files.en-eu.hamlet b/templates/i18n/changelog/download-all-sheet-files.en-eu.hamlet
new file mode 100644
index 000000000..636a6a933
--- /dev/null
+++ b/templates/i18n/changelog/download-all-sheet-files.en-eu.hamlet
@@ -0,0 +1,2 @@
+$newline never
+Download of all files for course material/exercise sheets
diff --git a/templates/i18n/changelog/email-notifications.de-de-formal.hamlet b/templates/i18n/changelog/email-notifications.de-de-formal.hamlet
new file mode 100644
index 000000000..777ca2eaa
--- /dev/null
+++ b/templates/i18n/changelog/email-notifications.de-de-formal.hamlet
@@ -0,0 +1,2 @@
+$newline never
+Benachrichtigungen per eMail für einige Ereignisse
diff --git a/templates/i18n/changelog/email-notifications.en-eu.hamlet b/templates/i18n/changelog/email-notifications.en-eu.hamlet
new file mode 100644
index 000000000..46c66d505
--- /dev/null
+++ b/templates/i18n/changelog/email-notifications.en-eu.hamlet
@@ -0,0 +1,2 @@
+$newline never
+Email notifications for some events
diff --git a/templates/i18n/changelog/en-eu.hamlet b/templates/i18n/changelog/en-eu.hamlet
deleted file mode 100644
index 5c9da9a2c..000000000
--- a/templates/i18n/changelog/en-eu.hamlet
+++ /dev/null
@@ -1,460 +0,0 @@
-$newline never
-
- -
- ^{formatGregorianW 2020 09 16}
-
-
-
- -
- Exam design can now be specified.
-
-
-
- ^{formatGregorianW 2020 08 28}
-
-
-
- -
- Abolished course-associated features of study.
-
- In course-related contexts now all study features which were up to date during the relevant term are displayed.
-
- -
- ^{formatGregorianW 2020 08 10}
-
-
-
- -
- Course administrators can now assign personalised exercise sheet files to course participants.
-
-
- Courses now have a visibility period.
-
-
-
- ^{formatGregorianW 2020 07 20}
-
-
-
- -
- Submission for and download of exercise sheets may be restricted to participants who are registered for an exam.
-
-
-
- ^{formatGregorianW 2020 06 17}
-
-
-
- -
- New (YAML-based) format for correction files
-
-
-
- ^{formatGregorianW 2020 06 14}
-
-
-
- -
- Inclusion of exercise sheets under “Course participants”
-
-
-
- ^{formatGregorianW 2020 05 25}
-
-
-
- -
- Additional notifications for exercise sheets
-
-
- Better sending of course communications to tutorial participants
-
-
-
- ^{formatGregorianW 2020 05 23}
-
-
-
- -
- Grading mode for exercise sheets “Automatically passed when corrected”
-
-
-
- ^{formatGregorianW 2020 05 05}
-
-
-
- -
- Improved handling of file uploads
-
-
- Management of former course participants
-
-
-
- ^{formatGregorianW 2020 04 28}
-
-
-
- -
- Registered submission groups
-
-
-
- ^{formatGregorianW 2020 04 24}
-
-
-
- -
- Frequently asked questions
-
-
-
- ^{formatGregorianW 2020 04 17}
-
-
-
- -
- Submissions, tutorials, and exams are now shown on the detail page for course participants
-
-
- Non-anonymized correction of sheet submissions
-
-
-
- ^{formatGregorianW 2020 04 15}
-
-
-
- -
- Hiding of system messages on "News"
-
-
-
- ^{formatGregorianW 2020 03 31}
-
-
-
- -
- Column for adding notes to course events
-
-
-
- ^{formatGregorianW 2020 03 16}
-
-
-
- -
- Improved colour coding of table cells
-
-
- Webinterface for computation of central allocations
-
-
- Switch to server-side sessions
-
-
- Additional date and time formats
-
-
-
- ^{formatGregorianW 2020 03 06}
-
-
-
- -
- Improved workflow and error-handling for CSV-import
-
-
-
- ^{formatGregorianW 2020 02 23}
-
-
-
- -
- All HTML-inputs now accept Markdown instead
-
-
- All HTML-Emails now include a Markdown version
-
-
-
- ^{formatGregorianW 2020 02 19}
-
-
-
- -
- Exams may now specify in which format results are expected to #
- entered (passed/failed, numeric grades, or mixed)
-
-
-
- ^{formatGregorianW 2020 02 08}
-
-
-
- -
- Interface for quick entering of exam achievements
-
-