import TravisRoute from 'travis/routes/basic'; import Repo from 'travis/models/repo'; import Ember from 'ember'; export default TravisRoute.extend({ store: Ember.inject.service(), titleToken(model) { return model.get('slug'); }, renderTemplate() { return this.render('repo', { into: 'main' }); }, setupController(controller, model) { this.container.lookup('controller:repos').activate('owned'); if (model && !model.get) { model = this.get('store').find('repo', model.id); } return controller.set('repo', model); }, serialize(repo) { var name, owner, ref, slug; slug = repo.get ? repo.get('slug') : repo.slug; ref = slug.split('/'); owner = ref[0]; name = ref[1]; return { owner: owner, name: name }; }, model(params) { var slug; slug = params.owner + "/" + params.name; return Repo.fetchBySlug(this.get('store'), slug); }, resetController() { return this.controllerFor('repo').deactivate(); }, actions: { error(error) { if (error.slug) { // if error thrown has a slug (ie. it was probably repo not found) // set the slug on main.error controller to allow to properly // display the repo information this.controllerFor('main.error').set('slug', error.slug); } return true; } } });