2023-08-16 14:29:17 (UTC-03:00)
Marcel Rodrigues <marcelgmr@gmail.com>
use select list to add project members
diff --git a/data.lua b/data.lua index 18a0ea5..3382bef 100644 --- a/data.lua +++ b/data.lua @@ -195,6 +195,17 @@ function Model:get_members(proj_id) ]], proj_id) end +function Model:get_non_members(proj_id) + return self.db:execute([[ + SELECT User.nick, User.name + FROM User + LEFT JOIN Membership ON + User.id = Membership.user_id AND Membership.proj_id = ? + WHERE Membership.user_id IS NULL + ORDER BY User.nick; + ]], proj_id) +end + function Model:add_member(proj_id, nick) local user = self:get_user(nick) if user == nil then return false end diff --git a/skopos.lua b/skopos.lua index c74f65a..764dcdb 100644 --- a/skopos.lua +++ b/skopos.lua @@ -296,7 +296,10 @@ function App:routes() local proj = self.model:get_user_project(user.id, name) if proj == nil then return "not found", 404 end local members = self.model:get_members(proj.id) - local env = {title=self.title, user=user, proj=proj, members=members} + local rest = self.model:get_non_members(proj.id) + local env = { + title=self.title, user=user, proj=proj, members=members, rest=rest + } return {fname="view/members.html", env=env} end}, {"POST", "/p/([-_%w]+)/m/add", diff --git a/view/members.html b/view/members.html index 48a5c3b..4e414ae 100644 --- a/view/members.html +++ b/view/members.html @@ -32,7 +32,12 @@ </table> <br> <form class="centered" action="/p/{{$proj.name}}/m/add" method="post"> - <input type="text" name="username" placeholder="Username" required pattern="[-_A-Za-z0-9]+"> + <select name="username" required> + <option value="">--user--</option> + % for u in $rest do + <option value="{{$u.nick}}">{{$u.name}}</option> + % end + </select> <input type="submit" value="add"></li> </form> </body>