darcsden-1.1: src/DarcsDen/Pages/User.hs
{-# OPTIONS_GHC -F -pgmF trhsx #-}
module DarcsDen.Pages.User where
import HSP
import Data.Maybe (fromMaybe, isJust)
import DarcsDen.Pages.Base
import DarcsDen.Pages.HSPage ( HSPage )
import DarcsDen.Pages.Util ( repoForkSourceDescription )
import DarcsDen.State.Repository
import DarcsDen.State.User
import DarcsDen.State.Session
import DarcsDen.Settings
user :: User -> [Repository] -> HSPage
user u repos sess = base
(uName u)
True
<span><% uName u %></span>
<ul class="links">
<% if sUser sess == Just (uName u) then <% createlink %> else <% "" %> %>
</ul>
<div class="user">
<h2><% uName u %>'s repositories</h2>
<% repositories repos %>
</div>
sess
where
createlink = <li class="create"><a href=(baseUrl ++ "init")>new repo</a></li>
repositories :: [Repository] -> HSP XML
repositories [] = <p class="blurb">nothing to see here, move along!</p>
repositories rs = <ul class="user-repos"><% map repo rs %></ul>
repo :: Repository -> HSP XML
repo r =
<li>
<a href=(baseUrl ++ rOwner r ++ "/" ++ rName r) class=(if rIsPrivate r then "private-repo" else "public-repo")><% rName r %></a>
<%
if rDescription r /= ""
then <% <span class="repo-description"><% cdata " — " %><% rDescription r %></span> %>
else <% "" %>
%>
<% repoForkSourceDescription r %>
<%
if rWebsite r /= ""
then <% <span class="repo-website"> (<a href=(rWebsite r) rel="nofollow"><% rWebsite r %></a>)</span> %>
else <% "" %>
%>
</li>
register :: [(String, String)] -> HSPage
register is = base
"register"
False
<span>register</span>
<div></div>
<div class="register">
<h2>sign up</h2>
<table>
<tr><td><form class="big" action=(baseUrl ++ "register") method="post">
<fieldset>
<% field (input'' is "name") "username" "" %>
<% field (input'' is "email") "email" "" %>
<% field (password'' is "password1") "password" (convert is "oauth" "optional" "") %>
<% field (password'' is "password2") "password, again" "" %>
<% field (textarea' is 10 "keys") "ssh public key(s) (required for push)" "" %>
<% field (security is "security_question") (convert is "oauth" "" "what RCS is hosted here ? (anti-spam)") "" %>
<% submit "sign me up" %>
</fieldset>
</form></td></tr>
<tr><td><form class="buttonform" action=(baseUrl++"register/github") method="get"><% submit "Sign up with Github" %></form></td></tr>
<tr><td><form class="buttonform" action=(baseUrl++"register/google") method="get"><% submit "Sign up with Google" %></form></td></tr>
</table>
</div>
where
convert js i f nf = fromMaybe nf (fmap (const f) (lookup i js))
input'' js n = inputWith' js n [("autocomplete","off")]
security js n = <input type=(convert js "oauth" "hidden" "text") name=n id=n />
password'' js n = passwordWith' js n [("autocomplete","off")]
login :: [(String, String)] -> HSPage
login is = base
"login"
False
<span>login</span>
<div></div>
<div class="login">
<h2>log in</h2>
<table>
<tr><td><form action=(baseUrl++"login") method="post">
<fieldset>
<% field (input' is "name") "name" "" %>
<% field (password' is "password") "password" "" %>
<% submit "log me in" %>
</fieldset>
</form></td></tr>
<tr><td><form class="buttonform" action=(baseUrl++"login/github") method="get"><% submit "Sign in using Github" %></form></td></tr>
<tr><td><form class="buttonform" action=(baseUrl++"login/google") method="get"><% submit "Sign in using Google" %></form></td></tr>
<tr><td><a style="float:right" href=(baseUrl++"forgotpassword")> Forgot Password? </a></td></tr>
</table>
</div>
settings :: User -> HSPage
settings u = base
"settings"
False
<span>settings</span>
<div></div>
<div class="settings">
<h2>account settings</h2>
<table>
<tr><td><form class="big" action=(baseUrl ++ "settings") method="post">
<fieldset>
<% field (input "full_name" (uFullName u)) "full name" "" %>
<% field (input "website" (uWebsite u)) "website" "" %>
<h3>change password?</h3>
<% if isJust (uPaS u) then field (password' [] "password") "current password" "" else <div></div> %>
<% field (password' [] "password1") "new password" "" %>
<% field (password' [] "password2") "(again)" "" %>
<br />
<% field (textarea 10 "keys" (unlines (uKeys u))) "pubkeys" "" %>
<% submit "update settings" %>
</fieldset>
</form></td></tr>
<tr><td><form class="buttonform" action=(baseUrl++"sync/github") method="get"><% submit "Link with Github" %></form></td></tr>
<tr><td><form class="buttonform" action=(baseUrl++"sync/google") method="get"><% submit "Link with Google" %></form></td></tr>
</table>
</div>
forgotPassword :: [(String, String)] -> HSPage
forgotPassword is = base
"forgot password"
False
<span>forgot password</span>
<div></div>
<div class="forgot-password">
<h2>forgot password</h2>
<form action=(baseUrl ++ "forgotpassword") method="post">
<fieldset>
<% field (input' is "username") "username" "" %>
<% submit "submit" %>
</fieldset>
</form>
</div>
resetPassword :: [(String, String)] -> HSPage
resetPassword _ = base
"reset password"
False
<span>reset password</span>
<div></div>
<div class="reset-password">
<h2>reset password</h2>
<form action=(baseUrl ++ "recovery") method="post">
<fieldset>
<% field (password' [] "password1") "new password" "" %>
<% field (password' [] "password2") "(again)" "" %>
<% submit "submit" %>
</fieldset>
</form>
</div>