Add support for social profiles on the h-card, which become rel="me" links

This commit is contained in:
Danielle McLean 2017-10-03 12:53:13 +11:00
parent c5fd0fd326
commit e81a44d122
Signed by: 00dani
GPG key ID: 3844A6973C6058F1
5 changed files with 21 additions and 4 deletions

View file

@ -15,5 +15,12 @@ Comment json -- Adding "json" causes ToJSON and FromJSON instances to be derived
userId UserId Maybe default=NULL
deriving Eq
deriving Show
Site
icon Text sqltype=varchar(255)
url Text sqltype=varchar(255)
Profile
userId UserId
siteId SiteId
username Text sqltype=varchar(255)
-- By default this file is used in Model.hs (which is imported by Foundation.hs)

View file

@ -10,5 +10,5 @@ import Widget.Hcard (hcard)
getHomeR :: Handler Html
getHomeR = do
(Entity _ user) <- runDB . getBy404 $ UniqueUser "dani"
user <- runDB . getBy404 $ UniqueUser "dani"
defaultLayout $(widgetFile "home")

View file

@ -6,7 +6,11 @@ module Widget.Hcard (hcard) where
import Import
import qualified Network.Libravatar as L
hcard :: User -> Widget
hcard user = do
hcard :: Entity User -> Widget
hcard (Entity userId user) = do
maybeAvatar <- liftIO $ L.avatarUrl (L.Email $ userEmail user) def { L.optSecure = True, L.optSize = L.Size 512 }
userProfiles <- handlerToWidget . runDB $ do
profiles <- map entityVal <$> selectList [ProfileUserId ==. userId] []
sites <- belongsToJust profileSiteId `mapM` profiles
return . sortBy (comparing $ siteIcon . fst) $ zip sites profiles
$(widgetFile "hcard")

View file

@ -1,3 +1,5 @@
.card.h-card
margin: 2em auto
width: 20rem
width: 22rem
.card-link
white-space: nowrap

View file

@ -6,3 +6,7 @@
<a .card-link.u-email rel="me" href="mailto:#{userEmail user}">
<i .fa.fa-envelope>
#{userEmail user}
$forall (site, profile) <- userProfiles
<a .card-link.u-url rel="me" href="#{siteUrl site}#{profileUsername profile}">
<i .fa.fa-#{siteIcon site}>
#{profileUsername profile}