{-# LANGUAGE NoImplicitPrelude #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE TypeFamilies, FlexibleContexts, ConstraintKinds #-} {-# LANGUAGE QuasiQuotes #-} {-# LANGUAGE RecordWildCards #-} module Handler.Utils ( module Handler.Utils ) where import Import import qualified Data.Text as T import Handler.Utils.DateTime as Handler.Utils import Handler.Utils.Form as Handler.Utils import Handler.Utils.Table as Handler.Utils import Handler.Utils.Table.Pagination as Handler.Utils import Handler.Utils.Zip as Handler.Utils import Handler.Utils.Rating as Handler.Utils hiding (extractRatings) import Handler.Utils.Submission as Handler.Utils import Handler.Utils.Sheet as Handler.Utils import Handler.Utils.Templates as Handler.Utils downloadFiles :: (MonadHandler m, HandlerSite m ~ UniWorX) => m Bool downloadFiles = do mauth <- liftHandlerT maybeAuth case mauth of Just (Entity _ User{..}) -> return userDownloadFiles Nothing -> do AppSettings{ appUserDefaults = UserDefaultConf{..} } <- getsYesod appSettings return userDefaultDownloadFiles nameWidget :: Text -> Text -> Widget nameWidget displayName surname | null surname = toWidget displayName | otherwise = case reverse $ T.splitOn surname displayName of [_notContained] -> [whamlet|#{displayName} (#{surname})|] (suffix:prefixes) -> let prefix = T.intercalate surname $ reverse prefixes in [whamlet|#{prefix}#{surname}#{suffix}|] [] -> error "Data.Text.splitOn returned empty list in violation of specification."