fixed quoting and highlighted-text auto-quote for composer when composer is minimized, closes #2870

v1.18.x
Julian Lam 10 years ago
parent 1d94b6a96f
commit 5587233e78

@ -137,7 +137,8 @@ define('forum/topic/postTools', ['share', 'navigator', 'components', 'translator
function onReplyClicked(button, tid, topicName) {
require(['composer'], function(composer) {
var selectionText = '',
selection = window.getSelection ? window.getSelection() : document.selection.createRange();
selection = window.getSelection ? window.getSelection() : document.selection.createRange(),
topicUUID = composer.findByTid(tid);
if ($(selection.baseNode).parents('[component="post/content"]').length > 0) {
var snippet = selection.toString();
@ -151,7 +152,7 @@ define('forum/topic/postTools', ['share', 'navigator', 'components', 'translator
username = '';
}
if (selectionText.length) {
composer.addQuote(tid, ajaxify.variables.get('topic_slug'), getData(button, 'data-index'), getData(button, 'data-pid'), topicName, username, selectionText);
composer.addQuote(tid, ajaxify.variables.get('topic_slug'), getData(button, 'data-index'), getData(button, 'data-pid'), topicName, username, selectionText, topicUUID);
} else {
composer.newReply(tid, getData(button, 'data-pid'), topicName, username ? username + ' ' : '');
}
@ -162,7 +163,8 @@ define('forum/topic/postTools', ['share', 'navigator', 'components', 'translator
function onQuoteClicked(button, tid, topicName) {
require(['composer'], function(composer) {
var username = getUserName(button),
pid = getData(button, 'data-pid');
pid = getData(button, 'data-pid'),
topicUUID = composer.findByTid(tid);
socket.emit('posts.getRawPost', pid, function(err, post) {
if(err) {
@ -173,8 +175,8 @@ define('forum/topic/postTools', ['share', 'navigator', 'components', 'translator
quoted = '> ' + post.replace(/\n/g, '\n> ') + '\n\n';
}
if($('.composer').length) {
composer.addQuote(tid, ajaxify.variables.get('topic_slug'), getData(button, 'data-index'), pid, topicName, username, quoted);
if(topicUUID) {
composer.addQuote(tid, ajaxify.variables.get('topic_slug'), getData(button, 'data-index'), pid, topicName, username, quoted, topicUUID);
} else {
composer.newReply(tid, pid, topicName, '[[modules:composer.user_said, ' + username + ']]\n' + quoted);
}

@ -141,6 +141,17 @@ define('composer', [
});
}
composer.findByTid = function(tid) {
// Iterates through the initialised composers and returns the uuid of the matching composer
for(var uuid in composer.posts) {
if (composer.posts.hasOwnProperty(uuid) && composer.posts[uuid].hasOwnProperty('tid') && parseInt(composer.posts[uuid].tid, 10) === parseInt(tid, 10)) {
return uuid;
}
}
return null;
};
composer.addButton = function(iconClass, onClick) {
formatting.addButton(iconClass, onClick);
};
@ -161,13 +172,17 @@ define('composer', [
});
};
composer.addQuote = function(tid, topicSlug, postIndex, pid, title, username, text) {
var uuid = composer.active;
composer.addQuote = function(tid, topicSlug, postIndex, pid, title, username, text, uuid) {
uuid = uuid || composer.active;
if (uuid === undefined) {
composer.newReply(tid, pid, title, '[[modules:composer.user_said, ' + username + ']]\n' + text);
return;
} else if (uuid !== composer.active) {
// If the composer is not currently active, activate it
composer.load(uuid);
}
var postContainer = $('#cmp-uuid-' + uuid);
var bodyEl = postContainer.find('textarea');
var prevText = bodyEl.val();

Loading…
Cancel
Save