bsw/jbe@19: local search_for = param.get("search_for", atom.string) or "global" bsw/jbe@0: local search_string = param.get("search", atom.string) bsw/jbe@0: bsw@480: if search_string then bsw@480: slot.put_into("title", encode.html(_("Search results for: '#{search}'", { search = search_string }))) bsw@480: else bsw@480: slot.put_into("title", encode.html(_"Search")) bsw/jbe@0: end bsw/jbe@0: bsw@480: ui.form{ bsw@480: method = "get", module = "index", view = "search", bsw@480: routing = { default = { mode = "redirect", bsw@480: module = "index", view = "search", search_for = search_for, search = search_string bsw@480: } }, bsw@480: attr = { class = "vertical" }, bsw@480: content = function() bsw@480: ui.field.select{ bsw@480: label = _"Search context", bsw@480: name = "search_for", bsw@480: value = search_for, bsw@480: foreign_records = { bsw@480: { id = "global", name = _"Global search" }, bsw@480: { id = "member", name = _"Search for members" }, bsw@480: { id = "issue", name = _"Search for issues" }, bsw@480: { id = "initiative", name = _"Search for initiatives" }, bsw@480: }, bsw@480: foreign_id = "id", bsw@480: foreign_name = "name", bsw@480: } bsw@480: ui.field.text{ label = _"Search term (only complete words)", name = "search", value = search_string } bsw@480: ui.submit{ value = _"Start search" } bsw@480: end bsw@480: } bsw@480: bsw@480: slot.put("
") bsw@480: bsw@480: if search_string then bsw/jbe@19: bsw@480: if search_for == "global" or search_for == "member" then bsw@480: local members_selector = Member:get_search_selector(search_string) bsw@480: execute.view{ bsw@480: module = "member", bsw@480: view = "_list", bsw@480: params = { members_selector = members_selector }, bsw@480: } bsw@480: end bsw@480: bsw@480: if search_for == "global" or search_for == "initiative" then bsw@480: local initiatives_selector = Initiative:get_search_selector(search_string) bsw@480: execute.view{ bsw@480: module = "initiative", bsw@480: view = "_list", bsw@480: params = { initiatives_selector = initiatives_selector }, bsw@480: } bsw@480: end bsw@480: bsw@480: if search_for == "issue" then bsw@480: local issues_selector = Issue:get_search_selector(search_string) bsw@480: execute.view{ bsw@480: module = "issue", bsw@480: view = "_list", bsw@480: params = { bsw@480: issues_selector = issues_selector, bsw@480: highlight_string = search_string, bsw@480: no_filter = true bsw@480: }, bsw@480: } bsw@480: end bsw@480: bsw/jbe@0: end