Skip to content

Commit efe203d

Browse files
authored
Support search view (#35)
This PR allows theme authors to create a search page respectively. ```release-note 允许主题自定义搜索模板 ```
1 parent ead248b commit efe203d

File tree

3 files changed

+50
-3
lines changed

3 files changed

+50
-3
lines changed

build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ repositories {
1616
}
1717

1818
dependencies {
19-
implementation platform('run.halo.tools.platform:plugin:2.10.0-SNAPSHOT')
19+
implementation platform('run.halo.tools.platform:plugin:2.17.0-SNAPSHOT')
2020
compileOnly 'run.halo.app:api'
2121

2222
testImplementation 'run.halo.app:api'
@@ -45,5 +45,5 @@ tasks.named('build').configure {
4545
}
4646

4747
halo {
48-
version = "2.12.0"
48+
version = "2.17.0"
4949
}
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package run.halo.search.widget;
2+
3+
import org.springframework.context.annotation.Bean;
4+
import org.springframework.http.MediaType;
5+
import org.springframework.stereotype.Component;
6+
import org.springframework.web.reactive.function.server.*;
7+
import reactor.core.publisher.Mono;
8+
import run.halo.app.search.SearchOption;
9+
import run.halo.app.search.SearchService;
10+
11+
import java.util.Map;
12+
13+
@Component
14+
public class SearchView {
15+
16+
private final SearchService searchService;
17+
18+
public SearchView(SearchService searchService) {
19+
this.searchService = searchService;
20+
}
21+
22+
@Bean
23+
RouterFunction<ServerResponse> searchView() {
24+
return RouterFunctions.route()
25+
.GET("/search", RequestPredicates.accept(MediaType.TEXT_HTML), this::performSearch)
26+
.build();
27+
}
28+
29+
private Mono<ServerResponse> performSearch(ServerRequest serverRequest) {
30+
var keyword = serverRequest.queryParam("keyword").orElse("");
31+
var limit = serverRequest.queryParam("limit")
32+
.map(Integer::parseInt)
33+
.orElse(10);
34+
var includeTypes = serverRequest.queryParams().get("includeTypes");
35+
var option = new SearchOption();
36+
option.setKeyword(keyword);
37+
option.setLimit(limit);
38+
option.setFilterExposed(true);
39+
option.setFilterPublished(true);
40+
option.setFilterRecycled(false);
41+
option.setIncludeTypes(includeTypes);
42+
var result = searchService.search(option);
43+
return ServerResponse.ok().render("search", Map.of(
44+
"searchResult", result
45+
));
46+
}
47+
}

src/main/resources/plugin.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ metadata:
88
"store.halo.run/app-id": "app-DlacW"
99
spec:
1010
enabled: true
11-
requires: ">=2.10.0"
11+
requires: ">=2.17.0"
1212
author:
1313
name: Halo
1414
website: https://github.com/halo-dev

0 commit comments

Comments
 (0)