fix language/safe search gui

This commit is contained in:
partisan 2024-08-13 16:38:02 +02:00
parent e056832321
commit c00f20860d
13 changed files with 748 additions and 694 deletions

View file

@ -64,22 +64,26 @@ func handleFileSearch(w http.ResponseWriter, settings UserSettings, query string
Fetched string
Category string
Sort string
Page int
HasPrevPage bool
HasNextPage bool
Page int
Settings Settings
LanguageOptions []LanguageOption
CurrentLang string
Theme string
Safe string
}{
Results: combinedResults,
Query: query,
Fetched: fmt.Sprintf("%.2f", elapsedTime.Seconds()),
Fetched: fmt.Sprintf("%.2f seconds", elapsedTime.Seconds()),
Category: "all",
Sort: "seed",
Page: page,
HasPrevPage: page > 1,
HasNextPage: len(combinedResults) > 0,
Page: page,
Settings: Settings{UxLang: settings.Language, Safe: settings.SafeSearch}, // Now this is painful, are there two Settings variables??
LanguageOptions: languageOptions,
CurrentLang: settings.Language,
Theme: settings.Theme,
Safe: settings.SafeSearch,
}
// // Debugging: Print results before rendering template

View file

@ -108,21 +108,23 @@ func handleForumsSearch(w http.ResponseWriter, settings UserSettings, query stri
data := struct {
Query string
Results []ForumSearchResult
LanguageOptions []LanguageOption
CurrentLang string
Page int
HasPrevPage bool
HasNextPage bool
LanguageOptions []LanguageOption
CurrentLang string
Theme string
Safe string
}{
Query: query,
Results: results,
LanguageOptions: languageOptions,
CurrentLang: settings.Language,
Page: page,
HasPrevPage: page > 1,
HasNextPage: len(results) == 25,
LanguageOptions: languageOptions,
CurrentLang: settings.Language,
Theme: settings.Theme,
Safe: settings.SafeSearch,
}
funcMap := template.FuncMap{

View file

@ -37,23 +37,25 @@ func handleImageSearch(w http.ResponseWriter, settings UserSettings, query strin
Query string
Page int
Fetched string
LanguageOptions []LanguageOption
CurrentLang string
HasPrevPage bool
HasNextPage bool
NoResults bool
LanguageOptions []LanguageOption
CurrentLang string
Theme string
Safe string
}{
Results: combinedResults,
Query: query,
Page: page,
Fetched: fmt.Sprintf("%.2f seconds", elapsedTime.Seconds()),
LanguageOptions: languageOptions,
CurrentLang: settings.Language,
HasPrevPage: page > 1,
HasNextPage: len(combinedResults) >= 50,
NoResults: len(combinedResults) == 0,
LanguageOptions: languageOptions,
CurrentLang: settings.Language,
Theme: settings.Theme,
Safe: settings.SafeSearch,
}
err = tmpl.Execute(w, data)

14
main.go
View file

@ -92,9 +92,21 @@ func handleSearch(w http.ResponseWriter, r *http.Request) {
}
// Render the search page template if no query
data := struct {
LanguageOptions []LanguageOption
CurrentLang string
Theme string
Safe string
}{
LanguageOptions: languageOptions,
CurrentLang: settings.Language,
Theme: settings.Theme,
Safe: settings.SafeSearch,
}
if query == "" {
tmpl := template.Must(template.ParseFiles("templates/search.html"))
tmpl.Execute(w, settings)
tmpl.Execute(w, data)
return
}

1
map.go
View file

@ -59,6 +59,7 @@ func handleMapSearch(w http.ResponseWriter, settings UserSettings, query string)
"Longitude": longitude,
"Found": found,
"Theme": settings.Theme,
"Safe": settings.SafeSearch,
}
tmpl, err := template.ParseFiles("templates/map.html")

2
templates/files.html Normal file → Executable file
View file

@ -67,7 +67,7 @@
<option value="software" {{ if eq .Category "software" }} selected {{ end }}>Software</option>
<option value="anime" {{ if eq .Category "anime" }} selected {{ end }}>Anime</option>
<option value="music" {{ if eq .Category "music" }} selected {{ end }}>Music</option>
{{ if eq .Settings.Safe "inactive" }}
{{ if eq .Safe "disabled" }}
<option value="xxx" {{ if eq .Category "xxx" }} selected {{ end }}>XXX (18+)</option>
{{ end }}
</select>

4
templates/forums.html Normal file → Executable file
View file

@ -48,8 +48,8 @@
<form class="results_settings" action="/search" method="get">
<input type="hidden" name="q" value="{{ .Query }}">
<select class="results-settings" name="safe" id="safeSearchSelect">
<option value="">Safe Search Off</option>
<option value="active">Safe Search On</option>
<option value="disabled" {{if eq .Safe "disabled"}}selected{{end}}>Safe Search Off</option>
<option value="active" {{if eq .Safe "active"}}selected{{end}}>Safe Search On</option>
</select>
<select class="results-settings" name="lang" id="languageSelect">
{{range .LanguageOptions}}

4
templates/images.html Normal file → Executable file
View file

@ -48,8 +48,8 @@
<form class="results_settings" action="/search" method="get">
<input type="hidden" name="q" value="{{ .Query }}">
<select class="results-settings" name="safe" id="safeSearchSelect">
<option value="">Safe Search Off</option>
<option value="active">Safe Search On</option>
<option value="disabled" {{if eq .Safe "disabled"}}selected{{end}}>Safe Search Off</option>
<option value="active" {{if eq .Safe "active"}}selected{{end}}>Safe Search On</option>
</select>
<select class="results-settings" name="lang" id="languageSelect">
{{range .LanguageOptions}}

46
templates/search.html Normal file → Executable file
View file

@ -11,6 +11,21 @@
<body>
<script>
document.addEventListener('DOMContentLoaded', function () {
// Define the updateSettings function first
function updateSettings(settingKey, settingValue) {
const xhr = new XMLHttpRequest();
xhr.open('POST', '/updateSettings', true);
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xhr.onload = function () {
if (this.status >= 200 && this.status < 300) {
console.log('Settings updated successfully!');
} else {
console.log('Failed to update settings.');
}
};
xhr.send(encodeURI(settingKey + '=' + settingValue));
}
const settingsIcon = document.querySelector('.settings-icon-link-search');
const searchMenu = document.querySelector('.search-menu');
@ -26,6 +41,16 @@
document.getElementById('light_theme').addEventListener('click', function () {
window.location.href = '/search?theme=light';
});
// Event listener for Safe Search Selection
document.getElementById('safeSearchSelect').addEventListener('change', function () {
updateSettings('safe', this.value);
});
// Event listener for Language Selection
document.getElementById('languageSelect').addEventListener('change', function () {
updateSettings('lang', this.value);
});
});
</script>
<div class="settings-search-div settings-search-div-search">
@ -34,26 +59,23 @@
<div class="search-menu settings-menu-hidden">
<h2>Settings</h2>
<div class="settings-content">
<button id="settingsButton" onclick="window.location.href='/settings'">All settings</button> <!-- Well its unessesary to use js here but this menu will not work without js anyway -->
<!-- <button id="settingsButton" onclick="window.location.href='/settings'">All settings</button> Well its unessesary to use js here but this menu will not work without js anyway -->
<div class="theme-settings">
<p><span class="highlight">Theme: </span> <span id="theme_name">Default Theme</span></p>
<p><span class="highlight">Current theme: </span> <span id="theme_name">{{.Theme}}</span></p>
<div class="themes-settings-menu">
<div><img class="view-image-search clickable" id="dark_theme" alt="Dark Theme" src="/static/images/dark.webp"></div>
<div><img class="view-image-search clickable" id="light_theme" alt="Light Theme" src="/static/images/light.webp"></div>
</div>
</div>
<select class="lang" name="lang">
<option value="en" selected>English</option>
<option value="fr">Français</option>
<option value="es">Español</option>
<!-- Add other languages as needed -->
<select class="lang" name="safe" id="safeSearchSelect">
<option value="disabled" {{if eq .Safe "disabled"}}selected{{end}}>Safe Search Off</option>
<option value="active" {{if eq .Safe "active"}}selected{{end}}>Safe Search On</option>
</select>
<select class="domain" name="safe">
<option value="active" selected>Safe search on</option>
<option value="">Safe search off</option>
<!-- Add other domains as needed -->
<select class="lang" name="lang" id="languageSelect">
{{range .LanguageOptions}}
<option value="{{.Code}}" {{if eq .Code $.CurrentLang}}selected{{end}}>{{.Name}}</option>
{{end}}
</select>
</div>
</div>
<form action="/search" class="search-container" method="post" autocomplete="off">

4
templates/text.html Normal file → Executable file
View file

@ -48,8 +48,8 @@
<form class="results_settings" action="/search" method="get">
<input type="hidden" name="q" value="{{ .Query }}">
<select class="results-settings" name="safe" id="safeSearchSelect">
<option value="">Safe Search Off</option>
<option value="active">Safe Search On</option>
<option value="disabled" {{if eq .Safe "disabled"}}selected{{end}}>Safe Search Off</option>
<option value="active" {{if eq .Safe "active"}}selected{{end}}>Safe Search On</option>
</select>
<select class="results-settings" name="lang" id="languageSelect">
{{range .LanguageOptions}}

10
text.go
View file

@ -48,23 +48,25 @@ func HandleTextSearch(w http.ResponseWriter, settings UserSettings, query string
Query string
Page int
Fetched string
LanguageOptions []LanguageOption
CurrentLang string
HasPrevPage bool
HasNextPage bool
NoResults bool
LanguageOptions []LanguageOption
CurrentLang string
Theme string
Safe string
}{
Results: combinedResults,
Query: query,
Page: page,
Fetched: fmt.Sprintf("%.2f seconds", elapsedTime.Seconds()),
LanguageOptions: languageOptions,
CurrentLang: settings.Language,
HasPrevPage: page > 1,
HasNextPage: len(combinedResults) >= 50,
NoResults: len(combinedResults) == 0,
LanguageOptions: languageOptions,
CurrentLang: settings.Language,
Theme: settings.Theme,
Safe: settings.SafeSearch,
}
err = tmpl.Execute(w, data)

6
user-settings.go Normal file → Executable file
View file

@ -40,15 +40,21 @@ func saveUserSettings(w http.ResponseWriter, settings UserSettings) {
Name: "theme",
Value: settings.Theme,
Path: "/",
Secure: true, // Ensure cookie is sent over HTTPS only
SameSite: http.SameSiteNoneMode, // Set SameSite to None
})
http.SetCookie(w, &http.Cookie{
Name: "language",
Value: settings.Language,
Path: "/",
Secure: true, // Ensure cookie is sent over HTTPS only
SameSite: http.SameSiteNoneMode, // Set SameSite to None
})
http.SetCookie(w, &http.Cookie{
Name: "safe",
Value: settings.SafeSearch,
Path: "/",
Secure: true, // Ensure cookie is sent over HTTPS only
SameSite: http.SameSiteNoneMode, // Set SameSite to None
})
}

View file

@ -171,8 +171,11 @@ func handleVideoSearch(w http.ResponseWriter, settings UserSettings, query strin
"Fetched": fmt.Sprintf("%.2f seconds", elapsed.Seconds()),
"Page": page,
"HasPrevPage": page > 1,
"HasNextPage": len(results) > 0, // no
"HasNextPage": len(results) > 0,
"LanguageOptions": languageOptions,
"CurrentLang": settings.Language,
"Theme": settings.Theme,
"Safe": settings.SafeSearch,
})
if err != nil {
printErr("Error executing template: %v", err)