c55ffcce495782cc6b3f1c2e0feea492cbc39dc4
[hcoop/zz_old/portal.git] / users.mlt
1 <% Group.requireGroupNum 0;
2
3 @header [("title", ["Member management"])];
4
5 ref showNormal = true;
6
7 if $"cmd" = "Create" then
8 if not (Init.validUsername ($"name")) then %>
9 <h3><b>Invalid username</b></h3>
10 <% else switch Init.userNameToId ($"name") of
11 SOME _ => %>
12 <h3><b>Username already in use</b></h3>
13 <% | NONE =>
14 val bal =
15 (case $"bal" of
16 "" => Balance.addBalance ($"name")
17 | s => Web.stoi s);
18
19 val id = Init.addUser ($"name", $"rname", bal);
20 Group.addToGroups (id, map Web.stoi (Web.getMultiParam "grp"));
21
22 if $"amount" <> "" then
23 val amount = Web.stor ($"amount");
24 val trn = Money.addTransaction ($"descr", amount, Init.dateString ());
25 Money.addCharge {trn = trn, usr = id, amount = amount};
26 Money.applyCharges trn
27 end;
28
29 if $"subscribe" = "on" then
30 if not (Pref.subscribe ("hcoop-announce", $"name" ^ "@hcoop.net")) then
31 %><h3><b>Error subscribing to hcoop-announce</b></h3><%
32 end
33 end %>
34 <h3><b>Member added</b></h3>
35 <% end
36 end
37 elseif $"mod" <> "" then
38 showNormal := false;
39 val user = Init.lookupUser (Web.stoi ($"mod")) %>
40 <h3><b>Modify member record</b></h3>
41
42 <form action="users">
43 <input type="hidden" name="id" value="<% $"mod" %>">
44 <table>
45 <tr> <td align="right"><b>Name</b>:</td> <td><input name="name" value="<% #name user %>"></td> </tr>
46 <tr> <td align="right"><b>Real name</b>:</td> <td><input name="rname" value="<% #rname user %>"></td> </tr>
47 <tr> <td align="right" valign="top"><b>Funded by</b>:</td> <td><select name="bal">
48 <% foreach bal in Balance.listBalances () do %>
49 <option value="<% #id bal %>"<% if #bal user = #id bal then %> selected <% end %>><% Web.html (#name bal) %></option>
50 <% end %>
51 </select></td></tr>
52 <tr> <td><input type="submit" name="cmd" value="Save"></td> </tr>
53 </table>
54 </form>
55
56 <% elseif $"cmd" = "Save" then
57 val user = Init.lookupUser (Web.stoi ($"id"));
58 Init.modUser {user with name = $"name", bal = Web.stoi ($"bal")} %>
59 <h3><b>Member record saved.</b></h3>
60
61 <% elseif $"del" <> "" then
62 showNormal := false;
63 val user = Init.lookupUser (Web.stoi ($"del")) %>
64 <h3><b>Are you sure you want to delete member <a href="user?id=<% #id user %>"><% #name user %></a>?</b></h3>
65 <a href="users?del2=<% $"del" %>">Yes, delete <% #name user %>!</a>
66
67 <% elseif $"del2" <> "" then
68 val user = Init.lookupUser (Web.stoi ($"del2"));
69 Init.deleteUser (Web.stoi ($"del2")) %>
70 <h3><b><% #name user %> deleted!</b></h3>
71
72 <% end %>
73
74 <% if showNormal then %>
75 <h3><b>New member</b></h3>
76
77 <form action="users">
78 <table>
79 <tr> <td align="right"><b>Name</b>:</td> <td><input name="name"></td> </tr>
80 <tr> <td align="right"><b>Real name</b>:</td> <td><input name="rname"></td> </tr>
81 <tr> <td align="right" valign="top"><b>Funded by</b>:</td> <td><select name="bal">
82 <option value="">A new balance</option>
83 <% foreach bal in Balance.listBalances () do %>
84 <option value="<% #id bal %>"><% Web.html (#name bal) %></option>
85 <% end %>
86 </select></td></tr>
87 <tr> <td align="right"><b>Initial transaction amount</b>:</td> <td><input name="amount"></td> </tr>
88 <tr> <td align="right"><b>Initial transaction description</b>:</td> <td><input name="descr"></td> </tr>
89 <tr> <td align="right"><input type="checkbox" name="subscribe" checked></td> <td>Subscribe to hcoop-announce</td> </tr>
90 <tr> <td align="right"><b>Groups</b>:</td> <td><select name="grp" size="5" multiple>
91 <% foreach group in Group.listGroups () do %>
92 <option value="<% #id group %>"<% if #name group = "paying" then %> selected<% end %>><% Web.html (#name group) %></option>
93 <% end %>
94 </select></td></tr>
95 <tr> <td><input type="submit" name="cmd" value="Create"></td> </tr>
96 </table>
97 </form>
98
99 <h3><b>Manage current members</b></h3>
100
101 <table>
102 <% foreach user in Init.listUsers () do %>
103 <tr> <td><a href="user?id=<% #id user %>"><% Web.html (#name user) %></a></td> <td>
104 <% val bal = Balance.lookupBalance (#bal user);
105 if #name bal <> #name user then %>
106 <i><% Web.html (#name bal) %></i>
107 <% end %>
108 </td><td><a href="users?mod=<% #id user %>">[Modify]</a> <a href="users?del=<% #id user %>">[Delete]</a></td> </tr>
109 <% end %>
110 </table>
111
112 <% end %>
113
114 <% @footer [] %>