Start implementing pretty style

This commit is contained in:
Chris Done 2014-06-03 15:10:35 +02:00
parent 993f4da01c
commit 8a3ce6bd6c
20 changed files with 761 additions and 706 deletions

View File

@ -1,3 +1,6 @@
((haskell-mode . ((haskell-indent-spaces . 4) ((haskell-mode . ((haskell-indent-spaces . 4)
(haskell-process-use-ghci . t))) (haskell-process-use-ghci . t)))
(hamlet-mode . ((hamlet/basic-offset . 4)))) (hamlet-mode . ((hamlet/basic-offset . 4)
(haskell-process-use-ghci . t)))
(html-mode . ((haskell-process-use-ghci . t)))
(css-mode . ((haskell-process-use-ghci . t))))

View File

@ -1,24 +1,25 @@
module Foundation where module Foundation where
import ClassyPrelude.Yesod import ClassyPrelude.Yesod
import Data.BlobStore
import Data.Slug (safeMakeSlug, HasGenIO (getGenIO), randomSlug, Slug)
import Data.Text (Text)
import qualified Database.Persist
import Model
import qualified Settings
import Settings (widgetFile, Extra (..))
import Settings.Development (development)
import Settings.StaticFiles
import qualified System.Random.MWC as MWC
import Text.Hamlet (hamletFile)
import Text.Jasmine (minifym)
import Types
import Yesod.Auth import Yesod.Auth
import Yesod.Auth.BrowserId import Yesod.Auth.BrowserId
import Yesod.Auth.GoogleEmail import Yesod.Auth.GoogleEmail
import Yesod.Core.Types (Logger)
import Yesod.Default.Config import Yesod.Default.Config
import Yesod.Default.Util (addStaticContentExternal) import Yesod.Default.Util (addStaticContentExternal)
import qualified Settings
import Settings.Development (development)
import qualified Database.Persist
import Settings.StaticFiles
import Settings (widgetFile, Extra (..))
import Model
import Text.Jasmine (minifym)
import Text.Hamlet (hamletFile)
import Yesod.Core.Types (Logger)
import Data.Slug (safeMakeSlug, HasGenIO (getGenIO), randomSlug, Slug)
import qualified System.Random.MWC as MWC
import Data.BlobStore
import Types
-- | The site argument for your application. This can be a good place to -- | The site argument for your application. This can be a good place to
-- keep settings and values requiring initialization before your application -- keep settings and values requiring initialization before your application

View File

@ -3,10 +3,11 @@ module Import
) where ) where
import ClassyPrelude.Yesod as Import import ClassyPrelude.Yesod as Import
import Data.Text as Import (Text)
import Foundation as Import import Foundation as Import
import Model as Import import Model as Import
import Types as Import
import Settings as Import import Settings as Import
import Settings.Development as Import import Settings.Development as Import
import Settings.StaticFiles as Import import Settings.StaticFiles as Import
import Types as Import
import Yesod.Auth as Import import Yesod.Auth as Import

91
design/favicon.svg Normal file
View File

@ -0,0 +1,91 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="64px"
height="64px"
id="svg11681"
version="1.1"
inkscape:version="0.48.4 r9939"
sodipodi:docname="New document 88">
<defs
id="defs11683" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1"
inkscape:cx="14.487233"
inkscape:cy="20.91782"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:document-units="px"
inkscape:grid-bbox="true"
inkscape:window-width="2880"
inkscape:window-height="1760"
inkscape:window-x="0"
inkscape:window-y="40"
inkscape:window-maximized="0" />
<metadata
id="metadata11686">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="layer1"
inkscape:label="Layer 1"
inkscape:groupmode="layer">
<g
id="g6924"
transform="matrix(3.2215059,0,0,3.2215059,-19.967388,-829.48138)">
<rect
ry="2.8380694"
rx="2.8380694"
y="257.47974"
x="6.191123"
height="19.866486"
width="19.866486"
id="rect6269"
style="color:#000000;fill:#0981c3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.79500002;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
<g
id="g6919">
<text
xml:space="preserve"
style="font-size:8.5334816px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Impact;-inkscape-font-specification:Impact"
x="11.092716"
y="272.1561"
id="text5279-1-1-2-8-7-2"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5281-4-7-5-0-7-2"
x="11.092716"
y="272.1561"
style="font-size:14.99260807px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;fill:#ffffff;fill-opacity:1;font-family:Impact;-inkscape-font-specification:Impact">S</tspan></text>
<rect
style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.79500002;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="rect6209-0"
width="11.008171"
height="1.4448224"
x="10.625607"
y="272.2153" />
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.2 KiB

View File

@ -289,103 +289,79 @@ a:focus {
.navbar-static-top .container, .navbar-static-top .container,
.navbar-fixed-top .container, .navbar-fixed-top .container,
.navbar-fixed-bottom .container { .navbar-fixed-bottom .container {
width: 940px; width: 724px;
} }
.span12 { .span12 {
width: 940px; width: 724px;
} }
.span11 { .span11 {
width: 860px; width: 662px;
} }
.span10 { .span10 {
width: 780px; width: 600px;
} }
.span9 { .span9 {
width: 700px; width: 538px;
} }
.span8 { .span8 {
width: 620px; width: 476px;
} }
.span7 { .span7 {
width: 540px; width: 414px;
} }
.span6 { .span6 {
width: 460px; width: 352px;
} }
.span5 { .span5 {
width: 380px; width: 290px;
} }
.span4 { .span4 {
width: 300px; width: 228px;
} }
.span3 { .span3 {
width: 220px; width: 166px;
} }
.span2 { .span2 {
width: 140px; width: 104px;
} }
.span1 { .span1 {
width: 60px; width: 42px;
} }
.offset12 { .offset12 {
margin-left: 980px; margin-left: 764px;
} }
.offset11 { .offset11 {
margin-left: 900px; margin-left: 702px;
} }
.offset10 { .offset10 {
margin-left: 820px; margin-left: 640px;
} }
.offset9 { .offset9 {
margin-left: 740px; margin-left: 578px;
} }
.offset8 { .offset8 {
margin-left: 660px; margin-left: 516px;
} }
.offset7 { .offset7 {
margin-left: 580px; margin-left: 454px;
} }
.offset6 { .offset6 {
margin-left: 500px; margin-left: 392px;
} }
.offset5 { .offset5 {
margin-left: 420px; margin-left: 330px;
} }
.offset4 { .offset4 {
margin-left: 340px; margin-left: 268px;
} }
.offset3 { .offset3 {
margin-left: 260px; margin-left: 206px;
} }
.offset2 { .offset2 {
margin-left: 180px; margin-left: 144px;
} }
.offset1 { .offset1 {
margin-left: 100px; margin-left: 82px;
} }
.row-fluid { .row-fluid {

View File

@ -110,7 +110,7 @@
@media (min-width: 1200px) { @media (min-width: 1200px) {
.row { .row {
margin-left: -30px; margin-left: -20px;
*zoom: 1; *zoom: 1;
} }
.row:before, .row:before,
@ -125,85 +125,85 @@
[class*="span"] { [class*="span"] {
float: left; float: left;
min-height: 1px; min-height: 1px;
margin-left: 30px; margin-left: 20px;
} }
.container, .container,
.navbar-static-top .container, .navbar-static-top .container,
.navbar-fixed-top .container, .navbar-fixed-top .container,
.navbar-fixed-bottom .container { .navbar-fixed-bottom .container {
width: 1170px; width: 724px;
} }
.span12 { .span12 {
width: 1170px; width: 724px;
} }
.span11 { .span11 {
width: 1070px; width: 662px;
} }
.span10 { .span10 {
width: 970px; width: 600px;
} }
.span9 { .span9 {
width: 870px; width: 538px;
} }
.span8 { .span8 {
width: 770px; width: 476px;
} }
.span7 { .span7 {
width: 670px; width: 414px;
} }
.span6 { .span6 {
width: 570px; width: 352px;
} }
.span5 { .span5 {
width: 470px; width: 290px;
} }
.span4 { .span4 {
width: 370px; width: 228px;
} }
.span3 { .span3 {
width: 270px; width: 166px;
} }
.span2 { .span2 {
width: 170px; width: 104px;
} }
.span1 { .span1 {
width: 70px; width: 42px;
} }
.offset12 { .offset12 {
margin-left: 1230px; margin-left: 764px;
} }
.offset11 { .offset11 {
margin-left: 1130px; margin-left: 702px;
} }
.offset10 { .offset10 {
margin-left: 1030px; margin-left: 640px;
} }
.offset9 { .offset9 {
margin-left: 930px; margin-left: 578px;
} }
.offset8 { .offset8 {
margin-left: 830px; margin-left: 516px;
} }
.offset7 { .offset7 {
margin-left: 730px; margin-left: 454px;
} }
.offset6 { .offset6 {
margin-left: 630px; margin-left: 392px;
} }
.offset5 { .offset5 {
margin-left: 530px;
}
.offset4 {
margin-left: 430px;
}
.offset3 {
margin-left: 330px; margin-left: 330px;
} }
.offset4 {
margin-left: 268px;
}
.offset3 {
margin-left: 206px;
}
.offset2 { .offset2 {
margin-left: 230px; margin-left: 144px;
} }
.offset1 { .offset1 {
margin-left: 130px; margin-left: 82px;
} }
.row-fluid { .row-fluid {
width: 100%; width: 100%;
@ -223,8 +223,8 @@
float: left; float: left;
width: 100%; width: 100%;
min-height: 30px; min-height: 30px;
margin-left: 2.564102564102564%; margin-left: 2.7624309392265194%;
*margin-left: 2.5109110747408616%; *margin-left: 2.709239449864817%;
-webkit-box-sizing: border-box; -webkit-box-sizing: border-box;
-moz-box-sizing: border-box; -moz-box-sizing: border-box;
box-sizing: border-box; box-sizing: border-box;
@ -233,151 +233,151 @@
margin-left: 0; margin-left: 0;
} }
.row-fluid .controls-row [class*="span"] + [class*="span"] { .row-fluid .controls-row [class*="span"] + [class*="span"] {
margin-left: 2.564102564102564%; margin-left: 2.7624309392265194%;
} }
.row-fluid .span12 { .row-fluid .span12 {
width: 100%; width: 100%;
*width: 99.94680851063829%; *width: 99.94680851063829%;
} }
.row-fluid .span11 { .row-fluid .span11 {
width: 91.45299145299145%; width: 91.43646408839778%;
*width: 91.39979996362975%; *width: 91.38327259903608%;
} }
.row-fluid .span10 { .row-fluid .span10 {
width: 82.90598290598291%; width: 82.87292817679558%;
*width: 82.8527914166212%; *width: 82.81973668743387%;
} }
.row-fluid .span9 { .row-fluid .span9 {
width: 74.35897435897436%; width: 74.30939226519337%;
*width: 74.30578286961266%; *width: 74.25620077583166%;
} }
.row-fluid .span8 { .row-fluid .span8 {
width: 65.81196581196582%; width: 65.74585635359117%;
*width: 65.75877432260411%; *width: 65.69266486422946%;
} }
.row-fluid .span7 { .row-fluid .span7 {
width: 57.26495726495726%; width: 57.18232044198895%;
*width: 57.21176577559556%; *width: 57.12912895262725%;
} }
.row-fluid .span6 { .row-fluid .span6 {
width: 48.717948717948715%; width: 48.61878453038674%;
*width: 48.664757228587014%; *width: 48.56559304102504%;
} }
.row-fluid .span5 { .row-fluid .span5 {
width: 40.17094017094017%; width: 40.05524861878453%;
*width: 40.11774868157847%; *width: 40.00205712942283%;
} }
.row-fluid .span4 { .row-fluid .span4 {
width: 31.623931623931625%; width: 31.491712707182323%;
*width: 31.570740134569924%; *width: 31.43852121782062%;
} }
.row-fluid .span3 { .row-fluid .span3 {
width: 23.076923076923077%; width: 22.92817679558011%;
*width: 23.023731587561375%; *width: 22.87498530621841%;
} }
.row-fluid .span2 { .row-fluid .span2 {
width: 14.52991452991453%; width: 14.3646408839779%;
*width: 14.476723040552828%; *width: 14.311449394616199%;
} }
.row-fluid .span1 { .row-fluid .span1 {
width: 5.982905982905983%; width: 5.801104972375691%;
*width: 5.929714493544281%; *width: 5.747913483013988%;
} }
.row-fluid .offset12 { .row-fluid .offset12 {
margin-left: 105.12820512820512%; margin-left: 105.52486187845304%;
*margin-left: 105.02182214948171%; *margin-left: 105.41847889972962%;
} }
.row-fluid .offset12:first-child { .row-fluid .offset12:first-child {
margin-left: 102.56410256410257%; margin-left: 102.76243093922652%;
*margin-left: 102.45771958537915%; *margin-left: 102.6560479605031%;
} }
.row-fluid .offset11 { .row-fluid .offset11 {
margin-left: 96.58119658119658%; margin-left: 96.96132596685082%;
*margin-left: 96.47481360247316%; *margin-left: 96.8549429881274%;
} }
.row-fluid .offset11:first-child { .row-fluid .offset11:first-child {
margin-left: 94.01709401709402%; margin-left: 94.1988950276243%;
*margin-left: 93.91071103837061%; *margin-left: 94.09251204890089%;
} }
.row-fluid .offset10 { .row-fluid .offset10 {
margin-left: 88.03418803418803%; margin-left: 88.39779005524862%;
*margin-left: 87.92780505546462%; *margin-left: 88.2914070765252%;
} }
.row-fluid .offset10:first-child { .row-fluid .offset10:first-child {
margin-left: 85.47008547008548%; margin-left: 85.6353591160221%;
*margin-left: 85.36370249136206%; *margin-left: 85.52897613729868%;
} }
.row-fluid .offset9 { .row-fluid .offset9 {
margin-left: 79.48717948717949%; margin-left: 79.8342541436464%;
*margin-left: 79.38079650845607%; *margin-left: 79.72787116492299%;
} }
.row-fluid .offset9:first-child { .row-fluid .offset9:first-child {
margin-left: 76.92307692307693%; margin-left: 77.07182320441989%;
*margin-left: 76.81669394435352%; *margin-left: 76.96544022569647%;
} }
.row-fluid .offset8 { .row-fluid .offset8 {
margin-left: 70.94017094017094%; margin-left: 71.2707182320442%;
*margin-left: 70.83378796144753%; *margin-left: 71.16433525332079%;
} }
.row-fluid .offset8:first-child { .row-fluid .offset8:first-child {
margin-left: 68.37606837606839%; margin-left: 68.50828729281768%;
*margin-left: 68.26968539734497%; *margin-left: 68.40190431409427%;
} }
.row-fluid .offset7 { .row-fluid .offset7 {
margin-left: 62.393162393162385%; margin-left: 62.70718232044199%;
*margin-left: 62.28677941443899%; *margin-left: 62.600799341718584%;
} }
.row-fluid .offset7:first-child { .row-fluid .offset7:first-child {
margin-left: 59.82905982905982%; margin-left: 59.94475138121547%;
*margin-left: 59.72267685033642%; *margin-left: 59.838368402492065%;
} }
.row-fluid .offset6 { .row-fluid .offset6 {
margin-left: 53.84615384615384%; margin-left: 54.14364640883978%;
*margin-left: 53.739770867430444%; *margin-left: 54.037263430116376%;
} }
.row-fluid .offset6:first-child { .row-fluid .offset6:first-child {
margin-left: 51.28205128205128%; margin-left: 51.38121546961326%;
*margin-left: 51.175668303327875%; *margin-left: 51.27483249088986%;
} }
.row-fluid .offset5 { .row-fluid .offset5 {
margin-left: 45.299145299145295%; margin-left: 45.58011049723757%;
*margin-left: 45.1927623204219%; *margin-left: 45.47372751851417%;
} }
.row-fluid .offset5:first-child { .row-fluid .offset5:first-child {
margin-left: 42.73504273504273%; margin-left: 42.81767955801105%;
*margin-left: 42.62865975631933%; *margin-left: 42.71129657928765%;
} }
.row-fluid .offset4 { .row-fluid .offset4 {
margin-left: 36.75213675213675%; margin-left: 37.01657458563536%;
*margin-left: 36.645753773413354%; *margin-left: 36.91019160691196%;
} }
.row-fluid .offset4:first-child { .row-fluid .offset4:first-child {
margin-left: 34.18803418803419%; margin-left: 34.25414364640884%;
*margin-left: 34.081651209310785%; *margin-left: 34.14776066768544%;
} }
.row-fluid .offset3 { .row-fluid .offset3 {
margin-left: 28.205128205128204%; margin-left: 28.45303867403315%;
*margin-left: 28.0987452264048%; *margin-left: 28.346655695309746%;
} }
.row-fluid .offset3:first-child { .row-fluid .offset3:first-child {
margin-left: 25.641025641025642%; margin-left: 25.69060773480663%;
*margin-left: 25.53464266230224%; *margin-left: 25.584224756083227%;
} }
.row-fluid .offset2 { .row-fluid .offset2 {
margin-left: 19.65811965811966%; margin-left: 19.88950276243094%;
*margin-left: 19.551736679396257%; *margin-left: 19.783119783707537%;
} }
.row-fluid .offset2:first-child { .row-fluid .offset2:first-child {
margin-left: 17.094017094017094%; margin-left: 17.12707182320442%;
*margin-left: 16.98763411529369%; *margin-left: 17.02068884448102%;
} }
.row-fluid .offset1 { .row-fluid .offset1 {
margin-left: 11.11111111111111%; margin-left: 11.32596685082873%;
*margin-left: 11.004728132387708%; *margin-left: 11.219583872105325%;
} }
.row-fluid .offset1:first-child { .row-fluid .offset1:first-child {
margin-left: 8.547008547008547%; margin-left: 8.56353591160221%;
*margin-left: 8.440625568285142%; *margin-left: 8.457152932878806%;
} }
input, input,
textarea, textarea,
@ -385,76 +385,67 @@
margin-left: 0; margin-left: 0;
} }
.controls-row [class*="span"] + [class*="span"] { .controls-row [class*="span"] + [class*="span"] {
margin-left: 30px; margin-left: 20px;
} }
input.span12, input.span12,
textarea.span12, textarea.span12,
.uneditable-input.span12 { .uneditable-input.span12 {
width: 1156px; width: 710px;
} }
input.span11, input.span11,
textarea.span11, textarea.span11,
.uneditable-input.span11 { .uneditable-input.span11 {
width: 1056px; width: 648px;
} }
input.span10, input.span10,
textarea.span10, textarea.span10,
.uneditable-input.span10 { .uneditable-input.span10 {
width: 956px; width: 586px;
} }
input.span9, input.span9,
textarea.span9, textarea.span9,
.uneditable-input.span9 { .uneditable-input.span9 {
width: 856px; width: 524px;
} }
input.span8, input.span8,
textarea.span8, textarea.span8,
.uneditable-input.span8 { .uneditable-input.span8 {
width: 756px; width: 462px;
} }
input.span7, input.span7,
textarea.span7, textarea.span7,
.uneditable-input.span7 { .uneditable-input.span7 {
width: 656px; width: 400px;
} }
input.span6, input.span6,
textarea.span6, textarea.span6,
.uneditable-input.span6 { .uneditable-input.span6 {
width: 556px; width: 338px;
} }
input.span5, input.span5,
textarea.span5, textarea.span5,
.uneditable-input.span5 { .uneditable-input.span5 {
width: 456px; width: 276px;
} }
input.span4, input.span4,
textarea.span4, textarea.span4,
.uneditable-input.span4 { .uneditable-input.span4 {
width: 356px; width: 214px;
} }
input.span3, input.span3,
textarea.span3, textarea.span3,
.uneditable-input.span3 { .uneditable-input.span3 {
width: 256px; width: 152px;
} }
input.span2, input.span2,
textarea.span2, textarea.span2,
.uneditable-input.span2 { .uneditable-input.span2 {
width: 156px; width: 90px;
} }
input.span1, input.span1,
textarea.span1, textarea.span1,
.uneditable-input.span1 { .uneditable-input.span1 {
width: 56px; width: 28px;
}
.thumbnails {
margin-left: -30px;
}
.thumbnails > li {
margin-left: 30px;
}
.row-fluid .thumbnails {
margin-left: 0;
} }
} }

BIN
static/img/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 543 B

BIN
static/img/favicon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 595 B

BIN
static/img/github.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

BIN
static/img/haskell.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 59 KiB

BIN
static/img/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

BIN
static/img/ping.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

BIN
static/img/screenie.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 271 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 41 KiB

View File

@ -7,6 +7,7 @@ $newline never
<html class="no-js" lang="en"> <!--<![endif]--> <html class="no-js" lang="en"> <!--<![endif]-->
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<link rel="shortcut icon" href=@{StaticR img_favicon_ico} />
<title> <title>
#{pageTitle pc} #{pageTitle pc}
@ -16,7 +17,7 @@ $newline never
<meta name="author" content=""> <meta name="author" content="">
<meta name="viewport" content="width=device-width,initial-scale=1"> <meta name="viewport" content="width=device-width,initial-scale=1">
<link href="//fonts.googleapis.com/css?family=Open+Sans:400,700" rel="stylesheet" type="text/css">
^{pageHead pc} ^{pageHead pc}

View File

@ -1,9 +1,9 @@
<div .wrap> <div .wrap>
<div .container> <div .container>
<div .navbar role=navigation> <a .logo href=@{HomeR}>
<div .navbar-inner> <img src=@{StaticR img_logo_png}>
<a .brand href=@{HomeR}>
Stackage <div .navbar .navbar-default role=navigation>
<ul .nav> <ul .nav>
<li> <li>
<a href=@{AllSnapshotsR}> <a href=@{AllSnapshotsR}>
@ -11,7 +11,6 @@
<li> <li>
<a href=@{UploadStackageR}> <a href=@{UploadStackageR}>
Upload Upload
<ul .nav .pull-right>
$maybe Entity _ user <- muser $maybe Entity _ user <- muser
<li> <li>
<a href=@{ProfileR}> <a href=@{ProfileR}>

View File

@ -8,132 +8,101 @@ html {
} }
body { body {
background: #fff; background: #f0f0f0;
margin:0 0 4em; margin:0 0 4em;
padding:0; padding:0;
font-family: 'Open Sans'; /* font-family: 'Open Sans'; */
font-family: Sawasdee;
text-shadow: 1px 1px 1px #ffffff;
font-size: 20px;
line-height: 24px;
} }
.wrap { p {
background:#fff;
padding-bottom:2em;
padding-left: 15px;
padding-right: 15px;
}
h1 {
font-size: 30px;
line-height: 40px;
font-weight: normal;
}
h2 {
font-size: 25px;
margin-top: 15px;
}
.media-top {
margin-top: 20px; margin-top: 20px;
} }
h3 { .wrap {
font-size: 15px; padding-top: 2em;
padding-left: 15px;
padding-right: 15px;
padding-bottom: 2em;
} }
code { h1 {
color: #9f1ec0; font-weight: normal;
font-size: 50px;
line-height: 55px;
margin-bottom: 30px;
} }
a code { h2 {
color: inherit; font-weight: normal;
background: 0; color: #06537d;
padding: 0; font-size: 45px;
margin-top: 50px;
margin-bottom: 40px;
}
li + li {
margin-top: 0.5em;
}
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Logo
*/
.logo {
display: block;
width: 300px;
border: 0; border: 0;
} }
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Navigation Navbar
*/ */
.navbar { .navbar .nav > li > a {
margin-top: 10px;
margin-bottom: 0;
.brand {
color: #0088cc;
padding-left: 0; padding-left: 0;
color: #0981c3 !important;
} }
.nav > li > a {
color: #0088cc; .navbar {
margin-top: 20px;
font-size: 25px;
.nav {
margin: auto;
} }
.navbar-inner { li {
box-shadow: none; margin-top: 0;
border: 0;
background: inherit;
border-top-left-radius: 0;
border-top-right-radius: 0;
}
.user-handle {
max-width: 15em;
overflow: hidden;
white-space: nowrap;
display: inline-block;
text-overflow: ellipsis;
} }
} }
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Footer Footer
*/ */
.footer { .footer {
text-shadow: none;
background: #0981c3;
border-top: 1px solid #ddd; border-top: 1px solid #ddd;
background-color: #eee; color: #fff;
color: #777;
position: absolute; position: absolute;
bottom: 0; bottom: 0;
width: 100%; width: 100%;
height: 4em; height: 4em;
line-height: 2em; line-height: 2em;
text-align: center;
a {
color: #fff;
font-weight: bold;
}
.span12 { .span12 {
padding: 0px 15px 0 0; padding: 0px 15px 0 0;
line-height: 4em; line-height: 4em;
} }
} }
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Responsiveness
*/
.container {
max-width: 724px;
}
.span12 {
width: auto;
}
@media (max-width: 979px) {
.navbar-inner {
padding-left: 0;
}
}
@media (max-width: 767px) {
.navbar .nav.pull-right {
float: none;
display: block;
clear: left;
margin-left: -15px;
}
}
@media (max-width: 480px) {
.navbar .brand + .nav {
float: none;
display: block;
clear: left;
margin-left: -15px;
}
}

View File

@ -1,87 +1,67 @@
<div .container> <div .container>
<h1> <h2 .recommended-snapshots>Recommended Snapshots
Stackage is an infrastructure to create stable builds of complete package sets. Think “stable Hackage”.
<div .recommended-snapshots>
<h2>Recommended Snapshots
<ul .snapshots> <ul .snapshots>
$forall (E.Value ident, E.Value title, E.Value uploaded, E.Value display, E.Value handle) <- stackages $forall (E.Value ident, E.Value title, E.Value uploaded, E.Value display, E.Value handle) <- stackages
<li> <li>
<a href=@{StackageHomeR ident}> <a href=@{StackageHomeR ident}>
#{title} #{title}
<div .how-it-works>
<h2>How Stackage Works <h1>
<div .row .media-top> Stackage is an infrastructure to create stable builds
of complete package sets. Think “stable Hackage”.
<h2 .how-stackage-works>How Stackage Works
<div .row .stackage-process>
<div .span3>
<img src=@{StaticR img_github_png} .github>
<div .span9>
<p>
Open a pull request on the Github repository.
<div .row .stackage-process>
<div .span9>
<p>
Once checked, it's merged and run through Jenkins.
<div .span3>
<img src=@{StaticR img_jenkins_png} .jenkins>
<div .row .stackage-process>
<div .span3>
<img src=@{StaticR img_ping_png} .ping>
<div .span9>
<p>
Authors are notified on Github if any problems arise with their package.
<div .row .stackage-process>
<div .span9>
<p>
If the build succeeds, a new Stackage snapshot is created.
<div .span3>
<img src=@{StaticR img_stackage_png} .stackage>
<div .row .stackage-process>
<div .span3>
<img src=@{StaticR img_haskell_png} .haskell>
<div .span9>
<p>
The community can start using the new snapshot immediately!
<div .row .steps-to-contribute>
<div .span12> <div .span12>
<div .media> <h2>Steps to Contribute
<a .pull-left>
<img .media-object src=@{StaticR img_open_pr_png}>
<div .media-body>
<h4 .media-heading>
Submission
<div .media>
A contributor (either an author of a package, or a kind
soul) submits a patch to the Github repository. The pack
will be checked and then be merged in.
<div .media>
<a .pull-left>
<img .media-object src=@{StaticR img_jenkins_png}>
<div .media-body>
<h4 .media-heading>
Testing
<div .media>
The update is sent to a Jenkins build system at
<a href="http://jenkins.stackage.org/">
jenkins.stackage.org
in the cloud. There is a daily build which takes
about 8 hours.
<div .media>
<a .pull-left>
<img .media-object src=@{StaticR img_bump_png}>
<div .media-body>
<h4 .media-heading>
Notification
<div .media>
If a build failure occurs, the submitter is notified
via a Github issue and pinged via their
<code>@name</code>. Also, any authors of packages
which now fail to build will be notified.
<div .media>
<a .pull-left>
<img .media-object src=@{StaticR img_stackage_png}>
<div .media-body>
<h4 .media-heading>
Snapshot
<div .media>
If the build succeeds, a new snapshot is created. The new
snapshot is used by the community.
<div .contributing>
<h2>Contributing
<p>The steps are simple:
<ul> <ul>
<li> <li>Open the Stackage project on Github.
Open the
<a href="https://github.com/fpco/stackage">
Stackage project on Github.
<li>Fork it. <li>Fork it.
<li> <li>Add a line to the Stackage.Config module.
<a href="https://github.com/fpco/stackage#get-your-package-included">
Add a line to the
<code>
Stackage.Config
module.
<li>Push to your fork. <li>Push to your fork.
<li>Open a pull request. <li>Open a pull request.
<p> Once you have submitted the pull request, a build will be <p>
started. There is a dedicated jenkins server at this location: Once you have submitted the pull request, a build will be started.
<a href="http://jenkins.stackage.org/"> There is a dedicated jenkins server at this location: jenkins.stackage.org
jenkins.stackage.org. From there you can track the progress, status and
From here you can track the progress, status and results results of Stackage builds.
of Stackage builds.
<div .businesses> <div .row .businesses>
<div .span12>
<h2>Stackage for businesses <h2>Stackage for businesses
<p> We're offering custom installations for businesses who want to <p>
We're offering custom installations for businesses who want to
build their development platform upon Stackage. If you're build their development platform upon Stackage. If you're
considering this for your business and want to find out more, considering this for your business and want to find out more,
please email us at: please email us at: sales@fpcomplete.com
<a href="mailto:sales@fpcomplete.com">
sales@fpcomplete.com

View File

@ -1,19 +1,62 @@
h1 {
margin-top: 50px;
}
.recommended-snapshots {
margin-top: 30px;
}
.how-stackage-works {
margin-bottom: 50px;
}
.snapshots { .snapshots {
margin-left: 0; margin-left: 0;
padding-left: 0; padding-left: 0;
li { li {
list-style-type: none; list-style-type: none;
} margin-left: 0;
li + li { padding-left: 0;
margin-top: 0.5em; font-weight: bold;
} }
} }
.how-it-works { .stackage-process {
.media .pull-left { p {
font-size: 30px;
line-height: 35px;
}
.github {
width: 150px;
}
.jenkins {
width: 100px; width: 100px;
height: 100px; }
background: #eee; .ping {
border: 2px solid #eee; width: 100px;
}
.stackage {
width: 100px;
}
.haskell {
width: 120px;
} }
} }
.stackage-process + .stackage-process {
margin-top: 50px;
}
/* .steps-to-contribute { */
/* ul { */
/* margin-top: 30px; */
/* text-align: left; */
/* } */
/* ul, li, p { */
/* font-size: 20px; */
/* line-height: 25px; */
/* } */
/* li { */
/* margin-bottom: 0.5em */
/* } */
/* } */