Added htmlArea3

This commit is contained in:
Len Kranendonk 2004-08-18 18:01:54 +00:00
parent 9cd56cd85a
commit 4489a747fc
91 changed files with 8523 additions and 0 deletions

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,72 @@
// htmlArea v3.0 - Copyright (c) 2003-2004 interactivetools.com, inc.
// This copyright notice MUST stay intact for use (see license.txt).
//
// Portions (c) dynarch.com, 2003-2004
//
// A free WYSIWYG editor replacement for <textarea> fields.
// For full source code and docs, visit http://www.interactivetools.com/
//
// Version 3.0 developed by Mihai Bazon.
// http://dynarch.com/mishoo
//
// $Id$
// Though "Dialog" looks like an object, it isn't really an object. Instead
// it's just namespace for protecting global symbols.
function Dialog(url, action, init) {
if (typeof init == "undefined") {
init = window; // pass this window object by default
}
Dialog._geckoOpenModal(url, action, init);
};
Dialog._parentEvent = function(ev) {
if (Dialog._modal && !Dialog._modal.closed) {
Dialog._modal.focus();
HTMLArea._stopEvent(ev);
}
};
// should be a function, the return handler of the currently opened dialog.
Dialog._return = null;
// constant, the currently opened dialog
Dialog._modal = null;
// the dialog will read it's args from this variable
Dialog._arguments = null;
Dialog._geckoOpenModal = function(url, action, init) {
var dlg = window.open(url, "hadialog",
"toolbar=no,menubar=no,personalbar=no,width=10,height=10," +
"scrollbars=no,resizable=yes");
Dialog._modal = dlg;
Dialog._arguments = init;
// capture some window's events
function capwin(w) {
HTMLArea._addEvent(w, "click", Dialog._parentEvent);
HTMLArea._addEvent(w, "mousedown", Dialog._parentEvent);
HTMLArea._addEvent(w, "focus", Dialog._parentEvent);
};
// release the captured events
function relwin(w) {
HTMLArea._removeEvent(w, "click", Dialog._parentEvent);
HTMLArea._removeEvent(w, "mousedown", Dialog._parentEvent);
HTMLArea._removeEvent(w, "focus", Dialog._parentEvent);
};
capwin(window);
// capture other frames
for (var i = 0; i < window.frames.length; capwin(window.frames[i++]));
// make up a function to be called when the Dialog ends.
Dialog._return = function (val) {
if (val && action) {
action(val);
}
relwin(window);
// capture other frames
for (var i = 0; i < window.frames.length; relwin(window.frames[i++]));
Dialog._modal = null;
};
};

View file

@ -0,0 +1,180 @@
.htmlarea { background: #fff; }
.htmlarea .toolbar {
cursor: default;
background: ButtonFace;
padding: 1px 1px 2px 1px;
border: 1px solid;
border-color: ButtonHighlight ButtonShadow ButtonShadow ButtonHighlight;
}
.htmlarea .toolbar table { font-family: tahoma,verdana,sans-serif; font-size: 11px; }
.htmlarea .toolbar img { border: none; }
.htmlarea .toolbar .label { padding: 0px 3px; }
.htmlarea .toolbar .button {
background: ButtonFace;
color: ButtonText;
border: 1px solid ButtonFace;
padding: 1px;
margin: 0px;
width: 18px;
height: 18px;
}
.htmlarea .toolbar .buttonHover {
border: 1px solid;
border-color: ButtonHighlight ButtonShadow ButtonShadow ButtonHighlight;
}
.htmlarea .toolbar .buttonActive, .htmlarea .toolbar .buttonPressed {
padding: 2px 0px 0px 2px;
border: 1px solid;
border-color: ButtonShadow ButtonHighlight ButtonHighlight ButtonShadow;
}
.htmlarea .toolbar .buttonPressed {
background: ButtonHighlight;
}
.htmlarea .toolbar .indicator {
padding: 0px 3px;
overflow: hidden;
width: 20px;
text-align: center;
cursor: default;
border: 1px solid ButtonShadow;
}
.htmlarea .toolbar .buttonDisabled img {
filter: alpha(opacity = 25);
-moz-opacity: 0.25;
}
.htmlarea .toolbar .separator {
position: relative;
margin: 3px;
border-left: 1px solid ButtonShadow;
border-right: 1px solid ButtonHighlight;
width: 0px;
height: 16px;
padding: 0px;
}
.htmlarea .toolbar .space { width: 5px; }
.htmlarea .toolbar select { font: 11px Tahoma,Verdana,sans-serif; }
.htmlarea .toolbar select,
.htmlarea .toolbar select:hover,
.htmlarea .toolbar select:active { background: FieldFace; color: ButtonText; }
.htmlarea .statusBar {
border: 1px solid;
border-color: ButtonShadow ButtonHighlight ButtonHighlight ButtonShadow;
padding: 2px 4px;
background-color: ButtonFace;
color: ButtonText;
font: 11px Tahoma,Verdana,sans-serif;
}
.htmlarea .statusBar .statusBarTree a {
padding: 2px 5px;
color: #00f;
}
.htmlarea .statusBar .statusBarTree a:visited { color: #00f; }
.htmlarea .statusBar .statusBarTree a:hover {
background-color: Highlight;
color: HighlightText;
padding: 1px 4px;
border: 1px solid HighlightText;
}
/* Hidden DIV popup dialogs (PopupDiv) */
.dialog {
color: ButtonText;
background: ButtonFace;
}
.dialog .content { padding: 2px; }
.dialog, .dialog button, .dialog input, .dialog select, .dialog textarea, .dialog table {
font: 11px Tahoma,Verdana,sans-serif;
}
.dialog table { border-collapse: collapse; }
.dialog .title {
background: #008;
color: #ff8;
border-bottom: 1px solid #000;
padding: 1px 0px 2px 5px;
font-size: 12px;
font-weight: bold;
cursor: default;
}
.dialog .title .button {
float: right;
border: 1px solid #66a;
padding: 0px 1px 0px 2px;
margin-right: 1px;
color: #fff;
text-align: center;
}
.dialog .title .button-hilite { border-color: #88f; background: #44c; }
.dialog button {
width: 5em;
padding: 0px;
}
.dialog .buttonColor {
padding: 1px;
cursor: default;
border: 1px solid;
border-color: ButtonHighlight ButtonShadow ButtonShadow ButtonHighlight;
}
.dialog .buttonColor-hilite {
border-color: #000;
}
.dialog .buttonColor .chooser, .dialog .buttonColor .nocolor {
height: 0.6em;
border: 1px solid;
padding: 0px 1em;
border-color: ButtonShadow ButtonHighlight ButtonHighlight ButtonShadow;
}
.dialog .buttonColor .nocolor { padding: 0px; }
.dialog .buttonColor .nocolor-hilite { background-color: #fff; color: #f00; }
.dialog .label { text-align: right; width: 6em; }
.dialog .value input { width: 100%; }
.dialog .buttons { text-align: right; padding: 2px 4px 0px 4px; }
.dialog legend { font-weight: bold; }
.dialog fieldset table { margin: 2px 0px; }
.popupdiv {
border: 2px solid;
border-color: ButtonHighlight ButtonShadow ButtonShadow ButtonHighlight;
}
.popupwin {
padding: 0px;
margin: 0px;
}
.popupwin .title {
background: #fff;
color: #000;
font-weight: bold;
font-size: 120%;
padding: 3px 10px;
margin-bottom: 10px;
border-bottom: 1px solid black;
letter-spacing: 2px;
}
form { margin: 0px; border: none; }

File diff suppressed because it is too large Load diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 143 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 181 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 171 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 77 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 77 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 75 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 148 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 89 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 97 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 139 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 143 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 143 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 97 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 97 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 121 B

View file

@ -0,0 +1,199 @@
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.2//EN">
<html>
<head>
<title>HTMLArea -- the free, customizable online editor</title>
<style type="text/css">
html, body { font-family: georgia,"times new roman",serif; background-color: #fff; color: #000; }
.label { text-align: right; padding-right: 0.3em; }
.bline { border-bottom: 1px solid #aaa; }
</style>
</head>
<body>
<div style="float: right; border: 1px solid #aaa; background-color: #eee; padding: 3px; margin-left: 10px; margin-bottom: 10px;">
<table cellspacing="0" cellpadding="0" border="0">
<tr>
<td class="label">Version:</td><td>3.0</td>
</tr>
<tr>
<td class="label">Release:</td><td>rc1 (<a href="release-notes.html">release notes</a>)</td>
</tr>
<tr>
<td class="label bline">Compiled at:</td><td class="bline">Mar 1, 2004 [19:37] GMT</td>
</tr>
<tr>
<td class="label">SourceForge page:</td><td><a href="http://sf.net/projects/itools-htmlarea/">http://sf.net/projects/itools-htmlarea/</a></td>
</table>
</div>
<h1>HTMLArea -- the free<br/>customizable online editor</h1>
<p>
HTMLArea is a free, customizable online editor. It works inside your
browser. It uses a non-standard feature implemented in Internet
Explorer 5.5 or better for Windows and Mozilla 1.3 or better (any
platform), therefore it will only work in one of these browsers.
</p>
<p>
HTMLArea is copyright <a
href="http://interactivetools.com">InteractiveTools.com</a> and <a
href="http://dynarch.com">Dynarch.com</a> and it is
released under a BSD-style license. HTMLArea is created and developed
upto version 2.03 by InteractiveTools.com. Version 3.0 developed by
<a href="http://dynarch.com/mishoo/">Mihai Bazon</a> for
InteractiveTools. It contains code sponsored by third-party companies as well.
Please see our About Box for details about who sponsored what plugins.
</p>
<h2>Online demos</h2>
<ul>
<li><a href="examples/core.html">HTMLArea standard</a> -- contains the core
editor.</li>
<li><a href="examples/table-operations.html">HTMLArea + tables</a> --
loads the <tt>TableOperations</tt> plugin which provides some extra
editing features for tables.</li>
<li><a href="examples/spell-checker.html">HTMLArea + spell checher</a>
-- loads the <tt>SpellChecker</tt> plugin which provides what its
name says: a spell checker. This one requires additional support on
the server-side.</li>
<li><a href="examples/full-page.html">HTMLArea Full HTML Editor</a> --
loads the <tt>FullPage</tt> plugin which allows you to edit a full
HTML page, including &lt;title&gt;, &lt;!DOCTYPE...&gt; and some
other options.</li>
<li><a href="examples/context-menu.html">HTMLArea with Context
Menu</a> -- this plugin provides a nice and useful context menu.</li>
<li><a href="examples/fully-loaded.html">HTMLArea fully loaded</a> --
all of the above. ;-)</li>
</ul>
<h2>Installation</h2>
<p>
Installation is (or should be) easy. You need to unpack the ZIP file
in a directory accessible through your webserver. Supposing you
unpack in your <tt>DocumentRoot</tt> and your <tt>DocumentRoot</tt> is
<tt>/var/www/html</tt> as in a standard RedHat installation, you need
to acomplish the following steps: (the example is for a Unix-like
operating system)
</p>
<pre style="margin-left: 2em"
>
cd /var/www/html
unzip /path/to/archive/HTMLArea-3.0-rc1.zip
mv HTMLArea-3.0-rc1 htmlarea
find htmlarea/ -type f -exec chmod 644 {} \;
find htmlarea/ -type d -exec chmod 755 {} \;
find htmlarea/ -name "*.cgi" -exec chmod 755 {} \;</pre>
<p>
<strong>Notes.</strong> You may chose to symlink "htmlarea" to "HTMLArea-3.0-rc1", in which case your server needs to be configured to
"<tt>FollowSymLinks</tt>". You need to make sure that *.cgi files are
interpreted as CGI scripts. If you want to use the SpellChecker
plugin you need to have a recent version of Perl installed (I
recommend 5.8.0) on the server, and the module Text::Aspell, available
from CPAN. More info in "<a
href="plugins/SpellChecker/readme-tech.html">plugins/SpellChecker/readme-tech.html</a>".
</p>
<p>About how to setup your pages to use the editor, please read the
[outdated yet generally valid] <a
href="reference.html">documentation</a>.</p>
<h2>Status and links</h2>
<p>HTMLArea has reached version 3.0. As of this version, it
supports:</p>
<ul>
<li>Customizable toolbar</li>
<li>Easy internationalization</li>
<li>Plugin-based infrastructure</li>
<li>Delivers W3-compliant HTML (with few exceptions)</li>
<li>Has a subset of Microsoft Word's keyboard shortcuts</li>
<li>Full-screen editor</li>
<li>Advanced table operations (by external plugin
"TableOperations")</li>
<li>Spell checker (by external plugin "SpellChecker")</li>
<li>probably more... ;-)</li>
</ul>
<p>We have a <a
href="http://sourceforge.net/projects/itools-htmlarea/">project page</a>
at <a href="http://sourceforge.net">SourceForge.net</a>. There you can
also find out <a href="http://sourceforge.net/cvs/?group_id=69750">how
to retrieve the code from CVS</a>, or you can <a
href="http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/itools-htmlarea">browse
the CVS online</a>. We also have a <a
href="http://sourceforge.net/tracker/?atid=525656&group_id=69750&func=browse">bug
system</a>, a <a
href="http://sourceforge.net/tracker/?atid=525658&group_id=69750&func=browse">patch
tracking system</a> and a <a
href="http://sourceforge.net/tracker/?atid=525659&group_id=69750&func=browse">feature
request page</a>.</p>
<p>We invite you to say everything you want about HTMLArea <a
href="http://www.interactivetools.com/forum/gforum.cgi?forum=14;">on the
forums</a> at InteractiveTools.com. There you should also find the
latest news.</p>
<p>Sometimes I post news about the latest developments on <a
href="http://dynarch.com/mishoo/">my personal homepage</a>.</p>
<h2>"It doesn't work, what's wrong?"</h2>
<p>If it doesn't work, you have several options:</p>
<ul>
<li>Post a message to the forum. Describe your problem in as much
detail as possible. Include errors you might find in the JavaScript
console (if you are a Mozilla user), or errors displayed by IE (though
they're most of the times useless).</li>
<li>If you're positive that you discovered a bug in HTMLArea then feel
free to fill a bug report in our bug system. If you have the time you
should check to see if a similar bug was reported or not; it might be
fixed already in the CVS ;-) If you're positive that a similar bug was
not yet reported, do fill a bug report and please include as much
detail as possible, such as your browser, OS, errors from JavaScript
console, etc.</li>
<li>If you want a new feature to be implemented, post it on the
features request and someone will hopefully take care of it.</li>
</ul>
<p>You can <a href="mailto:mishoo@infoiasi.ro">contact me directly</a>
<em>only</em> if you want to pay me for implementing custom features to
HTMLArea. If you want to sponsor these features (that is, allow them to
get back into the public HTMLArea distribution) I'll be cheaper. ;-)</p>
<hr />
<address><a href="http://dynarch.com/mishoo/">Mihai Bazon</a></address>
<!-- Created: Sun Aug 3 14:11:26 EEST 2003 -->
<!-- hhmts start --> Last modified: Wed Jan 28 11:54:47 EET 2004 <!-- hhmts end -->
<!-- doc-lang: English -->
</body>
</html>

View file

@ -0,0 +1,36 @@
// I18N constants -- Chinese Big-5
// by Dave Lo -- dlo@interactivetools.com
HTMLArea.I18N = {
// the following should be the filename without .js extension
// it will be used for automatically load plugin language.
lang: "b5",
tooltips: {
bold: "粗體",
italic: "斜體",
underline: "底線",
strikethrough: "刪除線",
subscript: "下標",
superscript: "上標",
justifyleft: "位置靠左",
justifycenter: "位置居中",
justifyright: "位置靠右",
justifyfull: "位置左右平等",
orderedlist: "順序清單",
unorderedlist: "無序清單",
outdent: "減小行前空白",
indent: "加寬行前空白",
forecolor: "文字顏色",
backcolor: "背景顏色",
horizontalrule: "水平線",
createlink: "插入連結",
insertimage: "插入圖形",
inserttable: "插入表格",
htmlmode: "切換HTML原始碼",
popupeditor: "放大",
about: "關於 HTMLArea",
help: "說明",
textindicator: "字體例子"
}
};

View file

@ -0,0 +1,63 @@
// I18N constants
// LANG: "cz", ENCODING: UTF-8 | ISO-8859-2
// Author: Jiri Löw, <jirilow@jirilow.com>
// FOR TRANSLATORS:
//
// 1. PLEASE PUT YOUR CONTACT INFO IN THE ABOVE LINE
// (at least a valid email address)
//
// 2. PLEASE TRY TO USE UTF-8 FOR ENCODING;
// (if this is not possible, please include a comment
// that states what encoding is necessary.)
HTMLArea.I18N = {
// the following should be the filename without .js extension
// it will be used for automatically load plugin language.
lang: "cz",
tooltips: {
bold: "Tučně",
italic: "Kurzíva",
underline: "Podtržení",
strikethrough: "Přeškrtnutí",
subscript: "Dolní index",
superscript: "Horní index",
justifyleft: "Zarovnat doleva",
justifycenter: "Na střed",
justifyright: "Zarovnat doprava",
justifyfull: "Zarovnat do stran",
orderedlist: "Seznam",
unorderedlist: "Odrážky",
outdent: "Předsadit",
indent: "Odsadit",
forecolor: "Barva písma",
hilitecolor: "Barva pozadí",
horizontalrule: "Vodorovná čára",
createlink: "Vložit odkaz",
insertimage: "Vložit obrázek",
inserttable: "Vložit tabulku",
htmlmode: "Přepnout HTML",
popupeditor: "Nové okno editoru",
about: "O této aplikaci",
showhelp: "Nápověda aplikace",
textindicator: "Zvolený styl",
undo: "Vrátí poslední akci",
redo: "Opakuje poslední akci",
cut: "Vyjmout",
copy: "Kopírovat",
paste: "Vložit"
},
buttons: {
"ok": "OK",
"cancel": "Zrušit"
},
msg: {
"Path": "Cesta",
"TEXT_MODE": "Jste v TEXTOVÉM REŽIMU. Použijte tlačítko [<>] pro přepnutí do WYSIWIG."
}
};

View file

@ -0,0 +1,38 @@
// danish version for htmlArea v3.0 - Alpha Release
// - translated by rene<rene@laerke.net>
// term´s and licenses are equal to htmlarea!
HTMLArea.I18N = {
// the following should be the filename without .js extension
// it will be used for automatically load plugin language.
lang: "da",
tooltips: {
bold: "Fed",
italic: "Kursiv",
underline: "Understregning",
strikethrough: "Overstregning ",
subscript: "Sænket skrift",
superscript: "Hævet skrift",
justifyleft: "Venstrejuster",
justifycenter: "Centrer",
justifyright: "Højrejuster",
justifyfull: "Lige margener",
orderedlist: "Opstilling med tal",
unorderedlist: "Opstilling med punkttegn",
outdent: "Formindsk indrykning",
indent: "Forøg indrykning",
forecolor: "Skriftfarve",
backcolor: "Baggrundsfarve",
horizontalrule: "Horisontal linie",
createlink: "Indsæt hyperlink",
insertimage: "Indsæt billede",
inserttable: "Indsæt tabel",
htmlmode: "HTML visning",
popupeditor: "Vis editor i popup",
about: "Om htmlarea",
help: "Hjælp",
textindicator: "Anvendt stil"
}
};

View file

@ -0,0 +1,54 @@
// german version for htmlArea v3.0 - Alpha Release
// - translated by AtK<atk@chello.at>
// term´s and licenses are equal to htmlarea!
// translation improved by broxx<broxx@broxx.com>
HTMLArea.I18N = {
// the following should be the filename without .js extension
// it will be used for automatically load plugin language.
lang: "de",
tooltips: {
bold: "Fett",
italic: "Kursiv",
underline: "Unterstrichen",
strikethrough: "Durchgestrichen",
subscript: "Hochgestellt",
superscript: "Tiefgestellt",
justifyleft: "Links ausrichten",
justifycenter: "Zentrieren",
justifyright: "Rechts ausrichten",
justifyfull: "Blocksatz",
orderedlist: "Nummerierung",
unorderedlist: "Aufzaehlungszeichen",
outdent: "Einzug verkleinern",
indent: "Einzug vergrössern",
forecolor: "Text Farbe",
hilitecolor: "Hintergrund Farbe",
horizontalrule: "Horizontale Linie",
createlink: "Hyperlink einfuegen",
insertimage: "Bild einfuegen",
inserttable: "Tabelle einfuegen",
htmlmode: "HTML Modus",
popupeditor: "Editor im Popup öffnen",
about: "Ueber HtmlArea",
showhelp: "Hilfe",
textindicator: "derzeitiger Stil",
undo: "Rueckgaengig",
redo: "Wiederholen",
cut: "Ausschneiden",
copy: "Kopieren",
paste: "Einfuegen"
},
buttons: {
"ok": "OK",
"cancel": "Abbrechen"
},
msg: {
"Path": "Pfad",
"TEXT_MODE": "Du befindest dich im HTML Modus. Benuetze die [<>] Schaltflaeche um in den WYSIWIG-Modus zu wechseln."
}
};

View file

@ -0,0 +1,63 @@
// I18N constants
// LANG: "ee", ENCODING: UTF-8 | ISO-8859-1
// Author: Martin Raie, <albertvill@hot.ee>
// FOR TRANSLATORS:
//
// 1. PLEASE PUT YOUR CONTACT INFO IN THE ABOVE LINE
// (at least a valid email address)
//
// 2. PLEASE TRY TO USE UTF-8 FOR ENCODING;
// (if this is not possible, please include a comment
// that states what encoding is necessary.)
HTMLArea.I18N = {
// the following should be the filename without .js extension
// it will be used for automatically load plugin language.
lang: "ee",
tooltips: {
bold: "Paks",
italic: "Kursiiv",
underline: "Allakriipsutatud",
strikethrough: "Läbikriipsutatud",
subscript: "Allindeks",
superscript: "Ülaindeks",
justifyleft: "Joonda vasakule",
justifycenter: "Joonda keskele",
justifyright: "Joonda paremale",
justifyfull: "Rööpjoonda",
insertorderedlist: "Nummerdus",
insertunorderedlist: "Täpploend",
outdent: "Vähenda taanet",
indent: "Suurenda taanet",
forecolor: "Fondi värv",
hilitecolor: "Tausta värv",
inserthorizontalrule: "Horisontaaljoon",
createlink: "Lisa viit",
insertimage: "Lisa pilt",
inserttable: "Lisa tabel",
htmlmode: "HTML/tavaline vaade",
popupeditor: "Suurenda toimeti aken",
about: "Teave toimeti kohta",
showhelp: "Spikker",
textindicator: "Kirjastiil",
undo: "Võta tagasi",
redo: "Tee uuesti",
cut: "Lõika",
copy: "Kopeeri",
paste: "Kleebi"
},
buttons: {
"ok": "OK",
"cancel": "Loobu"
},
msg: {
"Path": "Path",
"TEXT_MODE": "Sa oled tekstireziimis. Kasuta nuppu [<>] lülitamaks tagasi WYSIWIG reziimi."
}
};

View file

@ -0,0 +1,75 @@
// I18N constants
// LANG: "el", ENCODING: UTF-8 | ISO-8859-7
// Author: Dimitris Glezos, dimitris@glezos.com
HTMLArea.I18N = {
// the following should be the filename without .js extension
// it will be used for automatically load plugin language.
lang: "el",
tooltips: {
bold: "Έντονα",
italic: "Πλάγια",
underline: "Υπογραμμισμένα",
strikethrough: "Διαγραμμένα",
subscript: "Δείκτης",
superscript: "Δείκτης",
justifyleft: "Στοίχιση Αριστερά",
justifycenter: "Στοίχιση Κέντρο",
justifyright: "Στοίχιση Δεξιά",
justifyfull: "Πλήρης Στοίχιση",
orderedlist: "Αρίθμηση",
unorderedlist: "Κουκκίδες",
outdent: "Μείωση Εσοχής",
indent: "Αύξηση Εσοχής",
forecolor: "Χρώμα Γραμματοσειράς",
hilitecolor: "Χρώμα Φόντου",
horizontalrule: "Οριζόντια Γραμμή",
createlink: "Εισαγωγή Συνδέσμου",
insertimage: "Εισαγωγή/Τροποποίηση Εικόνας",
inserttable: "Εισαγωγή Πίνακα",
htmlmode: "Εναλλαγή σε/από HTML",
popupeditor: "Μεγένθυνση επεξεργαστή",
about: "Πληροφορίες",
showhelp: "Βοήθεια",
textindicator: "Παρών στυλ",
undo: "Αναίρεση τελευταίας ενέργειας",
redo: "Επαναφορά από αναίρεση",
cut: "Αποκοπή",
copy: "Αντιγραφή",
paste: "Επικόλληση",
lefttoright: "Κατεύθυνση αριστερά προς δεξιά",
righttoleft: "Κατεύθυνση από δεξιά προς τα αριστερά"
},
buttons: {
"ok": "OK",
"cancel": "Ακύρωση"
},
msg: {
"Path": "Διαδρομή",
"TEXT_MODE": "Είστε σε TEXT MODE. Χρησιμοποιήστε το κουμπί [<>] για να επανέρθετε στο WYSIWIG.",
"IE-sucks-full-screen": "Η κατάσταση πλήρης οθόνης έχει προβλήματα με τον Internet Explorer, " +
"λόγω σφαλμάτων στον ίδιο τον browser. Αν το σύστημα σας είναι Windows 9x " +
"μπορεί και να χρειαστείτε reboot. Αν είστε σίγουροι, πατήστε ΟΚ."
},
dialogs: {
"Cancel" : "Ακύρωση",
"Insert/Modify Link" : "Εισαγωγή/Τροποποίηση σύνδεσμου",
"New window (_blank)" : "Νέο παράθυρο (_blank)",
"None (use implicit)" : "Κανένα (χρήση απόλυτου)",
"OK" : "Εντάξει",
"Other" : "Αλλο",
"Same frame (_self)" : "Ίδιο frame (_self)",
"Target:" : "Target:",
"Title (tooltip):" : "Τίτλος (tooltip):",
"Top frame (_top)" : "Πάνω frame (_top)",
"URL:" : "URL:",
"You must enter the URL where this link points to" : "Πρέπει να εισάγετε το URL που οδηγεί αυτός ο σύνδεσμος"
}
};

View file

@ -0,0 +1,88 @@
// I18N constants
// LANG: "en", ENCODING: UTF-8 | ISO-8859-1
// Author: Mihai Bazon, http://dynarch.com/mishoo
// FOR TRANSLATORS:
//
// 1. PLEASE PUT YOUR CONTACT INFO IN THE ABOVE LINE
// (at least a valid email address)
//
// 2. PLEASE TRY TO USE UTF-8 FOR ENCODING;
// (if this is not possible, please include a comment
// that states what encoding is necessary.)
HTMLArea.I18N = {
// the following should be the filename without .js extension
// it will be used for automatically load plugin language.
lang: "en",
tooltips: {
bold: "Bold",
italic: "Italic",
underline: "Underline",
strikethrough: "Strikethrough",
subscript: "Subscript",
superscript: "Superscript",
justifyleft: "Justify Left",
justifycenter: "Justify Center",
justifyright: "Justify Right",
justifyfull: "Justify Full",
orderedlist: "Ordered List",
unorderedlist: "Bulleted List",
outdent: "Decrease Indent",
indent: "Increase Indent",
forecolor: "Font Color",
hilitecolor: "Background Color",
horizontalrule: "Horizontal Rule",
createlink: "Insert Web Link",
insertimage: "Insert/Modify Image",
inserttable: "Insert Table",
htmlmode: "Toggle HTML Source",
popupeditor: "Enlarge Editor",
about: "About this editor",
showhelp: "Help using editor",
textindicator: "Current style",
undo: "Undoes your last action",
redo: "Redoes your last action",
cut: "Cut selection",
copy: "Copy selection",
paste: "Paste from clipboard",
lefttoright: "Direction left to right",
righttoleft: "Direction right to left"
},
buttons: {
"ok": "OK",
"cancel": "Cancel"
},
msg: {
"Path": "Path",
"TEXT_MODE": "You are in TEXT MODE. Use the [<>] button to switch back to WYSIWYG.",
"IE-sucks-full-screen" :
// translate here
"The full screen mode is known to cause problems with Internet Explorer, " +
"due to browser bugs that we weren't able to workaround. You might experience garbage " +
"display, lack of editor functions and/or random browser crashes. If your system is Windows 9x " +
"it's very likely that you'll get a 'General Protection Fault' and need to reboot.\n\n" +
"You have been warned. Please press OK if you still want to try the full screen editor."
},
dialogs: {
"Cancel" : "Cancel",
"Insert/Modify Link" : "Insert/Modify Link",
"New window (_blank)" : "New window (_blank)",
"None (use implicit)" : "None (use implicit)",
"OK" : "OK",
"Other" : "Other",
"Same frame (_self)" : "Same frame (_self)",
"Target:" : "Target:",
"Title (tooltip):" : "Title (tooltip):",
"Top frame (_top)" : "Top frame (_top)",
"URL:" : "URL:",
"You must enter the URL where this link points to" : "You must enter the URL where this link points to"
}
};

View file

@ -0,0 +1,51 @@
// I18N constants
HTMLArea.I18N = {
// the following should be the filename without .js extension
// it will be used for automatically load plugin language.
lang: "es",
tooltips: {
bold: "Negrita",
italic: "Cursiva",
underline: "Subrayado",
strikethrough: "Tachado",
subscript: "Subíndice",
superscript: "Superíndice",
justifyleft: "Alinear a la Izquierda",
justifycenter: "Centrar",
justifyright: "Alinear a la Derecha",
justifyfull: "Justificar",
insertorderedlist: "Lista Ordenada",
insertunorderedlist: "Lista No Ordenada",
outdent: "Aumentar Sangría",
indent: "Disminuir Sangría",
forecolor: "Color del Texto",
hilitecolor: "Color del Fondo",
inserthorizontalrule: "Línea Horizontal",
createlink: "Insertar Enlace",
insertimage: "Insertar Imagen",
inserttable: "Insertar Tabla",
htmlmode: "Ver Documento en HTML",
popupeditor: "Ampliar Editor",
about: "Acerca del Editor",
showhelp: "Ayuda",
textindicator: "Estilo Actual",
undo: "Deshacer",
redo: "Rehacer",
cut: "Cortar selección",
copy: "Copiar selección",
paste: "Pegar desde el portapapeles"
},
buttons: {
"ok": "Aceptar",
"cancel": "Cancelar"
},
msg: {
"Path": "Ruta",
"TEXT_MODE": "Esta en modo TEXTO. Use el boton [<>] para cambiar a WYSIWIG",
}
};

View file

@ -0,0 +1,46 @@
// I18N constants
HTMLArea.I18N = {
// the following should be the filename without .js extension
// it will be used for automatically load plugin language.
lang: "en",
tooltips: {
bold: "Lihavoitu",
italic: "Kursivoitu",
underline: "Alleviivattu",
strikethrough: "Yliviivattu",
subscript: "Alaindeksi",
superscript: "Yläindeksi",
justifyleft: "Tasaa vasemmat reunat",
justifycenter: "Keskitä",
justifyright: "Tasaa oikeat reunat",
justifyfull: "Tasaa molemmat reunat",
insertorderedlist: "Numerointi",
insertunorderedlist: "Luettelomerkit",
outdent: "Lisää sisennystä",
indent: "Pienennä sisennystä",
forecolor: "Fontin väri",
hilitecolor: "Taustaväri",
inserthorizontalrule: "Vaakaviiva",
createlink: "Lisää Linkki",
insertimage: "Lisää Kuva",
inserttable: "Lisää Taulu",
htmlmode: "HTML Lähdekoodi vs WYSIWYG",
popupeditor: "Suurenna Editori",
about: "Tietoja Editorista",
showhelp: "Näytä Ohje",
textindicator: "Nykyinen tyyli",
undo: "Peruuta viimeinen toiminto",
redo: "Palauta viimeinen toiminto",
cut: "Leikkaa maalattu",
copy: "Kopioi maalattu",
paste: "Liitä leikepyödältä"
},
buttons: {
"ok": "Hyväksy",
"cancel": "Peruuta"
}
};

View file

@ -0,0 +1,61 @@
// I18N constants
// Author: Jonathan Ernst, <Jonathan.Ernst@NetOxygen.ch>
// FOR TRANSLATORS:
//
// 1. PLEASE PUT YOUR CONTACT INFO IN THE ABOVE LINE
// (at least a valid email address)
//
// 2. PLEASE TRY TO USE UTF-8 FOR ENCODING;
// (if this is not possible, please include a comment
// that states what encoding is necessary.)
HTMLArea.I18N = {
// the following should be the filename without .js extension
// it will be used for automatically load plugin language.
lang: "fr",
tooltips: {
bold: "Gras",
italic: "Italique",
underline: "Souligné",
strikethrough: "Barré",
subscript: "Subscript",
superscript: "Superscript",
justifyleft: "Aligné à gauche",
justifycenter: "Centré",
justifyright: "Aligné à droite",
justifyfull: "Justifié",
orderedlist: "Numérotation",
unorderedlist: "Puces",
outdent: "Augmenter le retrait",
indent: "Diminuer le retrait",
forecolor: "Couleur du texte",
hilitecolor: "Couleur du fond",
horizontalrule: "Ligne horizontale",
createlink: "Insérer un lien",
insertimage: "Insérer une image",
inserttable: "Insérer un tableau",
htmlmode: "Passer au code source HTML",
popupeditor: "Agrandir l'éditeur",
about: "A propos de cet éditeur",
showhelp: "Aide sur l'éditeur",
textindicator: "Style courant",
undo: "Annule la dernière action",
redo: "Refait la dernière action",
cut: "Coupe la sélection",
copy: "Copie la sélection",
paste: "Colle depuis le presse papiers"
},
buttons: {
"ok": "OK",
"cancel": "Annuler"
},
msg: {
"Path": "Chemin",
"TEXT_MODE": "Vous êtes en mode texte. Utilisez le bouton [<>] pour revenir au mode WYSIWIG."
}
};

View file

@ -0,0 +1,36 @@
// I18N constants -- Chinese GB
// by Dave Lo -- dlo@interactivetools.com
HTMLArea.I18N = {
// the following should be the filename without .js extension
// it will be used for automatically load plugin language.
lang: "gb",
tooltips: {
bold: "粗体",
italic: "斜体",
underline: "底线",
strikethrough: "删除线",
subscript: "下标",
superscript: "上标",
justifyleft: "位置靠左",
justifycenter: "位置居中",
justifyright: "位置靠右",
justifyfull: "位置左右平等",
orderedlist: "顺序清单",
unorderedlist: "无序清单",
outdent: "减小行前空白",
indent: "加宽行前空白",
forecolor: "文字颜色",
backcolor: "背景颜色",
horizontalrule: "水平线",
createlink: "插入连结",
insertimage: "插入图形",
inserttable: "插入表格",
htmlmode: "切换HTML原始码",
popupeditor: "放大",
about: "关於 HTMLArea",
help: "说明",
textindicator: "字体例子"
}
};

View file

@ -0,0 +1,63 @@
// I18N constants
// LANG: "he", ENCODING: UTF-8
// Author: Liron Newman, <plastish@ultinet.org>
// FOR TRANSLATORS:
//
// 1. PLEASE PUT YOUR CONTACT INFO IN THE ABOVE LINE
// (at least a valid email address)
//
// 2. PLEASE TRY TO USE UTF-8 FOR ENCODING;
// (if this is not possible, please include a comment
// that states what encoding is necessary.)
HTMLArea.I18N = {
// the following should be the filename without .js extension
// it will be used for automatically load plugin language.
lang: "he",
tooltips: {
bold: "מודגש",
italic: "נטוי",
underline: "קו תחתי",
strikethrough: "קו אמצע",
subscript: "כתב עילי",
superscript: "כתב תחתי",
justifyleft: " ישור לשמאל",
justifycenter: "ישור למרכז",
justifyright: "ישור לימין",
justifyfull: "יישור לשורה מלאה",
orderedlist: "רשימה ממוספרת",
unorderedlist: "רשימה לא ממוספרת",
outdent: "הקטן כניסה",
indent: "הגדל כניסה",
forecolor: "צבע גופן",
hilitecolor: "צבע רקע",
horizontalrule: "קו אנכי",
createlink: "הכנס היפר-קישור",
insertimage: "הכנס תמונה",
inserttable: "הכנס טבלה",
htmlmode: "שנה מצב קוד HTML",
popupeditor: "הגדל את העורך",
about: "אודות עורך זה",
showhelp: "עזרה לשימוש בעורך",
textindicator: "סגנון נוכחי",
undo: "מבטל את פעולתך האחרונה",
redo: "מבצע מחדש את הפעולה האחרונה שביטלת",
cut: "גזור בחירה",
copy: "העתק בחירה",
paste: "הדבק מהלוח"
},
buttons: {
"ok": "OK",
"cancel": "ביטול"
},
msg: {
"Path": "נתיב עיצוב",
"TEXT_MODE": "אתה במצב טקסט נקי (קוד). השתמש בכפתור [<>] כדי לחזור למצב WYSIWYG (תצוגת עיצוב)."
}
};

View file

@ -0,0 +1,63 @@
// I18N constants
// LANG: "hu", ENCODING: UTF-8
// Author: Miklós Somogyi, <somogyine@vnet.hu>
// FOR TRANSLATORS:
//
// 1. PLEASE PUT YOUR CONTACT INFO IN THE ABOVE LINE
// (at least a valid email address)
//
// 2. PLEASE TRY TO USE UTF-8 FOR ENCODING;
// (if this is not possible, please include a comment
// that states what encoding is necessary.)
HTMLArea.I18N = {
// the following should be the filename without .js extension
// it will be used for automatically load plugin language.
lang: "hu",
tooltips: {
bold: "Félkövér",
italic: "Dőlt",
underline: "Aláhúzott",
strikethrough: "Áthúzott",
subscript: "Alsó index",
superscript: "Felső index",
justifyleft: "Balra zárt",
justifycenter: "Középre zárt",
justifyright: "Jobbra zárt",
justifyfull: "Sorkizárt",
orderedlist: "Számozott lista",
unorderedlist: "Számozatlan lista",
outdent: "Behúzás csökkentése",
indent: "Behúzás növelése",
forecolor: "Karakterszín",
hilitecolor: "Háttérszín",
horizontalrule: "Elválasztó vonal",
createlink: "Hiperhivatkozás beszúrása",
insertimage: "Kép beszúrása",
inserttable: "Táblázat beszúrása",
htmlmode: "HTML forrás be/ki",
popupeditor: "Szerkesztő külön ablakban",
about: "Névjegy",
showhelp: "Súgó",
textindicator: "Aktuális stílus",
undo: "Visszavonás",
redo: "Újra végrehajtás",
cut: "Kivágás",
copy: "Másolás",
paste: "Beillesztés"
},
buttons: {
"ok": "Rendben",
"cancel": "Mégsem"
},
msg: {
"Path": "Hierarchia",
"TEXT_MODE": "Forrás mód. Visszaváltás [<>] gomb"
}
};

View file

@ -0,0 +1,54 @@
// I18N constants
// LANG: "it", ENCODING: UTF-8 | ISO-8859-1
// Author: Fabio Rotondo <fabio@rotondo.it>
HTMLArea.I18N = {
// the following should be the filename without .js extension
// it will be used for automatically load plugin language.
lang: "it",
tooltips: {
bold: "Grassetto",
italic: "Italico",
underline: "Sottolineato",
strikethrough: "Barrato",
subscript: "Pedice",
superscript: "Apice",
justifyleft: "Giustifica a Sinistra",
justifycenter: "Giustifica in Centro",
justifyright: "Giustifica a Destra",
justifyfull: "Giustifica Completamente",
orderedlist: "Lista Ordinata",
unorderedlist: "Lista Puntata",
outdent: "Decrementa Indentazione",
indent: "Incrementa Indentazione",
forecolor: "Colore del Carattere",
hilitecolor: "Colore di Sfondo",
horizontalrule: "Linea Orizzontale",
createlink: "Inserisci un Link",
insertimage: "Inserisci un'Immagine",
inserttable: "Inserisci una Tabella",
htmlmode: "Attiva il codice HTML",
popupeditor: "Allarga l'editor",
about: "Info sull'editor",
showhelp: "Aiuto sull'editor",
textindicator: "Stile Attuale",
undo: "Elimina l'ultima modifica",
redo: "Ripristina l'ultima modifica",
cut: "Taglia l'area selezionata",
copy: "Copia l'area selezionata",
paste: "Incolla dalla memoria"
},
buttons: {
"ok": "OK",
"cancel": "Annulla"
},
msg: {
"Path": "Percorso",
"TEXT_MODE": "Sei in MODALITA' TESTO. Usa il bottone [<>] per tornare alla modalità WYSIWYG."
}
};

View file

@ -0,0 +1,37 @@
// I18N constants -- Japanese EUC
// by Manabu Onoue -- tmocsys@tmocsys.com
HTMLArea.I18N = {
// the following should be the filename without .js extension
// it will be used for automatically load plugin language.
lang: "ja-euc",
tooltips: {
bold: "太字",
italic: "斜体",
underline: "下線",
strikethrough: "打ち消し線",
subscript: "下付き添え字",
superscript: "上付き添え字",
justifyleft: "左寄せ",
justifycenter: "中央寄せ",
justifyright: "右寄せ",
justifyfull: "均等割付",
orderedlist: "番号付き箇条書き",
unorderedlist: "記号付き箇条書き",
outdent: "インデント解除",
indent: "インデント設定",
forecolor: "文字色",
backcolor: "背景色",
horizontalrule: "水平線",
createlink: "リンク作成",
insertimage: "画像挿入",
inserttable: "テーブル挿入",
htmlmode: "HTML表示切替",
popupeditor: "エディタ拡大",
about: "バージョン情報",
help: "ヘルプ",
textindicator: "現在のスタイル"
}
};

View file

@ -0,0 +1,37 @@
// I18N constants -- Japanese JIS
// by Manabu Onoue -- tmocsys@tmocsys.com
HTMLArea.I18N = {
// the following should be the filename without .js extension
// it will be used for automatically load plugin language.
lang: "ja-jis",
tooltips: {
bold: "$BB@;z(B",
italic: "$B<PBN(B",
underline: "$B2<@~(B",
strikethrough: "$BBG$A>C$7@~(B",
subscript: "$B2<IU$-E:$(;z(B",
superscript: "$B>eIU$-E:$(;z(B",
justifyleft: "$B:84s$;(B",
justifycenter: "$BCf1{4s$;(B",
justifyright: "$B1&4s$;(B",
justifyfull: "$B6QEy3dIU(B",
orderedlist: "$BHV9fIU$-2U>r=q$-(B",
unorderedlist: "$B5-9fIU$-2U>r=q$-(B",
outdent: "$B%$%s%G%s%H2r=|(B",
indent: "$B%$%s%G%s%H@_Dj(B",
forecolor: "$BJ8;z?'(B",
backcolor: "$BGX7J?'(B",
horizontalrule: "$B?eJ?@~(B",
createlink: "$B%j%s%/:n@.(B",
insertimage: "$B2hA|A^F~(B",
inserttable: "$B%F!<%V%kA^F~(B",
htmlmode: "HTML$BI=<(@ZBX(B",
popupeditor: "$B%(%G%#%?3HBg(B",
about: "$B%P!<%8%g%s>pJs(B",
help: "$B%X%k%W(B",
textindicator: "$B8=:_$N%9%?%$%k(B"
}
};

View file

@ -0,0 +1,37 @@
// I18N constants -- Japanese Shift-JIS
// by Manabu Onoue -- tmocsys@tmocsys.com
HTMLArea.I18N = {
// the following should be the filename without .js extension
// it will be used for automatically load plugin language.
lang: "ja-sjis",
tooltips: {
bold: "太字",
italic: "斜体",
underline: "下線",
strikethrough: "打ち消し線",
subscript: "下付き添え字",
superscript: "上付き添え字",
justifyleft: "左寄せ",
justifycenter: "中央寄せ",
justifyright: "右寄せ",
justifyfull: "均等割付",
orderedlist: "番号付き箇条書き",
unorderedlist: "記号付き箇条書き",
outdent: "インデント解除",
indent: "インデント設定",
forecolor: "文字色",
backcolor: "背景色",
horizontalrule: "水平線",
createlink: "リンク作成",
insertimage: "画像挿入",
inserttable: "テーブル挿入",
htmlmode: "HTML表示切替",
popupeditor: "エディタ拡大",
about: "バージョン情報",
help: "ヘルプ",
textindicator: "現在のスタイル"
}
};

View file

@ -0,0 +1,37 @@
// I18N constants -- Japanese UTF-8
// by Manabu Onoue -- tmocsys@tmocsys.com
HTMLArea.I18N = {
// the following should be the filename without .js extension
// it will be used for automatically load plugin language.
lang: "ja-utf8",
tooltips: {
bold: "太字",
italic: "斜体",
underline: "下線",
strikethrough: "打ち消し線",
subscript: "下付き添え字",
superscript: "上付き添え字",
justifyleft: "左寄せ",
justifycenter: "中央寄せ",
justifyright: "右寄せ",
justifyfull: "均等割付",
orderedlist: "番号付き箇条書き",
unorderedlist: "記号付き箇条書き",
outdent: "インデント解除",
indent: "インデント設定",
forecolor: "文字色",
backcolor: "背景色",
horizontalrule: "水平線",
createlink: "リンク作成",
insertimage: "画像挿入",
inserttable: "テーブル挿入",
htmlmode: "HTML表示切替",
popupeditor: "エディタ拡大",
about: "バージョン情報",
help: "ヘルプ",
textindicator: "現在のスタイル"
}
};

View file

@ -0,0 +1,55 @@
// I18N constants
// LANG: "lt", ENCODING: UTF-8
// Author: Jaroslav Šatkevič, <jaro@akl.lt>
HTMLArea.I18N = {
// the following should be the filename without .js extension
// it will be used for automatically load plugin language.
lang: "lt",
tooltips: {
bold: "Paryškinti",
italic: "Kursyvas",
underline: "Pabraukti",
strikethrough: "Perbraukti",
subscript: "Apatinis indeksas",
superscript: "Viršutinis indeksas",
justifyleft: "Lygiavimas pagal kairę",
justifycenter: "Lygiavimas pagal centrą",
justifyright: "Lygiavimas pagal dešinę",
justifyfull: "Lygiuoti pastraipą",
orderedlist: "Numeruotas sąrašas",
unorderedlist: "Suženklintas sąrašas",
outdent: "Sumažinti paraštę",
indent: "Padidinti paraštę",
forecolor: "Šrifto spalva",
hilitecolor: "Fono spalva",
horizontalrule: "Horizontali linija",
createlink: "Įterpti nuorodą",
insertimage: "Įterpti paveiksliuką",
inserttable: "Įterpti lentelę",
htmlmode: "Perjungti į HTML/WYSIWYG",
popupeditor: "Išplėstas redagavimo ekranas/Enlarge Editor",
about: "Apie redaktorių",
showhelp: "Pagalba naudojant redaktorių",
textindicator: "Dabartinis stilius",
undo: "Atšaukia paskutini jūsų veiksmą",
redo: "Pakartoja paskutinį atšauktą jūsų veiksmą",
cut: "Iškirpti",
copy: "Kopijuoti",
paste: "Įterpti"
},
buttons: {
"ok": "OK",
"cancel": "Atšaukti"
},
msg: {
"Path": "Kelias",
"TEXT_MODE": "Jūs esete teksto režime. Naudokite [<>] mygtuką grįžimui į WYSIWYG."
}
};

View file

@ -0,0 +1,55 @@
// I18N constants
// LANG: "lv", ENCODING: UTF-8 | ISO-8859-1
// Author: Mihai Bazon, http://dynarch.com/mishoo
// Translated by: Janis Klavins, <janis.klavins@devia.lv>
HTMLArea.I18N = {
// the following should be the filename without .js extension
// it will be used for automatically load plugin language.
lang: "lv",
tooltips: {
bold: "Trekniem burtiem",
italic: "Kursîvâ",
underline: "Pasvîtrots",
strikethrough: "Pârsvîtrots",
subscript: "Novietot zem rindas",
superscript: "Novietot virs rindas",
justifyleft: "Izlîdzinât pa kreisi",
justifycenter: "Izlîdzinât centrâ",
justifyright: "Izlîdzinât pa labi",
justifyfull: "Izlîdzinât pa visu lapu",
orderedlist: "Numurçts saraksts",
unorderedlist: "Saraksts",
outdent: "Samazinât atkâpi",
indent: "Palielinât atkâpi",
forecolor: "Burtu krâsa",
hilitecolor: "Fona krâsa",
horizontalrule: "Horizontâla atdalîtâjsvîtra",
createlink: "Ievietot hipersaiti",
insertimage: "Ievietot attçlu",
inserttable: "Ievietot tabulu",
htmlmode: "Skatît HTML kodu",
popupeditor: "Palielinât Rediìçtâju",
about: "Par ðo rediìçtâju",
showhelp: "Rediìçtâja palîgs",
textindicator: "Patreizçjais stils",
undo: "Atcelt pçdçjo darbîbu",
redo: "Atkârtot pçdçjo darbîbu",
cut: "Izgriezt iezîmçto",
copy: "Kopçt iezîmçto",
paste: "Ievietot iezîmçto"
},
buttons: {
"ok": "Labi",
"cancel": "Atcelt"
},
msg: {
"Path": "Ceïð",
"TEXT_MODE": "Jûs patlaban darbojaties TEKSTA REÞÎMÂ. Lai pârietu atpakaï uz GRAFISKO REÞÎMU (WYSIWIG), lietojiet [<>] pogu."
}
};

View file

@ -0,0 +1,36 @@
// I18N constants
HTMLArea.I18N = {
// the following should be the filename without .js extension
// it will be used for automatically load plugin language.
lang: "nb",
tooltips: {
bold: "Fet",
italic: "Kursiv",
underline: "Understreket",
strikethrough: "Gjennomstreket",
subscript: "Senket",
superscript: "Hevet",
justifyleft: "Venstrejuster",
justifycenter: "Midtjuster",
justifyright: "Høyrejuster",
justifyfull: "Blokkjuster",
orderedlist: "Nummerert liste",
unorderedlist: "Punktmerket liste",
outdent: "Øke innrykk",
indent: "Reduser innrykk",
forecolor: "Skriftfarge",
backcolor: "Bakgrunnsfarge",
horizontalrule: "Horisontal linje",
createlink: "Sett inn lenke",
insertimage: "Sett inn bilde",
inserttable: "Sett inn tabell",
htmlmode: "Vis HTML kode",
popupeditor: "Forstørr redigeringsvindu",
about: "Om..",
help: "Hjelp",
textindicator: "Gjeldende stil"
}
};

View file

@ -0,0 +1,90 @@
// I18N constants
// LANG: "nl", ENCODING: UTF-8 | ISO-8859-1
// Author: Michel Weegeerink (info@mmc-shop.nl), http://mmc-shop.nl
// FOR TRANSLATORS:
//
// 1. PLEASE PUT YOUR CONTACT INFO IN THE ABOVE LINE
// (at least a valid email address)
//
// 2. PLEASE TRY TO USE UTF-8 FOR ENCODING;
// (if this is not possible, please include a comment
// that states what encoding is necessary.)
HTMLArea.I18N = {
// the following should be the filename without .js extension
// it will be used for automatically load plugin language.
lang: "nl",
tooltips: {
bold: "Vet",
italic: "Cursief",
underline: "Onderstrepen",
strikethrough: "Doorhalen",
subscript: "Subscript",
superscript: "Superscript",
justifyleft: "Links uitlijnen",
justifycenter: "Centreren",
justifyright: "Rechts uitlijnen",
justifyfull: "Uitvullen",
insertorderedlist: "Nummering",
insertunorderedlist: "Opsommingstekens",
outdent: "Inspringing verkleinen",
indent: "Inspringing vergroten",
forecolor: "Tekstkleur",
hilitecolor: "Achtergrondkleur",
inserthorizontalrule: "Horizontale lijn",
createlink: "Hyperlink invoegen/aanpassen",
insertimage: "Afbeelding invoegen/aanpassen",
inserttable: "Tabel invoegen",
htmlmode: "HTML broncode",
popupeditor: "Vergroot Editor",
about: "Over deze editor",
showhelp: "HTMLArea help",
textindicator: "Huidige stijl",
undo: "Ongedaan maken",
redo: "Herhalen",
cut: "Knippen",
copy: "Kopiëren",
paste: "Plakken",
lefttoright: "Tekstrichting links naar rechts",
righttoleft: "Tekstrichting rechts naar links"
},
buttons: {
"ok": "OK",
"cancel": "Annuleren"
},
msg: {
"Path": "Pad",
"TEXT_MODE": "Je bent in TEKST-mode. Gebruik de [<>] knop om terug te keren naar WYSIWYG-mode.",
"IE-sucks-full-screen" :
// translate here
"Fullscreen-mode veroorzaakt problemen met Internet Explorer door bugs in de webbrowser " +
"die we niet kunnen omzeilen. Hierdoor kunnen de volgende effecten optreden: verknoeide teksten, " +
"een verlies aan editor-functionaliteit en/of willekeurig vastlopen van de webbrowser. " +
"Als u Windows 95 of 98 gebruikt, is het zeer waarschijnlijk dat u een algemene beschermingsfout " +
"('General Protection Fault') krijgt en de computer opnieuw zal moeten opstarten.\n\n" +
"U bent gewaarschuwd. Druk OK als u toch nog de Fullscreen-editor wil gebruiken."
},
dialogs: {
"Cancel" : "Annuleren",
"Insert/Modify Link" : "Hyperlink invoegen/aanpassen",
"New window (_blank)" : "Nieuw venster (_blank)",
"None (use implicit)" : "Geen",
"OK" : "OK",
"Other" : "Ander",
"Same frame (_self)" : "Zelfde frame (_self)",
"Target:" : "Doel:",
"Title (tooltip):" : "Titel (tooltip):",
"Top frame (_top)" : "Bovenste frame (_top)",
"URL:" : "URL:",
"You must enter the URL where this link points to" : "Geef de URL in waar de link naar verwijst"
}
};

View file

@ -0,0 +1,79 @@
// Norwegian version for htmlArea v3.0 - pre1
// - translated by ses<ses@online.no>
// Additional translations by Håvard Wigtil <havardw@extend.no>
// term´s and licenses are equal to htmlarea!
HTMLArea.I18N = {
// the following should be the filename without .js extension
// it will be used for automatically load plugin language.
lang: "no",
tooltips: {
bold: "Fet",
italic: "Kursiv",
underline: "Understreket",
strikethrough: "Gjennomstreket",
subscript: "Nedsenket",
superscript: "Opphøyet",
justifyleft: "Venstrejuster",
justifycenter: "Midtjuster",
justifyright: "Høyrejuster",
justifyfull: "Blokkjuster",
insertorderedlist: "Nummerert liste",
insertunorderedlist: "Punktliste",
outdent: "Reduser innrykk",
indent: "Øke innrykk",
forecolor: "Tekstfarge",
hilitecolor: "Bakgrundsfarge",
inserthorizontalrule: "Vannrett linje",
createlink: "Lag lenke",
insertimage: "Sett inn bilde",
inserttable: "Sett inn tabell",
htmlmode: "Vis kildekode",
popupeditor: "Vis i eget vindu",
about: "Om denne editor",
showhelp: "Hjelp",
textindicator: "Nåværende stil",
undo: "Angrer siste redigering",
redo: "Gjør om siste angring",
cut: "Klipp ut område",
copy: "Kopier område",
paste: "Lim inn",
lefttoright: "Fra venstre mot høyre",
righttoleft: "Fra høyre mot venstre"
},
buttons: {
"ok": "OK",
"cancel": "Avbryt"
},
msg: {
"Path": "Tekstvelger",
"TEXT_MODE": "Du er i tekstmodus Klikk på [<>] for å gå tilbake til WYSIWIG.",
"IE-sucks-full-screen" :
// translate here
"Visning i eget vindu har kjente problemer med Internet Explorer, " +
"på grunn av problemer med denne nettleseren. Mulige problemer er et uryddig " +
"skjermbilde, manglende editorfunksjoner og/eller at nettleseren crasher. Hvis du bruker Windows 95 eller Windows 98 " +
"er det også muligheter for at Windows will crashe.\n\n" +
"Trykk 'OK' hvis du vil bruke visning i eget vindu på tross av denne advarselen."
},
dialogs: {
"Cancel" : "Avbryt",
"Insert/Modify Link" : "Rediger lenke",
"New window (_blank)" : "Eget vindu (_blank)",
"None (use implicit)" : "Ingen (bruk standardinnstilling)",
"OK" : "OK",
"Other" : "Annen",
"Same frame (_self)" : "Samme ramme (_self)",
"Target:" : "Mål:",
"Title (tooltip):" : "Tittel (tooltip):",
"Top frame (_top)" : "Toppramme (_top)",
"URL:" : "Adresse:",
"You must enter the URL where this link points to" : "Du må skrive inn en adresse som denne lenken skal peke til"
}
};

View file

@ -0,0 +1,36 @@
// I18N constants
HTMLArea.I18N = {
// the following should be the filename without .js extension
// it will be used for automatically load plugin language.
lang: "pl",
tooltips: {
bold: "Pogrubienie",
italic: "Pochylenie",
underline: "Podkreślenie",
strikethrough: "Przekreślenie",
subscript: "Indeks dolny",
superscript: "Indeks górny",
justifyleft: "Wyrównaj do lewej",
justifycenter: "Wyśrodkuj",
justifyright: "Wyrównaj do prawej",
justifyfull: "Wyjustuj",
orderedlist: "Numerowanie",
unorderedlist: "Wypunktowanie",
outdent: "Zmniejsz wcięcie",
indent: "Zwiększ wcięcie",
forecolor: "Kolor czcionki",
backcolor: "Kolor tła",
horizontalrule: "Linia pozioma",
createlink: "Wstaw adres sieci Web",
insertimage: "Wstaw obraz",
inserttable: "Wstaw tabelę",
htmlmode: "Edycja WYSIWYG/w źródle strony",
popupeditor: "Pełny ekran",
about: "Informacje o tym edytorze",
help: "Pomoc",
textindicator: "Obecny styl"
}
};

View file

@ -0,0 +1,37 @@
// I18N constants
// Brazilian Portuguese Translation by Alex Piaz <webmaster@globalmap.com>
HTMLArea.I18N = {
// the following should be the filename without .js extension
// it will be used for automatically load plugin language.
lang: "pt_br",
tooltips: {
bold: "Negrito",
italic: "Itálico",
underline: "Sublinhado",
strikethrough: "Tachado",
subscript: "Subescrito",
superscript: "Sobrescrito",
justifyleft: "Alinhar à Esquerda",
justifycenter: "Centralizar",
justifyright: "Alinhar à Direita",
justifyfull: "Justificar",
orderedlist: "Lista Numerada",
unorderedlist: "Lista Marcadores",
outdent: "Diminuir Indentação",
indent: "Aumentar Indentação",
forecolor: "Cor da Fonte",
backcolor: "Cor do Fundo",
horizontalrule: "Linha Horizontal",
createlink: "Inserir Link",
insertimage: "Inserir Imagem",
inserttable: "Inserir Tabela",
htmlmode: "Ver Código-Fonte",
popupeditor: "Expandir Editor",
about: "Sobre",
help: "Ajuda",
textindicator: "Estilo Atual"
}
};

View file

@ -0,0 +1,80 @@
// I18N constants
// LANG: "ro", ENCODING: UTF-8
// Author: Mihai Bazon, http://dynarch.com/mishoo
// FOR TRANSLATORS:
//
// 1. PLEASE PUT YOUR CONTACT INFO IN THE ABOVE LINE
// (at least a valid email address)
//
// 2. PLEASE TRY TO USE UTF-8 FOR ENCODING;
// (if this is not possible, please include a comment
// that states what encoding is necessary.)
HTMLArea.I18N = {
// the following should be the filename without .js extension
// it will be used for automatically load plugin language.
lang: "ro",
tooltips: {
bold: "Îngroşat",
italic: "Italic",
underline: "Subliniat",
strikethrough: "Tăiat",
subscript: "Indice jos",
superscript: "Indice sus",
justifyleft: "Aliniere la stânga",
justifycenter: "Aliniere pe centru",
justifyright: "Aliniere la dreapta",
justifyfull: "Aliniere în ambele părţi",
orderedlist: "Listă ordonată",
unorderedlist: "Listă marcată",
outdent: "Micşorează alineatul",
indent: "Măreşte alineatul",
forecolor: "Culoarea textului",
hilitecolor: "Culoare de fundal",
horizontalrule: "Linie orizontală",
createlink: "Inserează/modifică link",
insertimage: "Inserează/modifică imagine",
inserttable: "Inserează un tabel",
htmlmode: "Sursa HTML / WYSIWYG",
popupeditor: "Maximizează editorul",
about: "Despre editor",
showhelp: "Documentaţie (devel)",
textindicator: "Stilul curent",
undo: "Anulează ultima acţiune",
redo: "Reface ultima acţiune anulată",
cut: "Taie în clipboard",
copy: "Copie în clipboard",
paste: "Aduce din clipboard",
lefttoright: "Direcţia de scriere: stânga - dreapta",
righttoleft: "Direcţia de scriere: dreapta - stânga"
},
buttons: {
"ok": "OK",
"cancel": "Anulează"
},
msg: {
"Path": "Calea",
"TEXT_MODE": "Eşti în modul TEXT. Apasă butonul [<>] pentru a te întoarce în modul WYSIWYG."
},
dialogs: {
"Cancel" : "Renunţă",
"Insert/Modify Link" : "Inserează/modifcă link",
"New window (_blank)" : "Fereastră nouă (_blank)",
"None (use implicit)" : "Nimic (foloseşte ce-i implicit)",
"OK" : "Acceptă",
"Other" : "Alt target",
"Same frame (_self)" : "Aceeaşi fereastră (_self)",
"Target:" : "Ţinta:",
"Title (tooltip):" : "Titlul (tooltip):",
"Top frame (_top)" : "Fereastra principală (_top)",
"URL:" : "URL:",
"You must enter the URL where this link points to" : "Trebuie să introduceţi un URL"
}
};

View file

@ -0,0 +1,63 @@
// I18N constants
// LANG: "ru", ENCODING: UTF-8 | ISO-8859-1
// Author: Yulya Shtyryakova, <yulya@vdcom.ru>
// FOR TRANSLATORS:
//
// 1. PLEASE PUT YOUR CONTACT INFO IN THE ABOVE LINE
// (at least a valid email address)
//
// 2. PLEASE TRY TO USE UTF-8 FOR ENCODING;
// (if this is not possible, please include a comment
// that states what encoding is necessary.)
HTMLArea.I18N = {
// the following should be the filename without .js extension
// it will be used for automatically load plugin language.
lang: "ru",
tooltips: {
bold: "Полужирный",
italic: "Наклонный",
underline: "Подчеркнутый",
strikethrough: "Перечеркнутый",
subscript: "Нижний индекс",
superscript: "Верхний индекс",
justifyleft: "По левому краю",
justifycenter: "По центру",
justifyright: "По правому краю",
justifyfull: "По ширине",
insertorderedlist: "Нумерованный лист",
insertunorderedlist: "Маркированный лист",
outdent: "Уменьшить отступ",
indent: "Увеличить отступ",
forecolor: "Цвет шрифта",
hilitecolor: "Цвет фона",
horizontalrule: "Горизонтальный разделитель",
createlink: "Вставить гиперссылку",
insertimage: "Вставить изображение",
inserttable: "Вставить таблицу",
htmlmode: "Показать Html-код",
popupeditor: "Увеличить редактор",
about: "О редакторе",
showhelp: "Помощь",
textindicator: "Текущий стиль",
undo: "Отменить",
redo: "Повторить",
cut: "Вырезать",
copy: "Копировать",
paste: "Вставить"
},
buttons: {
"ok": "OK",
"cancel": "Отмена"
},
msg: {
"Path": "Путь",
"TEXT_MODE": "Вы в режиме отображения Html-кода. нажмите кнопку [<>], чтобы переключиться в визуальный режим."
}
};

View file

@ -0,0 +1,38 @@
// Swedish version for htmlArea v3.0 - Alpha Release
// - translated by pat<pat@engvall.nu>
// term´s and licenses are equal to htmlarea!
HTMLArea.I18N = {
// the following should be the filename without .js extension
// it will be used for automatically load plugin language.
lang: "se",
tooltips: {
bold: "Fet",
italic: "Kursiv",
underline: "Understruken",
strikethrough: "Genomstruken",
subscript: "Nedsänkt",
superscript: "Upphöjd",
justifyleft: "Vänsterjustera",
justifycenter: "Centrera",
justifyright: "Högerjustera",
justifyfull: "Marginaljustera",
orderedlist: "Numrerad lista",
unorderedlist: "Punktlista",
outdent: "Minska indrag",
indent: "Öka indrag",
forecolor: "Textfärg",
backcolor: "Bakgrundsfärg",
horizontalrule: "Vågrät linje",
createlink: "Infoga länk",
insertimage: "Infoga bild",
inserttable: "Infoga tabell",
htmlmode: "Visa källkod",
popupeditor: "Visa i eget fönster",
about: "Om denna editor",
help: "Hjälp",
textindicator: "Nuvarande stil"
}
};

View file

@ -0,0 +1,63 @@
// I18N constants
// LANG: "si", ENCODING: ISO-8859-2
// Author: Tomaz Kregar, x_tomo_x@email.si
// FOR TRANSLATORS:
//
// 1. PLEASE PUT YOUR CONTACT INFO IN THE ABOVE LINE
// (at least a valid email address)
//
// 2. PLEASE TRY TO USE UTF-8 FOR ENCODING;
// (if this is not possible, please include a comment
// that states what encoding is necessary.)
HTMLArea.I18N = {
// the following should be the filename without .js extension
// it will be used for automatically load plugin language.
lang: "si",
tooltips: {
bold: "Krepko",
italic: "Le¾eèe",
underline: "Podèrtano",
strikethrough: "Preèrtano",
subscript: "Podpisano",
superscript: "Nadpisano",
justifyleft: "Poravnaj levo",
justifycenter: "Na sredino",
justifyright: "Poravnaj desno",
justifyfull: "Porazdeli vsebino",
orderedlist: "O¹tevilèevanje",
unorderedlist: "Oznaèevanje",
outdent: "Zmanj¹aj zamik",
indent: "Poveèaj zamik",
forecolor: "Barva pisave",
hilitecolor: "Barva ozadja",
horizontalrule: "Vodoravna èrta",
createlink: "Vstavi hiperpovezavo",
insertimage: "Vstavi sliko",
inserttable: "Vstavi tabelo",
htmlmode: "Preklopi na HTML kodo",
popupeditor: "Poveèaj urejevalnik",
about: "Vizitka za urejevalnik",
showhelp: "Pomoè za urejevalnik",
textindicator: "Trenutni slog",
undo: "Razveljavi zadnjo akcijo",
redo: "Uveljavi zadnjo akcijo",
cut: "Izre¾i",
copy: "Kopiraj",
paste: "Prilepi"
},
buttons: {
"ok": "V redu",
"cancel": "Preklièi"
},
msg: {
"Path": "Pot",
"TEXT_MODE": "Si v tekstovnem naèinu. Uporabi [<>] gumb za prklop nazaj na WYSIWYG."
}
};

View file

@ -0,0 +1,51 @@
// I18N constants : Vietnamese
// LANG: "en", ENCODING: UTF-8
// Author: Nguyễn Đình Nam, <hncryptologist@yahoo.com>
HTMLArea.I18N = {
// the following should be the filename without .js extension
// it will be used for automatically load plugin language.
lang: "vn",
tooltips: {
bold: "Đậm",
italic: "Nghiêng",
underline: "Gạch Chân",
strikethrough: "Gạch Xóa",
subscript: "Viết Xuống Dưới",
superscript: "Viết Lên Trên",
justifyleft: "Căn Trái",
justifycenter: "Căn Giữa",
justifyright: "Căn Phải",
justifyfull: "Căn Đều",
orderedlist: "Danh Sách Có Thứ Tự",
unorderedlist: "Danh Sách Phi Thứ Tự",
outdent: "Lùi Ra Ngoài",
indent: "Thụt Vào Trong",
forecolor: "Màu Chữ",
backcolor: "Màu Nền",
horizontalrule: "Dòng Kẻ Ngang",
createlink: "Tạo Liên Kết",
insertimage: "Chèn Ảnh",
inserttable: "Chèn Bảng",
htmlmode: "Chế Độ Mã HTML",
popupeditor: "Phóng To Ô Soạn Thảo",
about: "Tự Giới Thiệu",
showhelp: "Giúp Đỡ",
textindicator: "Định Dạng Hiện Thời",
undo: "Undo",
redo: "Redo",
cut: "Cắt",
copy: "Copy",
paste: "Dán"
},
buttons: {
"ok": "OK",
"cancel": "Hủy"
},
msg: {
"Path": "Đường Dẫn",
"TEXT_MODE": "Bạn đang ở chế độ text. Sử dụng nút [<>] để chuyển lại chế độ WYSIWIG."
}
};

View file

@ -0,0 +1,30 @@
htmlArea License (based on BSD license)
Copyright (c) 2002-2004, interactivetools.com, inc.
Copyright (c) 2003-2004 dynarch.com
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
1) Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
2) Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
3) Neither the name of interactivetools.com, inc. nor the names of its
contributors may be used to endorse or promote products derived from this
software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.

View file

@ -0,0 +1,369 @@
/** This file is derived from PopupDiv, developed by Mihai Bazon for
* SamWare.net. Modifications were needed to make it usable in HTMLArea.
* HTMLArea is a free WYSIWYG online HTML editor from InteractiveTools.com.
*
* This file does not function standalone. It is dependent of global functions
* defined in HTMLArea-3.0 (htmlarea.js).
*
* Please see file htmlarea.js for further details.
**/
var is_ie = ( (navigator.userAgent.toLowerCase().indexOf("msie") != -1) &&
(navigator.userAgent.toLowerCase().indexOf("opera") == -1) );
var is_compat = (document.compatMode == "BackCompat");
function PopupDiv(editor, titleText, handler, initFunction) {
var self = this;
this.editor = editor;
this.doc = editor._mdoc;
this.handler = handler;
var el = this.doc.createElement("div");
el.className = "content";
var popup = this.doc.createElement("div");
popup.className = "dialog popupdiv";
this.element = popup;
var s = popup.style;
s.position = "absolute";
s.left = "0px";
s.top = "0px";
var title = this.doc.createElement("div");
title.className = "title";
this.title = title;
popup.appendChild(title);
HTMLArea._addEvent(title, "mousedown", function(ev) {
self._dragStart(is_ie ? window.event : ev);
});
var button = this.doc.createElement("div");
button.className = "button";
title.appendChild(button);
button.innerHTML = "&#x00d7;";
title.appendChild(this.doc.createTextNode(titleText));
this.titleText = titleText;
button.onmouseover = function() {
this.className += " button-hilite";
};
button.onmouseout = function() {
this.className = this.className.replace(/\s*button-hilite\s*/g, " ");
};
button.onclick = function() {
this.className = this.className.replace(/\s*button-hilite\s*/g, " ");
self.close();
};
popup.appendChild(el);
this.content = el;
this.doc.body.appendChild(popup);
this.dragging = false;
this.onShow = null;
this.onClose = null;
this.modal = false;
initFunction(this);
};
PopupDiv.currentPopup = null;
PopupDiv.prototype.showAtElement = function(el, mode) {
this.defaultSize();
var pos, ew, eh;
var popup = this.element;
popup.style.display = "block";
var w = popup.offsetWidth;
var h = popup.offsetHeight;
popup.style.display = "none";
if (el != window) {
pos = PopupDiv.getAbsolutePos(el);
ew = el.offsetWidth;
eh = el.offsetHeight;
} else {
pos = {x:0, y:0};
var size = PopupDiv.getWindowSize();
ew = size.x;
eh = size.y;
}
var FX = false, FY = false;
if (mode.indexOf("l") != -1) {
pos.x -= w;
FX = true;
}
if (mode.indexOf("r") != -1) {
pos.x += ew;
FX = true;
}
if (mode.indexOf("t") != -1) {
pos.y -= h;
FY = true;
}
if (mode.indexOf("b") != -1) {
pos.y += eh;
FY = true;
}
if (mode.indexOf("c") != -1) {
FX || (pos.x += Math.round((ew - w) / 2));
FY || (pos.y += Math.round((eh - h) / 2));
}
this.showAt(pos.x, pos.y);
};
PopupDiv.prototype.defaultSize = function() {
var s = this.element.style;
var cs = this.element.currentStyle;
var addX = (is_ie && is_compat) ? (parseInt(cs.borderLeftWidth) +
parseInt(cs.borderRightWidth) +
parseInt(cs.paddingLeft) +
parseInt(cs.paddingRight)) : 0;
var addY = (is_ie && is_compat) ? (parseInt(cs.borderTopWidth) +
parseInt(cs.borderBottomWidth) +
parseInt(cs.paddingTop) +
parseInt(cs.paddingBottom)) : 0;
s.display = "block";
s.width = (this.content.offsetWidth + addX) + "px";
s.height = (this.content.offsetHeight + this.title.offsetHeight) + "px";
s.display = "none";
};
PopupDiv.prototype.showAt = function(x, y) {
this.defaultSize();
var s = this.element.style;
s.display = "block";
s.left = x + "px";
s.top = y + "px";
this.hideShowCovered();
PopupDiv.currentPopup = this;
HTMLArea._addEvents(this.doc.body, ["mousedown", "click"], PopupDiv.checkPopup);
HTMLArea._addEvents(this.editor._doc.body, ["mousedown", "click"], PopupDiv.checkPopup);
if (is_ie && this.modal) {
this.doc.body.setCapture(false);
this.doc.body.onlosecapture = function() {
(PopupDiv.currentPopup) && (this.doc.body.setCapture(false));
};
}
window.event && HTMLArea._stopEvent(window.event);
if (typeof this.onShow == "function") {
this.onShow();
} else if (typeof this.onShow == "string") {
eval(this.onShow);
}
var field = this.element.getElementsByTagName("input")[0];
if (!field) {
field = this.element.getElementsByTagName("select")[0];
}
if (!field) {
field = this.element.getElementsByTagName("textarea")[0];
}
if (field) {
field.focus();
}
};
PopupDiv.prototype.close = function() {
this.element.style.display = "none";
PopupDiv.currentPopup = null;
this.hideShowCovered();
HTMLArea._removeEvents(this.doc.body, ["mousedown", "click"], PopupDiv.checkPopup);
HTMLArea._removeEvents(this.editor._doc.body, ["mousedown", "click"], PopupDiv.checkPopup);
is_ie && this.modal && this.doc.body.releaseCapture();
if (typeof this.onClose == "function") {
this.onClose();
} else if (typeof this.onClose == "string") {
eval(this.onClose);
}
this.element.parentNode.removeChild(this.element);
};
PopupDiv.prototype.getForm = function() {
var forms = this.content.getElementsByTagName("form");
return (forms.length > 0) ? forms[0] : null;
};
PopupDiv.prototype.callHandler = function() {
var tags = ["input", "textarea", "select"];
var params = new Object();
for (var ti in tags) {
var tag = tags[ti];
var els = this.content.getElementsByTagName(tag);
for (var j = 0; j < els.length; ++j) {
var el = els[j];
params[el.name] = el.value;
}
}
this.handler(this, params);
return false;
};
PopupDiv.getAbsolutePos = function(el) {
var r = { x: el.offsetLeft, y: el.offsetTop };
if (el.offsetParent) {
var tmp = PopupDiv.getAbsolutePos(el.offsetParent);
r.x += tmp.x;
r.y += tmp.y;
}
return r;
};
PopupDiv.getWindowSize = function() {
if (window.innerHeight) {
return { y: window.innerHeight, x: window.innerWidth };
}
if (this.doc.body.clientHeight) {
return { y: this.doc.body.clientHeight, x: this.doc.body.clientWidth };
}
return { y: this.doc.documentElement.clientHeight, x: this.doc.documentElement.clientWidth };
};
PopupDiv.prototype.hideShowCovered = function () {
var self = this;
function isContained(el) {
while (el) {
if (el == self.element) {
return true;
}
el = el.parentNode;
}
return false;
};
var tags = new Array("applet", "select");
var el = this.element;
var p = PopupDiv.getAbsolutePos(el);
var EX1 = p.x;
var EX2 = el.offsetWidth + EX1;
var EY1 = p.y;
var EY2 = el.offsetHeight + EY1;
if (el.style.display == "none") {
EX1 = EX2 = EY1 = EY2 = 0;
}
for (var k = tags.length; k > 0; ) {
var ar = this.doc.getElementsByTagName(tags[--k]);
var cc = null;
for (var i = ar.length; i > 0;) {
cc = ar[--i];
if (isContained(cc)) {
cc.style.visibility = "visible";
continue;
}
p = PopupDiv.getAbsolutePos(cc);
var CX1 = p.x;
var CX2 = cc.offsetWidth + CX1;
var CY1 = p.y;
var CY2 = cc.offsetHeight + CY1;
if ((CX1 > EX2) || (CX2 < EX1) || (CY1 > EY2) || (CY2 < EY1)) {
cc.style.visibility = "visible";
} else {
cc.style.visibility = "hidden";
}
}
}
};
PopupDiv.prototype._dragStart = function (ev) {
if (this.dragging) {
return false;
}
this.dragging = true;
PopupDiv.currentPopup = this;
var posX = ev.clientX;
var posY = ev.clientY;
if (is_ie) {
posY += this.doc.body.scrollTop;
posX += this.doc.body.scrollLeft;
} else {
posY += window.scrollY;
posX += window.scrollX;
}
var st = this.element.style;
this.xOffs = posX - parseInt(st.left);
this.yOffs = posY - parseInt(st.top);
HTMLArea._addEvent(this.doc, "mousemove", PopupDiv.dragIt);
HTMLArea._addEvent(this.doc, "mouseover", HTMLArea._stopEvent);
HTMLArea._addEvent(this.doc, "mouseup", PopupDiv.dragEnd);
HTMLArea._stopEvent(ev);
};
PopupDiv.dragIt = function (ev) {
var popup = PopupDiv.currentPopup;
if (!(popup && popup.dragging)) {
return false;
}
is_ie && (ev = window.event);
var posX = ev.clientX;
var posY = ev.clientY;
if (is_ie) {
posY += this.doc.body.scrollTop;
posX += this.doc.body.scrollLeft;
} else {
posY += window.scrollY;
posX += window.scrollX;
}
popup.hideShowCovered();
var st = popup.element.style;
st.left = (posX - popup.xOffs) + "px";
st.top = (posY - popup.yOffs) + "px";
HTMLArea._stopEvent(ev);
};
PopupDiv.dragEnd = function () {
var popup = PopupDiv.currentPopup;
if (!popup) {
return false;
}
popup.dragging = false;
HTMLArea._removeEvent(popup.doc, "mouseup", PopupDiv.dragEnd);
HTMLArea._removeEvent(popup.doc, "mouseover", HTMLArea._stopEvent);
HTMLArea._removeEvent(popup.doc, "mousemove", PopupDiv.dragIt);
popup.hideShowCovered();
};
PopupDiv.checkPopup = function (ev) {
is_ie && (ev = window.event);
var el = is_ie ? ev.srcElement : ev.target;
var cp = PopupDiv.currentPopup;
for (; (el != null) && (el != cp.element); el = el.parentNode);
if (el == null) {
cp.modal || ev.type == "mouseover" || cp.close();
HTMLArea._stopEvent(ev);
}
};
PopupDiv.prototype.addButtons = function() {
var self = this;
var div = this.doc.createElement("div");
this.content.appendChild(div);
div.className = "buttons";
for (var i = 0; i < arguments.length; ++i) {
var btn = arguments[i];
var button = this.doc.createElement("button");
div.appendChild(button);
button.innerHTML = HTMLArea.I18N.buttons[btn];
switch (btn) {
case "ok":
button.onclick = function() {
self.callHandler();
self.close();
};
break;
case "cancel":
button.onclick = function() {
self.close();
};
break;
}
}
};

View file

@ -0,0 +1,378 @@
<!--
(c) dynarch.com, 2003-2004
Author: Mihai Bazon, http://dynarch.com/mishoo
Distributed as part of HTMLArea 3.0
"You are not expected to understand this... I don't neither."
(from The Linux Kernel Source Code,
./arch/x86_64/ia32/ptrace.c:90)
;-)
-->
<html style="height: 100%">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>About HTMLArea</title>
<script type="text/javascript" src="popup.js"></script>
<script type="text/javascript">
window.resizeTo(450, 250);
var TABS = [];
var CURRENT_TAB = 0;
var CONTENT_HEIGHT_DIFF = 0;
var CONTENT_WIDTH_DIFF = 0;
function selectTab(idx) {
var ct = TABS[CURRENT_TAB];
ct.className = ct.className.replace(/\s*tab-current\s*/, ' ');
ct = TABS[CURRENT_TAB = idx];
ct.className += ' tab-current';
for (var i = TABS.length; --i >= 0;) {
var area = document.getElementById("tab-area-" + i);
if (CURRENT_TAB == i) {
area.style.display = "block";
} else {
area.style.display = "none";
}
}
document.body.style.visibility = "hidden";
document.body.style.visibility = "visible";
document.cookie = "HTMLAREA-ABOUT-TAB=" + idx;
}
var editor = null;
function initDocument() {
editor = window.dialogArguments;
HTMLArea = window.opener.HTMLArea;
var plugins = document.getElementById("plugins");
var j = 0;
var html = "<table width='99%' cellpadding='0' style='margin-top: 1em; collapse-borders: collapse; border: 1px solid #8b8;'>" +
"<thead><tr>" +
"<td>Name</td>" +
"<td>Developer</td>" +
"<td>Sponsored by</td>" +
"<td>License<sup>*</sup></td>" +
"</tr></thead><tbody>";
for (var i in editor.plugins) {
var info = editor.plugins[i];
html += "<tr><td>" + info.name + " v" + info.version + "</td>" +
"<td><a href='" + info.developer_url + "' target='_blank' title='Visit developer website'>" +
info.developer + "</a></td>" +
"<td><a href='" + info.sponsor_url + "' target='_blank' title='Visit sponsor website'>" +
info.sponsor + "</a></td>" +
"<td>" + info.license + "</td></tr>";
++j;
}
if (j) {
html += "</tbody></table>" +
"<p><sup>*</sup> License \"htmlArea\" means that the plugin is distributed under the same terms " +
"as HTMLArea itself. Such plugins are likely to be those included in the official " +
"HTMLArea distribution</p>";
plugins.innerHTML = "<p>The following plugins have been loaded.</p>" + html;
} else {
plugins.innerHTML = "<p>No plugins have been loaded</p>";
}
plugins.innerHTML += "<p>User agent reports:<br/>" + navigator.userAgent + "</p>";
var content = document.getElementById("content");
if (window.innerHeight) {
CONTENT_HEIGHT_DIFF = window.innerHeight - 250;
CONTENT_WIDTH_DIFF = window.innerWidth - content.offsetWidth;
} else {
CONTENT_HEIGHT_DIFF = document.body.offsetHeight - 250;
CONTENT_WIDTH_DIFF = document.body.offsetWidth - 400;
}
window.onresize();
var bar = document.getElementById("tabbar");
j = 0;
for (var i = bar.firstChild; i; i = i.nextSibling) {
TABS.push(i);
i.__msh_tab = j;
i.onmousedown = function(ev) { selectTab(this.__msh_tab); HTMLArea._stopEvent(ev || window.event); };
var area = document.getElementById("tab-area-" + j);
if (/tab-current/.test(i.className)) {
CURRENT_TAB = j;
area.style.display = "block";
} else {
area.style.display = "none";
}
++j;
}
if (document.cookie.match(/HTMLAREA-ABOUT-TAB=([0-9]+)/))
selectTab(RegExp.$1);
}
window.onresize = function() {
var content = document.getElementById("content");
if (window.innerHeight) {
content.style.height = (window.innerHeight - CONTENT_HEIGHT_DIFF) + "px";
content.style.width = (window.innerWidth - CONTENT_WIDTH_DIFF) + "px";
} else {
content.style.height = (document.body.offsetHeight - CONTENT_HEIGHT_DIFF) + "px";
//content.style.width = (document.body.offsetWidth - CONTENT_WIDTH_DIFF) + "px";
}
}
</script>
<style>
html,body,textarea,table { font-family: tahoma,verdana,arial; font-size: 11px;
padding: 0px; margin: 0px; }
tt { font-size: 120%; }
body { padding: 0px; background: #cea; color: 000; }
a:link, a:visited { color: #00f; }
a:hover { color: #f00; }
a:active { color: #f80; }
button { font: 11px tahoma,verdana,sans-serif; background-color: #cea;
border-width: 1px; }
p { margin: 0.5em 0px; }
h1 { font: bold 130% georgia,"times new roman",serif; margin: 0px; border-bottom: 1px solid #6a6; }
h2 { font: bold 110% georgia,"times new roman",serif; margin: 0.7em 0px; }
thead {
font-weight: bold;
background-color: #dfb;
}
.logo, .logo-hover {
white-space: nowrap;
background-color: #8f4; color: #040; padding: 3px; border-bottom: 1px solid #555;
height: 5em;
}
.logo .brand, .logo-hover .brand {
margin-left: 0.5em; margin-right: 0.5em; padding-bottom: 0.1em;
font-family: impact,'arial black',arial,sans-serif; font-size: 28px;
border-bottom: 1px solid #595; text-align: center;
cursor: pointer;
}
.logo-hover {
background-color: #fff;
}
.logo-hover .brand {
color: #800;
border-color: #04f;
}
.logo .letter, .logo-hover .letter { position: relative; font-family: monospace; }
.logo .letter1 { top: 0.1em; }
.logo .letter2 { top: 0.05em; }
.logo .letter3 { top: -0.05em; }
.logo .letter4 { top: -0.1em; }
.logo-hover .letter1 { top: -0.1em; }
.logo-hover .letter2 { top: -0.05em; }
.logo-hover .letter3 { top: 0.05em; }
.logo-hover .letter4 { top: 0.1em; }
.logo .version, .logo-hover .version { font-family: georgia,"times new roman",serif; }
.logo .release {
font-size: 90%; margin-bottom: 1em;
text-align: center; color: #484;
}
.logo .visit { display: none; }
.logo-hover .release { display: none; }
.logo-hover .visit {
font-size: 90%; margin-bottom: 1em;
text-align: center; color: #448;
}
.buttons {
text-align: right; padding: 3px; background-color: #8f4;
border-top: 1px solid #555;
}
#tabbar {
position: relative;
left: 10px;
}
.tab {
color: #454;
cursor: pointer;
margin-left: -5px;
float: left; position: relative;
border: 1px solid #555;
top: -3px; left: -2px;
padding: 2px 10px 3px 10px;
border-top: none; background-color: #9b7;
-moz-border-radius: 0px 0px 4px 4px;
z-index: 0;
}
.tab-current {
color: #000;
top: -4px;
background-color: #cea;
padding: 3px 10px 4px 10px;
z-index: 10;
}
table.sponsors { border-top: 1px solid #aca; }
table.sponsors td {
border-bottom: 1px solid #aca; vertical-align: top;
}
table.sponsors tr td { padding: 2px 0px; }
table.sponsors tr td.sponsor { text-align: right; padding-right: 0.3em; white-space: nowrap; }
li, ol, ul { margin-top: 0px; margin-bottom: 0px; }
</style></head>
<body onload="__dlg_init(); initDocument();"
><table cellspacing="0" cellpadding="0" style="border-collapse: collapse;
width: 100%; height: 100%;">
<tr style="height: 1em"><td id="tdheader">
<div class="logo">
<div class="brand"
onmouseover="this.parentNode.className='logo-hover';"
onmouseout="this.parentNode.className='logo';"
onclick="window.open('http://dynarch.com/htmlarea/');">
<span class="letter letter1">&lt;H</span><span
class="letter letter2">T</span><span
class="letter letter3">M</span><span
class="letter letter4">L</span>Area <span class="letter">/&gt;</span>
<span class="version">3.0 <span style="position: relative; top: -0.6em; font-size: 50%; font-weight: normal">[ rev. rc1 ]</span></span></div>
<div class="release">Compiled on Mar 1, 2004 19:37 GMT</div>
<div class="visit">Go to http://dynarch.com/htmlarea/ [latest milestone release]</div>
</div>
</td></tr>
<tr><td id="tdcontent" style="padding: 0.5em;">
<div style="overflow: auto; height: 250px;" id="content">
<div id="tab-areas">
<div id="tab-area-0">
<h1>HTMLArea</h1>
<p>A free WYSIWYG editor replacement for <tt>&lt;textarea&gt;</tt> fields.<br />
For Mozilla 1.3+ (any platform) or Internet Explorer 5.5+ (Windows).
</p>
<p style="text-align: center"
>&copy; 2002-2004 <a href="http://interactivetools.com" target="_blank">interactivetools.com</a>, inc.<br />
&copy; 2003-2004 <a href="http://dynarch.com" target="_blank">dynarch.com</a> LLC.<br />
All Rights Reserved.</p>
<h2>Project resources</h2>
<ul>
<li><a href="http://sourceforge.net/projects/itools-htmlarea/" target="_blank"
>Project page</a> (@ sourceforge.net)</li>
<li><a href="http://sourceforge.net/cvs/?group_id=69750" target="_blank"
>Anonymous CVS access</a> (@ sourceforge.net)</li>
<li><a href="http://sourceforge.net/tracker/?atid=525656&group_id=69750&func=browse" target="_blank"
>Bug system</a> (@ sourceforge.net)</li>
<li><a href="http://www.interactivetools.com/forum/gforum.cgi?forum=14;" target="_blank"
>Forum</a> (@ interactivetools.com)</li>
<li><a href="http://www.dynarch.com/htmlarea/" target="_blank"
>Last public release</a> (@ dynarch.com)</li>
</ul>
<p>
For download section please see the <a href="http://sourceforge.net/projects/itools-htmlarea/" target="_blank"
>project page @ SourceForge</a>.
</p>
<p style="margin-top: 1em; text-align: center;">Version 3.0 developed and maintained by <a
href="http://dynarch.com/mishoo/" title="http://dynarch.com/mishoo/" target="_blank">Mihai Bazon</a> / <a
href="http://dynarch.com" title="http://dynarch.com/" target="_blank">dynarch.com</a></p>
</div>
<div id="tab-area-1">
<h1>Thank you</h1>
<p>
<a href="http://dynarch.com" target="_blank">dynarch.com</a> would like to thank the following
companies/persons for their <em>donations</em> to support development of HTMLArea (listed alphabetically):
</p>
<ul>
<li><a href="http://www.neomedia.ro">Neomedia</a> (Romania)</li>
<li><a href="http://www.os3.it" target="_blank">OS3</a> (Italy)</li>
<li><a href="http://www.softwerk.net">SoftWerk</a> (Italy)</li>
</ul>
<p>Also many thanks to all people at InteractiveTools.com
<a href="http://www.interactivetools.com/forum/gforum.cgi?forum=14;">HTMLArea forums</a> for
contributing translations, feedback, bug reports and fixes.</p>
<p>
Last but not least, this project wouldn't have existed without
<a href="http://interactivetools.com" target="_blank">InteractiveTools.com</a>.
</p>
</div>
<div id="tab-area-2">
<h1>htmlArea License (based on BSD license)</h1>
<p style="text-align: center">© 2002-2004, interactivetools.com, inc.<br />
© 2003-2004 dynarch.com LLC<br />
All rights reserved.</p>
<p>
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
</p>
<ol>
<li>
Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
</li>
<li>
Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
</li>
<li>
Neither the name of interactivetools.com, inc. nor the names of its
contributors may be used to endorse or promote products derived from this
software without specific prior written permission.
</li>
</ol>
<p>
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
</p>
</div>
<div id="tab-area-3">
<h1>Plugins</h1>
<div id="plugins">
</div>
</div>
</div></div>
</tr></td>
<tr style="height: 1em"><td id="tdfooter">
<div class="buttons">
<div id="tabbar"
><div class="tab tab-current"
>About</div><div class="tab"
>Thanks</div><div class="tab"
>License</div><div class="tab"
>Plugins</div></div>
<button type="button" onclick="__dlg_close(null);">I agree it's cool</button>
</div>
</td></tr></table>
</body></html>

View file

@ -0,0 +1,2 @@
<html>
</html>

View file

@ -0,0 +1,35 @@
<html style="width:300px; Height: 60px;">
<head>
<title>Select Phrase</title>
<script language="javascript">
var myTitle = window.dialogArguments;
document.title = myTitle;
function returnSelected() {
var idx = document.all.textPulldown.selectedIndex;
var text = document.all.textPulldown[idx].text;
window.returnValue = text; // set return value
window.close(); // close dialog
}
</script>
</head>
<body bgcolor="#FFFFFF" topmargin=15 leftmargin=0>
<form method=get onSubmit="Set(document.all.ColorHex.value); return false;">
<div align=center>
<select name="textPulldown">
<option>The quick brown</option>
<option>fox jumps over</option>
<option>the lazy dog.</option>
</select>
<input type="button" value=" Go " onClick="returnSelected()">
</div>
</form>
</body></html>

View file

@ -0,0 +1,16 @@
<html>
<head>
<title>Editor Help</title>
<style>
body, td, p, div { font-family: arial; font-size: x-small; }
</style>
</head>
<body>
<h2>Editor Help<hr></h2>
Todo...
</body>
</html>

View file

@ -0,0 +1,133 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html>
<head>
<title>Fullscreen HTMLArea</title>
<script type="text/javascript">
_editor_url = window.opener._editor_url;
_editor_lang = window.opener._editor_lang;
var BASE = window.opener.document.baseURI || window.opener.document.URL;
var head = document.getElementsByTagName("head")[0];
var base = document.createElement("base");
base.href = BASE;
head.appendChild(base);
</script>
<script type="text/javascript" src="../htmlarea.js"></script>
<script type="text/javascript">
// load HTMLArea scripts that are present in the opener frame
var scripts = window.opener.HTMLArea._scripts;
for (var i = 4; i < scripts.length; ++i) {
document.write("<scr" + "ipt type='text/javascript' src='" + scripts[i] + "'></scr" + "ipt>");
}
</script>
<!-- browser takes a coffee break here -->
<script type="text/javascript">
var parent_object = null;
var editor = null; // to be initialized later [ function init() ]
/* ---------------------------------------------------------------------- *\
Function :
Description :
\* ---------------------------------------------------------------------- */
function _CloseOnEsc(ev) {
ev || (ev = window.event);
if (ev.keyCode == 27) {
// update_parent();
window.close();
return;
}
}
/* ---------------------------------------------------------------------- *\
Function : resize_editor
Description : resize the editor when the user resizes the popup
\* ---------------------------------------------------------------------- */
function resize_editor() { // resize editor to fix window
var newHeight;
if (document.all) {
// IE
newHeight = document.body.offsetHeight - editor._toolbar.offsetHeight;
if (newHeight < 0) { newHeight = 0; }
} else {
// Gecko
newHeight = window.innerHeight - editor._toolbar.offsetHeight;
}
if (editor.config.statusBar) {
newHeight -= editor._statusBar.offsetHeight;
}
editor._textArea.style.height = editor._iframe.style.height = newHeight + "px";
}
/* ---------------------------------------------------------------------- *\
Function : init
Description : run this code on page load
\* ---------------------------------------------------------------------- */
function init() {
parent_object = opener.HTMLArea._object;
var config = HTMLArea.cloneObject( parent_object.config );
config.width = "100%";
config.height = "auto";
// change maximize button to minimize button
config.btnList["popupeditor"] = [ 'Minimize Editor', _editor_url + 'images/fullscreen_minimize.gif', true,
function() { window.close(); } ];
// generate editor and resize it
editor = new HTMLArea("editor", config);
// register the plugins, if any
for (var i in parent_object.plugins) {
var plugin = parent_object.plugins[i];
editor.registerPlugin2(plugin.name, plugin.args);
}
// and restore the original toolbar
config.toolbar = parent_object.config.toolbar;
editor.generate();
editor._iframe.style.width = "100%";
editor._textArea.style.width = "100%";
resize_editor();
editor.doctype = parent_object.doctype;
// set child window contents and event handlers, after a small delay
setTimeout(function() {
editor.setHTML(parent_object.getInnerHTML());
// switch mode if needed
if (parent_object._mode == "textmode") { editor.setMode("textmode"); }
// continuously update parent editor window
setInterval(update_parent, 500);
// setup event handlers
document.body.onkeypress = _CloseOnEsc;
editor._doc.body.onkeypress = _CloseOnEsc;
editor._textArea.onkeypress = _CloseOnEsc;
window.onresize = resize_editor;
}, 333); // give it some time to meet the new frame
}
/* ---------------------------------------------------------------------- *\
Function : update_parent
Description : update parent window editor field with contents from child window
\* ---------------------------------------------------------------------- */
function update_parent() {
// use the fast version
parent_object.setHTML(editor.getInnerHTML());
}
</script>
<style type="text/css"> html, body { height: 100%; margin: 0px; border: 0px; background-color: buttonface; } </style>
</head>
<body scroll="no" onload="setTimeout(function(){init();}, 500)" onunload="update_parent()">
<form style="margin: 0px; border: 1px solid; border-color: threedshadow threedhighlight threedhighlight threedshadow;">
<textarea name="editor" id="editor" style="width:100%; height:300px">&nbsp;</textarea>
</form>
</body>
</html>

View file

@ -0,0 +1,191 @@
<html>
<head>
<title>Insert Image</title>
<script type="text/javascript" src="popup.js"></script>
<script type="text/javascript">
window.resizeTo(400, 100);
function Init() {
__dlg_init();
var param = window.dialogArguments;
if (param) {
document.getElementById("f_url").value = param["f_url"];
document.getElementById("f_alt").value = param["f_alt"];
document.getElementById("f_border").value = param["f_border"];
document.getElementById("f_align").value = param["f_align"];
document.getElementById("f_vert").value = param["f_vert"];
document.getElementById("f_horiz").value = param["f_horiz"];
window.ipreview.location.replace(param.f_url);
}
document.getElementById("f_url").focus();
};
function onOK() {
var required = {
"f_url": "You must enter the URL"
};
for (var i in required) {
var el = document.getElementById(i);
if (!el.value) {
alert(required[i]);
el.focus();
return false;
}
}
// pass data back to the calling window
var fields = ["f_url", "f_alt", "f_align", "f_border",
"f_horiz", "f_vert"];
var param = new Object();
for (var i in fields) {
var id = fields[i];
var el = document.getElementById(id);
param[id] = el.value;
}
__dlg_close(param);
return false;
};
function onCancel() {
__dlg_close(null);
return false;
};
function onPreview() {
var f_url = document.getElementById("f_url");
var url = f_url.value;
if (!url) {
alert("You have to enter an URL first");
f_url.focus();
return false;
}
window.ipreview.location.replace(url);
return false;
};
</script>
<style type="text/css">
html, body {
background: ButtonFace;
color: ButtonText;
font: 11px Tahoma,Verdana,sans-serif;
margin: 0px;
padding: 0px;
}
body { padding: 5px; }
table {
font: 11px Tahoma,Verdana,sans-serif;
}
form p {
margin-top: 5px;
margin-bottom: 5px;
}
.fl { width: 9em; float: left; padding: 2px 5px; text-align: right; }
.fr { width: 6em; float: left; padding: 2px 5px; text-align: right; }
fieldset { padding: 0px 10px 5px 5px; }
select, input, button { font: 11px Tahoma,Verdana,sans-serif; }
button { width: 70px; }
.space { padding: 2px; }
.title { background: #ddf; color: #000; font-weight: bold; font-size: 120%; padding: 3px 10px; margin-bottom: 10px;
border-bottom: 1px solid black; letter-spacing: 2px;
}
form { padding: 0px; margin: 0px; }
</style>
</head>
<body onload="Init()">
<div class="title">Insert Image</div>
<!--- new stuff --->
<form action="" method="get">
<table border="0" width="100%" style="padding: 0px; margin: 0px">
<tbody>
<tr>
<td style="width: 7em; text-align: right">Image URL:</td>
<td><input type="text" name="url" id="f_url" style="width:75%"
title="Enter the image URL here" />
<button name="preview" onclick="return onPreview();"
title="Preview the image in a new window">Preview</button>
</td>
</tr>
<tr>
<td style="width: 7em; text-align: right">Alternate text:</td>
<td><input type="text" name="alt" id="f_alt" style="width:100%"
title="For browsers that don't support images" /></td>
</tr>
</tbody>
</table>
<p />
<fieldset style="float: left; margin-left: 5px;">
<legend>Layout</legend>
<div class="space"></div>
<div class="fl">Alignment:</div>
<select size="1" name="align" id="f_align"
title="Positioning of this image">
<option value="" >Not set</option>
<option value="left" >Left</option>
<option value="right" >Right</option>
<option value="texttop" >Texttop</option>
<option value="absmiddle" >Absmiddle</option>
<option value="baseline" selected="1" >Baseline</option>
<option value="absbottom" >Absbottom</option>
<option value="bottom" >Bottom</option>
<option value="middle" >Middle</option>
<option value="top" >Top</option>
</select>
<p />
<div class="fl">Border thickness:</div>
<input type="text" name="border" id="f_border" size="5"
title="Leave empty for no border" />
<div class="space"></div>
</fieldset>
<fieldset style="float:right; margin-right: 5px;">
<legend>Spacing</legend>
<div class="space"></div>
<div class="fr">Horizontal:</div>
<input type="text" name="horiz" id="f_horiz" size="5"
title="Horizontal padding" />
<p />
<div class="fr">Vertical:</div>
<input type="text" name="vert" id="f_vert" size="5"
title="Vertical padding" />
<div class="space"></div>
</fieldset>
<br clear="all" />
<table width="100%" style="margin-bottom: 0.2em">
<tr>
<td valign="bottom">
Image Preview:<br />
<iframe name="ipreview" id="ipreview" frameborder="0" style="border : 1px solid gray;" height="200" width="300" src=""></iframe>
</td>
<td valign="bottom" style="text-align: right">
<button type="button" name="ok" onclick="return onOK();">OK</button><br>
<button type="button" name="cancel" onclick="return onCancel();">Cancel</button>
</td>
</tr>
</table>
</form>
</body>
</html>

View file

@ -0,0 +1,174 @@
<html>
<head>
<title>Insert Table</title>
<script type="text/javascript" src="popup.js"></script>
<script type="text/javascript">
window.resizeTo(400, 100);
function Init() {
__dlg_init();
document.getElementById("f_rows").focus();
};
function onOK() {
var required = {
"f_rows": "You must enter a number of rows",
"f_cols": "You must enter a number of columns"
};
for (var i in required) {
var el = document.getElementById(i);
if (!el.value) {
alert(required[i]);
el.focus();
return false;
}
}
var fields = ["f_rows", "f_cols", "f_width", "f_unit",
"f_align", "f_border", "f_spacing", "f_padding"];
var param = new Object();
for (var i in fields) {
var id = fields[i];
var el = document.getElementById(id);
param[id] = el.value;
}
__dlg_close(param);
return false;
};
function onCancel() {
__dlg_close(null);
return false;
};
</script>
<style type="text/css">
html, body {
background: ButtonFace;
color: ButtonText;
font: 11px Tahoma,Verdana,sans-serif;
margin: 0px;
padding: 0px;
}
body { padding: 5px; }
table {
font: 11px Tahoma,Verdana,sans-serif;
}
form p {
margin-top: 5px;
margin-bottom: 5px;
}
.fl { width: 9em; float: left; padding: 2px 5px; text-align: right; }
.fr { width: 7em; float: left; padding: 2px 5px; text-align: right; }
fieldset { padding: 0px 10px 5px 5px; }
select, input, button { font: 11px Tahoma,Verdana,sans-serif; }
button { width: 70px; }
.space { padding: 2px; }
.title { background: #ddf; color: #000; font-weight: bold; font-size: 120%; padding: 3px 10px; margin-bottom: 10px;
border-bottom: 1px solid black; letter-spacing: 2px;
}
form { padding: 0px; margin: 0px; }
</style>
</head>
<body onload="Init()">
<div class="title">Insert Table</div>
<form action="" method="get">
<table border="0" style="padding: 0px; margin: 0px">
<tbody>
<tr>
<td style="width: 4em; text-align: right">Rows:</td>
<td><input type="text" name="rows" id="f_rows" size="5" title="Number of rows" value="2" /></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td style="width: 4em; text-align: right">Cols:</td>
<td><input type="text" name="cols" id="f_cols" size="5" title="Number of columns" value="4" /></td>
<td style="width: 4em; text-align: right">Width:</td>
<td><input type="text" name="width" id="f_width" size="5" title="Width of the table" value="100" /></td>
<td><select size="1" name="unit" id="f_unit" title="Width unit">
<option value="%" selected="1" >Percent</option>
<option value="px" >Pixels</option>
<option value="em" >Em</option>
</select></td>
</tr>
</tbody>
</table>
<p />
<fieldset style="float: left; margin-left: 5px;">
<legend>Layout</legend>
<div class="space"></div>
<div class="fl">Alignment:</div>
<select size="1" name="align" id="f_align"
title="Positioning of this image">
<option value="" selected="1" >Not set</option>
<option value="left" >Left</option>
<option value="right" >Right</option>
<option value="texttop" >Texttop</option>
<option value="absmiddle" >Absmiddle</option>
<option value="baseline" >Baseline</option>
<option value="absbottom" >Absbottom</option>
<option value="bottom" >Bottom</option>
<option value="middle" >Middle</option>
<option value="top" >Top</option>
</select>
<p />
<div class="fl">Border thickness:</div>
<input type="text" name="border" id="f_border" size="5" value="1"
title="Leave empty for no border" />
<!--
<p />
<div class="fl">Collapse borders:</div>
<input type="checkbox" name="collapse" id="f_collapse" />
-->
<div class="space"></div>
</fieldset>
<fieldset style="float:right; margin-right: 5px;">
<legend>Spacing</legend>
<div class="space"></div>
<div class="fr">Cell spacing:</div>
<input type="text" name="spacing" id="f_spacing" size="5" value="1"
title="Space between adjacent cells" />
<p />
<div class="fr">Cell padding:</div>
<input type="text" name="padding" id="f_padding" size="5" value="1"
title="Space between content and border in cell" />
<div class="space"></div>
</fieldset>
<div style="margin-top: 85px; border-top: 1px solid #999; padding: 2px; text-align: right;">
<button type="button" name="ok" onclick="return onOK();">OK</button>
<button type="button" name="cancel" onclick="return onCancel();">Cancel</button>
</div>
</form>
</body>
</html>

View file

@ -0,0 +1,142 @@
<html>
<head>
<title>Insert/Modify Link</title>
<script type="text/javascript" src="popup.js"></script>
<script type="text/javascript">
window.resizeTo(400, 200);
I18N = window.opener.HTMLArea.I18N.dialogs;
function i18n(str) {
return (I18N[str] || str);
};
function onTargetChanged() {
var f = document.getElementById("f_other_target");
if (this.value == "_other") {
f.style.visibility = "visible";
f.select();
f.focus();
} else f.style.visibility = "hidden";
};
function Init() {
__dlg_translate(I18N);
__dlg_init();
var param = window.dialogArguments;
var target_select = document.getElementById("f_target");
if (param) {
document.getElementById("f_href").value = param["f_href"];
document.getElementById("f_title").value = param["f_title"];
comboSelectValue(target_select, param["f_target"]);
if (target_select.value != param.f_target) {
var opt = document.createElement("option");
opt.value = param.f_target;
opt.innerHTML = opt.value;
target_select.appendChild(opt);
opt.selected = true;
}
}
var opt = document.createElement("option");
opt.value = "_other";
opt.innerHTML = i18n("Other");
target_select.appendChild(opt);
target_select.onchange = onTargetChanged;
document.getElementById("f_href").focus();
document.getElementById("f_href").select();
};
function onOK() {
var required = {
"f_href": i18n("You must enter the URL where this link points to")
};
for (var i in required) {
var el = document.getElementById(i);
if (!el.value) {
alert(required[i]);
el.focus();
return false;
}
}
// pass data back to the calling window
var fields = ["f_href", "f_title", "f_target" ];
var param = new Object();
for (var i in fields) {
var id = fields[i];
var el = document.getElementById(id);
param[id] = el.value;
}
if (param.f_target == "_other")
param.f_target = document.getElementById("f_other_target").value;
__dlg_close(param);
return false;
};
function onCancel() {
__dlg_close(null);
return false;
};
</script>
<style type="text/css">
html, body {
background: ButtonFace;
color: ButtonText;
font: 11px Tahoma,Verdana,sans-serif;
margin: 0px;
padding: 0px;
}
body { padding: 5px; }
table {
font: 11px Tahoma,Verdana,sans-serif;
}
select, input, button { font: 11px Tahoma,Verdana,sans-serif; }
button { width: 70px; }
table .label { text-align: right; width: 8em; }
.title { background: #ddf; color: #000; font-weight: bold; font-size: 120%; padding: 3px 10px; margin-bottom: 10px;
border-bottom: 1px solid black; letter-spacing: 2px;
}
#buttons {
margin-top: 1em; border-top: 1px solid #999;
padding: 2px; text-align: right;
}
</style>
</head>
<body onload="Init()">
<div class="title">Insert/Modify Link</div>
<table border="0" style="width: 100%;">
<tr>
<td class="label">URL:</td>
<td><input type="text" id="f_href" style="width: 100%" /></td>
</tr>
<tr>
<td class="label">Title (tooltip):</td>
<td><input type="text" id="f_title" style="width: 100%" /></td>
</tr>
<tr>
<td class="label">Target:</td>
<td><select id="f_target">
<option value="">None (use implicit)</option>
<option value="_blank">New window (_blank)</option>
<option value="_self">Same frame (_self)</option>
<option value="_top">Top frame (_top)</option>
</select>
<input type="text" name="f_other_target" id="f_other_target" size="10" style="visibility: hidden" />
</td>
</tr>
</table>
<div id="buttons">
<button type="button" name="ok" onclick="return onOK();">OK</button>
<button type="button" name="cancel" onclick="return onCancel();">Cancel</button>
</div>
</body>
</html>

View file

@ -0,0 +1,131 @@
<html>
<head><title>Fullscreen Editor</title>
<style type="text/css"> body { margin: 0px; border: 0px; background-color: buttonface; } </style>
<script>
// if we pass the "window" object as a argument and then set opener to
// equal that we can refer to dialogWindows and popupWindows the same way
if (window.dialogArguments) { opener = window.dialogArguments; }
var _editor_url = "../";
document.write('<scr'+'ipt src="' +_editor_url+ 'editor.js" language="Javascript1.2"></scr'+'ipt>');
var parent_objname = location.search.substring(1,location.search.length); // parent editor objname
var parent_config = opener.document.all[parent_objname].config;
var config = cloneObject( parent_config );
var objname = 'editor'; // name of this editor
// DOMViewerObj = config;
// DOMViewerName = 'config';
// window.open('/innerHTML/domviewer.htm');
/* ---------------------------------------------------------------------- *\
Function :
Description :
\* ---------------------------------------------------------------------- */
function _CloseOnEsc() {
if (event.keyCode == 27) {
update_parent();
window.close();
return;
}
}
/* ---------------------------------------------------------------------- *\
Function : cloneObject
Description : copy an object by value instead of by reference
Usage : var newObj = cloneObject(oldObj);
\* ---------------------------------------------------------------------- */
function cloneObject(obj) {
var newObj = new Object;
// check for array objects
if (obj.constructor.toString().indexOf('function Array(') == 1) {
newObj = obj.constructor();
}
for (var n in obj) {
var node = obj[n];
if (typeof node == 'object') { newObj[n] = cloneObject(node); }
else { newObj[n] = node; }
}
return newObj;
}
/* ---------------------------------------------------------------------- *\
Function : resize_editor
Description : resize the editor when the user resizes the popup
\* ---------------------------------------------------------------------- */
function resize_editor() { // resize editor to fix window
var editor = document.all['_editor_editor'];
newWidth = document.body.offsetWidth;
newHeight = document.body.offsetHeight - editor.offsetTop;
if (newWidth < 0) { newWidth = 0; }
if (newHeight < 0) { newHeight = 0; }
editor.style.width = newWidth;
editor.style.height = newHeight;
}
/* ---------------------------------------------------------------------- *\
Function : init
Description : run this code on page load
\* ---------------------------------------------------------------------- */
function init() {
// change maximize button to minimize button
config.btnList["popupeditor"] = ['popupeditor', 'Minimize Editor', 'update_parent(); window.close();', 'fullscreen_minimize.gif'];
// set htmlmode button to refer to THIS editor
config.btnList["htmlmode"] = ['HtmlMode', 'View HTML Source', 'editor_setmode(\'editor\')', 'ed_html.gif'];
// change image url to be relative to current path
config.imgURL = "../images/";
// generate editor and resize it
editor_generate('editor', config);
resize_editor();
// switch mode if needed
if (parent_config.mode == 'textedit') { editor_setmode(objname, 'textedit'); }
// set child window contents
var parentHTML = opener.editor_getHTML(parent_objname);
editor_setHTML(objname, parentHTML);
// continuously update parent editor window
window.setInterval(update_parent, 333);
// setup event handlers
document.body.onkeypress = _CloseOnEsc;
window.onresize = resize_editor;
}
/* ---------------------------------------------------------------------- *\
Function : update_parent
Description : update parent window editor field with contents from child window
\* ---------------------------------------------------------------------- */
function update_parent() {
var childHTML = editor_getHTML(objname);
opener.editor_setHTML(parent_objname, childHTML);
}
</script>
</head>
<body scroll="no" onload="init()" onunload="update_parent()">
<div style="margin: 0 0 0 0; border-width: 1; border-style: solid; border-color: threedshadow threedhighlight threedhighlight threedshadow; "></div>
<textarea name="editor" style="width:100%; height:300px"></textarea><br>
</body></html>

View file

@ -0,0 +1,206 @@
<!-- based on insimage.dlg -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD W3 HTML 3.2//EN">
<HTML id=dlgImage STYLE="width: 432px; height: 194px; ">
<HEAD>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta http-equiv="MSThemeCompatible" content="Yes">
<TITLE>Insert Image</TITLE>
<style>
html, body, button, div, input, select, fieldset { font-family: MS Shell Dlg; font-size: 8pt; position: absolute; };
</style>
<SCRIPT defer>
function _CloseOnEsc() {
if (event.keyCode == 27) { window.close(); return; }
}
function _getTextRange(elm) {
var r = elm.parentTextEdit.createTextRange();
r.moveToElementText(elm);
return r;
}
window.onerror = HandleError
function HandleError(message, url, line) {
var str = "An error has occurred in this dialog." + "\n\n"
+ "Error: " + line + "\n" + message;
alert(str);
window.close();
return true;
}
function Init() {
var elmSelectedImage;
var htmlSelectionControl = "Control";
var globalDoc = window.dialogArguments;
var grngMaster = globalDoc.selection.createRange();
// event handlers
document.body.onkeypress = _CloseOnEsc;
btnOK.onclick = new Function("btnOKClick()");
txtFileName.fImageLoaded = false;
txtFileName.intImageWidth = 0;
txtFileName.intImageHeight = 0;
if (globalDoc.selection.type == htmlSelectionControl) {
if (grngMaster.length == 1) {
elmSelectedImage = grngMaster.item(0);
if (elmSelectedImage.tagName == "IMG") {
txtFileName.fImageLoaded = true;
if (elmSelectedImage.src) {
txtFileName.value = elmSelectedImage.src.replace(/^[^*]*(\*\*\*)/, "$1"); // fix placeholder src values that editor converted to abs paths
txtFileName.intImageHeight = elmSelectedImage.height;
txtFileName.intImageWidth = elmSelectedImage.width;
txtVertical.value = elmSelectedImage.vspace;
txtHorizontal.value = elmSelectedImage.hspace;
txtBorder.value = elmSelectedImage.border;
txtAltText.value = elmSelectedImage.alt;
selAlignment.value = elmSelectedImage.align;
}
}
}
}
txtFileName.value = txtFileName.value || "http://";
txtFileName.focus();
}
function _isValidNumber(txtBox) {
var val = parseInt(txtBox);
if (isNaN(val) || val < 0 || val > 999) { return false; }
return true;
}
function btnOKClick() {
var elmImage;
var intAlignment;
var htmlSelectionControl = "Control";
var globalDoc = window.dialogArguments;
var grngMaster = globalDoc.selection.createRange();
// error checking
if (!txtFileName.value || txtFileName.value == "http://") {
alert("Image URL must be specified.");
txtFileName.focus();
return;
}
if (txtHorizontal.value && !_isValidNumber(txtHorizontal.value)) {
alert("Horizontal spacing must be a number between 0 and 999.");
txtHorizontal.focus();
return;
}
if (txtBorder.value && !_isValidNumber(txtBorder.value)) {
alert("Border thickness must be a number between 0 and 999.");
txtBorder.focus();
return;
}
if (txtVertical.value && !_isValidNumber(txtVertical.value)) {
alert("Vertical spacing must be a number between 0 and 999.");
txtVertical.focus();
return;
}
// delete selected content and replace with image
if (globalDoc.selection.type == htmlSelectionControl && !txtFileName.fImageLoaded) {
grngMaster.execCommand('Delete');
grngMaster = globalDoc.selection.createRange();
}
idstr = "\" id=\"556e697175657e537472696e67"; // new image creation ID
if (!txtFileName.fImageLoaded) {
grngMaster.execCommand("InsertImage", false, idstr);
elmImage = globalDoc.all['556e697175657e537472696e67'];
elmImage.removeAttribute("id");
elmImage.removeAttribute("src");
grngMaster.moveStart("character", -1);
} else {
elmImage = grngMaster.item(0);
if (elmImage.src != txtFileName.value) {
grngMaster.execCommand('Delete');
grngMaster = globalDoc.selection.createRange();
grngMaster.execCommand("InsertImage", false, idstr);
elmImage = globalDoc.all['556e697175657e537472696e67'];
elmImage.removeAttribute("id");
elmImage.removeAttribute("src");
grngMaster.moveStart("character", -1);
txtFileName.fImageLoaded = false;
}
grngMaster = _getTextRange(elmImage);
}
if (txtFileName.fImageLoaded) {
elmImage.style.width = txtFileName.intImageWidth;
elmImage.style.height = txtFileName.intImageHeight;
}
if (txtFileName.value.length > 2040) {
txtFileName.value = txtFileName.value.substring(0,2040);
}
elmImage.src = txtFileName.value;
if (txtHorizontal.value != "") { elmImage.hspace = parseInt(txtHorizontal.value); }
else { elmImage.hspace = 0; }
if (txtVertical.value != "") { elmImage.vspace = parseInt(txtVertical.value); }
else { elmImage.vspace = 0; }
elmImage.alt = txtAltText.value;
if (txtBorder.value != "") { elmImage.border = parseInt(txtBorder.value); }
else { elmImage.border = 0; }
elmImage.align = selAlignment.value;
grngMaster.collapse(false);
grngMaster.select();
window.close();
}
</SCRIPT>
</HEAD>
<BODY id=bdy onload="Init()" style="background: threedface; color: windowtext;" scroll=no>
<DIV id=divFileName style="left: 0.98em; top: 1.2168em; width: 7em; height: 1.2168em; ">Image URL:</DIV>
<INPUT ID=txtFileName type=text style="left: 8.54em; top: 1.0647em; width: 21.5em;height: 2.1294em; " tabIndex=10 onfocus="select()">
<DIV id=divAltText style="left: 0.98em; top: 4.1067em; width: 6.58em; height: 1.2168em; ">Alternate Text:</DIV>
<INPUT type=text ID=txtAltText tabIndex=15 style="left: 8.54em; top: 3.8025em; width: 21.5em; height: 2.1294em; " onfocus="select()">
<FIELDSET id=fldLayout style="left: .9em; top: 7.1em; width: 17.08em; height: 7.6em;">
<LEGEND id=lgdLayout>Layout</LEGEND>
</FIELDSET>
<FIELDSET id=fldSpacing style="left: 18.9em; top: 7.1em; width: 11em; height: 7.6em;">
<LEGEND id=lgdSpacing>Spacing</LEGEND>
</FIELDSET>
<DIV id=divAlign style="left: 1.82em; top: 9.126em; width: 4.76em; height: 1.2168em; ">Alignment:</DIV>
<SELECT size=1 ID=selAlignment tabIndex=20 style="left: 10.36em; top: 8.8218em; width: 6.72em; height: 1.2168em; ">
<OPTION id=optNotSet value=""> Not set </OPTION>
<OPTION id=optLeft value=left> Left </OPTION>
<OPTION id=optRight value=right> Right </OPTION>
<OPTION id=optTexttop value=textTop> Texttop </OPTION>
<OPTION id=optAbsMiddle value=absMiddle> Absmiddle </OPTION>
<OPTION id=optBaseline value=baseline SELECTED> Baseline </OPTION>
<OPTION id=optAbsBottom value=absBottom> Absbottom </OPTION>
<OPTION id=optBottom value=bottom> Bottom </OPTION>
<OPTION id=optMiddle value=middle> Middle </OPTION>
<OPTION id=optTop value=top> Top </OPTION>
</SELECT>
<DIV id=divHoriz style="left: 19.88em; top: 9.126em; width: 4.76em; height: 1.2168em; ">Horizontal:</DIV>
<INPUT ID=txtHorizontal style="left: 24.92em; top: 8.8218em; width: 4.2em; height: 2.1294em; ime-mode: disabled;" type=text size=3 maxlength=3 value="" tabIndex=25 onfocus="select()">
<DIV id=divBorder style="left: 1.82em; top: 12.0159em; width: 8.12em; height: 1.2168em; ">Border Thickness:</DIV>
<INPUT ID=txtBorder style="left: 10.36em; top: 11.5596em; width: 6.72em; height: 2.1294em; ime-mode: disabled;" type=text size=3 maxlength=3 value="" tabIndex=21 onfocus="select()">
<DIV id=divVert style="left: 19.88em; top: 12.0159em; width: 3.64em; height: 1.2168em; ">Vertical:</DIV>
<INPUT ID=txtVertical style="left: 24.92em; top: 11.5596em; width: 4.2em; height: 2.1294em; ime-mode: disabled;" type=text size=3 maxlength=3 value="" tabIndex=30 onfocus="select()">
<BUTTON ID=btnOK style="left: 31.36em; top: 1.0647em; width: 7em; height: 2.2em; " type=submit tabIndex=40>OK</BUTTON>
<BUTTON ID=btnCancel style="left: 31.36em; top: 3.6504em; width: 7em; height: 2.2em; " type=reset tabIndex=45 onClick="window.close();">Cancel</BUTTON>
</BODY>
</HTML>

View file

@ -0,0 +1,109 @@
// htmlArea v3.0 - Copyright (c) 2002, 2003 interactivetools.com, inc.
// This copyright notice MUST stay intact for use (see license.txt).
//
// Portions (c) dynarch.com, 2003
//
// A free WYSIWYG editor replacement for <textarea> fields.
// For full source code and docs, visit http://www.interactivetools.com/
//
// Version 3.0 developed by Mihai Bazon.
// http://dynarch.com/mishoo
//
// $Id$
function getAbsolutePos(el) {
var r = { x: el.offsetLeft, y: el.offsetTop };
if (el.offsetParent) {
var tmp = getAbsolutePos(el.offsetParent);
r.x += tmp.x;
r.y += tmp.y;
}
return r;
};
function comboSelectValue(c, val) {
var ops = c.getElementsByTagName("option");
for (var i = ops.length; --i >= 0;) {
var op = ops[i];
op.selected = (op.value == val);
}
c.value = val;
};
function __dlg_onclose() {
opener.Dialog._return(null);
};
function __dlg_init(bottom) {
var body = document.body;
var body_height = 0;
if (typeof bottom == "undefined") {
var div = document.createElement("div");
body.appendChild(div);
var pos = getAbsolutePos(div);
body_height = pos.y;
} else {
var pos = getAbsolutePos(bottom);
body_height = pos.y + bottom.offsetHeight;
}
window.dialogArguments = opener.Dialog._arguments;
if (!document.all) {
window.sizeToContent();
window.sizeToContent(); // for reasons beyond understanding,
// only if we call it twice we get the
// correct size.
window.addEventListener("unload", __dlg_onclose, true);
// center on parent
var x = opener.screenX + (opener.outerWidth - window.outerWidth) / 2;
var y = opener.screenY + (opener.outerHeight - window.outerHeight) / 2;
window.moveTo(x, y);
window.innerWidth = body.offsetWidth + 5;
window.innerHeight = body_height + 2;
} else {
// window.dialogHeight = body.offsetHeight + 50 + "px";
// window.dialogWidth = body.offsetWidth + "px";
window.resizeTo(body.offsetWidth, body_height);
var ch = body.clientHeight;
var cw = body.clientWidth;
window.resizeBy(body.offsetWidth - cw, body_height - ch);
var W = body.offsetWidth;
var H = 2 * body_height - ch;
var x = (screen.availWidth - W) / 2;
var y = (screen.availHeight - H) / 2;
window.moveTo(x, y);
}
document.body.onkeypress = __dlg_close_on_esc;
};
function __dlg_translate(i18n) {
var types = ["span", "option", "td", "button", "div"];
for (var type in types) {
var spans = document.getElementsByTagName(types[type]);
for (var i = spans.length; --i >= 0;) {
var span = spans[i];
if (span.firstChild && span.firstChild.data) {
var txt = i18n[span.firstChild.data];
if (txt)
span.firstChild.data = txt;
}
}
}
var txt = i18n[document.title];
if (txt)
document.title = txt;
};
// closes the dialog and passes the return info upper.
function __dlg_close(val) {
opener.Dialog._return(val);
window.close();
};
function __dlg_close_on_esc(ev) {
ev || (ev = window.event);
if (ev.keyCode == 27) {
window.close();
return false;
}
return true;
};

View file

@ -0,0 +1,347 @@
<!-- note: this version of the color picker is optimized for IE 5.5+ only -->
<html><head><title>Select Color</title>
<script type="text/javascript" src="popup.js"></script>
<script type="text/javascript">
window.resizeTo(240, 182);
function _CloseOnEsc() {
if (event.keyCode == 27) { window.close(); return; }
}
function Init() { // run on page load
__dlg_init(); // <!-- this can be found in popup.js -->
document.body.onkeypress = _CloseOnEsc;
var color = window.dialogArguments;
color = ValidateColor(color) || '000000';
View(color); // set default color
}
function View(color) { // preview color
document.getElementById("ColorPreview").style.backgroundColor = '#' + color;
document.getElementById("ColorHex").value = '#' + color;
}
function Set(string) { // select color
var color = ValidateColor(string);
if (color == null) { alert("Invalid color code: " + string); } // invalid color
else { // valid color
View(color); // show selected color
__dlg_close(color);
}
}
function ValidateColor(string) { // return valid color code
string = string || '';
string = string + "";
string = string.toUpperCase();
var chars = '0123456789ABCDEF';
var out = '';
for (var i=0; i<string.length; i++) { // remove invalid color chars
var schar = string.charAt(i);
if (chars.indexOf(schar) != -1) { out += schar; }
}
if (out.length != 6) { return null; } // check length
return out;
}
</script>
</head>
<body style="background:ButtonFace; margin:0px; padding:0px" onload="Init()">
<form method="get" style="margin:0px; padding:0px" onSubmit="Set(document.getElementById('ColorHex').value); return false;">
<table border="0px" cellspacing="0px" cellpadding="4" width="100%">
<tr>
<td style="background:buttonface" valign=center><div style="background-color: #000000; padding: 1; height: 21px; width: 50px"><div id="ColorPreview" style="height: 100%; width: 100%"></div></div></td>
<td style="background:buttonface" valign=center><input type="text" name="ColorHex"
id="ColorHex" value="" size=15 style="font-size: 12px"></td>
<td style="background:buttonface" width=100%></td>
</tr>
</table>
</form>
<table border="0" cellspacing="1px" cellpadding="0px" width="100%" bgcolor="#000000" style="cursor: hand;">
<tr>
<td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td>
<td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td>
<td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td>
<td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td>
<td bgcolor=#003300 onMouseOver=View('003300') onClick=Set('003300') height="10px" width="10px"></td>
<td bgcolor=#006600 onMouseOver=View('006600') onClick=Set('006600') height="10px" width="10px"></td>
<td bgcolor=#009900 onMouseOver=View('009900') onClick=Set('009900') height="10px" width="10px"></td>
<td bgcolor=#00CC00 onMouseOver=View('00CC00') onClick=Set('00CC00') height="10px" width="10px"></td>
<td bgcolor=#00FF00 onMouseOver=View('00FF00') onClick=Set('00FF00') height="10px" width="10px"></td>
<td bgcolor=#330000 onMouseOver=View('330000') onClick=Set('330000') height="10px" width="10px"></td>
<td bgcolor=#333300 onMouseOver=View('333300') onClick=Set('333300') height="10px" width="10px"></td>
<td bgcolor=#336600 onMouseOver=View('336600') onClick=Set('336600') height="10px" width="10px"></td>
<td bgcolor=#339900 onMouseOver=View('339900') onClick=Set('339900') height="10px" width="10px"></td>
<td bgcolor=#33CC00 onMouseOver=View('33CC00') onClick=Set('33CC00') height="10px" width="10px"></td>
<td bgcolor=#33FF00 onMouseOver=View('33FF00') onClick=Set('33FF00') height="10px" width="10px"></td>
<td bgcolor=#660000 onMouseOver=View('660000') onClick=Set('660000') height="10px" width="10px"></td>
<td bgcolor=#663300 onMouseOver=View('663300') onClick=Set('663300') height="10px" width="10px"></td>
<td bgcolor=#666600 onMouseOver=View('666600') onClick=Set('666600') height="10px" width="10px"></td>
<td bgcolor=#669900 onMouseOver=View('669900') onClick=Set('669900') height="10px" width="10px"></td>
<td bgcolor=#66CC00 onMouseOver=View('66CC00') onClick=Set('66CC00') height="10px" width="10px"></td>
<td bgcolor=#66FF00 onMouseOver=View('66FF00') onClick=Set('66FF00') height="10px" width="10px"></td>
</tr>
<tr>
<td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td>
<td bgcolor=#333333 onMouseOver=View('333333') onClick=Set('333333') height="10px" width="10px"></td>
<td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td>
<td bgcolor=#000033 onMouseOver=View('000033') onClick=Set('000033') height="10px" width="10px"></td>
<td bgcolor=#003333 onMouseOver=View('003333') onClick=Set('003333') height="10px" width="10px"></td>
<td bgcolor=#006633 onMouseOver=View('006633') onClick=Set('006633') height="10px" width="10px"></td>
<td bgcolor=#009933 onMouseOver=View('009933') onClick=Set('009933') height="10px" width="10px"></td>
<td bgcolor=#00CC33 onMouseOver=View('00CC33') onClick=Set('00CC33') height="10px" width="10px"></td>
<td bgcolor=#00FF33 onMouseOver=View('00FF33') onClick=Set('00FF33') height="10px" width="10px"></td>
<td bgcolor=#330033 onMouseOver=View('330033') onClick=Set('330033') height="10px" width="10px"></td>
<td bgcolor=#333333 onMouseOver=View('333333') onClick=Set('333333') height="10px" width="10px"></td>
<td bgcolor=#336633 onMouseOver=View('336633') onClick=Set('336633') height="10px" width="10px"></td>
<td bgcolor=#339933 onMouseOver=View('339933') onClick=Set('339933') height="10px" width="10px"></td>
<td bgcolor=#33CC33 onMouseOver=View('33CC33') onClick=Set('33CC33') height="10px" width="10px"></td>
<td bgcolor=#33FF33 onMouseOver=View('33FF33') onClick=Set('33FF33') height="10px" width="10px"></td>
<td bgcolor=#660033 onMouseOver=View('660033') onClick=Set('660033') height="10px" width="10px"></td>
<td bgcolor=#663333 onMouseOver=View('663333') onClick=Set('663333') height="10px" width="10px"></td>
<td bgcolor=#666633 onMouseOver=View('666633') onClick=Set('666633') height="10px" width="10px"></td>
<td bgcolor=#669933 onMouseOver=View('669933') onClick=Set('669933') height="10px" width="10px"></td>
<td bgcolor=#66CC33 onMouseOver=View('66CC33') onClick=Set('66CC33') height="10px" width="10px"></td>
<td bgcolor=#66FF33 onMouseOver=View('66FF33') onClick=Set('66FF33') height="10px" width="10px"></td>
</tr>
<tr>
<td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td>
<td bgcolor=#666666 onMouseOver=View('666666') onClick=Set('666666') height="10px" width="10px"></td>
<td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td>
<td bgcolor=#000066 onMouseOver=View('000066') onClick=Set('000066') height="10px" width="10px"></td>
<td bgcolor=#003366 onMouseOver=View('003366') onClick=Set('003366') height="10px" width="10px"></td>
<td bgcolor=#006666 onMouseOver=View('006666') onClick=Set('006666') height="10px" width="10px"></td>
<td bgcolor=#009966 onMouseOver=View('009966') onClick=Set('009966') height="10px" width="10px"></td>
<td bgcolor=#00CC66 onMouseOver=View('00CC66') onClick=Set('00CC66') height="10px" width="10px"></td>
<td bgcolor=#00FF66 onMouseOver=View('00FF66') onClick=Set('00FF66') height="10px" width="10px"></td>
<td bgcolor=#330066 onMouseOver=View('330066') onClick=Set('330066') height="10px" width="10px"></td>
<td bgcolor=#333366 onMouseOver=View('333366') onClick=Set('333366') height="10px" width="10px"></td>
<td bgcolor=#336666 onMouseOver=View('336666') onClick=Set('336666') height="10px" width="10px"></td>
<td bgcolor=#339966 onMouseOver=View('339966') onClick=Set('339966') height="10px" width="10px"></td>
<td bgcolor=#33CC66 onMouseOver=View('33CC66') onClick=Set('33CC66') height="10px" width="10px"></td>
<td bgcolor=#33FF66 onMouseOver=View('33FF66') onClick=Set('33FF66') height="10px" width="10px"></td>
<td bgcolor=#660066 onMouseOver=View('660066') onClick=Set('660066') height="10px" width="10px"></td>
<td bgcolor=#663366 onMouseOver=View('663366') onClick=Set('663366') height="10px" width="10px"></td>
<td bgcolor=#666666 onMouseOver=View('666666') onClick=Set('666666') height="10px" width="10px"></td>
<td bgcolor=#669966 onMouseOver=View('669966') onClick=Set('669966') height="10px" width="10px"></td>
<td bgcolor=#66CC66 onMouseOver=View('66CC66') onClick=Set('66CC66') height="10px" width="10px"></td>
<td bgcolor=#66FF66 onMouseOver=View('66FF66') onClick=Set('66FF66') height="10px" width="10px"></td>
</tr>
<tr>
<td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td>
<td bgcolor=#999999 onMouseOver=View('999999') onClick=Set('999999') height="10px" width="10px"></td>
<td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td>
<td bgcolor=#000099 onMouseOver=View('000099') onClick=Set('000099') height="10px" width="10px"></td>
<td bgcolor=#003399 onMouseOver=View('003399') onClick=Set('003399') height="10px" width="10px"></td>
<td bgcolor=#006699 onMouseOver=View('006699') onClick=Set('006699') height="10px" width="10px"></td>
<td bgcolor=#009999 onMouseOver=View('009999') onClick=Set('009999') height="10px" width="10px"></td>
<td bgcolor=#00CC99 onMouseOver=View('00CC99') onClick=Set('00CC99') height="10px" width="10px"></td>
<td bgcolor=#00FF99 onMouseOver=View('00FF99') onClick=Set('00FF99') height="10px" width="10px"></td>
<td bgcolor=#330099 onMouseOver=View('330099') onClick=Set('330099') height="10px" width="10px"></td>
<td bgcolor=#333399 onMouseOver=View('333399') onClick=Set('333399') height="10px" width="10px"></td>
<td bgcolor=#336699 onMouseOver=View('336699') onClick=Set('336699') height="10px" width="10px"></td>
<td bgcolor=#339999 onMouseOver=View('339999') onClick=Set('339999') height="10px" width="10px"></td>
<td bgcolor=#33CC99 onMouseOver=View('33CC99') onClick=Set('33CC99') height="10px" width="10px"></td>
<td bgcolor=#33FF99 onMouseOver=View('33FF99') onClick=Set('33FF99') height="10px" width="10px"></td>
<td bgcolor=#660099 onMouseOver=View('660099') onClick=Set('660099') height="10px" width="10px"></td>
<td bgcolor=#663399 onMouseOver=View('663399') onClick=Set('663399') height="10px" width="10px"></td>
<td bgcolor=#666699 onMouseOver=View('666699') onClick=Set('666699') height="10px" width="10px"></td>
<td bgcolor=#669999 onMouseOver=View('669999') onClick=Set('669999') height="10px" width="10px"></td>
<td bgcolor=#66CC99 onMouseOver=View('66CC99') onClick=Set('66CC99') height="10px" width="10px"></td>
<td bgcolor=#66FF99 onMouseOver=View('66FF99') onClick=Set('66FF99') height="10px" width="10px"></td>
</tr>
<tr>
<td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td>
<td bgcolor=#CCCCCC onMouseOver=View('CCCCCC') onClick=Set('CCCCCC') height="10px" width="10px"></td>
<td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td>
<td bgcolor=#0000CC onMouseOver=View('0000CC') onClick=Set('0000CC') height="10px" width="10px"></td>
<td bgcolor=#0033CC onMouseOver=View('0033CC') onClick=Set('0033CC') height="10px" width="10px"></td>
<td bgcolor=#0066CC onMouseOver=View('0066CC') onClick=Set('0066CC') height="10px" width="10px"></td>
<td bgcolor=#0099CC onMouseOver=View('0099CC') onClick=Set('0099CC') height="10px" width="10px"></td>
<td bgcolor=#00CCCC onMouseOver=View('00CCCC') onClick=Set('00CCCC') height="10px" width="10px"></td>
<td bgcolor=#00FFCC onMouseOver=View('00FFCC') onClick=Set('00FFCC') height="10px" width="10px"></td>
<td bgcolor=#3300CC onMouseOver=View('3300CC') onClick=Set('3300CC') height="10px" width="10px"></td>
<td bgcolor=#3333CC onMouseOver=View('3333CC') onClick=Set('3333CC') height="10px" width="10px"></td>
<td bgcolor=#3366CC onMouseOver=View('3366CC') onClick=Set('3366CC') height="10px" width="10px"></td>
<td bgcolor=#3399CC onMouseOver=View('3399CC') onClick=Set('3399CC') height="10px" width="10px"></td>
<td bgcolor=#33CCCC onMouseOver=View('33CCCC') onClick=Set('33CCCC') height="10px" width="10px"></td>
<td bgcolor=#33FFCC onMouseOver=View('33FFCC') onClick=Set('33FFCC') height="10px" width="10px"></td>
<td bgcolor=#6600CC onMouseOver=View('6600CC') onClick=Set('6600CC') height="10px" width="10px"></td>
<td bgcolor=#6633CC onMouseOver=View('6633CC') onClick=Set('6633CC') height="10px" width="10px"></td>
<td bgcolor=#6666CC onMouseOver=View('6666CC') onClick=Set('6666CC') height="10px" width="10px"></td>
<td bgcolor=#6699CC onMouseOver=View('6699CC') onClick=Set('6699CC') height="10px" width="10px"></td>
<td bgcolor=#66CCCC onMouseOver=View('66CCCC') onClick=Set('66CCCC') height="10px" width="10px"></td>
<td bgcolor=#66FFCC onMouseOver=View('66FFCC') onClick=Set('66FFCC') height="10px" width="10px"></td>
</tr>
<tr>
<td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td>
<td bgcolor=#FFFFFF onMouseOver=View('FFFFFF') onClick=Set('FFFFFF') height="10px" width="10px"></td>
<td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td>
<td bgcolor=#0000FF onMouseOver=View('0000FF') onClick=Set('0000FF') height="10px" width="10px"></td>
<td bgcolor=#0033FF onMouseOver=View('0033FF') onClick=Set('0033FF') height="10px" width="10px"></td>
<td bgcolor=#0066FF onMouseOver=View('0066FF') onClick=Set('0066FF') height="10px" width="10px"></td>
<td bgcolor=#0099FF onMouseOver=View('0099FF') onClick=Set('0099FF') height="10px" width="10px"></td>
<td bgcolor=#00CCFF onMouseOver=View('00CCFF') onClick=Set('00CCFF') height="10px" width="10px"></td>
<td bgcolor=#00FFFF onMouseOver=View('00FFFF') onClick=Set('00FFFF') height="10px" width="10px"></td>
<td bgcolor=#3300FF onMouseOver=View('3300FF') onClick=Set('3300FF') height="10px" width="10px"></td>
<td bgcolor=#3333FF onMouseOver=View('3333FF') onClick=Set('3333FF') height="10px" width="10px"></td>
<td bgcolor=#3366FF onMouseOver=View('3366FF') onClick=Set('3366FF') height="10px" width="10px"></td>
<td bgcolor=#3399FF onMouseOver=View('3399FF') onClick=Set('3399FF') height="10px" width="10px"></td>
<td bgcolor=#33CCFF onMouseOver=View('33CCFF') onClick=Set('33CCFF') height="10px" width="10px"></td>
<td bgcolor=#33FFFF onMouseOver=View('33FFFF') onClick=Set('33FFFF') height="10px" width="10px"></td>
<td bgcolor=#6600FF onMouseOver=View('6600FF') onClick=Set('6600FF') height="10px" width="10px"></td>
<td bgcolor=#6633FF onMouseOver=View('6633FF') onClick=Set('6633FF') height="10px" width="10px"></td>
<td bgcolor=#6666FF onMouseOver=View('6666FF') onClick=Set('6666FF') height="10px" width="10px"></td>
<td bgcolor=#6699FF onMouseOver=View('6699FF') onClick=Set('6699FF') height="10px" width="10px"></td>
<td bgcolor=#66CCFF onMouseOver=View('66CCFF') onClick=Set('66CCFF') height="10px" width="10px"></td>
<td bgcolor=#66FFFF onMouseOver=View('66FFFF') onClick=Set('66FFFF') height="10px" width="10px"></td>
</tr>
<tr>
<td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td>
<td bgcolor=#FF0000 onMouseOver=View('FF0000') onClick=Set('FF0000') height="10px" width="10px"></td>
<td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td>
<td bgcolor=#990000 onMouseOver=View('990000') onClick=Set('990000') height="10px" width="10px"></td>
<td bgcolor=#993300 onMouseOver=View('993300') onClick=Set('993300') height="10px" width="10px"></td>
<td bgcolor=#996600 onMouseOver=View('996600') onClick=Set('996600') height="10px" width="10px"></td>
<td bgcolor=#999900 onMouseOver=View('999900') onClick=Set('999900') height="10px" width="10px"></td>
<td bgcolor=#99CC00 onMouseOver=View('99CC00') onClick=Set('99CC00') height="10px" width="10px"></td>
<td bgcolor=#99FF00 onMouseOver=View('99FF00') onClick=Set('99FF00') height="10px" width="10px"></td>
<td bgcolor=#CC0000 onMouseOver=View('CC0000') onClick=Set('CC0000') height="10px" width="10px"></td>
<td bgcolor=#CC3300 onMouseOver=View('CC3300') onClick=Set('CC3300') height="10px" width="10px"></td>
<td bgcolor=#CC6600 onMouseOver=View('CC6600') onClick=Set('CC6600') height="10px" width="10px"></td>
<td bgcolor=#CC9900 onMouseOver=View('CC9900') onClick=Set('CC9900') height="10px" width="10px"></td>
<td bgcolor=#CCCC00 onMouseOver=View('CCCC00') onClick=Set('CCCC00') height="10px" width="10px"></td>
<td bgcolor=#CCFF00 onMouseOver=View('CCFF00') onClick=Set('CCFF00') height="10px" width="10px"></td>
<td bgcolor=#FF0000 onMouseOver=View('FF0000') onClick=Set('FF0000') height="10px" width="10px"></td>
<td bgcolor=#FF3300 onMouseOver=View('FF3300') onClick=Set('FF3300') height="10px" width="10px"></td>
<td bgcolor=#FF6600 onMouseOver=View('FF6600') onClick=Set('FF6600') height="10px" width="10px"></td>
<td bgcolor=#FF9900 onMouseOver=View('FF9900') onClick=Set('FF9900') height="10px" width="10px"></td>
<td bgcolor=#FFCC00 onMouseOver=View('FFCC00') onClick=Set('FFCC00') height="10px" width="10px"></td>
<td bgcolor=#FFFF00 onMouseOver=View('FFFF00') onClick=Set('FFFF00') height="10px" width="10px"></td>
</tr>
<tr>
<td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td>
<td bgcolor=#00FF00 onMouseOver=View('00FF00') onClick=Set('00FF00') height="10px" width="10px"></td>
<td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td>
<td bgcolor=#990033 onMouseOver=View('990033') onClick=Set('990033') height="10px" width="10px"></td>
<td bgcolor=#993333 onMouseOver=View('993333') onClick=Set('993333') height="10px" width="10px"></td>
<td bgcolor=#996633 onMouseOver=View('996633') onClick=Set('996633') height="10px" width="10px"></td>
<td bgcolor=#999933 onMouseOver=View('999933') onClick=Set('999933') height="10px" width="10px"></td>
<td bgcolor=#99CC33 onMouseOver=View('99CC33') onClick=Set('99CC33') height="10px" width="10px"></td>
<td bgcolor=#99FF33 onMouseOver=View('99FF33') onClick=Set('99FF33') height="10px" width="10px"></td>
<td bgcolor=#CC0033 onMouseOver=View('CC0033') onClick=Set('CC0033') height="10px" width="10px"></td>
<td bgcolor=#CC3333 onMouseOver=View('CC3333') onClick=Set('CC3333') height="10px" width="10px"></td>
<td bgcolor=#CC6633 onMouseOver=View('CC6633') onClick=Set('CC6633') height="10px" width="10px"></td>
<td bgcolor=#CC9933 onMouseOver=View('CC9933') onClick=Set('CC9933') height="10px" width="10px"></td>
<td bgcolor=#CCCC33 onMouseOver=View('CCCC33') onClick=Set('CCCC33') height="10px" width="10px"></td>
<td bgcolor=#CCFF33 onMouseOver=View('CCFF33') onClick=Set('CCFF33') height="10px" width="10px"></td>
<td bgcolor=#FF0033 onMouseOver=View('FF0033') onClick=Set('FF0033') height="10px" width="10px"></td>
<td bgcolor=#FF3333 onMouseOver=View('FF3333') onClick=Set('FF3333') height="10px" width="10px"></td>
<td bgcolor=#FF6633 onMouseOver=View('FF6633') onClick=Set('FF6633') height="10px" width="10px"></td>
<td bgcolor=#FF9933 onMouseOver=View('FF9933') onClick=Set('FF9933') height="10px" width="10px"></td>
<td bgcolor=#FFCC33 onMouseOver=View('FFCC33') onClick=Set('FFCC33') height="10px" width="10px"></td>
<td bgcolor=#FFFF33 onMouseOver=View('FFFF33') onClick=Set('FFFF33') height="10px" width="10px"></td>
</tr>
<tr>
<td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td>
<td bgcolor=#0000FF onMouseOver=View('0000FF') onClick=Set('0000FF') height="10px" width="10px"></td>
<td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td>
<td bgcolor=#990066 onMouseOver=View('990066') onClick=Set('990066') height="10px" width="10px"></td>
<td bgcolor=#993366 onMouseOver=View('993366') onClick=Set('993366') height="10px" width="10px"></td>
<td bgcolor=#996666 onMouseOver=View('996666') onClick=Set('996666') height="10px" width="10px"></td>
<td bgcolor=#999966 onMouseOver=View('999966') onClick=Set('999966') height="10px" width="10px"></td>
<td bgcolor=#99CC66 onMouseOver=View('99CC66') onClick=Set('99CC66') height="10px" width="10px"></td>
<td bgcolor=#99FF66 onMouseOver=View('99FF66') onClick=Set('99FF66') height="10px" width="10px"></td>
<td bgcolor=#CC0066 onMouseOver=View('CC0066') onClick=Set('CC0066') height="10px" width="10px"></td>
<td bgcolor=#CC3366 onMouseOver=View('CC3366') onClick=Set('CC3366') height="10px" width="10px"></td>
<td bgcolor=#CC6666 onMouseOver=View('CC6666') onClick=Set('CC6666') height="10px" width="10px"></td>
<td bgcolor=#CC9966 onMouseOver=View('CC9966') onClick=Set('CC9966') height="10px" width="10px"></td>
<td bgcolor=#CCCC66 onMouseOver=View('CCCC66') onClick=Set('CCCC66') height="10px" width="10px"></td>
<td bgcolor=#CCFF66 onMouseOver=View('CCFF66') onClick=Set('CCFF66') height="10px" width="10px"></td>
<td bgcolor=#FF0066 onMouseOver=View('FF0066') onClick=Set('FF0066') height="10px" width="10px"></td>
<td bgcolor=#FF3366 onMouseOver=View('FF3366') onClick=Set('FF3366') height="10px" width="10px"></td>
<td bgcolor=#FF6666 onMouseOver=View('FF6666') onClick=Set('FF6666') height="10px" width="10px"></td>
<td bgcolor=#FF9966 onMouseOver=View('FF9966') onClick=Set('FF9966') height="10px" width="10px"></td>
<td bgcolor=#FFCC66 onMouseOver=View('FFCC66') onClick=Set('FFCC66') height="10px" width="10px"></td>
<td bgcolor=#FFFF66 onMouseOver=View('FFFF66') onClick=Set('FFFF66') height="10px" width="10px"></td>
</tr>
<tr>
<td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td>
<td bgcolor=#FFFF00 onMouseOver=View('FFFF00') onClick=Set('FFFF00') height="10px" width="10px"></td>
<td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td>
<td bgcolor=#990099 onMouseOver=View('990099') onClick=Set('990099') height="10px" width="10px"></td>
<td bgcolor=#993399 onMouseOver=View('993399') onClick=Set('993399') height="10px" width="10px"></td>
<td bgcolor=#996699 onMouseOver=View('996699') onClick=Set('996699') height="10px" width="10px"></td>
<td bgcolor=#999999 onMouseOver=View('999999') onClick=Set('999999') height="10px" width="10px"></td>
<td bgcolor=#99CC99 onMouseOver=View('99CC99') onClick=Set('99CC99') height="10px" width="10px"></td>
<td bgcolor=#99FF99 onMouseOver=View('99FF99') onClick=Set('99FF99') height="10px" width="10px"></td>
<td bgcolor=#CC0099 onMouseOver=View('CC0099') onClick=Set('CC0099') height="10px" width="10px"></td>
<td bgcolor=#CC3399 onMouseOver=View('CC3399') onClick=Set('CC3399') height="10px" width="10px"></td>
<td bgcolor=#CC6699 onMouseOver=View('CC6699') onClick=Set('CC6699') height="10px" width="10px"></td>
<td bgcolor=#CC9999 onMouseOver=View('CC9999') onClick=Set('CC9999') height="10px" width="10px"></td>
<td bgcolor=#CCCC99 onMouseOver=View('CCCC99') onClick=Set('CCCC99') height="10px" width="10px"></td>
<td bgcolor=#CCFF99 onMouseOver=View('CCFF99') onClick=Set('CCFF99') height="10px" width="10px"></td>
<td bgcolor=#FF0099 onMouseOver=View('FF0099') onClick=Set('FF0099') height="10px" width="10px"></td>
<td bgcolor=#FF3399 onMouseOver=View('FF3399') onClick=Set('FF3399') height="10px" width="10px"></td>
<td bgcolor=#FF6699 onMouseOver=View('FF6699') onClick=Set('FF6699') height="10px" width="10px"></td>
<td bgcolor=#FF9999 onMouseOver=View('FF9999') onClick=Set('FF9999') height="10px" width="10px"></td>
<td bgcolor=#FFCC99 onMouseOver=View('FFCC99') onClick=Set('FFCC99') height="10px" width="10px"></td>
<td bgcolor=#FFFF99 onMouseOver=View('FFFF99') onClick=Set('FFFF99') height="10px" width="10px"></td>
</tr>
<tr>
<td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td>
<td bgcolor=#00FFFF onMouseOver=View('00FFFF') onClick=Set('00FFFF') height="10px" width="10px"></td>
<td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td>
<td bgcolor=#9900CC onMouseOver=View('9900CC') onClick=Set('9900CC') height="10px" width="10px"></td>
<td bgcolor=#9933CC onMouseOver=View('9933CC') onClick=Set('9933CC') height="10px" width="10px"></td>
<td bgcolor=#9966CC onMouseOver=View('9966CC') onClick=Set('9966CC') height="10px" width="10px"></td>
<td bgcolor=#9999CC onMouseOver=View('9999CC') onClick=Set('9999CC') height="10px" width="10px"></td>
<td bgcolor=#99CCCC onMouseOver=View('99CCCC') onClick=Set('99CCCC') height="10px" width="10px"></td>
<td bgcolor=#99FFCC onMouseOver=View('99FFCC') onClick=Set('99FFCC') height="10px" width="10px"></td>
<td bgcolor=#CC00CC onMouseOver=View('CC00CC') onClick=Set('CC00CC') height="10px" width="10px"></td>
<td bgcolor=#CC33CC onMouseOver=View('CC33CC') onClick=Set('CC33CC') height="10px" width="10px"></td>
<td bgcolor=#CC66CC onMouseOver=View('CC66CC') onClick=Set('CC66CC') height="10px" width="10px"></td>
<td bgcolor=#CC99CC onMouseOver=View('CC99CC') onClick=Set('CC99CC') height="10px" width="10px"></td>
<td bgcolor=#CCCCCC onMouseOver=View('CCCCCC') onClick=Set('CCCCCC') height="10px" width="10px"></td>
<td bgcolor=#CCFFCC onMouseOver=View('CCFFCC') onClick=Set('CCFFCC') height="10px" width="10px"></td>
<td bgcolor=#FF00CC onMouseOver=View('FF00CC') onClick=Set('FF00CC') height="10px" width="10px"></td>
<td bgcolor=#FF33CC onMouseOver=View('FF33CC') onClick=Set('FF33CC') height="10px" width="10px"></td>
<td bgcolor=#FF66CC onMouseOver=View('FF66CC') onClick=Set('FF66CC') height="10px" width="10px"></td>
<td bgcolor=#FF99CC onMouseOver=View('FF99CC') onClick=Set('FF99CC') height="10px" width="10px"></td>
<td bgcolor=#FFCCCC onMouseOver=View('FFCCCC') onClick=Set('FFCCCC') height="10px" width="10px"></td>
<td bgcolor=#FFFFCC onMouseOver=View('FFFFCC') onClick=Set('FFFFCC') height="10px" width="10px"></td>
</tr>
<tr>
<td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td>
<td bgcolor=#FF00FF onMouseOver=View('FF00FF') onClick=Set('FF00FF') height="10px" width="10px"></td>
<td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td>
<td bgcolor=#9900FF onMouseOver=View('9900FF') onClick=Set('9900FF') height="10px" width="10px"></td>
<td bgcolor=#9933FF onMouseOver=View('9933FF') onClick=Set('9933FF') height="10px" width="10px"></td>
<td bgcolor=#9966FF onMouseOver=View('9966FF') onClick=Set('9966FF') height="10px" width="10px"></td>
<td bgcolor=#9999FF onMouseOver=View('9999FF') onClick=Set('9999FF') height="10px" width="10px"></td>
<td bgcolor=#99CCFF onMouseOver=View('99CCFF') onClick=Set('99CCFF') height="10px" width="10px"></td>
<td bgcolor=#99FFFF onMouseOver=View('99FFFF') onClick=Set('99FFFF') height="10px" width="10px"></td>
<td bgcolor=#CC00FF onMouseOver=View('CC00FF') onClick=Set('CC00FF') height="10px" width="10px"></td>
<td bgcolor=#CC33FF onMouseOver=View('CC33FF') onClick=Set('CC33FF') height="10px" width="10px"></td>
<td bgcolor=#CC66FF onMouseOver=View('CC66FF') onClick=Set('CC66FF') height="10px" width="10px"></td>
<td bgcolor=#CC99FF onMouseOver=View('CC99FF') onClick=Set('CC99FF') height="10px" width="10px"></td>
<td bgcolor=#CCCCFF onMouseOver=View('CCCCFF') onClick=Set('CCCCFF') height="10px" width="10px"></td>
<td bgcolor=#CCFFFF onMouseOver=View('CCFFFF') onClick=Set('CCFFFF') height="10px" width="10px"></td>
<td bgcolor=#FF00FF onMouseOver=View('FF00FF') onClick=Set('FF00FF') height="10px" width="10px"></td>
<td bgcolor=#FF33FF onMouseOver=View('FF33FF') onClick=Set('FF33FF') height="10px" width="10px"></td>
<td bgcolor=#FF66FF onMouseOver=View('FF66FF') onClick=Set('FF66FF') height="10px" width="10px"></td>
<td bgcolor=#FF99FF onMouseOver=View('FF99FF') onClick=Set('FF99FF') height="10px" width="10px"></td>
<td bgcolor=#FFCCFF onMouseOver=View('FFCCFF') onClick=Set('FFCCFF') height="10px" width="10px"></td>
<td bgcolor=#FFFFFF onMouseOver=View('FFFFFF') onClick=Set('FFFFFF') height="10px" width="10px"></td>
</tr>
</table>
</body></html>

View file

@ -0,0 +1,139 @@
// (c) dynarch.com 2003-2004
// Distributed under the same terms as HTMLArea itself.
function PopupWin(editor, title, handler, initFunction) {
this.editor = editor;
this.handler = handler;
var dlg = window.open("", "__ha_dialog",
"toolbar=no,menubar=no,personalbar=no,width=600,height=600,left=20,top=40" +
"scrollbars=no,resizable=no");
this.window = dlg;
var doc = dlg.document;
this.doc = doc;
var self = this;
var base = document.baseURI || document.URL;
if (base && base.match(/(.*)\/([^\/]+)/)) {
base = RegExp.$1 + "/";
}
if (typeof _editor_url != "undefined" && !/^\//.test(_editor_url)) {
// _editor_url doesn't start with '/' which means it's relative
// FIXME: there's a problem here, it could be http:// which
// doesn't start with slash but it's not relative either.
base += _editor_url;
} else
base = _editor_url;
if (!/\/$/.test(base)) {
// base does not end in slash, add it now
base += '/';
}
this.baseURL = base;
doc.open();
var html = "<html><head><title>" + title + "</title>\n";
// html += "<base href='" + base + "htmlarea.js' />\n";
html += "<style type='text/css'>@import url(" + base + "htmlarea.css);</style></head>\n";
html += "<body class='dialog popupwin' id='--HA-body'></body></html>";
doc.write(html);
doc.close();
// sometimes I Hate Mozilla... ;-(
function init2() {
var body = doc.body;
if (!body) {
setTimeout(init2, 25);
return false;
}
dlg.title = title;
doc.documentElement.style.padding = "0px";
doc.documentElement.style.margin = "0px";
var content = doc.createElement("div");
content.className = "content";
self.content = content;
body.appendChild(content);
self.element = body;
initFunction(self);
dlg.focus();
};
init2();
};
PopupWin.prototype.callHandler = function() {
var tags = ["input", "textarea", "select"];
var params = new Object();
for (var ti in tags) {
var tag = tags[ti];
var els = this.content.getElementsByTagName(tag);
for (var j = 0; j < els.length; ++j) {
var el = els[j];
var val = el.value;
if (el.tagName.toLowerCase() == "input") {
if (el.type == "checkbox") {
val = el.checked;
}
}
params[el.name] = val;
}
}
this.handler(this, params);
return false;
};
PopupWin.prototype.close = function() {
this.window.close();
};
PopupWin.prototype.addButtons = function() {
var self = this;
var div = this.doc.createElement("div");
this.content.appendChild(div);
div.className = "buttons";
for (var i = 0; i < arguments.length; ++i) {
var btn = arguments[i];
var button = this.doc.createElement("button");
div.appendChild(button);
button.innerHTML = HTMLArea.I18N.buttons[btn];
switch (btn) {
case "ok":
button.onclick = function() {
self.callHandler();
self.close();
return false;
};
break;
case "cancel":
button.onclick = function() {
self.close();
return false;
};
break;
}
}
};
PopupWin.prototype.showAtElement = function() {
var self = this;
// Mozilla needs some time to realize what's goin' on..
setTimeout(function() {
var w = self.content.offsetWidth + 4;
var h = self.content.offsetHeight + 4;
// size to content -- that's fuckin' buggy in all fuckin' browsers!!!
// so that we set a larger size for the dialog window and then center
// the element inside... phuck!
// center...
var el = self.content;
var s = el.style;
// s.width = el.offsetWidth + "px";
// s.height = el.offsetHeight + "px";
s.position = "absolute";
s.left = (w - el.offsetWidth) / 2 + "px";
s.top = (h - el.offsetHeight) / 2 + "px";
if (HTMLArea.is_gecko) {
self.window.innerWidth = w;
self.window.innerHeight = h;
} else {
self.window.resizeTo(w + 8, h + 35);
}
}, 25);
};

View file

@ -0,0 +1,523 @@
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.2//EN">
<html> <head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>HTMLArea-3.0 Reference</title>
<style type="text/css">
@import url(htmlarea.css);
body { font: 14px verdana,sans-serif; background: #fff; color: #000; }
h1, h2 { font-family:tahoma,sans-serif; }
h1 { border-bottom: 2px solid #000; }
h2 { border-bottom: 1px solid #aaa; }
h3, h4 { margin-bottom: 0px; font-family: Georgia,serif; font-style: italic; }
h4 { font-size: 90%; margin-left: 1em; }
acronym { border-bottom: 1px dotted #063; color: #063; }
p { margin-left: 2em; margin-top: 0.3em; }
li p { margin-left: 0px; }
.abstract { padding: 5px; margin: 0px 10em; font-size: 90%; border: 1px dashed #aaa; background: #eee;}
li { margin-left: 2em; }
em { color: #042; }
a { color: #00f; }
a:hover { color: #f00; }
a:active { color: #f80; }
span.browser { font-weight: bold; color: #864; }
.fixme { font-size: 20px; font-weight: bold; color: red; background: #fab;
padding: 5px; text-align: center; }
.code {
background: #e4efff; padding: 5px; border: 1px dashed #abc; margin-left: 2em; margin-right: 2em;
font-family: fixed,"lucidux mono","andale mono","courier new",monospace;
}
.note, .warning { font-weight: bold; color: #0a0; font-variant: small-caps; }
.warning { color: #a00; }
.string {
color: #06c;
} /* font-lock-string-face */
.comment {
color: #840;
} /* font-lock-comment-face */
.variable-name {
color: #000;
} /* font-lock-variable-name-face */
.type {
color: #008;
font-weight: bold;
} /* font-lock-type-face */
.reference {
color: #048;
} /* font-lock-reference-face */
.preprocessor {
color: #808;
} /* font-lock-preprocessor-face */
.keyword {
color: #00f;
font-weight: bold;
} /* font-lock-keyword-face */
.function-name {
color: #044;
} /* font-lock-function-name-face */
.html-tag {
font-weight: bold;
} /* html-tag-face */
.html-helper-italic {
font-style: italic;
} /* html-helper-italic-face */
.html-helper-bold {
font-weight: bold;
} /* html-helper-bold-face */
</style>
<script type="text/javascript">
_editor_url = './';
_editor_lang = 'en';
</script>
<script type="text/javascript" src="htmlarea.js"></script>
<script type="text/javascript" src="dialog.js"></script>
<script tyle="text/javascript" src="lang/en.js"></script>
</head>
<body onload="HTMLArea.replace('TA')">
<h1>HTMLArea-3.0 Documentation</h1>
<div class="abstract" style="color: red; font-weight: bold">
This documentation contains valid information, but is outdated in the
terms that it does not covers all the features of HTMLArea. A new
documentation project will be started, based on LaTeX.
</div>
<h2>Introduction</h2>
<h3>What is HTMLArea?</h3>
<p>HTMLArea is a free <acronym title="What You See Is What You Get"
>WYSIWYG</acronym> editor replacement for <code>&lt;textarea&gt;</code>
fields. By adding a few simple lines of JavaScript code to your web page
you can replace a regular textarea with a rich text editor that lets your
users do the following:</p>
<ul>
<li>Format text to be bold, italicized, or underlined.</li>
<li>Change the face, size, style and color.</li>
<li>Left, center, or right-justify paragraphs.</li>
<li>Make bulleted or numbered lists.</li>
<li>Indent or un-indent paragraphs.</li>
<li>Insert a horizontal line.</li>
<li>Insert hyperlinks and images.</li>
<li>View the raw HTML source of what they're editing.</li>
<li>and much more...</li>
</ul>
<p>Some of the interesting features of HTMLArea that set's it apart from
other web based WYSIWYG editors are as follows:</p>
<ul>
<li>It's lightweight, fast loading and can transform a regular textarea
into a rich-text editor with a single line of JavaScript.</li>
<li>Generates clean, valid HTML.</li>
<li>It degrades gracefully to older or non-supported browsers
(they get the original textarea field).</li>
<li>It's free and can be incorporated into any free or commercial
program.</li>
<li>It works with any server-side languages (ASP, PHP, Perl, Java,
etc).</li>
<li>It's written in JavaScript and can be easily viewed, modified or
extended.</li>
<li>It remembers entered content when a user navigates away and then hits
"back" in their browser.</li>
<li>Since it replaces existing textareas it doesn't require a lot of code
to add it to your pages (just one line).</li>
<li>Did we mention it was free? ;-)</li>
</ul>
<h3>Is it really free? What's the catch?</h3>
<p>Yes! It's really free. You can use it, modify it, distribute it with your
software, or do just about anything you like with it.</p>
<h3>What are the browser requirements?</h3>
<p>HTMLArea requires <span class="browser"><a
href="http://www.microsoft.com/ie">Internet Explorer</a> &gt;= 5.5</span>
(Windows only), or <span class="browser"><a
href="http://mozilla.org">Mozilla</a> &gt;= 1.3-Beta</span> on any platform.
Any browser based on <a href="http://mozilla.org/newlayout">Gecko</a> will
also work, provided that Gecko version is at least the one included in
Mozilla-1.3-Beta (for example, <a
href="http://galeon.sf.net">Galeon-1.2.8</a>). However, it degrades
gracefully to other browsers. They will get a regular textarea field
instead of a WYSIWYG editor.</p>
<h3>Can I see an example of what it looks like?</h3>
<p>Just make sure you're using one of the browsers mentioned above and see
below.</p>
<form onsubmit="return false;">
<textarea id="TA" style="width: 100%; height: 15em;">
<p>Here is some sample text in textarea that's been transformed with <font
color="#0000CC"><b>HTMLArea</b></font>.<br />
You can make things <b>bold</b>, <i>italic</i>, <u>underline</u>. You can change the
<font size="3">size</font> and <b><font color="#0000CC">c</font><font color="#00CC00">o</font><font color="#00CCCC">l</font><font color="#CC0000">o</font><font color="#CC00CC">r</font><font color="#CCCC00">s</font><font color="#CCCCCC">!</font></b>
And lots more...</p>
<p align="center"><font size="4" color="#ff0000"><b><u>Try HTMLArea
today!</u></b></font><br /></p>
</textarea>
</form>
<h3>Where can I find out more info, download the latest version and talk to
other HTMLArea users?</h3>
<p>You can find out more about HTMLArea and download the latest version on
the <a href="http://dynarch.com/htmlarea/">HTMLArea
homepage</a> and you can talk to other HTMLArea users and post any comments
or suggestions you have in the <a
href="http://www.interactivetools.com/iforum/Open_Source_C3/htmlArea_v3.0_-_Alpha_Release_F14/"
>HTMLArea forum</a>.</p>
<h2>Keyboard shortcuts</h2>
<p>The editor provides the following key combinations:</p>
<ul>
<li>CTRL-A -- select all</li>
<li>CTRL-B -- bold</li>
<li>CTRL-I -- italic</li>
<li>CTRL-U -- underline</li>
<li>CTRL-S -- strikethrough</li>
<li>CTRL-L -- justify left</li>
<li>CTRL-E -- justify center</li>
<li>CTRL-R -- justify right</li>
<li>CTRL-J -- justify full</li>
<li>CTRL-1 .. CTRL-6 -- headings (&lt;h1&gt; .. &lt;h6&gt;)</li>
<li>CTRL-0 (zero) -- clean content pasted from Word</li>
</ul>
<h2>Installation</h2>
<h3>How do I add HTMLArea to my web page?</h3>
<p>It's easy. First you need to upload HTMLArea files to your website.
Just follow these steps.</p>
<ol>
<li>Download the latest version from the <a
href="http://www.interactivetools.com/products/htmlarea/">htmlArea
homepage</a>.</li>
<li>Unzip the files onto your local computer (making sure to maintain the
directory structure contained in the zip).</li>
<li>Create a new folder on your website called /htmlarea/ (make sure it's
NOT inside the cgi-bin).</li>
<li>Transfer all the HTMLArea files from your local computer into the
/htmlarea/ folder on your website.</li>
<li>Open the example page /htmlarea/examples/core.html with your browser to make
sure everything works.</li>
</ol>
<p>Once htmlArea is on your website all you need to do is add some
JavaScript to any pages that you want to add WYSIWYG editors to. Here's how
to do that.</p>
<ol>
<li>Define some global variables. "_editor_url" has to be the absolute
URL where HTMLArea resides within your
website; as we discussed, this would be “/htmlarea/”. "_editor_lang" must
be the language code in which you want HTMLArea to appear. This defaults
to "en" (English); for a list of supported languages, please look into
the "lang" subdirectory in the distribution.
<pre class="code"
><span class="function-name">&lt;</span><span class="html-tag">script</span> <span class="variable-name">type=</span><span class="string">&quot;text/javascript&quot;</span><span class="function-name">&gt;</span>
_editor_url = <span class="string">&quot;/htmlarea/&quot;</span>;
_editor_lang = <span class="string">&quot;en&quot;</span>;
<span class="function-name">&lt;</span><span class="html-tag">/script</span><span class="function-name">&gt;</span></pre>
<li>Include the "htmlarea.js" script:
<pre class="code"
><span class="function-name">&lt;</span><span class="html-tag">script</span> <span class="variable-name">type=</span><span class="string">&quot;text/javascript&quot;</span> <span class="variable-name">src=</span><span class="string">&quot;/htmlarea/htmlarea.js&quot;</span><span class="function-name">&gt;</span><span class="paren-face-match">&lt;</span><span class="html-tag">/script</span><span class="paren-face-match">&gt;</span></pre>
</li>
<li><p>If you want to change all your &lt;textarea&gt;-s into
HTMLArea-s then you can use the simplest way to create HTMLArea:</p>
<pre class="code"
><span class="function-name">&lt;</span><span class="html-tag">script</span> <span class="variable-name">type=</span><span class="string">&quot;text/javascript&quot;</span> <span class="variable-name">defer=</span><span class="string">&quot;1&quot;</span><span class="function-name">&gt;</span>
HTMLArea.replaceAll<span class="function-name">()</span>;
<span class="paren-face-match">&lt;</span><span class="html-tag">/script</span><span class="paren-face-match">&gt;</span></pre>
<p><span class="note">Note:</span> you can also add the
<code>HTMLArea.replaceAll()</code> code to the <code>onload</code>
event handler for the <code>body</code> element, if you find it more appropriate.</p>
<p>A different approach, if you have more than one textarea and only want
to change one of them, is to use <code>HTMLArea.replace("id")</code> --
pass the <code>id</code> of your textarea. Do not use the
<code>name</code> attribute anymore, it's not a standard solution!</p>
</ol>
<p>This section applies to HTMLArea-3.0 release candidate 1 or later; prior
to this version, one needed to include more files; however, now HTMLArea is
able to include other files too (such as stylesheet, language definition
file, etc.) so you only need to define the editor path and load
"htmlarea.js". Nice, eh? ;-)</p>
<h3>I want to change the editor settings, how do I do that?</h3>
<p>While it's true that all you need is one line of JavaScript to create an
htmlArea WYSIWYG editor, you can also specify more config settings in the
code to control how the editor works and looks. Here's an example of some of
the available settings:</p>
<pre class="code"
><span class="keyword">var</span> <span class="variable-name">config</span> = <span class="keyword">new</span> HTMLArea.Config(); <span class="comment">// create a new configuration object
</span> <span class="comment">// having all the default values
</span>config.width = '<span class="string">90%</span>';
config.height = '<span class="string">200px</span>';
<span class="comment">// the following sets a style for the page body (black text on yellow page)
// and makes all paragraphs be bold by default
</span>config.pageStyle =
'<span class="string">body { background-color: yellow; color: black; font-family: verdana,sans-serif } </span>' +
'<span class="string">p { font-width: bold; } </span>';
<span class="comment">// the following replaces the textarea with the given id with a new
// HTMLArea object having the specified configuration
</span>HTMLArea.replace('<span class="string">id</span>', config);</pre>
<p><span class="warning">Important:</span> It's recommended that you add
custom features and configuration to a separate file. This will ensure you
that when we release a new official version of HTMLArea you'll have less
trouble upgrading it.</p>
<h3>How do I customize the toolbar?</h3>
<p>Using the configuration object introduced above allows you to completely
control what the toolbar contains. Following is an example of a one-line,
customized toolbar, much simpler than the default one:</p>
<pre class="code"
><span class="keyword">var</span> <span class="variable-name">config</span> = <span class="keyword">new</span> HTMLArea.Config();
config.toolbar = [
['<span class="string">fontname</span>', '<span class="string">space</span>',
'<span class="string">fontsize</span>', '<span class="string">space</span>',
'<span class="string">formatblock</span>', '<span class="string">space</span>',
'<span class="string">bold</span>', '<span class="string">italic</span>', '<span class="string">underline</span>']
];
HTMLArea.replace('<span class="string">id</span>', config);</pre>
<p>The toolbar is an Array of Array objects. Each array in the toolbar
defines a new line. The default toolbar looks like this:</p>
<pre class="code"
>config.toolbar = [
[ &quot;<span class="string">fontname</span>&quot;, &quot;<span class="string">space</span>&quot;,
&quot;<span class="string">fontsize</span>&quot;, &quot;<span class="string">space</span>&quot;,
&quot;<span class="string">formatblock</span>&quot;, &quot;<span class="string">space</span>&quot;,
&quot;<span class="string">bold</span>&quot;, &quot;<span class="string">italic</span>&quot;, &quot;<span class="string">underline</span>&quot;, &quot;<span class="string">separator</span>&quot;,
&quot;<span class="string">strikethrough</span>&quot;, &quot;<span class="string">subscript</span>&quot;, &quot;<span class="string">superscript</span>&quot;, &quot;<span class="string">separator</span>&quot;,
&quot;<span class="string">copy</span>&quot;, &quot;<span class="string">cut</span>&quot;, &quot;<span class="string">paste</span>&quot;, &quot;<span class="string">space</span>&quot;, &quot;<span class="string">undo</span>&quot;, &quot;<span class="string">redo</span>&quot; ],
[ &quot;<span class="string">justifyleft</span>&quot;, &quot;<span class="string">justifycenter</span>&quot;, &quot;<span class="string">justifyright</span>&quot;, &quot;<span class="string">justifyfull</span>&quot;, &quot;<span class="string">separator</span>&quot;,
&quot;<span class="string">insertorderedlist</span>&quot;, &quot;<span class="string">insertunorderedlist</span>&quot;, &quot;<span class="string">outdent</span>&quot;, &quot;<span class="string">indent</span>&quot;, &quot;<span class="string">separator</span>&quot;,
&quot;<span class="string">forecolor</span>&quot;, &quot;<span class="string">hilitecolor</span>&quot;, &quot;<span class="string">textindicator</span>&quot;, &quot;<span class="string">separator</span>&quot;,
&quot;<span class="string">inserthorizontalrule</span>&quot;, &quot;<span class="string">createlink</span>&quot;, &quot;<span class="string">insertimage</span>&quot;, &quot;<span class="string">inserttable</span>&quot;, &quot;<span class="string">htmlmode</span>&quot;, &quot;<span class="string">separator</span>&quot;,
&quot;<span class="string">popupeditor</span>&quot;, &quot;<span class="string">separator</span>&quot;, &quot;<span class="string">showhelp</span>&quot;, &quot;<span class="string">about</span>&quot; ]
];</pre>
<p>Except three strings, all others in the examples above need to be defined
in the <code>config.btnList</code> object (detailed a bit later in this
document). The three exceptions are: 'space', 'separator' and 'linebreak'.
These three have the following meaning, and need not be present in
<code>btnList</code>:</p>
<ul>
<li>'space' -- Inserts a space of 5 pixels (the width is configurable by external
<acronym title="Cascading Style Sheets">CSS</acronym>) at the current
position in the toolbar.</li>
<li>'separator' -- Inserts a small vertical separator, for visually grouping related
buttons.</li>
<li>'linebreak' -- Starts a new line in the toolbar. Subsequent controls will be
inserted on the new line.</li>
</ul>
<p><span class="warning">Important:</span> It's recommended that you add
custom features and configuration to a separate file. This will ensure you
that when we release a new official version of HTMLArea you'll have less
trouble upgrading it.</p>
<h3>How do I create custom buttons?</h3>
<p>By design, the toolbar is easily extensible. For adding a custom button
one needs to follow two steps.</p>
<h4 id="regbtn">1. Register the button in <code>config.btnList</code>.</h4>
<p>For each button in the toolbar, HTMLArea needs to know the following
information:</p>
<ul>
<li>a name for it (we call it the ID of the button);</li>
<li>the path to an image to be displayed in the toolbar;</li>
<li>a tooltip for it;</li>
<li>whether the button is enabled or not in text mode;</li>
<li>what to do when the button is clicked;</li>
</ul>
<p>You need to provide all this information for registering a new button
too. The button ID can be any string identifier and it's used when
defining the toolbar, as you saw above. We recommend starting
it with "my-" so that it won't clash with the standard ID-s (those from
the default toolbar).</p>
<p class="note">Register button example #1</p>
<pre class="code"
><span class="comment">// get a default configuration
</span><span class="keyword">var</span> <span class="variable-name">config</span> = <span class="keyword">new</span> HTMLArea.Config();
<span class="comment">// register the new button using Config.registerButton.
// parameters: button ID, tooltip, image, textMode,
</span>config.registerButton(&quot;<span class="string">my-hilite</span>&quot;, &quot;<span class="string">Highlight text</span>&quot;, &quot;<span class="string">my-hilite.gif</span>&quot;, <span class="keyword">false</span>,
<span class="comment">// function that gets called when the button is clicked
</span> <span class="keyword">function</span>(editor, id) {
editor.surroundHTML('<span class="string">&lt;span class=&quot;hilite&quot;&gt;</span>', '<span class="string">&lt;/span&gt;</span>');
}
);</pre>
<p>An alternate way of calling registerButton is exemplified above. Though
the code might be a little bit larger, using this form makes your code more
maintainable. It doesn't even needs comments as it's pretty clear.</p>
<p class="note">Register button example #2</p>
<pre class="code"
><span class="keyword">var</span> <span class="variable-name">config</span> = <span class="keyword">new</span> HTMLArea.Config();
config.registerButton({
id : &quot;<span class="string">my-hilite</span>&quot;,
tooltip : &quot;<span class="string">Highlight text</span>&quot;,
image : &quot;<span class="string">my-hilite.gif</span>&quot;,
textMode : <span class="keyword">false</span>,
action : <span class="keyword">function</span>(editor, id) {
editor.surroundHTML('<span class="string">&lt;span class=&quot;hilite&quot;&gt;</span>', '<span class="string">&lt;/span&gt;</span>');
}
});</pre>
<p>You might notice that the "action" function receives two parameters:
<b>editor</b> and <b>id</b>. In the examples above we only used the
<b>editor</b> parameter. But it could be helpful for you to understand
both:</p>
<ul>
<li><b>editor</b> is a reference to the HTMLArea object. Since our entire
code now has an <acronym title="Object Oriented Programming">OOP</acronym>-like
design, you need to have a reference to
the editor object in order to do things with it. In previous versions of
HTMLArea, in order to identify the object an ID was used -- the ID of the
HTML element. In this version ID-s are no longer necessary.</li>
<li><b>id</b> is the button ID. Wondering why is this useful? Well, you
could use the same handler function (presuming that it's not an anonymous
function like in the examples above) for more buttons. You can <a
href="#btnex">see an example</a> a bit later in this document.</li>
</ul>
<h4>2. Inserting it into the toolbar</h4>
<p>At this step you need to specify where in the toolbar to insert the
button, or just create the whole toolbar again as you saw in the previous
section. You use the button ID, as shown in the examples of customizing the
toolbar in the previous section.</p>
<p>For the sake of completion, following there are another examples.</p>
<p class="note">Append your button to the default toolbar</p>
<pre class="code"
>config.toolbar.push([ &quot;<span class="string">my-hilite</span>&quot; ]);</pre>
<p class="note">Customized toolbar</p>
<pre class="code"
>config.toolbar = [
['<span class="string">fontname</span>', '<span class="string">space</span>',
'<span class="string">fontsize</span>', '<span class="string">space</span>',
'<span class="string">formatblock</span>', '<span class="string">space</span>',
'<span class="string">separator</span>', '<span class="string">my-hilite</span>', '<span class="string">separator</span>', '<span class="string">space</span>', <span class="comment">// here's your button
</span> '<span class="string">bold</span>', '<span class="string">italic</span>', '<span class="string">underline</span>', '<span class="string">space</span>']
];</pre>
<p><span class="note">Note:</span> in the example above our new button is
between two vertical separators. But this is by no means required. You can
put it wherever you like. Once registered in the btnList (<a
href="#regbtn">step 1</a>) your custom button behaves just like a default
button.</p>
<p><span class="warning">Important:</span> It's recommended that you add
custom features and configuration to a separate file. This will ensure you
that when we release a new official version of HTMLArea you'll have less
trouble upgrading it.</p>
<h4 id="btnex">A complete example</h4>
<p>Please note that it is by no means necessary to include the following
code into the htmlarea.js file. On the contrary, it might not work there.
The configuration system is designed such that you can always customize the
editor <em>from outside files</em>, thus keeping the htmlarea.js file
intact. This will make it easy for you to upgrade your HTMLArea when we
release a new official version. OK, I promise it's the last time I said
this. ;)</p>
<pre class="code"
><span class="comment">// All our custom buttons will call this function when clicked.
// We use the <b>buttonId</b> parameter to determine what button
// triggered the call.
</span><span class="keyword">function</span> <span class="function-name">clickHandler</span>(editor, buttonId) {
<span class="keyword">switch</span> (buttonId) {
<span class="keyword">case</span> &quot;<span class="string">my-toc</span>&quot;:
editor.insertHTML(&quot;<span class="string">&lt;h1&gt;Table Of Contents&lt;/h1&gt;</span>&quot;);
<span class="keyword">break</span>;
<span class="keyword">case</span> &quot;<span class="string">my-date</span>&quot;:
editor.insertHTML((<span class="keyword">new</span> Date()).toString());
<span class="keyword">break</span>;
<span class="keyword">case</span> &quot;<span class="string">my-bold</span>&quot;:
editor.execCommand(&quot;<span class="string">bold</span>&quot;);
editor.execCommand(&quot;<span class="string">italic</span>&quot;);
<span class="keyword">break</span>;
<span class="keyword">case</span> &quot;<span class="string">my-hilite</span>&quot;:
editor.surroundHTML(&quot;<span class="string">&lt;span class=\&quot;hilite\&quot;&gt;</span>&quot;, &quot;<span class="string">&lt;/span&gt;</span>&quot;);
<span class="keyword">break</span>;
}
};
<span class="comment">// Create a new configuration object
</span><span class="keyword">var</span> <span class="variable-name">config</span> = <span class="keyword">new</span> HTMLArea.Config();
<span class="comment">// Register our custom buttons
</span>config.registerButton(&quot;<span class="string">my-toc</span>&quot;, &quot;<span class="string">Insert TOC</span>&quot;, &quot;<span class="string">my-toc.gif</span>&quot;, <span class="keyword">false</span>, clickHandler);
config.registerButton(&quot;<span class="string">my-date</span>&quot;, &quot;<span class="string">Insert date/time</span>&quot;, &quot;<span class="string">my-date.gif</span>&quot;, <span class="keyword">false</span>, clickHandler);
config.registerButton(&quot;<span class="string">my-bold</span>&quot;, &quot;<span class="string">Toggle bold/italic</span>&quot;, &quot;<span class="string">my-bold.gif</span>&quot;, <span class="keyword">false</span>, clickHandler);
config.registerButton(&quot;<span class="string">my-hilite</span>&quot;, &quot;<span class="string">Hilite selection</span>&quot;, &quot;<span class="string">my-hilite.gif</span>&quot;, <span class="keyword">false</span>, clickHandler);
<span class="comment">// Append the buttons to the default toolbar
</span>config.toolbar.push([&quot;<span class="string">linebreak</span>&quot;, &quot;<span class="string">my-toc</span>&quot;, &quot;<span class="string">my-date</span>&quot;, &quot;<span class="string">my-bold</span>&quot;, &quot;<span class="string">my-hilite</span>&quot;]);
<span class="comment">// Replace an existing textarea with an HTMLArea object having the above config.
</span>HTMLArea.replace(&quot;<span class="string">textAreaID</span>&quot;, config);</pre>
<hr />
<address>&copy; <a href="http://interactivetools.com" title="Visit our website"
>InteractiveTools.com</a> 2002-2004.
<br />
© <a href="http://dynarch.com">dynarch.com</a> 2003-2004<br />
HTMLArea v3.0 developed by <a
href="http://dynarch.com/mishoo/">Mihai Bazon</a>.
<br />
Documentation written by Mihai Bazon.
</address>
<!-- hhmts start --> Last modified: Wed Jan 28 12:18:23 EET 2004 <!-- hhmts end -->
<!-- doc-lang: English -->
</body> </html>

View file

@ -0,0 +1,165 @@
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.2//EN">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>HTMLArea-3.0-rc1 release notes</title>
<style>
.fixme { color: red; }
</style>
</head>
<body>
<h1>HTMLArea-3.0-rc1 release notes</h1>
<p>This release was compiled on Mar 1, 2004 [19:37] GMT.</p>
<h2>3.0-rc1</h2>
<p>Changes since 3.0-Beta:</p>
<ul>
<li>
<b>New plugins</b>
<ul>
<li>
ContextMenu plugin (provides a nice context menu with common
operations, including table ops, link ops, etc.)
</li>
<li>
CSS plugin (provides an easy way to insert/change CSS classes)
</li>
<li>
FullPage plugin (allows HTMLArea to edit a whole HTML file,
not only the content within &lt;body&gt;.)
</li>
</ul>
</li>
<li>
<b>Changes in the SpellChecker plugin</b>
<ul>
<li>
Many bugfixes: now it works ;-) Fully Unicode-safe.
</li>
<li>
Speed and bandwidth optimization: reports the list of
suggestions only once for each mispelled word; this helps
in cases where you have, for instance, the word “HTMLArea”
in 10 places all over the document; the list of
suggestions for it--which is kind of huge--will only be
included <em>once</em>.
</li>
<li>
User interface improvements: the highlighted word will
remain in view; in cases where it's normally outside, the
window will be scrolled to it.
</li>
<li>
Added a "Revert" button for those that change their minds ;-)
</li>
<li>
Added a "Info" button which reports information about the
document, retrieved by the server-side spell checker:
total number of words, total number of mispelled words,
number of suggestions made, spell check time, etc. More
can be easily added. <span class="fixme">FIXME: this part
is not yet internationalized.</span>
</li>
<li>
The server-side spell checker now uses XML::DOM instead of
HTML::Parser, which means that it will be unable to parse
“tag-soup” HTML. It needs valid code. Usually HTMLArea
generates valid code, but on rare occasions it might fail
and the spell checker will report a gross error message.
This gonna have to be fixed, but instead of making the
spell checker accept invalid HTML I prefer to make
HTMLArea generate valid code, so changes are to be done in
other places ;-)
</li>
</ul>
</li>
<li>
<b>Changes in the core editor</b>
<ul>
<li>
Easier to setup: you only need to load
<tt>htmlarea.js</tt>; other scripts will be loaded
automatically. <a href="reference.html">Documentation</a>
and <a href="examples/">examples</a> updated.
</li>
<li>
Better plugin support (they register information about
themselves with the editor; can register event handlers for
the editor, etc.)
</li>
<li>
New about box; check it out, it's cool ;-)
</li>
<li>
Word cleaner (can be enabled to automatically kill Word crap
on paste (see Config.killWordOnPaste); otherwise accessible by
pressing CTRL-0 in the editor; a toolbar button will come up
soon)
</li>
<li>
Image preview in "insert image" dialog. Also allows
modification of current image, if selected.
</li>
<li>
New "insert link" dialog, allows target and title
specification, allows editing links.
</li>
<li>
Implemented support for text direction (left-to-right or
right-to-left).
</li>
<li>
Lots of bug fixes! ... and more, I guess ;-) an
automatically generated <a href="ChangeLog">change log</a>
is now available.
</li>
</ul>
</li>
</ul>
<p>I don't have the power to go through the <a
href="http://sourceforge.net/tracker/?atid=525656&group_id=69750&func=browse">bug
system</a> at SourceForge
now. Some of the bugs reported there may be fixed; I'll update
their status, some other time. If you reported bugs there and now
find them to be fixed, please let me know.</p>
<h2>3.0-Beta</h2>
<p>Changes since 3.0-Alpha:</p>
<ul>
<li>Performance improvements.</li>
<li>Many bugs fixed.</li>
<li>Plugin infrastructure.</li>
<li>TableOperations plugin.</li>
<li>SpellChecker plugin.</li>
<li>Status bar.</li>
<li>API for registering custom buttons and drop-down boxes in the
toolbar.</li>
<li>Toolbar can contain text labels.</li>
<li>Cut, copy, paste, undo, redo buttons.</li>
</ul>
<hr />
<address><a href="http://dynarch.com/mishoo/">Mihai Bazon</a></address>
<!-- Created: Sun Aug 3 16:55:08 EEST 2003 -->
<!-- hhmts start --> Last modified: Sun Feb 1 13:16:10 EET 2004 <!-- hhmts end -->
<!-- doc-lang: English -->
</body>
</html>