# HG changeset patch # User bsw # Date 1340191869 -7200 # Node ID c676054cb0bc1b61de46d8b94cba4607fd386505 # Parent 878081c5118912488d959823a00e8332cb9cad7e Some improvements to admin member section diff -r 878081c51189 -r c676054cb0bc app/main/admin/_action/member_update.lua --- a/app/main/admin/_action/member_update.lua Wed Jun 20 13:30:47 2012 +0200 +++ b/app/main/admin/_action/member_update.lua Wed Jun 20 13:31:09 2012 +0200 @@ -2,11 +2,7 @@ local member = Member:by_id(id) or Member:new() -param.update(member, "identification", "notify_email", "admin") - -if param.get("invite_member", atom.boolean) then - member:send_invitation() -end +param.update(member, "identification", "notify_email", "admin", "locked") local err = member:try_save() @@ -43,6 +39,10 @@ end end +if not member.activated and param.get("invite_member", atom.boolean) then + member:send_invitation() +end + if id then slot.put_into("notice", _"Member successfully updated") else diff -r 878081c51189 -r c676054cb0bc app/main/admin/member_edit.lua --- a/app/main/admin/member_edit.lua Wed Jun 20 13:30:47 2012 +0200 +++ b/app/main/admin/member_edit.lua Wed Jun 20 13:31:09 2012 +0200 @@ -3,9 +3,9 @@ local member = Member:by_id(id) if member then - slot.put_into("title", encode.html(_("Member: '#{login}' (#{name})", { login = member.login, name = member.name }))) + ui.title(_("Member: '#{identification}' (#{name})", { identification = member.identification, name = member.name })) else - slot.put_into("title", encode.html(_"Register new member")) + ui.title(_"Register new member") end local units_selector = Unit:new_selector() @@ -35,6 +35,9 @@ content = function() ui.field.text{ label = _"Identification", name = "identification" } ui.field.text{ label = _"Notification email", name = "notify_email" } + if member and member.login then + ui.field.text{ label = _"Login name", name = "login" } + end ui.field.boolean{ label = _"Admin?", name = "admin" } slot.put("
") @@ -48,7 +51,15 @@ end slot.put("

") - ui.field.boolean{ label = _"Send invite?", name = "invite_member" } + if not member or not member.activated then + ui.field.boolean{ label = _"Send invite?", name = "invite_member" } + end + + if member then + ui.field.boolean{ label = _"Lock member?", name = "locked" } + end + + slot.put("
") ui.submit{ text = _"Save" } end } diff -r 878081c51189 -r c676054cb0bc app/main/admin/member_list.lua --- a/app/main/admin/member_list.lua Wed Jun 20 13:30:47 2012 +0200 +++ b/app/main/admin/member_list.lua Wed Jun 20 13:31:09 2012 +0200 @@ -1,40 +1,63 @@ local show_locked = param.get("show_locked", atom.boolean) -local members_selector = Member:build_selector{ - active = not show_locked, - order = "login" +local locked = show_locked or false +local search = param.get("search") +if search then + locked = nil +end + +local members_selector = Member:build_selector{ + admin_search = search, + locked = locked, + order = "identification" } -slot.put_into("title", _"Member list") +ui.title(_"Member list") -slot.select("actions", function() - ui.link{ - attr = { class = { "admin_only" } }, - text = _"Register new member", - module = "admin", - view = "member_edit" - } - if show_locked then - ui.link{ - attr = { class = { "admin_only" } }, - text = _"Show active members", - module = "admin", - view = "member_list" - } - else - ui.link{ - attr = { class = { "admin_only" } }, - text = _"Show locked members", - module = "admin", - view = "member_list", - params = { show_locked = true } - } - end +slot.select("head", function() + ui.container{ attr = { class = "content" }, content = function() + ui.container{ attr = { class = "actions" }, content = function() + ui.link{ + attr = { class = { "admin_only" } }, + text = _"Register new member", + module = "admin", + view = "member_edit" + } + slot.put(" · ") + if show_locked then + ui.link{ + attr = { class = { "admin_only" } }, + text = _"Show active members", + module = "admin", + view = "member_list" + } + else + ui.link{ + attr = { class = { "admin_only" } }, + text = _"Show locked members", + module = "admin", + view = "member_list", + params = { show_locked = true } + } + end + end } + end } end) +ui.form{ + module = "admin", view = "member_list", + content = function() + + ui.field.text{ label = _"Search for members", name = "search" } + + ui.submit{ value = _"Start search" } + + end +} + ui.paginate{ selector = members_selector, per_page = 30, @@ -48,27 +71,29 @@ name = "id" }, { - label = _"Login", - name = "login" + label = _"Identification", + name = "identification" }, { - label = _"Name", + label = _"Screen name", + name = "name" + }, + { + label = _"Admin?", content = function(record) - util.put_highlighted_string(record.name) + if record.admin then + ui.field.text{ value = "admin" } + end end }, { - label = _"Ident number", - name = "ident_number" - }, - { - label = _"Admin?", - name = "admin" - }, - { content = function(record) - if not record.active then + if record.locked then ui.field.text{ value = "locked" } + elseif not record.activated then + ui.field.text{ value = "not activated" } + elseif not record.active then + ui.field.text{ value = "inactive" } end end }, diff -r 878081c51189 -r c676054cb0bc model/member.lua --- a/model/member.lua Wed Jun 20 13:30:47 2012 +0200 +++ b/model/member.lua Wed Jun 20 13:31:09 2012 +0200 @@ -241,6 +241,9 @@ if args.active ~= nil then selector:add_where{ "member.active = ?", args.active } end + if args.locked ~= nil then + selector:add_where{ "member.locked = ?", args.locked } + end if args.is_contact_of_member_id then selector:join("contact", "__model_member__contact", "member.id = __model_member__contact.other_member_id") selector:add_where{ "__model_member__contact.member_id = ?", args.is_contact_of_member_id } @@ -248,11 +251,15 @@ if args.voting_right_for_unit_id then selector:join("privilege", "__model_member__privilege", { "member.id = __model_member__privilege.member_id AND __model_member__privilege.voting_right AND __model_member__privilege.unit_id = ?", args.voting_right_for_unit_id }) end + if args.admin_search then + local search_string = "%" .. args.admin_search .. "%" + selector:add_where{ "member.identification ILIKE ? OR member.name ILIKE ?", search_string, search_string } + end if args.order then if args.order == "id" then selector:add_order_by("id") - elseif args.order == "login" then - selector:add_order_by("login") + elseif args.order == "identification" then + selector:add_order_by("identification") elseif args.order == "name" then selector:add_order_by("name") else