{-# LANGUAGE NoMonomorphismRestriction #-} {-# LANGUAGE NoImplicitPrelude #-} {-# LANGUAGE NamedFieldPuns #-} module Bamboo.Controller.Post where import Bamboo.Controller.Env import qualified Bamboo.Model.Counter as Counter import qualified Bamboo.Model.Post as Post import qualified Bamboo.Type as T import qualified Bamboo.Type.State as S import qualified Bamboo.View.Control.Post as PostV post_controller :: Controller post_controller = do init_state env <- get ^ env let uid = env .uri .Post.uri_to_id post_model <- T.get uid .io >>= init_post_meta_data let posts = [post_model] comments <- list_for uid .io if has_extension Counter then Counter.hit uid .io else return () s <- get human_test_data <- S.mk_human_test .io put s { uid , S.resource_title = post_model.resource_title , human_test_data , posts , comments } post_view :: View post_view = PostV.view > output_html post :: Application post = run post_controller post_view