diff --git a/app/assets/javascripts/discourse.js b/app/assets/javascripts/discourse.js index 7dc277f25..a00e1e37f 100644 --- a/app/assets/javascripts/discourse.js +++ b/app/assets/javascripts/discourse.js @@ -114,6 +114,16 @@ window.Discourse = Ember.Application.createWithMixins(Discourse.Ajax, { @method start **/ start: function() { + + // Load any ES6 initializers + Ember.keys(requirejs._eak_seen).filter(function(key) { + return (/\/initializers\//).test(key); + }).forEach(function(moduleName) { + var module = require(moduleName, null, null, true); + if (!module) { throw new Error(moduleName + ' must export an initializer.'); } + Discourse.initializer(module.default); + }); + var initializers = this.initializers; if (initializers) { var self = this; @@ -127,6 +137,7 @@ window.Discourse = Ember.Application.createWithMixins(Discourse.Ajax, { } }); } + }, requiresRefresh: function(){ @@ -164,10 +175,3 @@ window.Discourse = Ember.Application.createWithMixins(Discourse.Ajax, { }.property("isReadOnly") }); - -Discourse.initializer({ - name: "register-discourse-location", - initialize: function(container, application) { - application.register('location:discourse-location', Ember.DiscourseLocation); - } -}); diff --git a/app/assets/javascripts/discourse/initializers/bootbox.js b/app/assets/javascripts/discourse/initializers/bootbox.js deleted file mode 100644 index 171992d1a..000000000 --- a/app/assets/javascripts/discourse/initializers/bootbox.js +++ /dev/null @@ -1,11 +0,0 @@ -/** - Default settings for bootbox -**/ -Discourse.addInitializer(function() { - - bootbox.animate(false); - - // clicking outside a bootbox modal closes it - bootbox.backdrop(true); - -}, true); \ No newline at end of file diff --git a/app/assets/javascripts/discourse/initializers/bootbox.js.es6 b/app/assets/javascripts/discourse/initializers/bootbox.js.es6 new file mode 100644 index 000000000..4715f2fa7 --- /dev/null +++ b/app/assets/javascripts/discourse/initializers/bootbox.js.es6 @@ -0,0 +1,12 @@ +/** + Default settings for bootbox +**/ +export default { + name: "bootbox", + initialize: function() { + bootbox.animate(false); + + // clicking outside a bootbox modal closes it + bootbox.backdrop(true); + } +}; diff --git a/app/assets/javascripts/discourse/initializers/csrf-token.js.es6 b/app/assets/javascripts/discourse/initializers/csrf-token.js.es6 new file mode 100644 index 000000000..946fa5b2d --- /dev/null +++ b/app/assets/javascripts/discourse/initializers/csrf-token.js.es6 @@ -0,0 +1,18 @@ +/** + Append our CSRF token to AJAX requests when necessary. +**/ +export default { + name: "csrf-token", + initialize: function() { + var session = Discourse.Session; + + // Add a CSRF token to all AJAX requests + session.currentProp('csrfToken', $('meta[name=csrf-token]').attr('content')); + + $.ajaxPrefilter(function(options, originalOptions, xhr) { + if (!options.crossDomain) { + xhr.setRequestHeader('X-CSRF-Token', session.currentProp('csrfToken')); + } + }); + } +}; diff --git a/app/assets/javascripts/discourse/initializers/csrf_token.js b/app/assets/javascripts/discourse/initializers/csrf_token.js deleted file mode 100644 index 163416f6f..000000000 --- a/app/assets/javascripts/discourse/initializers/csrf_token.js +++ /dev/null @@ -1,19 +0,0 @@ -/** - Append our CSRF token to AJAX requests when necessary. -**/ - -Discourse.addInitializer(function() { - - var session = Discourse.Session; - - // Add a CSRF token to all AJAX requests - session.currentProp('csrfToken', $('meta[name=csrf-token]').attr('content')); - - $.ajaxPrefilter(function(options, originalOptions, xhr) { - if (!options.crossDomain) { - xhr.setRequestHeader('X-CSRF-Token', session.currentProp('csrfToken')); - } - }); - -}, true); - diff --git a/app/assets/javascripts/discourse/initializers/register-discourse-location.js.es6 b/app/assets/javascripts/discourse/initializers/register-discourse-location.js.es6 new file mode 100644 index 000000000..19d4206d3 --- /dev/null +++ b/app/assets/javascripts/discourse/initializers/register-discourse-location.js.es6 @@ -0,0 +1,6 @@ +export default { + name: "register-discourse-location", + initialize: function(container, application) { + application.register('location:discourse-location', Ember.DiscourseLocation); + } +};