Merge pull request #2339 from vikhyat/poll-plugin

Partially convert poll plugin to use ES6 modules
This commit is contained in:
Robin Ward 2014-05-15 15:04:07 -04:00
commit 15b0cd5185
4 changed files with 47 additions and 44 deletions

View file

@ -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

View file

@ -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));
}
}
});

View file

@ -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",

View file

@ -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