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]
|
tempfile = params[:file][:tempfile]
|
||||||
end
|
end
|
||||||
|
|
||||||
dir = 'uploads'
|
dir = wiki.per_page_uploads ? params[:upload_dest] : 'uploads'
|
||||||
ext = ::File.extname(fullname)
|
ext = ::File.extname(fullname)
|
||||||
format = ext.split('.').last || 'txt'
|
format = ext.split('.').last || 'txt'
|
||||||
filename = ::File.basename(fullname, ext)
|
filename = ::File.basename(fullname, ext)
|
||||||
@@ -173,7 +173,7 @@ module Precious
|
|||||||
head = wiki.repo.head
|
head = wiki.repo.head
|
||||||
|
|
||||||
options = {
|
options = {
|
||||||
:message => "Uploaded file to uploads/#{reponame}",
|
:message => "Uploaded file to #{dir}/#{reponame}",
|
||||||
:parent => wiki.repo.head.commit,
|
:parent => wiki.repo.head.commit,
|
||||||
}
|
}
|
||||||
author = session['gollum.author']
|
author = session['gollum.author']
|
||||||
@@ -444,6 +444,10 @@ module Precious
|
|||||||
@page = page
|
@page = page
|
||||||
@name = name
|
@name = name
|
||||||
@content = page.formatted_data
|
@content = page.formatted_data
|
||||||
|
@upload_dest = settings.wiki_options[:allow_uploads] ?
|
||||||
|
(settings.wiki_options[:per_page_uploads] ?
|
||||||
|
@name : 'uploads'
|
||||||
|
) : ''
|
||||||
|
|
||||||
# Extensions and layout data
|
# Extensions and layout data
|
||||||
@editable = true
|
@editable = true
|
||||||
|
|||||||
@@ -99,6 +99,8 @@
|
|||||||
|
|
||||||
html += '<form method=post enctype="multipart/form-data" ' +
|
html += '<form method=post enctype="multipart/form-data" ' +
|
||||||
'action="' + action + '" ' + 'id="' + id + '">';
|
'action="' + action + '" ' + 'id="' + id + '">';
|
||||||
|
html += '<input type="hidden" name="upload_dest" value="' +
|
||||||
|
uploadDest + '">';
|
||||||
html += '<input type=file name="' + name + '">';
|
html += '<input type=file name="' + name + '">';
|
||||||
html += '</form>';
|
html += '</form>';
|
||||||
|
|
||||||
|
|||||||
@@ -155,7 +155,7 @@ $(document).ready(function() {
|
|||||||
fields: [
|
fields: [
|
||||||
{
|
{
|
||||||
type: 'file',
|
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 ) {
|
OK: function( res ) {
|
||||||
|
|||||||
@@ -16,6 +16,7 @@
|
|||||||
var baseUrl = '{{base_url}}';
|
var baseUrl = '{{base_url}}';
|
||||||
{{#page}}
|
{{#page}}
|
||||||
var pageFullPath = '{{url_path_display}}';
|
var pageFullPath = '{{url_path_display}}';
|
||||||
|
var uploadDest = '{{upload_dest}}';
|
||||||
{{/page}}
|
{{/page}}
|
||||||
</script>
|
</script>
|
||||||
<script type="text/javascript" src="{{base_url}}/javascript/jquery-1.7.2.min.js"></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
|
def allow_uploads
|
||||||
@allow_uploads
|
@allow_uploads
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def upload_dest
|
||||||
|
@upload_dest
|
||||||
|
end
|
||||||
|
|
||||||
def has_header
|
def has_header
|
||||||
@header = (@page.header || false) if @header.nil?
|
@header = (@page.header || false) if @header.nil?
|
||||||
|
|||||||
Reference in New Issue
Block a user