');
$.each(browser.files, function(i, file) {
var item = $('#files .file').get(i);
$(item).data(file);
if (_.inArray(file.name, selected) ||
((typeof selected != 'undefined') && !selected.push && (file.name == selected))
)
$(item).addClass('selected');
});
$('#files > div').css({opacity:'', filter:''});
if (callBack) callBack();
browser.initFiles();
}, 200);
};
browser.selectFile = function(file, e) {
if (e.ctrlKey || e.metaKey) {
if (file.hasClass('selected'))
file.removeClass('selected');
else
file.addClass('selected');
var files = $('.file.selected').get();
var size = 0;
if (!files.length)
this.statusDir();
else {
$.each(files, function(i, cfile) {
size += parseInt($(cfile).data('size'));
});
size = this.humanSize(size);
if (files.length > 1)
$('#fileinfo').html(files.length + ' ' + this.label("selected files") + ' (' + size + ')');
else {
var data = $(files[0]).data();
$('#fileinfo').html(data.name + ' (' + this.humanSize(data.size) + ', ' + data.date + ')');
}
}
} else {
var data = file.data();
$('.file').removeClass('selected');
file.addClass('selected');
$('#fileinfo').html(data.name + ' (' + this.humanSize(data.size) + ', ' + data.date + ')');
}
};
browser.selectAll = function(e) {
if ((!e.ctrlKey && !e.metaKey) || ((e.keyCode != 65) && (e.keyCode != 97)))
return false;
var files = $('.file').get();
if (files.length) {
var size = 0;
$.each(files, function(i, file) {
if (!$(file).hasClass('selected'))
$(file).addClass('selected');
size += parseInt($(file).data('size'));
});
size = this.humanSize(size);
$('#fileinfo').html(files.length + ' ' + this.label("selected files") + ' (' + size + ')');
}
return true;
};
browser.returnFile = function(file) {
var fileURL = file.substr
? file : browser.uploadURL + '/' + browser.dir + '/' + file.data('name');
fileURL = _.escapeDirs(fileURL);
if (this.opener.CKEditor) {
this.opener.CKEditor.object.tools.callFunction(this.opener.CKEditor.funcNum, fileURL, '');
window.close();
} else if (this.opener.FCKeditor) {
window.opener.SetUrl(fileURL) ;
window.close() ;
} else if (this.opener.TinyMCE) {
var 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 (this.opener.callBack) {
if (window.opener && window.opener.KCFinder) {
this.opener.callBack(fileURL);
window.close();
}
if (window.parent && window.parent.KCFinder) {
var button = $('#toolbar a[href="kcact:maximize"]');
if (button.hasClass('selected'))
this.maximize(button);
this.opener.callBack(fileURL);
}
} else if (this.opener.callBackMultiple) {
if (window.opener && window.opener.KCFinder) {
this.opener.callBackMultiple([fileURL]);
window.close();
}
if (window.parent && window.parent.KCFinder) {
var button = $('#toolbar a[href="kcact:maximize"]');
if (button.hasClass('selected'))
this.maximize(button);
this.opener.callBackMultiple([fileURL]);
}
}
};
browser.returnFiles = function(files) {
if (this.opener.callBackMultiple && files.length) {
var rfiles = [];
$.each(files, function(i, file) {
rfiles[i] = browser.uploadURL + '/' + browser.dir + '/' + $(file).data('name');
rfiles[i] = _.escapeDirs(rfiles[i]);
});
this.opener.callBackMultiple(rfiles);
if (window.opener) window.close()
}
};
browser.returnThumbnails = function(files) {
if (this.opener.callBackMultiple) {
var rfiles = [];
var j = 0;
$.each(files, function(i, file) {
if ($(file).data('thumb')) {
rfiles[j] = browser.thumbsURL + '/' + browser.dir + '/' + $(file).data('name');
rfiles[j] = _.escapeDirs(rfiles[j++]);
}
});
this.opener.callBackMultiple(rfiles);
if (window.opener) window.close()
}
};
browser.menuFile = function(file, e) {
var data = file.data();
var path = this.dir + '/' + data.name;
var files = $('.file.selected').get();
var html = '';
if (file.hasClass('selected') && files.length && (files.length > 1)) {
var thumb = false;
var notWritable = 0;
var cdata;
$.each(files, function(i, cfile) {
cdata = $(cfile).data();
if (cdata.thumb) thumb = true;
if (!data.writable) notWritable++;
});
if (this.opener.callBackMultiple) {
html += '
' + this.label("Select") + '';
if (thumb) html +=
'
' + this.label("Select Thumbnails") + '';
}
if (data.thumb || data.smallThumb || this.support.zip) {
html += (html.length ? '
' : '');
if (data.thumb || data.smallThumb)
html +='
' + this.label("View") + '';
if (this.support.zip) html += (html.length ? '
' : '') +
'
' + this.label("Download") + '';
}
if (this.access.files.copy || this.access.files.move)
html += (html.length ? '
' : '') +
'
' + this.label("Add to Clipboard") + '';
if (this.access.files['delete'])
html += (html.length ? '
' : '') +
'
' + this.label("Delete") + '';
if (html.length) {
html = '';
$('#dialog').html(html);
this.showMenu(e);
} else
return;
$('.menu a[href="kcact:pick"]').click(function() {
browser.returnFiles(files);
browser.hideDialog();
return false;
});
$('.menu a[href="kcact:pick_thumb"]').click(function() {
browser.returnThumbnails(files);
browser.hideDialog();
return false;
});
$('.menu a[href="kcact:download"]').click(function() {
browser.hideDialog();
var pfiles = [];
$.each(files, function(i, cfile) {
pfiles[i] = $(cfile).data('name');
});
browser.post(browser.baseGetData('downloadSelected'), {dir:browser.dir, files:pfiles});
return false;
});
$('.menu a[href="kcact:clpbrdadd"]').click(function() {
browser.hideDialog();
var msg = '';
$.each(files, function(i, cfile) {
var cdata = $(cfile).data();
var failed = false;
for (i = 0; i < browser.clipboard.length; i++)
if ((browser.clipboard[i].name == cdata.name) &&
(browser.clipboard[i].dir == browser.dir)
) {
failed = true
msg += cdata.name + ": " + browser.label("This file is already added to the Clipboard.") + "\n";
break;
}
if (!failed) {
cdata.dir = browser.dir;
browser.clipboard[browser.clipboard.length] = cdata;
}
});
browser.initClipboard();
if (msg.length) browser.alert(msg.substr(0, msg.length - 1));
return false;
});
$('.menu a[href="kcact:rm"]').click(function() {
if ($(this).hasClass('denied')) return false;
browser.hideDialog();
var failed = 0;
var dfiles = [];
$.each(files, function(i, cfile) {
var cdata = $(cfile).data();
if (!cdata.writable)
failed++;
else
dfiles[dfiles.length] = browser.dir + "/" + cdata.name;
});
if (failed == files.length) {
browser.alert(browser.label("The selected files are not removable."));
return false;
}
var go = function(callBack) {
browser.fadeFiles();
$.ajax({
type: 'POST',
dataType: 'json',
url: browser.baseGetData('rm_cbd'),
data: {files:dfiles},
async: false,
success: function(data) {
if (callBack) callBack();
browser.check4errors(data);
browser.refresh();
},
error: function() {
if (callBack) callBack();
$('#files > div').css({
opacity: '',
filter: ''
});
browser.alert(browser.label("Unknown error."));
}
});
};
if (failed)
browser.confirm(
browser.label("{count} selected files are not removable. Do you want to delete the rest?", {count:failed}),
go
)
else
browser.confirm(
browser.label("Are you sure you want to delete all selected files?"),
go
);
return false;
});
} else {
html += '';
$('#dialog').html(html);
this.showMenu(e);
$('.menu a[href="kcact:pick"]').click(function() {
browser.returnFile(file);
browser.hideDialog();
return false;
});
$('.menu a[href="kcact:pick_thumb"]').click(function() {
var path = browser.thumbsURL + '/' + browser.dir + '/' + data.name;
browser.returnFile(path);
browser.hideDialog();
return false;
});
$('.menu a[href="kcact:download"]').click(function() {
var html = '
';
$('#dialog').html(html);
$('#downloadForm input').get(0).value = browser.dir;
$('#downloadForm input').get(1).value = data.name;
$('#downloadForm').submit();
return false;
});
$('.menu a[href="kcact:clpbrdadd"]').click(function() {
for (i = 0; i < browser.clipboard.length; i++)
if ((browser.clipboard[i].name == data.name) &&
(browser.clipboard[i].dir == browser.dir)
) {
browser.hideDialog();
browser.alert(browser.label("This file is already added to the Clipboard."));
return false;
}
var cdata = data;
cdata.dir = browser.dir;
browser.clipboard[browser.clipboard.length] = cdata;
browser.initClipboard();
browser.hideDialog();
return false;
});
$('.menu a[href="kcact:mv"]').click(function(e) {
if (!data.writable) return false;
browser.fileNameDialog(
e, {dir: browser.dir, file: data.name},
'newName', data.name, browser.baseGetData('rename'), {
title: "New file name:",
errEmpty: "Please enter new file name.",
errSlash: "Unallowable characters in file name.",
errDot: "File name shouldn't begins with '.'"
},
function() {
browser.refresh();
}
);
return false;
});
$('.menu a[href="kcact:rm"]').click(function() {
if (!data.writable) return false;
browser.hideDialog();
browser.confirm(browser.label("Are you sure you want to delete this file?"),
function(callBack) {
$.ajax({
type: 'POST',
dataType: 'json',
url: browser.baseGetData('delete'),
data: {dir:browser.dir, file:data.name},
async: false,
success: function(data) {
if (callBack) callBack();
browser.clearClipboard();
if (browser.check4errors(data))
return;
browser.refresh();
},
error: function() {
if (callBack) callBack();
browser.alert(browser.label("Unknown error."));
}
});
}
);
return false;
});
}
$('.menu a[href="kcact:view"]').click(function() {
browser.hideDialog();
var ts = new Date().getTime();
var showImage = function(data) {
url = _.escapeDirs(browser.uploadURL + '/' + browser.dir + '/' + data.name) + '?ts=' + ts,
$('#loading').html(browser.label("Loading image..."));
$('#loading').css('display', 'inline');
var img = new Image();
img.src = url;
img.onerror = function() {
browser.lock = false;
$('#loading').css('display', 'none');
browser.alert(browser.label("Unknown error."));
$(document).unbind('keydown');
$(document).keydown(function(e) {
return !browser.selectAll(e);
});
browser.refresh();
};
var onImgLoad = function() {
browser.lock = false;
$('#files .file').each(function() {
if ($(this).data('name') == data.name)
browser.ssImage = this;
});
$('#loading').css('display', 'none');
$('#dialog').html('
');
$('#dialog img').attr({
src: url,
title: data.name
}).fadeIn('fast', function() {
var o_w = $('#dialog').outerWidth();
var o_h = $('#dialog').outerHeight();
var f_w = $(window).width() - 30;
var f_h = $(window).height() - 30;
if ((o_w > f_w) || (o_h > f_h)) {
if ((f_w / f_h) > (o_w / o_h))
f_w = parseInt((o_w * f_h) / o_h);
else if ((f_w / f_h) < (o_w / o_h))
f_h = parseInt((o_h * f_w) / o_w);
$('#dialog img').attr({
width: f_w,
height: f_h
});
}
$('#dialog').unbind('click');
$('#dialog').click(function(e) {
browser.hideDialog();
$(document).unbind('keydown');
$(document).keydown(function(e) {
return !browser.selectAll(e);
});
if (browser.ssImage) {
browser.selectFile($(browser.ssImage), e);
}
});
browser.showDialog();
var images = [];
$.each(browser.files, function(i, file) {
if (file.thumb || file.smallThumb)
images[images.length] = file;
});
if (images.length)
$.each(images, function(i, image) {
if (image.name == data.name) {
$(document).unbind('keydown');
$(document).keydown(function(e) {
if (images.length > 1) {
if (!browser.lock && (e.keyCode == 37)) {
var nimg = i
? images[i - 1]
: images[images.length - 1];
browser.lock = true;
showImage(nimg);
}
if (!browser.lock && (e.keyCode == 39)) {
var nimg = (i >= images.length - 1)
? images[0]
: images[i + 1];
browser.lock = true;
showImage(nimg);
}
}
if (e.keyCode == 27) {
browser.hideDialog();
$(document).unbind('keydown');
$(document).keydown(function(e) {
return !browser.selectAll(e);
});
}
});
}
});
});
};
if (img.complete)
onImgLoad();
else
img.onload = onImgLoad;
};
showImage(data);
return false;
});
};