mirror of
https://github.com/codeninjasllc/discourse.git
synced 2025-04-01 09:39:51 -04:00
Support for models to update themselves. Needed for discourse-tagging
This commit is contained in:
parent
ad64bfa361
commit
aeb0fc7559
3 changed files with 27 additions and 9 deletions
app/assets/javascripts/discourse
|
@ -4,8 +4,14 @@ const _identityMap = {};
|
|||
|
||||
const RestModel = Ember.Object.extend({
|
||||
update(attrs) {
|
||||
const self = this;
|
||||
return this.store.update(this.get('__type'), this.get('id'), attrs).then(function(result) {
|
||||
const self = this,
|
||||
type = this.get('__type');
|
||||
return this.store.update(type, this.get('id'), attrs).then(function(result) {
|
||||
if (result && result[type]) {
|
||||
Object.keys(result).forEach(function(k) {
|
||||
attrs[k] = result[k];
|
||||
});
|
||||
}
|
||||
self.setProperties(attrs);
|
||||
return result;
|
||||
});
|
||||
|
@ -42,9 +48,20 @@ export default Ember.Object.extend({
|
|||
|
||||
update(type, id, attrs) {
|
||||
const data = {};
|
||||
data[this.serverName(type)] = attrs;
|
||||
data[Ember.String.underscore(type)] = attrs;
|
||||
|
||||
return Discourse.ajax(this.pathFor(type, id), { method: 'PUT', data });
|
||||
return Discourse.ajax(this.pathFor(type, id), { method: 'PUT', data }).then(function (result) {
|
||||
if (result && result[type] && result[type].id) {
|
||||
const oldRecord = _identityMap[type][id];
|
||||
delete _identityMap[type][id];
|
||||
_identityMap[type][result[type].id] = oldRecord;
|
||||
}
|
||||
return result;
|
||||
});
|
||||
},
|
||||
|
||||
createRecord(type, attrs) {
|
||||
return this._hydrate(type, attrs);
|
||||
},
|
||||
|
||||
_hydrate(type, obj) {
|
||||
|
|
|
@ -2,9 +2,6 @@ export default Em.Mixin.create({
|
|||
needs: ['modal'],
|
||||
|
||||
flash: function(message, messageClass) {
|
||||
this.set('flashMessage', Em.Object.create({
|
||||
message: message,
|
||||
messageClass: messageClass
|
||||
}));
|
||||
this.set('flashMessage', Em.Object.create({ message, messageClass }));
|
||||
}
|
||||
});
|
||||
|
|
|
@ -7,6 +7,10 @@ export default Ember.Object.extend({
|
|||
find(type, id) {
|
||||
const adapter = this.container.lookup('adapter:' + type) || this.container.lookup('adapter:rest');
|
||||
return adapter.find(type, id);
|
||||
}
|
||||
},
|
||||
|
||||
createRecord(type, attrs) {
|
||||
const adapter = this.container.lookup('adapter:' + type) || this.container.lookup('adapter:rest');
|
||||
return adapter.createRecord(type, attrs);
|
||||
}
|
||||
});
|
||||
|
|
Loading…
Add table
Reference in a new issue