re-added exidently removed images ;-)
BIN
phpgwapi/js/fckeditor/_samples/_plugins/findreplace/find.gif
Normal file
After Width: | Height: | Size: 595 B |
BIN
phpgwapi/js/fckeditor/_samples/_plugins/findreplace/replace.gif
Normal file
After Width: | Height: | Size: 326 B |
@ -0,0 +1,15 @@
|
|||||||
|
<public:component lightweight="true">
|
||||||
|
|
||||||
|
<script language="javascript">
|
||||||
|
|
||||||
|
function CancelEvent()
|
||||||
|
{
|
||||||
|
return false ;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.onresizestart = CancelEvent ;
|
||||||
|
this.onbeforeeditfocus = CancelEvent ;
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
</public:component>
|
@ -0,0 +1,36 @@
|
|||||||
|
<public:component lightweight="true">
|
||||||
|
|
||||||
|
<public:attach event="oncontentready" onevent="ShowBorders()" />
|
||||||
|
<public:attach event="onpropertychange" onevent="OnPropertyChange()" />
|
||||||
|
|
||||||
|
<script language="javascript">
|
||||||
|
|
||||||
|
var oClassRegex = /\s*FCK__ShowTableBorders/ ;
|
||||||
|
|
||||||
|
function ShowBorders()
|
||||||
|
{
|
||||||
|
if ( this.border == 0 )
|
||||||
|
{
|
||||||
|
if ( !oClassRegex.test( this.className ) )
|
||||||
|
this.className += ' FCK__ShowTableBorders' ;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if ( oClassRegex.test( this.className ) )
|
||||||
|
{
|
||||||
|
this.className = this.className.replace( oClassRegex, '' ) ;
|
||||||
|
if ( this.className.length == 0 )
|
||||||
|
this.removeAttribute( 'className', 0 ) ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function OnPropertyChange()
|
||||||
|
{
|
||||||
|
if ( event.propertyName == 'border' || event.propertyName == 'className' )
|
||||||
|
ShowBorders.call(this) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
</public:component>
|
BIN
phpgwapi/js/fckeditor/editor/css/images/block_address.png
Normal file
After Width: | Height: | Size: 288 B |
BIN
phpgwapi/js/fckeditor/editor/css/images/block_blockquote.png
Normal file
After Width: | Height: | Size: 293 B |
BIN
phpgwapi/js/fckeditor/editor/css/images/block_div.png
Normal file
After Width: | Height: | Size: 229 B |
BIN
phpgwapi/js/fckeditor/editor/css/images/block_h1.png
Normal file
After Width: | Height: | Size: 218 B |
BIN
phpgwapi/js/fckeditor/editor/css/images/block_h2.png
Normal file
After Width: | Height: | Size: 220 B |
BIN
phpgwapi/js/fckeditor/editor/css/images/block_h3.png
Normal file
After Width: | Height: | Size: 219 B |
BIN
phpgwapi/js/fckeditor/editor/css/images/block_h4.png
Normal file
After Width: | Height: | Size: 229 B |
BIN
phpgwapi/js/fckeditor/editor/css/images/block_h5.png
Normal file
After Width: | Height: | Size: 236 B |
BIN
phpgwapi/js/fckeditor/editor/css/images/block_h6.png
Normal file
After Width: | Height: | Size: 216 B |
BIN
phpgwapi/js/fckeditor/editor/css/images/block_p.png
Normal file
After Width: | Height: | Size: 205 B |
BIN
phpgwapi/js/fckeditor/editor/css/images/block_pre.png
Normal file
After Width: | Height: | Size: 223 B |
BIN
phpgwapi/js/fckeditor/editor/css/images/fck_anchor.gif
Normal file
After Width: | Height: | Size: 184 B |
BIN
phpgwapi/js/fckeditor/editor/css/images/fck_flashlogo.gif
Normal file
After Width: | Height: | Size: 599 B |
BIN
phpgwapi/js/fckeditor/editor/css/images/fck_hiddenfield.gif
Normal file
After Width: | Height: | Size: 105 B |
BIN
phpgwapi/js/fckeditor/editor/css/images/fck_pagebreak.gif
Normal file
After Width: | Height: | Size: 54 B |
BIN
phpgwapi/js/fckeditor/editor/dialog/common/images/locked.gif
Normal file
After Width: | Height: | Size: 74 B |
BIN
phpgwapi/js/fckeditor/editor/dialog/common/images/reset.gif
Normal file
After Width: | Height: | Size: 104 B |
BIN
phpgwapi/js/fckeditor/editor/dialog/common/images/unlocked.gif
Normal file
After Width: | Height: | Size: 75 B |
BIN
phpgwapi/js/fckeditor/editor/dialog/fck_about/logo_fckeditor.gif
Normal file
After Width: | Height: | Size: 2.0 KiB |
BIN
phpgwapi/js/fckeditor/editor/dialog/fck_about/logo_fredck.gif
Normal file
After Width: | Height: | Size: 920 B |
@ -0,0 +1,87 @@
|
|||||||
|
////////////////////////////////////////////////////
|
||||||
|
// controlWindow object
|
||||||
|
////////////////////////////////////////////////////
|
||||||
|
function controlWindow( controlForm ) {
|
||||||
|
// private properties
|
||||||
|
this._form = controlForm;
|
||||||
|
|
||||||
|
// public properties
|
||||||
|
this.windowType = "controlWindow";
|
||||||
|
// this.noSuggestionSelection = "- No suggestions -"; // by FredCK
|
||||||
|
this.noSuggestionSelection = FCKLang.DlgSpellNoSuggestions ;
|
||||||
|
// set up the properties for elements of the given control form
|
||||||
|
this.suggestionList = this._form.sugg;
|
||||||
|
this.evaluatedText = this._form.misword;
|
||||||
|
this.replacementText = this._form.txtsugg;
|
||||||
|
this.undoButton = this._form.btnUndo;
|
||||||
|
|
||||||
|
// public methods
|
||||||
|
this.addSuggestion = addSuggestion;
|
||||||
|
this.clearSuggestions = clearSuggestions;
|
||||||
|
this.selectDefaultSuggestion = selectDefaultSuggestion;
|
||||||
|
this.resetForm = resetForm;
|
||||||
|
this.setSuggestedText = setSuggestedText;
|
||||||
|
this.enableUndo = enableUndo;
|
||||||
|
this.disableUndo = disableUndo;
|
||||||
|
}
|
||||||
|
|
||||||
|
function resetForm() {
|
||||||
|
if( this._form ) {
|
||||||
|
this._form.reset();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function setSuggestedText() {
|
||||||
|
var slct = this.suggestionList;
|
||||||
|
var txt = this.replacementText;
|
||||||
|
var str = "";
|
||||||
|
if( (slct.options[0].text) && slct.options[0].text != this.noSuggestionSelection ) {
|
||||||
|
str = slct.options[slct.selectedIndex].text;
|
||||||
|
}
|
||||||
|
txt.value = str;
|
||||||
|
}
|
||||||
|
|
||||||
|
function selectDefaultSuggestion() {
|
||||||
|
var slct = this.suggestionList;
|
||||||
|
var txt = this.replacementText;
|
||||||
|
if( slct.options.length == 0 ) {
|
||||||
|
this.addSuggestion( this.noSuggestionSelection );
|
||||||
|
} else {
|
||||||
|
slct.options[0].selected = true;
|
||||||
|
}
|
||||||
|
this.setSuggestedText();
|
||||||
|
}
|
||||||
|
|
||||||
|
function addSuggestion( sugg_text ) {
|
||||||
|
var slct = this.suggestionList;
|
||||||
|
if( sugg_text ) {
|
||||||
|
var i = slct.options.length;
|
||||||
|
var newOption = new Option( sugg_text, 'sugg_text'+i );
|
||||||
|
slct.options[i] = newOption;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function clearSuggestions() {
|
||||||
|
var slct = this.suggestionList;
|
||||||
|
for( var j = slct.length - 1; j > -1; j-- ) {
|
||||||
|
if( slct.options[j] ) {
|
||||||
|
slct.options[j] = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function enableUndo() {
|
||||||
|
if( this.undoButton ) {
|
||||||
|
if( this.undoButton.disabled == true ) {
|
||||||
|
this.undoButton.disabled = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function disableUndo() {
|
||||||
|
if( this.undoButton ) {
|
||||||
|
if( this.undoButton.disabled == false ) {
|
||||||
|
this.undoButton.disabled = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,153 @@
|
|||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<link rel="stylesheet" type="text/css" href="spellerStyle.css" />
|
||||||
|
<script type="text/javascript" src="controlWindow.js"></script>
|
||||||
|
<script type="text/javascript">
|
||||||
|
var spellerObject;
|
||||||
|
var controlWindowObj;
|
||||||
|
|
||||||
|
if( parent.opener ) {
|
||||||
|
spellerObject = parent.opener.speller;
|
||||||
|
}
|
||||||
|
|
||||||
|
function ignore_word() {
|
||||||
|
if( spellerObject ) {
|
||||||
|
spellerObject.ignoreWord();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function ignore_all() {
|
||||||
|
if( spellerObject ) {
|
||||||
|
spellerObject.ignoreAll();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function replace_word() {
|
||||||
|
if( spellerObject ) {
|
||||||
|
spellerObject.replaceWord();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function replace_all() {
|
||||||
|
if( spellerObject ) {
|
||||||
|
spellerObject.replaceAll();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function end_spell() {
|
||||||
|
if( spellerObject ) {
|
||||||
|
spellerObject.terminateSpell();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function undo() {
|
||||||
|
if( spellerObject ) {
|
||||||
|
spellerObject.undo();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function suggText() {
|
||||||
|
if( controlWindowObj ) {
|
||||||
|
controlWindowObj.setSuggestedText();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var FCKLang = window.parent.parent.FCKLang ; // by FredCK
|
||||||
|
|
||||||
|
function init_spell() {
|
||||||
|
// By FredCK (fckLang attributes have been added to the HTML source of this page)
|
||||||
|
window.parent.parent.OnSpellerControlsLoad( this ) ;
|
||||||
|
|
||||||
|
var controlForm = document.spellcheck;
|
||||||
|
|
||||||
|
// create a new controlWindow object
|
||||||
|
controlWindowObj = new controlWindow( controlForm );
|
||||||
|
|
||||||
|
// call the init_spell() function in the parent frameset
|
||||||
|
if( parent.frames.length ) {
|
||||||
|
parent.init_spell( controlWindowObj );
|
||||||
|
} else {
|
||||||
|
alert( 'This page was loaded outside of a frameset. It might not display properly' );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
<body class="controlWindowBody" onLoad="init_spell();" style="OVERFLOW: hidden" scroll="no"> <!-- by FredCK -->
|
||||||
|
<form name="spellcheck">
|
||||||
|
<table border="0" cellpadding="0" cellspacing="0" border="0" align="center">
|
||||||
|
<tr>
|
||||||
|
<td colspan="3" class="normalLabel"><span fckLang="DlgSpellNotInDic">Not in dictionary:</span></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colspan="3"><input class="readonlyInput" type="text" name="misword" readonly /></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colspan="3" height="5"></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="normalLabel"><span fckLang="DlgSpellChangeTo">Change to:</span></td>
|
||||||
|
</tr>
|
||||||
|
<tr valign="top">
|
||||||
|
<td>
|
||||||
|
<table border="0" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td class="normalLabel">
|
||||||
|
<input class="textDefault" type="text" name="txtsugg" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<select class="suggSlct" name="sugg" size="7" onChange="suggText();" onDblClick="replace_word();">
|
||||||
|
<option></option>
|
||||||
|
</select>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
<td> </td>
|
||||||
|
<td>
|
||||||
|
<table border="0" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<input class="buttonDefault" type="button" fckLang="DlgSpellBtnIgnore" value="Ignore" onClick="ignore_word();">
|
||||||
|
</td>
|
||||||
|
<td> </td>
|
||||||
|
<td>
|
||||||
|
<input class="buttonDefault" type="button" fckLang="DlgSpellBtnIgnoreAll" value="Ignore All" onClick="ignore_all();">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colspan="3" height="5"></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<input class="buttonDefault" type="button" fckLang="DlgSpellBtnReplace" value="Replace" onClick="replace_word();">
|
||||||
|
</td>
|
||||||
|
<td> </td>
|
||||||
|
<td>
|
||||||
|
<input class="buttonDefault" type="button" fckLang="DlgSpellBtnReplaceAll" value="Replace All" onClick="replace_all();">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colspan="3" height="5"></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<input class="buttonDefault" type="button" name="btnUndo" fckLang="DlgSpellBtnUndo" value="Undo" onClick="undo();"
|
||||||
|
disabled>
|
||||||
|
</td>
|
||||||
|
<td> </td>
|
||||||
|
<td>
|
||||||
|
<!-- by FredCK
|
||||||
|
<input class="buttonDefault" type="button" value="Close" onClick="end_spell();">
|
||||||
|
-->
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</form>
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,71 @@
|
|||||||
|
|
||||||
|
<script>
|
||||||
|
|
||||||
|
var wordWindow = null;
|
||||||
|
var controlWindow = null;
|
||||||
|
|
||||||
|
function init_spell( spellerWindow ) {
|
||||||
|
|
||||||
|
if( spellerWindow ) {
|
||||||
|
if( spellerWindow.windowType == "wordWindow" ) {
|
||||||
|
wordWindow = spellerWindow;
|
||||||
|
} else if ( spellerWindow.windowType == "controlWindow" ) {
|
||||||
|
controlWindow = spellerWindow;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if( controlWindow && wordWindow ) {
|
||||||
|
// populate the speller object and start it off!
|
||||||
|
var speller = opener.speller;
|
||||||
|
wordWindow.speller = speller;
|
||||||
|
speller.startCheck( wordWindow, controlWindow );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// encodeForPost
|
||||||
|
function encodeForPost( str ) {
|
||||||
|
var s = new String( str );
|
||||||
|
s = encodeURIComponent( s );
|
||||||
|
// additionally encode single quotes to evade any PHP
|
||||||
|
// magic_quotes_gpc setting (it inserts escape characters and
|
||||||
|
// therefore skews the btye positions of misspelled words)
|
||||||
|
return s.replace( /\'/g, '%27' );
|
||||||
|
}
|
||||||
|
|
||||||
|
// post the text area data to the script that populates the speller
|
||||||
|
function postWords() {
|
||||||
|
var bodyDoc = window.frames[0].document;
|
||||||
|
bodyDoc.open();
|
||||||
|
bodyDoc.write('<html>');
|
||||||
|
bodyDoc.write('<meta http-equiv="Content-Type" content="text/html; charset=utf-8">');
|
||||||
|
bodyDoc.write('<link rel="stylesheet" type="text/css" href="spellerStyle.css"/>');
|
||||||
|
if (opener) {
|
||||||
|
var speller = opener.speller;
|
||||||
|
bodyDoc.write('<body class="normalText" onLoad="document.forms[0].submit();">');
|
||||||
|
bodyDoc.write('<p>' + window.parent.FCKLang.DlgSpellProgress + '<\/p>'); // by FredCK
|
||||||
|
bodyDoc.write('<form action="'+speller.spellCheckScript+'" method="post">');
|
||||||
|
for( var i = 0; i < speller.textInputs.length; i++ ) {
|
||||||
|
bodyDoc.write('<input type="hidden" name="textinputs[]" value="'+encodeForPost(speller.textInputs[i].value)+'">');
|
||||||
|
}
|
||||||
|
bodyDoc.write('<\/form>');
|
||||||
|
bodyDoc.write('<\/body>');
|
||||||
|
} else {
|
||||||
|
bodyDoc.write('<body class="normalText">');
|
||||||
|
bodyDoc.write('<p><b>This page cannot be displayed<\/b><\/p><p>The window was not opened from another window.<\/p>');
|
||||||
|
bodyDoc.write('<\/body>');
|
||||||
|
}
|
||||||
|
bodyDoc.write('<\/html>');
|
||||||
|
bodyDoc.close();
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<html>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||||
|
<head>
|
||||||
|
<title>Speller Pages</title>
|
||||||
|
</head>
|
||||||
|
<frameset rows="*,201" onLoad="postWords();">
|
||||||
|
<frame src="blank.html">
|
||||||
|
<frame src="controls.html">
|
||||||
|
</frameset>
|
||||||
|
</html>
|
@ -0,0 +1,272 @@
|
|||||||
|
////////////////////////////////////////////////////
|
||||||
|
// wordWindow object
|
||||||
|
////////////////////////////////////////////////////
|
||||||
|
function wordWindow() {
|
||||||
|
// private properties
|
||||||
|
this._forms = [];
|
||||||
|
|
||||||
|
// private methods
|
||||||
|
this._getWordObject = _getWordObject;
|
||||||
|
//this._getSpellerObject = _getSpellerObject;
|
||||||
|
this._wordInputStr = _wordInputStr;
|
||||||
|
this._adjustIndexes = _adjustIndexes;
|
||||||
|
this._isWordChar = _isWordChar;
|
||||||
|
this._lastPos = _lastPos;
|
||||||
|
|
||||||
|
// public properties
|
||||||
|
this.wordChar = /[a-zA-Z]/;
|
||||||
|
this.windowType = "wordWindow";
|
||||||
|
this.originalSpellings = new Array();
|
||||||
|
this.suggestions = new Array();
|
||||||
|
this.checkWordBgColor = "pink";
|
||||||
|
this.normWordBgColor = "white";
|
||||||
|
this.text = "";
|
||||||
|
this.textInputs = new Array();
|
||||||
|
this.indexes = new Array();
|
||||||
|
//this.speller = this._getSpellerObject();
|
||||||
|
|
||||||
|
// public methods
|
||||||
|
this.resetForm = resetForm;
|
||||||
|
this.totalMisspellings = totalMisspellings;
|
||||||
|
this.totalWords = totalWords;
|
||||||
|
this.totalPreviousWords = totalPreviousWords;
|
||||||
|
//this.getTextObjectArray = getTextObjectArray;
|
||||||
|
this.getTextVal = getTextVal;
|
||||||
|
this.setFocus = setFocus;
|
||||||
|
this.removeFocus = removeFocus;
|
||||||
|
this.setText = setText;
|
||||||
|
//this.getTotalWords = getTotalWords;
|
||||||
|
this.writeBody = writeBody;
|
||||||
|
this.printForHtml = printForHtml;
|
||||||
|
}
|
||||||
|
|
||||||
|
function resetForm() {
|
||||||
|
if( this._forms ) {
|
||||||
|
for( var i = 0; i < this._forms.length; i++ ) {
|
||||||
|
this._forms[i].reset();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
function totalMisspellings() {
|
||||||
|
var total_words = 0;
|
||||||
|
for( var i = 0; i < this.textInputs.length; i++ ) {
|
||||||
|
total_words += this.totalWords( i );
|
||||||
|
}
|
||||||
|
return total_words;
|
||||||
|
}
|
||||||
|
|
||||||
|
function totalWords( textIndex ) {
|
||||||
|
return this.originalSpellings[textIndex].length;
|
||||||
|
}
|
||||||
|
|
||||||
|
function totalPreviousWords( textIndex, wordIndex ) {
|
||||||
|
var total_words = 0;
|
||||||
|
for( var i = 0; i <= textIndex; i++ ) {
|
||||||
|
for( var j = 0; j < this.totalWords( i ); j++ ) {
|
||||||
|
if( i == textIndex && j == wordIndex ) {
|
||||||
|
break;
|
||||||
|
} else {
|
||||||
|
total_words++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return total_words;
|
||||||
|
}
|
||||||
|
|
||||||
|
//function getTextObjectArray() {
|
||||||
|
// return this._form.elements;
|
||||||
|
//}
|
||||||
|
|
||||||
|
function getTextVal( textIndex, wordIndex ) {
|
||||||
|
var word = this._getWordObject( textIndex, wordIndex );
|
||||||
|
if( word ) {
|
||||||
|
return word.value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function setFocus( textIndex, wordIndex ) {
|
||||||
|
var word = this._getWordObject( textIndex, wordIndex );
|
||||||
|
if( word ) {
|
||||||
|
if( word.type == "text" ) {
|
||||||
|
word.focus();
|
||||||
|
word.style.backgroundColor = this.checkWordBgColor;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function removeFocus( textIndex, wordIndex ) {
|
||||||
|
var word = this._getWordObject( textIndex, wordIndex );
|
||||||
|
if( word ) {
|
||||||
|
if( word.type == "text" ) {
|
||||||
|
word.blur();
|
||||||
|
word.style.backgroundColor = this.normWordBgColor;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function setText( textIndex, wordIndex, newText ) {
|
||||||
|
var word = this._getWordObject( textIndex, wordIndex );
|
||||||
|
var beginStr;
|
||||||
|
var endStr;
|
||||||
|
if( word ) {
|
||||||
|
var pos = this.indexes[textIndex][wordIndex];
|
||||||
|
var oldText = word.value;
|
||||||
|
// update the text given the index of the string
|
||||||
|
beginStr = this.textInputs[textIndex].substring( 0, pos );
|
||||||
|
endStr = this.textInputs[textIndex].substring(
|
||||||
|
pos + oldText.length,
|
||||||
|
this.textInputs[textIndex].length
|
||||||
|
);
|
||||||
|
this.textInputs[textIndex] = beginStr + newText + endStr;
|
||||||
|
|
||||||
|
// adjust the indexes on the stack given the differences in
|
||||||
|
// length between the new word and old word.
|
||||||
|
var lengthDiff = newText.length - oldText.length;
|
||||||
|
this._adjustIndexes( textIndex, wordIndex, lengthDiff );
|
||||||
|
|
||||||
|
word.size = newText.length;
|
||||||
|
word.value = newText;
|
||||||
|
this.removeFocus( textIndex, wordIndex );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function writeBody() {
|
||||||
|
var d = window.document;
|
||||||
|
var is_html = false;
|
||||||
|
|
||||||
|
d.open();
|
||||||
|
|
||||||
|
// iterate through each text input.
|
||||||
|
for( var txtid = 0; txtid < this.textInputs.length; txtid++ ) {
|
||||||
|
var end_idx = 0;
|
||||||
|
var begin_idx = 0;
|
||||||
|
d.writeln( '<form name="textInput'+txtid+'">' );
|
||||||
|
var wordtxt = this.textInputs[txtid];
|
||||||
|
this.indexes[txtid] = [];
|
||||||
|
|
||||||
|
if( wordtxt ) {
|
||||||
|
var orig = this.originalSpellings[txtid];
|
||||||
|
if( !orig ) break;
|
||||||
|
|
||||||
|
//!!! plain text, or HTML mode?
|
||||||
|
d.writeln( '<div class="plainText">' );
|
||||||
|
// iterate through each occurrence of a misspelled word.
|
||||||
|
for( var i = 0; i < orig.length; i++ ) {
|
||||||
|
// find the position of the current misspelled word,
|
||||||
|
// starting at the last misspelled word.
|
||||||
|
// and keep looking if it's a substring of another word
|
||||||
|
do {
|
||||||
|
begin_idx = wordtxt.indexOf( orig[i], end_idx );
|
||||||
|
end_idx = begin_idx + orig[i].length;
|
||||||
|
// word not found? messed up!
|
||||||
|
if( begin_idx == -1 ) break;
|
||||||
|
// look at the characters immediately before and after
|
||||||
|
// the word. If they are word characters we'll keep looking.
|
||||||
|
var before_char = wordtxt.charAt( begin_idx - 1 );
|
||||||
|
var after_char = wordtxt.charAt( end_idx );
|
||||||
|
} while (
|
||||||
|
this._isWordChar( before_char )
|
||||||
|
|| this._isWordChar( after_char )
|
||||||
|
);
|
||||||
|
|
||||||
|
// keep track of its position in the original text.
|
||||||
|
this.indexes[txtid][i] = begin_idx;
|
||||||
|
|
||||||
|
// write out the characters before the current misspelled word
|
||||||
|
for( var j = this._lastPos( txtid, i ); j < begin_idx; j++ ) {
|
||||||
|
// !!! html mode? make it html compatible
|
||||||
|
d.write( this.printForHtml( wordtxt.charAt( j )));
|
||||||
|
}
|
||||||
|
|
||||||
|
// write out the misspelled word.
|
||||||
|
d.write( this._wordInputStr( orig[i] ));
|
||||||
|
|
||||||
|
// if it's the last word, write out the rest of the text
|
||||||
|
if( i == orig.length-1 ){
|
||||||
|
d.write( printForHtml( wordtxt.substr( end_idx )));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
d.writeln( '</div>' );
|
||||||
|
|
||||||
|
}
|
||||||
|
d.writeln( '</form>' );
|
||||||
|
}
|
||||||
|
//for ( var j = 0; j < d.forms.length; j++ ) {
|
||||||
|
// alert( d.forms[j].name );
|
||||||
|
// for( var k = 0; k < d.forms[j].elements.length; k++ ) {
|
||||||
|
// alert( d.forms[j].elements[k].name + ": " + d.forms[j].elements[k].value );
|
||||||
|
// }
|
||||||
|
//}
|
||||||
|
|
||||||
|
// set the _forms property
|
||||||
|
this._forms = d.forms;
|
||||||
|
d.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
// return the character index in the full text after the last word we evaluated
|
||||||
|
function _lastPos( txtid, idx ) {
|
||||||
|
if( idx > 0 )
|
||||||
|
return this.indexes[txtid][idx-1] + this.originalSpellings[txtid][idx-1].length;
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
function printForHtml( n ) {
|
||||||
|
return n ; // by FredCK
|
||||||
|
/*
|
||||||
|
var htmlstr = n;
|
||||||
|
if( htmlstr.length == 1 ) {
|
||||||
|
// do simple case statement if it's just one character
|
||||||
|
switch ( n ) {
|
||||||
|
case "\n":
|
||||||
|
htmlstr = '<br/>';
|
||||||
|
break;
|
||||||
|
case "<":
|
||||||
|
htmlstr = '<';
|
||||||
|
break;
|
||||||
|
case ">":
|
||||||
|
htmlstr = '>';
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return htmlstr;
|
||||||
|
} else {
|
||||||
|
htmlstr = htmlstr.replace( /</g, '<' );
|
||||||
|
htmlstr = htmlstr.replace( />/g, '>' );
|
||||||
|
htmlstr = htmlstr.replace( /\n/g, '<br/>' );
|
||||||
|
return htmlstr;
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
|
||||||
|
function _isWordChar( letter ) {
|
||||||
|
if( letter.search( this.wordChar ) == -1 ) {
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function _getWordObject( textIndex, wordIndex ) {
|
||||||
|
if( this._forms[textIndex] ) {
|
||||||
|
if( this._forms[textIndex].elements[wordIndex] ) {
|
||||||
|
return this._forms[textIndex].elements[wordIndex];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
function _wordInputStr( word ) {
|
||||||
|
var str = '<input readonly ';
|
||||||
|
str += 'class="blend" type="text" value="' + word + '" size="' + word.length + '">';
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
|
||||||
|
function _adjustIndexes( textIndex, wordIndex, lengthDiff ) {
|
||||||
|
for( var i = wordIndex + 1; i < this.originalSpellings[textIndex].length; i++ ) {
|
||||||
|
this.indexes[textIndex][i] = this.indexes[textIndex][i] + lengthDiff;
|
||||||
|
}
|
||||||
|
}
|
After Width: | Height: | Size: 375 B |
After Width: | Height: | Size: 333 B |
After Width: | Height: | Size: 422 B |
After Width: | Height: | Size: 138 B |
After Width: | Height: | Size: 128 B |
After Width: | Height: | Size: 281 B |
After Width: | Height: | Size: 132 B |
After Width: | Height: | Size: 264 B |
After Width: | Height: | Size: 132 B |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 454 B |
After Width: | Height: | Size: 709 B |
After Width: | Height: | Size: 224 B |
After Width: | Height: | Size: 177 B |
After Width: | Height: | Size: 258 B |
After Width: | Height: | Size: 260 B |
After Width: | Height: | Size: 170 B |
After Width: | Height: | Size: 946 B |
After Width: | Height: | Size: 704 B |
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 463 B |
After Width: | Height: | Size: 274 B |
After Width: | Height: | Size: 274 B |
After Width: | Height: | Size: 454 B |
After Width: | Height: | Size: 567 B |
After Width: | Height: | Size: 464 B |
After Width: | Height: | Size: 254 B |
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 725 B |
After Width: | Height: | Size: 724 B |
After Width: | Height: | Size: 213 B |
After Width: | Height: | Size: 277 B |
After Width: | Height: | Size: 271 B |
After Width: | Height: | Size: 408 B |
After Width: | Height: | Size: 368 B |
After Width: | Height: | Size: 403 B |
After Width: | Height: | Size: 249 B |
After Width: | Height: | Size: 126 B |
After Width: | Height: | Size: 128 B |
After Width: | Height: | Size: 113 B |
After Width: | Height: | Size: 132 B |
After Width: | Height: | Size: 140 B |
After Width: | Height: | Size: 109 B |
After Width: | Height: | Size: 382 B |
After Width: | Height: | Size: 125 B |
After Width: | Height: | Size: 621 B |
After Width: | Height: | Size: 621 B |
After Width: | Height: | Size: 125 B |
After Width: | Height: | Size: 139 B |
After Width: | Height: | Size: 146 B |
After Width: | Height: | Size: 249 B |
After Width: | Height: | Size: 230 B |
After Width: | Height: | Size: 125 B |
After Width: | Height: | Size: 139 B |
After Width: | Height: | Size: 606 B |
After Width: | Height: | Size: 388 B |
After Width: | Height: | Size: 388 B |
After Width: | Height: | Size: 122 B |
After Width: | Height: | Size: 136 B |
After Width: | Height: | Size: 138 B |
After Width: | Height: | Size: 231 B |
After Width: | Height: | Size: 235 B |
After Width: | Height: | Size: 43 B |
BIN
phpgwapi/js/fckeditor/editor/images/anchor.gif
Normal file
After Width: | Height: | Size: 184 B |
BIN
phpgwapi/js/fckeditor/editor/images/arrow_ltr.gif
Normal file
After Width: | Height: | Size: 49 B |
BIN
phpgwapi/js/fckeditor/editor/images/arrow_rtl.gif
Normal file
After Width: | Height: | Size: 49 B |
BIN
phpgwapi/js/fckeditor/editor/images/smiley/msn/angel_smile.gif
Normal file
After Width: | Height: | Size: 445 B |
BIN
phpgwapi/js/fckeditor/editor/images/smiley/msn/angry_smile.gif
Normal file
After Width: | Height: | Size: 453 B |
BIN
phpgwapi/js/fckeditor/editor/images/smiley/msn/broken_heart.gif
Normal file
After Width: | Height: | Size: 423 B |
BIN
phpgwapi/js/fckeditor/editor/images/smiley/msn/cake.gif
Normal file
After Width: | Height: | Size: 453 B |