All checks were successful
Publish / Test, build, and push image (push) Successful in 3m38s
65 lines
1.8 KiB
Go
65 lines
1.8 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) 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 == "contact-details" {
|
|
contacts, err := s.store.ContactRequests(r.Context())
|
|
if err != nil {
|
|
return pageData{}, err
|
|
}
|
|
data.Contacts = contacts
|
|
}
|
|
return data, nil
|
|
}
|