module Controller.Format
( viewFormatsHandler
, formatIcon
) where
import Control.Monad.Reader (asks)
import qualified Data.Invertible as I
import Data.Monoid ((<>))
import System.Posix.FilePath (splitFileName, splitExtension)
import qualified Web.Route.Invertible as R
import Model.Format
import Action.Run
import Action
import Controller.Web
import Controller.Angular
import View.Format
formatIcon :: ActionRoute Format
formatIcon = (pf I.:<->: fp) `R.mapActionRoute` webFile where
fp f = Just $ staticPath
[ "images", "filetype", "16px"
, case formatExtension f of { e:_ -> e ; _ -> "_blank" } <> ".svg"
]
pf (Just (StaticPath p))
| ("images/filetype/16px/", i) <- splitFileName p
, (e, ".svg") <- splitExtension i
, Just f <- getFormatByExtension e = f
pf _ = unknownFormat
viewFormatsHandler :: Action
viewFormatsHandler = withoutAuth $ do
angular
okResponse [] <$> asks htmlFormats