From 843a1d084b731218b1abc1274e88c74fb6d260e1 Mon Sep 17 00:00:00 2001 From: Simon Brooke Date: Sun, 10 Sep 2017 22:55:48 +0100 Subject: [PATCH] #31: Fix --- resources/i18n/en-GB.edn | 2 ++ resources/public/content/stylesheet.css | 4 +++ resources/public/content/uploads/smeagol.png | Bin 0 -> 13415 bytes resources/templates/upload.html | 10 ++++-- src/smeagol/routes/wiki.clj | 12 +++++-- src/smeagol/uploads.clj | 32 +++++++++---------- 6 files changed, 39 insertions(+), 21 deletions(-) create mode 100644 resources/public/content/uploads/smeagol.png diff --git a/resources/i18n/en-GB.edn b/resources/i18n/en-GB.edn index aeb391c..a7b8789 100644 --- a/resources/i18n/en-GB.edn +++ b/resources/i18n/en-GB.edn @@ -75,6 +75,8 @@ :email-prompt "Email address" ;; text of the email widget prompt on edit user page :file-or-directory "File or directory" ;; used in sanity check report + :file-summary-prompt "Description/what's changed" + ;; prompt for the file upload summary input :file-upload-link-text "You may link to this file using a link of the form" ;; Text introducing the link to an uploaded file :file-upload-prompt "File to upload" ;; prompt string for the file upload widget diff --git a/resources/public/content/stylesheet.css b/resources/public/content/stylesheet.css index 81c51aa..187b346 100644 --- a/resources/public/content/stylesheet.css +++ b/resources/public/content/stylesheet.css @@ -209,6 +209,10 @@ th { display: block; } +#uploaded-image { + float: right; +} + .change { background-color: rgb( 223, 223, 223); border: thin solid silver; diff --git a/resources/public/content/uploads/smeagol.png b/resources/public/content/uploads/smeagol.png new file mode 100644 index 0000000000000000000000000000000000000000..09787cb056dd5fc03f49ae9bcc69d275ae3279fb GIT binary patch literal 13415 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 {% if uploaded %} {% if is-image %} - Uploaded image -

+ Uploaded image + {% i18n file-upload-link-text %}: - ![Uploaded image](uploads/{{uploaded}}) + ![Uploaded image](content/uploads/{{uploaded}})

{% else %}

@@ -24,6 +24,10 @@

+

+ + +

diff --git a/src/smeagol/routes/wiki.clj b/src/smeagol/routes/wiki.clj index 8a538b9..15b3a68 100644 --- a/src/smeagol/routes/wiki.clj +++ b/src/smeagol/routes/wiki.clj @@ -156,9 +156,17 @@ "Render a form to allow the upload of a file." [request] (let [params (keywordize-keys (:params request)) - data-path (str (io/resource-path) "/uploads/") + data-path (str (io/resource-path) "/content/uploads/") + git-repo (get-git-repo) upload (:upload params) - uploaded (if upload (ul/store-upload params))] + uploaded (if upload (ul/store-upload params data-path)) + user (session/get :user) + summary (format "%s: %s" user (or (:summary params) "no summary"))] + (if + uploaded + (do + (git/git-add git-repo uploaded) + (git/git-commit git-repo summary {:name user :email (auth/get-email user)}))) (layout/render "upload.html" (merge (util/standard-params request) {:title (util/get-message :file-upload-title request) diff --git a/src/smeagol/uploads.clj b/src/smeagol/uploads.clj index dbc31af..27ddceb 100644 --- a/src/smeagol/uploads.clj +++ b/src/smeagol/uploads.clj @@ -29,19 +29,20 @@ ;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(defn avoid-name-collisions - "Find a filename within this `path`, based on this `file-name`, that does not - reference an existing file. It is assumed that `path` ends with a path separator. - Returns a filename hwich does not currently reference a file within the path." - [path file-name] - (if (.exists (File. (str path file-name))) - (let [parts (cs/split file-name #"\.") - prefix (cs/join "." (butlast parts)) - suffix (last parts)] - (first - (filter #(not (.exists (File. (str path %)))) - (map #(str prefix "." % "." suffix) (range))))) - file-name)) +;; No longer used as uploaded files now go into Git. +;; (defn avoid-name-collisions +;; "Find a filename within this `path`, based on this `file-name`, that does not +;; reference an existing file. It is assumed that `path` ends with a path separator. +;; Returns a filename hwich does not currently reference a file within the path." +;; [path file-name] +;; (if (.exists (File. (str path file-name))) +;; (let [parts (cs/split file-name #"\.") +;; prefix (cs/join "." (butlast parts)) +;; suffix (last parts)] +;; (first +;; (filter #(not (.exists (File. (str path %)))) +;; (map #(str prefix "." % "." suffix) (range))))) +;; file-name)) (defn store-upload @@ -49,11 +50,10 @@ The issue with storing an upload is moving it into place. If `params` are passed as a map, it is expected that this is a map from an HTTP POST operation of a form with type `multipart/form-data`." - [params] + [params path] (let [upload (:upload params) tmp-file (:tempfile upload) - path (str (io/resource-path) "uploads/") - filename (avoid-name-collisions path (:filename upload))] + filename (:filename upload)] (timbre/info (str "Storing upload file: " upload)) (if tmp-file