Add consultation module assets and libraries
This commit is contained in:
277
konsultasi/libs/Trumbowyg/plugins/upload/trumbowyg.upload.js
Normal file
277
konsultasi/libs/Trumbowyg/plugins/upload/trumbowyg.upload.js
Normal file
@@ -0,0 +1,277 @@
|
||||
/* ===========================================================
|
||||
* 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: '',
|
||||
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 () {}
|
||||
imageWidthModalEdit: false // Add ability to edit image width
|
||||
};
|
||||
|
||||
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'
|
||||
},
|
||||
da: {
|
||||
upload: 'Upload',
|
||||
file: 'Fil',
|
||||
uploadError: 'Fejl'
|
||||
},
|
||||
de: {
|
||||
upload: 'Hochladen',
|
||||
file: 'Datei',
|
||||
uploadError: 'Fehler'
|
||||
},
|
||||
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: '错误'
|
||||
},
|
||||
zh_tw: {
|
||||
upload: '上傳',
|
||||
file: '文件',
|
||||
uploadError: '錯誤'
|
||||
},
|
||||
ru: {
|
||||
upload: 'Загрузка',
|
||||
file: 'Файл',
|
||||
uploadError: 'Ошибка'
|
||||
},
|
||||
ja: {
|
||||
upload: 'アップロード',
|
||||
file: 'ファイル',
|
||||
uploadError: 'エラー'
|
||||
},
|
||||
pt_br: {
|
||||
upload: 'Enviar do local',
|
||||
file: 'Arquivo',
|
||||
uploadError: 'Erro'
|
||||
},
|
||||
tr: {
|
||||
upload: 'Yükle',
|
||||
file: 'Dosya',
|
||||
uploadError: 'Hata'
|
||||
},
|
||||
ko: {
|
||||
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 fields = {
|
||||
file: {
|
||||
type: 'file',
|
||||
required: true,
|
||||
attributes: {
|
||||
accept: 'image/*'
|
||||
}
|
||||
},
|
||||
alt: {
|
||||
label: 'description',
|
||||
value: trumbowyg.getRangeText()
|
||||
}
|
||||
};
|
||||
|
||||
if (trumbowyg.o.plugins.upload.imageWidthModalEdit) {
|
||||
fields.width = {
|
||||
value: ''
|
||||
};
|
||||
}
|
||||
|
||||
var $modal = trumbowyg.openModalInsert(
|
||||
// Title
|
||||
trumbowyg.lang.upload,
|
||||
|
||||
// Fields
|
||||
fields,
|
||||
|
||||
// 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);
|
||||
});
|
||||
|
||||
$.map(values, function (curr, key) {
|
||||
if (key !== 'file') {
|
||||
data.append(key, curr);
|
||||
}
|
||||
});
|
||||
|
||||
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').css('width', Math.round(e.loaded * 100 / e.total) + '%');
|
||||
},
|
||||
|
||||
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, false, true);
|
||||
var $img = $('img[src="' + url + '"]:not([alt])', trumbowyg.$box);
|
||||
$img.attr('alt', values.alt);
|
||||
if (trumbowyg.o.imageWidthModalEdit && parseInt(values.width) > 0) {
|
||||
$img.attr({
|
||||
width: values.width
|
||||
});
|
||||
}
|
||||
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.addedXhrProgressEvent) { // Avoid adding progress event multiple times
|
||||
var originalXhr = $.ajaxSettings.xhr;
|
||||
$.ajaxSetup({
|
||||
xhr: function () {
|
||||
var that = this,
|
||||
req = originalXhr();
|
||||
|
||||
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);
|
||||
1
konsultasi/libs/Trumbowyg/plugins/upload/trumbowyg.upload.min.js
vendored
Normal file
1
konsultasi/libs/Trumbowyg/plugins/upload/trumbowyg.upload.min.js
vendored
Normal file
@@ -0,0 +1 @@
|
||||
!function(r){"use strict";function e(r,a){var o=a.shift(),l=a;if(null!==r){if(0===l.length)return r[o];if("object"==typeof r)return e(r[o],l)}return r}function a(){if(!r.trumbowyg.addedXhrProgressEvent){var e=r.ajaxSettings.xhr;r.ajaxSetup({xhr:function(){var r=this,a=e();return a&&"object"==typeof a.upload&&void 0!==r.progressUpload&&a.upload.addEventListener("progress",function(e){r.progressUpload(e)},!1),a}}),r.trumbowyg.addedXhrProgressEvent=!0}}var o={serverPath:"",fileFieldName:"fileToUpload",data:[],headers:{},xhrFields:{},urlPropertyName:"file",statusPropertyName:"success",success:void 0,error:void 0,imageWidthModalEdit:!1};a(),r.extend(!0,r.trumbowyg,{langs:{en:{upload:"Upload",file:"File",uploadError:"Error"},da:{upload:"Upload",file:"Fil",uploadError:"Fejl"},de:{upload:"Hochladen",file:"Datei",uploadError:"Fehler"},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:"错误"},zh_tw:{upload:"上傳",file:"文件",uploadError:"錯誤"},ru:{upload:"Загрузка",file:"Файл",uploadError:"Ошибка"},ja:{upload:"アップロード",file:"ファイル",uploadError:"エラー"},pt_br:{upload:"Enviar do local",file:"Arquivo",uploadError:"Erro"},tr:{upload:"Yükle",file:"Dosya",uploadError:"Hata"},ko:{upload:"그림 올리기",file:"파일",uploadError:"에러"}},plugins:{upload:{init:function(a){a.o.plugins.upload=r.extend(!0,{},o,a.o.plugins.upload||{});var l={fn:function(){a.saveRange();var o,l=a.o.prefix,t={file:{type:"file",required:!0,attributes:{accept:"image/*"}},alt:{label:"description",value:a.getRangeText()}};a.o.plugins.upload.imageWidthModalEdit&&(t.width={value:""});var d=a.openModalInsert(a.lang.upload,t,function(t){var i=new FormData;i.append(a.o.plugins.upload.fileFieldName,o),a.o.plugins.upload.data.map(function(r){i.append(r.name,r.value)}),r.map(t,function(r,e){"file"!==e&&i.append(e,r)}),0===r("."+l+"progress",d).length&&r("."+l+"modal-title",d).after(r("<div/>",{"class":l+"progress"}).append(r("<div/>",{"class":l+"progress-bar"}))),r.ajax({url:a.o.plugins.upload.serverPath,headers:a.o.plugins.upload.headers,xhrFields:a.o.plugins.upload.xhrFields,type:"POST",data:i,cache:!1,dataType:"json",processData:!1,contentType:!1,progressUpload:function(e){r("."+l+"progress-bar").css("width",Math.round(100*e.loaded/e.total)+"%")},success:function(o){if(a.o.plugins.upload.success)a.o.plugins.upload.success(o,a,d,t);else if(e(o,a.o.plugins.upload.statusPropertyName.split("."))){var l=e(o,a.o.plugins.upload.urlPropertyName.split("."));a.execCmd("insertImage",l,!1,!0);var i=r('img[src="'+l+'"]:not([alt])',a.$box);i.attr("alt",t.alt),a.o.imageWidthModalEdit&&parseInt(t.width)>0&&i.attr({width:t.width}),setTimeout(function(){a.closeModal()},250),a.$c.trigger("tbwuploadsuccess",[a,o,l])}else a.addErrorOnModalField(r("input[type=file]",d),a.lang[o.message]),a.$c.trigger("tbwuploaderror",[a,o])},error:a.o.plugins.upload.error||function(){a.addErrorOnModalField(r("input[type=file]",d),a.lang.uploadError),a.$c.trigger("tbwuploaderror",[a])}})});r("input[type=file]").on("change",function(r){try{o=r.target.files[0]}catch(e){o=r.target.value}})}};a.addBtnDef("upload",l)}}}})}(jQuery);
|
||||
Reference in New Issue
Block a user