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.requestUrisCollection = new Backbone.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:{
|
||||
|
@ -800,12 +803,15 @@ var ClientFormView = Backbone.View.extend({
|
|||
|
||||
$('.control-group').removeClass('error');
|
||||
|
||||
|
||||
// sync any leftover collection items
|
||||
_.each(this.listWidgetViews, function(v) {
|
||||
v.addItem($.Event('click'));
|
||||
});
|
||||
|
||||
|
||||
// build the scope object
|
||||
var scopes = this.scopeCollection.pluck("item");
|
||||
var extraScope = $('#scope input').val();
|
||||
if (extraScope) {
|
||||
scopes.push(extraScope);
|
||||
}
|
||||
|
||||
// build the grant type object
|
||||
var grantTypes = [];
|
||||
|
@ -992,34 +998,44 @@ var ClientFormView = Backbone.View.extend({
|
|||
|
||||
var _self = this;
|
||||
|
||||
// clear the sub-view collection
|
||||
this.listWidgetViews = [];
|
||||
|
||||
// build and bind registered redirect URI collection and view
|
||||
_.each(this.model.get("redirectUris"), function (redirectUri) {
|
||||
_self.redirectUrisCollection.add(new URIModel({item:redirectUri}));
|
||||
});
|
||||
|
||||
$("#redirectUris .controls",this.el).html(new ListWidgetView({
|
||||
|
||||
var redirUriView = new ListWidgetView({
|
||||
type:'uri',
|
||||
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
|
||||
_.each(this.model.get("scope"), function (scope) {
|
||||
_self.scopeCollection.add(new Backbone.Model({item:scope}));
|
||||
});
|
||||
|
||||
$("#scope .controls",this.el).html(new ListWidgetView({
|
||||
var scopeView = new ListWidgetView({
|
||||
placeholder: 'new scope',
|
||||
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
|
||||
_.each(this.model.get('contacts'), function (contact) {
|
||||
_self.contactsCollection.add(new Backbone.Model({item:contact}));
|
||||
});
|
||||
|
||||
$("#contacts .controls", this.el).html(new ListWidgetView({
|
||||
var contactsView = new ListWidgetView({
|
||||
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
|
||||
|
@ -1027,20 +1043,24 @@ var ClientFormView = Backbone.View.extend({
|
|||
_self.requestUrisCollection.add(new URIModel({item:requestUri}));
|
||||
});
|
||||
|
||||
$('#requestUris .controls', this.el).html(new ListWidgetView({
|
||||
var requestUriView = new ListWidgetView({
|
||||
type: 'uri',
|
||||
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
|
||||
_.each(this.model.get('defaultAcrValues'), function (defaultAcrValue) {
|
||||
_self.defaultAcrValuesCollection.add(new Backbone.Model({item:defaultAcrValue}));
|
||||
});
|
||||
|
||||
$('#defaultAcrValues .controls', this.el).html(new ListWidgetView({
|
||||
var defaultAcrView = new ListWidgetView({
|
||||
placeholder: 'new ACR value',
|
||||
// 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
|
||||
|
||||
|
|
Loading…
Reference in New Issue