From 9dc14b04bea61783b91b3192bf7b1254c46acfc6 Mon Sep 17 00:00:00 2001 From: Savetheinternet Date: Sat, 30 Jul 2011 20:11:33 +1000 Subject: [PATCH] insert cite at caret/selection pos instead of end --- main.js | 17 ++++++++++++++++- templates/main.js | 17 ++++++++++++++++- 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/main.js b/main.js index 477c90db..ce640390 100644 --- a/main.js +++ b/main.js @@ -53,7 +53,22 @@ function dopost(form) { return form.body.value != "" || (typeof form.thread != "undefined" && form.file.value != ""); } function citeReply(id) { - document.getElementById('body').value += '>>' + id + '\n'; + body = document.getElementById('body'); + + if (document.selection) { + // IE + body.focus(); + sel = document.selection.createRange(); + sel.text = '>>' + id + '\n'; + } else if (body.selectionStart || body.selectionStart == '0') { + // Mozilla + start = body.selectionStart; + end = body.selectionEnd; + body.value = body.value.substring(0, start) + '>>' + id + '\n' + body.value.substring(end, body.value.length); + } else { + // ??? + body.value += '>>' + id + '\n'; + } } var selectedstyle = 'Yotsuba B'; diff --git a/templates/main.js b/templates/main.js index 577e6f66..89f98ccd 100644 --- a/templates/main.js +++ b/templates/main.js @@ -53,7 +53,22 @@ function dopost(form) { return form.body.value != "" || (typeof form.thread != "undefined" && form.file.value != ""); } function citeReply(id) { - document.getElementById('body').value += '>>' + id + '\n'; + body = document.getElementById('body'); + + if (document.selection) { + // IE + body.focus(); + sel = document.selection.createRange(); + sel.text = '>>' + id + '\n'; + } else if (body.selectionStart || body.selectionStart == '0') { + // Mozilla + start = body.selectionStart; + end = body.selectionEnd; + body.value = body.value.substring(0, start) + '>>' + id + '\n' + body.value.substring(end, body.value.length); + } else { + // ??? + body.value += '>>' + id + '\n'; + } } var selectedstyle = '{config[default_stylesheet][0]}';