# HG changeset patch # User bsw # Date 1289225084 -3600 # Node ID 46351752814fe8e1986a91afd15807b8d095320a # Parent 032346d7e21bac6bb6e7d8787d0dbcc12d0c15df Admin module refactored diff -r 032346d7e21b -r 46351752814f app/main/admin/_action/area_update.lua --- a/app/main/admin/_action/area_update.lua Mon Nov 08 02:39:30 2010 +0100 +++ b/app/main/admin/_action/area_update.lua Mon Nov 08 15:04:44 2010 +0100 @@ -1,16 +1,4 @@ -if not app.session.member.admin then - error() -end - -local id = param.get_id() - -local area -if id then - area = Area:new_selector():add_where{ "id = ?", id }:single_object_mode():exec() -else - area = Area:new() -end - +local area = Area:by_id(param.get_id()) or Area:new() param.update(area, "name", "description", "active") diff -r 032346d7e21b -r 46351752814f app/main/admin/_action/member_update.lua --- a/app/main/admin/_action/member_update.lua Mon Nov 08 02:39:30 2010 +0100 +++ b/app/main/admin/_action/member_update.lua Mon Nov 08 15:04:44 2010 +0100 @@ -1,16 +1,4 @@ -if not app.session.member.admin then - error('access denied') -end - -local id = param.get_id() - -local member - -if id then - member = Member:new_selector():add_where{"id = ?", id}:single_object_mode():exec() -else - member = Member:new() -end +local member = Member:by_id(param.get_id()) or Member:new() param.update(member, "login", "admin", "name", "active") diff -r 032346d7e21b -r 46351752814f app/main/admin/_filter/90_admin.lua --- a/app/main/admin/_filter/90_admin.lua Mon Nov 08 02:39:30 2010 +0100 +++ b/app/main/admin/_filter/90_admin.lua Mon Nov 08 15:04:44 2010 +0100 @@ -1,4 +1,4 @@ -if request.get_module() == "admin" and not app.session.member.admin then +if not app.session.member.admin then error('access denied') end diff -r 032346d7e21b -r 46351752814f app/main/admin/area_list.lua --- a/app/main/admin/area_list.lua Mon Nov 08 02:39:30 2010 +0100 +++ b/app/main/admin/area_list.lua Mon Nov 08 15:04:44 2010 +0100 @@ -1,52 +1,47 @@ -local show_not_in_use = param.get("show_not_in_use", atom.boolean) +local show_not_in_use = param.get("show_not_in_use", atom.boolean) or false -local selector = Area:new_selector() -if show_not_in_use then - selector:add_where("NOT active") -else - selector:add_where("active") -end +local areas = Area:build_selector{ active = not show_not_in_use }:exec() -local areas = selector:exec() slot.put_into("title", _"Area list") -if app.session.member.admin then - slot.select("actions", function() - if show_not_in_use then - ui.link{ - attr = { class = { "admin_only" } }, - text = _"Show areas in use", - module = "admin", - view = "area_list" - } - else - ui.link{ - attr = { class = { "admin_only" } }, - text = _"Create new area", - module = "admin", - view = "area_show" - } - ui.link{ - attr = { class = { "admin_only" } }, - text = _"Show areas not in use", - module = "admin", - view = "area_list", - params = { show_not_in_use = true } - } - end - end) -end + +slot.select("actions", function() + + if show_not_in_use then + ui.link{ + attr = { class = { "admin_only" } }, + text = _"Show areas in use", + module = "admin", + view = "area_list" + } + + else + ui.link{ + attr = { class = { "admin_only" } }, + text = _"Create new area", + module = "admin", + view = "area_show" + } + ui.link{ + attr = { class = { "admin_only" } }, + text = _"Show areas not in use", + module = "admin", + view = "area_list", + params = { show_not_in_use = true } + } + end + +end) + ui.list{ records = areas, columns = { - { - label = _"Area", - name = "name" - }, - { - content = function(record) + + { label = _"Area", name = "name" }, + + { content = function(record) if app.session.member.admin then ui.link{ attr = { class = { "action admin_only" } }, @@ -58,5 +53,6 @@ end end } + } } \ No newline at end of file diff -r 032346d7e21b -r 46351752814f app/main/admin/area_show.lua --- a/app/main/admin/area_show.lua Mon Nov 08 02:39:30 2010 +0100 +++ b/app/main/admin/area_show.lua Mon Nov 08 15:04:44 2010 +0100 @@ -1,11 +1,17 @@ local id = param.get_id() -local area -if id then - area = Area:new_selector():add_where{ "id = ?", id }:single_object_mode():exec() -end +local area = Area:by_id(id) or Area:new() + +slot.put_into("title", _"Create / edit area") -slot.put_into("title", _"Create new area") +slot.select("actions", function() + ui.link{ + attr = { class = { "admin_only" } }, + text = _"Cancel", + module = "admin", + view = "area_list" + } +end) ui.form{ attr = { class = "vertical" }, @@ -19,9 +25,9 @@ view = "area_list" } }, - id = area and area.id or nil, + id = id, content = function() - policies = Policy:new_selector():add_where{ "active='t'"}:exec() + policies = Policy:build_selector{ active = true }:exec() local def_policy = { { id = "-1", @@ -35,7 +41,7 @@ ui.field.text{ label = _"Name", name = "name" } ui.field.boolean{ label = _"Active?", name = "active" } ui.field.text{ label = _"Description", name = "description", multiline = true } - ui.field.select{ label = _"Default Policy", name = "default_policy", + ui.field.select{ label = _"Default Policy", name = "default_policy", value=area.default_policy and area.default_policy.id or "-1", foreign_records = def_policy, foreign_id = "id", @@ -45,8 +51,9 @@ foreign_records = policies, foreign_id = "id", foreign_name = "name", - connecting_records = area.allowed_policies, - foreign_reference = "id" } + connecting_records = area.allowed_policies or {}, + foreign_reference = "id", + } ui.submit{ text = _"Save" } end } diff -r 032346d7e21b -r 46351752814f app/main/admin/member_edit.lua --- a/app/main/admin/member_edit.lua Mon Nov 08 02:39:30 2010 +0100 +++ b/app/main/admin/member_edit.lua Mon Nov 08 15:04:44 2010 +0100 @@ -1,8 +1,8 @@ local id = param.get_id() -local member -if id then - member = Member:new_selector():add_where{"id = ?", id}:optional_object_mode():exec() +local member = Member:by_id(id) + +if member then slot.put_into("title", encode.html(_("Member: '#{login}' (#{name})", { login = member.login, name = member.name }))) else slot.put_into("title", encode.html(_"Register new member")) diff -r 032346d7e21b -r 46351752814f app/main/admin/member_list.lua --- a/app/main/admin/member_list.lua Mon Nov 08 02:39:30 2010 +0100 +++ b/app/main/admin/member_list.lua Mon Nov 08 15:04:44 2010 +0100 @@ -1,5 +1,14 @@ +local show_locked = param.get("show_locked", atom.boolean) + +local members_selector = Member:build_selector{ + active = not show_locked, + order = "login" +} + + slot.put_into("title", _"Member list") + slot.select("actions", function() ui.link{ attr = { class = { "admin_only" } }, @@ -7,7 +16,7 @@ module = "admin", view = "member_edit" } - if param.get("show_locked") then + if show_locked then ui.link{ attr = { class = { "admin_only" } }, text = _"Show active members", @@ -25,20 +34,10 @@ end end) -local members_selector - -if param.get("show_locked", atom.boolean) then - members_selector = Member:new_selector() - :add_where("not active") - :add_order_by("login") -else - members_selector = Member:new_selector() - :add_where("active") - :add_order_by("login") -end ui.paginate{ selector = members_selector, + per_page = 30, content = function() ui.list{ records = members_selector:exec(), @@ -68,22 +67,20 @@ }, { content = function(record) - if app.session.member.admin and not record.active then + if not record.active then ui.field.text{ value = "locked" } end end }, { content = function(record) - if app.session.member.admin then - ui.link{ - attr = { class = "action admin_only" }, - text = _"Edit", - module = "admin", - view = "member_edit", - id = record.id - } - end + ui.link{ + attr = { class = "action admin_only" }, + text = _"Edit", + module = "admin", + view = "member_edit", + id = record.id + } end } } diff -r 032346d7e21b -r 46351752814f model/area.lua --- a/model/area.lua Mon Nov 08 02:39:30 2010 +0100 +++ b/model/area.lua Mon Nov 08 15:04:44 2010 +0100 @@ -58,3 +58,10 @@ :exec() end +function Area:build_selector(args) + local selector = Area:new_selector() + if args.active ~= nil then + selector:add_where{ "active = ?", args.active } + end + return selector +end diff -r 032346d7e21b -r 46351752814f model/member.lua --- a/model/member.lua Mon Nov 08 02:39:30 2010 +0100 +++ b/model/member.lua Mon Nov 08 15:04:44 2010 +0100 @@ -223,6 +223,25 @@ ref = 'supported_initiatives' } +function Member:build_selector(args) + local selector = self:new_selector() + if args.active ~= nil then + selector:add_where{ "member.active = ?", args.active } + 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 == "name" then + selector:add_order_by("name") + else + error("invalid order") + end + end + return selector +end + function Member.object:set_password(password) local hash = os.crypt( password, diff -r 032346d7e21b -r 46351752814f model/policy.lua --- a/model/policy.lua Mon Nov 08 02:39:30 2010 +0100 +++ b/model/policy.lua Mon Nov 08 15:04:44 2010 +0100 @@ -9,3 +9,12 @@ ref = 'issues', back_ref = 'policy' } + +function Policy:build_selector(args) + local selector = self:new_selector() + if args.active ~= nil then + selector:add_where{ "active = ?", args.active } + end + selector:add_order_by("index") + return selector +end