You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by fe...@apache.org on 2007/07/22 16:51:30 UTC

svn commit: r558490 [29/33] - in /cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha: ./ images/ images/de/ images/fr/ lang/ modules/ modules/ColorPicker/ modules/CreateLink/ modules/Dialogs/ m...

Added: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SetId/set-id.js
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SetId/set-id.js?view=auto&rev=558490
==============================================================================
--- cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SetId/set-id.js (added)
+++ cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SetId/set-id.js Sun Jul 22 07:50:10 2007
@@ -0,0 +1,96 @@
+function SetId(editor) {
+  this.editor = editor;
+  var cfg = editor.config;
+  var self = this;
+
+  // register the toolbar buttons provided by this plugin
+  cfg.registerButton({
+  id       : "setid",
+  tooltip  : this._lc("Set Id and Name"),
+  image    : editor.imgURL("set-id.gif", "SetId"),
+  textMode : false,
+  action   : function(editor) {
+               self.buttonPress(editor);
+             }
+  });
+  cfg.addToolbarElement("setid", "createlink", 1);
+}
+
+SetId._pluginInfo = {
+  name          : "SetId",
+  version       : "2.0",
+  developer     : "Udo Schmal",
+  developer_url : "http://www.schaffrath-neuemedien.de",
+  c_owner       : "Udo Schmal",
+  sponsor       : "L.N.Schaffrath NeueMedien",
+  sponsor_url   : "http://www.schaffrath-neuemedien.de",
+  license       : "htmlArea"
+};
+
+SetId.prototype._lc = function(string) {
+    return HTMLArea._lc(string, 'SetId');
+};
+
+
+SetId.prototype.onGenerate = function() {
+  var style_id = "ID-style";
+  var style = this.editor._doc.getElementById(style_id);
+  if (style == null) {
+    style = this.editor._doc.createElement("link");
+    style.id = style_id;
+    style.rel = 'stylesheet';
+    style.href = _editor_url + 'plugins/SetId/set-id.css';
+    this.editor._doc.getElementsByTagName("HEAD")[0].appendChild(style);
+  }
+};
+
+SetId.prototype.buttonPress = function(editor) {
+  var outparam = null;
+  var html = editor.getSelectedHTML();
+  var sel  = editor._getSelection();
+  var range  = editor._createRange(sel);
+  var node = editor._activeElement(sel);
+  if (node)
+    outparam = { name : node.id };
+  else
+    outparam = { name : '' };
+
+  editor._popupDialog( "plugin://SetId/set_id", function( param ) {
+    if ( param ) {
+      var name = param["name"];
+      if (name == "" || name == null) {
+        if (node) {
+          node.removeAttribute("name");
+          node.removeAttribute("id");
+          node.removeAttribute("title");
+          if (node.className == "hasid") {
+            node.removeAttribute("class");
+          }
+        }
+        return;
+      }
+      try {
+        var doc = editor._doc;
+        if (!node) {
+          node = doc.createElement("span");
+          node.id = name;
+          node.name = name;
+          node.title = name;
+          node.className = "hasid";
+          node.innerHTML = html;
+          if (HTMLArea.is_ie) {
+            range.pasteHTML(node.outerHTML);
+          } else {
+            editor.insertNodeAtSelection(node);
+          }
+        } else {
+          node.id = name;
+          node.name = name;
+          node.title = name;
+          node.className = "hasid";
+        }
+      }
+      catch (e) { }
+    }
+  }, outparam);
+};

Propchange: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SetId/set-id.js
------------------------------------------------------------------------------
    svn:eol-style = native

Added: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SmartReplace/dialog.html
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SmartReplace/dialog.html?view=auto&rev=558490
==============================================================================
--- cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SmartReplace/dialog.html (added)
+++ cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SmartReplace/dialog.html Sun Jul 22 07:50:10 2007
@@ -0,0 +1,17 @@
+<h1 id="[h1]"><l10n>SmartReplace Settings</l10n></h1>
+<div style="margin-left: 10px;">
+<table style="width: 100%;border:none">
+  <tr>
+    <td style="width:15px"><input type="checkbox" id="[enable]" name="[enable]"  /></td>
+    <td style="text-align:left"><l10n>Enable automatic replacements</l10n></td>
+  </tr>
+  <tr>
+    <td style="width:15px"><input type="checkbox" id="[convert]" name="[convert]" /></td>
+    <td style="text-align:left"><l10n>Convert all quotes and dashes in the current document</l10n></td>
+  </tr>
+</table>
+  <div style="margin-top: 10px;">
+    <input type="button" id="[ok]"     value="_(OK)"     />
+    <input type="button" id="[cancel]" value="_(Cancel)" />
+  </div>
+</div>
\ No newline at end of file

Propchange: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SmartReplace/dialog.html
------------------------------------------------------------------------------
    svn:eol-style = native

Added: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SmartReplace/img/smartquotes.gif
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SmartReplace/img/smartquotes.gif?view=auto&rev=558490
==============================================================================
Binary file - no diff available.

Propchange: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SmartReplace/img/smartquotes.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SmartReplace/lang/de.js
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SmartReplace/lang/de.js?view=auto&rev=558490
==============================================================================
--- cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SmartReplace/lang/de.js (added)
+++ cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SmartReplace/lang/de.js Sun Jul 22 07:50:10 2007
@@ -0,0 +1,19 @@
+// I18N constants
+// LANG: "de", ENCODING: UTF-8
+{
+	"SmartReplace Settings" : "SmartReplace Einstellungen",
+	"Enable automatic replacements" : "Automatische Ersetzung aktivieren",
+	"Convert all quotes and dashes in the current document": "Alle Anführungszeichen und Gedankenstriche umwandeln",
+	
+	"OpeningDoubleQuotes": "„",
+	"ClosingDoubleQuotes": "“",
+	"OpeningSingleQuote": "‚",
+	"ClosingSingleQuote": "‘"
+	
+	/*
+	"OpeningDoubleQuotes": "»",
+	"ClosingDoubleQuotes": "«",
+	"OpeningSingleQuote": "›",
+	"ClosingSingleQuote": "‹"
+*/
+};
\ No newline at end of file

Propchange: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SmartReplace/lang/de.js
------------------------------------------------------------------------------
    svn:eol-style = native

Added: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SmartReplace/lang/ja.js
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SmartReplace/lang/ja.js?view=auto&rev=558490
==============================================================================
--- cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SmartReplace/lang/ja.js (added)
+++ cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SmartReplace/lang/ja.js Sun Jul 22 07:50:10 2007
@@ -0,0 +1,19 @@
+// I18N constants
+// LANG: "ja", ENCODING: UTF-8
+{
+	"SmartReplace Settings" : "SmartReplace設定",
+	"Enable automatic replacements" : "自動置換の有効化",
+	"Convert all quotes and dashes in the current document": "文書内の引用符とダッシュをすべて変換",
+	
+	"OpeningDoubleQuotes": "„",
+	"ClosingDoubleQuotes": "“",
+	"OpeningSingleQuote": "‚",
+	"ClosingSingleQuote": "‘"
+	
+	/*
+	"OpeningDoubleQuotes": "»",
+	"ClosingDoubleQuotes": "«",
+	"OpeningSingleQuote": "›",
+	"ClosingSingleQuote": "‹"
+*/
+};
\ No newline at end of file

Propchange: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SmartReplace/lang/ja.js
------------------------------------------------------------------------------
    svn:eol-style = native

Added: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SmartReplace/readme.txt
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SmartReplace/readme.txt?view=auto&rev=558490
==============================================================================
--- cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SmartReplace/readme.txt (added)
+++ cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SmartReplace/readme.txt Sun Jul 22 07:50:10 2007
@@ -0,0 +1,14 @@
+One irritating thing with text processing is the total absence of some typographic essentials on the keyboard -- "real" (typographic) quotes and the dash, typically miss-typed as inch or second sign (") and the hyphon(-).
+
+This plugin lends the good old Word behaviour to Xinha, as ",', and - get converted to their respective typographic correct relatives while typing.
+
+ Configuration (to change the quote style from default English):
+  * through language file (see lang/de.js)
+  * through a config variable (an array that holds four values: opening single quote, closing single quote, opening double quote, closing double quote)
+  
+ Additional config option:
+  * disable automatic replacement by default
+  
+ Additional features:
+  * can be switched on/off
+  * convert all quotes/dashes in a document that still has the boring  "/- stuff
\ No newline at end of file

Propchange: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SmartReplace/readme.txt
------------------------------------------------------------------------------
    svn:eol-style = native

Added: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SmartReplace/smart-replace.js
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SmartReplace/smart-replace.js?view=auto&rev=558490
==============================================================================
--- cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SmartReplace/smart-replace.js (added)
+++ cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SmartReplace/smart-replace.js Sun Jul 22 07:50:10 2007
@@ -0,0 +1,228 @@
+function SmartReplace(_1){
+this.editor=_1;
+var _2=_1.config;
+var _3=this;
+_2.registerButton({id:"smartreplace",tooltip:this._lc("SmartReplace"),image:_editor_url+"plugins/SmartReplace/img/smartquotes.gif",textMode:false,action:function(e,_5,_6){
+_3.buttonPress(null,_6);
+}});
+_2.addToolbarElement("smartreplace","htmlmode",1);
+}
+SmartReplace._pluginInfo={name:"SmartReplace",version:"1.0",developer:"Raimund Meyer",developer_url:"http://rheinauf.de",c_owner:"Raimund Meyer",sponsor:"",sponsor_url:"",license:"htmlArea"};
+SmartReplace.prototype._lc=function(_7){
+return Xinha._lc(_7,"SmartReplace");
+};
+Xinha.Config.prototype.SmartReplace={"defaultActive":true,"quotes":null};
+SmartReplace.prototype.toggleActivity=function(_8){
+if(typeof _8!="undefined"){
+this.active=_8;
+}else{
+this.active=this.active?false:true;
+}
+this.editor._toolbarObjects.smartreplace.state("active",this.active);
+};
+SmartReplace.prototype.onUpdateToolbar=function(){
+this.editor._toolbarObjects.smartreplace.state("active",this.active);
+};
+SmartReplace.prototype.onGenerate=function(){
+this.active=this.editor.config.SmartReplace.defaultActive;
+this.editor._toolbarObjects.smartreplace.state("active",this.active);
+var _9=this;
+Xinha._addEvents(_9.editor._doc,["keypress"],function(_a){
+return _9.keyEvent(Xinha.is_ie?_9.editor._iframe.contentWindow.event:_a);
+});
+var _b=this.editor.config.SmartReplace.quotes;
+if(_b&&typeof _b=="object"){
+this.openingQuotes=_b[0];
+this.closingQuotes=_b[1];
+this.openingQuote=_b[2];
+this.closingQuote=_b[3];
+}else{
+this.openingQuotes=this._lc("OpeningDoubleQuotes");
+this.closingQuote=this._lc("ClosingSingleQuote");
+this.closingQuotes=this._lc("ClosingDoubleQuotes");
+this.openingQuote=this._lc("OpeningSingleQuote");
+}
+if(this.openingQuotes=="OpeningDoubleQuotes"){
+this.openingQuotes=String.fromCharCode(8220);
+this.closingQuotes=String.fromCharCode(8221);
+this.openingQuote=String.fromCharCode(8216);
+this.closingQuote=String.fromCharCode(8217);
+}
+};
+SmartReplace.prototype.keyEvent=function(ev){
+if(!this.active){
+return true;
+}
+var _d=this.editor;
+var _e=Xinha.is_ie?ev.keyCode:ev.charCode;
+var _f=String.fromCharCode(_e);
+if(_e==32){
+return this.smartDash();
+}
+if(_f=="\""||_f=="'"){
+Xinha._stopEvent(ev);
+return this.smartQuotes(_f);
+}
+return true;
+};
+SmartReplace.prototype.smartQuotes=function(_10){
+if(_10=="'"){
+var _11=this.openingQuote;
+var _12=this.closingQuote;
+}else{
+var _11=this.openingQuotes;
+var _12=this.closingQuotes;
+}
+var _13=this.editor;
+var sel=_13.getSelection();
+if(Xinha.is_ie){
+var r=_13.createRange(sel);
+if(r.text!==""){
+r.text="";
+}
+r.moveStart("character",-1);
+if(r.text.match(/\S/)){
+r.moveStart("character",+1);
+r.text=_12;
+}else{
+r.moveStart("character",+1);
+r.text=_11;
+}
+}else{
+if(!sel.isCollapsed){
+_13.insertNodeAtSelection(document.createTextNode(""));
+}
+if(sel.anchorOffset>0){
+sel.extend(sel.anchorNode,sel.anchorOffset-1);
+}
+if(sel.toString().match(/\S/)){
+sel.collapse(sel.anchorNode,sel.anchorOffset);
+_13.insertNodeAtSelection(document.createTextNode(_12));
+}else{
+sel.collapse(sel.anchorNode,sel.anchorOffset);
+_13.insertNodeAtSelection(document.createTextNode(_11));
+}
+}
+};
+SmartReplace.prototype.smartDash=function(){
+var _16=this.editor;
+var sel=this.editor.getSelection();
+if(Xinha.is_ie){
+var r=this.editor.createRange(sel);
+r.moveStart("character",-2);
+if(r.text.match(/\s-/)){
+r.text=" "+String.fromCharCode(8211);
+}
+}else{
+sel.extend(sel.anchorNode,sel.anchorOffset-2);
+if(sel.toString().match(/^-/)){
+this.editor.insertNodeAtSelection(document.createTextNode(" "+String.fromCharCode(8211)));
+}
+sel.collapse(sel.anchorNode,sel.anchorOffset);
+}
+};
+SmartReplace.prototype.replaceAll=function(){
+var _19=["&quot;",String.fromCharCode(8220),String.fromCharCode(8221),String.fromCharCode(8222),String.fromCharCode(187),String.fromCharCode(171)];
+var _1a=["'",String.fromCharCode(8216),String.fromCharCode(8217),String.fromCharCode(8218),String.fromCharCode(8250),String.fromCharCode(8249)];
+var _1b=this.editor.getHTML();
+var _1c=new RegExp("(\\s|^|>)("+_19.join("|")+")(\\S)","g");
+_1b=_1b.replace(_1c,"$1"+this.openingQuotes+"$3");
+var _1d=new RegExp("(\\s|^|>)("+_1a.join("|")+")(\\S)","g");
+_1b=_1b.replace(_1d,"$1"+this.openingQuote+"$3");
+var _1e=new RegExp("(\\S)("+_19.join("|")+")","g");
+_1b=_1b.replace(_1e,"$1"+this.closingQuotes);
+var _1f=new RegExp("(\\S)("+_1a.join("|")+")","g");
+_1b=_1b.replace(_1f,"$1"+this.closingQuote);
+var _20=new RegExp("( |&nbsp;)(-)( |&nbsp;)","g");
+_1b=_1b.replace(_20," "+String.fromCharCode(8211)+" ");
+this.editor.setHTML(_1b);
+};
+SmartReplace.prototype.dialog=function(){
+var _21=this;
+var _22=function(_23){
+_21.toggleActivity(_23.enable);
+if(_23.convert){
+_21.replaceAll();
+}
+};
+var _24=this;
+Dialog(_editor_url+"plugins/SmartReplace/popups/dialog.html",_22,_24);
+};
+SmartReplace.prototype.buttonPress=function(_25,obj){
+var _27=this;
+if(this._dialog.dialog.rootElem.style.display!="none"){
+return this._dialog.hide();
+}
+var _28=function(){
+var _29=_27._dialog.hide();
+_27.toggleActivity((_29.enable)?true:false);
+if(_29.convert){
+_27.replaceAll();
+_27._dialog.dialog.getElementById("convert").checked=false;
+}
+};
+var _2a={enable:_27.active?"on":"",convert:""};
+this._dialog.show(_2a,_28);
+};
+SmartReplace.prototype.onGenerateOnce=function(){
+if(!this._dialog){
+this._dialog=new SmartReplace.Dialog(this);
+}
+};
+SmartReplace.Dialog=function(_2b){
+this.Dialog_nxtid=0;
+this.mainPluginObject=_2b;
+this.id={};
+this.ready=false;
+this.files=false;
+this.html=false;
+this.dialog=false;
+this._prepareDialog();
+};
+SmartReplace.Dialog.prototype._prepareDialog=function(){
+var _2c=this;
+var _2d=this.mainPluginObject.editor;
+if(this.html==false){
+Xinha._getback(_editor_url+"plugins/SmartReplace/dialog.html",function(_2e){
+_2c.html=_2e;
+_2c._prepareDialog();
+});
+return;
+}
+this.dialog=new Xinha.Dialog(_2d,this.html,"SmartReplace");
+this.ready=true;
+};
+SmartReplace.Dialog.prototype._lc=SmartReplace.prototype._lc;
+SmartReplace.Dialog.prototype.show=function(_2f,ok,_31){
+if(!this.ready){
+var _32=this;
+window.setTimeout(function(){
+_32.show(_2f,ok,_31);
+},100);
+return;
+}
+var _33=this.dialog;
+var _32=this;
+if(ok){
+this.dialog.getElementById("ok").onclick=ok;
+}else{
+this.dialog.getElementById("ok").onclick=function(){
+_32.hide();
+};
+}
+if(_31){
+this.dialog.getElementById("cancel").onclick=_31;
+}else{
+this.dialog.getElementById("cancel").onclick=function(){
+_32.hide();
+};
+}
+this.mainPluginObject.editor.disableToolbar(["fullscreen","smartreplace"]);
+this.dialog.show(_2f);
+this.dialog.onresize();
+};
+SmartReplace.Dialog.prototype.hide=function(){
+this.mainPluginObject.editor.enableToolbar();
+return this.dialog.hide();
+};
+

Propchange: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SmartReplace/smart-replace.js
------------------------------------------------------------------------------
    svn:eol-style = native

Added: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/README
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/README?view=auto&rev=558490
==============================================================================
--- cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/README (added)
+++ cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/README Sun Jul 22 07:50:10 2007
@@ -0,0 +1,8 @@
+ExecCGI Note:
+If you intend to use the perl (.cgi) backend then you will need to have the ExecCGI option enabled for this directory (if you are using Apache), you may be able to do this by adding a file called .htaccess in this directory, with the below contents.
+
+## EXAMPLE .htaccess
+Options +ExecCGI
+####################
+
+It is however recommended that you use the PHP backend where possible.
\ No newline at end of file

Propchange: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/README
------------------------------------------------------------------------------
    svn:eol-style = native

Added: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/aspell_setup.php
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/aspell_setup.php?view=auto&rev=558490
==============================================================================
--- cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/aspell_setup.php (added)
+++ cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/aspell_setup.php Sun Jul 22 07:50:10 2007
@@ -0,0 +1,123 @@
+<?php
+// REVISION HISTORY:
+//
+// 2005-08-17 YmL:
+//	.	security fix on unchecked variables. Original author missed quite a few
+//		holes.
+
+  umask(000);
+  $temptext = tempnam('/tmp', 'spell_');
+  if ((!isset($_POST['dictionary'])) || (strlen(trim($_POST['dictionary'])) < 1))
+  {
+      $lang = 'en_GB';
+  }
+  else
+  {
+      $lang = $_POST['dictionary'];
+  }  
+  $lang = preg_replace('/[^a-z0-9_]/i', '', $lang);
+  
+  $aspell      = 'aspell';
+  $aspell_args = '-a --lang=' . $lang;
+
+  if(DIRECTORY_SEPARATOR == '\\') //windows
+  {
+    $aspell         = 'C:\Progra~1\Aspell\bin\aspell.exe';
+  }
+  else //linux
+  {
+    // See if there is a local install of aspell here
+    if(file_exists(dirname(__FILE__) . '/aspell/bin/aspell'))
+    {
+      putenv('PATH=' . dirname(__FILE__) . '/aspell/bin:' . getenv('PATH'));
+      putenv('LD_LIBRARY_PATH=' . dirname(__FILE__) . '/aspell/lib:' . getenv('LD_LIBRARY_PATH'));
+      $dicfil = dirname(__FILE__) .'/aspell/lib/' . preg_replace('/^.*\/lib\/(aspell\S*)\n.*/s', '$1', `aspell config dict-dir`);
+      $aspell_args .= ' --dict-dir=' . $dicfil . ' --add-filter-path=' . $dicfil ;
+    }
+  }
+
+
+  // Old aspell doesn't know about encoding, which means that unicode will be broke, but
+  // we should at least let it try.
+  preg_match('/really aspell ([0-9]+)\.([0-9]+)(?:\.([0-9]+))?/i', `$aspell version`, $aVer);
+
+  $aVer = array('major' => (int)$aVer[1], 'minor' => (int)$aVer[2], 'release' => (int)@$aVer[3]);
+  if($aVer['major'] >= 0 && $aVer['minor'] >= 60)
+  {
+    $aspell_args   .= ' -H --encoding=utf-8';
+  }
+  elseif(preg_match('/--encoding/', shell_exec('aspell 2>&1')))
+  {
+    $aspell_args   .= ' --mode=none --add-filter=sgml --encoding=utf-8';
+  }
+  else
+  {
+    $aspell_args   .= ' --mode=none --add-filter=sgml';
+  }
+
+  // Personal dictionaries
+  $p_dicts_path = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'personal_dicts';
+
+  if(isset($_REQUEST['p_dicts_path']) && file_exists($_REQUEST['p_dicts_path']) && is_writable($_REQUEST['p_dicts_path']))
+  {
+    if(!isset($_REQUEST['p_dicts_name']))
+    {
+      if(isset($_COOKIE['SpellChecker_p_dicts_name']))
+      {
+        $_REQUEST['p_dicts_name'] = $_COOKIE['SpellChecker_p_dicts_name'];
+      }
+      else
+      {
+        $_REQUEST['p_dicts_name'] = uniqid('dict');
+        setcookie('SpellChecker_p_dicts_name', $_REQUEST['p_dicts_name'], time() + 60*60*24*365*10);
+      }
+    }    
+    $p_dict_path = $_REQUEST['p_dicts_path'] . DIRECTORY_SEPARATOR . preg_replace('/[^a-z0-9_]/i', '', $_REQUEST['p_dicts_name']);
+
+    if(!file_exists($p_dict_path))
+    {
+	 	// since there is a single directory for all users this could end up containing
+		// quite a few subdirectories. To prevent a DOS situation we'll limit the 
+		// total directories created to 2000 (arbitrary). Adjust to suit your installation.
+
+		$count = 0;
+
+		if( $dir = @opendir( $p_dicts_path ) )
+			{
+
+			while( FALSE !== ($file = readdir($dir)) )
+				{
+				$count++;
+				}
+			}
+
+		// TODO: make this a config value.
+
+		if ( $count > 2000 )
+			{
+
+			// either very heavy use or a DOS attempt
+
+			die();
+
+			}
+
+      mkdir($p_dict_path);
+      chmod($p_dict_path, 02770);
+    }
+
+    if(file_exists($p_dict_path) && is_writable($p_dict_path))
+    {
+      // Good To Go!
+      $aspell_args .= ' --home-dir=' . $p_dict_path ;
+    }
+  }
+
+// as an additional precaution check the aspell_args for illegal 
+// characters
+  $aspell_args = preg_replace( "/[|><;\$]+/", '', $aspell_args );
+  $aspelldictionaries = "$aspell dump dicts";
+  $aspellcommand      = "$aspell $aspell_args < $temptext";
+
+
+?>

Added: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/img/he-spell-check.gif
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/img/he-spell-check.gif?view=auto&rev=558490
==============================================================================
Binary file - no diff available.

Propchange: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/img/he-spell-check.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/img/spell-check.gif
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/img/spell-check.gif?view=auto&rev=558490
==============================================================================
Binary file - no diff available.

Propchange: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/img/spell-check.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/lang/cz.js
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/lang/cz.js?view=auto&rev=558490
==============================================================================
--- cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/lang/cz.js (added)
+++ cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/lang/cz.js Sun Jul 22 07:50:10 2007
@@ -0,0 +1,26 @@
+// I18N constants
+// LANG: "cz", ENCODING: UTF-8
+// Author: Jiri Löw, <ji...@jirilow.com>
+{
+  "Please confirm that you want to open this link": "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 mispelled words found with the selected dictionary.": "Podle zvoleného slovníku nebyla nalezena žádná chybná slova.",
+  "Spell check complete, didn't find any mispelled words.  Closing now...": "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",
+  "This will drop changes and quit spell checker.  Please confirm.": "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",
+  "Spell-check": "Kontrola správnosti slov",
+  "Suggestions": "Doporučení",
+  "One moment...": "strpení prosím ;-)"
+};

Propchange: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/lang/cz.js
------------------------------------------------------------------------------
    svn:eol-style = native

Added: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/lang/da.js
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/lang/da.js?view=auto&rev=558490
==============================================================================
--- cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/lang/da.js (added)
+++ cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/lang/da.js Sun Jul 22 07:50:10 2007
@@ -0,0 +1,26 @@
+// I18N constants
+// LANG: "da", ENCODING: UTF-8
+// Author: Steen SÞnderup, <st...@soenderup.com>
+{
+  "Please confirm that you want to open this link": "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 mispelled words found with the selected dictionary.": "Der blev ikke fundet nogle stavefejl med den valgte ordbog.",
+  "Spell check complete, didn't find any mispelled words.  Closing now...": "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",
+  "This will drop changes and quit spell checker.  Please confirm.": "Alle dine Êndringer vil gå tabt, vil du fortsÊtte?",
+  "Re-check": "Tjek igen",
+  "Replace all": "Erstat alle",
+  "Replace with": "Erstat med",
+  "Replace": "Erstat",
+  "Spell-check": "Stavekontrol",
+  "Suggestions": "Forslag",
+  "One moment...": "Vent venligst"
+};

Propchange: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/lang/da.js
------------------------------------------------------------------------------
    svn:eol-style = native

Added: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/lang/de.js
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/lang/de.js?view=auto&rev=558490
==============================================================================
--- cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/lang/de.js (added)
+++ cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/lang/de.js Sun Jul 22 07:50:10 2007
@@ -0,0 +1,26 @@
+// I18N constants
+// LANG: "en", ENCODING: UTF-8
+// Author: Broxx, <br...@broxx.com>
+{
+  "Please confirm that you want to open this link": "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 mispelled words found with the selected dictionary.": "Keine falschen Woerter mit gewaehlten Woerterbuch gefunden",
+  "Spell check complete, didn't find any mispelled words.  Closing now...": "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",
+  "This will drop changes and quit spell checker.  Please confirm.": "Aenderungen werden nicht uebernommen.  Bitte bestaettigen.",
+  "Re-check": "Neuueberpruefung",
+  "Replace all": "Alle ersetzen",
+  "Replace with": "Ersetzen mit",
+  "Replace": "Ersetzen",
+  "Spell-check": "Ueberpruefung",
+  "Suggestions": "Vorschlag",
+  "One moment...": "Bitte warten..."
+};

Propchange: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/lang/de.js
------------------------------------------------------------------------------
    svn:eol-style = native

Added: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/lang/fr.js
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/lang/fr.js?view=auto&rev=558490
==============================================================================
--- cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/lang/fr.js (added)
+++ cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/lang/fr.js Sun Jul 22 07:50:10 2007
@@ -0,0 +1,26 @@
+// I18N constants
+// LANG: "fr", ENCODING: UTF-8
+{
+  "Please confirm that you want to open this link": "Veuillez confirmer l'ouverture de ce lien",
+  "Cancel": "Annuler",
+  "Dictionary": "Dictionnaire",
+  "Finished list of mispelled words": "Liste des mots mal orthographiés",
+  "I will open it in a new page.": "Ouverture dans une nouvelle fenêtre",
+  "Ignore all": "Tout ignorer",
+  "Ignore": "Ignorer",
+  "No mispelled words found with the selected dictionary.": "Aucune erreur orthographique avec le dictionnaire sélectionné.",
+  "Spell check complete, didn't find any mispelled words.  Closing now...": "Vérification terminée, aucune erreur orthographique détectée.  Fermeture en cours...",
+  "OK": "OK",
+  "Original word": "Mot original",
+  "Please wait.  Calling spell checker.": "Veuillez patienter.  Appel du correcteur.",
+  "Please wait: changing dictionary to": "Veuillez patienter. Changement du dictionnaire vers",
+  "This will drop changes and quit spell checker.  Please confirm.": "Ceci fermera la fenêtre et annulera les modifications. Veuillez confirmer.",
+  "Re-check": "Vérifier encore",
+  "Replace all": "Tout remplacer",
+  "Replace with": "Remplacer par",
+  "Replace": "Remplacer",
+  "Revert": "Annuler",
+  "Spell-check": "Correction",
+  "Suggestions": "Suggestions",
+  "One moment...": "Veuillez patienter"
+};
\ No newline at end of file

Propchange: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/lang/fr.js
------------------------------------------------------------------------------
    svn:eol-style = native

Added: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/lang/he.js
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/lang/he.js?view=auto&rev=558490
==============================================================================
--- cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/lang/he.js (added)
+++ cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/lang/he.js Sun Jul 22 07:50:10 2007
@@ -0,0 +1,27 @@
+// I18N constants
+// LANG: "en", ENCODING: UTF-8
+// Author: Mihai Bazon, http://dynarch.com/mishoo
+{
+  "Please confirm that you want to open this link": "אנא אשר שברצונך לפתוח קישור זה",
+  "Cancel": "ביטול",
+  "Dictionary": "מילון",
+  "Finished list of mispelled words": "הסתיימה רשימת המילים המאויתות באופן שגוי",
+  "I will open it in a new page.": "אני אפתח את זה בחלון חדש.",
+  "Ignore all": "התעלם מהכל",
+  "Ignore": "התעלם",
+  "No mispelled words found with the selected dictionary.": "לא נמצאו מילים מאויתות באופן שגוי עם המילון הנבחר.",
+  "Spell check complete, didn't find any mispelled words.  Closing now...": "בדיקת האיות נסתיימה, לא נמצאו מילים מאויתות באופן שגוי.  נסגר כעת...",
+  "OK": "אישור",
+  "Original word": "המילה המקורית",
+  "Please wait.  Calling spell checker.": "אנא המתן.  קורא לבודק איות.",
+  "Please wait: changing dictionary to": "אנא המתן: מחליף מילון ל-",
+  "This will drop changes and quit spell checker.  Please confirm.": "זה יבטל את השינויים ויצא מבודק האיות.  אנא אשר.",
+  "Re-check": "בדוק מחדש",
+  "Replace all": "החלף הכל",
+  "Replace with": "החלף ב-",
+  "Replace": "החלף",
+  "Revert": "החזר שינויים",
+  "Spell-check": "בדיקת איות",
+  "Suggestions": "הצעות",
+  "One moment...": "ענא המטן ;-)"
+};

Propchange: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/lang/he.js
------------------------------------------------------------------------------
    svn:eol-style = native

Added: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/lang/hu.js
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/lang/hu.js?view=auto&rev=558490
==============================================================================
--- cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/lang/hu.js (added)
+++ cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/lang/hu.js Sun Jul 22 07:50:10 2007
@@ -0,0 +1,26 @@
+// I18N constants
+// LANG: "hu", ENCODING: UTF-8
+// Author: Miklós Somogyi, <so...@vnet.hu>
+{
+  "Please confirm that you want to open this link": "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 mispelled words found with the selected dictionary.": "A választott szótár szerint nincs tévesztett szó.",
+  "Spell check complete, didn't find any mispelled words.  Closing now...": "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",
+  "This will drop changes and quit spell checker.  Please confirm.": "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",
+  "Spell-check": "Helyesírásellenőrzés",
+  "Suggestions": "Tippek",
+  "One moment...": "Kis türelmet ;-)"
+};

Propchange: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/lang/hu.js
------------------------------------------------------------------------------
    svn:eol-style = native

Added: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/lang/ja.js
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/lang/ja.js?view=auto&rev=558490
==============================================================================
--- cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/lang/ja.js (added)
+++ cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/lang/ja.js Sun Jul 22 07:50:10 2007
@@ -0,0 +1,28 @@
+// I18N constants
+// LANG: "ja", ENCODING: UTF-8
+{
+  "Please confirm that you want to open this link": "本当にこのリンクを開きますか",
+  "Cancel": "中止",
+  "Dictionary": "辞書",
+  "Finished list of mispelled words": "つづり間違単語の一覧",
+  "I will open it in a new page.": "新しいページで開きます。",
+  "Ignore all": "すべて無視",
+  "Ignore": "無視",
+  "No mispelled words found with the selected dictionary.": "選択された辞書にはつづり間違い単語がありません。",
+  "Spell check complete, didn't find any mispelled words.  Closing now...": "スペルチェックが完了しましたが、つづり間違い単語はありませんでした。すぐに閉じます...",
+  "OK": "OK",
+  "Original word": "元の単語",
+  "Please wait.  Calling spell checker.": "しばらくお待ちください。スペルチェッカーを呼び出しています。",
+  "Please wait: changing dictionary to": "しばらくお待ちください: 辞書を切り替えています",
+  "This will drop changes and quit spell checker.  Please confirm.": "変更を破棄してスペルチェッカーを終了します。よろしいいですか。",
+  "Re-check": "再チェック",
+  "Replace all": "すべて置換",
+  "Replace with": "これに置換",
+  "Replace": "置換",
+  "Revert": "戻す",
+  "Spell-check": "スペルチェック",
+  "Suggestions": "候補",
+  "One moment...": "あともう少し...",
+  "Info": "情報",
+  "Learn": "学習"
+};
\ No newline at end of file

Propchange: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/lang/ja.js
------------------------------------------------------------------------------
    svn:eol-style = native

Added: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/lang/nb.js
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/lang/nb.js?view=auto&rev=558490
==============================================================================
--- cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/lang/nb.js (added)
+++ cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/lang/nb.js Sun Jul 22 07:50:10 2007
@@ -0,0 +1,26 @@
+// I18N constants
+// LANG: "nb", ENCODING: UTF-8
+// translated: Kim Steinhaug, http://www.steinhaug.com/, kim@steinhaug.com
+{
+  "Please confirm that you want to open this link": "Ønsker du å åpne denne lenken",
+  "Cancel": "Avbryt",
+  "Dictionary": "Ordliste",
+  "Finished list of mispelled words": "Ferdig med liste over feilstavede ord",
+  "I will open it in a new page.": "Åpnes i ny side",
+  "Ignore all": "Ignorer alle",
+  "Ignore": "Ignorer",
+  "No mispelled words found with the selected dictionary.": "Ingen feilstavede ord funnet med den valgte ordlisten",
+  "Spell check complete, didn't find any mispelled words.  Closing now...": "Stavekontroll fullført, ingen feilstavede ord ble funnet, stavekontroll avsluttes.",
+  "OK": "OK",
+  "Original word": "Opprinnelig ord",
+  "Please wait.  Calling spell checker.": "Vennligst vent, kaller opp stavekontrollprogrammet",
+  "Please wait: changing dictionary to": "Vennligst vent, endrer ordliste til",
+  "This will drop changes and quit spell checker.  Please confirm.": "Dette vil droppe endringene og avbryte stavekontrollen, vennligst bekreft.",
+  "Re-check": "Kjør stavekontroll på nytt",
+  "Replace all": "Erstatt alle",
+  "Replace with": "Erstatt med",
+  "Replace": "Erstatt",
+  "Spell-check": "Stavekontroll",
+  "Suggestions": "Forslag",
+  "One moment...": "Et øyeblikk..."
+};
\ No newline at end of file

Propchange: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/lang/nb.js
------------------------------------------------------------------------------
    svn:eol-style = native

Added: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/lang/nl.js
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/lang/nl.js?view=auto&rev=558490
==============================================================================
--- cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/lang/nl.js (added)
+++ cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/lang/nl.js Sun Jul 22 07:50:10 2007
@@ -0,0 +1,27 @@
+// I18N constants
+// LANG: "nl", ENCODING: UTF-8
+// Author: A.H van den Broek  http://www.kontaktfm.nl, tonbroek@kontaktfm.nl
+{
+  "Please confirm that you want to open this link": "Weet u zeker dat u deze link wilt openen?",
+  "Cancel": "Annuleer",
+  "Dictionary": "Woordenboek",
+  "Finished list of mispelled words": "klaar met de lijst van fouten woorden",
+  "I will open it in a new page.": "Ik zal het in een nieuwe pagina openen.",
+  "Ignore all": "alles overslaan",
+  "Ignore": "Overslaan",
+  "No mispelled words found with the selected dictionary.": "Geen fouten gevonden met dit woordenboek.",
+  "Spell check complete, didn't find any mispelled words.  Closing now...": "Spell checking is klaar, geen fouten gevonden.  spell checking word gesloten...",
+  "OK": "OK",
+  "Original word": "Originele woord",
+  "Please wait.  Calling spell checker.": "Even wachten. spell checker wordt geladen.",
+  "Please wait: changing dictionary to": "even wachten: woordenboek wordt veranderd naar",
+  "This will drop changes and quit spell checker.  Please confirm.": "Dit zal alle veranderingen annuleren en de spell checker sluiten.  Weet u het zeker?",
+  "Re-check": "Opnieuw",
+  "Replace all": "Alles vervangen",
+  "Replace with": "Vervangen met",
+  "Replace": "Vervangen",
+  "Revert": "Omkeren",
+  "Spell-check": "Spell-check",
+  "Suggestions": "Suggestie",
+  "One moment...": "Even wachten ;-)"
+};

Propchange: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/lang/nl.js
------------------------------------------------------------------------------
    svn:eol-style = native

Added: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/lang/ro.js
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/lang/ro.js?view=auto&rev=558490
==============================================================================
--- cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/lang/ro.js (added)
+++ cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/lang/ro.js Sun Jul 22 07:50:10 2007
@@ -0,0 +1,26 @@
+// I18N constants
+// LANG: "ro", ENCODING: UTF-8
+// Author: Mihai Bazon, http://dynarch.com/mishoo
+{
+  "Please confirm that you want to open this link": "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 mispelled words found with the selected dictionary.": "Nu am găsit nici un cuvânt greşit cu acest dicţionar.",
+  "Spell check complete, didn't find any mispelled words.  Closing now...": "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",
+  "This will drop changes and quit spell checker.  Please confirm.": "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",
+  "Spell-check": "Detectează greşeli",
+  "Suggestions": "Sugestii",
+  "One moment...": "va rog ashteptatzi ;-)"
+};

Propchange: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/lang/ro.js
------------------------------------------------------------------------------
    svn:eol-style = native

Added: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/readme-tech.html
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/readme-tech.html?view=auto&rev=558490
==============================================================================
--- cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/readme-tech.html (added)
+++ cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/readme-tech.html Sun Jul 22 07:50:10 2007
@@ -0,0 +1,114 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.2//EN">
+<html>
+  <head>
+    <title>HTMLArea Spell Checker</title>
+  </head>
+
+  <body>
+    <h1>HTMLArea Spell Checker</h1>
+
+    <p>The HTMLArea Spell Checker subsystem consists of the following
+      files:</p>
+
+    <ul>
+
+      <li>spell-checker.js &mdash; the spell checker plugin interface for
+        HTMLArea</li>
+
+      <li>spell-checker-ui.html &mdash; the HTML code for the user
+        interface</li>
+
+      <li>spell-checker-ui.js &mdash; functionality of the user
+        interface</li>
+
+      <li>spell-checker-logic.cgi &mdash; Perl CGI script that checks a text
+        given through POST for spelling errors</li>
+
+      <li>spell-checker-style.css &mdash; style for mispelled words</li>
+
+      <li>lang/en.js &mdash; main language file (English).</li>
+
+    </ul>
+
+    <h2>Process overview</h2>
+
+    <p>
+      When an end-user clicks the "spell-check" button in the HTMLArea
+      editor, a new window is opened with the URL of "spell-check-ui.html".
+      This window initializes itself with the text found in the editor (uses
+      <tt>window.opener.SpellChecker.editor</tt> global variable) and it
+      submits the text to the server-side script "spell-check-logic.cgi".
+      The target of the FORM is an inline frame which is used both to
+      display the text and correcting.
+    </p>
+
+    <p>
+      Further, spell-check-logic.cgi calls Aspell for each portion of plain
+      text found in the given HTML.  It rebuilds an HTML file that contains
+      clear marks of which words are incorrect, along with suggestions for
+      each of them.  This file is then loaded in the inline frame.  Upon
+      loading, a JavaScript function from "spell-check-ui.js" is called.
+      This function will retrieve all mispelled words from the HTML of the
+      iframe and will setup the user interface so that it allows correction.
+    </p>
+
+    <h2>The server-side script (spell-check-logic.cgi)</h2>
+
+    <p>
+      <strong>Unicode safety</strong> &mdash; the program <em>is</em>
+      Unicode safe.  HTML entities are expanded into their corresponding
+      Unicode characters.  These characters will be matched as part of the
+      word passed to Aspell.  All texts passed to Aspell are in Unicode
+      (when appropriate).  <strike>However, Aspell seems to not support Unicode
+      yet (<a
+        href="http://mail.gnu.org/archive/html/aspell-user/2000-11/msg00007.html">thread concerning Aspell and Unicode</a>).
+      This mean that words containing Unicode
+      characters that are not in 0..255 are likely to be reported as "mispelled" by Aspell.</strike>
+    </p>
+
+    <p>
+      <strong style="font-variant: small-caps; color:
+      red;">Update:</strong> though I've never seen it mentioned
+      anywhere, it looks that Aspell <em>does</em>, in fact, speak
+      Unicode.  Or else, maybe <code>Text::Aspell</code> does
+      transparent conversion; anyway, this new version of our
+      SpellChecker plugin is, as tests show so far, fully
+      Unicode-safe... well, probably the <em>only</em> freeware
+      Web-based spell-checker which happens to have Unicode support.
+    </p>
+
+    <p>
+      The Perl Unicode manual (man perluniintro) states:
+    </p>
+
+    <blockquote>
+      <em>
+        Starting from Perl 5.6.0, Perl has had the capacity to handle Unicode
+        natively.  Perl 5.8.0, however, is the first recommended release for
+        serious Unicode work.  The maintenance release 5.6.1 fixed many of the
+        problems of the initial Unicode implementation, but for example regular
+        expressions still do not work with Unicode in 5.6.1.
+      </em>
+    </blockquote>
+
+    <p>In other words, do <em>not</em> assume that this script is
+      Unicode-safe on Perl interpreters older than 5.8.0.</p>
+
+    <p>The following Perl modules are required:</p>
+
+    <ul>
+      <li><a href="http://search.cpan.org/search?query=Text%3A%3AAspell&mode=all" target="_blank">Text::Aspell</a></li>
+      <li><a href="http://search.cpan.org/search?query=XML%3A%3ADOM&mode=all" target="_blank">XML::DOM</a></li>
+      <li><a href="http://search.cpan.org/search?query=CGI&mode=all" target="_blank">CGI</a></li>
+    </ul>
+
+    <p>Of these, only Text::Aspell might need to be installed manually.  The
+      others are likely to be available by default in most Perl distributions.</p>
+
+    <hr />
+    <address><a href="http://dynarch.com/mishoo/">Mihai Bazon</a></address>
+<!-- Created: Thu Jul 17 13:22:27 EEST 2003 -->
+<!-- hhmts start --> Last modified: Fri Jan 30 19:14:11 EET 2004 <!-- hhmts end -->
+<!-- doc-lang: English -->
+  </body>
+</html>

Propchange: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/readme-tech.html
------------------------------------------------------------------------------
    svn:eol-style = native

Added: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/spell-check-logic.cgi
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/spell-check-logic.cgi?view=auto&rev=558490
==============================================================================
--- cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/spell-check-logic.cgi (added)
+++ cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/spell-check-logic.cgi Sun Jul 22 07:50:10 2007
@@ -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: spell-check-logic.cgi 21 2005-02-19 05:23:56Z gogo $
+
+use strict;
+use utf8;
+use Encode;
+use Text::Aspell;
+use XML::DOM;
+use CGI;
+
+my $TIMER_start = undef;
+eval {
+    use Time::HiRes qw( gettimeofday tv_interval );
+    $TIMER_start = [gettimeofday()];
+};
+# use POSIX qw( locale_h );
+
+binmode STDIN, ':utf8';
+binmode STDOUT, ':utf8';
+
+my $debug = 0;
+
+my $speller = new Text::Aspell;
+my $cgi = new CGI;
+
+my $total_words = 0;
+my $total_mispelled = 0;
+my $total_suggestions = 0;
+my $total_words_suggested = 0;
+
+# FIXME: report a nice error...
+die "Can't create speller!" unless $speller;
+
+my $dict = $cgi->param('dictionary') || $cgi->cookie('dictionary') || 'en';
+
+# add configurable option for this
+$speller->set_option('lang', $dict);
+$speller->set_option('encoding', 'UTF-8');
+#setlocale(LC_CTYPE, $dict);
+
+# ultra, fast, normal, bad-spellers
+# bad-spellers seems to cause segmentation fault
+$speller->set_option('sug-mode', 'normal');
+
+my %suggested_words = ();
+keys %suggested_words = 128;
+
+my $file_content = decode('UTF-8', $cgi->param('content'));
+$file_content = parse_with_dom($file_content);
+
+my $ck_dictionary = $cgi->cookie(-name     => 'dictionary',
+                                 -value    => $dict,
+                                 -expires  => '+30d');
+
+print $cgi->header(-type    => 'text/html; charset: utf-8',
+                   -cookie  => $ck_dictionary);
+
+my $js_suggested_words = make_js_hash(\%suggested_words);
+my $js_spellcheck_info = make_js_hash_from_array
+  ([
+    [ 'Total words'           , $total_words ],
+    [ 'Mispelled words'       , $total_mispelled . ' in dictionary \"'.$dict.'\"' ],
+    [ 'Total suggestions'     , $total_suggestions ],
+    [ 'Total words suggested' , $total_words_suggested ],
+    [ 'Spell-checked in'      , defined $TIMER_start ? (tv_interval($TIMER_start) . ' seconds') : 'n/a' ]
+   ]);
+
+print qq^<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<link rel="stylesheet" type="text/css" media="all" href="spell-check-style.css" />
+<script type="text/javascript">
+  var suggested_words = { $js_suggested_words };
+  var spellcheck_info = { $js_spellcheck_info }; </script>
+</head>
+<body onload="window.parent.finishedSpellChecking();">^;
+
+print $file_content;
+if ($cgi->param('init') eq '1') {
+    my @dicts = $speller->dictionary_info();
+    my $dictionaries = '';
+    foreach my $i (@dicts) {
+        next if $i->{jargon};
+        my $name = $i->{name};
+        if ($name eq $dict) {
+            $name = '@'.$name;
+        }
+        $dictionaries .= ',' . $name;
+    }
+    $dictionaries =~ s/^,//;
+    print qq^<div id="HA-spellcheck-dictionaries">$dictionaries</div>^;
+}
+
+print '</body></html>';
+
+# Perl is beautiful.
+sub spellcheck {
+    my $node = shift;
+    my $doc = $node->getOwnerDocument;
+    my $check = sub {                 # called for each word in the text
+        # input is in UTF-8
+        my $word = shift;
+        my $already_suggested = defined $suggested_words{$word};
+        ++$total_words;
+        if (!$already_suggested && $speller->check($word)) {
+            return undef;
+        } else {
+            # we should have suggestions; give them back to browser in UTF-8
+            ++$total_mispelled;
+            if (!$already_suggested) {
+                # compute suggestions for this word
+                my @suggestions = $speller->suggest($word);
+                my $suggestions = decode($speller->get_option('encoding'), join(',', @suggestions));
+                $suggested_words{$word} = $suggestions;
+                ++$total_suggestions;
+                $total_words_suggested += scalar @suggestions;
+            }
+            # HA-spellcheck-error
+            my $err = $doc->createElement('span');
+            $err->setAttribute('class', 'HA-spellcheck-error');
+            my $tmp = $doc->createTextNode;
+            $tmp->setNodeValue($word);
+            $err->appendChild($tmp);
+            return $err;
+        }
+    };
+    while ($node->getNodeValue =~ /([\p{IsWord}']+)/) {
+        my $word = $1;
+        my $before = $`;
+        my $after = $';
+        my $df = &$check($word);
+        if (!$df) {
+            $before .= $word;
+        }
+        {
+            my $parent = $node->getParentNode;
+            my $n1 = $doc->createTextNode;
+            $n1->setNodeValue($before);
+            $parent->insertBefore($n1, $node);
+            $parent->insertBefore($df, $node) if $df;
+            $node->setNodeValue($after);
+        }
+    }
+};
+
+sub check_inner_text {
+    my $node = shift;
+    my $text = '';
+    for (my $i = $node->getFirstChild; defined $i; $i = $i->getNextSibling) {
+        if ($i->getNodeType == TEXT_NODE) {
+            spellcheck($i);
+        }
+    }
+};
+
+sub parse_with_dom {
+    my ($text) = @_;
+    $text = '<spellchecker>'.$text.'</spellchecker>';
+
+    my $parser = new XML::DOM::Parser;
+    if ($debug) {
+        open(FOO, '>:utf8', '/tmp/foo');
+        print FOO $text;
+        close FOO;
+    }
+    my $doc = $parser->parse($text);
+    my $nodes = $doc->getElementsByTagName('*');
+    my $n = $nodes->getLength;
+
+    for (my $i = 0; $i < $n; ++$i) {
+        my $node = $nodes->item($i);
+        if ($node->getNodeType == ELEMENT_NODE) {
+            check_inner_text($node);
+        }
+    }
+
+    my $ret = $doc->toString;
+    $ret =~ s{<spellchecker>(.*)</spellchecker>}{$1}sg;
+    return $ret;
+};
+
+sub make_js_hash {
+    my ($hash) = @_;
+    my $js_hash = '';
+    while (my ($key, $val) = each %$hash) {
+        $js_hash .= ',' if $js_hash;
+        $js_hash .= '"'.$key.'":"'.$val.'"';
+    }
+    return $js_hash;
+};
+
+sub make_js_hash_from_array {
+    my ($array) = @_;
+    my $js_hash = '';
+    foreach my $i (@$array) {
+        $js_hash .= ',' if $js_hash;
+        $js_hash .= '"'.$i->[0].'":"'.$i->[1].'"';
+    }
+    return $js_hash;
+};

Propchange: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/spell-check-logic.cgi
------------------------------------------------------------------------------
    svn:eol-style = native

Added: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/spell-check-logic.php
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/spell-check-logic.php?view=auto&rev=558490
==============================================================================
--- cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/spell-check-logic.php (added)
+++ cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/spell-check-logic.php Sun Jul 22 07:50:10 2007
@@ -0,0 +1,171 @@
+<?php
+  $text = stripslashes($_POST['content']);
+
+  // Convert UTF-8 multi-bytes into decimal character entities.  This is because
+  // aspell isn't fully utf8-aware - ticket:120 raises the possibility 
+  // that this is not required (any more) and so you can turn it off
+  // with editor.config.SpellChecker.utf8_to_entities = false 
+  if(!isset($_REQUEST['utf8_to_entitis']) || $_REQUEST['utf8_to_entities'])
+  {
+    $text = preg_replace('/([\xC0-\xDF][\x80-\xBF])/e', "'&#' . utf8_ord('\$1') . ';'", $text);
+    $text = preg_replace('/([\xE0-\xEF][\x80-\xBF][\x80-\xBF])/e',             "'&#' . utf8_ord('\$1') . ';'",  $text);
+    $text = preg_replace('/([\xF0-\xF7][\x80-\xBF][\x80-\xBF][\x80-\xBF])/e', "'&#' . utf8_ord('\$1') . ';'",   $text);
+  }
+  
+  function utf8_ord($chr)
+  {
+    switch(strlen($chr))
+    {
+      case 1 :
+        return ord($chr);
+
+      case 2 :
+        $ord = ord($chr{1}) & 63;
+        $ord = $ord | ((ord($chr{0}) & 31) << 6);
+        return $ord;
+
+      case 3 :
+        $ord = ord($chr{2}) & 63;
+        $ord = $ord | ((ord($chr{1}) & 63) << 6);
+        $ord = $ord | ((ord($chr{0}) & 15) << 12);
+        return $ord;
+
+      case 4 :
+        $ord = ord($chr{3}) & 63;
+        $ord = $ord | ((ord($chr{2}) & 63) << 6);
+        $ord = $ord | ((ord($chr{1}) & 63) << 12);
+        $ord = $ord | ((ord($chr{0}) & 7)  << 18);
+        return $ord;
+
+      default :
+        trigger_error('Character not utf-8', E_USER_ERROR);
+    }
+  }
+
+  require_once(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'aspell_setup.php');
+
+##############################################################################
+header('Content-Type: text/html; charset=utf-8');
+  echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<link rel="stylesheet" type="text/css" media="all" href="spell-check-style.css" />';
+
+// Lets define some values outside the condition below, in case we have an empty 
+// document.                                                                     
+$textarray = array();
+$varlines = '<script type="text/javascript">var suggested_words = { ';
+$infolines = 'var spellcheck_info = {';
+$counter = 0;
+$suggest_count = 0;
+
+if (trim($text) != "")
+{
+    if ($fd = fopen($temptext, 'w'))
+    {
+        $textarray = explode("\n", $text);
+        fwrite ($fd, "!\n");
+        foreach ($textarray as $key=>$value)
+        {
+            // adding the carat to each line prevents the use of aspell commands within the text...
+            fwrite($fd, "^$value\n");
+        }
+        fclose($fd);
+        chmod($temptext, 0777);
+        // next run aspell
+        $return = shell_exec($aspellcommand . ' 2>&1');
+        // echo $return;
+        unlink($temptext);
+        $returnarray = explode("\n", $return);
+        $returnlines = count($returnarray);
+//print_r(htmlentities($return));
+        $textlines = count($textarray);
+
+        $lineindex = -1;
+        $poscorrect = 0;
+        foreach ($returnarray as $key=>$value)
+        {
+            // if there is a correction here, processes it, else move the $textarray pointer to the next line
+            if (substr($value, 0, 1) == '&')
+            {
+               $counter=$counter+1;
+                $correction = explode(' ', $value);
+                $word = $correction[1];
+                $suggest_count += $correction[2];
+                $absposition = substr($correction[3], 0, -1) - 1;
+                $position = $absposition + $poscorrect;
+                $niceposition = $lineindex.','.$absposition;
+                $suggstart = strpos($value, ':') + 2;
+                $suggestions = substr($value, $suggstart);
+                $suggestionarray = explode(', ', $suggestions);
+
+                $beforeword = substr($textarray[$lineindex], 0, $position);
+                $afterword = substr($textarray[$lineindex], $position + strlen($word));
+                $textarray[$lineindex] = $beforeword.'<span class="HA-spellcheck-error">'.$word.'</span>'.$afterword;
+
+             $suggestion_list = '';
+                foreach ($suggestionarray as $key=>$value)
+                {
+                    $suggestion_list .= $value.',';
+                }
+                $suggestion_list = substr($suggestion_list, 0, strlen($suggestion_list) - 1);
+                $varlines .= '"'.$word.'":"'.$suggestion_list.'",';
+
+                $poscorrect = $poscorrect + 41;
+            }
+            elseif (substr($value, 0, 1) == '#')
+            {
+                $correction = explode(' ', $value);
+                $word = $correction[1];
+                $absposition = $correction[2] - 1;
+                $position = $absposition + $poscorrect;
+                $niceposition = $lineindex.','.$absposition;
+                $beforeword = substr($textarray[$lineindex], 0, $position);
+                $afterword = substr($textarray[$lineindex], $position + strlen($word));
+                $textarray[$lineindex] = $beforeword.$word.$afterword;
+                $textarray[$lineindex] = $beforeword.'<span class="HA-spellcheck-error">'.$word.'</span><span class="HA-spellcheck-suggestions">'.$word.'</span>'.$afterword;
+//                $poscorrect = $poscorrect;
+                $poscorrect = $poscorrect + 88 + strlen($word);
+            }
+            else
+            {
+                //print "Done with line $lineindex, next line...<br><br>";
+                $poscorrect = 0;
+                $lineindex = $lineindex + 1;
+            }
+         }
+     }
+     else
+     {
+       // This one isnt used for anything at the moment!
+       $return = 'failed to open!';
+     }
+} 
+else 
+{ 
+  $returnlines=0; 
+}
+$infolines .= '"Language Used":"'.$lang.'",';
+$infolines .= '"Mispelled words":"'.$counter.'",';
+$infolines .= '"Total words suggested":"'.$suggest_count.'",';
+$infolines .= '"Total Lines Checked":"'.$returnlines.'"';
+$infolines .= '};';
+$varlines = substr($varlines, 0, strlen($varlines) - 1);
+echo $varlines.'};'.$infolines.'</script>';
+
+echo '</head>
+<body onload="window.parent.finishedSpellChecking();">';
+
+foreach ($textarray as $key=>$value)
+{
+  echo $value;
+}
+
+$dictionaries = str_replace(chr(10),",", shell_exec($aspelldictionaries));
+if(ereg(",$",$dictionaries))
+  $dictionaries = ereg_replace(",$","",$dictionaries);
+echo '<div id="HA-spellcheck-dictionaries">'.$dictionaries.'</div>';
+
+echo '</body></html>';
+?>
\ No newline at end of file

Added: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/spell-check-savedicts.php
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/spell-check-savedicts.php?view=auto&rev=558490
==============================================================================
--- cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/spell-check-savedicts.php (added)
+++ cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/spell-check-savedicts.php Sun Jul 22 07:50:10 2007
@@ -0,0 +1,38 @@
+<?php
+  require_once(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'aspell_setup.php');
+
+
+  $to_p_dict = $_REQUEST['to_p_dict'] ? $_REQUEST['to_p_dict'] : array();
+  $to_r_list = $_REQUEST['to_r_list'] ? $_REQUEST['to_r_list'] : array();
+print_r($to_r_list);
+  if($to_p_dict || $to_r_list)
+  {
+    if($fh = fopen($temptext, 'w'))
+    {
+      foreach($to_p_dict as $personal_word)
+      {
+        $cmd = '&' . $personal_word . "\n";
+        echo $cmd;
+        fwrite($fh, $cmd, strlen($cmd));
+      }
+
+      foreach($to_r_list as $replace_pair)
+      {
+        $cmd = '$$ra ' . $replace_pair[0] . ' , ' . $replace_pair[1] . "\n";
+        echo $cmd;
+        fwrite($fh, $cmd, strlen($cmd));
+      }
+      $cmd = "#\n";
+      echo $cmd;
+      fwrite($fh, $cmd, strlen($cmd));
+      fclose($fh);
+    }
+    else
+    {
+      die("Can't Write");
+    }
+    echo $aspellcommand."\n";
+    echo shell_exec($aspellcommand . ' 2>&1');
+    unlink($temptext);
+  }
+?>
\ No newline at end of file

Added: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/spell-check-style.css
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/spell-check-style.css?view=auto&rev=558490
==============================================================================
--- cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/spell-check-style.css (added)
+++ cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/spell-check-style.css Sun Jul 22 07:50:10 2007
@@ -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; }

Propchange: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/spell-check-style.css
------------------------------------------------------------------------------
    svn:eol-style = native

Added: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/spell-check-ui.html
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/spell-check-ui.html?view=auto&rev=558490
==============================================================================
--- cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/spell-check-ui.html (added)
+++ cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/spell-check-ui.html Sun Jul 22 07:50:10 2007
@@ -0,0 +1,125 @@
+<!--
+
+  Strangely, IE sucks with or without the DOCTYPE switch.
+  I thought it would only suck without it.
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+
+   Spell Checker Plugin for HTMLArea-3.0
+   Sponsored by www.americanbible.org
+   Implementation by Mihai Bazon, http://dynarch.com/mishoo/
+
+   (c) dynarch.com 2003.
+   Distributed under the same terms as HTMLArea itself.
+   This notice MUST stay intact for use (see license.txt).
+
+   $Id: spell-check-ui.html 498 2006-04-30 09:46:23Z gogo $
+
+-->
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+  <head>
+    <title>Spell Checker</title>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    <script type="text/javascript" src="spell-check-ui.js"></script>
+
+    <style type="text/css">
+      html, body { height: 100%; margin: 0px; padding: 0px; background-color: #fff;
+      color: #000; }
+      a:link, a:visited { color: #00f; text-decoration: none; }
+      a:hover { color: #f00; text-decoration: underline; }
+
+      table { background-color: ButtonFace; color: ButtonText;
+      font-family: tahoma,verdana,sans-serif; font-size: 11px; }
+
+      iframe { background-color: #fff; color: #000; height: 100%; width: 100%; }
+
+      .controls { width: 13em; }
+      .controls .sectitle { /* background-color: #736c6c; color: #fff;
+      border-top: 1px solid #000; border-bottom: 1px solid #fff; */
+      text-align: center;
+      font-weight: bold; padding: 2px 4px; }
+      .controls .secbody { margin-bottom: 10px; }
+
+      button, select { font-family: tahoma,verdana,sans-serif; font-size: 11px; }
+      button { width: 6em; padding: 0px; }
+
+      input, select { font-family: fixed,"andale mono",monospace; }
+
+      #v_currentWord { color: #f00; font-weight: bold; }
+      #statusbar { padding: 7px 0px 0px 5px; }
+      #status { font-weight: bold; }
+    </style>
+
+  </head>
+
+  <body onload="initDocument()">
+
+    <form style="display: none;" action="spell-check-logic.cgi"
+          method="post" target="framecontent"
+          accept-charset="UTF-8"
+          ><input type="hidden" name="content" id="f_content"
+          /><input type="hidden" name="dictionary" id="f_dictionary"
+          /><input type="hidden" name="init" id="f_init" value="1"
+          /><input type="hidden" name="utf8_to_entities" id="utf8_to_entities" value="1"
+    /></form>
+
+    <table style="height: 100%; width: 100%; border-collapse: collapse;" cellspacing="0" cellpadding="0">
+      <tr>
+        <td colspan="2" style="height: 1em; padding: 2px;">
+          <div style="float: right; padding: 2px;"><span>Dictionary</span>
+            <select id="v_dictionaries" style="width: 10em"></select>
+            <button id="b_recheck">Re-check</button>
+          </div>
+          <span id="status">Please wait.  Calling spell checker.</span>
+        </td>
+      </tr>
+      <tr>
+        <td valign="top" class="controls">
+          <div class="secbody" style="text-align: center">
+            <button id="b_info">Info</button>
+          </div>
+          <div class="sectitle">Original word</div>
+          <div class="secbody" id="v_currentWord" style="text-align:
+          center; margin-bottom: 0px;">pliz weit ;-)</div>
+          <div class="secbody" style="text-align: center">
+            <button id="b_revert">Revert</button>
+          </div>
+          <div class="sectitle">Replace with</div>
+          <div class="secbody">
+            <input type="text" id="v_replacement" style="width: 94%; margin-left: 3%;" /><br />
+            <div style="text-align: center; margin-top: 2px;">
+              <button id="b_replace">Replace</button><button
+                id="b_replall">Replace all</button><br /><button
+                id="b_ignore">Ignore</button><button
+                id="b_ignall">Ignore all</button>
+                <button
+                id="b_learn">Learn</button>
+            </div>
+          </div>
+          <div class="sectitle">Suggestions</div>
+          <div class="secbody">
+            <select size="11" style="width: 94%; margin-left: 3%;" id="v_suggestions"></select>
+          </div>
+        </td>
+
+        <td>
+          <iframe src="../../popups/blank.html" width="100%" height="100%"
+            id="i_framecontent" name="framecontent"></iframe>
+        </td>
+      </tr>
+      <tr>
+        <td style="height: 1em;" colspan="2">
+          <div style="padding: 4px 2px 2px 2px; float: right;">
+            <button id="b_ok">OK</button>
+            <button id="b_cancel">Cancel</button>
+          </div>
+          <div id="statusbar"></div>
+        </td>
+      </tr>
+    </table>
+
+  </body>
+
+</html>

Propchange: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/org/apache/cocoon/forms/resources/xinha/plugins/SpellChecker/spell-check-ui.html
------------------------------------------------------------------------------
    svn:eol-style = native