You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
62 lines
1.9 KiB
62 lines
1.9 KiB
$(function() {
|
|
var $upload_file = $('.upload_file');
|
|
|
|
function endsWith(str, suffix) {
|
|
return str.indexOf(suffix, str.length - suffix.length) !== -1;
|
|
}
|
|
var validateImage = function(file) {
|
|
var types = $upload_file.attr('data-file-type').split(",");
|
|
var check = false;
|
|
$.each(types, function(n, e) {
|
|
if (endsWith(file.name, e)) {
|
|
check = true;
|
|
}
|
|
});
|
|
if (!check) {
|
|
alert($upload_file.attr("data-type-support-message") + $upload_file.attr("data-file-type"));
|
|
return false;
|
|
}
|
|
if (file.size && file.size > parseInt($upload_file.attr('data-max-file-size'))) {
|
|
alert($upload_file.attr("data-max-file-size-message"));
|
|
return false;
|
|
}
|
|
return true;
|
|
};
|
|
$('.upload_file').fileupload({
|
|
url: '/upload_avatar.json?source_type=' + $('.upload_file').attr('data-source-type') +
|
|
'&source_id=' + $('.upload_file').attr('data-source-id'),
|
|
add: function(e, data) {
|
|
if (!validateImage(data.files[0])) {
|
|
return false;
|
|
}
|
|
data.submit();
|
|
},
|
|
formData: function(form) {
|
|
var data = form.serializeArray();
|
|
var auth = null;
|
|
for (var key in data) {
|
|
if (data[key].name == "authenticity_token") {
|
|
auth = data[key];
|
|
break;
|
|
}
|
|
}
|
|
return [auth];
|
|
},
|
|
done: function(e, data) {
|
|
var imgSpan = jQuery('#avatar_image');
|
|
var result = data.result.text ? data.result.text() : data.result;
|
|
if(result){
|
|
var o = JSON.parse(result);
|
|
if(o.status == 0){
|
|
imgSpan.attr({
|
|
"src": o.url
|
|
});
|
|
} else {
|
|
alert(o.message);
|
|
}
|
|
}
|
|
|
|
}
|
|
});
|
|
});
|