diff --git a/www/extras/htmlArea3/examples/2-areas.cgi b/www/extras/htmlArea3/examples/2-areas.cgi new file mode 100755 index 000000000..598df267c --- /dev/null +++ b/www/extras/htmlArea3/examples/2-areas.cgi @@ -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 "

You submitted:

"; +print ""; +print ""; +print ""; +print "
text1text2
$text1$text2
"; diff --git a/www/extras/htmlArea3/examples/2-areas.html b/www/extras/htmlArea3/examples/2-areas.html new file mode 100644 index 000000000..1386302f0 --- /dev/null +++ b/www/extras/htmlArea3/examples/2-areas.html @@ -0,0 +1,158 @@ + + + + + Example with 2 HTMLAreas in the same form + + + + + + +

Example with 2 HTMLAreas in the same form

+ +
+ + +
+ + + +
+ + + +
+ + +
+ +
+
Mihai Bazon
+ + Last modified: Wed Jan 28 11:10:40 EET 2004 + + + diff --git a/www/extras/htmlArea3/examples/context-menu.html b/www/extras/htmlArea3/examples/context-menu.html new file mode 100644 index 000000000..388195bbc --- /dev/null +++ b/www/extras/htmlArea3/examples/context-menu.html @@ -0,0 +1,95 @@ + + + Test of ContextMenu plugin + + + + + + + + + + + +

Test of ContextMenu plugin

+ + + + +
+
Mihai Bazon
+ + Last modified: Wed Jan 28 11:10:29 EET 2004 + + + diff --git a/www/extras/htmlArea3/examples/core.html b/www/extras/htmlArea3/examples/core.html new file mode 100644 index 000000000..536be0e95 --- /dev/null +++ b/www/extras/htmlArea3/examples/core.html @@ -0,0 +1,184 @@ + + +Example of HTMLArea 3.0 + + + + + + + + + + + + + + + + +

HTMLArea 3.0

+ +

A replacement for TEXTAREA elements. © InteractiveTools.com, 2003-2004.

+ +
+ + + +

+ + + + + +submit + + + +

+ + + diff --git a/www/extras/htmlArea3/examples/css.html b/www/extras/htmlArea3/examples/css.html new file mode 100644 index 000000000..5700d6357 --- /dev/null +++ b/www/extras/htmlArea3/examples/css.html @@ -0,0 +1,88 @@ + + + Test of CSS plugin + + + + + + + + + + + +

Test of FullPage plugin

+ + + +
+
Mihai Bazon
+ + Last modified: Wed Jan 28 11:10:16 EET 2004 + + + diff --git a/www/extras/htmlArea3/examples/custom.css b/www/extras/htmlArea3/examples/custom.css new file mode 100644 index 000000000..e2690df07 --- /dev/null +++ b/www/extras/htmlArea3/examples/custom.css @@ -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; } diff --git a/www/extras/htmlArea3/examples/full-page.html b/www/extras/htmlArea3/examples/full-page.html new file mode 100644 index 000000000..74666b8cb --- /dev/null +++ b/www/extras/htmlArea3/examples/full-page.html @@ -0,0 +1,75 @@ + + + Test of FullPage plugin + + + + + + + + + + + +

Test of FullPage plugin

+ + + +
+
Mihai Bazon
+ + Last modified: Wed Jan 28 11:10:07 EET 2004 + + + diff --git a/www/extras/htmlArea3/examples/fully-loaded.html b/www/extras/htmlArea3/examples/fully-loaded.html new file mode 100644 index 000000000..f59b10ccc --- /dev/null +++ b/www/extras/htmlArea3/examples/fully-loaded.html @@ -0,0 +1,248 @@ + + +Example of HTMLArea 3.0 + + + + + + + + + + + + + + + + + + + + + +

HTMLArea 3.0

+ +

A replacement for TEXTAREA elements. © InteractiveTools.com, 2003-2004.

+ +
+ + + +

+ + + + + +submit + + + +

+ + + diff --git a/www/extras/htmlArea3/examples/index.html b/www/extras/htmlArea3/examples/index.html new file mode 100644 index 000000000..840a42c67 --- /dev/null +++ b/www/extras/htmlArea3/examples/index.html @@ -0,0 +1,40 @@ + + +HTMLArea examples index + + + +

HTMLArea: auto-generated examples index

+ + + +
+
mishoo@infoiasi.ro
+ Last modified: Sun Feb 1 13:30:39 EET 2004 + + diff --git a/www/extras/htmlArea3/examples/spell-checker.html b/www/extras/htmlArea3/examples/spell-checker.html new file mode 100644 index 000000000..06c71a3eb --- /dev/null +++ b/www/extras/htmlArea3/examples/spell-checker.html @@ -0,0 +1,132 @@ + + +Example of HTMLArea 3.0 + + + + + + + + + + + + + + + + + +

HTMLArea 3.0

+ +

A replacement for TEXTAREA elements. © InteractiveTools.com, 2003-2004.

+ +

Plugins: + SpellChecker (sponsored by American Bible Society). +

+ +
+ + + +

+ + + + + +submit + + + +

+ + + diff --git a/www/extras/htmlArea3/examples/table-operations.html b/www/extras/htmlArea3/examples/table-operations.html new file mode 100644 index 000000000..e5545ba27 --- /dev/null +++ b/www/extras/htmlArea3/examples/table-operations.html @@ -0,0 +1,116 @@ + + +Example of HTMLArea 3.0 + + + + + + + + + + + + + + + + + +

HTMLArea 3.0

+ +

A replacement for TEXTAREA elements. © InteractiveTools.com, 2003-2004.

+ +

Page that demonstrates the additional features of the +TableOperations plugin (sponsored by Zapatec Inc.).

+ +
+ + + +

+ + + + + +submit + + + +

+ + + diff --git a/www/extras/htmlArea3/examples/test.cgi b/www/extras/htmlArea3/examples/test.cgi new file mode 100755 index 000000000..9610ebcb4 --- /dev/null +++ b/www/extras/htmlArea3/examples/test.cgi @@ -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 < + + +$ta + + +EOF diff --git a/www/extras/htmlArea3/plugins/CSS/css.js b/www/extras/htmlArea3/plugins/CSS/css.js new file mode 100644 index 000000000..365270f8b --- /dev/null +++ b/www/extras/htmlArea3/plugins/CSS/css.js @@ -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("", ""); + } +}; + +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; +}; diff --git a/www/extras/htmlArea3/plugins/CSS/lang/en.js b/www/extras/htmlArea3/plugins/CSS/lang/en.js new file mode 100644 index 000000000..7ffba00b4 --- /dev/null +++ b/www/extras/htmlArea3/plugins/CSS/lang/en.js @@ -0,0 +1,2 @@ +// none yet; this file is a stub. +CSS.I18N = {}; diff --git a/www/extras/htmlArea3/plugins/ContextMenu/context-menu.js b/www/extras/htmlArea3/plugins/ContextMenu/context-menu.js new file mode 100644 index 000000000..63d000ce3 --- /dev/null +++ b/www/extras/htmlArea3/plugins/ContextMenu/context-menu.js @@ -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(""); + 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 = ""; + 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])/, "$1"); + 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 = ""; + 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; +}; diff --git a/www/extras/htmlArea3/plugins/ContextMenu/lang/de.js b/www/extras/htmlArea3/plugins/ContextMenu/lang/de.js new file mode 100644 index 000000000..e9f1fed0d --- /dev/null +++ b/www/extras/htmlArea3/plugins/ContextMenu/lang/de.js @@ -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" +}; diff --git a/www/extras/htmlArea3/plugins/ContextMenu/lang/el.js b/www/extras/htmlArea3/plugins/ContextMenu/lang/el.js new file mode 100644 index 000000000..68bbaf2d4 --- /dev/null +++ b/www/extras/htmlArea3/plugins/ContextMenu/lang/el.js @@ -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" : "Δημιουργία συνδέσμου" +}; diff --git a/www/extras/htmlArea3/plugins/ContextMenu/lang/en.js b/www/extras/htmlArea3/plugins/ContextMenu/lang/en.js new file mode 100644 index 000000000..8d15914d8 --- /dev/null +++ b/www/extras/htmlArea3/plugins/ContextMenu/lang/en.js @@ -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" +}; diff --git a/www/extras/htmlArea3/plugins/ContextMenu/lang/nl.js b/www/extras/htmlArea3/plugins/ContextMenu/lang/nl.js new file mode 100644 index 000000000..a91e1f509 --- /dev/null +++ b/www/extras/htmlArea3/plugins/ContextMenu/lang/nl.js @@ -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" : "Kopiren", + "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" +}; diff --git a/www/extras/htmlArea3/plugins/ContextMenu/menu.css b/www/extras/htmlArea3/plugins/ContextMenu/menu.css new file mode 100644 index 000000000..70626b504 --- /dev/null +++ b/www/extras/htmlArea3/plugins/ContextMenu/menu.css @@ -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; +} diff --git a/www/extras/htmlArea3/plugins/FullPage/full-page.js b/www/extras/htmlArea3/plugins/FullPage/full-page.js new file mode 100644 index 000000000..ad024cee2 --- /dev/null +++ b/www/extras/htmlArea3/plugins/FullPage/full-page.js @@ -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 + +
+
Mihai Bazon
+ + +Last modified on Sat Oct 25 01:06:59 2003 + + + + diff --git a/www/extras/htmlArea3/plugins/SpellChecker/img/spell-check.gif b/www/extras/htmlArea3/plugins/SpellChecker/img/spell-check.gif new file mode 100644 index 000000000..29bd11ae9 Binary files /dev/null and b/www/extras/htmlArea3/plugins/SpellChecker/img/spell-check.gif differ diff --git a/www/extras/htmlArea3/plugins/SpellChecker/lang/cz.js b/www/extras/htmlArea3/plugins/SpellChecker/lang/cz.js new file mode 100644 index 000000000..108c037d1 --- /dev/null +++ b/www/extras/htmlArea3/plugins/SpellChecker/lang/cz.js @@ -0,0 +1,37 @@ +// I18N constants + +// LANG: "cz", ENCODING: UTF-8 | ISO-8859-2 +// Author: Jiri Löw, + +// 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 ;-)" +}; diff --git a/www/extras/htmlArea3/plugins/SpellChecker/lang/da.js b/www/extras/htmlArea3/plugins/SpellChecker/lang/da.js new file mode 100644 index 000000000..690293ec0 --- /dev/null +++ b/www/extras/htmlArea3/plugins/SpellChecker/lang/da.js @@ -0,0 +1,37 @@ +// I18N constants + +// LANG: "en", ENCODING: UTF-8 | ISO-8859-1 +// Author: Steen Sønderup, + +// 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" +}; diff --git a/www/extras/htmlArea3/plugins/SpellChecker/lang/de.js b/www/extras/htmlArea3/plugins/SpellChecker/lang/de.js new file mode 100644 index 000000000..1a8f4b528 --- /dev/null +++ b/www/extras/htmlArea3/plugins/SpellChecker/lang/de.js @@ -0,0 +1,28 @@ +// I18N constants + +// LANG: "en", ENCODING: UTF-8 | ISO-8859-1 +// Author: Broxx, + +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 ;-)" +}; diff --git a/www/extras/htmlArea3/plugins/SpellChecker/lang/en.js b/www/extras/htmlArea3/plugins/SpellChecker/lang/en.js new file mode 100644 index 000000000..529cc6c45 --- /dev/null +++ b/www/extras/htmlArea3/plugins/SpellChecker/lang/en.js @@ -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 ;-)" +}; diff --git a/www/extras/htmlArea3/plugins/SpellChecker/lang/hu.js b/www/extras/htmlArea3/plugins/SpellChecker/lang/hu.js new file mode 100644 index 000000000..64102c558 --- /dev/null +++ b/www/extras/htmlArea3/plugins/SpellChecker/lang/hu.js @@ -0,0 +1,37 @@ +// I18N constants + +// LANG: "hu", ENCODING: UTF-8 +// Author: Miklós Somogyi, + +// 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 ;-)" +}; diff --git a/www/extras/htmlArea3/plugins/SpellChecker/lang/it.js b/www/extras/htmlArea3/plugins/SpellChecker/lang/it.js new file mode 100644 index 000000000..0af5f7705 --- /dev/null +++ b/www/extras/htmlArea3/plugins/SpellChecker/lang/it.js @@ -0,0 +1,28 @@ +// I18N constants + +// LANG: "it", ENCODING: UTF-8 | ISO-8859-1 +// Author: Fabio Rotondo, + +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 ;-)" +}; diff --git a/www/extras/htmlArea3/plugins/SpellChecker/lang/ro.js b/www/extras/htmlArea3/plugins/SpellChecker/lang/ro.js new file mode 100644 index 000000000..d8e96b9be --- /dev/null +++ b/www/extras/htmlArea3/plugins/SpellChecker/lang/ro.js @@ -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 ;-)" +}; diff --git a/www/extras/htmlArea3/plugins/SpellChecker/readme-tech.html b/www/extras/htmlArea3/plugins/SpellChecker/readme-tech.html new file mode 100644 index 000000000..1afdf6d3f --- /dev/null +++ b/www/extras/htmlArea3/plugins/SpellChecker/readme-tech.html @@ -0,0 +1,114 @@ + + + + HTMLArea Spell Checker + + + +

HTMLArea Spell Checker

+ +

The HTMLArea Spell Checker subsystem consists of the following + files:

+ +
    + +
  • spell-checker.js — the spell checker plugin interface for + HTMLArea
  • + +
  • spell-checker-ui.html — the HTML code for the user + interface
  • + +
  • spell-checker-ui.js — functionality of the user + interface
  • + +
  • spell-checker-logic.cgi — Perl CGI script that checks a text + given through POST for spelling errors
  • + +
  • spell-checker-style.css — style for mispelled words
  • + +
  • lang/en.js — main language file (English).
  • + +
+ +

Process overview

+ +

+ 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 + window.opener.SpellChecker.editor 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. +

+ +

+ 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. +

+ +

The server-side script (spell-check-logic.cgi)

+ +

+ Unicode safety — the program is + 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). However, Aspell seems to not support Unicode + yet (thread concerning Aspell and Unicode). + This mean that words containing Unicode + characters that are not in 0..255 are likely to be reported as "mispelled" by Aspell. +

+ +

+ Update: though I've never seen it mentioned + anywhere, it looks that Aspell does, in fact, speak + Unicode. Or else, maybe Text::Aspell does + transparent conversion; anyway, this new version of our + SpellChecker plugin is, as tests show so far, fully + Unicode-safe... well, probably the only freeware + Web-based spell-checker which happens to have Unicode support. +

+ +

+ The Perl Unicode manual (man perluniintro) states: +

+ +
+ + 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. + +
+ +

In other words, do not assume that this script is + Unicode-safe on Perl interpreters older than 5.8.0.

+ +

The following Perl modules are required:

+ + + +

Of these, only Text::Aspell might need to be installed manually. The + others are likely to be available by default in most Perl distributions.

+ +
+
Mihai Bazon
+ + Last modified: Fri Jan 30 19:14:11 EET 2004 + + + diff --git a/www/extras/htmlArea3/plugins/SpellChecker/spell-check-logic.cgi b/www/extras/htmlArea3/plugins/SpellChecker/spell-check-logic.cgi new file mode 100755 index 000000000..0c749c015 --- /dev/null +++ b/www/extras/htmlArea3/plugins/SpellChecker/spell-check-logic.cgi @@ -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^ + + + + + + +^; + +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^
$dictionaries
^; +} + +print ''; + +# 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 = ''.$text.''; + + 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{(.*)}{$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; +}; diff --git a/www/extras/htmlArea3/plugins/SpellChecker/spell-check-style.css b/www/extras/htmlArea3/plugins/SpellChecker/spell-check-style.css new file mode 100644 index 000000000..1408ba062 --- /dev/null +++ b/www/extras/htmlArea3/plugins/SpellChecker/spell-check-style.css @@ -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; } diff --git a/www/extras/htmlArea3/plugins/SpellChecker/spell-check-ui.html b/www/extras/htmlArea3/plugins/SpellChecker/spell-check-ui.html new file mode 100644 index 000000000..d4fed9295 --- /dev/null +++ b/www/extras/htmlArea3/plugins/SpellChecker/spell-check-ui.html @@ -0,0 +1,122 @@ + + + + + Spell Checker + + + + + + + + + +
+ + + + + + + + + + + + + +
+
Dictionary + + +
+ Please wait. Calling spell checker. +
+
+ +
+
Original word
+
pliz weit ;-)
+
+ +
+
Replace with
+
+
+
+
+
+
+
Suggestions
+
+ +
+
+ +
+
+ + +
+
+
+ + + + diff --git a/www/extras/htmlArea3/plugins/SpellChecker/spell-check-ui.js b/www/extras/htmlArea3/plugins/SpellChecker/spell-check-ui.js new file mode 100644 index 000000000..52a79d05e --- /dev/null +++ b/www/extras/htmlArea3/plugins/SpellChecker/spell-check-ui.js @@ -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 "' + currentElement.__msh_origWord + '"'; + 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 (info)"; + 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); + } + } +}; diff --git a/www/extras/htmlArea3/plugins/SpellChecker/spell-checker.js b/www/extras/htmlArea3/plugins/SpellChecker/spell-checker.js new file mode 100644 index 000000000..7e274f7b3 --- /dev/null +++ b/www/extras/htmlArea3/plugins/SpellChecker/spell-checker.js @@ -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; diff --git a/www/extras/htmlArea3/plugins/TableOperations/img/cell-delete.gif b/www/extras/htmlArea3/plugins/TableOperations/img/cell-delete.gif new file mode 100644 index 000000000..df9594f44 Binary files /dev/null and b/www/extras/htmlArea3/plugins/TableOperations/img/cell-delete.gif differ diff --git a/www/extras/htmlArea3/plugins/TableOperations/img/cell-insert-after.gif b/www/extras/htmlArea3/plugins/TableOperations/img/cell-insert-after.gif new file mode 100644 index 000000000..6ff2154ba Binary files /dev/null and b/www/extras/htmlArea3/plugins/TableOperations/img/cell-insert-after.gif differ diff --git a/www/extras/htmlArea3/plugins/TableOperations/img/cell-insert-before.gif b/www/extras/htmlArea3/plugins/TableOperations/img/cell-insert-before.gif new file mode 100644 index 000000000..632b315c4 Binary files /dev/null and b/www/extras/htmlArea3/plugins/TableOperations/img/cell-insert-before.gif differ diff --git a/www/extras/htmlArea3/plugins/TableOperations/img/cell-merge.gif b/www/extras/htmlArea3/plugins/TableOperations/img/cell-merge.gif new file mode 100644 index 000000000..35e4af107 Binary files /dev/null and b/www/extras/htmlArea3/plugins/TableOperations/img/cell-merge.gif differ diff --git a/www/extras/htmlArea3/plugins/TableOperations/img/cell-prop.gif b/www/extras/htmlArea3/plugins/TableOperations/img/cell-prop.gif new file mode 100644 index 000000000..2f71bae6f Binary files /dev/null and b/www/extras/htmlArea3/plugins/TableOperations/img/cell-prop.gif differ diff --git a/www/extras/htmlArea3/plugins/TableOperations/img/cell-split.gif b/www/extras/htmlArea3/plugins/TableOperations/img/cell-split.gif new file mode 100644 index 000000000..8bd011e19 Binary files /dev/null and b/www/extras/htmlArea3/plugins/TableOperations/img/cell-split.gif differ diff --git a/www/extras/htmlArea3/plugins/TableOperations/img/col-delete.gif b/www/extras/htmlArea3/plugins/TableOperations/img/col-delete.gif new file mode 100644 index 000000000..565afdc52 Binary files /dev/null and b/www/extras/htmlArea3/plugins/TableOperations/img/col-delete.gif differ diff --git a/www/extras/htmlArea3/plugins/TableOperations/img/col-insert-after.gif b/www/extras/htmlArea3/plugins/TableOperations/img/col-insert-after.gif new file mode 100644 index 000000000..648e54f01 Binary files /dev/null and b/www/extras/htmlArea3/plugins/TableOperations/img/col-insert-after.gif differ diff --git a/www/extras/htmlArea3/plugins/TableOperations/img/col-insert-before.gif b/www/extras/htmlArea3/plugins/TableOperations/img/col-insert-before.gif new file mode 100644 index 000000000..9be8a6e4e Binary files /dev/null and b/www/extras/htmlArea3/plugins/TableOperations/img/col-insert-before.gif differ diff --git a/www/extras/htmlArea3/plugins/TableOperations/img/col-split.gif b/www/extras/htmlArea3/plugins/TableOperations/img/col-split.gif new file mode 100644 index 000000000..83f21d14b Binary files /dev/null and b/www/extras/htmlArea3/plugins/TableOperations/img/col-split.gif differ diff --git a/www/extras/htmlArea3/plugins/TableOperations/img/row-delete.gif b/www/extras/htmlArea3/plugins/TableOperations/img/row-delete.gif new file mode 100644 index 000000000..e649d9f5c Binary files /dev/null and b/www/extras/htmlArea3/plugins/TableOperations/img/row-delete.gif differ diff --git a/www/extras/htmlArea3/plugins/TableOperations/img/row-insert-above.gif b/www/extras/htmlArea3/plugins/TableOperations/img/row-insert-above.gif new file mode 100644 index 000000000..e39c948b0 Binary files /dev/null and b/www/extras/htmlArea3/plugins/TableOperations/img/row-insert-above.gif differ diff --git a/www/extras/htmlArea3/plugins/TableOperations/img/row-insert-under.gif b/www/extras/htmlArea3/plugins/TableOperations/img/row-insert-under.gif new file mode 100644 index 000000000..200535855 Binary files /dev/null and b/www/extras/htmlArea3/plugins/TableOperations/img/row-insert-under.gif differ diff --git a/www/extras/htmlArea3/plugins/TableOperations/img/row-prop.gif b/www/extras/htmlArea3/plugins/TableOperations/img/row-prop.gif new file mode 100644 index 000000000..76397253f Binary files /dev/null and b/www/extras/htmlArea3/plugins/TableOperations/img/row-prop.gif differ diff --git a/www/extras/htmlArea3/plugins/TableOperations/img/row-split.gif b/www/extras/htmlArea3/plugins/TableOperations/img/row-split.gif new file mode 100644 index 000000000..0df4697de Binary files /dev/null and b/www/extras/htmlArea3/plugins/TableOperations/img/row-split.gif differ diff --git a/www/extras/htmlArea3/plugins/TableOperations/img/table-prop.gif b/www/extras/htmlArea3/plugins/TableOperations/img/table-prop.gif new file mode 100644 index 000000000..e15a4a444 Binary files /dev/null and b/www/extras/htmlArea3/plugins/TableOperations/img/table-prop.gif differ diff --git a/www/extras/htmlArea3/plugins/TableOperations/lang/cz.js b/www/extras/htmlArea3/plugins/TableOperations/lang/cz.js new file mode 100644 index 000000000..d407dae00 --- /dev/null +++ b/www/extras/htmlArea3/plugins/TableOperations/lang/cz.js @@ -0,0 +1,90 @@ +// I18N constants + +// LANG: "cz", ENCODING: UTF-8 | ISO-8859-2 +// Author: Jiri Löw, + +// 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ů" +}; diff --git a/www/extras/htmlArea3/plugins/TableOperations/lang/da.js b/www/extras/htmlArea3/plugins/TableOperations/lang/da.js new file mode 100644 index 000000000..08a6f1b11 --- /dev/null +++ b/www/extras/htmlArea3/plugins/TableOperations/lang/da.js @@ -0,0 +1,90 @@ +// I18N constants + +// LANG: "da", ENCODING: UTF-8 | ISO-8859-1 +// Author: Steen Sønderup, + +// 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" +}; diff --git a/www/extras/htmlArea3/plugins/TableOperations/lang/de.js b/www/extras/htmlArea3/plugins/TableOperations/lang/de.js new file mode 100644 index 000000000..1128cff6f --- /dev/null +++ b/www/extras/htmlArea3/plugins/TableOperations/lang/de.js @@ -0,0 +1,81 @@ +// I18N constants + +// LANG: "de", ENCODING: UTF-8 | ISO-8859-1 +// Author: broxx, + +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" +}; diff --git a/www/extras/htmlArea3/plugins/TableOperations/lang/el.js b/www/extras/htmlArea3/plugins/TableOperations/lang/el.js new file mode 100644 index 000000000..06bae5cf7 --- /dev/null +++ b/www/extras/htmlArea3/plugins/TableOperations/lang/el.js @@ -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" +}; diff --git a/www/extras/htmlArea3/plugins/TableOperations/lang/en.js b/www/extras/htmlArea3/plugins/TableOperations/lang/en.js new file mode 100644 index 000000000..7168e0978 --- /dev/null +++ b/www/extras/htmlArea3/plugins/TableOperations/lang/en.js @@ -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" +}; diff --git a/www/extras/htmlArea3/plugins/TableOperations/lang/fi.js b/www/extras/htmlArea3/plugins/TableOperations/lang/fi.js new file mode 100644 index 000000000..891f16885 --- /dev/null +++ b/www/extras/htmlArea3/plugins/TableOperations/lang/fi.js @@ -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": "Vri", + "Description": "Kuvaus", + "FG Color": "FG Vri", + "Frames": "Kehykset", + "Image URL": "Kuvan osoite", + "Layout": "Sommittelu", + "Left": "Vasen", + "Margin": "Marginaali", + "Middle": "Keskelle", + "No rules": "Ei viivoja", + "No sides": "Ei sivuja", + "Padding": "Palstantyte", + "Right": "Oikea", + "Row Properties": "Rivin asetukset", + "Rules will appear between all rows and columns": "Viivat jokaisen rivin ja sarakkeen vlill", + "Rules will appear between columns only": "Viivat ainoastaan sarakkeiden vlill", + "Rules will appear between rows only": "Viivat ainoastaan rivien vlill", + "Rules": "Viivat", + "Spacing": "Palstatila", + "Summary": "Yhteenveto", + "TO-cell-delete": "Poista solu", + "TO-cell-insert-after": "Lis solu pern", + "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 pern", + "TO-col-insert-before": "Lis sarake ennen", + "TO-col-split": "Jaa sarake", + "TO-row-delete": "Poista rivi", + "TO-row-insert-above": "Lis rivi ylpuolelle", + "TO-row-insert-under": "Lis rivi alapuolelle", + "TO-row-prop": "Rivin asetukset", + "TO-row-split": "Jaa rivi", + "TO-table-prop": "Taulukon asetukset", + "Top": "Yls", + "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 ylpuoli", + "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" +}; diff --git a/www/extras/htmlArea3/plugins/TableOperations/lang/hu.js b/www/extras/htmlArea3/plugins/TableOperations/lang/hu.js new file mode 100644 index 000000000..828aec152 --- /dev/null +++ b/www/extras/htmlArea3/plugins/TableOperations/lang/hu.js @@ -0,0 +1,63 @@ +// I18N constants + +// LANG: "hu", ENCODING: UTF-8 +// Author: Miklós Somogyi, + +// 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" + } +}; diff --git a/www/extras/htmlArea3/plugins/TableOperations/lang/it.js b/www/extras/htmlArea3/plugins/TableOperations/lang/it.js new file mode 100644 index 000000000..ccbdc94db --- /dev/null +++ b/www/extras/htmlArea3/plugins/TableOperations/lang/it.js @@ -0,0 +1,81 @@ +// I18N constants + +// LANG: "it", ENCODING: UTF-8 | ISO-8859-1 +// Author: Fabio Rotondo + +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" +}; diff --git a/www/extras/htmlArea3/plugins/TableOperations/lang/nl.js b/www/extras/htmlArea3/plugins/TableOperations/lang/nl.js new file mode 100644 index 000000000..ce9eb305c --- /dev/null +++ b/www/extras/htmlArea3/plugins/TableOperations/lang/nl.js @@ -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" +}; diff --git a/www/extras/htmlArea3/plugins/TableOperations/lang/no.js b/www/extras/htmlArea3/plugins/TableOperations/lang/no.js new file mode 100644 index 000000000..a29e9034e --- /dev/null +++ b/www/extras/htmlArea3/plugins/TableOperations/lang/no.js @@ -0,0 +1,91 @@ +// I18N constants + +// LANG: "en", ENCODING: UTF-8 | ISO-8859-1 +// Author: Mihai Bazon, +// 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": "Hyde", + "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": "Hyre", + "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 fr", + "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": "Hyre- og venstresiden kun", + "The right-hand side only": "Hyresiden 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" +}; diff --git a/www/extras/htmlArea3/plugins/TableOperations/lang/ro.js b/www/extras/htmlArea3/plugins/TableOperations/lang/ro.js new file mode 100644 index 000000000..a008f21a2 --- /dev/null +++ b/www/extras/htmlArea3/plugins/TableOperations/lang/ro.js @@ -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" +}; diff --git a/www/extras/htmlArea3/plugins/TableOperations/table-operations.js b/www/extras/htmlArea3/plugins/TableOperations/table-operations.js new file mode 100644 index 000000000..a376f3a48 --- /dev/null +++ b/www/extras/htmlArea3/plugins/TableOperations/table-operations.js @@ -0,0 +1,1160 @@ +// Table Operations Plugin for HTMLArea-3.0 +// Implementation by Mihai Bazon. Sponsored by http://www.bloki.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