From 893d91acd80f9ff3989a867cae114e7d4594c65d Mon Sep 17 00:00:00 2001 From: fr33domlover Date: Mon, 6 Jun 2016 13:34:23 +0000 Subject: [PATCH] Sharers page lists them, sharer page redirects to person or group --- src/Vervis/Handler/Sharer.hs | 35 +++++++++++++++++++++++++++++++---- templates/sharer/list.hamlet | 21 +++++++++++++++++++++ 2 files changed, 52 insertions(+), 4 deletions(-) create mode 100644 templates/sharer/list.hamlet 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. + +

    + $forall Entity _ sharer <- sharers +
  • + ^{sharerLinkW sharer}