diff --git a/init/init.go b/init/init.go index 997ce05..37cec9a 100644 --- a/init/init.go +++ b/init/init.go @@ -28,6 +28,7 @@ func Init(r *httprouter.Router, prefix string) { r.GET(prefix+"/history", webcontroller.ServeHistory) r.GET(prefix+"/u/:id", webcontroller.ServeFileViewer) r.GET(prefix+"/u/:id/preview", webcontroller.ServeFilePreview) + r.GET(prefix+"/l/:id", webcontroller.ServeListViewer) r.GET(prefix+"/t", webcontroller.ServePaste) r.NotFound = http.HandlerFunc(webcontroller.ServeNotFound) diff --git a/pixelapi/fileInfo.go b/pixelapi/file.go similarity index 100% rename from pixelapi/fileInfo.go rename to pixelapi/file.go diff --git a/pixelapi/list.go b/pixelapi/list.go new file mode 100644 index 0000000..23b8f8e --- /dev/null +++ b/pixelapi/list.go @@ -0,0 +1,44 @@ +package pixelapi + +import ( + "encoding/json" + + "fornaxian.com/pixeldrain-web/conf" + "fornaxian.com/pixeldrain-web/log" +) + +// List information object from the pixeldrain API +type List struct { + ID string `json:"id"` + Title string `json:"title"` + DateCreated int64 `json:"date_created"` + Files []ListFile +} + +// ListFile information object from the pixeldrain API +type ListFile struct { + ID string `json:"id"` + DetailHREF string `json:"detail_href"` + FileName string `json:"file_name"` + Description string `json:"description"` + DateCreated int64 `json:"date_created"` + DateLastView int64 `json:"date_last_view"` + ListDescription string `json:"list_description"` +} + +// GetList get a List from the pixeldrain API +func GetList(id string) *List { + body, err := get(conf.ApiURL() + "/list/" + id) + + if err != nil { + log.Error("req failed: %v", err) + return nil + } + var list List + err = json.Unmarshal([]byte(body), &list) + if err != nil { + log.Error("unmarshal failed: %v. json: %s", err, body) + return nil + } + return &list +} diff --git a/res/static/res/script/ListNavigator.js b/res/static/res/script/ListNavigator.js index 1fdf47e..4a848ac 100644 --- a/res/static/res/script/ListNavigator.js +++ b/res/static/res/script/ListNavigator.js @@ -124,7 +124,7 @@ var ListNavigator = { var navigatorItems = $("#listNavigatorItems").children().toArray(); for (i = startPos; i <= endPos; i++){ - var thumb = this.data[i].thumbnail; + var thumb = "/api/file/" + this.data[i].id + "/thumbnail"; var name = this.data[i].file_name; var itemHtml = escapeHTML(name) + "
" diff --git a/res/static/res/script/listmaker.js b/res/static/res/script/listmaker.js index 6a08a59..51eb010 100644 --- a/res/static/res/script/listmaker.js +++ b/res/static/res/script/listmaker.js @@ -51,27 +51,26 @@ function createList(){ } function listCreated(response){ - if(response.status === "success"){ - resultString = "
List creation finished!
" + if(response.success){ + resultString = "
List creation finished!
" + "Your List URL:
" - + "/l/" + response.id + "" + + ""+window.location.hostname+"/l/" + response.id + "" + "
"; - $('#uploads-container').prepend( + $('#uploads-completed').prepend( $(resultString).hide().fadeIn('slow') ); }else{ - resultString = "
List creation failed
" + resultString = "
List creation failed
" + "The server responded with this:
" + response.type + ": " + response.value + "
"; - $('#uploads-container').prepend( + $('#uploads-completed').prepend( $(resultString).hide().fadeIn('slow') ); } } - //$("#btnAddToList").click(function (evt) { // var fileId = $("#txtListId").val(); // var fileDesc = $("#txtListDesc").val(); diff --git a/res/template/file_viewer.html b/res/template/file_viewer.html index 93a1211..03449d7 100644 --- a/res/template/file_viewer.html +++ b/res/template/file_viewer.html @@ -2,7 +2,7 @@ - {{.FileName}} ~ PixelDrain File + {{.Title}} diff --git a/webcontroller/fileViewer.go b/webcontroller/fileViewer.go index 07a5706..ec19807 100644 --- a/webcontroller/fileViewer.go +++ b/webcontroller/fileViewer.go @@ -1,6 +1,7 @@ package webcontroller import ( + "fmt" "net/http" "strings" @@ -50,11 +51,13 @@ func ServeFileViewer(w http.ResponseWriter, r *http.Request, p httprouter.Params "views": 0, } err = templates.Get().ExecuteTemplate(w, "file_viewer", map[string]interface{}{ + "Title": fmt.Sprintf("%d files in Pixeldrain", len(finfo)), "APIResponse": listdata, "Type": "list", }) } else { err = templates.Get().ExecuteTemplate(w, "file_viewer", map[string]interface{}{ + "Title": fmt.Sprintf("%s ~ Pixeldrain file", finfo[0].FileName), "APIResponse": finfo[0], "Type": "file", }) diff --git a/webcontroller/listViewer.go b/webcontroller/listViewer.go new file mode 100644 index 0000000..d36b5f9 --- /dev/null +++ b/webcontroller/listViewer.go @@ -0,0 +1,35 @@ +package webcontroller + +import ( + "fmt" + "net/http" + + "fornaxian.com/pixeldrain-web/log" + "fornaxian.com/pixeldrain-web/pixelapi" + "fornaxian.com/pixeldrain-web/webcontroller/templates" + "github.com/julienschmidt/httprouter" +) + +// ServeListViewer controller for GET /l/:id +func ServeListViewer(w http.ResponseWriter, r *http.Request, p httprouter.Params) { + var list = pixelapi.GetList(p.ByName("id")) + if list == nil { + ServeNotFound(w, r) + return + } + var err error + listdata := map[string]interface{}{ + "data": list.Files, + "date_created": list.DateCreated, + "title": list.Title, + "views": 0, + } + err = templates.Get().ExecuteTemplate(w, "file_viewer", map[string]interface{}{ + "Title": fmt.Sprintf("%s ~ Pixeldrain list", list.Title), + "APIResponse": listdata, + "Type": "list", + }) + if err != nil { + log.Error("Error executing template file_viewer: %s", err) + } +}