# 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