-<% @header [("title", ["Exception"])] %>
+<html><head>
+<title>Hcoop Portal: Exception</title>
+</head><body>
+
+<h1>Exception</h1>
<% switch Web.getExn () of
Fail msg => %>
<b>Fail</b>: <% Web.htmlNl msg %>
+<% | OS.SysErr (name, NONE) => %>
+<b>System error</b>: <% Web.html name %>
+<% | OS.SysErr (name, SOME syserr) => %>
+<b>System error</b>: <% Web.html name %>: <% Web.html (OS.errorName syserr) %>: <% Web.htmlNl (OS.errorMsg syserr) %>
+<% | IO.Io {name, function, cause, ...} => %>
+<b>IO error</b>: <% Web.html name %> for <% Web.html function %><br>
+<b>Cause</b>: <% Web.html (Init.explain cause) %><br>
+<b>Tokens</b>: <p><% Web.htmlNl (Init.tokens ()) %></p>
<% | Init.C.Sql msg => %>
<b>SQL</b>: <% Web.htmlNl msg %>
<% | Init.Access msg => %>
<b>Authorization error</b>: <% Web.htmlNl msg %>
<% | Web.Format s => %>
<b>Format</b>: <% Web.htmlNl s %>
+<% | DynLinkage.DynLinkError s => %>
+<b>Linking error</b>: <% Web.htmlNl s %>
+
+<% | Init.NeedTos => %>
+<p><b>Our records indicate that you need to agree to our Terms of Service.</b></p>
+
+<% val ap = #app (Init.getUser ());
+
+App.readTosBody () %>
+
+<br><hr><br>
+<form action="portal" method="post">
+
+<% val ap = App.lookupApp ap;
+switch #gname ap of
+ NONE => %>
+<b>Real name:</b> <% Web.html (#rname ap) %><br>
+<input type="checkbox" name="agree">
+<% App.readTosAgree ()
+ | SOME gname => %>
+<b>Member name:</b> <% Web.html (#rname ap) %><br>
+<b>Legal guardian name:</b> <% Web.html gname %><br>
+<input type="checkbox" name="agree">
+<% App.readTosMinorAgree ()
+end %>
+<br><br><input type="submit" value="Agree">
+</form>
+
<% | ex => %>
<b>Unknown exception kind.</b> Backtrace:
<% foreach s in SMLofNJ.exnHistory ex do %>
<% end
end %>
-<% @footer [] %>
+</body></html>