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