diff --git a/config/settings.yml b/config/settings.yml index 4cf378423..735afe776 100644 --- a/config/settings.yml +++ b/config/settings.yml @@ -38,7 +38,9 @@ ldap: password: "_env:LDAPPW:" basename: "_env:LDAPBN:" +userDefaultFavourites: 12 + cryptoid-keyfile: "_env:CRYPTOID_KEYFILE:cryptoid_key.bf" -copyright: Insert copyright statement here +copyright: ©Institute for Informatics, LMU Munich #analytics: UA-YOURCODE diff --git a/models b/models index 6289a312f..95b991dc8 100644 --- a/models +++ b/models @@ -4,6 +4,7 @@ User matrikelnummer Text Maybe email Text displayName Text + maxFavourites Int default=12 UniqueAuthentication plugin ident UserAdmin user UserId diff --git a/src/Foundation.hs b/src/Foundation.hs index 1241a847d..647dc34a9 100644 --- a/src/Foundation.hs +++ b/src/Foundation.hs @@ -155,11 +155,20 @@ instance Yesod UniWorX where uid <- MaybeT maybeAuthId now <- liftIO $ getCurrentTime void . lift . runDB . runMaybeT $ do - cid <- MaybeT . getKeyBy $ CourseTermShort tid csh + cid <- MaybeT . getKeyBy $ CourseTermShort tid csh + user <- MaybeT $ get uid + -- update Favorites lift $ upsertBy (UniqueCourseFavourite uid cid) (CourseFavourite uid now cid) [CourseFavouriteTime =. now] + -- prune Favorites to user-defined size + oldFavs <- lift $ selectKeysList + [ CourseFavouriteUser ==. uid] + [ Desc CourseFavouriteTime + , OffsetBy $ userMaxFavourites user + ] + lift $ mapM delete oldFavs _other -> return () return res @@ -479,6 +488,7 @@ instance YesodAuth UniWorX where userDisplayName <- maybe (throwError $ ServerError "Could not retrieve user name") return userDisplayName' let + userMaxFavourites = 12 -- TODO: appDefaultFavourites appSettings newUser = User{..} userUpdate = [ UserMatrikelnummer =. userMatrikelnummer , UserDisplayName =. userDisplayName diff --git a/src/Settings.hs b/src/Settings.hs index e595cdc59..d63b447b2 100644 --- a/src/Settings.hs +++ b/src/Settings.hs @@ -59,6 +59,9 @@ data AppSettings = AppSettings , appSkipCombining :: Bool -- ^ Perform no stylesheet/script combining + , appDefaultFavourites :: Int + -- ^ Initial Value for remembered Favourites + -- Example app-specific configuration values. , appCopyright :: Text -- ^ Copyright text to appear in the footer of the page @@ -94,6 +97,8 @@ instance FromJSON AppSettings where appMutableStatic <- o .:? "mutable-static" .!= defaultDev appSkipCombining <- o .:? "skip-combining" .!= defaultDev + appDefaultFavourites <- o .: "userDefaultFavourites" + appCopyright <- o .: "copyright" appAnalytics <- o .:? "analytics" appCryptoIDKeyFile <- o .: "cryptoid-keyfile"