diff --git a/src/sunstone/public/app/app.js b/src/sunstone/public/app/app.js index fe02550d4c..e981abc6f5 100644 --- a/src/sunstone/public/app/app.js +++ b/src/sunstone/public/app/app.js @@ -2,7 +2,10 @@ define(function(require) { require('jquery'); var DASHBOARD_TAB_ID = require('tabs/dashboard-tab/tabId'); + var SETTINGS_TAB_ID = require('tabs/settings-tab/tabId'); var Sunstone = require('sunstone'); + var OpenNebula = require('opennebula'); + var Notifier = require('utils/notifier'); var _tabs = [ require('tabs/dashboard-tab'), @@ -45,13 +48,14 @@ define(function(require) { Sunstone.insertTabs(); _setupAccordion(); + _insertUserAndZoneSelector(); Sunstone.showTab(DASHBOARD_TAB_ID); }); function _setupAccordion() { $(document).on("click", ".accordion_advanced > a", function() { - if ($(this).hasClass("active")){ + if ($(this).hasClass("active")) { $(this).removeClass("active"); } else { $(this).addClass("active"); @@ -62,4 +66,71 @@ define(function(require) { return false; }) } + + function _insertUserAndZoneSelector() { + var user_login_content = '<a href="#" data-dropdown="drop1" class="button small radius secondary dropdown" id="logout">\ + <i class="fa fa-user fa-lg fa-fw header-icon"></i> ' + config['display_name'] + '</a>\ + <ul id="drop1" data-dropdown-content class="f-dropdown">\ + <li><a href="#" class="configuration"><i class="fa fa-cog"></i> Settings</a></li>\ + <li><a href="#" class="logout"><i class="fa fa-power-off"></i> Sign Out</a></li>\ + </ul>\ + <a href="#" data-dropdown="drop2" class="button small radius secondary dropdown" id="zonelector">\ + <i class="fa fa-home fa-lg fa-fw header-icon"></i> ' + config['zone_name'] + '</a>\ + <ul id="drop2" data-dropdown-content class="zone-ul f-dropdown"></ul>'; + + $(".user-zone-info").html(user_login_content); + + function zoneRefresh() { + // Populate Zones dropdown + OpenNebula.Zone.list({ + timeout: true, + success: function (request, obj_list) { + $('.zone-ul').empty(); + $.each(obj_list, function() { + $('.zone-ul').append('<li><a id="' + this.ZONE.NAME + '" class="zone-choice">' + this.ZONE.NAME + '</a></li>'); + }); + }, + error: Notifier.onError + }); + } + + $('#zonelector').on("click", function() { + zoneRefresh(); + }); + + $('a.zone-choice').on("click", function() { + $.ajax({ + url: 'config', + type: "GET", + headers: { + "ZONE_NAME" : this.id + }, + dataType: "json", + success: function() { + window.location.href = "."; + }, + error: function(response) { + Notifier.onError(null, OpenNebula.Error(response)) + } + }); + }); + + $(".user-zone-info").foundation('reflow', 'dropdown'); + + $("a.logout", $(".user-zone-info ")).click(function() { + OpenNebula.Auth.logout({ + success: function() { + window.location.href = "login"; + }, + error: Notifier.onError + }); + + return false; + }); + + $(".user-zone-info a.configuration").click(function() { + $(document).foundation('dropdown', 'closeall'); + Sunstone.showTab(SETTINGS_TAB_ID); + }); + } }); diff --git a/src/sunstone/public/app/opennebula/auth.js b/src/sunstone/public/app/opennebula/auth.js index 6970c14db1..955b832b4c 100644 --- a/src/sunstone/public/app/opennebula/auth.js +++ b/src/sunstone/public/app/opennebula/auth.js @@ -49,7 +49,7 @@ define(function(require) { url: "logout", type: "POST", success: function(response) { - $.cookie("one-user", null); + // TODO $.cookie("one-user", null); return callback ? callback(request, response) : null; }, error: function(response) {