1
0
mirror of https://github.com/vichan-devel/vichan.git synced 2024-11-27 17:00:52 +01:00

quote-selection.js: format

This commit is contained in:
Zankaria 2024-09-19 22:56:23 +02:00
parent fd309443ea
commit bdd7090e75

View File

@ -10,12 +10,12 @@
* Usage: * Usage:
* $config['additional_javascript'][] = 'js/jquery.min.js'; * $config['additional_javascript'][] = 'js/jquery.min.js';
* $config['additional_javascript'][] = 'js/quote-selection.js'; * $config['additional_javascript'][] = 'js/quote-selection.js';
*
*/ */
$(document).ready(function(){ $(document).ready(function() {
if (!window.getSelection) if (!window.getSelection) {
return; return;
}
$.fn.selectRange = function(start, end) { $.fn.selectRange = function(start, end) {
return this.each(function() { return this.each(function() {
@ -23,7 +23,7 @@ $(document).ready(function(){
this.focus(); this.focus();
this.setSelectionRange(start, end); this.setSelectionRange(start, end);
} else if (this.createTextRange) { } else if (this.createTextRange) {
var range = this.createTextRange(); let range = this.createTextRange();
range.collapse(true); range.collapse(true);
range.moveEnd('character', end); range.moveEnd('character', end);
range.moveStart('character', start); range.moveStart('character', start);
@ -32,74 +32,74 @@ $(document).ready(function(){
}); });
}; };
var altKey = false; let altKey = false;
var ctrlKey = false; let ctrlKey = false;
var metaKey = false; let metaKey = false;
$(document).keyup(function(e) { $(document).keyup(function(e) {
if (e.keyCode == 18) if (e.keyCode == 18) {
altKey = false; altKey = false;
else if (e.keyCode == 17) } else if (e.keyCode == 17) {
ctrlKey = false; ctrlKey = false;
else if (e.keyCode == 91) } else if (e.keyCode == 91) {
metaKey = false; metaKey = false;
}
}); });
$(document).keydown(function(e) { $(document).keydown(function(e) {
if (e.altKey) if (e.altKey) {
altKey = true; altKey = true;
else if (e.ctrlKey) } else if (e.ctrlKey) {
ctrlKey = true; ctrlKey = true;
else if (e.metaKey) } else if (e.metaKey) {
metaKey = true; metaKey = true;
}
if (altKey || ctrlKey || metaKey) { if (altKey || ctrlKey || metaKey) {
// console.log('CTRL/ALT/Something used. Ignoring');
return; return;
} }
if (e.keyCode < 48 || e.keyCode > 90) 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; return;
} }
var postID = $post.find('.post_no:eq(1)').text(); let selection = window.getSelection();
let post = $(selection.anchorNode).parents('.post');
if (post.length == 0) {
return;
}
let postID = post.find('.post_no:eq(1)').text();
if (postID != $(selection.focusNode).parents('.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; return;
} }
; let selectedText = selection.toString();
var selectedText = selection.toString();
// console.log('Selected text: ' + selectedText.replace(/\n/g, '\\n').replace(/\r/g, '\\r'));
if ($('body').hasClass('debug')) if ($('body').hasClass('debug')) {
alert(selectedText); alert(selectedText);
}
if (selectedText.length == 0) if (selectedText.length == 0) {
return; return;
}
var body = $('textarea#body')[0]; let body = $('textarea#body')[0];
var last_quote = body.value.match(/[\S.]*(^|[\S\s]*)>>(\d+)/); let last_quote = body.value.match(/[\S.]*(^|[\S\s]*)>>(\d+)/);
if (last_quote) if (last_quote) {
last_quote = last_quote[2]; 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 */ /* 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'; let 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(); selection.removeAllRanges();
if (body.selectionStart || body.selectionStart == '0') { if (body.selectionStart || body.selectionStart == '0') {
var start = body.selectionStart; let start = body.selectionStart;
var end = body.selectionEnd; let end = body.selectionEnd;
if (!body.value.substring(0, start).match(/(^|\n)$/)) { if (!body.value.substring(0, start).match(/(^|\n)$/)) {
quote = '\r\n\r\n' + quote; quote = '\r\n\r\n' + quote;