diff --git a/openid-connect-server-webapp/src/main/webapp/resources/js/admin.js b/openid-connect-server-webapp/src/main/webapp/resources/js/admin.js index 0aa15e796..7bf63180a 100644 --- a/openid-connect-server-webapp/src/main/webapp/resources/js/admin.js +++ b/openid-connect-server-webapp/src/main/webapp/resources/js/admin.js @@ -882,9 +882,11 @@ var AppRouter = Backbone.Router.extend({ var scope = new SystemScopeModel(); - this.systemScopeFormView = new SystemScopeFormView({model:scope}); - $('#content').html(this.systemScopeFormView.render().el); - setPageTitle($.t('scope.system-scope-form.new')); + var view = new SystemScopeFormView({model:scope}); + view.load(function() { + $('#content').html(view.render().el); + setPageTitle($.t('scope.system-scope-form.new')); + }); }, @@ -905,10 +907,15 @@ var AppRouter = Backbone.Router.extend({ this.updateSidebar('admin/scope'); var scope = this.systemScopeList.get(sid); + if (!scope) { + scope = new SystemScopeModel({id: sid}); + } - this.systemScopeFormView = new SystemScopeFormView({model:scope}); - $('#content').html(this.systemScopeFormView.render().el); - setPageTitle($.t('scope.system-scope-form.edit')); + var view = new SystemScopeFormView({model:scope}); + view.load(function() { + $('#content').html(view.render().el); + setPageTitle($.t('scope.system-scope-form.new')); + }); }, diff --git a/openid-connect-server-webapp/src/main/webapp/resources/js/scope.js b/openid-connect-server-webapp/src/main/webapp/resources/js/scope.js index 732d44456..0c6793cb9 100644 --- a/openid-connect-server-webapp/src/main/webapp/resources/js/scope.js +++ b/openid-connect-server-webapp/src/main/webapp/resources/js/scope.js @@ -284,6 +284,25 @@ var SystemScopeFormView = Backbone.View.extend({ 'change #isStructured input':'toggleStructuredParamDescription' }, + load:function(callback) { + if (this.model.isFetched) { + callback(); + return; + } + + $('#loadingbox').sheet('show'); + $('#loading').html( + '' + $.t("common.scopes") + ' ' + ); + + $.when(this.model.fetchIfNeeded({success:function(e) {$('#loading-scopes').addClass('label-success');}})) + .done(function() { + $('#loadingbox').sheet('hide'); + callback(); + }); + + }, + toggleStructuredParamDescription:function(e) { if ($('#isStructured input', this.el).is(':checked')) { $('#structuredParamDescription', this.el).show();