/** A form to create an IP address that will be blocked or whitelisted. Example usage: {{screened-ip-address-form action="recordAdded"}} where action is a callback on the controller or route that will get called after the new record is successfully saved. It is called with the new ScreenedIpAddress record as an argument. **/ import ScreenedIpAddress from 'admin/models/screened-ip-address'; import computed from 'ember-addons/ember-computed-decorators'; import { on } from 'ember-addons/ember-computed-decorators'; export default Ember.Component.extend({ classNames: ['screened-ip-address-form'], formSubmitted: false, actionName: 'block', @computed adminWhitelistEnabled() { return Discourse.SiteSettings.use_admin_ip_whitelist; }, @computed("adminWhitelistEnabled") actionNames(adminWhitelistEnabled) { if (adminWhitelistEnabled) { return [ {id: 'block', name: I18n.t('admin.logs.screened_ips.actions.block')}, {id: 'do_nothing', name: I18n.t('admin.logs.screened_ips.actions.do_nothing')}, {id: 'allow_admin', name: I18n.t('admin.logs.screened_ips.actions.allow_admin')} ]; } else { return [ {id: 'block', name: I18n.t('admin.logs.screened_ips.actions.block')}, {id: 'do_nothing', name: I18n.t('admin.logs.screened_ips.actions.do_nothing')} ]; } }, actions: { submit() { if (!this.get('formSubmitted')) { this.set('formSubmitted', true); const screenedIpAddress = ScreenedIpAddress.create({ ip_address: this.get('ip_address'), action_name: this.get('actionName') }); screenedIpAddress.save().then(result => { this.setProperties({ ip_address: '', formSubmitted: false }); this.sendAction('action', ScreenedIpAddress.create(result.screened_ip_address)); Ember.run.schedule('afterRender', () => this.$('.ip-address-input').focus()); }).catch(e => { this.set('formSubmitted', false); const msg = (e.responseJSON && e.responseJSON.errors) ? I18n.t("generic_error_with_reason", {error: e.responseJSON.errors.join('. ')}) : I18n.t("generic_error"); bootbox.alert(msg, () => this.$('.ip-address-input').focus()); }); } } }, @on("didInsertElement") _init() { Ember.run.schedule('afterRender', () => { this.$('.ip-address-input').keydown(e => { if (e.keyCode === 13) { this.send('submit'); } }); }); } });