diff --git a/plugins/poll/app/models/poll.rb b/plugins/poll/app/models/poll.rb index 210533836ff..cbb3016f46b 100644 --- a/plugins/poll/app/models/poll.rb +++ b/plugins/poll/app/models/poll.rb @@ -83,6 +83,7 @@ end # updated_at :datetime not null # chart_type :integer default("bar"), not null # groups :string +# title :string # # Indexes # diff --git a/plugins/poll/app/serializers/poll_serializer.rb b/plugins/poll/app/serializers/poll_serializer.rb index 171eb95387f..6444349bace 100644 --- a/plugins/poll/app/serializers/poll_serializer.rb +++ b/plugins/poll/app/serializers/poll_serializer.rb @@ -14,7 +14,8 @@ class PollSerializer < ApplicationSerializer :close, :preloaded_voters, :chart_type, - :groups + :groups, + :title def public true diff --git a/plugins/poll/assets/javascripts/controllers/poll-breakdown.js.es6 b/plugins/poll/assets/javascripts/controllers/poll-breakdown.js.es6 index 6a47eeeaa93..89effd92720 100644 --- a/plugins/poll/assets/javascripts/controllers/poll-breakdown.js.es6 +++ b/plugins/poll/assets/javascripts/controllers/poll-breakdown.js.es6 @@ -2,6 +2,7 @@ import I18n from "I18n"; import Controller from "@ember/controller"; import { action } from "@ember/object"; import { classify } from "@ember/string"; +import { htmlSafe } from "@ember/template"; import { ajax } from "discourse/lib/ajax"; import { popupAjaxError } from "discourse/lib/ajax-error"; import loadScript from "discourse/lib/load-script"; @@ -15,6 +16,11 @@ export default Controller.extend(ModalFunctionality, { highlightedOption: null, displayMode: "percentage", + @discourseComputed("model.poll.title", "model.post.topic.title") + title(pollTitle, topicTitle) { + return pollTitle ? htmlSafe(pollTitle) : topicTitle; + }, + @discourseComputed("model.groupableUserFields") groupableUserFields(fields) { return fields.map((field) => { diff --git a/plugins/poll/assets/javascripts/controllers/poll-ui-builder.js.es6 b/plugins/poll/assets/javascripts/controllers/poll-ui-builder.js.es6 index e5aa341108e..9090e92f65a 100644 --- a/plugins/poll/assets/javascripts/controllers/poll-ui-builder.js.es6 +++ b/plugins/poll/assets/javascripts/controllers/poll-ui-builder.js.es6 @@ -28,6 +28,7 @@ export default Controller.extend({ pollType: null, pollResult: null, + pollTitle: null, init() { this._super(...arguments); @@ -214,6 +215,7 @@ export default Controller.extend({ "pollType", "pollResult", "publicPoll", + "pollTitle", "pollOptions", "pollMin", "pollMax", @@ -230,6 +232,7 @@ export default Controller.extend({ pollType, pollResult, publicPoll, + pollTitle, pollOptions, pollMin, pollMax, @@ -293,6 +296,10 @@ export default Controller.extend({ pollHeader += "]"; output += `${pollHeader}\n`; + if (pollTitle) { + output += `# ${pollTitle.trim()}\n`; + } + if (pollOptions.length > 0 && !isNumber) { pollOptions.split("\n").forEach((option) => { if (option.length !== 0) { @@ -382,6 +389,7 @@ export default Controller.extend({ chartType: BAR_CHART_TYPE, pollResult: this.alwaysPollResult, pollGroups: null, + pollTitle: null, date: moment().add(1, "day").format("YYYY-MM-DD"), time: moment().add(1, "hour").format("HH:mm"), }); diff --git a/plugins/poll/assets/javascripts/discourse/templates/modal/poll-breakdown.hbs b/plugins/poll/assets/javascripts/discourse/templates/modal/poll-breakdown.hbs index 0cb26c08d5f..693e31a34eb 100644 --- a/plugins/poll/assets/javascripts/discourse/templates/modal/poll-breakdown.hbs +++ b/plugins/poll/assets/javascripts/discourse/templates/modal/poll-breakdown.hbs @@ -1,7 +1,8 @@ {{#d-modal-body title="poll.breakdown.title"}}