Просмотр исходного кода

enhance(pdf): make the weblink pdf filename to be human-readable for the annotations page

charlie 3 лет назад
Родитель
Сommit
e70d76589b

+ 13 - 14
src/main/frontend/extensions/pdf/assets.cljs

@@ -29,21 +29,20 @@
 
 (defn inflate-asset
   [original-path]
-  (let [filename (util/node-path.basename original-path)
+  (let [filename  (util/node-path.basename original-path)
         web-link? (string/starts-with? original-path "http")
-        ext-name (util/get-file-ext filename)
-        url (assets-handler/normalize-asset-resource-url original-path)]
-    (when-let [key
-               (if web-link?
-                 (str (hash url))
-                 (and
-                   (= ext-name "pdf")
-                   (subs filename 0 (- (count filename) 4))))]
-      {:key      key
-       :identity (subs key (- (count key) 15))
-       :filename filename
-       :url      url
-       :hls-file (str "assets/" key ".edn")
+        ext-name  (util/get-file-ext filename)
+        url       (assets-handler/normalize-asset-resource-url original-path)
+        filekey   (util/safe-sanitize-file-name (subs filename 0 (- (count filename) (inc (count ext-name)))))]
+    (when-let [key (and (not (string/blank? filekey))
+                        (if web-link?
+                          (str filekey "__" (hash url)) filekey))]
+
+      {:key           key
+       :identity      (subs key (- (count key) 15))
+       :filename      filename
+       :url           url
+       :hls-file      (str "assets/" key ".edn")
        :original-path original-path})))
 
 (defn resolve-area-image-file

+ 1 - 0
src/main/frontend/extensions/pdf/utils.cljs

@@ -183,6 +183,7 @@
         (-> filename
             (subs 0 (if local-asset? (- len 15) len))
             (string/replace #"^hls__" "")
+            (string/replace #"__[-\d]+$" "")
             (string/replace "_" " ")
             (string/trimr))
         filename))))

+ 2 - 1
src/test/frontend/extensions/pdf/assets_test.cljs

@@ -7,7 +7,8 @@
     (are [x y] (= y (pdf-utils/fix-local-asset-pagename x))
       "2015_Book_Intertwingled_1659920114630_0" "2015 Book Intertwingled"
       "hls__2015_Book_Intertwingled_1659920114630_0" "2015 Book Intertwingled"
-      "hls/2015_Book_Intertwingled_1659920114630_0" "hls/2015 Book Intertwingled"))
+      "hls/2015_Book_Intertwingled_1659920114630_0" "hls/2015 Book Intertwingled"
+      "hls__sicp__-1234567" "sicp"))
   (testing "non matched filenames"
     (are [x y] (= y (pdf-utils/fix-local-asset-pagename x))
       "foo" "foo"