This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "snap-core".
The branch, startup-page has been created
at b52373352f875d06560b74308f99d6d4b03adf67 (commit)
- Log -----------------------------------------------------------------
commit b52373352f875d06560b74308f99d6d4b03adf67
Author: James Sanders <[email protected]>
Date: Sat Jun 5 16:21:34 2010 -0400
Added possible startup welcome page.
diff --git a/project_template/default/src/Main.hs
b/project_template/default/src/Main.hs
index 4699c3f..1688c23 100644
--- a/project_template/default/src/Main.hs
+++ b/project_template/default/src/Main.hs
@@ -4,7 +4,7 @@ module Main where
import Control.Applicative
import Snap.Types
import Snap.Util.FileServe
-
+import Snap.App.Welcome
import Common
config :: AppConfig
@@ -20,7 +20,7 @@ main = do
site :: Snap ()
site =
- ifTop (writeBS "hello world") <|>
+ ifTop sayHello <|>
route [ ("foo", writeBS "bar")
, ("echo/:echoparam", echoHandler)
] <|>
diff --git a/snap-core.cabal b/snap-core.cabal
index 6ce2c11..3bdf81b 100644
--- a/snap-core.cabal
+++ b/snap-core.cabal
@@ -136,10 +136,13 @@ Library
Snap.Internal.Iteratee.Debug,
Snap.Util.FileServe,
Snap.Util.GZip
+ Snap.App.Welcome
other-modules:
Snap.Internal.Routing,
Snap.Internal.Types
+ Snap.App.Welcome.Page
+ Snap.App.Welcome.Here
build-depends:
attoparsec >= 0.8.0.2 && < 0.9,
diff --git a/src/Snap/App/Welcome.hs b/src/Snap/App/Welcome.hs
new file mode 100644
index 0000000..6a9659e
--- /dev/null
+++ b/src/Snap/App/Welcome.hs
@@ -0,0 +1,9 @@
+{-# LANGUAGE OverloadedStrings #-}
+module Snap.App.Welcome (sayHello) where
+import Snap.App.Welcome.Page
+import Data.ByteString.Char8 (pack)
+import Snap.Types
+sayHello :: Snap ()
+sayHello = do
+ modifyResponse (setContentType "text/html")
+ writeBS (pack welcomePage)
diff --git a/src/Snap/App/Welcome/Here.hs b/src/Snap/App/Welcome/Here.hs
new file mode 100644
index 0000000..a490ead
--- /dev/null
+++ b/src/Snap/App/Welcome/Here.hs
@@ -0,0 +1,6 @@
+module Snap.App.Welcome.Here (here) where
+import Language.Haskell.TH.Quote
+import Language.Haskell.TH.Syntax
+import Language.Haskell.TH.Lib
+here :: QuasiQuoter
+here = QuasiQuoter (litE . stringL) (litP . stringL)
diff --git a/src/Snap/App/Welcome/Page.hs b/src/Snap/App/Welcome/Page.hs
new file mode 100644
index 0000000..4b018c7
--- /dev/null
+++ b/src/Snap/App/Welcome/Page.hs
@@ -0,0 +1,56 @@
+{-# LANGUAGE QuasiQuotes #-}
+module Snap.App.Welcome.Page (welcomePage) where
+import Snap.App.Welcome.Here
+welcomePage = [$here|
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+ <head>
+ <title>Welcome to Snap!</title>
+ <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
+ <meta http-equiv="content-type" content="application/xhtml+xml;
charset=UTF-8"/>
+ <meta http-equiv="content-style-type" content="text/css"/>
+ <style>
+ body {
+ font-family: sans-serif;
+ color: #333; background: #fff;
+ margin:0;
+ padding:0;
+ }
+ h1,h2{
+ font-weight: normal ;
+ margin:0;
+ padding:0;
+ padding: 30px;
+ text-align: center;
+ }
+ h1 {
+ vertical-align: middle;
+ font-size: 5em;
+ letter-spacing: -3px;
+
+ }
+ h2 {
+ border: 1px dashed #333;
+ background: #fff;
+ font-size: 1.7em;
+ }
+ #logo{
+ text-align: center;
+ display: block;
+ padding-bottom:20px;
+ }
+ </style>
+ </head>
+ <body>
+ <div id="header">
+ <h1>Hello World!</h1>
+ <h2>
+ <div id="logo">
+ <img
src="data:image/png;base64,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"
/>
+ </div>
+ Welcome to the Snap Framework.</h2>
+ </div>
+ </body>
+</html>
+|]
\ No newline at end of file
-----------------------------------------------------------------------
hooks/post-receive
--
snap-core
_______________________________________________
Snap mailing list
[email protected]
http://mailman-mail5.webfaction.com/listinfo/snap