From 4332b703630ab73a6e789861dcfa9f02fe64055f Mon Sep 17 00:00:00 2001 From: Zankaria Date: Thu, 19 Sep 2024 22:51:31 +0200 Subject: [PATCH] quote-selection.js: trim --- js/quote-selection.js | 41 ++++++++++++++++++++--------------------- 1 file changed, 20 insertions(+), 21 deletions(-) diff --git a/js/quote-selection.js b/js/quote-selection.js index 0722c0b1..6f609319 100644 --- a/js/quote-selection.js +++ b/js/quote-selection.js @@ -16,7 +16,7 @@ $(document).ready(function(){ if (!window.getSelection) return; - + $.fn.selectRange = function(start, end) { return this.each(function() { if (this.setSelectionRange) { @@ -31,11 +31,11 @@ $(document).ready(function(){ } }); }; - + var altKey = false; var ctrlKey = false; var metaKey = false; - + $(document).keyup(function(e) { if (e.keyCode == 18) altKey = false; @@ -44,7 +44,7 @@ $(document).ready(function(){ else if (e.keyCode == 91) metaKey = false; }); - + $(document).keydown(function(e) { if (e.altKey) altKey = true; @@ -52,51 +52,51 @@ $(document).ready(function(){ ctrlKey = true; else if (e.metaKey) metaKey = true; - + if (altKey || ctrlKey || metaKey) { // console.log('CTRL/ALT/Something used. Ignoring'); return; } - + if (e.keyCode < 48 || e.keyCode > 90) return; - + var selection = window.getSelection(); var $post = $(selection.anchorNode).parents('.post'); if ($post.length == 0) { // console.log('Start of selection was not post div', $(selection.anchorNode).parent()); return; } - + var postID = $post.find('.post_no:eq(1)').text(); - + if (postID != $(selection.focusNode).parents('.post').find('.post_no:eq(1)').text()) { // console.log('Selection left post div', $(selection.focusNode).parent()); return; } - + ; var selectedText = selection.toString(); // console.log('Selected text: ' + selectedText.replace(/\n/g, '\\n').replace(/\r/g, '\\r')); - + if ($('body').hasClass('debug')) alert(selectedText); - + if (selectedText.length == 0) return; - + var body = $('textarea#body')[0]; - + var last_quote = body.value.match(/[\S.]*(^|[\S\s]*)>>(\d+)/); if (last_quote) last_quote = last_quote[2]; - + /* to solve some bugs on weird browsers, we need to replace \r\n with \n and then undo that after */ var quote = (last_quote != postID ? '>>' + postID + '\r\n' : '') + $.trim(selectedText).replace(/\r\n/g, '\n').replace(/^/mg, '>').replace(/\n/g, '\r\n') + '\r\n'; - + // console.log('Deselecting text'); selection.removeAllRanges(); - + if (document.selection) { // IE body.focus(); @@ -107,12 +107,12 @@ $(document).ready(function(){ // Mozilla var start = body.selectionStart; var end = body.selectionEnd; - + if (!body.value.substring(0, start).match(/(^|\n)$/)) { quote = '\r\n\r\n' + quote; } - - body.value = body.value.substring(0, start) + quote + body.value.substring(end, body.value.length); + + body.value = body.value.substring(0, start) + quote + body.value.substring(end, body.value.length); $(body).selectRange(start + quote.length, start + quote.length); } else { // ??? @@ -121,4 +121,3 @@ $(document).ready(function(){ } }); }); -