v1.18.x
barisusakli 8 years ago
parent 2c428cdec1
commit c285eb7fcd

@ -52,7 +52,7 @@
"morgan": "^1.3.2", "morgan": "^1.3.2",
"mousetrap": "^1.5.3", "mousetrap": "^1.5.3",
"nconf": "~0.8.2", "nconf": "~0.8.2",
"nodebb-plugin-composer-default": "4.4.0", "nodebb-plugin-composer-default": "4.3.9",
"nodebb-plugin-dbsearch": "1.0.5", "nodebb-plugin-dbsearch": "1.0.5",
"nodebb-plugin-emoji-extended": "1.1.1", "nodebb-plugin-emoji-extended": "1.1.1",
"nodebb-plugin-emoji-one": "1.1.5", "nodebb-plugin-emoji-one": "1.1.5",

@ -197,7 +197,7 @@ define('forum/topic/postTools', [
} }
function onReplyClicked(button, tid) { function onReplyClicked(button, tid) {
var selectedText = getSelectedText(button); var selectedNode = getSelectedNode();
showStaleWarning(function () { showStaleWarning(function () {
var username = getUserName(button); var username = getUserName(button);
@ -207,15 +207,15 @@ define('forum/topic/postTools', [
var toPid = button.is('[component="post/reply"]') ? getData(button, 'data-pid') : null; var toPid = button.is('[component="post/reply"]') ? getData(button, 'data-pid') : null;
if (selectedText) { if (selectedNode.text && (!toPid || !selectedNode.pid || toPid === selectedNode.pid)) {
username = username || selectedNode.username;
$(window).trigger('action:composer.addQuote', { $(window).trigger('action:composer.addQuote', {
tid: tid, tid: tid,
slug: ajaxify.data.slug,
index: getData(button, 'data-index'),
pid: toPid, pid: toPid,
topicName: ajaxify.data.titleRaw, topicName: ajaxify.data.titleRaw,
username: username, username: username,
text: selectedText text: selectedNode.text,
selectedPid: selectedNode.pid
}); });
} else { } else {
$(window).trigger('action:composer.post.new', { $(window).trigger('action:composer.post.new', {
@ -229,16 +229,14 @@ define('forum/topic/postTools', [
} }
function onQuoteClicked(button, tid) { function onQuoteClicked(button, tid) {
var selectedText = getSelectedText(button); var selectedNode = getSelectedNode();
showStaleWarning(function () { showStaleWarning(function () {
function quote(text) { function quote(text) {
$(window).trigger('action:composer.addQuote', { $(window).trigger('action:composer.addQuote', {
tid: tid, tid: tid,
slug: ajaxify.data.slug, pid: toPid,
index: getData(button, 'data-index'),
pid: pid,
username: username, username: username,
topicName: ajaxify.data.titleRaw, topicName: ajaxify.data.titleRaw,
text: text text: text
@ -246,12 +244,12 @@ define('forum/topic/postTools', [
} }
var username = getUserName(button); var username = getUserName(button);
var pid = getData(button, 'data-pid'); var toPid = getData(button, 'data-pid');
if (selectedText) { if (selectedNode.text && toPid && toPid === selectedNode.pid) {
return quote(selectedText); return quote(selectedNode.text);
} }
socket.emit('posts.getRawPost', pid, function (err, post) { socket.emit('posts.getRawPost', toPid, function (err, post) {
if (err) { if (err) {
return app.alertError(err.message); return app.alertError(err.message);
} }
@ -261,12 +259,20 @@ define('forum/topic/postTools', [
}); });
} }
function getSelectedText(button) { function getSelectedNode() {
var selectionText = ''; var selectedText = '';
var selectedPid;
var username = '';
var selection = window.getSelection ? window.getSelection() : document.selection.createRange(); var selection = window.getSelection ? window.getSelection() : document.selection.createRange();
var content = button.parents('[component="post"]').find('[component="post/content"]').get(0); var postContents = $('[component="post"] [component="post/content"]');
var content;
postContents.each(function(index, el) {
if (selection && selection.containsNode && el && selection.containsNode(el, true)) {
content = el;
}
});
if (selection && selection.containsNode && content && selection.containsNode(content, true)) { if (content) {
var bounds = document.createRange(); var bounds = document.createRange();
bounds.selectNodeContents(content); bounds.selectNodeContents(content);
var range = selection.getRangeAt(0).cloneRange(); var range = selection.getRangeAt(0).cloneRange();
@ -277,10 +283,13 @@ define('forum/topic/postTools', [
range.setEnd(bounds.endContainer, bounds.endOffset); range.setEnd(bounds.endContainer, bounds.endOffset);
} }
bounds.detach(); bounds.detach();
selectionText = range.toString(); selectedText = range.toString();
var postEl = $(content).parents('[component="post"]');
selectedPid = postEl.attr('data-pid');
username = getUserName($(content));
range.detach(); range.detach();
} }
return selectionText; return {text: selectedText, pid: selectedPid, username: username};
} }
function bookmarkPost(button, pid) { function bookmarkPost(button, pid) {

Loading…
Cancel
Save