Added htmlArea3
16
www/extras/htmlArea3/examples/2-areas.cgi
Executable file
|
|
@ -0,0 +1,16 @@
|
|||
#! /usr/bin/perl -w
|
||||
|
||||
use strict;
|
||||
use CGI;
|
||||
|
||||
my $cgi = new CGI;
|
||||
my $text1 = $cgi->param('text1');
|
||||
my $text2 = $cgi->param('text2');
|
||||
|
||||
print "Content-type: text/html\n\n";
|
||||
|
||||
print "<p>You submitted:</p>";
|
||||
print "<table border='1'>";
|
||||
print "<thead><tr bgcolor='#cccccc'><td width='50%'>text1</td><td width='50%'>text2</td></tr></thead>";
|
||||
print "<tbody><tr><td>$text1</td><td>$text2</td></tr></tbody>";
|
||||
print "</table>";
|
||||
158
www/extras/htmlArea3/examples/2-areas.html
Normal file
|
|
@ -0,0 +1,158 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>Example with 2 HTMLAreas in the same form</title>
|
||||
<script type="text/javascript">
|
||||
// the _editor_url is REQUIRED! don't forget to set it.
|
||||
_editor_url = "../";
|
||||
// implicit language will be "en", but let's set it for brevity
|
||||
_editor_lang = "en";
|
||||
</script>
|
||||
<script type="text/javascript" src="../htmlarea.js"></script>
|
||||
<script type="text/javascript">
|
||||
// load the plugins that we will use
|
||||
// loading is necessary ONLY ONCE, regardless on how many editors you create
|
||||
// basically calling the following functions will load the plugin files as if
|
||||
// we would have wrote script src="..." but with easier and cleaner code
|
||||
HTMLArea.loadPlugin("TableOperations");
|
||||
HTMLArea.loadPlugin("SpellChecker");
|
||||
HTMLArea.loadPlugin("CSS");
|
||||
|
||||
// this function will get called at body.onload
|
||||
function initDocument() {
|
||||
// cache these values as we need to pass it for both editors
|
||||
var css_plugin_args = {
|
||||
combos : [
|
||||
{ label: "Syntax",
|
||||
// menu text // CSS class
|
||||
options: { "None" : "",
|
||||
"Code" : "code",
|
||||
"String" : "string",
|
||||
"Comment" : "comment",
|
||||
"Variable name" : "variable-name",
|
||||
"Type" : "type",
|
||||
"Reference" : "reference",
|
||||
"Preprocessor" : "preprocessor",
|
||||
"Keyword" : "keyword",
|
||||
"Function name" : "function-name",
|
||||
"Html tag" : "html-tag",
|
||||
"Html italic" : "html-helper-italic",
|
||||
"Warning" : "warning",
|
||||
"Html bold" : "html-helper-bold"
|
||||
},
|
||||
context: "pre"
|
||||
},
|
||||
{ label: "Info",
|
||||
options: { "None" : "",
|
||||
"Quote" : "quote",
|
||||
"Highlight" : "highlight",
|
||||
"Deprecated" : "deprecated"
|
||||
}
|
||||
}
|
||||
]
|
||||
};
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// GENERAL PATTERN
|
||||
//
|
||||
// 1. Instantitate an editor object.
|
||||
// 2. Register plugins (note, it's required to have them loaded).
|
||||
// 3. Configure any other items in editor.config.
|
||||
// 4. generate() the editor
|
||||
//
|
||||
// The above are steps that you use to create one editor. Nothing new
|
||||
// so far. In order to create more than one editor, you just have to
|
||||
// repeat those steps for each of one. Of course, you can register any
|
||||
// plugins you want (no need to register the same plugins for all
|
||||
// editors, and to demonstrate that we'll skip the TableOperations
|
||||
// plugin for the second editor). Just be careful to pass different
|
||||
// ID-s in the constructor (you don't want to _even try_ to create more
|
||||
// editors for the same TEXTAREA element ;-)).
|
||||
//
|
||||
// So much for the noise, see the action below.
|
||||
//---------------------------------------------------------------------
|
||||
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// CREATE FIRST EDITOR
|
||||
//
|
||||
var editor1 = new HTMLArea("text-area-1");
|
||||
|
||||
// plugins must be registered _per editor_. Therefore, we register
|
||||
// plugins for the first editor here, and we will also do this for the
|
||||
// second editor.
|
||||
editor1.registerPlugin(TableOperations);
|
||||
editor1.registerPlugin(SpellChecker);
|
||||
editor1.registerPlugin(CSS, css_plugin_args);
|
||||
|
||||
// custom config must be done per editor. Here we're importing the
|
||||
// stylesheet used by the CSS plugin.
|
||||
editor1.config.pageStyle = "@import url(custom.css);";
|
||||
|
||||
// generate first editor
|
||||
editor1.generate();
|
||||
//---------------------------------------------------------------------
|
||||
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// CREATE SECOND EDITOR
|
||||
//
|
||||
var editor2 = new HTMLArea("text-area-2");
|
||||
|
||||
// we are using the same plugins
|
||||
editor2.registerPlugin(TableOperations);
|
||||
editor2.registerPlugin(SpellChecker);
|
||||
editor2.registerPlugin(CSS, css_plugin_args);
|
||||
|
||||
// import the CSS plugin styles
|
||||
editor2.config.pageStyle = "@import url(custom.css);";
|
||||
|
||||
// generate the second editor
|
||||
// IMPORTANT: if we don't give it a timeout, the first editor will
|
||||
// not function in Mozilla. Soon I'll think about starting to
|
||||
// implement some kind of event that will fire when the editor
|
||||
// finished creating, then we'll be able to chain the generate()
|
||||
// calls in an elegant way. But right now there's no other solution
|
||||
// than the following.
|
||||
setTimeout(function() {
|
||||
editor2.generate();
|
||||
}, 500);
|
||||
//---------------------------------------------------------------------
|
||||
};
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body onload="initDocument()">
|
||||
<h1>Example with 2 HTMLAreas in the same form</h1>
|
||||
|
||||
<form action="2-areas.cgi" method="post" target="_blank">
|
||||
|
||||
<input type="submit" value=" Submit " />
|
||||
<br />
|
||||
|
||||
<textarea id="text-area-1" name="text1" style="width: 100%; height: 12em">
|
||||
<h3>HTMLArea #1</h3>
|
||||
<p>This will submit a field named <em>text1</em>.</p>
|
||||
</textarea>
|
||||
|
||||
<br />
|
||||
|
||||
<textarea id="text-area-2" name="text2" style="width: 100%; height: 12em">
|
||||
<h3>Second HTMLArea</h3> <p><em>text2</em> submission. Both are
|
||||
located in the same FORM element and the script action is
|
||||
2-areas.cgi (see it in the examples directory)</p>
|
||||
</textarea>
|
||||
|
||||
<br />
|
||||
<input type="submit" value=" Submit " />
|
||||
|
||||
</form>
|
||||
|
||||
<hr>
|
||||
<address><a href="http://dynarch.com/mishoo/">Mihai Bazon</a></address>
|
||||
<!-- Created: Fri Oct 31 09:37:10 EET 2003 -->
|
||||
<!-- hhmts start --> Last modified: Wed Jan 28 11:10:40 EET 2004 <!-- hhmts end -->
|
||||
<!-- doc-lang: English -->
|
||||
</body>
|
||||
</html>
|
||||
95
www/extras/htmlArea3/examples/context-menu.html
Normal file
|
|
@ -0,0 +1,95 @@
|
|||
<html>
|
||||
<head>
|
||||
<title>Test of ContextMenu plugin</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<script type="text/javascript">
|
||||
_editor_url = "../";
|
||||
_editor_lang = "en";
|
||||
</script>
|
||||
|
||||
<!-- load the main HTMLArea file -->
|
||||
<script type="text/javascript" src="../htmlarea.js"></script>
|
||||
|
||||
<script type="text/javascript">
|
||||
HTMLArea.loadPlugin("ContextMenu");
|
||||
HTMLArea.loadPlugin("TableOperations");
|
||||
|
||||
function initDocument() {
|
||||
var editor = new HTMLArea("editor");
|
||||
editor.registerPlugin(ContextMenu);
|
||||
editor.registerPlugin(TableOperations);
|
||||
editor.generate();
|
||||
}
|
||||
</script>
|
||||
|
||||
</head>
|
||||
|
||||
<body onload="initDocument()">
|
||||
<h1>Test of ContextMenu plugin</h1>
|
||||
|
||||
|
||||
<textarea id="editor" style="height: 30em; width: 100%;">
|
||||
<table border="1" style="border: 1px dotted rgb(0, 102, 255); width:
|
||||
100%; background-color: rgb(255, 204, 51); background-image: none; float:
|
||||
none; text-align: left; vertical-align: top; border-collapse: collapse;"
|
||||
summary="" cellspacing="" cellpadding="" frame="box"
|
||||
rules="all"><tbody><tr><td style="border: 1px solid
|
||||
rgb(255, 0, 0); background-color: rgb(0, 51, 51); background-image: none;
|
||||
text-align: left; vertical-align: top;"><a
|
||||
href="http://dynarch.com/mishoo/articles.epl?art_id=430"><img
|
||||
src="http://127.0.0.1/~mishoo/htmlarea/examples/pieng.png" alt="" align=""
|
||||
border="0" hspace="0" vspace="0" /></a></td><td
|
||||
style="border: 1px solid rgb(255, 0, 0); background-color: rgb(255, 255, 0);
|
||||
background-image: none; text-align: left; vertical-align: top;">The
|
||||
article linked on the left image presents a script that allows Internet
|
||||
Explorer to use PNG images. We hope to be able to implement IE PNG support
|
||||
in HTMLArea soon.<br /> <br /> Go on, right-click everywhere and
|
||||
test our new context menus. And be thankful to <a
|
||||
href="http://www.americanbible.org/">American Bible Society</a> who
|
||||
sponsored the development, <a
|
||||
href="http://dynarch.com/mishoo/">mishoo</a> who made it happen and
|
||||
God, Who keeps mishoo alife. ;-)<br /> <br /><span
|
||||
style="font-style: italic;">P.S.</span> No animals were harmed
|
||||
while producing this movie.<br />
|
||||
</td></tr><tr><td style="border-style: none;
|
||||
background-color: rgb(255, 255, 51); background-image: none; text-align:
|
||||
left; vertical-align: top;">Welcome to HTMLArea, the best online
|
||||
editor.<br /></td><td>HTMLArea is a project initiated by
|
||||
<a href="http://interactivetools.com/">InteractiveTools.com</a>.
|
||||
Other companies contributed largely by sponsoring the development of
|
||||
additional extensions. Many thanks to:<br /> <br
|
||||
style="font-family: courier new,courier,monospace;" /> <div
|
||||
style="margin-left: 40px;"><a href="http://www.zapatec.com/"
|
||||
style="font-family: courier
|
||||
new,courier,monospace;">http://www.zapatec.com</a><br
|
||||
style="font-family: courier new,courier,monospace;" /> <a
|
||||
href="http://www.americanbible.org/" style="font-family: courier
|
||||
new,courier,monospace;">http://www.americanbible.org</a><br
|
||||
style="font-family: courier new,courier,monospace;" /> <a
|
||||
href="http://www.neomedia.ro/" style="font-family: courier
|
||||
new,courier,monospace;">http://www.neomedia.ro</a><br
|
||||
style="font-family: courier new,courier,monospace;" /> <a
|
||||
href="http://www.os3.it/" style="font-family: courier
|
||||
new,courier,monospace;">http://www.os3.it</a><br
|
||||
style="font-family: courier new,courier,monospace;" /> <a
|
||||
href="http://www.miro.com.au/" style="font-family: courier
|
||||
new,courier,monospace;">http://www.miro.com.au</a><br
|
||||
style="font-family: courier new,courier,monospace;" /> <a
|
||||
href="http://www.thycotic.com/" style="font-family: courier
|
||||
new,courier,monospace;">http://www.thycotic.com</a><br />
|
||||
</div> <br /> and to all the posters at <a
|
||||
href="http://www.interactivetools.com/iforum/Open_Source_C3/htmlArea_v3.0_-_Alpha_Release_F14/
|
||||
">InteractiveTools</a> HTMLArea forums, whose feedback is continually
|
||||
useful in polishing HTMLArea.<br /> <br /><div
|
||||
style="text-align: right;">-- developers and maintainers of version 3,
|
||||
<a href="http://dynarch.com/">dynarch.com</a>.<br
|
||||
/></div></td></tr></tbody></table>
|
||||
</textarea>
|
||||
|
||||
<hr />
|
||||
<address><a href="http://dynarch.com/mishoo/">Mihai Bazon</a></address>
|
||||
<!-- Created: Wed Oct 1 19:55:37 EEST 2003 -->
|
||||
<!-- hhmts start --> Last modified: Wed Jan 28 11:10:29 EET 2004 <!-- hhmts end -->
|
||||
<!-- doc-lang: English -->
|
||||
</body>
|
||||
</html>
|
||||
184
www/extras/htmlArea3/examples/core.html
Normal file
|
|
@ -0,0 +1,184 @@
|
|||
<html>
|
||||
<head>
|
||||
<title>Example of HTMLArea 3.0</title>
|
||||
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
|
||||
<!-- Configure the path to the editor. We make it relative now, so that the
|
||||
example ZIP file will work anywhere, but please NOTE THAT it's better to
|
||||
have it an absolute path, such as '/htmlarea/'. -->
|
||||
<script type="text/javascript">
|
||||
_editor_url = "../";
|
||||
_editor_lang = "en";
|
||||
</script>
|
||||
<script type="text/javascript" src="../htmlarea.js"></script>
|
||||
|
||||
<style type="text/css">
|
||||
html, body {
|
||||
font-family: Verdana,sans-serif;
|
||||
background-color: #fea;
|
||||
color: #000;
|
||||
}
|
||||
a:link, a:visited { color: #00f; }
|
||||
a:hover { color: #048; }
|
||||
a:active { color: #f00; }
|
||||
|
||||
textarea { background-color: #fff; border: 1px solid 00f; }
|
||||
</style>
|
||||
|
||||
<script type="text/javascript">
|
||||
var editor = null;
|
||||
function initEditor() {
|
||||
editor = new HTMLArea("ta");
|
||||
|
||||
// comment the following two lines to see how customization works
|
||||
editor.generate();
|
||||
return false;
|
||||
|
||||
var cfg = editor.config; // this is the default configuration
|
||||
cfg.registerButton({
|
||||
id : "my-hilite",
|
||||
tooltip : "Highlight text",
|
||||
image : "ed_custom.gif",
|
||||
textMode : false,
|
||||
action : function(editor) {
|
||||
editor.surroundHTML("<span class=\"hilite\">", "</span>");
|
||||
},
|
||||
context : 'table'
|
||||
});
|
||||
|
||||
cfg.toolbar.push(["linebreak", "my-hilite"]); // add the new button to the toolbar
|
||||
|
||||
// BEGIN: code that adds a custom button
|
||||
// uncomment it to test
|
||||
var cfg = editor.config; // this is the default configuration
|
||||
/*
|
||||
cfg.registerButton({
|
||||
id : "my-hilite",
|
||||
tooltip : "Highlight text",
|
||||
image : "ed_custom.gif",
|
||||
textMode : false,
|
||||
action : function(editor) {
|
||||
editor.surroundHTML("<span class=\"hilite\">", "</span>");
|
||||
}
|
||||
});
|
||||
*/
|
||||
|
||||
function clickHandler(editor, buttonId) {
|
||||
switch (buttonId) {
|
||||
case "my-toc":
|
||||
editor.insertHTML("<h1>Table Of Contents</h1>");
|
||||
break;
|
||||
case "my-date":
|
||||
editor.insertHTML((new Date()).toString());
|
||||
break;
|
||||
case "my-bold":
|
||||
editor.execCommand("bold");
|
||||
editor.execCommand("italic");
|
||||
break;
|
||||
case "my-hilite":
|
||||
editor.surroundHTML("<span class=\"hilite\">", "</span>");
|
||||
break;
|
||||
}
|
||||
};
|
||||
cfg.registerButton("my-toc", "Insert TOC", "ed_custom.gif", false, clickHandler);
|
||||
cfg.registerButton("my-date", "Insert date/time", "ed_custom.gif", false, clickHandler);
|
||||
cfg.registerButton("my-bold", "Toggle bold/italic", "ed_custom.gif", false, clickHandler);
|
||||
cfg.registerButton("my-hilite", "Hilite selection", "ed_custom.gif", false, clickHandler);
|
||||
|
||||
cfg.registerButton("my-sample", "Class: sample", "ed_custom.gif", false,
|
||||
function(editor) {
|
||||
if (HTMLArea.is_ie) {
|
||||
editor.insertHTML("<span class=\"sample\"> </span>");
|
||||
var r = editor._doc.selection.createRange();
|
||||
r.move("character", -2);
|
||||
r.moveEnd("character", 2);
|
||||
r.select();
|
||||
} else { // Gecko/W3C compliant
|
||||
var n = editor._doc.createElement("span");
|
||||
n.className = "sample";
|
||||
editor.insertNodeAtSelection(n);
|
||||
var sel = editor._iframe.contentWindow.getSelection();
|
||||
sel.removeAllRanges();
|
||||
var r = editor._doc.createRange();
|
||||
r.setStart(n, 0);
|
||||
r.setEnd(n, 0);
|
||||
sel.addRange(r);
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
/*
|
||||
cfg.registerButton("my-hilite", "Highlight text", "ed_custom.gif", false,
|
||||
function(editor) {
|
||||
editor.surroundHTML('<span class="hilite">', '</span>');
|
||||
}
|
||||
);
|
||||
*/
|
||||
cfg.pageStyle = "body { background-color: #efd; } .hilite { background-color: yellow; } "+
|
||||
".sample { color: green; font-family: monospace; }";
|
||||
cfg.toolbar.push(["linebreak", "my-toc", "my-date", "my-bold", "my-hilite", "my-sample"]); // add the new button to the toolbar
|
||||
// END: code that adds a custom button
|
||||
|
||||
editor.generate();
|
||||
}
|
||||
function insertHTML() {
|
||||
var html = prompt("Enter some HTML code here");
|
||||
if (html) {
|
||||
editor.insertHTML(html);
|
||||
}
|
||||
}
|
||||
function highlight() {
|
||||
editor.surroundHTML('<span style="background-color: yellow">', '</span>');
|
||||
}
|
||||
</script>
|
||||
|
||||
</head>
|
||||
|
||||
<!-- use <body onload="HTMLArea.replaceAll()" if you don't care about
|
||||
customizing the editor. It's the easiest way! :) -->
|
||||
<body onload="initEditor()">
|
||||
|
||||
<h1>HTMLArea 3.0</h1>
|
||||
|
||||
<p>A replacement for <code>TEXTAREA</code> elements. © <a
|
||||
href="http://interactivetools.com">InteractiveTools.com</a>, 2003-2004.</p>
|
||||
|
||||
<form action="test.cgi" method="post" id="edit" name="edit">
|
||||
|
||||
<textarea id="ta" name="ta" style="width:100%" rows="20" cols="80">
|
||||
<p>Here is some sample text: <b>bold</b>, <i>italic</i>, <u>underline</u>. </p>
|
||||
<p align=center>Different fonts, sizes and colors (all in bold):</p>
|
||||
<p><b>
|
||||
<font face="arial" size="7" color="#000066">arial</font>,
|
||||
<font face="courier new" size="6" color="#006600">courier new</font>,
|
||||
<font face="georgia" size="5" color="#006666">georgia</font>,
|
||||
<font face="tahoma" size="4" color="#660000">tahoma</font>,
|
||||
<font face="times new roman" size="3" color="#660066">times new roman</font>,
|
||||
<font face="verdana" size="2" color="#666600">verdana</font>,
|
||||
<font face="tahoma" size="1" color="#666666">tahoma</font>
|
||||
</b></p>
|
||||
<p>Click on <a href="http://www.interactivetools.com/">this link</a> and then on the link button to the details ... OR ... select some text and click link to create a <b>new</b> link.</p>
|
||||
</textarea>
|
||||
|
||||
<p />
|
||||
|
||||
<input type="submit" name="ok" value=" submit " />
|
||||
<input type="button" name="ins" value=" insert html " onclick="return insertHTML();" />
|
||||
<input type="button" name="hil" value=" highlight text " onclick="return highlight();" />
|
||||
|
||||
<a href="javascript:mySubmit()">submit</a>
|
||||
|
||||
<script type="text/javascript">
|
||||
function mySubmit() {
|
||||
// document.edit.save.value = "yes";
|
||||
document.edit.onsubmit(); // workaround browser bugs.
|
||||
document.edit.submit();
|
||||
};
|
||||
</script>
|
||||
|
||||
</form>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
88
www/extras/htmlArea3/examples/css.html
Normal file
|
|
@ -0,0 +1,88 @@
|
|||
<html>
|
||||
<head>
|
||||
<title>Test of CSS plugin</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<script type="text/javascript">
|
||||
_editor_url = "../";
|
||||
_editor_lang = "en";
|
||||
</script>
|
||||
|
||||
<!-- load the main HTMLArea files -->
|
||||
<script type="text/javascript" src="../htmlarea.js"></script>
|
||||
|
||||
<script type="text/javascript">
|
||||
HTMLArea.loadPlugin("CSS");
|
||||
|
||||
function initDocument() {
|
||||
var editor = new HTMLArea("editor");
|
||||
editor.config.pageStyle = "@import url(custom.css);";
|
||||
editor.registerPlugin(CSS, {
|
||||
combos : [
|
||||
{ label: "Syntax",
|
||||
// menu text // CSS class
|
||||
options: { "None" : "",
|
||||
"Code" : "code",
|
||||
"String" : "string",
|
||||
"Comment" : "comment",
|
||||
"Variable name" : "variable-name",
|
||||
"Type" : "type",
|
||||
"Reference" : "reference",
|
||||
"Preprocessor" : "preprocessor",
|
||||
"Keyword" : "keyword",
|
||||
"Function name" : "function-name",
|
||||
"Html tag" : "html-tag",
|
||||
"Html italic" : "html-helper-italic",
|
||||
"Warning" : "warning",
|
||||
"Html bold" : "html-helper-bold"
|
||||
},
|
||||
context: "pre"
|
||||
},
|
||||
{ label: "Info",
|
||||
options: { "None" : "",
|
||||
"Quote" : "quote",
|
||||
"Highlight" : "highlight",
|
||||
"Deprecated" : "deprecated"
|
||||
}
|
||||
}
|
||||
]
|
||||
});
|
||||
editor.generate();
|
||||
}
|
||||
</script>
|
||||
|
||||
</head>
|
||||
|
||||
<body onload="initDocument()">
|
||||
<h1>Test of FullPage plugin</h1>
|
||||
|
||||
<textarea id="editor" style="height: 30em; width: 100%;"
|
||||
><h1><tt>registerDropdown</tt></h1>
|
||||
|
||||
<p>Here's some sample code that adds a dropdown to the toolbar. Go on, do
|
||||
syntax highlighting on it ;-)</p>
|
||||
|
||||
<pre>var the_options = {
|
||||
"Keyword" : "keyword",
|
||||
"Function name" : "function-name",
|
||||
"String" : "string",
|
||||
"Numeric" : "integer",
|
||||
"Variable name" : "variable"
|
||||
};
|
||||
var css_class = {
|
||||
id : "CSS-class",
|
||||
tooltip : i18n["tooltip"],
|
||||
options : the_options,
|
||||
action : function(editor) { self.onSelect(editor, this); }
|
||||
};
|
||||
cfg.registerDropdown(css_class);
|
||||
toolbar[0].unshift(["CSS-class"]);</pre>
|
||||
|
||||
<p>Easy, eh? ;-)</p></textarea>
|
||||
|
||||
<hr />
|
||||
<address><a href="http://dynarch.com/mishoo/">Mihai Bazon</a></address>
|
||||
<!-- Created: Wed Oct 1 19:55:37 EEST 2003 -->
|
||||
<!-- hhmts start --> Last modified: Wed Jan 28 11:10:16 EET 2004 <!-- hhmts end -->
|
||||
<!-- doc-lang: English -->
|
||||
</body>
|
||||
</html>
|
||||
29
www/extras/htmlArea3/examples/custom.css
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
body { background-color: #234; color: #dd8; font-family: tahoma; font-size: 12px; }
|
||||
|
||||
a:link, a:visited { color: #8cf; }
|
||||
a:hover { color: #ff8; }
|
||||
|
||||
h1 { background-color: #456; color: #ff8; padding: 2px 5px; border: 1px solid; border-color: #678 #012 #012 #678; }
|
||||
|
||||
/* syntax highlighting (used by the first combo defined for the CSS plugin) */
|
||||
|
||||
pre { margin: 0px 1em; padding: 5px 1em; background-color: #000; border: 1px dotted #02d; border-left: 2px solid #04f; }
|
||||
.code { color: #f5deb3; }
|
||||
.string { color: #00ffff; }
|
||||
.comment { color: #8fbc8f; }
|
||||
.variable-name { color: #fa8072; }
|
||||
.type { color: #90ee90; font-weight: bold; }
|
||||
.reference { color: #ee82ee; }
|
||||
.preprocessor { color: #faf; }
|
||||
.keyword { color: #ffffff; font-weight: bold; }
|
||||
.function-name { color: #ace; }
|
||||
.html-tag { font-weight: bold; }
|
||||
.html-helper-italic { font-style: italic; }
|
||||
.warning { color: #ffa500; font-weight: bold; }
|
||||
.html-helper-bold { font-weight: bold; }
|
||||
|
||||
/* info combo */
|
||||
|
||||
.quote { font-style: italic; color: #ee9; }
|
||||
.highlight { background-color: yellow; color: #000; }
|
||||
.deprecated { text-decoration: line-through; color: #aaa; }
|
||||
75
www/extras/htmlArea3/examples/full-page.html
Normal file
|
|
@ -0,0 +1,75 @@
|
|||
<html>
|
||||
<head>
|
||||
<title>Test of FullPage plugin</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<script type="text/javascript">
|
||||
_editor_url = "../";
|
||||
_editor_lang = "en";
|
||||
</script>
|
||||
|
||||
<!-- load the main HTMLArea files -->
|
||||
<script type="text/javascript" src="../htmlarea.js"></script>
|
||||
|
||||
<script type="text/javascript">
|
||||
HTMLArea.loadPlugin("FullPage");
|
||||
|
||||
function initDocument() {
|
||||
var editor = new HTMLArea("editor");
|
||||
editor.registerPlugin(FullPage);
|
||||
editor.generate();
|
||||
}
|
||||
</script>
|
||||
|
||||
</head>
|
||||
|
||||
<body onload="initDocument()">
|
||||
<h1>Test of FullPage plugin</h1>
|
||||
|
||||
<textarea id="editor" style="height: 30em; width: 100%;">
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>FullPage plugin for HTMLArea</title>
|
||||
<link rel="alternate stylesheet" href="http://dynarch.com/mishoo/css/dark.css" />
|
||||
<link rel="stylesheet" href="http://dynarch.com/mishoo/css/cool-light.css" />
|
||||
</head>
|
||||
<body style="background-color: #ddddee; color: #000077;">
|
||||
<table style="width:60%; height: 90%; margin: 2% auto 1% auto;" align="center" border="0" cellpadding="0" cellspacing="0">
|
||||
<tr>
|
||||
<td style="background-color: #ddeedd; border: 2px solid #002; height: 1.5em; padding: 2px; font: bold 24px Verdana;">
|
||||
FullPage plugin
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="background-color: #fff; border: 1px solid #aab; padding: 1em 3em; font: 12px Verdana;">
|
||||
<p>
|
||||
This plugin enables one to edit a full HTML file in <a
|
||||
href="http://dynarch.com/htmlarea/">HTMLArea</a>. This is not
|
||||
normally possible with just the core editor since it only
|
||||
retrieves the HTML inside the <code>body</code> tag.
|
||||
</p>
|
||||
<p>
|
||||
It provides the ability to change the <code>DOCTYPE</code> of
|
||||
the document, <code>body</code> <code>bgcolor</code> and
|
||||
<code>fgcolor</code> attributes as well as to add additional
|
||||
<code>link</code>-ed stylesheets. Cool, eh?
|
||||
</p>
|
||||
<p>
|
||||
The development of this plugin was initiated and sponsored by
|
||||
<a href="http://thycotic.com">Thycotic Software Ltd.</a>.
|
||||
That's also cool, isn't it? ;-)
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
</textarea>
|
||||
|
||||
<hr />
|
||||
<address><a href="http://dynarch.com/mishoo/">Mihai Bazon</a></address>
|
||||
<!-- Created: Wed Oct 1 19:55:37 EEST 2003 -->
|
||||
<!-- hhmts start --> Last modified: Wed Jan 28 11:10:07 EET 2004 <!-- hhmts end -->
|
||||
<!-- doc-lang: English -->
|
||||
</body>
|
||||
</html>
|
||||
248
www/extras/htmlArea3/examples/fully-loaded.html
Normal file
|
|
@ -0,0 +1,248 @@
|
|||
<html>
|
||||
<head>
|
||||
<title>Example of HTMLArea 3.0</title>
|
||||
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
|
||||
<!-- Configure the path to the editor. We make it relative now, so that the
|
||||
example ZIP file will work anywhere, but please NOTE THAT it's better to
|
||||
have it an absolute path, such as '/htmlarea/'. -->
|
||||
<script type="text/javascript">
|
||||
_editor_url = "../";
|
||||
_editor_lang = "en";
|
||||
</script>
|
||||
|
||||
<!-- load the main HTMLArea file, this will take care of loading the CSS and
|
||||
other required core scripts. -->
|
||||
<script type="text/javascript" src="../htmlarea.js"></script>
|
||||
|
||||
<!-- load the plugins -->
|
||||
<script type="text/javascript">
|
||||
// WARNING: using this interface to load plugin
|
||||
// will _NOT_ work if plugins do not have the language
|
||||
// loaded by HTMLArea.
|
||||
|
||||
// In other words, this function generates SCRIPT tags
|
||||
// that load the plugin and the language file, based on the
|
||||
// global variable HTMLArea.I18N.lang (defined in the lang file,
|
||||
// in our case "lang/en.js" loaded above).
|
||||
|
||||
// If this lang file is not found the plugin will fail to
|
||||
// load correctly and nothing will work.
|
||||
|
||||
HTMLArea.loadPlugin("TableOperations");
|
||||
HTMLArea.loadPlugin("SpellChecker");
|
||||
HTMLArea.loadPlugin("FullPage");
|
||||
HTMLArea.loadPlugin("CSS");
|
||||
HTMLArea.loadPlugin("ContextMenu");
|
||||
</script>
|
||||
|
||||
<style type="text/css">
|
||||
html, body {
|
||||
font-family: Verdana,sans-serif;
|
||||
background-color: #fea;
|
||||
color: #000;
|
||||
}
|
||||
a:link, a:visited { color: #00f; }
|
||||
a:hover { color: #048; }
|
||||
a:active { color: #f00; }
|
||||
|
||||
textarea { background-color: #fff; border: 1px solid 00f; }
|
||||
</style>
|
||||
|
||||
<script type="text/javascript">
|
||||
var editor = null;
|
||||
function initEditor() {
|
||||
|
||||
// create an editor for the "ta" textbox
|
||||
editor = new HTMLArea("ta");
|
||||
|
||||
// register the FullPage plugin
|
||||
editor.registerPlugin(FullPage);
|
||||
|
||||
// register the SpellChecker plugin
|
||||
editor.registerPlugin(TableOperations);
|
||||
|
||||
// register the SpellChecker plugin
|
||||
editor.registerPlugin(SpellChecker);
|
||||
|
||||
// register the CSS plugin
|
||||
editor.registerPlugin(CSS, {
|
||||
combos : [
|
||||
{ label: "Syntax:",
|
||||
// menu text // CSS class
|
||||
options: { "None" : "",
|
||||
"Code" : "code",
|
||||
"String" : "string",
|
||||
"Comment" : "comment",
|
||||
"Variable name" : "variable-name",
|
||||
"Type" : "type",
|
||||
"Reference" : "reference",
|
||||
"Preprocessor" : "preprocessor",
|
||||
"Keyword" : "keyword",
|
||||
"Function name" : "function-name",
|
||||
"Html tag" : "html-tag",
|
||||
"Html italic" : "html-helper-italic",
|
||||
"Warning" : "warning",
|
||||
"Html bold" : "html-helper-bold"
|
||||
},
|
||||
context: "pre"
|
||||
},
|
||||
{ label: "Info:",
|
||||
options: { "None" : "",
|
||||
"Quote" : "quote",
|
||||
"Highlight" : "highlight",
|
||||
"Deprecated" : "deprecated"
|
||||
}
|
||||
}
|
||||
]
|
||||
});
|
||||
|
||||
// add a contextual menu
|
||||
editor.registerPlugin("ContextMenu");
|
||||
|
||||
// load the stylesheet used by our CSS plugin configuration
|
||||
editor.config.pageStyle = "@import url(custom.css);";
|
||||
|
||||
setTimeout(function() {
|
||||
editor.generate();
|
||||
}, 500);
|
||||
return false;
|
||||
}
|
||||
|
||||
function insertHTML() {
|
||||
var html = prompt("Enter some HTML code here");
|
||||
if (html) {
|
||||
editor.insertHTML(html);
|
||||
}
|
||||
}
|
||||
function highlight() {
|
||||
editor.surroundHTML('<span style="background-color: yellow">', '</span>');
|
||||
}
|
||||
</script>
|
||||
|
||||
</head>
|
||||
|
||||
<!-- use <body onload="HTMLArea.replaceAll()" if you don't care about
|
||||
customizing the editor. It's the easiest way! :) -->
|
||||
<body onload="initEditor()">
|
||||
|
||||
<h1>HTMLArea 3.0</h1>
|
||||
|
||||
<p>A replacement for <code>TEXTAREA</code> elements. © <a
|
||||
href="http://interactivetools.com">InteractiveTools.com</a>, 2003-2004.</p>
|
||||
|
||||
<form action="test.cgi" method="post" id="edit" name="edit">
|
||||
|
||||
<textarea id="ta" name="ta" style="width:100%" rows="24" cols="80">
|
||||
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.2//EN">
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<title>Passing parameters to JavaScript code</title>
|
||||
<link rel="stylesheet" href="custom.css" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h1>Passing parameters to JavaScript code</h1>
|
||||
|
||||
<p>Sometimes we need to pass parameters to some JavaScript function that we
|
||||
wrote ourselves. But sometimes it's simply more convenient to include the
|
||||
parameter not in the function call, but in the affected HTML elements.
|
||||
Usually, all JavaScript calls affect some element, right? ;-)</p>
|
||||
|
||||
<p>Well, here's an original way to do it. Or at least, I think it's
|
||||
original.</p>
|
||||
|
||||
<h2>But first...</h2>
|
||||
|
||||
<p>... an example. Why would I need such thing? I have a JS function that
|
||||
is called on <code>BODY</code> <code>onload</code> handler. This function
|
||||
tries to retrieve the element with the ID "conttoc" and, if present, it will
|
||||
<a href="toc.epl" title="Automatic TOC generation">generate an index</a>.
|
||||
The problem is, this function exists in some external JavaScript library
|
||||
that it's loaded in page. I only needed to pass the parameter from
|
||||
<em>one</em> page. Thus, it makes sense to pass the parameter from the HTML
|
||||
code on <em>that</em> page, not to affect the others.</p>
|
||||
|
||||
<p>The first idea that came to me was to use some attribute, like "id" or
|
||||
"class". But "id" was locked already, it <em>had</em> to be "conttoc". Use
|
||||
"class"? It's not elegant.. what if I really wanted to give it a class, at
|
||||
some point?</p>
|
||||
|
||||
<h2>The idea</h2>
|
||||
|
||||
<p>So I thought: what are the HTML elements that do not affect the page
|
||||
rendering in any way? Well, comments. I mean, <em>comments</em>, HTML
|
||||
comments. You know, like <code>&lt;!-- this is a comment --&gt;</code>.</p>
|
||||
|
||||
<p>Though comments do not normally affect the way browser renders the page,
|
||||
they are still parsed and are part of the DOM, as well as any other node.
|
||||
But this mean that we can access comments from JavaScript code, just like we
|
||||
access any other element, right? Which means that they <em>can</em> affect
|
||||
the way that page finally appears ;-)</p>
|
||||
|
||||
<h2>The code</h2>
|
||||
|
||||
<p>The main part was the idea. The code is simple ;-) Suppose we have the
|
||||
following HTML code:</p>
|
||||
|
||||
<pre class="code"><span class="function-name">&lt;</span><span class="html-tag">div</span> <span class="variable-name">id=</span><span class="string">&quot;conttoc&quot;</span><span class="paren-face-match">&gt;</span><span class="function-name">&lt;</span><span class="html-tag">/div</span><span class="function-name">&gt;</span></pre>
|
||||
|
||||
<p>and our function checks for the presence an element having the ID
|
||||
"conttoc", and generates a table of contents into it. Our code will also
|
||||
check if the "conttoc" element's first child is a comment node, and if so
|
||||
will parse additional parameters from there, for instance, a desired prefix
|
||||
for the links that are to be generated into it. Why did I need it? Because
|
||||
if the page uses a <code>&lt;base&gt;</code> element to specify the default
|
||||
link prefix, then links like "#gen1" generated by the <a href="toc.epl">toc
|
||||
generator</a> will not point to that same page as they should, but to the
|
||||
page reffered from <code>&lt;base&gt;</code>.</p>
|
||||
|
||||
<p>So the HTML would now look like this:</p>
|
||||
|
||||
<pre class="code"><span class="function-name">&lt;</span><span class="html-tag">div</span> <span class="variable-name">id=</span><span class="string">&quot;conttoc&quot;</span><span class="function-name">&gt;</span><span class="comment">&lt;!-- base:link/prefix.html --&gt;</span><span class="paren-face-match">&lt;</span><span class="html-tag">/div</span><span class="paren-face-match">&gt;</span></pre>
|
||||
|
||||
<p>And our TOC generation function does something like this:</p>
|
||||
|
||||
<pre class="code"><span class="keyword">var</span> <span class="variable-name">element</span> = getElementById(&quot;<span class="string">conttoc</span>&quot;);
|
||||
<span class="keyword">if</span> (element.firstChild &amp;&amp; element.firstChild.nodeType == 8) {
|
||||
<span class="comment">// 8 means Node.COMMENT_NODE. We're using numeric values
|
||||
</span> <span class="comment">// because IE6 does not support constant names.
|
||||
</span> <span class="keyword">var</span> <span class="variable-name">parameters</span> = element.firstChild.data;
|
||||
<span class="comment">// at this point &quot;parameters&quot; contains base:link/prefix.html
|
||||
</span> <span class="comment">// ...
|
||||
</span>}</pre>
|
||||
|
||||
<p>So we retrieved the value passed to the script from the HTML code. This
|
||||
was the goal of this article.</p>
|
||||
|
||||
<hr />
|
||||
<address><a href="http://students.infoiasi.ro/~mishoo/">Mihai Bazon</a></address>
|
||||
<!-- hhmts start --> Last modified on Thu Apr 3 20:34:17 2003
|
||||
<!-- hhmts end -->
|
||||
<!-- doc-lang: English -->
|
||||
</body>
|
||||
</html>
|
||||
</textarea>
|
||||
|
||||
<p />
|
||||
|
||||
<input type="submit" name="ok" value=" submit " />
|
||||
<input type="button" name="ins" value=" insert html " onclick="return insertHTML();" />
|
||||
<input type="button" name="hil" value=" highlight text " onclick="return highlight();" />
|
||||
|
||||
<a href="javascript:mySubmit()">submit</a>
|
||||
|
||||
<script type="text/javascript">
|
||||
function mySubmit() {
|
||||
// document.edit.save.value = "yes";
|
||||
document.edit.onsubmit(); // workaround browser bugs.
|
||||
document.edit.submit();
|
||||
};
|
||||
</script>
|
||||
|
||||
</form>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
40
www/extras/htmlArea3/examples/index.html
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
|
||||
<html> <head>
|
||||
<title>HTMLArea examples index</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h1>HTMLArea: auto-generated examples index</h1>
|
||||
|
||||
<ul>
|
||||
<li>
|
||||
<a href="2-areas.html">2-areas.html</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="context-menu.html">context-menu.html</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="core.html">core.html</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="css.html">css.html</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="full-page.html">full-page.html</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="fully-loaded.html">fully-loaded.html</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="spell-checker.html">spell-checker.html</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="table-operations.html">table-operations.html</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<hr />
|
||||
<address>mishoo@infoiasi.ro</address>
|
||||
<!-- hhmts start --> Last modified: Sun Feb 1 13:30:39 EET 2004 <!-- hhmts end -->
|
||||
</body> </html>
|
||||
|
||||
132
www/extras/htmlArea3/examples/spell-checker.html
Normal file
|
|
@ -0,0 +1,132 @@
|
|||
<html>
|
||||
<head>
|
||||
<title>Example of HTMLArea 3.0</title>
|
||||
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
|
||||
<!-- Configure the path to the editor. We make it relative now, so that the
|
||||
example ZIP file will work anywhere, but please NOTE THAT it's better to
|
||||
have it an absolute path, such as '/htmlarea/'. -->
|
||||
<script type="text/javascript">
|
||||
_editor_lang = "en";
|
||||
_editor_url = "../";
|
||||
</script>
|
||||
<!-- load the main HTMLArea files -->
|
||||
<script type="text/javascript" src="../htmlarea.js"></script>
|
||||
|
||||
<style type="text/css">
|
||||
html, body {
|
||||
font-family: Verdana,sans-serif;
|
||||
background-color: #fea;
|
||||
color: #000;
|
||||
}
|
||||
a:link, a:visited { color: #00f; }
|
||||
a:hover { color: #048; }
|
||||
a:active { color: #f00; }
|
||||
|
||||
textarea { background-color: #fff; border: 1px solid 00f; }
|
||||
</style>
|
||||
|
||||
<script type="text/javascript">
|
||||
HTMLArea.loadPlugin("SpellChecker");
|
||||
var editor = null;
|
||||
function initEditor() {
|
||||
// create an editor for the "ta" textbox
|
||||
editor = new HTMLArea("ta");
|
||||
|
||||
// register the SpellChecker plugin
|
||||
editor.registerPlugin(SpellChecker);
|
||||
|
||||
editor.generate();
|
||||
return false;
|
||||
}
|
||||
|
||||
function insertHTML() {
|
||||
var html = prompt("Enter some HTML code here");
|
||||
if (html) {
|
||||
editor.insertHTML(html);
|
||||
}
|
||||
}
|
||||
function highlight() {
|
||||
editor.surroundHTML('<span style="background-color: yellow">', '</span>');
|
||||
}
|
||||
</script>
|
||||
|
||||
</head>
|
||||
|
||||
<!-- use <body onload="HTMLArea.replaceAll()" if you don't care about
|
||||
customizing the editor. It's the easiest way! :) -->
|
||||
<body onload="initEditor()">
|
||||
|
||||
<h1>HTMLArea 3.0</h1>
|
||||
|
||||
<p>A replacement for <code>TEXTAREA</code> elements. © <a
|
||||
href="http://interactivetools.com">InteractiveTools.com</a>, 2003-2004.</p>
|
||||
|
||||
<p>Plugins:
|
||||
<tt>SpellChecker</tt> (sponsored by <a
|
||||
href="http://americanbible.org">American Bible Society</a>).
|
||||
</p>
|
||||
|
||||
<form action="test.cgi" method="post" id="edit" name="edit">
|
||||
|
||||
<textarea id="ta" name="ta" style="width:100%" rows="24" cols="80">
|
||||
|
||||
<h1>The <tt>SpellChecker</tt> plugin</h1>
|
||||
|
||||
<p>This file deminstrates the <tt>SpellChecker</tt> plugin of
|
||||
HTMLArea. To inwoke the spell checkert you need to press the
|
||||
<em>spell-check</em> buton in the toolbar.</p>
|
||||
|
||||
<p>The spell-checker uses a serverside script written in Perl. The
|
||||
Perl script calls <a href="http://aspell.net">aspell</a> for any
|
||||
word in the text and reports wordz that aren't found in the
|
||||
dyctionari.</p>
|
||||
|
||||
<p>The document that yu are reading now <b>intentionaly</b> containes
|
||||
some errorz, so that you have something to corect ;-)</p>
|
||||
|
||||
<p>Credits for the <tt>SpellChecker</tt> plugin go to:</p>
|
||||
|
||||
<ul>
|
||||
|
||||
<li><a href="http://aspell.net">Aspell</a> -- spell
|
||||
checker</li>
|
||||
|
||||
<li>The <a href="http://perl.org">Perl</a> programming language</li>
|
||||
|
||||
<li><tt><a
|
||||
href="http://cpan.org/modules/by-module/Text/Text-Aspell-0.02.readme">Text::Aspell</a></tt>
|
||||
-- Perl interface to Aspell</li>
|
||||
|
||||
<li><a href="http://americanbible.org">American Bible Society</a> --
|
||||
for sponsoring the <tt>SpellChecker</tt> plugin for
|
||||
<tt>HTMLArea</tt></li>
|
||||
|
||||
<li><a href="http://dynarch.com/mishoo/">Your humble servant</a> for
|
||||
implementing it ;-)</li>
|
||||
|
||||
</ul>
|
||||
|
||||
</textarea>
|
||||
|
||||
<p />
|
||||
|
||||
<input type="submit" name="ok" value=" submit " />
|
||||
<input type="button" name="ins" value=" insert html " onclick="return insertHTML();" />
|
||||
<input type="button" name="hil" value=" highlight text " onclick="return highlight();" />
|
||||
|
||||
<a href="javascript:mySubmit()">submit</a>
|
||||
|
||||
<script type="text/javascript">
|
||||
function mySubmit() {
|
||||
// document.edit.save.value = "yes";
|
||||
document.edit.onsubmit(); // workaround browser bugs.
|
||||
document.edit.submit();
|
||||
};
|
||||
</script>
|
||||
|
||||
</form>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
116
www/extras/htmlArea3/examples/table-operations.html
Normal file
|
|
@ -0,0 +1,116 @@
|
|||
<html>
|
||||
<head>
|
||||
<title>Example of HTMLArea 3.0</title>
|
||||
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
|
||||
<!-- Configure the path to the editor. We make it relative now, so that the
|
||||
example ZIP file will work anywhere, but please NOTE THAT it's better to
|
||||
have it an absolute path, such as '/htmlarea/'. -->
|
||||
<script type="text/javascript">
|
||||
_editor_lang = "en";
|
||||
_editor_url = "../";
|
||||
</script>
|
||||
<!-- load the main HTMLArea files -->
|
||||
<script type="text/javascript" src="../htmlarea.js"></script>
|
||||
|
||||
<style type="text/css">
|
||||
html, body {
|
||||
font-family: Verdana,sans-serif;
|
||||
background-color: #fea;
|
||||
color: #000;
|
||||
}
|
||||
a:link, a:visited { color: #00f; }
|
||||
a:hover { color: #048; }
|
||||
a:active { color: #f00; }
|
||||
|
||||
textarea { background-color: #fff; border: 1px solid 00f; }
|
||||
</style>
|
||||
|
||||
<script type="text/javascript">
|
||||
// load the plugin files
|
||||
HTMLArea.loadPlugin("TableOperations");
|
||||
|
||||
var editor = null;
|
||||
function initEditor() {
|
||||
// create an editor for the "ta" textbox
|
||||
editor = new HTMLArea("ta");
|
||||
|
||||
// register the TableOperations plugin with our editor
|
||||
editor.registerPlugin(TableOperations);
|
||||
|
||||
editor.generate();
|
||||
return false;
|
||||
}
|
||||
|
||||
function insertHTML() {
|
||||
var html = prompt("Enter some HTML code here");
|
||||
if (html) {
|
||||
editor.insertHTML(html);
|
||||
}
|
||||
}
|
||||
function highlight() {
|
||||
editor.surroundHTML('<span style="background-color: yellow">', '</span>');
|
||||
}
|
||||
</script>
|
||||
|
||||
</head>
|
||||
|
||||
<!-- use <body onload="HTMLArea.replaceAll()" if you don't care about
|
||||
customizing the editor. It's the easiest way! :) -->
|
||||
<body onload="initEditor()">
|
||||
|
||||
<h1>HTMLArea 3.0</h1>
|
||||
|
||||
<p>A replacement for <code>TEXTAREA</code> elements. © <a
|
||||
href="http://interactivetools.com">InteractiveTools.com</a>, 2003-2004.</p>
|
||||
|
||||
<p>Page that demonstrates the additional features of the
|
||||
<tt>TableOperations</tt> plugin (sponsored by <a
|
||||
href="http://www.bloki.com">Zapatec Inc.</a>).</p>
|
||||
|
||||
<form action="test.cgi" method="post" id="edit" name="edit">
|
||||
|
||||
<textarea id="ta" name="ta" style="width:100%" rows="24" cols="80">
|
||||
|
||||
<h1>Plugin: <tt>TableOperations</tt></h1>
|
||||
|
||||
<p>This page exemplifies the table operations toolbar, provided by the
|
||||
TableOperations plugin.</p>
|
||||
|
||||
<p>Following there is a table.</p>
|
||||
|
||||
<table border="1" style="border: 2px solid rgb(255, 0, 0); width: 80%; background-image: none; border-collapse: collapse; color: rgb(153, 102, 0); background-color: rgb(255, 255, 51);" align="center" cellspacing="2" cellpadding="1" summary="">
|
||||
<caption>This <span style="font-weight: bold;">is</span> a table</caption>
|
||||
<tbody>
|
||||
<tr style="border-style: none; background-image: none; background-color: rgb(255, 255, 153);" char="." align="left" valign="middle"> <td>1.1</td> <td>1.2</td> <td>1.3</td> <td>1.4</td> </tr>
|
||||
<tr> <td>2.1</td> <td style="border: 1px solid rgb(51, 51, 255); background-image: none; background-color: rgb(102, 255, 255); color: rgb(0, 0, 51);" char="." align="left" valign="middle">2.2</td> <td>2.3</td> <td>2.4</td> </tr>
|
||||
<tr> <td>3.1</td> <td>3.2</td> <td style="border: 2px dashed rgb(51, 204, 102); background-image: none; background-color: rgb(102, 255, 153); color: rgb(0, 51, 0);" char="." align="left" valign="middle">3.3</td> <td>3.4</td> </tr>
|
||||
<tr> <td style="background-color: rgb(255, 204, 51);">4.1</td> <td style="background-color: rgb(255, 204, 51);">4.2</td> <td style="background-color: rgb(255, 204, 51);">4.3</td> <td style="background-color: rgb(255, 204, 51);">4.4</td> </tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<p>Text after the table</p>
|
||||
|
||||
</textarea>
|
||||
|
||||
<p />
|
||||
|
||||
<input type="submit" name="ok" value=" submit " />
|
||||
<input type="button" name="ins" value=" insert html " onclick="return insertHTML();" />
|
||||
<input type="button" name="hil" value=" highlight text " onclick="return highlight();" />
|
||||
|
||||
<a href="javascript:mySubmit()">submit</a>
|
||||
|
||||
<script type="text/javascript">
|
||||
function mySubmit() {
|
||||
// document.edit.save.value = "yes";
|
||||
document.edit.onsubmit(); // workaround browser bugs.
|
||||
document.edit.submit();
|
||||
};
|
||||
</script>
|
||||
|
||||
</form>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
21
www/extras/htmlArea3/examples/test.cgi
Executable file
|
|
@ -0,0 +1,21 @@
|
|||
#! /usr/bin/perl -w
|
||||
#
|
||||
#
|
||||
#
|
||||
|
||||
|
||||
|
||||
use CGI;
|
||||
|
||||
print "Content-type: text/html\n\n";
|
||||
$c = new CGI;
|
||||
$ta = $c->param('ta');
|
||||
|
||||
print <<EOF;
|
||||
<html>
|
||||
<body>
|
||||
<textarea style="width: 100%; height: 200px">$ta</textarea>
|
||||
$ta
|
||||
</body>
|
||||
</html>
|
||||
EOF
|
||||
116
www/extras/htmlArea3/plugins/CSS/css.js
Normal file
|
|
@ -0,0 +1,116 @@
|
|||
// Simple CSS (className) plugin for the editor
|
||||
// Sponsored by http://www.miro.com.au
|
||||
// Implementation by Mihai Bazon, http://dynarch.com/mishoo.
|
||||
//
|
||||
// (c) dynarch.com 2003
|
||||
// Distributed under the same terms as HTMLArea itself.
|
||||
// This notice MUST stay intact for use (see license.txt).
|
||||
//
|
||||
// $Id$
|
||||
|
||||
function CSS(editor, params) {
|
||||
this.editor = editor;
|
||||
var cfg = editor.config;
|
||||
var toolbar = cfg.toolbar;
|
||||
var self = this;
|
||||
var i18n = CSS.I18N;
|
||||
var plugin_config = params[0];
|
||||
var combos = plugin_config.combos;
|
||||
|
||||
var first = true;
|
||||
for (var i = combos.length; --i >= 0;) {
|
||||
var combo = combos[i];
|
||||
var id = "CSS-class" + i;
|
||||
var css_class = {
|
||||
id : id,
|
||||
options : combo.options,
|
||||
action : function(editor) { self.onSelect(editor, this, combo.context, combo.updatecontextclass); },
|
||||
refresh : function(editor) { self.updateValue(editor, this); },
|
||||
context : combo.context
|
||||
};
|
||||
cfg.registerDropdown(css_class);
|
||||
|
||||
// prepend to the toolbar
|
||||
toolbar[1].splice(0, 0, first ? "separator" : "space");
|
||||
toolbar[1].splice(0, 0, id);
|
||||
if (combo.label)
|
||||
toolbar[1].splice(0, 0, "T[" + combo.label + "]");
|
||||
first = false;
|
||||
}
|
||||
};
|
||||
|
||||
CSS._pluginInfo = {
|
||||
name : "CSS",
|
||||
version : "1.0",
|
||||
developer : "Mihai Bazon",
|
||||
developer_url : "http://dynarch.com/mishoo/",
|
||||
c_owner : "Mihai Bazon",
|
||||
sponsor : "Miro International",
|
||||
sponsor_url : "http://www.miro.com.au",
|
||||
license : "htmlArea"
|
||||
};
|
||||
|
||||
CSS.prototype.onSelect = function(editor, obj, context, updatecontextclass) {
|
||||
var tbobj = editor._toolbarObjects[obj.id];
|
||||
var index = tbobj.element.selectedIndex;
|
||||
var className = tbobj.element.value;
|
||||
|
||||
// retrieve parent element of the selection
|
||||
var parent = editor.getParentElement();
|
||||
var surround = true;
|
||||
|
||||
var is_span = (parent && parent.tagName.toLowerCase() == "span");
|
||||
var update_parent = (context && updatecontextclass && parent && parent.tagName.toLowerCase() == context);
|
||||
|
||||
if (update_parent) {
|
||||
parent.className = className;
|
||||
editor.updateToolbar();
|
||||
return;
|
||||
}
|
||||
|
||||
if (is_span && index == 0 && !/\S/.test(parent.style.cssText)) {
|
||||
while (parent.firstChild) {
|
||||
parent.parentNode.insertBefore(parent.firstChild, parent);
|
||||
}
|
||||
parent.parentNode.removeChild(parent);
|
||||
editor.updateToolbar();
|
||||
return;
|
||||
}
|
||||
|
||||
if (is_span) {
|
||||
// maybe we could simply change the class of the parent node?
|
||||
if (parent.childNodes.length == 1) {
|
||||
parent.className = className;
|
||||
surround = false;
|
||||
// in this case we should handle the toolbar updation
|
||||
// ourselves.
|
||||
editor.updateToolbar();
|
||||
}
|
||||
}
|
||||
|
||||
// Other possibilities could be checked but require a lot of code. We
|
||||
// can't afford to do that now.
|
||||
if (surround) {
|
||||
// shit happens ;-) most of the time. this method works, but
|
||||
// it's dangerous when selection spans multiple block-level
|
||||
// elements.
|
||||
editor.surroundHTML("<span class='" + className + "'>", "</span>");
|
||||
}
|
||||
};
|
||||
|
||||
CSS.prototype.updateValue = function(editor, obj) {
|
||||
var select = editor._toolbarObjects[obj.id].element;
|
||||
var parent = editor.getParentElement();
|
||||
if (typeof parent.className != "undefined" && /\S/.test(parent.className)) {
|
||||
var options = select.options;
|
||||
var value = parent.className;
|
||||
for (var i = options.length; --i >= 0;) {
|
||||
var option = options[i];
|
||||
if (value == option.value) {
|
||||
select.selectedIndex = i;
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
select.selectedIndex = 0;
|
||||
};
|
||||
2
www/extras/htmlArea3/plugins/CSS/lang/en.js
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
// none yet; this file is a stub.
|
||||
CSS.I18N = {};
|
||||
416
www/extras/htmlArea3/plugins/ContextMenu/context-menu.js
Normal file
|
|
@ -0,0 +1,416 @@
|
|||
// Context Menu Plugin for HTMLArea-3.0
|
||||
// Sponsored by www.americanbible.org
|
||||
// Implementation by Mihai Bazon, http://dynarch.com/mishoo/
|
||||
//
|
||||
// (c) dynarch.com 2003.
|
||||
// Distributed under the same terms as HTMLArea itself.
|
||||
// This notice MUST stay intact for use (see license.txt).
|
||||
//
|
||||
// $Id$
|
||||
|
||||
HTMLArea.loadStyle("menu.css", "ContextMenu");
|
||||
|
||||
function ContextMenu(editor) {
|
||||
this.editor = editor;
|
||||
};
|
||||
|
||||
ContextMenu._pluginInfo = {
|
||||
name : "ContextMenu",
|
||||
version : "1.0",
|
||||
developer : "Mihai Bazon",
|
||||
developer_url : "http://dynarch.com/mishoo/",
|
||||
c_owner : "dynarch.com",
|
||||
sponsor : "American Bible Society",
|
||||
sponsor_url : "http://www.americanbible.org",
|
||||
license : "htmlArea"
|
||||
};
|
||||
|
||||
ContextMenu.prototype.onGenerate = function() {
|
||||
var self = this;
|
||||
var doc = this.editordoc = this.editor._iframe.contentWindow.document;
|
||||
HTMLArea._addEvents(doc, ["contextmenu"],
|
||||
function (event) {
|
||||
return self.popupMenu(HTMLArea.is_ie ? self.editor._iframe.contentWindow.event : event);
|
||||
});
|
||||
this.currentMenu = null;
|
||||
};
|
||||
|
||||
ContextMenu.prototype.getContextMenu = function(target) {
|
||||
var self = this;
|
||||
var editor = this.editor;
|
||||
var config = editor.config;
|
||||
var menu = [];
|
||||
var tbo = this.editor.plugins.TableOperations;
|
||||
if (tbo) tbo = tbo.instance;
|
||||
var i18n = ContextMenu.I18N;
|
||||
|
||||
var selection = editor.hasSelectedText();
|
||||
if (selection)
|
||||
menu.push([ i18n["Cut"], function() { editor.execCommand("cut"); }, null, config.btnList["cut"][1] ],
|
||||
[ i18n["Copy"], function() { editor.execCommand("copy"); }, null, config.btnList["copy"][1] ]);
|
||||
menu.push([ i18n["Paste"], function() { editor.execCommand("paste"); }, null, config.btnList["paste"][1] ]);
|
||||
|
||||
var currentTarget = target;
|
||||
var elmenus = [];
|
||||
|
||||
var link = null;
|
||||
var table = null;
|
||||
var tr = null;
|
||||
var td = null;
|
||||
var img = null;
|
||||
|
||||
function tableOperation(opcode) {
|
||||
tbo.buttonPress(editor, opcode);
|
||||
};
|
||||
|
||||
for (; target; target = target.parentNode) {
|
||||
var tag = target.tagName;
|
||||
if (!tag)
|
||||
continue;
|
||||
tag = tag.toLowerCase();
|
||||
switch (tag) {
|
||||
case "img":
|
||||
img = target;
|
||||
elmenus.push(null,
|
||||
[ i18n["Image Properties"],
|
||||
function() {
|
||||
editor._insertImage(img);
|
||||
},
|
||||
i18n["Show the image properties dialog"],
|
||||
config.btnList["insertimage"][1] ]
|
||||
);
|
||||
break;
|
||||
case "a":
|
||||
link = target;
|
||||
elmenus.push(null,
|
||||
[ i18n["Modify Link"],
|
||||
function() { editor.execCommand("createlink", true); },
|
||||
i18n["Current URL is"] + ': ' + link.href,
|
||||
config.btnList["createlink"][1] ],
|
||||
|
||||
[ i18n["Check Link"],
|
||||
function() { window.open(link.href); },
|
||||
i18n["Opens this link in a new window"] ],
|
||||
|
||||
[ i18n["Remove Link"],
|
||||
function() {
|
||||
if (confirm(i18n["Please confirm that you want to unlink this element."] + "\n" +
|
||||
i18n["Link points to:"] + " " + link.href)) {
|
||||
while (link.firstChild)
|
||||
link.parentNode.insertBefore(link.firstChild, link);
|
||||
link.parentNode.removeChild(link);
|
||||
}
|
||||
},
|
||||
i18n["Unlink the current element"] ]
|
||||
);
|
||||
break;
|
||||
case "td":
|
||||
td = target;
|
||||
if (!tbo) break;
|
||||
elmenus.push(null,
|
||||
[ i18n["Cell Properties"],
|
||||
function() { tableOperation("TO-cell-prop"); },
|
||||
i18n["Show the Table Cell Properties dialog"],
|
||||
config.btnList["TO-cell-prop"][1] ]
|
||||
);
|
||||
break;
|
||||
case "tr":
|
||||
tr = target;
|
||||
if (!tbo) break;
|
||||
elmenus.push(null,
|
||||
[ i18n["Row Properties"],
|
||||
function() { tableOperation("TO-row-prop"); },
|
||||
i18n["Show the Table Row Properties dialog"],
|
||||
config.btnList["TO-row-prop"][1] ],
|
||||
|
||||
[ i18n["Insert Row Before"],
|
||||
function() { tableOperation("TO-row-insert-above"); },
|
||||
i18n["Insert a new row before the current one"],
|
||||
config.btnList["TO-row-insert-above"][1] ],
|
||||
|
||||
[ i18n["Insert Row After"],
|
||||
function() { tableOperation("TO-row-insert-under"); },
|
||||
i18n["Insert a new row after the current one"],
|
||||
config.btnList["TO-row-insert-under"][1] ],
|
||||
|
||||
[ i18n["Delete Row"],
|
||||
function() { tableOperation("TO-row-delete"); },
|
||||
i18n["Delete the current row"],
|
||||
config.btnList["TO-row-delete"][1] ]
|
||||
);
|
||||
break;
|
||||
case "table":
|
||||
table = target;
|
||||
if (!tbo) break;
|
||||
elmenus.push(null,
|
||||
[ i18n["Table Properties"],
|
||||
function() { tableOperation("TO-table-prop"); },
|
||||
i18n["Show the Table Properties dialog"],
|
||||
config.btnList["TO-table-prop"][1] ],
|
||||
|
||||
[ i18n["Insert Column Before"],
|
||||
function() { tableOperation("TO-col-insert-before"); },
|
||||
i18n["Insert a new column before the current one"],
|
||||
config.btnList["TO-col-insert-before"][1] ],
|
||||
|
||||
[ i18n["Insert Column After"],
|
||||
function() { tableOperation("TO-col-insert-after"); },
|
||||
i18n["Insert a new column after the current one"],
|
||||
config.btnList["TO-col-insert-after"][1] ],
|
||||
|
||||
[ i18n["Delete Column"],
|
||||
function() { tableOperation("TO-col-delete"); },
|
||||
i18n["Delete the current column"],
|
||||
config.btnList["TO-col-delete"][1] ]
|
||||
);
|
||||
break;
|
||||
case "body":
|
||||
elmenus.push(null,
|
||||
[ i18n["Justify Left"],
|
||||
function() { editor.execCommand("justifyleft"); }, null,
|
||||
config.btnList["justifyleft"][1] ],
|
||||
[ i18n["Justify Center"],
|
||||
function() { editor.execCommand("justifycenter"); }, null,
|
||||
config.btnList["justifycenter"][1] ],
|
||||
[ i18n["Justify Right"],
|
||||
function() { editor.execCommand("justifyright"); }, null,
|
||||
config.btnList["justifyright"][1] ],
|
||||
[ i18n["Justify Full"],
|
||||
function() { editor.execCommand("justifyfull"); }, null,
|
||||
config.btnList["justifyfull"][1] ]
|
||||
);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (selection && !link)
|
||||
menu.push(null, [ i18n["Make link"],
|
||||
function() { editor.execCommand("createlink", true); },
|
||||
i18n["Create a link"],
|
||||
config.btnList["createlink"][1] ]);
|
||||
|
||||
for (var i in elmenus)
|
||||
menu.push(elmenus[i]);
|
||||
|
||||
menu.push(null,
|
||||
[ i18n["Remove the"] + " <" + currentTarget.tagName + "> " + i18n["Element"],
|
||||
function() {
|
||||
if (confirm(i18n["Please confirm that you want to remove this element:"] + " " + currentTarget.tagName)) {
|
||||
var el = currentTarget;
|
||||
var p = el.parentNode;
|
||||
p.removeChild(el);
|
||||
if (HTMLArea.is_gecko) {
|
||||
if (p.tagName.toLowerCase() == "td" && !p.hasChildNodes())
|
||||
p.appendChild(editor._doc.createElement("br"));
|
||||
editor.forceRedraw();
|
||||
editor.focusEditor();
|
||||
editor.updateToolbar();
|
||||
if (table) {
|
||||
var save_collapse = table.style.borderCollapse;
|
||||
table.style.borderCollapse = "collapse";
|
||||
table.style.borderCollapse = "separate";
|
||||
table.style.borderCollapse = save_collapse;
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
i18n["Remove this node from the document"] ]);
|
||||
return menu;
|
||||
};
|
||||
|
||||
ContextMenu.prototype.popupMenu = function(ev) {
|
||||
var self = this;
|
||||
var i18n = ContextMenu.I18N;
|
||||
if (this.currentMenu)
|
||||
this.currentMenu.parentNode.removeChild(this.currentMenu);
|
||||
function getPos(el) {
|
||||
var r = { x: el.offsetLeft, y: el.offsetTop };
|
||||
if (el.offsetParent) {
|
||||
var tmp = getPos(el.offsetParent);
|
||||
r.x += tmp.x;
|
||||
r.y += tmp.y;
|
||||
}
|
||||
return r;
|
||||
};
|
||||
function documentClick(ev) {
|
||||
ev || (ev = window.event);
|
||||
if (!self.currentMenu) {
|
||||
alert(i18n["How did you get here? (Please report!)"]);
|
||||
return false;
|
||||
}
|
||||
var el = HTMLArea.is_ie ? ev.srcElement : ev.target;
|
||||
for (; el != null && el != self.currentMenu; el = el.parentNode);
|
||||
if (el == null)
|
||||
self.closeMenu();
|
||||
//HTMLArea._stopEvent(ev);
|
||||
//return false;
|
||||
};
|
||||
var keys = [];
|
||||
function keyPress(ev) {
|
||||
ev || (ev = window.event);
|
||||
HTMLArea._stopEvent(ev);
|
||||
if (ev.keyCode == 27) {
|
||||
self.closeMenu();
|
||||
return false;
|
||||
}
|
||||
var key = String.fromCharCode(HTMLArea.is_ie ? ev.keyCode : ev.charCode).toLowerCase();
|
||||
for (var i = keys.length; --i >= 0;) {
|
||||
var k = keys[i];
|
||||
if (k[0].toLowerCase() == key)
|
||||
k[1].__msh.activate();
|
||||
}
|
||||
};
|
||||
self.closeMenu = function() {
|
||||
self.currentMenu.parentNode.removeChild(self.currentMenu);
|
||||
self.currentMenu = null;
|
||||
HTMLArea._removeEvent(document, "mousedown", documentClick);
|
||||
HTMLArea._removeEvent(self.editordoc, "mousedown", documentClick);
|
||||
if (keys.length > 0)
|
||||
HTMLArea._removeEvent(self.editordoc, "keypress", keyPress);
|
||||
if (HTMLArea.is_ie)
|
||||
self.iePopup.hide();
|
||||
};
|
||||
var target = HTMLArea.is_ie ? ev.srcElement : ev.target;
|
||||
var ifpos = getPos(self.editor._iframe);
|
||||
var x = ev.clientX + ifpos.x;
|
||||
var y = ev.clientY + ifpos.y;
|
||||
|
||||
var div;
|
||||
var doc;
|
||||
if (!HTMLArea.is_ie) {
|
||||
doc = document;
|
||||
} else {
|
||||
// IE stinks
|
||||
var popup = this.iePopup = window.createPopup();
|
||||
doc = popup.document;
|
||||
doc.open();
|
||||
doc.write("<html><head><style type='text/css'>@import url(" + _editor_url + "plugins/ContextMenu/menu.css); html, body { padding: 0px; margin: 0px; overflow: hidden; border: 0px; }</style></head><body unselectable='yes'></body></html>");
|
||||
doc.close();
|
||||
}
|
||||
div = doc.createElement("div");
|
||||
if (HTMLArea.is_ie)
|
||||
div.unselectable = "on";
|
||||
div.oncontextmenu = function() { return false; };
|
||||
div.className = "htmlarea-context-menu";
|
||||
if (!HTMLArea.is_ie)
|
||||
div.style.left = div.style.top = "0px";
|
||||
doc.body.appendChild(div);
|
||||
|
||||
var table = doc.createElement("table");
|
||||
div.appendChild(table);
|
||||
table.cellSpacing = 0;
|
||||
table.cellPadding = 0;
|
||||
var parent = doc.createElement("tbody");
|
||||
table.appendChild(parent);
|
||||
|
||||
var options = this.getContextMenu(target);
|
||||
for (var i = 0; i < options.length; ++i) {
|
||||
var option = options[i];
|
||||
var item = doc.createElement("tr");
|
||||
parent.appendChild(item);
|
||||
if (HTMLArea.is_ie)
|
||||
item.unselectable = "on";
|
||||
else item.onmousedown = function(ev) {
|
||||
HTMLArea._stopEvent(ev);
|
||||
return false;
|
||||
};
|
||||
if (!option) {
|
||||
item.className = "separator";
|
||||
var td = doc.createElement("td");
|
||||
td.className = "icon";
|
||||
var IE_IS_A_FUCKING_SHIT = '>';
|
||||
if (HTMLArea.is_ie) {
|
||||
td.unselectable = "on";
|
||||
IE_IS_A_FUCKING_SHIT = " unselectable='on' style='height=1px'> ";
|
||||
}
|
||||
td.innerHTML = "<div" + IE_IS_A_FUCKING_SHIT + "</div>";
|
||||
var td1 = td.cloneNode(true);
|
||||
td1.className = "label";
|
||||
item.appendChild(td);
|
||||
item.appendChild(td1);
|
||||
} else {
|
||||
var label = option[0];
|
||||
item.className = "item";
|
||||
item.__msh = {
|
||||
item: item,
|
||||
label: label,
|
||||
action: option[1],
|
||||
tooltip: option[2] || null,
|
||||
icon: option[3] || null,
|
||||
activate: function() {
|
||||
self.closeMenu();
|
||||
self.editor.focusEditor();
|
||||
this.action();
|
||||
}
|
||||
};
|
||||
label = label.replace(/_([a-zA-Z0-9])/, "<u>$1</u>");
|
||||
if (label != option[0])
|
||||
keys.push([ RegExp.$1, item ]);
|
||||
label = label.replace(/__/, "_");
|
||||
var td1 = doc.createElement("td");
|
||||
if (HTMLArea.is_ie)
|
||||
td1.unselectable = "on";
|
||||
item.appendChild(td1);
|
||||
td1.className = "icon";
|
||||
if (item.__msh.icon)
|
||||
td1.innerHTML = "<img align='middle' src='" + item.__msh.icon + "' />";
|
||||
var td2 = doc.createElement("td");
|
||||
if (HTMLArea.is_ie)
|
||||
td2.unselectable = "on";
|
||||
item.appendChild(td2);
|
||||
td2.className = "label";
|
||||
td2.innerHTML = label;
|
||||
item.onmouseover = function() {
|
||||
this.className += " hover";
|
||||
self.editor._statusBarTree.innerHTML = this.__msh.tooltip || ' ';
|
||||
};
|
||||
item.onmouseout = function() { this.className = "item"; };
|
||||
item.oncontextmenu = function(ev) {
|
||||
this.__msh.activate();
|
||||
if (!HTMLArea.is_ie)
|
||||
HTMLArea._stopEvent(ev);
|
||||
return false;
|
||||
};
|
||||
item.onmouseup = function(ev) {
|
||||
var timeStamp = (new Date()).getTime();
|
||||
if (timeStamp - self.timeStamp > 500)
|
||||
this.__msh.activate();
|
||||
if (!HTMLArea.is_ie)
|
||||
HTMLArea._stopEvent(ev);
|
||||
return false;
|
||||
};
|
||||
//if (typeof option[2] == "string")
|
||||
//item.title = option[2];
|
||||
}
|
||||
}
|
||||
|
||||
if (!HTMLArea.is_ie) {
|
||||
var dx = x + div.offsetWidth - window.innerWidth + 4;
|
||||
var dy = y + div.offsetHeight - window.innerHeight + 4;
|
||||
if (dx > 0) x -= dx;
|
||||
if (dy > 0) y -= dy;
|
||||
div.style.left = x + "px";
|
||||
div.style.top = y + "px";
|
||||
} else {
|
||||
// determine the size (did I mention that IE stinks?)
|
||||
var foobar = document.createElement("div");
|
||||
foobar.className = "htmlarea-context-menu";
|
||||
foobar.innerHTML = div.innerHTML;
|
||||
document.body.appendChild(foobar);
|
||||
var w = foobar.offsetWidth;
|
||||
var h = foobar.offsetHeight;
|
||||
document.body.removeChild(foobar);
|
||||
this.iePopup.show(ev.screenX, ev.screenY, w, h);
|
||||
}
|
||||
|
||||
this.currentMenu = div;
|
||||
this.timeStamp = (new Date()).getTime();
|
||||
|
||||
HTMLArea._addEvent(document, "mousedown", documentClick);
|
||||
HTMLArea._addEvent(this.editordoc, "mousedown", documentClick);
|
||||
if (keys.length > 0)
|
||||
HTMLArea._addEvent(this.editordoc, "keypress", keyPress);
|
||||
|
||||
HTMLArea._stopEvent(ev);
|
||||
return false;
|
||||
};
|
||||
59
www/extras/htmlArea3/plugins/ContextMenu/lang/de.js
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
// I18N constants
|
||||
|
||||
// LANG: "de", ENCODING: UTF-8 | ISO-8859-1
|
||||
|
||||
// translated: <]{MJ}[> i@student.ethz.ch
|
||||
|
||||
|
||||
ContextMenu.I18N = {
|
||||
// Items that appear in menu. Please note that an underscore (_)
|
||||
// character in the translation (right column) will cause the following
|
||||
// letter to become underlined and be shortcut for that menu option.
|
||||
|
||||
"Cut" : "Ausschneiden",
|
||||
"Copy" : "Kopieren",
|
||||
"Paste" : "Einfügen",
|
||||
"Image Properties" : "_Bild Einstellungen...",
|
||||
"Modify Link" : "_Link ändern...",
|
||||
"Check Link" : "Link testen...",
|
||||
"Remove Link" : "Link entfernen...",
|
||||
"Cell Properties" : "Z_ellen Einstellungen...",
|
||||
"Row Properties" : "Ze_ilen Einstellungen...",
|
||||
"Insert Row Before" : "Zeile einfügen v_or Position",
|
||||
"Insert Row After" : "Zeile einfügen n_ach Position",
|
||||
"Delete Row" : "Zeile löschen",
|
||||
"Table Properties" : "_Tabellen Einstellungen...",
|
||||
"Insert Column Before" : "Spalte einfügen vo_r Position",
|
||||
"Insert Column After" : "Spalte einfügen na_ch Position",
|
||||
"Delete Column" : "Spalte löschen",
|
||||
"Justify Left" : "Links ausrichten",
|
||||
"Justify Center" : "Zentriert",
|
||||
"Justify Right" : "Rechts ausrichten",
|
||||
"Justify Full" : "Blocksatz",
|
||||
"Make link" : "Lin_k erstellen...",
|
||||
"Remove the" : "",
|
||||
"Element" : "Element entfernen...",
|
||||
|
||||
// Other labels (tooltips and alert/confirm box messages)
|
||||
|
||||
"Please confirm that you want to remove this element:" : "Wollen sie dieses Element wirklich entfernen ?",
|
||||
"Remove this node from the document" : "Dieses Element aus dem Dokument entfernen",
|
||||
"How did you get here? (Please report!)" : "How did you get here? (Please report!)",
|
||||
"Show the image properties dialog" : "Fenster für die Bild-Einstellungen anzeigen",
|
||||
"Modify URL" : "URL ändern",
|
||||
"Current URL is" : "Aktuelle URL ist",
|
||||
"Opens this link in a new window" : "Diesen Link in neuem Fenster öffnen",
|
||||
"Please confirm that you want to unlink this element." : "Wollen sie diesen Link wirklich entfernen ?",
|
||||
"Link points to:" : "Link zeigt auf:",
|
||||
"Unlink the current element" : "Link auf Element entfernen",
|
||||
"Show the Table Cell Properties dialog" : "Zellen-Einstellungen anzeigen",
|
||||
"Show the Table Row Properties dialog" : "Zeilen-Einstellungen anzeigen",
|
||||
"Insert a new row before the current one" : "Zeile einfügen vor der aktuellen Position",
|
||||
"Insert a new row after the current one" : "Zeile einfügen nach der aktuellen Position",
|
||||
"Delete the current row" : "Zeile löschen",
|
||||
"Show the Table Properties dialog" : "Show the Table Properties dialog",
|
||||
"Insert a new column before the current one" : "Spalte einfügen vor der aktuellen Position",
|
||||
"Insert a new column after the current one" : "Spalte einfügen nach der aktuellen Position",
|
||||
"Delete the current column" : "Spalte löschen",
|
||||
"Create a link" : "Link erstellen"
|
||||
};
|
||||
57
www/extras/htmlArea3/plugins/ContextMenu/lang/el.js
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
// I18N constants
|
||||
|
||||
// LANG: "el", ENCODING: UTF-8 | ISO-8859-7
|
||||
// Author: Dimitris Glezos, dimitris@glezos.com
|
||||
|
||||
ContextMenu.I18N = {
|
||||
// Items that appear in menu. Please note that an underscore (_)
|
||||
// character in the translation (right column) will cause the following
|
||||
// letter to become underlined and be shortcut for that menu option.
|
||||
|
||||
"Cut" : "Αποκοπή",
|
||||
"Copy" : "Αντιγραφή",
|
||||
"Paste" : "Επικόλληση",
|
||||
"Image Properties" : "Ιδιότητες Εικόνας...",
|
||||
"Modify Link" : "Τροποποίηση συνδέσμου...",
|
||||
"Check Link" : "Έλεγχος συνδέσμων...",
|
||||
"Remove Link" : "Διαγραφή συνδέσμου...",
|
||||
"Cell Properties" : "Ιδιότητες κελιού...",
|
||||
"Row Properties" : "Ιδιότητες γραμμής...",
|
||||
"Insert Row Before" : "Εισαγωγή γραμμής πριν",
|
||||
"Insert Row After" : "Εισαγωγή γραμμής μετά",
|
||||
"Delete Row" : "Διαγραφή γραμμής",
|
||||
"Table Properties" : "Ιδιότητες πίνακα...",
|
||||
"Insert Column Before" : "Εισαγωγή στήλης πριν",
|
||||
"Insert Column After" : "Εισαγωγή στήλης μετά",
|
||||
"Delete Column" : "Διαγραφή στήλης",
|
||||
"Justify Left" : "Στοίχηση Αριστερά",
|
||||
"Justify Center" : "Στοίχηση Κέντρο",
|
||||
"Justify Right" : "Στοίχηση Δεξιά",
|
||||
"Justify Full" : "Πλήρης Στοίχηση",
|
||||
"Make link" : "Δημιουργία συνδέσμου...",
|
||||
"Remove the" : "Αφαίρεση",
|
||||
"Element" : "στοιχείου...",
|
||||
|
||||
// Other labels (tooltips and alert/confirm box messages)
|
||||
|
||||
"Please confirm that you want to remove this element:" : "Είστε βέβαιος πως θέλετε να αφαιρέσετε το στοιχείο ",
|
||||
"Remove this node from the document" : "Αφαίρεση αυτού του κόμβου από το έγγραφο",
|
||||
"How did you get here? (Please report!)" : "Πώς ήρθατε μέχρι εδώ; (Παρακαλούμε αναφέρετε το!)",
|
||||
"Show the image properties dialog" : "Εμφάνιση διαλόγου με τις Ιδιότητες εικόνας",
|
||||
"Modify URL" : "Τροποποίηση URL",
|
||||
"Current URL is" : "Το τρέχων URL είναι",
|
||||
"Opens this link in a new window" : "Ανοίγει αυτό τον σύνδεσμο σε ένα νέο παράθυρο",
|
||||
"Please confirm that you want to unlink this element." : "Είστε βέβαιος πως θέλετε να αφαιρέσετε τον σύνδεσμο από αυτό το στοιχείο:",
|
||||
"Link points to:" : "Ο σύνδεμος οδηγεί εδώ:",
|
||||
"Unlink the current element" : "Αφαίρεση συνδέσμου από το παρών στοιχείο",
|
||||
"Show the Table Cell Properties dialog" : "Εμφάνιση διαλόγου με τις Ιδιότητες κελιού Πίνακα",
|
||||
"Show the Table Row Properties dialog" : "Εμφάνιση διαλόγου με τις Ιδιότητες γραμμής Πίνακα",
|
||||
"Insert a new row before the current one" : "Εισαγωγή μιας νέας γραμμής πριν την επιλεγμένη",
|
||||
"Insert a new row after the current one" : "Εισαγωγή μιας νέας γραμμής μετά την επιλεγμένη",
|
||||
"Delete the current row" : "Διαγραφή επιλεγμένης γραμμής",
|
||||
"Show the Table Properties dialog" : "Εμφάνιση διαλόγου με τις Ιδιότητες Πίνακα",
|
||||
"Insert a new column before the current one" : "Εισαγωγή νέας στήλης πριν την επιλεγμένη",
|
||||
"Insert a new column after the current one" : "Εισαγωγή νέας στήλης μετά την επιλεγμένη",
|
||||
"Delete the current column" : "Διαγραφή επιλεγμένης στήλης",
|
||||
"Create a link" : "Δημιουργία συνδέσμου"
|
||||
};
|
||||
66
www/extras/htmlArea3/plugins/ContextMenu/lang/en.js
Normal file
|
|
@ -0,0 +1,66 @@
|
|||
// 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.)
|
||||
|
||||
ContextMenu.I18N = {
|
||||
// Items that appear in menu. Please note that an underscore (_)
|
||||
// character in the translation (right column) will cause the following
|
||||
// letter to become underlined and be shortcut for that menu option.
|
||||
|
||||
"Cut" : "Cut",
|
||||
"Copy" : "Copy",
|
||||
"Paste" : "Paste",
|
||||
"Image Properties" : "_Image Properties...",
|
||||
"Modify Link" : "_Modify Link...",
|
||||
"Check Link" : "Chec_k Link...",
|
||||
"Remove Link" : "_Remove Link...",
|
||||
"Cell Properties" : "C_ell Properties...",
|
||||
"Row Properties" : "Ro_w Properties...",
|
||||
"Insert Row Before" : "I_nsert Row Before",
|
||||
"Insert Row After" : "In_sert Row After",
|
||||
"Delete Row" : "_Delete Row",
|
||||
"Table Properties" : "_Table Properties...",
|
||||
"Insert Column Before" : "Insert _Column Before",
|
||||
"Insert Column After" : "Insert C_olumn After",
|
||||
"Delete Column" : "De_lete Column",
|
||||
"Justify Left" : "Justify Left",
|
||||
"Justify Center" : "Justify Center",
|
||||
"Justify Right" : "Justify Right",
|
||||
"Justify Full" : "Justify Full",
|
||||
"Make link" : "Make lin_k...",
|
||||
"Remove the" : "Remove the",
|
||||
"Element" : "Element...",
|
||||
|
||||
// Other labels (tooltips and alert/confirm box messages)
|
||||
|
||||
"Please confirm that you want to remove this element:" : "Please confirm that you want to remove this element:",
|
||||
"Remove this node from the document" : "Remove this node from the document",
|
||||
"How did you get here? (Please report!)" : "How did you get here? (Please report!)",
|
||||
"Show the image properties dialog" : "Show the image properties dialog",
|
||||
"Modify URL" : "Modify URL",
|
||||
"Current URL is" : "Current URL is",
|
||||
"Opens this link in a new window" : "Opens this link in a new window",
|
||||
"Please confirm that you want to unlink this element." : "Please confirm that you want to unlink this element.",
|
||||
"Link points to:" : "Link points to:",
|
||||
"Unlink the current element" : "Unlink the current element",
|
||||
"Show the Table Cell Properties dialog" : "Show the Table Cell Properties dialog",
|
||||
"Show the Table Row Properties dialog" : "Show the Table Row Properties dialog",
|
||||
"Insert a new row before the current one" : "Insert a new row before the current one",
|
||||
"Insert a new row after the current one" : "Insert a new row after the current one",
|
||||
"Delete the current row" : "Delete the current row",
|
||||
"Show the Table Properties dialog" : "Show the Table Properties dialog",
|
||||
"Insert a new column before the current one" : "Insert a new column before the current one",
|
||||
"Insert a new column after the current one" : "Insert a new column after the current one",
|
||||
"Delete the current column" : "Delete the current column",
|
||||
"Create a link" : "Create a link"
|
||||
};
|
||||
66
www/extras/htmlArea3/plugins/ContextMenu/lang/nl.js
Normal file
|
|
@ -0,0 +1,66 @@
|
|||
// 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.)
|
||||
|
||||
ContextMenu.I18N = {
|
||||
// Items that appear in menu. Please note that an underscore (_)
|
||||
// character in the translation (right column) will cause the following
|
||||
// letter to become underlined and be shortcut for that menu option.
|
||||
|
||||
"Cut" : "Knippen",
|
||||
"Copy" : "Kopiëren",
|
||||
"Paste" : "Plakken",
|
||||
"Image Properties" : "Eigenschappen afbeelding...",
|
||||
"Modify Link" : "Hyperlin_k aanpassen...",
|
||||
"Check Link" : "Controleer hyperlin_k...",
|
||||
"Remove Link" : "Ve_rwijder hyperlink...",
|
||||
"Cell Properties" : "C_eleigenschappen...",
|
||||
"Row Properties" : "Rijeigenscha_ppen...",
|
||||
"Insert Row Before" : "Rij invoegen boven",
|
||||
"Insert Row After" : "Rij invoegen onder",
|
||||
"Delete Row" : "Rij _verwijderen",
|
||||
"Table Properties" : "_Tabeleigenschappen...",
|
||||
"Insert Column Before" : "Kolom invoegen voor",
|
||||
"Insert Column After" : "Kolom invoegen na",
|
||||
"Delete Column" : "Kolom verwijderen",
|
||||
"Justify Left" : "Links uitlijnen",
|
||||
"Justify Center" : "Centreren",
|
||||
"Justify Right" : "Rechts uitlijnen",
|
||||
"Justify Full" : "Uitvullen",
|
||||
"Make link" : "Maak hyperlin_k...",
|
||||
"Remove the" : "Verwijder het",
|
||||
"Element" : "element...",
|
||||
|
||||
// Other labels (tooltips and alert/confirm box messages)
|
||||
|
||||
"Please confirm that you want to remove this element:" : "Is het werkelijk de bedoeling dit element te verwijderen:",
|
||||
"Remove this node from the document" : "Verwijder dit punt van het document",
|
||||
"How did you get here? (Please report!)" : "Hoe kwam je hier? (A.U.B. doorgeven!)",
|
||||
"Show the image properties dialog" : "Laat het afbeeldingseigenschappen dialog zien",
|
||||
"Modify URL" : "Aanpassen URL",
|
||||
"Current URL is" : "Huidig URL is",
|
||||
"Opens this link in a new window" : "Opend deze hyperlink in een nieuw venster",
|
||||
"Please confirm that you want to unlink this element." : "Is het werkelijk de bedoeling dit element te unlinken.",
|
||||
"Link points to:" : "Hyperlink verwijst naar:",
|
||||
"Unlink the current element" : "Unlink het huidige element",
|
||||
"Show the Table Cell Properties dialog" : "Laat de tabel celeigenschappen dialog zien",
|
||||
"Show the Table Row Properties dialog" : "Laat de tabel rijeigenschappen dialog zien",
|
||||
"Insert a new row before the current one" : "Voeg een nieuwe rij in boven de huidige",
|
||||
"Insert a new row after the current one" : "Voeg een nieuwe rij in onder de huidige",
|
||||
"Delete the current row" : "Verwijder de huidige rij",
|
||||
"Show the Table Properties dialog" : "Laat de tabel eigenschappen dialog zien",
|
||||
"Insert a new column before the current one" : "Voeg een nieuwe kolom in voor de huidige",
|
||||
"Insert a new column after the current one" : "Voeg een nieuwe kolom in na de huidige",
|
||||
"Delete the current column" : "Verwijder de huidige kolom",
|
||||
"Create a link" : "Maak een hyperlink"
|
||||
};
|
||||
64
www/extras/htmlArea3/plugins/ContextMenu/menu.css
Normal file
|
|
@ -0,0 +1,64 @@
|
|||
/* styles for the ContextMenu /HTMLArea */
|
||||
/* The ContextMenu plugin is (c) dynarch.com 2003. */
|
||||
/* Distributed under the same terms as HTMLArea itself */
|
||||
|
||||
div.htmlarea-context-menu {
|
||||
position: absolute;
|
||||
border: 1px solid #aca899;
|
||||
padding: 2px;
|
||||
background-color: #fff;
|
||||
cursor: default;
|
||||
z-index: 1000;
|
||||
}
|
||||
|
||||
div.htmlarea-context-menu table {
|
||||
font: 11px tahoma,verdana,sans-serif;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
div.htmlarea-context-menu tr.item td.icon img {
|
||||
width: 18px;
|
||||
height: 18px;
|
||||
}
|
||||
|
||||
div.htmlarea-context-menu tr.item td.icon {
|
||||
padding: 0px 3px;
|
||||
height: 18px;
|
||||
background-color: #cdf;
|
||||
}
|
||||
|
||||
div.htmlarea-context-menu tr.item td.label {
|
||||
padding: 1px 10px 1px 3px;
|
||||
}
|
||||
|
||||
div.htmlarea-context-menu tr.separator td {
|
||||
padding: 2px 0px;
|
||||
}
|
||||
|
||||
div.htmlarea-context-menu tr.separator td div {
|
||||
border-top: 1px solid #aca899;
|
||||
overflow: hidden;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
div.htmlarea-context-menu tr.separator td.icon {
|
||||
background-color: #cdf;
|
||||
}
|
||||
|
||||
div.htmlarea-context-menu tr.separator td.icon div {
|
||||
/* margin-left: 3px; */
|
||||
border-color: #fff;
|
||||
}
|
||||
|
||||
div.htmlarea-context-menu tr.separator td.label div {
|
||||
margin-right: 3px;
|
||||
}
|
||||
|
||||
div.htmlarea-context-menu tr.item.hover {
|
||||
background-color: #316ac5;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
div.htmlarea-context-menu tr.item.hover td.icon {
|
||||
background-color: #619af5;
|
||||
}
|
||||
143
www/extras/htmlArea3/plugins/FullPage/full-page.js
Normal file
|
|
@ -0,0 +1,143 @@
|
|||
// FullPage Plugin for HTMLArea-3.0
|
||||
// Implementation by Mihai Bazon. Sponsored by http://thycotic.com
|
||||
//
|
||||
// htmlArea v3.0 - Copyright (c) 2002 interactivetools.com, inc.
|
||||
// This notice MUST stay intact for use (see license.txt).
|
||||
//
|
||||
// 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 for InteractiveTools.
|
||||
// http://dynarch.com/mishoo
|
||||
//
|
||||
// $Id$
|
||||
|
||||
function FullPage(editor) {
|
||||
this.editor = editor;
|
||||
|
||||
var cfg = editor.config;
|
||||
cfg.fullPage = true;
|
||||
var tt = FullPage.I18N;
|
||||
var self = this;
|
||||
|
||||
cfg.registerButton("FP-docprop", tt["Document properties"], editor.imgURL("docprop.gif", "FullPage"), false,
|
||||
function(editor, id) {
|
||||
self.buttonPress(editor, id);
|
||||
});
|
||||
|
||||
// add a new line in the toolbar
|
||||
cfg.toolbar[0].splice(0, 0, "separator");
|
||||
cfg.toolbar[0].splice(0, 0, "FP-docprop");
|
||||
};
|
||||
|
||||
FullPage._pluginInfo = {
|
||||
name : "FullPage",
|
||||
version : "1.0",
|
||||
developer : "Mihai Bazon",
|
||||
developer_url : "http://dynarch.com/mishoo/",
|
||||
c_owner : "Mihai Bazon",
|
||||
sponsor : "Thycotic Software Ltd.",
|
||||
sponsor_url : "http://thycotic.com",
|
||||
license : "htmlArea"
|
||||
};
|
||||
|
||||
FullPage.prototype.buttonPress = function(editor, id) {
|
||||
var self = this;
|
||||
switch (id) {
|
||||
case "FP-docprop":
|
||||
var doc = editor._doc;
|
||||
var links = doc.getElementsByTagName("link");
|
||||
var style1 = '';
|
||||
var style2 = '';
|
||||
for (var i = links.length; --i >= 0;) {
|
||||
var link = links[i];
|
||||
if (/stylesheet/i.test(link.rel)) {
|
||||
if (/alternate/i.test(link.rel))
|
||||
style2 = link.href;
|
||||
else
|
||||
style1 = link.href;
|
||||
}
|
||||
}
|
||||
var title = doc.getElementsByTagName("title")[0];
|
||||
title = title ? title.innerHTML : '';
|
||||
var init = {
|
||||
f_doctype : editor.doctype,
|
||||
f_title : title,
|
||||
f_body_bgcolor : HTMLArea._colorToRgb(doc.body.style.backgroundColor),
|
||||
f_body_fgcolor : HTMLArea._colorToRgb(doc.body.style.color),
|
||||
f_base_style : style1,
|
||||
f_alt_style : style2,
|
||||
|
||||
editor : editor
|
||||
};
|
||||
editor._popupDialog("plugin://FullPage/docprop", function(params) {
|
||||
self.setDocProp(params);
|
||||
}, init);
|
||||
break;
|
||||
}
|
||||
};
|
||||
|
||||
FullPage.prototype.setDocProp = function(params) {
|
||||
var txt = "";
|
||||
var doc = this.editor._doc;
|
||||
var head = doc.getElementsByTagName("head")[0];
|
||||
var links = doc.getElementsByTagName("link");
|
||||
var style1 = null;
|
||||
var style2 = null;
|
||||
for (var i = links.length; --i >= 0;) {
|
||||
var link = links[i];
|
||||
if (/stylesheet/i.test(link.rel)) {
|
||||
if (/alternate/i.test(link.rel))
|
||||
style2 = link;
|
||||
else
|
||||
style1 = link;
|
||||
}
|
||||
}
|
||||
function createLink(alt) {
|
||||
var link = doc.createElement("link");
|
||||
link.rel = alt ? "alternate stylesheet" : "stylesheet";
|
||||
head.appendChild(link);
|
||||
return link;
|
||||
};
|
||||
|
||||
if (!style1 && params.f_base_style)
|
||||
style1 = createLink(false);
|
||||
if (params.f_base_style)
|
||||
style1.href = params.f_base_style;
|
||||
else if (style1)
|
||||
head.removeChild(style1);
|
||||
|
||||
if (!style2 && params.f_alt_style)
|
||||
style2 = createLink(true);
|
||||
if (params.f_alt_style)
|
||||
style2.href = params.f_alt_style;
|
||||
else if (style2)
|
||||
head.removeChild(style2);
|
||||
|
||||
for (var i in params) {
|
||||
var val = params[i];
|
||||
switch (i) {
|
||||
case "f_title":
|
||||
var title = doc.getElementsByTagName("title")[0];
|
||||
if (!title) {
|
||||
title = doc.createElement("title");
|
||||
head.appendChild(title);
|
||||
} else while (node = title.lastChild)
|
||||
title.removeChild(node);
|
||||
if (!HTMLArea.is_ie)
|
||||
title.appendChild(doc.createTextNode(val));
|
||||
else
|
||||
doc.title = val;
|
||||
break;
|
||||
case "f_doctype":
|
||||
this.editor.setDoctype(val);
|
||||
break;
|
||||
case "f_body_bgcolor":
|
||||
doc.body.style.backgroundColor = val;
|
||||
break;
|
||||
case "f_body_fgcolor":
|
||||
doc.body.style.color = val;
|
||||
break;
|
||||
}
|
||||
}
|
||||
};
|
||||
BIN
www/extras/htmlArea3/plugins/FullPage/img/docprop.gif
Normal file
|
After Width: | Height: | Size: 302 B |
25
www/extras/htmlArea3/plugins/FullPage/lang/en.js
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
// I18N for the FullPage plugin
|
||||
|
||||
// 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.)
|
||||
|
||||
FullPage.I18N = {
|
||||
"Alternate style-sheet:": "Alternate style-sheet:",
|
||||
"Background color:": "Background color:",
|
||||
"Cancel": "Cancel",
|
||||
"DOCTYPE:": "DOCTYPE:",
|
||||
"Document properties": "Document properties",
|
||||
"Document title:": "Document title:",
|
||||
"OK": "OK",
|
||||
"Primary style-sheet:": "Primary style-sheet:",
|
||||
"Text color:": "Text color:"
|
||||
};
|
||||
25
www/extras/htmlArea3/plugins/FullPage/lang/ro.js
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
// I18N for the FullPage plugin
|
||||
|
||||
// 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.)
|
||||
|
||||
FullPage.I18N = {
|
||||
"Alternate style-sheet:": "Template CSS alternativ:",
|
||||
"Background color:": "Culoare de fundal:",
|
||||
"Cancel": "Renunţă",
|
||||
"DOCTYPE:": "DOCTYPE:",
|
||||
"Document properties": "Proprietăţile documentului",
|
||||
"Document title:": "Titlul documentului:",
|
||||
"OK": "Acceptă",
|
||||
"Primary style-sheet:": "Template CSS principal:",
|
||||
"Text color:": "Culoare text:"
|
||||
};
|
||||
131
www/extras/htmlArea3/plugins/FullPage/popups/docprop.html
Normal file
|
|
@ -0,0 +1,131 @@
|
|||
<html>
|
||||
|
||||
<head>
|
||||
<title>Document properties</title>
|
||||
|
||||
<script type="text/javascript" src="../../../popups/popup.js"></script>
|
||||
|
||||
<script type="text/javascript">
|
||||
|
||||
FullPage = window.opener.FullPage; // load the FullPage plugin and lang file ;-)
|
||||
window.resizeTo(400, 100);
|
||||
|
||||
var accepted = {
|
||||
f_doctype : true,
|
||||
f_title : true,
|
||||
f_body_bgcolor : true,
|
||||
f_body_fgcolor : true,
|
||||
f_base_style : true,
|
||||
f_alt_style : true
|
||||
};
|
||||
|
||||
var editor = null;
|
||||
function Init() {
|
||||
__dlg_translate(FullPage.I18N);
|
||||
__dlg_init();
|
||||
var params = window.dialogArguments;
|
||||
for (var i in params) {
|
||||
if (i in accepted) {
|
||||
var el = document.getElementById(i);
|
||||
el.value = params[i];
|
||||
}
|
||||
}
|
||||
editor = params.editor;
|
||||
document.getElementById("f_title").focus();
|
||||
document.getElementById("f_title").select();
|
||||
};
|
||||
|
||||
function onOK() {
|
||||
var required = {
|
||||
};
|
||||
for (var i in required) {
|
||||
var el = document.getElementById(i);
|
||||
if (!el.value) {
|
||||
alert(required[i]);
|
||||
el.focus();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
var param = {};
|
||||
for (var i in accepted) {
|
||||
var el = document.getElementById(i);
|
||||
param[i] = 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;
|
||||
}
|
||||
select, input, button { font: 11px Tahoma,Verdana,sans-serif; }
|
||||
button { width: 70px; }
|
||||
table .label { text-align: right; width: 12em; }
|
||||
|
||||
.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"><span>Document properties</span></div>
|
||||
|
||||
<table style="width: 100%">
|
||||
<tr>
|
||||
<td class="label"><span>Document title:</span></td>
|
||||
<td><input type="text" id="f_title" style="width: 100%" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="label"><span>DOCTYPE:</span></td>
|
||||
<td><input type="text" id="f_doctype" style="width: 100%" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="label"><span>Primary style-sheet:</span></td>
|
||||
<td><input type="text" id="f_base_style" style="width: 100%" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="label"><span>Alternate style-sheet:</span></td>
|
||||
<td><input type="text" id="f_alt_style" style="width: 100%" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="label"><span>Background color:</span></td>
|
||||
<td><input type="text" id="f_body_bgcolor" size="7" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="label"><span>Text color:</span></td>
|
||||
<td><input type="text" id="f_body_fgcolor" size="7" /></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<div id="buttons">
|
||||
<button type="button" name="ok" onclick="return onOK();"><span>OK</span></button>
|
||||
<button type="button" name="cancel" onclick="return onCancel();"><span>Cancel</span></button>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
89
www/extras/htmlArea3/plugins/FullPage/test.html
Normal file
|
|
@ -0,0 +1,89 @@
|
|||
<html>
|
||||
<head>
|
||||
<title>Test of FullPage plugin</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<script type="text/javascript">
|
||||
_editor_url = "../../";
|
||||
</script>
|
||||
|
||||
<!-- load the main HTMLArea files -->
|
||||
<script type="text/javascript" src="../../htmlarea.js"></script>
|
||||
<script type="text/javascript" src="../../lang/en.js"></script>
|
||||
<script type="text/javascript" src="../../dialog.js"></script>
|
||||
|
||||
<!-- <script type="text/javascript" src="popupdiv.js"></script> -->
|
||||
<script type="text/javascript" src="../../popupwin.js"></script>
|
||||
|
||||
<script type="text/javascript">
|
||||
HTMLArea.loadPlugin("TableOperations");
|
||||
HTMLArea.loadPlugin("SpellChecker");
|
||||
HTMLArea.loadPlugin("FullPage");
|
||||
|
||||
function initDocument() {
|
||||
var editor = new HTMLArea("editor");
|
||||
editor.registerPlugin(TableOperations);
|
||||
editor.registerPlugin(SpellChecker);
|
||||
editor.registerPlugin(FullPage);
|
||||
editor.generate();
|
||||
}
|
||||
</script>
|
||||
|
||||
<style type="text/css">
|
||||
@import url(../../htmlarea.css);
|
||||
</style>
|
||||
|
||||
</head>
|
||||
|
||||
<body onload="initDocument()">
|
||||
<h1>Test of FullPage plugin</h1>
|
||||
|
||||
<textarea id="editor" style="height: 30em; width: 100%;">
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>FullPage plugin for HTMLArea</title>
|
||||
<link rel="alternate stylesheet" href="http://dynarch.com/mishoo/css/dark.css" />
|
||||
<link rel="stylesheet" href="http://dynarch.com/mishoo/css/cool-light.css" />
|
||||
</head>
|
||||
<body style="background-color: #ddddee; color: #000077;">
|
||||
<table style="width:60%; height: 90%; margin: 2% auto 1% auto;" align="center" border="0" cellpadding="0" cellspacing="0">
|
||||
<tr>
|
||||
<td style="background-color: #ddeedd; border: 2px solid #002; height: 1.5em; padding: 2px; font: bold 24px Verdana;">
|
||||
FullPage plugin
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="background-color: #fff; border: 1px solid #aab; padding: 1em 3em; font: 12px Verdana;">
|
||||
<p>
|
||||
This plugin enables one to edit a full HTML file in <a
|
||||
href="http://dynarch.com/htmlarea/">HTMLArea</a>. This is not
|
||||
normally possible with just the core editor since it only
|
||||
retrieves the HTML inside the <code>body</code> tag.
|
||||
</p>
|
||||
<p>
|
||||
It provides the ability to change the <code>DOCTYPE</code> of
|
||||
the document, <code>body</code> <code>bgcolor</code> and
|
||||
<code>fgcolor</code> attributes as well as to add additional
|
||||
<code>link</code>-ed stylesheets. Cool, eh?
|
||||
</p>
|
||||
<p>
|
||||
The development of this plugin was initiated and sponsored by
|
||||
<a href="http://thycotic.com">Thycotic Software Ltd.</a>.
|
||||
That's also cool, isn't it? ;-)
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
</textarea>
|
||||
|
||||
<hr />
|
||||
<address><a href="http://dynarch.com/mishoo/">Mihai Bazon</a></address>
|
||||
<!-- Created: Wed Oct 1 19:55:37 EEST 2003 -->
|
||||
<!-- hhmts start -->
|
||||
Last modified on Sat Oct 25 01:06:59 2003
|
||||
<!-- hhmts end -->
|
||||
<!-- doc-lang: English -->
|
||||
</body>
|
||||
</html>
|
||||
BIN
www/extras/htmlArea3/plugins/SpellChecker/img/spell-check.gif
Normal file
|
After Width: | Height: | Size: 107 B |
37
www/extras/htmlArea3/plugins/SpellChecker/lang/cz.js
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
// 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.)
|
||||
|
||||
SpellChecker.I18N = {
|
||||
"CONFIRM_LINK_CLICK" : "Prosím potvrďte otevření tohoto odkazu",
|
||||
"Cancel" : "Zrušit",
|
||||
"Dictionary" : "Slovník",
|
||||
"Finished list of mispelled words" : "Dokončen seznam chybných slov",
|
||||
"I will open it in a new page." : "Bude otevřen jej v nové stránce.",
|
||||
"Ignore all" : "Ignorovat vše",
|
||||
"Ignore" : "Ignorovat",
|
||||
"NO_ERRORS" : "Podle zvoleného slovníku nebyla nalezena žádná chybná slova.",
|
||||
"NO_ERRORS_CLOSING" : "Kontrola správnosti slov dokončena, nebyla nalezena žádná chybná slova. Ukončování ...",
|
||||
"OK" : "OK",
|
||||
"Original word" : "Původní slovo",
|
||||
"Please wait. Calling spell checker." : "Prosím čekejte. Komunikuace s kontrolou správnosti slov.",
|
||||
"Please wait: changing dictionary to" : "Prosím čekejte: změna adresáře na",
|
||||
"QUIT_CONFIRMATION" : "Změny budou zrušeny a kontrola správnosti slov ukončena. Prosím potvrďte.",
|
||||
"Re-check" : "Překontrolovat",
|
||||
"Replace all" : "Zaměnit všechno",
|
||||
"Replace with" : "Zaměnit za",
|
||||
"Replace" : "Zaměnit",
|
||||
"SC-spell-check" : "Kontrola správnosti slov",
|
||||
"Suggestions" : "Doporučení",
|
||||
"pliz weit ;-)" : "strpení prosím ;-)"
|
||||
};
|
||||
37
www/extras/htmlArea3/plugins/SpellChecker/lang/da.js
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
// I18N constants
|
||||
|
||||
// LANG: "en", ENCODING: UTF-8 | ISO-8859-1
|
||||
// Author: Steen Sønderup, <steen@soenderup.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.)
|
||||
|
||||
SpellChecker.I18N = {
|
||||
"CONFIRM_LINK_CLICK" : "Vil du følge dette link?",
|
||||
"Cancel" : "Anuler",
|
||||
"Dictionary" : "Ordbog",
|
||||
"Finished list of mispelled words" : "Listen med stavefejl er gennemgået",
|
||||
"I will open it in a new page." : "Jeg vil åbne det i en ny side.",
|
||||
"Ignore all" : "Ignorer alle",
|
||||
"Ignore" : "Ignorer",
|
||||
"NO_ERRORS" : "Der blev ikke fundet nogle stavefejl med den valgte ordbog.",
|
||||
"NO_ERRORS_CLOSING" : "Stavekontrollen er gennemført, der blev ikke fundet nogle stavefejl. Lukker...",
|
||||
"OK" : "OK",
|
||||
"Original word" : "Oprindeligt ord",
|
||||
"Please wait. Calling spell checker." : "Vent venligst. Henter stavekontrol.",
|
||||
"Please wait: changing dictionary to" : "Vent venligst: skifter ordbog til",
|
||||
"QUIT_CONFIRMATION" : "Alle dine ændringer vil gå tabt, vil du fortsætte?",
|
||||
"Re-check" : "Tjek igen",
|
||||
"Replace all" : "Erstat alle",
|
||||
"Replace with" : "Erstat med",
|
||||
"Replace" : "Erstat",
|
||||
"SC-spell-check" : "Stavekontrol",
|
||||
"Suggestions" : "Forslag",
|
||||
"pliz weit ;-)" : "Vent venligst"
|
||||
};
|
||||
28
www/extras/htmlArea3/plugins/SpellChecker/lang/de.js
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
// I18N constants
|
||||
|
||||
// LANG: "en", ENCODING: UTF-8 | ISO-8859-1
|
||||
// Author: Broxx, <broxx@broxx.com>
|
||||
|
||||
SpellChecker.I18N = {
|
||||
"CONFIRM_LINK_CLICK" : "Wollen Sie diesen Link oeffnen",
|
||||
"Cancel" : "Abbrechen",
|
||||
"Dictionary" : "Woerterbuch",
|
||||
"Finished list of mispelled words" : "Liste der nicht bekannten Woerter",
|
||||
"I will open it in a new page." : "Wird auf neuer Seite geoeffnet",
|
||||
"Ignore all" : "Alle ignorieren",
|
||||
"Ignore" : "Ignorieren",
|
||||
"NO_ERRORS" : "Keine falschen Woerter mit gewaehlten Woerterbuch gefunden",
|
||||
"NO_ERRORS_CLOSING" : "Rechtsschreibpruefung wurde ohne Fehler fertiggestellt. Wird nun geschlossen...",
|
||||
"OK" : "OK",
|
||||
"Original word" : "Original Wort",
|
||||
"Please wait. Calling spell checker." : "Bitte warten. Woerterbuch wird durchsucht.",
|
||||
"Please wait: changing dictionary to" : "Bitte warten: Woerterbuch wechseln zu",
|
||||
"QUIT_CONFIRMATION" : "Aenderungen werden nicht uebernommen. Bitte bestaettigen.",
|
||||
"Re-check" : "Neuueberpruefung",
|
||||
"Replace all" : "Alle ersetzen",
|
||||
"Replace with" : "Ersetzen mit",
|
||||
"Replace" : "Ersetzen",
|
||||
"SC-spell-check" : "Ueberpruefung",
|
||||
"Suggestions" : "Vorschlag",
|
||||
"pliz weit ;-)" : "bittsche wartn ;-)"
|
||||
};
|
||||
38
www/extras/htmlArea3/plugins/SpellChecker/lang/en.js
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
// 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.)
|
||||
|
||||
SpellChecker.I18N = {
|
||||
"CONFIRM_LINK_CLICK" : "Please confirm that you want to open this link",
|
||||
"Cancel" : "Cancel",
|
||||
"Dictionary" : "Dictionary",
|
||||
"Finished list of mispelled words" : "Finished list of mispelled words",
|
||||
"I will open it in a new page." : "I will open it in a new page.",
|
||||
"Ignore all" : "Ignore all",
|
||||
"Ignore" : "Ignore",
|
||||
"NO_ERRORS" : "No mispelled words found with the selected dictionary.",
|
||||
"NO_ERRORS_CLOSING" : "Spell check complete, didn't find any mispelled words. Closing now...",
|
||||
"OK" : "OK",
|
||||
"Original word" : "Original word",
|
||||
"Please wait. Calling spell checker." : "Please wait. Calling spell checker.",
|
||||
"Please wait: changing dictionary to" : "Please wait: changing dictionary to",
|
||||
"QUIT_CONFIRMATION" : "This will drop changes and quit spell checker. Please confirm.",
|
||||
"Re-check" : "Re-check",
|
||||
"Replace all" : "Replace all",
|
||||
"Replace with" : "Replace with",
|
||||
"Replace" : "Replace",
|
||||
"Revert" : "Revert",
|
||||
"SC-spell-check" : "Spell-check",
|
||||
"Suggestions" : "Suggestions",
|
||||
"pliz weit ;-)" : "pliz weit ;-)"
|
||||
};
|
||||
37
www/extras/htmlArea3/plugins/SpellChecker/lang/hu.js
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
// 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.)
|
||||
|
||||
SpellChecker.I18N = {
|
||||
"CONFIRM_LINK_CLICK" : "Megerősítés",
|
||||
"Cancel" : "Mégsem",
|
||||
"Dictionary" : "Szótár",
|
||||
"Finished list of mispelled words" : "A tévesztett szavak listájának vége",
|
||||
"I will open it in a new page." : "Megnyitás új lapon",
|
||||
"Ignore all" : "Minden elvetése",
|
||||
"Ignore" : "Elvetés",
|
||||
"NO_ERRORS" : "A választott szótár szerint nincs tévesztett szó.",
|
||||
"NO_ERRORS_CLOSING" : "A helyesírásellenőrzés kész, tévesztett szó nem fordult elő. Bezárás...",
|
||||
"OK" : "Rendben",
|
||||
"Original word" : "Eredeti szó",
|
||||
"Please wait. Calling spell checker." : "Kis türelmet, a helyesírásellenőrző hívása folyamatban.",
|
||||
"Please wait: changing dictionary to" : "Kis türelmet, szótár cseréje",
|
||||
"QUIT_CONFIRMATION" : "Kilépés a változások eldobásával. Jóváhagyja?",
|
||||
"Re-check" : "Újraellenőrzés",
|
||||
"Replace all" : "Mind cseréje",
|
||||
"Replace with" : "Csere a következőre:",
|
||||
"Replace" : "Csere",
|
||||
"SC-spell-check" : "Helyesírásellenőrzés",
|
||||
"Suggestions" : "Tippek",
|
||||
"pliz weit ;-)" : "Kis türelmet ;-)"
|
||||
};
|
||||
28
www/extras/htmlArea3/plugins/SpellChecker/lang/it.js
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
// I18N constants
|
||||
|
||||
// LANG: "it", ENCODING: UTF-8 | ISO-8859-1
|
||||
// Author: Fabio Rotondo, <fabio@rotondo.it>
|
||||
|
||||
SpellChecker.I18N = {
|
||||
"CONFIRM_LINK_CLICK" : "Devi confermare l'apertura di questo link",
|
||||
"Cancel" : "Annulla",
|
||||
"Dictionary" : "Dizionario",
|
||||
"Finished list of mispelled words" : "La lista delle parole scritte male è terminata",
|
||||
"I will open it in a new page." : "Lo aprirò in una nuova pagina.",
|
||||
"Ignore all" : "Ignora sempre",
|
||||
"Ignore" : "Ignora",
|
||||
"NO_ERRORS" : "Non sono state trovate parole scritte male con il dizionario selezionato.",
|
||||
"NO_ERRORS_CLOSING" : "Controllo completato, non sono state trovate parole scritte male. Sto chiudendo...",
|
||||
"OK" : "OK",
|
||||
"Original word" : "Parola originale",
|
||||
"Please wait. Calling spell checker." : "Attendere. Sto invocando lo Spell Checker.",
|
||||
"Please wait: changing dictionary to" : "Attendere. Cambio il dizionario in",
|
||||
"QUIT_CONFIRMATION" : "Questo annullerà le modifiche e chiuderà lo Spell Checker. Conferma.",
|
||||
"Re-check" : "Ricontrolla",
|
||||
"Replace all" : "Sostituisci sempre",
|
||||
"Replace with" : "Stostituisci con",
|
||||
"Replace" : "Sostituisci",
|
||||
"SC-spell-check" : "Spell-check",
|
||||
"Suggestions" : "Suggerimenti",
|
||||
"pliz weit ;-)" : "Attendere Prego ;-)"
|
||||
};
|
||||
37
www/extras/htmlArea3/plugins/SpellChecker/lang/ro.js
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
// 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.)
|
||||
|
||||
SpellChecker.I18N = {
|
||||
"CONFIRM_LINK_CLICK" : "Vă rog confirmaţi că vreţi să deschideţi acest link",
|
||||
"Cancel" : "Anulează",
|
||||
"Dictionary" : "Dicţionar",
|
||||
"Finished list of mispelled words" : "Am terminat lista de cuvinte greşite",
|
||||
"I will open it in a new page." : "O voi deschide într-o altă fereastră.",
|
||||
"Ignore all" : "Ignoră toate",
|
||||
"Ignore" : "Ignoră",
|
||||
"NO_ERRORS" : "Nu am găsit nici un cuvânt greşit cu acest dicţionar.",
|
||||
"NO_ERRORS_CLOSING" : "Am terminat, nu am detectat nici o greşeală. Acum închid fereastra...",
|
||||
"OK" : "OK",
|
||||
"Original word" : "Cuvântul original",
|
||||
"Please wait. Calling spell checker." : "Vă rog aşteptaţi. Apelez spell-checker-ul.",
|
||||
"Please wait: changing dictionary to" : "Vă rog aşteptaţi. Schimb dicţionarul cu",
|
||||
"QUIT_CONFIRMATION" : "Doriţi să renunţaţi la modificări şi să închid spell-checker-ul?",
|
||||
"Re-check" : "Scanează",
|
||||
"Replace all" : "Înlocuieşte toate",
|
||||
"Replace with" : "Înlocuieşte cu",
|
||||
"Replace" : "Înlocuieşte",
|
||||
"SC-spell-check" : "Detectează greşeli",
|
||||
"Suggestions" : "Sugestii",
|
||||
"pliz weit ;-)" : "va rog ashteptatzi ;-)"
|
||||
};
|
||||
114
www/extras/htmlArea3/plugins/SpellChecker/readme-tech.html
Normal file
|
|
@ -0,0 +1,114 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.2//EN">
|
||||
<html>
|
||||
<head>
|
||||
<title>HTMLArea Spell Checker</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h1>HTMLArea Spell Checker</h1>
|
||||
|
||||
<p>The HTMLArea Spell Checker subsystem consists of the following
|
||||
files:</p>
|
||||
|
||||
<ul>
|
||||
|
||||
<li>spell-checker.js — the spell checker plugin interface for
|
||||
HTMLArea</li>
|
||||
|
||||
<li>spell-checker-ui.html — the HTML code for the user
|
||||
interface</li>
|
||||
|
||||
<li>spell-checker-ui.js — functionality of the user
|
||||
interface</li>
|
||||
|
||||
<li>spell-checker-logic.cgi — Perl CGI script that checks a text
|
||||
given through POST for spelling errors</li>
|
||||
|
||||
<li>spell-checker-style.css — style for mispelled words</li>
|
||||
|
||||
<li>lang/en.js — main language file (English).</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<h2>Process overview</h2>
|
||||
|
||||
<p>
|
||||
When an end-user clicks the "spell-check" button in the HTMLArea
|
||||
editor, a new window is opened with the URL of "spell-check-ui.html".
|
||||
This window initializes itself with the text found in the editor (uses
|
||||
<tt>window.opener.SpellChecker.editor</tt> global variable) and it
|
||||
submits the text to the server-side script "spell-check-logic.cgi".
|
||||
The target of the FORM is an inline frame which is used both to
|
||||
display the text and correcting.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Further, spell-check-logic.cgi calls Aspell for each portion of plain
|
||||
text found in the given HTML. It rebuilds an HTML file that contains
|
||||
clear marks of which words are incorrect, along with suggestions for
|
||||
each of them. This file is then loaded in the inline frame. Upon
|
||||
loading, a JavaScript function from "spell-check-ui.js" is called.
|
||||
This function will retrieve all mispelled words from the HTML of the
|
||||
iframe and will setup the user interface so that it allows correction.
|
||||
</p>
|
||||
|
||||
<h2>The server-side script (spell-check-logic.cgi)</h2>
|
||||
|
||||
<p>
|
||||
<strong>Unicode safety</strong> — the program <em>is</em>
|
||||
Unicode safe. HTML entities are expanded into their corresponding
|
||||
Unicode characters. These characters will be matched as part of the
|
||||
word passed to Aspell. All texts passed to Aspell are in Unicode
|
||||
(when appropriate). <strike>However, Aspell seems to not support Unicode
|
||||
yet (<a
|
||||
href="http://mail.gnu.org/archive/html/aspell-user/2000-11/msg00007.html">thread concerning Aspell and Unicode</a>).
|
||||
This mean that words containing Unicode
|
||||
characters that are not in 0..255 are likely to be reported as "mispelled" by Aspell.</strike>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<strong style="font-variant: small-caps; color:
|
||||
red;">Update:</strong> though I've never seen it mentioned
|
||||
anywhere, it looks that Aspell <em>does</em>, in fact, speak
|
||||
Unicode. Or else, maybe <code>Text::Aspell</code> does
|
||||
transparent conversion; anyway, this new version of our
|
||||
SpellChecker plugin is, as tests show so far, fully
|
||||
Unicode-safe... well, probably the <em>only</em> freeware
|
||||
Web-based spell-checker which happens to have Unicode support.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The Perl Unicode manual (man perluniintro) states:
|
||||
</p>
|
||||
|
||||
<blockquote>
|
||||
<em>
|
||||
Starting from Perl 5.6.0, Perl has had the capacity to handle Unicode
|
||||
natively. Perl 5.8.0, however, is the first recommended release for
|
||||
serious Unicode work. The maintenance release 5.6.1 fixed many of the
|
||||
problems of the initial Unicode implementation, but for example regular
|
||||
expressions still do not work with Unicode in 5.6.1.
|
||||
</em>
|
||||
</blockquote>
|
||||
|
||||
<p>In other words, do <em>not</em> assume that this script is
|
||||
Unicode-safe on Perl interpreters older than 5.8.0.</p>
|
||||
|
||||
<p>The following Perl modules are required:</p>
|
||||
|
||||
<ul>
|
||||
<li><a href="http://search.cpan.org/search?query=Text%3A%3AAspell&mode=all" target="_blank">Text::Aspell</a></li>
|
||||
<li><a href="http://search.cpan.org/search?query=XML%3A%3ADOM&mode=all" target="_blank">XML::DOM</a></li>
|
||||
<li><a href="http://search.cpan.org/search?query=CGI&mode=all" target="_blank">CGI</a></li>
|
||||
</ul>
|
||||
|
||||
<p>Of these, only Text::Aspell might need to be installed manually. The
|
||||
others are likely to be available by default in most Perl distributions.</p>
|
||||
|
||||
<hr />
|
||||
<address><a href="http://dynarch.com/mishoo/">Mihai Bazon</a></address>
|
||||
<!-- Created: Thu Jul 17 13:22:27 EEST 2003 -->
|
||||
<!-- hhmts start --> Last modified: Fri Jan 30 19:14:11 EET 2004 <!-- hhmts end -->
|
||||
<!-- doc-lang: English -->
|
||||
</body>
|
||||
</html>
|
||||
210
www/extras/htmlArea3/plugins/SpellChecker/spell-check-logic.cgi
Executable file
|
|
@ -0,0 +1,210 @@
|
|||
#! /usr/bin/perl -w
|
||||
|
||||
# Spell Checker Plugin for HTMLArea-3.0
|
||||
# Sponsored by www.americanbible.org
|
||||
# Implementation by Mihai Bazon, http://dynarch.com/mishoo/
|
||||
#
|
||||
# (c) dynarch.com 2003.
|
||||
# Distributed under the same terms as HTMLArea itself.
|
||||
# This notice MUST stay intact for use (see license.txt).
|
||||
#
|
||||
# $Id$
|
||||
|
||||
use strict;
|
||||
use utf8;
|
||||
use Encode;
|
||||
use Text::Aspell;
|
||||
use XML::DOM;
|
||||
use CGI;
|
||||
|
||||
my $TIMER_start = undef;
|
||||
eval {
|
||||
use Time::HiRes qw( gettimeofday tv_interval );
|
||||
$TIMER_start = [gettimeofday()];
|
||||
};
|
||||
# use POSIX qw( locale_h );
|
||||
|
||||
binmode STDIN, ':utf8';
|
||||
binmode STDOUT, ':utf8';
|
||||
|
||||
my $debug = 0;
|
||||
|
||||
my $speller = new Text::Aspell;
|
||||
my $cgi = new CGI;
|
||||
|
||||
my $total_words = 0;
|
||||
my $total_mispelled = 0;
|
||||
my $total_suggestions = 0;
|
||||
my $total_words_suggested = 0;
|
||||
|
||||
# FIXME: report a nice error...
|
||||
die "Can't create speller!" unless $speller;
|
||||
|
||||
my $dict = $cgi->param('dictionary') || $cgi->cookie('dictionary') || 'en';
|
||||
|
||||
# add configurable option for this
|
||||
$speller->set_option('lang', $dict);
|
||||
$speller->set_option('encoding', 'UTF-8');
|
||||
#setlocale(LC_CTYPE, $dict);
|
||||
|
||||
# ultra, fast, normal, bad-spellers
|
||||
# bad-spellers seems to cause segmentation fault
|
||||
$speller->set_option('sug-mode', 'normal');
|
||||
|
||||
my %suggested_words = ();
|
||||
keys %suggested_words = 128;
|
||||
|
||||
my $file_content = decode('UTF-8', $cgi->param('content'));
|
||||
$file_content = parse_with_dom($file_content);
|
||||
|
||||
my $ck_dictionary = $cgi->cookie(-name => 'dictionary',
|
||||
-value => $dict,
|
||||
-expires => '+30d');
|
||||
|
||||
print $cgi->header(-type => 'text/html; charset: utf-8',
|
||||
-cookie => $ck_dictionary);
|
||||
|
||||
my $js_suggested_words = make_js_hash(\%suggested_words);
|
||||
my $js_spellcheck_info = make_js_hash_from_array
|
||||
([
|
||||
[ 'Total words' , $total_words ],
|
||||
[ 'Mispelled words' , $total_mispelled . ' in dictionary \"'.$dict.'\"' ],
|
||||
[ 'Total suggestions' , $total_suggestions ],
|
||||
[ 'Total words suggested' , $total_words_suggested ],
|
||||
[ 'Spell-checked in' , defined $TIMER_start ? (tv_interval($TIMER_start) . ' seconds') : 'n/a' ]
|
||||
]);
|
||||
|
||||
print qq^<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<link rel="stylesheet" type="text/css" media="all" href="spell-check-style.css" />
|
||||
<script type="text/javascript">
|
||||
var suggested_words = { $js_suggested_words };
|
||||
var spellcheck_info = { $js_spellcheck_info }; </script>
|
||||
</head>
|
||||
<body onload="window.parent.finishedSpellChecking();">^;
|
||||
|
||||
print $file_content;
|
||||
if ($cgi->param('init') eq '1') {
|
||||
my @dicts = $speller->dictionary_info();
|
||||
my $dictionaries = '';
|
||||
foreach my $i (@dicts) {
|
||||
next if $i->{jargon};
|
||||
my $name = $i->{name};
|
||||
if ($name eq $dict) {
|
||||
$name = '@'.$name;
|
||||
}
|
||||
$dictionaries .= ',' . $name;
|
||||
}
|
||||
$dictionaries =~ s/^,//;
|
||||
print qq^<div id="HA-spellcheck-dictionaries">$dictionaries</div>^;
|
||||
}
|
||||
|
||||
print '</body></html>';
|
||||
|
||||
# Perl is beautiful.
|
||||
sub spellcheck {
|
||||
my $node = shift;
|
||||
my $doc = $node->getOwnerDocument;
|
||||
my $check = sub { # called for each word in the text
|
||||
# input is in UTF-8
|
||||
my $word = shift;
|
||||
my $already_suggested = defined $suggested_words{$word};
|
||||
++$total_words;
|
||||
if (!$already_suggested && $speller->check($word)) {
|
||||
return undef;
|
||||
} else {
|
||||
# we should have suggestions; give them back to browser in UTF-8
|
||||
++$total_mispelled;
|
||||
if (!$already_suggested) {
|
||||
# compute suggestions for this word
|
||||
my @suggestions = $speller->suggest($word);
|
||||
my $suggestions = decode($speller->get_option('encoding'), join(',', @suggestions));
|
||||
$suggested_words{$word} = $suggestions;
|
||||
++$total_suggestions;
|
||||
$total_words_suggested += scalar @suggestions;
|
||||
}
|
||||
# HA-spellcheck-error
|
||||
my $err = $doc->createElement('span');
|
||||
$err->setAttribute('class', 'HA-spellcheck-error');
|
||||
my $tmp = $doc->createTextNode;
|
||||
$tmp->setNodeValue($word);
|
||||
$err->appendChild($tmp);
|
||||
return $err;
|
||||
}
|
||||
};
|
||||
while ($node->getNodeValue =~ /([\p{IsWord}']+)/) {
|
||||
my $word = $1;
|
||||
my $before = $`;
|
||||
my $after = $';
|
||||
my $df = &$check($word);
|
||||
if (!$df) {
|
||||
$before .= $word;
|
||||
}
|
||||
{
|
||||
my $parent = $node->getParentNode;
|
||||
my $n1 = $doc->createTextNode;
|
||||
$n1->setNodeValue($before);
|
||||
$parent->insertBefore($n1, $node);
|
||||
$parent->insertBefore($df, $node) if $df;
|
||||
$node->setNodeValue($after);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
sub check_inner_text {
|
||||
my $node = shift;
|
||||
my $text = '';
|
||||
for (my $i = $node->getFirstChild; defined $i; $i = $i->getNextSibling) {
|
||||
if ($i->getNodeType == TEXT_NODE) {
|
||||
spellcheck($i);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
sub parse_with_dom {
|
||||
my ($text) = @_;
|
||||
$text = '<spellchecker>'.$text.'</spellchecker>';
|
||||
|
||||
my $parser = new XML::DOM::Parser;
|
||||
if ($debug) {
|
||||
open(FOO, '>:utf8', '/tmp/foo');
|
||||
print FOO $text;
|
||||
close FOO;
|
||||
}
|
||||
my $doc = $parser->parse($text);
|
||||
my $nodes = $doc->getElementsByTagName('*');
|
||||
my $n = $nodes->getLength;
|
||||
|
||||
for (my $i = 0; $i < $n; ++$i) {
|
||||
my $node = $nodes->item($i);
|
||||
if ($node->getNodeType == ELEMENT_NODE) {
|
||||
check_inner_text($node);
|
||||
}
|
||||
}
|
||||
|
||||
my $ret = $doc->toString;
|
||||
$ret =~ s{<spellchecker>(.*)</spellchecker>}{$1}sg;
|
||||
return $ret;
|
||||
};
|
||||
|
||||
sub make_js_hash {
|
||||
my ($hash) = @_;
|
||||
my $js_hash = '';
|
||||
while (my ($key, $val) = each %$hash) {
|
||||
$js_hash .= ',' if $js_hash;
|
||||
$js_hash .= '"'.$key.'":"'.$val.'"';
|
||||
}
|
||||
return $js_hash;
|
||||
};
|
||||
|
||||
sub make_js_hash_from_array {
|
||||
my ($array) = @_;
|
||||
my $js_hash = '';
|
||||
foreach my $i (@$array) {
|
||||
$js_hash .= ',' if $js_hash;
|
||||
$js_hash .= '"'.$i->[0].'":"'.$i->[1].'"';
|
||||
}
|
||||
return $js_hash;
|
||||
};
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
.HA-spellcheck-error { border-bottom: 1px dashed #f00; cursor: default; }
|
||||
.HA-spellcheck-same { background-color: #cef; color: #000; }
|
||||
.HA-spellcheck-hover { background-color: #433; color: white; }
|
||||
.HA-spellcheck-fixed { border-bottom: 1px dashed #0b8; }
|
||||
.HA-spellcheck-current { background-color: #9be; color: #000; }
|
||||
.HA-spellcheck-suggestions { display: none; }
|
||||
|
||||
#HA-spellcheck-dictionaries { display: none; }
|
||||
|
||||
a:link, a:visited { color: #55e; }
|
||||
122
www/extras/htmlArea3/plugins/SpellChecker/spell-check-ui.html
Normal file
|
|
@ -0,0 +1,122 @@
|
|||
<!--
|
||||
|
||||
Strangely, IE sucks with or without the DOCTYPE switch.
|
||||
I thought it would only suck without it.
|
||||
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
|
||||
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
|
||||
|
||||
Spell Checker Plugin for HTMLArea-3.0
|
||||
Sponsored by www.americanbible.org
|
||||
Implementation by Mihai Bazon, http://dynarch.com/mishoo/
|
||||
|
||||
(c) dynarch.com 2003.
|
||||
Distributed under the same terms as HTMLArea itself.
|
||||
This notice MUST stay intact for use (see license.txt).
|
||||
|
||||
$Id$
|
||||
|
||||
-->
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
|
||||
<head>
|
||||
<title>Spell Checker</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<script type="text/javascript" src="spell-check-ui.js"></script>
|
||||
|
||||
<style type="text/css">
|
||||
html, body { height: 100%; margin: 0px; padding: 0px; background-color: #fff;
|
||||
color: #000; }
|
||||
a:link, a:visited { color: #00f; text-decoration: none; }
|
||||
a:hover { color: #f00; text-decoration: underline; }
|
||||
|
||||
table { background-color: ButtonFace; color: ButtonText;
|
||||
font-family: tahoma,verdana,sans-serif; font-size: 11px; }
|
||||
|
||||
iframe { background-color: #fff; color: #000; height: 100%; width: 100%; }
|
||||
|
||||
.controls { width: 13em; }
|
||||
.controls .sectitle { /* background-color: #736c6c; color: #fff;
|
||||
border-top: 1px solid #000; border-bottom: 1px solid #fff; */
|
||||
text-align: center;
|
||||
font-weight: bold; padding: 2px 4px; }
|
||||
.controls .secbody { margin-bottom: 10px; }
|
||||
|
||||
button, select { font-family: tahoma,verdana,sans-serif; font-size: 11px; }
|
||||
button { width: 6em; padding: 0px; }
|
||||
|
||||
input, select { font-family: fixed,"andale mono",monospace; }
|
||||
|
||||
#v_currentWord { color: #f00; font-weight: bold; }
|
||||
#statusbar { padding: 7px 0px 0px 5px; }
|
||||
#status { font-weight: bold; }
|
||||
</style>
|
||||
|
||||
</head>
|
||||
|
||||
<body onload="initDocument()">
|
||||
|
||||
<form style="display: none;" action="spell-check-logic.cgi"
|
||||
method="post" target="framecontent"
|
||||
accept-charset="UTF-8"
|
||||
><input type="hidden" name="content" id="f_content"
|
||||
/><input type="hidden" name="dictionary" id="f_dictionary"
|
||||
/><input type="hidden" name="init" id="f_init" value="1"
|
||||
/></form>
|
||||
|
||||
<table style="height: 100%; width: 100%; border-collapse: collapse;" cellspacing="0" cellpadding="0">
|
||||
<tr>
|
||||
<td colspan="2" style="height: 1em; padding: 2px;">
|
||||
<div style="float: right; padding: 2px;"><span>Dictionary</span>
|
||||
<select id="v_dictionaries" style="width: 10em"></select>
|
||||
<button id="b_recheck">Re-check</button>
|
||||
</div>
|
||||
<span id="status">Please wait. Calling spell checker.</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top" class="controls">
|
||||
<div class="secbody" style="text-align: center">
|
||||
<button id="b_info">Info</button>
|
||||
</div>
|
||||
<div class="sectitle">Original word</div>
|
||||
<div class="secbody" id="v_currentWord" style="text-align:
|
||||
center; margin-bottom: 0px;">pliz weit ;-)</div>
|
||||
<div class="secbody" style="text-align: center">
|
||||
<button id="b_revert">Revert</button>
|
||||
</div>
|
||||
<div class="sectitle">Replace with</div>
|
||||
<div class="secbody">
|
||||
<input type="text" id="v_replacement" style="width: 94%; margin-left: 3%;" /><br />
|
||||
<div style="text-align: center; margin-top: 2px;">
|
||||
<button id="b_replace">Replace</button><button
|
||||
id="b_replall">Replace all</button><br /><button
|
||||
id="b_ignore">Ignore</button><button
|
||||
id="b_ignall">Ignore all</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sectitle">Suggestions</div>
|
||||
<div class="secbody">
|
||||
<select size="11" style="width: 94%; margin-left: 3%;" id="v_suggestions"></select>
|
||||
</div>
|
||||
</td>
|
||||
|
||||
<td>
|
||||
<iframe src="about:blank" width="100%" height="100%"
|
||||
id="i_framecontent" name="framecontent"></iframe>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="height: 1em;" colspan="2">
|
||||
<div style="padding: 4px 2px 2px 2px; float: right;">
|
||||
<button id="b_ok">OK</button>
|
||||
<button id="b_cancel">Cancel</button>
|
||||
</div>
|
||||
<div id="statusbar"></div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
397
www/extras/htmlArea3/plugins/SpellChecker/spell-check-ui.js
Normal file
|
|
@ -0,0 +1,397 @@
|
|||
// Spell Checker Plugin for HTMLArea-3.0
|
||||
// Sponsored by www.americanbible.org
|
||||
// Implementation by Mihai Bazon, http://dynarch.com/mishoo/
|
||||
//
|
||||
// (c) dynarch.com 2003.
|
||||
// Distributed under the same terms as HTMLArea itself.
|
||||
// This notice MUST stay intact for use (see license.txt).
|
||||
//
|
||||
// $Id$
|
||||
|
||||
// internationalization file was already loaded in parent ;-)
|
||||
var SpellChecker = window.opener.SpellChecker;
|
||||
var i18n = SpellChecker.I18N;
|
||||
|
||||
var HTMLArea = window.opener.HTMLArea;
|
||||
var is_ie = HTMLArea.is_ie;
|
||||
var editor = SpellChecker.editor;
|
||||
var frame = null;
|
||||
var currentElement = null;
|
||||
var wrongWords = null;
|
||||
var modified = false;
|
||||
var allWords = {};
|
||||
var fixedWords = [];
|
||||
var suggested_words = {};
|
||||
|
||||
function makeCleanDoc(leaveFixed) {
|
||||
// document.getElementById("status").innerHTML = 'Please wait: rendering valid HTML';
|
||||
var words = wrongWords.concat(fixedWords);
|
||||
for (var i = words.length; --i >= 0;) {
|
||||
var el = words[i];
|
||||
if (!(leaveFixed && /HA-spellcheck-fixed/.test(el.className))) {
|
||||
el.parentNode.insertBefore(el.firstChild, el);
|
||||
el.parentNode.removeChild(el);
|
||||
} else
|
||||
el.className = "HA-spellcheck-fixed";
|
||||
}
|
||||
// we should use innerHTML here, but IE6's implementation fucks up the
|
||||
// HTML to such extent that our poor Perl parser doesn't understand it
|
||||
// anymore.
|
||||
return window.opener.HTMLArea.getHTML(frame.contentWindow.document.body, false, editor);
|
||||
};
|
||||
|
||||
function recheckClicked() {
|
||||
document.getElementById("status").innerHTML = i18n["Please wait: changing dictionary to"] + ': "' + document.getElementById("f_dictionary").value + '".';
|
||||
var field = document.getElementById("f_content");
|
||||
field.value = makeCleanDoc(true);
|
||||
field.form.submit();
|
||||
};
|
||||
|
||||
function saveClicked() {
|
||||
if (modified) {
|
||||
editor.setHTML(makeCleanDoc(false));
|
||||
}
|
||||
window.close();
|
||||
return false;
|
||||
};
|
||||
|
||||
function cancelClicked() {
|
||||
var ok = true;
|
||||
if (modified) {
|
||||
ok = confirm(i18n["QUIT_CONFIRMATION"]);
|
||||
}
|
||||
if (ok) {
|
||||
window.close();
|
||||
}
|
||||
return false;
|
||||
};
|
||||
|
||||
function replaceWord(el) {
|
||||
var replacement = document.getElementById("v_replacement").value;
|
||||
var this_word_modified = (el.innerHTML != replacement);
|
||||
if (this_word_modified)
|
||||
modified = true;
|
||||
if (el) {
|
||||
el.className = el.className.replace(/\s*HA-spellcheck-(hover|fixed)\s*/g, " ");
|
||||
}
|
||||
el.className += " HA-spellcheck-fixed";
|
||||
el.__msh_fixed = true;
|
||||
if (!this_word_modified) {
|
||||
return false;
|
||||
}
|
||||
el.innerHTML = replacement;
|
||||
};
|
||||
|
||||
function replaceClicked() {
|
||||
replaceWord(currentElement);
|
||||
var start = currentElement.__msh_id;
|
||||
var index = start;
|
||||
do {
|
||||
++index;
|
||||
if (index == wrongWords.length) {
|
||||
index = 0;
|
||||
}
|
||||
} while ((index != start) && wrongWords[index].__msh_fixed);
|
||||
if (index == start) {
|
||||
index = 0;
|
||||
alert(i18n["Finished list of mispelled words"]);
|
||||
}
|
||||
wrongWords[index].__msh_wordClicked(true);
|
||||
return false;
|
||||
};
|
||||
|
||||
function revertClicked() {
|
||||
document.getElementById("v_replacement").value = currentElement.__msh_origWord;
|
||||
replaceWord(currentElement);
|
||||
currentElement.className = "HA-spellcheck-error HA-spellcheck-current";
|
||||
return false;
|
||||
};
|
||||
|
||||
function replaceAllClicked() {
|
||||
var replacement = document.getElementById("v_replacement").value;
|
||||
var ok = true;
|
||||
var spans = allWords[currentElement.__msh_origWord];
|
||||
if (spans.length == 0) {
|
||||
alert("An impossible condition just happened. Call FBI. ;-)");
|
||||
} else if (spans.length == 1) {
|
||||
replaceClicked();
|
||||
return false;
|
||||
}
|
||||
/*
|
||||
var message = "The word \"" + currentElement.__msh_origWord + "\" occurs " + spans.length + " times.\n";
|
||||
if (replacement == currentElement.__msh_origWord) {
|
||||
ok = confirm(message + "Ignore all occurrences?");
|
||||
} else {
|
||||
ok = confirm(message + "Replace all occurrences with \"" + replacement + "\"?");
|
||||
}
|
||||
*/
|
||||
if (ok) {
|
||||
for (var i in spans) {
|
||||
if (spans[i] != currentElement) {
|
||||
replaceWord(spans[i]);
|
||||
}
|
||||
}
|
||||
// replace current element the last, so that we jump to the next word ;-)
|
||||
replaceClicked();
|
||||
}
|
||||
return false;
|
||||
};
|
||||
|
||||
function ignoreClicked() {
|
||||
document.getElementById("v_replacement").value = currentElement.__msh_origWord;
|
||||
replaceClicked();
|
||||
return false;
|
||||
};
|
||||
|
||||
function ignoreAllClicked() {
|
||||
document.getElementById("v_replacement").value = currentElement.__msh_origWord;
|
||||
replaceAllClicked();
|
||||
return false;
|
||||
};
|
||||
|
||||
function learnClicked() {
|
||||
alert("Not [yet] implemented");
|
||||
return false;
|
||||
};
|
||||
|
||||
function internationalizeWindow() {
|
||||
var types = ["div", "span", "button"];
|
||||
for (var i in types) {
|
||||
var tag = types[i];
|
||||
var els = document.getElementsByTagName(tag);
|
||||
for (var j = els.length; --j >= 0;) {
|
||||
var el = els[j];
|
||||
if (el.childNodes.length == 1 && /\S/.test(el.innerHTML)) {
|
||||
var txt = el.innerHTML;
|
||||
if (typeof i18n[txt] != "undefined") {
|
||||
el.innerHTML = i18n[txt];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
function initDocument() {
|
||||
internationalizeWindow();
|
||||
modified = false;
|
||||
frame = document.getElementById("i_framecontent");
|
||||
var field = document.getElementById("f_content");
|
||||
field.value = HTMLArea.getHTML(editor._doc.body, false, editor);
|
||||
field.form.submit();
|
||||
document.getElementById("f_init").value = "0";
|
||||
|
||||
// assign some global event handlers
|
||||
|
||||
var select = document.getElementById("v_suggestions");
|
||||
select.onchange = function() {
|
||||
document.getElementById("v_replacement").value = this.value;
|
||||
};
|
||||
if (is_ie) {
|
||||
select.attachEvent("ondblclick", replaceClicked);
|
||||
} else {
|
||||
select.addEventListener("dblclick", replaceClicked, true);
|
||||
}
|
||||
|
||||
document.getElementById("b_replace").onclick = replaceClicked;
|
||||
// document.getElementById("b_learn").onclick = learnClicked;
|
||||
document.getElementById("b_replall").onclick = replaceAllClicked;
|
||||
document.getElementById("b_ignore").onclick = ignoreClicked;
|
||||
document.getElementById("b_ignall").onclick = ignoreAllClicked;
|
||||
document.getElementById("b_recheck").onclick = recheckClicked;
|
||||
document.getElementById("b_revert").onclick = revertClicked;
|
||||
document.getElementById("b_info").onclick = displayInfo;
|
||||
|
||||
document.getElementById("b_ok").onclick = saveClicked;
|
||||
document.getElementById("b_cancel").onclick = cancelClicked;
|
||||
|
||||
select = document.getElementById("v_dictionaries");
|
||||
select.onchange = function() {
|
||||
document.getElementById("f_dictionary").value = this.value;
|
||||
};
|
||||
};
|
||||
|
||||
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 wordClicked(scroll) {
|
||||
var self = this;
|
||||
if (scroll) (function() {
|
||||
var pos = getAbsolutePos(self);
|
||||
var ws = { x: frame.offsetWidth - 4,
|
||||
y: frame.offsetHeight - 4 };
|
||||
var wp = { x: frame.contentWindow.document.body.scrollLeft,
|
||||
y: frame.contentWindow.document.body.scrollTop };
|
||||
pos.x -= Math.round(ws.x/2);
|
||||
if (pos.x < 0) pos.x = 0;
|
||||
pos.y -= Math.round(ws.y/2);
|
||||
if (pos.y < 0) pos.y = 0;
|
||||
frame.contentWindow.scrollTo(pos.x, pos.y);
|
||||
})();
|
||||
if (currentElement) {
|
||||
var a = allWords[currentElement.__msh_origWord];
|
||||
currentElement.className = currentElement.className.replace(/\s*HA-spellcheck-current\s*/g, " ");
|
||||
for (var i in a) {
|
||||
var el = a[i];
|
||||
if (el != currentElement) {
|
||||
el.className = el.className.replace(/\s*HA-spellcheck-same\s*/g, " ");
|
||||
}
|
||||
}
|
||||
}
|
||||
currentElement = this;
|
||||
this.className += " HA-spellcheck-current";
|
||||
var a = allWords[currentElement.__msh_origWord];
|
||||
for (var i in a) {
|
||||
var el = a[i];
|
||||
if (el != currentElement) {
|
||||
el.className += " HA-spellcheck-same";
|
||||
}
|
||||
}
|
||||
// document.getElementById("b_replall").disabled = (a.length <= 1);
|
||||
// document.getElementById("b_ignall").disabled = (a.length <= 1);
|
||||
var txt;
|
||||
if (a.length == 1) {
|
||||
txt = "one occurrence";
|
||||
} else if (a.length == 2) {
|
||||
txt = "two occurrences";
|
||||
} else {
|
||||
txt = a.length + " occurrences";
|
||||
}
|
||||
var suggestions = suggested_words[this.__msh_origWord];
|
||||
if (suggestions)
|
||||
suggestions = suggestions.split(/,/);
|
||||
else
|
||||
suggestions = [];
|
||||
var select = document.getElementById("v_suggestions");
|
||||
document.getElementById("statusbar").innerHTML = "Found " + txt +
|
||||
' for word "<b>' + currentElement.__msh_origWord + '</b>"';
|
||||
for (var i = select.length; --i >= 0;) {
|
||||
select.remove(i);
|
||||
}
|
||||
for (var i = 0; i < suggestions.length; ++i) {
|
||||
var txt = suggestions[i];
|
||||
var option = document.createElement("option");
|
||||
option.value = txt;
|
||||
option.appendChild(document.createTextNode(txt));
|
||||
select.appendChild(option);
|
||||
}
|
||||
document.getElementById("v_currentWord").innerHTML = this.__msh_origWord;
|
||||
if (suggestions.length > 0) {
|
||||
select.selectedIndex = 0;
|
||||
select.onchange();
|
||||
} else {
|
||||
document.getElementById("v_replacement").value = this.innerHTML;
|
||||
}
|
||||
select.style.display = "none";
|
||||
select.style.display = "block";
|
||||
return false;
|
||||
};
|
||||
|
||||
function wordMouseOver() {
|
||||
this.className += " HA-spellcheck-hover";
|
||||
};
|
||||
|
||||
function wordMouseOut() {
|
||||
this.className = this.className.replace(/\s*HA-spellcheck-hover\s*/g, " ");
|
||||
};
|
||||
|
||||
function displayInfo() {
|
||||
var info = frame.contentWindow.spellcheck_info;
|
||||
if (!info)
|
||||
alert("No information available");
|
||||
else {
|
||||
var txt = "** Document information **";
|
||||
for (var i in info) {
|
||||
txt += "\n" + i + " : " + info[i];
|
||||
}
|
||||
alert(txt);
|
||||
}
|
||||
return false;
|
||||
};
|
||||
|
||||
function finishedSpellChecking() {
|
||||
// initialization of global variables
|
||||
currentElement = null;
|
||||
wrongWords = null;
|
||||
allWords = {};
|
||||
fixedWords = [];
|
||||
suggested_words = frame.contentWindow.suggested_words;
|
||||
|
||||
document.getElementById("status").innerHTML = "HTMLArea Spell Checker (<a href='readme-tech.html' target='_blank' title='Technical information'>info</a>)";
|
||||
var doc = frame.contentWindow.document;
|
||||
var spans = doc.getElementsByTagName("span");
|
||||
var sps = [];
|
||||
var id = 0;
|
||||
for (var i = 0; i < spans.length; ++i) {
|
||||
var el = spans[i];
|
||||
if (/HA-spellcheck-error/.test(el.className)) {
|
||||
sps.push(el);
|
||||
el.__msh_wordClicked = wordClicked;
|
||||
el.onclick = function(ev) {
|
||||
ev || (ev = window.event);
|
||||
ev && HTMLArea._stopEvent(ev);
|
||||
return this.__msh_wordClicked(false);
|
||||
};
|
||||
el.onmouseover = wordMouseOver;
|
||||
el.onmouseout = wordMouseOut;
|
||||
el.__msh_id = id++;
|
||||
var txt = (el.__msh_origWord = el.firstChild.data);
|
||||
el.__msh_fixed = false;
|
||||
if (typeof allWords[txt] == "undefined") {
|
||||
allWords[txt] = [el];
|
||||
} else {
|
||||
allWords[txt].push(el);
|
||||
}
|
||||
} else if (/HA-spellcheck-fixed/.test(el.className)) {
|
||||
fixedWords.push(el);
|
||||
}
|
||||
}
|
||||
wrongWords = sps;
|
||||
if (sps.length == 0) {
|
||||
if (!modified) {
|
||||
alert(i18n["NO_ERRORS_CLOSING"]);
|
||||
window.close();
|
||||
} else {
|
||||
alert(i18n["NO_ERRORS"]);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
(currentElement = sps[0]).__msh_wordClicked(true);
|
||||
var as = doc.getElementsByTagName("a");
|
||||
for (var i = as.length; --i >= 0;) {
|
||||
var a = as[i];
|
||||
a.onclick = function() {
|
||||
if (confirm(i18n["CONFIRM_LINK_CLICK"] + ":\n" +
|
||||
this.href + "\n" + i18n["I will open it in a new page."])) {
|
||||
window.open(this.href);
|
||||
}
|
||||
return false;
|
||||
};
|
||||
}
|
||||
var dicts = doc.getElementById("HA-spellcheck-dictionaries");
|
||||
if (dicts) {
|
||||
dicts.parentNode.removeChild(dicts);
|
||||
dicts = dicts.innerHTML.split(/,/);
|
||||
var select = document.getElementById("v_dictionaries");
|
||||
for (var i = select.length; --i >= 0;) {
|
||||
select.remove(i);
|
||||
}
|
||||
for (var i = 0; i < dicts.length; ++i) {
|
||||
var txt = dicts[i];
|
||||
var option = document.createElement("option");
|
||||
if (/^@(.*)$/.test(txt)) {
|
||||
txt = RegExp.$1;
|
||||
option.selected = true;
|
||||
}
|
||||
option.value = txt;
|
||||
option.appendChild(document.createTextNode(txt));
|
||||
select.appendChild(option);
|
||||
}
|
||||
}
|
||||
};
|
||||
79
www/extras/htmlArea3/plugins/SpellChecker/spell-checker.js
Normal file
|
|
@ -0,0 +1,79 @@
|
|||
// Spell Checker Plugin for HTMLArea-3.0
|
||||
// Sponsored by www.americanbible.org
|
||||
// Implementation by Mihai Bazon, http://dynarch.com/mishoo/
|
||||
//
|
||||
// (c) dynarch.com 2003.
|
||||
// Distributed under the same terms as HTMLArea itself.
|
||||
// This notice MUST stay intact for use (see license.txt).
|
||||
//
|
||||
// $Id$
|
||||
|
||||
function SpellChecker(editor) {
|
||||
this.editor = editor;
|
||||
|
||||
var cfg = editor.config;
|
||||
var tt = SpellChecker.I18N;
|
||||
var bl = SpellChecker.btnList;
|
||||
var self = this;
|
||||
|
||||
// register the toolbar buttons provided by this plugin
|
||||
var toolbar = [];
|
||||
for (var i in bl) {
|
||||
var btn = bl[i];
|
||||
if (!btn) {
|
||||
toolbar.push("separator");
|
||||
} else {
|
||||
var id = "SC-" + btn[0];
|
||||
cfg.registerButton(id, tt[id], editor.imgURL(btn[0] + ".gif", "SpellChecker"), false,
|
||||
function(editor, id) {
|
||||
// dispatch button press event
|
||||
self.buttonPress(editor, id);
|
||||
}, btn[1]);
|
||||
toolbar.push(id);
|
||||
}
|
||||
}
|
||||
|
||||
for (var i in toolbar) {
|
||||
cfg.toolbar[0].push(toolbar[i]);
|
||||
}
|
||||
};
|
||||
|
||||
SpellChecker._pluginInfo = {
|
||||
name : "SpellChecker",
|
||||
version : "1.0",
|
||||
developer : "Mihai Bazon",
|
||||
developer_url : "http://dynarch.com/mishoo/",
|
||||
c_owner : "Mihai Bazon",
|
||||
sponsor : "American Bible Society",
|
||||
sponsor_url : "http://www.americanbible.org",
|
||||
license : "htmlArea"
|
||||
};
|
||||
|
||||
SpellChecker.btnList = [
|
||||
null, // separator
|
||||
["spell-check"]
|
||||
];
|
||||
|
||||
SpellChecker.prototype.buttonPress = function(editor, id) {
|
||||
switch (id) {
|
||||
case "SC-spell-check":
|
||||
SpellChecker.editor = editor;
|
||||
SpellChecker.init = true;
|
||||
var uiurl = _editor_url + "plugins/SpellChecker/spell-check-ui.html";
|
||||
var win;
|
||||
if (HTMLArea.is_ie) {
|
||||
win = window.open(uiurl, "SC_spell_checker",
|
||||
"toolbar=no,location=no,directories=no,status=no,menubar=no," +
|
||||
"scrollbars=no,resizable=yes,width=600,height=450");
|
||||
} else {
|
||||
win = window.open(uiurl, "SC_spell_checker",
|
||||
"toolbar=no,menubar=no,personalbar=no,width=600,height=450," +
|
||||
"scrollbars=no,resizable=yes");
|
||||
}
|
||||
win.focus();
|
||||
break;
|
||||
}
|
||||
};
|
||||
|
||||
// this needs to be global, it's accessed from spell-check-ui.html
|
||||
SpellChecker.editor = null;
|
||||
BIN
www/extras/htmlArea3/plugins/TableOperations/img/cell-delete.gif
Normal file
|
After Width: | Height: | Size: 101 B |
|
After Width: | Height: | Size: 118 B |
|
After Width: | Height: | Size: 118 B |
BIN
www/extras/htmlArea3/plugins/TableOperations/img/cell-merge.gif
Normal file
|
After Width: | Height: | Size: 896 B |
BIN
www/extras/htmlArea3/plugins/TableOperations/img/cell-prop.gif
Normal file
|
After Width: | Height: | Size: 155 B |
BIN
www/extras/htmlArea3/plugins/TableOperations/img/cell-split.gif
Normal file
|
After Width: | Height: | Size: 907 B |
BIN
www/extras/htmlArea3/plugins/TableOperations/img/col-delete.gif
Normal file
|
After Width: | Height: | Size: 100 B |
|
After Width: | Height: | Size: 111 B |
|
After Width: | Height: | Size: 110 B |
BIN
www/extras/htmlArea3/plugins/TableOperations/img/col-split.gif
Normal file
|
After Width: | Height: | Size: 908 B |
BIN
www/extras/htmlArea3/plugins/TableOperations/img/row-delete.gif
Normal file
|
After Width: | Height: | Size: 104 B |
|
After Width: | Height: | Size: 116 B |
|
After Width: | Height: | Size: 115 B |
BIN
www/extras/htmlArea3/plugins/TableOperations/img/row-prop.gif
Normal file
|
After Width: | Height: | Size: 149 B |
BIN
www/extras/htmlArea3/plugins/TableOperations/img/row-split.gif
Normal file
|
After Width: | Height: | Size: 895 B |
BIN
www/extras/htmlArea3/plugins/TableOperations/img/table-prop.gif
Normal file
|
After Width: | Height: | Size: 145 B |
90
www/extras/htmlArea3/plugins/TableOperations/lang/cz.js
Normal file
|
|
@ -0,0 +1,90 @@
|
|||
// 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.)
|
||||
|
||||
TableOperations.I18N = {
|
||||
"Align": "Zarovnání",
|
||||
"All four sides": "Všechny čtyři strany",
|
||||
"Background": "Pozadí",
|
||||
"Baseline": "Základní linka",
|
||||
"Border": "Obrys",
|
||||
"Borders": "Obrysy",
|
||||
"Bottom": "Dolů",
|
||||
"CSS Style": "Kaskádové styly (CSS)",
|
||||
"Caption": "Titulek",
|
||||
"Cell Properties": "Vlastnosti buňky",
|
||||
"Center": "Na střed",
|
||||
"Char": "Znak",
|
||||
"Collapsed borders": "Stlačené okraje",
|
||||
"Color": "Barva",
|
||||
"Description": "Popis",
|
||||
"FG Color": "Barva popředí",
|
||||
"Float": "Obtékání",
|
||||
"Frames": "Rámečky",
|
||||
"Height": "Výška",
|
||||
"How many columns would you like to merge?": "Kolik sloupců si přejete spojit?",
|
||||
"How many rows would you like to merge?": "Kolik řádků si přejete spojit?",
|
||||
"Image URL": "Adresa obrázku",
|
||||
"Justify": "Do stran",
|
||||
"Layout": "Rozložení",
|
||||
"Left": "Vlevo",
|
||||
"Margin": "Okraj",
|
||||
"Middle": "Na střed",
|
||||
"No rules": "Žádné čáry",
|
||||
"No sides": "Žádné strany",
|
||||
"None": "Žádné",
|
||||
"Padding": "Odsazování",
|
||||
"Please click into some cell": "Prosím klikněte do některé buňky",
|
||||
"Right": "Vpravo",
|
||||
"Row Properties": "Vlastnosti řádku",
|
||||
"Rules will appear between all rows and columns": "Čáry mezi všemi řádky i sloupci",
|
||||
"Rules will appear between columns only": "Čáry pouze mezi sloupci",
|
||||
"Rules will appear between rows only": "Čáry pouze mezi řádky",
|
||||
"Rules": "Čáry",
|
||||
"Spacing and padding": "Mezery a odsazování",
|
||||
"Spacing": "Mezery",
|
||||
"Summary": "Shrnutí",
|
||||
"TO-cell-delete": "Smazat buňku",
|
||||
"TO-cell-insert-after": "Vložit buňku za",
|
||||
"TO-cell-insert-before": "Vložit buňku před",
|
||||
"TO-cell-merge": "Spojit buňky",
|
||||
"TO-cell-prop": "Vlastnosti buňky",
|
||||
"TO-cell-split": "Rozdělit buňku",
|
||||
"TO-col-delete": "Smazat sloupec",
|
||||
"TO-col-insert-after": "Vložit sloupec za",
|
||||
"TO-col-insert-before": "Vložit sloupec před",
|
||||
"TO-col-split": "Rozdělit sloupec",
|
||||
"TO-row-delete": "Smazat řádek",
|
||||
"TO-row-insert-above": "Smazat řádek nad",
|
||||
"TO-row-insert-under": "Smazat řádek pod",
|
||||
"TO-row-prop": "Vlastnosti řádku",
|
||||
"TO-row-split": "Rozdělit řádek",
|
||||
"TO-table-prop": "Vlastnosti tabulky",
|
||||
"Table Properties": "Vlastnosti tabulky",
|
||||
"Text align": "Zarovnání textu",
|
||||
"The bottom side only": "Pouze spodní strana",
|
||||
"The left-hand side only": "Pouze levá strana",
|
||||
"The right and left sides only": "Pouze levá a pravá strana",
|
||||
"The right-hand side only": "Pouze pravá strana",
|
||||
"The top and bottom sides only": "Pouze horní a dolní strana",
|
||||
"The top side only": "Pouze horní strana",
|
||||
"Top": "Nahoru",
|
||||
"Unset color": "Zrušit barvu",
|
||||
"Vertical align": "Svislé zarovnání",
|
||||
"Width": "Šířka",
|
||||
"not-del-last-cell": "HTMLArea zbaběle odmítá smazat poslední buňku v řádku.",
|
||||
"not-del-last-col": "HTMLArea zbaběle odmítá smazat poslední sloupec v tabulce.",
|
||||
"not-del-last-row": "HTMLArea zbaběle odmítá smazat poslední řádek v tabulce.",
|
||||
"percent": "procent",
|
||||
"pixels": "pixelů"
|
||||
};
|
||||
90
www/extras/htmlArea3/plugins/TableOperations/lang/da.js
Normal file
|
|
@ -0,0 +1,90 @@
|
|||
// I18N constants
|
||||
|
||||
// LANG: "da", ENCODING: UTF-8 | ISO-8859-1
|
||||
// Author: Steen Sønderup, <steen@soenderup.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.)
|
||||
|
||||
TableOperations.I18N = {
|
||||
"Align": "Placer",
|
||||
"All four sides": "Alle fire sider",
|
||||
"Background": "Baggrund",
|
||||
"Baseline": "Bundlinie",
|
||||
"Border": "Kant",
|
||||
"Borders": "Kanter",
|
||||
"Bottom": "Bund",
|
||||
"CSS Style": "Stil [CSS]",
|
||||
"Caption": "Titel",
|
||||
"Cell Properties": "Celle egenskaber",
|
||||
"Center": "Centrer",
|
||||
"Char": "Plads",
|
||||
"Collapsed borders": "Sammensmelt rammer",
|
||||
"Color": "Farve",
|
||||
"Description": "Beskrivelse",
|
||||
"FG Color": "Font farve",
|
||||
"Float": "Justering",
|
||||
"Frames": "Udvendig",
|
||||
"Height": "Højde",
|
||||
"How many columns would you like to merge?": "Hvor mange kollonner vil du samle?",
|
||||
"How many rows would you like to merge?": "Hvor mange rækker vil du samle?",
|
||||
"Image URL": "Billede URL",
|
||||
"Justify": "Lige margener",
|
||||
"Layout": "Opsætning",
|
||||
"Left": "Venstre",
|
||||
"Margin": "Margen",
|
||||
"Middle": "Centrer",
|
||||
"No rules": "Ingen rammer",
|
||||
"No sides": "Ingen sider",
|
||||
"None": "Ingen",
|
||||
"Padding": "Margen",
|
||||
"Please click into some cell": "Klik på en celle",
|
||||
"Right": "Højre",
|
||||
"Row Properties": "Række egenskaber",
|
||||
"Rules will appear between all rows and columns": "Rammer mellem rækker og kolonner",
|
||||
"Rules will appear between columns only": "Kun rammer mellem kolonner",
|
||||
"Rules will appear between rows only": "Kun rammer mellem rækker",
|
||||
"Rules": "Invendig",
|
||||
"Spacing and padding": "Afstand og margen",
|
||||
"Spacing": "Afstand",
|
||||
"Summary": "Beskrivelse",
|
||||
"TO-cell-delete": "Slet celle",
|
||||
"TO-cell-insert-after": "Indsæt celle efter",
|
||||
"TO-cell-insert-before": "Indsæt celle før",
|
||||
"TO-cell-merge": "Sammensæt celler",
|
||||
"TO-cell-prop": "Celle egenskaber",
|
||||
"TO-cell-split": "Opdel celle",
|
||||
"TO-col-delete": "Slet kollonne",
|
||||
"TO-col-insert-after": "Indsæt kolonne efter",
|
||||
"TO-col-insert-before": "Indsæt kolonne før",
|
||||
"TO-col-split": "Opdel kolonne",
|
||||
"TO-row-delete": "Slet række",
|
||||
"TO-row-insert-above": "Indsæt række før",
|
||||
"TO-row-insert-under": "Indsæt række efter",
|
||||
"TO-row-prop": "Række egenskaber",
|
||||
"TO-row-split": "Opdel række",
|
||||
"TO-table-prop": "Tabel egenskaber",
|
||||
"Table Properties": "Tabel egenskaber",
|
||||
"Text align": "Tekst",
|
||||
"The bottom side only": "Kun i bunden",
|
||||
"The left-hand side only": "Kun i højre side",
|
||||
"The right and left sides only": "Kun i siderne",
|
||||
"The right-hand side only": "Kun i venstre side",
|
||||
"The top and bottom sides only": "Kun i top og bund",
|
||||
"The top side only": "Kun i toppen",
|
||||
"Top": "Top",
|
||||
"Unset color": "Farve ikke valgt",
|
||||
"Vertical align": "Vertikal placering",
|
||||
"Width": "Bredde",
|
||||
"not-del-last-cell": "Du kan ikke slette den sidste celle i en række.",
|
||||
"not-del-last-col": "Du kan ikke slette den sidste kolonne i en tabel.",
|
||||
"not-del-last-row": "Du kan ikke slette den sidste række i en tabel.",
|
||||
"percent": "procent",
|
||||
"pixels": "pixel"
|
||||
};
|
||||
81
www/extras/htmlArea3/plugins/TableOperations/lang/de.js
Normal file
|
|
@ -0,0 +1,81 @@
|
|||
// I18N constants
|
||||
|
||||
// LANG: "de", ENCODING: UTF-8 | ISO-8859-1
|
||||
// Author: broxx, <broxx@broxx.com>
|
||||
|
||||
TableOperations.I18N = {
|
||||
"Align": "Ausrichten",
|
||||
"All four sides": "Alle 4 Seiten",
|
||||
"Background": "Hintergrund",
|
||||
"Baseline": "Basislinie",
|
||||
"Border": "Rand",
|
||||
"Borders": "Raender",
|
||||
"Bottom": "Unten",
|
||||
"CSS Style": "Style [CSS]",
|
||||
"Caption": "Ueberschrift",
|
||||
"Cell Properties": "Zellen",
|
||||
"Center": "Zentrieren",
|
||||
"Char": "Zeichen",
|
||||
"Collapsed borders": "Collapsed borders",
|
||||
"Color": "Farbe",
|
||||
"Description": "Beschreibung",
|
||||
"FG Color": "FG Farbe",
|
||||
"Float": "Ausrichtung",
|
||||
"Frames": "Rahmen",
|
||||
"Height": "Hoehe",
|
||||
"How many columns would you like to merge?": "Wieviele Spalten willst du verbinden?",
|
||||
"How many rows would you like to merge?": "Wieviele Zeilen willst du verbinden?",
|
||||
"Image URL": "Bild URL",
|
||||
"Justify": "Justieren",
|
||||
"Layout": "Layout",
|
||||
"Left": "Links",
|
||||
"Margin": "Rand",
|
||||
"Middle": "Mitte",
|
||||
"No rules": "Keine Balken",
|
||||
"No sides": "Keine Seiten",
|
||||
"None": "Keine",
|
||||
"Padding": "Auffuellung",
|
||||
"Please click into some cell": "Waehle eine Zelle",
|
||||
"Right": "Rechts",
|
||||
"Row Properties": "Reihen",
|
||||
"Rules will appear between all rows and columns": "Balken zwischen Reihen und Spalten",
|
||||
"Rules will appear between columns only": "Balken zwischen Spalten",
|
||||
"Rules will appear between rows only": "Balken zwischen Reihen",
|
||||
"Rules": "Balken",
|
||||
"Spacing and padding": "Abstaende",
|
||||
"Spacing": "Abstand",
|
||||
"Summary": "Zusammenfassung",
|
||||
"TO-cell-delete": "Zelle loeschen",
|
||||
"TO-cell-insert-after": "Zelle einfuegen nach",
|
||||
"TO-cell-insert-before": "Zelle einfuegen bevor",
|
||||
"TO-cell-merge": "Zellen zusammenfuegen",
|
||||
"TO-cell-prop": "Zelleinstellungen",
|
||||
"TO-cell-split": "Zellen aufteilen",
|
||||
"TO-col-delete": "Spalte loeschen",
|
||||
"TO-col-insert-after": "Spalte einfuegen nach",
|
||||
"TO-col-insert-before": "Spalte einfuegen bevor",
|
||||
"TO-col-split": "Spalte aufteilen",
|
||||
"TO-row-delete": "Reihe loeschen",
|
||||
"TO-row-insert-above": "Reihe einfuegen vor",
|
||||
"TO-row-insert-under": "Reihe einfuegen nach",
|
||||
"TO-row-prop": "Reiheneinstellungen",
|
||||
"TO-row-split": "Reihen aufteilen",
|
||||
"TO-table-prop": "Tabelle",
|
||||
"Table Properties": "Tabelle",
|
||||
"Text align": "Ausrichtung",
|
||||
"The bottom side only": "Nur untere Seite",
|
||||
"The left-hand side only": "Nur linke Seite",
|
||||
"The right and left sides only": "Nur linke und rechte Seite",
|
||||
"The right-hand side only": "Nur rechte Seite",
|
||||
"The top and bottom sides only": "Nur obere und untere Seite",
|
||||
"The top side only": "Nur obere Seite",
|
||||
"Top": "Oben",
|
||||
"Unset color": "Farbe",
|
||||
"Vertical align": "Ausrichtung",
|
||||
"Width": "Breite",
|
||||
"not-del-last-cell": "Letzte Zelle in dieser Reihe!",
|
||||
"not-del-last-col": "Letzte Spalte in dieser Tabelle!",
|
||||
"not-del-last-row": "Letzte Reihe in dieser Tabelle",
|
||||
"percent": "%",
|
||||
"pixels": "pixels"
|
||||
};
|
||||
81
www/extras/htmlArea3/plugins/TableOperations/lang/el.js
Normal file
|
|
@ -0,0 +1,81 @@
|
|||
// I18N constants
|
||||
|
||||
// LANG: "el", ENCODING: UTF-8 | ISO-8859-7
|
||||
// Author: Dimitris Glezos, dimitris@glezos.com
|
||||
|
||||
TableOperations.I18N = {
|
||||
"Align": "Στοίχηση",
|
||||
"All four sides": "Και οι 4 πλευρές",
|
||||
"Background": "Φόντο",
|
||||
"Baseline": "Baseline",
|
||||
"Border": "Περίγραμμα",
|
||||
"Borders": "Περιγράμματα",
|
||||
"Bottom": "Κάτω μέρος",
|
||||
"CSS Style": "Στυλ [CSS]",
|
||||
"Caption": "Λεζάντα",
|
||||
"Cell Properties": "Ιδιότητες Κελιού",
|
||||
"Center": "Κέντρο",
|
||||
"Char": "Χαρακτήρας",
|
||||
"Collapsed borders": "Συμπτυγμένα περιγράμματα",
|
||||
"Color": "Χρώμα",
|
||||
"Description": "Περιγραφή",
|
||||
"FG Color": "Χρώμα αντικειμένων",
|
||||
"Float": "Float",
|
||||
"Frames": "Frames",
|
||||
"Height": "Ύψος",
|
||||
"How many columns would you like to merge?": "Πόσες στήλες θέλετε να ενώσετε;",
|
||||
"How many rows would you like to merge?": "Πόσες γραμμές θέλετε να ενώσετε;",
|
||||
"Image URL": "URL εικόνας",
|
||||
"Justify": "Πλήρης στοίχηση",
|
||||
"Layout": "Διάταξη",
|
||||
"Left": "Αριστερά",
|
||||
"Margin": "Περιθώριο",
|
||||
"Middle": "Κέντρο",
|
||||
"No rules": "Χωρίς Γραμμές",
|
||||
"No sides": "No sides",
|
||||
"None": "Τίποτα",
|
||||
"Padding": "Εσοχή",
|
||||
"Please click into some cell": "Κάντε κλικ μέσα σε κάποιο κελί",
|
||||
"Right": "Δεξιά",
|
||||
"Row Properties": "Ιδιότητες Γραμμής",
|
||||
"Rules will appear between all rows and columns": "Γραμμές θα εμφανίζονται μεταξύ όλων των γραμμών και στηλών",
|
||||
"Rules will appear between columns only": "Γραμμές θα εμφανίζονται μόνο μεταξύ στηλών",
|
||||
"Rules will appear between rows only": "Γραμμές θα εμφανίζονται μόνο μεταξύ γραμμών",
|
||||
"Rules": "Γραμμές",
|
||||
"Spacing and padding": "Αποστάσεις και εσοχές",
|
||||
"Spacing": "Αποστάσεις",
|
||||
"Summary": "Σύνοψη",
|
||||
"TO-cell-delete": "Διαγραφή κελιού",
|
||||
"TO-cell-insert-after": "Εισαγωγή κελιού μετά",
|
||||
"TO-cell-insert-before": "Εισαγωγή κελιού πριν",
|
||||
"TO-cell-merge": "Συγχώνευση κελιών",
|
||||
"TO-cell-prop": "Ιδιότητες κελιού",
|
||||
"TO-cell-split": "Διαίρεση κελιού",
|
||||
"TO-col-delete": "Διαγραφή στήλης",
|
||||
"TO-col-insert-after": "Εισαγωγή στήλης μετά",
|
||||
"TO-col-insert-before": "Εισαγωγή στήλης πριν",
|
||||
"TO-col-split": "Διαίρεση στήλης",
|
||||
"TO-row-delete": "Διαγραφή γραμμής",
|
||||
"TO-row-insert-above": "Εισαγωγή γραμμής μετά",
|
||||
"TO-row-insert-under": "Εισαγωγή γραμμής πριν",
|
||||
"TO-row-prop": "Ιδιότητες γραμμής",
|
||||
"TO-row-split": "Διαίρεση γραμμής",
|
||||
"TO-table-prop": "Ιδιότητες πίνακα",
|
||||
"Table Properties": "Ιδιότητες πίνακα",
|
||||
"Text align": "Στοίχηση κειμένου",
|
||||
"The bottom side only": "Η κάτω πλευρά μόνο",
|
||||
"The left-hand side only": "Η αριστερή πλευρά μόνο",
|
||||
"The right and left sides only": "Οι δεξιές και αριστερές πλευρές μόνο",
|
||||
"The right-hand side only": "Η δεξιά πλευρά μόνο",
|
||||
"The top and bottom sides only": "Οι πάνω και κάτω πλευρές μόνο",
|
||||
"The top side only": "Η πάνω πλευρά μόνο",
|
||||
"Top": "Πάνω",
|
||||
"Unset color": "Αναίρεση χρώματος",
|
||||
"Vertical align": "Κατακόρυφη στοίχηση",
|
||||
"Width": "Πλάτος",
|
||||
"not-del-last-cell": "Δεν μπορεί να διαγραφεί το τελευταίο κελί σε μια γραμμή.",
|
||||
"not-del-last-col": "Δεν μπορεί να διαγραφεί η τελευταία στήλη σε ένα πίνακα.",
|
||||
"not-del-last-row": "Δεν μπορεί να διαγραφεί η τελευταία γραμμή σε ένα πίνακα.",
|
||||
"percent": "τοις εκατόν",
|
||||
"pixels": "pixels"
|
||||
};
|
||||
90
www/extras/htmlArea3/plugins/TableOperations/lang/en.js
Normal file
|
|
@ -0,0 +1,90 @@
|
|||
// 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.)
|
||||
|
||||
TableOperations.I18N = {
|
||||
"Align": "Align",
|
||||
"All four sides": "All four sides",
|
||||
"Background": "Background",
|
||||
"Baseline": "Baseline",
|
||||
"Border": "Border",
|
||||
"Borders": "Borders",
|
||||
"Bottom": "Bottom",
|
||||
"CSS Style": "Style [CSS]",
|
||||
"Caption": "Caption",
|
||||
"Cell Properties": "Cell Properties",
|
||||
"Center": "Center",
|
||||
"Char": "Char",
|
||||
"Collapsed borders": "Collapsed borders",
|
||||
"Color": "Color",
|
||||
"Description": "Description",
|
||||
"FG Color": "FG Color",
|
||||
"Float": "Float",
|
||||
"Frames": "Frames",
|
||||
"Height": "Height",
|
||||
"How many columns would you like to merge?": "How many columns would you like to merge?",
|
||||
"How many rows would you like to merge?": "How many rows would you like to merge?",
|
||||
"Image URL": "Image URL",
|
||||
"Justify": "Justify",
|
||||
"Layout": "Layout",
|
||||
"Left": "Left",
|
||||
"Margin": "Margin",
|
||||
"Middle": "Middle",
|
||||
"No rules": "No rules",
|
||||
"No sides": "No sides",
|
||||
"None": "None",
|
||||
"Padding": "Padding",
|
||||
"Please click into some cell": "Please click into some cell",
|
||||
"Right": "Right",
|
||||
"Row Properties": "Row Properties",
|
||||
"Rules will appear between all rows and columns": "Rules will appear between all rows and columns",
|
||||
"Rules will appear between columns only": "Rules will appear between columns only",
|
||||
"Rules will appear between rows only": "Rules will appear between rows only",
|
||||
"Rules": "Rules",
|
||||
"Spacing and padding": "Spacing and padding",
|
||||
"Spacing": "Spacing",
|
||||
"Summary": "Summary",
|
||||
"TO-cell-delete": "Delete cell",
|
||||
"TO-cell-insert-after": "Insert cell after",
|
||||
"TO-cell-insert-before": "Insert cell before",
|
||||
"TO-cell-merge": "Merge cells",
|
||||
"TO-cell-prop": "Cell properties",
|
||||
"TO-cell-split": "Split cell",
|
||||
"TO-col-delete": "Delete column",
|
||||
"TO-col-insert-after": "Insert column after",
|
||||
"TO-col-insert-before": "Insert column before",
|
||||
"TO-col-split": "Split column",
|
||||
"TO-row-delete": "Delete row",
|
||||
"TO-row-insert-above": "Insert row before",
|
||||
"TO-row-insert-under": "Insert row after",
|
||||
"TO-row-prop": "Row properties",
|
||||
"TO-row-split": "Split row",
|
||||
"TO-table-prop": "Table properties",
|
||||
"Table Properties": "Table Properties",
|
||||
"Text align": "Text align",
|
||||
"The bottom side only": "The bottom side only",
|
||||
"The left-hand side only": "The left-hand side only",
|
||||
"The right and left sides only": "The right and left sides only",
|
||||
"The right-hand side only": "The right-hand side only",
|
||||
"The top and bottom sides only": "The top and bottom sides only",
|
||||
"The top side only": "The top side only",
|
||||
"Top": "Top",
|
||||
"Unset color": "Unset color",
|
||||
"Vertical align": "Vertical align",
|
||||
"Width": "Width",
|
||||
"not-del-last-cell": "HTMLArea cowardly refuses to delete the last cell in row.",
|
||||
"not-del-last-col": "HTMLArea cowardly refuses to delete the last column in table.",
|
||||
"not-del-last-row": "HTMLArea cowardly refuses to delete the last row in table.",
|
||||
"percent": "percent",
|
||||
"pixels": "pixels"
|
||||
};
|
||||
66
www/extras/htmlArea3/plugins/TableOperations/lang/fi.js
Normal file
|
|
@ -0,0 +1,66 @@
|
|||
TableOperations.I18N = {
|
||||
"Align": "Kohdistus",
|
||||
"All four sides": "Kaikki neljä sivua",
|
||||
"Background": "Tausta",
|
||||
"Baseline": "Takaraja",
|
||||
"Border": "Reuna",
|
||||
"Borders": "Reunat",
|
||||
"Bottom": "Alle",
|
||||
"CSS Style": "Tyyli [CSS]",
|
||||
"Caption": "Otsikko",
|
||||
"Cell Properties": "Solun asetukset",
|
||||
"Center": "Keskelle",
|
||||
"Char": "Merkki",
|
||||
"Collapsed borders": "Luhistetut reunat",
|
||||
"Color": "Väri",
|
||||
"Description": "Kuvaus",
|
||||
"FG Color": "FG Väri",
|
||||
"Frames": "Kehykset",
|
||||
"Image URL": "Kuvan osoite",
|
||||
"Layout": "Sommittelu",
|
||||
"Left": "Vasen",
|
||||
"Margin": "Marginaali",
|
||||
"Middle": "Keskelle",
|
||||
"No rules": "Ei viivoja",
|
||||
"No sides": "Ei sivuja",
|
||||
"Padding": "Palstantäyte",
|
||||
"Right": "Oikea",
|
||||
"Row Properties": "Rivin asetukset",
|
||||
"Rules will appear between all rows and columns": "Viivat jokaisen rivin ja sarakkeen välillä",
|
||||
"Rules will appear between columns only": "Viivat ainoastaan sarakkeiden välillä",
|
||||
"Rules will appear between rows only": "Viivat ainoastaan rivien välillä",
|
||||
"Rules": "Viivat",
|
||||
"Spacing": "Palstatila",
|
||||
"Summary": "Yhteenveto",
|
||||
"TO-cell-delete": "Poista solu",
|
||||
"TO-cell-insert-after": "Lisää solu perään",
|
||||
"TO-cell-insert-before": "Lisää solu ennen",
|
||||
"TO-cell-merge": "Yhdistä solut",
|
||||
"TO-cell-prop": "Solun asetukset",
|
||||
"TO-cell-split": "Jaa solu",
|
||||
"TO-col-delete": "Poista sarake",
|
||||
"TO-col-insert-after": "Lisää sarake perään",
|
||||
"TO-col-insert-before": "Lisää sarake ennen",
|
||||
"TO-col-split": "Jaa sarake",
|
||||
"TO-row-delete": "Poista rivi",
|
||||
"TO-row-insert-above": "Lisää rivi yläpuolelle",
|
||||
"TO-row-insert-under": "Lisää rivi alapuolelle",
|
||||
"TO-row-prop": "Rivin asetukset",
|
||||
"TO-row-split": "Jaa rivi",
|
||||
"TO-table-prop": "Taulukon asetukset",
|
||||
"Top": "Ylös",
|
||||
"Table Properties": "Taulukon asetukset",
|
||||
"The bottom side only": "Ainoastaan alapuolelle",
|
||||
"The left-hand side only": "Ainoastaan vasenreuna",
|
||||
"The right and left sides only": "Oikea- ja vasenreuna",
|
||||
"The right-hand side only": "Ainoastaan oikeareuna",
|
||||
"The top and bottom sides only": "Ylä- ja alapuoli.",
|
||||
"The top side only": "Ainoastaan yläpuoli",
|
||||
"Vertical align": "Vertikaali kohdistus",
|
||||
"Width": "Leveys",
|
||||
"not-del-last-cell": "Ei voida poistaa viimeistä solua rivistä.",
|
||||
"not-del-last-col": "Ei voida poistaa viimeistä saraketta taulusta.",
|
||||
"not-del-last-row": "Ei voida poistaa viimeistä riviä taulusta.",
|
||||
"percent": "prosenttia",
|
||||
"pixels": "pikseliä"
|
||||
};
|
||||
63
www/extras/htmlArea3/plugins/TableOperations/lang/hu.js
Normal 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"
|
||||
}
|
||||
};
|
||||
81
www/extras/htmlArea3/plugins/TableOperations/lang/it.js
Normal file
|
|
@ -0,0 +1,81 @@
|
|||
// I18N constants
|
||||
|
||||
// LANG: "it", ENCODING: UTF-8 | ISO-8859-1
|
||||
// Author: Fabio Rotondo <fabio@rotondo.it>
|
||||
|
||||
TableOperations.I18N = {
|
||||
"Align": "Allinea",
|
||||
"All four sides": "Tutti e quattro i lati",
|
||||
"Background": "Sfondo",
|
||||
"Baseline": "Allineamento",
|
||||
"Border": "Bordo",
|
||||
"Borders": "Bordi",
|
||||
"Bottom": "Basso",
|
||||
"CSS Style": "Stile [CSS]",
|
||||
"Caption": "Titolo",
|
||||
"Cell Properties": "Proprietà della Cella",
|
||||
"Center": "Centra",
|
||||
"Char": "Carattere",
|
||||
"Collapsed borders": "Bordi chiusi",
|
||||
"Color": "Colore",
|
||||
"Description": "Descrizione",
|
||||
"FG Color": "Colore Principale",
|
||||
"Float": "Fluttuante",
|
||||
"Frames": "Frames",
|
||||
"Height": "Altezza",
|
||||
"How many columns would you like to merge?": "Quante colonne vuoi unire?",
|
||||
"How many rows would you like to merge?": "Quante righe vuoi unire?",
|
||||
"Image URL": "URL dell'Immagine",
|
||||
"Justify": "Justifica",
|
||||
"Layout": "Layout",
|
||||
"Left": "Sinistra",
|
||||
"Margin": "Margine",
|
||||
"Middle": "Centrale",
|
||||
"No rules": "Nessun righello",
|
||||
"No sides": "Nessun lato",
|
||||
"None": "Nulla",
|
||||
"Padding": "Padding",
|
||||
"Please click into some cell": "Per favore, clicca in una cella",
|
||||
"Right": "Destra",
|
||||
"Row Properties": "Proprietà della Riga",
|
||||
"Rules will appear between all rows and columns": "Le linee appariranno tra tutte le righe e colonne",
|
||||
"Rules will appear between columns only": "Le linee appariranno solo tra le colonne",
|
||||
"Rules will appear between rows only": "Le linee appariranno solo tra le righe",
|
||||
"Rules": "Linee",
|
||||
"Spacing and padding": "Spaziatura e Padding",
|
||||
"Spacing": "Spaziatura",
|
||||
"Summary": "Sommario",
|
||||
"TO-cell-delete": "Cancella cella",
|
||||
"TO-cell-insert-after": "Inserisci cella dopo",
|
||||
"TO-cell-insert-before": "Inserisci cella prima",
|
||||
"TO-cell-merge": "Unisci celle",
|
||||
"TO-cell-prop": "Proprietà della cella",
|
||||
"TO-cell-split": "Dividi cella",
|
||||
"TO-col-delete": "Cancella colonna",
|
||||
"TO-col-insert-after": "Inserisci colonna dopo",
|
||||
"TO-col-insert-before": "Inserisci colonna prima",
|
||||
"TO-col-split": "Dividi colonna",
|
||||
"TO-row-delete": "Cancella riga",
|
||||
"TO-row-insert-above": "Inserisci riga prima",
|
||||
"TO-row-insert-under": "Inserisci riga dopo",
|
||||
"TO-row-prop": "Proprietà della riga",
|
||||
"TO-row-split": "Dividi riga",
|
||||
"TO-table-prop": "Proprietà della Tabella",
|
||||
"Table Properties": "Proprietà della Tabella",
|
||||
"Text align": "Allineamento del Testo",
|
||||
"The bottom side only": "Solo la parte inferiore",
|
||||
"The left-hand side only": "Solo la parte sinistra",
|
||||
"The right and left sides only": "Solo destra e sinistra",
|
||||
"The right-hand side only": "Solo la parte destra",
|
||||
"The top and bottom sides only": "Solo sopra e sotto",
|
||||
"The top side only": "Solo la parte sopra",
|
||||
"Top": "Alto",
|
||||
"Unset color": "Rimuovi colore",
|
||||
"Vertical align": "Allineamento verticale",
|
||||
"Width": "Larghezza",
|
||||
"not-del-last-cell": "HTMLArea si rifiuta codardamente di cancellare l'ultima cella nella riga.",
|
||||
"not-del-last-col": "HTMLArea si rifiuta codardamente di cancellare l'ultima colonna nella tabella.",
|
||||
"not-del-last-row": "HTMLArea si rifiuta codardamente di cancellare l'ultima riga nella tabella.",
|
||||
"percent": "percento",
|
||||
"pixels": "pixels"
|
||||
};
|
||||
90
www/extras/htmlArea3/plugins/TableOperations/lang/nl.js
Normal 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.)
|
||||
|
||||
TableOperations.I18N = {
|
||||
"Align": "Uitlijning",
|
||||
"All four sides": "Alle 4 zijden",
|
||||
"Background": "Achtergrond",
|
||||
"Baseline": "Basis",
|
||||
"Border": "Rand",
|
||||
"Borders": "Randen",
|
||||
"Bottom": "Onder",
|
||||
"CSS Style": "CSS Style",
|
||||
"Caption": "Opmerking",
|
||||
"Cell Properties": "Celeigenschappen",
|
||||
"Center": "Centreren",
|
||||
"Char": "Karakter",
|
||||
"Collapsed borders": "Geen randen",
|
||||
"Color": "Kleur",
|
||||
"Description": "Omschrijving",
|
||||
"FG Color": "Voorgrond",
|
||||
"Float": "Zwevend",
|
||||
"Frames": "Frames",
|
||||
"Height": "Hoogte",
|
||||
"How many columns would you like to merge?": "Hoeveel kolommen wilt u samenvoegen?",
|
||||
"How many rows would you like to merge?": "Hoeveel rijen wilt u samenvoegen?",
|
||||
"Image URL": "Afbeelding URL",
|
||||
"Justify": "Uitvullen",
|
||||
"Layout": "Opmaak",
|
||||
"Left": "Links",
|
||||
"Margin": "Marge",
|
||||
"Middle": "Midden",
|
||||
"No rules": "Geen regels",
|
||||
"No sides": "Geen zijlijnen",
|
||||
"None": "Geen",
|
||||
"Padding": "Celmarge",
|
||||
"Please click into some cell": "Klik in een cel a.u.b.",
|
||||
"Right": "Rechts",
|
||||
"Row Properties": "Rijeigenschappen",
|
||||
"Rules will appear between all rows and columns": "Regels verschijnen tussen alle rijen en kolommen",
|
||||
"Rules will appear between columns only": "Regels verschijnen enkel tussen de kolommen",
|
||||
"Rules will appear between rows only": "Regels verschijnen enkel tussen de rijen",
|
||||
"Rules": "Regels",
|
||||
"Spacing and padding": "Celmarge en afstand tussen cellen",
|
||||
"Spacing": "marge",
|
||||
"Summary": "Overzicht",
|
||||
"TO-cell-delete": "Cel verwijderen",
|
||||
"TO-cell-insert-after": "Voeg cel toe achter",
|
||||
"TO-cell-insert-before": "Voeg cel toe voor",
|
||||
"TO-cell-merge": "Cellen samenvoegen",
|
||||
"TO-cell-prop": "Celeigenschappen",
|
||||
"TO-cell-split": "Cel splitsen",
|
||||
"TO-col-delete": "Kolom verwijderen",
|
||||
"TO-col-insert-after": "Kolom invoegen achter",
|
||||
"TO-col-insert-before": "Kolom invoegen voor",
|
||||
"TO-col-split": "Kolom splitsen",
|
||||
"TO-row-delete": "Rij verwijderen",
|
||||
"TO-row-insert-above": "Rij invoegen boven",
|
||||
"TO-row-insert-under": "Rij invoegen onder",
|
||||
"TO-row-prop": "Rij eigenschappen",
|
||||
"TO-row-split": "Rij splitsen",
|
||||
"TO-table-prop": "Tabel eigenschappen",
|
||||
"Table Properties": "Tabel eigenschappen",
|
||||
"Text align": "Text uitlijning",
|
||||
"The bottom side only": "Enkel aan de onderkant",
|
||||
"The left-hand side only": "Enkel aan de linkerkant",
|
||||
"The right and left sides only": "Enkel aan de linker en rechterkant",
|
||||
"The right-hand side only": "Enkel aan de rechterkant",
|
||||
"The top and bottom sides only": "Enkel aan de bovenen onderkant",
|
||||
"The top side only": "Enkel aan de bovenkant",
|
||||
"Top": "Boven",
|
||||
"Unset color": "Wis kleur",
|
||||
"Vertical align": "Vertikale uitlijning",
|
||||
"Width": "Breedte",
|
||||
"not-del-last-cell": "HTMLArea kan de laatste cel in deze tabel niet verwijderen.",
|
||||
"not-del-last-col": "HTMLArea kan de laatste kolom in deze tabel niet verwijderen.",
|
||||
"not-del-last-row": "HTMLArea kan de laatste rij in deze tabel niet verwijderen.",
|
||||
"percent": "procent",
|
||||
"pixels": "pixels"
|
||||
};
|
||||
91
www/extras/htmlArea3/plugins/TableOperations/lang/no.js
Normal file
|
|
@ -0,0 +1,91 @@
|
|||
// I18N constants
|
||||
|
||||
// LANG: "en", ENCODING: UTF-8 | ISO-8859-1
|
||||
// Author: Mihai Bazon, <mishoo@infoiasi.ro>
|
||||
// translated into Norwegia: ses@online.no 11.11.03
|
||||
|
||||
// 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.)
|
||||
|
||||
TableOperations.I18N = {
|
||||
"Align": "Juster",
|
||||
"All four sides": "Alle fire sider",
|
||||
"Background": "Bakgrund",
|
||||
"Baseline": "Grunnlinje",
|
||||
"Border": "Kantlinje",
|
||||
"Borders": "Kantlinjer",
|
||||
"Bottom": "Bunn",
|
||||
"CSS Style": "Stil [CSS]",
|
||||
"Caption": "Overskrift",
|
||||
"Cell Properties": "Celleegenskaper",
|
||||
"Center": "Sentrer",
|
||||
"Char": "Tegn",
|
||||
"Collapsed borders": "Fjern kantlinjer",
|
||||
"Color": "Farge",
|
||||
"Description": "Beskrivelse",
|
||||
"FG Color": "FG farge",
|
||||
"Float": "Flytende",
|
||||
"Frames": "rammer",
|
||||
"Height": "Høyde",
|
||||
"How many columns would you like to merge?": "Hvor mange kolonner vil du slå sammen?",
|
||||
"How many rows would you like to merge?": "Hvor mange rader vil du slå sammen?",
|
||||
"Image URL": "Bildets URL",
|
||||
"Justify": "Juster",
|
||||
"Layout": "Layout",
|
||||
"Left": "Venstre",
|
||||
"Margin": "Marg",
|
||||
"Middle": "Midten",
|
||||
"No rules": "Ingen linjal",
|
||||
"No sides": "Ingen sider",
|
||||
"None": "Ingen",
|
||||
"Padding": "Luft",
|
||||
"Please click into some cell": "Klikk i en eller annen celle",
|
||||
"Right": "Høyre",
|
||||
"Row Properties": "Egenskaper for rad",
|
||||
"Rules will appear between all rows and columns": "Linjer vil synes mellom alle rader og kolonner",
|
||||
"Rules will appear between columns only": "Linjer vil synes kun mellom kolonner",
|
||||
"Rules will appear between rows only": "Linjer vil synes kun mellom rader",
|
||||
"Rules": "Linjer",
|
||||
"Spacing and padding": "Luft",
|
||||
"Spacing": "Luft",
|
||||
"Summary": "Sammendrag",
|
||||
"TO-cell-delete": "Slett celle",
|
||||
"TO-cell-insert-after": "Sett inn celle etter",
|
||||
"TO-cell-insert-before": "Sett inn celle foran",
|
||||
"TO-cell-merge": "Slå sammen celler",
|
||||
"TO-cell-prop": "Egenskaper for celle",
|
||||
"TO-cell-split": "Del celle",
|
||||
"TO-col-delete": "Slett kolonne",
|
||||
"TO-col-insert-after": "Skyt inn kolonne etter",
|
||||
"TO-col-insert-before": "Skyt inn kolonne før",
|
||||
"TO-col-split": "Del kolonne",
|
||||
"TO-row-delete": "Slett rad",
|
||||
"TO-row-insert-above": "Skyt inn rad foran",
|
||||
"TO-row-insert-under": "Skyt inn rad etter",
|
||||
"TO-row-prop": "Egenskaper for rad",
|
||||
"TO-row-split": "Del rad",
|
||||
"TO-table-prop": "Tabellegenskaper",
|
||||
"Table Properties": "Tabellegenskaper",
|
||||
"Text align": "Juster tekst",
|
||||
"The bottom side only": "Bunnen kun",
|
||||
"The left-hand side only": "Venstresiden kun",
|
||||
"The right and left sides only": "Høyre- og venstresiden kun",
|
||||
"The right-hand side only": "Høyresiden kun",
|
||||
"The top and bottom sides only": "The top and bottom sides only",
|
||||
"The top side only": "Overkanten kun",
|
||||
"Top": "Overkant",
|
||||
"Unset color": "Ikke-bestemt farge",
|
||||
"Vertical align": "Vertikal justering",
|
||||
"Width": "Bredde",
|
||||
"not-del-last-cell": "HTMLArea nekter å slette siste cellen i tabellen.",
|
||||
"not-del-last-col": "HTMLArea nekter å slette siste kolonnen i tabellen.",
|
||||
"not-del-last-row": "HTMLArea nekter å slette siste raden i tabellen.",
|
||||
"percent": "prosent",
|
||||
"pixels": "billedpunkter"
|
||||
};
|
||||
90
www/extras/htmlArea3/plugins/TableOperations/lang/ro.js
Normal file
|
|
@ -0,0 +1,90 @@
|
|||
// 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.)
|
||||
|
||||
TableOperations.I18N = {
|
||||
"Align": "Aliniere",
|
||||
"All four sides": "Toate părţile",
|
||||
"Background": "Fundal",
|
||||
"Baseline": "Baseline",
|
||||
"Border": "Chenar",
|
||||
"Borders": "Chenare",
|
||||
"Bottom": "Jos",
|
||||
"CSS Style": "Stil [CSS]",
|
||||
"Caption": "Titlu de tabel",
|
||||
"Cell Properties": "Proprietăţile celulei",
|
||||
"Center": "Centru",
|
||||
"Char": "Caracter",
|
||||
"Collapsed borders": "Chenare asimilate",
|
||||
"Color": "Culoare",
|
||||
"Description": "Descriere",
|
||||
"FG Color": "Culoare text",
|
||||
"Float": "Poziţie",
|
||||
"Frames": "Chenare",
|
||||
"Height": "Înălţimea",
|
||||
"How many columns would you like to merge?": "Câte coloane vrei să uneşti?",
|
||||
"How many rows would you like to merge?": "Câte linii vrei să uneşti?",
|
||||
"Image URL": "URL-ul imaginii",
|
||||
"Justify": "Justify",
|
||||
"Layout": "Aranjament",
|
||||
"Left": "Stânga",
|
||||
"Margin": "Margine",
|
||||
"Middle": "Mijloc",
|
||||
"No rules": "Fără linii",
|
||||
"No sides": "Fără părţi",
|
||||
"None": "Nimic",
|
||||
"Padding": "Spaţiere",
|
||||
"Please click into some cell": "Vă rog să daţi click într-o celulă",
|
||||
"Right": "Dreapta",
|
||||
"Row Properties": "Proprietăţile liniei",
|
||||
"Rules will appear between all rows and columns": "Vor apărea linii între toate rândurile şi coloanele",
|
||||
"Rules will appear between columns only": "Vor apărea doar linii verticale",
|
||||
"Rules will appear between rows only": "Vor apărea doar linii orizontale",
|
||||
"Rules": "Linii",
|
||||
"Spacing and padding": "Spaţierea",
|
||||
"Spacing": "Între celule",
|
||||
"Summary": "Sumar",
|
||||
"TO-cell-delete": "Şterge celula",
|
||||
"TO-cell-insert-after": "Inserează o celulă la dreapta",
|
||||
"TO-cell-insert-before": "Inserează o celulă la stânga",
|
||||
"TO-cell-merge": "Uneşte celulele",
|
||||
"TO-cell-prop": "Proprietăţile celulei",
|
||||
"TO-cell-split": "Împarte celula",
|
||||
"TO-col-delete": "Şterge coloana",
|
||||
"TO-col-insert-after": "Inserează o coloană la dreapta",
|
||||
"TO-col-insert-before": "Inserează o coloană la stânga",
|
||||
"TO-col-split": "Împarte coloana",
|
||||
"TO-row-delete": "Şterge rândul",
|
||||
"TO-row-insert-above": "Inserează un rând înainte",
|
||||
"TO-row-insert-under": "Inserează un rând după",
|
||||
"TO-row-prop": "Proprietăţile rândului",
|
||||
"TO-row-split": "Împarte rândul",
|
||||
"TO-table-prop": "Proprietăţile tabelei",
|
||||
"Table Properties": "Proprietăţile tabelei",
|
||||
"Text align": "Aliniere",
|
||||
"The bottom side only": "Doar partea de jos",
|
||||
"The left-hand side only": "Doar partea din stânga",
|
||||
"The right and left sides only": "Partea din stânga şi cea din dreapta",
|
||||
"The right-hand side only": "Doar partea din dreapta",
|
||||
"The top and bottom sides only": "Partea de sus si cea de jos",
|
||||
"The top side only": "Doar partea de sus",
|
||||
"Top": "Sus",
|
||||
"Unset color": "Dezactivează culoarea",
|
||||
"Vertical align": "Aliniere pe verticală",
|
||||
"Width": "Lăţime",
|
||||
"not-del-last-cell": "HTMLArea refuză cu laşitate să şteargă ultima celulă din rând.",
|
||||
"not-del-last-col": "HTMLArea refuză cu laşitate să şteargă ultima coloamă din tabela.",
|
||||
"not-del-last-row": "HTMLArea refuză cu laşitate să şteargă ultimul rând din tabela.",
|
||||
"percent": "procente",
|
||||
"pixels": "pixeli"
|
||||
};
|
||||