소스 검색

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.
Tienson Qin 4 년 전
부모
커밋
5dfd9b1be4

+ 2 - 1
src/main/frontend/components/block.cljs

@@ -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?

+ 2 - 1
src/main/frontend/components/header.css

@@ -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;
-}
+}

+ 2 - 1
src/main/frontend/format/block.cljs

@@ -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

+ 3 - 1
src/main/frontend/handler/page.cljs

@@ -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?

+ 11 - 0
src/main/frontend/util.cljc

@@ -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 "_")))