Join script should rule out retired usernames
[bpt/portal.git] / list.mlt
1 <% @header [("title", ["Mailing list creation requests"])];
2
3 val admin = Group.inGroupName "lists";
4
5 if $"req" <> "" then
6 val dom = $"req";
7 if Util.validEmail dom then
8 val id = MailingList.add (Init.getUserId(), dom, $"msg");
9 if not (MailingList.notifyNew id) then
10 %><h3>Error sending e-mail notification</h3><%
11 end
12 %><h3>Request added</h3><%
13 else
14 %><h3>Invalid list e-mail address</h3><%
15 end
16
17 elseif $"cmd" = "open" then
18 %><h3>Open requests</h3>
19 <a href="list?cmd=list">List all requests</a><%
20
21 foreach (name, req) in MailingList.listOpen () do %>
22 <br><hr><br>
23 <table class="blanks">
24 <tr> <td>By:</td> <td><a href="user?id=<% #usr req %>"><% name %></a></td> </tr>
25 <tr> <td>Time:</td> <td><% #stamp req %> (<% Util.diffFromNow (#stamp req) %> ago)</td> </tr>
26 <tr> <td>List name:</td> <td><% #data req %></td> </tr>
27 <tr> <td>Reason:</td> <td colspan="2"><% Web.html (#msg req) %></td> </tr>
28 </table>
29
30 <% if admin then
31 val vitals = MailingList.listWebHost (#data req) %>
32 <br>
33 <a href="list?mod=<% #id req %>">[Modify]</a>
34 <a href="list?del=<% #id req %>">[Delete]</a><br>
35 To set up, run: <tt>listnew <% #user vitals %>&nbsp;<% #dom vitals %>&nbsp;<% #vhost vitals %>&nbsp;<% name %>&nbsp;<% Util.randomPassword () %></tt>
36 <% end %>
37
38 <% end
39
40 elseif $"cmd" = "list" then
41 %><h3>All requests</h3><%
42
43 foreach (name, req) in MailingList.list () do %>
44 <br><hr><br>
45 <table class="blanks">
46 <tr> <td>By:</td> <td colspan="2"><a href="user?id=<% #usr req %>"><% name %></a></td> </tr>
47 <tr> <td>Time:</td> <td colspan="2"><% #stamp req %> (<% Util.diffFromNow (#stamp req) %> ago)</td> </tr>
48 <tr> <td>List name:</td> <td><% #data req %></td> </tr>
49 <tr> <td>Reason:</td> <td colspan="2"><% Web.html (#msg req) %></td> </tr>
50 </table>
51
52 <% if admin then %>
53 <br>
54 <a href="list?mod=<% #id req %>">[Modify]</a>
55 <a href="list?del=<% #id req %>">[Delete]</a>
56 <% end %>
57
58 <% end
59
60 elseif $"mod" <> "" then
61 Group.requireGroupName "lists";
62 val id = Web.stoi ($"mod");
63 val req = MailingList.lookup id;
64 val user = Init.lookupUser (#usr req) %>
65 <h3>Handle request</h3>
66
67 <form action="list" method="post">
68 <input type="hidden" name="save" value="<% id %>">
69 <table class="blanks">
70 <tr> <td>Requestor:</td> <td><a href="user?id=<% #usr req %>"><% #name user %></a></td> </tr>
71 <tr> <td>Time:</td> <td><% #stamp req %> (<% Util.diffFromNow (#stamp req) %> ago)</td> </tr>
72 <tr> <td>Status:</td> <td><select name="status">
73 <option value="0"<% if #status req = MailingList.NEW then %> selected<% end %>>New</option>
74 <option value="1"<% if #status req = MailingList.INSTALLED then %> selected<% end %>>Installed</option>
75 <option value="2"<% if #status req = MailingList.REJECTED then %> selected<% end %>>Rejected</option>
76 </select></td> </tr>
77 <tr> <td>List name:</td> <td><input name="dom" value="<% #data req %>"></td> </tr>
78 <tr> <td>Message:</td> <td><textarea name="msg" rows="10" cols="80" wrap="soft"><% Web.html (#msg req) %></textarea></td> </tr>
79 <tr> <td><input type="submit" value="Save"></td> </tr>
80 </table>
81 </form>
82
83 <% elseif $"save" <> "" then
84 Group.requireGroupName "lists";
85 val id = Web.stoi ($"save");
86 val req = MailingList.lookup id;
87 val oldStatus = #status req;
88 val newStatus = MailingList.statusFromInt (Web.stoi ($"status"));
89 MailingList.modify {req with data = $"dom", msg = $"msg", status = newStatus};
90 if not (MailingList.notifyMod (oldStatus, newStatus, Init.getUserName(), id)) then
91 %><h3>Error sending e-mail notification</h3><%
92 end
93 %><h3>Request modified</h3>
94 Back to: <a href="list?cmd=open">open requests</a>, <a href="list?cmd=list">all requests</a>
95
96 <% elseif $"del" <> "" then
97 Group.requireGroupName "lists";
98 val id = Web.stoi ($"del");
99 val req = MailingList.lookup id;
100 val user = Init.lookupUser (#usr req)
101 %><h3>Are you sure you want to delete request by <% #name user %> for <tt><% #data req %></tt>?</h3>
102 <a href="list?del2=<% id %>">Yes, I'm sure!</a>
103
104 <% elseif $"del2" <> "" then
105 Group.requireGroupName "lists";
106 val id = Web.stoi ($"del2");
107 MailingList.delete id
108 %><h3>Request deleted</b><h3>
109 Back to: <a href="list?cmd=open">open requests</a>, <a href="list?cmd=list">all requests</a>
110
111 <% else %>
112
113 <h3>Request new mailing list</h3>
114
115 <p>Enter here the e-mail address you would like for your list. Please keep in mind that the part of your list address before the "@" must be unique across all mailing lists we run. We may reject applications with overly general names here, especially names of current users or UNIX usernames that are likely to be chosen by future members. The "Reason" field is optional.</p>
116
117 <p>If you want to use the Mailman web interface on your new list, and you want this to appear on a different web virtual host than hcoop.net, then you should follow <a href="http://wiki.hcoop.net/MemberManual/Email/MailingLists">these instructions</a> <b>before</b> requesting the list. You should only need to follow the instructions once per domain.</p>
118
119 <form action="list" method="post">
120 <table class="blanks">
121 <tr> <td>List name:</td> <td><input name="req"></td> </tr>
122 <tr> <td>Reason:</td> <td><textarea name="msg" rows="5" cols="80" wrap="soft"></textarea></td> </tr>
123 <tr> <td><input type="submit" value="Request"></td> </tr>
124 </table>
125 </form>
126
127 <% end %>
128
129 <% @footer[] %>