liquid_feedback_frontend

view app/main/initiative/show.rss.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
author bsw/jbe
date Sat Feb 20 22:10:31 2010 +0100 (2010-02-20)
parents 3bfb2fcf7ab9
children 733f65c0c0a0
line source
1 slot.set_layout("rss")
3 local function rss_channel(channel)
4 for key, val in pairs(channel) do
5 slot.put("<", key, ">", val, "</", key, ">")
6 end
7 end
9 local function rss_item(item)
10 slot.put("<item>")
11 for key, val in pairs(item) do
12 slot.put("<", key, ">", val, "</", key, ">")
13 end
14 slot.put("</item>")
15 end
18 local initiative = Initiative:by_id(param.get_id())
20 rss_channel{
21 title = initiative.name,
22 description = initiative.current_draft.content,
23 language = "de",
24 copyright = initiative.current_draft.author.name,
25 pubDate = "Tue, 8 Jul 2008 2:43:19"
26 }
28 for i, suggestion in ipairs(initiative.suggestions) do
30 local text = suggestion.name
32 text = text .. " ("
33 text = text .. tostring(suggestion.plus2_unfulfilled_count + suggestion.plus2_unfulfilled_count) .. "++ "
34 text = text .. tostring(suggestion.plus1_unfulfilled_count + suggestion.plus1_unfulfilled_count) .. "+ "
35 text = text .. tostring(suggestion.minus1_unfulfilled_count + suggestion.minus1_unfulfilled_count) .. "- "
36 text = text .. tostring(suggestion.minus2_unfulfilled_count + suggestion.minus2_unfulfilled_count) .. "--"
38 text = text .. ")"
40 rss_item{
41 title = text,
42 description = suggestion.content,
43 link = "http://localhost/lf/suggestion/show/" .. tostring(suggestion.id) .. ".html",
44 author = "",
45 guid = "guid",
46 pubDate = "Tue, 8 Jul 2008 2:43:19"
47 }
49 end

Impressum / About Us