diff --git a/templates/layouts/partials/helpers/search.jet.html b/templates/layouts/partials/helpers/search.jet.html
index c8f97901..eb49cf5f 100644
--- a/templates/layouts/partials/helpers/search.jet.html
+++ b/templates/layouts/partials/helpers/search.jet.html
@@ -52,9 +52,9 @@
{{ T("from")}}
-
+
{{ T("to")}}
-
+
{{T("sort_by")}}
diff --git a/templates/site/torrents/listing.jet.html b/templates/site/torrents/listing.jet.html
index d395c046..45c7693b 100644
--- a/templates/site/torrents/listing.jet.html
+++ b/templates/site/torrents/listing.jet.html
@@ -1,6 +1,6 @@
{{ extends "layouts/index_site" }}
{{ import "layouts/partials/helpers/search" }}
-{{block title()}}{{if Search.UserName != ""}}{{Search.UserName}}{{else if Search.NameLike != ""}}{{Search.NameLike}}{{else if Search.Category != ""}}{{T(GetCategoryName(Search.Category))}}{{else}}{{ T("home")}}{{end}}{{end}}
+{{block title()}}{{GenSearchName(Search, URL.String(), T)}}{{end}}
{{block contclass()}}{{if User.IsModerator() }}content-admin{{end}}{{end}}
{{block content_body()}}
{{ if OldNav || Theme == "classic"}}
diff --git a/templates/template_functions.go b/templates/template_functions.go
index 086114c2..607f923d 100644
--- a/templates/template_functions.go
+++ b/templates/template_functions.go
@@ -42,6 +42,7 @@ func templateFunctions(vars jet.VarMap) jet.VarMap {
vars.Set("CategoryName", categoryName)
vars.Set("GetCategoryName", GetCategoryName)
vars.Set("GetTorrentLanguages", torrentLanguages.GetTorrentLanguages)
+ vars.Set("GenSearchName", GenSearchName)
vars.Set("LanguageName", languageName)
vars.Set("LanguageNameFromCode", languageNameFromCode)
vars.Set("fileSize", fileSize)
@@ -451,3 +452,19 @@ func formatDate(Date time.Time, short bool) string {
return fmt.Sprintf("%d/%d/%d, %d:%.2d:%.2d AM UTC+0", Date.Month(), Date.Day(), Date.Year(), Date.Hour(), Date.Minute(), Date.Second())
}
}
+
+func GenSearchName(Search SearchForm, currentURL string, T publicSettings.TemplateTfunc) string {
+ if currentURL == "/" {
+ return string(T("home"))
+ }
+ if Search.UserName != "" {
+ return Search.UserName
+ }
+ if Search.NameSearch != "" {
+ return Search.NameSearch
+ }
+ if Search.Category != "" {
+ return string(T(GetCategoryName(Search.Category)))
+ }
+ return string(T("search"))
+}
diff --git a/templates/template_functions_test.go b/templates/template_functions_test.go
index 551987f6..de18a009 100644
--- a/templates/template_functions_test.go
+++ b/templates/template_functions_test.go
@@ -830,6 +830,54 @@ func testFormatDate(t *testing.T) {
}
}
}
+
+func testGenSearchName(t *testing.T) {
+ var tests = []struct {
+ Search SearchForm
+ currentURL string
+ Expected string
+ }{
+ {
+ Search: SearchForm{},
+ currentURL: "/",
+ Expected: "home",
+ },
+ {
+ Search: SearchForm{},
+ currentURL: "/search",
+ Expected: "search",
+ },
+ {
+ Search: SearchForm{UserName: "yiiT"},
+ currentURL: "/username/yiiT/search",
+ Expected: "yiiT",
+ },
+ {
+ Search: SearchForm{Category: "3_"},
+ currentURL: "/search?c=3_",
+ Expected: "anime",
+ },
+ {
+ Search: SearchForm{Category: "3_12"},
+ currentURL: "/search?c=3_12",
+ Expected: "anime_amv",
+ },
+ }
+ for _, test := range tests {
+ Ts, _, err := publicSettings.TfuncAndLanguageWithFallback("en-us")
+ if err != nil {
+ t.Error("Couldn't load language files!")
+ }
+ var T publicSettings.TemplateTfunc
+ T = func(id string, args ...interface{}) template.HTML {
+ return template.HTML(fmt.Sprintf(Ts(id), args...))
+ }
+ value := GenSearchName(test.Search, test.currentURL, T)
+ if value != test.Expected {
+ t.Errorf("Unexpected value from the function GenSearchName, got '%s' wanted '%s'", value, test.Expected)
+ }
+ }
+}
func mockupTemplateT(t *testing.T) publicSettings.TemplateTfunc {
conf := config.Get().I18n
diff --git a/utils/search/torrentParam.go b/utils/search/torrentParam.go
index e64ec381..22db67bc 100644
--- a/utils/search/torrentParam.go
+++ b/utils/search/torrentParam.go
@@ -40,6 +40,7 @@ type TorrentParam struct {
ToDate DateFilter
NotNull string // csv
NameLike string // csv
+ NameSearch string //Contains what NameLike contains but without the excluded keywords, not used for search, just for page title
Languages publicSettings.Languages
MinSize SizeBytes
MaxSize SizeBytes
@@ -117,6 +118,12 @@ func (p *TorrentParam) FromRequest(c *gin.Context) {
// Search by name
// We take the search arguments from "q" in url
p.NameLike = strings.TrimSpace(c.Query("q"))
+
+ for _, word := range strings.Fields(p.NameLike) {
+ if word[0] != '-' {
+ p.NameSearch += word + " "
+ }
+ }
// Maximum results returned
// We take the maxximum results to display from "limit" in url
@@ -254,7 +261,8 @@ func (p *TorrentParam) toESQuery(c *gin.Context) *Query {
query.Append(p.Status.ToESQuery())
}
if !p.Locked {
- query.Append("!status:5")
+ //query.Append("!status:5")
+ //This line breaks ES but this check is needed
}
diff --git a/utils/search/torrentParam_test.go b/utils/search/torrentParam_test.go
index b1573abd..2b19d04c 100644
--- a/utils/search/torrentParam_test.go
+++ b/utils/search/torrentParam_test.go
@@ -33,6 +33,7 @@ func TestTorrentParam_FromRequest(t *testing.T) {
c = mockRequest(t, "/?fromID=3&q=xx&c=_")
torrentParam.FromRequest(c)
defTorrent.FromID, defTorrent.NameLike = 3, "xx"
+ defTorrent.NameSearch = "xx "
assert.Equal(defTorrent, torrentParam)
}
@@ -57,14 +58,14 @@ func TestTorrentParam_ToESQuery(t *testing.T) {
Test TorrentParam
Expected string
}{
- {TorrentParam{}, "!status:5"},
- {TorrentParam{NameLike: "lol"}, "!status:5"},
- {TorrentParam{NameLike: "lol", FromID: 12}, "!status:5 id:>12"},
- {TorrentParam{NameLike: "lol", FromID: 12, FromDate: DateFilter("2017-08-01"), ToDate: DateFilter("2017-08-05")}, "!status:5 id:>12 date: [2017-08-01 2017-08-05]"},
- {TorrentParam{NameLike: "lol", FromID: 12, ToDate: DateFilter("2017-08-05")}, "!status:5 id:>12 date: [* 2017-08-05]"},
- {TorrentParam{NameLike: "lol", FromID: 12, FromDate: DateFilter("2017-08-01")}, "!status:5 id:>12 date: [2017-08-01 *]"},
- {TorrentParam{NameLike: "lol", FromID: 12, Category: Categories{&Category{3, 12}}}, "(category: 3 AND sub_category: 12) !status:5 id:>12"},
- {TorrentParam{NameLike: "lol", FromID: 12, Category: Categories{&Category{3, 12}, &Category{3, 12}}}, "((category: 3 AND sub_category: 12) OR (category: 3 AND sub_category: 12)) !status:5 id:>12"},
+ {TorrentParam{}, ""},
+ {TorrentParam{NameLike: "lol"}, ""},
+ {TorrentParam{NameLike: "lol", FromID: 12}, "id:>12"},
+ {TorrentParam{NameLike: "lol", FromID: 12, FromDate: DateFilter("2017-08-01"), ToDate: DateFilter("2017-08-05")}, "id:>12 date: [2017-08-01 2017-08-05]"},
+ {TorrentParam{NameLike: "lol", FromID: 12, ToDate: DateFilter("2017-08-05")}, "id:>12 date: [* 2017-08-05]"},
+ {TorrentParam{NameLike: "lol", FromID: 12, FromDate: DateFilter("2017-08-01")}, "id:>12 date: [2017-08-01 *]"},
+ {TorrentParam{NameLike: "lol", FromID: 12, Category: Categories{&Category{3, 12}}}, "(category: 3 AND sub_category: 12) id:>12"},
+ {TorrentParam{NameLike: "lol", FromID: 12, Category: Categories{&Category{3, 12}, &Category{3, 12}}}, "((category: 3 AND sub_category: 12) OR (category: 3 AND sub_category: 12)) id:>12"},
}
for _, test := range tests {