Add logo and rename

This commit is contained in:
2025-11-12 17:16:13 +01:00
parent 584a4a0acd
commit f903e28728
49 changed files with 628 additions and 192 deletions

View File

@ -87,38 +87,45 @@ func (h *Handler) handleFavorites(w http.ResponseWriter, r *http.Request) {
// handleGetFavorites retourne la liste des favoris (HTML)
func (h *Handler) handleGetFavorites(w http.ResponseWriter, r *http.Request) {
// Pas de redirection ici car cet endpoint est utilisé par HTMX ET par fetch()
// depuis le JavaScript pour mettre à jour la liste après ajout/suppression
h.renderFavoritesList(w)
}
// renderFavoritesList rend le template des favoris (méthode interne)
func (h *Handler) renderFavoritesList(w http.ResponseWriter) {
favorites, err := h.loadFavorites()
if err != nil {
h.logger.Printf("Erreur chargement favoris: %v", err)
// En cas d'erreur, retourner une liste vide plutôt qu'une erreur 500
favorites = &FavoritesData{Items: []Favorite{}}
}
// Enrichir avec les informations des fichiers
enrichedFavorites := []map[string]interface{}{}
for _, fav := range favorites.Items {
absPath := filepath.Join(h.notesDir, fav.Path)
// Vérifier si le fichier/dossier existe toujours
if _, err := os.Stat(absPath); os.IsNotExist(err) {
continue // Skip les favoris qui n'existent plus
}
item := map[string]interface{}{
"Path": fav.Path,
"IsDir": fav.IsDir,
"Title": fav.Title,
"Icon": getIcon(fav.IsDir, fav.Path),
}
enrichedFavorites = append(enrichedFavorites, item)
}
data := map[string]interface{}{
"Favorites": enrichedFavorites,
}
w.Header().Set("Content-Type", "text/html; charset=utf-8")
if err := h.templates.ExecuteTemplate(w, "favorites.html", data); err != nil {
h.logger.Printf("Erreur template favoris: %v", err)
@ -192,24 +199,34 @@ func (h *Handler) handleAddFavorite(w http.ResponseWriter, r *http.Request) {
http.Error(w, "Erreur de sauvegarde", http.StatusInternalServerError)
return
}
// Retourner la liste mise à jour
h.handleGetFavorites(w, r)
h.renderFavoritesList(w)
}
// handleRemoveFavorite retire un élément des favoris
func (h *Handler) handleRemoveFavorite(w http.ResponseWriter, r *http.Request) {
if err := r.ParseForm(); err != nil {
// Pour DELETE, il faut lire le body manuellement
body, _ := io.ReadAll(r.Body)
r.Body.Close()
values, _ := url.ParseQuery(string(body))
r.Form = values
// Pour DELETE, il faut toujours lire le body manuellement
// car ParseForm() ne lit pas le body pour les méthodes DELETE
body, err := io.ReadAll(r.Body)
if err != nil {
h.logger.Printf("Erreur lecture body: %v", err)
http.Error(w, "Erreur lecture requête", http.StatusBadRequest)
return
}
path := r.FormValue("path")
r.Body.Close()
values, err := url.ParseQuery(string(body))
if err != nil {
h.logger.Printf("Erreur parsing query: %v", err)
http.Error(w, "Erreur parsing requête", http.StatusBadRequest)
return
}
path := values.Get("path")
if path == "" {
h.logger.Printf("Chemin requis manquant dans la requête")
http.Error(w, "Chemin requis", http.StatusBadRequest)
return
}
@ -243,15 +260,15 @@ func (h *Handler) handleRemoveFavorite(w http.ResponseWriter, r *http.Request) {
}
favorites.Items = newItems
if err := h.saveFavorites(favorites); err != nil {
h.logger.Printf("Erreur sauvegarde favoris: %v", err)
http.Error(w, "Erreur de sauvegarde", http.StatusInternalServerError)
return
}
// Retourner la liste mise à jour
h.handleGetFavorites(w, r)
h.renderFavoritesList(w)
}
// handleReorderFavorites réorganise l'ordre des favoris