panel.js
102 lines
| 3.2 KiB
| application/javascript
|
JavascriptLexer
neko259
|
r332 | /* | ||
@licstart The following is the entire license notice for the | ||||
JavaScript code in this page. | ||||
Copyright (C) 2013 neko259 | ||||
The JavaScript code in this page is free software: you can | ||||
redistribute it and/or modify it under the terms of the GNU | ||||
General Public License (GNU GPL) as published by the Free Software | ||||
Foundation, either version 3 of the License, or (at your option) | ||||
any later version. The code is distributed WITHOUT ANY WARRANTY; | ||||
without even the implied warranty of MERCHANTABILITY or FITNESS | ||||
FOR A PARTICULAR PURPOSE. See the GNU GPL for more details. | ||||
As additional permission under GNU GPL version 3 section 7, you | ||||
may distribute non-source (e.g., minimized or compacted) forms of | ||||
that code without the copy of the GNU GPL normally required by | ||||
section 4, provided you include this license notice and a URL | ||||
through which recipients can access the Corresponding Source. | ||||
@licend The above is the entire license notice | ||||
for the JavaScript code in this page. | ||||
*/ | ||||
neko259
|
r440 | /** | ||
* Add the desired characters to the start and end of selection. | ||||
neko259
|
r685 | * | ||
neko259
|
r440 | * @param start Start (left) text | ||
* @param end End (right) text | ||||
*/ | ||||
rt@lightning
|
r228 | function addMarkToMsg(start, end) { | ||
neko259
|
r440 | if (end.length == 0) { | ||
return addTextToEachLineOfSelection(start); | ||||
} | ||||
neko259
|
r684 | var textareas = $('textarea'); | ||
neko259
|
r680 | |||
for (var i = 0; i < textareas.length; i++) { | ||||
var textarea = textareas[i]; | ||||
neko259
|
r684 | if (document.selection) { | ||
neko259
|
r680 | textarea.focus(); | ||
neko259
|
r684 | |||
neko259
|
r680 | var sel = document.selection.createRange(); | ||
sel.text = start + sel.text + end; | ||||
neko259
|
r684 | } else if (textarea.selectionStart || textarea.selectionStart == '0') { | ||
neko259
|
r680 | textarea.focus(); | ||
neko259
|
r684 | |||
neko259
|
r680 | var startPos = textarea.selectionStart; | ||
var endPos = textarea.selectionEnd; | ||||
neko259
|
r684 | |||
var oldValue = textarea.value; | ||||
textarea.value = oldValue.substring(0, startPos) + start + | ||||
oldValue.substring(startPos, endPos) + end + | ||||
oldValue.substring(endPos, oldValue.length); | ||||
neko259
|
r680 | } else { | ||
textarea.value += start + end; | ||||
} | ||||
rt@lightning
|
r228 | } | ||
neko259
|
r684 | |||
rt@lightning
|
r228 | return false; | ||
neko259
|
r440 | } | ||
/** | ||||
* Add text to the beginning of each selected line. Partially selected lines | ||||
* are included | ||||
neko259
|
r685 | * | ||
* @param textToAdd Text to add to the each line | ||||
neko259
|
r440 | */ | ||
function addTextToEachLineOfSelection(textToAdd) { | ||||
neko259
|
r685 | var textareas = $('textarea'); | ||
for (var i = 0; i < textareas.length; i++) { | ||||
var textarea = textareas[i]; | ||||
if (document.selection) { | ||||
textarea.focus(); | ||||
var sel = document.selection.createRange(); | ||||
sel.text = start + sel.text + end; | ||||
} else if (textarea.selectionStart || textarea.selectionStart == '0') { | ||||
textarea.focus(); | ||||
neko259
|
r440 | |||
neko259
|
r685 | var startPos = textarea.selectionStart; | ||
var endPos = textarea.selectionEnd; | ||||
var oldValue = textarea.value; | ||||
var textBeforeSelection = oldValue.substring(0, startPos); | ||||
var selectionText = oldValue.substring(startPos, endPos) | ||||
.replace(/\n/g, '\n' + textToAdd); | ||||
textarea.value = textBeforeSelection + textToAdd + | ||||
selectionText + | ||||
oldValue.substring(endPos, oldValue.length); | ||||
} else { | ||||
textarea.value += textToAdd; | ||||
neko259
|
r440 | } | ||
neko259
|
r685 | } | ||
neko259
|
r440 | |||
neko259
|
r685 | return false; | ||
neko259
|
r684 | } | ||