diff options
author | Steve <nilslice@gmail.com> | 2016-12-19 11:19:53 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-12-19 11:19:53 -0800 |
commit | 3791fadda7b761ffba38c567da29e2e71acd1dfb (patch) | |
tree | 79d810f9aafa1868ee0760983937470d0eea3db8 /system/admin/handlers.go | |
parent | b20c5bdee38682edc851e646d815a34689c3c923 (diff) |
[addons] Creating foundation for plugin-like system "Addons" (#24)
* adding addons dir and sample addon which enables the use of a new input element in forms for referencing other content. "addons" is a conceptual plugin-like feature, similar to wordpress "plugins" dir, but not as sophisticated
Diffstat (limited to 'system/admin/handlers.go')
-rw-r--r-- | system/admin/handlers.go | 56 |
1 files changed, 30 insertions, 26 deletions
diff --git a/system/admin/handlers.go b/system/admin/handlers.go index 1e6a26c..266535a 100644 --- a/system/admin/handlers.go +++ b/system/admin/handlers.go @@ -11,7 +11,6 @@ import ( "strings" "time" - "github.com/bosssauce/ponzu/content" "github.com/bosssauce/ponzu/management/editor" "github.com/bosssauce/ponzu/management/manager" "github.com/bosssauce/ponzu/system/admin/config" @@ -19,6 +18,7 @@ import ( "github.com/bosssauce/ponzu/system/admin/user" "github.com/bosssauce/ponzu/system/api" "github.com/bosssauce/ponzu/system/db" + "github.com/bosssauce/ponzu/system/item" "github.com/gorilla/schema" emailer "github.com/nilslice/email" @@ -71,6 +71,7 @@ func initHandler(res http.ResponseWriter, req *http.Request) { etag := db.NewEtag() req.Form.Set("etag", etag) + // create and save admin user email := strings.ToLower(req.FormValue("email")) password := req.FormValue("password") usr := user.NewUser(email, password) @@ -82,6 +83,10 @@ func initHandler(res http.ResponseWriter, req *http.Request) { return } + // set HTTP port which should be previously added to config cache + port := db.ConfigCache("http_port") + req.Form.Set("http_port", port) + // set initial user email as admin_email and make config req.Form.Set("admin_email", email) err = db.SetConfig(req.Form) @@ -754,7 +759,7 @@ func contentsHandler(res http.ResponseWriter, req *http.Request) { status := q.Get("status") - if _, ok := content.Types[t]; !ok { + if _, ok := item.Types[t]; !ok { res.WriteHeader(http.StatusBadRequest) errView, err := Error400() if err != nil { @@ -765,7 +770,7 @@ func contentsHandler(res http.ResponseWriter, req *http.Request) { return } - pt := content.Types[t]() + pt := item.Types[t]() p, ok := pt.(editor.Editable) if !ok { @@ -1048,17 +1053,17 @@ func contentsHandler(res http.ResponseWriter, req *http.Request) { // p is the asserted post as an Editable, t is the Type of the post. // specifier is passed to append a name to a namespace like __pending func adminPostListItem(e editor.Editable, typeName, status string) []byte { - s, ok := e.(editor.Sortable) + s, ok := e.(item.Sortable) if !ok { - log.Println("Content type", typeName, "doesn't implement editor.Sortable") - post := `<li class="col s12">Error retreiving data. Your data type doesn't implement necessary interfaces. (editor.Sortable)</li>` + log.Println("Content type", typeName, "doesn't implement item.Sortable") + post := `<li class="col s12">Error retreiving data. Your data type doesn't implement necessary interfaces. (item.Sortable)</li>` return []byte(post) } - i, ok := e.(content.Identifiable) + i, ok := e.(item.Identifiable) if !ok { - log.Println("Content type", typeName, "doesn't implement content.Identifiable") - post := `<li class="col s12">Error retreiving data. Your data type doesn't implement necessary interfaces. (content.Identifiable)</li>` + log.Println("Content type", typeName, "doesn't implement item.Identifiable") + post := `<li class="col s12">Error retreiving data. Your data type doesn't implement necessary interfaces. (item.Identifiable)</li>` return []byte(post) } @@ -1122,12 +1127,12 @@ func approveContentHandler(res http.ResponseWriter, req *http.Request) { t = strings.Split(t, "__")[0] } - post := content.Types[t]() + post := item.Types[t]() // run hooks - hook, ok := post.(content.Hookable) + hook, ok := post.(item.Hookable) if !ok { - log.Println("Type", t, "does not implement content.Hookable or embed content.Item.") + log.Println("Type", t, "does not implement item.Hookable or embed item.Item.") res.WriteHeader(http.StatusBadRequest) errView, err := Error400() if err != nil { @@ -1262,9 +1267,9 @@ func editHandler(res http.ResponseWriter, req *http.Request) { t := q.Get("type") status := q.Get("status") - contentType, ok := content.Types[t] + contentType, ok := item.Types[t] if !ok { - fmt.Fprintf(res, content.ErrTypeNotRegistered, t) + fmt.Fprintf(res, item.ErrTypeNotRegistered, t) return } post := contentType() @@ -1288,7 +1293,6 @@ func editHandler(res http.ResponseWriter, req *http.Request) { } if len(data) < 1 || data == nil { - fmt.Println(string(data)) res.WriteHeader(http.StatusNotFound) errView, err := Error404() if err != nil { @@ -1312,12 +1316,12 @@ func editHandler(res http.ResponseWriter, req *http.Request) { return } } else { - s, ok := post.(content.Identifiable) + item, ok := post.(item.Identifiable) if !ok { - log.Println("Content type", t, "doesn't implement editor.Identifiable") + log.Println("Content type", t, "doesn't implement item.Identifiable") return } - s.SetItemID(-1) + item.SetItemID(-1) } m, err := manager.Manage(post.(editor.Editable), t) @@ -1414,7 +1418,7 @@ func editHandler(res http.ResponseWriter, req *http.Request) { t = strings.Split(t, "__")[0] } - p, ok := content.Types[t] + p, ok := item.Types[t] if !ok { log.Println("Type", t, "is not a content type. Cannot edit or save.") res.WriteHeader(http.StatusBadRequest) @@ -1428,9 +1432,9 @@ func editHandler(res http.ResponseWriter, req *http.Request) { } post := p() - hook, ok := post.(content.Hookable) + hook, ok := post.(item.Hookable) if !ok { - log.Println("Type", t, "does not implement content.Hookable or embed content.Item.") + log.Println("Type", t, "does not implement item.Hookable or embed item.Item.") res.WriteHeader(http.StatusBadRequest) errView, err := Error400() if err != nil { @@ -1525,9 +1529,9 @@ func deleteHandler(res http.ResponseWriter, req *http.Request) { ct = spec[0] } - p, ok := content.Types[ct] + p, ok := item.Types[ct] if !ok { - log.Println("Type", t, "does not implement content.Hookable or embed content.Item.") + log.Println("Type", t, "does not implement item.Hookable or embed item.Item.") res.WriteHeader(http.StatusBadRequest) errView, err := Error400() if err != nil { @@ -1539,9 +1543,9 @@ func deleteHandler(res http.ResponseWriter, req *http.Request) { } post := p() - hook, ok := post.(content.Hookable) + hook, ok := post.(item.Hookable) if !ok { - log.Println("Type", t, "does not implement content.Hookable or embed content.Item.") + log.Println("Type", t, "does not implement item.Hookable or embed item.Item.") res.WriteHeader(http.StatusBadRequest) errView, err := Error400() if err != nil { @@ -1656,7 +1660,7 @@ func searchHandler(res http.ResponseWriter, req *http.Request) { posts := db.ContentAll(t + specifier) b := &bytes.Buffer{} - p := content.Types[t]().(editor.Editable) + p := item.Types[t]().(editor.Editable) html := `<div class="col s9 card"> <div class="card-content"> |