mirror of
https://github.com/discourse/discourse.git
synced 2024-12-16 23:13:53 +08:00
64 lines
1.7 KiB
Plaintext
64 lines
1.7 KiB
Plaintext
|
import { bufferedProperty } from 'discourse/mixins/buffered-content';
|
||
|
import computed from 'ember-addons/ember-computed-decorators';
|
||
|
import { on, observes } from 'ember-addons/ember-computed-decorators';
|
||
|
import { popupAjaxError } from 'discourse/lib/ajax-error';
|
||
|
|
||
|
export default Ember.Component.extend(bufferedProperty('host'), {
|
||
|
editToggled: false,
|
||
|
tagName: 'tr',
|
||
|
categoryId: null,
|
||
|
|
||
|
editing: Ember.computed.or('host.isNew', 'editToggled'),
|
||
|
|
||
|
@on('didInsertElement')
|
||
|
@observes('editing')
|
||
|
_focusOnInput() {
|
||
|
Ember.run.schedule('afterRender', () => { this.$('.host-name').focus(); });
|
||
|
},
|
||
|
|
||
|
@computed('buffered.host', 'host.isSaving')
|
||
|
cantSave(host, isSaving) {
|
||
|
return isSaving || Ember.isEmpty(host);
|
||
|
},
|
||
|
|
||
|
actions: {
|
||
|
edit() {
|
||
|
this.set('categoryId', this.get('host.category.id'));
|
||
|
this.set('editToggled', true);
|
||
|
},
|
||
|
|
||
|
save() {
|
||
|
if (this.get('cantSave')) { return; }
|
||
|
|
||
|
const props = this.get('buffered').getProperties('host');
|
||
|
props.category_id = this.get('categoryId');
|
||
|
|
||
|
const host = this.get('host');
|
||
|
host.save(props).then(() => {
|
||
|
host.set('category', Discourse.Category.findById(this.get('categoryId')));
|
||
|
this.set('editToggled', false);
|
||
|
}).catch(popupAjaxError);
|
||
|
},
|
||
|
|
||
|
delete() {
|
||
|
bootbox.confirm(I18n.t('admin.embedding.confirm_delete'), (result) => {
|
||
|
if (result) {
|
||
|
this.get('host').destroyRecord().then(() => {
|
||
|
this.sendAction('deleteHost', this.get('host'));
|
||
|
});
|
||
|
}
|
||
|
});
|
||
|
},
|
||
|
|
||
|
cancel() {
|
||
|
const host = this.get('host');
|
||
|
if (host.get('isNew')) {
|
||
|
this.sendAction('deleteHost', host);
|
||
|
} else {
|
||
|
this.rollbackBuffer();
|
||
|
this.set('editToggled', false);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
});
|