/Tester/Vendor/Trumbowyg/plugins/upload/trumbowyg.upload.js
https://bitbucket.org/MichaelCleverly/seochecker · JavaScript · 223 lines · 77 code · 11 blank · 135 comment · 4 complexity · 900857f9fb9437fff75f803c978b1003 MD5 · raw file
- /* ===========================================================
- * 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: [],
- headers: {},
- xhrFields: {},
- urlPropertyName: 'file',
- statusPropertyName: 'success',
- success: undefined,
- error: undefined
- };
- 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);