Viewing File: /usr/local/cpanel/whostmgr/docroot/js/pkg_hover.js

(function() {

    var pkgcontainer;
    var pkgreq;

    var PKGS_DATA = {};
    var BOOLEAN_PKG_VALUES = {
        CGI: true,
        HASSHELL: true,
        IP: true
    };
    var PKG_HOVER_TEMPLATE = DOM.get("pkg_hover_template").text.trim();

    var NON_PACKAGES = {
        "---": true,
        "deleted%20account": true,
        "undefined": true
    };

    function loadpkg(o) {
        var pkg;
        try {
            var data = YAHOO.lang.JSON.parse(o.responseText);
            pkg = data.data.pkg;
        } catch (e) {}

        if (pkg) {
            for (var key in pkg) {
                if (pkg[key] === null) {
                    pkg[key] = "\u221e"; // infinity
                } else if (key in BOOLEAN_PKG_VALUES) {
                    pkg[key] = Boolean(Number(pkg[key])) ? LEXICON.yes : LEXICON.no;
                } else {
                    pkg[key] = String(pkg[key]).html_encode();
                }
            }

            PKGS_DATA[o.argument.package] = pkg;
            display_pkg(o.argument.mousetargetEl, o.argument.package);
        }
    }

    var LAST_SHOWN_PACKAGE;

    function display_pkg(mousetargetEl, pkg) {
        if (!pkgcontainer) {
            pkgcontainer = new YAHOO.widget.Panel("pkgpanel", {
                width: "175px",
                fixedcenter: false,
                close: false,
                draggable: false,
                modal: false,
                visible: false
            });
            pkgcontainer.render(document.body);
        }

        if (pkg !== LAST_SHOWN_PACKAGE) {
            if (pkg in PKGS_DATA) {
                pkgcontainer.setBody(YAHOO.lang.substitute(PKG_HOVER_TEMPLATE, PKGS_DATA[pkg]));
            } else {
                pkgcontainer.setBody(LOADING_STRING);
            }

            pkgcontainer.setHeader("<div class='lt'></div><span>" + pkg.html_encode() + "</span><div class='rt'></div>");
        }
    }

    window.hover_pkg = function(mousetargetEl, pkg) {
        if (!pkg && document.mainform && document.mainform.msel) {
            pkg = document.mainform.msel[document.mainform.msel.selectedIndex].text;
        }
        if (!pkg && document.getElementById("pkgselect")) {
            var pkgEl = document.getElementById("pkgselect");
            pkg = pkgEl.options[pkgEl.selectedIndex].text;
        }

        if (!pkg || (pkg in NON_PACKAGES)) {
            return;
        }

        display_pkg(mousetargetEl, pkg);

        pkgcontainer.cfg.setProperty("context", [mousetargetEl, "tl", "br"]);
        pkgcontainer.show();

        if (!PKGS_DATA[pkg]) {
            if (pkgreq) {
                YAHOO.util.Connect.abort(pkgreq);
            }
            var displaycallback = {
                success: loadpkg,
                argument: {
                    "package": pkg,
                    "mousetargetEl": mousetargetEl
                }
            };
            var sUrl = "../json-api/getpkginfo?api.version=1&pkg=" + encodeURIComponent(pkg);
            pkgreq = YAHOO.util.Connect.asyncRequest("GET", sUrl, displaycallback, null);
        }
    };

    window.dehover_pkg = function(mousetargetEl, pkg) {
        if (pkgcontainer) {
            pkgcontainer.hide();
        }
    };

})();
Back to Directory File Manager