AlkantarClanX12

Your IP : 3.144.31.86


Current Path : /home/thanudqk/thepball.com/wp-content/plugins/wp-file-manager/lib/js/commands/
Upload File :
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 +
                    "&amp;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