
On 02/18/2016 05:13 PM, atreyee@linux.vnet.ibm.com wrote:
From: Atreyee Mukhopadhyay <atreyee@linux.vnet.ibm.com>
Second level tabs in Host functionality are sorted using a unique number assigned to align them in desired order irrespective of the plugin installed --- ui/js/src/wok.main.js | 822 +++++++++++++++++++++++++------------------------- 1 file changed, 416 insertions(+), 406 deletions(-)
diff --git a/ui/js/src/wok.main.js b/ui/js/src/wok.main.js index 7d604b4..8a36235 100644 --- a/ui/js/src/wok.main.js +++ b/ui/js/src/wok.main.js @@ -22,454 +22,464 @@ wok.tabMode = {};
wok.config = undefined; wok.getConfig(function(result) { - wok.config = result; + wok.config = result; }, function() { - wok.config = {}; + wok.config = {}; });
Please, use 4 spaces for indentation. It is being really hard to review this patch as all the indentation level was changed to 2 spaces. Please, revert those changes and send a new patch to review.
wok.main = function() { - wok.isLoggingOut = false; - wok.popable(); - - var genTabs = function(tabs) { - var tabsHtml = []; - $(tabs).each(function(i, tab) { - var functionality = tab['functionality']; - var title = tab['title']; - var path = tab['path']; - var mode = tab['mode']; - if (mode != 'none') { - var helpPath = wok.checkHelpFile(path); - var disableHelp = (helpPath.length == 0 ? "disableHelp" : helpPath); - tabsHtml.push( - '<li class="', functionality.toLowerCase() + 'Tab', '">', - '<a class="item ', disableHelp, '" href="', path, '">', - title, - '</a>', - '<input id="funcTab" name="funcTab" class="sr-only" value="' + functionality.toLowerCase() + '" type="hidden"/>', - '<input id="helpPathId" name="helpPath" class="sr-only" value="' + helpPath + '" type="hidden"/>', - '</li>' - ); - } - }); - return tabsHtml.join(''); - }; - - var genFuncTabs = function(tabs){ - var functionalTabHtml = []; - $(tabs).each(function(i, tab) { - functionalTabHtml.push( - '<li>', - '<a class="item',' ',tab.toLowerCase(),'Tab','" href="#">', - tab, - '</a>', - '</li>' - ); - }); - return functionalTabHtml.join(''); - }; - - var parseTabs = function(xmlData) { - var tabs = []; - var functionalTabs = {}; - var functionality = $(xmlData).find('functionality').text(); - $(xmlData).find('tab').each(function() { - var $tab = $(this); - var titleKey = $tab.find('title').text(); - var title = i18n[titleKey] ? i18n[titleKey] : titleKey; - var path = $tab.find('path').text(); - var roles = wok.cookie.get('roles'); - if (roles) { - var role = JSON.parse(roles)[titleKey.toLowerCase()]; - var mode = $tab.find('[role="' + role + '"]').attr('mode'); - wok.tabMode[titleKey.toLowerCase()] = mode; - tabs.push({ - functionality: functionality, - title: title, - path: path, - mode: mode - }); - } else { - document.location.href = 'login.html'; - } + wok.isLoggingOut = false; + wok.popable(); + + var genTabs = function(tabs) { + var tabsHtml = []; + $(tabs).each(function(i, tab) { + var functionality = tab['functionality']; + var title = tab['title']; + var path = tab['path']; + var mode = tab['mode']; + if (mode != 'none') { + var helpPath = wok.checkHelpFile(path); + var disableHelp = (helpPath.length == 0 ? "disableHelp" : helpPath); + tabsHtml.push( + '<li class="', functionality.toLowerCase() + 'Tab', '">', + '<a class="item ', disableHelp, '" href="', path, '">', + title, + '</a>', + '<input id="funcTab" name="funcTab" class="sr-only" value="' + functionality.toLowerCase() + '" type="hidden"/>', + '<input id="helpPathId" name="helpPath" class="sr-only" value="' + helpPath + '" type="hidden"/>', + '</li>' + ); + } + }); + return tabsHtml.join(''); + }; + + var genFuncTabs = function(tabs) { + var functionalTabHtml = []; + $(tabs).each(function(i, tab) { + functionalTabHtml.push( + '<li>', + '<a class="item', ' ', tab.toLowerCase(), 'Tab', '" href="#">', + tab, + '</a>', + '</li>' + ); + }); + return functionalTabHtml.join(''); + }; + + var parseTabs = function(xmlData) { + var tabs = []; + var functionalTabs = {}; + var functionality = $(xmlData).find('functionality').text(); + $(xmlData).find('tab').each(function() { + var $tab = $(this); + var titleKey = $tab.find('title').text(); + var title = i18n[titleKey] ? i18n[titleKey] : titleKey; + var path = $tab.find('path').text(); + var roles = wok.cookie.get('roles'); + var order = $tab.find('order').text(); + + if (roles) { + var role = JSON.parse(roles)[titleKey.toLowerCase()]; + var mode = $tab.find('[role="' + role + '"]').attr('mode'); + wok.tabMode[titleKey.toLowerCase()] = mode; + tabs.push({ + functionality: functionality, + title: title, + path: path, + mode: mode, + order: order }); + } else { + document.location.href = 'login.html'; + } + }); + + return tabs; + };
- return tabs; - }; - - var retrieveTabs = function(url) { - var tabs = []; - $.ajax({ - url : url, - async : false, - success : function(xmlData) { - tabs = parseTabs(xmlData); - }, - statusCode : { - 404: function() { - return tabs; - } - } + var retrieveTabs = function(url) { + var tabs = []; + $.ajax({ + url: url, + async: false, + success: function(xmlData) { + tabs = parseTabs(xmlData); + }, + statusCode: { + 404: function() { + return tabs; + } + } + }); + return tabs; + }; + + var pluginConfigUrl = 'plugins/{plugin}/ui/config/tab-ext.xml'; + var pluginI18nUrl = 'plugins/{plugin}/i18n.json'; + var DEFAULT_HASH; + var buildTabs = function(callback) { + var tabs = []; + var functionalTabs = []; + wok.listPlugins(function(plugins) { + $(plugins).each(function(i, p) { + var url = wok.substitute(pluginConfigUrl, { + plugin: p }); - return tabs; - }; - - var pluginConfigUrl = 'plugins/{plugin}/ui/config/tab-ext.xml'; - var pluginI18nUrl = 'plugins/{plugin}/i18n.json'; - var DEFAULT_HASH; - var buildTabs = function(callback) { - var tabs = []; - var functionalTabs = []; - wok.listPlugins(function(plugins) { - $(plugins).each(function(i, p) { - var url = wok.substitute(pluginConfigUrl, { - plugin: p - }); - var i18nUrl = wok.substitute(pluginI18nUrl, { - plugin: p - }); - wok.getI18n(function(i18nObj){ $.extend(i18n, i18nObj)}, - function(i18nObj){ //i18n is not define by plugin - }, i18nUrl, true); - var pluginTabs = retrieveTabs(url); - if(pluginTabs.length > 0){ - var func = pluginTabs[0].functionality - if (functionalTabs.indexOf(func) == -1) { - functionalTabs.push(pluginTabs[0].functionality) - } - tabs.push.apply(tabs, pluginTabs); - } - }); - - //redirect to empty page when no plugin installed - if(tabs.length===0){ - DEFAULT_HASH = 'wok-empty'; - } else { - var defaultTab = tabs[0] - var defaultTabPath = defaultTab && defaultTab['path'] - - // Remove file extension from 'defaultTabPath' - DEFAULT_HASH = defaultTabPath && - defaultTabPath.substring(0, defaultTabPath.lastIndexOf('.')) - } - - $('#functionalTabPanel ul').append(genFuncTabs(functionalTabs)); - $('#tabPanel ul').append(genTabs(tabs)); - wok.getHostname(); - - callback && callback(); - }, function(data) { - wok.message.error(data.responseJSON.reason); - }, true); - }; - - var onLanguageChanged = function(lang) { - wok.lang.set(lang); - location.reload(); - }; - - /** - * Do the following setup: - * 1) Clear any timing events. - * 2) If the given URL is invalid (i.e., no corresponding href value in - * page tab list.), then clear location.href and inform the user; - * - * Or else: - * Move the page tab indicator to the right position; - * Load the page content via Ajax. - */ - var onWokRedirect = function(url) { - /* - * Find the corresponding tab node and animate the arrow indicator to - * point to the tab. If nothing found, inform user the URL is invalid - * and clear location.hash to jump to home page. - */ - var tab = $('#tabPanel a[href="' + url + '"]'); - if (tab.length === 0 && url != 'wok-empty.html') { - location.hash = '#'; - return; + var i18nUrl = wok.substitute(pluginI18nUrl, { + plugin: p + }); + wok.getI18n(function(i18nObj) { + $.extend(i18n, i18nObj) + }, + function(i18nObj) { //i18n is not define by plugin + }, i18nUrl, true); + var pluginTabs = retrieveTabs(url); + if (pluginTabs.length > 0) { + var func = pluginTabs[0].functionality + if (functionalTabs.indexOf(func) == -1) { + functionalTabs.push(pluginTabs[0].functionality) + } + tabs.push.apply(tabs, pluginTabs); } - //Remove the tab arrow indicator for no plugin - if (url == 'wok-empty.html') { - $('#main').html('No plugins installed currently.You can download the available plugins <a href="https://github.com/kimchi-project/kimchi">Kimchi</a> and <a href="https://github.com/kimchi-project/ginger">Ginger</a> from Github').addClass('noPluginMessage'); + }); + + //sort second level tab based on their ordering number + var orderedTabs = tabs.slice(0); + orderedTabs.sort(function(a, b) { + return a.order - b.order; + }); + + //redirect to empty page when no plugin installed + if (tabs.length === 0) { + DEFAULT_HASH = 'wok-empty'; + } else { + var defaultTab = tabs[0] + var defaultTabPath = defaultTab && defaultTab['path'] + + // Remove file extension from 'defaultTabPath' + DEFAULT_HASH = defaultTabPath && + defaultTabPath.substring(0, defaultTabPath.lastIndexOf('.')) + } + + $('#functionalTabPanel ul').append(genFuncTabs(functionalTabs)); + $('#tabPanel ul').append(genTabs(orderedTabs)); + wok.getHostname(); + + callback && callback(); + }, function(data) { + wok.message.error(data.responseJSON.reason); + }, true); + }; + + var onLanguageChanged = function(lang) { + wok.lang.set(lang); + location.reload(); + }; + + /** + * Do the following setup: + * 1) Clear any timing events. + * 2) If the given URL is invalid (i.e., no corresponding href value in + * page tab list.), then clear location.href and inform the user; + * + * Or else: + * Move the page tab indicator to the right position; + * Load the page content via Ajax. + */ + var onWokRedirect = function(url) { + /* + * Find the corresponding tab node and animate the arrow indicator to + * point to the tab. If nothing found, inform user the URL is invalid + * and clear location.hash to jump to home page. + */ + var tab = $('#tabPanel a[href="' + url + '"]'); + if (tab.length === 0 && url != 'wok-empty.html') { + location.hash = '#'; + return; + } + //Remove the tab arrow indicator for no plugin + if (url == 'wok-empty.html') { + $('#main').html('No plugins installed currently.You can download the available plugins <a href="https://github.com/kimchi-project/kimchi">Kimchi</a> and <a href="https://github.com/kimchi-project/ginger">Ginger</a> from Github').addClass('noPluginMessage'); + } else { + var plugin = $(tab).parent().find("input[name='funcTab']").val(); + + $('#tabPanel').removeClass(function(i, css) { + return (css.match(/\S+Tab/g) || []).join(' '); + }); + $('#tabPanel').addClass(plugin + 'Tab'); + $('#tabPanel ul li').removeClass('active'); + $.each($('#tabPanel li'), function(i, t) { + if ($(t).hasClass(plugin + 'Tab')) { + $(t).css('display', 'block'); } else { - var plugin = $(tab).parent().find("input[name='funcTab']").val(); - - $('#tabPanel').removeClass(function(i, css) { - return (css.match(/\S+Tab/g) || []).join(' '); - }); - $('#tabPanel').addClass(plugin + 'Tab'); - $('#tabPanel ul li').removeClass('active'); - $.each($('#tabPanel li'), function(i, t) { - if ($(t).hasClass(plugin + 'Tab')) { - $(t).css('display', 'block'); - } else { - $(t).css('display', 'none'); - } - }); - - $(tab).parent().addClass('active'); - $(tab).addClass(plugin + 'Selected').focus(); - - $('#functionalTabPanel ul li').removeClass('active'); - $('#functionalTabPanel ul .' + plugin + 'Tab').parent().addClass('active').focus(); - - // Disable Help button according to selected tab - if ($(tab).hasClass("disableHelp")) { - $('#btn-help').css('cursor', "not-allowed"); - $('#btn-help').off("click"); - } - else { - $('#btn-help').css('cursor', "pointer"); - $('#btn-help').on("click", wok.openHelp); - } - // Load page content. - loadPage(url); + $(t).css('display', 'none'); } - }; + }); + + $(tab).parent().addClass('active'); + $(tab).addClass(plugin + 'Selected').focus(); + + $('#functionalTabPanel ul li').removeClass('active'); + $('#functionalTabPanel ul .' + plugin + 'Tab').parent().addClass('active').focus(); + + // Disable Help button according to selected tab + if ($(tab).hasClass("disableHelp")) { + $('#btn-help').css('cursor', "not-allowed"); + $('#btn-help').off("click"); + } else { + $('#btn-help').css('cursor', "pointer"); + $('#btn-help').on("click", wok.openHelp); + } + // Load page content. + loadPage(url); + } + }; + + /** + * Use Ajax to dynamically load a page without a page refreshing. Handle + * arrow cursor animation, DOM node focus, and page content rendering. + */ + var loadPage = function(url) { + // Get the page content through Ajax and render it. + url && $('#main').load(url, function(responseText, textStatus, jqXHR) { + if (jqXHR['status'] === 401 || jqXHR['status'] === 303) { + var isSessionTimeout = jqXHR['responseText'].indexOf("sessionTimeout") != -1; + document.location.href = isSessionTimeout ? 'login.html?error=sessionTimeout' : 'login.html'; + return; + } + }); + }; + + /* + * Update page content. + * 1) If user types in the main page URL without hash, then we apply the + * default hash. e.g., http://kimchi.company.com:8000; + * 2) If user types a URL with hash, then we publish an "redirect" event + * to load the page, e.g., http://kimchi.company.com:8000/#templates. + */ + var updatePage = function() { + // Parse hash string. + var hashString = (location.hash && location.hash.substr(1));
- /** - * Use Ajax to dynamically load a page without a page refreshing. Handle - * arrow cursor animation, DOM node focus, and page content rendering. + /* + * If hash string is empty, then apply the default one; + * or else, publish an "redirect" event to load the page. */ - var loadPage = function(url) { - // Get the page content through Ajax and render it. - url && $('#main').load(url, function(responseText, textStatus, jqXHR) { - if (jqXHR['status'] === 401 || jqXHR['status'] === 303) { - var isSessionTimeout = jqXHR['responseText'].indexOf("sessionTimeout")!=-1; - document.location.href = isSessionTimeout ? 'login.html?error=sessionTimeout' : 'login.html'; - return; - } - }); - }; + if (!hashString) { + location.hash = DEFAULT_HASH; + } else { + wok.topic('redirect').publish(hashString + '.html'); + } + }; + + /** + * Register listeners including: + * 1) wok redirect event + * 2) hashchange event + * 3) Tab list click event + * 4) Log-out button click event + * 5) About button click event + * 6) Help button click event + * 7) Peers button click event + */ + var searchingPeers = false; + var initListeners = function() { + wok.topic('languageChanged').subscribe(onLanguageChanged); + wok.topic('redirect').subscribe(onWokRedirect);
/* - * Update page content. - * 1) If user types in the main page URL without hash, then we apply the - * default hash. e.g., http://kimchi.company.com:8000; - * 2) If user types a URL with hash, then we publish an "redirect" event - * to load the page, e.g., http://kimchi.company.com:8000/#templates. + * If hash value is changed, then we know the user is intended to load + * another page. */ - var updatePage = function() { - // Parse hash string. - var hashString = (location.hash && location.hash.substr(1)); + window.onhashchange = updatePage;
+ /* + * Register click listener of tabs. Replace the default reloading page + * behavior of <a> with Ajax loading. + */ + $('#tabPanel ul').on('click', 'a.item', function(event) { + var href = $(this).attr('href'); + // Remove file extension from 'href' + location.hash = href.substring(0, href.lastIndexOf('.')) /* - * If hash string is empty, then apply the default one; - * or else, publish an "redirect" event to load the page. + * We use the HTML file name for hash, like: guests for guests.html + * and templates for templates.html. + * Retrieve hash value from the given URL and update location's + * hash part. It has 2 effects: one is to publish Wok "redirect" + * event to trigger listener, the other is to put an entry into the + * browser's address history to make pages be bookmark-able. */ - if (!hashString) { - location.hash = DEFAULT_HASH; - } - else { - wok.topic('redirect').publish(hashString + '.html'); - } - }; - - /** - * Register listeners including: - * 1) wok redirect event - * 2) hashchange event - * 3) Tab list click event - * 4) Log-out button click event - * 5) About button click event - * 6) Help button click event - * 7) Peers button click event + // Prevent <a> causing browser redirecting to other page. + event.preventDefault(); + }); + + /* + * Register click listener of second level tabs. Replace the default reloading page + * behavior of <a> with Ajax loading. */ - var searchingPeers = false; - var initListeners = function() { - wok.topic('languageChanged').subscribe(onLanguageChanged); - wok.topic('redirect').subscribe(onWokRedirect); + $('#functionalTabPanel ul li').on('click', 'a.item', function(event) { + var plugin = $(this).text().toLowerCase(); + var previousPlugin = $('#functionalTabPanel ul li.active a').text().toLowerCase(); + + $('#tabPanel').switchClass(previousPlugin + 'Tab', plugin + 'Tab'); + $('#tabPanel ul li').removeClass('active'); + $.each($('#tabPanel li'), function(i, t) { + if ($(t).hasClass(plugin + 'Tab')) { + $(t).css('display', 'block'); + } else { + $(t).css('display', 'none'); + } + });
- /* - * If hash value is changed, then we know the user is intended to load - * another page. - */ - window.onhashchange = updatePage; + $('#functionalTabPanel ul li').removeClass('active'); + $(this).parent().addClass('active').focus();
- /* - * Register click listener of tabs. Replace the default reloading page - * behavior of <a> with Ajax loading. - */ - $('#tabPanel ul').on('click', 'a.item', function(event) { - var href = $(this).attr('href'); - // Remove file extension from 'href' - location.hash = href.substring(0,href.lastIndexOf('.')) - /* - * We use the HTML file name for hash, like: guests for guests.html - * and templates for templates.html. - * Retrieve hash value from the given URL and update location's - * hash part. It has 2 effects: one is to publish Wok "redirect" - * event to trigger listener, the other is to put an entry into the - * browser's address history to make pages be bookmark-able. - */ - // Prevent <a> causing browser redirecting to other page. - event.preventDefault(); - }); + var firstTab = $('#tabPanel ul.navbar-nav li.' + plugin + 'Tab').first(); + $(firstTab).addClass('active'); + $('a.item', firstTab).addClass(plugin + 'Selected');
- /* - * Register click listener of second level tabs. Replace the default reloading page - * behavior of <a> with Ajax loading. - */ - $('#functionalTabPanel ul li').on('click', 'a.item', function(event) { - var plugin = $(this).text().toLowerCase(); - var previousPlugin = $('#functionalTabPanel ul li.active a').text().toLowerCase(); - - $('#tabPanel').switchClass(previousPlugin + 'Tab', plugin + 'Tab'); - $('#tabPanel ul li').removeClass('active'); - $.each($('#tabPanel li'), function(i, t) { - if ($(t).hasClass(plugin + 'Tab')) { - $(t).css('display', 'block'); - } else { - $(t).css('display', 'none'); - } - }); - - $('#functionalTabPanel ul li').removeClass('active'); - $(this).parent().addClass('active').focus(); - - var firstTab = $('#tabPanel ul.navbar-nav li.' + plugin + 'Tab').first(); - $(firstTab).addClass('active'); - $('a.item', firstTab).addClass(plugin + 'Selected'); - - var href = $('a.item', firstTab).attr('href'); - location.hash = href.substring(0,href.lastIndexOf('.')); - event.preventDefault(); - }); + var href = $('a.item', firstTab).attr('href'); + location.hash = href.substring(0, href.lastIndexOf('.')); + event.preventDefault(); + });
- // Perform logging out via Ajax request. - $('#btn-logout').on('click', function() { - wok.logout(function() { - wok.isLoggingOut = true; - document.location.href = "login.html"; - }, function(err) { - wok.message.error(err.responseJSON.reason); - }); - }); + // Perform logging out via Ajax request. + $('#btn-logout').on('click', function() { + wok.logout(function() { + wok.isLoggingOut = true; + document.location.href = "login.html"; + }, function(err) { + wok.message.error(err.responseJSON.reason); + }); + });
- // Set handler for about button - $('#btn-about').on('click', function(event) { - event.preventDefault(); - }); + // Set handler for about button + $('#btn-about').on('click', function(event) { + event.preventDefault(); + });
- $("#aboutModal").append($("#about-tmpl").html()); + $("#aboutModal").append($("#about-tmpl").html());
- // Set handler for help button - $('#btn-help').on('click', wok.openHelp); + // Set handler for help button + $('#btn-help').on('click', wok.openHelp);
- // Set handler to peers drop down - $('#peers').on('click', function() { + // Set handler to peers drop down + $('#peers').on('click', function() {
- // Check if any request is in progress - if ($('.dropdown', '#peers').is('.open') || searchingPeers == true) - return + // Check if any request is in progress + if ($('.dropdown', '#peers').is('.open') || searchingPeers == true) + return
- $('#search-peers').show(); - $('#no-peers').addClass('hide-content'); - $('a', '#peers').remove(); + $('#search-peers').show(); + $('#no-peers').addClass('hide-content'); + $('a', '#peers').remove();
- searchingPeers = true; + searchingPeers = true;
- kimchi.getPeers(function(data){ - $('#search-peers').hide(); - if (data.length == 0) - $('#no-peers').removeClass('hide-content'); + kimchi.getPeers(function(data) { + $('#search-peers').hide(); + if (data.length == 0) + $('#no-peers').removeClass('hide-content');
- for(var i=0; i<data.length; i++){ - $('.dropdown-menu ', '#peers').append("<li><a href='"+data[i]+"' target='_blank'>"+data[i]+"</a></li>"); - } - searchingPeers = false; - }); - }); - }; - - var initUI = function() { - var errorMsg = ""; - $(document).bind('ajaxError', function(event, jqXHR, ajaxSettings, errorThrown) { - if (!ajaxSettings['wok']) { - return; - } - - if (jqXHR['status'] === 401) { - var isSessionTimeout = jqXHR['responseText'].indexOf("sessionTimeout")!=-1; - wok.user.showUser(false); - wok.previousAjax = ajaxSettings; - $(".empty-when-logged-off").empty(); - $(".remove-when-logged-off").remove(); - document.location.href= isSessionTimeout ? 'login.html?error=sessionTimeout' : 'login.html'; - return; - } - else if((jqXHR['status'] == 0) && ("error"==jqXHR.statusText) && !wok.isLoggingOut && errorMsg == "") { - errorMsg = i18n['WOKAPI6007E'].replace("%1", jqXHR.state()); - wok.message.error(errorMsg); - } - if(ajaxSettings['originalError']) { - ajaxSettings['originalError'](jqXHR, jqXHR.statusText, errorThrown); - } - }); + for (var i = 0; i < data.length; i++) { + $('.dropdown-menu ', '#peers').append("<li><a href='" + data[i] + "' target='_blank'>" + data[i] + "</a></li>"); + } + searchingPeers = false; + }); + }); + }; + + var initUI = function() { + var errorMsg = ""; + $(document).bind('ajaxError', function(event, jqXHR, ajaxSettings, errorThrown) { + if (!ajaxSettings['wok']) { + return; + } + + if (jqXHR['status'] === 401) { + var isSessionTimeout = jqXHR['responseText'].indexOf("sessionTimeout") != -1; + wok.user.showUser(false); + wok.previousAjax = ajaxSettings; + $(".empty-when-logged-off").empty(); + $(".remove-when-logged-off").remove(); + document.location.href = isSessionTimeout ? 'login.html?error=sessionTimeout' : 'login.html'; + return; + } else if ((jqXHR['status'] == 0) && ("error" == jqXHR.statusText) && !wok.isLoggingOut && errorMsg == "") { + errorMsg = i18n['WOKAPI6007E'].replace("%1", jqXHR.state()); + wok.message.error(errorMsg); + } + if (ajaxSettings['originalError']) { + ajaxSettings['originalError'](jqXHR, jqXHR.statusText, errorThrown); + } + });
- wok.user.showUser(true); - initListeners(); - updatePage(); - - // Overriding Bootstrap Modal windows to allow a stack of modal windows and backdrops - $(document).on({ - 'show.bs.modal': function () { - var zIndex = 1040 + (10 * $('.modal:visible').length); - $(this).css('z-index', zIndex); - setTimeout(function() { - $('.modal-backdrop').not('.modal-stack').css('z-index', zIndex - 1).addClass('modal-stack'); - }, 0); - }, - 'hidden.bs.modal': function() { - if ($('.modal:visible').length > 0) { - // restore the modal-open class to the body element, so that scrolling works - // properly after de-stacking a modal. - setTimeout(function() { - $(document.body).addClass('modal-open'); - }, 0); - } - } - }, '.modal'); - - - }; - - // Load i18n translation strings first and then render the page. - wok.getI18n( - function(i18nStrings){ //success - i18n = i18nStrings; - buildTabs(initUI); - }, - function(data){ //error - wok.message.error(data.responseJSON.reason); + wok.user.showUser(true); + initListeners(); + updatePage(); + + // Overriding Bootstrap Modal windows to allow a stack of modal windows and backdrops + $(document).on({ + 'show.bs.modal': function() { + var zIndex = 1040 + (10 * $('.modal:visible').length); + $(this).css('z-index', zIndex); + setTimeout(function() { + $('.modal-backdrop').not('.modal-stack').css('z-index', zIndex - 1).addClass('modal-stack'); + }, 0); + }, + 'hidden.bs.modal': function() { + if ($('.modal:visible').length > 0) { + // restore the modal-open class to the body element, so that scrolling works + // properly after de-stacking a modal. + setTimeout(function() { + $(document.body).addClass('modal-open'); + }, 0); } - ); + } + }, '.modal'); + + + }; + + // Load i18n translation strings first and then render the page. + wok.getI18n( + function(i18nStrings) { //success + i18n = i18nStrings; + buildTabs(initUI); + }, + function(data) { //error + wok.message.error(data.responseJSON.reason); + } + ); };
wok.checkHelpFile = function(path) { - var lang = wok.lang.get(); - var url = path.replace("tabs", "help/" + lang); - // Checking if help page exist. - $.ajax({ - url: url, - async: false, - error: function() { url = ""; }, - success: function() { } - }); - return url; + var lang = wok.lang.get(); + var url = path.replace("tabs", "help/" + lang); + // Checking if help page exist. + $.ajax({ + url: url, + async: false, + error: function() { + url = ""; + }, + success: function() {} + }); + return url; };
wok.getHostname = function(e) { - host = window.location.hostname; - $('span.host-location').text(host); - return host; + host = window.location.hostname; + $('span.host-location').text(host); + return host; }
wok.openHelp = function(e) { - var tab = $('#tabPanel ul li.active'); - var url = $(tab).find("input[name='helpPath']").val(); - window.open(url, "Wok Help"); - e.preventDefault(); + var tab = $('#tabPanel ul li.active'); + var url = $(tab).find("input[name='helpPath']").val(); + window.open(url, "Wok Help"); + e.preventDefault(); };