Browse Source

js: convert dojo/xhr, dojo/event, dojo/Promise to native js

Jason Rivard 4 years ago
parent
commit
90f4ed707c

+ 2 - 2
webapp/src/main/webapp/public/resources/js/configeditor-settings-action.js

@@ -183,8 +183,8 @@ ActionHandler.addRow = function(keyName) {
         instructions: 'Please enter a descriptive name for the action.',
         placeholder:'Name',
         completeFunction:function(newName){
-            let value = PWM_VAR['clientSettingCache'][keyName];
-            let currentSize = PWM_MAIN.JSLibrary.itemCount(value);
+            var value = PWM_VAR['clientSettingCache'][keyName];
+            var currentSize = PWM_MAIN.JSLibrary.itemCount(value);
             value[currentSize] = ActionHandler.defaultValue;
             value[currentSize].name = newName;
             ActionHandler.write(keyName,function(){

+ 13 - 17
webapp/src/main/webapp/public/resources/js/configeditor.js

@@ -862,25 +862,21 @@ PWM_CFGEDIT.displaySettingsCategory = function(category) {
     }
 
     PWM_VAR['skippedSettingCount'] = 0;
-    for (var loopSetting in PWM_SETTINGS['settings']) {
-        (function(settingKey) {
-            var settingInfo = PWM_SETTINGS['settings'][settingKey];
-            if (settingInfo['category'] === category && !settingInfo['hidden']) {
-                htmlSettingBody += PWM_CFGEDIT.drawHtmlOutlineForSetting(settingInfo);
-            }
-        })(loopSetting);
-    }
-    htmlSettingBody += '<div class="footnote" id="panel-skippedSettingInfo">';
+    PWM_MAIN.JSLibrary.forEachInObject(PWM_SETTINGS['settings'],function(key,settingInfo){
+        if (settingInfo['category'] === category && !settingInfo['hidden']) {
+            htmlSettingBody += PWM_CFGEDIT.drawHtmlOutlineForSetting(settingInfo);
+        }
+    });
 
+    htmlSettingBody += '<div class="footnote" id="panel-skippedSettingInfo">';
     settingsPanel.innerHTML = htmlSettingBody;
-    for (var loopSetting in PWM_SETTINGS['settings']) {
-        (function(settingKey) {
-            var settingInfo = PWM_SETTINGS['settings'][settingKey];
-            if (settingInfo['category'] === category && !settingInfo['hidden']) {
-                PWM_CFGEDIT.initSettingDisplay(settingInfo);
-            }
-        })(loopSetting);
-    }
+
+    PWM_MAIN.JSLibrary.forEachInObject(PWM_SETTINGS['settings'],function(key,settingInfo) {
+        if (settingInfo['category'] === category && !settingInfo['hidden']) {
+            PWM_CFGEDIT.initSettingDisplay(settingInfo);
+        }
+    });
+
     if (category === 'LDAP_BASE') {
         PWM_MAIN.addEventHandler('button-test-LDAP_BASE', 'click', function(){PWM_CFGEDIT.ldapHealthCheck();});
     } else if (category === 'DATABASE_SETTINGS') {

+ 4 - 10
webapp/src/main/webapp/public/resources/js/configmanager.js

@@ -158,7 +158,6 @@ PWM_CONFIG.uploadLocalDB=function() {
 
 PWM_CONFIG.closeHeaderWarningPanel = function() {
     console.log('action closeHeader');
-    PWM_CONFIG.headerResizeListener.pause();
 
     PWM_MAIN.addCssClass('header-warning','nodisplay');
     PWM_MAIN.addCssClass('header-warning-backdrop','nodisplay');
@@ -167,17 +166,14 @@ PWM_CONFIG.closeHeaderWarningPanel = function() {
 
 PWM_CONFIG.openHeaderWarningPanel = function() {
     console.log('action openHeader');
-    if (PWM_CONFIG.headerResizeListener) {
-        PWM_CONFIG.headerResizeListener.resume();
-    }
 
-    require(['dojo/dom','dijit/place','dojo/on'], function(dom, place, on) {
+    require(['dojo/dom','dijit/place'], function(dom, place) {
         PWM_MAIN.removeCssClass('header-warning-backdrop','nodisplay');
         PWM_MAIN.removeCssClass('header-warning','nodisplay');
         //PWM_MAIN.addCssClass('button-openHeader','nodisplay');
         place.around(PWM_MAIN.getObject("header-warning"), PWM_MAIN.getObject("header-username-caret"), ["below-alt"], false);
 
-        on.once(PWM_MAIN.getObject("header-warning-backdrop"), "click", function(event) {
+        PWM_MAIN.addEventHandler("header-warning-backdrop", "click", function(event) {
             PWM_CONFIG.closeHeaderWarningPanel();
         });
     });
@@ -336,14 +332,12 @@ PWM_CONFIG.initConfigHeader = function() {
         PWM_CONFIG.openHeaderWarningPanel();
     });
 
-    require(["dojo/dom-construct", "dojo/_base/window", "dojo/dom", "dijit/place", "dojo/on"], function(domConstruct, win, dom, place, on){
+    require(["dojo/dom-construct", "dojo/_base/window", "dojo/dom", "dijit/place"], function(domConstruct, win, dom, place){
         domConstruct.create("div", { id: "header-warning-backdrop", "class":"nodisplay" }, win.body());
 
-        PWM_CONFIG.headerResizeListener = on.pausable(window, "resize", function () {
+        PWM_MAIN.addEventHandler(window, "resize", function () {
             place.around(dom.byId("header-warning"), dom.byId("header-username-caret"), ["below-alt"], false);
         });
-
-        PWM_CONFIG.headerResizeListener.pause();
     });
 
     PWM_CONFIG.showHeaderHealth();

+ 148 - 115
webapp/src/main/webapp/public/resources/js/main.js

@@ -32,48 +32,53 @@ PWM_API.formatDate = function(dateObj) {
 PWM_MAIN.ajaxTimeout = 60 * 1000;
 
 PWM_MAIN.pageLoadHandler = function() {
-    PWM_GLOBAL['localeBundle']=PWM_GLOBAL['localeBundle'] || [];
-    PWM_GLOBAL['url-context']=PWM_MAIN.getObject('application-info').getAttribute('data-url-context');
-    PWM_GLOBAL['pwmFormID']=PWM_MAIN.getObject('application-info').getAttribute('data-pwmFormID');
-    PWM_GLOBAL['clientEtag']=PWM_MAIN.getObject('application-info').getAttribute('data-clientEtag');
+    PWM_GLOBAL['localeBundle'] = PWM_GLOBAL['localeBundle'] || [];
+    PWM_GLOBAL['url-context'] = PWM_MAIN.getObject('application-info').getAttribute('data-url-context');
+    PWM_GLOBAL['pwmFormID'] = PWM_MAIN.getObject('application-info').getAttribute('data-pwmFormID');
+    PWM_GLOBAL['clientEtag'] = PWM_MAIN.getObject('application-info').getAttribute('data-clientEtag');
 
-    require(["dojo/_base/array","dojo/_base/Deferred","dojo/promise/all"], function(array,Deferred,all){
-        var promises = [];
-        {
-            var clientLoadDeferred = new Deferred();
-            PWM_MAIN.loadClientData(function(){clientLoadDeferred.resolve()});
-            promises.push(clientLoadDeferred.promise);
-        }
-        if (typeof PWM_CONFIG !== 'undefined') {
-            PWM_GLOBAL['localeBundle'].push('Config');
-        }
-        if (typeof PWM_SETTINGS !== 'undefined' && typeof PWM_CFGEDIT !== 'undefined') {
-            var clientConfigLoadDeferred = new Deferred();
-            PWM_CFGEDIT.initConfigSettingsDefinition(function(){clientConfigLoadDeferred.resolve()});
-            promises.push(clientConfigLoadDeferred.promise);
-        }
-        if (typeof PWM_ADMIN !== 'undefined') {
-            PWM_GLOBAL['localeBundle'].push('Admin');
+    var finishInitCounter = 0;
+    var initFunctions = [];
 
-            var adminLoadDeferred = new Deferred();
-            PWM_ADMIN.initAdminPage(function(){adminLoadDeferred.resolve()});
-            promises.push(adminLoadDeferred.promise);
-        }
-        {
-            var seenBundles = [];
-            PWM_GLOBAL['localeBundle'].push('Display');
-            array.forEach(PWM_GLOBAL['localeBundle'], function(bundleName){
-                if (array.indexOf(seenBundles, bundleName)  === -1) {
-                    var displayLoadDeferred = new Deferred();
-                    PWM_MAIN.loadLocaleBundle(bundleName,function(){displayLoadDeferred.resolve()});
-                    promises.push(displayLoadDeferred.promise);
-                    seenBundles.push(bundleName);
-                }
-            });
-        }
-        all(promises).then(function () {
+    var completeFunction = function () {
+        finishInitCounter++;
+        if ( finishInitCounter === initFunctions.length ) {
             PWM_MAIN.initPage();
+        }
+    };
+
+    initFunctions.push(function () {
+        PWM_MAIN.loadClientData(completeFunction);
+    });
+    if (typeof PWM_CONFIG !== 'undefined') {
+        PWM_GLOBAL['localeBundle'].push('Config');
+    }
+    if (typeof PWM_SETTINGS !== 'undefined' && typeof PWM_CFGEDIT !== 'undefined') {
+        initFunctions.push(function () {
+            PWM_CFGEDIT.initConfigSettingsDefinition(completeFunction);
+        });
+    }
+    if (typeof PWM_ADMIN !== 'undefined') {
+        PWM_GLOBAL['localeBundle'].push('Admin');
+
+        initFunctions.push(function () {
+            PWM_ADMIN.initAdminPage(completeFunction);
+        });
+    }
+    {
+        var seenBundles = [];
+        PWM_GLOBAL['localeBundle'].push('Display');
+        PWM_MAIN.JSLibrary.forEachInArray(PWM_GLOBAL['localeBundle'], function (bundleName) {
+            if (!PWM_MAIN.JSLibrary.arrayContains(seenBundles, bundleName)) {
+                initFunctions.push(function () {
+                    PWM_MAIN.loadLocaleBundle(bundleName, completeFunction);
+                });
+            }
         });
+    }
+
+    PWM_MAIN.JSLibrary.forEachInArray(initFunctions,function(initFunction){
+        initFunction();
     });
 };
 
@@ -82,9 +87,9 @@ PWM_MAIN.loadClientData=function(completeFunction) {
     var url = PWM_GLOBAL['url-context'] + "/public/api?processAction=clientData&etag=" + PWM_GLOBAL['clientEtag'];
     url = PWM_MAIN.addParamToUrl(url,'pageUrl',window.location.href);
     var loadFunction = function(data) {
-        for (var globalProp in data['data']['PWM_GLOBAL']) {
-            PWM_GLOBAL[globalProp] = data['data']['PWM_GLOBAL'][globalProp];
-        }
+        PWM_MAIN.JSLibrary.forEachInObject(data['data']['PWM_GLOBAL'],function(key,value){
+            PWM_GLOBAL[key] = value;
+        })
         PWM_MAIN.log('loaded client data');
         if (completeFunction) completeFunction();
     };
@@ -164,14 +169,9 @@ PWM_MAIN.initPage = function() {
     }
 
     if (PWM_GLOBAL['pageLeaveNotice'] > 0) {
-        require(["dojo"], function(dojo){
-            PWM_MAIN.addEventHandler(document, "beforeunload", function(){
-                dojo.xhrPost({
-                    url: PWM_GLOBAL['url-command'] + "?processAction=pageLeaveNotice&pwmFormID=" + PWM_GLOBAL['pwmFormID'],
-                    preventCache: true,
-                    sync: true
-                });
-            });
+        PWM_MAIN.addEventHandler(document, "beforeunload", function(){
+            var url = PWM_GLOBAL['url-command'] + "?processAction=pageLeaveNotice&pwmFormID=" + PWM_GLOBAL['pwmFormID'];
+            PWM_MAIN.ajaxRequest(url,function(){},{preventCache:true});
         });
     }
 
@@ -296,8 +296,7 @@ PWM_MAIN.applyFormAttributes = function() {
 };
 
 PWM_MAIN.preloadAll = function(nextFunction) {
-    require(["dijit/Dialog","dijit/ProgressBar","dijit/registry","dojo/_base/array","dojo/data/ObjectStore",
-        "dojo/store/Memory","dijit/Tooltip","dijit/Menu","dijit/MenuItem","dijit/MenuSeparator"],function(){
+    require(["dijit/Dialog"],function(){
         if (nextFunction) {
             nextFunction();
         }
@@ -324,16 +323,28 @@ PWM_MAIN.showString = function (key, options) {
     }
 };
 
-PWM_MAIN.addEventHandler = function(nodeId,eventType,functionToAdd) {
+PWM_MAIN.addEventHandler = function(nodeId,events,theFunction) {
     var element = PWM_MAIN.getObject(nodeId);
-    if (element) {
-        //element.addEventListener(eventType, functionToAdd);
-        require(["dojo", "dojo/on"], function (dojo, on) {
-            on(element, eventType, functionToAdd);
+    if (element && events) {
+        var eventArray = Array.isArray(events) ? events : events.split(',');
+        PWM_MAIN.JSLibrary.forEachInArray(eventArray,function(event){
+            if (element.addEventListener){
+                element.addEventListener(event, theFunction, false);
+            } else if (element.attachEvent){
+                element.attachEvent('on'+event, theFunction);
+            }
         });
     }
 };
 
+PWM_MAIN.addOneTimeEventHandler = function(nodeId,events,theFunctions) {
+    var oneTimeFunction = function() {
+        element.removeEventListener(events, oneTimeFunction);
+        theFunctions();
+    }
+    PWM_MAIN.addEventHandler(nodeId,events,oneTimeFunction)
+};
+
 
 PWM_MAIN.gotoUrl = function(url, options) {
     options = options === undefined ? {} : options;
@@ -950,22 +961,13 @@ PWM_MAIN.showEula = function(requireAgreement, agreeFunction) {
 
     var eulaLocation = PWM_GLOBAL['url-resources'] + '/text/eula.txt';
 
-    require(["dojo/request/xhr"], function (xhr) {
-        var loadFunction = function (data) {
-            displayEula(data);
-        };
-        var postOptions = {
-            method: 'GET'
-        };
-
-        var errorFunction = function(e) {
-            alert('error loading eula text:' + e);
-        };
-
-        xhr(eulaLocation, postOptions).then(loadFunction, errorFunction, function(evt){});
-    });
-
-
+    var options = {};
+    options['method'] = 'GET';
+    options['handleAs'] = 'text';
+    var loadFunction = function (data) {
+        displayEula(data);
+    };
+    PWM_MAIN.ajaxRequest(eulaLocation, loadFunction, options);
 };
 
 PWM_MAIN.showConfirmDialog = function(options) {
@@ -1356,13 +1358,15 @@ PWM_MAIN.JSLibrary.removeFromArray = function(array,element) {
 };
 
 PWM_MAIN.JSLibrary.readValueOfSelectElement = function(nodeID) {
-    var element = document.getElementById(nodeID);
-    var stringValue = element.options[element.selectedIndex].value;
-    return stringValue;
+    var element = PWM_MAIN.getObject(nodeID);
+    if (element && element.options && element.selectedIndex >= 0) {
+        return element.options[element.selectedIndex].value;
+    }
+    return "";
 };
 
 PWM_MAIN.JSLibrary.setValueOfSelectElement = function(nodeID, value) {
-    var element = document.getElementById(nodeID);
+    var element = PWM_MAIN.getObject(nodeID);
     for(var i=0; i < element.options.length; i++) {
         if (element.options[i].value === value) {
             element.selectedIndex = i;
@@ -1372,22 +1376,42 @@ PWM_MAIN.JSLibrary.setValueOfSelectElement = function(nodeID, value) {
 };
 
 PWM_MAIN.JSLibrary.formToValueMap = function(formElement) {
-    var formData = new FormData( formElement );
     var returnData = {};
-    formData.forEach((value, key) => {
-        // Reflect.has in favor of: object.hasOwnProperty(key)
-        if(!Reflect.has(returnData, key)){
-            returnData[key] = value;
-            return;
-        }
-        if(!Array.isArray(returnData[key])){
-            returnData[key] = [returnData[key]];
+    if ( formElement.elements ) {
+        var formElements = formElement.elements;
+        for (var i = 0; i < formElements.length; i++) {
+            var field = formElements[i];
+            if (field.disabled !== true) {
+                if (field.tagName && field.tagName.toLowerCase() === 'input') {
+                    var name = field.name;
+                    var value = field.value;
+                    returnData[name] = value;
+                } else if (field.tagName && field.tagName.toLowerCase() === 'select') {
+                    var name = field.name;
+                    var value = PWM_MAIN.JSLibrary.readValueOfSelectElement(field);
+                    returnData[name] = value;
+                }
+            }
         }
-        returnData[key].push(value);
-    });
+    }
+
     return returnData;
 };
 
+PWM_MAIN.JSLibrary.forEachInArray = function(array,forEachFunction) {
+    for (var i=0, l=array.length; i<l; i++) {
+        forEachFunction(array[i]);
+    }
+}
+
+PWM_MAIN.JSLibrary.forEachInObject = function(object,forEachFunction) {
+    for (var key in object) {
+        if (object.hasOwnProperty(key)) {
+            forEachFunction(key,object[key]);
+        }
+    }
+}
+
 PWM_MAIN.JSLibrary.removeElementFromDom = function(elementID) {
     var element = PWM_MAIN.getObject(elementID);
     if (element) {
@@ -1481,7 +1505,7 @@ ShowHidePasswordHandler.init = function(nodeName) {
         return;
     }
 
-    require(["dojo/dom-construct", "dojo/on", "dojo/dom-attr"], function(domConstruct, on, attr){
+    require(["dojo/dom-construct", "dojo/dom-attr"], function(domConstruct, attr){
         var defaultType = attr.get(node, "type");
         attr.set(node, "data-originalType", defaultType);
         attr.set(node, "data-managedByShowHidePasswordHandler","true");
@@ -1538,7 +1562,7 @@ ShowHidePasswordHandler.show = function(nodeName) {
 
     var node = PWM_MAIN.getObject(nodeName);
     node.focus();
-    require(["dojo/dom-construct", "dojo/on", "dojo/dom-attr"], function(domConstruct, on, attr) {
+    require(["dojo/dom-construct", "dojo/dom-attr"], function(domConstruct, attr) {
         var defaultType = attr.get(nodeName, "data-originalType");
         if (defaultType === 'password') {
             setTimeout(function () {
@@ -1773,14 +1797,13 @@ PWM_MAIN.TimestampHandler.initElement = function(element) {
 };
 
 PWM_MAIN.TimestampHandler.updateAllElements = function() {
-    for (var el in PWM_MAIN.TimestampHandler.ElementList) {
-        var element = PWM_MAIN.TimestampHandler.ElementList[el];
+    PWM_MAIN.JSLibrary.forEachInArray(PWM_MAIN.TimestampHandler.ElementList,function(element){
         if (document.body.contains(element)) {
             PWM_MAIN.TimestampHandler.updateElement(element);
         } else {
-            delete PWM_MAIN.TimestampHandler.ElementList[el];
+            PWM_MAIN.JSLibrary.removeFromArray(PWM_MAIN.TimestampHandler.ElementList,element);
         }
-    }
+    });
 };
 
 PWM_MAIN.TimestampHandler.updateElement = function(element) {
@@ -1855,31 +1878,41 @@ PWM_MAIN.ajaxRequest = function(url,loadFunction,options) {
         requestHeaders['Content-Type'] = responseMimeType;
     }
 
-    require(["dojo/request/xhr","dojo","dojo/json"], function (xhr,dojo,dojoJson) {
-        loadFunction = loadFunction !== undefined ? loadFunction : function (data) {
-            alert('missing load function, return results:' + dojo.toJson(data))
-        };
-        if (addPwmFormID) {
-            url = PWM_MAIN.addPwmFormIDtoURL(url);
-        }
-        if (preventCache) {
-            url = PWM_MAIN.addParamToUrl(url, 'preventCache', (new Date).valueOf());
-        }
-        var postOptions = {
-            headers: requestHeaders,
-            //encoding: "utf-8",
-            method: method,
-            preventCache: false,
-            handleAs: handleAs,
-            timeout: ajaxTimeout
-        };
+    if (addPwmFormID) {
+        url = PWM_MAIN.addPwmFormIDtoURL(url);
+    }
+    if (preventCache) {
+        url = PWM_MAIN.addParamToUrl(url, 'preventCache', (new Date).valueOf());
+    }
 
-        if (hasContent) {
-            postOptions['data'] = dojoJson.stringify(content);
+    var xhr = new XMLHttpRequest();
+    xhr.onload = function() {
+        if ( loadFunction === undefined ) {
+            alert('missing load function, return results:' + xhr.response)
+        } else {
+            var response = xhr.response;
+            // run parser for IE
+            if ( typeof response === "string" && handleAs === "json") {
+                response = JSON.parse( response );
+            }
+            loadFunction(response);
         }
+    };
+    xhr.onerror = errorFunction;
+    xhr.ontimeout = errorFunction;
+    xhr.open(method, url);
+    xhr.responseType = handleAs;
+    xhr.timeout = ajaxTimeout;
 
-        xhr(url, postOptions).then(loadFunction, errorFunction, function(evt){});
-    });
+    for (var headerKey in requestHeaders) {
+        xhr.setRequestHeader( headerKey, requestHeaders[headerKey]);
+    }
+
+    if ( hasContent ) {
+        xhr.send( JSON.stringify( content ) );
+    } else {
+        xhr.send();
+    }
 };
 
 PWM_MAIN.convertSecondsToDisplayTimeDuration = function(amount, fullLength) {

+ 32 - 41
webapp/src/main/webapp/public/resources/js/responses.js

@@ -85,52 +85,43 @@ PWM_RESPONSES.makeSelectOptionsDistinct=function() {
     // texts that are in use
     var currentlySelectedTexts = [];
 
-    for (var loopID in simpleRandomSelectElements) {
-        (function(iterID){
-            var questionID = simpleRandomSelectElements[iterID];
-            var selectedElement = PWM_MAIN.getObject(questionID);
-            var selectedIndex = selectedElement.selectedIndex;
-            var selectedValue = selectedElement.options[selectedIndex].value;
-            if ('UNSELECTED' !== selectedValue) {
-                currentlySelectedTexts.push(selectedValue);
-            }
-        }(loopID));
-    }
+    PWM_MAIN.JSLibrary.forEachInArray(simpleRandomSelectElements,function(questionID){
+        var selectedElement = PWM_MAIN.getObject(questionID);
+        var selectedIndex = selectedElement.selectedIndex;
+        var selectedValue = selectedElement.options[selectedIndex].value;
+        if ('UNSELECTED' !== selectedValue) {
+            currentlySelectedTexts.push(selectedValue);
+        }
+    });
 
     // repopulate the select elements
-    for (var loopID in simpleRandomSelectElements) {
-        (function(iterID){
-            var questionID = simpleRandomSelectElements[iterID];
-            var selectedElement = PWM_MAIN.getObject(questionID);
-            var selectedIndex = selectedElement.selectedIndex;
-            var selectedValue = selectedElement.options[selectedIndex].value;
-            var responseID = selectedElement.getAttribute('data-response-id');
-            selectedElement.innerHTML = '';
-            if (selectedValue === 'UNSELECTED') {
-                var unselectedOption = document.createElement('option');
-                unselectedOption.value = 'UNSELECTED';
-                unselectedOption.innerHTML = '&nbsp;&mdash;&nbsp;' + initialChoiceText + '&nbsp;&mdash;&nbsp;';
-                unselectedOption.selected = true;
-                selectedElement.appendChild(unselectedOption);
-            }
+    PWM_MAIN.JSLibrary.forEachInArray(simpleRandomSelectElements,function(questionID){
+        var selectedElement = PWM_MAIN.getObject(questionID);
+        var selectedIndex = selectedElement.selectedIndex;
+        var selectedValue = selectedElement.options[selectedIndex].value;
+        var responseID = selectedElement.getAttribute('data-response-id');
+        selectedElement.innerHTML = '';
+        if (selectedValue === 'UNSELECTED') {
+            var unselectedOption = document.createElement('option');
+            unselectedOption.value = 'UNSELECTED';
+            unselectedOption.innerHTML = '&nbsp;&mdash;&nbsp;' + initialChoiceText + '&nbsp;&mdash;&nbsp;';
+            unselectedOption.selected = true;
+            selectedElement.appendChild(unselectedOption);
+        }
 
-            for (var i = 0; i < allPossibleTexts.length; i++) {
-                var loopText = allPossibleTexts[i];
-                var optionElement = document.createElement('option');
-                optionElement.value = loopText;
-                optionElement.innerHTML = loopText;
+        PWM_MAIN.JSLibrary.forEachInArray(allPossibleTexts,function(loopText){
+            var optionElement = document.createElement('option');
+            optionElement.value = loopText;
+            optionElement.innerHTML = loopText;
 
-                require(["dojo/_base/array"], function(array){
-                    if (loopText === selectedValue || array.indexOf(currentlySelectedTexts,loopText) === -1) {
-                        if (loopText === selectedValue) {
-                            optionElement.selected = true;
-                        }
-                        selectedElement.appendChild(optionElement);
-                    }
-                });
+            if (loopText === selectedValue || !PWM_MAIN.JSLibrary.arrayContains(currentlySelectedTexts,loopText)) {
+                if (loopText === selectedValue) {
+                    optionElement.selected = true;
+                }
+                selectedElement.appendChild(optionElement);
             }
-        }(loopID));
-    }
+        });
+    });
 
     console.log('exiting makeSelectOptionsDistinct(), duration:' + (((new Date()).getTime()) - startTime) + "ms");
 };

+ 1 - 0
webapp/src/main/webapp/public/resources/text/eula.txt

@@ -0,0 +1 @@
+eula text