fix: a page name can's be both started and ended with a slash

The reason is that it's corresponding file will be a hidden file.
pull/2597/head
Tienson Qin 2021-08-10 08:29:11 +08:00
parent 3f46857b4f
commit 5dfd9b1be4
5 changed files with 20 additions and 4 deletions

View File

@ -424,7 +424,8 @@
(rum/defc page-cp
[{:keys [html-export? label children contents-page? sidebar? preview?] :as config} page]
(when-let [page-name (:block/name page)]
(let [page-name (string/lower-case page-name)
(let [page-name (-> (string/lower-case page-name)
(util/remove-boundary-slashes))
page-entity (db/entity [:block/name page-name])
redirect-page-name (model/get-redirect-page-name page-name (:block/alias? config))
href (if html-export?

View File

@ -110,6 +110,7 @@
text-overflow: ellipsis;
max-width: 7ch;
color: var(--ls-icon-color, #045591);
height: 14px;
}
a.button {
@ -126,4 +127,4 @@ a.button:hover {
.is-mac.is-electron :is(.cp__header, .cp__right-sidebar-topbar) :is(button, .button, a) {
cursor: default !important;
}
}

View File

@ -278,7 +278,8 @@
(defn page-name->map
[original-page-name with-id?]
(when original-page-name
(let [[original-page-name page-name journal-day] (convert-page-if-journal original-page-name)
(let [original-page-name (util/remove-boundary-slashes original-page-name)
[original-page-name page-name journal-day] (convert-page-if-journal original-page-name)
namespace? (and (string/includes? original-page-name "/")
(text/namespace-page? original-page-name))
m (merge

View File

@ -85,7 +85,9 @@
format nil
properties nil
split-namespace? true}}]
(let [page (string/lower-case title)]
(let [title (string/trim title)
title (util/remove-boundary-slashes title)
page (string/lower-case title)]
(when-not (db/entity [:block/name page])
(let [title (string/trim title)
pages (if split-namespace?

View File

@ -1039,9 +1039,20 @@
(or (include-windows-reserved-chars? s)
(string/includes? s "."))))
(defn remove-boundary-slashes
[s]
(when (string? s)
(let [s (if (= \/ (first s))
(subs s 1)
s)]
(if (= \/ (last s))
(subs s 0 (dec (count s)))
s))))
(defn page-name-sanity
[page-name]
(-> page-name
(remove-boundary-slashes)
(string/replace #"/" ".")
;; Windows reserved path characters
(string/replace windows-reserved-chars "_")))