diff --git a/src/Vervis/Handler/Sharer.hs b/src/Vervis/Handler/Sharer.hs index 1c73cf6..e014275 100644 --- a/src/Vervis/Handler/Sharer.hs +++ b/src/Vervis/Handler/Sharer.hs @@ -21,13 +21,40 @@ where import Prelude +import Control.Monad.Logger (logWarn) +import Data.Monoid ((<>)) +import Database.Persist import Text.Blaze.Html (Html) +import Yesod.Core (defaultLayout) +import Yesod.Core.Handler (redirect, notFound) +import Yesod.Persist.Core (runDB, getBy404) -import Vervis.Foundation (Handler) -import Vervis.Model.Ident (ShrIdent) +import Vervis.Foundation +import Vervis.Model +import Vervis.Model.Ident (ShrIdent, shr2text) +import Vervis.Settings (widgetFile) +import Vervis.Widget.Sharer (sharerLinkW) getSharersR :: Handler Html -getSharersR = error "TODO" +getSharersR = do + sharers <- runDB $ selectList [] [Asc SharerIdent] + defaultLayout $(widgetFile "sharer/list") getSharerR :: ShrIdent -> Handler Html -getSharerR shar = error "TODO" +getSharerR shr = do + isperson <- runDB $ do + Entity sid _sharer <- getBy404 $ UniqueSharer shr + mp <- getBy $ UniquePersonIdent sid + case mp of + Just _ -> return $ Just True + Nothing -> do + mg <- getBy $ UniqueGroup sid + case mg of + Just _ -> return $ Just False + Nothing -> return Nothing + case isperson of + Nothing -> do + $logWarn $ "Found non-person non-group sharer: " <> shr2text shr + notFound + Just True -> redirect $ PersonR shr + Just False -> redirect $ GroupR shr diff --git a/templates/sharer/list.hamlet b/templates/sharer/list.hamlet new file mode 100644 index 0000000..2d3828b --- /dev/null +++ b/templates/sharer/list.hamlet @@ -0,0 +1,21 @@ +$# This file is part of Vervis. +$# +$# Written in 2016 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 +$# . + +

+ These are the people and groups registered in this Vervis instance. + +