summaryrefslogtreecommitdiff
path: root/system/admin
diff options
context:
space:
mode:
authorSteve Manuel <nilslice@gmail.com>2017-01-11 18:44:15 -0800
committerSteve Manuel <nilslice@gmail.com>2017-01-11 18:44:15 -0800
commit6428f9982e7f1d42e70a18d2e210873eb730959c (patch)
treeed4168d5c765e50b57f54a2604dd7a078b6d8926 /system/admin
parentdd233c720e32b1c19e8bb344dff2c19b2d803277 (diff)
moving addon handlers to addon package to avoid import issues
Diffstat (limited to 'system/admin')
-rw-r--r--system/admin/handlers.go360
-rw-r--r--system/admin/server.go3
2 files changed, 0 insertions, 363 deletions
diff --git a/system/admin/handlers.go b/system/admin/handlers.go
index 02d9d92..ac2aea5 100644
--- a/system/admin/handlers.go
+++ b/system/admin/handlers.go
@@ -14,7 +14,6 @@ import (
"github.com/ponzu-cms/ponzu/management/editor"
"github.com/ponzu-cms/ponzu/management/manager"
- "github.com/ponzu-cms/ponzu/system/addon"
"github.com/ponzu-cms/ponzu/system/admin/config"
"github.com/ponzu-cms/ponzu/system/admin/upload"
"github.com/ponzu-cms/ponzu/system/admin/user"
@@ -25,7 +24,6 @@ import (
"github.com/gorilla/schema"
emailer "github.com/nilslice/email"
"github.com/nilslice/jwt"
- "github.com/tidwall/gjson"
)
func adminHandler(res http.ResponseWriter, req *http.Request) {
@@ -1926,361 +1924,3 @@ func searchHandler(res http.ResponseWriter, req *http.Request) {
res.Header().Set("Content-Type", "text/html")
res.Write(adminView)
}
-
-func addonsHandler(res http.ResponseWriter, req *http.Request) {
- switch req.Method {
- case http.MethodGet:
- all := db.AddonAll()
- list := &bytes.Buffer{}
-
- for i := range all {
- v := adminAddonListItem(all[i])
- _, err := list.Write(v)
- if err != nil {
- log.Println("Error writing bytes to addon list view:", err)
- res.WriteHeader(http.StatusInternalServerError)
- errView, err := Error500()
- if err != nil {
- log.Println(err)
- return
- }
-
- res.Write(errView)
- return
- }
- }
-
- html := &bytes.Buffer{}
- open := `<div class="col s9 card">
- <div class="card-content">
- <div class="row">
- <div class="card-title col s7">Addons</div>
- </div>
- <ul class="posts row">`
-
- _, err := html.WriteString(open)
- if err != nil {
- log.Println("Error writing open html to addon html view:", err)
- res.WriteHeader(http.StatusInternalServerError)
- errView, err := Error500()
- if err != nil {
- log.Println(err)
- return
- }
-
- res.Write(errView)
- return
- }
-
- _, err = html.Write(list.Bytes())
- if err != nil {
- log.Println("Error writing list bytes to addon html view:", err)
- res.WriteHeader(http.StatusInternalServerError)
- errView, err := Error500()
- if err != nil {
- log.Println(err)
- return
- }
-
- res.Write(errView)
- return
- }
-
- _, err = html.WriteString(`</ul></div></div>`)
- if err != nil {
- log.Println("Error writing close html to addon html view:", err)
- res.WriteHeader(http.StatusInternalServerError)
- errView, err := Error500()
- if err != nil {
- log.Println(err)
- return
- }
-
- res.Write(errView)
- return
- }
-
- if html.Len() == 0 {
- _, err := html.WriteString(`<p>No addons available.</p>`)
- if err != nil {
- log.Println("Error writing default addon html to admin view:", err)
- res.WriteHeader(http.StatusInternalServerError)
- errView, err := Error500()
- if err != nil {
- log.Println(err)
- return
- }
-
- res.Write(errView)
- return
- }
- }
-
- view, err := Admin(html.Bytes())
- if err != nil {
- log.Println("Error writing addon html to admin view:", err)
- res.WriteHeader(http.StatusInternalServerError)
- errView, err := Error500()
- if err != nil {
- log.Println(err)
- return
- }
-
- res.Write(errView)
- return
- }
-
- res.Write(view)
-
- case http.MethodPost:
- err := req.ParseMultipartForm(1024 * 1024 * 4) // maxMemory 4MB
- if err != nil {
- log.Println(err)
- res.WriteHeader(http.StatusInternalServerError)
- errView, err := Error500()
- if err != nil {
- return
- }
-
- res.Write(errView)
- return
- }
-
- id := req.PostFormValue("id")
- action := strings.ToLower(req.PostFormValue("action"))
-
- _, err = db.Addon(id)
- if err == db.ErrNoAddonExists {
- log.Println(err)
- res.WriteHeader(http.StatusNotFound)
- errView, err := Error404()
- if err != nil {
- return
- }
-
- res.Write(errView)
- return
- }
- if err != nil {
- log.Println(err)
- res.WriteHeader(http.StatusInternalServerError)
- errView, err := Error500()
- if err != nil {
- return
- }
-
- res.Write(errView)
- return
- }
-
- switch action {
- case "enable":
- err := addon.Enable(id)
- if err != nil {
- log.Println(err)
- res.WriteHeader(http.StatusInternalServerError)
- errView, err := Error500()
- if err != nil {
- return
- }
-
- res.Write(errView)
- return
- }
- case "disable":
- err := addon.Disable(id)
- if err != nil {
- log.Println(err)
- res.WriteHeader(http.StatusInternalServerError)
- errView, err := Error500()
- if err != nil {
- return
- }
-
- res.Write(errView)
- return
- }
- default:
- res.WriteHeader(http.StatusBadRequest)
- errView, err := Error400()
- if err != nil {
- return
- }
-
- res.Write(errView)
- return
- }
-
- http.Redirect(res, req, req.URL.String(), http.StatusFound)
-
- default:
- res.WriteHeader(http.StatusBadRequest)
- errView, err := Error400()
- if err != nil {
- log.Println(err)
- return
- }
-
- res.Write(errView)
- return
- }
-}
-
-func addonHandler(res http.ResponseWriter, req *http.Request) {
- switch req.Method {
- case http.MethodGet:
- id := req.FormValue("id")
-
- data, err := db.Addon(id)
- if err != nil {
- log.Println(err)
- res.WriteHeader(http.StatusInternalServerError)
- errView, err := Error500()
- if err != nil {
- return
- }
-
- res.Write(errView)
- return
- }
-
- _, ok := addon.Types[id]
- if !ok {
- log.Println("Addon: ", id, "is not found in addon.Types map")
- res.WriteHeader(http.StatusNotFound)
- errView, err := Error404()
- if err != nil {
- return
- }
-
- res.Write(errView)
- return
- }
-
- m, err := addon.Manage(data, id)
- if err != nil {
- log.Println(err)
- res.WriteHeader(http.StatusInternalServerError)
- errView, err := Error500()
- if err != nil {
- return
- }
-
- res.Write(errView)
- return
- }
-
- addonView, err := Admin(m)
- if err != nil {
- log.Println(err)
- res.WriteHeader(http.StatusInternalServerError)
- return
- }
-
- res.Header().Set("Content-Type", "text/html")
- res.Write(addonView)
-
- case http.MethodPost:
- // save req.Form
- err := req.ParseMultipartForm(1024 * 1024 * 4) // maxMemory 4MB
- if err != nil {
- log.Println(err)
- res.WriteHeader(http.StatusInternalServerError)
- errView, err := Error500()
- if err != nil {
- return
- }
-
- res.Write(errView)
- return
- }
-
- name := req.FormValue("addon_name")
- id := req.FormValue("addon_reverse_dns")
-
- at, ok := addon.Types[id]
- if !ok {
- log.Println("Error: addon", name, "has no record in addon.Types map at", id)
- res.WriteHeader(http.StatusBadRequest)
- errView, err := Error400()
- if err != nil {
- return
- }
-
- res.Write(errView)
- return
- }
-
- // if Hookable, call BeforeSave prior to saving
- h, ok := at().(item.Hookable)
- if ok {
- err := h.BeforeSave(req)
- if err != nil {
- log.Println(err)
- res.WriteHeader(http.StatusInternalServerError)
- errView, err := Error500()
- if err != nil {
- return
- }
-
- res.Write(errView)
- return
- }
- }
-
- err = db.SetAddon(req.Form, at())
- if err != nil {
- log.Println("Error saving addon:", name, err)
- res.WriteHeader(http.StatusInternalServerError)
- errView, err := Error500()
- if err != nil {
- return
- }
-
- res.Write(errView)
- return
- }
-
- http.Redirect(res, req, "/admin/addon?id="+id, http.StatusFound)
-
- default:
- res.WriteHeader(http.StatusBadRequest)
- errView, err := Error405()
- if err != nil {
- log.Println(err)
- return
- }
-
- res.Write(errView)
- return
- }
-}
-
-func adminAddonListItem(data []byte) []byte {
- id := gjson.GetBytes(data, "addon_reverse_dns").String()
- status := gjson.GetBytes(data, "addon_status").String()
- name := gjson.GetBytes(data, "addon_name").String()
-
- var action string
- var buttonClass string
- if status != addon.StatusEnabled {
- action = "Enable"
- buttonClass = "green"
- } else {
- action = "Disable"
- buttonClass = "red"
- }
-
- a := `
- <li class="col s12">
- <a href="/admin/addon?id=` + id + `" alt="Configure '` + name + `'">` + name + `</a>
-
- <form enctype="multipart/form-data" class="quick-` + strings.ToLower(action) + `-addon __ponzu right" action="/admin/addons" method="post">
- <button class="btn waves-effect waves-effect-light ` + buttonClass + `">` + action + `</button>
- <input type="hidden" name="id" value="` + id + `" />
- <input type="hidden" name="action" value="` + action + `" />
- </form>
- </li>`
-
- return []byte(a)
-}
diff --git a/system/admin/server.go b/system/admin/server.go
index f2bf244..155892a 100644
--- a/system/admin/server.go
+++ b/system/admin/server.go
@@ -23,9 +23,6 @@ func Run() {
http.HandleFunc("/admin/recover", forgotPasswordHandler)
http.HandleFunc("/admin/recover/key", recoveryKeyHandler)
- http.HandleFunc("/admin/addons", user.Auth(addonsHandler))
- http.HandleFunc("/admin/addon", user.Auth(addonHandler))
-
http.HandleFunc("/admin/configure", user.Auth(configHandler))
http.HandleFunc("/admin/configure/users", user.Auth(configUsersHandler))
http.HandleFunc("/admin/configure/users/edit", user.Auth(configUsersEditHandler))