86 lines
2.3 KiB
Go
86 lines
2.3 KiB
Go
package app
|
|
|
|
import "net/http"
|
|
|
|
func (s *Server) adminRedirect(w http.ResponseWriter, r *http.Request) {
|
|
http.Redirect(w, r, "/admin/main", http.StatusSeeOther)
|
|
}
|
|
|
|
func (s *Server) adminMain(w http.ResponseWriter, r *http.Request) {
|
|
data, err := s.adminData(r, "main")
|
|
if err != nil {
|
|
s.error(w, err)
|
|
return
|
|
}
|
|
s.renderAdmin(w, r, "admin_main.html", "admin_main_partial.html", data)
|
|
}
|
|
|
|
func (s *Server) adminProjects(w http.ResponseWriter, r *http.Request) {
|
|
data, err := s.adminData(r, "projects")
|
|
if err != nil {
|
|
s.error(w, err)
|
|
return
|
|
}
|
|
s.renderAdmin(w, r, "admin_projects.html", "admin_projects_partial.html", data)
|
|
}
|
|
|
|
func (s *Server) adminServices(w http.ResponseWriter, r *http.Request) {
|
|
data, err := s.adminData(r, "services")
|
|
if err != nil {
|
|
s.error(w, err)
|
|
return
|
|
}
|
|
s.renderAdmin(w, r, "admin_services.html", "admin_services_partial.html", data)
|
|
}
|
|
|
|
func (s *Server) adminContactDetails(w http.ResponseWriter, r *http.Request) {
|
|
data, err := s.adminData(r, "contact-details")
|
|
if err != nil {
|
|
s.error(w, err)
|
|
return
|
|
}
|
|
s.renderAdmin(w, r, "admin_contact_details.html", "admin_contact_details_partial.html", data)
|
|
}
|
|
|
|
func (s *Server) adminData(r *http.Request, tab string) (pageData, error) {
|
|
content, err := s.store.SiteContent(r.Context())
|
|
if err != nil {
|
|
return pageData{}, err
|
|
}
|
|
data := pageData{Title: "Admin", Admin: true, AdminTab: tab, Content: content, Success: r.URL.Query().Get("ok"), Error: r.URL.Query().Get("err"), Version: s.cfg.Version}
|
|
if tab == "projects" {
|
|
projects, err := s.store.Projects(r.Context(), false)
|
|
if err != nil {
|
|
return pageData{}, err
|
|
}
|
|
imagesByProject, err := s.store.ProjectImagesByProject(r.Context())
|
|
if err != nil {
|
|
return pageData{}, err
|
|
}
|
|
for i := range projects {
|
|
projects[i].Images = imagesByProject[projects[i].ID]
|
|
}
|
|
data.Projects = projects
|
|
}
|
|
if tab == "services" {
|
|
services, err := s.store.Services(r.Context(), false)
|
|
if err != nil {
|
|
return pageData{}, err
|
|
}
|
|
faqs, err := s.store.FAQs(r.Context(), false)
|
|
if err != nil {
|
|
return pageData{}, err
|
|
}
|
|
data.Services = services
|
|
data.FAQs = faqs
|
|
}
|
|
if tab == "contact-details" {
|
|
contacts, err := s.store.ContactRequests(r.Context())
|
|
if err != nil {
|
|
return pageData{}, err
|
|
}
|
|
data.Contacts = contacts
|
|
}
|
|
return data, nil
|
|
}
|