| rev | 
   line source | 
| 
bsw/jbe@19
 | 
     1 local search_for = param.get("search_for", atom.string) or "global"
 | 
| 
bsw/jbe@0
 | 
     2 local search_string = param.get("search", atom.string)
 | 
| 
bsw/jbe@0
 | 
     3 
 | 
| 
bsw@480
 | 
     4 if search_string then
 | 
| 
bsw@480
 | 
     5   slot.put_into("title", encode.html(_("Search results for: '#{search}'", { search  = search_string })))
 | 
| 
bsw@480
 | 
     6 else
 | 
| 
bsw@480
 | 
     7   slot.put_into("title", encode.html(_"Search"))
 | 
| 
bsw/jbe@0
 | 
     8 end
 | 
| 
bsw/jbe@0
 | 
     9 
 | 
| 
bsw@480
 | 
    10 ui.form{
 | 
| 
bsw@480
 | 
    11   method = "get", module = "index", view = "search",
 | 
| 
bsw@480
 | 
    12   routing = { default = { mode = "redirect",
 | 
| 
bsw@480
 | 
    13     module = "index", view = "search", search_for = search_for, search = search_string
 | 
| 
bsw@480
 | 
    14   } },
 | 
| 
bsw@480
 | 
    15   attr = { class = "vertical" },
 | 
| 
bsw@480
 | 
    16   content = function()
 | 
| 
bsw@480
 | 
    17     ui.field.select{
 | 
| 
bsw@480
 | 
    18       label = _"Search context",
 | 
| 
bsw@480
 | 
    19       name = "search_for",
 | 
| 
bsw@480
 | 
    20       value = search_for,
 | 
| 
bsw@480
 | 
    21       foreign_records = {
 | 
| 
bsw@480
 | 
    22         { id = "global", name = _"Global search" },
 | 
| 
bsw@480
 | 
    23         { id = "member", name = _"Search for members" },
 | 
| 
bsw@480
 | 
    24         { id = "issue", name = _"Search for issues" },
 | 
| 
bsw@480
 | 
    25         { id = "initiative", name = _"Search for initiatives" },
 | 
| 
bsw@480
 | 
    26       },
 | 
| 
bsw@480
 | 
    27       foreign_id = "id",
 | 
| 
bsw@480
 | 
    28       foreign_name = "name",
 | 
| 
bsw@480
 | 
    29     }
 | 
| 
bsw@480
 | 
    30     ui.field.text{ label = _"Search term (only complete words)", name = "search", value = search_string }
 | 
| 
bsw@480
 | 
    31     ui.submit{ value = _"Start search" }
 | 
| 
bsw@480
 | 
    32   end
 | 
| 
bsw@480
 | 
    33 }
 | 
| 
bsw@480
 | 
    34 
 | 
| 
bsw@480
 | 
    35 slot.put("<br />")
 | 
| 
bsw@480
 | 
    36 
 | 
| 
bsw@480
 | 
    37 if search_string then
 | 
| 
bsw/jbe@19
 | 
    38 
 | 
| 
bsw@480
 | 
    39   if search_for == "global" or search_for == "member" then
 | 
| 
bsw@480
 | 
    40     local members_selector = Member:get_search_selector(search_string)
 | 
| 
bsw@480
 | 
    41     execute.view{
 | 
| 
bsw@480
 | 
    42       module = "member",
 | 
| 
bsw@480
 | 
    43       view = "_list",
 | 
| 
bsw@480
 | 
    44       params = { members_selector = members_selector },
 | 
| 
bsw@480
 | 
    45     }
 | 
| 
bsw@480
 | 
    46   end
 | 
| 
bsw@480
 | 
    47 
 | 
| 
bsw@480
 | 
    48   if search_for == "global" or search_for == "initiative" then
 | 
| 
bsw@480
 | 
    49     local initiatives_selector = Initiative:get_search_selector(search_string)
 | 
| 
bsw@480
 | 
    50     execute.view{
 | 
| 
bsw@480
 | 
    51       module = "initiative",
 | 
| 
bsw@480
 | 
    52       view = "_list",
 | 
| 
bsw@480
 | 
    53       params = { initiatives_selector = initiatives_selector },
 | 
| 
bsw@480
 | 
    54     }
 | 
| 
bsw@480
 | 
    55   end
 | 
| 
bsw@480
 | 
    56 
 | 
| 
bsw@480
 | 
    57   if search_for == "issue" then
 | 
| 
bsw@480
 | 
    58     local issues_selector = Issue:get_search_selector(search_string)
 | 
| 
bsw@480
 | 
    59     execute.view{
 | 
| 
bsw@480
 | 
    60       module = "issue",
 | 
| 
bsw@480
 | 
    61       view = "_list",
 | 
| 
bsw@480
 | 
    62       params = {
 | 
| 
bsw@480
 | 
    63         issues_selector = issues_selector,
 | 
| 
bsw@480
 | 
    64         highlight_string = search_string,
 | 
| 
bsw@480
 | 
    65         no_filter = true
 | 
| 
bsw@480
 | 
    66       },
 | 
| 
bsw@480
 | 
    67     }
 | 
| 
bsw@480
 | 
    68   end
 | 
| 
bsw@480
 | 
    69   
 | 
| 
bsw/jbe@0
 | 
    70 end
 |