Преглед изворни кода

enhance(editor): make it easier to edit page's properties (tags, alias)

Tienson Qin пре 4 година
родитељ
комит
04b63ad52a

+ 8 - 5
resources/css/common.css

@@ -31,6 +31,7 @@ html[data-theme=dark] {
   --ls-secondary-background-color: #023643;
   --ls-tertiary-background-color: #08404f;
   --ls-quaternary-background-color: #094b5a;
+  --ls-table-tr-even-background-color: #03333f;
   --ls-active-primary-color: #8ec2c2;
   --ls-active-secondary-color: #d0e8e8;
   --ls-block-properties-background-color: #02222a;
@@ -81,6 +82,7 @@ html[data-theme=light] {
   --ls-secondary-background-color: #dee9f2;
   --ls-tertiary-background-color: #f0f8ff;
   --ls-quaternary-background-color: #e1f0fe;
+  --ls-table-tr-even-background-color: #f4f5f7;
   --ls-active-primary-color: #045591;
   --ls-active-secondary-color: #003761;
   --ls-block-properties-background-color: var(--ls-tertiary-background-color);
@@ -250,11 +252,6 @@ input {
   background: transparent;
 }
 
-hr {
-  margin: 2rem 0;
-  border-color: var(--ls-border-color, #ccc);
-}
-
 summary {
   outline: none;
 }
@@ -713,3 +710,9 @@ svg.tip {
 }
 
 /* endregion */
+
+
+hr {
+    margin: 2rem 0;
+    border-color: var(--ls-border-color, #ccc);
+}

+ 2 - 2
resources/css/table.css

@@ -27,7 +27,7 @@ td {
     text-align: left;
 }
 
-tr:nth-child(even) {background: var(--ls-quaternary-background-color);}
+tr:nth-child(even) {background: var(--ls-table-tr-even-background-color);}
 tr:nth-child(odd) {background: var(--ls-primary-background-color);}
 
 caption.t-above {caption-side:top}
@@ -42,7 +42,7 @@ figcaption{margin-top:.3em}
     color: var(--ls-primary-text-color);
 }
 
-.dark-theme tr:nth-child(even) {background: var(--ls-quaternary-background-color);}
+.dark-theme tr:nth-child(even) {background: var(--ls-table-tr-even-background-color);}
 .dark-theme tr:nth-child(odd) {background: var(--ls-primary-background-color);}
 .dark-theme td, .dark-theme tr {
     border-bottom: none;

+ 33 - 28
src/main/frontend/components/block.cljs

@@ -41,7 +41,8 @@
             [frontend.security :as security]
             [reitit.frontend.easy :as rfe]
             [frontend.commands :as commands]
-            [lambdaisland.glogi :as log]))
+            [lambdaisland.glogi :as log]
+            [frontend.context.i18n :as i18n]))
 
 (defn safe-read-string
   [s]
@@ -994,20 +995,24 @@
 
 (defn- pre-block-cp
   [config content format]
-  (let [ast (mldoc/->edn content (mldoc/default-config format))
-        ast (map first ast)
-        slide? (:slide? config)
-        only-title? (and (= 1 (count ast))
-                         (= "Properties" (ffirst ast))
-                         (let [m (second (first ast))]
-                           (= (keys m) [:title])))
-        block-cp [:div.pre-block.bg-base-2.p-2
-                  (markup-elements-cp (assoc config :block/format format) ast)]]
-    (if slide?
-      [:div [:h1 (:page-name config)]
-       (when-not only-title?
-         block-cp)]
-      block-cp)))
+  (rum/with-context [[t] i18n/*tongue-context*]
+    (let [ast (mldoc/->edn content (mldoc/default-config format))
+          ast (map first ast)
+          slide? (:slide? config)
+          only-title? (and (= 1 (count ast))
+                           (= "Properties" (ffirst ast))
+                           (let [m (second (first ast))]
+                             (= (keys m) [:title])))
+          block-cp [:div {:class (if only-title?
+                                   (util/hiccup->class "pre-block.opacity-50")
+                                   (util/hiccup->class "pre-block.bg-base-2.p-2.rounded"))}
+                    (if only-title?
+                      [:span (t :page/edit-properties-placeholder)]
+                      (markup-elements-cp (assoc config :block/format format) ast))]]
+      (if slide?
+        [:div [:h1 (:page-name config)]
+         block-cp]
+        block-cp))))
 
 (rum/defc properties-cp
   [block]
@@ -1601,20 +1606,20 @@
        (let [format (:block/format config)]
          (for [[k v] m]
            (when (and (not (and (= k :macros) (empty? v))) ; empty macros
-                      (not (= k :title)))
+)
              [:div.property
-              [:span.font-medium.mr-1 (string/upper-case (str (name k) ": "))]
+              [:span.font-medium.mr-1 (str (name k) ": ")]
               (if (coll? v)
                 (for [item v]
                   (if (or (= k :tags)
                           (= k :alias))
                     (if (string/includes? item "[[")
                       (inline-text format item)
-                      (let [tag (-> item
-                                    (string/replace "[" "")
-                                    (string/replace "]" ""))]
-                        [:a.tag.mr-1 {:href (rfe/href :page {:name tag})}
-                         tag]))
+                      (let [p (-> item
+                                  (string/replace "[" "")
+                                  (string/replace "]" ""))]
+                        [:a.mr-1 {:href (rfe/href :page {:name p})}
+                         p]))
                     (inline-text format item)))
                 (inline-text format v))])))]
 
@@ -1812,12 +1817,12 @@
                                :else
                                -10)}}
        (let [first-block (first blocks)
-             blocks' (if (and (:block/pre-block? first-block)
-                              (block-handler/pre-block-with-only-title? (:block/repo first-block) (:block/uuid first-block)))
-                       (rest blocks)
-                       blocks)
-             first-id (:block/uuid (first blocks'))]
-         (for [item blocks']
+             blocks (if (and (:id config)
+                             (date/valid-journal-title? (string/capitalize (:id config))))
+                      (rest blocks)
+                      blocks)
+             first-id (:block/uuid (first blocks))]
+         (for [item blocks]
            (let [item (-> (if (:block/dummy? item)
                             item
                             (dissoc item :block/meta)))

+ 2 - 0
src/main/frontend/dicts.cljs

@@ -223,6 +223,7 @@ title: How to take dummy notes?
         :project/location "All published pages will be located under"
         :project/sync-settings "Sync project settings"
         :page/presentation-mode "Presentation mode (Powered by Reveal.js)"
+        :page/edit-properties-placeholder "Click here to edit this page's properties"
         :page/delete-success "Page {1} was deleted successfully!"
         :page/delete-confirmation "Are you sure you want to delete this page?"
         :page/rename-to "Rename {1}\" to:\""
@@ -695,6 +696,7 @@ title: How to take dummy notes?
            :project/setup "在 Logseq 上发布新的项目"
            :project/location "一切发布的页面将会被放到 "
            :project/sync-settings "同步项目设置"
+           :page/edit-properties-placeholder "点击这里编辑当前页面的属性 (标签,别名等)"
            :page/presentation-mode "演讲模式 (由 Reveal.js 驱动)"
            :page/delete-success "页面 {1} 删除成功!"
            :page/delete-confirmation "您确定要删除此页面吗?"

+ 1 - 14
src/main/frontend/handler/block.cljs

@@ -125,19 +125,6 @@
                       :block/collapsed? false})
                    block-ids))))
 
-(defn pre-block-with-only-title?
-  [repo block-id]
-  (when-let [block (db/entity repo [:block/uuid block-id])]
-    (let [properties (:page/properties (:block/page block))]
-      (and (:title properties)
-           (= 1 (count properties))
-           (let [ast (mldoc/->edn (:block/content block) (mldoc/default-config (:block/format block)))]
-             (or
-              (empty? (rest ast))
-              (every? (fn [[[typ break-lines]] _]
-                        (and (= typ "Paragraph")
-                             (every? #(= % ["Break_Line"]) break-lines))) (rest ast))))))))
-
 (defn with-dummy-block
   ([blocks format]
    (with-dummy-block blocks format {} {}))
@@ -178,4 +165,4 @@
                         :block/marker nil
                         :block/pre-block? false})
                      default-option)]
-         (conj blocks dummy))))))
+         (conj blocks dummy))))))