mirror of
https://github.com/UnickSoft/graphonline.git
synced 2025-07-01 15:26:12 +00:00
63 lines
2.2 KiB
JavaScript
63 lines
2.2 KiB
JavaScript
/* Copyright 2004 Patrick R. Michaud (pmichaud@pobox.com)
|
|
This file is part of PmWiki; you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published
|
|
by the Free Software Foundation; either version 2 of the License, or
|
|
(at your option) any later version. See pmwiki.php for full details.
|
|
|
|
This file provides Javascript functions to support WYSIWYG-style
|
|
editing. The concepts are borrowed from the editor used in Wikipedia,
|
|
but the code has been rewritten from scratch to integrate better with
|
|
PHP and PmWiki's codebase.
|
|
*/
|
|
|
|
function insButton(mopen, mclose, mtext, mlabel, mkey) {
|
|
if (mkey > '') { mkey = 'accesskey="' + mkey + '" ' }
|
|
document.write("<a tabindex='-1' " + mkey + "onclick=\"insMarkup('"
|
|
+ mopen + "','"
|
|
+ mclose + "','"
|
|
+ mtext + "');\">"
|
|
+ mlabel + "</a>");
|
|
}
|
|
|
|
function insMarkup(mopen, mclose, mtext) {
|
|
var tarea = document.getElementById('text');
|
|
if (tarea.setSelectionRange > '') {
|
|
var p0 = tarea.selectionStart;
|
|
var p1 = tarea.selectionEnd;
|
|
var top = tarea.scrollTop;
|
|
var str = mtext;
|
|
var cur0 = p0 + mopen.length;
|
|
var cur1 = p0 + mopen.length + str.length;
|
|
while (p1 > p0 && tarea.value.substring(p1-1, p1) == ' ') p1--;
|
|
if (p1 > p0) {
|
|
str = tarea.value.substring(p0, p1);
|
|
cur0 = p0 + mopen.length + str.length + mclose.length;
|
|
cur1 = cur0;
|
|
}
|
|
tarea.value = tarea.value.substring(0,p0)
|
|
+ mopen + str + mclose
|
|
+ tarea.value.substring(p1);
|
|
tarea.focus();
|
|
tarea.selectionStart = cur0;
|
|
tarea.selectionEnd = cur1;
|
|
tarea.scrollTop = top;
|
|
} else if (document.selection) {
|
|
var str = document.selection.createRange().text;
|
|
tarea.focus();
|
|
range = document.selection.createRange()
|
|
if (str == '') {
|
|
range.text = mopen + mtext + mclose;
|
|
range.moveStart('character', -mclose.length - mtext.length );
|
|
range.moveEnd('character', -mclose.length );
|
|
} else {
|
|
if (str.charAt(str.length - 1) == " ") {
|
|
mclose = mclose + " ";
|
|
str = str.substr(0, str.length - 1);
|
|
}
|
|
range.text = mopen + str + mclose;
|
|
}
|
|
range.select();
|
|
} else { tarea.value += mopen + mtext + mclose; }
|
|
return;
|
|
}
|