1
0
mirror of https://github.com/OpenNebula/one.git synced 2025-03-21 14:50:08 +03:00

Add upload support files support

This commit is contained in:
Daniel Molina 2014-10-16 17:49:17 +02:00
parent 9c95d2d9c7
commit a60a6133b4
2 changed files with 153 additions and 2 deletions

View File

@ -15,7 +15,7 @@
//------------------------------------------------------------------------- //
var support_interval_function;
var $upload_support_file;
var create_support_request_wizard_html =
'<form data-abide="ajax" id="create_support_request_form_wizard" class="custom creation">' +
'<div class="row">' +
@ -171,6 +171,12 @@ var support_actions = {
}
});
}
},
"Support.upload" : {
type: "single",
call: function() {
$upload_support_file.foundation("reveal", "open");
}
}
}
@ -181,10 +187,17 @@ var support_buttons = {
text: '<i class="fa fa-refresh fa fa-lg">',
alwaysActive: true
},
"Support.upload" : {
type: "action",
layout: "main",
text: '<i class="fa fa-cloud-upload" style="color: rgb(111, 111, 111)"/> '+tr("Upload a file"),
custom_classes: "only-right-info"
},
"Support.signout" : {
type: "action",
layout: "main",
text: "Sign out of Commercial Support",
text: '<i class="fa fa-sign-out fa fa-lg">',
tip: "Sign out of Commercial Support",
alwaysActive: true
},
"Support.create_dialog" : {
@ -310,6 +323,105 @@ var support_tab = {
}
}
function setup_upload_support_file_dialog() {
dialogs_context.append('<div id="upload_support_file"></div>');
$upload_support_file = $('#upload_support_file',dialogs_context);
var dialog = $upload_support_file;
dialog.html('\
<div class="row">\
<div class="large-12 columns">\
<h3 class="subheader">'+tr("Upload File")+'</h3>\
</div>\
</div>\
<form id="upload_support_file_form">\
<div class="row">\
<div id="support_file-uploader" class="large-12 columns text-center">\
<input id="support_file-uploader-input" type="file"/>\
</div>\
</div>\
<div class="row">\
<div class="large-12 columns">\
<button class="button right radius success upload_support_file_form_button" type="submit" disabled>Upload</button>\
</div>\
</div>\
</form>\
<a class="close-reveal-modal">&#215;</a>\
');
dialog.addClass("reveal-modal").attr("data-reveal", "");
$vnc_dialog.foundation();
var uploader = new Resumable({
target: '/upload_chunk',
chunkSize: 10*1024*1024,
maxFiles: 1,
testChunks: false,
query: {
csrftoken: csrftoken
}
});
uploader.assignBrowse($('#support_file-uploader-input'));
var fileName = '';
var file_input = false;
uploader.on('fileAdded', function(file){
$(".upload_support_file_form_button").removeAttr("disabled");
fileName = file.fileName;
file_input = fileName;
});
uploader.on('uploadStart', function() {
$(".upload_support_file_form_button").attr("disabled", "disabled");
$('.support_upload_progress_bars').append('<div id="'+fileName+'progressBar" class="row" style="margin-bottom:10px">\
<div id="'+fileName+'-info" class="large-2 columns dataTables_info">\
'+tr("Uploading...")+'\
</div>\
<div class="large-10 columns">\
<div id="upload_progress_container" class="progress nine radius" style="height:25px !important">\
<span class="meter" style="width:0%"></span>\
</div>\
<div class="progress-text" style="margin-left:15px">'+fileName+'</div>\
</div>\
</div>');
});
uploader.on('progress', function() {
$('span.meter', $('div[id="'+fileName+'progressBar"]')).css('width', uploader.progress()*100.0+'%')
});
uploader.on('fileSuccess', function(file) {
$('div[id="'+fileName+'-info"]').text(tr('Registering in OpenNebula'));
$.ajax({
url: '/support/request/' + $("#submit_support_comment").data("request_id") + '/upload',
type: "POST",
data: {
csrftoken: csrftoken,
file: fileName,
tempfile: file.uniqueIdentifier
},
success: function(){
notifyMessage("File uploaded correctly");
$('div[id="'+fileName+'progressBar"]').remove();
Sunstone.runAction("Support.refresh");
$upload_support_file.foundation('reveal', 'close');
},
error: function(response){
onError({}, OpenNebula.Error(response));
$('div[id="'+fileName+'progressBar"]').remove();
}
});
});
$("#upload_support_file_form").on("submit", function(){
uploader.upload();
$upload_support_file.foundation("reveal", "close")
return false;
})
}
function initialize_create_support_request_dialog() {
$('#create_support_request_form_wizard').foundation();
@ -428,6 +540,11 @@ function updateSupportInfo(request, response){
})
}
html += '<div class="row">\
<div class="large-12 columns support_upload_progress_bars">\
</div>\
</div>';
html += '<form id="submit_support_comment">\
<div class="row">\
<div class="large-12 columns">\
@ -498,6 +615,8 @@ $(document).ready(function(){
var tab_name = 'support-tab';
if (Config.isTabEnabled(tab_name)) {
setup_upload_support_file_dialog();
dataTable_support = $("#dataTable_support", main_tabs_context).dataTable({
"bSortClasses" : false,
"bDeferRender": true,

View File

@ -197,6 +197,38 @@ post '/support/request/:id/action' do
end
post '/support/request/:id/upload' do
check_zendesk_api_gem
tmpfile = nil
name = params[:tempfile]
if !name
[500, OpenNebula::Error.new("There was a problem uploading the file, " \
"please check the permissions on the file").to_json]
else
tmpfile = File.join(Dir.tmpdir, name)
zrequest = zendesk_client.requests.find(:id => params[:id])
# TODO check error
comment = ZendeskAPI::Request::Comment.new(zendesk_client, {"value" => name})
comment.uploads << tmpfile
zrequest.comment = comment
zrequest.save
one_zrequest = {
"REQUEST" => zrequest_to_one(zrequest)
}
FileUtils.rm(tmpfile)
[201, JSON.pretty_generate(one_zrequest)]
end
end
post '/support/credentials' do
check_zendesk_api_gem