diff --git a/phpgwapi/js/htmlarea/dialog.js b/phpgwapi/js/htmlarea/dialog.js
index b66ec8a2fd..a8b79af9c2 100644
--- a/phpgwapi/js/htmlarea/dialog.js
+++ b/phpgwapi/js/htmlarea/dialog.js
@@ -22,12 +22,13 @@ function Dialog(url, action, init) {
};
Dialog._parentEvent = function(ev) {
+ setTimeout( function() { if (Dialog._modal && !Dialog._modal.closed) { Dialog._modal.focus() } }, 50);
if (Dialog._modal && !Dialog._modal.closed) {
- Dialog._modal.focus();
HTMLArea._stopEvent(ev);
}
};
+
// should be a function, the return handler of the currently opened dialog.
Dialog._return = null;
@@ -40,7 +41,7 @@ Dialog._arguments = null;
Dialog._geckoOpenModal = function(url, action, init) {
var dlg = window.open(url, "hadialog",
"toolbar=no,menubar=no,personalbar=no,width=10,height=10," +
- "scrollbars=no,resizable=yes");
+ "scrollbars=no,resizable=yes,modal=yes,dependable=yes");
Dialog._modal = dlg;
Dialog._arguments = init;
diff --git a/phpgwapi/js/htmlarea/htmlarea.js b/phpgwapi/js/htmlarea/htmlarea.js
index fc8c6307bc..4e016df64d 100644
--- a/phpgwapi/js/htmlarea/htmlarea.js
+++ b/phpgwapi/js/htmlarea/htmlarea.js
@@ -15,7 +15,7 @@ if (typeof _editor_url == "string") {
// Leave exactly one backslash at the end of _editor_url
_editor_url = _editor_url.replace(/\x2f*$/, '/');
} else {
- alert("WARNING: _editor_url is not set! You should set this variable to the editor files path; it should preferably be an absolute path, like in '/htmlarea', but it can be relative if you prefer. Further we will try to load the editor files correctly but we'll probably fail.");
+ alert("WARNING: _editor_url is not set! You should set this variable to the editor files path; it should preferably be an absolute path, like in '/htmlarea/', but it can be relative if you prefer. Further we will try to load the editor files correctly but we'll probably fail.");
_editor_url = '';
}
@@ -127,7 +127,7 @@ HTMLArea.Config = function () {
[ "justifyleft", "justifycenter", "justifyright", "justifyfull", "separator",
"lefttoright", "righttoleft", "separator",
- "insertorderedlist", "insertunorderedlist", "outdent", "indent", "separator",
+ "orderedlist", "unorderedlist", "outdent", "indent", "separator",
"forecolor", "hilitecolor", "separator",
"inserthorizontalrule", "createlink", "insertimage", "inserttable", "htmlmode", "separator",
"popupeditor", "separator", "showhelp", "about" ]
@@ -197,8 +197,8 @@ HTMLArea.Config = function () {
justifycenter: [ "Justify Center", "ed_align_center.gif", false, function(e) {e.execCommand("justifycenter");} ],
justifyright: [ "Justify Right", "ed_align_right.gif", false, function(e) {e.execCommand("justifyright");} ],
justifyfull: [ "Justify Full", "ed_align_justify.gif", false, function(e) {e.execCommand("justifyfull");} ],
- insertorderedlist: [ "Ordered List", "ed_list_num.gif", false, function(e) {e.execCommand("insertorderedlist");} ],
- insertunorderedlist: [ "Bulleted List", "ed_list_bullet.gif", false, function(e) {e.execCommand("insertunorderedlist");} ],
+ orderedlist: [ "Ordered List", "ed_list_num.gif", false, function(e) {e.execCommand("insertorderedlist");} ],
+ unorderedlist: [ "Bulleted List", "ed_list_bullet.gif", false, function(e) {e.execCommand("insertunorderedlist");} ],
outdent: [ "Decrease Indent", "ed_indent_less.gif", false, function(e) {e.execCommand("outdent");} ],
indent: [ "Increase Indent", "ed_indent_more.gif", false, function(e) {e.execCommand("indent");} ],
forecolor: [ "Font Color", "ed_color_fg.gif", false, function(e) {e.execCommand("forecolor");} ],
@@ -415,6 +415,7 @@ HTMLArea.prototype._createToolbar = function () {
var cmd = null;
var customSelects = editor.config.customSelects;
var context = null;
+ var tooltip = "";
switch (txt) {
case "fontsize":
case "fontname":
@@ -436,6 +437,9 @@ HTMLArea.prototype._createToolbar = function () {
if (typeof dropdown != "undefined") {
options = dropdown.options;
context = dropdown.context;
+ if (typeof dropdown.tooltip != "undefined") {
+ tooltip = dropdown.tooltip;
+ }
} else {
alert("ERROR [createSelect]:\nCan't find the requested dropdown definition");
}
@@ -443,6 +447,7 @@ HTMLArea.prototype._createToolbar = function () {
}
if (options) {
el = document.createElement("select");
+ el.title = tooltip;
var obj = {
name : txt, // field name
element : el, // the UI element (SELECT)
@@ -662,15 +667,22 @@ HTMLArea.prototype.generate = function () {
// add a handler for the "back/forward" case -- on body.unload we save
// the HTML content into the original textarea.
- window.onunload = function() {
- editor._textArea.value = editor.getHTML();
- };
+ try {
+ window.onunload = function() {
+ editor._textArea.value = editor.getHTML();
+ };
+ } catch(e) {};
// creates & appends the toolbar
this._createToolbar();
// create the IFRAME
var iframe = document.createElement("iframe");
+
+ // workaround for the HTTPS problem
+ // iframe.setAttribute("src", "javascript:void(0);");
+ iframe.src = _editor_url + "popups/blank.html";
+
htmlarea.appendChild(iframe);
this._iframe = iframe;
@@ -741,8 +753,8 @@ HTMLArea.prototype.generate = function () {
html += "
\n";
if (editor.config.baseURL)
html += '';
- html += "\n";
+ html += "\n";
html += "\n";
html += "\n";
html += editor._textArea.value;
@@ -781,6 +793,10 @@ HTMLArea.prototype.generate = function () {
var plugin = editor.plugins[i].instance;
if (typeof plugin.onGenerate == "function")
plugin.onGenerate();
+ if (typeof plugin.onGenerateOnce == "function") {
+ plugin.onGenerateOnce();
+ plugin.onGenerateOnce = null;
+ }
}
setTimeout(function() {
@@ -839,6 +855,11 @@ HTMLArea.prototype.setMode = function(mode) {
}
this._editMode = mode;
this.focusEditor();
+
+ for (var i in this.plugins) {
+ var plugin = this.plugins[i].instance;
+ if (typeof plugin.onMode == "function") plugin.onMode(mode);
+ }
};
HTMLArea.prototype.setFullHTML = function(html) {
@@ -876,6 +897,10 @@ HTMLArea.prototype.setFullHTML = function(html) {
HTMLArea.prototype.registerPlugin2 = function(plugin, args) {
if (typeof plugin == "string")
plugin = eval(plugin);
+ if (typeof plugin == "undefined") {
+ /* FIXME: This should never happen. But why does it do? */
+ return false;
+ }
var obj = new plugin(this, args);
if (obj) {
var clone = {};
@@ -1003,8 +1028,11 @@ HTMLArea.prototype.forceRedraw = function() {
// focuses the iframe window. returns a reference to the editor document.
HTMLArea.prototype.focusEditor = function() {
switch (this._editMode) {
- case "wysiwyg" : this._iframe.contentWindow.focus(); break;
- case "textmode": this._textArea.focus(); break;
+ // notice the try { ... } catch block to avoid some rare exceptions in FireFox
+ // (perhaps also in other Gecko browsers). Manual focus by user is required in
+ // case of an error. Somebody has an idea?
+ case "wysiwyg" : try { this._iframe.contentWindow.focus() } catch (e) {} break;
+ case "textmode": try { this._textArea.focus() } catch (e) {} break;
default : alert("ERROR: mode " + this._editMode + " is not defined");
}
return this._doc;
@@ -1098,6 +1126,7 @@ HTMLArea.prototype.updateToolbar = function(noStatus) {
}
}
}
+
for (var i in this._toolbarObjects) {
var btn = this._toolbarObjects[i];
var cmd = i;
@@ -1197,6 +1226,7 @@ HTMLArea.prototype.updateToolbar = function(noStatus) {
btn.state("active", (el.style.direction == ((cmd == "righttoleft") ? "rtl" : "ltr")));
break;
default:
+ cmd = cmd.replace(/(un)?orderedlist/i, "insert$1orderedlist");
try {
btn.state("active", (!text && doc.queryCommandState(cmd)));
} catch (e) {}
@@ -1210,6 +1240,7 @@ HTMLArea.prototype.updateToolbar = function(noStatus) {
editor._timerUndo = null;
}, this.config.undoTimeout);
}
+
// check if any plugins have registered refresh handlers
for (var i in this.plugins) {
var plugin = this.plugins[i].instance;
@@ -1404,18 +1435,33 @@ HTMLArea.prototype._createLink = function(link) {
if (!param)
return false;
var a = link;
- if (!a) {
+ if (!a) try {
editor._doc.execCommand("createlink", false, param.f_href);
a = editor.getParentElement();
var sel = editor._getSelection();
var range = editor._createRange(sel);
if (!HTMLArea.is_ie) {
a = range.startContainer;
- if (!/^a$/i.test(a.tagName))
+ if (!/^a$/i.test(a.tagName)) {
a = a.nextSibling;
+ if (a == null)
+ a = range.startContainer.parentNode;
+ }
}
- } else a.href = param.f_href.trim();
- if (!/^a$/i.test(a.tagName))
+ } catch(e) {}
+ else {
+ var href = param.f_href.trim();
+ editor.selectNodeContents(a);
+ if (href == "") {
+ editor._doc.execCommand("unlink", false, null);
+ editor.updateToolbar();
+ return false;
+ }
+ else {
+ a.href = href;
+ }
+ }
+ if (!(a && /^a$/i.test(a.tagName)))
return false;
a.target = param.f_target.trim();
a.title = param.f_title.trim();
@@ -1463,6 +1509,7 @@ HTMLArea.prototype._insertImage = function(image) {
} else {
img.src = param.f_url;
}
+
for (field in param) {
var value = param[field];
switch (field) {
@@ -1489,6 +1536,7 @@ HTMLArea.prototype._insertTable = function() {
// create the table element
var table = doc.createElement("table");
// assign the given arguments
+
for (var field in param) {
var value = param[field];
if (!value) {
@@ -1498,8 +1546,8 @@ HTMLArea.prototype._insertTable = function() {
case "f_width" : table.style.width = value + param["f_unit"]; break;
case "f_align" : table.align = value; break;
case "f_border" : table.border = parseInt(value); break;
- case "f_spacing" : table.cellspacing = parseInt(value); break;
- case "f_padding" : table.cellpadding = parseInt(value); break;
+ case "f_spacing" : table.cellSpacing = parseInt(value); break;
+ case "f_padding" : table.cellPadding = parseInt(value); break;
}
}
var tbody = doc.createElement("tbody");
@@ -1572,6 +1620,8 @@ HTMLArea.prototype.execCommand = function(cmdID, UI, param) {
this._createLink();
break;
case "popupeditor":
+ // this object will be passed to the newly opened window
+ HTMLArea._object = this;
if (HTMLArea.is_ie) {
//if (confirm(HTMLArea.I18N.msg["IE-sucks-full-screen"]))
{
@@ -1584,8 +1634,6 @@ HTMLArea.prototype.execCommand = function(cmdID, UI, param) {
"toolbar=no,menubar=no,personalbar=no,width=640,height=480," +
"scrollbars=no,resizable=yes");
}
- // pass this object to the newly opened window
- HTMLArea._object = this;
break;
case "undo":
case "redo":
@@ -1610,9 +1658,14 @@ HTMLArea.prototype.execCommand = function(cmdID, UI, param) {
this._doc.execCommand(cmdID, UI, param);
} catch (e) {
if (HTMLArea.is_gecko) {
- if (confirm("Unprivileged scripts cannot access Cut/Copy/Paste programatically " +
- "for security reasons. Click OK to see a technical note at mozilla.org " +
- "which shows you how to allow a script to access the clipboard."))
+ if (typeof HTMLArea.I18N.msg["Moz-Clipboard"] == "undefined") {
+ HTMLArea.I18N.msg["Moz-Clipboard"] =
+ "Unprivileged scripts cannot access Cut/Copy/Paste programatically " +
+ "for security reasons. Click OK to see a technical note at mozilla.org " +
+ "which shows you how to allow a script to access the clipboard.\n\n" +
+ "[FIXME: please translate this message in your language definition file.]";
+ }
+ if (confirm(HTMLArea.I18N.msg["Moz-Clipboard"]))
window.open("http://mozilla.org/editor/midasdemo/securityprefs.html");
}
}
@@ -1641,7 +1694,14 @@ HTMLArea.prototype.execCommand = function(cmdID, UI, param) {
HTMLArea.prototype._editorEvent = function(ev) {
var editor = this;
var keyEvent = (HTMLArea.is_ie && ev.type == "keydown") || (ev.type == "keypress");
- if (keyEvent && ev.ctrlKey) {
+
+ if (keyEvent) {
+ for (var i in editor.plugins) {
+ var plugin = editor.plugins[i].instance;
+ if (typeof plugin.onKeyPress == "function") plugin.onKeyPress(ev);
+ }
+ }
+ if (keyEvent && ev.ctrlKey && !ev.altKey) {
var sel = null;
var range = null;
var key = String.fromCharCode(HTMLArea.is_ie ? ev.keyCode : ev.charCode).toLowerCase();
@@ -1982,7 +2042,11 @@ HTMLArea.getHTML = function(root, outputRoot, editor) {
continue;
}
var name = a.nodeName.toLowerCase();
- if (/_moz|contenteditable/.test(name)) {
+ if (/_moz_editor_bogus_node/.test(name)) {
+ html = "";
+ break;
+ }
+ if (/_moz|contenteditable|_msh/.test(name)) {
// avoid certain attributes
continue;
}
@@ -2020,7 +2084,9 @@ HTMLArea.getHTML = function(root, outputRoot, editor) {
}
html += " " + name + '="' + value + '"';
}
- html += closed ? " />" : ">";
+ if (html != "") {
+ html += closed ? " />" : ">";
+ }
}
for (i = root.firstChild; i; i = i.nextSibling) {
html += HTMLArea.getHTML(i, true, editor);
@@ -2030,7 +2096,16 @@ HTMLArea.getHTML = function(root, outputRoot, editor) {
}
break;
case 3: // Node.TEXT_NODE
- html = HTMLArea.htmlEncode(root.data);
+ // If a text node is alone in an element and all spaces, replace it with an non breaking one
+ // This partially undoes the damage done by moz, which translates ' 's into spaces in the data element
+ if ( !root.previousSibling && !root.nextSibling && root.data.match(/^\s*$/i) ) html = ' ';
+ else html = /^script|style$/i.test(root.parentNode.tagName) ? root.data : HTMLArea.htmlEncode(root.data);
+ break;
+ case 4: // Node.CDATA_SECTION_NODE
+ // FIXME: it seems we never get here, but I believe we should..
+ // maybe a browser problem?--CDATA sections are converted to plain text nodes and normalized
+ // CDATA sections should go "as is" without further encoding
+ html = "";
break;
case 8: // Node.COMMENT_NODE
html = "";
diff --git a/phpgwapi/js/htmlarea/images/ed_about.gif b/phpgwapi/js/htmlarea/images/ed_about.gif
index d476271df6..f0a338b5a6 100644
Binary files a/phpgwapi/js/htmlarea/images/ed_about.gif and b/phpgwapi/js/htmlarea/images/ed_about.gif differ
diff --git a/phpgwapi/js/htmlarea/images/ed_align_center.gif b/phpgwapi/js/htmlarea/images/ed_align_center.gif
index 09669101af..9505db22f2 100644
Binary files a/phpgwapi/js/htmlarea/images/ed_align_center.gif and b/phpgwapi/js/htmlarea/images/ed_align_center.gif differ
diff --git a/phpgwapi/js/htmlarea/images/ed_align_justify.gif b/phpgwapi/js/htmlarea/images/ed_align_justify.gif
index 94a1ea7bd1..29cf73185b 100644
Binary files a/phpgwapi/js/htmlarea/images/ed_align_justify.gif and b/phpgwapi/js/htmlarea/images/ed_align_justify.gif differ
diff --git a/phpgwapi/js/htmlarea/images/ed_align_left.gif b/phpgwapi/js/htmlarea/images/ed_align_left.gif
index 595eef60c4..d0356d4c17 100644
Binary files a/phpgwapi/js/htmlarea/images/ed_align_left.gif and b/phpgwapi/js/htmlarea/images/ed_align_left.gif differ
diff --git a/phpgwapi/js/htmlarea/images/ed_align_right.gif b/phpgwapi/js/htmlarea/images/ed_align_right.gif
index 514a5e45c2..b9f7a961f0 100644
Binary files a/phpgwapi/js/htmlarea/images/ed_align_right.gif and b/phpgwapi/js/htmlarea/images/ed_align_right.gif differ
diff --git a/phpgwapi/js/htmlarea/images/ed_blank.gif b/phpgwapi/js/htmlarea/images/ed_blank.gif
index d7ae406713..1ea396b81d 100644
Binary files a/phpgwapi/js/htmlarea/images/ed_blank.gif and b/phpgwapi/js/htmlarea/images/ed_blank.gif differ
diff --git a/phpgwapi/js/htmlarea/images/ed_charmap.gif b/phpgwapi/js/htmlarea/images/ed_charmap.gif
index b0dc889d7e..9fac54d0a4 100644
Binary files a/phpgwapi/js/htmlarea/images/ed_charmap.gif and b/phpgwapi/js/htmlarea/images/ed_charmap.gif differ
diff --git a/phpgwapi/js/htmlarea/images/ed_color_bg.gif b/phpgwapi/js/htmlarea/images/ed_color_bg.gif
index f6ff05d0d3..8b464c92b6 100644
Binary files a/phpgwapi/js/htmlarea/images/ed_color_bg.gif and b/phpgwapi/js/htmlarea/images/ed_color_bg.gif differ
diff --git a/phpgwapi/js/htmlarea/images/ed_color_fg.gif b/phpgwapi/js/htmlarea/images/ed_color_fg.gif
index 90e5123c48..44af9c4cbe 100644
Binary files a/phpgwapi/js/htmlarea/images/ed_color_fg.gif and b/phpgwapi/js/htmlarea/images/ed_color_fg.gif differ
diff --git a/phpgwapi/js/htmlarea/images/ed_copy.gif b/phpgwapi/js/htmlarea/images/ed_copy.gif
index f598fa21a9..975740a76a 100644
Binary files a/phpgwapi/js/htmlarea/images/ed_copy.gif and b/phpgwapi/js/htmlarea/images/ed_copy.gif differ
diff --git a/phpgwapi/js/htmlarea/images/ed_custom.gif b/phpgwapi/js/htmlarea/images/ed_custom.gif
index 3c406a5e62..9529a52ead 100644
Binary files a/phpgwapi/js/htmlarea/images/ed_custom.gif and b/phpgwapi/js/htmlarea/images/ed_custom.gif differ
diff --git a/phpgwapi/js/htmlarea/images/ed_cut.gif b/phpgwapi/js/htmlarea/images/ed_cut.gif
index 92972fc26e..206603890d 100644
Binary files a/phpgwapi/js/htmlarea/images/ed_cut.gif and b/phpgwapi/js/htmlarea/images/ed_cut.gif differ
diff --git a/phpgwapi/js/htmlarea/images/ed_delete.gif b/phpgwapi/js/htmlarea/images/ed_delete.gif
index 121834938b..3c3df5b757 100644
Binary files a/phpgwapi/js/htmlarea/images/ed_delete.gif and b/phpgwapi/js/htmlarea/images/ed_delete.gif differ
diff --git a/phpgwapi/js/htmlarea/images/ed_format_bold.gif b/phpgwapi/js/htmlarea/images/ed_format_bold.gif
index 3d01d0bc8a..c6291f053f 100644
Binary files a/phpgwapi/js/htmlarea/images/ed_format_bold.gif and b/phpgwapi/js/htmlarea/images/ed_format_bold.gif differ
diff --git a/phpgwapi/js/htmlarea/images/ed_format_italic.gif b/phpgwapi/js/htmlarea/images/ed_format_italic.gif
index e8e1cb0b9a..7bb67aa898 100644
Binary files a/phpgwapi/js/htmlarea/images/ed_format_italic.gif and b/phpgwapi/js/htmlarea/images/ed_format_italic.gif differ
diff --git a/phpgwapi/js/htmlarea/images/ed_format_strike.gif b/phpgwapi/js/htmlarea/images/ed_format_strike.gif
index 48853615a4..0e00304dc4 100644
Binary files a/phpgwapi/js/htmlarea/images/ed_format_strike.gif and b/phpgwapi/js/htmlarea/images/ed_format_strike.gif differ
diff --git a/phpgwapi/js/htmlarea/images/ed_format_sub.gif b/phpgwapi/js/htmlarea/images/ed_format_sub.gif
index 489f7a9ba2..effcf575e9 100644
Binary files a/phpgwapi/js/htmlarea/images/ed_format_sub.gif and b/phpgwapi/js/htmlarea/images/ed_format_sub.gif differ
diff --git a/phpgwapi/js/htmlarea/images/ed_format_sup.gif b/phpgwapi/js/htmlarea/images/ed_format_sup.gif
index 8e66b99d08..1b6f4019c4 100644
Binary files a/phpgwapi/js/htmlarea/images/ed_format_sup.gif and b/phpgwapi/js/htmlarea/images/ed_format_sup.gif differ
diff --git a/phpgwapi/js/htmlarea/images/ed_format_underline.gif b/phpgwapi/js/htmlarea/images/ed_format_underline.gif
index b05384eaf8..ef8c19e4b6 100644
Binary files a/phpgwapi/js/htmlarea/images/ed_format_underline.gif and b/phpgwapi/js/htmlarea/images/ed_format_underline.gif differ
diff --git a/phpgwapi/js/htmlarea/images/ed_help.gif b/phpgwapi/js/htmlarea/images/ed_help.gif
index 4d66154aa8..06c225653d 100644
Binary files a/phpgwapi/js/htmlarea/images/ed_help.gif and b/phpgwapi/js/htmlarea/images/ed_help.gif differ
diff --git a/phpgwapi/js/htmlarea/images/ed_hr.gif b/phpgwapi/js/htmlarea/images/ed_hr.gif
index 92fc80e87d..9f6e5e8bf5 100644
Binary files a/phpgwapi/js/htmlarea/images/ed_hr.gif and b/phpgwapi/js/htmlarea/images/ed_hr.gif differ
diff --git a/phpgwapi/js/htmlarea/images/ed_html.gif b/phpgwapi/js/htmlarea/images/ed_html.gif
index 380de29dfa..807f084fd7 100644
Binary files a/phpgwapi/js/htmlarea/images/ed_html.gif and b/phpgwapi/js/htmlarea/images/ed_html.gif differ
diff --git a/phpgwapi/js/htmlarea/images/ed_image.gif b/phpgwapi/js/htmlarea/images/ed_image.gif
index a715019b96..9d2bff131c 100644
Binary files a/phpgwapi/js/htmlarea/images/ed_image.gif and b/phpgwapi/js/htmlarea/images/ed_image.gif differ
diff --git a/phpgwapi/js/htmlarea/images/ed_indent_less.gif b/phpgwapi/js/htmlarea/images/ed_indent_less.gif
index 6054d617da..f320b3e946 100644
Binary files a/phpgwapi/js/htmlarea/images/ed_indent_less.gif and b/phpgwapi/js/htmlarea/images/ed_indent_less.gif differ
diff --git a/phpgwapi/js/htmlarea/images/ed_indent_more.gif b/phpgwapi/js/htmlarea/images/ed_indent_more.gif
index c5dd55dcd8..a67139d603 100644
Binary files a/phpgwapi/js/htmlarea/images/ed_indent_more.gif and b/phpgwapi/js/htmlarea/images/ed_indent_more.gif differ
diff --git a/phpgwapi/js/htmlarea/images/ed_left_to_right.gif b/phpgwapi/js/htmlarea/images/ed_left_to_right.gif
index 5016b4b996..9edfa63e41 100644
Binary files a/phpgwapi/js/htmlarea/images/ed_left_to_right.gif and b/phpgwapi/js/htmlarea/images/ed_left_to_right.gif differ
diff --git a/phpgwapi/js/htmlarea/images/ed_link.gif b/phpgwapi/js/htmlarea/images/ed_link.gif
index 0482da3f5a..76e568b16e 100644
Binary files a/phpgwapi/js/htmlarea/images/ed_link.gif and b/phpgwapi/js/htmlarea/images/ed_link.gif differ
diff --git a/phpgwapi/js/htmlarea/images/ed_list_bullet.gif b/phpgwapi/js/htmlarea/images/ed_list_bullet.gif
index 7b073037ef..caedfd2332 100644
Binary files a/phpgwapi/js/htmlarea/images/ed_list_bullet.gif and b/phpgwapi/js/htmlarea/images/ed_list_bullet.gif differ
diff --git a/phpgwapi/js/htmlarea/images/ed_list_num.gif b/phpgwapi/js/htmlarea/images/ed_list_num.gif
index ae4e03b074..427839d7a9 100644
Binary files a/phpgwapi/js/htmlarea/images/ed_list_num.gif and b/phpgwapi/js/htmlarea/images/ed_list_num.gif differ
diff --git a/phpgwapi/js/htmlarea/images/ed_paste.gif b/phpgwapi/js/htmlarea/images/ed_paste.gif
index 68920530f9..13e2324cf4 100644
Binary files a/phpgwapi/js/htmlarea/images/ed_paste.gif and b/phpgwapi/js/htmlarea/images/ed_paste.gif differ
diff --git a/phpgwapi/js/htmlarea/images/ed_redo.gif b/phpgwapi/js/htmlarea/images/ed_redo.gif
index 2b5ebbd927..2bc002a0ff 100644
Binary files a/phpgwapi/js/htmlarea/images/ed_redo.gif and b/phpgwapi/js/htmlarea/images/ed_redo.gif differ
diff --git a/phpgwapi/js/htmlarea/images/ed_right_to_left.gif b/phpgwapi/js/htmlarea/images/ed_right_to_left.gif
index fed7159f1c..231f183447 100644
Binary files a/phpgwapi/js/htmlarea/images/ed_right_to_left.gif and b/phpgwapi/js/htmlarea/images/ed_right_to_left.gif differ
diff --git a/phpgwapi/js/htmlarea/images/ed_save.gif b/phpgwapi/js/htmlarea/images/ed_save.gif
index add8792041..df3aaabdb6 100644
Binary files a/phpgwapi/js/htmlarea/images/ed_save.gif and b/phpgwapi/js/htmlarea/images/ed_save.gif differ
diff --git a/phpgwapi/js/htmlarea/images/ed_show_border.gif b/phpgwapi/js/htmlarea/images/ed_show_border.gif
index 23a01a40ba..9e3fdd26d0 100644
Binary files a/phpgwapi/js/htmlarea/images/ed_show_border.gif and b/phpgwapi/js/htmlarea/images/ed_show_border.gif differ
diff --git a/phpgwapi/js/htmlarea/images/ed_splitcel.gif b/phpgwapi/js/htmlarea/images/ed_splitcel.gif
index 48442e23aa..a619d8aaad 100644
Binary files a/phpgwapi/js/htmlarea/images/ed_splitcel.gif and b/phpgwapi/js/htmlarea/images/ed_splitcel.gif differ
diff --git a/phpgwapi/js/htmlarea/images/ed_undo.gif b/phpgwapi/js/htmlarea/images/ed_undo.gif
index 05f041e9f9..f90faada2b 100644
Binary files a/phpgwapi/js/htmlarea/images/ed_undo.gif and b/phpgwapi/js/htmlarea/images/ed_undo.gif differ
diff --git a/phpgwapi/js/htmlarea/images/fullscreen_maximize.gif b/phpgwapi/js/htmlarea/images/fullscreen_maximize.gif
index 0536fecd02..07620bc1e5 100644
Binary files a/phpgwapi/js/htmlarea/images/fullscreen_maximize.gif and b/phpgwapi/js/htmlarea/images/fullscreen_maximize.gif differ
diff --git a/phpgwapi/js/htmlarea/images/fullscreen_minimize.gif b/phpgwapi/js/htmlarea/images/fullscreen_minimize.gif
index b12c3f737f..09c0383ea3 100644
Binary files a/phpgwapi/js/htmlarea/images/fullscreen_minimize.gif and b/phpgwapi/js/htmlarea/images/fullscreen_minimize.gif differ
diff --git a/phpgwapi/js/htmlarea/images/insert_table.gif b/phpgwapi/js/htmlarea/images/insert_table.gif
index 4ce3ff49c7..027f7c8f7a 100644
Binary files a/phpgwapi/js/htmlarea/images/insert_table.gif and b/phpgwapi/js/htmlarea/images/insert_table.gif differ
diff --git a/phpgwapi/js/htmlarea/lang/de.js b/phpgwapi/js/htmlarea/lang/de.js
index 550b79430b..7cb00b3a20 100644
--- a/phpgwapi/js/htmlarea/lang/de.js
+++ b/phpgwapi/js/htmlarea/lang/de.js
@@ -1,7 +1,6 @@
-// german version for htmlArea v3.0 - Alpha Release
-// - translated by AtK
-// terms and licenses are equal to htmlarea!
-// translation improved by broxx
+// I18N constants
+
+// LANG: "de", ENCODING: ISO-8859-1 for the german umlaut!
HTMLArea.I18N = {
@@ -16,30 +15,35 @@ HTMLArea.I18N = {
strikethrough: "Durchgestrichen",
subscript: "Hochgestellt",
superscript: "Tiefgestellt",
- justifyleft: "Links ausrichten",
- justifycenter: "Zentrieren",
- justifyright: "Rechts ausrichten",
+ justifyleft: "Linksbndig",
+ justifycenter: "Zentriert",
+ justifyright: "Rechtsbndig",
justifyfull: "Blocksatz",
- orderedlist: "Nummerierung",
- unorderedlist: "Aufzaehlungszeichen",
+ orderedlist: "Nummerierung",
+ unorderedlist: "Aufzhlungszeichen",
outdent: "Einzug verkleinern",
- indent: "Einzug vergrssern",
- forecolor: "Text Farbe",
- hilitecolor: "Hintergrund Farbe",
+ indent: "Einzug vergrern",
+ forecolor: "Schriftfarbe",
+ backcolor: "Hindergrundfarbe",
+ hilitecolor: "Hintergrundfarbe",
horizontalrule: "Horizontale Linie",
- createlink: "Hyperlink einfuegen",
- insertimage: "Bild einfuegen",
- inserttable: "Tabelle einfuegen",
+ inserthorizontalrule: "Horizontale Linie",
+ createlink: "Hyperlink einfgen",
+ insertimage: "Bild einfgen",
+ inserttable: "Tabelle einfgen",
htmlmode: "HTML Modus",
popupeditor: "Editor im Popup ffnen",
- about: "Ueber HtmlArea",
+ about: "ber htmlarea",
+ help: "Hilfe",
showhelp: "Hilfe",
- textindicator: "derzeitiger Stil",
- undo: "Rueckgaengig",
+ textindicator: "Derzeitiger Stil",
+ undo: "Rckgngig",
redo: "Wiederholen",
cut: "Ausschneiden",
copy: "Kopieren",
- paste: "Einfuegen"
+ paste: "Einfgen aus der Zwischenablage",
+ lefttoright: "Textrichtung von Links nach Rechts",
+ righttoleft: "Textrichtung von Rechts nach Links"
},
buttons: {
@@ -49,6 +53,27 @@ HTMLArea.I18N = {
msg: {
"Path": "Pfad",
- "TEXT_MODE": "Du befindest dich im HTML Modus. Benuetze die [<>] Schaltflaeche um in den WYSIWIG-Modus zu wechseln."
+ "TEXT_MODE": "Sie sind im Text-Modus. Benutzen Sie den [<>] Knopf um in den visuellen Modus (WYSIWIG) zu gelangen.",
+
+ "Moz-Clipboard" :
+ "Aus Sicherheitsgrnden drfen Skripte normalerweise nicht programmtechnisch auf " +
+ "Ausschneiden/Kopieren/Einfgen zugreifen. Bitte klicken Sie OK um die technische " +
+ "Erluterung auf mozilla.org zu ffnen, in der erklrt wird, wie einem Skript Zugriff " +
+ "gewhrt werden kann."
+ },
+
+ dialogs: {
+ "OK": "OK",
+ "Cancel": "Abbrechen",
+ "Insert/Modify Link": "Verknpfung hinzufgen/ndern",
+ "None (use implicit)": "k.A. (implizit)",
+ "New window (_blank)": "Neues Fenster (_blank)",
+ "Same frame (_self)": "Selber Rahmen (_self)",
+ "Top frame (_top)": "Oberster Rahmen (_top)",
+ "Other": "Anderes",
+ "Target:": "Ziel:",
+ "Title (tooltip):": "Titel (Tooltip):",
+ "URL:": "URL:",
+ "You must enter the URL where this link points to": "Sie mssen eine Ziel-URL angeben fr die Verknpfung angeben"
}
};
diff --git a/phpgwapi/js/htmlarea/lang/ee.js b/phpgwapi/js/htmlarea/lang/ee.js
index 3e4f8bb305..91a29c4340 100644
--- a/phpgwapi/js/htmlarea/lang/ee.js
+++ b/phpgwapi/js/htmlarea/lang/ee.js
@@ -29,8 +29,8 @@ HTMLArea.I18N = {
justifycenter: "Joonda keskele",
justifyright: "Joonda paremale",
justifyfull: "Rpjoonda",
- insertorderedlist: "Nummerdus",
- insertunorderedlist: "Tpploend",
+ orderedlist: "Nummerdus",
+ unorderedlist: "Tpploend",
outdent: "Vhenda taanet",
indent: "Suurenda taanet",
forecolor: "Fondi vrv",
diff --git a/phpgwapi/js/htmlarea/lang/el.js b/phpgwapi/js/htmlarea/lang/el.js
index ac2204717e..b7c5a27366 100644
--- a/phpgwapi/js/htmlarea/lang/el.js
+++ b/phpgwapi/js/htmlarea/lang/el.js
@@ -1,16 +1,7 @@
// 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.)
+// LANG: "el", ENCODING: UTF-8 | ISO-8859-7
+// Author: Dimitris Glezos, dimitris@glezos.com
HTMLArea.I18N = {
diff --git a/phpgwapi/js/htmlarea/lang/en.js b/phpgwapi/js/htmlarea/lang/en.js
index 361c7abab3..90a7649a86 100644
--- a/phpgwapi/js/htmlarea/lang/en.js
+++ b/phpgwapi/js/htmlarea/lang/en.js
@@ -68,7 +68,12 @@ HTMLArea.I18N = {
"due to browser bugs that we weren't able to workaround. You might experience garbage " +
"display, lack of editor functions and/or random browser crashes. If your system is Windows 9x " +
"it's very likely that you'll get a 'General Protection Fault' and need to reboot.\n\n" +
- "You have been warned. Please press OK if you still want to try the full screen editor."
+ "You have been warned. Please press OK if you still want to try the full screen editor.",
+
+ "Moz-Clipboard" :
+ "Unprivileged scripts cannot access Cut/Copy/Paste programatically " +
+ "for security reasons. Click OK to see a technical note at mozilla.org " +
+ "which shows you how to allow a script to access the clipboard."
},
dialogs: {
diff --git a/phpgwapi/js/htmlarea/lang/es.js b/phpgwapi/js/htmlarea/lang/es.js
index 766ec66a18..5a1e86fdda 100644
--- a/phpgwapi/js/htmlarea/lang/es.js
+++ b/phpgwapi/js/htmlarea/lang/es.js
@@ -17,8 +17,8 @@ HTMLArea.I18N = {
justifycenter: "Centrar",
justifyright: "Alinear a la Derecha",
justifyfull: "Justificar",
- insertorderedlist: "Lista Ordenada",
- insertunorderedlist: "Lista No Ordenada",
+ orderedlist: "Lista Ordenada",
+ unorderedlist: "Lista No Ordenada",
outdent: "Aumentar Sangra",
indent: "Disminuir Sangra",
forecolor: "Color del Texto",
diff --git a/phpgwapi/js/htmlarea/lang/fi.js b/phpgwapi/js/htmlarea/lang/fi.js
index e0576ccd9b..2e18ea16d0 100644
--- a/phpgwapi/js/htmlarea/lang/fi.js
+++ b/phpgwapi/js/htmlarea/lang/fi.js
@@ -17,8 +17,8 @@ HTMLArea.I18N = {
justifycenter: "Keskit",
justifyright: "Tasaa oikeat reunat",
justifyfull: "Tasaa molemmat reunat",
- insertorderedlist: "Numerointi",
- insertunorderedlist: "Luettelomerkit",
+ orderedlist: "Numerointi",
+ unorderedlist: "Luettelomerkit",
outdent: "Lis sisennyst",
indent: "Pienenn sisennyst",
forecolor: "Fontin vri",
diff --git a/phpgwapi/js/htmlarea/lang/fr.js b/phpgwapi/js/htmlarea/lang/fr.js
index d4cd6ac683..e307c81a78 100644
--- a/phpgwapi/js/htmlarea/lang/fr.js
+++ b/phpgwapi/js/htmlarea/lang/fr.js
@@ -1,5 +1,7 @@
// I18N constants
-// Author: Jonathan Ernst,
+
+// LANG: "fr", ENCODING: UTF-8 | ISO-8859-1
+// Author: Simon Richard, s.rich@sympatico.ca
// FOR TRANSLATORS:
//
@@ -10,6 +12,12 @@
// (if this is not possible, please include a comment
// that states what encoding is necessary.)
+// All technical terms used in this document are the ones approved
+// by the Office qubcois de la langue franaise.
+// Tous les termes techniques utiliss dans ce document sont ceux
+// approuvs par l'Office qubcois de la langue franaise.
+// http://www.oqlf.gouv.qc.ca/
+
HTMLArea.I18N = {
// the following should be the filename without .js extension
@@ -21,32 +29,34 @@ HTMLArea.I18N = {
italic: "Italique",
underline: "Soulign",
strikethrough: "Barr",
- subscript: "Subscript",
- superscript: "Superscript",
+ subscript: "Indice",
+ superscript: "Exposant",
justifyleft: "Align gauche",
justifycenter: "Centr",
justifyright: "Align droite",
- justifyfull: "Justifi",
+ justifyfull: "Justifier",
orderedlist: "Numrotation",
unorderedlist: "Puces",
- outdent: "Augmenter le retrait",
- indent: "Diminuer le retrait",
- forecolor: "Couleur du texte",
- hilitecolor: "Couleur du fond",
+ outdent: "Diminuer le retrait",
+ indent: "Augmenter le retrait",
+ forecolor: "Couleur de police",
+ hilitecolor: "Surlignage",
horizontalrule: "Ligne horizontale",
- createlink: "Insrer un lien",
- insertimage: "Insrer une image",
+ createlink: "Insrer un hyperlien",
+ insertimage: "Insrer/Modifier une image",
inserttable: "Insrer un tableau",
- htmlmode: "Passer au code source HTML",
+ htmlmode: "Passer au code source",
popupeditor: "Agrandir l'diteur",
- about: "A propos de cet diteur",
+ about: " propos de cet diteur",
showhelp: "Aide sur l'diteur",
textindicator: "Style courant",
- undo: "Annule la dernire action",
- redo: "Refait la dernire action",
- cut: "Coupe la slection",
- copy: "Copie la slection",
- paste: "Colle depuis le presse papiers"
+ undo: "Annuler la dernire action",
+ redo: "Rpter la dernire action",
+ cut: "Couper la slection",
+ copy: "Copier la slection",
+ paste: "Coller depuis le presse-papier",
+ lefttoright: "Direction de gauche droite",
+ righttoleft: "Direction de droite gauche"
},
buttons: {
@@ -56,6 +66,32 @@ HTMLArea.I18N = {
msg: {
"Path": "Chemin",
- "TEXT_MODE": "Vous tes en mode texte. Utilisez le bouton [<>] pour revenir au mode WYSIWIG."
+ "TEXT_MODE": "Vous tes en MODE TEXTE. Appuyez sur le bouton [<>] pour retourner au mode tel-tel.",
+
+ "IE-sucks-full-screen" :
+ // translate here
+ "Le mode plein cran peut causer des problmes sous Internet Explorer, " +
+ "ceci d des bogues du navigateur qui ont t impossible contourner. " +
+ "Les diffrents symptmes peuvent tre un affichage dficient, le manque de " +
+ "fonctions dans l'diteur et/ou pannes alatoires du navigateur. Si votre " +
+ "systme est Windows 9x, il est possible que vous subissiez une erreur de type " +
+ "General Protection Fault et que vous ayez redmarrer votre ordinateur." +
+ "\n\nConsidrez-vous comme ayant t avis. Appuyez sur OK si vous dsirez tout " +
+ "de mme essayer le mode plein cran de l'diteur."
+ },
+
+ dialogs: {
+ "Cancel" : "Annuler",
+ "Insert/Modify Link" : "Insrer/Modifier Lien",
+ "New window (_blank)" : "Nouvelle fentre (_blank)",
+ "None (use implicit)" : "Aucun (par dfaut)",
+ "OK" : "OK",
+ "Other" : "Autre",
+ "Same frame (_self)" : "Mme cadre (_self)",
+ "Target:" : "Cible:",
+ "Title (tooltip):" : "Titre (infobulle):",
+ "Top frame (_top)" : "Cadre du haut (_top)",
+ "URL:" : "Adresse Web:",
+ "You must enter the URL where this link points to" : "Vous devez entrer l'adresse Web du lien"
}
};
diff --git a/phpgwapi/js/htmlarea/lang/he.js b/phpgwapi/js/htmlarea/lang/he.js
index 18436323a4..5d87b7821e 100644
--- a/phpgwapi/js/htmlarea/lang/he.js
+++ b/phpgwapi/js/htmlarea/lang/he.js
@@ -1,7 +1,7 @@
// I18N constants
// LANG: "he", ENCODING: UTF-8
-// Author: Liron Newman,
+// Author: Liron Newman, http://www.eesh.net,
// FOR TRANSLATORS:
//
@@ -28,7 +28,7 @@ HTMLArea.I18N = {
justifyleft: " ישור לשמאל",
justifycenter: "ישור למרכז",
justifyright: "ישור לימין",
- justifyfull: "יישור לשורה מלאה",
+ justifyfull: "ישור לשורה מלאה",
orderedlist: "רשימה ממוספרת",
unorderedlist: "רשימה לא ממוספרת",
outdent: "הקטן כניסה",
@@ -37,7 +37,7 @@ HTMLArea.I18N = {
hilitecolor: "צבע רקע",
horizontalrule: "קו אנכי",
createlink: "הכנס היפר-קישור",
- insertimage: "הכנס תמונה",
+ insertimage: "הכנס/שנה תמונה",
inserttable: "הכנס טבלה",
htmlmode: "שנה מצב קוד HTML",
popupeditor: "הגדל את העורך",
@@ -48,16 +48,42 @@ HTMLArea.I18N = {
redo: "מבצע מחדש את הפעולה האחרונה שביטלת",
cut: "גזור בחירה",
copy: "העתק בחירה",
- paste: "הדבק מהלוח"
+ paste: "הדבק מהלוח",
+ lefttoright: "כיוון משמאל לימין",
+ righttoleft: "כיוון מימין לשמאל"
},
buttons: {
- "ok": "OK",
+ "ok": "אישור",
"cancel": "ביטול"
},
msg: {
"Path": "נתיב עיצוב",
- "TEXT_MODE": "אתה במצב טקסט נקי (קוד). השתמש בכפתור [<>] כדי לחזור למצב WYSIWYG (תצוגת עיצוב)."
+ "TEXT_MODE": "אתה במצב טקסט נקי (קוד). השתמש בכפתור [<>] כדי לחזור למצב WYSIWYG (תצוגת עיצוב).",
+
+ "IE-sucks-full-screen" :
+ // translate here
+ "מצב מסך מלא יוצר בעיות בדפדפן Internet Explorer, " +
+ "עקב באגים בדפדפן לא יכולנו לפתור את זה. את/ה עלול/ה לחוות תצוגת זבל, " +
+ "בעיות בתפקוד העורך ו/או קריסה של הדפדפן. אם המערכת שלך היא Windows 9x " +
+ "סביר להניח שתקבל/י 'General Protection Fault' ותאלצ/י לאתחל את המחשב.\n\n" +
+ "ראה/י הוזהרת. אנא לחץ/י אישור אם את/ה עדיין רוצה לנסות את העורך במסך מלא."
+ },
+
+ dialogs: {
+ "Cancel" : "ביטול",
+ "Insert/Modify Link" : "הוסף/שנה קישור",
+ "New window (_blank)" : "חלון חדש (_blank)",
+ "None (use implicit)" : "ללא (השתמש ב-frame הקיים)",
+ "OK" : "OK",
+ "Other" : "אחר",
+ "Same frame (_self)" : "אותו frame (_self)",
+ "Target:" : "יעד:",
+ "Title (tooltip):" : "כותרת (tooltip):",
+ "Top frame (_top)" : "Frame עליון (_top)",
+ "URL:" : "URL:",
+ "You must enter the URL where this link points to" : "חובה לכתוב URL שאליו קישור זה מצביע"
+
}
};
diff --git a/phpgwapi/js/htmlarea/lang/hu.js b/phpgwapi/js/htmlarea/lang/hu.js
index 828aec1523..2c549eb769 100644
--- a/phpgwapi/js/htmlarea/lang/hu.js
+++ b/phpgwapi/js/htmlarea/lang/hu.js
@@ -48,7 +48,9 @@ HTMLArea.I18N = {
redo: "Újra végrehajtás",
cut: "Kivágás",
copy: "Másolás",
- paste: "Beillesztés"
+ paste: "Beillesztés",
+ lefttoright: "Irány balról jobbra",
+ righttoleft: "Irány jobbról balra"
},
buttons: {
@@ -58,6 +60,31 @@ HTMLArea.I18N = {
msg: {
"Path": "Hierarchia",
- "TEXT_MODE": "Forrás mód. Visszaváltás [<>] gomb"
+ "TEXT_MODE": "Forrás mód. Visszaváltás [<>] gomb",
+
+ "IE-sucks-full-screen" :
+ // translate here
+ "A teljesképrenyős szerkesztés hibát okozhat Internet Explorer használata esetén, " +
+ "ez a böngésző a hibája, amit nem tudunk kikerülni. Szemetet észlelhet a képrenyőn, " +
+ "illetve néhány funkció hiányozhat és/vagy véletlenszerűen lefagyhat a böngésző. " +
+ "Windows 9x operaciós futtatása esetén elég valószínű, hogy 'General Protection Fault' " +
+ "hibát okoz és újra kell indítania a számítógépet.\n\n" +
+ "Figyelmeztettük. Kérjük nyomja meg a Rendben gombot, ha mégis szeretné megnyitni a " +
+ "szerkesztőt külön ablakban."
+ },
+
+ dialogs: {
+ "Cancel" : "Mégsem",
+ "Insert/Modify Link" : "Hivatkozás Beszúrása/Módosítása",
+ "New window (_blank)" : "Új ablak (_blank)",
+ "None (use implicit)" : "Nincs (use implicit)",
+ "OK" : "OK",
+ "Other" : "Más",
+ "Same frame (_self)" : "Ugyanabba a keretbe (_self)",
+ "Target:" : "Cél:",
+ "Title (tooltip):" : "Cím (tooltip):",
+ "Top frame (_top)" : "Felső keret (_top)",
+ "URL:" : "URL:",
+ "You must enter the URL where this link points to" : "Be kell írnia az URL-t, ahova a hivatkozás mutasson"
}
};
diff --git a/phpgwapi/js/htmlarea/lang/it.js b/phpgwapi/js/htmlarea/lang/it.js
index be06e99376..3215dcfa91 100644
--- a/phpgwapi/js/htmlarea/lang/it.js
+++ b/phpgwapi/js/htmlarea/lang/it.js
@@ -2,53 +2,78 @@
// LANG: "it", ENCODING: UTF-8 | ISO-8859-1
// Author: Fabio Rotondo
+// Update for 3.0 rc1: Giovanni Premuda
HTMLArea.I18N = {
- // the following should be the filename without .js extension
- // it will be used for automatically load plugin language.
- lang: "it",
+ // the following should be the filename without .js extension
+ // it will be used for automatically load plugin language.
+ lang: "it",
- tooltips: {
- bold: "Grassetto",
- italic: "Italico",
- underline: "Sottolineato",
- strikethrough: "Barrato",
- subscript: "Pedice",
- superscript: "Apice",
- justifyleft: "Giustifica a Sinistra",
- justifycenter: "Giustifica in Centro",
- justifyright: "Giustifica a Destra",
- justifyfull: "Giustifica Completamente",
- orderedlist: "Lista Ordinata",
- unorderedlist: "Lista Puntata",
- outdent: "Decrementa Indentazione",
- indent: "Incrementa Indentazione",
- forecolor: "Colore del Carattere",
- hilitecolor: "Colore di Sfondo",
- horizontalrule: "Linea Orizzontale",
- createlink: "Inserisci un Link",
- insertimage: "Inserisci un'Immagine",
- inserttable: "Inserisci una Tabella",
- htmlmode: "Attiva il codice HTML",
- popupeditor: "Allarga l'editor",
- about: "Info sull'editor",
- showhelp: "Aiuto sull'editor",
- textindicator: "Stile Attuale",
- undo: "Elimina l'ultima modifica",
- redo: "Ripristina l'ultima modifica",
- cut: "Taglia l'area selezionata",
- copy: "Copia l'area selezionata",
- paste: "Incolla dalla memoria"
- },
+ tooltips: {
+ bold: "Grassetto",
+ italic: "Corsivo",
+ underline: "Sottolineato",
+ strikethrough: "Barrato",
+ subscript: "Pedice",
+ superscript: "Apice",
+ justifyleft: "Allinea a sinistra",
+ justifycenter: "Allinea in centro",
+ justifyright: "Allinea a destra",
+ justifyfull: "Giustifica",
+ insertorderedlist: "Lista ordinata",
+ insertunorderedlist: "Lista puntata",
+ outdent: "Decrementa indentazione",
+ indent: "Incrementa indentazione",
+ forecolor: "Colore del carattere",
+ hilitecolor: "Colore di sfondo",
+ inserthorizontalrule: "Linea orizzontale",
+ createlink: "Inserisci un link",
+ insertimage: "Inserisci un'immagine",
+ inserttable: "Inserisci una tabella",
+ htmlmode: "Visualizzazione HTML",
+ popupeditor: "Editor a pieno schermo",
+ about: "Info sull'editor",
+ showhelp: "Aiuto sull'editor",
+ textindicator: "Stile corrente",
+ undo: "Annulla",
+ redo: "Ripristina",
+ cut: "Taglia",
+ copy: "Copia",
+ paste: "Incolla",
+ lefttoright: "Scrivi da sinistra a destra",
+ righttoleft: "Scrivi da destra a sinistra"
+ },
- buttons: {
- "ok": "OK",
- "cancel": "Annulla"
- },
+ buttons: {
+ "ok": "OK",
+ "cancel": "Annulla"
+ },
- msg: {
- "Path": "Percorso",
- "TEXT_MODE": "Sei in MODALITA' TESTO. Usa il bottone [<>] per tornare alla modalità WYSIWYG."
- }
+ msg: {
+ "Path": "Percorso",
+ "TEXT_MODE": "Sei in MODALITA' TESTO. Usa il bottone [<>] per tornare alla modalità WYSIWYG.",
+ "IE-sucks-full-screen" :
+ // translate here
+ "The full screen mode is known to cause problems with Internet Explorer, " +
+ "due to browser bugs that we weren't able to workaround. You might experience garbage " +
+ "display, lack of editor functions and/or random browser crashes. If your system is Windows 9x " +
+ "it's very likely that you'll get a 'General Protection Fault' and need to reboot.\n\n" +
+ "You have been warned. Please press OK if you still want to try the full screen editor."
+ },
+
+ dialogs: {
+ "Annulla" : "Cancel",
+ "Inserisci/modifica Link" : "Insert/Modify Link",
+ "Nuova finestra (_blank)" : "New window (_blank)",
+ "Nessuno (usa predefinito)" : "None (use implicit)",
+ "OK" : "OK",
+ "Altro" : "Other",
+ "Stessa finestra (_self)" : "Same frame (_self)",
+ "Target:" : "Target:",
+ "Title (suggerimento):" : "Title (tooltip):",
+ "Frame principale (_top)" : "Top frame (_top)",
+ "URL:" : "URL:",
+ "You must enter the URL where this link points to" : "Devi inserire un indirizzo per questo link"
+ }
};
diff --git a/phpgwapi/js/htmlarea/lang/lt.js b/phpgwapi/js/htmlarea/lang/lt.js
index bf1efc5842..2b08929ad0 100644
--- a/phpgwapi/js/htmlarea/lang/lt.js
+++ b/phpgwapi/js/htmlarea/lang/lt.js
@@ -3,12 +3,11 @@
// LANG: "lt", ENCODING: UTF-8
// Author: Jaroslav Šatkevič,
-
HTMLArea.I18N = {
// the following should be the filename without .js extension
// it will be used for automatically load plugin language.
- lang: "lt",
+ lang: "en",
tooltips: {
bold: "Paryškinti",
@@ -41,7 +40,7 @@ HTMLArea.I18N = {
cut: "Iškirpti",
copy: "Kopijuoti",
paste: "Įterpti"
- },
+},
buttons: {
"ok": "OK",
@@ -50,6 +49,29 @@ HTMLArea.I18N = {
msg: {
"Path": "Kelias",
- "TEXT_MODE": "Jūs esete teksto režime. Naudokite [<>] mygtuką grįžimui į WYSIWYG."
+ "TEXT_MODE": "Jūs esete teksto režime. Naudokite [<>] mygtuką grįžimui į WYSIWYG.",
+
+ "IE-sucks-full-screen" :
+ // translate here
+ "The full screen mode is known to cause problems with Internet Explorer, " +
+ "due to browser bugs that we weren't able to workaround. You might experience garbage " +
+ "display, lack of editor functions and/or random browser crashes. If your system is Windows 9x " +
+ "it's very likely that you'll get a 'General Protection Fault' and need to reboot.\n\n" +
+ "You have been warned. Please press OK if you still want to try the full screen editor."
+ },
+
+ dialogs: {
+ "Cancel" : "Atšaukti",
+ "Insert/Modify Link" : "Idėti/Modifikuoti",
+ "New window (_blank)" : "Naujas langas (_blank)",
+ "None (use implicit)" : "None (use implicit)",
+ "OK" : "OK",
+ "Other" : "Kitas",
+ "Same frame (_self)" : "Same frame (_self)",
+ "Target:" : "Target:",
+ "Title (tooltip):" : "Pavadinimas (tooltip):",
+ "Top frame (_top)" : "Top frame (_top)",
+ "URL:" : "URL:",
+ "You must enter the URL where this link points to" : "Jus privalote nurodyti URL į kuri rodo šitą nuoroda"
}
};
diff --git a/phpgwapi/js/htmlarea/lang/nl.js b/phpgwapi/js/htmlarea/lang/nl.js
index 59bfe18cfb..aa2229a243 100644
--- a/phpgwapi/js/htmlarea/lang/nl.js
+++ b/phpgwapi/js/htmlarea/lang/nl.js
@@ -29,8 +29,8 @@ HTMLArea.I18N = {
justifycenter: "Centreren",
justifyright: "Rechts uitlijnen",
justifyfull: "Uitvullen",
- insertorderedlist: "Nummering",
- insertunorderedlist: "Opsommingstekens",
+ orderedlist: "Nummering",
+ unorderedlist: "Opsommingstekens",
outdent: "Inspringing verkleinen",
indent: "Inspringing vergroten",
forecolor: "Tekstkleur",
diff --git a/phpgwapi/js/htmlarea/lang/no.js b/phpgwapi/js/htmlarea/lang/no.js
index 5239715e52..814d64c702 100644
--- a/phpgwapi/js/htmlarea/lang/no.js
+++ b/phpgwapi/js/htmlarea/lang/no.js
@@ -1,5 +1,6 @@
-// Norwegian version for htmlArea v3.0 - Alpha Release
+// Norwegian version for htmlArea v3.0 - pre1
// - translated by ses
+// Additional translations by Hvard Wigtil
// terms and licenses are equal to htmlarea!
HTMLArea.I18N = {
@@ -9,31 +10,38 @@ HTMLArea.I18N = {
lang: "no",
tooltips: {
- bold: "Fet",
- italic: "Kursiv",
- underline: "Understreket",
- strikethrough: "Gjennomstreket",
- subscript: "Nedsenket",
- superscript: "Opphyet",
- justifyleft: "Venstrejuster",
- justifycenter: "Midtjuster",
- justifyright: "Hyrejuster",
- justifyfull: "Blokkjuster",
+ bold: "Fet",
+ italic: "Kursiv",
+ underline: "Understreket",
+ strikethrough: "Gjennomstreket",
+ subscript: "Nedsenket",
+ superscript: "Opphyet",
+ justifyleft: "Venstrejuster",
+ justifycenter: "Midtjuster",
+ justifyright: "Hyrejuster",
+ justifyfull: "Blokkjuster",
orderedlist: "Nummerert liste",
unorderedlist: "Punktliste",
- outdent: "Reduser innrykk",
- indent: "ke innrykk",
- forecolor: "Tekstfarge",
- backcolor: "Bakgrundsfarge",
- horizontalrule: "Vannrett linje",
- createlink: "Lag lenke",
- insertimage: "Sett inn bilde",
- inserttable: "Sett inn tabell",
- htmlmode: "Vis kildekode",
- popupeditor: "Vis i eget vindu",
- about: "Om denne editor",
- help: "Hjelp",
- textindicator: "Nvrende stil"
+ outdent: "Reduser innrykk",
+ indent: "ke innrykk",
+ forecolor: "Tekstfarge",
+ hilitecolor: "Bakgrundsfarge",
+ inserthorizontalrule: "Vannrett linje",
+ createlink: "Lag lenke",
+ insertimage: "Sett inn bilde",
+ inserttable: "Sett inn tabell",
+ htmlmode: "Vis kildekode",
+ popupeditor: "Vis i eget vindu",
+ about: "Om denne editor",
+ showhelp: "Hjelp",
+ textindicator: "Nvrende stil",
+ undo: "Angrer siste redigering",
+ redo: "Gjr om siste angring",
+ cut: "Klipp ut omrde",
+ copy: "Kopier omrde",
+ paste: "Lim inn",
+ lefttoright: "Fra venstre mot hyre",
+ righttoleft: "Fra hyre mot venstre"
},
buttons: {
@@ -43,6 +51,29 @@ HTMLArea.I18N = {
msg: {
"Path": "Tekstvelger",
- "TEXT_MODE": "Du er i tekstmodus Klikk p [<>] for g tilbake til WYSIWIG."
+ "TEXT_MODE": "Du er i tekstmodus Klikk p [<>] for g tilbake til WYSIWIG.",
+ "IE-sucks-full-screen" :
+ // translate here
+ "Visning i eget vindu har kjente problemer med Internet Explorer, " +
+ "p grunn av problemer med denne nettleseren. Mulige problemer er et uryddig " +
+ "skjermbilde, manglende editorfunksjoner og/eller at nettleseren crasher. Hvis du bruker Windows 95 eller Windows 98 " +
+ "er det ogs muligheter for at Windows will crashe.\n\n" +
+ "Trykk 'OK' hvis du vil bruke visning i eget vindu p tross av denne advarselen."
+ },
+
+ dialogs: {
+ "Cancel" : "Avbryt",
+ "Insert/Modify Link" : "Rediger lenke",
+ "New window (_blank)" : "Eget vindu (_blank)",
+ "None (use implicit)" : "Ingen (bruk standardinnstilling)",
+ "OK" : "OK",
+ "Other" : "Annen",
+ "Same frame (_self)" : "Samme ramme (_self)",
+ "Target:" : "Ml:",
+ "Title (tooltip):" : "Tittel (tooltip):",
+ "Top frame (_top)" : "Toppramme (_top)",
+ "URL:" : "Adresse:",
+ "You must enter the URL where this link points to" : "Du m skrive inn en adresse som denne lenken skal peke til"
}
};
+
diff --git a/phpgwapi/js/htmlarea/lang/ru.js b/phpgwapi/js/htmlarea/lang/ru.js
index e8e1a326c4..0649254e7d 100644
--- a/phpgwapi/js/htmlarea/lang/ru.js
+++ b/phpgwapi/js/htmlarea/lang/ru.js
@@ -29,8 +29,8 @@ HTMLArea.I18N = {
justifycenter: "По центру",
justifyright: "По правому краю",
justifyfull: "По ширине",
- insertorderedlist: "Нумерованный лист",
- insertunorderedlist: "Маркированный лист",
+ orderedlist: "Нумерованный лист",
+ unorderedlist: "Маркированный лист",
outdent: "Уменьшить отступ",
indent: "Увеличить отступ",
forecolor: "Цвет шрифта",
diff --git a/phpgwapi/js/htmlarea/plugins/ContextMenu/1.pl b/phpgwapi/js/htmlarea/plugins/ContextMenu/1.pl
new file mode 100755
index 0000000000..fdf66790ef
--- /dev/null
+++ b/phpgwapi/js/htmlarea/plugins/ContextMenu/1.pl
@@ -0,0 +1,38 @@
+#! /usr/bin/perl -w
+
+use strict;
+
+my $file = 'context-menu.js';
+my $outfile = $file.'-i18n';
+my $langfile = 'en.js';
+
+open FILE, "<$file";
+#open OUTFILE, ">$outfile";
+#open LANGFILE, ">$langfile";
+my %texts = ();
+while () {
+ if (/"(.*?)"/) {
+ my $inline = $_;
+ chomp $inline;
+ my $key = $1;
+ my $val = $1;
+ print "Key: [$key]: ";
+ my $line = ;
+ if (defined $line) {
+ chomp $line;
+ if ($line =~ /(\S+)/) {
+ $key = $1;
+ print "-- using $key\n";
+ }
+ $texts{$val} = $key;
+ } else {
+ print " -- skipped...\n";
+ }
+ }
+}
+#close LANGFILE;
+#close OUTFILE;
+close FILE;
+
+print "\n\n\n";
+print '"', join("\"\n\"", sort keys %texts), '"', "\n";
diff --git a/phpgwapi/js/htmlarea/plugins/ContextMenu/context-menu.js b/phpgwapi/js/htmlarea/plugins/ContextMenu/context-menu.js
new file mode 100755
index 0000000000..63d000ce36
--- /dev/null
+++ b/phpgwapi/js/htmlarea/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/phpgwapi/js/htmlarea/plugins/SpellChecker/lang/en.js b/phpgwapi/js/htmlarea/plugins/SpellChecker/lang/en.js
index b573309889..529cc6c450 100644
--- a/phpgwapi/js/htmlarea/plugins/SpellChecker/lang/en.js
+++ b/phpgwapi/js/htmlarea/plugins/SpellChecker/lang/en.js
@@ -31,6 +31,7 @@ SpellChecker.I18N = {
"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/phpgwapi/js/htmlarea/plugins/SpellChecker/readme-tech.html b/phpgwapi/js/htmlarea/plugins/SpellChecker/readme-tech.html
index e01d082d77..1afdf6d3f8 100644
--- a/phpgwapi/js/htmlarea/plugins/SpellChecker/readme-tech.html
+++ b/phpgwapi/js/htmlarea/plugins/SpellChecker/readme-tech.html
@@ -59,20 +59,22 @@
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
+ (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.
+ characters that are not in 0..255 are likely to be reported as "mispelled" by Aspell.
- I digged the Net for a couple of hours today and I can't seem to find
- any open-source spell checker that has Unicode support. For this
- reason we keep using Aspell, because it also seems to have the
- best suggestions engine. Unicode support will eventually be
- implemented in Aspell. Email
- Kevin Atkinson (Aspell author and maintainer) about this ;-)
+ 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.
@@ -96,8 +98,7 @@
@@ -107,7 +108,7 @@
Mihai Bazon
- Last modified: Wed Jan 28 11:13:13 EET 2004
+ Last modified: Fri Jan 30 19:14:11 EET 2004