diff --git a/lib/plugin/instance.rb b/lib/plugin/instance.rb index 297726f779d..55fffea1147 100644 --- a/lib/plugin/instance.rb +++ b/lib/plugin/instance.rb @@ -212,7 +212,7 @@ class Plugin::Instance def register_assets! assets.each do |asset, opts| - if asset =~ /\.js$|\.js\.erb$/ + if asset =~ /\.js$|\.js\.erb$|\.js\.es6$/ if opts == :admin DiscoursePluginRegistry.admin_javascripts << asset else diff --git a/plugins/poll/assets/javascripts/poll-controller.js.es6 b/plugins/poll/assets/javascripts/poll-controller.js.es6 new file mode 100644 index 00000000000..5deef83b3b3 --- /dev/null +++ b/plugins/poll/assets/javascripts/poll-controller.js.es6 @@ -0,0 +1,44 @@ +export default Discourse.Controller.extend({ + poll: null, + showResults: Em.computed.oneWay('poll.closed'), + disableRadio: Em.computed.any('poll.closed', 'loading'), + showToggleClosePoll: function() { + return this.get('poll.post.topic.details.can_edit') && !Discourse.SiteSettings.allow_user_locale; + }.property('poll.post.topic.details.can_edit'), + + actions: { + selectOption: function(option) { + if (this.get('disableRadio')) { + return; + } + + if (!this.get('currentUser.id')) { + this.get('postController').send('showLogin'); + return; + } + + this.set('loading', true); + this.get('poll').saveVote(option).then(function() { + this.set('loading', false); + this.set('showResults', true); + }.bind(this)); + }, + + toggleShowResults: function() { + this.set('showResults', !this.get('showResults')); + }, + + toggleClosePoll: function() { + this.set('loading', true); + return Discourse.ajax("/poll/toggle_close", { + type: "PUT", + data: {post_id: this.get('poll.post.id')} + }).then(function(topicJson) { + this.set('poll.post.topic.title', topicJson.basic_topic.title); + this.set('poll.post.topic.fancy_title', topicJson.basic_topic.title); + this.set('loading', false); + }.bind(this)); + } + } +}); + diff --git a/plugins/poll/assets/javascripts/poll_ui.js b/plugins/poll/assets/javascripts/poll_ui.js index 81ebc3767d1..7f2362e52e5 100644 --- a/plugins/poll/assets/javascripts/poll_ui.js +++ b/plugins/poll/assets/javascripts/poll_ui.js @@ -41,49 +41,7 @@ var Poll = Discourse.Model.extend({ } }); -var PollController = Discourse.Controller.extend({ - poll: null, - showResults: Em.computed.oneWay('poll.closed'), - disableRadio: Em.computed.any('poll.closed', 'loading'), - showToggleClosePoll: function() { - return this.get('poll.post.topic.details.can_edit') && !Discourse.SiteSettings.allow_user_locale; - }.property('poll.post.topic.details.can_edit'), - - actions: { - selectOption: function(option) { - if (this.get('disableRadio')) { - return; - } - - if (!this.get('currentUser.id')) { - this.get('postController').send('showLogin'); - return; - } - - this.set('loading', true); - this.get('poll').saveVote(option).then(function() { - this.set('loading', false); - this.set('showResults', true); - }.bind(this)); - }, - - toggleShowResults: function() { - this.set('showResults', !this.get('showResults')); - }, - - toggleClosePoll: function() { - this.set('loading', true); - return Discourse.ajax("/poll/toggle_close", { - type: "PUT", - data: {post_id: this.get('poll.post.id')} - }).then(function(topicJson) { - this.set('poll.post.topic.title', topicJson.basic_topic.title); - this.set('poll.post.topic.fancy_title', topicJson.basic_topic.title); - this.set('loading', false); - }.bind(this)); - } - } -}); +var PollController = require("javascripts/poll-controller").default; var PollView = Ember.View.extend({ templateName: "poll", diff --git a/plugins/poll/plugin.rb b/plugins/poll/plugin.rb index fddf8251617..14f576dabb2 100644 --- a/plugins/poll/plugin.rb +++ b/plugins/poll/plugin.rb @@ -142,6 +142,7 @@ after_initialize do end # Poll UI. +register_asset "javascripts/poll-controller.js.es6" register_asset "javascripts/discourse/templates/poll.js.handlebars" register_asset "javascripts/poll_ui.js" register_asset "javascripts/poll_bbcode.js", :server_side