From 1328cf3311939063a75d45077f37e530869b6509 Mon Sep 17 00:00:00 2001 From: Christine Dodrill Date: Wed, 14 Dec 2016 14:53:00 -0800 Subject: [PATCH] frontend: Implement /contact page --- frontend/src/BlogEntry.purs | 3 +- frontend/src/Layout.purs | 45 +++++++++++++++++++++++-- frontend/src/Routes.purs | 6 ++++ frontend/src/{BlogEntry.js => Utils.js} | 0 frontend/src/Utils.purs | 3 ++ 5 files changed, 53 insertions(+), 4 deletions(-) rename frontend/src/{BlogEntry.js => Utils.js} (100%) create mode 100644 frontend/src/Utils.purs diff --git a/frontend/src/BlogEntry.purs b/frontend/src/BlogEntry.purs index 9e56c2d..360b962 100644 --- a/frontend/src/BlogEntry.purs +++ b/frontend/src/BlogEntry.purs @@ -1,5 +1,6 @@ module App.BlogEntry where +import App.Utils (mdify) import Control.Monad.Aff (attempt) import DOM (DOM) import Data.Argonaut (class DecodeJson, decodeJson, (.?)) @@ -75,5 +76,3 @@ view { id: id, status: status, post: (Post post) } = , div [ className "col s8 offset-s2" ] [ p [ id_ "blogpost" ] [ text post.body ] ] ] - -foreign import mdify :: String -> String diff --git a/frontend/src/Layout.purs b/frontend/src/Layout.purs index 96d056a..f809b9c 100644 --- a/frontend/src/Layout.purs +++ b/frontend/src/Layout.purs @@ -9,8 +9,8 @@ import DOM (DOM) import Network.HTTP.Affjax (AJAX) import Prelude (($), (#), map, pure) import Pux (EffModel, noEffects, mapEffects, mapState) -import Pux.Html (Html, div, h1, li, nav, text, ul) -import Pux.Html.Attributes (classID, className, id_, role) +import Pux.Html (Html, a, code, div, h1, h3, h4, li, nav, p, pre, text, ul) +import Pux.Html.Attributes (classID, className, id_, role, href) import Pux.Router (link) data Action @@ -41,6 +41,7 @@ update (BEChild action) state = BlogEntry.update action state.bestate # mapState (state { bestate = _ }) # mapEffects BEChild update (Child action) state = noEffects $ state { count = Counter.update action state.count } +update _ state = noEffects $ state routeEffects :: Route -> State -> EffModel State Action (dom :: DOM, ajax :: AJAX) routeEffects BlogIndex state = { state: state @@ -76,10 +77,50 @@ navbar state = ] ] +contact :: Html Action +contact = + div + [ className "row" ] + [ div + [ className "col s6" ] + [ h3 [] [ text "Email" ] + , div [ className "email" ] [ text "me@christine.website" ] + , p [] + [ text "My GPG fingerprint is " + , code [] [ text "799F 9134 8118 1111" ] + , text ". If you get an email that appears to be from me and the signature does not match that fingerprint, it is not from me. You may download a copy of my public key " + , a [ href "/static/gpg.pub" ] [ text "here" ] + , text "." + ] + ] + , div + [ className "col s6" ] + [ h3 [] [ text "Other Information" ] + , p [] + [ text "To send me donations, my bitcoin address is " + , code [] [ text "1Gi2ZF2C9CU9QooH8bQMB2GJ2iL6shVnVe" ] + , text "." + ] + , div [] + [ h4 [] [ text "IRC" ] + , p [] [ text "I am on many IRC networks. On Freenode I am using the nick Xe but elsewhere I will use the nick Xena or Cadey." ] + ] + , div [] + [ h4 [] [ text "Telegram" ] + , a [ href "https://telegram.me/miamorecadenza" ] [ text "@miamorecadenza" ] + ] + , div [] + [ h4 [] [ text "Discord" ] + , pre [] [ text "Cadey~#1932" ] + ] + ] + ] + page :: Route -> State -> Html Action page NotFound _ = h1 [] [ text "not found" ] page Home state = map Child $ Counter.view state.count page Resume state = h1 [] [ text "Christine Dodrill" ] page BlogIndex state = map BIChild $ BlogIndex.view state.bistate page (BlogPost _) state = map BEChild $ BlogEntry.view state.bestate +page ContactPage _ = contact page _ _ = h1 [] [ text "not implemented yet" ] diff --git a/frontend/src/Routes.purs b/frontend/src/Routes.purs index 111d0d7..886e774 100644 --- a/frontend/src/Routes.purs +++ b/frontend/src/Routes.purs @@ -1,5 +1,8 @@ module App.Routes where +import App.BlogEntry as BlogEntry +import App.BlogIndex as BlogIndex +import App.Counter as Counter import Control.Alt ((<|>)) import Control.Apply ((<*), (*>)) import Data.Functor ((<$)) @@ -9,6 +12,7 @@ import Pux.Router (param, router, lit, str, end) data Route = Home | Resume + | ContactPage | StaticPage String | BlogIndex | BlogPost String @@ -21,3 +25,5 @@ match url = fromMaybe NotFound $ router url $ BlogIndex <$ lit "blog" <* end <|> BlogPost <$> (lit "blog" *> str) <* end + <|> + ContactPage <$ lit "contact" <* end diff --git a/frontend/src/BlogEntry.js b/frontend/src/Utils.js similarity index 100% rename from frontend/src/BlogEntry.js rename to frontend/src/Utils.js diff --git a/frontend/src/Utils.purs b/frontend/src/Utils.purs new file mode 100644 index 0000000..2d3c8a9 --- /dev/null +++ b/frontend/src/Utils.purs @@ -0,0 +1,3 @@ +module App.Utils where + +foreign import mdify :: String -> String