(app *App, u *User, w http.ResponseWriter, r *http.Request)
| 481 | } |
| 482 | |
| 483 | func handleViewAdminPage(app *App, u *User, w http.ResponseWriter, r *http.Request) error { |
| 484 | vars := mux.Vars(r) |
| 485 | slug := vars["slug"] |
| 486 | if slug == "" { |
| 487 | return impart.HTTPError{http.StatusFound, "/admin/pages"} |
| 488 | } |
| 489 | |
| 490 | p := struct { |
| 491 | *UserPage |
| 492 | *AdminPage |
| 493 | Config config.AppCfg |
| 494 | Message string |
| 495 | |
| 496 | Banner *instanceContent |
| 497 | Content *instanceContent |
| 498 | }{ |
| 499 | AdminPage: NewAdminPage(app), |
| 500 | Config: app.cfg.App, |
| 501 | Message: r.FormValue("m"), |
| 502 | } |
| 503 | |
| 504 | var err error |
| 505 | // Get pre-defined pages, or select slug |
| 506 | if slug == "about" { |
| 507 | p.Content, err = getAboutPage(app) |
| 508 | } else if slug == "contact" { |
| 509 | p.Content, err = getContactPage(app) |
| 510 | } else if slug == "privacy" { |
| 511 | p.Content, err = getPrivacyPage(app) |
| 512 | } else if slug == "landing" { |
| 513 | p.Banner, err = getLandingBanner(app) |
| 514 | if err != nil { |
| 515 | return impart.HTTPError{http.StatusInternalServerError, fmt.Sprintf("Could not get banner: %v", err)} |
| 516 | } |
| 517 | p.Content, err = getLandingBody(app) |
| 518 | p.Content.ID = "landing" |
| 519 | } else if slug == "reader" { |
| 520 | p.Content, err = getReaderSection(app) |
| 521 | } else { |
| 522 | p.Content, err = app.db.GetDynamicContent(slug) |
| 523 | } |
| 524 | if err != nil { |
| 525 | return impart.HTTPError{http.StatusInternalServerError, fmt.Sprintf("Could not get page: %v", err)} |
| 526 | } |
| 527 | title := "New page" |
| 528 | if p.Content != nil { |
| 529 | title = "Edit " + p.Content.ID |
| 530 | } else { |
| 531 | p.Content = &instanceContent{} |
| 532 | } |
| 533 | p.UserPage = NewUserPage(app, r, u, title, nil) |
| 534 | |
| 535 | showUserPage(w, "view-page", p) |
| 536 | return nil |
| 537 | } |
| 538 | |
| 539 | func handleAdminUpdateSite(app *App, u *User, w http.ResponseWriter, r *http.Request) error { |
| 540 | vars := mux.Vars(r) |
nothing calls this directly
no test coverage detected