Refactoring of routing. Client updates
parent
6f43040587
commit
2d980a4d8f
|
@ -25,18 +25,18 @@ import org.springframework.web.bind.annotation.RequestMapping;
|
|||
|
||||
@Controller
|
||||
@RequestMapping("/")
|
||||
@PreAuthorize("hasRole('ROLE_USER')")
|
||||
public class ManagerController {
|
||||
|
||||
@PreAuthorize("hasRole('ROLE_USER')")
|
||||
|
||||
@RequestMapping({"", "/home", "/index"})
|
||||
public String showHomePage() {
|
||||
return "home";
|
||||
}
|
||||
|
||||
@PreAuthorize("hasRole('ROLE_ADMIN')")
|
||||
@RequestMapping("/admin/manage/clients")
|
||||
@RequestMapping("/admin/manage/")
|
||||
public String showClientManager() {
|
||||
return "admin/manage/clients";
|
||||
return "admin/manage";
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
<ul class="nav nav-list">
|
||||
<security:authorize ifAnyGranted="ROLE_ADMIN">
|
||||
<li class="nav-header">Administrative</li>
|
||||
<li><a href="admin/manage/clients">Manage Clients</a></li>
|
||||
<li><a href="admin/manage/#clients">Manage Clients</a></li>
|
||||
<li><a href="#">White Lists</a></li>
|
||||
<li><a href="#">Black Lists</a></li>
|
||||
</security:authorize>
|
||||
|
|
|
@ -6,31 +6,28 @@
|
|||
|
||||
initialize: function () {
|
||||
|
||||
this.bind('error:clientName', function(model, errs) {
|
||||
$('#clientName').addClass('error');
|
||||
// bind validation errors to dom elements
|
||||
// this will display form elements in red if they are not valid
|
||||
this.bind('error', function(model, errs) {
|
||||
_.map(errs, function (val, elID) {
|
||||
$('#' + elID).addClass('error');
|
||||
});
|
||||
});
|
||||
|
||||
this.bind('error:clientDescription', function(model, errs) {
|
||||
$('#clientDescription').addClass('error');
|
||||
});
|
||||
|
||||
this.bind('error:registeredRedirectUri', function(model, errs) {
|
||||
$('#registeredRedirectUri').addClass('error');
|
||||
});
|
||||
},
|
||||
|
||||
validate:{
|
||||
clientName:{
|
||||
required:true,
|
||||
pattern:/^[a-zA-Z ]+$/,
|
||||
pattern:/^[\w ]+$/,
|
||||
minlength:3,
|
||||
maxlength:100
|
||||
},
|
||||
clientDescription:{
|
||||
required:true,
|
||||
pattern:/^[a-zA-Z ]+$/,
|
||||
pattern:/^[\w ]+$/,
|
||||
minlength:3,
|
||||
maxlength:100
|
||||
maxlength:200
|
||||
},
|
||||
registeredRedirectUri: {
|
||||
custom: 'validateURI'
|
||||
|
@ -42,17 +39,19 @@
|
|||
var expression = /[-a-zA-Z0-9@:%_\+.~#?&//=]{2,256}\.[a-z]{2,4}\b(\/[-a-zA-Z0-9@:%_\+.~#?&//=]*)?/gi;
|
||||
var regex = new RegExp(expression);
|
||||
|
||||
return attributeValue.every(function (url) {
|
||||
if (!url.match(regex)) {
|
||||
return false;
|
||||
if (!attributeValue.every(function (url) {
|
||||
if (url.match(regex)) {
|
||||
return true;
|
||||
}
|
||||
});
|
||||
})) return "Invalid URI";
|
||||
|
||||
|
||||
},
|
||||
|
||||
// We can pass it default values.
|
||||
defaults:{
|
||||
clientName:"",
|
||||
registeredRedirectUri:[],
|
||||
registeredRedirectUri:[""],
|
||||
authorizedGrantTypes:[],
|
||||
scope:[],
|
||||
authorities:[],
|
||||
|
@ -61,13 +60,18 @@
|
|||
allowRefresh:false
|
||||
},
|
||||
|
||||
urlRoot:"/api/clients"
|
||||
urlRoot:"api/clients"
|
||||
|
||||
});
|
||||
|
||||
var ClientCollection = Backbone.Collection.extend({
|
||||
|
||||
initialize: function() {
|
||||
this.fetch();
|
||||
},
|
||||
|
||||
model:ClientModel,
|
||||
url:"/api/clients"
|
||||
url:"api/clients"
|
||||
});
|
||||
|
||||
|
||||
|
@ -82,7 +86,6 @@
|
|||
}
|
||||
|
||||
this.model.bind('change', this.render, this);
|
||||
//this.model.on('change', this.render)
|
||||
},
|
||||
|
||||
render:function (eventName) {
|
||||
|
@ -96,7 +99,7 @@
|
|||
},
|
||||
|
||||
editClient:function () {
|
||||
document.location.hash = 'client/' + this.model.id;
|
||||
app.navigate('client/' + this.model.id, {trigger: true});
|
||||
},
|
||||
|
||||
deleteClient:function () {
|
||||
|
@ -105,8 +108,8 @@
|
|||
|
||||
this.model.destroy({
|
||||
success:function () {
|
||||
self.$el.fadeTo("slow", 0.00, function(){ //fade
|
||||
$(this).slideUp("slow", function() { //slide up
|
||||
self.$el.fadeTo("fast", 0.00, function(){ //fade
|
||||
$(this).slideUp("fast", function() { //slide up
|
||||
$(this).remove(); //then remove from the DOM
|
||||
});
|
||||
});
|
||||
|
@ -135,7 +138,7 @@
|
|||
|
||||
newClient:function () {
|
||||
this.remove();
|
||||
document.location.hash = 'client/new';
|
||||
app.navigate('client/new', {trigger: true});
|
||||
},
|
||||
|
||||
render:function (eventName) {
|
||||
|
@ -144,7 +147,7 @@
|
|||
$(this.el).html($('#tmpl-client-table').html());
|
||||
|
||||
_.each(this.model.models, function (client) {
|
||||
$("#client-table").append(new ClientView({model:client}).render().el);
|
||||
$("#client-table",this.el).append(new ClientView({model:client}).render().el);
|
||||
}, this);
|
||||
|
||||
return this;
|
||||
|
@ -168,7 +171,7 @@
|
|||
|
||||
saveClient:function (event) {
|
||||
|
||||
event.preventDefault();
|
||||
$('.control-group').removeClass('error');
|
||||
|
||||
this.model.set({
|
||||
clientName:$('#clientName input').val(),
|
||||
|
@ -176,26 +179,21 @@
|
|||
clientDescription:$('#clientDescription textarea').val(),
|
||||
allowRefresh:$('#allowRefresh').is(':checked')
|
||||
});
|
||||
if (this.model.isNew()) {
|
||||
|
||||
this.model.save(this.model, {
|
||||
success:function () {
|
||||
app.navigate('clients', {trigger: true});
|
||||
}
|
||||
});
|
||||
|
||||
if (this.model.isNew() && this.model.isValid()) {
|
||||
var self = this;
|
||||
app.clientList.create(this.model, {
|
||||
success:function () {
|
||||
document.location.hash = '';
|
||||
},
|
||||
error: function () {
|
||||
//alert('boo!');
|
||||
app.navigate('clients', {trigger: true});
|
||||
}
|
||||
});
|
||||
|
||||
} else {
|
||||
this.model.save(this.model, {
|
||||
success:function () {
|
||||
document.location.hash = '';
|
||||
},
|
||||
error: function () {
|
||||
//alert('boo!');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
return false;
|
||||
|
@ -212,21 +210,32 @@
|
|||
var AppRouter = Backbone.Router.extend({
|
||||
|
||||
routes:{
|
||||
"":"list",
|
||||
"clients":"list",
|
||||
"client/new":"newClient",
|
||||
"client/:id":"editClient"
|
||||
},
|
||||
|
||||
initialize:function () {
|
||||
|
||||
this.clientList = new ClientCollection();
|
||||
this.clientListView = new ClientListView({model:this.clientList});
|
||||
|
||||
this.startAfter([this.clientList]);
|
||||
|
||||
},
|
||||
|
||||
startAfter:function (collections) {
|
||||
// Start history when required collections are loaded
|
||||
var start = _.after(collections.length, _.once(function () {
|
||||
Backbone.history.start()
|
||||
}));
|
||||
_.each(collections, function (collection) {
|
||||
collection.bind('reset', start, Backbone.history)
|
||||
});
|
||||
},
|
||||
|
||||
list:function () {
|
||||
|
||||
this.clientList = new ClientCollection();
|
||||
this.clientListView = new ClientListView({model:this.clientList});
|
||||
this.clientList.fetch();
|
||||
|
||||
$('#content').html(this.clientListView.render().el);
|
||||
},
|
||||
|
||||
|
@ -255,7 +264,6 @@
|
|||
$('body').append(templates);
|
||||
|
||||
app = new AppRouter();
|
||||
Backbone.history.start();
|
||||
});
|
||||
|
||||
|
||||
|
|
|
@ -92,7 +92,7 @@
|
|||
</span>
|
||||
<span class="control-group" id="registeredRedirectUri">
|
||||
<label>Redirect URL</label>
|
||||
<input type="text" class="" placeholder="http://"><span class="help-inline">Associated help text!</span>
|
||||
<input type="text" class="" value="<%=registeredRedirectUri[0]%>" placeholder="http://"><span class="help-inline">Associated help text!</span>
|
||||
</span>
|
||||
</div>
|
||||
<div class="span6">
|
||||
|
|
Loading…
Reference in New Issue