if you try posting a reply and are looking at a different topic, pop this window up

This commit is contained in:
Sam 2013-03-11 20:56:45 -07:00
parent ec59cbc73f
commit 91b507f4c4
4 changed files with 58 additions and 2 deletions

View File

@ -27,11 +27,56 @@ Discourse.ComposerController = Discourse.Controller.extend({
}
},
save: function() {
save: function(force) {
var composer,
_this = this;
_this = this,
topic,
message,
buttons;
composer = this.get('content');
composer.set('disableDrafts', true);
// for now handle a very narrow use case
// if we are replying to a topic AND not on the topic pop the window up
if(!force && composer.get('replyingToTopic')) {
topic = this.get('topic');
if (!topic || topic.get('id') !== composer.get('topic.id'))
{
message = Em.String.i18n("composer.posting_not_on_topic", {title: this.get('content.topic.title')});
buttons = [{
"label": Em.String.i18n("composer.cancel"),
"class": "btn"
}];
buttons.push({
"label": Em.String.i18n("composer.reply_original"),
"class": "btn-primary",
"callback": function(){
_this.save(true);
}
});
if(topic) {
buttons.push({
"label": Em.String.i18n("composer.reply_here"),
"class": "btn-primary",
"callback": function(){
composer.set('topic', topic);
composer.set('post', null);
_this.save(true);
}
});
}
bootbox.dialog(message, buttons);
return;
}
}
return composer.save({
imageSizes: this.get('view').imageSizes()
}).then(function(opts) {

View File

@ -44,6 +44,10 @@ Discourse.Composer = Discourse.Model.extend({
return this.get('action') === EDIT;
}).property('action'),
replyingToTopic: (function() {
return this.get('action') === REPLY;
}).property('action'),
viewOpen: (function() {
return this.get('composeState') === OPEN;
}).property('composeState'),

View File

@ -27,6 +27,8 @@ Discourse.TopicRoute = Discourse.Route.extend({
topicController = this.controllerFor('topic');
topicController.cancelFilter();
topicController.set('multiSelect', false);
this.controllerFor('composer').set('topic', null);
if (headerController = this.controllerFor('header')) {
headerController.set('topic', null);
headerController.set('showExtraInfo', false);
@ -35,6 +37,7 @@ Discourse.TopicRoute = Discourse.Route.extend({
setupController: function(controller, model) {
this.controllerFor('header').set('topic', model);
this.controllerFor('composer').set('topic', model);
}
});

View File

@ -260,6 +260,7 @@ en:
message: "Authenticating with Persona (make sure pop up blockers are not enabled)"
composer:
posting_not_on_topic: "You have composed a reply to \"{{title}}\", however you are no longer looking at that topic."
saving_draft_tip: "saving"
saved_draft_tip: "saved"
saved_local_draft_tip: "saved locally"
@ -269,7 +270,10 @@ en:
more: "{{n}} to go..."
save_edit: "Save Edit"
reply_original: "Reply on Original Topic"
reply_here: "Reply Here"
reply: "Reply"
cancel: "Cancel"
create_topic: "Create Topic"
create_pm: "Create Private Message"