liquid_feedback_frontend

changeset 194:c0292c3a70d8

Added policy editor to admin area
author bsw
date Mon Nov 08 15:05:15 2010 +0100 (2010-11-08)
parents 46351752814f
children d8ce1feb6f37
files app/main/admin/_action/policy_update.lua app/main/admin/policy_list.lua app/main/admin/policy_show.lua
line diff
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/app/main/admin/_action/policy_update.lua	Mon Nov 08 15:05:15 2010 +0100
     1.3 @@ -0,0 +1,14 @@
     1.4 +local policy = Policy:by_id(param.get_id()) or Policy:new()
     1.5 +
     1.6 +param.update(
     1.7 +  policy, 
     1.8 +  "index", "name", "description", "active", 
     1.9 +  "admission_time", "discussion_time", "verification_time", "voting_time", 
    1.10 +  "issue_quorum_num", "issue_quorum_den", 
    1.11 +  "initiative_quorum_num", "initiative_quorum_den", 
    1.12 +  "majority_num", "majority_den", "majority_strict"
    1.13 +)
    1.14 +
    1.15 +policy:save()
    1.16 +
    1.17 +slot.put_into("notice", _"Policy successfully updated")
     2.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     2.2 +++ b/app/main/admin/policy_list.lua	Mon Nov 08 15:05:15 2010 +0100
     2.3 @@ -0,0 +1,57 @@
     2.4 +local show_not_in_use = param.get("show_not_in_use", atom.boolean) or false
     2.5 +
     2.6 +local policies = Policy:build_selector{ active = not show_not_in_use }:exec()
     2.7 +
     2.8 +
     2.9 +slot.put_into("title", _"Policy list")
    2.10 +
    2.11 +
    2.12 +slot.select("actions", function()
    2.13 +
    2.14 +  if show_not_in_use then
    2.15 +    ui.link{
    2.16 +      attr = { class = { "admin_only" } },
    2.17 +      text = _"Show policies in use",
    2.18 +      module = "admin",
    2.19 +      view = "policy_list"
    2.20 +    }
    2.21 +
    2.22 +  else
    2.23 +    ui.link{
    2.24 +      attr = { class = { "admin_only" } },
    2.25 +      text = _"Create new policy",
    2.26 +      module = "admin",
    2.27 +      view = "policy_show"
    2.28 +    }
    2.29 +    ui.link{
    2.30 +      attr = { class = { "admin_only" } },
    2.31 +      text = _"Show policies not in use",
    2.32 +      module = "admin",
    2.33 +      view = "policy_list",
    2.34 +      params = { show_not_in_use = true }
    2.35 +    }
    2.36 +
    2.37 +  end
    2.38 +
    2.39 +end)
    2.40 +
    2.41 +
    2.42 +ui.list{
    2.43 +  records = policies,
    2.44 +  columns = {
    2.45 +
    2.46 +    { label = _"Policy", name = "name" },
    2.47 +
    2.48 +    { content = function(record)
    2.49 +        ui.link{
    2.50 +          attr = { class = { "action admin_only" } },
    2.51 +          text = _"Edit",
    2.52 +          module = "admin",
    2.53 +          view = "policy_show",
    2.54 +          id = record.id
    2.55 +        }
    2.56 +      end
    2.57 +    }
    2.58 +
    2.59 +  }
    2.60 +}
    2.61 \ No newline at end of file
     3.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     3.2 +++ b/app/main/admin/policy_show.lua	Mon Nov 08 15:05:15 2010 +0100
     3.3 @@ -0,0 +1,59 @@
     3.4 +local policy = Policy:by_id(param.get_id()) or Policy:new()
     3.5 +
     3.6 +
     3.7 +slot.put_into("title", _"Create / edit policy")
     3.8 +
     3.9 +
    3.10 +slot.select("actions", function()
    3.11 +  ui.link{
    3.12 +    attr = { class = { "admin_only" } },
    3.13 +    text = _"Cancel",
    3.14 +    module = "admin",
    3.15 +    view = "policy_list"
    3.16 +  }
    3.17 +end)
    3.18 +
    3.19 +
    3.20 +ui.form{
    3.21 +  attr = { class = "vertical" },
    3.22 +  record = policy,
    3.23 +  module = "admin",
    3.24 +  action = "policy_update",
    3.25 +  routing = {
    3.26 +    default = {
    3.27 +      mode = "redirect",
    3.28 +      module = "admin",
    3.29 +      view = "policy_list"
    3.30 +    }
    3.31 +  },
    3.32 +  id = policy.id,
    3.33 +  content = function()
    3.34 +
    3.35 +    ui.field.text{ label = _"Index",        name = "index" }
    3.36 +
    3.37 +    ui.field.text{ label = _"Name",        name = "name" }
    3.38 +    ui.field.text{ label = _"Description", name = "description", multiline = true }
    3.39 +    ui.field.text{ label = _"Hint",        readonly = true, 
    3.40 +                    value = _"Interval format:" .. " 3 mons 2 weeks 1 day 10:30:15" }
    3.41 +
    3.42 +    ui.field.text{ label = _"Admission time",     name = "admission_time" }
    3.43 +    ui.field.text{ label = _"Discussion time",    name = "discussion_time" }
    3.44 +    ui.field.text{ label = _"Verification time",  name = "verification_time" }
    3.45 +    ui.field.text{ label = _"Voting time",        name = "voting_time" }
    3.46 +
    3.47 +    ui.field.text{ label = _"Issue quorum numerator",   name = "issue_quorum_num" }
    3.48 +    ui.field.text{ label = _"Issue quorum denumerator", name = "issue_quorum_den" }
    3.49 +
    3.50 +    ui.field.text{ label = _"Initiative quorum numerator",   name = "initiative_quorum_num" }
    3.51 +    ui.field.text{ label = _"Initiative quorum denumerator", name = "initiative_quorum_den" }
    3.52 +
    3.53 +    ui.field.text{ label = _"Majority numerator",   name = "majority_num" }
    3.54 +    ui.field.text{ label = _"Majority denumerator", name = "majority_den" }
    3.55 +
    3.56 +    ui.field.boolean{ label = _"Strict majority", name = "majority_strict" }
    3.57 +
    3.58 +    ui.field.boolean{ label = _"Active?", name = "active" }
    3.59 +
    3.60 +    ui.submit{ text = _"Save" }
    3.61 +  end
    3.62 +}

Impressum / About Us