Mark pending requests with how long ago they were submitted
authorAdam Chlipala <adamc@hcoop.net>
Sat, 19 Jan 2008 20:57:32 +0000 (20:57 +0000)
committerAdam Chlipala <adamc@hcoop.net>
Sat, 19 Jan 2008 20:57:32 +0000 (20:57 +0000)
apps.mlt
apt.mlt
cert.mlt
domain.mlt
ip.mlt
list.mlt
quota.mlt
sec.mlt
util.sig
util.sml

index c5c5d4c..5fe3f2a 100644 (file)
--- a/apps.mlt
+++ b/apps.mlt
@@ -13,7 +13,7 @@ if $"show" <> "" then
        val appl = App.lookupApp (#app user) %>
 
        <table class="blanks">
-       <tr> <td>Received:</td> <td><% #applied appl %></td> </tr>
+       <tr> <td>Received:</td> <td><% #applied appl %> (<% Util.diffFromNow (#applied appl) %> ago)</td> </tr>
        <tr> <td>Approved by:</td> <td><%
                ref first = true;
                ref found = false;
@@ -86,7 +86,7 @@ elseif $"cmd" = "approved" then
        foreach appl in App.listApps App.ACCEPTED do %>
                <br><hr><br>
                <table class="blanks">
-               <tr> <td>Received:</td> <td><% #applied appl %></td> </tr>
+               <tr> <td>Received:</td> <td><% #applied appl %> (<% Util.diffFromNow (#applied appl) %> ago)</td> </tr>
                <tr> <td>Approved by:</td> <td><%
                        ref first = true;
                        ref found = false;
@@ -163,7 +163,7 @@ end %>
 <% foreach appl in App.listApps App.PENDING do %>
        <br><hr><br>
        <table class="blanks">
-       <tr> <td>Received:</td> <td><% #applied appl %></td> </tr>
+       <tr> <td>Received:</td> <td><% #applied appl %> (<% Util.diffFromNow (#applied appl) %> ago)</td></tr>
        <tr> <td>Approved by:</td> <td><%
                ref first = true;
                ref found = false;
@@ -198,7 +198,7 @@ end %>
        <% if length votes >= 2 then %><a href="apps?approve=<% #id appl %>">Approve this member.</a><br><% end %>
        <a href="apps?deny=<% #id appl %>">Deny this application.</a>
        <% end %>
-<% end
+<% end 
 end %>
 
 <% @footer[] %>
diff --git a/apt.mlt b/apt.mlt
index 6ef3346..1cbfde5 100644 (file)
--- a/apt.mlt
+++ b/apt.mlt
@@ -76,7 +76,7 @@ elseif $"cmd" = "open" then
 <br><hr><br>
 <table class="blanks">
 <tr> <td>By:</td> <td colspan="2"><a href="user?id=<% #usr req %>"><% name %></a></td> </tr>
-<tr> <td>Time:</td> <td colspan="2"><% #stamp req %></td> </tr>
+<tr> <td>Time:</td> <td colspan="2"><% #stamp req %> (<% Util.diffFromNow (#stamp req) %> ago)</td> </tr>
 <tr> <td>Node:</td> <td colspan="2"><% Web.html (Init.nodeName (#node req)) %></td> </tr>
 <tr> <td>Packages:</td><%
        ref first = true;
@@ -118,7 +118,7 @@ elseif $"cmd" = "list" then
 <br><hr><br>
 <table class="blanks">
 <tr> <td>By:</td> <td colspan="2"><a href="user?id=<% #usr req %>"><% name %></a></td> </tr>
-<tr> <td>Time:</td> <td colspan="2"><% #stamp req %></td> </tr>
+<tr> <td>Time:</td> <td colspan="2"><% #stamp req %> (<% Util.diffFromNow (#stamp req) %> ago)</td> </tr>
 <tr> <td>Node:</td> <td colspan="2"><% Web.html (Init.nodeName (#node req)) %></td> </tr>
 <tr> <td>Packages:</td><%
        ref first = true;
@@ -163,7 +163,7 @@ elseif $"mod" <> "" then
 <input type="hidden" name="save" value="<% id %>">
 <table class="blanks">
 <tr> <td>Requestor:</td> <td><a href="user?id=<% #usr req %>"><% #name user %></a></td> </tr>
-<tr> <td>Time:</td> <td><% #stamp req %></td> </tr>
+<tr> <td>Time:</td> <td><% #stamp req %> (<% Util.diffFromNow (#stamp req) %> ago)</td> </tr>
 <tr> <td>Node:</td> <td><select name="node">
 <% foreach node in Init.listNodes () do %>
        <option value="<% #id node %>"<% if #id node = #node req then %> selected<% end %>><% Web.html (#name node) %> (<% Web.html (#descr node) %>; Debian <% Web.html (#debian node) %>)</option>
index 3e033df..36e908f 100644 (file)
--- a/cert.mlt
+++ b/cert.mlt
@@ -44,7 +44,7 @@ elseif $"cmd" = "open" then
 <br><hr><br>
 <table class="blanks">
 <tr> <td>By:</td> <td><a href="user?id=<% #usr req %>"><% name %></a></td> </tr>
-<tr> <td>Time:</td> <td><% #stamp req %></td> </tr>
+<tr> <td>Time:</td> <td><% #stamp req %> (<% Util.diffFromNow (#stamp req) %> ago)</td> </tr>
 <tr> <td>Request:</td> <td><% #data req %></td> </tr>
 <tr> <td>Reason:</td> <td><% Web.html (#msg req) %></td> </tr>
 </table>
@@ -65,7 +65,7 @@ elseif $"cmd" = "list" then
 <br><hr><br>
 <table class="blanks">
 <tr> <td>By:</td> <td><a href="user?id=<% #usr req %>"><% name %></a></td> </tr>
-<tr> <td>Time:</td> <td><% #stamp req %></td> </tr>
+<tr> <td>Time:</td> <td><% #stamp req %> (<% Util.diffFromNow (#stamp req) %> ago)</td> </tr>
 <tr> <td>Request:</td> <td><% #data req %></td> </tr>
 <tr> <td>Reason:</td> <td><% Web.html (#msg req) %></td> </tr>
 </table>
@@ -89,7 +89,7 @@ elseif $"mod" <> "" then
 <input type="hidden" name="save" value="<% id %>">
 <table class="blanks">
 <tr> <td>Requestor:</td> <td><a href="user?id=<% #usr req %>"><% #name user %></a></td> </tr>
-<tr> <td>Time:</td> <td><% #stamp req %></td> </tr>
+<tr> <td>Time:</td> <td><% #stamp req %> (<% Util.diffFromNow (#stamp req) %> ago)</td> </tr>
 <tr> <td>Status:</td> <td><select name="status">
        <option value="0"<% if #status req = Cert.NEW then %> selected<% end %>>New</option>
        <option value="1"<% if #status req = Cert.INSTALLED then %> selected<% end %>>Installed</option>
index 99b6a8e..3b53b62 100644 (file)
@@ -27,7 +27,7 @@ elseif $"cmd" = "open" then
 <br><hr><br>
 <table class="blanks">
 <tr> <td>By:</td> <td><a href="user?id=<% #usr req %>"><% name %></a></td> </tr>
-<tr> <td>Time:</td> <td><% #stamp req %></td> </tr>
+<tr> <td>Time:</td> <td><% #stamp req %> (<% Util.diffFromNow (#stamp req) %> ago)</td> </tr>
 <tr> <td>Domain:</td> <td><a href="<% Util.whoisUrl (#data req) %>"><% #data req %></a></td> </tr>
 <tr> <td>Reason:</td> <td colspan="2"><% Web.html (#msg req) %></td> </tr>
 </table>
@@ -48,7 +48,7 @@ elseif $"cmd" = "list" then
 <br><hr><br>
 <table class="blanks">
 <tr> <td>By:</td> <td colspan="2"><a href="user?id=<% #usr req %>"><% name %></a></td> </tr>
-<tr> <td>Time:</td> <td colspan="2"><% #stamp req %></td> </tr>
+<tr> <td>Time:</td> <td colspan="2"><% #stamp req %> (<% Util.diffFromNow (#stamp req) %> ago)</td> </tr>
 <tr> <td>Domain:</td> <td><a href="<% Util.whoisUrl (#data req) %>"><% #data req %></a></td> </tr>
 <tr> <td>Reason:</td> <td colspan="2"><% Web.html (#msg req) %></td> </tr>
 </table>
@@ -72,7 +72,7 @@ elseif $"mod" <> "" then
 <input type="hidden" name="save" value="<% id %>">
 <table class="blanks">
 <tr> <td>Requestor:</td> <td><a href="user?id=<% #usr req %>"><% #name user %></a></td> </tr>
-<tr> <td>Time:</td> <td><% #stamp req %></td> </tr>
+<tr> <td>Time:</td> <td><% #stamp req %> (<% Util.diffFromNow (#stamp req) %> ago)</td> </tr>
 <tr> <td>Status</b>:</td> <td><select name="status">
        <option value="0"<% if #status req = Domain.NEW then %> selected<% end %>>New</option>
        <option value="1"<% if #status req = Domain.INSTALLED then %> selected<% end %>>Installed</option>
diff --git a/ip.mlt b/ip.mlt
index edbad91..3bb41ff 100644 (file)
--- a/ip.mlt
+++ b/ip.mlt
@@ -28,7 +28,7 @@ elseif $"cmd" = "open" then
 <br><hr><br>
 <table class="blanks">
 <tr> <td>By:</td> <td><a href="user?id=<% #usr req %>"><% name %></a></td> </tr>
-<tr> <td>Time:</td> <td><% #stamp req %></td> </tr>
+<tr> <td>Time:</td> <td><% #stamp req %> (<% Util.diffFromNow (#stamp req) %> ago)</td> </tr>
 <tr> <td>Node:</td> <td><% Web.html (Init.nodeName (#node req)) %></td> </tr>
 <tr> <td>Port:</td> <td><% #data req %></td> </tr>
 <tr> <td>Reason:</td> <td><% Web.html (#msg req) %></td> </tr>
@@ -50,7 +50,7 @@ elseif $"cmd" = "list" then
 <br><hr><br>
 <table class="blanks">
 <tr> <td>By:</td> <td><a href="user?id=<% #usr req %>"><% name %></a></td> </tr>
-<tr> <td>Time:</td> <td><% #stamp req %></td> </tr>
+<tr> <td>Time:</td> <td><% #stamp req %> (<% Util.diffFromNow (#stamp req) %> ago)</td> </tr>
 <tr> <td>Node:</td> <td><% Web.html (Init.nodeName (#node req)) %></td> </tr>
 <tr> <td>Port:</td> <td><% #data req %></td> </tr>
 <tr> <td>Reason:</td> <td><% Web.html (#msg req) %></td> </tr>
@@ -75,7 +75,7 @@ elseif $"mod" <> "" then
 <input type="hidden" name="save" value="<% id %>">
 <table class="blanks">
 <tr> <td>Requestor:</td> <td><a href="user?id=<% #usr req %>"><% #name user %></a></td> </tr>
-<tr> <td>Time:</td> <td><% #stamp req %></td> </tr>
+<tr> <td>Time:</td> <td><% #stamp req %> (<% Util.diffFromNow (#stamp req) %> ago)</td> </tr>
 <tr> <td>Node:</td> <td><select name="node">
 <% foreach node in Init.listNodes () do %>
        <option value="<% #id node %>"<% if #id node = #node req then %> selected<% end %>><% Web.html (#name node) %> (<% Web.html (#descr node) %>; Debian <% Web.html (#debian node) %>)</option>
index 498fe7a..45ec388 100644 (file)
--- a/list.mlt
+++ b/list.mlt
@@ -22,7 +22,7 @@ elseif $"cmd" = "open" then
 <br><hr><br>
 <table class="blanks">
 <tr> <td>By:</td> <td><a href="user?id=<% #usr req %>"><% name %></a></td> </tr>
-<tr> <td>Time:</td> <td><% #stamp req %></td> </tr>
+<tr> <td>Time:</td> <td><% #stamp req %> (<% Util.diffFromNow (#stamp req) %> ago)</td> </tr>
 <tr> <td>List name:</td> <td><% #data req %></td> </tr>
 <tr> <td>Reason:</td> <td colspan="2"><% Web.html (#msg req) %></td> </tr>
 </table>
@@ -44,7 +44,7 @@ elseif $"cmd" = "list" then
 <br><hr><br>
 <table class="blanks">
 <tr> <td>By:</td> <td colspan="2"><a href="user?id=<% #usr req %>"><% name %></a></td> </tr>
-<tr> <td>Time:</td> <td colspan="2"><% #stamp req %></td> </tr>
+<tr> <td>Time:</td> <td colspan="2"><% #stamp req %> (<% Util.diffFromNow (#stamp req) %> ago)</td> </tr>
 <tr> <td>List name:</td> <td><% #data req %></td> </tr>
 <tr> <td>Reason:</td> <td colspan="2"><% Web.html (#msg req) %></td> </tr>
 </table>
@@ -68,7 +68,7 @@ elseif $"mod" <> "" then
 <input type="hidden" name="save" value="<% id %>">
 <table class="blanks">
 <tr> <td>Requestor:</td> <td><a href="user?id=<% #usr req %>"><% #name user %></a></td> </tr>
-<tr> <td>Time:</td> <td><% #stamp req %></td> </tr>
+<tr> <td>Time:</td> <td><% #stamp req %> (<% Util.diffFromNow (#stamp req) %> ago)</td> </tr>
 <tr> <td>Status:</td> <td><select name="status">
        <option value="0"<% if #status req = MailingList.NEW then %> selected<% end %>>New</option>
        <option value="1"<% if #status req = MailingList.INSTALLED then %> selected<% end %>>Installed</option>
index 64b99d8..8d32896 100644 (file)
--- a/quota.mlt
+++ b/quota.mlt
@@ -51,7 +51,7 @@ elseif $"cmd" = "open" then
 <br><hr><br>
 <table class="blanks">
 <tr> <td>By:</td> <td><a href="user?id=<% #usr req %>"><% name %></a></td> </tr>
-<tr> <td>Time:</td> <td><% #stamp req %></td> </tr>
+<tr> <td>Time:</td> <td><% #stamp req %> (<% Util.diffFromNow (#stamp req) %> ago)</td> </tr>
 <tr> <td>Request:</td> <td><% Web.htmlNl (#data req) %></td> </tr>
 <tr> <td>Reason:</td> <td><% Web.html (#msg req) %></td> </tr>
 </table>
@@ -71,7 +71,7 @@ elseif $"cmd" = "list" then
 <br><hr><br>
 <table class="blanks">
 <tr> <td>By:</td> <td><a href="user?id=<% #usr req %>"><% name %></a></td> </tr>
-<tr> <td>Time:</td> <td><% #stamp req %></td> </tr>
+<tr> <td>Time:</td> <td><% #stamp req %> (<% Util.diffFromNow (#stamp req) %> ago)</td> </tr>
 <tr> <td>Request:</td> <td><% Web.htmlNl (#data req) %></td> </tr>
 <tr> <td>Reason:</td> <td><% Web.html (#msg req) %></td> </tr>
 </table>
@@ -95,7 +95,7 @@ elseif $"mod" <> "" then
 <input type="hidden" name="save" value="<% id %>">
 <table class="blanks">
 <tr> <td>Requestor:</td> <td><a href="user?id=<% #usr req %>"><% #name user %></a></td> </tr>
-<tr> <td>Time:</td> <td><% #stamp req %></td> </tr>
+<tr> <td>Time:</td> <td><% #stamp req %> (<% Util.diffFromNow (#stamp req) %> ago)</td> </tr>
 <tr> <td>Status:</td> <td><select name="status">
        <option value="0"<% if #status req = Quota.NEW then %> selected<% end %>>New</option>
        <option value="1"<% if #status req = Quota.INSTALLED then %> selected<% end %>>Installed</option>
diff --git a/sec.mlt b/sec.mlt
index ba58b95..286e68b 100644 (file)
--- a/sec.mlt
+++ b/sec.mlt
@@ -132,7 +132,7 @@ elseif $"cmd" = "open" then
 <br><hr><br>
 <table class="blanks">
 <tr> <td>By:</td> <td><a href="user?id=<% #usr req %>"><% name %></a></td> </tr>
-<tr> <td>Time:</td> <td><% #stamp req %></td> </tr>
+<tr> <td>Time:</td> <td><% #stamp req %> (<% Util.diffFromNow (#stamp req) %> ago)</td></tr>
 <tr> <td>Node:</td> <td><% Web.html (Init.nodeName (#node req)) %></td> </tr>
 <tr> <td>Request:</td> <td><% #data req %></td> </tr>
 <tr> <td>Msg:</td> <td colspan="2"><% Web.html (#msg req) %></td> </tr>
@@ -153,7 +153,7 @@ elseif $"cmd" = "list" then
 <br><hr><br>
 <table class="blanks">
 <tr> <td>By:</td> <td colspan="2"><a href="user?id=<% #usr req %>"><% name %></a></td> </tr>
-<tr> <td>Time:</td> <td colspan="2"><% #stamp req %></td> </tr>
+<tr> <td>Time:</td> <td colspan="2"><% #stamp req %> (<% Util.diffFromNow (#stamp req) %> ago)</td></tr>
 <tr> <td>Node:</td> <td><% Web.html (Init.nodeName (#node req)) %></td> </tr>
 <tr> <td>Request:</td> <td><% #data req %></td> </tr>
 <tr> <td>Reason:</td> <td colspan="2"><% Web.html (#msg req) %></td> </tr>
@@ -177,7 +177,7 @@ elseif $"mod" <> "" then
 <input type="hidden" name="save" value="<% id %>">
 <table class="blanks">
 <tr> <td>Requestor:</td> <td><a href="user?id=<% #usr req %>"><% #name user %></a></td> </tr>
-<tr> <td>Time:</td> <td><% #stamp req %></td> </tr>
+<tr> <td>Time:</td> <td><% #stamp req %> (<% Util.diffFromNow (#stamp req) %> ago)</td></tr>
 <tr> <td>Status:</td> <td><select name="status">
        <option value="0"<% if #status req = Sec.Req.NEW then %> selected<% end %>>New</option>
        <option value="1"<% if #status req = Sec.Req.INSTALLED then %> selected<% end %>>Installed</option>
index 1f46916..71abe39 100644 (file)
--- a/util.sig
+++ b/util.sig
@@ -32,4 +32,6 @@ sig
 
     val allLower : string -> string
     val normEmail : string -> string
+
+    val diffFromNow : Time.time -> string
 end
index ee6c872..2193512 100644 (file)
--- a/util.sml
+++ b/util.sml
@@ -87,4 +87,22 @@ fun normEmail s = case String.tokens Char.isSpace (allLower s) of
                      s :: _ => s
                    | [] => ""
 
+val s_cutoff = LargeInt.fromInt 60
+val m_cutoff = LargeInt.fromInt (60 * 60)
+val h_cutoff = LargeInt.fromInt (60 * 60 * 24)
+
+fun diffFromNow t =
+    let
+       val secs = Time.toSeconds (Time.- (Time.now (), t))
+    in
+       if LargeInt.< (secs, s_cutoff) then
+           LargeInt.toString secs ^ " seconds"
+       else if LargeInt.< (secs, m_cutoff) then
+           LargeInt.toString (LargeInt.div (secs, s_cutoff)) ^ " minutes"
+       else if LargeInt.< (secs, h_cutoff) then
+           LargeInt.toString (LargeInt.div (secs, m_cutoff)) ^ " hours"
+       else
+           LargeInt.toString (LargeInt.div (secs, h_cutoff)) ^ " days"
+    end
+
 end