ok
Direktori : /home/institutonamaste/www/admin/js/kcfinder/js/ |
Current File : /home/institutonamaste/www/admin/js/kcfinder/js/091.menus.js |
/** 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').text(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').text(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); };