diff --git a/ui/scripts/projects.js b/ui/scripts/projects.js index cbbb4cef8a2..293a2b01105 100644 --- a/ui/scripts/projects.js +++ b/ui/scripts/projects.js @@ -15,7 +15,7 @@ // specific language governing permissions and limitations // under the License. (function(cloudStack) { - var getProjectAdmin; + var getProjectAdmin, selectedProjectObj; cloudStack.projects = { requireInvitation: function(args) { return g_capabilities.projectinviterequired; @@ -518,6 +518,9 @@ onComplete: function(){ setTimeout(function() { $(window).trigger('cloudStack.fullRefresh'); + if (isUser()) { + $(window).trigger('cloudStack.detailsRefresh'); + } }, 500); } }, @@ -659,6 +662,30 @@ }, detailView: { + updateContext: function (args) { + var project; + var projectID = args.context.projects[0].id; + var url = 'listProjects'; + if (isDomainAdmin()) { + url += '&domainid=' + args.context.users[0].domainid; + } + $.ajax({ + url: createURL(url), + data: { + listAll: true, + id: projectID + }, + async: false, + success: function(json) { + project = json.listprojectsresponse.project[0]; // override project after update owner + } + }); + selectedProjectObj = project; + + return { + projects: [project] + }; + }, actions: { edit: { label: 'label.edit', @@ -782,7 +809,7 @@ }, tabFilter: function(args) { - var project = args.context.projects[0]; + var project = selectedProjectObj; var projectOwner = project.account; var currentAccount = args.context.users[0].account; var hiddenTabs = []; diff --git a/ui/scripts/ui/widgets/detailView.js b/ui/scripts/ui/widgets/detailView.js index b792bcf32ac..eb39b80c05a 100644 --- a/ui/scripts/ui/widgets/detailView.js +++ b/ui/scripts/ui/widgets/detailView.js @@ -1038,7 +1038,7 @@ ); }; - var replaceTabs = function($detailView, $newTabs, tabs, options) { + var replaceTabs = function($detailView, tabs, options) { var $detailViewElems = $detailView.find('ul.ui-tabs-nav, .detail-group'); $detailView.tabs('destroy'); $detailViewElems.remove(); @@ -1057,25 +1057,32 @@ ); }; - $.fn.detailView = function(args) { + $.fn.detailView = function(args, options) { var $detailView = this; + + if (options == 'refresh') { + var $tabs = replaceTabs($detailView, args.tabs, { + context: args.context, + tabFilter: args.tabFilter + }); + } else { + $detailView.addClass('detail-view'); + $detailView.data('view-args', args); - $detailView.addClass('detail-view'); - $detailView.data('view-args', args); + if (args.$listViewRow) { + $detailView.data('list-view-row', args.$listViewRow); + } - if (args.$listViewRow) { - $detailView.data('list-view-row', args.$listViewRow); + // Create toolbar + var $toolbar = makeToolbar().appendTo($detailView); + + // Create tabs + var $tabs = makeTabs($detailView, args.tabs, { + context: args.context, + tabFilter: args.tabFilter + }).appendTo($detailView); } - // Create toolbar - var $toolbar = makeToolbar().appendTo($detailView); - - // Create tabs - var $tabs = makeTabs($detailView, args.tabs, { - context: args.context, - tabFilter: args.tabFilter - }).appendTo($detailView); - $detailView.tabs(); return $detailView; @@ -1154,4 +1161,17 @@ return true; }); + + // Detail view refresh handler + $(window).bind('cloudStack.detailsRefresh', function() { + var $detailView = $('.detail-view'); + + $detailView.each(function() { + var $detailView = $(this), + args = $detailView.data('view-args'); + + $detailView.detailView(args, 'refresh'); + }); + }); + }(window.jQuery, window.cloudStack, window._l));