Getting started section

This commit is contained in:
Chris Done 2014-08-21 13:46:51 +02:00
parent e35eab4f27
commit 4f176c4c21
3 changed files with 50 additions and 15 deletions

View File

@ -1,11 +1,11 @@
{-# LANGUAGE TupleSections, OverloadedStrings #-}
module Handler.Home where
import Data.Slug
import qualified Database.Esqueleto as E
import Import
import Data.Slug
import Database.Esqueleto as E
import Import hiding ((=.),on,(||.),(==.))
-- This is a handler function for the GET request method on the HomeR
-- This is a handler function for the G request method on the HomeR
-- resource pattern. All of your resource patterns are defined in
-- config/routes
--
@ -15,19 +15,33 @@ import Import
getHomeR :: Handler Html
getHomeR = do
fpHandle <- mkSlug "fpcomplete"
stackages <- runDB $ E.select $ E.from $ \(stackage `E.InnerJoin` user) -> do
E.on (stackage E.^. StackageUser E.==. user E.^. UserId)
E.orderBy [E.desc $ stackage E.^. StackageUploaded]
E.where_ (E.like (user E.^. UserDisplay) (E.val "%@fpcomplete.com") E.||.
user E.^. UserHandle E.==. E.val fpHandle)
E.limit 4
stackages <- runDB $ select $ from $ \(stackage `InnerJoin` user) -> do
on (stackage ^. StackageUser ==. user ^. UserId)
orderBy [desc $ stackage ^. StackageUploaded]
where_ (like (user ^. UserDisplay) (val "%@fpcomplete.com") ||.
user ^. UserHandle ==. val fpHandle)
limit 4
return
( stackage E.^. StackageIdent
, stackage E.^. StackageTitle
, stackage E.^. StackageUploaded
, user E.^. UserDisplay
, user E.^. UserHandle
( stackage ^. StackageIdent
, stackage ^. StackageTitle
, stackage ^. StackageUploaded
, user ^. UserDisplay
, user ^. UserHandle
)
windowsLatest <- linkFor "unstable-ghc78hp-inclusive"
restLatest <- linkFor "unstable-ghc78-inclusive"
defaultLayout $ do
setTitle "Stackage Server"
$(widgetFile "homepage")
where
linkFor name =
do slug <- mkSlug name
selecting (\alias ->
do where_ (alias ^. AliasName ==. val slug)
return (alias ^. AliasTarget))
where selecting =
fmap (fmap unValue . listToMaybe) .
runDB .
select .
from
where unValue (Value e) = e

View File

@ -8,6 +8,19 @@
<li>
<a href=@{StackageHomeR ident}>
#{title}
<h2 .getting-started>
Getting Started
<p>
To start using Stackage, choose your operating system below:
<ul .operating-systems>
$maybe win <- windowsLatest
<li>
<a href=@{StackageHomeR win}>
Windows & OS X (Haskell Platform-based snapshot)
$maybe rest <- restLatest
<li>
<a href=@{StackageHomeR rest}>
Linux & non-Haskell Platform users
<h2 .how-stackage-works>How Stackage Works
<div .row .stackage-process>

View File

@ -57,6 +57,14 @@ h2 {
}
}
.operating-systems {
margin-top: 1em;
}
.getting-started {
margin-bottom: 0;
}
/* ul { */
/* margin-top: 30px; */
/* text-align: left; */