HEX
Server: Microsoft-IIS/8.5
System: Windows NT YDAWBH120 6.3 build 9600 (Windows Server 2012 R2 Standard Edition) AMD64
User: tentjecom_web (0)
PHP: 7.4.14
Disabled: NONE
Upload Files
File: D:/HostingSpaces/EvLuik/vanluiktegelwerken.nl/wwwroot/plugins/filebrowser/js/filebrowser.min.js
/**
 * Filebroser_XH
 *
 * @author    Martin Damken <kontakt@zeichenkombinat.de>
 * @author    The CMSimple_XH developers <devs@cmsimple-xh.org>
 * @copyright 2011-2017 The CMSimple_XH developers (http://cmsimple-xh.org/?The_Team)
 * @license   GNU GPLv3 (http://www.gnu.org/licenses/gpl-3.0.en.html)
 */

(function () {
    "use strict";

    /**
     * Finds all elements with a certain class name.
     *
     * @param {string} className
     *
     * @returns {array-like}
     */
    function findByClass(className) {
        var result;

        if (typeof document.getElementsByClassName !== "undefined") {
            result = document.getElementsByClassName(className);
        } else if (typeof document.querySelectorAll !== "undefined") {
            result = document.querySelectorAll("." + className);
        } else {
            result = [];
        }
        return result;
    }

    /**
     * Calls a function for each element of a collection.
     *
     * @param {array-like} collection
     * @param {Function}   func
     *
     * @returns {undefined}
     */
    function forEach(collection, func) {
        var i, n;

        for (i = 0, n = collection.length; i < n; i += 1) {
            func(collection[i]);
        }
    }

    /**
     * Registers an event listener.
     *
     * @param {EventTarget} target
     * @param {string}      event
     * @param {Function}    listener
     *
     * @returns {undefined}
     */
    function on(target, event, listener) {
        if (typeof target.addEventListener !== "undefined") {
            target.addEventListener(event, listener, false);
        } else if (typeof target.attachEvent !== "undefined") {
            target.attachEvent("on" + event, listener);
        }
    }

    /**
     * Prevents the default event handling.
     *
     * @param {Event} event
     *
     * @returns {undefined}
     */
    function preventDefault(event) {
        if (typeof event.preventDefault !== "undefined") {
            event.preventDefault();
        } else {
            event.returnValue = false;
        }
    }

    /**
     * Toggles the visibility of a form.
     *
     * @param {string} id
     *
     * @returns {undefined}
     */
    function togglexhfbForm(id) {
        var element = document.getElementById(id),
            isOpen = (element.style.display === "block"),
            forms = document.getElementsByTagName("fieldset"),
            i,
            form;

        for (i = 0; i < forms.length; i += 1) {
            form = forms[i];
            if (form.className === "xhfbform") {
                form.style.display = "none";
            }
        }
        if (!isOpen) {
            element.style.display = "block";
            element.getElementsByTagName("input")[0].focus();
        }
    }

    /**
     * Returns the basename of a file.
     *
     * @param {string} filename A file name.
     *
     * @returns {string}
     */
    function basename(filename) {
        return (/[^\/\\]+$/).exec(filename)[0];
    }

    /**
     * Returns whether a file exists in the current directory.
     *
     * @param {string} filename A file name.
     *
     * @returns {boolean}
     */
    function fileExists(filename) {
        var result = false;

        forEach(findByClass("xhfbfile"), function (element) {
            if (element.firstChild.nodeValue === filename) {
                result = true;
            }
        });
        return result;
    }

    /**
     * Obtains information, whether an already existing file should be uploaded.
     *
     * @param {HTMLFormElement} form
     * @param {string}          message
     *
     * @returns {boolean}
     */
    function checkUpload(form, message) {
        var filename = basename(form.elements.fbupload.value);

        if (fileExists(filename)) {
            return window.confirm(message);
        }
        return true;
    }

    /**
     * Shows the rename form.
     *
     * @param {string} renameForm
     * @param {string} messsage
     *
     * @returns {boolean}
     */
    function promptNewName(renameForm, message) {
        var oldNameInput = renameForm.renameFile,
            newName = window.prompt(message, oldNameInput.value);

        if (newName) {
            oldNameInput.value = newName;
        }
        return !!newName;
    }

    /**
     * Handles toggling of create folder form.
     *
     * @returns {undefined}
     */
    function onToggleCreateFolder() {
        togglexhfbForm('xhfbCreateDir');
    }

    /**
     * Handles toggling of upload file form.
     *
     * @returns {undefined}
     */
    function onToggleUploadFile() {
        togglexhfbForm('xhfbUploadFile');
    }

    /**
     * Handles submission of delete folder form.
     *
     * @returns {undefined}
     */
    function onDeleteFolder(event) {
        var target = event.target || event.srcElement,
            path = target.getAttribute("data-path"),
            message = FILEBROWSER.confirm_delete.replace("%s", path);

        if (!window.confirm(message)) {
            preventDefault(event);
        }
    }

    /**
     * Handles submission of rename file form.
     *
     * @returns {undefined}
     */
    function onRenameFile(event) {
        var target = event.target || event.srcElement,
            path = target.getAttribute("data-path"),
            message = FILEBROWSER.prompt_rename.replace("%s", path);

        if (!promptNewName(target, message)) {
            preventDefault(event);
        }
    }

    /**
     * Handles submission of delete file form.
     *
     * @returns {undefined}
     */
    function onDeleteFile(event) {
        var target = event.target || event.srcElement,
            path = target.getAttribute("data-path"),
            message = FILEBROWSER.confirm_delete.replace("%s", path);

        if (!window.confirm(message)) {
            preventDefault(event);
        }
    }

    /**
     * Handles submission of upload form.
     *
     * @returns {undefined}
     */
    function onUploadFile(event) {
        var target = event.target || event.srcElement;

        if (!checkUpload(target, FILEBROWSER.confirm_upload)) {
            preventDefault(event);
        }
    }

    /**
     * Handles choosing of file.
     *
     * @returns {undefined}
     */
    function onFileChoose(event) {
        var target = event.target || event.srcElement;

        window.setLink(
            target.getAttribute("data-file"),
            target.getAttribute("data-is-image")
        );
    }

    /*
     * Register event listeners.
     */
    on(window, "load", function () {
        forEach(findByClass("filebrowser_folder_toggle"), function (element) {
            on(element, "click", onToggleCreateFolder);
        });
        forEach(findByClass("filebrowser_upload_toggle"), function (element) {
            on(element, "click", onToggleUploadFile);
        });
        forEach(findByClass("filebrowser_delete_folder"), function (element) {
            on(element, "submit", onDeleteFolder);
        });
        forEach(findByClass("filebrowser_upload"), function (element) {
            on(element, "submit", onUploadFile);
        });
        forEach(findByClass("filebrowser_rename_file"), function (element) {
            on(element, "submit", onRenameFile);
        });
        forEach(findByClass("filebrowser_delete_file"), function (element) {
            on(element, "submit", onDeleteFile);
        });
        if (!document.getElementById("filebrowser_subfolders")) {
            forEach(findByClass("xhfbfile"), function (element) {
                on(element, "click", onFileChoose);
            });
        }
    });
}());