/bower_components/trumbowyg/dist/plugins/upload/trumbowyg.upload.js |
@@ -0,0 +1,223 @@ |
/* =========================================================== |
* trumbowyg.upload.js v1.2 |
* Upload plugin for Trumbowyg |
* http://alex-d.github.com/Trumbowyg |
* =========================================================== |
* Author : Alexandre Demode (Alex-D) |
* Twitter : @AlexandreDemode |
* Website : alex-d.fr |
* Mod by : Aleksandr-ru |
* Twitter : @Aleksandr_ru |
* Website : aleksandr.ru |
*/ |
|
(function ($) { |
'use strict'; |
|
var defaultOptions = { |
serverPath: './src/plugins/upload/trumbowyg.upload.php', |
fileFieldName: 'fileToUpload', |
data: [], // Additional data for ajax [{name: 'key', value: 'value'}] |
headers: {}, // Additional headers |
xhrFields: {}, // Additional fields |
urlPropertyName: 'file', // How to get url from the json response (for instance 'url' for {url: ....}) |
statusPropertyName: 'success', // How to get status from the json response |
success: undefined, // Success callback: function (data, trumbowyg, $modal, values) {} |
error: undefined // Error callback: function () {} |
}; |
|
function getDeep(object, propertyParts) { |
var mainProperty = propertyParts.shift(), |
otherProperties = propertyParts; |
|
if (object !== null) { |
if (otherProperties.length === 0) { |
return object[mainProperty]; |
} |
|
if (typeof object === 'object') { |
return getDeep(object[mainProperty], otherProperties); |
} |
} |
return object; |
} |
|
addXhrProgressEvent(); |
|
$.extend(true, $.trumbowyg, { |
langs: { |
// jshint camelcase:false |
en: { |
upload: 'Upload', |
file: 'File', |
uploadError: 'Error' |
}, |
sk: { |
upload: 'Nahrať', |
file: 'Súbor', |
uploadError: 'Chyba' |
}, |
fr: { |
upload: 'Envoi', |
file: 'Fichier', |
uploadError: 'Erreur' |
}, |
cs: { |
upload: 'Nahrát obrázek', |
file: 'Soubor', |
uploadError: 'Chyba' |
}, |
zh_cn: { |
upload: '上传', |
file: '文件', |
uploadError: '错误' |
}, |
ru: { |
upload: 'Загрузка', |
file: 'Файл', |
uploadError: 'Ошибка' |
} |
}, |
// jshint camelcase:true |
|
plugins: { |
upload: { |
init: function (trumbowyg) { |
trumbowyg.o.plugins.upload = $.extend(true, {}, defaultOptions, trumbowyg.o.plugins.upload || {}); |
var btnDef = { |
fn: function () { |
trumbowyg.saveRange(); |
|
var file, |
prefix = trumbowyg.o.prefix; |
|
var $modal = trumbowyg.openModalInsert( |
// Title |
trumbowyg.lang.upload, |
|
// Fields |
{ |
file: { |
type: 'file', |
required: true, |
attributes: { |
accept: 'image/*' |
} |
}, |
alt: { |
label: 'description', |
value: trumbowyg.getRangeText() |
} |
}, |
|
// Callback |
function (values) { |
var data = new FormData(); |
data.append(trumbowyg.o.plugins.upload.fileFieldName, file); |
|
trumbowyg.o.plugins.upload.data.map(function (cur) { |
data.append(cur.name, cur.value); |
}); |
|
if ($('.' + prefix + 'progress', $modal).length === 0) { |
$('.' + prefix + 'modal-title', $modal) |
.after( |
$('<div/>', { |
'class': prefix + 'progress' |
}).append( |
$('<div/>', { |
'class': prefix + 'progress-bar' |
}) |
) |
); |
} |
|
$.ajax({ |
url: trumbowyg.o.plugins.upload.serverPath, |
headers: trumbowyg.o.plugins.upload.headers, |
xhrFields: trumbowyg.o.plugins.upload.xhrFields, |
type: 'POST', |
data: data, |
cache: false, |
dataType: 'json', |
processData: false, |
contentType: false, |
|
progressUpload: function (e) { |
$('.' + prefix + 'progress-bar').stop().animate({ |
width: Math.round(e.loaded * 100 / e.total) + '%' |
}, 200); |
}, |
|
success: function (data) { |
if (trumbowyg.o.plugins.upload.success) { |
trumbowyg.o.plugins.upload.success(data, trumbowyg, $modal, values); |
} else { |
if (!!getDeep(data, trumbowyg.o.plugins.upload.statusPropertyName.split('.'))) { |
var url = getDeep(data, trumbowyg.o.plugins.upload.urlPropertyName.split('.')); |
trumbowyg.execCmd('insertImage', url); |
$('img[src="' + url + '"]:not([alt])', trumbowyg.$box).attr('alt', values.alt); |
setTimeout(function () { |
trumbowyg.closeModal(); |
}, 250); |
trumbowyg.$c.trigger('tbwuploadsuccess', [trumbowyg, data, url]); |
} else { |
trumbowyg.addErrorOnModalField( |
$('input[type=file]', $modal), |
trumbowyg.lang[data.message] |
); |
trumbowyg.$c.trigger('tbwuploaderror', [trumbowyg, data]); |
} |
} |
}, |
|
error: trumbowyg.o.plugins.upload.error || function () { |
trumbowyg.addErrorOnModalField( |
$('input[type=file]', $modal), |
trumbowyg.lang.uploadError |
); |
trumbowyg.$c.trigger('tbwuploaderror', [trumbowyg]); |
} |
}); |
} |
); |
|
$('input[type=file]').on('change', function (e) { |
try { |
// If multiple files allowed, we just get the first. |
file = e.target.files[0]; |
} catch (err) { |
// In IE8, multiple files not allowed |
file = e.target.value; |
} |
}); |
} |
}; |
|
trumbowyg.addBtnDef('upload', btnDef); |
} |
} |
} |
}); |
|
|
function addXhrProgressEvent() { |
if (!$.trumbowyg && !$.trumbowyg.addedXhrProgressEvent) { // Avoid adding progress event multiple times |
var originalXhr = $.ajaxSettings.xhr; |
$.ajaxSetup({ |
xhr: function () { |
var req = originalXhr(), |
that = this; |
if (req && typeof req.upload === 'object' && that.progressUpload !== undefined) { |
req.upload.addEventListener('progress', function (e) { |
that.progressUpload(e); |
}, false); |
} |
|
return req; |
} |
}); |
$.trumbowyg.addedXhrProgressEvent = true; |
} |
} |
})(jQuery); |
/bower_components/trumbowyg/dist/plugins/upload/trumbowyg.upload.min.js |
@@ -0,0 +1 @@ |
!function(e){"use strict";function r(e,a){var o=a.shift(),l=a;if(null!==e){if(0===l.length)return e[o];if("object"==typeof e)return r(e[o],l)}return e}function a(){if(!e.trumbowyg&&!e.trumbowyg.addedXhrProgressEvent){var r=e.ajaxSettings.xhr;e.ajaxSetup({xhr:function(){var e=r(),a=this;return e&&"object"==typeof e.upload&&void 0!==a.progressUpload&&e.upload.addEventListener("progress",function(e){a.progressUpload(e)},!1),e}}),e.trumbowyg.addedXhrProgressEvent=!0}}var o={serverPath:"./src/plugins/upload/trumbowyg.upload.php",fileFieldName:"fileToUpload",data:[],headers:{},xhrFields:{},urlPropertyName:"file",statusPropertyName:"success",success:void 0,error:void 0};a(),e.extend(!0,e.trumbowyg,{langs:{en:{upload:"Upload",file:"File",uploadError:"Error"},sk:{upload:"Nahrať",file:"Súbor",uploadError:"Chyba"},fr:{upload:"Envoi",file:"Fichier",uploadError:"Erreur"},cs:{upload:"Nahrát obrázek",file:"Soubor",uploadError:"Chyba"},zh_cn:{upload:"上传",file:"文件",uploadError:"错误"},ru:{upload:"Загрузка",file:"Файл",uploadError:"Ошибка"}},plugins:{upload:{init:function(a){a.o.plugins.upload=e.extend(!0,{},o,a.o.plugins.upload||{});var l={fn:function(){a.saveRange();var o,l=a.o.prefix,t=a.openModalInsert(a.lang.upload,{file:{type:"file",required:!0,attributes:{accept:"image/*"}},alt:{label:"description",value:a.getRangeText()}},function(u){var s=new FormData;s.append(a.o.plugins.upload.fileFieldName,o),a.o.plugins.upload.data.map(function(e){s.append(e.name,e.value)}),0===e("."+l+"progress",t).length&&e("."+l+"modal-title",t).after(e("<div/>",{"class":l+"progress"}).append(e("<div/>",{"class":l+"progress-bar"}))),e.ajax({url:a.o.plugins.upload.serverPath,headers:a.o.plugins.upload.headers,xhrFields:a.o.plugins.upload.xhrFields,type:"POST",data:s,cache:!1,dataType:"json",processData:!1,contentType:!1,progressUpload:function(r){e("."+l+"progress-bar").stop().animate({width:Math.round(100*r.loaded/r.total)+"%"},200)},success:function(o){if(a.o.plugins.upload.success)a.o.plugins.upload.success(o,a,t,u);else if(r(o,a.o.plugins.upload.statusPropertyName.split("."))){var l=r(o,a.o.plugins.upload.urlPropertyName.split("."));a.execCmd("insertImage",l),e('img[src="'+l+'"]:not([alt])',a.$box).attr("alt",u.alt),setTimeout(function(){a.closeModal()},250),a.$c.trigger("tbwuploadsuccess",[a,o,l])}else a.addErrorOnModalField(e("input[type=file]",t),a.lang[o.message]),a.$c.trigger("tbwuploaderror",[a,o])},error:a.o.plugins.upload.error||function(){a.addErrorOnModalField(e("input[type=file]",t),a.lang.uploadError),a.$c.trigger("tbwuploaderror",[a])}})});e("input[type=file]").on("change",function(e){try{o=e.target.files[0]}catch(r){o=e.target.value}})}};a.addBtnDef("upload",l)}}}})}(jQuery); |