From 67432123216151ed74e86d053bc1eb43aba27dcd Mon Sep 17 00:00:00 2001 From: Tienson Qin Date: Mon, 6 Jul 2020 15:48:01 +0800 Subject: [PATCH] Page encoding now supports non-asciis --- web/src/main/frontend/components/hiccup.cljs | 2 +- web/src/main/frontend/components/journal.cljs | 2 +- web/src/main/frontend/components/page.cljs | 8 ++++---- web/src/main/frontend/components/search.cljs | 4 ++-- web/src/main/frontend/components/sidebar.cljs | 11 ++++++----- web/src/main/frontend/components/widgets.cljs | 6 +++--- web/src/main/frontend/handler.cljs | 14 +++++++------- web/src/main/frontend/util.cljs | 9 +++++---- 8 files changed, 29 insertions(+), 27 deletions(-) diff --git a/web/src/main/frontend/components/hiccup.cljs b/web/src/main/frontend/components/hiccup.cljs index 06ccde854..49063665d 100644 --- a/web/src/main/frontend/components/hiccup.cljs +++ b/web/src/main/frontend/components/hiccup.cljs @@ -173,7 +173,7 @@ [page] (let [page (string/lower-case page)] [:a.page-ref - {:href (str "/page/" (util/url-encode page)) + {:href (str "/page/" (util/encode-str page)) :on-click (fn [e] (util/stop e) (when (gobj/get e "shiftKey") diff --git a/web/src/main/frontend/components/journal.cljs b/web/src/main/frontend/components/journal.cljs index 5abb0e4f5..a35098a1e 100644 --- a/web/src/main/frontend/components/journal.cljs +++ b/web/src/main/frontend/components/journal.cljs @@ -46,7 +46,7 @@ repo (state/get-current-repo) raw-headings (db/get-page-headings repo page) headings (db/with-dummy-heading raw-headings format nil true) - encoded-page-name (util/url-encode page) + encoded-page-name (util/encode-str page) today? (= (string/lower-case title) (string/lower-case (date/journal-name)))] [:div.flex-1 diff --git a/web/src/main/frontend/components/page.cljs b/web/src/main/frontend/components/page.cljs index 1daa95c16..ea81144bf 100644 --- a/web/src/main/frontend/components/page.cljs +++ b/web/src/main/frontend/components/page.cljs @@ -171,7 +171,7 @@ [:div.alias.ml-1.mb-1.content {:key "page-alias"} [:span.font-bold.mr-1 "Page aliases: "] (for [item alias] - [:a {:href (str "/page/" (util/url-encode item))} + [:a {:href (str "/page/" (util/encode-str item))} [:span.mr-1 (util/capitalize-all item)]])]))) ;; headings @@ -216,9 +216,9 @@ [:th "Last modified at"]]] [:tbody (for [[page modified-at] pages] - (let [page-id (util/url-encode page)] - [:tr {:key page-id} - [:td [:a.text-gray-700 {:href (str "/page/" page-id)} + (let [encoded-page (util/encode-str page)] + [:tr {:key encoded-page} + [:td [:a.text-gray-700 {:href (str "/page/" encoded-page)} (util/capitalize-all page)]] [:td [:span.text-gray-500.text-sm (if (zero? modified-at) diff --git a/web/src/main/frontend/components/search.cljs b/web/src/main/frontend/components/search.cljs index 44519e0d0..5a9cdd424 100644 --- a/web/src/main/frontend/components/search.cljs +++ b/web/src/main/frontend/components/search.cljs @@ -65,11 +65,11 @@ :page (handler/redirect! {:to :page - :path-params {:name (util/url-encode data)}}) + :path-params {:name (util/encode-str data)}}) :block (let [page (:page/name (:heading/page data)) - path (str "/page/" (util/url-encode page) "#ls-heading-" (:heading/uuid data))] + path (str "/page/" (util/encode-str page) "#ls-heading-" (:heading/uuid data))] (handler/redirect-with-fragment! path)) nil)) :item-render (fn [{:keys [type data]}] diff --git a/web/src/main/frontend/components/sidebar.cljs b/web/src/main/frontend/components/sidebar.cljs index 97a578419..d7b90f2e7 100644 --- a/web/src/main/frontend/components/sidebar.cljs +++ b/web/src/main/frontend/components/sidebar.cljs @@ -47,7 +47,7 @@ [:div.cursor-pointer.flex.flex-col.overflow-hidden (if (seq starred) (for [page starred] - (let [encoded-page (util/url-encode page)] + (let [encoded-page (util/encode-str page)] [:a.mt-1.group.flex.items-center.pl-5.py-2.text-base.leading-6.hover:text-gray-200.transition.ease-in-out.duration-150.star-page {:key encoded-page :class (if (page-active? encoded-page) "text-gray-200" "text-gray-500") @@ -224,10 +224,10 @@ [:div.h-7.w-7.rounded-full.bg-base-3])]) (let [logged? (:name me)] (->> - [(when logged? + [(when current-repo {:title "New page" :options {:href "/new-page"}}) - (when logged? + (when current-repo {:title "Graph" :options {:href "/graph"}}) (when logged? @@ -239,8 +239,9 @@ (when logged? {:title "All files" :options {:href "/all-files"}}) - {:title "Settings" - :options {:href (str "/file/" (util/url-encode config/config-file))}} + (when current-repo + {:title "Settings" + :options {:href (str "/file/" (util/encode-str config/config-file))}}) {:title "Bug report" :options {:href "https://github.com/logseq/logseq/issues/new" :target "_blank"}} diff --git a/web/src/main/frontend/components/widgets.cljs b/web/src/main/frontend/components/widgets.cljs index f7e4bbdd6..9c94728eb 100644 --- a/web/src/main/frontend/components/widgets.cljs +++ b/web/src/main/frontend/components/widgets.cljs @@ -40,10 +40,10 @@ [:h1.title "Set Github personal access token"] [:div.pl-1 - [:p.text-sm + [:p "The token will be encrypted and stored in the browser localstorage." [:br] - "The server will never try to store or read it."] + "The server will never store it."] [:div.mt-4.mb-4.relative.rounded-md.shadow-sm.max-w-xs [:input#repo.form-input.block.w-full.sm:text-sm.sm:leading-5 {:on-change (fn [e] @@ -145,7 +145,7 @@ [:div [:h1.title.mb-1 "Import your notes"] - [:p.text-sm.text-gray-500.pl-1 "You can import your notes from a repo on Github."] + [:p "You can import your notes from a repo on Github."] [:div.mt-4.mb-2.relative.rounded-md.shadow-sm.max-w-xs [:input#repo.form-input.block.w-full.sm:text-sm.sm:leading-5 {:autoFocus true diff --git a/web/src/main/frontend/handler.cljs b/web/src/main/frontend/handler.cljs index 5e28f9bf2..242c22c32 100644 --- a/web/src/main/frontend/handler.cljs +++ b/web/src/main/frontend/handler.cljs @@ -829,11 +829,11 @@ (defn create-new-page! [title] (let [format (name (state/get-preferred-format)) - page (util/url-encode title) - path (str (-> title - (string/lower-case) - (string/replace #"\s+" "_") - (util/url-encode)) "." format) + page (-> title + (string/lower-case) + (string/replace #"\s+" "_")) + page (util/encode-str page) + path (str page "." format) file-path (str "/" path) repo (state/get-current-repo) dir (util/get-repo-dir repo)] @@ -936,7 +936,7 @@ (let [format (name format) path (str (-> (:page/name page) (string/replace #"\s+" "_") - (util/url-encode)) "." format) + (util/encode-str)) "." format) file-path (str "/" path) dir (util/get-repo-dir repo)] (p/let [exists? (fs/file-exists? dir file-path)] @@ -1002,7 +1002,7 @@ (let [format (name format) path (str (-> (:page/name page) (string/replace #"\s+" "_") - (util/url-encode)) "." format) + (util/encode-str)) "." format) file-path (str "/" path) dir (util/get-repo-dir repo)] (p/let [exists? (fs/file-exists? dir file-path)] diff --git a/web/src/main/frontend/util.cljs b/web/src/main/frontend/util.cljs index bbca44fe9..cd43ec8fb 100644 --- a/web/src/main/frontend/util.cljs +++ b/web/src/main/frontend/util.cljs @@ -669,10 +669,11 @@ [tag-name] (re-find regex/valid-tag-pattern tag-name)) -;; TODO: emoji, unicode alphanum, spaces, _, - -;; (defn page-title-valid? -;; [page-title] -;; ) +(defn encode-str + [s] + (if (tag-valid? s) + s + (url-encode s))) (defn- get-clipboard-as-html [event]