summaryrefslogtreecommitdiff
path: root/system/admin/handlers.go
diff options
context:
space:
mode:
Diffstat (limited to 'system/admin/handlers.go')
-rw-r--r--system/admin/handlers.go133
1 files changed, 130 insertions, 3 deletions
diff --git a/system/admin/handlers.go b/system/admin/handlers.go
index bb36e39..23c7e50 100644
--- a/system/admin/handlers.go
+++ b/system/admin/handlers.go
@@ -1913,6 +1913,20 @@ func editHandler(res http.ResponseWriter, req *http.Request) {
return
}
+ if cid == "-1" {
+ err = hook.BeforeAdminCreate(res, req)
+ if err != nil {
+ log.Println("Error running BeforeAdminCreate method in editHandler for:", t, err)
+ return
+ }
+ } else {
+ err = hook.BeforeAdminUpdate(res, req)
+ if err != nil {
+ log.Println("Error running BeforeAdminUpdate method in editHandler for:", t, err)
+ return
+ }
+ }
+
err = hook.BeforeSave(res, req)
if err != nil {
log.Println("Error running BeforeSave method in editHandler for:", t, err)
@@ -1942,6 +1956,20 @@ func editHandler(res http.ResponseWriter, req *http.Request) {
return
}
+ if cid == "-1" {
+ err = hook.AfterAdminCreate(res, req)
+ if err != nil {
+ log.Println("Error running AfterAdminUpdate method in editHandler for:", t, err)
+ return
+ }
+ } else {
+ err = hook.AfterAdminUpdate(res, req)
+ if err != nil {
+ log.Println("Error running AfterAdminUpdate method in editHandler for:", t, err)
+ return
+ }
+ }
+
scheme := req.URL.Scheme
host := req.URL.Host
path := req.URL.Path
@@ -2029,6 +2057,12 @@ func deleteHandler(res http.ResponseWriter, req *http.Request) {
}
}
+ err = hook.BeforeAdminDelete(res, req)
+ if err != nil {
+ log.Println("Error running BeforeAdminDelete method in deleteHandler for:", t, err)
+ return
+ }
+
err = hook.BeforeDelete(res, req)
if err != nil {
log.Println("Error running BeforeDelete method in deleteHandler for:", t, err)
@@ -2048,6 +2082,12 @@ func deleteHandler(res http.ResponseWriter, req *http.Request) {
return
}
+ err = hook.AfterAdminDelete(res, req)
+ if err != nil {
+ log.Println("Error running AfterDelete method in deleteHandler for:", t, err)
+ return
+ }
+
if reject == "true" {
err = hook.AfterReject(res, req)
if err != nil {
@@ -2698,7 +2738,21 @@ func addonsHandler(res http.ResponseWriter, req *http.Request) {
id := req.PostFormValue("id")
action := strings.ToLower(req.PostFormValue("action"))
- _, err = db.Addon(id)
+ at, ok := addon.Types[id]
+ if !ok {
+ log.Println("Error: no addon type found for:", id)
+ log.Println(err)
+ res.WriteHeader(http.StatusNotFound)
+ errView, err := Error404()
+ if err != nil {
+ return
+ }
+
+ res.Write(errView)
+ return
+ }
+
+ b, err := db.Addon(id)
if err == db.ErrNoAddonExists {
log.Println(err)
res.WriteHeader(http.StatusNotFound)
@@ -2722,9 +2776,55 @@ func addonsHandler(res http.ResponseWriter, req *http.Request) {
return
}
+ adn := at()
+ err = json.Unmarshal(b, adn)
+ if err != nil {
+ log.Println(err)
+ res.WriteHeader(http.StatusInternalServerError)
+ errView, err := Error500()
+ if err != nil {
+ return
+ }
+
+ res.Write(errView)
+ return
+ }
+
+ h, ok := adn.(item.Hookable)
+ if !ok {
+ log.Println("Addon", adn, "does not implement the item.Hookable interface or embed item.Item")
+ return
+ }
+
switch action {
case "enable":
- err := addon.Enable(id)
+ err := h.BeforeEnable(res, req)
+ if err != nil {
+ log.Println(err)
+ res.WriteHeader(http.StatusInternalServerError)
+ errView, err := Error500()
+ if err != nil {
+ return
+ }
+
+ res.Write(errView)
+ return
+ }
+
+ 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
+ }
+
+ err = h.AfterEnable(res, req)
if err != nil {
log.Println(err)
res.WriteHeader(http.StatusInternalServerError)
@@ -2736,8 +2836,35 @@ func addonsHandler(res http.ResponseWriter, req *http.Request) {
res.Write(errView)
return
}
+
case "disable":
- err := addon.Disable(id)
+ err := h.BeforeDisable(res, req)
+ if err != nil {
+ log.Println(err)
+ res.WriteHeader(http.StatusInternalServerError)
+ errView, err := Error500()
+ if err != nil {
+ return
+ }
+
+ res.Write(errView)
+ return
+ }
+
+ 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
+ }
+
+ err = h.AfterDisable(res, req)
if err != nil {
log.Println(err)
res.WriteHeader(http.StatusInternalServerError)