mirror of
https://github.com/filebrowser/filebrowser.git
synced 2024-06-07 23:00:43 +00:00
make some updates
This commit is contained in:
parent
65d3c33381
commit
77e5bd2b9e
35
binary.go
35
binary.go
@ -2,7 +2,8 @@
|
||||
// sources:
|
||||
// assets/public/css/styles.css
|
||||
// assets/public/js/application.js
|
||||
// assets/templates/template.tmpl
|
||||
// assets/templates/base.tmpl
|
||||
// assets/templates/listing.tmpl
|
||||
// DO NOT EDIT!
|
||||
|
||||
package filemanager
|
||||
@ -65,10 +66,28 @@ func publicJsApplicationJs() (*asset, error) {
|
||||
return a, err
|
||||
}
|
||||
|
||||
// templatesTemplateTmpl reads file data from disk. It returns an error on failure.
|
||||
func templatesTemplateTmpl() (*asset, error) {
|
||||
path := "D:\\Code\\Go\\src\\github.com\\hacdias\\caddy-filemanager\\assets\\templates\\template.tmpl"
|
||||
name := "templates/template.tmpl"
|
||||
// templatesBaseTmpl reads file data from disk. It returns an error on failure.
|
||||
func templatesBaseTmpl() (*asset, error) {
|
||||
path := "D:\\Code\\Go\\src\\github.com\\hacdias\\caddy-filemanager\\assets\\templates\\base.tmpl"
|
||||
name := "templates/base.tmpl"
|
||||
bytes, err := bindataRead(path, name)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
fi, err := os.Stat(path)
|
||||
if err != nil {
|
||||
err = fmt.Errorf("Error reading asset info %s at %s: %v", name, path, err)
|
||||
}
|
||||
|
||||
a := &asset{bytes: bytes, info: fi}
|
||||
return a, err
|
||||
}
|
||||
|
||||
// templatesListingTmpl reads file data from disk. It returns an error on failure.
|
||||
func templatesListingTmpl() (*asset, error) {
|
||||
path := "D:\\Code\\Go\\src\\github.com\\hacdias\\caddy-filemanager\\assets\\templates\\listing.tmpl"
|
||||
name := "templates/listing.tmpl"
|
||||
bytes, err := bindataRead(path, name)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@ -137,7 +156,8 @@ func AssetNames() []string {
|
||||
var _bindata = map[string]func() (*asset, error){
|
||||
"public/css/styles.css": publicCssStylesCss,
|
||||
"public/js/application.js": publicJsApplicationJs,
|
||||
"templates/template.tmpl": templatesTemplateTmpl,
|
||||
"templates/base.tmpl": templatesBaseTmpl,
|
||||
"templates/listing.tmpl": templatesListingTmpl,
|
||||
}
|
||||
|
||||
// AssetDir returns the file names below a certain
|
||||
@ -189,7 +209,8 @@ var _bintree = &bintree{nil, map[string]*bintree{
|
||||
}},
|
||||
}},
|
||||
"templates": &bintree{nil, map[string]*bintree{
|
||||
"template.tmpl": &bintree{templatesTemplateTmpl, map[string]*bintree{}},
|
||||
"base.tmpl": &bintree{templatesBaseTmpl, map[string]*bintree{}},
|
||||
"listing.tmpl": &bintree{templatesListingTmpl, map[string]*bintree{}},
|
||||
}},
|
||||
}}
|
||||
|
||||
|
@ -218,7 +218,7 @@ func (f FileManager) ServeListing(w http.ResponseWriter, r *http.Request, reques
|
||||
w.Header().Set("Content-Type", "application/json; charset=utf-8")
|
||||
|
||||
default: // There's no 'application/json' in the 'Accept' header; browse normally
|
||||
if buf, err = f.formatAsHTML(listing, bc); err != nil {
|
||||
if buf, err = f.formatAsHTML(listing, bc, "listing"); err != nil {
|
||||
return http.StatusInternalServerError, err
|
||||
}
|
||||
w.Header().Set("Content-Type", "text/html; charset=utf-8")
|
||||
@ -240,10 +240,3 @@ func (f FileManager) formatAsJSON(listing *Listing, bc *Config) (*bytes.Buffer,
|
||||
_, err = buf.Write(marsh)
|
||||
return buf, err
|
||||
}
|
||||
|
||||
func (f FileManager) formatAsHTML(listing *Listing, fmc *Config) (*bytes.Buffer, error) {
|
||||
buf := new(bytes.Buffer)
|
||||
listing.StyleSheet = fmc.StyleSheet
|
||||
err := Template.Execute(buf, listing)
|
||||
return buf, err
|
||||
}
|
||||
|
59
page.go
59
page.go
@ -1,36 +1,51 @@
|
||||
package filemanager
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"net/http"
|
||||
"bytes"
|
||||
"html/template"
|
||||
"log"
|
||||
)
|
||||
|
||||
// Page is the base type for each page
|
||||
type Page struct {
|
||||
GET, POST, PUT, DELETE func(w http.ResponseWriter, r *http.Request) (int, error)
|
||||
DoGET, DoPOST, DoPUT, DoDELETE bool
|
||||
Config *Config
|
||||
Data interface{}
|
||||
}
|
||||
|
||||
// Route redirects the request for the respective method
|
||||
func (p Page) Route(w http.ResponseWriter, r *http.Request) (int, error) {
|
||||
switch r.Method {
|
||||
case "DELETE":
|
||||
if p.DoDELETE {
|
||||
return p.DELETE(w, r)
|
||||
func (f FileManager) formatAsHTML(data interface{}, fmc *Config, templates ...string) (*bytes.Buffer, error) {
|
||||
buf := new(bytes.Buffer)
|
||||
pg := &Page{
|
||||
Config: fmc,
|
||||
Data: data,
|
||||
}
|
||||
|
||||
templates = append(templates, "base")
|
||||
var tpl *template.Template
|
||||
|
||||
// For each template, add it to the the tpl variable
|
||||
for i, t := range templates {
|
||||
// Get the template from the assets
|
||||
page, err := Asset("templates/" + t + ".tmpl")
|
||||
|
||||
// Check if there is some error. If so, the template doesn't exist
|
||||
if err != nil {
|
||||
log.Print(err)
|
||||
return new(bytes.Buffer), err
|
||||
}
|
||||
case "POST":
|
||||
if p.DoPOST {
|
||||
return p.POST(w, r)
|
||||
|
||||
// If it's the first iteration, creates a new template and add the
|
||||
// functions map
|
||||
if i == 0 {
|
||||
tpl, err = template.New(t).Parse(string(page))
|
||||
} else {
|
||||
tpl, err = tpl.Parse(string(page))
|
||||
}
|
||||
case "GET":
|
||||
if p.DoGET {
|
||||
return p.GET(w, r)
|
||||
}
|
||||
case "PUT":
|
||||
if p.DoPUT {
|
||||
return p.PUT(w, r)
|
||||
|
||||
if err != nil {
|
||||
log.Print(err)
|
||||
return new(bytes.Buffer), err
|
||||
}
|
||||
}
|
||||
|
||||
return http.StatusMethodNotAllowed, errors.New("Invalid method.")
|
||||
err := Template.Execute(buf, pg)
|
||||
return buf, err
|
||||
}
|
||||
|
15
setup.go
15
setup.go
@ -4,7 +4,6 @@ import (
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"net/http"
|
||||
"text/template"
|
||||
|
||||
"github.com/mholt/caddy"
|
||||
"github.com/mholt/caddy/caddyhttp/httpserver"
|
||||
@ -19,20 +18,6 @@ func init() {
|
||||
|
||||
// setup configures a new Browse middleware instance.
|
||||
func setup(c *caddy.Controller) error {
|
||||
// Second argument would be the template file to use
|
||||
tplBytes, err := Asset("templates/template.tmpl")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
tplText := string(tplBytes)
|
||||
|
||||
// Build the template
|
||||
tpl, err := template.New("listing").Parse(tplText)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
Template = tpl
|
||||
|
||||
configs, err := fileManagerParse(c)
|
||||
if err != nil {
|
||||
return err
|
||||
|
Loading…
Reference in New Issue
Block a user