Implement the ability to store uploads on a per-page basis

Storing all uploaded files in a single directory kinda sucks when you've got
a largish wiki, or the possibility of filename collisions.  With this patch,
though, you can set `:per_page_uploads => true` in your wiki settings and
have the file uploaded to a directory named for the page you were on when
you clicked 'Upload'.
This commit is contained in:
Matt Palmer
2014-01-03 15:34:24 +11:00
parent cb4471b07f
commit 5eac24eacb
5 changed files with 14 additions and 3 deletions
+6 -2
View File
@@ -163,7 +163,7 @@ module Precious
tempfile = params[:file][:tempfile]
end
dir = 'uploads'
dir = wiki.per_page_uploads ? params[:upload_dest] : 'uploads'
ext = ::File.extname(fullname)
format = ext.split('.').last || 'txt'
filename = ::File.basename(fullname, ext)
@@ -173,7 +173,7 @@ module Precious
head = wiki.repo.head
options = {
:message => "Uploaded file to uploads/#{reponame}",
:message => "Uploaded file to #{dir}/#{reponame}",
:parent => wiki.repo.head.commit,
}
author = session['gollum.author']
@@ -444,6 +444,10 @@ module Precious
@page = page
@name = name
@content = page.formatted_data
@upload_dest = settings.wiki_options[:allow_uploads] ?
(settings.wiki_options[:per_page_uploads] ?
@name : 'uploads'
) : ''
# Extensions and layout data
@editable = true
@@ -99,6 +99,8 @@
html += '<form method=post enctype="multipart/form-data" ' +
'action="' + action + '" ' + 'id="' + id + '">';
html += '<input type="hidden" name="upload_dest" value="' +
uploadDest + '">';
html += '<input type=file name="' + name + '">';
html += '</form>';
@@ -155,7 +155,7 @@ $(document).ready(function() {
fields: [
{
type: 'file',
context: 'Your uploaded file will be accessible at /uploads/[filename]'
context: 'Your uploaded file will be accessible at /'+uploadDest+'/[filename]'
}
],
OK: function( res ) {
+1
View File
@@ -16,6 +16,7 @@
var baseUrl = '{{base_url}}';
{{#page}}
var pageFullPath = '{{url_path_display}}';
var uploadDest = '{{upload_dest}}';
{{/page}}
</script>
<script type="text/javascript" src="{{base_url}}/javascript/jquery-1.7.2.min.js"></script>
+4
View File
@@ -42,6 +42,10 @@ module Precious
def allow_uploads
@allow_uploads
end
def upload_dest
@upload_dest
end
def has_header
@header = (@page.header || false) if @header.nil?