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:
+6
-2
@@ -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 ) {
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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?
|
||||
|
||||
Reference in New Issue
Block a user