Tienson Qin 2 лет назад
Родитель
Сommit
009c2a299c
2 измененных файлов с 26 добавлено и 12 удалено
  1. 11 0
      src/main/frontend/components/content.cljs
  2. 15 12
      src/main/frontend/handler/publish.cljs

+ 11 - 0
src/main/frontend/components/content.cljs

@@ -13,6 +13,8 @@
             [frontend.handler.image :as image-handler]
             [frontend.handler.notification :as notification]
             [frontend.handler.page :as page-handler]
+            [frontend.handler.publish :as publish-handler]
+            [frontend.handler.user :as user-handler]
             [frontend.handler.common.developer :as dev-common-handler]
             [frontend.mixins :as mixins]
             [frontend.state :as state]
@@ -247,6 +249,15 @@
 
          [:hr.menu-separator]
 
+         (when (user-handler/logged-in?)
+           (ui/menu-link
+            {:key "Publish"
+             :on-click (fn [e]
+                         (util/stop e)
+                         (publish-handler/publish :page-name (str (:block/uuid block))))}
+            "Publish"
+            nil))
+
          (block-template block-id)
 
          (cond

+ 15 - 12
src/main/frontend/handler/publish.cljs

@@ -18,10 +18,11 @@
             [frontend.handler.editor :as editor-handler]))
 
 (defn publish
-  []
+  [& {:keys [page-name]}]
   (state/set-state! [:ui/loading? :publish] true)
   (let [repo         (state/get-current-repo)
-        page-name    (or (state/get-current-page)
+        page-name    (or page-name
+                         (state/get-current-page)
                          (date/today))
         block-page?  (util/uuid-string? page-name)
         block-uuid   (when block-page? (uuid page-name))
@@ -77,20 +78,22 @@
           (do
             ;; persist page/block id
             (if block-page?
-              (editor-handler/set-blocks-id! [block-uuid])
+              (do
+                (editor-handler/set-blocks-id! [block-uuid])
+                (editor-handler/set-block-property! block-uuid :published true))
               (do
                 (page-property/add-property! page-name :id page-id)
                 (page-property/add-property! page-name :published true)))
             (when-let [permalink (get-in result [:body :permalink])]
-             (let [url' (str "http://localhost:3000" "/" permalink)]
-               (state/pub-event! [:notification/show
-                                  {:content [:span
-                                             "Congrats! The page has been published to "
-                                             [:a {:href url'
-                                                  :target "_blank"}
-                                              url']
-                                             "."]
-                                   :status :success}]))))
+              (let [url' (str "http://localhost:3000" "/" permalink)]
+                (state/pub-event! [:notification/show
+                                   {:content [:span
+                                              "Congrats! The page has been published to "
+                                              [:a {:href url'
+                                                   :target "_blank"}
+                                               url']
+                                              "."]
+                                    :status :success}]))))
           (do
             (prn "Publish failed" result)
             (notification/show!