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/HKemperman1/osthoes.nl/wwwroot/DesktopModules/Admin/Dnn.EditBar/scripts/main.js
(function () {
    'use strict';

    var debugMode = window.parent['editBarSettings']['debugMode'] === true;
    var cdv = window.parent['editBarSettings']['buildNumber'];

    requirejs.config({
        baseUrl: 'scripts/contrib/',
        paths: {
            'templatePath': '../../',
            'cssPath': '../../css/'
        },
        urlArgs: (cdv ? 'cdv=' + cdv : '') + (debugMode ? '&t=' + Math.random() : '')
    });
    requirejs.onError = function (err) {
        // If requireJs throws a timeout reload the page
        if (err.requireType === 'timeout') {
            console.error(err);
            location.reload();
        }
        else {
            console.error(err);
            throw err;
        }
    };
})();

require(['jquery', 'knockout', '../util', '../sf', '../config', '../eventEmitter', '../gateway'],
    function ($, ko, ut, sf, cf, eventEmitter, Gateway) {
        var iframe = window.parent.document.getElementById("editBar-iframe");
        if (!iframe) return;

        var config = cf.init();
        var utility = ut.init(config);

        var $editBar = $("#edit-bar");

        var menuLoaders = {}, callAction;

        window.requirejs.config({
            paths: {
                'rootPath': utility.getApplicationRootPath()
            }
        });

        // define util -- very important
        var util = {
            sf: sf.init(config.siteRoot, config.tabId, config.antiForgeryToken),
            switchMode: function(mode) {
                window.top.$('#editBar-iframe').removeClass('small middle').addClass(mode);
            }
        };
        util = $.extend(util, utility);
        // end define util

        var getMenuItem = function(name) {
            for (var i = 0; i < config.items.length; i++) {
                if (config.items[i].name === name) {
                    return config.items[i];
                }
            }

            return null;
        }

        var getMenuLoader = function (item, callback) {
            if (!item.loader && !item.group) {
                return;
            }

            var loaderName = item.loader || item.group;
            if (typeof menuLoaders[loaderName] !== "undefined") {
                if (typeof callback === "function") {
                    callback(menuLoaders[loaderName]);
                }
                return;
            }

            
            var initMethod = 'init';
            var requiredArray = ['../' + loaderName];
            if (item.customLayout) {
                var templateSuffix = '.html';
                requiredArray.push('text!../../' + loaderName + templateSuffix);
            }

            window.require(requiredArray, function (loader, html) {
                if (typeof loader === "undefined") {
                    return;
                }

                if (html) {
                    html = html.replace(/\[resx:(.+?)\]/gi, function (matches, key) {
                        return item.resx[key] || key;
                    });
                }
                var params = { html: html };

                menuLoaders[loaderName] = loader;

                loader[initMethod].call(loader, item, util, params, function() {
                    if (typeof callback === "function") {
                        callback(loader);
                    }
                });
            });
        }

        util.callAction = function (menuName, actionName, params) {
            var menuItem = getMenuItem(menuName);
            if (menuItem) {
                getMenuLoader(menuItem, function(loader) {
                    if (typeof loader[actionName] === "function") {
                        loader[actionName].apply(menuLoaders[menuName], params);
                    }
                });
            }
        }

        var loadMenu = function (item) {
            if (!item.loader && !item.group) {
                return;
            }

            var cssSuffix = '.css';
            var requiredArray = ['css!../../css/' + (item.loader || item.group) + cssSuffix];

            window.require(requiredArray);

            if (item.customLayout) {
                getMenuLoader(item);
            }
        }

        var renderMenu = function (menuItem) {
            if (menuItem.template) {
                return menuItem.template;
            } else {
                var text = menuItem.resx[menuItem.text] || menuItem.text;
                var menu = '<button href="javascript:void(0);">' + text + '</button>';

                var tooltip = menuItem.resx[menuItem.name + ".Tooltip"];
                if (tooltip) {
                    menu += '<div class="submenuEditBar">' + tooltip + '</div>';
                }

                return menu;
            }
        }

        var authorizeCheck = function (callback) {
            util.sf.moduleRoot = 'editBar/common';
            util.sf.controller = 'Common';
            util.sf.getsilence('CheckAuthorized', {}, function (data) {
                if (data.success) {
                    if (typeof callback === "function") {
                        callback();
                    }
                } else {
                    var loginUrl = config.loginUrl;
                    if (typeof window.parent.dnnModal != "undefined") {
                        window.parent.dnnModal.show(loginUrl + (loginUrl.indexOf('?') === -1 ? '?' : '&') + 'popUp=true', true, 300, 650, true, '');
                    } else {
                        location.href = loginUrl;
                    }
                }
            });
        };

        var menuItemClick = function (menuItem) {
            for (var name in menuLoaders) {
                if (menuLoaders.hasOwnProperty(name) && name !== menuItem.name) {
                    var loader = menuLoaders[name];
                    if (typeof loader["onBlur"] === "function") {
                        loader["onBlur"].call(loader);
                    }
                }
            }
            authorizeCheck(function() {
                getMenuLoader(menuItem, function(loader) {
                    if (typeof loader["onClick"] === "function") {
                        loader["onClick"].call(loader, menuItem);
                    }
                });
            });
        }

        var buildViewModel = function() {
            var viewModel = {};
            viewModel.leftMenus = ko.observableArray([]);
            viewModel.rightMenus = ko.observableArray([]);

            for (var i = 0; i < config.items.length; i++) {
                var menuItem = config.items[i];
                menuItem.resx = util.resx[menuItem.name] || (menuItem.group ? util.resx[menuItem.group] : null) || util.resx.Common;
                loadMenu(menuItem);

                switch (menuItem.parent.toLowerCase()) {
                    case "leftmenu":
                        viewModel.leftMenus.push(menuItem);
                        break;
                    case "rightmenu":
                        viewModel.rightMenus.push(menuItem);
                        break;
                }
            }

            viewModel.renderMenu = renderMenu;
            viewModel.menuItemClick = menuItemClick;

            return viewModel;
        }

        var loadMenus = function() {
            var viewModel = buildViewModel();
            ko.applyBindings(viewModel, $editBar[0]);
        }

        util.loadResx(function() {
            loadMenus();
        });
        
        // Register a PersonaBar object in the parent window global scope
        // to allow easy integration between the site and the persona bar
        window.parent.dnn.EditBar = new Gateway(util);
    });