mirror of
https://github.com/neocities/neocities.git
synced 2025-04-24 17:22:35 +02:00
file saving
This commit is contained in:
parent
44d785e222
commit
f4ce6c9994
2 changed files with 54 additions and 3 deletions
19
app.rb
19
app.rb
|
@ -150,9 +150,28 @@ end
|
||||||
|
|
||||||
get '/site_files/text_editor/:filename' do |filename|
|
get '/site_files/text_editor/:filename' do |filename|
|
||||||
@file_url = "http://#{current_site.username}.neocities.org/#{filename}"
|
@file_url = "http://#{current_site.username}.neocities.org/#{filename}"
|
||||||
|
|
||||||
slim :'site_files/text_editor'
|
slim :'site_files/text_editor'
|
||||||
end
|
end
|
||||||
|
|
||||||
|
post '/site_files/save/:filename' do |filename|
|
||||||
|
tmpfile = Tempfile.new 'neocities_saving_file'
|
||||||
|
|
||||||
|
if (tmpfile.size + current_site.total_space) > Site::MAX_SPACE
|
||||||
|
halt 'File is too large, it has NOT been saved. Please make a local copy and then try to reduce the size.'
|
||||||
|
end
|
||||||
|
|
||||||
|
tmpfile.write request.body.read
|
||||||
|
tmpfile.close
|
||||||
|
|
||||||
|
sanitized_filename = filename.gsub(/[^a-zA-Z_\-.]/, '')
|
||||||
|
dest_path = File.join site_base_path(current_site.username), sanitized_filename
|
||||||
|
|
||||||
|
FileUtils.mv tmpfile.path, dest_path
|
||||||
|
File.chmod(0640, dest_path) if self.class.production?
|
||||||
|
'ok'
|
||||||
|
end
|
||||||
|
|
||||||
get '/terms' do
|
get '/terms' do
|
||||||
slim :'terms'
|
slim :'terms'
|
||||||
end
|
end
|
||||||
|
|
|
@ -7,6 +7,11 @@ css:
|
||||||
left: 0;
|
left: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.row
|
||||||
|
.span6.offset3
|
||||||
|
div id="editorUpdates" class="alert alert-success hidden"
|
||||||
|
button type="button" class="close" onclick="$('#editorUpdates').addClass('hidden');" ×
|
||||||
|
span
|
||||||
.row
|
.row
|
||||||
.span6
|
.span6
|
||||||
font style="font-size: 27pt" Editing #{params[:filename]}
|
font style="font-size: 27pt" Editing #{params[:filename]}
|
||||||
|
@ -54,11 +59,11 @@ css:
|
||||||
|
|
||||||
.row.text-center style="margin-top: 10px"
|
.row.text-center style="margin-top: 10px"
|
||||||
.span4
|
.span4
|
||||||
a.btn.btn-large.btn-warning href="" Cancel
|
a.btn.btn-large.btn-warning href="" Finish Without Saving
|
||||||
.span4
|
.span4
|
||||||
a.btn.btn-large.btn-success href="" Save Changes
|
a.btn.btn-large.btn-success href="#" onclick="saveTextFile()" Save Changes
|
||||||
.span4
|
.span4
|
||||||
a.btn.btn-large.btn-info href="" Save and Finish Editing
|
a.btn.btn-large.btn-info href="" Save and Finish
|
||||||
|
|
||||||
|
|
||||||
script src="http://rawgithub.com/ajaxorg/ace-builds/master/src-noconflict/ace.js" type="text/javascript" charset="utf-8"
|
script src="http://rawgithub.com/ajaxorg/ace-builds/master/src-noconflict/ace.js" type="text/javascript" charset="utf-8"
|
||||||
|
@ -67,6 +72,33 @@ javascript:
|
||||||
function setTheme(name) {
|
function setTheme(name) {
|
||||||
editor.setTheme($('#theme').val());
|
editor.setTheme($('#theme').val());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function saveTextFile() {
|
||||||
|
/*
|
||||||
|
$.post('/site_files/save/#{params[:filename]}', editor.getValue(), function(resp) {
|
||||||
|
if(resp == 'ok') {
|
||||||
|
$('#editorUpdates span').text('Your file has been saved.');
|
||||||
|
$('#editorUpdates').removeClass('hidden');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
*/
|
||||||
|
|
||||||
|
$.ajax({
|
||||||
|
url: '/site_files/save/#{params[:filename]}',
|
||||||
|
data: editor.getValue(),
|
||||||
|
processData: false,
|
||||||
|
contentType: false,
|
||||||
|
type: 'POST',
|
||||||
|
success: function(response){
|
||||||
|
if(response == 'ok') {
|
||||||
|
$('#editorUpdates span').text('Your file has been saved.');
|
||||||
|
} else {
|
||||||
|
$('#editorUpdates span').text(response);
|
||||||
|
}
|
||||||
|
$('#editorUpdates').removeClass('hidden');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
var editor = {};
|
var editor = {};
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue