AlkantarClanX12
Current Path : /home/thanudqk/thepball.com/wp-content/plugins/wp-file-manager/lib/js/commands/ |
Current File : /home/thanudqk/thepball.com/wp-content/plugins/wp-file-manager/lib/js/commands/info.js |
/** * @class elFinder command "info". * Display dialog with file properties. * * @author Dmitry (dio) Levashov, dio@std42.ru **/ (elFinder.prototype.commands.info = function () { "use strict"; var m = "msg", fm = this.fm, spclass = "elfinder-spinner", btnclass = "elfinder-info-button", msg = { calc: fm.i18n("calc"), size: fm.i18n("size"), unknown: fm.i18n("unknown"), path: fm.i18n("path"), aliasfor: fm.i18n("aliasfor"), modify: fm.i18n("modify"), perms: fm.i18n("perms"), locked: fm.i18n("locked"), dim: fm.i18n("dim"), kind: fm.i18n("kind"), files: fm.i18n("files"), folders: fm.i18n("folders"), roots: fm.i18n("volumeRoots"), items: fm.i18n("items"), yes: fm.i18n("yes"), no: fm.i18n("no"), link: fm.i18n("link"), owner: fm.i18n("owner"), group: fm.i18n("group"), perm: fm.i18n("perm"), getlink: fm.i18n("getLink"), }, applyZWSP = function (str, remove) { if (remove) { return str.replace(/\u200B/g, ""); } else { return str.replace(/(\/|\\)/g, "$1\u200B"); } }; this.items = [ "size", "aliasfor", "path", "link", "dim", "modify", "perms", "locked", "owner", "group", "perm", ]; if (this.options.custom && Object.keys(this.options.custom).length) { jQuery.each(this.options.custom, function (name, details) { details.label && this.items.push(details.label); }); } this.tpl = { main: '<div class="ui-helper-clearfix elfinder-info-title {dirclass}"><span class="elfinder-cwd-icon {class} ui-corner-all"{style}></span>{title}</div><table class="elfinder-info-tb">{content}</table>', itemTitle: '<strong>{name}</strong><span class="elfinder-info-kind">{kind}</span>', groupTitle: "<strong>{items}: {num}</strong>", row: '<tr><td class="elfinder-info-label">{label} : </td><td class="{class}">{value}</td></tr>', spinner: '<span>{text}</span> <span class="' + spclass + " " + spclass + '-{name}"></span>', }; this.alwaysEnabled = true; this.updateOnSelect = false; this.shortcuts = [ { pattern: "ctrl+i", }, ]; this.init = function () { jQuery.each(msg, function (k, v) { msg[k] = fm.i18n(v); }); }; this.getstate = function () { return 0; }; this.exec = function (hashes) { var files = this.files(hashes); if (!files.length) { files = this.files([this.fm.cwd().hash]); } var self = this, fm = this.fm, o = this.options, tpl = this.tpl, row = tpl.row, cnt = files.length, content = [], view = tpl.main, l = "{label}", v = "{value}", reqs = [], reqDfrd = null, opts = { title: fm.i18n("selectionInfo"), width: "auto", close: function () { jQuery(this).elfinderdialog("destroy"); if (reqDfrd && reqDfrd.state() === "pending") { reqDfrd.reject(); } jQuery.grep(reqs, function (r) { r && r.state() === "pending" && r.reject(); }); }, }, count = [], replSpinner = function (msg, name, className) { dialog .find("." + spclass + "-" + name) .parent() .html(msg) .addClass(className || ""); }, id = fm.namespace + "-info-" + jQuery.map(files, function (f) { return f.hash; }).join("-"), dialog = fm.getUI().find("#" + id), customActions = [], style = "", hashClass = "elfinder-font-mono elfinder-info-hash", getHashAlgorisms = [], ndialog = fm.ui.notify, size, tmb, file, title, dcnt, rdcnt, path, hideItems, hashProg; if (ndialog.is(":hidden") && ndialog.children(".elfinder-notify").length) { ndialog.elfinderdialog("open").height("auto"); } if (!cnt) { return jQuery.Deferred().reject(); } if (dialog.length) { dialog.elfinderdialog("toTop"); return jQuery.Deferred().resolve(); } hideItems = fm.storage("infohides") || fm.arrayFlip(o.hideItems, true); if (cnt === 1) { file = files[0]; if (file.icon) { style = " " + fm.getIconStyle(file); } view = view .replace("{dirclass}", file.csscls ? fm.escape(file.csscls) : "") .replace("{class}", fm.mime2class(file.mime)) .replace("{style}", style); title = tpl.itemTitle .replace("{name}", fm.escape(file.i18 || file.name)) .replace( "{kind}", '<span title="' + fm.escape(file.mime) + '">' + fm.mime2kind(file) + "</span>" ); tmb = fm.tmb(file); if (!file.read) { size = msg.unknown; } else if (file.mime != "directory" || file.alias) { size = fm.formatSize(file.size); } else { size = tpl.spinner .replace("{text}", msg.calc) .replace("{name}", "size"); count.push(file.hash); } !hideItems.size && content.push(row.replace(l, msg.size).replace(v, size)); !hideItems.aleasfor && file.alias && content.push(row.replace(l, msg.aliasfor).replace(v, file.alias)); if (!hideItems.path) { if ((path = fm.path(file.hash, true))) { content.push( row .replace(l, msg.path) .replace(v, applyZWSP(fm.escape(path))) .replace("{class}", "elfinder-info-path") ); } else { content.push( row .replace(l, msg.path) .replace( v, tpl.spinner .replace("{text}", msg.calc) .replace("{name}", "path") ) .replace("{class}", "elfinder-info-path") ); reqs.push( fm .path(file.hash, true, { notify: null }) .fail(function () { replSpinner(msg.unknown, "path"); }) .done(function (path) { replSpinner(applyZWSP(path), "path"); }) ); } } if (!hideItems.link && file.read) { var href, name_esc = fm.escape(file.name); if (file.url == "1") { content.push( row .replace(l, msg.link) .replace( v, '<button class="' + btnclass + " " + spclass + '-url">' + msg.getlink + "</button>" ) ); } else { if (file.url) { href = file.url; } else if (file.mime === "directory") { if (o.nullUrlDirLinkSelf && file.url === null) { var loc = window.location; href = loc.pathname + loc.search + "#elf_" + file.hash; } else if ( file.url !== "" && fm.option("url", (!fm.isRoot(file) && file.phash) || file.hash) ) { href = fm.url(file.hash); } } else { href = fm.url(file.hash); } href && content.push( row .replace(l, msg.link) .replace( v, '<a href="' + href + '" target="_blank">' + name_esc + "</a>" + ' <a href="mailto:?Subject=WP File Manager Share ' + name_esc + "&Body=" + href + '" class="mk_elfinder_share_button" title="Share"><button class="button button-primary">Share</button></a>' ) ); } } if (!hideItems.dim) { if (file.dim) { // old api content.push(row.replace(l, msg.dim).replace(v, file.dim)); } else if (file.mime.indexOf("image") !== -1) { if (file.width && file.height) { content.push( row.replace(l, msg.dim).replace(v, file.width + "x" + file.height) ); } else if (file.size && file.size !== "0") { content.push( row .replace(l, msg.dim) .replace( v, tpl.spinner .replace("{text}", msg.calc) .replace("{name}", "dim") ) ); reqs.push( fm .request({ data: { cmd: "dim", target: file.hash }, preventDefault: true, }) .fail(function () { replSpinner(msg.unknown, "dim"); }) .done(function (data) { replSpinner(data.dim || msg.unknown, "dim"); if (data.dim) { var dim = data.dim.split("x"); var rfile = fm.file(file.hash); rfile.width = dim[0]; rfile.height = dim[1]; } }) ); } } } !hideItems.modify && content.push( row.replace(l, msg.modify).replace(v, fm.formatDate(file)) ); !hideItems.perms && content.push( row.replace(l, msg.perms).replace(v, fm.formatPermissions(file)) ); !hideItems.locked && content.push( row.replace(l, msg.locked).replace(v, file.locked ? msg.yes : msg.no) ); !hideItems.owner && file.owner && content.push(row.replace(l, msg.owner).replace(v, file.owner)); !hideItems.group && file.group && content.push(row.replace(l, msg.group).replace(v, file.group)); !hideItems.perm && file.perm && content.push( row.replace(l, msg.perm).replace(v, fm.formatFileMode(file.perm)) ); // Get MD5, SHA hashes if ( window.ArrayBuffer && (fm.options.cdns.sparkmd5 || fm.options.cdns.jssha) && file.mime !== "directory" && file.size > 0 && (!o.showHashMaxsize || file.size <= o.showHashMaxsize) ) { getHashAlgorisms = []; jQuery.each(fm.storage("hashchekcer") || o.showHashAlgorisms, function ( i, n ) { if (!file[n]) { content.push( row .replace(l, fm.i18n(n)) .replace( v, tpl.spinner.replace("{text}", msg.calc).replace("{name}", n) ) ); getHashAlgorisms.push(n); } else { content.push( row .replace(l, fm.i18n(n)) .replace(v, file[n]) .replace("{class}", hashClass) ); } }); if (getHashAlgorisms.length) { hashProg = jQuery('<div class="elfinder-quicklook-info-progress"></div>'); reqs.push( fm .getContentsHashes(file.hash, getHashAlgorisms, o.showHashOpts, { progressBar: hashProg, }) .progress(function (hashes) { jQuery.each(getHashAlgorisms, function (i, n) { if (hashes[n]) { replSpinner(hashes[n], n, hashClass); } }); }) .always(function () { jQuery.each(getHashAlgorisms, function (i, n) { replSpinner(msg.unknown, n); }); }) ); } } // Add custom info fields if (o.custom) { jQuery.each(o.custom, function (name, details) { if ( !hideItems[details.label] && (!details.mimes || jQuery.grep(details.mimes, function (m) { return file.mime === m || file.mime.indexOf(m + "/") === 0 ? true : false; }).length) && (!details.hashRegex || file.hash.match(details.hashRegex)) ) { // Add to the content content.push( row .replace(l, fm.i18n(details.label)) .replace(v, details.tpl.replace("{id}", id)) ); // Register the action if (details.action && typeof details.action == "function") { customActions.push(details.action); } } }); } } else { view = view.replace("{class}", "elfinder-cwd-icon-group"); title = tpl.groupTitle .replace("{items}", msg.items) .replace("{num}", cnt); dcnt = jQuery.grep(files, function (f) { return f.mime == "directory" ? true : false; }).length; if (!dcnt) { size = 0; jQuery.each(files, function (h, f) { var s = parseInt(f.size); if (s >= 0 && size >= 0) { size += s; } else { size = "unknown"; } }); content.push(row.replace(l, msg.kind).replace(v, msg.files)); !hideItems.size && content.push( row.replace(l, msg.size).replace(v, fm.formatSize(size)) ); } else { rdcnt = jQuery.grep(files, function (f) { return f.mime === "directory" && (!f.phash || f.isroot) ? true : false; }).length; dcnt -= rdcnt; content.push( row.replace(l, msg.kind).replace( v, rdcnt === cnt || dcnt === cnt ? msg[rdcnt ? "roots" : "folders"] : jQuery.map( { roots: rdcnt, folders: dcnt, files: cnt - rdcnt - dcnt }, function (c, t) { return c ? msg[t] + " " + c : null; } ).join(", ") ) ); !hideItems.size && content.push( row .replace(l, msg.size) .replace( v, tpl.spinner .replace("{text}", msg.calc) .replace("{name}", "size") ) ); count = jQuery.map(files, function (f) { return f.hash; }); } } view = view .replace("{title}", title) .replace("{content}", content.join("").replace(/{class}/g, "")); dialog = self.fmDialog(view, opts); dialog.attr("id", id).one("mousedown", ".elfinder-info-path", function () { jQuery(this).html(applyZWSP(jQuery(this).html(), true)); }); if (getHashAlgorisms.length) { hashProg.appendTo( dialog.find("." + spclass + "-" + getHashAlgorisms[0]).parent() ); } if (fm.UA.Mobile && jQuery.fn.tooltip) { dialog.children(".ui-dialog-content .elfinder-info-title").tooltip({ classes: { "ui-tooltip": "elfinder-ui-tooltip ui-widget-shadow", }, tooltipClass: "elfinder-ui-tooltip ui-widget-shadow", track: true, }); } if (file && file.url == "1") { dialog.on("click", "." + spclass + "-url", function () { jQuery(this) .parent() .html( tpl.spinner .replace("{text}", fm.i18n("ntfurl")) .replace("{name}", "url") ); fm.request({ data: { cmd: "url", target: file.hash }, preventDefault: true, }) .fail(function () { replSpinner(name_esc, "url"); }) .done(function (data) { if (data.url) { replSpinner( '<a href="' + data.url + '" target="_blank">' + name_esc + "</a>" || name_esc, "url" ); var rfile = fm.file(file.hash); rfile.url = data.url; } else { replSpinner(name_esc, "url"); } }); }); } // load thumbnail if (tmb) { jQuery("<img/>") .on("load", function () { dialog .find(".elfinder-cwd-icon") .addClass(tmb.className) .css("background-image", "url('" + tmb.url + "')"); }) .attr("src", tmb.url); } // send request to count total size if (count.length) { reqDfrd = fm .getSize(count) .done(function (data) { replSpinner(data.formated, "size"); }) .fail(function () { replSpinner(msg.unknown, "size"); }); } // call custom actions if (customActions.length) { jQuery.each(customActions, function (i, action) { try { action(file, fm, dialog); } catch (e) { fm.debug("error", e); } }); } return jQuery.Deferred().resolve(); }; }).prototype = { forceLoad: true }; // this is required command