File: /home/retile.ru/public_html/admin/view/javascript/d_elfinder/commands/quicklook.plugins.js
elFinder.prototype.commands.quicklook.plugins = [
/**
* Images preview plugin
*
* @param elFinder.commands.quicklook
**/
function(ql) {
var mimes = ['image/jpeg', 'image/png', 'image/gif', 'image/svg+xml', 'image/x-ico'],
preview = ql.preview;
// what kind of images we can display
$.each(navigator.mimeTypes, function(i, o) {
var mime = o.type;
if (mime.indexOf('image/') === 0 && $.inArray(mime, mimes)) {
mimes.push(mime);
}
});
preview.bind('update', function(e) {
var file = e.file,
img;
if ($.inArray(file.mime, mimes) !== -1) {
// this is our file - stop event propagation
e.stopImmediatePropagation();
img = $('<img/>')
.hide()
.appendTo(preview)
.load(function() {
// timeout - because of strange safari bug -
// sometimes cant get image height 0_o
setTimeout(function() {
var prop = (img.width()/img.height()).toFixed(2);
preview.bind('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');
// hide info/icon
ql.hideinfo();
//show image
img.fadeIn(100);
}, 1)
})
.attr('src', ql.fm.url(file.hash));
}
});
},
/**
* HTML preview plugin
*
* @param elFinder.commands.quicklook
**/
function(ql) {
var mimes = ['text/html', 'application/xhtml+xml'],
preview = ql.preview,
fm = ql.fm;
preview.bind('update', function(e) {
var file = e.file, jqxhr;
if ($.inArray(file.mime, mimes) !== -1) {
e.stopImmediatePropagation();
// stop loading on change file if not loaded yet
preview.one('change', function() {
if (!jqxhr.isResolved() && !jqxhr.isRejected()) {
jqxhr.reject();
}
});
jqxhr = fm.request({
data : {cmd : 'get', target : file.hash, current : file.phash},
preventDefault : true
})
.done(function(data) {
ql.hideinfo();
doc = $('<iframe class="elfinder-quicklook-preview-html"/>').appendTo(preview)[0].contentWindow.document;
doc.open();
doc.write(data.content);
doc.close();
});
}
})
},
/**
* Texts preview plugin
*
* @param elFinder.commands.quicklook
**/
function(ql) {
var fm = ql.fm,
mimes = fm.res('mimes', 'text'),
preview = ql.preview;
preview.bind('update', function(e) {
var file = e.file,
mime = file.mime,
jqxhr;
if (mime.indexOf('text/') === 0 || $.inArray(mime, mimes) !== -1) {
e.stopImmediatePropagation();
// stop loading on change file if not loadin yet
preview.one('change', function() {
if (!jqxhr.isResolved() && !jqxhr.isRejected()) {
jqxhr.reject();
}
});
jqxhr = fm.request({
data : {cmd : 'get', target : file.hash },
preventDefault : true
})
.done(function(data) {
ql.hideinfo();
$('<div class="elfinder-quicklook-preview-text-wrapper"><pre class="elfinder-quicklook-preview-text">'+fm.escape(data.content)+'</pre></div>').appendTo(preview);
});
}
});
},
/**
* PDF preview plugin
*
* @param elFinder.commands.quicklook
**/
function(ql) {
var fm = ql.fm,
mime = 'application/pdf',
preview = ql.preview,
active = false;
if (($.browser.safari && navigator.platform.indexOf('Mac') != -1) || $.browser.msie) {
active = true;
} else {
$.each(navigator.plugins, function(i, plugins) {
$.each(plugins, function(i, plugin) {
if (plugin.type == mime) {
return !(active = true);
}
});
});
}
active && preview.bind('update', function(e) {
var file = e.file, node;
if (file.mime == mime) {
e.stopImmediatePropagation();
preview.one('change', function() {
node.unbind('load').remove();
});
node = $('<iframe class="elfinder-quicklook-preview-pdf"/>')
.hide()
.appendTo(preview)
.load(function() {
ql.hideinfo();
node.show();
})
.attr('src', fm.url(file.hash));
}
})
},
/**
* Flash preview plugin
*
* @param elFinder.commands.quicklook
**/
function(ql) {
var fm = ql.fm,
mime = 'application/x-shockwave-flash',
preview = ql.preview,
active = false;
$.each(navigator.plugins, function(i, plugins) {
$.each(plugins, function(i, plugin) {
if (plugin.type == mime) {
return !(active = true);
}
});
});
active && preview.bind('update', function(e) {
var file = e.file,
node;
if (file.mime == mime) {
e.stopImmediatePropagation();
ql.hideinfo();
preview.append((node = $('<embed class="elfinder-quicklook-preview-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" src="'+fm.url(file.hash)+'" quality="high" type="application/x-shockwave-flash" />')));
}
});
},
/**
* HTML5 audio preview plugin
*
* @param elFinder.commands.quicklook
**/
function(ql) {
var preview = ql.preview,
autoplay = !!ql.options['autoplay'],
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'
},
node;
preview.bind('update', function(e) {
var file = e.file,
type = mimes[file.mime];
if (ql.support.audio[type]) {
e.stopImmediatePropagation();
node = $('<audio class="elfinder-quicklook-preview-audio" controls preload="auto" autobuffer><source src="'+ql.fm.url(file.hash)+'" /></audio>')
.appendTo(preview);
autoplay && node[0].play();
}
}).bind('change', function() {
if (node && node.parent().length) {
node[0].pause();
node.remove();
node= null;
}
});
},
/**
* HTML5 video preview plugin
*
* @param elFinder.commands.quicklook
**/
function(ql) {
var preview = ql.preview,
autoplay = !!ql.options['autoplay'],
mimes = {
'video/mp4' : 'mp4',
'video/x-m4v' : 'mp4',
'video/ogg' : 'ogg',
'application/ogg' : 'ogg',
'video/webm' : 'webm'
},
node;
preview.bind('update', function(e) {
var file = e.file,
type = mimes[file.mime];
if (ql.support.video[type]) {
e.stopImmediatePropagation();
ql.hideinfo();
node = $('<video class="elfinder-quicklook-preview-video" controls preload="auto" autobuffer><source src="'+ql.fm.url(file.hash)+'" /></video>').appendTo(preview);
autoplay && node[0].play();
}
}).bind('change', function() {
if (node && node.parent().length) {
node[0].pause();
node.remove();
node= null;
}
});
},
/**
* Audio/video preview plugin using browser plugins
*
* @param elFinder.commands.quicklook
**/
function(ql) {
var preview = ql.preview,
mimes = [],
node;
$.each(navigator.plugins, function(i, plugins) {
$.each(plugins, function(i, plugin) {
(plugin.type.indexOf('audio/') === 0 || plugin.type.indexOf('video/') === 0) && mimes.push(plugin.type);
});
});
preview.bind('update', function(e) {
var file = e.file,
mime = file.mime,
video;
if ($.inArray(file.mime, mimes) !== -1) {
e.stopImmediatePropagation();
(video = mime.indexOf('video/') === 0) && ql.hideinfo();
node = $('<embed src="'+ql.fm.url(file.hash)+'" type="'+mime+'" class="elfinder-quicklook-preview-'+(video ? 'video' : 'audio')+'"/>')
.appendTo(preview);
}
}).bind('change', function() {
if (node && node.parent().length) {
node.remove();
node= null;
}
});
}
]