66 lines
1.8 KiB
JavaScript
66 lines
1.8 KiB
JavaScript
define([
|
|
'backbone',
|
|
'js/programs/views/program_creator_view',
|
|
'js/programs/views/program_details_view',
|
|
'js/programs/models/program_model'
|
|
],
|
|
function(Backbone, ProgramCreatorView, ProgramDetailsView, ProgramModel) {
|
|
'use strict';
|
|
|
|
return Backbone.Router.extend({
|
|
root: '/program/',
|
|
|
|
routes: {
|
|
'new': 'programCreator',
|
|
':id': 'programDetails'
|
|
},
|
|
|
|
initialize: function(options) {
|
|
this.homeUrl = options.homeUrl;
|
|
},
|
|
|
|
goHome: function() {
|
|
window.location.href = this.homeUrl;
|
|
},
|
|
|
|
loadProgramDetails: function() {
|
|
this.programDetailsView = new ProgramDetailsView({
|
|
model: this.programModel
|
|
});
|
|
},
|
|
|
|
programCreator: function() {
|
|
if (this.programCreatorView) {
|
|
this.programCreatorView.destroy();
|
|
}
|
|
|
|
this.programCreatorView = new ProgramCreatorView({
|
|
router: this
|
|
});
|
|
},
|
|
|
|
programDetails: function(id) {
|
|
this.programModel = new ProgramModel({
|
|
id: id
|
|
});
|
|
|
|
this.programModel.on('sync', this.loadProgramDetails, this);
|
|
this.programModel.fetch();
|
|
},
|
|
|
|
/**
|
|
* Starts the router.
|
|
*/
|
|
start: function() {
|
|
if (!Backbone.history.started) {
|
|
Backbone.history.start({
|
|
pushState: true,
|
|
root: this.root
|
|
});
|
|
}
|
|
return this;
|
|
}
|
|
});
|
|
}
|
|
);
|