Viewing File: /usr/local/cpanel/whostmgr/docroot/js2/minpwstrength.js

(function() {
    var topConstraint = 0;
    var bottomConstraint = 200;
    var scaleFactor = 0.5;
    var keyIncrement = 10;
    var tickSize = 2;

    var _lock = YAHOO.widget.Slider.prototype.lock;
    var _unlock = YAHOO.widget.Slider.prototype.unlock;
    YAHOO.lang.augmentObject(YAHOO.widget.Slider.prototype, {
        get_real_value: function() {
            return Math.round(this.getValue() * scaleFactor);
        },

        lock: function() {
            _lock.apply(this);
            DOM.addClass(this.id, "disabled");
        },
        unlock: function() {
            _unlock.apply(this);
            DOM.removeClass(this.id, "disabled");
        }
    });


    var sliders = {};

    STRENGTHS.forEach(function(key) {
        var slider,
            enabler = DOM.get(key + "-enabled"),
            bg = key + "-slider-bg",
            thumb = key + "-slider-thumb",
            valuearea = key + "-slider-value",
            textfield = key;

        EVENT.onDOMReady(function() {
            slider = YAHOO.widget.Slider.getHorizSlider(bg,
                thumb, topConstraint, bottomConstraint, tickSize);

            sliders[key] = slider;

            slider.subscribe("change", function(offsetFromStart) {
                var fld = DOM.get(textfield);
                var actualValue = slider.get_real_value();
                fld.value = actualValue;
                if (enabler) {
                    enabler.checked = true;
                }
                DOM.get(bg).title = LOCALE.maketext("The password strength must be at least [numf,_1].", actualValue);
            });

            if (enabler) {
                EVENT.on(enabler, "click", function(e) {
                    if (!this.checked) {
                        var textFieldEl = DOM.get(textfield);
                        if (textFieldEl.id == "minpwstrength") {
                            textFieldEl.value = "0";
                        } else {
                            textFieldEl.value = "";
                        }
                    }
                });
            }

            var copy_text_to_slider = function() {
                var v = parseFloat(DOM.get(textfield).value, 10);
                if (typeof v === "number") {
                    if (enabler) {
                        enabler.checked = true;
                    }
                    if (v > MAX_STRENGTH) {
                        v = MAX_STRENGTH;
                    }
                    slider.setValue(Math.round(v / scaleFactor), true);
                }
            };

            if (CPANEL.dom.has_oninput) {
                EVENT.on(textfield, "input", copy_text_to_slider);
            } else { // IE 8
                EVENT.on(textfield, "keyup", copy_text_to_slider);
                EVENT.on(textfield, "paste", copy_text_to_slider);
            }
            if (!enabler || enabler.checked) {
                copy_text_to_slider();
            }
        });
    });

    window.save = function save() {
        var form_data = CPANEL.dom.get_data_from_form("the_form");
        var data = {};
        STRENGTHS.forEach(function(key) {
            data[key] = form_data[key + "-control"] ? form_data[key] : "";
        });
        data["default"] = form_data["default"];

        var overlay = new CPANEL.ajax.Page_Progress_Overlay(null, {
            covers: "the_form",
            status_html: LOCALE.maketext("Saving …")
        });
        overlay.show();

        CPANEL.api({
            func: "setminimumpasswordstrengths",
            catch_api_errors: true,
            data: data,
            callback: CPANEL.ajax.build_page_callback(
                function() {
                    new CPANEL.ajax.Dynamic_Notice({
                        level: "success",
                        content: LOCALE.maketext("Success!")
                    });
                }, {
                    hide_on_return: overlay
                }
            )
        });
    };
}());
Back to Directory File Manager