Skip to content
This repository was archived by the owner on Jan 27, 2021. It is now read-only.

Commit f80a48b

Browse files
committed
move slug logic into item model. refs #221
1 parent ad8604f commit f80a48b

File tree

3 files changed

+51
-32
lines changed

3 files changed

+51
-32
lines changed

app/controllers/wh/content/type/edit.js

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -76,19 +76,6 @@ export default Ember.ObjectController.extend({
7676

7777
}.property('nameControl.value', 'type.id', 'slugControl.value', 'publishDate'),
7878

79-
// Remove old slug, add new slug
80-
updateSlug: function () {
81-
var slugControl = this.get('controls').findBy('name', 'slug');
82-
83-
window.ENV.firebase.child('slugs').child(slugControl.get('initialValue')).remove();
84-
85-
var slug = slugControl.get('value') || this.get('defaultSlug');
86-
87-
window.ENV.firebase.child('slugs').child(slug).set(true);
88-
89-
slugControl.set('initialValue', slug);
90-
},
91-
9279
isLive: function () {
9380
if (this.get('showSchedule')) {
9481
return false;
@@ -400,10 +387,10 @@ export default Ember.ObjectController.extend({
400387

401388
return itemModel.set('itemData', itemData).save().then(function (item) {
402389

403-
controller.updateSlug();
404-
405390
this.set('initialValues', controls.getEach('value'));
406391

392+
controller.set('slugControl.initialValue', itemModel.getSlug());
393+
407394
controller.send('buildSignal', itemData.publish_date);
408395

409396
var sendNotify = function (message) {

app/models/item.js

Lines changed: 48 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,56 @@
11
import SearchIndex from 'appkit/utils/search-index';
2+
import slugger from 'appkit/utils/slugger';
23

34
export default DS.Model.extend({
45
itemData: DS.attr('json'),
56

67
updateSearchIndex: function () {
78
SearchIndex.indexItem(this);
8-
}.on('didUpdate', 'didCreate')
9+
}.on('didUpdate', 'didCreate'),
10+
11+
updateSlugIndex: function () {
12+
13+
var slug = this.getSlug();
14+
15+
if (slug !== this.get('initialSlug')) {
16+
17+
window.ENV.firebase.child('slugs').child(slug).set(true);
18+
19+
window.ENV.firebase.child('slugs').child(this.get('initialSlug')).remove();
20+
21+
this.setInitialSlug();
22+
23+
}
24+
25+
}.on('didUpdate', 'didCreate'),
26+
27+
setInitialSlug: function () {
28+
this.set('initialSlug', this.getSlug());
29+
}.on('didLoad'),
30+
31+
removeSlugIndex: function () {
32+
window.ENV.firebase.child('slugs').child(this.getSlug()).remove();
33+
}.on('didDelete'),
34+
35+
getSlug: function () {
36+
var data = this.get('itemData');
37+
return data.slug || this.getDefaultSlug();
38+
},
39+
40+
getDefaultSlug: function () {
41+
42+
var typeId = this.constructor.typeKey;
43+
44+
var type = this.store.getById('content-type', typeId);
45+
46+
var data = this.get('itemData');
47+
48+
var sluggedDate = (Ember.isEmpty(data.publish_date) ? moment() : moment(data.publish_date)).format();
49+
50+
return slugger({
51+
name: data.name,
52+
publish_date: sluggedDate
53+
}, type.get('id'), type.get('customUrls'));
54+
55+
}
956
});

app/routes/wh/content/type/edit.js

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import slugger from 'appkit/utils/slugger';
21
import SearchIndex from 'appkit/utils/search-index';
32

43
export default Ember.Route.extend({
@@ -194,21 +193,7 @@ export default Ember.Route.extend({
194193
var slugControl = type.get('controls').findBy('name', 'slug');
195194
controller.set('slugControl', slugControl);
196195
controller.set('isEditingSlug', false);
197-
198-
if (Ember.isEmpty(slugControl.get('value'))) {
199-
var publishDate = type.get('controls').findBy('name', 'publish_date').get('value');
200-
var sluggedDate = (Ember.isEmpty(publishDate) ? moment() : moment(publishDate)).format();
201-
202-
var defaultSlug = slugger({
203-
name: type.get('controls').findBy('name', 'name').get('value'),
204-
publish_date: sluggedDate
205-
}, type.get('id'), type.get('customUrls'));
206-
207-
slugControl.set('initialValue', defaultSlug);
208-
209-
} else {
210-
slugControl.set('initialValue', Ember.copy(slugControl.get('value')));
211-
}
196+
slugControl.set('initialValue', this.get('itemModel.initialSlug'));
212197

213198
type.get('controls').filterBy('controlType.widget', 'relation').filterBy('value').forEach(function (control) {
214199
controller.get('initialRelations').set(control.get('name'), Ember.copy(control.get('value')));

0 commit comments

Comments
 (0)