liquid_feedback_frontend
annotate app/main/member/_list.lua @ 19:00d1004545f1
Dynamic interface using XMLHttpRequests, and many other changes
Bugfixes:
- Only allow voting on admitted initiatives
- Repaired issue search
- Don't display delegations for closed issues on member page
- Don't show revoke link in initiative, when issue is already half_frozen
- Localization for voting JavaScript
- Display author of suggestions
Disclosure of voting data after voting is finished:
- Possibility to inspect every ballot including preferences
- Show number of voters preferring one initiative to another initiative
Interface behaviour changes:
- Reversed default order of drafts
- Default order of suggestions changed
- Show new drafts of initiatives only once per day in timeline
Accessibility:
- Barrier-free voting implemented
- POST links are now accessible without JavaScript
- Changed gray for unsatisfied supporters in bar graph to a lighter gray
Other interface improvements:
- Optical enhancements
- Dynamic interface using XMLHttpRequests
- Show usage terms in about section
- Show own membership in area listing
- Show uninformed supporters greyed out and marked with yellow question mark
- Warning box in non-admitted initiatives
- When voted, don't display voting notice and change label of voting link
- Show object counts in more tabulator heads
- Enlarged member statement input field
Miscellaneous:
- Code cleanup
- Added README file containing installation instructions
- Use new WebMCP function ui.filters{...} instead of own ui.filter and ui.order functions
Bugfixes:
- Only allow voting on admitted initiatives
- Repaired issue search
- Don't display delegations for closed issues on member page
- Don't show revoke link in initiative, when issue is already half_frozen
- Localization for voting JavaScript
- Display author of suggestions
Disclosure of voting data after voting is finished:
- Possibility to inspect every ballot including preferences
- Show number of voters preferring one initiative to another initiative
Interface behaviour changes:
- Reversed default order of drafts
- Default order of suggestions changed
- Show new drafts of initiatives only once per day in timeline
Accessibility:
- Barrier-free voting implemented
- POST links are now accessible without JavaScript
- Changed gray for unsatisfied supporters in bar graph to a lighter gray
Other interface improvements:
- Optical enhancements
- Dynamic interface using XMLHttpRequests
- Show usage terms in about section
- Show own membership in area listing
- Show uninformed supporters greyed out and marked with yellow question mark
- Warning box in non-admitted initiatives
- When voted, don't display voting notice and change label of voting link
- Show object counts in more tabulator heads
- Enlarged member statement input field
Miscellaneous:
- Code cleanup
- Added README file containing installation instructions
- Use new WebMCP function ui.filters{...} instead of own ui.filter and ui.order functions
author | bsw/jbe |
---|---|
date | Sat Feb 20 22:10:31 2010 +0100 (2010-02-20) |
parents | 72c5e0ee7c98 |
children | b9c8503feff7 |
rev | line source |
---|---|
bsw/jbe@0 | 1 local members_selector = param.get("members_selector", "table") |
bsw@3 | 2 local initiative = param.get("initiative", "table") |
bsw@3 | 3 local issue = param.get("issue", "table") |
bsw@3 | 4 local trustee = param.get("trustee", "table") |
bsw@10 | 5 local initiator = param.get("initiator", "table") |
bsw@3 | 6 |
bsw/jbe@19 | 7 ui.add_partial_param_names{ "member_list" } |
bsw/jbe@19 | 8 |
bsw/jbe@19 | 9 local filter = { |
bsw/jbe@19 | 10 label = _"Order by", |
bsw/jbe@19 | 11 name = "member_list", |
bsw/jbe@19 | 12 { |
bsw/jbe@19 | 13 name = "name", |
bsw/jbe@19 | 14 label = _"A-Z", |
bsw/jbe@19 | 15 selector_modifier = function(selector) selector:add_order_by("name") end |
bsw/jbe@19 | 16 }, |
bsw/jbe@19 | 17 { |
bsw/jbe@19 | 18 name = "name_desc", |
bsw/jbe@19 | 19 label = _"Z-A", |
bsw/jbe@19 | 20 selector_modifier = function(selector) selector:add_order_by("name DESC") end |
bsw/jbe@19 | 21 }, |
bsw@3 | 22 { |
bsw@10 | 23 name = "newest", |
bsw@10 | 24 label = _"Newest", |
bsw/jbe@19 | 25 selector_modifier = function(selector) selector:add_order_by("created DESC, id DESC") end |
bsw@10 | 26 }, |
bsw@10 | 27 { |
bsw@10 | 28 name = "oldest", |
bsw@10 | 29 label = _"Oldest", |
bsw/jbe@19 | 30 selector_modifier = function(selector) selector:add_order_by("created, id") end |
bsw@3 | 31 }, |
bsw@3 | 32 } |
bsw@3 | 33 |
bsw@3 | 34 if initiative then |
bsw/jbe@19 | 35 filter[#filter] = { |
bsw@3 | 36 name = "delegations", |
bsw@3 | 37 label = _"Delegations", |
bsw/jbe@19 | 38 selector_modifier = function(selector) selector:add_order_by("weight DESC") end |
bsw@3 | 39 } |
bsw@3 | 40 end |
bsw/jbe@0 | 41 |
bsw/jbe@19 | 42 ui.filters{ |
bsw/jbe@19 | 43 label = _"Change order", |
bsw/jbe@0 | 44 selector = members_selector, |
bsw/jbe@19 | 45 filter, |
bsw@2 | 46 content = function() |
bsw@2 | 47 ui.paginate{ |
bsw@2 | 48 selector = members_selector, |
bsw@2 | 49 per_page = 100, |
bsw@2 | 50 content = function() |
bsw@2 | 51 ui.container{ |
bsw@2 | 52 attr = { class = "member_list" }, |
bsw@2 | 53 content = function() |
bsw@3 | 54 local members = members_selector:exec() |
bsw@3 | 55 local columns = { |
bsw@3 | 56 { |
bsw@3 | 57 label = _"Name", |
bsw@3 | 58 content = function(member) |
bsw@3 | 59 ui.link{ |
bsw@3 | 60 module = "member", |
bsw@3 | 61 view = "show", |
bsw@3 | 62 id = member.id, |
bsw@3 | 63 content = function() |
bsw@3 | 64 ui.image{ |
bsw@3 | 65 attr = { width = 48, height = 48 }, |
bsw@3 | 66 module = "member", |
bsw@3 | 67 view = "avatar", |
bsw@3 | 68 id = member.id, |
bsw@3 | 69 extension = "jpg" |
bsw@3 | 70 } |
bsw@3 | 71 end |
bsw@3 | 72 } |
bsw@3 | 73 end |
bsw@3 | 74 }, |
bsw@3 | 75 { |
bsw@3 | 76 label = _"Name", |
bsw@3 | 77 content = function(member) |
bsw@3 | 78 ui.link{ |
bsw@3 | 79 module = "member", |
bsw@3 | 80 view = "show", |
bsw@3 | 81 id = member.id, |
bsw@3 | 82 content = member.name |
bsw@3 | 83 } |
bsw@3 | 84 if member.admin then |
bsw@3 | 85 ui.image{ |
bsw@3 | 86 attr = { |
bsw@3 | 87 alt = _"Administrator", |
bsw@3 | 88 title = _"Administrator" |
bsw@3 | 89 }, |
bsw@3 | 90 static = "icons/16/cog.png" |
bsw@3 | 91 } |
bsw@3 | 92 end |
bsw@3 | 93 -- TODO performance |
bsw@3 | 94 local contact = Contact:by_pk(app.session.member.id, member.id) |
bsw@3 | 95 if contact then |
bsw@3 | 96 ui.image{ |
bsw@3 | 97 attr = { |
bsw@3 | 98 alt = _"Saved as contact", |
bsw@3 | 99 title = _"Saved as contact" |
bsw@3 | 100 }, |
bsw@3 | 101 static = "icons/16/book_edit.png" |
bsw@3 | 102 } |
bsw@3 | 103 end |
bsw@3 | 104 end |
bsw@3 | 105 } |
bsw@3 | 106 } |
bsw@3 | 107 |
bsw@3 | 108 if initiative then |
bsw@3 | 109 columns[#columns+1] = { |
bsw@3 | 110 label = _"Delegations", |
bsw@3 | 111 field_attr = { style = "text-align: right;" }, |
bsw@3 | 112 content = function(member) |
bsw@3 | 113 if member.weight > 1 then |
bsw@3 | 114 ui.link{ |
bsw@3 | 115 content = member.weight, |
bsw@3 | 116 module = "support", |
bsw@3 | 117 view = "show_incoming", |
bsw@3 | 118 params = { member_id = member.id, initiative_id = initiative.id } |
bsw@3 | 119 } |
bsw@3 | 120 end |
bsw@3 | 121 end |
bsw@3 | 122 } |
bsw@3 | 123 end |
bsw@3 | 124 |
bsw@3 | 125 for i, member in ipairs(members) do |
bsw@2 | 126 execute.view{ |
bsw@2 | 127 module = "member", |
bsw@2 | 128 view = "_show_thumb", |
bsw@10 | 129 params = { |
bsw@10 | 130 member = member, |
bsw@10 | 131 initiative = initiative, |
bsw@10 | 132 issue = issue, |
bsw@10 | 133 trustee = trustee, |
bsw@10 | 134 initiator = initiator |
bsw@10 | 135 } |
bsw/jbe@0 | 136 } |
bsw@2 | 137 end |
bsw/jbe@19 | 138 |
bsw/jbe@0 | 139 end |
bsw/jbe@0 | 140 } |
bsw@3 | 141 slot.put('<br style="clear: left;" />') |
bsw@2 | 142 end |
bsw/jbe@0 | 143 } |
bsw/jbe@0 | 144 end |
bsw/jbe@19 | 145 } |