gonito/Handler/TagUtils.hs

42 lines
1.2 KiB
Haskell
Raw Normal View History

2017-02-26 21:40:38 +01:00
module Handler.TagUtils where
import Import
import Yesod.Form.Bootstrap3 (bfs)
import Data.Text as T
getAvailableTagsAsJSON = do
tagsAvailable <- selectList [] [Asc TagName]
return $ toJSON $ Import.map (tagName . entityVal) tagsAvailable
tagsfs :: RenderMessage site msg => msg -> FieldSettings site
tagsfs msg = attrs { fsAttrs = ("data-role"::Text,"tagsinput"::Text):(fsAttrs attrs)}
where attrs = bfs msg
tagsAsTextToTagIds mTagsAsText = do
let newTags = case mTagsAsText of
Just tags' -> Import.map T.strip $ T.split (== ',') tags'
Nothing -> []
mTs <- mapM (\t -> getBy $ UniqueTagName t) newTags
return $ Import.map entityKey $ Import.catMaybes mTs
2017-03-18 15:57:27 +01:00
fragmentWithTags t tagEnts = [whamlet|
#{t}
$forall (Entity _ v) <- tagEnts
\ <span class="label label-primary">#{tagName v}</span>
|]
2017-05-27 22:31:53 +02:00
fragmentWithSubmissionTags t tagEnts = [whamlet|
#{t}
$forall ((Entity _ v), (Entity _ s)) <- tagEnts
\ <span class="label #{tagClass $ submissionTagAccepted s}">#{tagName v}</span>
|]
tagClass :: Maybe Bool -> Text
tagClass (Just True) = "label-success"
tagClass (Just False) = "label-default"
tagClass Nothing = "label-primary"