Первая копия
This commit is contained in:
248
metadata/include/kcfinder/js/080.files.js
Normal file
248
metadata/include/kcfinder/js/080.files.js
Normal file
@ -0,0 +1,248 @@
|
||||
/** 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></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>');
|
||||
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.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()
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user