# HG changeset patch # User bsw # Date 1289225115 -3600 # Node ID c0292c3a70d83101d317aa22b71cdeba31666cdb # Parent 46351752814fe8e1986a91afd15807b8d095320a Added policy editor to admin area diff -r 46351752814f -r c0292c3a70d8 app/main/admin/_action/policy_update.lua --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/app/main/admin/_action/policy_update.lua Mon Nov 08 15:05:15 2010 +0100 @@ -0,0 +1,14 @@ +local policy = Policy:by_id(param.get_id()) or Policy:new() + +param.update( + policy, + "index", "name", "description", "active", + "admission_time", "discussion_time", "verification_time", "voting_time", + "issue_quorum_num", "issue_quorum_den", + "initiative_quorum_num", "initiative_quorum_den", + "majority_num", "majority_den", "majority_strict" +) + +policy:save() + +slot.put_into("notice", _"Policy successfully updated") diff -r 46351752814f -r c0292c3a70d8 app/main/admin/policy_list.lua --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/app/main/admin/policy_list.lua Mon Nov 08 15:05:15 2010 +0100 @@ -0,0 +1,57 @@ +local show_not_in_use = param.get("show_not_in_use", atom.boolean) or false + +local policies = Policy:build_selector{ active = not show_not_in_use }:exec() + + +slot.put_into("title", _"Policy list") + + +slot.select("actions", function() + + if show_not_in_use then + ui.link{ + attr = { class = { "admin_only" } }, + text = _"Show policies in use", + module = "admin", + view = "policy_list" + } + + else + ui.link{ + attr = { class = { "admin_only" } }, + text = _"Create new policy", + module = "admin", + view = "policy_show" + } + ui.link{ + attr = { class = { "admin_only" } }, + text = _"Show policies not in use", + module = "admin", + view = "policy_list", + params = { show_not_in_use = true } + } + + end + +end) + + +ui.list{ + records = policies, + columns = { + + { label = _"Policy", name = "name" }, + + { content = function(record) + ui.link{ + attr = { class = { "action admin_only" } }, + text = _"Edit", + module = "admin", + view = "policy_show", + id = record.id + } + end + } + + } +} \ No newline at end of file diff -r 46351752814f -r c0292c3a70d8 app/main/admin/policy_show.lua --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/app/main/admin/policy_show.lua Mon Nov 08 15:05:15 2010 +0100 @@ -0,0 +1,59 @@ +local policy = Policy:by_id(param.get_id()) or Policy:new() + + +slot.put_into("title", _"Create / edit policy") + + +slot.select("actions", function() + ui.link{ + attr = { class = { "admin_only" } }, + text = _"Cancel", + module = "admin", + view = "policy_list" + } +end) + + +ui.form{ + attr = { class = "vertical" }, + record = policy, + module = "admin", + action = "policy_update", + routing = { + default = { + mode = "redirect", + module = "admin", + view = "policy_list" + } + }, + id = policy.id, + content = function() + + ui.field.text{ label = _"Index", name = "index" } + + ui.field.text{ label = _"Name", name = "name" } + ui.field.text{ label = _"Description", name = "description", multiline = true } + ui.field.text{ label = _"Hint", readonly = true, + value = _"Interval format:" .. " 3 mons 2 weeks 1 day 10:30:15" } + + ui.field.text{ label = _"Admission time", name = "admission_time" } + ui.field.text{ label = _"Discussion time", name = "discussion_time" } + ui.field.text{ label = _"Verification time", name = "verification_time" } + ui.field.text{ label = _"Voting time", name = "voting_time" } + + ui.field.text{ label = _"Issue quorum numerator", name = "issue_quorum_num" } + ui.field.text{ label = _"Issue quorum denumerator", name = "issue_quorum_den" } + + ui.field.text{ label = _"Initiative quorum numerator", name = "initiative_quorum_num" } + ui.field.text{ label = _"Initiative quorum denumerator", name = "initiative_quorum_den" } + + ui.field.text{ label = _"Majority numerator", name = "majority_num" } + ui.field.text{ label = _"Majority denumerator", name = "majority_den" } + + ui.field.boolean{ label = _"Strict majority", name = "majority_strict" } + + ui.field.boolean{ label = _"Active?", name = "active" } + + ui.submit{ text = _"Save" } + end +}