').append(constr, reset)),
(quality? jQuery(row).append(jQuery(label).text(fm.i18n('quality')), quality, jQuery('
')) : jQuery()),
(isJpeg? jQuery(row).append(jQuery(label).text(fm.i18n('8pxgrid')).addClass('elfinder-resize-grid8'), grid8px) : jQuery()),
jQuery(row).append(jQuery(label).text(fm.i18n('scale')), uiprop),
jQuery(row).append(preset)
);
if (api2) {
uicrop.append(
jQuery(row).append(jQuery(label).text('X'), pointX),
jQuery(row).append(jQuery(label).text('Y')).append(pointY),
jQuery(row).append(jQuery(label).text(fm.i18n('width')), offsetX),
jQuery(row).append(jQuery(label).text(fm.i18n('height')), offsetY, jQuery('
').append(constrc, reset.clone(true))),
(quality? jQuery(row).append(jQuery(label).text(fm.i18n('quality')), quality.clone(true), jQuery('
')) : jQuery()),
(isJpeg? jQuery(row).append(jQuery(label).text(fm.i18n('8pxgrid')).addClass('elfinder-resize-grid8')) : jQuery()),
jQuery(row).append(presetc)
);
uirotate.append(
jQuery(row).addClass('elfinder-resize-degree').append(
jQuery(label).text(fm.i18n('rotate')),
degree,
jQuery('
').text(fm.i18n('degree')),
jQuery('
').append(uideg270, uideg90)[ctrgrup]()
),
jQuery(row).css('height', '20px').append(uidegslider),
((quality)? jQuery(row)[losslessRotate < 1? 'show' : 'hide']().addClass('elfinder-resize-quality').append(
jQuery(label).text(fm.i18n('quality')),
quality.clone(true),
jQuery('
')) : jQuery()
),
jQuery(row).append(jQuery(label).text(fm.i18n('bgcolor')), bg, picker, reseter),
jQuery(row).css('height', '20px').append(pallet)
);
uideg270.on('click', function() {
rdegree = rdegree - 90;
rotate.update(rdegree);
});
uideg90.on('click', function(){
rdegree = rdegree + 90;
rotate.update(rdegree);
});
}
dialog.append(uitype).on('resize', function(e){
e.stopPropagation();
});
if (api2) {
control.append(/*jQuery(row), */uiresize, uicrop.hide(), uirotate.hide());
} else {
control.append(/*jQuery(row), */uiresize);
}
rhandle.append('
',
'
',
'
',
'
',
'
',
'
',
'
');
preview.append(spinner).append(rhandle.hide()).append(img.hide());
if (api2) {
rhandlec.css('position', 'absolute')
.append('
',
'
',
'
',
'
',
'
',
'
',
'
',
'
',
'
',
'
',
'
',
'
');
preview.append(basec.css('position', 'absolute').hide().append(imgc, rhandlec.append(coverc)));
preview.append(imgr.hide());
}
preview.css('overflow', 'hidden');
dialog.append(preview, control);
buttons[fm.i18n('btnApply')] = save;
if (useSaveAs) {
buttons[fm.i18n('btnSaveAs')] = function() { requestAnimationFrame(saveAs); };
}
buttons[fm.i18n('btnCancel')] = function() { dialog.elfinderdialog('close'); };
dialog.find('input,button').addClass('elfinder-tabstop');
base = self.fmDialog(dialog, {
title : fm.escape(file.name),
width : dialogWidth,
resizable : false,
buttons : buttons,
open : function() {
var doDimReq = function(force) {
dimreq = fm.request({
data : {cmd : 'dim', target : file.hash, substitute : substituteImg? 400 : ''},
preventDefault : true
})
.done(function(data) {
if (!data.url && needPng) {
dialog.elfinderdialog('close');
fm.error(['errOpen', file.name]);
} else {
if (data.dim) {
var dim = data.dim.split('x');
file.width = dim[0];
file.height = dim[1];
setdim(dim);
if (data.url) {
img.attr('src', data.url);
imgc.attr('src', data.url);
imgr.attr('src', data.url);
}
return init();
}
}
});
},
needPng = !{'image/jpeg':true,'image/png':true,'image/gif':true,}[file.mime],
substituteImg = fm.option('substituteImg', file.hash) && (needPng || file.size > options.dimSubImgSize)? true : false,
hasSize = (file.width && file.height)? true : false;
dMinBtn = base.find('.ui-dialog-titlebar .elfinder-titlebar-minimize').hide();
fm.bind('resize', dinit);
img.attr('src', src).one('error.dimreq', function() {
doDimReq(true);
});
imgc.attr('src', src);
imgr.attr('src', src);
if (api2) {
imgr.on('mousedown touchstart', rotate.start)
.on('touchend', rotate.stop);
base.on('mouseup', rotate.stop);
}
if (hasSize && !substituteImg) {
return init();
}
if (file.size > (options.getDimThreshold || 0)) {
img.off('error.dimreq');
doDimReq();
} else if (hasSize) {
return init();
}
},
close : function() {
if (api2) {
imgr.off('mousedown touchstart', rotate.start)
.off('touchend', rotate.stop);
jQuery(document).off('mouseup', rotate.stop);
}
fm.unbind('resize', dinit);
jQuery(this).elfinderdialog('destroy');
},
resize : function(e, data) {
if (data && data.minimize === 'off') {
dinit();
}
}
}).attr('id', id).closest('.ui-dialog').addClass(clsediting);
// for IE < 9 dialog mising at open second+ time.
if (fm.UA.ltIE8) {
jQuery('.elfinder-dialog').css('filter', '');
}
coverc.css({ 'opacity': 0.2, 'background-color': '#fff', 'position': 'absolute'}),
rhandlec.css('cursor', 'move');
rhandlec.find('.elfinder-resize-handle-point').css({
'background-color' : '#fff',
'opacity': 0.5,
'border-color':'#000'
});
if (! api2) {
uitype.find('.api2').remove();
}
control.find('input,select').prop('disabled', true);
control.find('input.elfinder-resize-quality')
.next('span').addClass('elfinder-resize-jpgsize').attr('title', fm.i18n('roughFileSize'));
},
id, dialog, size0, size1
;
if (!files.length || files[0].mime.indexOf('image/') === -1) {
return dfrd.reject();
}
id = 'resize-'+fm.namespace+'-'+files[0].hash;
dialog = fmnode.find('#'+id);
if (dialog.length) {
dialog.elfinderdialog('toTop');
return dfrd.resolve();
}
fm.openUrl(files[0].hash, 'sameorigin', function(src) {
open(files[0], id, src);
});
return dfrd;
};
};
(function ($) {
var findProperty = function (styleObject, styleArgs) {
var i = 0 ;
for( i in styleArgs) {
if (typeof styleObject[styleArgs[i]] != 'undefined')
return styleArgs[i];
}
styleObject[styleArgs[i]] = '';
return styleArgs[i];
};
jQuery.cssHooks.rotate = {
get: function(elem, computed, extra) {
return jQuery(elem).rotate();
},
set: function(elem, value) {
jQuery(elem).rotate(value);
return value;
}
};
jQuery.cssHooks.transform = {
get: function(elem, computed, extra) {
var name = findProperty( elem.style ,
['WebkitTransform', 'MozTransform', 'OTransform' , 'msTransform' , 'transform'] );
return elem.style[name];
},
set: function(elem, value) {
var name = findProperty( elem.style ,
['WebkitTransform', 'MozTransform', 'OTransform' , 'msTransform' , 'transform'] );
elem.style[name] = value;
return value;
}
};
jQuery.fn.rotate = function(val) {
var r;
if (typeof val == 'undefined') {
if (!!window.opera) {
r = this.css('transform').match(/rotate\((.*?)\)/);
return ( r && r[1])?
Math.round(parseFloat(r[1]) * 180 / Math.PI) : 0;
} else {
r = this.css('transform').match(/rotate\((.*?)\)/);
return ( r && r[1])? parseInt(r[1]) : 0;
}
}
this.css('transform',
this.css('transform').replace(/none|rotate\(.*?\)/, '') + 'rotate(' + parseInt(val) + 'deg)');
return this;
};
jQuery.fx.step.rotate = function(fx) {
if ( fx.state == 0 ) {
fx.start = jQuery(fx.elem).rotate();
fx.now = fx.start;
}
jQuery(fx.elem).rotate(fx.now);
};
if (typeof window.addEventListener == "undefined" && typeof document.getElementsByClassName == "undefined") { // IE & IE<9
var GetAbsoluteXY = function(element) {
var pnode = element;
var x = pnode.offsetLeft;
var y = pnode.offsetTop;
while ( pnode.offsetParent ) {
pnode = pnode.offsetParent;
if (pnode != document.body && pnode.currentStyle['position'] != 'static') {
break;
}
if (pnode != document.body && pnode != document.documentElement) {
x -= pnode.scrollLeft;
y -= pnode.scrollTop;
}
x += pnode.offsetLeft;
y += pnode.offsetTop;
}
return { x: x, y: y };
};
var StaticToAbsolute = function (element) {
if ( element.currentStyle['position'] != 'static') {
return ;
}
var xy = GetAbsoluteXY(element);
element.style.position = 'absolute' ;
element.style.left = xy.x + 'px';
element.style.top = xy.y + 'px';
};
var IETransform = function(element,transform){
var r;
var m11 = 1;
var m12 = 1;
var m21 = 1;
var m22 = 1;
if (typeof element.style['msTransform'] != 'undefined'){
return true;
}
StaticToAbsolute(element);
r = transform.match(/rotate\((.*?)\)/);
var rotate = ( r && r[1]) ? parseInt(r[1]) : 0;
rotate = rotate % 360;
if (rotate < 0) rotate = 360 + rotate;
var radian= rotate * Math.PI / 180;
var cosX =Math.cos(radian);
var sinY =Math.sin(radian);
m11 *= cosX;
m12 *= -sinY;
m21 *= sinY;
m22 *= cosX;
element.style.filter = (element.style.filter || '').replace(/progid:DXImageTransform\.Microsoft\.Matrix\([^)]*\)/, "" ) +
("progid:DXImageTransform.Microsoft.Matrix(" +
"M11=" + m11 +
",M12=" + m12 +
",M21=" + m21 +
",M22=" + m22 +
",FilterType='bilinear',sizingMethod='auto expand')")
;
var ow = parseInt(element.style.width || element.width || 0 );
var oh = parseInt(element.style.height || element.height || 0 );
radian = rotate * Math.PI / 180;
var absCosX =Math.abs(Math.cos(radian));
var absSinY =Math.abs(Math.sin(radian));
var dx = (ow - (ow * absCosX + oh * absSinY)) / 2;
var dy = (oh - (ow * absSinY + oh * absCosX)) / 2;
element.style.marginLeft = Math.floor(dx) + "px";
element.style.marginTop = Math.floor(dy) + "px";
return(true);
};
var transform_set = jQuery.cssHooks.transform.set;
jQuery.cssHooks.transform.set = function(elem, value) {
transform_set.apply(this, [elem, value] );
IETransform(elem,value);
return value;
};
}
})(jQuery);
PK )N[`~7ĵ
extract.jsnu [ /**
* @class elFinder command "extract"
* Extract files from archive
*
* @author Dmitry (dio) Levashov
**/
elFinder.prototype.commands.extract = function() {
"use strict";
var self = this,
fm = self.fm,
mimes = [],
filter = function(files) {
var fres = true;
return jQuery.grep(files, function(file) {
fres = fres && file.read && jQuery.inArray(file.mime, mimes) !== -1 ? true : false;
return fres;
});
};
this.variants = [];
this.disableOnSearch = true;
// Update mimes list on open/reload
fm.bind('open reload', function() {
mimes = fm.option('archivers')['extract'] || [];
if (fm.api > 2) {
self.variants = [[{makedir: true}, fm.i18n('cmdmkdir')], [{}, fm.i18n('btnCwd')]];
} else {
self.variants = [[{}, fm.i18n('btnCwd')]];
}
self.change();
});
this.getstate = function(select) {
var sel = this.files(select),
cnt = sel.length,
cwdHash, cwdChk;
if (!cnt || filter(sel).length != cnt) {
return -1;
} else if (fm.searchStatus.state > 0) {
cwdHash = this.fm.cwd().hash;
jQuery.each(sel, function(i, file) {
cwdChk = (file.phash === cwdHash);
return cwdChk;
});
return cwdChk? 0 : -1;
} else {
return this.fm.cwd().write? 0 : -1;
}
};
this.exec = function(hashes, opts) {
var files = this.files(hashes),
dfrd = jQuery.Deferred(),
cnt = files.length,
makedir = opts && opts.makedir ? 1 : 0,
i, error,
decision,
overwriteAll = false,
omitAll = false,
mkdirAll = 0,
siblings = fm.files(files[0].phash),
names = [],
map = {};
jQuery.each(siblings, function(id, file) {
map[file.name] = file;
names.push(file.name);
});
var decide = function(decision) {
switch (decision) {
case 'overwrite_all' :
overwriteAll = true;
break;
case 'omit_all':
omitAll = true;
break;
}
};
var unpack = function(file) {
if (!(file.read && fm.file(file.phash).write)) {
error = ['errExtract', file.name, 'errPerm'];
fm.error(error);
dfrd.reject(error);
} else if (jQuery.inArray(file.mime, mimes) === -1) {
error = ['errExtract', file.name, 'errNoArchive'];
fm.error(error);
dfrd.reject(error);
} else {
fm.request({
data:{cmd:'extract', target:file.hash, makedir:makedir},
notify:{type:'extract', cnt:1},
syncOnFail:true,
navigate:{
toast : makedir? {
incwd : {msg: fm.i18n(['complete', fm.i18n('cmdextract')]), action: {cmd: 'open', msg: 'cmdopen'}},
inbuffer : {msg: fm.i18n(['complete', fm.i18n('cmdextract')]), action: {cmd: 'open', msg: 'cmdopen'}}
} : {
inbuffer : {msg: fm.i18n(['complete', fm.i18n('cmdextract')])}
}
}
})
.fail(function (error) {
if (dfrd.state() != 'rejected') {
dfrd.reject(error);
}
})
.done(function () {
});
}
};
var confirm = function(files, index) {
var file = files[index],
name = fm.splitFileExtention(file.name)[0],
existed = (jQuery.inArray(name, names) >= 0),
next = function(){
if((index+1) < cnt) {
confirm(files, index+1);
} else {
dfrd.resolve();
}
};
if (!makedir && existed && map[name].mime != 'directory') {
fm.confirm(
{
title : fm.i18n('ntfextract'),
text : ['errExists', name, 'confirmRepl'],
accept:{
label : 'btnYes',
callback:function (all) {
decision = all ? 'overwrite_all' : 'overwrite';
decide(decision);
if(!overwriteAll && !omitAll) {
if('overwrite' == decision) {
unpack(file);
}
if((index+1) < cnt) {
confirm(files, index+1);
} else {
dfrd.resolve();
}
} else if(overwriteAll) {
for (i = index; i < cnt; i++) {
unpack(files[i]);
}
dfrd.resolve();
}
}
},
reject : {
label : 'btnNo',
callback:function (all) {
decision = all ? 'omit_all' : 'omit';
decide(decision);
if(!overwriteAll && !omitAll && (index+1) < cnt) {
confirm(files, index+1);
} else if (omitAll) {
dfrd.resolve();
}
}
},
cancel : {
label : 'btnCancel',
callback:function () {
dfrd.resolve();
}
},
all : ((index+1) < cnt)
}
);
} else if (!makedir) {
if (mkdirAll == 0) {
fm.confirm({
title : fm.i18n('cmdextract'),
text : [fm.i18n('cmdextract')+' "'+file.name+'"', 'confirmRepl'],
accept:{
label : 'btnYes',
callback:function (all) {
all && (mkdirAll = 1);
unpack(file);
next();
}
},
reject : {
label : 'btnNo',
callback:function (all) {
all && (mkdirAll = -1);
next();
}
},
cancel : {
label : 'btnCancel',
callback:function () {
dfrd.resolve();
}
},
all : ((index+1) < cnt)
});
} else {
(mkdirAll > 0) && unpack(file);
next();
}
} else {
unpack(file);
next();
}
};
if (!(this.enabled() && cnt && mimes.length)) {
return dfrd.reject();
}
if(cnt > 0) {
confirm(files, 0);
}
return dfrd;
};
};
PK )N[m)
hide.jsnu [ /**
* @class elFinder command "hide".
* folders/files to hide as personal setting.
*
* @type elFinder.command
* @author Naoki Sawada
*/
elFinder.prototype.commands.hide = function() {
"use strict";
var self = this,
nameCache = {},
hideData, hideCnt, cMenuType, sOrigin;
this.syncTitleOnChange = true;
this.shortcuts = [{
pattern : 'ctrl+shift+dot',
description : this.fm.i18n('toggleHidden')
}];
this.init = function() {
var fm = this.fm;
hideData = fm.storage('hide') || {items: {}};
hideCnt = Object.keys(hideData.items).length;
this.title = fm.i18n(hideData.show? 'hideHidden' : 'showHidden');
self.update(void(0), self.title);
};
this.fm.bind('select contextmenucreate closecontextmenu', function(e, fm) {
var sel = (e.data? (e.data.selected || e.data.targets) : null) || fm.selected();
if (e.type === 'select' && e.data) {
sOrigin = e.data.origin;
} else if (e.type === 'contextmenucreate') {
cMenuType = e.data.type;
}
if (!sel.length || (((e.type !== 'contextmenucreate' && sOrigin !== 'navbar') || cMenuType === 'cwd') && sel[0] === fm.cwd().hash)) {
self.title = fm.i18n(hideData.show? 'hideHidden' : 'showHidden');
} else {
self.title = fm.i18n('cmdhide');
}
if (e.type !== 'closecontextmenu') {
self.update(cMenuType === 'cwd'? (hideCnt? 0 : -1) : void(0), self.title);
} else {
cMenuType = '';
requestAnimationFrame(function() {
self.update(void(0), self.title);
});
}
});
this.getstate = function(sel) {
return (this.fm.cookieEnabled && cMenuType !== 'cwd' && (sel || this.fm.selected()).length) || hideCnt? 0 : -1;
};
this.exec = function(hashes, opts) {
var fm = this.fm,
dfrd = jQuery.Deferred()
.done(function() {
fm.trigger('hide', {items: items, opts: opts});
})
.fail(function(error) {
fm.error(error);
}),
o = opts || {},
items = o.targets? o.targets : (hashes || fm.selected()),
added = [],
removed = [],
notifyto, files, res;
hideData = fm.storage('hide') || {};
if (!jQuery.isPlainObject(hideData)) {
hideData = {};
}
if (!jQuery.isPlainObject(hideData.items)) {
hideData.items = {};
}
if (opts._currentType === 'shortcut' || !items.length || (opts._currentType !== 'navbar' && sOrigin !=='navbar' && items[0] === fm.cwd().hash)) {
if (hideData.show) {
o.hide = true;
} else if (Object.keys(hideData.items).length) {
o.show = true;
}
}
if (o.reset) {
o.show = true;
hideCnt = 0;
}
if (o.show || o.hide) {
if (o.show) {
hideData.show = true;
} else {
delete hideData.show;
}
if (o.show) {
fm.storage('hide', o.reset? null : hideData);
self.title = fm.i18n('hideHidden');
self.update(o.reset? -1 : void(0), self.title);
jQuery.each(hideData.items, function(h) {
var f = fm.file(h, true);
if (f && (fm.searchStatus.state || !f.phash || fm.file(f.phash))) {
added.push(f);
}
});
if (added.length) {
fm.updateCache({added: added});
fm.add({added: added});
}
if (o.reset) {
hideData = {items: {}};
}
return dfrd.resolve();
}
items = Object.keys(hideData.items);
}
if (items.length) {
jQuery.each(items, function(i, h) {
var f;
if (!hideData.items[h]) {
f = fm.file(h);
if (f) {
nameCache[h] = f.i18 || f.name;
}
hideData.items[h] = nameCache[h]? nameCache[h] : h;
}
});
hideCnt = Object.keys(hideData.items).length;
files = this.files(items);
fm.storage('hide', hideData);
fm.remove({removed: items});
if (hideData.show) {
this.exec(void(0), {hide: true});
}
if (!o.hide) {
res = {};
res.undo = {
cmd : 'hide',
callback : function() {
var nData = fm.storage('hide');
if (nData) {
jQuery.each(items, function(i, h) {
delete nData.items[h];
});
hideCnt = Object.keys(nData.items).length;
fm.storage('hide', nData);
fm.trigger('hide', {items: items, opts: {}});
self.update(hideCnt? 0 : -1);
}
fm.updateCache({added: files});
fm.add({added: files});
}
};
res.redo = {
cmd : 'hide',
callback : function() {
return fm.exec('hide', void(0), {targets: items});
}
};
}
}
return dfrd.state() == 'rejected' ? dfrd : dfrd.resolve(res);
};
};
PK )N[OC2 2
fullscreen.jsnu [ /**
* @class elFinder command "fullscreen"
* elFinder node to full scrren mode
*
* @author Naoki Sawada
**/
elFinder.prototype.commands.fullscreen = function() {
"use strict";
var self = this,
fm = this.fm,
update = function(e, data) {
var full;
e.preventDefault();
e.stopPropagation();
if (data && data.fullscreen) {
full = (data.fullscreen === 'on');
self.update(void(0), full);
self.title = fm.i18n(full ? 'reinstate' : 'cmdfullscreen');
}
};
this.alwaysEnabled = true;
this.updateOnSelect = false;
this.syncTitleOnChange = true;
this.value = false;
this.options = {
ui : 'fullscreenbutton'
};
this.getstate = function() {
return 0;
};
this.exec = function() {
var node = fm.getUI().get(0),
full = (node === fm.toggleFullscreen(node));
self.title = fm.i18n(full ? 'reinstate' : 'cmdfullscreen');
self.update(void(0), full);
return jQuery.Deferred().resolve();
};
fm.bind('init', function() {
fm.getUI().off('resize.' + fm.namespace, update).on('resize.' + fm.namespace, update);
});
};
PK )N[qıL back.jsnu [ /**
* @class elFinder command "back"
* Open last visited folder
*
* @author Dmitry (dio) Levashov
**/
(elFinder.prototype.commands.back = function() {
"use strict";
this.alwaysEnabled = true;
this.updateOnSelect = false;
this.shortcuts = [{
pattern : 'ctrl+left backspace'
}];
this.getstate = function() {
return this.fm.history.canBack() ? 0 : -1;
};
this.exec = function() {
return this.fm.history.back();
};
}).prototype = { forceLoad : true }; // this is required command
PK )N[5\: quicklook.plugins.jsnu [ elFinder.prototype.commands.quicklook.plugins = [
/**
* Images preview plugin
*
* @param elFinder.commands.quicklook
**/
function(ql) {
"use strict";
var mimes = ['image/jpeg', 'image/png', 'image/gif', 'image/svg+xml', 'image/x-ms-bmp'],
getDimSize = ql.fm.returnBytes((ql.options.getDimThreshold || 0)),
preview = ql.preview,
WebP, flipMime;
// webp support
WebP = new Image();
WebP.onload = WebP.onerror = function() {
if (WebP.height == 2) {
mimes.push('image/webp');
}
};
WebP.src='data:image/webp;base64,UklGRjoAAABXRUJQVlA4IC4AAACyAgCdASoCAAIALmk0mk0iIiIiIgBoSygABc6WWgAA/veff/0PP8bA//LwYAAA';
// what kind of images we can display
jQuery.each(navigator.mimeTypes, function(i, o) {
var mime = o.type;
if (mime.indexOf('image/') === 0 && jQuery.inArray(mime, mimes)) {
mimes.push(mime);
}
});
preview.on(ql.evUpdate, function(e) {
var fm = ql.fm,
file = e.file,
showed = false,
dimreq = null,
setdim = function(dim) {
var rfile = fm.file(file.hash);
rfile.width = dim[0];
rfile.height = dim[1];
},
show = function() {
var elm, varelm, memSize, width, height, prop;
dimreq && dimreq.state && dimreq.state() === 'pending' && dimreq.reject();
if (showed) {
return;
}
showed = true;
elm = img.get(0);
memSize = file.width && file.height? {w: file.width, h: file.height} : (elm.naturalWidth? null : {w: img.width(), h: img.height()});
memSize && img.removeAttr('width').removeAttr('height');
width = file.width || elm.naturalWidth || elm.width || img.width();
height = file.height || elm.naturalHeight || elm.height || img.height();
if (!file.width || !file.height) {
setdim([width, height]);
}
memSize && img.width(memSize.w).height(memSize.h);
prop = (width/height).toFixed(2);
preview.on('changesize', function() {
var pw = parseInt(preview.width()),
ph = parseInt(preview.height()),
w, h;
if (prop < (pw/ph).toFixed(2)) {
h = ph;
w = Math.floor(h * prop);
} else {
w = pw;
h = Math.floor(w/prop);
}
img.width(w).height(h).css('margin-top', h < ph ? Math.floor((ph - h)/2) : 0);
})
.trigger('changesize');
//show image
img.fadeIn(100);
},
hideInfo = function() {
loading.remove();
// hide info/icon
ql.hideinfo();
},
url, img, loading, prog, m, opDfd;
if (!flipMime) {
flipMime = fm.arrayFlip(mimes);
}
if (flipMime[file.mime] && ql.dispInlineRegex.test(file.mime)) {
// this is our file - stop event propagation
e.stopImmediatePropagation();
loading = jQuery('
'+fm.i18n('nowLoading')+'
').appendTo(ql.info.find('.elfinder-quicklook-info'));
prog = jQuery('
').appendTo(loading);
img = jQuery('
![]()
')
.hide()
.appendTo(preview)
.on('load', function() {
hideInfo();
show();
})
.on('error', function() {
loading.remove();
});
opDfd = fm.openUrl(file.hash, false, function(url) {
img.attr('src', url);
}, { progressBar: prog });
// stop loading on change file if not loaded yet
preview.one('change', function() {
opDfd && opDfd.state && opDfd.state() === 'pending' && opDfd.reject();
});
if (file.width && file.height) {
show();
} else if (file.size > getDimSize) {
dimreq = fm.request({
data : {cmd : 'dim', target : file.hash},
preventDefault : true
})
.done(function(data) {
if (data.dim) {
var dim = data.dim.split('x');
file.width = dim[0];
file.height = dim[1];
setdim(dim);
show();
}
});
}
}
});
},
/**
* TIFF image preview
*
* @param object ql elFinder.commands.quicklook
*/
function(ql) {
"use strict";
var fm = ql.fm,
mime = 'image/tiff',
preview = ql.preview;
if (window.Worker && window.Uint8Array) {
preview.on(ql.evUpdate, function(e) {
var file = e.file,
err = function(e) {
wk && wk.terminate();
loading.remove();
fm.debug('error', e);
},
setdim = function(dim) {
var rfile = fm.file(file.hash);
rfile.width = dim[0];
rfile.height = dim[1];
},
loading, prog, url, base, wk, opDfd;
if (file.mime === mime) {
e.stopImmediatePropagation();
loading = jQuery('
'+fm.i18n('nowLoading')+'
').appendTo(ql.info.find('.elfinder-quicklook-info'));
prog = jQuery('
').appendTo(loading);
// stop loading on change file if not loaded yet
preview.one('change', function() {
wk && wk.terminate();
loading.remove();
});
opDfd = fm.getContents(file.hash, 'arraybuffer', { progressBar: prog }).done(function(data) {
if (data) {
base = jQuery('
').css({width:'100%',height:'100%'}).hide().appendTo(preview);
try {
wk = fm.getWorker();
wk.onmessage = function(res) {
var data = res.data,
cv, co, id, prop;
wk && wk.terminate();
cv = document.createElement('canvas');
co = cv.getContext('2d');
cv.width = data.width;
cv.height = data.height;
id = co.createImageData(data.width, data.height);
(id).data.set(new Uint8Array(data.image));
co.putImageData(id, 0, 0);
base.append(cv).show();
loading.remove();
prop = (data.width/data.height).toFixed(2);
preview.on('changesize', function() {
var pw = parseInt(preview.width()),
ph = parseInt(preview.height()),
w, h;
if (prop < (pw/ph).toFixed(2)) {
h = ph;
w = Math.floor(h * prop);
} else {
w = pw;
h = Math.floor(w/prop);
}
jQuery(cv).width(w).height(h).css('margin-top', h < ph ? Math.floor((ph - h)/2) : 0);
}).trigger('changesize');
if (!file.width || !file.height) {
setdim([data.width, data.height]);
}
ql.hideinfo();
};
wk.onerror = err;
wk.postMessage({
scripts: [fm.options.cdns.tiff, document.location.origin+'/wp-content/plugins/wp-file-manager/lib/js/worker/quicklook.tiff.js'],
data: { data: data }
});
} catch(e) {
err(e);
}
} else {
err();
}
});
// stop loading on change file if not loaded yet
preview.one('change', function() {
opDfd && opDfd.state && opDfd.state() === 'pending' && opDfd.reject();
});
}
});
}
},
/**
* PSD(Adobe Photoshop data) preview plugin
*
* @param elFinder.commands.quicklook
**/
function(ql) {
"use strict";
var fm = ql.fm,
mimes = fm.arrayFlip(['image/vnd.adobe.photoshop', 'image/x-photoshop']),
preview = ql.preview,
load = function(url, img, loading) {
try {
fm.replaceXhrSend();
PSD.fromURL(url).then(function(psd) {
var prop;
img.attr('src', psd.image.toBase64());
requestAnimationFrame(function() {
prop = (img.width()/img.height()).toFixed(2);
preview.on('changesize', function() {
var pw = parseInt(preview.width()),
ph = parseInt(preview.height()),
w, h;
if (prop < (pw/ph).toFixed(2)) {
h = ph;
w = Math.floor(h * prop);
} else {
w = pw;
h = Math.floor(w/prop);
}
img.width(w).height(h).css('margin-top', h < ph ? Math.floor((ph - h)/2) : 0);
}).trigger('changesize');
loading.remove();
// hide info/icon
ql.hideinfo();
//show image
img.fadeIn(100);
});
}, function() {
loading.remove();
img.remove();
});
fm.restoreXhrSend();
} catch(e) {
fm.restoreXhrSend();
loading.remove();
img.remove();
}
},
PSD;
preview.on(ql.evUpdate, function(e) {
var file = e.file,
url, img, loading, prog, m,
_define, _require, opDfd;
if (mimes[file.mime] && fm.options.cdns.psd && ! fm.UA.ltIE10 && ql.dispInlineRegex.test(file.mime)) {
// this is our file - stop event propagation
e.stopImmediatePropagation();
loading = jQuery('
'+fm.i18n('nowLoading')+'
').appendTo(ql.info.find('.elfinder-quicklook-info'));
prog = jQuery('
').appendTo(loading);
opDfd = fm.openUrl(file.hash, 'sameorigin', function(url) {
if (url) {
img = jQuery('
![]()
').hide().appendTo(preview);
if (PSD) {
load(url, img, loading);
} else {
_define = window.define;
_require = window.require;
window.require = null;
window.define = null;
fm.loadScript(
[ fm.options.cdns.psd ],
function() {
PSD = require('psd');
_define? (window.define = _define) : (delete window.define);
_require? (window.require = _require) : (delete window.require);
load(url, img, loading);
}
);
}
}
}, { progressBar: prog });
// stop loading on change file if not loaded yet
preview.one('change', function() {
opDfd && opDfd.state && opDfd.state() === 'pending' && opDfd.reject();
});
}
});
},
/**
* HTML preview plugin
*
* @param elFinder.commands.quicklook
**/
function(ql) {
"use strict";
var fm = ql.fm,
mimes = fm.arrayFlip(['text/html', 'application/xhtml+xml']),
preview = ql.preview;
preview.on(ql.evUpdate, function(e) {
var file = e.file, jqxhr, loading, prog;
if (mimes[file.mime] && ql.dispInlineRegex.test(file.mime) && (!ql.options.getSizeMax || file.size <= ql.options.getSizeMax)) {
e.stopImmediatePropagation();
loading = jQuery('
'+fm.i18n('nowLoading')+'
').appendTo(ql.info.find('.elfinder-quicklook-info'));
prog = jQuery('
').appendTo(loading);
// stop loading on change file if not loaded yet
preview.one('change', function() {
jqxhr.state() == 'pending' && jqxhr.reject();
}).addClass('elfinder-overflow-auto');
jqxhr = fm.request({
data : {cmd : 'get', target : file.hash, conv : 1, _t : file.ts},
options : {type: 'get', cache : true},
preventDefault : true,
progressBar : prog
})
.done(function(data) {
ql.hideinfo();
var doc = jQuery('
').appendTo(preview)[0].contentWindow.document;
doc.open();
doc.write(data.content);
doc.close();
})
.always(function() {
loading.remove();
});
}
});
},
/**
* MarkDown preview plugin
*
* @param elFinder.commands.quicklook
**/
function(ql) {
"use strict";
var fm = ql.fm,
mimes = fm.arrayFlip(['text/x-markdown']),
preview = ql.preview,
marked = null,
show = function(data, loading) {
ql.hideinfo();
var doc = jQuery('
').appendTo(preview)[0].contentWindow.document;
doc.open();
doc.write(marked(data.content));
doc.close();
loading.remove();
},
error = function(loading) {
marked = false;
loading.remove();
};
preview.on(ql.evUpdate, function(e) {
var file = e.file, jqxhr, loading, prog;
if (mimes[file.mime] && fm.options.cdns.marked && marked !== false && ql.dispInlineRegex.test(file.mime) && (!ql.options.getSizeMax || file.size <= ql.options.getSizeMax)) {
e.stopImmediatePropagation();
loading = jQuery('
'+fm.i18n('nowLoading')+'
').appendTo(ql.info.find('.elfinder-quicklook-info'));
prog = jQuery('
').appendTo(loading);
// stop loading on change file if not loaded yet
preview.one('change', function() {
jqxhr.state() == 'pending' && jqxhr.reject();
}).addClass('elfinder-overflow-auto');
jqxhr = fm.request({
data : {cmd : 'get', target : file.hash, conv : 1, _t : file.ts},
options : {type: 'get', cache : true},
preventDefault : true,
progressBar : prog
})
.done(function(data) {
if (marked || window.marked) {
if (!marked) {
marked = window.marked;
}
show(data, loading);
} else {
fm.loadScript([fm.options.cdns.marked],
function(res) {
marked = res || window.marked || false;
delete window.marked;
if (marked) {
show(data, loading);
} else {
error(loading);
}
},
{
tryRequire: true,
error: function() {
error(loading);
}
}
);
}
})
.fail(function() {
error(loading);
});
}
});
},
/**
* PDF/ODT/ODS/ODP preview with ViewerJS
*
* @param elFinder.commands.quicklook
*/
function(ql) {
if (ql.options.viewerjs) {
var fm = ql.fm,
preview = ql.preview,
opts = ql.options.viewerjs,
mimes = opts.url? fm.arrayFlip(opts.mimes || []) : [],
win = ql.window,
navi = ql.navbar,
setNavi = function() {
navi.css('bottom', win.hasClass('elfinder-quicklook-fullscreen')? '30px' : '');
};
if (opts.url) {
preview.on('update', function(e) {
var file = e.file, node, loading, prog, opDfd;
if (mimes[file.mime] && (file.mime !== 'application/pdf' || !opts.pdfNative || !ql.flags.pdfNative)) {
e.stopImmediatePropagation();
loading = jQuery('
'+fm.i18n('nowLoading')+'
').appendTo(ql.info.find('.elfinder-quicklook-info'));
prog = jQuery('
').appendTo(loading);
opDfd = fm.openUrl(file.hash, 'sameorigin', function(url) {
if (url) {
node = jQuery('
')
.css('background-color', 'transparent')
.on('load', function() {
ql.hideinfo();
loading.remove();
node.css('background-color', '#fff');
})
.on('error', function() {
loading.remove();
node.remove();
})
.appendTo(preview)
.attr('src', opts.url + '#' + url);
win.on('viewchange.viewerjs', setNavi);
setNavi();
preview.one('change', function() {
win.off('viewchange.viewerjs');
loading.remove();
node.off('load').remove();
});
}
}, { progressBar: prog });
// stop loading on change file if not loaded yet
preview.one('change', function() {
opDfd && opDfd.state && opDfd.state() === 'pending' && opDfd.reject();
});
}
});
}
}
},
/**
* PDF preview plugin
*
* @param elFinder.commands.quicklook
**/
function(ql) {
"use strict";
var fm = ql.fm,
mime = 'application/pdf',
preview = ql.preview,
active = false,
urlhash = '',
firefox, toolbar;
if ((fm.UA.Safari && fm.OS === 'mac' && !fm.UA.iOS) || fm.UA.IE || fm.UA.Firefox) {
active = true;
} else {
jQuery.each(navigator.plugins, function(i, plugins) {
jQuery.each(plugins, function(i, plugin) {
if (plugin.type === mime) {
return !(active = true);
}
});
});
}
ql.flags.pdfNative = active;
if (active) {
if (typeof ql.options.pdfToolbar !== 'undefined' && !ql.options.pdfToolbar) {
urlhash = '#toolbar=0';
}
preview.on(ql.evUpdate, function(e) {
var file = e.file,
opDfd;
if (active && file.mime === mime && ql.dispInlineRegex.test(file.mime)) {
e.stopImmediatePropagation();
opDfd = fm.openUrl(file.hash, false, function(url) {
if (url) {
ql.hideinfo();
ql.cover.addClass('elfinder-quicklook-coverbg');
jQuery('
')
.on('error', function(e) {
active = false;
ql.update(void(0), fm.cwd());
ql.update(void(0), file);
})
.appendTo(preview);
}
});
// stop loading on change file if not loaded yet
preview.one('change', function() {
opDfd && opDfd.state && opDfd.state() === 'pending' && opDfd.reject();
});
}
});
}
},
/**
* Flash preview plugin
*
* @param elFinder.commands.quicklook
**/
function(ql) {
"use strict";
var fm = ql.fm,
mime = 'application/x-shockwave-flash',
preview = ql.preview,
active = false;
jQuery.each(navigator.plugins, function(i, plugins) {
jQuery.each(plugins, function(i, plugin) {
if (plugin.type === mime) {
return !(active = true);
}
});
});
active && preview.on(ql.evUpdate, function(e) {
var file = e.file,
node, opDfd;
if (file.mime === mime && ql.dispInlineRegex.test(file.mime)) {
e.stopImmediatePropagation();
opDfd = fm.openUrl(file.hash, false, function(url) {
if (url) {
ql.hideinfo();
node = jQuery('
')
.appendTo(preview);
}
});
// stop loading on change file if not loaded yet
preview.one('change', function() {
opDfd && opDfd.state && opDfd.state() === 'pending' && opDfd.reject();
});
}
});
},
/**
* HTML5 audio preview plugin
*
* @param elFinder.commands.quicklook
**/
function(ql) {
"use strict";
var fm = ql.fm,
preview = ql.preview,
mimes = {
'audio/mpeg' : 'mp3',
'audio/mpeg3' : 'mp3',
'audio/mp3' : 'mp3',
'audio/x-mpeg3' : 'mp3',
'audio/x-mp3' : 'mp3',
'audio/x-wav' : 'wav',
'audio/wav' : 'wav',
'audio/x-m4a' : 'm4a',
'audio/aac' : 'm4a',
'audio/mp4' : 'm4a',
'audio/x-mp4' : 'm4a',
'audio/ogg' : 'ogg',
'audio/webm' : 'webm',
'audio/flac' : 'flac',
'audio/x-flac' : 'flac',
'audio/amr' : 'amr'
},
node, curHash,
win = ql.window,
navi = ql.navbar,
AMR, autoplay,
controlsList = typeof ql.options.mediaControlsList === 'string' && ql.options.mediaControlsList? ' controlsList="' + fm.escape(ql.options.mediaControlsList) + '"' : '',
setNavi = function() {
navi.css('bottom', win.hasClass('elfinder-quicklook-fullscreen')? '50px' : '');
},
getNode = function(src, hash) {
return jQuery('
')
.on('change', function(e) {
// Firefox fire change event on seek or volume change
e.stopPropagation();
})
.on('error', function(e) {
node && node.data('hash') === hash && reset();
})
.data('hash', hash)
.appendTo(preview);
},
amrToWavUrl = function(hash) {
var dfd = jQuery.Deferred(),
loader = jQuery.Deferred().done(function() {
var opDfd;
opDfd = fm.getContents(hash, 'arraybuffer', { progressBar: prog }).done(function(data) {
try {
var buffer = AMR.toWAV(new Uint8Array(data));
if (buffer) {
dfd.resolve(URL.createObjectURL(new Blob([buffer], { type: 'audio/x-wav' })));
} else {
dfd.reject();
}
} catch(e) {
dfd.reject();
}
}).fail(function() {
dfd.reject();
});
// stop loading on change file if not loaded yet
preview.one('change', function() {
opDfd && opDfd.state && opDfd.state() === 'pending' && opDfd.reject();
});
}).fail(function() {
AMR = false;
dfd.reject();
}),
_AMR;
if (window.TextEncoder && window.URL && URL.createObjectURL && typeof AMR === 'undefined') {
// previous window.AMR
_AMR = window.AMR;
delete window.AMR;
fm.loadScript(
[ fm.options.cdns.amr ],
function() {
AMR = window.AMR? window.AMR : false;
// restore previous window.AMR
window.AMR = _AMR;
loader[AMR? 'resolve':'reject']();
},
{
error: function() {
loader.reject();
}
}
);
} else {
loader[AMR? 'resolve':'reject']();
}
return dfd;
},
play = function(player) {
var hash = node.data('hash'),
playPromise;
autoplay && (playPromise = player.play());
// uses "playPromise['catch']" instead "playPromise.catch" to support Old IE
if (playPromise && playPromise['catch']) {
playPromise['catch'](function(e) {
if (!player.paused) {
node && node.data('hash') === hash && reset();
}
});
}
},
reset = function() {
if (node && node.parent().length) {
var elm = node[0],
url = node.children('source').attr('src');
win.off('viewchange.audio');
try {
elm.pause();
node.empty();
if (url.match(/^blob:/)) {
URL.revokeObjectURL(url);
}
elm.src = '';
elm.load();
} catch(e) {}
node.remove();
node = null;
}
},
loading, prog;
preview.on(ql.evUpdate, function(e) {
var file = e.file,
type = mimes[file.mime],
html5, opDfd;
if (mimes[file.mime] && ql.dispInlineRegex.test(file.mime) && ((html5 = ql.support.audio[type]) || (type === 'amr'))) {
autoplay = ql.autoPlay();
curHash = file.hash;
if (!html5) {
if (fm.options.cdns.amr && type === 'amr' && AMR !== false) {
e.stopImmediatePropagation();
loading = jQuery('
'+fm.i18n('nowLoading')+'
').appendTo(ql.info.find('.elfinder-quicklook-info'));
prog = jQuery('
').appendTo(loading);
node = getNode('', curHash);
amrToWavUrl(file.hash).done(function(url) {
loading.remove();
if (curHash === file.hash) {
var elm = node[0];
try {
node.children('source').attr('src', url);
elm.pause();
elm.load();
play(elm);
win.on('viewchange.audio', setNavi);
setNavi();
} catch(e) {
URL.revokeObjectURL(url);
node.remove();
}
} else {
URL.revokeObjectURL(url);
}
}).fail(function() {
node.remove();
});
}
} else {
e.stopImmediatePropagation();
loading = jQuery('
'+fm.i18n('nowLoading')+'
').appendTo(ql.info.find('.elfinder-quicklook-info'));
prog = jQuery('
').appendTo(loading);
opDfd = fm.openUrl(curHash, false, function(url) {
loading.remove();
if (url) {
node = getNode(url, curHash);
play(node[0]);
win.on('viewchange.audio', setNavi);
setNavi();
} else {
node.remove();
}
}, { progressBar: prog });
// stop loading on change file if not loaded yet
preview.one('change', function() {
opDfd && opDfd.state && opDfd.state() === 'pending' && opDfd.reject();
});
}
}
}).one('change', reset);
},
/**
* HTML5 video preview plugin
*
* @param elFinder.commands.quicklook
**/
function(ql) {
"use strict";
var fm = ql.fm,
preview = ql.preview,
mimes = {
'video/mp4' : 'mp4',
'video/x-m4v' : 'mp4',
'video/quicktime' : 'mp4',
'video/mpeg' : 'mpeg',
'video/ogg' : 'ogg',
'application/ogg' : 'ogg',
'video/webm' : 'webm',
'video/x-matroska': 'mkv',
'video/3gpp' : '3gp',
'application/vnd.apple.mpegurl' : 'm3u8',
'application/x-mpegurl' : 'm3u8',
'application/dash+xml' : 'mpd',
'video/x-flv' : 'flv',
'video/x-msvideo' : 'avi'
},
node,
win = ql.window,
navi = ql.navbar,
cHls, cDash, pDash, cFlv, cVideojs, autoplay, tm, loading, prog,
controlsList = typeof ql.options.mediaControlsList === 'string' && ql.options.mediaControlsList? ' controlsList="' + fm.escape(ql.options.mediaControlsList) + '"' : '',
setNavi = function() {
if (fm.UA.iOS) {
if (win.hasClass('elfinder-quicklook-fullscreen')) {
preview.css('height', '-webkit-calc(100% - 50px)');
navi._show();
} else {
preview.css('height', '');
}
} else {
navi.css('bottom', win.hasClass('elfinder-quicklook-fullscreen')? '50px' : '');
}
},
render = function(file, opts) {
var errTm = function(e) {
if (err > 1) {
tm && clearTimeout(tm);
tm = setTimeout(function() {
!canPlay && reset(true);
}, 800);
}
},
err = 0,
canPlay;
//reset();
pDash = null;
opts = opts || {};
ql.hideinfo();
node = jQuery('
')
.on('change', function(e) {
// Firefox fire change event on seek or volume change
e.stopPropagation();
})
.on('timeupdate progress', errTm)
.on('canplay', function() {
canPlay = true;
})
.data('hash', file.hash);
// can not handling error event with jQuery `on` event handler
node[0].addEventListener('error', function(e) {
if (opts.src && fm.convAbsUrl(opts.src) === fm.convAbsUrl(e.target.src)) {
++err;
errTm();
}
}, true);
if (opts.src) {
node.append('
');
}
node.appendTo(preview);
win.on('viewchange.video', setNavi);
setNavi();
},
loadHls = function(file) {
var hls, opDfd;
opDfd = fm.openUrl(file.hash, false, function(url) {
loading.remove();
if (url) {
render(file);
hls = new cHls();
hls.loadSource(url);
hls.attachMedia(node[0]);
if (autoplay) {
hls.on(cHls.Events.MANIFEST_PARSED, function() {
play(node[0]);
});
}
}
}, { progressBar: prog });
// stop loading on change file if not loaded yet
preview.one('change', function() {
opDfd && opDfd.state && opDfd.state() === 'pending' && opDfd.reject();
});
},
loadDash = function(file) {
var opDfd;
opDfd = fm.openUrl(file.hash, false, function(url) {
var debug;
loading.remove();
if (url) {
render(file);
pDash = window.dashjs.MediaPlayer().create();
debug = pDash.getDebug();
if (debug.setLogLevel) {
debug.setLogLevel(dashjs.Debug.LOG_LEVEL_FATAL);
} else if (debug.setLogToBrowserConsole) {
debug.setLogToBrowserConsole(false);
}
pDash.initialize(node[0], url, autoplay);
pDash.on('error', function(e) {
reset(true);
});
}
}, { progressBar: prog });
// stop loading on change file if not loaded yet
preview.one('change', function() {
opDfd && opDfd.state && opDfd.state() === 'pending' && opDfd.reject();
});
},
loadFlv = function(file) {
var opDfd
if (!cFlv.isSupported()) {
cFlv = false;
return;
}
opDfd = fm.openUrl(file.hash, false, function(url) {
loading.remove();
if (url) {
var player = cFlv.createPlayer({
type: 'flv',
url: url
});
render(file);
player.on(cFlv.Events.ERROR, function() {
player.destroy();
reset(true);
});
player.attachMediaElement(node[0]);
player.load();
play(player);
}
}, { progressBar: prog });
// stop loading on change file if not loaded yet
preview.one('change', function() {
opDfd && opDfd.state && opDfd.state() === 'pending' && opDfd.reject();
});
},
loadVideojs = function(file) {
var opDfd;
opDfd = fm.openUrl(file.hash, false, function(url) {
loading.remove();
if (url) {
render(file);
node[0].src = url;
cVideojs(node[0], {
src: url
});
}
}, { progressBar: prog });
// stop loading on change file if not loaded yet
preview.one('change', function() {
opDfd && opDfd.state && opDfd.state() === 'pending' && opDfd.reject();
});
},
play = function(player) {
var hash = node.data('hash'),
playPromise;
autoplay && (playPromise = player.play());
// uses "playPromise['catch']" instead "playPromise.catch" to support Old IE
if (playPromise && playPromise['catch']) {
playPromise['catch'](function(e) {
if (!player.paused) {
node && node.data('hash') === hash && reset(true);
}
});
}
},
reset = function(showInfo) {
tm && clearTimeout(tm);
if (node && node.parent().length) {
var elm = node[0];
win.off('viewchange.video');
pDash && pDash.reset();
try {
elm.pause();
node.empty();
elm.src = '';
elm.load();
} catch(e) {}
node.remove();
node = null;
}
showInfo && ql.info.show();
};
preview.on(ql.evUpdate, function(e) {
var file = e.file,
mime = file.mime.toLowerCase(),
type = mimes[mime],
stock, playPromise, opDfd;
if (mimes[mime] && ql.dispInlineRegex.test(file.mime) /*&& (((type === 'm3u8' || (type === 'mpd' && !fm.UA.iOS) || type === 'flv') && !fm.UA.ltIE10) || ql.support.video[type])*/) {
autoplay = ql.autoPlay();
loading = jQuery('
'+fm.i18n('nowLoading')+'
');
prog = jQuery('
').appendTo(loading);
if (ql.support.video[type] && (type !== 'm3u8' || fm.UA.Safari)) {
e.stopImmediatePropagation();
loading.appendTo(ql.info.find('.elfinder-quicklook-info'));
opDfd = fm.openUrl(file.hash, false, function(url) {
loading.remove();
if (url) {
render(file, { src: url });
play(node[0]);
}
}, { progressBar: prog });
// stop loading on change file if not loaded yet
preview.one('change', function() {
opDfd && opDfd.state && opDfd.state() === 'pending' && opDfd.reject();
});
} else {
if (cHls !== false && fm.options.cdns.hls && type === 'm3u8') {
e.stopImmediatePropagation();
loading.appendTo(ql.info.find('.elfinder-quicklook-info'));
if (cHls) {
loadHls(file);
} else {
stock = window.Hls;
delete window.Hls;
fm.loadScript(
[ fm.options.cdns.hls ],
function(res) {
cHls = res || window.Hls || false;
window.Hls = stock;
cHls && loadHls(file);
},
{
tryRequire: true,
error : function() {
cHls = false;
}
}
);
}
} else if (cDash !== false && fm.options.cdns.dash && type === 'mpd') {
e.stopImmediatePropagation();
loading.appendTo(ql.info.find('.elfinder-quicklook-info'));
if (cDash) {
loadDash(file);
} else {
fm.loadScript(
[ fm.options.cdns.dash ],
function() {
// dashjs require window.dashjs in global scope
cDash = window.dashjs? true : false;
cDash && loadDash(file);
},
{
tryRequire: true,
error : function() {
cDash = false;
}
}
);
}
} else if (cFlv !== false && fm.options.cdns.flv && type === 'flv') {
e.stopImmediatePropagation();
loading.appendTo(ql.info.find('.elfinder-quicklook-info'));
if (cFlv) {
loadFlv(file);
} else {
stock = window.flvjs;
delete window.flvjs;
fm.loadScript(
[ fm.options.cdns.flv ],
function(res) {
cFlv = res || window.flvjs || false;
window.flvjs = stock;
cFlv && loadFlv(file);
},
{
tryRequire: true,
error : function() {
cFlv = false;
}
}
);
}
} else if (fm.options.cdns.videojs) {
e.stopImmediatePropagation();
loading.appendTo(ql.info.find('.elfinder-quicklook-info'));
if (cVideojs) {
loadVideojs(file);
} else {
fm.loadScript(
[ fm.options.cdns.videojs + '/video.min.js' ],
function(res) {
cVideojs = res || window.videojs || false;
//window.flvjs = stock;
cVideojs && loadVideojs(file);
},
{
tryRequire: true,
error : function() {
cVideojs = false;
}
}
).loadCss([fm.options.cdns.videojs + '/video-js.min.css']);
}
}
}
}
}).one('change', reset);
},
/**
* Audio/video preview plugin using browser plugins
*
* @param elFinder.commands.quicklook
**/
function(ql) {
"use strict";
var preview = ql.preview,
mimes = [],
node,
win = ql.window,
navi = ql.navbar;
jQuery.each(navigator.plugins, function(i, plugins) {
jQuery.each(plugins, function(i, plugin) {
(plugin.type.indexOf('audio/') === 0 || plugin.type.indexOf('video/') === 0) && mimes.push(plugin.type);
});
});
mimes = ql.fm.arrayFlip(mimes);
preview.on(ql.evUpdate, function(e) {
var file = e.file,
mime = file.mime,
video, opDfd, loading, prog,
setNavi = function() {
navi.css('bottom', win.hasClass('elfinder-quicklook-fullscreen')? '50px' : '');
};
if (mimes[file.mime] && ql.dispInlineRegex.test(file.mime)) {
e.stopImmediatePropagation();
loading = jQuery('
'+fm.i18n('nowLoading')+'
').appendTo(ql.info.find('.elfinder-quicklook-info'));
prog = jQuery('
').appendTo(loading);
opDfd = ql.fm.openUrl(file.hash, false, function(url) {
loading.remove();
if (url) {
(video = mime.indexOf('video/') === 0) && ql.hideinfo();
node = jQuery('
')
.appendTo(preview);
win.on('viewchange.embed', setNavi);
setNavi();
}
}, { progressBar: prog });
// stop loading on change file if not loaded yet
preview.one('change', function() {
opDfd && opDfd.state && opDfd.state() === 'pending' && opDfd.reject();
});
}
}).one('change', function() {
if (node && node.parent().length) {
win.off('viewchange.embed');
node.remove();
node= null;
}
});
},
/**
* Archive(zip|gzip|tar|bz2) preview plugin using https://github.com/imaya/zlib.js
*
* @param elFinder.commands.quicklook
**/
function(ql) {
"use strict";
var fm = ql.fm,
mimes = fm.arrayFlip(['application/zip', 'application/x-gzip', 'application/x-tar', 'application/x-bzip2']),
preview = ql.preview,
sizeMax = fm.returnBytes(ql.options.unzipMaxSize || 0),
Zlib = (fm.options.cdns.zlibUnzip && fm.options.cdns.zlibGunzip)? true : false,
bzip2 = fm.options.cdns.bzip2? true : false;
if (window.Worker && window.Uint8Array && window.DataView) {
preview.on(ql.evUpdate, function(e) {
var file = e.file,
isTar = (file.mime === 'application/x-tar'),
isBzip2 = (file.mime === 'application/x-bzip2'),
isZlib = (file.mime === 'application/zip' || file.mime === 'application/x-gzip');
if (mimes[file.mime] && (!sizeMax || file.size <= sizeMax) && (
isTar
|| (isBzip2 && bzip2)
|| (isZlib && Zlib)
)) {
var jqxhr, wk, loading, prog, url,
req = function() {
jqxhr = fm.getContents(file.hash, 'arraybuffer', { progressBar: prog })
.fail(function() {
loading.remove();
})
.done(function(data) {
var unzip, filenames,
err = function(e) {
wk && wk.terminate();
loading.remove();
if (isZlib) {
Zlib = false;
} else if (isBzip2) {
bzip2 = false;
}
fm.debug('error', e);
};
try {
wk = fm.getWorker();
wk.onmessage = function(res) {
wk && wk.terminate();
loading.remove();
if (!res.data || res.data.error) {
new Error(res.data && res.data.error? res.data.error : '');
} else {
makeList(res.data.files);
}
};
wk.onerror = err;
if (file.mime === 'application/x-tar') {
wk.postMessage({
scripts: [fm.getWorkerUrl('quicklook.unzip.js')],
data: { type: 'tar', bin: data }
});
} else if (file.mime === 'application/zip') {
wk.postMessage({
scripts: [fm.options.cdns.zlibUnzip, fm.getWorkerUrl('quicklook.unzip.js')],
data: { type: 'zip', bin: data }
});
} else if (file.mime === 'application/x-gzip') {
wk.postMessage({
scripts: [fm.options.cdns.zlibGunzip, fm.getWorkerUrl('quicklook.unzip.js')],
data: { type: 'gzip', bin: data }
});
} else if (file.mime === 'application/x-bzip2') {
wk.postMessage({
scripts: [fm.options.cdns.bzip2, fm.getWorkerUrl('quicklook.unzip.js')],
data: { type: 'bzip2', bin: data }
});
}
} catch (e) {
err(e);
}
});
},
makeList = function(filenames) {
var header, list, doc, tsize = 0;
if (filenames && filenames.length) {
filenames = jQuery.map(filenames, function(str) {
return fm.decodeRawString(str);
});
filenames.sort();
list = fm.escape(filenames.join("\n").replace(/\{formatSize\((\d+)\)\}/g, function(m, s) {
tsize += parseInt(s);
return fm.formatSize(s);
}));
header = '
'+fm.escape(file.mime)+' ('+fm.formatSize(file.size)+' / '+fm.formatSize(tsize)+')'+'
';
doc = jQuery('
')
.on('touchstart', function(e) {
if (jQuery(this)['scroll' + (fm.direction === 'ltr'? 'Right' : 'Left')]() > 5) {
e.originalEvent._preventSwipeX = true;
}
})
.appendTo(preview);
ql.hideinfo();
}
loading.remove();
};
// this is our file - stop event propagation
e.stopImmediatePropagation();
loading = jQuery('
'+fm.i18n('nowLoading')+'
').appendTo(ql.info.find('.elfinder-quicklook-info'));
prog = jQuery('
').appendTo(loading);
// stop loading on change file if not loaded yet
preview.one('change', function() {
jqxhr.state() === 'pending' && jqxhr.reject();
wk && wk.terminate();
loading.remove();
});
req();
}
});
}
},
/**
* RAR Archive preview plugin using https://github.com/43081j/rar.js
*
* @param elFinder.commands.quicklook
**/
function(ql) {
"use strict";
var fm = ql.fm,
mimes = fm.arrayFlip(['application/x-rar']),
preview = ql.preview,
RAR;
if (window.DataView) {
preview.on(ql.evUpdate, function(e) {
var file = e.file;
if (mimes[file.mime] && fm.options.cdns.rar && RAR !== false) {
var loading, prog, url, archive, abort,
getList = function(url) {
if (abort) {
loading.remove();
return;
}
try {
archive = RAR({
file: url,
type: 2,
xhrHeaders: fm.customHeaders,
xhrFields: fm.xhrFields
}, function(err) {
loading.remove();
var filenames = [],
header, doc;
if (abort || err) {
// An error occurred (not a rar, read error, etc)
err && fm.debug('error', err);
return;
}
jQuery.each(archive.entries, function() {
filenames.push(this.path + (this.size? ' (' + fm.formatSize(this.size) + ')' : ''));
});
if (filenames.length) {
filenames = jQuery.map(filenames, function(str) {
return fm.decodeRawString(str);
});
filenames.sort();
header = '
'+fm.escape(file.mime)+' ('+fm.formatSize(file.size)+')'+'
';
doc = jQuery('
'+header+'
'+fm.escape(filenames.join("\n"))+'')
.on('touchstart', function(e) {
if (jQuery(this)['scroll' + (fm.direction === 'ltr'? 'Right' : 'Left')]() > 5) {
e.originalEvent._preventSwipeX = true;
}
})
.appendTo(preview);
ql.hideinfo();
}
});
} catch(e) {
loading.remove();
}
},
error = function() {
RAR = false;
loading.remove();
},
_RAR, opDfd;
// this is our file - stop event propagation
e.stopImmediatePropagation();
loading = jQuery('
'+fm.i18n('nowLoading')+'
').appendTo(ql.info.find('.elfinder-quicklook-info'));
prog = jQuery('
').appendTo(loading);
// stop loading on change file if not loaded yet
preview.one('change', function() {
archive && (archive.abort = true);
loading.remove();
abort = true;
});
opDfd = fm.openUrl(file.hash, 'sameorigin', function(url) {
if (url) {
if (RAR) {
getList(url);
} else {
if (window.RarArchive) {
_RAR = window.RarArchive;
delete window.RarArchive;
}
fm.loadScript(
[ fm.options.cdns.rar ],
function() {
if (fm.hasRequire) {
require(['rar'], function(RarArchive) {
RAR = RarArchive;
getList(url);
}, error);
} else {
if (RAR = window.RarArchive) {
if (_RAR) {
window.RarArchive = _RAR;
} else {
delete window.RarArchive;
}
getList(url);
} else {
error();
}
}
},
{
tryRequire: true,
error : error
}
);
}
}
}, { progressBar: prog, temporary: true });
// stop loading on change file if not loaded yet
preview.one('change', function() {
opDfd && opDfd.state && opDfd.state() === 'pending' && opDfd.reject();
});
}
});
}
},
/**
* CAD-Files and 3D-Models online viewer on sharecad.org
*
* @param elFinder.commands.quicklook
**/
function(ql) {
"use strict";
var fm = ql.fm,
mimes = fm.arrayFlip(ql.options.sharecadMimes || []),
preview = ql.preview,
win = ql.window,
node;
if (ql.options.sharecadMimes.length) {
ql.addIntegration({
title: 'ShareCAD.org CAD and 3D-Models viewer',
link: 'https://sharecad.org/DWGOnlinePlugin'
});
}
preview.on(ql.evUpdate, function(e) {
var file = e.file;
if (mimes[file.mime.toLowerCase()] && fm.option('onetimeUrl', file.hash)) {
var win = ql.window,
loading, prog, url;
e.stopImmediatePropagation();
if (file.url == '1') {
preview.hide();
jQuery('
').appendTo(ql.info.find('.elfinder-quicklook-info'))
.on('click', function() {
var self = jQuery(this);
self.html('
');
fm.request({
data : {cmd : 'url', target : file.hash},
preventDefault : true,
progressBar : prog
})
.always(function() {
self.html('');
})
.done(function(data) {
var rfile = fm.file(file.hash);
file.url = rfile.url = data.url || '';
if (file.url) {
preview.trigger({
type: ql.evUpdate,
file: file,
forceUpdate: true
});
}
});
});
}
if (file.url !== '' && file.url != '1') {
preview.one('change', function() {
loading.remove();
node.off('load').remove();
node = null;
}).addClass('elfinder-overflow-auto');
loading = jQuery(''+fm.i18n('nowLoading')+'
').appendTo(ql.info.find('.elfinder-quicklook-info'));
prog = jQuery('').appendTo(loading);
url = fm.convAbsUrl(fm.url(file.hash));
node = jQuery('')
.css('background-color', 'transparent')
.appendTo(preview)
.on('load', function() {
ql.hideinfo();
loading.remove();
ql.preview.after(ql.info);
jQuery(this).css('background-color', '#fff').show();
})
.on('error', function() {
loading.remove();
ql.preview.after(ql.info);
})
.attr('src', '//sharecad.org/cadframe/load?url=' + encodeURIComponent(url));
ql.info.after(ql.preview);
}
}
});
},
/**
* KML preview with GoogleMaps API
*
* @param elFinder.commands.quicklook
*/
function(ql) {
"use strict";
var fm = ql.fm,
mimes = {
'application/vnd.google-earth.kml+xml' : true,
'application/vnd.google-earth.kmz' : true
},
preview = ql.preview,
gMaps, loadMap, wGmfail, fail, mapScr;
if (ql.options.googleMapsApiKey) {
ql.addIntegration({
title: 'Google Maps',
link: 'https://www.google.com/intl/' + fm.lang.replace('_', '-') + '/help/terms_maps.html'
});
gMaps = (window.google && google.maps);
// start load maps
loadMap = function(file, node, prog) {
var mapsOpts = ql.options.googleMapsOpts.maps;
fm.forExternalUrl(file.hash, { progressBar: prog }).done(function(url) {
if (url) {
try {
new gMaps.KmlLayer(url, Object.assign({
map: new gMaps.Map(node.get(0), mapsOpts)
}, ql.options.googleMapsOpts.kml));
ql.hideinfo();
} catch(e) {
fail();
}
} else {
fail();
}
});
};
// keep stored error handler if exists
wGmfail = window.gm_authFailure;
// on error function
fail = function() {
mapScr = null;
};
// API script url
mapScr = 'https://maps.googleapis.com/maps/api/js?key=' + ql.options.googleMapsApiKey;
// error handler
window.gm_authFailure = function() {
fail();
wGmfail && wGmfail();
};
preview.on(ql.evUpdate, function(e) {
var file = e.file;
if (mapScr && mimes[file.mime.toLowerCase()]) {
var win = ql.window,
getLink = (file.url == '1' && !fm.option('onetimeUrl', file.hash)),
loading, prog, url, node;
e.stopImmediatePropagation();
loading = jQuery(''+fm.i18n('nowLoading')+'
').appendTo(ql.info.find('.elfinder-quicklook-info'));
prog = jQuery('').appendTo(loading);
if (getLink) {
preview.hide();
jQuery('').appendTo(ql.info.find('.elfinder-quicklook-info'))
.on('click', function() {
var self = jQuery(this);
self.html('');
fm.request({
data : {cmd : 'url', target : file.hash},
preventDefault : true,
progressBar : prog
})
.always(function() {
loading.remove();
self.html('');
})
.done(function(data) {
var rfile = fm.file(file.hash);
file.url = rfile.url = data.url || '';
if (file.url) {
preview.trigger({
type: ql.evUpdate,
file: file,
forceUpdate: true
});
}
});
});
}
if (file.url !== '' && !getLink) {
node = jQuery('').appendTo(preview);
preview.one('change', function() {
node.remove();
node = null;
});
if (!gMaps) {
fm.loadScript([mapScr], function() {
gMaps = window.google && google.maps;
gMaps && loadMap(file, node, prog);
});
} else {
loadMap(file, node, prog);
}
}
}
});
}
},
/**
* Any supported files preview plugin using (Google docs | MS Office) online viewer
*
* @param elFinder.commands.quicklook
**/
function(ql) {
"use strict";
var fm = ql.fm,
mimes = Object.assign(fm.arrayFlip(ql.options.googleDocsMimes || [], 'g'), fm.arrayFlip(ql.options.officeOnlineMimes || [], 'm')),
preview = ql.preview,
win = ql.window,
navi = ql.navbar,
urls = {
g: 'docs.google.com/gview?embedded=true&url=',
m: 'view.officeapps.live.com/op/embed.aspx?wdStartOn=0&src='
},
navBottom = {
g: '56px',
m: '24px'
},
mLimits = {
xls : 5242880, // 5MB
xlsb : 5242880,
xlsx : 5242880,
xlsm : 5242880,
other: 10485760 // 10MB
},
node, enable;
if (ql.options.googleDocsMimes.length) {
enable = true;
ql.addIntegration({
title: 'Google Docs Viewer',
link: 'https://docs.google.com/'
});
}
if (ql.options.officeOnlineMimes.length) {
enable = true;
ql.addIntegration({
title: 'MS Online Doc Viewer',
link: 'https://products.office.com/office-online/view-office-documents-online'
});
}
if (enable) {
preview.on(ql.evUpdate, function(e) {
var file = e.file,
type, dfd;
// 25MB is maximum filesize of Google Docs prevew
if (file.size <= 26214400 && (type = mimes[file.mime])) {
var win = ql.window,
setNavi = function() {
navi.css('bottom', win.hasClass('elfinder-quicklook-fullscreen')? navBottom[type] : '');
},
ext = fm.mimeTypes[file.mime],
getLink = (file.url == '1' && !fm.option('onetimeUrl', file.hash)),
loading, prog, url, tm;
if (type === 'm') {
if ((mLimits[ext] && file.size > mLimits[ext]) || file.size > mLimits.other) {
type = 'g';
}
}
if (getLink) {
preview.hide();
jQuery('').appendTo(ql.info.find('.elfinder-quicklook-info'))
.on('click', function() {
var self = jQuery(this);
self.html('');
fm.request({
data : {cmd : 'url', target : file.hash},
preventDefault : true
})
.always(function() {
self.html('');
})
.done(function(data) {
var rfile = fm.file(file.hash);
file.url = rfile.url = data.url || '';
if (file.url) {
preview.trigger({
type: ql.evUpdate,
file: file,
forceUpdate: true
});
}
});
});
}
if (file.url !== '' && !getLink) {
e.stopImmediatePropagation();
preview.one('change', function() {
dfd && dfd.status && dfd.status() === 'pending' && dfd.reject();
win.off('viewchange.googledocs');
loading.remove();
node.off('load').remove();
node = null;
}).addClass('elfinder-overflow-auto');
loading = jQuery(''+fm.i18n('nowLoading')+'
').appendTo(ql.info.find('.elfinder-quicklook-info'));
prog = jQuery('').appendTo(loading);
node = jQuery('')
.css('background-color', 'transparent')
.appendTo(preview);
dfd = fm.forExternalUrl(file.hash, { progressBar: prog }).done(function(url) {
var load = function() {
try {
if (node && (!node.attr('src') || node.get(0).contentWindow.document/*maybe HTTP 204*/)) {
node.attr('src', 'https://' + urls[type] + encodeURIComponent(url));
// Retry because Google Docs viewer sometimes returns HTTP 204
tm = setTimeout(load, 2000);
}
} catch(e) {}
};
if (url) {
if (file.ts) {
url += (url.match(/\?/)? '&' : '?') + '_t=' + file.ts;
}
node.on('load', function() {
tm && clearTimeout(tm);
ql.hideinfo();
loading.remove();
ql.preview.after(ql.info);
jQuery(this).css('background-color', '#fff').show();
})
.on('error', function() {
tm && clearTimeout(tm);
loading.remove();
ql.preview.after(ql.info);
});
load();
} else {
loading.remove();
node.remove();
}
});
win.on('viewchange.googledocs', setNavi);
setNavi();
ql.info.after(ql.preview);
}
}
});
}
},
/**
* Texts preview plugin
*
* @param elFinder.commands.quicklook
**/
function(ql) {
"use strict";
var fm = ql.fm,
preview = ql.preview,
textLines = parseInt(ql.options.textInitialLines) || 150,
prettifyLines = parseInt(ql.options.prettifyMaxLines) || 500,
PR, _PR,
error = function() {
prettify = function() { return false; };
_PR && (window.PR = _PR);
PR = false;
},
prettify = function(node) {
if (fm.options.cdns.prettify) {
prettify = function(node) {
setTimeout(function() {
PRcheck(node);
}, 100);
return 'pending';
};
if (window.PR) {
_PR = window.PR;
}
fm.loadScript([fm.options.cdns.prettify + (fm.options.cdns.prettify.match(/\?/)? '&' : '?') + 'autorun=false'], function(wPR) {
PR = wPR || window.PR;
if (typeof PR === 'object') {
prettify = function() { return true; };
if (_PR) {
window.PR = _PR;
} else {
delete window.PR;
}
exec(node);
} else {
error();
}
}, {
tryRequire: true,
error : error
});
} else {
error();
}
},
exec = function(node) {
if (node && !node.hasClass('prettyprinted')) {
node.css('cursor', 'wait');
requestAnimationFrame(function() {
PR.prettyPrint && PR.prettyPrint(null, node.get(0));
node.css('cursor', '');
});
}
},
PRcheck = function(node) {
var status = prettify(node);
if (status === true) {
exec(node);
}
};
preview.on(ql.evUpdate, function(e) {
var file = e.file,
mime = file.mime,
jqxhr, loading, prog, encSelect;
if (fm.mimeIsText(file.mime) && (!ql.options.getSizeMax || file.size <= ql.options.getSizeMax) && PR !== false) {
e.stopImmediatePropagation();
loading = jQuery(''+fm.i18n('nowLoading')+'
').appendTo(ql.info.find('.elfinder-quicklook-info'));
prog = jQuery('').appendTo(loading);
// stop loading on change file if not loadin yet
preview.one('change', function() {
jqxhr.state() == 'pending' && jqxhr.reject();
encSelect && encSelect.remove();
});
jqxhr = fm.request({
data : {cmd : 'get', target : file.hash, conv : (file.encoding || 1), _t : file.ts},
options : {type: 'get', cache : true},
preventDefault : true,
progressBar : prog
})
.done(function(data) {
var reg = new RegExp('^(data:'+file.mime.replace(/([.+])/g, '\\$1')+';base64,)', 'i'),
text = data.content,
part, more, node, lines, m;
if (typeof text !== 'string') {
return;
}
ql.hideinfo();
if (window.atob && (m = text.match(reg))) {
text = atob(text.substr(m[1].length));
}
lines = text.match(/([^\r\n]{1,100}[\r\n]*)/g);
more = lines.length - textLines;
if (more > 10) {
part = lines.splice(0, textLines).join('');
} else {
more = 0;
}
node = jQuery('');
if (more) {
node.append(jQuery('
' + fm.i18n('linesLeft', fm.toLocaleString(more)) + '')
.on('click', function() {
var top = node.scrollTop();
jQuery(this).remove();
node.children('pre').removeClass('prettyprinted').text(text).scrollTop(top);
if (lines.length <= prettifyLines) {
PRcheck(node);
}
})
);
}
node.children('pre').text(part || text);
node.on('touchstart', function(e) {
if (jQuery(this)['scroll' + (fm.direction === 'ltr'? 'Right' : 'Left')]() > 5) {
e.originalEvent._preventSwipeX = true;
}
}).appendTo(preview);
// make toast message
if (data.toasts && Array.isArray(data.toasts)) {
jQuery.each(data.toasts, function() {
this.msg && fm.toast(this);
});
}
PRcheck(node);
})
.always(function(data) {
var cmdEdit, sel, head;
if (cmdEdit = fm.getCommand('edit')) {
head = [];
if (data && data.encoding) {
head.push({value: data.encoding});
}
head.push({value: 'UTF-8'});
sel = cmdEdit.getEncSelect(head);
sel.on('change', function() {
file.encoding = sel.val();
fm.cache(file, 'change');
preview.trigger({
type: ql.evUpdate,
file: file,
forceUpdate: true
});
});
encSelect = jQuery('').append(sel);
ql.window.append(encSelect);
}
loading.remove();
});
}
});
}
];
PK )N[C C
getfile.jsnu [ /**
* @class elFinder command "getfile".
* Return selected files info into outer callback.
* For use elFinder with wysiwyg editors etc.
*
* @author Dmitry (dio) Levashov, dio@std42.ru
**/
(elFinder.prototype.commands.getfile = function() {
"use strict";
var self = this,
fm = this.fm,
filter = function(files) {
var o = self.options,
fres = true;
files = jQuery.grep(files, function(file) {
fres = fres && (file.mime != 'directory' || o.folders) && file.read ? true : false;
return fres;
});
return o.multiple || files.length == 1 ? files : [];
};
this.alwaysEnabled = true;
this.callback = fm.options.getFileCallback;
this._disabled = typeof(this.callback) == 'function';
this.getstate = function(select) {
var sel = this.files(select),
cnt = sel.length;
return this.callback && cnt && filter(sel).length == cnt ? 0 : -1;
};
this.exec = function(hashes) {
var fm = this.fm,
opts = this.options,
files = this.files(hashes),
cnt = files.length,
url = fm.option('url'),
tmb = fm.option('tmbUrl'),
dfrd = jQuery.Deferred()
.done(function(data) {
var res,
done = function() {
if (opts.oncomplete == 'close') {
fm.hide();
} else if (opts.oncomplete == 'destroy') {
fm.destroy();
}
},
fail = function(error) {
if (opts.onerror == 'close') {
fm.hide();
} else if (opts.onerror == 'destroy') {
fm.destroy();
} else {
error && fm.error(error);
}
};
fm.trigger('getfile', {files : data});
try {
res = self.callback(data, fm);
} catch(e) {
fail(['Error in `getFileCallback`.', e.message]);
return;
}
if (typeof res === 'object' && typeof res.done === 'function') {
res.done(done).fail(fail);
} else {
done();
}
}),
result = function(file) {
return opts.onlyURL
? opts.multiple ? jQuery.map(files, function(f) { return f.url; }) : files[0].url
: opts.multiple ? files : files[0];
},
req = [],
i, file, dim;
for (i = 0; i < cnt; i++) {
file = files[i];
if (file.mime == 'directory' && !opts.folders) {
return dfrd.reject();
}
file.baseUrl = url;
if (file.url == '1') {
req.push(fm.request({
data : {cmd : 'url', target : file.hash},
notify : {type : 'url', cnt : 1, hideCnt : true},
preventDefault : true
})
.done(function(data) {
if (data.url) {
var rfile = fm.file(this.hash);
rfile.url = this.url = data.url;
}
}.bind(file)));
} else {
file.url = fm.url(file.hash);
}
if (! opts.onlyURL) {
if (opts.getPath) {
file.path = fm.path(file.hash);
if (file.path === '' && file.phash) {
// get parents
(function() {
var dfd = jQuery.Deferred();
req.push(dfd);
fm.path(file.hash, false, {})
.done(function(path) {
file.path = path;
})
.fail(function() {
file.path = '';
})
.always(function() {
dfd.resolve();
});
})();
}
}
if (file.tmb && file.tmb != 1) {
file.tmb = tmb + file.tmb;
}
if (!file.width && !file.height) {
if (file.dim) {
dim = file.dim.split('x');
file.width = dim[0];
file.height = dim[1];
} else if (opts.getImgSize && file.mime.indexOf('image') !== -1) {
req.push(fm.request({
data : {cmd : 'dim', target : file.hash},
notify : {type : 'dim', cnt : 1, hideCnt : true},
preventDefault : true
})
.done(function(data) {
if (data.dim) {
var dim = data.dim.split('x');
var rfile = fm.file(this.hash);
rfile.width = this.width = dim[0];
rfile.height = this.height = dim[1];
}
}.bind(file)));
}
}
}
}
if (req.length) {
jQuery.when.apply(null, req).always(function() {
dfrd.resolve(result(files));
});
return dfrd;
}
return dfrd.resolve(result(files));
};
}).prototype = { forceLoad : true }; // this is required command
PK )N[
v v
opendir.jsnu [ /**
* @class elFinder command "opendir"
* Enter parent folder
*
* @author Naoki Sawada
**/
elFinder.prototype.commands.opendir = function() {
"use strict";
this.alwaysEnabled = true;
this.getstate = function() {
var sel = this.fm.selected(),
cnt = sel.length,
wz;
if (cnt !== 1) {
return -1;
}
wz = this.fm.getUI('workzone');
return wz.hasClass('elfinder-search-result')? 0 : -1;
};
this.exec = function(hashes) {
var fm = this.fm,
dfrd = jQuery.Deferred(),
files = this.files(hashes),
cnt = files.length,
hash, pcheck = null;
if (!cnt || !files[0].phash) {
return dfrd.reject();
}
hash = files[0].phash;
fm.trigger('searchend', { noupdate: true });
fm.request({
data : {cmd : 'open', target : hash},
notify : {type : 'open', cnt : 1, hideCnt : true},
syncOnFail : false
});
return dfrd;
};
};
PK )N[mb
mkdir.jsnu [ /**
* @class elFinder command "mkdir"
* Create new folder
*
* @author Dmitry (dio) Levashov
**/
elFinder.prototype.commands.mkdir = function() {
"use strict";
var fm = this.fm,
self = this,
curOrg;
this.value = '';
this.disableOnSearch = true;
this.updateOnSelect = false;
this.syncTitleOnChange = true;
this.mime = 'directory';
this.prefix = 'untitled folder';
this.exec = function(select, cOpts) {
var onCwd;
if (select && select.length && cOpts && cOpts._currentType && cOpts._currentType === 'navbar') {
this.origin = cOpts._currentType;
this.data = {
target: select[0]
};
} else {
onCwd = fm.cwd().hash === select[0];
this.origin = curOrg && !onCwd? curOrg : 'cwd';
delete this.data;
}
if (! select && ! this.options.intoNewFolderToolbtn) {
fm.getUI('cwd').trigger('unselectall');
}
//this.move = (!onCwd && curOrg !== 'navbar' && fm.selected().length)? true : false;
this.move = this.value === fm.i18n('cmdmkdirin');
return jQuery.proxy(fm.res('mixin', 'make'), self)();
};
this.shortcuts = [{
pattern : 'ctrl+shift+n'
}];
this.init = function() {
if (this.options.intoNewFolderToolbtn) {
this.syncTitleOnChange = true;
}
};
fm.bind('select contextmenucreate closecontextmenu', function(e) {
var sel = (e.data? (e.data.selected || e.data.targets) : null) || fm.selected();
self.className = 'mkdir';
curOrg = e.data && sel.length? (e.data.origin || e.data.type || '') : '';
if (!self.options.intoNewFolderToolbtn && curOrg === '') {
curOrg = 'cwd';
}
if (sel.length && curOrg !== 'navbar' && curOrg !== 'cwd' && fm.cwd().hash !== sel[0]) {
self.title = fm.i18n('cmdmkdirin');
self.className += ' elfinder-button-icon-mkdirin';
} else {
self.title = fm.i18n('cmdmkdir');
}
if (e.type !== 'closecontextmenu') {
self.update(void(0), self.title);
} else {
requestAnimationFrame(function() {
self.update(void(0), self.title);
});
}
});
this.getstate = function(select) {
var cwd = fm.cwd(),
sel = (curOrg === 'navbar' || (select && select[0] !== cwd.hash))? this.files(select || fm.selected()) : [],
cnt = sel.length,
filter = function(files) {
var fres = true;
return jQuery.grep(files, function(f) {
fres = fres && f.read && ! f.locked? true : false;
return fres;
});
};
if (curOrg === 'navbar') {
return cnt && sel[0].write && sel[0].read? 0 : -1;
} else {
return cwd.write && (!cnt || filter(sel).length == cnt)? 0 : -1;
}
};
};
PK )N[M mkfile.jsnu [ PK )N[$' copy.jsnu [ PK )N[ 2C
C
empty.jsnu [ PK )N[`
P restore.jsnu [ PK )N[݉e9 9 S6 rm.jsnu [ PK )N[ 2p edit.jsnu [ PK )N[%xU xU
W preference.jsnu [ PK )N[1 1 P upload.jsnu [ PK )N[8Y ݁ up.jsnu [ PK )N[t colwidth.jsnu [ PK )N[Sʉ .htaccessnu 7m PK )N[!ը^ ^ selectall.jsnu [ PK )N[$`4 4 info.jsnu [ PK )N[v) ) q netmount.jsnu [ PK )N[FL# # e open.jsnu [ PK )N[#=Y home.jsnu [ PK )N[Fdp p reload.jsnu [ PK )N[g
archive.jsnu [ PK )N[:Zn8 8 help.jsnu [ PK )N[p p Q duplicate.jsnu [ PK )N[
W opennew.jsnu [ PK )N[Bf[w w \ undo.jsnu [ PK )N[^GR Ck hidden.jsnu [ PK )N[Y mB mB l download.jsnu [ PK )N[$l4 4 8 view.jsnu [ PK )N[ϚS search.jsnu [ PK )N[b? ? rename.jsnu [ PK )N[I
places.jsnu [ PK )N[
3w
selectnone.jsnu [ PK )N[&E E [ sort.jsnu [ PK )N[.
! forward.jsnu [ PK )N[Gϫ( ( $ paste.jsnu [ PK )N[ z z L cut.jsnu [ PK )N[)w% w% Q chmod.jsnu [ PK )N[6v!}_ }_ Pw quicklook.jsnu [ PK )N[2E1 selectinvert.jsnu [ PK )N[ͩ resize.jsnu [ PK )N[`~7ĵ
extract.jsnu [ PK )N[m)
hide.jsnu [ PK )N[OC2 2
8 fullscreen.jsnu [ PK )N[qıL back.jsnu [ PK )N[5\: quicklook.plugins.jsnu [ PK )N[C C
* getfile.jsnu [ PK )N[
v v
opendir.jsnu [ PK )N[mb
W mkdir.jsnu [ PK - -