diff --git a/server/id.go b/server/id.go
index 2a5861f..21a3e99 100644
--- a/server/id.go
+++ b/server/id.go
@@ -47,5 +47,9 @@ func (id ID) withClean() ID {
splits[i] = t
}
}
- return ID(path.Join(splits...))
+ clean := path.Join(splits...)
+ if clean == "" || clean == "." {
+ clean = ""
+ }
+ return ID(clean)
}
diff --git a/server/public/ui/files.ctmpl b/server/public/ui/files.ctmpl
index 0964c4f..f632dfc 100644
--- a/server/public/ui/files.ctmpl
+++ b/server/public/ui/files.ctmpl
@@ -2,7 +2,7 @@
- {{ .This.Title }}
+ id={{ .This.ID }}, {{ .This.Title }}
{{ template "_import" }}
@@ -11,10 +11,14 @@
{{ template "_filetree" . }}
- {{ if .This.ReadOnly }}
- {{ template "_readonly" . }}
+ {{ if eq .This.ID "" }}
+ {{ template "_about" . }}
{{ else }}
- {{ template "_editor" . }}
+ {{ if .This.ReadOnly }}
+ {{ template "_readonly" . }}
+ {{ else }}
+ {{ template "_editor" . }}
+ {{ end }}
{{ end }}
diff --git a/server/public/ui/templates/_filetree.ctmpl b/server/public/ui/templates/_filetree.ctmpl
index 0e796ed..9ff3fb9 100644
--- a/server/public/ui/templates/_filetree.ctmpl
+++ b/server/public/ui/templates/_filetree.ctmpl
@@ -43,7 +43,7 @@
`
}
function leafHTML(id, branch) {
- const href="/ui/files/" + (id ? id : "#")
+ const href="/ui/files/" + (id ? id : "")
var nameSafeId = id.replace(/\//g, "-")
var parentNameSafeId = nameSafeId
if (id.includes("/"))
diff --git a/server/server.go b/server/server.go
index 2e49759..08316bc 100644
--- a/server/server.go
+++ b/server/server.go
@@ -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 {
id := NewID(strings.TrimPrefix(r.URL.Path, "/ui/files"))
- if id == "" {
- return server.rootHandler(w, r)
- }
t, err := server.uiSubTemplates()
if err != nil {
return err
@@ -263,15 +260,18 @@ func (server *Server) uiFilesHandler(w http.ResponseWriter, r *http.Request) err
return err
}
var parent Leaf
- if id.Pop() != "" {
- parent, err = tree.Get(id.Pop())
- if err != nil {
- return fmt.Errorf("failed to get pid %q: %v", id.Pop(), err)
+ var leaf Leaf
+ if id != "" {
+ if id.Pop() != "" {
+ 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 _, 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 {
- http.Redirect(w, r, "/ui/files/"+uuid.New().String()[:5], 302)
+ http.Redirect(w, r, "/ui/files", 302)
return nil
}
diff --git a/server/server_test.go b/server/server_test.go
index 8decb18..c6e300e 100644
--- a/server/server_test.go
+++ b/server/server_test.go
@@ -55,7 +55,7 @@ func TestServerRoutes(t *testing.T) {
"v0: /: get": {
path: "/",
method: http.MethodGet,
- want: "/ui/files/",
+ want: "/ui/files",
},
"v0: search: get": {
path: "/api/v0/search?q=getf%20bod",
@@ -102,17 +102,17 @@ func TestServerRoutes(t *testing.T) {
"v0: /: redir": {
path: "/",
method: http.MethodGet,
- want: "/ui/files/",
+ want: "/ui/files",
},
"v0: /ui/: redir": {
path: "/ui/",
method: http.MethodGet,
- want: "/ui/files/",
+ want: "/ui/files",
},
"v0: /ui: redir": {
path: "/ui",
method: http.MethodGet,
- want: "/ui/files/",
+ want: "/ui/files",
},
"v0: /ui/search": {
path: "/ui/search",