12345678910111213141516171819202122232425262728293031323334353637 |
- import Ember from 'ember';
- var urlNameRe = new RegExp(/^([a-zA-Z0-9-]+)-(\d+)$/);
- export default Ember.Mixin.create({
- usingUrlName: false,
- parseUrlName: function(urlName) {
- if (urlNameRe.test(urlName)) {
- var idPosition = urlName.lastIndexOf('-');
- return {
- slug: urlName.substr(0, idPosition),
- id: urlName.substr(idPosition + 1)
- };
- } else {
- return false;
- }
- },
- getParsedUrlNameOr404: function(urlName) {
- var parsedUrlName = this.parseUrlName(urlName);
- if (parsedUrlName) {
- return parsedUrlName;
- } else {
- this.throw404();
- }
- },
- afterModel: function(model, transition) {
- if (this.get('usingUrlName')) {
- var urlName = transition.params[transition.targetName].url_name;
- if (model.url_name !== urlName) {
- return this.transitionTo(transition.targetName, model);
- }
- }
- }
- });
|