123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249 |
- /** This file is part of KCFinder project
- *
- * @desc File related functionality
- * @package KCFinder
- * @version 3.12
- * @author Pavel Tzonkov <sunhater@sunhater.com>
- * @copyright 2010-2014 KCFinder Project
- * @license http://opensource.org/licenses/GPL-3.0 GPLv3
- * @license http://opensource.org/licenses/LGPL-3.0 LGPLv3
- * @link http://kcfinder.sunhater.com
- */
- _.initFiles = function() {
- $(document).unbind('keydown').keydown(function(e) {
- return !_.selectAll(e);
- });
- $('#files').unbind().scroll(function() {
- _.menu.hide();
- }).disableTextSelect();
- $('.file').unbind().click(function(e) {
- _.selectFile($(this), e);
- }).rightClick(function(el, e) {
- _.menuFile($(el), e);
- }).dblclick(function() {
- _.returnFile($(this));
- });
- if ($.mobile)
- $('.file').on('taphold', function() {
- _.menuFile($(this), {
- pageX: $(this).offset().left,
- pageY: $(this).offset().top + $(this).outerHeight()
- });
- });
- $.each(_.shows, function(i, val) {
- $('#files .file div.' + val).css('display', ($.$.kuki.get('show' + val) == "off") ? "none" : "block");
- });
- _.statusDir();
- };
- _.showFiles = function(callBack, selected) {
- _.fadeFiles();
- setTimeout(function() {
- var c = $('<div></div>');
- $.each(_.files, function(i, file) {
- var f, icon,
- stamp = file.size + "|" + file.mtime;
- // List
- if ($.$.kuki.get('view') == "list") {
- if (!i) c.html('<table></table>');
- icon = $.$.getFileExtension(file.name);
- if (file.thumb)
- icon = ".image";
- else if (!icon.length || !file.smallIcon)
- icon = ".";
- icon = "themes/" + _.theme + "/img/files/small/" + icon + ".png";
- f = $('<tr class="file"><td class="name thumb"></td><td class="time"></td><td class="size"></td><td><div class="sizer">.</div></td></tr>');
- f.appendTo(c.find('table'));
- // Thumbnails
- } else {
- if (file.thumb)
- icon = _.getURL('thumb') + "&file=" + encodeURIComponent(file.name) + "&dir=" + encodeURIComponent(_.dir) + "&stamp=" + stamp;
- else if (file.smallThumb) {
- icon = _.uploadURL + "/" + _.dir + "/" + encodeURIComponent(file.name);
- icon = $.$.escapeDirs(icon).replace(/\'/g, "%27");
- } else {
- icon = file.bigIcon ? $.$.getFileExtension(file.name) : ".";
- if (!icon.length) icon = ".";
- icon = "themes/" + _.theme + "/img/files/big/" + icon + ".png";
- }
-
- f = $('<div class="file"><div class="thumb"></div><div class="name"></div><div class="time"></div><div class="size"></div><div class="sizer"></div></div>');
- f.appendTo(c);
- }
- f.find('.thumb').css({backgroundImage: 'url("' + icon + '")'});
- f.find('.name').html($.$.htmlData(file.name));
- f.find('.time').html(file.date);
- f.find('.size').html(_.humanSize(file.size));
- f.find('.sizer').html((file.width)+'x'+(file.height));
- f.data(file);
- if ((file.name === selected) || $.$.inArray(file.name, selected))
- f.addClass('selected');
- });
- c.css({opacity:'', filter:''});
- $('#files').html(c);
- if (callBack) callBack();
- _.initFiles();
- }, 200);
- };
- _.selectFile = function(file, e) {
- // Click with Ctrl, Meta or Shift key
- if (e.ctrlKey || e.metaKey || e.shiftKey) {
- // Click with Shift key
- if (e.shiftKey && !file.hasClass('selected')) {
- var f = file.prev();
- while (f.get(0) && !f.hasClass('selected')) {
- f.addClass('selected');
- f = f.prev();
- }
- }
- file.toggleClass('selected');
- // Update statusbar
- var files = $('.file.selected').get(),
- size = 0, data;
- if (!files.length)
- _.statusDir();
- else {
- $.each(files, function(i, cfile) {
- size += $(cfile).data('size');
- });
- size = _.humanSize(size);
- if (files.length > 1)
- $('#fileinfo').html(files.length + " " + _.label("selected files") + " (" + size + ")");
- else {
- data = $(files[0]).data();
- $('#fileinfo').html($.$.htmlData(data.name) + " (" + _.humanSize(data.size) + ", " + data.date + ")");
- }
- }
- // Normal click
- } else {
- data = file.data();
- $('.file').removeClass('selected');
- file.addClass('selected');
- $('#fileinfo').html($.$.htmlData(data.name) + " (" + _.humanSize(data.size) + ", " + data.date + ")");
- }
- };
- _.selectAll = function(e) {
- if ((!e.ctrlKey && !e.metaKey) || ((e.keyCode != 65) && (e.keyCode != 97))) // Ctrl-A
- return false;
- var files = $('.file'),
- size = 0;
- if (files.length) {
- files.addClass('selected').each(function() {
- size += $(this).data('size');
- });
- $('#fileinfo').html(files.length + " " + _.label("selected files") + " (" + _.humanSize(size) + ")");
- }
- return true;
- };
- _.returnFile = function(file) {
- var button, win, fileURL = file.substr
- ? file : _.uploadURL + "/" + _.dir + "/" + file.data('name');
- fileURL = $.$.escapeDirs(fileURL);
- if (_.opener.name == "ckeditor") {
- _.opener.CKEditor.object.tools.callFunction(_.opener.CKEditor.funcNum, fileURL, "");
- window.close();
- } else if (_.opener.name == "fckeditor") {
- window.opener.SetUrl(fileURL) ;
- window.close() ;
- } else if (_.opener.name == "tinymce") {
- win = tinyMCEPopup.getWindowArg('window');
- win.document.getElementById(tinyMCEPopup.getWindowArg('input')).value = fileURL;
- if (win.getImageData) win.getImageData();
- if (typeof(win.ImageDialog) != "undefined") {
- if (win.ImageDialog.getImageData)
- win.ImageDialog.getImageData();
- if (win.ImageDialog.showPreviewImage)
- win.ImageDialog.showPreviewImage(fileURL);
- }
- tinyMCEPopup.close();
- } else if (_.opener.name == "tinymce4") {
- win = (window.opener ? window.opener : window.parent);
- $(win.document).find('#' + _.opener.TinyMCE.field).val(fileURL);
- win.tinyMCE.activeEditor.windowManager.close();
- } else if (_.opener.callBack) {
- if (window.opener && window.opener.KCFinder) {
- _.opener.callBack(fileURL);
- window.close();
- }
- if (window.parent && window.parent.KCFinder) {
- button = $('#toolbar a[href="kcact:maximize"]');
- if (button.hasClass('selected'))
- _.maximize(button);
- _.opener.callBack(fileURL);
- }
- } else if (_.opener.callBackMultiple) {
- if (window.opener && window.opener.KCFinder) {
- _.opener.callBackMultiple([fileURL]);
- window.close();
- }
- if (window.parent && window.parent.KCFinder) {
- button = $('#toolbar a[href="kcact:maximize"]');
- if (button.hasClass('selected'))
- _.maximize(button);
- _.opener.callBackMultiple([fileURL]);
- }
- }
- };
- _.returnFiles = function(files) {
- if (_.opener.callBackMultiple && files.length) {
- var rfiles = [];
- $.each(files, function(i, file) {
- rfiles[i] = _.uploadURL + "/" + _.dir + "/" + $(file).data('name');
- rfiles[i] = $.$.escapeDirs(rfiles[i]);
- });
- _.opener.callBackMultiple(rfiles);
- if (window.opener) window.close()
- }
- };
- _.returnThumbnails = function(files) {
- if (_.opener.callBackMultiple) {
- var rfiles = [], j = 0;
- $.each(files, function(i, file) {
- if ($(file).data('thumb')) {
- rfiles[j] = _.thumbsURL + "/" + _.dir + "/" + $(file).data('name');
- rfiles[j] = $.$.escapeDirs(rfiles[j++]);
- }
- });
- _.opener.callBackMultiple(rfiles);
- if (window.opener) window.close()
- }
- };
|