Kaynağa Gözat

fix: don't create pages for refed objects

Tienson Qin 1 yıl önce
ebeveyn
işleme
249d21df4a

+ 1 - 1
deps/db/src/logseq/db/frontend/content.cljs

@@ -45,7 +45,7 @@
             (string/includes? content (str "#" page-ref-special-chars)))
       (reduce
        (fn [content ref]
-         (if (:block/name ref)
+         (if (:block/title ref)
            (-> content
                ;; Replace page refs
                (string/replace

+ 12 - 3
deps/graph-parser/src/logseq/graph_parser/block.cljs

@@ -414,10 +414,19 @@
                                      (swap! *name->id assoc page-name (:block/uuid result)))
                                    (if id
                                      (assoc result :block/uuid id)
-                                     result))))) col)))]
+                                     result))))) col)))
+          refs (->> (ref->map-fn *refs false)
+                    (map (fn [ref]
+                           (if-let [page (ldb/get-case-page db (:block/title ref))]
+                             (if (ldb/page? page)
+                               page
+                               {:block/uuid (:block/uuid page)
+                                :block/title (:block/title page)})
+                             ref))))
+          tags (ref->map-fn *structured-tags true)]
       (assoc block
-             :refs (ref->map-fn *refs false)
-             :tags (ref->map-fn *structured-tags true)))))
+             :refs refs
+             :tags tags))))
 
 (defn- with-block-refs
   [{:keys [title body] :as block}]

+ 7 - 8
src/main/frontend/components/block.cljs

@@ -556,7 +556,7 @@
   (let [*hover? (::hover? state)
         *mouse-down? (::mouse-down? state)
         tag? (:tag? config)
-        page-name (:block/name page-entity)
+        page-name (util/page-name-sanity-lc (:block/title page-entity))
         breadcrumb? (:breadcrumb? config)
         config (assoc config :whiteboard-page? whiteboard-page?)
         untitled? (when page-name (model/untitled-page? (:block/title page-entity)))
@@ -722,12 +722,11 @@
   "Component for a page. `page` argument contains :block/name which can be (un)sanitized page name.
    Keys for `config`:
    - `:preview?`: Is this component under preview mode? (If true, `page-preview-trigger` won't be registered to this `page-cp`)"
-  [state {:keys [label children preview? disable-preview?] :as config} page]
+  [state {:keys [label children preview? disable-preview?] :as config} _page]
   (let [page-entity (::page-entity state)]
     (when-let [page-entity (when page-entity (db/sub-block (:db/id page-entity)))]
-      (let [page-name (or (:block/name page-entity)
-                          (:block/name page))
-            whiteboard-page? (model/whiteboard-page? page-name)
+      (let [page-name (some-> (:block/title page-entity) util/page-name-sanity-lc)
+            whiteboard-page? (model/whiteboard-page? page-entity)
             inner (page-inner (assoc config :whiteboard-page? whiteboard-page?) page-entity children label)
             modal? (:modal/show? @state/state)]
         (if (and (not (util/mobile?))
@@ -2328,11 +2327,11 @@
              (pv/property-value block property (get block pid) (assoc opts :show-tooltip? true))))]))))
 
 (rum/defc ^:large-vars/cleanup-todo block-content < rum/reactive
-  [config {:block/keys [uuid title properties scheduled deadline format pre-block?] :as block} edit-input-id block-id slide?]
+  [config {:block/keys [uuid properties scheduled deadline format pre-block?] :as block} edit-input-id block-id slide?]
   (let [repo (state/get-current-repo)
         content (if (config/db-based-graph? (state/get-current-repo))
-                  (:block/title block)
-                  (property-util/remove-built-in-properties format title))
+                  (:block/raw-title block)
+                  (property-util/remove-built-in-properties format (:block/raw-title block)))
         block (merge block (block/parse-title-and-body uuid format pre-block? content))
         ;; _ (prn :debug :block block
         ;;        :parsed-result (block/parse-title-and-body uuid format pre-block? content))

+ 11 - 9
src/main/frontend/components/right_sidebar.cljs

@@ -21,7 +21,8 @@
             [reitit.frontend.easy :as rfe]
             [rum.core :as rum]
             [frontend.db.rtc.debug-ui :as rtc-debug-ui]
-            [frontend.handler.property.util :as pu]))
+            [frontend.handler.property.util :as pu]
+            [logseq.db :as ldb]))
 
 (rum/defc toggle
   []
@@ -96,14 +97,15 @@
 
     :page
     (let [lookup (if (integer? db-id) db-id [:block/uuid db-id])
-          page (db/entity repo lookup)
-          page-name (:block/name page)]
-      [[:.flex.items-center.page-title
-        (if-let [icon (pu/get-block-property-value page :logseq.property/icon)]
-          [:.text-md.mr-2 icon]
-          (ui/icon (if (contains? (:block/type page) "whiteboard") "whiteboard" "page") {:class "text-md mr-2"}))
-        [:span.overflow-hidden.text-ellipsis (:block/title page)]]
-       (page-cp repo page-name)])
+          page (db/entity repo lookup)]
+      (if (ldb/page? page)
+        [[:.flex.items-center.page-title
+          (if-let [icon (pu/get-block-property-value page :logseq.property/icon)]
+            [:.text-md.mr-2 icon]
+            (ui/icon (if (contains? (:block/type page) "whiteboard") "whiteboard" "page") {:class "text-md mr-2"}))
+          [:span.overflow-hidden.text-ellipsis (:block/title page)]]
+         (page-cp repo (str (:block/uuid page)))]
+        (block-with-breadcrumb repo page idx [repo db-id block-type] false)))
 
     :search
     [[:.flex.items-center.page-title

+ 2 - 2
src/main/frontend/handler/db_based/editor.cljs

@@ -62,12 +62,12 @@
 (defn- replace-page-refs-with-ids
   [block]
   (let [content (:block/title block)
-        content' (if (some :block/name (:block/refs block))
+        content' (if (some :block/title (:block/refs block))
                    (reduce
                     (fn [content {:block/keys [title uuid]}]
                       (replace-page-ref-with-id content title uuid))
                     content
-                    (filter :block/name (:block/refs block)))
+                    (filter :block/title (:block/refs block)))
                    content)]
     (assoc block :block/title content')))
 

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

@@ -385,7 +385,9 @@
         (let [chosen (:block/title chosen-result)
               chosen' (string/replace-first chosen (str (t :new-page) " ") "")
               ref-text (if (and (de/entity? chosen-result) (not (ldb/page? chosen-result)))
-                         (block-ref/->block-ref (:block/uuid chosen-result))
+                         (if (seq (:block/tags chosen-result))
+                           (page-ref/->page-ref (:block/title chosen-result))
+                           (page-ref/->page-ref (:block/uuid chosen-result)))
                          (get-page-ref-text chosen'))]
           (editor-handler/insert-command! id
                                           ref-text