mirror of
https://github.com/codeninjasllc/discourse.git
synced 2024-11-27 09:36:19 -05:00
Merge pull request #2339 from vikhyat/poll-plugin
Partially convert poll plugin to use ES6 modules
This commit is contained in:
commit
15b0cd5185
4 changed files with 47 additions and 44 deletions
|
@ -212,7 +212,7 @@ class Plugin::Instance
|
||||||
|
|
||||||
def register_assets!
|
def register_assets!
|
||||||
assets.each do |asset, opts|
|
assets.each do |asset, opts|
|
||||||
if asset =~ /\.js$|\.js\.erb$/
|
if asset =~ /\.js$|\.js\.erb$|\.js\.es6$/
|
||||||
if opts == :admin
|
if opts == :admin
|
||||||
DiscoursePluginRegistry.admin_javascripts << asset
|
DiscoursePluginRegistry.admin_javascripts << asset
|
||||||
else
|
else
|
||||||
|
|
44
plugins/poll/assets/javascripts/poll-controller.js.es6
Normal file
44
plugins/poll/assets/javascripts/poll-controller.js.es6
Normal 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));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
|
@ -41,49 +41,7 @@ var Poll = Discourse.Model.extend({
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
var PollController = Discourse.Controller.extend({
|
var PollController = require("javascripts/poll-controller").default;
|
||||||
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 PollView = Ember.View.extend({
|
var PollView = Ember.View.extend({
|
||||||
templateName: "poll",
|
templateName: "poll",
|
||||||
|
|
|
@ -142,6 +142,7 @@ after_initialize do
|
||||||
end
|
end
|
||||||
|
|
||||||
# Poll UI.
|
# Poll UI.
|
||||||
|
register_asset "javascripts/poll-controller.js.es6"
|
||||||
register_asset "javascripts/discourse/templates/poll.js.handlebars"
|
register_asset "javascripts/discourse/templates/poll.js.handlebars"
|
||||||
register_asset "javascripts/poll_ui.js"
|
register_asset "javascripts/poll_ui.js"
|
||||||
register_asset "javascripts/poll_bbcode.js", :server_side
|
register_asset "javascripts/poll_bbcode.js", :server_side
|
||||||
|
|
Loading…
Reference in a new issue