redir to /ui/files for about page, fix root+ button

master v0.2.0
Bel LaPointe 2022-02-17 12:42:35 -07:00
parent 21f671517b
commit ff8a77beea
5 changed files with 30 additions and 22 deletions

View File

@ -47,5 +47,9 @@ func (id ID) withClean() ID {
splits[i] = t splits[i] = t
} }
} }
return ID(path.Join(splits...)) clean := path.Join(splits...)
if clean == "" || clean == "." {
clean = ""
}
return ID(clean)
} }

View File

@ -2,7 +2,7 @@
<!DOCTYPE html> <!DOCTYPE html>
<html> <html>
<header> <header>
<title>{{ .This.Title }}</title> <title>id={{ .This.ID }}, {{ .This.Title }}</title>
{{ template "_import" }} {{ template "_import" }}
</header> </header>
<body class="fullscreen tb_fullscreen lr_fullscreen" style="position: absolute"> <body class="fullscreen tb_fullscreen lr_fullscreen" style="position: absolute">
@ -11,10 +11,14 @@
<div class="columns thic_flex tb_buffer" style="height: calc(100% - 4rem);"> <div class="columns thic_flex tb_buffer" style="height: calc(100% - 4rem);">
{{ template "_filetree" . }} {{ template "_filetree" . }}
<div class="thic_flex lr_fullscreen" style="margin-left: 1em; width: 5px;"> <div class="thic_flex lr_fullscreen" style="margin-left: 1em; width: 5px;">
{{ if .This.ReadOnly }} {{ if eq .This.ID "" }}
{{ template "_readonly" . }} {{ template "_about" . }}
{{ else }} {{ else }}
{{ template "_editor" . }} {{ if .This.ReadOnly }}
{{ template "_readonly" . }}
{{ else }}
{{ template "_editor" . }}
{{ end }}
{{ end }} {{ end }}
</div> </div>
</div> </div>

View File

@ -43,7 +43,7 @@
` `
} }
function leafHTML(id, branch) { function leafHTML(id, branch) {
const href="/ui/files/" + (id ? id : "#") const href="/ui/files/" + (id ? id : "")
var nameSafeId = id.replace(/\//g, "-") var nameSafeId = id.replace(/\//g, "-")
var parentNameSafeId = nameSafeId var parentNameSafeId = nameSafeId
if (id.includes("/")) if (id.includes("/"))

View File

@ -242,9 +242,6 @@ func (server *Server) uiSearchHandler(w http.ResponseWriter, r *http.Request) er
func (server *Server) uiFilesHandler(w http.ResponseWriter, r *http.Request) error { func (server *Server) uiFilesHandler(w http.ResponseWriter, r *http.Request) error {
id := NewID(strings.TrimPrefix(r.URL.Path, "/ui/files")) id := NewID(strings.TrimPrefix(r.URL.Path, "/ui/files"))
if id == "" {
return server.rootHandler(w, r)
}
t, err := server.uiSubTemplates() t, err := server.uiSubTemplates()
if err != nil { if err != nil {
return err return err
@ -263,15 +260,18 @@ func (server *Server) uiFilesHandler(w http.ResponseWriter, r *http.Request) err
return err return err
} }
var parent Leaf var parent Leaf
if id.Pop() != "" { var leaf Leaf
parent, err = tree.Get(id.Pop()) if id != "" {
if err != nil { if id.Pop() != "" {
return fmt.Errorf("failed to get pid %q: %v", id.Pop(), err) parent, err = tree.Get(id.Pop())
if err != nil {
return fmt.Errorf("failed to get pid %q: %v", id.Pop(), err)
}
}
leaf, err = tree.Get(id)
if err != nil {
leaf.Meta.Title = "My New File"
} }
}
leaf, err := tree.Get(id)
if err != nil {
leaf.Meta.Title = "My New File"
} }
if leaf.Meta.ReadOnly { if leaf.Meta.ReadOnly {
if _, ok := r.URL.Query()["edit"]; !ok { if _, ok := r.URL.Query()["edit"]; !ok {
@ -322,7 +322,7 @@ func (server *Server) uiSubTemplates() (*template.Template, error) {
} }
func (server *Server) rootHandler(w http.ResponseWriter, r *http.Request) error { func (server *Server) rootHandler(w http.ResponseWriter, r *http.Request) error {
http.Redirect(w, r, "/ui/files/"+uuid.New().String()[:5], 302) http.Redirect(w, r, "/ui/files", 302)
return nil return nil
} }

View File

@ -55,7 +55,7 @@ func TestServerRoutes(t *testing.T) {
"v0: /: get": { "v0: /: get": {
path: "/", path: "/",
method: http.MethodGet, method: http.MethodGet,
want: "/ui/files/", want: "/ui/files",
}, },
"v0: search: get": { "v0: search: get": {
path: "/api/v0/search?q=getf%20bod", path: "/api/v0/search?q=getf%20bod",
@ -102,17 +102,17 @@ func TestServerRoutes(t *testing.T) {
"v0: /: redir": { "v0: /: redir": {
path: "/", path: "/",
method: http.MethodGet, method: http.MethodGet,
want: "/ui/files/", want: "/ui/files",
}, },
"v0: /ui/: redir": { "v0: /ui/: redir": {
path: "/ui/", path: "/ui/",
method: http.MethodGet, method: http.MethodGet,
want: "/ui/files/", want: "/ui/files",
}, },
"v0: /ui: redir": { "v0: /ui: redir": {
path: "/ui", path: "/ui",
method: http.MethodGet, method: http.MethodGet,
want: "/ui/files/", want: "/ui/files",
}, },
"v0: /ui/search": { "v0: /ui/search": {
path: "/ui/search", path: "/ui/search",