more comprehensive list widget leftover object handling in client
parent
57648cd9d5
commit
740e5407ef
|
@ -609,6 +609,9 @@ var ClientFormView = Backbone.View.extend({
|
||||||
this.defaultAcrValuesCollection = new Backbone.Collection();
|
this.defaultAcrValuesCollection = new Backbone.Collection();
|
||||||
this.requestUrisCollection = new Backbone.Collection();
|
this.requestUrisCollection = new Backbone.Collection();
|
||||||
// TODO: add Spring authorities collection and resource IDs collection?
|
// TODO: add Spring authorities collection and resource IDs collection?
|
||||||
|
|
||||||
|
// collection of sub-views that need to be sync'd on save
|
||||||
|
this.listWidgetViews = [];
|
||||||
},
|
},
|
||||||
|
|
||||||
events:{
|
events:{
|
||||||
|
@ -800,12 +803,15 @@ var ClientFormView = Backbone.View.extend({
|
||||||
|
|
||||||
$('.control-group').removeClass('error');
|
$('.control-group').removeClass('error');
|
||||||
|
|
||||||
|
|
||||||
|
// sync any leftover collection items
|
||||||
|
_.each(this.listWidgetViews, function(v) {
|
||||||
|
v.addItem($.Event('click'));
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
// build the scope object
|
// build the scope object
|
||||||
var scopes = this.scopeCollection.pluck("item");
|
var scopes = this.scopeCollection.pluck("item");
|
||||||
var extraScope = $('#scope input').val();
|
|
||||||
if (extraScope) {
|
|
||||||
scopes.push(extraScope);
|
|
||||||
}
|
|
||||||
|
|
||||||
// build the grant type object
|
// build the grant type object
|
||||||
var grantTypes = [];
|
var grantTypes = [];
|
||||||
|
@ -992,34 +998,44 @@ var ClientFormView = Backbone.View.extend({
|
||||||
|
|
||||||
var _self = this;
|
var _self = this;
|
||||||
|
|
||||||
|
// clear the sub-view collection
|
||||||
|
this.listWidgetViews = [];
|
||||||
|
|
||||||
// build and bind registered redirect URI collection and view
|
// build and bind registered redirect URI collection and view
|
||||||
_.each(this.model.get("redirectUris"), function (redirectUri) {
|
_.each(this.model.get("redirectUris"), function (redirectUri) {
|
||||||
_self.redirectUrisCollection.add(new URIModel({item:redirectUri}));
|
_self.redirectUrisCollection.add(new URIModel({item:redirectUri}));
|
||||||
});
|
});
|
||||||
|
|
||||||
$("#redirectUris .controls",this.el).html(new ListWidgetView({
|
|
||||||
|
var redirUriView = new ListWidgetView({
|
||||||
type:'uri',
|
type:'uri',
|
||||||
placeholder: 'https://',
|
placeholder: 'https://',
|
||||||
collection: this.redirectUrisCollection}).render().el);
|
collection: this.redirectUrisCollection});
|
||||||
|
$("#redirectUris .controls",this.el).html(redirUriView.render().el);
|
||||||
|
this.listWidgetViews.push(redirUriView);
|
||||||
|
|
||||||
// build and bind scopes
|
// build and bind scopes
|
||||||
_.each(this.model.get("scope"), function (scope) {
|
_.each(this.model.get("scope"), function (scope) {
|
||||||
_self.scopeCollection.add(new Backbone.Model({item:scope}));
|
_self.scopeCollection.add(new Backbone.Model({item:scope}));
|
||||||
});
|
});
|
||||||
|
|
||||||
$("#scope .controls",this.el).html(new ListWidgetView({
|
var scopeView = new ListWidgetView({
|
||||||
placeholder: 'new scope',
|
placeholder: 'new scope',
|
||||||
autocomplete: _.uniq(_.flatten(this.options.systemScopeList.pluck("value"))),
|
autocomplete: _.uniq(_.flatten(this.options.systemScopeList.pluck("value"))),
|
||||||
collection: this.scopeCollection}).render().el);
|
collection: this.scopeCollection});
|
||||||
|
$("#scope .controls",this.el).html(scopeView.render().el);
|
||||||
|
this.listWidgetViews.push(scopeView);
|
||||||
|
|
||||||
// build and bind contacts
|
// build and bind contacts
|
||||||
_.each(this.model.get('contacts'), function (contact) {
|
_.each(this.model.get('contacts'), function (contact) {
|
||||||
_self.contactsCollection.add(new Backbone.Model({item:contact}));
|
_self.contactsCollection.add(new Backbone.Model({item:contact}));
|
||||||
});
|
});
|
||||||
|
|
||||||
$("#contacts .controls", this.el).html(new ListWidgetView({
|
var contactsView = new ListWidgetView({
|
||||||
placeholder: 'new contact',
|
placeholder: 'new contact',
|
||||||
collection: this.contactsCollection}).render().el);
|
collection: this.contactsCollection});
|
||||||
|
$("#contacts .controls", this.el).html(contactsView.render().el);
|
||||||
|
this.listWidgetViews.push(contactsView);
|
||||||
|
|
||||||
|
|
||||||
// build and bind request URIs
|
// build and bind request URIs
|
||||||
|
@ -1027,20 +1043,24 @@ var ClientFormView = Backbone.View.extend({
|
||||||
_self.requestUrisCollection.add(new URIModel({item:requestUri}));
|
_self.requestUrisCollection.add(new URIModel({item:requestUri}));
|
||||||
});
|
});
|
||||||
|
|
||||||
$('#requestUris .controls', this.el).html(new ListWidgetView({
|
var requestUriView = new ListWidgetView({
|
||||||
type: 'uri',
|
type: 'uri',
|
||||||
placeholder: 'https://',
|
placeholder: 'https://',
|
||||||
collection: this.requestUrisCollection}).render().el);
|
collection: this.requestUrisCollection});
|
||||||
|
$('#requestUris .controls', this.el).html(requestUriView.render().el);
|
||||||
|
this.listWidgetViews.push(requestUriView);
|
||||||
|
|
||||||
// build and bind default ACR values
|
// build and bind default ACR values
|
||||||
_.each(this.model.get('defaultAcrValues'), function (defaultAcrValue) {
|
_.each(this.model.get('defaultAcrValues'), function (defaultAcrValue) {
|
||||||
_self.defaultAcrValuesCollection.add(new Backbone.Model({item:defaultAcrValue}));
|
_self.defaultAcrValuesCollection.add(new Backbone.Model({item:defaultAcrValue}));
|
||||||
});
|
});
|
||||||
|
|
||||||
$('#defaultAcrValues .controls', this.el).html(new ListWidgetView({
|
var defaultAcrView = new ListWidgetView({
|
||||||
placeholder: 'new ACR value',
|
placeholder: 'new ACR value',
|
||||||
// TODO: autocomplete from spec
|
// TODO: autocomplete from spec
|
||||||
collection: this.defaultAcrValuesCollection}).render().el);
|
collection: this.defaultAcrValuesCollection});
|
||||||
|
$('#defaultAcrValues .controls', this.el).html(defaultAcrView.render().el);
|
||||||
|
this.listWidgetViews.push(defaultAcrView);
|
||||||
|
|
||||||
// build and bind
|
// build and bind
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue