# HG changeset patch # User bsw # Date 1331813571 -3600 # Node ID af496baa9bda91c0066a618f27eb15a0563a083c # Parent edcf827d7ac3d5d323db3bd46ccc040ef2910dd2 Added search function again and raised initiatve list limit to 25 diff -r edcf827d7ac3 -r af496baa9bda app/main/_filter_view/30_navigation.lua --- a/app/main/_filter_view/30_navigation.lua Thu Mar 15 12:43:11 2012 +0100 +++ b/app/main/_filter_view/30_navigation.lua Thu Mar 15 13:12:51 2012 +0100 @@ -27,6 +27,12 @@ } end + ui.link{ + content = _"Search", + module = 'index', + view = 'search' + } + if config.public_access and app.session.member == nil then ui.link{ text = _"Login", diff -r edcf827d7ac3 -r af496baa9bda app/main/index/search.lua --- a/app/main/index/search.lua Thu Mar 15 12:43:11 2012 +0100 +++ b/app/main/index/search.lua Thu Mar 15 13:12:51 2012 +0100 @@ -1,41 +1,70 @@ local search_for = param.get("search_for", atom.string) or "global" local search_string = param.get("search", atom.string) -slot.put_into("title", encode.html(_("Search results for: '#{search}'", { search = search_string }))) - - -if search_for == "global" or search_for == "member" then - local members_selector = Member:get_search_selector(search_string) - ui.heading{ content = _"Members" } - execute.view{ - module = "member", - view = "_list", - params = { members_selector = members_selector }, - } +if search_string then + slot.put_into("title", encode.html(_("Search results for: '#{search}'", { search = search_string }))) +else + slot.put_into("title", encode.html(_"Search")) end -if search_for == "global" or search_for == "initiative" then - local initiatives_selector = Initiative:get_search_selector(search_string) - ui.heading{ content = _"Initiatives" } - execute.view{ - module = "initiative", - view = "_list", - params = { initiatives_selector = initiatives_selector }, - } -end +ui.form{ + method = "get", module = "index", view = "search", + routing = { default = { mode = "redirect", + module = "index", view = "search", search_for = search_for, search = search_string + } }, + attr = { class = "vertical" }, + content = function() + ui.field.select{ + label = _"Search context", + name = "search_for", + value = search_for, + foreign_records = { + { id = "global", name = _"Global search" }, + { id = "member", name = _"Search for members" }, + { id = "issue", name = _"Search for issues" }, + { id = "initiative", name = _"Search for initiatives" }, + }, + foreign_id = "id", + foreign_name = "name", + } + ui.field.text{ label = _"Search term (only complete words)", name = "search", value = search_string } + ui.submit{ value = _"Start search" } + end +} + +slot.put("
") + +if search_string then -if search_for == "issue" then - local issues_selector = Issue:get_search_selector(search_string) - ui.heading{ content = _"Issues" } - execute.view{ - module = "issue", - view = "_list", - params = { - issues_selector = issues_selector, - highlight_string = search_string, - no_filter = true - }, - } + if search_for == "global" or search_for == "member" then + local members_selector = Member:get_search_selector(search_string) + execute.view{ + module = "member", + view = "_list", + params = { members_selector = members_selector }, + } + end + + if search_for == "global" or search_for == "initiative" then + local initiatives_selector = Initiative:get_search_selector(search_string) + execute.view{ + module = "initiative", + view = "_list", + params = { initiatives_selector = initiatives_selector }, + } + end + + if search_for == "issue" then + local issues_selector = Issue:get_search_selector(search_string) + execute.view{ + module = "issue", + view = "_list", + params = { + issues_selector = issues_selector, + highlight_string = search_string, + no_filter = true + }, + } + end + end - - diff -r edcf827d7ac3 -r af496baa9bda app/main/initiative/_list.lua --- a/app/main/initiative/_list.lua Thu Mar 15 12:43:11 2012 +0100 +++ b/app/main/initiative/_list.lua Thu Mar 15 13:12:51 2012 +0100 @@ -49,7 +49,7 @@ ui.paginate{ name = issue and "issue_" .. tostring(issue.id) .. "_page" or nil, selector = initiatives_selector, - per_page = param.get("per_page", atom.number) or limit, + per_page = param.get("per_page", atom.number) or limit or 25, content = function() local initiatives = initiatives_selector:exec() if highlight_initiative then diff -r edcf827d7ac3 -r af496baa9bda model/issue.lua --- a/model/issue.lua Thu Mar 15 12:43:11 2012 +0100 +++ b/model/issue.lua Thu Mar 15 13:12:51 2012 +0100 @@ -146,6 +146,7 @@ :add_group_by('"issue"."verification_time"') :add_group_by('"issue"."voting_time"') :add_group_by('"_interest"."member_id"') + :add_group_by("_delegating_interest.delegate_member_ids") --:set_distinct() end