# HG changeset patch
# User bsw
# Date 1426947999 -3600
# Node ID 904f6807f7fa760f208665e5021ad297bbbe98d2
# Parent c02aea493bc1c79b331c6c3e181e5d79f2261a75
Added support for upcoming moonbridge bases WebMCP
diff -r c02aea493bc1 -r 904f6807f7fa app/main/_filter/20_session.lua
--- a/app/main/_filter/20_session.lua Sat Mar 21 15:03:39 2015 +0100
+++ b/app/main/_filter/20_session.lua Sat Mar 21 15:26:39 2015 +0100
@@ -1,5 +1,7 @@
-if cgi.cookies.liquid_feedback_session then
- app.session = Session:by_ident(cgi.cookies.liquid_feedback_session)
+local cookie = request.get_cookie{ name = "liquid_feedback_session" }
+
+if cookie then
+ app.session = Session:by_ident(cookie)
end
if not app.session then
app.session = Session:new()
diff -r c02aea493bc1 -r 904f6807f7fa app/main/_filter_view/30_navigation.lua
--- a/app/main/_filter_view/30_navigation.lua Sat Mar 21 15:03:39 2015 +0100
+++ b/app/main/_filter_view/30_navigation.lua Sat Mar 21 15:26:39 2015 +0100
@@ -109,4 +109,11 @@
}
end)
+if not config.enable_debug_trace then
+ trace.disable()
+else
+ slot.put_into('trace_button', '
TRACE
')
+end
+
+
execute.inner()
diff -r c02aea493bc1 -r 904f6807f7fa app/main/_postfork/10_database.lua
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/app/main/_postfork/10_database.lua Sat Mar 21 15:26:39 2015 +0100
@@ -0,0 +1,17 @@
+-- open and set default database handle
+_G.db = assert(mondelefant.connect(config.database))
+
+function mondelefant.class_prototype:get_db_conn() return db end
+
+-- enable output of SQL commands in trace system
+function db:sql_tracer(command)
+ return function(error_info)
+ local error_info = error_info or {}
+ trace.sql{ command = command, error_position = error_info.position }
+ end
+end
+
+execute.inner()
+
+-- close the database
+db:close()
diff -r c02aea493bc1 -r 904f6807f7fa app/main/area/show.lua
--- a/app/main/area/show.lua Sat Mar 21 15:03:39 2015 +0100
+++ b/app/main/area/show.lua Sat Mar 21 15:26:39 2015 +0100
@@ -29,7 +29,7 @@
}
}
-function getOpenIssuesSelector()
+local function getOpenIssuesSelector()
return area:get_reference_selector("issues")
:add_order_by("coalesce(issue.fully_frozen + issue.voting_time, issue.half_frozen + issue.verification_time, issue.accepted + issue.discussion_time, issue.created + issue.admission_time) - now()")
end
diff -r c02aea493bc1 -r 904f6807f7fa app/main/contact/list.lua
--- a/app/main/contact/list.lua Sat Mar 21 15:03:39 2015 +0100
+++ b/app/main/contact/list.lua Sat Mar 21 15:26:39 2015 +0100
@@ -48,8 +48,8 @@
mode = "redirect",
module = request.get_module(),
view = request.get_view(),
- id = param.get_id_cgi(),
- params = param.get_all_cgi()
+ id = request.get_id_string(),
+ params = request.get_param_strings()
}
}
}
@@ -66,8 +66,8 @@
mode = "redirect",
module = request.get_module(),
view = request.get_view(),
- id = param.get_id_cgi(),
- params = param.get_all_cgi()
+ id = request.get_id_string(),
+ params = request.get_param_strings()
}
}
}
@@ -87,8 +87,8 @@
mode = "redirect",
module = request.get_module(),
view = request.get_view(),
- id = param.get_id_cgi(),
- params = param.get_all_cgi()
+ id = request.get_id_string(),
+ params = request.get_param_strings()
}
}
}
diff -r c02aea493bc1 -r 904f6807f7fa app/main/delegation/show.lua
--- a/app/main/delegation/show.lua Sat Mar 21 15:03:39 2015 +0100
+++ b/app/main/delegation/show.lua Sat Mar 21 15:26:39 2015 +0100
@@ -46,12 +46,6 @@
head_text = _"Set issue delegation"
end
-if param.get("initiative_id", atom.integer) then
- issue_id = initiative.issue_id
- scope = "issue"
-end
-
-
local delegation
local unit_id
local area_id
@@ -146,7 +140,7 @@
}
},
content = function()
- local record
+ local records
if issue then
local delegate_name = ""
local scope = _"no delegation set"
@@ -232,7 +226,7 @@
end
end
- disabled_records = {}
+ local disabled_records = {}
disabled_records["_"] = true
disabled_records[app.session.member_id] = true
diff -r c02aea493bc1 -r 904f6807f7fa app/main/draft/new.lua
--- a/app/main/draft/new.lua Sat Mar 21 15:03:39 2015 +0100
+++ b/app/main/draft/new.lua Sat Mar 21 15:26:39 2015 +0100
@@ -54,6 +54,7 @@
ui.sectionRow( function()
ui.field.hidden{ name = "formatting_engine", value = param.get("formatting_engine") }
ui.field.hidden{ name = "content", value = param.get("content") }
+ local formatting_engine
if config.enforce_formatting_engine then
formatting_engine = config.enforce_formatting_engine
else
diff -r c02aea493bc1 -r 904f6807f7fa app/main/index/_action/login.lua
--- a/app/main/index/_action/login.lua Sat Mar 21 15:03:39 2015 +0100
+++ b/app/main/index/_action/login.lua Sat Mar 21 15:26:39 2015 +0100
@@ -16,7 +16,7 @@
return
end
-function do_etherpad_auth(member)
+local function do_etherpad_auth(member)
local result = net.curl(
config.etherpad.api_base
.. "api/1/createAuthorIfNotExistsFor?apikey=" .. config.etherpad.api_key
diff -r c02aea493bc1 -r 904f6807f7fa app/main/index/_member_home.lua
--- a/app/main/index/_member_home.lua Sat Mar 21 15:03:39 2015 +0100
+++ b/app/main/index/_member_home.lua Sat Mar 21 15:26:39 2015 +0100
@@ -1,6 +1,6 @@
local member = param.get("member", "table")
local for_member = param.get("for_member", atom.boolean)
-local filter_unit = param.get_all_cgi()["filter_unit"] or "my_areas"
+local filter_unit = request.get_param_strings()["filter_unit"] or "my_areas"
if not for_member then
diff -r c02aea493bc1 -r 904f6807f7fa app/main/index/_sidebar_notifications.lua
--- a/app/main/index/_sidebar_notifications.lua Sat Mar 21 15:03:39 2015 +0100
+++ b/app/main/index/_sidebar_notifications.lua Sat Mar 21 15:26:39 2015 +0100
@@ -96,7 +96,7 @@
}
end
-updated_drafts = Initiative:selector_for_updated_drafts(app.session.member_id):exec()
+local updated_drafts = Initiative:selector_for_updated_drafts(app.session.member_id):exec()
for i, initiative in ipairs(updated_drafts) do
notification_links[#notification_links+1] = {
diff -r c02aea493bc1 -r 904f6807f7fa app/main/index/index.lua
--- a/app/main/index/index.lua Sat Mar 21 15:03:39 2015 +0100
+++ b/app/main/index/index.lua Sat Mar 21 15:26:39 2015 +0100
@@ -1,4 +1,4 @@
-function getIssuesSelector()
+local function getIssuesSelector()
return Issue:new_selector()
:add_order_by([[
coalesce(
diff -r c02aea493bc1 -r 904f6807f7fa app/main/index/login.lua
--- a/app/main/index/login.lua Sat Mar 21 15:03:39 2015 +0100
+++ b/app/main/index/login.lua Sat Mar 21 15:26:39 2015 +0100
@@ -16,7 +16,7 @@
ui.heading{ level = 1, content = _"Login" }
ui.container { attr = { class = "right" }, content = function()
for i, lang in ipairs(config.enabled_languages) do
-
+ local langcode
locale.do_with({ lang = lang }, function()
langcode = _("[Name of Language]")
end)
@@ -37,8 +37,8 @@
mode = "redirect",
module = request.get_module(),
view = request.get_view(),
- id = param.get_id_cgi(),
- params = param.get_all_cgi()
+ id = request.get_id_string(),
+ params = request.get_param_strings()
}
}
}
diff -r c02aea493bc1 -r 904f6807f7fa app/main/initiative/_list_element.lua
--- a/app/main/initiative/_list_element.lua Sat Mar 21 15:03:39 2015 +0100
+++ b/app/main/initiative/_list_element.lua Sat Mar 21 15:26:39 2015 +0100
@@ -65,7 +65,7 @@
and initiative.negative_votes ~= nil
and not for_event
then
- function percent(p, q)
+ local function percent(p, q)
if q > 0 then
return math.floor(p / q * 100) .. "%"
else
diff -r c02aea493bc1 -r 904f6807f7fa app/main/initiative/show.lua
--- a/app/main/initiative/show.lua Sat Mar 21 15:03:39 2015 +0100
+++ b/app/main/initiative/show.lua Sat Mar 21 15:26:39 2015 +0100
@@ -24,6 +24,8 @@
}
}
+local direct_supporter
+
if app.session.member_id then
direct_supporter = initiative.issue.member_info.own_participation and initiative.member_info.supported
end
diff -r c02aea493bc1 -r 904f6807f7fa app/main/issue/_filters.lua
--- a/app/main/issue/_filters.lua Sat Mar 21 15:03:39 2015 +0100
+++ b/app/main/issue/_filters.lua Sat Mar 21 15:26:39 2015 +0100
@@ -1,4 +1,4 @@
-local params = param.get_all_cgi()
+local params = request.get_param_strings() -- TODO replace with request.get_param() calls?
local for_unit = param.get("for_unit", atom.boolean)
local for_area = param.get("for_area", atom.boolean)
diff -r c02aea493bc1 -r 904f6807f7fa app/main/issue/_list2.lua
--- a/app/main/issue/_list2.lua Sat Mar 21 15:03:39 2015 +0100
+++ b/app/main/issue/_list2.lua Sat Mar 21 15:26:39 2015 +0100
@@ -9,7 +9,7 @@
local limit = 25
-local mode = param.get_all_cgi()["mode"] or "issue"
+local mode = request.get_param{ name = "mode" } or "issue"
if for_initiative or for_issue or for_member then
mode = "timeline"
@@ -24,7 +24,7 @@
elseif mode == "timeline" then
- local event_max_id = param.get_all_cgi()["event_max_id"]
+ local event_max_id = request.get_param_strings()["event_max_id"]
selector = Event:new_selector()
:add_order_by("event.id DESC")
@@ -76,7 +76,7 @@
:add_field("array_length(_delegating_interest.delegate_member_ids, 1)", "delegation_chain_length")
end
-function doit()
+local function doit()
local last_event_id
@@ -316,6 +316,7 @@
end }
elseif #items > limit then
ui.container { attr = { class = row_class }, content = function ()
+ local params = request.get_param_strings()
ui.link{
attr = { class = "moreLink" },
text = _"Show older events",
@@ -325,9 +326,9 @@
params = {
mode = "timeline",
event_max_id = last_event_id,
- tab = param.get_all_cgi()["tab"],
- phase = param.get_all_cgi()["phase"],
- closed = param.get_all_cgi()["closed"]
+ tab = params["tab"],
+ phase = params["phase"],
+ closed = params["closed"]
}
}
end }
@@ -370,4 +371,4 @@
end
ui.filters(filters)
-
\ No newline at end of file
+
diff -r c02aea493bc1 -r 904f6807f7fa app/main/issue/_sidebar_whatcanido.lua
--- a/app/main/issue/_sidebar_whatcanido.lua Sat Mar 21 15:03:39 2015 +0100
+++ b/app/main/issue/_sidebar_whatcanido.lua Sat Mar 21 15:26:39 2015 +0100
@@ -132,8 +132,8 @@
mode = "redirect",
module = request.get_module(),
view = request.get_view(),
- id = param.get_id_cgi(),
- params = param.get_all_cgi()
+ id = request.get_id_string(),
+ params = request.get_param_strings()
}
}
}
@@ -153,8 +153,8 @@
mode = "redirect",
module = request.get_module(),
view = request.get_view(),
- id = param.get_id_cgi(),
- params = param.get_all_cgi()
+ id = request.get_id_string(),
+ params = request.get_param_strings()
}
}
}
@@ -532,8 +532,8 @@
mode = "redirect",
module = request.get_module(),
view = request.get_view(),
- id = param.get_id_cgi(),
- params = param.get_all_cgi()
+ id = request.get_id_string(),
+ params = request.get_param_strings()
}
}
}
@@ -554,8 +554,8 @@
mode = "redirect",
module = request.get_module(),
view = request.get_view(),
- id = param.get_id_cgi(),
- params = param.get_all_cgi()
+ id = request.get_id_string(),
+ params = request.get_param_strings()
}
}
}
diff -r c02aea493bc1 -r 904f6807f7fa app/main/member/_list.lua
--- a/app/main/member/_list.lua Sat Mar 21 15:03:39 2015 +0100
+++ b/app/main/member/_list.lua Sat Mar 21 15:26:39 2015 +0100
@@ -23,8 +23,6 @@
end
end
-ui.add_partial_param_names{ "member_list" }
-
local filter = { name = "member_filter" }
if issue or initiative then
@@ -73,7 +71,7 @@
}
-function list_members()
+local function list_members()
local ui_paginate = ui.paginate
if no_paginate then
ui_paginate = function (args) args.content() end
diff -r c02aea493bc1 -r 904f6807f7fa app/main/member/_sidebar_whatcanido.lua
--- a/app/main/member/_sidebar_whatcanido.lua Sat Mar 21 15:03:39 2015 +0100
+++ b/app/main/member/_sidebar_whatcanido.lua Sat Mar 21 15:26:39 2015 +0100
@@ -142,8 +142,8 @@
mode = "redirect",
module = request.get_module(),
view = request.get_view(),
- id = param.get_id_cgi(),
- params = param.get_all_cgi()
+ id = request.get_id_string(),
+ params = request.get_param_strings()
}
}
}
@@ -171,8 +171,8 @@
mode = "redirect",
module = request.get_module(),
view = request.get_view(),
- id = param.get_id_cgi(),
- params = param.get_all_cgi()
+ id = request.get_id_string(),
+ params = request.get_param_strings()
}
}
}
@@ -188,8 +188,8 @@
mode = "redirect",
module = request.get_module(),
view = request.get_view(),
- id = param.get_id_cgi(),
- params = param.get_all_cgi()
+ id = request.get_id_string(),
+ params = request.get_param_strings()
}
}
}
@@ -210,8 +210,8 @@
mode = "redirect",
module = request.get_module(),
view = request.get_view(),
- id = param.get_id_cgi(),
- params = param.get_all_cgi()
+ id = request.get_id_string(),
+ params = request.get_param_strings()
}
}
}
@@ -227,8 +227,8 @@
mode = "redirect",
module = request.get_module(),
view = request.get_view(),
- id = param.get_id_cgi(),
- params = param.get_all_cgi()
+ id = request.get_id_string(),
+ params = request.get_param_strings()
}
}
}
@@ -249,8 +249,8 @@
mode = "redirect",
module = request.get_module(),
view = request.get_view(),
- id = param.get_id_cgi(),
- params = param.get_all_cgi()
+ id = request.get_id_string(),
+ params = request.get_param_strings()
}
}
}
@@ -266,8 +266,8 @@
mode = "redirect",
module = request.get_module(),
view = request.get_view(),
- id = param.get_id_cgi(),
- params = param.get_all_cgi()
+ id = request.get_id_string(),
+ params = request.get_param_strings()
}
}
}
@@ -293,8 +293,8 @@
mode = "redirect",
module = request.get_module(),
view = request.get_view(),
- id = param.get_id_cgi(),
- params = param.get_all_cgi()
+ id = request.get_id_string(),
+ params = request.get_param_strings()
}
}
}
@@ -315,8 +315,8 @@
mode = "redirect",
module = request.get_module(),
view = request.get_view(),
- id = param.get_id_cgi(),
- params = param.get_all_cgi()
+ id = request.get_id_string(),
+ params = request.get_param_strings()
}
}
}
diff -r c02aea493bc1 -r 904f6807f7fa app/main/member_image/show.lua
--- a/app/main/member_image/show.lua Sat Mar 21 15:03:39 2015 +0100
+++ b/app/main/member_image/show.lua Sat Mar 21 15:26:39 2015 +0100
@@ -1,16 +1,10 @@
local image_type = param.get("image_type")
local record = MemberImage:by_pk(param.get_id(), image_type, true)
-print('Cache-Control: max-age=300'); -- let the client cache the image for 5 minutes
-
if record == nil then
- local default_file = ({ avatar = "avatar.jpg", photo = nil })[image_type]
- if default_file then
- print('Location: ' .. encode.url{ static = default_file } .. '\n\n')
- else
- print('Location: ' .. encode.url{ static = 'icons/16/lightning.png' } .. '\n\n')
- end
- exit()
+ local default_file = ({ avatar = "avatar.jpg", photo = nil })[image_type] or 'icons/16/lightning.png'
+ request.redirect{ static = default_file }
+ return
end
assert(record.content_type, "No content-type set for image.")
@@ -18,5 +12,6 @@
slot.set_layout(nil, record.content_type)
if record then
+ request.add_header("Cache-Control", "max-age=300"); -- let the client cache the image for 5 minutes
slot.put_into("data", record.data)
end
diff -r c02aea493bc1 -r 904f6807f7fa app/main/vote/list.lua
--- a/app/main/vote/list.lua Sat Mar 21 15:03:39 2015 +0100
+++ b/app/main/vote/list.lua Sat Mar 21 15:26:39 2015 +0100
@@ -234,6 +234,7 @@
attr = { id = "voting" },
content = function()
local approval_index, disapproval_index = 0, 0
+ local approval_used, disapproval_used
for grade = max_grade, min_grade, -1 do
local entries = sections[grade]
local class
diff -r c02aea493bc1 -r 904f6807f7fa config/init.lua
--- a/config/init.lua Sat Mar 21 15:03:39 2015 +0100
+++ b/config/init.lua Sat Mar 21 15:26:39 2015 +0100
@@ -56,33 +56,10 @@
config.database = { engine='postgresql', dbname='liquid_feedback' }
end
-if not config.enable_debug_trace then
- trace.disable()
-else
- slot.put_into('trace_button', 'TRACE
')
-end
-
-
request.set_404_route{ module = 'index', view = '404' }
--- open and set default database handle
-db = assert(mondelefant.connect(config.database))
-at_exit(function()
- db:close()
-end)
-function mondelefant.class_prototype:get_db_conn() return db end
-
--- enable output of SQL commands in trace system
-function db:sql_tracer(command)
- return function(error_info)
- local error_info = error_info or {}
- trace.sql{ command = command, error_position = error_info.position }
- end
-end
-
request.set_absolute_baseurl(config.absolute_base_url)
-
-- TODO abstraction
-- get record by id
function mondelefant.class_prototype:by_id(id)
@@ -92,3 +69,76 @@
return selector:exec()
end
+-- compatibility for WebMCP 1.2.6
+if not listen then
+
+ -- open and set default database handle
+ _G.db = assert(mondelefant.connect(config.database))
+
+ function mondelefant.class_prototype:get_db_conn() return db end
+
+ -- enable output of SQL commands in trace system
+ function db:sql_tracer(command)
+ return function(error_info)
+ local error_info = error_info or {}
+ trace.sql{ command = command, error_position = error_info.position }
+ end
+ end
+
+ -- close the database at exit
+ at_exit(function()
+ db:close()
+ end)
+
+ function request.get_cookie(args)
+ return cgi.cookies[args.name]
+ end
+
+ function request.get_param(args)
+ return request.get_param_strings()[args.name]
+ end
+
+ function request.add_header(key, value)
+ print(key .. ": " .. value)
+ end
+
+ local request_redirect = request.redirect
+ function request.redirect(args)
+ if args.static then
+ print('Location: ' .. encode.url{ static = args.static } .. '\n\n')
+ exit()
+ else
+ request_redirect(args)
+ end
+ end
+
+
+ return
+end
+
+if not config.fork then
+ config.fork = {}
+end
+
+if not config.fork.pre then
+ config.fork.pre = 4
+end
+
+if not config.fork.max then
+ config.fork.max = 8
+end
+
+if not config.fork.delay then
+ config.fork.delay = 1
+end
+
+if not config.port then
+ config.port = 8080
+end
+
+listen{
+ { proto = "tcp4", port = config.port, localhost = true },
+ pre_fork = config.fork.pre,
+ max_fork = config.fork.max,
+ fork_delay = config.fork.delay
+}
diff -r c02aea493bc1 -r 904f6807f7fa env/ui/filters.lua
--- a/env/ui/filters.lua Sat Mar 21 15:03:39 2015 +0100
+++ b/env/ui/filters.lua Sat Mar 21 15:26:39 2015 +0100
@@ -5,7 +5,7 @@
content = function()
for idx, filter in ipairs(args) do
local filter_name = filter.name or "filter"
- local current_option = atom.string:load(cgi.params[filter_name])
+ local current_option = atom.string:load(request.get_param{ name = filter_name })
if not current_option then
current_option = param.get(filter_name)
end
@@ -18,8 +18,8 @@
if not current_option or #current_option == 0 or not current_option_valid then
current_option = filter[1].name
end
- local id = param.get_id_cgi()
- local params = param.get_all_cgi()
+ local id = request.get_id_string()
+ local params = request.get_param_strings()
local class = "ui_filter_head"
if filter.class then
class = class .. " " .. filter.class
diff -r c02aea493bc1 -r 904f6807f7fa env/ui/tabs.lua
--- a/env/ui/tabs.lua Sat Mar 21 15:03:39 2015 +0100
+++ b/env/ui/tabs.lua Sat Mar 21 15:26:39 2015 +0100
@@ -4,13 +4,13 @@
ui.container{
attr = attr,
content = function()
- local params = param.get_all_cgi()
+ local params = request.get_param_strings()
local current_tab = params["tab"]
ui.container{
attr = { class = "ui_tabs_links" },
content = function()
for i, tab in ipairs(tabs) do
- local params = param.get_all_cgi()
+ local params = request.get_param_strings()
if tab.link_params then
for key, value in pairs(tab.link_params) do
params[key] = value
@@ -27,7 +27,7 @@
},
module = request.get_module(),
view = request.get_view(),
- id = param.get_id_cgi(),
+ id = request.get_id_string(),
content = tab.label,
params = params
}
diff -r c02aea493bc1 -r 904f6807f7fa env/util/micro_avatar.lua
--- a/env/util/micro_avatar.lua Sat Mar 21 15:03:39 2015 +0100
+++ b/env/util/micro_avatar.lua Sat Mar 21 15:26:39 2015 +0100
@@ -6,7 +6,7 @@
}
end
- function doit()
+ local function doit()
if config.fastpath_url_func then
ui.image{
attr = {
diff -r c02aea493bc1 -r 904f6807f7fa model/unit.lua
--- a/model/unit.lua Sat Mar 21 15:03:39 2015 +0100
+++ b/model/unit.lua Sat Mar 21 15:26:39 2015 +0100
@@ -76,7 +76,7 @@
-function recursive_add_child_units(units, parent_unit)
+local function recursive_add_child_units(units, parent_unit)
parent_unit.childs = {}
for i, unit in ipairs(units) do
if unit.parent_id == parent_unit.id then
@@ -86,7 +86,7 @@
end
end
-function recursive_get_child_units(units, parent_unit, depth)
+local function recursive_get_child_units(units, parent_unit, depth)
for i, unit in ipairs(parent_unit.childs) do
unit.depth = depth
units[#units+1] = unit