2
0
Fork 0
mirror of https://github.com/discourse/discourse.git synced 2025-09-06 10:50:21 +08:00

reply to first post === reply to topic

This commit is contained in:
Sam 2013-07-16 15:42:18 +10:00
parent a3155858a0
commit fce2d0e3b6
2 changed files with 47 additions and 42 deletions

View file

@ -100,11 +100,16 @@ Discourse.QuoteButtonController = Discourse.Controller.extend({
var post = this.get('post'); var post = this.get('post');
var composerController = this.get('controllers.composer'); var composerController = this.get('controllers.composer');
var composerOpts = { var composerOpts = {
post: post,
action: Discourse.Composer.REPLY, action: Discourse.Composer.REPLY,
draftKey: this.get('post.topic.draft_key') draftKey: this.get('post.topic.draft_key')
}; };
if(post.get('post_number') === 1) {
composerOpts.topic = post.get("topic");
} else {
composerOpts.post = post;
}
// If the composer is associated with a different post, we don't change it. // If the composer is associated with a different post, we don't change it.
var composerPost = composerController.get('content.post'); var composerPost = composerController.get('content.post');
if (composerPost && (composerPost.get('id') !== this.get('post.id'))) { if (composerPost && (composerPost.get('id') !== this.get('post.id'))) {

View file

@ -198,41 +198,6 @@ Discourse.TopicController = Discourse.ObjectController.extend(Discourse.Selected
Discourse.URL.routeTo(this.get('lastPostUrl')); Discourse.URL.routeTo(this.get('lastPostUrl'));
}, },
replyAsNewTopic: function(post) {
// TODO shut down topic draft cleanly if it exists ...
var composerController = this.get('controllers.composer');
var promise = composerController.open({
action: Discourse.Composer.CREATE_TOPIC,
draftKey: Discourse.Composer.REPLY_AS_NEW_TOPIC_KEY
});
var postUrl = "" + location.protocol + "//" + location.host + (post.get('url'));
var postLink = "[" + (this.get('title')) + "](" + postUrl + ")";
promise.then(function() {
Discourse.Post.loadQuote(post.get('id')).then(function(q) {
composerController.appendText("" + (I18n.t("post.continue_discussion", {
postLink: postLink
})) + "\n\n" + q);
});
});
},
// Topic related
reply: function() {
var composerController = this.get('controllers.composer');
if (composerController.get('content.topic.id') === this.get('content.id') &&
composerController.get('content.action') === Discourse.Composer.REPLY) {
composerController.set('content.post', null);
composerController.set('content.composeState', Discourse.Composer.OPEN);
} else {
composerController.open({
topic: this.get('content'),
action: Discourse.Composer.REPLY,
draftKey: this.get('content.draft_key'),
draftSequence: this.get('content.draft_sequence')
});
}
},
/** /**
Toggle a participant for filtering Toggle a participant for filtering
@ -336,25 +301,60 @@ Discourse.TopicController = Discourse.ObjectController.extend(Discourse.Selected
var composerController = this.get('controllers.composer'); var composerController = this.get('controllers.composer');
var quoteController = this.get('controllers.quoteButton'); var quoteController = this.get('controllers.quoteButton');
var quotedText = Discourse.BBCode.buildQuoteBBCode(quoteController.get('post'), quoteController.get('buffer')); var quotedText = Discourse.BBCode.buildQuoteBBCode(quoteController.get('post'), quoteController.get('buffer'));
var topic = post ? post.get('topic') : this.get('model');
quoteController.set('buffer', ''); quoteController.set('buffer', '');
if (composerController.get('content.topic.id') === post.get('topic.id') && if (composerController.get('content.topic.id') === topic.get('id') &&
composerController.get('content.action') === Discourse.Composer.REPLY) { composerController.get('content.action') === Discourse.Composer.REPLY) {
composerController.set('content.post', post); composerController.set('content.post', post);
composerController.set('content.composeState', Discourse.Composer.OPEN); composerController.set('content.composeState', Discourse.Composer.OPEN);
composerController.appendText(quotedText); composerController.appendText(quotedText);
} else { } else {
var promise = composerController.open({
post: post, var opts = {
action: Discourse.Composer.REPLY, action: Discourse.Composer.REPLY,
draftKey: post.get('topic.draft_key'), draftKey: topic.get('draft_key'),
draftSequence: post.get('topic.draft_sequence') draftSequence: topic.get('draft_sequence')
}); };
if(post && post.get("post_number") !== 1){
opts.post = post;
} else {
opts.topic = topic;
}
var promise = composerController.open(opts);
promise.then(function() { composerController.appendText(quotedText); }); promise.then(function() { composerController.appendText(quotedText); });
} }
return false; return false;
}, },
replyAsNewTopic: function(post) {
// TODO shut down topic draft cleanly if it exists ...
var composerController = this.get('controllers.composer');
var promise = composerController.open({
action: Discourse.Composer.CREATE_TOPIC,
draftKey: Discourse.Composer.REPLY_AS_NEW_TOPIC_KEY
});
var postUrl = "" + location.protocol + "//" + location.host + (post.get('url'));
var postLink = "[" + (this.get('title')) + "](" + postUrl + ")";
promise.then(function() {
Discourse.Post.loadQuote(post.get('id')).then(function(q) {
composerController.appendText("" + (I18n.t("post.continue_discussion", {
postLink: postLink
})) + "\n\n" + q);
});
});
},
// Topic related
reply: function() {
this.replyToPost();
},
// Edits a post // Edits a post
editPost: function(post) { editPost: function(post) {
this.get('controllers.composer').open({ this.get('controllers.composer').open({