more comprehensive list widget leftover object handling in client

pull/873/head
Justin Richer 10 years ago
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…
Cancel
Save