added lang support to all html templates and cleaned up template rendering

This commit is contained in:
partisan 2024-10-08 22:11:06 +02:00
parent 5dd3114e2d
commit d9d0301548
18 changed files with 645 additions and 410 deletions

View file

@ -3,7 +3,6 @@ package main
import (
"encoding/json"
"fmt"
"html/template"
"log"
"math"
"net/http"
@ -99,48 +98,34 @@ func PerformRedditSearch(query string, safe string, page int) ([]ForumSearchResu
}
func handleForumsSearch(w http.ResponseWriter, settings UserSettings, query string, page int) {
// Start measuring the time for fetching results
startTime := time.Now()
// Perform the forum search
results, err := PerformRedditSearch(query, settings.SafeSearch, page)
if err != nil || len(results) == 0 { // 0 == 0 to force search by other node
if err != nil || len(results) == 0 {
log.Printf("No results from primary search, trying other nodes")
results = tryOtherNodesForForumSearch(query, settings.SafeSearch, settings.SearchLanguage, page)
}
data := struct {
Query string
Results []ForumSearchResult
Page int
HasPrevPage bool
HasNextPage bool
LanguageOptions []LanguageOption
CurrentLang string
Theme string
Safe string
IsThemeDark bool
}{
Query: query,
Results: results,
Page: page,
HasPrevPage: page > 1,
HasNextPage: len(results) == 25,
LanguageOptions: languageOptions,
CurrentLang: settings.SearchLanguage,
Theme: settings.Theme,
Safe: settings.SafeSearch,
IsThemeDark: settings.IsThemeDark,
// Measure the elapsed time for fetching results
elapsedTime := time.Since(startTime)
// Prepare the data to pass to the template
data := map[string]interface{}{
"Query": query,
"Results": results,
"Page": page,
"Fetched": fmt.Sprintf("%.2f %s", elapsedTime.Seconds(), Translate("seconds")), // Time for fetching results
"HasPrevPage": page > 1,
"HasNextPage": len(results) == 25, // Assuming 25 results per page
"LanguageOptions": languageOptions,
"CurrentLang": settings.SearchLanguage,
"Theme": settings.Theme,
"Safe": settings.SafeSearch,
"IsThemeDark": settings.IsThemeDark,
}
funcMap := template.FuncMap{
"sub": func(a, b int) int { return a - b },
"add": func(a, b int) int { return a + b },
}
tmpl, err := template.New("forums.html").Funcs(funcMap).ParseFiles("templates/forums.html")
if err != nil {
http.Error(w, fmt.Sprintf("Error loading template: %v", err), http.StatusInternalServerError)
return
}
if err := tmpl.Execute(w, data); err != nil {
http.Error(w, fmt.Sprintf("Error rendering template: %v", err), http.StatusInternalServerError)
}
// Render the template without measuring the time
renderTemplate(w, "forums.html", data)
}