{- This file is part of Vervis. - - Written in 2016, 2018 by fr33domlover . - - ♡ Copying is an act of love. Please copy, reuse and share. - - The author(s) have dedicated all copyright and related and neighboring - rights to this software to the public domain worldwide. This software is - distributed without any warranty. - - You should have received a copy of the CC0 Public Domain Dedication along - with this software. If not, see - . -} -- | Various custom widgets. module Vervis.Widget ( breadcrumbsW , revisionW , avatarW , buttonW ) where import Prelude import Data.Text (Text) import Data.Time.Calendar (toGregorian) import Data.Time.Clock (UTCTime (..)) import Development.Darcs.Rev import Formatting (sformat, (%), int, left) import Network.HTTP.Types (StdMethod) import Yesod.Core import Yesod.Core.Widget import qualified Data.Text as T (take) import Vervis.Avatar (getAvatarUrl) import Vervis.Settings (widgetFile) import Vervis.Style import Vervis.Time (showDate) breadcrumbsW :: YesodBreadcrumbs site => WidgetT site IO () breadcrumbsW = do (current, bcs) <- handlerToWidget breadcrumbs $(widgetFile "widget/breadcrumbs") revisionW :: WidgetT site IO () revisionW = let cgTimeFmt = showDate . cgTime mrev = $darcsRevision sharer = "fr33domlover" :: Text repo = "vervis" :: Text changes = $darcsTotalPatches :: Int in $(widgetFile "widget/revision") avatarW :: Bool -> Text -> WidgetT site IO () avatarW secure email = do murl <- getAvatarUrl secure email [whamlet|
$maybe url <- murl $nothing

INVALID EMAIL |] buttonW :: StdMethod -> Text -> Route site -> WidgetT site IO () buttonW method content route = do let tokenKey = defaultCsrfParamName mtoken <- reqToken <$> getRequest [whamlet|

$maybe n <- mtoken |]