mirror of
https://github.com/vichan-devel/vichan.git
synced 2025-02-20 20:51:50 +01:00
quote-selection.js: trim
This commit is contained in:
parent
cb6d6f13dd
commit
4332b70363
@ -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(){
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user