liquid_feedback_frontend

changeset 581:c676054cb0bc

Some improvements to admin member section
author bsw
date Wed Jun 20 13:31:09 2012 +0200 (2012-06-20)
parents 878081c51189
children 09a91ebcbb8c
files app/main/admin/_action/member_update.lua app/main/admin/member_edit.lua app/main/admin/member_list.lua model/member.lua
line diff
     1.1 --- a/app/main/admin/_action/member_update.lua	Wed Jun 20 13:30:47 2012 +0200
     1.2 +++ b/app/main/admin/_action/member_update.lua	Wed Jun 20 13:31:09 2012 +0200
     1.3 @@ -2,11 +2,7 @@
     1.4  
     1.5  local member = Member:by_id(id) or Member:new()
     1.6  
     1.7 -param.update(member, "identification", "notify_email", "admin")
     1.8 -
     1.9 -if param.get("invite_member", atom.boolean) then
    1.10 -  member:send_invitation()
    1.11 -end
    1.12 +param.update(member, "identification", "notify_email", "admin", "locked")
    1.13  
    1.14  local err = member:try_save()
    1.15  
    1.16 @@ -43,6 +39,10 @@
    1.17    end
    1.18  end
    1.19  
    1.20 +if not member.activated and param.get("invite_member", atom.boolean) then
    1.21 +  member:send_invitation()
    1.22 +end
    1.23 +
    1.24  if id then
    1.25    slot.put_into("notice", _"Member successfully updated")
    1.26  else
     2.1 --- a/app/main/admin/member_edit.lua	Wed Jun 20 13:30:47 2012 +0200
     2.2 +++ b/app/main/admin/member_edit.lua	Wed Jun 20 13:31:09 2012 +0200
     2.3 @@ -3,9 +3,9 @@
     2.4  local member = Member:by_id(id)
     2.5  
     2.6  if member then
     2.7 -  slot.put_into("title", encode.html(_("Member: '#{login}' (#{name})", { login = member.login, name = member.name })))
     2.8 +  ui.title(_("Member: '#{identification}' (#{name})", { identification = member.identification, name = member.name }))
     2.9  else
    2.10 -  slot.put_into("title", encode.html(_"Register new member"))
    2.11 +  ui.title(_"Register new member")
    2.12  end
    2.13  
    2.14  local units_selector = Unit:new_selector()
    2.15 @@ -35,6 +35,9 @@
    2.16    content = function()
    2.17      ui.field.text{     label = _"Identification", name = "identification" }
    2.18      ui.field.text{     label = _"Notification email", name = "notify_email" }
    2.19 +    if member and member.login then
    2.20 +      ui.field.text{     label = _"Login name",        name = "login" }
    2.21 +    end
    2.22      ui.field.boolean{  label = _"Admin?",       name = "admin" }
    2.23  
    2.24      slot.put("<br />")
    2.25 @@ -48,7 +51,15 @@
    2.26      end
    2.27      slot.put("<br /><br />")
    2.28  
    2.29 -    ui.field.boolean{  label = _"Send invite?",       name = "invite_member" }
    2.30 +    if not member or not member.activated then
    2.31 +      ui.field.boolean{  label = _"Send invite?",       name = "invite_member" }
    2.32 +    end
    2.33 +    
    2.34 +    if member then
    2.35 +      ui.field.boolean{  label = _"Lock member?",       name = "locked" }
    2.36 +    end
    2.37 +    
    2.38 +    slot.put("<br />")
    2.39      ui.submit{         text  = _"Save" }
    2.40    end
    2.41  }
     3.1 --- a/app/main/admin/member_list.lua	Wed Jun 20 13:30:47 2012 +0200
     3.2 +++ b/app/main/admin/member_list.lua	Wed Jun 20 13:31:09 2012 +0200
     3.3 @@ -1,40 +1,63 @@
     3.4  local show_locked = param.get("show_locked", atom.boolean)
     3.5  
     3.6 -local members_selector = Member:build_selector{ 
     3.7 -  active = not show_locked,
     3.8 -  order = "login"
     3.9 +local locked = show_locked or false
    3.10 +local search = param.get("search")
    3.11 +if search then
    3.12 +  locked = nil
    3.13 +end
    3.14 +
    3.15 +local members_selector = Member:build_selector{
    3.16 +  admin_search = search,
    3.17 +  locked = locked,
    3.18 +  order = "identification"
    3.19  }
    3.20  
    3.21  
    3.22 -slot.put_into("title", _"Member list")
    3.23 +ui.title(_"Member list")
    3.24  
    3.25  
    3.26 -slot.select("actions", function()
    3.27 -  ui.link{
    3.28 -    attr = { class = { "admin_only" } },
    3.29 -    text = _"Register new member",
    3.30 -    module = "admin",
    3.31 -    view = "member_edit"
    3.32 -  }
    3.33 -  if show_locked then
    3.34 -    ui.link{
    3.35 -      attr = { class = { "admin_only" } },
    3.36 -      text = _"Show active members",
    3.37 -      module = "admin",
    3.38 -      view = "member_list"
    3.39 -    }
    3.40 -  else
    3.41 -    ui.link{
    3.42 -      attr = { class = { "admin_only" } },
    3.43 -      text = _"Show locked members",
    3.44 -      module = "admin",
    3.45 -      view = "member_list",
    3.46 -      params = { show_locked = true }
    3.47 -    }
    3.48 -  end
    3.49 +slot.select("head", function()
    3.50 +  ui.container{ attr = { class = "content" }, content = function()
    3.51 +    ui.container{ attr = { class = "actions" }, content = function()
    3.52 +      ui.link{
    3.53 +        attr = { class = { "admin_only" } },
    3.54 +        text = _"Register new member",
    3.55 +        module = "admin",
    3.56 +        view = "member_edit"
    3.57 +      }
    3.58 +      slot.put(" &middot; ")
    3.59 +      if show_locked then
    3.60 +        ui.link{
    3.61 +          attr = { class = { "admin_only" } },
    3.62 +          text = _"Show active members",
    3.63 +          module = "admin",
    3.64 +          view = "member_list"
    3.65 +        }
    3.66 +      else
    3.67 +        ui.link{
    3.68 +          attr = { class = { "admin_only" } },
    3.69 +          text = _"Show locked members",
    3.70 +          module = "admin",
    3.71 +          view = "member_list",
    3.72 +          params = { show_locked = true }
    3.73 +        }
    3.74 +      end
    3.75 +    end }
    3.76 +  end }
    3.77  end)
    3.78  
    3.79  
    3.80 +ui.form{
    3.81 +  module = "admin", view = "member_list",
    3.82 +  content = function()
    3.83 +  
    3.84 +    ui.field.text{ label = _"Search for members", name = "search" }
    3.85 +    
    3.86 +    ui.submit{ value = _"Start search" }
    3.87 +  
    3.88 +  end
    3.89 +}
    3.90 +
    3.91  ui.paginate{
    3.92    selector = members_selector,
    3.93    per_page = 30,
    3.94 @@ -48,27 +71,29 @@
    3.95            name = "id"
    3.96          },
    3.97          {
    3.98 -          label = _"Login",
    3.99 -          name = "login"
   3.100 +          label = _"Identification",
   3.101 +          name = "identification"
   3.102          },
   3.103          {
   3.104 -          label = _"Name",
   3.105 +          label = _"Screen name",
   3.106 +          name = "name"
   3.107 +        },
   3.108 +        {
   3.109 +          label = _"Admin?",
   3.110            content = function(record)
   3.111 -            util.put_highlighted_string(record.name)
   3.112 +            if record.admin then
   3.113 +              ui.field.text{ value = "admin" }
   3.114 +            end
   3.115            end
   3.116          },
   3.117          {
   3.118 -          label = _"Ident number",
   3.119 -          name = "ident_number"
   3.120 -        },
   3.121 -        {
   3.122 -          label = _"Admin?",
   3.123 -          name = "admin"
   3.124 -        },
   3.125 -        {
   3.126            content = function(record)
   3.127 -            if not record.active then
   3.128 +            if record.locked then
   3.129                ui.field.text{ value = "locked" }
   3.130 +            elseif not record.activated then
   3.131 +              ui.field.text{ value = "not activated" }
   3.132 +            elseif not record.active then
   3.133 +              ui.field.text{ value = "inactive" }
   3.134              end
   3.135            end
   3.136          },
     4.1 --- a/model/member.lua	Wed Jun 20 13:30:47 2012 +0200
     4.2 +++ b/model/member.lua	Wed Jun 20 13:31:09 2012 +0200
     4.3 @@ -241,6 +241,9 @@
     4.4    if args.active ~= nil then
     4.5      selector:add_where{ "member.active = ?", args.active }
     4.6    end
     4.7 +  if args.locked ~= nil then
     4.8 +    selector:add_where{ "member.locked = ?", args.locked }
     4.9 +  end
    4.10    if args.is_contact_of_member_id then
    4.11      selector:join("contact", "__model_member__contact", "member.id = __model_member__contact.other_member_id")
    4.12      selector:add_where{ "__model_member__contact.member_id = ?", args.is_contact_of_member_id }
    4.13 @@ -248,11 +251,15 @@
    4.14    if args.voting_right_for_unit_id then
    4.15      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 })
    4.16    end
    4.17 +  if args.admin_search then
    4.18 +    local search_string = "%" .. args.admin_search .. "%"
    4.19 +    selector:add_where{ "member.identification ILIKE ? OR member.name ILIKE ?", search_string, search_string }
    4.20 +  end
    4.21    if args.order then
    4.22      if args.order == "id" then
    4.23        selector:add_order_by("id")
    4.24 -    elseif args.order == "login" then
    4.25 -      selector:add_order_by("login")
    4.26 +    elseif args.order == "identification" then
    4.27 +      selector:add_order_by("identification")
    4.28      elseif args.order == "name" then
    4.29        selector:add_order_by("name")
    4.30      else

Impressum / About Us