| 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@606
 | 
    24         { id = "issue", name = _"Search for issues" }
 | 
| 
bsw@480
 | 
    25       },
 | 
| 
bsw@480
 | 
    26       foreign_id = "id",
 | 
| 
bsw@480
 | 
    27       foreign_name = "name",
 | 
| 
bsw@480
 | 
    28     }
 | 
| 
bsw@480
 | 
    29     ui.field.text{ label = _"Search term (only complete words)", name = "search", value = search_string }
 | 
| 
bsw@480
 | 
    30     ui.submit{ value = _"Start search" }
 | 
| 
bsw@480
 | 
    31   end
 | 
| 
bsw@480
 | 
    32 }
 | 
| 
bsw@480
 | 
    33 
 | 
| 
bsw@480
 | 
    34 slot.put("<br />")
 | 
| 
bsw@480
 | 
    35 
 | 
| 
bsw@480
 | 
    36 if search_string then
 | 
| 
bsw/jbe@19
 | 
    37 
 | 
| 
bsw@480
 | 
    38   if search_for == "global" or search_for == "member" then
 | 
| 
bsw@480
 | 
    39     local members_selector = Member:get_search_selector(search_string)
 | 
| 
bsw@480
 | 
    40     execute.view{
 | 
| 
bsw@480
 | 
    41       module = "member",
 | 
| 
bsw@480
 | 
    42       view = "_list",
 | 
| 
bsw@480
 | 
    43       params = { members_selector = members_selector },
 | 
| 
bsw@480
 | 
    44     }
 | 
| 
bsw@480
 | 
    45   end
 | 
| 
bsw@480
 | 
    46 
 | 
| 
bsw@606
 | 
    47   if search_for == "global" or search_for == "issue" then
 | 
| 
bsw@480
 | 
    48     local issues_selector = Issue:get_search_selector(search_string)
 | 
| 
bsw@480
 | 
    49     execute.view{
 | 
| 
bsw@480
 | 
    50       module = "issue",
 | 
| 
bsw@480
 | 
    51       view = "_list",
 | 
| 
bsw@480
 | 
    52       params = {
 | 
| 
bsw@480
 | 
    53         issues_selector = issues_selector,
 | 
| 
bsw@480
 | 
    54         highlight_string = search_string,
 | 
| 
bsw@480
 | 
    55         no_filter = true
 | 
| 
bsw@480
 | 
    56       },
 | 
| 
bsw@480
 | 
    57     }
 | 
| 
bsw@480
 | 
    58   end
 | 
| 
bsw@480
 | 
    59   
 | 
| 
bsw/jbe@0
 | 
    60 end
 |