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:
parent
fd309443ea
commit
bdd7090e75
@ -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;
|
||||||
|
Loading…
Reference in New Issue
Block a user