First commit

This commit is contained in:
Theodotos Andreou 2018-01-14 13:10:16 +00:00
commit c6e2478c40
13918 changed files with 2303184 additions and 0 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,67 @@
/** This file is part of KCFinder project
*
* @desc My jQuery UI & Uniform fixes
* @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
*/
(function($) {
$.fn.oldMenu = $.fn.menu;
$.fn.menu = function(p1, p2, p3) {
var ret = $(this).oldMenu(p1, p2, p3);
$(this).each(function() {
if (!$(this).hasClass('sh-menu')) {
$(this).addClass('sh-menu')
.children().first().addClass('ui-menu-item-first');
$(this).children().last().addClass('ui-menu-item-last');
$(this).find('.ui-menu').addClass('sh-menu').each(function() {
$(this).children().first().addClass('ui-menu-item-first');
$(this).children().last().addClass('ui-menu-item-last');
});
}
});
return ret;
};
$.fn.oldUniform = $.fn.uniform;
$.fn.uniform = function(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10) {
var ret = $(this).oldUniform(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10);
$(this).each(function() {
var t = $(this);
if (!t.hasClass('sh-uniform')) {
t.addClass('sh-uniform');
// Fix upload filename width
if (t.is('input[type="file"]')) {
var f = t.parent().find('.filename');
f.css('width', f.innerWidth());
}
// Add an icon into select boxes
if (t.is('select') && !t.attr('multiple')) {
var p = t.parent(),
height = p.height(),
width = p.outerWidth(),
width2 = p.find('span').outerWidth();
$('<div></div>').addClass('ui-icon').css({
'float': "right",
marginTop: - parseInt((height / 2) + 8),
marginRight: - parseInt((width - width2) / 2) - 7
}).appendTo(p);
}
}
});
return ret;
};
})(jQuery);

View file

@ -0,0 +1,26 @@
/** This file is part of KCFinder project
*
* @desc Right Click jQuery Plugin
* @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
*/
(function($) {
$.fn.rightClick = function(func) {
var events = "contextmenu rightclick";
$(this).each(function() {
$(this).unbind(events).bind(events, function(e) {
e.preventDefault();
$.clearSelection();
if ($.isFunction(func))
func(this, e);
});
});
return $(this);
};
})(jQuery);

View file

@ -0,0 +1,117 @@
// @author Rich Adams <rich@richadams.me>
// Implements a tap and hold functionality. If you click/tap and release, it will trigger a normal
// click event. But if you click/tap and hold for 1s (default), it will trigger a taphold event instead.
;(function($)
{
// Default options
var defaults = {
duration: 1000, // ms
clickHandler: null
}
// When start of a taphold event is triggered.
function startHandler(event)
{
var $elem = jQuery(this);
// Merge the defaults and any user defined settings.
settings = jQuery.extend({}, defaults, event.data);
// If object also has click handler, store it and unbind. Taphold will trigger the
// click itself, rather than normal propagation.
if (typeof $elem.data("events") != "undefined"
&& typeof $elem.data("events").click != "undefined")
{
// Find the one without a namespace defined.
for (var c in $elem.data("events").click)
{
if ($elem.data("events").click[c].namespace == "")
{
var handler = $elem.data("events").click[c].handler
$elem.data("taphold_click_handler", handler);
$elem.unbind("click", handler);
break;
}
}
}
// Otherwise, if a custom click handler was explicitly defined, then store it instead.
else if (typeof settings.clickHandler == "function")
{
$elem.data("taphold_click_handler", settings.clickHandler);
}
// Reset the flags
$elem.data("taphold_triggered", false); // If a hold was triggered
$elem.data("taphold_clicked", false); // If a click was triggered
$elem.data("taphold_cancelled", false); // If event has been cancelled.
// Set the timer for the hold event.
$elem.data("taphold_timer",
setTimeout(function()
{
// If event hasn't been cancelled/clicked already, then go ahead and trigger the hold.
if (!$elem.data("taphold_cancelled")
&& !$elem.data("taphold_clicked"))
{
// Trigger the hold event, and set the flag to say it's been triggered.
$elem.trigger(jQuery.extend(event, jQuery.Event("taphold")));
$elem.data("taphold_triggered", true);
}
}, settings.duration));
}
// When user ends a tap or click, decide what we should do.
function stopHandler(event)
{
var $elem = jQuery(this);
// If taphold has been cancelled, then we're done.
if ($elem.data("taphold_cancelled")) { return; }
// Clear the hold timer. If it hasn't already triggered, then it's too late anyway.
clearTimeout($elem.data("taphold_timer"));
// If hold wasn't triggered and not already clicked, then was a click event.
if (!$elem.data("taphold_triggered")
&& !$elem.data("taphold_clicked"))
{
// If click handler, trigger it.
if (typeof $elem.data("taphold_click_handler") == "function")
{
$elem.data("taphold_click_handler")(jQuery.extend(event, jQuery.Event("click")));
}
// Set flag to say we've triggered the click event.
$elem.data("taphold_clicked", true);
}
}
// If a user prematurely leaves the boundary of the object we're working on.
function leaveHandler(event)
{
// Cancel the event.
$(this).data("taphold_cancelled", true);
}
// Determine if touch events are supported.
var touchSupported = ("ontouchstart" in window) // Most browsers
|| ("onmsgesturechange" in window); // Microsoft
var taphold = $.event.special.taphold =
{
setup: function(data)
{
$(this).bind((touchSupported ? "touchstart" : "mousedown"), data, startHandler)
.bind((touchSupported ? "touchend" : "mouseup"), stopHandler)
.bind((touchSupported ? "touchmove touchcancel" : "mouseleave"), leaveHandler);
},
teardown: function(namespaces)
{
$(this).unbind((touchSupported ? "touchstart" : "mousedown"), startHandler)
.unbind((touchSupported ? "touchend" : "mouseup"), stopHandler)
.unbind((touchSupported ? "touchmove touchcancel" : "mouseleave"), leaveHandler);
}
};
})(jQuery);

View file

@ -0,0 +1,89 @@
/** This file is part of KCFinder project
*
* @desc User Agent jQuery Plugin
* @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
*/
(function($) {
$.agent = {};
var agent = " " + navigator.userAgent,
patterns = [
{
expr: / [a-z]+\/[0-9a-z\.]+/ig,
delim: "/"
}, {
expr: / [a-z]+:[0-9a-z\.]+/ig,
delim: ":",
keys: ["rv", "version"]
}, {
expr: / [a-z]+\s+[0-9a-z\.]+/ig,
delim: /\s+/,
keys: ["opera", "msie", "firefox", "android"]
}, {
expr: /[ \/\(]([a-z0-9_]+)[ ;\)\/]/ig,
keys: "i386|i486|i586|i686|x86|x64|x86_64|intel|ppc|powerpc|windows|macintosh|darwin|unix|linux|sunos|android|iphone|ipad|ipod|amiga|amigaos|beos|wii|playstation|gentoo|fedora|slackware|ubuntu|archlinux|debian|mint|mageia|mandriva|freebsd|openbsd|netbsd|solaris|opensolaris|x11|mobile|phone".split('|'),
sub: "platform"
}
];
$.each(patterns, function(i, pattern) {
var elements = agent.match(pattern.expr);
if (elements === null)
return;
$.each(elements, function(j, ag) {
ag = ag.replace(/^\s+/, "").toLowerCase();
var key = ag.replace(pattern.expr, "$1"),
val = true;
if (typeof pattern.delim != "undefined") {
ag = ag.split(pattern.delim);
key = ag[0];
val = ag[1];
}
if (typeof pattern.keys != "undefined") {
var exists = false, k = 0;
for (; k < pattern.keys.length; k++)
if (pattern.keys[k] == key) {
exists = true;
break;
}
if (!exists)
return;
}
if (typeof pattern.sub != "undefined") {
if (typeof $.agent[pattern.sub] != "object")
$.agent[pattern.sub] = {};
if (typeof $.agent[pattern.sub][key] == "undefined")
$.agent[pattern.sub][key] = val;
} else if (typeof $.agent[key] == "undefined")
$.agent[key] = val;
});
});
if (!$.agent.platform)
$.agent.platform = {};
// Check for mobile device
$.mobile = false;
var keys = "mobile|android|iphone|ipad|ipod|iemobile|phone".split('|');
a = $.agent;
$.each([a, a.platform], function(i, p) {
for (var j = 0; j < keys.length; j++) {
if (p[keys[j]]) {
$.mobile = true;
return false;
}
}
});
})(jQuery);

View file

@ -0,0 +1,295 @@
/** This file is part of KCFinder project
*
* @desc Helper functions integrated in jQuery
* @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
*/
(function($) {
$.fn.selection = function(start, end) {
var field = this.get(0);
if (field.createTextRange) {
var selRange = field.createTextRange();
selRange.collapse(true);
selRange.moveStart('character', start);
selRange.moveEnd('character', end-start);
selRange.select();
} else if (field.setSelectionRange) {
field.setSelectionRange(start, end);
} else if (field.selectionStart) {
field.selectionStart = start;
field.selectionEnd = end;
}
field.focus();
};
$.fn.disableTextSelect = function() {
return this.each(function() {
if ($.agent.firefox) { // Firefox
$(this).css('MozUserSelect', "none");
} else if ($.agent.msie) { // IE
$(this).bind('selectstart', function() {
return false;
});
} else { //Opera, etc.
$(this).mousedown(function() {
return false;
});
}
});
};
$.fn.outerSpace = function(type, mbp) {
var selector = this.get(0),
r = 0, x;
if (!mbp) mbp = "mbp";
if (/m/i.test(mbp)) {
x = parseInt($(selector).css('margin-' + type));
if (x) r += x;
}
if (/b/i.test(mbp)) {
x = parseInt($(selector).css('border-' + type + '-width'));
if (x) r += x;
}
if (/p/i.test(mbp)) {
x = parseInt($(selector).css('padding-' + type));
if (x) r += x;
}
return r;
};
$.fn.outerLeftSpace = function(mbp) {
return this.outerSpace('left', mbp);
};
$.fn.outerTopSpace = function(mbp) {
return this.outerSpace('top', mbp);
};
$.fn.outerRightSpace = function(mbp) {
return this.outerSpace('right', mbp);
};
$.fn.outerBottomSpace = function(mbp) {
return this.outerSpace('bottom', mbp);
};
$.fn.outerHSpace = function(mbp) {
return (this.outerLeftSpace(mbp) + this.outerRightSpace(mbp));
};
$.fn.outerVSpace = function(mbp) {
return (this.outerTopSpace(mbp) + this.outerBottomSpace(mbp));
};
$.fn.fullscreen = function() {
if (!$(this).get(0))
return
var t = $(this).get(0),
requestMethod =
t.requestFullScreen ||
t.requestFullscreen ||
t.webkitRequestFullScreen ||
t.mozRequestFullScreen ||
t.msRequestFullscreen;
if (requestMethod)
requestMethod.call(t);
else if (typeof window.ActiveXObject !== "undefined") {
var wscript = new ActiveXObject("WScript.Shell");
if (wscript !== null)
wscript.SendKeys("{F11}");
}
};
$.fn.toggleFullscreen = function(doc) {
if ($.isFullscreen(doc))
$.exitFullscreen(doc);
else
$(this).fullscreen();
};
$.exitFullscreen = function(doc) {
var d = doc ? doc : document,
requestMethod =
d.cancelFullScreen ||
d.cancelFullscreen ||
d.webkitCancelFullScreen ||
d.mozCancelFullScreen ||
d.msExitFullscreen ||
d.exitFullscreen;
if (requestMethod)
requestMethod.call(d);
else if (typeof window.ActiveXObject !== "undefined") {
var wscript = new ActiveXObject("WScript.Shell");
if (wscript !== null)
wscript.SendKeys("{F11}");
}
};
$.isFullscreen = function(doc) {
var d = doc ? doc : document;
return (d.fullScreenElement && (d.fullScreenElement !== null)) ||
(d.fullscreenElement && (d.fullscreenElement !== null)) ||
(d.msFullscreenElement && (d.msFullscreenElement !== null)) ||
d.mozFullScreen || d.webkitIsFullScreen;
};
$.clearSelection = function() {
if (document.selection)
document.selection.empty();
else if (window.getSelection)
window.getSelection().removeAllRanges();
};
$.$ = {
htmlValue: function(value) {
return value
.replace(/\&/g, "&amp;")
.replace(/\"/g, "&quot;")
.replace(/\'/g, "&#39;");
},
htmlData: function(value) {
return value.toString()
.replace(/\&/g, "&amp;")
.replace(/\</g, "&lt;")
.replace(/\>/g, "&gt;")
.replace(/\ /g, "&nbsp;")
.replace(/\"/g, "&quot;")
.replace(/\'/g, "&#39;");
},
jsValue: function(value) {
return value
.replace(/\\/g, "\\\\")
.replace(/\r?\n/, "\\\n")
.replace(/\"/g, "\\\"")
.replace(/\'/g, "\\'");
},
basename: function(path) {
var expr = /^.*\/([^\/]+)\/?$/g;
return expr.test(path)
? path.replace(expr, "$1")
: path;
},
dirname: function(path) {
var expr = /^(.*)\/[^\/]+\/?$/g;
return expr.test(path)
? path.replace(expr, "$1")
: '';
},
inArray: function(needle, arr) {
if (!$.isArray(arr))
return false;
for (var i = 0; i < arr.length; i++)
if (arr[i] == needle)
return true;
return false;
},
getFileExtension: function(filename, toLower) {
if (typeof toLower == 'undefined') toLower = true;
if (/^.*\.[^\.]*$/.test(filename)) {
var ext = filename.replace(/^.*\.([^\.]*)$/, "$1");
return toLower ? ext.toLowerCase(ext) : ext;
} else
return "";
},
escapeDirs: function(path) {
var fullDirExpr = /^([a-z]+)\:\/\/([^\/^\:]+)(\:(\d+))?\/(.+)$/,
prefix = "";
if (fullDirExpr.test(path)) {
var port = path.replace(fullDirExpr, "$4");
prefix = path.replace(fullDirExpr, "$1://$2");
if (port.length)
prefix += ":" + port;
prefix += "/";
path = path.replace(fullDirExpr, "$5");
}
var dirs = path.split('/'),
escapePath = '', i = 0;
for (; i < dirs.length; i++)
escapePath += encodeURIComponent(dirs[i]) + '/';
return prefix + escapePath.substr(0, escapePath.length - 1);
},
kuki: {
prefix: '',
duration: 356,
domain: '',
path: '',
secure: false,
set: function(name, value, duration, domain, path, secure) {
name = this.prefix + name;
if (duration == null) duration = this.duration;
if (secure == null) secure = this.secure;
if ((domain == null) && this.domain) domain = this.domain;
if ((path == null) && this.path) path = this.path;
secure = secure ? true : false;
var date = new Date();
date.setTime(date.getTime() + (duration * 86400000));
var expires = date.toGMTString();
var str = name + '=' + value + '; expires=' + expires;
if (domain != null) str += '; domain=' + domain;
if (path != null) str += '; path=' + path;
if (secure) str += '; secure';
return (document.cookie = str) ? true : false;
},
get: function(name) {
name = this.prefix + name;
var nameEQ = name + '=';
var kukis = document.cookie.split(';');
var kuki;
for (var i = 0; i < kukis.length; i++) {
kuki = kukis[i];
while (kuki.charAt(0) == ' ')
kuki = kuki.substring(1, kuki.length);
if (kuki.indexOf(nameEQ) == 0)
return kuki.substring(nameEQ.length, kuki.length);
}
return null;
},
del: function(name) {
return this.set(name, '', -1);
},
isSet: function(name) {
return (this.get(name) != null);
}
}
};
})(jQuery);

View file

@ -0,0 +1,212 @@
/** This file is part of KCFinder project
*
* @desc Helper MD5 checksum function
* @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
*/
(function($) {
$.$.utf8encode = function(string) {
string = string.replace(/\r\n/g,"\n");
var utftext = "";
for (var n = 0; n < string.length; n++) {
var c = string.charCodeAt(n);
if (c < 128) {
utftext += String.fromCharCode(c);
} else if((c > 127) && (c < 2048)) {
utftext += String.fromCharCode((c >> 6) | 192);
utftext += String.fromCharCode((c & 63) | 128);
} else {
utftext += String.fromCharCode((c >> 12) | 224);
utftext += String.fromCharCode(((c >> 6) & 63) | 128);
utftext += String.fromCharCode((c & 63) | 128);
}
}
return utftext;
};
$.$.md5 = function(string) {
string = $.$.utf8encode(string);
var RotateLeft = function(lValue, iShiftBits) {
return (lValue<<iShiftBits) | (lValue>>>(32-iShiftBits));
},
AddUnsigned = function(lX, lY) {
var lX8 = (lX & 0x80000000),
lY8 = (lY & 0x80000000),
lX4 = (lX & 0x40000000),
lY4 = (lY & 0x40000000),
lResult = (lX & 0x3FFFFFFF) + (lY & 0x3FFFFFFF);
if (lX4 & lY4)
return (lResult ^ 0x80000000 ^ lX8 ^ lY8);
if (lX4 | lY4)
return (lResult & 0x40000000)
? (lResult ^ 0xC0000000 ^ lX8 ^ lY8)
: (lResult ^ 0x40000000 ^ lX8 ^ lY8);
else
return (lResult ^ lX8 ^ lY8);
},
F = function(x, y, z) { return (x & y) | ((~x) & z); },
G = function(x, y, z) { return (x & z) | (y & (~z)); },
H = function(x, y, z) { return (x ^ y ^ z); },
I = function(x, y, z) { return (y ^ (x | (~z))); },
FF = function(a, b, c, d, x, s, ac) {
a = AddUnsigned(a, AddUnsigned(AddUnsigned(F(b, c, d), x), ac));
return AddUnsigned(RotateLeft(a, s), b);
},
GG = function(a, b, c, d, x, s, ac) {
a = AddUnsigned(a, AddUnsigned(AddUnsigned(G(b, c, d), x), ac));
return AddUnsigned(RotateLeft(a, s), b);
},
HH = function(a, b, c, d, x, s, ac) {
a = AddUnsigned(a, AddUnsigned(AddUnsigned(H(b, c, d), x), ac));
return AddUnsigned(RotateLeft(a, s), b);
},
II = function(a, b, c, d, x, s, ac) {
a = AddUnsigned(a, AddUnsigned(AddUnsigned(I(b, c, d), x), ac));
return AddUnsigned(RotateLeft(a, s), b);
},
ConvertToWordArray = function(string) {
var lWordCount,
lMessageLength = string.length,
lNumberOfWords_temp1 = lMessageLength + 8,
lNumberOfWords_temp2 = (lNumberOfWords_temp1 - (lNumberOfWords_temp1 % 64)) / 64,
lNumberOfWords = (lNumberOfWords_temp2 + 1) * 16,
lWordArray = [lNumberOfWords - 1],
lBytePosition = 0,
lByteCount = 0;
while (lByteCount < lMessageLength) {
lWordCount = (lByteCount - (lByteCount % 4)) / 4;
lBytePosition = (lByteCount % 4) * 8;
lWordArray[lWordCount] = (lWordArray[lWordCount] | (string.charCodeAt(lByteCount) << lBytePosition));
lByteCount++;
}
lWordCount = (lByteCount - (lByteCount % 4)) / 4;
lBytePosition = (lByteCount % 4) * 8;
lWordArray[lWordCount] = lWordArray[lWordCount] | (0x80 << lBytePosition);
lWordArray[lNumberOfWords - 2] = lMessageLength << 3;
lWordArray[lNumberOfWords - 1] = lMessageLength >>> 29;
return lWordArray;
},
WordToHex = function(lValue) {
var lByte, lCount = 0,
WordToHexValue = "",
WordToHexValue_temp = "";
for (; lCount <= 3; lCount++) {
lByte = (lValue >>> (lCount * 8)) & 255;
WordToHexValue_temp = "0" + lByte.toString(16);
WordToHexValue = WordToHexValue + WordToHexValue_temp.substr(WordToHexValue_temp.length - 2,2);
}
return WordToHexValue;
},
AA, BB, CC, DD, k = 0,
x = ConvertToWordArray(string),
a = 0x67452301, b = 0xEFCDAB89,
c = 0x98BADCFE, d = 0x10325476,
S11 = 7, S12 = 12, S13 = 17, S14 = 22,
S21 = 5, S22 = 9, S23 = 14, S24 = 20,
S31 = 4, S32 = 11, S33 = 16, S34 = 23,
S41 = 6, S42 = 10, S43 = 15, S44 = 21;
for (; k < x.length; k += 16) {
AA = a; BB = b; CC = c; DD = d;
a = FF(a, b, c, d, x[k + 0], S11, 0xD76AA478);
d = FF(d, a, b, c, x[k + 1], S12, 0xE8C7B756);
c = FF(c, d, a, b, x[k + 2], S13, 0x242070DB);
b = FF(b, c, d, a, x[k + 3], S14, 0xC1BDCEEE);
a = FF(a, b, c, d, x[k + 4], S11, 0xF57C0FAF);
d = FF(d, a, b, c, x[k + 5], S12, 0x4787C62A);
c = FF(c, d, a, b, x[k + 6], S13, 0xA8304613);
b = FF(b, c, d, a, x[k + 7], S14, 0xFD469501);
a = FF(a, b, c, d, x[k + 8], S11, 0x698098D8);
d = FF(d, a, b, c, x[k + 9], S12, 0x8B44F7AF);
c = FF(c, d, a, b, x[k + 10], S13, 0xFFFF5BB1);
b = FF(b, c, d, a, x[k + 11], S14, 0x895CD7BE);
a = FF(a, b, c, d, x[k + 12], S11, 0x6B901122);
d = FF(d, a, b, c, x[k + 13], S12, 0xFD987193);
c = FF(c, d, a, b, x[k + 14], S13, 0xA679438E);
b = FF(b, c, d, a, x[k + 15], S14, 0x49B40821);
a = GG(a, b, c, d, x[k + 1], S21, 0xF61E2562);
d = GG(d, a, b, c, x[k + 6], S22, 0xC040B340);
c = GG(c, d, a, b, x[k + 11], S23, 0x265E5A51);
b = GG(b, c, d, a, x[k + 0], S24, 0xE9B6C7AA);
a = GG(a, b, c, d, x[k + 5], S21, 0xD62F105D);
d = GG(d, a, b, c, x[k + 10], S22, 0x2441453);
c = GG(c, d, a, b, x[k + 15], S23, 0xD8A1E681);
b = GG(b, c, d, a, x[k + 4], S24, 0xE7D3FBC8);
a = GG(a, b, c, d, x[k + 9], S21, 0x21E1CDE6);
d = GG(d, a, b, c, x[k + 14], S22, 0xC33707D6);
c = GG(c, d, a, b, x[k + 3], S23, 0xF4D50D87);
b = GG(b, c, d, a, x[k + 8], S24, 0x455A14ED);
a = GG(a, b, c, d, x[k + 13], S21, 0xA9E3E905);
d = GG(d, a, b, c, x[k + 2], S22, 0xFCEFA3F8);
c = GG(c, d, a, b, x[k + 7], S23, 0x676F02D9);
b = GG(b, c, d, a, x[k + 12], S24, 0x8D2A4C8A);
a = HH(a, b, c, d, x[k + 5], S31, 0xFFFA3942);
d = HH(d, a, b, c, x[k + 8], S32, 0x8771F681);
c = HH(c, d, a, b, x[k + 11], S33, 0x6D9D6122);
b = HH(b, c, d, a, x[k + 14], S34, 0xFDE5380C);
a = HH(a, b, c, d, x[k + 1], S31, 0xA4BEEA44);
d = HH(d, a, b, c, x[k + 4], S32, 0x4BDECFA9);
c = HH(c, d, a, b, x[k + 7], S33, 0xF6BB4B60);
b = HH(b, c, d, a, x[k + 10], S34, 0xBEBFBC70);
a = HH(a, b, c, d, x[k + 13], S31, 0x289B7EC6);
d = HH(d, a, b, c, x[k + 0], S32, 0xEAA127FA);
c = HH(c, d, a, b, x[k + 3], S33, 0xD4EF3085);
b = HH(b, c, d, a, x[k + 6], S34, 0x4881D05);
a = HH(a, b, c, d, x[k + 9], S31, 0xD9D4D039);
d = HH(d, a, b, c, x[k + 12], S32, 0xE6DB99E5);
c = HH(c, d, a, b, x[k + 15], S33, 0x1FA27CF8);
b = HH(b, c, d, a, x[k + 2], S34, 0xC4AC5665);
a = II(a, b, c, d, x[k + 0], S41, 0xF4292244);
d = II(d, a, b, c, x[k + 7], S42, 0x432AFF97);
c = II(c, d, a, b, x[k + 14], S43, 0xAB9423A7);
b = II(b, c, d, a, x[k + 5], S44, 0xFC93A039);
a = II(a, b, c, d, x[k + 12], S41, 0x655B59C3);
d = II(d, a, b, c, x[k + 3], S42, 0x8F0CCC92);
c = II(c, d, a, b, x[k + 10], S43, 0xFFEFF47D);
b = II(b, c, d, a, x[k + 1], S44, 0x85845DD1);
a = II(a, b, c, d, x[k + 8], S41, 0x6FA87E4F);
d = II(d, a, b, c, x[k + 15], S42, 0xFE2CE6E0);
c = II(c, d, a, b, x[k + 6], S43, 0xA3014314);
b = II(b, c, d, a, x[k + 13], S44, 0x4E0811A1);
a = II(a, b, c, d, x[k + 4], S41, 0xF7537E82);
d = II(d, a, b, c, x[k + 11], S42, 0xBD3AF235);
c = II(c, d, a, b, x[k + 2], S43, 0x2AD7D2BB);
b = II(b, c, d, a, x[k + 9], S44, 0xEB86D391);
a = AddUnsigned(a, AA);
b = AddUnsigned(b, BB);
c = AddUnsigned(c, CC);
d = AddUnsigned(d, DD);
}
return (WordToHex(a) + WordToHex(b) + WordToHex(c) + WordToHex(d)).toLowerCase();
};
})(jQuery);

View file

@ -0,0 +1,23 @@
/** This file is part of KCFinder project
*
* @desc Base JavaScript object properties
* @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
*/
var _ = {
opener: {},
support: {},
files: [],
clipboard: [],
labels: [],
shows: [],
orders: [],
cms: "",
scrollbarWidth: 20
};

View file

@ -0,0 +1,190 @@
/** This file is part of KCFinder project
*
* @desc Dialog boxes 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
*/
_.alert = function(text, field, options) {
var close = !field
? function() {}
: ($.isFunction(field)
? field
: function() { setTimeout(function() {field.focus(); }, 1); }
),
o = {
close: function() {
close();
if ($(this).hasClass('ui-dialog-content'))
$(this).dialog('destroy').detach();
}
};
$.extend(o, options);
return _.dialog(_.label("Warning"), text.replace("\n", "<br />\n"), o);
};
_.confirm = function(text, callback, options) {
var o = {
buttons: [
{
text: _.label("Yes"),
icons: {primary: "ui-icon-check"},
click: function() {
callback();
$(this).dialog('destroy').detach();
}
},
{
text: _.label("No"),
icons: {primary: "ui-icon-closethick"},
click: function() {
$(this).dialog('destroy').detach();
}
}
]
};
$.extend(o, options);
return _.dialog(_.label("Confirmation"), text, o);
};
_.dialog = function(title, content, options) {
if (!options) options = {};
var dlg = $('<div></div>');
dlg.hide().attr('title', title).html(content).appendTo('body');
if (dlg.find('form').get(0) && !dlg.find('form [type="submit"]').get(0))
dlg.find('form').append('<button type="submit" style="width:0;height:0;padding:0;margin:0;border:0;visibility:hidden">Submit</button>');
var o = {
resizable: false,
minHeight: false,
modal: true,
width: 351,
buttons: [
{
text: _.label("OK"),
icons: {primary: "ui-icon-check"},
click: function() {
if (typeof options.close != "undefined")
options.close();
if ($(this).hasClass('ui-dialog-content'))
$(this).dialog('destroy').detach();
}
}
],
close: function() {
if ($(this).hasClass('ui-dialog-content'))
$(this).dialog('destroy').detach();
},
closeText: false,
zindex: 1000000,
alone: false,
blur: false,
legend: false,
nopadding: false,
show: { effect: "fade", duration: 250 },
hide: { effect: "fade", duration: 250 }
};
$.extend(o, options);
if (o.alone)
$('.ui-dialog .ui-dialog-content').dialog('destroy').detach();
dlg.dialog(o);
if (o.nopadding)
dlg.css({padding: 0});
if (o.blur)
dlg.parent().find('.ui-dialog-buttonpane button').first().get(0).blur();
if (o.legend)
dlg.parent().find('.ui-dialog-buttonpane').prepend('<div style="float:left;padding:10px 0 0 10px">' + o.legend + '</div>');
if ($.agent && $.agent.firefox)
dlg.css('overflow-x', "hidden");
return dlg;
};
_.fileNameDialog = function(post, inputName, inputValue, url, labels, callBack, selectAll) {
var html = '<form method="post" action="javascript:;"><input name="' + inputName + '" type="text" /></form>',
submit = function() {
var name = dlg.find('[type="text"]').get(0);
name.value = $.trim(name.value);
if (name.value == "") {
_.alert(_.label(labels.errEmpty), function() {
name.focus();
});
return false;
} else if (/[\/\\]/g.test(name.value)) {
_.alert(_.label(labels.errSlash), function() {
name.focus();
});
return false;
} else if (name.value.substr(0, 1) == ".") {
_.alert(_.label(labels.errDot), function() {
name.focus();
});
return false;
}
post[inputName] = name.value;
$.ajax({
type: "post",
dataType: "json",
url: url,
data: post,
async: false,
success: function(data) {
if (_.check4errors(data, false))
return;
if (callBack) callBack(data);
dlg.dialog("destroy").detach();
},
error: function() {
_.alert(_.label("Unknown error."));
}
});
return false;
},
dlg = _.dialog(_.label(labels.title), html, {
width: 351,
buttons: [
{
text: _.label("OK"),
icons: {primary: "ui-icon-check"},
click: function() {
submit();
}
},
{
text: _.label("Cancel"),
icons: {primary: "ui-icon-closethick"},
click: function() {
$(this).dialog('destroy').detach();
}
}
]
}),
field = dlg.find('[type="text"]');
field.uniform().attr('value', inputValue).css('width', 310);
dlg.find('form').submit(submit);
if (!selectAll && /^(.+)\.[^\.]+$/ .test(inputValue))
field.selection(0, inputValue.replace(/^(.+)\.[^\.]+$/, "$1").length);
else {
field.get(0).focus();
field.get(0).select();
}
};

View file

@ -0,0 +1,259 @@
/** This file is part of KCFinder project
*
* @desc Object initializations
* @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
*/
_.init = function() {
if (!_.checkAgent()) return;
$('body').click(function() {
_.menu.hide();
}).rightClick();
$('#menu').unbind().click(function() {
return false;
});
_.initOpeners();
_.initSettings();
_.initContent();
_.initToolbar();
_.initResizer();
_.initDropUpload();
var div = $('<div></div>')
.css({width: 100, height: 100, overflow: 'auto', position: 'absolute', top: -1000, left: -1000})
.prependTo('body').append('<div></div>').find('div').css({width: '100%', height: 200});
_.scrollbarWidth = 100 - div.width();
div.parent().remove();
$.each($.agent, function(i) {
if (i != "platform")
$('body').addClass(i)
});
if ($.agent.platform)
$.each($.agent.platform, function(i) {
$('body').addClass(i)
});
if ($.mobile)
$('body').addClass("mobile");
};
_.checkAgent = function() {
if (($.agent.msie && !$.agent.opera && !$.agent.chromeframe && (parseInt($.agent.msie) < 9)) ||
($.agent.opera && (parseInt($.agent.version) < 10)) ||
($.agent.firefox && (parseFloat($.agent.firefox) < 1.8))
) {
var html = '<div style="padding:10px">Your browser is not capable to display KCFinder. Please update your browser or install another one: <a href="http://www.mozilla.com/firefox/" target="_blank">Mozilla Firefox</a>, <a href="http://www.apple.com/safari" target="_blank">Apple Safari</a>, <a href="http://www.google.com/chrome" target="_blank">Google Chrome</a>, <a href="http://www.opera.com/browser" target="_blank">Opera</a>.';
if ($.agent.msie && !$.agent.opera)
html += ' You may also install <a href="http://www.google.com/chromeframe" target="_blank">Google Chrome Frame ActiveX plugin</a> to get Internet Explorer 6, 7, 8 working.';
html += '</div>';
$('body').html(html);
return false;
}
return true;
};
_.initOpeners = function() {
try {
// TinyMCE 3
if (_.opener.name == "tinymce") {
if (typeof tinyMCEPopup == "undefined")
_.opener.name = null;
else
_.opener.callBack = true;
// TinyMCE 4
} else if (_.opener.name == "tinymce4")
_.opener.callBack = true;
// CKEditor
else if (_.opener.name == "ckeditor") {
if (window.parent && window.parent.CKEDITOR)
_.opener.CKEditor.object = window.parent.CKEDITOR;
else if (window.opener && window.opener.CKEDITOR) {
_.opener.CKEditor.object = window.opener.CKEDITOR;
_.opener.callBack = true;
} else
_.opener.CKEditor = null;
// FCKeditor
} else if ((!_.opener.name || (_.opener.name == "fckeditor")) && window.opener && window.opener.SetUrl) {
_.opener.name = "fckeditor";
_.opener.callBack = true;
}
// Custom callback
if (!_.opener.callBack) {
if ((window.opener && window.opener.KCFinder && window.opener.KCFinder.callBack) ||
(window.parent && window.parent.KCFinder && window.parent.KCFinder.callBack)
)
_.opener.callBack = window.opener
? window.opener.KCFinder.callBack
: window.parent.KCFinder.callBack;
if ((
window.opener &&
window.opener.KCFinder &&
window.opener.KCFinder.callBackMultiple
) || (
window.parent &&
window.parent.KCFinder &&
window.parent.KCFinder.callBackMultiple
)
)
_.opener.callBackMultiple = window.opener
? window.opener.KCFinder.callBackMultiple
: window.parent.KCFinder.callBackMultiple;
}
} catch(e) {}
};
_.initContent = function() {
$('div#folders').html(_.label("Loading folders..."));
$('div#files').html(_.label("Loading files..."));
$.ajax({
type: "get",
dataType: "json",
url: _.getURL("init"),
async: false,
success: function(data) {
if (_.check4errors(data))
return;
_.dirWritable = data.dirWritable;
$('#folders').html(_.buildTree(data.tree));
_.setTreeData(data.tree);
_.setTitle("KCFinder: /" + _.dir);
_.initFolders();
_.files = data.files ? data.files : [];
_.orderFiles();
},
error: function() {
$('div#folders').html(_.label("Unknown error."));
$('div#files').html(_.label("Unknown error."));
}
});
};
_.initResizer = function() {
var cursor = ($.agent.opera) ? 'move' : 'col-resize';
$('#resizer').css('cursor', cursor).draggable({
axis: 'x',
start: function() {
$(this).css({
opacity: "0.4",
filter: "alpha(opacity=40)"
});
$('#all').css('cursor', cursor);
},
stop: function() {
$(this).css({
opacity: "0",
filter: "alpha(opacity=0)"
});
$('#all').css('cursor', "");
var jLeft = $('#left'),
jRight = $('#right'),
jFiles = $('#files'),
jFolders = $('#folders'),
left = parseInt($(this).css('left')) + parseInt($(this).css('width')),
w = 0, r;
$('#toolbar a').each(function() {
if ($(this).css('display') != "none")
w += $(this).outerWidth(true);
});
r = $(window).width() - w;
if (left < 100)
left = 100;
if (left > r)
left = r;
var right = $(window).width() - left;
jLeft.css('width', left);
jRight.css('width', right);
jFiles.css('width', jRight.innerWidth() - jFiles.outerHSpace());
$('#resizer').css({
left: jLeft.outerWidth() - jFolders.outerRightSpace('m'),
width: jFolders.outerRightSpace('m') + jFiles.outerLeftSpace('m')
});
_.fixFilesHeight();
}
});
};
_.resize = function() {
var jLeft = $('#left'),
jRight = $('#right'),
jStatus = $('#status'),
jFolders = $('#folders'),
jFiles = $('#files'),
jResizer = $('#resizer'),
jWindow = $(window);
jLeft.css({
width: "25%",
height: jWindow.height() - jStatus.outerHeight()
});
jRight.css({
width: "75%",
height: jWindow.height() - jStatus.outerHeight()
});
$('#toolbar').css('height', $('#toolbar a').outerHeight());
jResizer.css('height', $(window).height());
jFolders.css('height', jLeft.outerHeight() - jFolders.outerVSpace());
_.fixFilesHeight();
var width = jLeft.outerWidth() + jRight.outerWidth();
jStatus.css('width', width);
while (jStatus.outerWidth() > width)
jStatus.css('width', parseInt(jStatus.css('width')) - 1);
while (jStatus.outerWidth() < width)
jStatus.css('width', parseInt(jStatus.css('width')) + 1);
jFiles.css('width', jRight.innerWidth() - jFiles.outerHSpace());
jResizer.css({
left: jLeft.outerWidth() - jFolders.outerRightSpace('m'),
width: jFolders.outerRightSpace('m') + jFiles.outerLeftSpace('m')
});
};
_.setTitle = function(title) {
document.title = title;
if (_.opener.name == "tinymce")
tinyMCEPopup.editor.windowManager.setTitle(window, title);
else if (_.opener.name == "tinymce4") {
var ifr = $('iframe[src*="browse.php?opener=tinymce4&"]', window.parent.document),
path = ifr.attr('src').split('browse.php?')[0];
ifr.parent().parent().find('div.mce-title').html('<span style="padding:0 0 0 28px;margin:-2px 0 -3px -6px;display:block;font-size:1em;font-weight:bold;background:url(' + path + 'themes/default/img/kcf_logo.png) left center no-repeat">' + title + '</span>');
}
};
_.fixFilesHeight = function() {
var jFiles = $('#files'),
jSettings = $('#settings');
jFiles.css('height',
$('#left').outerHeight() - $('#toolbar').outerHeight() - jFiles.outerVSpace() -
((jSettings.css('display') != "none") ? jSettings.outerHeight() : 0)
);
};

View file

@ -0,0 +1,309 @@
/** This file is part of KCFinder project
*
* @desc Toolbar 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
*/
_.initToolbar = function() {
$('#toolbar').disableTextSelect();
$('#toolbar a').click(function() {
_.menu.hide();
});
if (!$.$.kuki.isSet('displaySettings'))
$.$.kuki.set('displaySettings', "off");
if ($.$.kuki.get('displaySettings') == "on") {
$('#toolbar a[href="kcact:settings"]').addClass('selected');
$('#settings').show();
_.resize();
}
$('#toolbar a[href="kcact:settings"]').click(function () {
var jSettings = $('#settings');
if (jSettings.css('display') == "none") {
$(this).addClass('selected');
$.$.kuki.set('displaySettings', "on");
jSettings.show();
_.fixFilesHeight();
} else {
$(this).removeClass('selected');
$.$.kuki.set('displaySettings', "off");
jSettings.hide();
_.fixFilesHeight();
}
return false;
});
$('#toolbar a[href="kcact:refresh"]').click(function() {
_.refresh();
return false;
});
$('#toolbar a[href="kcact:maximize"]').click(function() {
_.maximize(this);
return false;
});
$('#toolbar a[href="kcact:about"]').click(function() {
var html = '<div class="box about">' +
'<div class="head"><a href="http://kcfinder.sunhater.com" target="_blank">KCFinder</a> ' + _.version + '</div>';
if (_.support.check4Update)
html += '<div id="checkver"><span class="loading"><span>' + _.label("Checking for new version...") + '</span></span></div>';
html +=
'<div>' + _.label("Licenses:") + ' <a href="http://opensource.org/licenses/GPL-3.0" target="_blank">GPLv3</a> & <a href="http://opensource.org/licenses/LGPL-3.0" target="_blank">LGPLv3</a></div>' +
'<div>Copyright &copy;2010-2014 Pavel Tzonkov</div>' +
'</div>';
var dlg = _.dialog(_.label("About"), html, {width: 301});
setTimeout(function() {
$.ajax({
dataType: "json",
url: _.getURL('check4Update'),
async: true,
success: function(data) {
if (!dlg.html().length)
return;
var span = $('#checkver');
span.removeClass('loading');
if (!data.version) {
span.html(_.label("Unable to connect!"));
return;
}
if (_.version < data.version)
span.html('<a href="http://kcfinder.sunhater.com/download" target="_blank">' + _.label("Download version {version} now!", {version: data.version}) + '</a>');
else
span.html(_.label("KCFinder is up to date!"));
},
error: function() {
if (!dlg.html().length)
return;
$('#checkver').removeClass('loading').html(_.label("Unable to connect!"));
}
});
}, 1000);
return false;
});
_.initUploadButton();
};
_.initUploadButton = function() {
var btn = $('#toolbar a[href="kcact:upload"]');
if (!_.access.files.upload) {
btn.hide();
return;
}
var top = btn.get(0).offsetTop,
width = btn.outerWidth(),
height = btn.outerHeight(),
jInput = $('#upload input');
$('#toolbar').prepend('<div id="upload" style="top:' + top + 'px;width:' + width + 'px;height:' + height + 'px"><form enctype="multipart/form-data" method="post" target="uploadResponse" action="' + _.getURL('upload') + '"><input type="file" name="upload[]" onchange="_.uploadFile(this.form)" style="height:' + height + 'px" multiple="multiple" /><input type="hidden" name="dir" value="" /></form></div>');
jInput.css('margin-left', "-" + (jInput.outerWidth() - width));
$('#upload').mouseover(function() {
$('#toolbar a[href="kcact:upload"]').addClass('hover');
}).mouseout(function() {
$('#toolbar a[href="kcact:upload"]').removeClass('hover');
});
};
_.uploadFile = function(form) {
if (!_.dirWritable) {
_.alert(_.label("Cannot write to upload folder."));
$('#upload').detach();
_.initUploadButton();
return;
}
form.elements[1].value = _.dir;
$('<iframe id="uploadResponse" name="uploadResponse" src="javascript:;"></iframe>').prependTo(document.body);
$('#loading').html(_.label("Uploading file...")).show();
form.submit();
$('#uploadResponse').load(function() {
var response = $(this).contents().find('body').text();
$('#loading').hide();
response = response.split("\n");
var selected = [], errors = [];
$.each(response, function(i, row) {
if (row.substr(0, 1) == "/")
selected[selected.length] = row.substr(1, row.length - 1);
else
errors[errors.length] = row;
});
if (errors.length) {
errors = errors.join("\n");
if (errors.replace(/^\s+/g, "").replace(/\s+$/g, "").length)
_.alert(errors);
}
if (!selected.length)
selected = null;
_.refresh(selected);
$('#upload').detach();
setTimeout(function() {
$('#uploadResponse').detach();
}, 1);
_.initUploadButton();
});
};
_.maximize = function(button) {
// TINYMCE 3
if (_.opener.name == "tinymce") {
var par = window.parent.document,
ifr = $('iframe[src*="browse.php?opener=tinymce&"]', par),
id = parseInt(ifr.attr('id').replace(/^mce_(\d+)_ifr$/, "$1")),
win = $('#mce_' + id, par);
if ($(button).hasClass('selected')) {
$(button).removeClass('selected');
win.css({
left: _.maximizeMCE.left,
top: _.maximizeMCE.top,
width: _.maximizeMCE.width,
height: _.maximizeMCE.height
});
ifr.css({
width: _.maximizeMCE.width - _.maximizeMCE.Hspace,
height: _.maximizeMCE.height - _.maximizeMCE.Vspace
});
} else {
$(button).addClass('selected')
_.maximizeMCE = {
width: parseInt(win.css('width')),
height: parseInt(win.css('height')),
left: win.position().left,
top: win.position().top,
Hspace: parseInt(win.css('width')) - parseInt(ifr.css('width')),
Vspace: parseInt(win.css('height')) - parseInt(ifr.css('height'))
};
var width = $(window.top).width(),
height = $(window.top).height();
win.css({
left: $(window.parent).scrollLeft(),
top: $(window.parent).scrollTop(),
width: width,
height: height
});
ifr.css({
width: width - _.maximizeMCE.Hspace,
height: height - _.maximizeMCE.Vspace
});
}
// TINYMCE 4
} else if (_.opener.name == "tinymce4") {
var par = window.parent.document,
ifr = $('iframe[src*="browse.php?opener=tinymce4&"]', par).parent(),
win = ifr.parent();
if ($(button).hasClass('selected')) {
$(button).removeClass('selected');
win.css({
left: _.maximizeMCE4.left,
top: _.maximizeMCE4.top,
width: _.maximizeMCE4.width,
height: _.maximizeMCE4.height
});
ifr.css({
width: _.maximizeMCE4.width,
height: _.maximizeMCE4.height - _.maximizeMCE4.Vspace
});
} else {
$(button).addClass('selected');
_.maximizeMCE4 = {
width: parseInt(win.css('width')),
height: parseInt(win.css('height')),
left: win.position().left,
top: win.position().top,
Vspace: win.outerHeight(true) - ifr.outerHeight(true) - 1
};
var width = $(window.top).width(),
height = $(window.top).height();
win.css({
left: 0,
top: 0,
width: width,
height: height
});
ifr.css({
width: width,
height: height - _.maximizeMCE4.Vspace
});
}
// PUPUP WINDOW
} else if (window.opener) {
window.moveTo(0, 0);
width = screen.availWidth;
height = screen.availHeight;
if ($.agent.opera)
height -= 50;
window.resizeTo(width, height);
} else {
if (window.parent) {
var el = null;
$(window.parent.document).find('iframe').each(function() {
if (this.src.replace('/?', '?') == window.location.href.replace('/?', '?')) {
el = this;
return false;
}
});
// IFRAME
if (el !== null)
$(el).toggleFullscreen(window.parent.document);
// SELF WINDOW
else
$('body').toggleFullscreen();
} else
$('body').toggleFullscreen();
}
};
_.refresh = function(selected) {
_.fadeFiles();
$.ajax({
type: "post",
dataType: "json",
url: _.getURL("chDir"),
data: {dir: _.dir},
async: false,
success: function(data) {
if (_.check4errors(data)) {
$('#files > div').css({opacity: "", filter: ""});
return;
}
_.dirWritable = data.dirWritable;
_.files = data.files ? data.files : [];
_.orderFiles(null, selected);
_.statusDir();
},
error: function() {
$('#files > div').css({opacity: "", filter: ""});
$('#files').html(_.label("Unknown error."));
}
});
};

View file

@ -0,0 +1,86 @@
/** This file is part of KCFinder project
*
* @desc Settings panel 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
*/
_.initSettings = function() {
$('#settings').disableTextSelect();
$('#settings fieldset, #settings input, #settings label').uniform();
if (!_.shows.length)
$('#show input[type="checkbox"]').each(function(i) {
_.shows[i] = this.name;
});
var shows = _.shows;
if (!$.$.kuki.isSet('showname')) {
$.$.kuki.set('showname', "on");
$.each(shows, function (i, val) {
if (val != "name") $.$.kuki.set('show' + val, "off");
});
}
$('#show input[type="checkbox"]').click(function() {
$.$.kuki.set('show' + this.name, this.checked ? "on" : "off")
$('#files .file div.' + this.name).css('display', this.checked ? "block" : "none");
});
$.each(shows, function(i, val) {
$('#show input[name="' + val + '"]').get(0).checked = ($.$.kuki.get('show' + val) == "on") ? "checked" : "";
});
if (!_.orders.length)
$('#order input[type="radio"]').each(function(i) {
_.orders[i] = this.value;
})
var orders = _.orders;
if (!$.$.kuki.isSet('order'))
$.$.kuki.set('order', "name");
if (!$.$.kuki.isSet('orderDesc'))
$.$.kuki.set('orderDesc', "off");
$('#order input[value="' + $.$.kuki.get('order') + '"]').get(0).checked = true;
$('#order input[name="desc"]').get(0).checked = ($.$.kuki.get('orderDesc') == "on");
$('#order input[type="radio"]').click(function() {
$.$.kuki.set('order', this.value);
_.orderFiles();
});
$('#order input[name="desc"]').click(function() {
$.$.kuki.set('orderDesc', this.checked ? 'on' : "off");
_.orderFiles();
});
if (!$.$.kuki.isSet('view'))
$.$.kuki.set('view', "thumbs");
if ($.$.kuki.get('view') == "list")
$('#show').parent().hide();
$('#view input[value="' + $.$.kuki.get('view') + '"]').get(0).checked = true;
$('#view input').click(function() {
var view = this.value;
if ($.$.kuki.get('view') != view) {
$.$.kuki.set('view', view);
if (view == "list")
$('#show').parent().hide();
else
$('#show').parent().show();
}
_.fixFilesHeight();
_.refresh();
});
};

View 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()
}
};

View file

@ -0,0 +1,184 @@
/** This file is part of KCFinder project
*
* @desc Folder 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
*/
_.initFolders = function() {
$('#folders').scroll(function() {
_.menu.hide();
}).disableTextSelect();
$('div.folder > a').unbind().click(function() {
_.menu.hide();
return false;
});
$('div.folder > a > span.brace').unbind().click(function() {
if ($(this).hasClass('opened') || $(this).hasClass('closed'))
_.expandDir($(this).parent());
});
$('div.folder > a > span.folder').unbind().click(function() {
_.changeDir($(this).parent());
}).rightClick(function(el, e) {
_.menuDir($(el).parent(), e);
});
if ($.mobile) {
$('div.folder > a > span.folder').on('taphold', function() {
_.menuDir($(this).parent(), {
pageX: $(this).offset().left + 1,
pageY: $(this).offset().top + $(this).outerHeight()
});
});
}
};
_.setTreeData = function(data, path) {
if (!path)
path = "";
else if (path.length && (path.substr(path.length - 1, 1) != '/'))
path += "/";
path += data.name;
var selector = '#folders a[href="kcdir:/' + $.$.escapeDirs(path) + '"]';
$(selector).data({
name: data.name,
path: path,
readable: data.readable,
writable: data.writable,
removable: data.removable,
hasDirs: data.hasDirs
});
$(selector + ' span.folder').addClass(data.current ? 'current' : 'regular');
if (data.dirs && data.dirs.length) {
$(selector + ' span.brace').addClass('opened');
$.each(data.dirs, function(i, cdir) {
_.setTreeData(cdir, path + "/");
});
} else if (data.hasDirs)
$(selector + ' span.brace').addClass('closed');
};
_.buildTree = function(root, path) {
if (!path) path = "";
path += root.name;
var cdir, html = '<div class="folder"><a href="kcdir:/' + $.$.escapeDirs(path) + '"><span class="brace">&nbsp;</span><span class="folder">' + $.$.htmlData(root.name) + '</span></a>';
if (root.dirs) {
html += '<div class="folders">';
for (var i = 0; i < root.dirs.length; i++) {
cdir = root.dirs[i];
html += _.buildTree(cdir, path + "/");
}
html += '</div>';
}
html += '</div>';
return html;
};
_.expandDir = function(dir) {
var path = dir.data('path');
if (dir.children('.brace').hasClass('opened')) {
dir.parent().children('.folders').hide(500, function() {
if (path == _.dir.substr(0, path.length))
_.changeDir(dir);
});
dir.children('.brace').removeClass('opened').addClass('closed');
} else {
if (dir.parent().children('.folders').get(0)) {
dir.parent().children('.folders').show(500);
dir.children('.brace').removeClass('closed').addClass('opened');
} else if (!$('#loadingDirs').get(0)) {
dir.parent().append('<div id="loadingDirs">' + _.label("Loading folders...") + '</div>');
$('#loadingDirs').hide().show(200, function() {
$.ajax({
type: "post",
dataType: "json",
url: _.getURL("expand"),
data: {dir: path},
async: false,
success: function(data) {
$('#loadingDirs').hide(200, function() {
$('#loadingDirs').detach();
});
if (_.check4errors(data))
return;
var html = "";
$.each(data.dirs, function(i, cdir) {
html += '<div class="folder"><a href="kcdir:/' + $.$.escapeDirs(path + '/' + cdir.name) + '"><span class="brace">&nbsp;</span><span class="folder">' + $.$.htmlData(cdir.name) + '</span></a></div>';
});
if (html.length) {
dir.parent().append('<div class="folders">' + html + '</div>');
var folders = $(dir.parent().children('.folders').first());
folders.hide();
$(folders).show(500);
$.each(data.dirs, function(i, cdir) {
_.setTreeData(cdir, path);
});
}
if (data.dirs.length)
dir.children('.brace').removeClass('closed').addClass('opened');
else
dir.children('.brace').removeClass('opened closed');
_.initFolders();
_.initDropUpload();
},
error: function() {
$('#loadingDirs').detach();
_.alert(_.label("Unknown error."));
}
});
});
}
}
};
_.changeDir = function(dir) {
if (dir.children('span.folder').hasClass('regular')) {
$('div.folder > a > span.folder').removeClass('current regular').addClass('regular');
dir.children('span.folder').removeClass('regular').addClass('current');
$('#files').html(_.label("Loading files..."));
$.ajax({
type: "post",
dataType: "json",
url: _.getURL("chDir"),
data: {dir: dir.data('path')},
async: false,
success: function(data) {
if (_.check4errors(data))
return;
_.files = data.files;
_.orderFiles();
_.dir = dir.data('path');
_.dirWritable = data.dirWritable;
_.setTitle("KCFinder: /" + _.dir);
_.statusDir();
},
error: function() {
$('#files').html(_.label("Unknown error."));
}
});
}
};
_.statusDir = function() {
var i = 0, size = 0;
for (; i < _.files.length; i++)
size += _.files[i].size;
size = _.humanSize(size);
$('#fileinfo').html(_.files.length + " " + _.label("files") + " (" + size + ")");
};
_.refreshDir = function(dir) {
var path = dir.data('path');
if (dir.children('.brace').hasClass('opened') || dir.children('.brace').hasClass('closed'))
dir.children('.brace').removeClass('opened').addClass('closed');
dir.parent().children('.folders').first().detach();
if (path == _.dir.substr(0, path.length))
_.changeDir(dir);
_.expandDir(dir);
return true;
};

View file

@ -0,0 +1,589 @@
/** This file is part of KCFinder project
*
* @desc Context menus
* @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
*/
_.menu = {
init: function() {
$('#menu').html("<ul></ul>").css('display', 'none');
},
addItem: function(href, label, callback, denied) {
if (typeof denied == "undefined")
denied = false;
$('#menu ul').append('<li><a href="' + href + '"' + (denied ? ' class="denied"' : "") + '><span>' + label + '</span></a></li>');
if (!denied && $.isFunction(callback))
$('#menu a[href="' + href + '"]').click(function() {
_.menu.hide();
return callback();
});
},
addDivider: function() {
if ($('#menu ul').html().length)
$('#menu ul').append("<li>-</li>");
},
show: function(e) {
var dlg = $('#menu'),
ul = $('#menu ul');
if (ul.html().length) {
dlg.find('ul').first().menu();
if (typeof e != "undefined") {
var left = e.pageX,
top = e.pageY,
win = $(window);
if ((dlg.outerWidth() + left) > win.width())
left = win.width() - dlg.outerWidth();
if ((dlg.outerHeight() + top) > win.height())
top = win.height() - dlg.outerHeight();
dlg.hide().css({
left: left,
top: top,
width: ""
}).fadeIn('fast');
} else
dlg.fadeIn('fast');
} else
ul.detach();
},
hide: function() {
$('#clipboard').removeClass('selected');
$('div.folder > a > span.folder').removeClass('context');
$('#menu').hide().css('width', "").html("").data('title', null).unbind().click(function() {
return false;
});
$(document).unbind('keydown').keydown(function(e) {
return !_.selectAll(e);
});
}
};
// FILE CONTEXT MENU
_.menuFile = function(file, e) {
_.menu.init();
var data = file.data(),
files = $('.file.selected').get();
// MULTIPLE FILES MENU
if (file.hasClass('selected') && files.length && (files.length > 1)) {
var thumb = false,
notWritable = 0,
cdata;
$.each(files, function(i, cfile) {
cdata = $(cfile).data();
if (cdata.thumb) thumb = true;
if (!data.writable) notWritable++;
});
if (_.opener.callBackMultiple) {
// SELECT FILES
_.menu.addItem("kcact:pick", _.label("Select"), function() {
_.returnFiles(files);
return false;
});
// SELECT THUMBNAILS
if (thumb)
_.menu.addItem("kcact:pick_thumb", _.label("Select Thumbnails"), function() {
_.returnThumbnails(files);
return false;
});
}
if (data.thumb || data.smallThumb || _.support.zip) {
_.menu.addDivider();
// VIEW IMAGE
if (data.thumb || data.smallThumb)
_.menu.addItem("kcact:view", _.label("View"), function() {
_.viewImage(data);
});
// DOWNLOAD
if (_.support.zip)
_.menu.addItem("kcact:download", _.label("Download"), function() {
var pfiles = [];
$.each(files, function(i, cfile) {
pfiles[i] = $(cfile).data('name');
});
_.post(_.getURL('downloadSelected'), {dir:_.dir, files:pfiles});
return false;
});
}
// ADD TO CLIPBOARD
if (_.access.files.copy || _.access.files.move) {
_.menu.addDivider();
_.menu.addItem("kcact:clpbrdadd", _.label("Add to Clipboard"), function() {
var msg = '';
$.each(files, function(i, cfile) {
var cdata = $(cfile).data(),
failed = false;
for (i = 0; i < _.clipboard.length; i++)
if ((_.clipboard[i].name == cdata.name) &&
(_.clipboard[i].dir == _.dir)
) {
failed = true;
msg += cdata.name + ": " + _.label("This file is already added to the Clipboard.") + "\n";
break;
}
if (!failed) {
cdata.dir = _.dir;
_.clipboard[_.clipboard.length] = cdata;
}
});
_.initClipboard();
if (msg.length) _.alert(msg.substr(0, msg.length - 1));
return false;
});
}
// DELETE
if (_.access.files['delete']) {
_.menu.addDivider();
_.menu.addItem("kcact:rm", _.label("Delete"), function() {
if ($(this).hasClass('denied')) return false;
var failed = 0,
dfiles = [];
$.each(files, function(i, cfile) {
var cdata = $(cfile).data();
if (!cdata.writable)
failed++;
else
dfiles[dfiles.length] = _.dir + "/" + cdata.name;
});
if (failed == files.length) {
_.alert(_.label("The selected files are not removable."));
return false;
}
var go = function(callBack) {
_.fadeFiles();
$.ajax({
type: "post",
dataType: "json",
url: _.getURL("rm_cbd"),
data: {files:dfiles},
async: false,
success: function(data) {
if (callBack) callBack();
_.check4errors(data);
_.refresh();
},
error: function() {
if (callBack) callBack();
$('#files > div').css({
opacity: "",
filter: ""
});
_.alert(_.label("Unknown error."));
}
});
};
if (failed)
_.confirm(
_.label("{count} selected files are not removable. Do you want to delete the rest?", {count:failed}),
go
);
else
_.confirm(
_.label("Are you sure you want to delete all selected files?"),
go
);
return false;
}, (notWritable == files.length));
}
_.menu.show(e);
// SINGLE FILE MENU
} else {
$('.file').removeClass('selected');
file.addClass('selected');
$('#fileinfo').html($.$.htmlData(data.name) + " (" + _.humanSize(data.size) + ", " + data.date + ")");
if (_.opener.callBack || _.opener.callBackMultiple) {
// SELECT FILE
_.menu.addItem("kcact:pick", _.label("Select"), function() {
_.returnFile(file);
return false;
});
// SELECT THUMBNAIL
if (data.thumb)
_.menu.addItem("kcact:pick_thumb", _.label("Select Thumbnail"), function() {
_.returnFile(_.thumbsURL + "/" + _.dir + "/" + data.name);
return false;
});
_.menu.addDivider();
}
// VIEW IMAGE
if (data.thumb || data.smallThumb)
_.menu.addItem("kcact:view", _.label("View"), function() {
_.viewImage(data);
});
// DOWNLOAD
_.menu.addItem("kcact:download", _.label("Download"), function() {
$('#menu').html('<form id="downloadForm" method="post" action="' + _.getURL('download') + '"><input type="hidden" name="dir" /><input type="hidden" name="file" /></form>');
$('#downloadForm input').get(0).value = _.dir;
$('#downloadForm input').get(1).value = data.name;
$('#downloadForm').submit();
return false;
});
// ADD TO CLIPBOARD
if (_.access.files.copy || _.access.files.move) {
_.menu.addDivider();
_.menu.addItem("kcact:clpbrdadd", _.label("Add to Clipboard"), function() {
for (i = 0; i < _.clipboard.length; i++)
if ((_.clipboard[i].name == data.name) &&
(_.clipboard[i].dir == _.dir)
) {
_.alert(_.label("This file is already added to the Clipboard."));
return false;
}
var cdata = data;
cdata.dir = _.dir;
_.clipboard[_.clipboard.length] = cdata;
_.initClipboard();
return false;
});
}
if (_.access.files.rename || _.access.files['delete'])
_.menu.addDivider();
// RENAME
if (_.access.files.rename)
_.menu.addItem("kcact:mv", _.label("Rename..."), function() {
if (!data.writable) return false;
_.fileNameDialog(
{dir: _.dir, file: data.name},
'newName', data.name, _.getURL("rename"), {
title: "New file name:",
errEmpty: "Please enter new file name.",
errSlash: "Unallowable characters in file name.",
errDot: "File name shouldn't begins with '.'"
},
_.refresh
);
return false;
}, !data.writable);
// DELETE
if (_.access.files['delete'])
_.menu.addItem("kcact:rm", _.label("Delete"), function() {
if (!data.writable) return false;
_.confirm(_.label("Are you sure you want to delete this file?"),
function(callBack) {
$.ajax({
type: "post",
dataType: "json",
url: _.getURL("delete"),
data: {dir: _.dir, file: data.name},
async: false,
success: function(data) {
if (callBack) callBack();
_.clearClipboard();
if (_.check4errors(data))
return;
_.refresh();
},
error: function() {
if (callBack) callBack();
_.alert(_.label("Unknown error."));
}
});
}
);
return false;
}, !data.writable);
_.menu.show(e);
}
};
// FOLDER CONTEXT MENU
_.menuDir = function(dir, e) {
_.menu.init();
var data = dir.data(),
html = '<ul>';
if (_.clipboard && _.clipboard.length) {
// COPY CLIPBOARD
if (_.access.files.copy)
_.menu.addItem("kcact:cpcbd", _.label("Copy {count} files", {count: _.clipboard.length}), function() {
_.copyClipboard(data.path);
return false;
}, !data.writable);
// MOVE CLIPBOARD
if (_.access.files.move)
_.menu.addItem("kcact:mvcbd", _.label("Move {count} files", {count: _.clipboard.length}), function() {
_.moveClipboard(data.path);
return false;
}, !data.writable);
if (_.access.files.copy || _.access.files.move)
_.menu.addDivider();
}
// REFRESH
_.menu.addItem("kcact:refresh", _.label("Refresh"), function() {
_.refreshDir(dir);
return false;
});
// DOWNLOAD
if (_.support.zip) {
_.menu.addDivider();
_.menu.addItem("kcact:download", _.label("Download"), function() {
_.post(_.getURL("downloadDir"), {dir:data.path});
return false;
});
}
if (_.access.dirs.create || _.access.dirs.rename || _.access.dirs['delete'])
_.menu.addDivider();
// NEW SUBFOLDER
if (_.access.dirs.create)
_.menu.addItem("kcact:mkdir", _.label("New Subfolder..."), function(e) {
if (!data.writable) return false;
_.fileNameDialog(
{dir: data.path},
"newDir", "", _.getURL("newDir"), {
title: "New folder name:",
errEmpty: "Please enter new folder name.",
errSlash: "Unallowable characters in folder name.",
errDot: "Folder name shouldn't begins with '.'"
}, function() {
_.refreshDir(dir);
_.initDropUpload();
if (!data.hasDirs) {
dir.data('hasDirs', true);
dir.children('span.brace').addClass('closed');
}
}
);
return false;
}, !data.writable);
// RENAME
if (_.access.dirs.rename)
_.menu.addItem("kcact:mvdir", _.label("Rename..."), function(e) {
if (!data.removable) return false;
_.fileNameDialog(
{dir: data.path},
"newName", data.name, _.getURL("renameDir"), {
title: "New folder name:",
errEmpty: "Please enter new folder name.",
errSlash: "Unallowable characters in folder name.",
errDot: "Folder name shouldn't begins with '.'"
}, function(dt) {
if (!dt.name) {
_.alert(_.label("Unknown error."));
return;
}
var currentDir = (data.path == _.dir);
dir.children('span.folder').html($.$.htmlData(dt.name));
dir.data('name', dt.name);
dir.data('path', $.$.dirname(data.path) + '/' + dt.name);
if (currentDir)
_.dir = dir.data('path');
_.initDropUpload();
},
true
);
return false;
}, !data.removable);
// DELETE
if (_.access.dirs['delete'])
_.menu.addItem("kcact:rmdir", _.label("Delete"), function() {
if (!data.removable) return false;
_.confirm(
_.label("Are you sure you want to delete this folder and all its content?"),
function(callBack) {
$.ajax({
type: "post",
dataType: "json",
url: _.getURL("deleteDir"),
data: {dir: data.path},
async: false,
success: function(data) {
if (callBack) callBack();
if (_.check4errors(data))
return;
dir.parent().hide(500, function() {
var folders = dir.parent().parent();
var pDir = folders.parent().children('a').first();
dir.parent().detach();
if (!folders.children('div.folder').get(0)) {
pDir.children('span.brace').first().removeClass('opened closed');
pDir.parent().children('.folders').detach();
pDir.data('hasDirs', false);
}
if (pDir.data('path') == _.dir.substr(0, pDir.data('path').length))
_.changeDir(pDir);
_.initDropUpload();
});
},
error: function() {
if (callBack) callBack();
_.alert(_.label("Unknown error."));
}
});
}
);
return false;
}, !data.removable);
_.menu.show(e);
$('div.folder > a > span.folder').removeClass('context');
if (dir.children('span.folder').hasClass('regular'))
dir.children('span.folder').addClass('context');
};
// CLIPBOARD MENU
_.openClipboard = function() {
if (!_.clipboard || !_.clipboard.length) return;
// CLOSE MENU
if ($('#menu a[href="kcact:clrcbd"]').html()) {
$('#clipboard').removeClass('selected');
_.menu.hide();
return;
}
setTimeout(function() {
_.menu.init();
var dlg = $('#menu'),
jStatus = $('#status'),
html = '<li class="list"><div>';
// CLIPBOARD FILES
$.each(_.clipboard, function(i, val) {
var icon = $.$.getFileExtension(val.name);
if (val.thumb)
icon = ".image";
else if (!val.smallIcon || !icon.length)
icon = ".";
icon = "themes/" + _.theme + "/img/files/small/" + icon + ".png";
html += '<a title="' + _.label("Click to remove from the Clipboard") + '" onclick="_.removeFromClipboard(' + i + ')"' + ((i == 0) ? ' class="first"' : "") + '><span style="background-image:url(' + $.$.escapeDirs(icon) + ')">' + $.$.htmlData($.$.basename(val.name)) + '</span></a>';
});
html += '</div></li><li class="div-files">-</li>';
$('#menu ul').append(html);
// DOWNLOAD
if (_.support.zip)
_.menu.addItem("kcact:download", _.label("Download files"), function() {
_.downloadClipboard();
return false;
});
if (_.access.files.copy || _.access.files.move || _.access.files['delete'])
_.menu.addDivider();
// COPY
if (_.access.files.copy)
_.menu.addItem("kcact:cpcbd", _.label("Copy files here"), function() {
if (!_.dirWritable) return false;
_.copyClipboard(_.dir);
return false;
}, !_.dirWritable);
// MOVE
if (_.access.files.move)
_.menu.addItem("kcact:mvcbd", _.label("Move files here"), function() {
if (!_.dirWritable) return false;
_.moveClipboard(_.dir);
return false;
}, !_.dirWritable);
// DELETE
if (_.access.files['delete'])
_.menu.addItem("kcact:rmcbd", _.label("Delete files"), function() {
_.confirm(
_.label("Are you sure you want to delete all files in the Clipboard?"),
function(callBack) {
if (callBack) callBack();
_.deleteClipboard();
}
);
return false;
});
_.menu.addDivider();
// CLEAR CLIPBOARD
_.menu.addItem("kcact:clrcbd", _.label("Clear the Clipboard"), function() {
_.clearClipboard();
return false;
});
$('#clipboard').addClass('selected');
_.menu.show();
var left = $(window).width() - dlg.css({width: ""}).outerWidth(),
top = $(window).height() - dlg.outerHeight() - jStatus.outerHeight(),
lheight = top + dlg.outerTopSpace();
dlg.find('.list').css({
'max-height': lheight,
'overflow-y': "auto",
'overflow-x': "hidden",
width: ""
});
top = $(window).height() - dlg.outerHeight(true) - jStatus.outerHeight(true);
dlg.css({
left: left - 5,
top: top
}).fadeIn("fast");
var a = dlg.find('.list').outerHeight(),
b = dlg.find('.list div').outerHeight();
if (b - a > 10) {
dlg.css({
left: parseInt(dlg.css('left')) - _.scrollbarWidth,
}).width(dlg.width() + _.scrollbarWidth);
}
}, 1);
};

View file

@ -0,0 +1,192 @@
/** This file is part of KCFinder project
*
* @desc Image viewer
* @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
*/
_.viewImage = function(data) {
var ts = new Date().getTime(),
dlg = false,
images = [],
showImage = function(data) {
_.lock = true;
$('#loading').html(_.label("Loading image...")).show();
var url = $.$.escapeDirs(_.uploadURL + "/" + _.dir + "/" + data.name) + "?ts=" + ts,
img = new Image(),
i = $(img),
w = $(window),
d = $(document);
onImgLoad = function() {
_.lock = false;
$('#files .file').each(function() {
if ($(this).data('name') == data.name) {
_.ssImage = this;
return false;
}
});
i.hide().appendTo('body');
var o_w = i.width(),
o_h = i.height(),
i_w = o_w,
i_h = o_h,
goTo = function(i) {
if (!_.lock) {
var nimg = images[i];
_.currImg = i;
showImage(nimg);
}
},
nextFunc = function() {
goTo((_.currImg >= images.length - 1) ? 0 : (_.currImg + 1));
},
prevFunc = function() {
goTo((_.currImg ? _.currImg : images.length) - 1);
},
t = $('<div></div>');
i.detach().appendTo(t);
t.addClass("img");
if (!dlg) {
var ww = w.width() - 60,
closeFunc = function() {
d.unbind('keydown').keydown(function(e) {
return !_.selectAll(e);
});
dlg.dialog('destroy').detach();
};
if ((ww % 2)) ww++;
dlg = _.dialog($.$.htmlData(data.name), t.get(0), {
width: ww,
height: w.height() - 36,
position: [30, 30],
draggable: false,
nopadding: true,
close: closeFunc,
show: false,
hide: false,
buttons: [
{
text: _.label("Previous"),
icons: {primary: "ui-icon-triangle-1-w"},
click: prevFunc
}, {
text: _.label("Next"),
icons: {secondary: "ui-icon-triangle-1-e"},
click: nextFunc
}, {
text: _.label("Select"),
icons: {primary: "ui-icon-check"},
click: function(e) {
d.unbind('keydown').keydown(function(e) {
return !_.selectAll(e);
});
if (_.ssImage) {
_.selectFile($(_.ssImage), e);
}
dlg.dialog('destroy').detach();
}
}, {
text: _.label("Close"),
icons: {primary: "ui-icon-closethick"},
click: closeFunc
}
]
});
dlg.addClass('kcfImageViewer').css('overflow', "hidden").parent().find('.ui-dialog-buttonpane button').get(2).focus();
} else {
dlg.prev().find('.ui-dialog-title').html($.$.htmlData(data.name));
dlg.html(t.get(0));
}
dlg.unbind('click').click(nextFunc).disableTextSelect();
var d_w = dlg.innerWidth(),
d_h = dlg.innerHeight();
if ((o_w > d_w) || (o_h > d_h)) {
i_w = d_w;
i_h = d_h;
if ((d_w / d_h) > (o_w / o_h))
i_w = parseInt((o_w * d_h) / o_h);
else if ((d_w / d_h) < (o_w / o_h))
i_h = parseInt((o_h * d_w) / o_w);
}
i.css({
width: i_w,
height: i_h
}).show().parent().css({
display: "block",
margin: "0 auto",
width: i_w,
height: i_h,
marginTop: parseInt((d_h - i_h) / 2)
});
$('#loading').hide();
d.unbind('keydown').keydown(function(e) {
if (!_.lock) {
var kc = e.keyCode;
if ((kc == 37)) prevFunc();
if ((kc == 39)) nextFunc();
}
});
};
img.src = url;
if (img.complete)
onImgLoad();
else {
img.onload = onImgLoad;
img.onerror = function() {
_.lock = false;
$('#loading').hide();
_.alert(_.label("Unknown error."));
d.unbind('keydown').keydown(function(e) {
return !_.selectAll(e);
});
_.refresh();
};
}
};
$.each(_.files, function(i, file) {
var i = images.length;
if (file.thumb || file.smallThumb)
images[i] = file;
if (file.name == data.name)
_.currImg = i;
});
showImage(data);
return false;
};

View file

@ -0,0 +1,216 @@
/** This file is part of KCFinder project
*
* @desc Clipboard 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
*/
_.initClipboard = function() {
if (!_.clipboard || !_.clipboard.length) return;
var size = 0,
jClipboard = $('#clipboard');
$.each(_.clipboard, function(i, val) {
size += val.size;
});
size = _.humanSize(size);
jClipboard.disableTextSelect().html('<div title="' + _.label("Clipboard") + ' (' + _.clipboard.length + ' ' + _.label("files") + ', ' + size + ')" onclick="_.openClipboard()"></div>');
var resize = function() {
jClipboard.css({
left: $(window).width() - jClipboard.outerWidth(),
top: $(window).height() - jClipboard.outerHeight()
});
};
resize();
jClipboard.show();
$(window).unbind().resize(function() {
_.resize();
resize();
});
};
_.removeFromClipboard = function(i) {
if (!_.clipboard || !_.clipboard[i]) return false;
if (_.clipboard.length == 1) {
_.clearClipboard();
_.menu.hide();
return;
}
if (i < _.clipboard.length - 1) {
var last = _.clipboard.slice(i + 1);
_.clipboard = _.clipboard.slice(0, i);
_.clipboard = _.clipboard.concat(last);
} else
_.clipboard.pop();
_.initClipboard();
_.menu.hide();
_.openClipboard();
return true;
};
_.copyClipboard = function(dir) {
if (!_.clipboard || !_.clipboard.length) return;
var files = [],
failed = 0;
for (i = 0; i < _.clipboard.length; i++)
if (_.clipboard[i].readable)
files[i] = _.clipboard[i].dir + "/" + _.clipboard[i].name;
else
failed++;
if (_.clipboard.length == failed) {
_.alert(_.label("The files in the Clipboard are not readable."));
return;
}
var go = function(callBack) {
if (dir == _.dir)
_.fadeFiles();
$.ajax({
type: "post",
dataType: "json",
url: _.getURL("cp_cbd"),
data: {dir: dir, files: files},
async: false,
success: function(data) {
if (callBack) callBack();
_.check4errors(data);
_.clearClipboard();
if (dir == _.dir)
_.refresh();
},
error: function() {
if (callBack) callBack();
$('#files > div').css({
opacity: "",
filter: ""
});
_.alert(_.label("Unknown error."));
}
});
};
if (failed)
_.confirm(
_.label("{count} files in the Clipboard are not readable. Do you want to copy the rest?", {count:failed}),
go
)
else
go();
};
_.moveClipboard = function(dir) {
if (!_.clipboard || !_.clipboard.length) return;
var files = [],
failed = 0;
for (i = 0; i < _.clipboard.length; i++)
if (_.clipboard[i].readable && _.clipboard[i].writable)
files[i] = _.clipboard[i].dir + "/" + _.clipboard[i].name;
else
failed++;
if (_.clipboard.length == failed) {
_.alert(_.label("The files in the Clipboard are not movable."))
return;
}
var go = function(callBack) {
_.fadeFiles();
$.ajax({
type: "post",
dataType: "json",
url: _.getURL("mv_cbd"),
data: {dir: dir, files: files},
async: false,
success: function(data) {
if (callBack) callBack();
_.check4errors(data);
_.clearClipboard();
_.refresh();
},
error: function() {
if (callBack) callBack();
$('#files > div').css({
opacity: "",
filter: ""
});
_.alert(_.label("Unknown error."));
}
});
};
if (failed)
_.confirm(
_.label("{count} files in the Clipboard are not movable. Do you want to move the rest?", {count: failed}),
go
);
else
go();
};
_.deleteClipboard = function() {
if (!_.clipboard || !_.clipboard.length) return;
var files = [],
failed = 0;
for (i = 0; i < _.clipboard.length; i++)
if (_.clipboard[i].readable && _.clipboard[i].writable)
files[i] = _.clipboard[i].dir + "/" + _.clipboard[i].name;
else
failed++;
if (_.clipboard.length == failed) {
_.alert(_.label("The files in the Clipboard are not removable."))
return;
}
var go = function(callBack) {
_.fadeFiles();
$.ajax({
type: "post",
dataType: "json",
url: _.getURL("rm_cbd"),
data: {files:files},
async: false,
success: function(data) {
if (callBack) callBack();
_.check4errors(data);
_.clearClipboard();
_.refresh();
},
error: function() {
if (callBack) callBack();
$('#files > div').css({
opacity: "",
filter: ""
});
_.alert(_.label("Unknown error."));
}
});
};
if (failed)
_.confirm(
_.label("{count} files in the Clipboard are not removable. Do you want to delete the rest?", {count: failed}),
go
);
else
go();
};
_.downloadClipboard = function() {
if (!_.clipboard || !_.clipboard.length) return;
var files = [];
for (i = 0; i < _.clipboard.length; i++)
if (_.clipboard[i].readable)
files[i] = _.clipboard[i].dir + "/" + _.clipboard[i].name;
if (files.length)
_.post(_.getURL('downloadClipboard'), {files:files});
};
_.clearClipboard = function() {
$('#clipboard').html("");
_.clipboard = [];
};

View file

@ -0,0 +1,230 @@
/** This file is part of KCFinder project
*
* @desc Upload files using drag and drop
* @package KCFinder
* @version 3.12
* @author Forum user (updated by Pavel Tzonkov)
* @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
*/
_.initDropUpload = function() {
if ((typeof XMLHttpRequest == "undefined") ||
(typeof document.addEventListener == "undefined") ||
(typeof File == "undefined") ||
(typeof FileReader == "undefined")
)
return;
if (!XMLHttpRequest.prototype.sendAsBinary) {
XMLHttpRequest.prototype.sendAsBinary = function(datastr) {
var ords = Array.prototype.map.call(datastr, function(x) {
return x.charCodeAt(0) & 0xff;
}),
ui8a = new Uint8Array(ords);
this.send(ui8a.buffer);
}
}
var uploadQueue = [],
uploadInProgress = false,
filesCount = 0,
errors = [],
files = $('#files'),
folders = $('div.folder > a'),
boundary = "------multipartdropuploadboundary" + (new Date).getTime(),
currentFile,
filesDragOver = function(e) {
if (e.preventDefault) e.preventDefault();
$('#files').addClass('drag');
return false;
},
filesDragEnter = function(e) {
if (e.preventDefault) e.preventDefault();
return false;
},
filesDragLeave = function(e) {
if (e.preventDefault) e.preventDefault();
$('#files').removeClass('drag');
return false;
},
filesDrop = function(e) {
if (e.preventDefault) e.preventDefault();
if (e.stopPropagation) e.stopPropagation();
$('#files').removeClass('drag');
if (!$('#folders span.current').first().parent().data('writable')) {
_.alert("Cannot write to upload folder.");
return false;
}
filesCount += e.dataTransfer.files.length;
for (var i = 0; i < e.dataTransfer.files.length; i++) {
var file = e.dataTransfer.files[i];
file.thisTargetDir = _.dir;
uploadQueue.push(file);
}
processUploadQueue();
return false;
},
folderDrag = function(e) {
if (e.preventDefault) e.preventDefault();
return false;
},
folderDrop = function(e, dir) {
if (e.preventDefault) e.preventDefault();
if (e.stopPropagation) e.stopPropagation();
if (!$(dir).data('writable')) {
_.alert(_.label("Cannot write to upload folder."));
return false;
}
filesCount += e.dataTransfer.files.length;
for (var i = 0; i < e.dataTransfer.files.length; i++) {
var file = e.dataTransfer.files[i];
file.thisTargetDir = $(dir).data('path');
uploadQueue.push(file);
}
processUploadQueue();
return false;
};
files.get(0).removeEventListener('dragover', filesDragOver, false);
files.get(0).removeEventListener('dragenter', filesDragEnter, false);
files.get(0).removeEventListener('dragleave', filesDragLeave, false);
files.get(0).removeEventListener('drop', filesDrop, false);
files.get(0).addEventListener('dragover', filesDragOver, false);
files.get(0).addEventListener('dragenter', filesDragEnter, false);
files.get(0).addEventListener('dragleave', filesDragLeave, false);
files.get(0).addEventListener('drop', filesDrop, false);
folders.each(function() {
var folder = this,
dragOver = function(e) {
$(folder).children('span.folder').addClass('context');
return folderDrag(e);
},
dragLeave = function(e) {
$(folder).children('span.folder').removeClass('context');
return folderDrag(e);
},
drop = function(e) {
$(folder).children('span.folder').removeClass('context');
return folderDrop(e, folder);
};
this.removeEventListener('dragover', dragOver, false);
this.removeEventListener('dragenter', folderDrag, false);
this.removeEventListener('dragleave', dragLeave, false);
this.removeEventListener('drop', drop, false);
this.addEventListener('dragover', dragOver, false);
this.addEventListener('dragenter', folderDrag, false);
this.addEventListener('dragleave', dragLeave, false);
this.addEventListener('drop', drop, false);
});
function updateProgress(evt) {
var progress = evt.lengthComputable
? Math.round((evt.loaded * 100) / evt.total) + '%'
: Math.round(evt.loaded / 1024) + " KB";
$('#loading').html(_.label("Uploading file {number} of {count}... {progress}", {
number: filesCount - uploadQueue.length,
count: filesCount,
progress: progress
}));
}
function processUploadQueue() {
if (uploadInProgress)
return false;
if (uploadQueue && uploadQueue.length) {
var file = uploadQueue.shift();
currentFile = file;
$('#loading').html(_.label("Uploading file {number} of {count}... {progress}", {
number: filesCount - uploadQueue.length,
count: filesCount,
progress: ""
})).show();
var reader = new FileReader();
reader.thisFileName = file.name;
reader.thisFileType = file.type;
reader.thisFileSize = file.size;
reader.thisTargetDir = file.thisTargetDir;
reader.onload = function(evt) {
uploadInProgress = true;
var postbody = '--' + boundary + '\r\nContent-Disposition: form-data; name="upload[]"';
if (evt.target.thisFileName)
postbody += '; filename="' + $.$.utf8encode(evt.target.thisFileName) + '"';
postbody += '\r\n';
if (evt.target.thisFileSize)
postbody += "Content-Length: " + evt.target.thisFileSize + "\r\n";
postbody += "Content-Type: " + evt.target.thisFileType + "\r\n\r\n" + evt.target.result + "\r\n--" + boundary + '\r\nContent-Disposition: form-data; name="dir"\r\n\r\n' + $.$.utf8encode(evt.target.thisTargetDir) + "\r\n--" + boundary + "\r\n--" + boundary + "--\r\n";
var xhr = new XMLHttpRequest();
xhr.thisFileName = evt.target.thisFileName;
if (xhr.upload) {
xhr.upload.thisFileName = evt.target.thisFileName;
xhr.upload.addEventListener("progress", updateProgress, false);
}
xhr.open('post', _.getURL('upload'), true);
xhr.setRequestHeader('Content-Type', "multipart/form-data; boundary=" + boundary);
//xhr.setRequestHeader('Content-Length', postbody.length);
xhr.onload = function(e) {
$('#loading').hide();
if (_.dir == reader.thisTargetDir)
_.fadeFiles();
uploadInProgress = false;
processUploadQueue();
if (xhr.responseText.substr(0, 1) != "/")
errors[errors.length] = xhr.responseText;
};
xhr.sendAsBinary(postbody);
};
reader.onerror = function(evt) {
$('#loading').hide();
uploadInProgress = false;
processUploadQueue();
errors[errors.length] = _.label("Failed to upload {filename}!", {
filename: evt.target.thisFileName
});
};
reader.readAsBinaryString(file);
} else {
filesCount = 0;
var loop = setInterval(function() {
if (uploadInProgress) return;
boundary = "------multipartdropuploadboundary" + (new Date).getTime();
uploadQueue = [];
clearInterval(loop);
if (currentFile.thisTargetDir == _.dir)
_.refresh();
if (errors.length) {
errors = errors.join("\n");
if (errors.replace(/^\s+/g, "").replace(/\s+$/g, "").length)
_.alert(errors);
errors = [];
}
}, 333);
}
}
};

View file

@ -0,0 +1,130 @@
/** This file is part of KCFinder project
*
* @desc Miscellaneous 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
*/
_.orderFiles = function(callBack, selected) {
var order = $.$.kuki.get('order'),
desc = ($.$.kuki.get('orderDesc') == "on"),
a1, b1, arr;
if (!_.files || !_.files.sort)
_.files = [];
_.files = _.files.sort(function(a, b) {
if (!order) order = "name";
if (order == "date") {
a1 = a.mtime;
b1 = b.mtime;
} else if (order == "type") {
a1 = $.$.getFileExtension(a.name);
b1 = $.$.getFileExtension(b.name);
} else if (order == "size") {
a1 = a.size;
b1 = b.size;
} else {
a1 = a[order].toLowerCase();
b1 = b[order].toLowerCase();
}
if ((order == "size") || (order == "date")) {
if (a1 < b1) return desc ? 1 : -1;
if (a1 > b1) return desc ? -1 : 1;
}
if (a1 == b1) {
a1 = a.name.toLowerCase();
b1 = b.name.toLowerCase();
arr = [a1, b1];
arr = arr.sort();
return (arr[0] == a1) ? -1 : 1;
}
arr = [a1, b1];
arr = arr.sort();
if (arr[0] == a1) return desc ? 1 : -1;
return desc ? -1 : 1;
});
_.showFiles(callBack, selected);
_.initFiles();
};
_.humanSize = function(size) {
if (size < 1024) {
size = size.toString() + " B";
} else if (size < 1048576) {
size /= 1024;
size = parseInt(size).toString() + " KB";
} else if (size < 1073741824) {
size /= 1048576;
size = parseInt(size).toString() + " MB";
} else if (size < 1099511627776) {
size /= 1073741824;
size = parseInt(size).toString() + " GB";
} else {
size /= 1099511627776;
size = parseInt(size).toString() + " TB";
}
return size;
};
_.getURL = function(act) {
var url = "browse.php?type=" + encodeURIComponent(_.type) + "&lng=" + encodeURIComponent(_.lang);
if (_.opener.name)
url += "&opener=" + encodeURIComponent(_.opener.name);
if (act)
url += "&act=" + encodeURIComponent(act);
if (_.cms)
url += "&cms=" + encodeURIComponent(_.cms);
return url;
};
_.label = function(index, data) {
var label = _.labels[index] ? _.labels[index] : index;
if (data)
$.each(data, function(key, val) {
label = label.replace("{" + key + "}", val);
});
return label;
};
_.check4errors = function(data) {
if (!data.error)
return false;
var msg = data.error.join
? data.error.join("\n")
: data.error;
_.alert(msg);
return true;
};
_.post = function(url, data) {
var html = '<form id="postForm" method="post" action="' + url + '">';
$.each(data, function(key, val) {
if ($.isArray(val))
$.each(val, function(i, aval) {
html += '<input type="hidden" name="' + $.$.htmlValue(key) + '[]" value="' + $.$.htmlValue(aval) + '" />';
});
else
html += '<input type="hidden" name="' + $.$.htmlValue(key) + '" value="' + $.$.htmlValue(val) + '" />';
});
html += '</form>';
$('#menu').html(html).show();
$('#postForm').get(0).submit();
};
_.fadeFiles = function() {
$('#files > div').css({
opacity: "0.4",
filter: "alpha(opacity=40)"
});
};

View file

@ -0,0 +1,22 @@
<?php
/** This file is part of KCFinder project
*
* @desc Join all JavaScript files from current directory
* @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
*/
namespace kcfinder;
chdir("..");
require "core/autoload.php";
$min = new minifier("js");
$min->minify("cache/base.js");
?>