mirror of
https://github.com/neon-mmd/websurfx.git
synced 2024-11-23 06:28:23 -05:00
112 lines
4.6 KiB
Rust
112 lines
4.6 KiB
Rust
|
//!
|
||
|
|
||
|
use maud::{html, Markup, PreEscaped};
|
||
|
|
||
|
use crate::{
|
||
|
models::aggregation_models::SearchResults,
|
||
|
templates::partials::{footer::footer, header::header, search_bar::search_bar},
|
||
|
};
|
||
|
|
||
|
///
|
||
|
pub fn search(
|
||
|
colorscheme: &str,
|
||
|
theme: &str,
|
||
|
query: &str,
|
||
|
search_results: &SearchResults,
|
||
|
) -> Markup {
|
||
|
html!(
|
||
|
(header(colorscheme, theme))
|
||
|
main class="results"{
|
||
|
(search_bar(&search_results.engine_errors_info, search_results.safe_search_level, query))
|
||
|
.results_aggregated{
|
||
|
@if !search_results.results.is_empty() {
|
||
|
@for result in search_results.results.iter(){
|
||
|
.result {
|
||
|
h1{a href=(result.url){(PreEscaped(&result.title))}}
|
||
|
small{(result.url)}
|
||
|
p{(PreEscaped(&result.description))}
|
||
|
.upstream_engines{
|
||
|
@for name in result.clone().engine{
|
||
|
span{(name)}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
@else if search_results.disallowed{
|
||
|
.result_disallowed{
|
||
|
.description{
|
||
|
p{
|
||
|
"Your search - "{span class="user_query"{(query)}}" -
|
||
|
has been disallowed."
|
||
|
}
|
||
|
p class="description_paragraph"{"Dear user,"}
|
||
|
p class="description_paragraph"{
|
||
|
"The query - "{span class="user_query"{(query)}}" - has
|
||
|
been blacklisted via server configuration and hence disallowed by the
|
||
|
server. Henceforth no results could be displayed for your query."
|
||
|
}
|
||
|
}
|
||
|
img src="./images/barricade.png" alt="Image of a Barricade";
|
||
|
}
|
||
|
}
|
||
|
@else if search_results.filtered {
|
||
|
.result_filtered{
|
||
|
.description{
|
||
|
p{
|
||
|
"Your search - "{span class="user_query"{(query)}}" -
|
||
|
has been filtered."
|
||
|
}
|
||
|
p class="description_paragraph"{"Dear user,"}
|
||
|
p class="description_paragraph"{
|
||
|
"All the search results contain results that has been configured to be
|
||
|
filtered out via server configuration and henceforth has been
|
||
|
completely filtered out."
|
||
|
}
|
||
|
}
|
||
|
img src="./images/filter.png" alt="Image of a paper inside a funnel";
|
||
|
}
|
||
|
}
|
||
|
@else if search_results.no_engines_selected {
|
||
|
.result_engine_not_selected{
|
||
|
.description{
|
||
|
p{
|
||
|
"No results could be fetched for your search '{span class="user_query"{(query)}}'."
|
||
|
}
|
||
|
p class="description_paragraph"{"Dear user,"}
|
||
|
p class="description_paragraph"{
|
||
|
"No results could be retrieved from the upstream search engines as no
|
||
|
upstream search engines were selected from the settings page."
|
||
|
}
|
||
|
}
|
||
|
img src="./images/no_selection.png" alt="Image of a white cross inside a red circle";
|
||
|
}
|
||
|
}
|
||
|
@else{
|
||
|
.result_not_found {
|
||
|
p{"Your search - "{(query)}" - did not match any documents."}
|
||
|
p class="suggestions"{"Suggestions:"}
|
||
|
ul{
|
||
|
li{"Make sure that all words are spelled correctly."}
|
||
|
li{"Try different keywords."}
|
||
|
li{"Try more general keywords."}
|
||
|
}
|
||
|
img src="./images/no_results.gif" alt="Man fishing gif";
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
.page_navigation {
|
||
|
button type="button" onclick="navigate_backward()"{
|
||
|
(PreEscaped("←")) "previous"
|
||
|
}
|
||
|
button type="button" onclick="navigate_forward()"{"next" (PreEscaped("→"))}
|
||
|
}
|
||
|
}
|
||
|
script src="static/index.js"{}
|
||
|
script src="static/search_area_options.js"{}
|
||
|
script src="static/pagination.js"{}
|
||
|
script src="static/error_box.js"{}
|
||
|
(footer())
|
||
|
)
|
||
|
}
|