/trunk/api/fckeditor/editor/dialog/fck_source.html |
---|
New file |
0,0 → 1,68 |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" > |
<!-- |
* FCKeditor - The text editor for Internet - http://www.fckeditor.net |
* Copyright (C) 2003-2008 Frederico Caldeira Knabben |
* |
* == BEGIN LICENSE == |
* |
* Licensed under the terms of any of the following licenses at your |
* choice: |
* |
* - GNU General Public License Version 2 or later (the "GPL") |
* http://www.gnu.org/licenses/gpl.html |
* |
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL") |
* http://www.gnu.org/licenses/lgpl.html |
* |
* - Mozilla Public License Version 1.1 or later (the "MPL") |
* http://www.mozilla.org/MPL/MPL-1.1.html |
* |
* == END LICENSE == |
* |
* Source editor dialog window. |
--> |
<html> |
<head> |
<title>Source</title> |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> |
<meta name="robots" content="noindex, nofollow"> |
<script src="common/fck_dialog_common.js" type="text/javascript"></script> |
<script language="javascript"> |
var oEditor = window.parent.InnerDialogLoaded() ; |
var FCK = oEditor.FCK ; |
var FCKConfig = oEditor.FCKConfig ; |
var FCKTools = oEditor.FCKTools ; |
document.write( FCKTools.GetStyleHtml( GetCommonDialogCss() ) ) ; |
window.onload = function() |
{ |
// EnableXHTML and EnableSourceXHTML has been deprecated |
// document.getElementById('txtSource').value = ( FCKConfig.EnableXHTML && FCKConfig.EnableSourceXHTML ? FCK.GetXHTML( FCKConfig.FormatSource ) : FCK.GetHTML( FCKConfig.FormatSource ) ) ; |
document.getElementById('txtSource').value = FCK.GetXHTML( FCKConfig.FormatSource ) ; |
// Activate the "OK" button. |
window.parent.SetOkButton( true ) ; |
} |
//#### The OK button was hit. |
function Ok() |
{ |
if ( oEditor.FCKBrowserInfo.IsIE ) |
oEditor.FCKUndo.SaveUndoStep() ; |
FCK.SetData( document.getElementById('txtSource').value, false ) ; |
return true ; |
} |
</script> |
</head> |
<body scroll="no" style="OVERFLOW: hidden"> |
<table width="100%" height="100%"> |
<tr> |
<td height="100%"><textarea id="txtSource" dir="ltr" style="PADDING-RIGHT: 5px; PADDING-LEFT: 5px; FONT-SIZE: 14px; PADDING-BOTTOM: 5px; WIDTH: 100%; PADDING-TOP: 5px; FONT-FAMILY: Monospace; HEIGHT: 100%">Loading. Please wait...</textarea></td> |
</tr> |
</table> |
</body> |
</html> |
/trunk/api/fckeditor/editor/dialog/fck_smiley.html |
---|
New file |
0,0 → 1,111 |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" > |
<!-- |
* FCKeditor - The text editor for Internet - http://www.fckeditor.net |
* Copyright (C) 2003-2008 Frederico Caldeira Knabben |
* |
* == BEGIN LICENSE == |
* |
* Licensed under the terms of any of the following licenses at your |
* choice: |
* |
* - GNU General Public License Version 2 or later (the "GPL") |
* http://www.gnu.org/licenses/gpl.html |
* |
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL") |
* http://www.gnu.org/licenses/lgpl.html |
* |
* - Mozilla Public License Version 1.1 or later (the "MPL") |
* http://www.mozilla.org/MPL/MPL-1.1.html |
* |
* == END LICENSE == |
* |
* Smileys (emoticons) dialog window. |
--> |
<html xmlns="http://www.w3.org/1999/xhtml"> |
<head> |
<title></title> |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> |
<meta name="robots" content="noindex, nofollow" /> |
<style type="text/css"> |
.Hand |
{ |
cursor: pointer; |
cursor: hand; |
} |
</style> |
<script src="common/fck_dialog_common.js" type="text/javascript"></script> |
<script type="text/javascript"> |
var dialog = window.parent ; |
var oEditor = dialog.InnerDialogLoaded() ; |
window.onload = function () |
{ |
// First of all, translate the dialog box texts |
oEditor.FCKLanguageManager.TranslatePage(document) ; |
dialog.SetAutoSize( true ) ; |
} |
function InsertSmiley( url ) |
{ |
oEditor.FCKUndo.SaveUndoStep() ; |
var oImg = oEditor.FCK.InsertElement( 'img' ) ; |
oImg.src = url ; |
oImg.setAttribute( '_fcksavedurl', url ) ; |
// For long smileys list, it seams that IE continues loading the images in |
// the background when you quickly select one image. so, let's clear |
// everything before closing. |
document.body.innerHTML = '' ; |
dialog.Cancel() ; |
} |
function over(td) |
{ |
td.className = 'LightBackground Hand' ; |
} |
function out(td) |
{ |
td.className = 'DarkBackground Hand' ; |
} |
</script> |
</head> |
<body style="overflow: hidden"> |
<table cellpadding="2" cellspacing="2" align="center" border="0" width="100%" height="100%"> |
<script type="text/javascript"> |
var FCKConfig = oEditor.FCKConfig ; |
var sBasePath = FCKConfig.SmileyPath ; |
var aImages = FCKConfig.SmileyImages ; |
var iCols = FCKConfig.SmileyColumns ; |
var iColWidth = parseInt( 100 / iCols, 10 ) ; |
var i = 0 ; |
while (i < aImages.length) |
{ |
document.write( '<tr>' ) ; |
for(var j = 0 ; j < iCols ; j++) |
{ |
if (aImages[i]) |
{ |
var sUrl = sBasePath + aImages[i] ; |
document.write( '<td width="' + iColWidth + '%" align="center" class="DarkBackground Hand" onclick="InsertSmiley(\'' + sUrl.replace(/'/g, "\\'" ) + '\')" onmouseover="over(this)" onmouseout="out(this)">' ) ; |
document.write( '<img src="' + sUrl + '" border="0" />' ) ; |
} |
else |
document.write( '<td width="' + iColWidth + '%" class="DarkBackground"> ' ) ; |
document.write( '<\/td>' ) ; |
i++ ; |
} |
document.write('<\/tr>') ; |
} |
</script> |
</table> |
</body> |
</html> |
/trunk/api/fckeditor/editor/dialog/fck_about.html |
---|
New file |
0,0 → 1,161 |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> |
<!-- |
* FCKeditor - The text editor for Internet - http://www.fckeditor.net |
* Copyright (C) 2003-2008 Frederico Caldeira Knabben |
* |
* == BEGIN LICENSE == |
* |
* Licensed under the terms of any of the following licenses at your |
* choice: |
* |
* - GNU General Public License Version 2 or later (the "GPL") |
* http://www.gnu.org/licenses/gpl.html |
* |
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL") |
* http://www.gnu.org/licenses/lgpl.html |
* |
* - Mozilla Public License Version 1.1 or later (the "MPL") |
* http://www.mozilla.org/MPL/MPL-1.1.html |
* |
* == END LICENSE == |
* |
* "About" dialog window. |
--> |
<html xmlns="http://www.w3.org/1999/xhtml"> |
<head> |
<title></title> |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> |
<meta name="robots" content="noindex, nofollow" /> |
<script src="common/fck_dialog_common.js" type="text/javascript"></script> |
<script type="text/javascript"> |
var oEditor = window.parent.InnerDialogLoaded() ; |
var FCKLang = oEditor.FCKLang ; |
window.parent.AddTab( 'About', FCKLang.DlgAboutAboutTab ) ; |
window.parent.AddTab( 'License', FCKLang.DlgAboutLicenseTab ) ; |
window.parent.AddTab( 'BrowserInfo', FCKLang.DlgAboutBrowserInfoTab ) ; |
// Function called when a dialog tag is selected. |
function OnDialogTabChange( tabCode ) |
{ |
ShowE('divAbout', ( tabCode == 'About' ) ) ; |
ShowE('divLicense', ( tabCode == 'License' ) ) ; |
ShowE('divInfo' , ( tabCode == 'BrowserInfo' ) ) ; |
} |
function SendEMail() |
{ |
var eMail = 'mailto:' ; |
eMail += 'fredck' ; |
eMail += '@' ; |
eMail += 'fckeditor' ; |
eMail += '.' ; |
eMail += 'net' ; |
window.location = eMail ; |
} |
window.onload = function() |
{ |
// Translate the dialog box texts. |
oEditor.FCKLanguageManager.TranslatePage(document) ; |
window.parent.SetAutoSize( true ) ; |
} |
</script> |
</head> |
<body style="overflow: hidden"> |
<div id="divAbout"> |
<table cellpadding="0" cellspacing="0" border="0" width="100%" style="height: 100%"> |
<tr> |
<td colspan="2"> |
<img alt="" src="fck_about/logo_fckeditor.gif" width="236" height="41" align="left" /> |
<table width="80" border="0" cellspacing="0" cellpadding="5" bgcolor="#ffffff" align="right"> |
<tr> |
<td align="center" nowrap="nowrap" style="border-right: #000000 1px solid; border-top: #000000 1px solid; |
border-left: #000000 1px solid; border-bottom: #000000 1px solid"> |
<span fcklang="DlgAboutVersion">version</span> |
<br /> |
<b>2.6.3</b><br /> |
Build 19836</td> |
</tr> |
</table> |
</td> |
</tr> |
<tr style="height: 100%"> |
<td align="center" valign="middle"> |
<span style="font-size: 14px" dir="ltr"> |
<b><a href="http://www.fckeditor.net/?about" target="_blank" title="Visit the FCKeditor web site"> |
Support <b>Open Source</b> Software</a></b> </span> |
<div style="padding-top:15px"> |
<img alt="" src="fck_about/logo_fredck.gif" width="87" height="36" /> |
</div> |
</td> |
<td align="center" nowrap="nowrap" valign="middle"> |
<div> |
<div style="margin-bottom:5px" dir="ltr">Selected Sponsor</div> |
<a href="http://www.spellchecker.net/fckeditor/" target="_blank"><img alt="Selected Sponsor" border="0" src="fck_about/sponsors/spellchecker_net.gif" width="75" height="75" /></a> |
</div> |
</td> |
</tr> |
<tr> |
<td width="100%" nowrap="nowrap"> |
<span fcklang="DlgAboutInfo">For further information go to</span> <a href="http://www.fckeditor.net/?About" |
target="_blank">http://www.fckeditor.net/</a>. |
<br /> |
Copyright © 2003-2008 <a href="#" onclick="SendEMail();">Frederico Caldeira Knabben</a> |
</td> |
<td align="center"> |
<a href="http://www.fckeditor.net/sponsors/apply" target="_blank">Become a Sponsor</a> |
</td> |
</tr> |
</table> |
</div> |
<div id="divLicense" style="display: none"> |
<p> |
Licensed under the terms of any of the following licenses at your |
choice: |
</p> |
<ul> |
<li style="margin-bottom:15px"> |
<b>GNU General Public License</b> Version 2 or later (the "GPL")<br /> |
<a href="http://www.gnu.org/licenses/gpl.html" target="_blank">http://www.gnu.org/licenses/gpl.html</a> |
</li> |
<li style="margin-bottom:15px"> |
<b>GNU Lesser General Public License</b> Version 2.1 or later (the "LGPL")<br /> |
<a href="http://www.gnu.org/licenses/lgpl.html" target="_blank">http://www.gnu.org/licenses/lgpl.html</a> |
</li> |
<li> |
<b>Mozilla Public License</b> Version 1.1 or later (the "MPL")<br /> |
<a href="http://www.mozilla.org/MPL/MPL-1.1.html" target="_blank">http://www.mozilla.org/MPL/MPL-1.1.html</a> |
</li> |
</ul> |
</div> |
<div id="divInfo" style="display: none" dir="ltr"> |
<table align="center" width="80%" border="0"> |
<tr> |
<td> |
<script type="text/javascript"> |
<!-- |
document.write( '<b>User Agent<\/b><br />' + window.navigator.userAgent + '<br /><br />' ) ; |
document.write( '<b>Browser<\/b><br />' + window.navigator.appName + ' ' + window.navigator.appVersion + '<br /><br />' ) ; |
document.write( '<b>Platform<\/b><br />' + window.navigator.platform + '<br /><br />' ) ; |
var sUserLang = '?' ; |
if ( window.navigator.language ) |
sUserLang = window.navigator.language.toLowerCase() ; |
else if ( window.navigator.userLanguage ) |
sUserLang = window.navigator.userLanguage.toLowerCase() ; |
document.write( '<b>User Language<\/b><br />' + sUserLang ) ; |
//--> |
</script> |
</td> |
</tr> |
</table> |
</div> |
</body> |
</html> |
/trunk/api/fckeditor/editor/dialog/fck_replace.html |
---|
New file |
0,0 → 1,648 |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> |
<!-- |
* FCKeditor - The text editor for Internet - http://www.fckeditor.net |
* Copyright (C) 2003-2008 Frederico Caldeira Knabben |
* |
* == BEGIN LICENSE == |
* |
* Licensed under the terms of any of the following licenses at your |
* choice: |
* |
* - GNU General Public License Version 2 or later (the "GPL") |
* http://www.gnu.org/licenses/gpl.html |
* |
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL") |
* http://www.gnu.org/licenses/lgpl.html |
* |
* - Mozilla Public License Version 1.1 or later (the "MPL") |
* http://www.mozilla.org/MPL/MPL-1.1.html |
* |
* == END LICENSE == |
* |
* "Find" and "Replace" dialog box window. |
--> |
<html xmlns="http://www.w3.org/1999/xhtml"> |
<head> |
<title></title> |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> |
<meta content="noindex, nofollow" name="robots" /> |
<script src="common/fck_dialog_common.js" type="text/javascript"></script> |
<script type="text/javascript"> |
var dialog = window.parent ; |
var oEditor = dialog.InnerDialogLoaded() ; |
var dialogArguments = dialog.Args() ; |
var FCKLang = oEditor.FCKLang ; |
var FCKDomTools = oEditor.FCKDomTools ; |
var FCKDomRange = oEditor.FCKDomRange ; |
var FCKListsLib = oEditor.FCKListsLib ; |
var FCKTools = oEditor.FCKTools ; |
var EditorDocument = oEditor.FCK.EditorDocument ; |
var HighlightStyle = oEditor.FCKStyles.GetStyle( '_FCK_SelectionHighlight' ) ; |
dialog.AddTab( 'Find', FCKLang.DlgFindTitle ) ; |
dialog.AddTab( 'Replace', FCKLang.DlgReplaceTitle ) ; |
var idMap = {} ; |
function OnDialogTabChange( tabCode ) |
{ |
ShowE( 'divFind', ( tabCode == 'Find' ) ) ; |
ShowE( 'divReplace', ( tabCode == 'Replace' ) ) ; |
idMap['FindText'] = 'txtFind' + tabCode ; |
idMap['CheckCase'] = 'chkCase' + tabCode ; |
idMap['CheckWord'] = 'chkWord' + tabCode ; |
if ( tabCode == 'Replace' ) |
dialog.SetAutoSize( true ) ; |
} |
GetNextNonEmptyTextNode = function( node, stopNode ) |
{ |
while ( ( node = FCKDomTools.GetNextSourceNode( node, false, 3, stopNode ) ) && node && node.length < 1 ) |
1 ; |
return node ; |
} |
CharacterCursor = function( arg ) |
{ |
if ( arg.nodeType && arg.nodeType == 9 ) |
{ |
this._textNode = GetNextNonEmptyTextNode( arg.body, arg.documentElement ) ; |
this._offset = 0 ; |
this._doc = arg ; |
} |
else |
{ |
this._textNode = arguments[0] ; |
this._offset = arguments[1] ; |
this._doc = FCKTools.GetElementDocument( arguments[0] ) ; |
} |
} |
CharacterCursor.prototype = |
{ |
GetCharacter : function() |
{ |
return ( this._textNode && this._textNode.nodeValue.charAt( this._offset ) ) || null ; |
}, |
// Non-normalized. |
GetTextNode : function() |
{ |
return this._textNode ; |
}, |
// Non-normalized. |
GetIndex : function() |
{ |
return this._offset ; |
}, |
// Return value means whehther we've crossed a line break or a paragraph boundary. |
MoveNext : function() |
{ |
if ( this._offset < this._textNode.length - 1 ) |
{ |
this._offset++ ; |
return false ; |
} |
var crossed = false ; |
var curNode = this._textNode ; |
while ( ( curNode = FCKDomTools.GetNextSourceNode( curNode ) ) |
&& curNode && ( curNode.nodeType != 3 || curNode.length < 1 ) ) |
{ |
var tag = curNode.nodeName.toLowerCase() ; |
if ( FCKListsLib.BlockElements[tag] || tag == 'br' ) |
crossed = true ; |
} |
this._textNode = curNode ; |
this._offset = 0 ; |
return crossed ; |
}, |
// Return value means whehther we've crossed a line break or a paragraph boundary. |
MoveBack : function() |
{ |
if ( this._offset > 0 && this._textNode.length > 0 ) |
{ |
this._offset = Math.min( this._offset - 1, this._textNode.length - 1 ) ; |
return false ; |
} |
var crossed = false ; |
var curNode = this._textNode ; |
while ( ( curNode = FCKDomTools.GetPreviousSourceNode( curNode ) ) |
&& curNode && ( curNode.nodeType != 3 || curNode.length < 1 ) ) |
{ |
var tag = curNode.nodeName.toLowerCase() ; |
if ( FCKListsLib.BlockElements[tag] || tag == 'br' ) |
crossed = true ; |
} |
this._textNode = curNode ; |
this._offset = curNode.length - 1 ; |
return crossed ; |
}, |
Clone : function() |
{ |
return new CharacterCursor( this._textNode, this._offset ) ; |
} |
} ; |
CharacterRange = function( initCursor, maxLength ) |
{ |
this._cursors = initCursor.push ? initCursor : [initCursor] ; |
this._maxLength = maxLength ; |
this._highlightRange = null ; |
} |
CharacterRange.prototype = |
{ |
ToDomRange : function() |
{ |
var firstCursor = this._cursors[0] ; |
var lastCursor = this._cursors[ this._cursors.length - 1 ] ; |
var domRange = new FCKDomRange( FCKTools.GetElementWindow( firstCursor.GetTextNode() ) ) ; |
var w3cRange = domRange._Range = domRange.CreateRange() ; |
w3cRange.setStart( firstCursor.GetTextNode(), firstCursor.GetIndex() ) ; |
w3cRange.setEnd( lastCursor.GetTextNode(), lastCursor.GetIndex() + 1 ) ; |
domRange._UpdateElementInfo() ; |
return domRange ; |
}, |
Highlight : function() |
{ |
if ( this._cursors.length < 1 ) |
return ; |
var domRange = this.ToDomRange() ; |
HighlightStyle.ApplyToRange( domRange, false, true ) ; |
this._highlightRange = domRange ; |
var charRange = CharacterRange.CreateFromDomRange( domRange ) ; |
var focusNode = domRange.StartNode ; |
if ( focusNode.nodeType != 1 ) |
focusNode = focusNode.parentNode ; |
FCKDomTools.ScrollIntoView( focusNode, false ) ; |
this._cursors = charRange._cursors ; |
}, |
RemoveHighlight : function() |
{ |
if ( this._highlightRange ) |
{ |
HighlightStyle.RemoveFromRange( this._highlightRange, false, true ) ; |
var charRange = CharacterRange.CreateFromDomRange( this._highlightRange ) ; |
this._cursors = charRange._cursors ; |
this._highlightRange = null ; |
} |
}, |
GetHighlightDomRange : function() |
{ |
return this._highlightRange; |
}, |
MoveNext : function() |
{ |
var next = this._cursors[ this._cursors.length - 1 ].Clone() ; |
var retval = next.MoveNext() ; |
if ( retval ) |
this._cursors = [] ; |
this._cursors.push( next ) ; |
if ( this._cursors.length > this._maxLength ) |
this._cursors.shift() ; |
return retval ; |
}, |
MoveBack : function() |
{ |
var prev = this._cursors[0].Clone() ; |
var retval = prev.MoveBack() ; |
if ( retval ) |
this._cursors = [] ; |
this._cursors.unshift( prev ) ; |
if ( this._cursors.length > this._maxLength ) |
this._cursors.pop() ; |
return retval ; |
}, |
GetEndCharacter : function() |
{ |
if ( this._cursors.length < 1 ) |
return null ; |
var retval = this._cursors[ this._cursors.length - 1 ].GetCharacter() ; |
return retval ; |
}, |
GetNextRange : function( len ) |
{ |
if ( this._cursors.length == 0 ) |
return null ; |
var cur = this._cursors[ this._cursors.length - 1 ].Clone() ; |
cur.MoveNext() ; |
return new CharacterRange( cur, len ) ; |
}, |
GetCursors : function() |
{ |
return this._cursors ; |
} |
} ; |
CharacterRange.CreateFromDomRange = function( domRange ) |
{ |
var w3cRange = domRange._Range ; |
var startContainer = w3cRange.startContainer ; |
var endContainer = w3cRange.endContainer ; |
var startTextNode, startIndex, endTextNode, endIndex ; |
if ( startContainer.nodeType == 3 ) |
{ |
startTextNode = startContainer ; |
startIndex = w3cRange.startOffset ; |
} |
else if ( domRange.StartNode.nodeType == 3 ) |
{ |
startTextNode = domRange.StartNode ; |
startIndex = 0 ; |
} |
else |
{ |
startTextNode = GetNextNonEmptyTextNode( domRange.StartNode, domRange.StartNode.parentNode ) ; |
if ( !startTextNode ) |
return null ; |
startIndex = 0 ; |
} |
if ( endContainer.nodeType == 3 && w3cRange.endOffset > 0 ) |
{ |
endTextNode = endContainer ; |
endIndex = w3cRange.endOffset - 1 ; |
} |
else |
{ |
endTextNode = domRange.EndNode ; |
while ( endTextNode.nodeType != 3 ) |
endTextNode = endTextNode.lastChild ; |
endIndex = endTextNode.length - 1 ; |
} |
var cursors = [] ; |
var current = new CharacterCursor( startTextNode, startIndex ) ; |
cursors.push( current ) ; |
if ( !( current.GetTextNode() == endTextNode && current.GetIndex() == endIndex ) && !domRange.CheckIsEmpty() ) |
{ |
do |
{ |
current = current.Clone() ; |
current.MoveNext() ; |
cursors.push( current ) ; |
} |
while ( !( current.GetTextNode() == endTextNode && current.GetIndex() == endIndex ) ) ; |
} |
return new CharacterRange( cursors, cursors.length ) ; |
} |
// Knuth-Morris-Pratt Algorithm for stream input |
KMP_NOMATCH = 0 ; |
KMP_ADVANCED = 1 ; |
KMP_MATCHED = 2 ; |
KmpMatch = function( pattern, ignoreCase ) |
{ |
var overlap = [ -1 ] ; |
for ( var i = 0 ; i < pattern.length ; i++ ) |
{ |
overlap.push( overlap[i] + 1 ) ; |
while ( overlap[ i + 1 ] > 0 && pattern.charAt( i ) != pattern.charAt( overlap[ i + 1 ] - 1 ) ) |
overlap[ i + 1 ] = overlap[ overlap[ i + 1 ] - 1 ] + 1 ; |
} |
this._Overlap = overlap ; |
this._State = 0 ; |
this._IgnoreCase = ( ignoreCase === true ) ; |
if ( ignoreCase ) |
this.Pattern = pattern.toLowerCase(); |
else |
this.Pattern = pattern ; |
} |
KmpMatch.prototype = { |
FeedCharacter : function( c ) |
{ |
if ( this._IgnoreCase ) |
c = c.toLowerCase(); |
while ( true ) |
{ |
if ( c == this.Pattern.charAt( this._State ) ) |
{ |
this._State++ ; |
if ( this._State == this.Pattern.length ) |
{ |
// found a match, start over, don't care about partial matches involving the current match |
this._State = 0; |
return KMP_MATCHED; |
} |
return KMP_ADVANCED ; |
} |
else if ( this._State == 0 ) |
return KMP_NOMATCH; |
else |
this._State = this._Overlap[ this._State ]; |
} |
return null ; |
}, |
Reset : function() |
{ |
this._State = 0 ; |
} |
}; |
// Place a range at the start of document. |
function OnLoad() |
{ |
// First of all, translate the dialog box texts. |
oEditor.FCKLanguageManager.TranslatePage( document ) ; |
// Show the appropriate tab at startup. |
if ( dialogArguments.CustomValue == 'Find' ) |
{ |
dialog.SetSelectedTab( 'Find' ) ; |
dialog.SetAutoSize( true ) ; |
} |
else |
dialog.SetSelectedTab( 'Replace' ) ; |
SelectField( 'txtFind' + dialogArguments.CustomValue ) ; |
} |
function btnStat() |
{ |
GetE('btnReplace').disabled = |
GetE('btnReplaceAll').disabled = |
GetE('btnFind').disabled = |
( GetE(idMap["FindText"]).value.length == 0 ) ; |
} |
function btnStatDelayed() |
{ |
setTimeout( btnStat, 1 ) ; |
} |
function GetSearchString() |
{ |
return GetE(idMap['FindText']).value ; |
} |
function GetReplaceString() |
{ |
return GetE("txtReplace").value ; |
} |
function GetCheckCase() |
{ |
return !! ( GetE(idMap['CheckCase']).checked ) ; |
} |
function GetMatchWord() |
{ |
return !! ( GetE(idMap['CheckWord']).checked ) ; |
} |
/* Is this character a unicode whitespace or a punctuation mark? |
* References: |
* http://unicode.org/Public/UNIDATA/PropList.txt (whitespaces) |
* http://php.chinaunix.net/manual/tw/ref.regex.php (punctuation marks) |
*/ |
function CheckIsWordSeparator( c ) |
{ |
var code = c.charCodeAt( 0 ); |
if ( code >= 9 && code <= 0xd ) |
return true; |
if ( code >= 0x2000 && code <= 0x200a ) |
return true; |
switch ( code ) |
{ |
case 0x20: |
case 0x85: |
case 0xa0: |
case 0x1680: |
case 0x180e: |
case 0x2028: |
case 0x2029: |
case 0x202f: |
case 0x205f: |
case 0x3000: |
return true; |
default: |
} |
return /[.,"'?!;:]/.test( c ) ; |
} |
FindRange = null ; |
function _Find() |
{ |
var searchString = GetSearchString() ; |
if ( !FindRange ) |
FindRange = new CharacterRange( new CharacterCursor( EditorDocument ), searchString.length ) ; |
else |
{ |
FindRange.RemoveHighlight() ; |
FindRange = FindRange.GetNextRange( searchString.length ) ; |
} |
var matcher = new KmpMatch( searchString, ! GetCheckCase() ) ; |
var matchState = KMP_NOMATCH ; |
var character = '%' ; |
while ( character != null ) |
{ |
while ( ( character = FindRange.GetEndCharacter() ) ) |
{ |
matchState = matcher.FeedCharacter( character ) ; |
if ( matchState == KMP_MATCHED ) |
break ; |
if ( FindRange.MoveNext() ) |
matcher.Reset() ; |
} |
if ( matchState == KMP_MATCHED ) |
{ |
if ( GetMatchWord() ) |
{ |
var cursors = FindRange.GetCursors() ; |
var head = cursors[ cursors.length - 1 ].Clone() ; |
var tail = cursors[0].Clone() ; |
if ( !head.MoveNext() && !CheckIsWordSeparator( head.GetCharacter() ) ) |
continue ; |
if ( !tail.MoveBack() && !CheckIsWordSeparator( tail.GetCharacter() ) ) |
continue ; |
} |
FindRange.Highlight() ; |
return true ; |
} |
} |
FindRange = null ; |
return false ; |
} |
function Find() |
{ |
if ( ! _Find() ) |
alert( FCKLang.DlgFindNotFoundMsg ) ; |
} |
function Replace() |
{ |
var saveUndoStep = function( selectRange ) |
{ |
var ieRange ; |
if ( oEditor.FCKBrowserInfo.IsIE ) |
ieRange = document.selection.createRange() ; |
selectRange.Select() ; |
oEditor.FCKUndo.SaveUndoStep() ; |
var cloneRange = selectRange.Clone() ; |
cloneRange.Collapse( false ) ; |
cloneRange.Select() ; |
if ( ieRange ) |
setTimeout( function(){ ieRange.select() ; }, 1 ) ; |
} |
if ( FindRange && FindRange.GetHighlightDomRange() ) |
{ |
var range = FindRange.GetHighlightDomRange() ; |
var bookmark = range.CreateBookmark() ; |
FindRange.RemoveHighlight() ; |
range.MoveToBookmark( bookmark ) ; |
saveUndoStep( range ) ; |
range.DeleteContents() ; |
range.InsertNode( EditorDocument.createTextNode( GetReplaceString() ) ) ; |
range._UpdateElementInfo() ; |
FindRange = CharacterRange.CreateFromDomRange( range ) ; |
} |
else |
{ |
if ( ! _Find() ) |
{ |
FindRange && FindRange.RemoveHighlight() ; |
alert( FCKLang.DlgFindNotFoundMsg ) ; |
} |
} |
} |
function ReplaceAll() |
{ |
oEditor.FCKUndo.SaveUndoStep() ; |
var replaceCount = 0 ; |
while ( _Find() ) |
{ |
var range = FindRange.GetHighlightDomRange() ; |
var bookmark = range.CreateBookmark() ; |
FindRange.RemoveHighlight() ; |
range.MoveToBookmark( bookmark) ; |
range.DeleteContents() ; |
range.InsertNode( EditorDocument.createTextNode( GetReplaceString() ) ) ; |
range._UpdateElementInfo() ; |
FindRange = CharacterRange.CreateFromDomRange( range ) ; |
replaceCount++ ; |
} |
if ( replaceCount == 0 ) |
{ |
FindRange && FindRange.RemoveHighlight() ; |
alert( FCKLang.DlgFindNotFoundMsg ) ; |
} |
dialog.Cancel() ; |
} |
window.onunload = function() |
{ |
if ( FindRange ) |
{ |
FindRange.RemoveHighlight() ; |
FindRange.ToDomRange().Select() ; |
} |
} |
</script> |
</head> |
<body onload="OnLoad()" style="overflow: hidden"> |
<div id="divFind" style="display: none"> |
<table cellspacing="3" cellpadding="2" width="100%" border="0"> |
<tr> |
<td nowrap="nowrap"> |
<label for="txtFindFind" fcklang="DlgReplaceFindLbl"> |
Find what:</label> |
</td> |
<td width="100%"> |
<input id="txtFindFind" onkeyup="btnStat()" oninput="btnStat()" onpaste="btnStatDelayed()" style="width: 100%" tabindex="1" |
type="text" /> |
</td> |
<td> |
<input id="btnFind" style="width: 80px" disabled="disabled" onclick="Find();" |
type="button" value="Find" fcklang="DlgFindFindBtn" /> |
</td> |
</tr> |
<tr> |
<td valign="bottom" colspan="3"> |
<input id="chkCaseFind" tabindex="3" type="checkbox" /><label for="chkCaseFind" fcklang="DlgReplaceCaseChk">Match |
case</label> |
<br /> |
<input id="chkWordFind" tabindex="4" type="checkbox" /><label for="chkWordFind" fcklang="DlgReplaceWordChk">Match |
whole word</label> |
</td> |
</tr> |
</table> |
</div> |
<div id="divReplace" style="display:none"> |
<table cellspacing="3" cellpadding="2" width="100%" border="0"> |
<tr> |
<td nowrap="nowrap"> |
<label for="txtFindReplace" fcklang="DlgReplaceFindLbl"> |
Find what:</label> |
</td> |
<td width="100%"> |
<input id="txtFindReplace" onkeyup="btnStat()" oninput="btnStat()" onpaste="btnStatDelayed()" style="width: 100%" tabindex="1" |
type="text" /> |
</td> |
<td> |
<input id="btnReplace" style="width: 80px" disabled="disabled" onclick="Replace();" |
type="button" value="Replace" fcklang="DlgReplaceReplaceBtn" /> |
</td> |
</tr> |
<tr> |
<td valign="top" nowrap="nowrap"> |
<label for="txtReplace" fcklang="DlgReplaceReplaceLbl"> |
Replace with:</label> |
</td> |
<td valign="top"> |
<input id="txtReplace" style="width: 100%" tabindex="2" type="text" /> |
</td> |
<td> |
<input id="btnReplaceAll" style="width: 80px" disabled="disabled" onclick="ReplaceAll()" type="button" |
value="Replace All" fcklang="DlgReplaceReplAllBtn" /> |
</td> |
</tr> |
<tr> |
<td valign="bottom" colspan="3"> |
<input id="chkCaseReplace" tabindex="3" type="checkbox" /><label for="chkCaseReplace" fcklang="DlgReplaceCaseChk">Match |
case</label> |
<br /> |
<input id="chkWordReplace" tabindex="4" type="checkbox" /><label for="chkWordReplace" fcklang="DlgReplaceWordChk">Match |
whole word</label> |
</td> |
</tr> |
</table> |
</div> |
</body> |
</html> |
/trunk/api/fckeditor/editor/dialog/fck_paste.html |
---|
New file |
0,0 → 1,346 |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> |
<!-- |
* FCKeditor - The text editor for Internet - http://www.fckeditor.net |
* Copyright (C) 2003-2008 Frederico Caldeira Knabben |
* |
* == BEGIN LICENSE == |
* |
* Licensed under the terms of any of the following licenses at your |
* choice: |
* |
* - GNU General Public License Version 2 or later (the "GPL") |
* http://www.gnu.org/licenses/gpl.html |
* |
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL") |
* http://www.gnu.org/licenses/lgpl.html |
* |
* - Mozilla Public License Version 1.1 or later (the "MPL") |
* http://www.mozilla.org/MPL/MPL-1.1.html |
* |
* == END LICENSE == |
* |
* This dialog is shown when, for some reason (usually security settings), |
* the user is not able to paste data from the clipboard to the editor using |
* the toolbar buttons or the context menu. |
--> |
<html xmlns="http://www.w3.org/1999/xhtml"> |
<head> |
<title></title> |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> |
<meta name="robots" content="noindex, nofollow" /> |
<script src="common/fck_dialog_common.js" type="text/javascript"></script> |
<script type="text/javascript"> |
var dialog = window.parent ; |
var oEditor = dialog.InnerDialogLoaded() ; |
var FCK = oEditor.FCK; |
var FCKTools = oEditor.FCKTools ; |
var FCKConfig = oEditor.FCKConfig ; |
var FCKBrowserInfo = oEditor.FCKBrowserInfo ; |
window.onload = function () |
{ |
// First of all, translate the dialog box texts |
oEditor.FCKLanguageManager.TranslatePage(document) ; |
var sPastingType = dialog.Args().CustomValue ; |
if ( sPastingType == 'Word' || sPastingType == 'Security' ) |
{ |
if ( sPastingType == 'Security' ) |
document.getElementById( 'xSecurityMsg' ).style.display = '' ; |
// For document.domain compatibility (#123) we must do all the magic in |
// the URL for IE. |
var sFrameUrl = !oEditor.FCK_IS_CUSTOM_DOMAIN || !FCKBrowserInfo.IsIE ? |
'javascript:void(0)' : |
'javascript:void( (function(){' + |
'document.open() ;' + |
'document.domain=\'' + document.domain + '\' ;' + |
'document.write(\'<html><head><script>window.onerror = function() { return true ; };<\/script><\/head><body><\/body><\/html>\') ;' + |
'document.close() ;' + |
'document.body.contentEditable = true ;' + |
'window.focus() ;' + |
'})() )' ; |
var eFrameSpace = document.getElementById( 'xFrameSpace' ) ; |
eFrameSpace.innerHTML = '<iframe id="frmData" src="' + sFrameUrl + '" ' + |
'height="98%" width="99%" frameborder="0" style="border: #000000 1px; background-color: #ffffff"><\/iframe>' ; |
var oFrame = eFrameSpace.firstChild ; |
if ( !oEditor.FCK_IS_CUSTOM_DOMAIN || !FCKBrowserInfo.IsIE ) |
{ |
// Avoid errors if the pasted content has any script that fails: #389 |
var oDoc = oFrame.contentWindow.document ; |
oDoc.open() ; |
oDoc.write('<html><head><script>window.onerror = function() { return true ; };<\/script><\/head><body><\/body><\/html>') ; |
oDoc.close() ; |
if ( FCKBrowserInfo.IsIE ) |
oDoc.body.contentEditable = true ; |
else |
oDoc.designMode = 'on' ; |
oFrame.contentWindow.focus(); |
} |
} |
else |
{ |
document.getElementById('txtData').style.display = '' ; |
} |
if ( sPastingType != 'Word' ) |
document.getElementById('oWordCommands').style.display = 'none' ; |
dialog.SetOkButton( true ) ; |
dialog.SetAutoSize( true ) ; |
} |
function Ok() |
{ |
// Before doing anything, save undo snapshot. |
oEditor.FCKUndo.SaveUndoStep() ; |
var sHtml ; |
var sPastingType = dialog.Args().CustomValue ; |
if ( sPastingType == 'Word' || sPastingType == 'Security' ) |
{ |
var oFrame = document.getElementById('frmData') ; |
var oBody ; |
if ( oFrame.contentDocument ) |
oBody = oFrame.contentDocument.body ; |
else |
oBody = oFrame.contentWindow.document.body ; |
if ( sPastingType == 'Word' ) |
{ |
// If a plugin creates a FCK.CustomCleanWord function it will be called instead of the default one |
if ( typeof( FCK.CustomCleanWord ) == 'function' ) |
sHtml = FCK.CustomCleanWord( oBody, document.getElementById('chkRemoveFont').checked, document.getElementById('chkRemoveStyles').checked ) ; |
else |
sHtml = CleanWord( oBody, document.getElementById('chkRemoveFont').checked, document.getElementById('chkRemoveStyles').checked ) ; |
} |
else |
sHtml = oBody.innerHTML ; |
// Fix relative anchor URLs (IE automatically adds the current page URL). |
var re = new RegExp( window.location + "#", "g" ) ; |
sHtml = sHtml.replace( re, '#') ; |
} |
else |
{ |
sHtml = oEditor.FCKTools.HTMLEncode( document.getElementById('txtData').value ) ; |
sHtml = FCKTools.ProcessLineBreaks( oEditor, FCKConfig, sHtml ) ; |
// FCK.InsertHtml() does not work for us, since document fragments cannot contain node fragments. :( |
// Use the marker method instead. It's primitive, but it works. |
var range = new oEditor.FCKDomRange( oEditor.FCK.EditorWindow ) ; |
var oDoc = oEditor.FCK.EditorDocument ; |
dialog.Selection.EnsureSelection() ; |
range.MoveToSelection() ; |
range.DeleteContents() ; |
var marker = [] ; |
for ( var i = 0 ; i < 5 ; i++ ) |
marker.push( parseInt(Math.random() * 100000, 10 ) ) ; |
marker = marker.join( "" ) ; |
range.InsertNode ( oDoc.createTextNode( marker ) ) ; |
var bookmark = range.CreateBookmark() ; |
// Now we've got a marker indicating the paste position in the editor document. |
// Find its position in the HTML code. |
var htmlString = oDoc.body.innerHTML ; |
var index = htmlString.indexOf( marker ) ; |
// Split it the HTML code up, add the code we generated, and put them back together. |
var htmlList = [] ; |
htmlList.push( htmlString.substr( 0, index ) ) ; |
htmlList.push( sHtml ) ; |
htmlList.push( htmlString.substr( index + marker.length ) ) ; |
htmlString = htmlList.join( "" ) ; |
if ( oEditor.FCKBrowserInfo.IsIE ) |
oEditor.FCK.SetInnerHtml( htmlString ) ; |
else |
oDoc.body.innerHTML = htmlString ; |
range.MoveToBookmark( bookmark ) ; |
range.Collapse( false ) ; |
range.Select() ; |
range.Release() ; |
return true ; |
} |
oEditor.FCK.InsertHtml( sHtml ) ; |
return true ; |
} |
// This function will be called from the PasteFromWord dialog (fck_paste.html) |
// Input: oNode a DOM node that contains the raw paste from the clipboard |
// bIgnoreFont, bRemoveStyles booleans according to the values set in the dialog |
// Output: the cleaned string |
function CleanWord( oNode, bIgnoreFont, bRemoveStyles ) |
{ |
var html = oNode.innerHTML ; |
html = html.replace(/<o:p>\s*<\/o:p>/g, '') ; |
html = html.replace(/<o:p>[\s\S]*?<\/o:p>/g, ' ') ; |
// Remove mso-xxx styles. |
html = html.replace( /\s*mso-[^:]+:[^;"]+;?/gi, '' ) ; |
// Remove margin styles. |
html = html.replace( /\s*MARGIN: 0cm 0cm 0pt\s*;/gi, '' ) ; |
html = html.replace( /\s*MARGIN: 0cm 0cm 0pt\s*"/gi, "\"" ) ; |
html = html.replace( /\s*TEXT-INDENT: 0cm\s*;/gi, '' ) ; |
html = html.replace( /\s*TEXT-INDENT: 0cm\s*"/gi, "\"" ) ; |
html = html.replace( /\s*TEXT-ALIGN: [^\s;]+;?"/gi, "\"" ) ; |
html = html.replace( /\s*PAGE-BREAK-BEFORE: [^\s;]+;?"/gi, "\"" ) ; |
html = html.replace( /\s*FONT-VARIANT: [^\s;]+;?"/gi, "\"" ) ; |
html = html.replace( /\s*tab-stops:[^;"]*;?/gi, '' ) ; |
html = html.replace( /\s*tab-stops:[^"]*/gi, '' ) ; |
// Remove FONT face attributes. |
if ( bIgnoreFont ) |
{ |
html = html.replace( /\s*face="[^"]*"/gi, '' ) ; |
html = html.replace( /\s*face=[^ >]*/gi, '' ) ; |
html = html.replace( /\s*FONT-FAMILY:[^;"]*;?/gi, '' ) ; |
} |
// Remove Class attributes |
html = html.replace(/<(\w[^>]*) class=([^ |>]*)([^>]*)/gi, "<$1$3") ; |
// Remove styles. |
if ( bRemoveStyles ) |
html = html.replace( /<(\w[^>]*) style="([^\"]*)"([^>]*)/gi, "<$1$3" ) ; |
// Remove style, meta and link tags |
html = html.replace( /<STYLE[^>]*>[\s\S]*?<\/STYLE[^>]*>/gi, '' ) ; |
html = html.replace( /<(?:META|LINK)[^>]*>\s*/gi, '' ) ; |
// Remove empty styles. |
html = html.replace( /\s*style="\s*"/gi, '' ) ; |
html = html.replace( /<SPAN\s*[^>]*>\s* \s*<\/SPAN>/gi, ' ' ) ; |
html = html.replace( /<SPAN\s*[^>]*><\/SPAN>/gi, '' ) ; |
// Remove Lang attributes |
html = html.replace(/<(\w[^>]*) lang=([^ |>]*)([^>]*)/gi, "<$1$3") ; |
html = html.replace( /<SPAN\s*>([\s\S]*?)<\/SPAN>/gi, '$1' ) ; |
html = html.replace( /<FONT\s*>([\s\S]*?)<\/FONT>/gi, '$1' ) ; |
// Remove XML elements and declarations |
html = html.replace(/<\\?\?xml[^>]*>/gi, '' ) ; |
// Remove w: tags with contents. |
html = html.replace( /<w:[^>]*>[\s\S]*?<\/w:[^>]*>/gi, '' ) ; |
// Remove Tags with XML namespace declarations: <o:p><\/o:p> |
html = html.replace(/<\/?\w+:[^>]*>/gi, '' ) ; |
// Remove comments [SF BUG-1481861]. |
html = html.replace(/<\!--[\s\S]*?-->/g, '' ) ; |
html = html.replace( /<(U|I|STRIKE)> <\/\1>/g, ' ' ) ; |
html = html.replace( /<H\d>\s*<\/H\d>/gi, '' ) ; |
// Remove "display:none" tags. |
html = html.replace( /<(\w+)[^>]*\sstyle="[^"]*DISPLAY\s?:\s?none[\s\S]*?<\/\1>/ig, '' ) ; |
// Remove language tags |
html = html.replace( /<(\w[^>]*) language=([^ |>]*)([^>]*)/gi, "<$1$3") ; |
// Remove onmouseover and onmouseout events (from MS Word comments effect) |
html = html.replace( /<(\w[^>]*) onmouseover="([^\"]*)"([^>]*)/gi, "<$1$3") ; |
html = html.replace( /<(\w[^>]*) onmouseout="([^\"]*)"([^>]*)/gi, "<$1$3") ; |
if ( FCKConfig.CleanWordKeepsStructure ) |
{ |
// The original <Hn> tag send from Word is something like this: <Hn style="margin-top:0px;margin-bottom:0px"> |
html = html.replace( /<H(\d)([^>]*)>/gi, '<h$1>' ) ; |
// Word likes to insert extra <font> tags, when using MSIE. (Wierd). |
html = html.replace( /<(H\d)><FONT[^>]*>([\s\S]*?)<\/FONT><\/\1>/gi, '<$1>$2<\/$1>' ); |
html = html.replace( /<(H\d)><EM>([\s\S]*?)<\/EM><\/\1>/gi, '<$1>$2<\/$1>' ); |
} |
else |
{ |
html = html.replace( /<H1([^>]*)>/gi, '<div$1><b><font size="6">' ) ; |
html = html.replace( /<H2([^>]*)>/gi, '<div$1><b><font size="5">' ) ; |
html = html.replace( /<H3([^>]*)>/gi, '<div$1><b><font size="4">' ) ; |
html = html.replace( /<H4([^>]*)>/gi, '<div$1><b><font size="3">' ) ; |
html = html.replace( /<H5([^>]*)>/gi, '<div$1><b><font size="2">' ) ; |
html = html.replace( /<H6([^>]*)>/gi, '<div$1><b><font size="1">' ) ; |
html = html.replace( /<\/H\d>/gi, '<\/font><\/b><\/div>' ) ; |
// Transform <P> to <DIV> |
var re = new RegExp( '(<P)([^>]*>[\\s\\S]*?)(<\/P>)', 'gi' ) ; // Different because of a IE 5.0 error |
html = html.replace( re, '<div$2<\/div>' ) ; |
// Remove empty tags (three times, just to be sure). |
// This also removes any empty anchor |
html = html.replace( /<([^\s>]+)(\s[^>]*)?>\s*<\/\1>/g, '' ) ; |
html = html.replace( /<([^\s>]+)(\s[^>]*)?>\s*<\/\1>/g, '' ) ; |
html = html.replace( /<([^\s>]+)(\s[^>]*)?>\s*<\/\1>/g, '' ) ; |
} |
return html ; |
} |
</script> |
</head> |
<body style="overflow: hidden"> |
<table cellspacing="0" cellpadding="0" width="100%" border="0" style="height: 98%"> |
<tr> |
<td> |
<div id="xSecurityMsg" style="display: none"> |
<span fcklang="DlgPasteSec">Because of your browser security settings, |
the editor is not able to access your clipboard data directly. You are required |
to paste it again in this window.</span><br /> |
|
</div> |
<div> |
<span fcklang="DlgPasteMsg2">Please paste inside the following box using the keyboard |
(<strong>Ctrl+V</strong>) and hit <strong>OK</strong>.</span><br /> |
|
</div> |
</td> |
</tr> |
<tr> |
<td id="xFrameSpace" valign="top" height="100%" style="border: #000000 1px solid"> |
<textarea id="txtData" cols="80" rows="5" style="border: #000000 1px; display: none; |
width: 99%; height: 98%"></textarea> |
</td> |
</tr> |
<tr id="oWordCommands"> |
<td> |
<input id="chkRemoveFont" type="checkbox" checked="checked" /> |
<label for="chkRemoveFont" fcklang="DlgPasteIgnoreFont"> |
Ignore Font Face definitions</label> |
<br /> |
<input id="chkRemoveStyles" type="checkbox" /> |
<label for="chkRemoveStyles" fcklang="DlgPasteRemoveStyles"> |
Remove Styles definitions</label> |
</td> |
</tr> |
</table> |
</body> |
</html> |
/trunk/api/fckeditor/editor/dialog/fck_listprop.html |
---|
New file |
0,0 → 1,120 |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" > |
<!-- |
* FCKeditor - The text editor for Internet - http://www.fckeditor.net |
* Copyright (C) 2003-2008 Frederico Caldeira Knabben |
* |
* == BEGIN LICENSE == |
* |
* Licensed under the terms of any of the following licenses at your |
* choice: |
* |
* - GNU General Public License Version 2 or later (the "GPL") |
* http://www.gnu.org/licenses/gpl.html |
* |
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL") |
* http://www.gnu.org/licenses/lgpl.html |
* |
* - Mozilla Public License Version 1.1 or later (the "MPL") |
* http://www.mozilla.org/MPL/MPL-1.1.html |
* |
* == END LICENSE == |
* |
* Bulleted List dialog window. |
--> |
<html xmlns="http://www.w3.org/1999/xhtml"> |
<head> |
<title></title> |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> |
<meta content="noindex, nofollow" name="robots" /> |
<script src="common/fck_dialog_common.js" type="text/javascript"></script> |
<script type="text/javascript"> |
var dialog = window.parent ; |
var oEditor = dialog.InnerDialogLoaded() ; |
// Gets the document DOM |
var oDOM = oEditor.FCK.EditorDocument ; |
var sListType = ( location.search == '?OL' ? 'OL' : 'UL' ) ; |
var oActiveEl = dialog.Selection.GetSelection().MoveToAncestorNode( sListType ) ; |
var oActiveSel ; |
window.onload = function() |
{ |
// First of all, translate the dialog box texts |
oEditor.FCKLanguageManager.TranslatePage(document) ; |
if ( sListType == 'UL' ) |
oActiveSel = GetE('selBulleted') ; |
else |
{ |
if ( oActiveEl ) |
{ |
oActiveSel = GetE('selNumbered') ; |
GetE('eStart').style.display = '' ; |
GetE('txtStartPosition').value = GetAttribute( oActiveEl, 'start' ) ; |
} |
} |
oActiveSel.style.display = '' ; |
if ( oActiveEl ) |
{ |
if ( oActiveEl.getAttribute('type') ) |
oActiveSel.value = oActiveEl.getAttribute('type') ; |
} |
dialog.SetOkButton( true ) ; |
dialog.SetAutoSize( true ) ; |
SelectField( sListType == 'OL' ? 'txtStartPosition' : 'selBulleted' ) ; |
} |
function Ok() |
{ |
if ( oActiveEl ){ |
SetAttribute( oActiveEl, 'type' , oActiveSel.value ) ; |
if(oActiveEl.tagName == 'OL') |
SetAttribute( oActiveEl, 'start', GetE('txtStartPosition').value ) ; |
} |
return true ; |
} |
</script> |
</head> |
<body style="overflow: hidden"> |
<table width="100%" style="height: 100%"> |
<tr> |
<td style="text-align:center"> |
<table cellspacing="0" cellpadding="0" border="0" style="margin-left: auto; margin-right: auto;"> |
<tr> |
<td id="eStart" style="display: none; padding-right: 5px; padding-left: 5px"> |
<span fcklang="DlgLstStart">Start</span><br /> |
<input type="text" id="txtStartPosition" size="5" /> |
</td> |
<td style="padding-right: 5px; padding-left: 5px"> |
<span fcklang="DlgLstType">List Type</span><br /> |
<select id="selBulleted" style="display: none"> |
<option value="" selected="selected"></option> |
<option value="circle" fcklang="DlgLstTypeCircle">Circle</option> |
<option value="disc" fcklang="DlgLstTypeDisc">Disc</option> |
<option value="square" fcklang="DlgLstTypeSquare">Square</option> |
</select> |
<select id="selNumbered" style="display: none"> |
<option value="" selected="selected"></option> |
<option value="1" fcklang="DlgLstTypeNumbers">Numbers (1, 2, 3)</option> |
<option value="a" fcklang="DlgLstTypeLCase">Lowercase Letters (a, b, c)</option> |
<option value="A" fcklang="DlgLstTypeUCase">Uppercase Letters (A, B, C)</option> |
<option value="i" fcklang="DlgLstTypeSRoman">Small Roman Numerals (i, ii, iii)</option> |
<option value="I" fcklang="DlgLstTypeLRoman">Large Roman Numerals (I, II, III)</option> |
</select> |
|
</td> |
</tr> |
</table> |
</td> |
</tr> |
</table> |
</body> |
</html> |
/trunk/api/fckeditor/editor/dialog/fck_textarea.html |
---|
New file |
0,0 → 1,94 |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" > |
<!-- |
* FCKeditor - The text editor for Internet - http://www.fckeditor.net |
* Copyright (C) 2003-2008 Frederico Caldeira Knabben |
* |
* == BEGIN LICENSE == |
* |
* Licensed under the terms of any of the following licenses at your |
* choice: |
* |
* - GNU General Public License Version 2 or later (the "GPL") |
* http://www.gnu.org/licenses/gpl.html |
* |
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL") |
* http://www.gnu.org/licenses/lgpl.html |
* |
* - Mozilla Public License Version 1.1 or later (the "MPL") |
* http://www.mozilla.org/MPL/MPL-1.1.html |
* |
* == END LICENSE == |
* |
* Text Area dialog window. |
--> |
<html> |
<head> |
<title>Text Area Properties</title> |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> |
<meta content="noindex, nofollow" name="robots"> |
<script src="common/fck_dialog_common.js" type="text/javascript"></script> |
<script type="text/javascript"> |
var dialog = window.parent ; |
var oEditor = dialog.InnerDialogLoaded() ; |
// Gets the document DOM |
var oDOM = oEditor.FCK.EditorDocument ; |
var oActiveEl = dialog.Selection.GetSelectedElement() ; |
window.onload = function() |
{ |
// First of all, translate the dialog box texts |
oEditor.FCKLanguageManager.TranslatePage(document) ; |
if ( oActiveEl && oActiveEl.tagName == 'TEXTAREA' ) |
{ |
GetE('txtName').value = oActiveEl.name ; |
GetE('txtCols').value = GetAttribute( oActiveEl, 'cols' ) ; |
GetE('txtRows').value = GetAttribute( oActiveEl, 'rows' ) ; |
} |
else |
oActiveEl = null ; |
dialog.SetOkButton( true ) ; |
dialog.SetAutoSize( true ) ; |
SelectField( 'txtName' ) ; |
} |
function Ok() |
{ |
oEditor.FCKUndo.SaveUndoStep() ; |
oActiveEl = CreateNamedElement( oEditor, oActiveEl, 'TEXTAREA', {name: GetE('txtName').value} ) ; |
SetAttribute( oActiveEl, 'cols', GetE('txtCols').value ) ; |
SetAttribute( oActiveEl, 'rows', GetE('txtRows').value ) ; |
return true ; |
} |
</script> |
</head> |
<body style="overflow: hidden"> |
<table height="100%" width="100%"> |
<tr> |
<td align="center"> |
<table border="0" cellpadding="0" cellspacing="0" width="80%"> |
<tr> |
<td> |
<span fckLang="DlgTextareaName">Name</span><br> |
<input type="text" id="txtName" style="WIDTH: 100%"> |
<span fckLang="DlgTextareaCols">Collumns</span><br> |
<input id="txtCols" type="text" size="5"> |
<br> |
<span fckLang="DlgTextareaRows">Rows</span><br> |
<input id="txtRows" type="text" size="5"> |
</td> |
</tr> |
</table> |
</td> |
</tr> |
</table> |
</body> |
</html> |
/trunk/api/fckeditor/editor/dialog/fck_specialchar.html |
---|
New file |
0,0 → 1,121 |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" > |
<!-- |
* FCKeditor - The text editor for Internet - http://www.fckeditor.net |
* Copyright (C) 2003-2008 Frederico Caldeira Knabben |
* |
* == BEGIN LICENSE == |
* |
* Licensed under the terms of any of the following licenses at your |
* choice: |
* |
* - GNU General Public License Version 2 or later (the "GPL") |
* http://www.gnu.org/licenses/gpl.html |
* |
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL") |
* http://www.gnu.org/licenses/lgpl.html |
* |
* - Mozilla Public License Version 1.1 or later (the "MPL") |
* http://www.mozilla.org/MPL/MPL-1.1.html |
* |
* == END LICENSE == |
* |
* Special Chars Selector dialog window. |
--> |
<html> |
<head> |
<meta name="robots" content="noindex, nofollow"> |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> |
<style type="text/css"> |
.Hand |
{ |
cursor: pointer ; |
cursor: hand ; |
} |
.Sample { font-size: 24px; } |
</style> |
<script src="common/fck_dialog_common.js" type="text/javascript"></script> |
<script type="text/javascript"> |
var oEditor = window.parent.InnerDialogLoaded() ; |
var oSample ; |
function insertChar(charValue) |
{ |
oEditor.FCKUndo.SaveUndoStep() ; |
oEditor.FCK.InsertHtml( charValue || "" ) ; |
window.parent.Cancel() ; |
} |
function over(td) |
{ |
if ( ! oSample ) |
return ; |
oSample.innerHTML = td.innerHTML ; |
td.className = 'LightBackground SpecialCharsOver Hand' ; |
} |
function out(td) |
{ |
if ( ! oSample ) |
return ; |
oSample.innerHTML = " " ; |
td.className = 'DarkBackground SpecialCharsOut Hand' ; |
} |
function setDefaults() |
{ |
// Gets the sample placeholder. |
oSample = document.getElementById("SampleTD") ; |
// First of all, translates the dialog box texts. |
oEditor.FCKLanguageManager.TranslatePage(document) ; |
window.parent.SetAutoSize( true ) ; |
} |
</script> |
</head> |
<body onload="setDefaults()" style="overflow: hidden"> |
<table cellpadding="0" cellspacing="0" width="100%" height="100%"> |
<tr> |
<td width="100%"> |
<table cellpadding="1" cellspacing="1" align="center" border="0" width="100%" height="100%"> |
<script type="text/javascript"> |
var aChars = ["!",""","#","$","%","&","\\'","(",")","*","+","-",".","/","0","1","2","3","4","5","6","7","8","9",":",";","<","=",">","?","@","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","[","]","^","_","`","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","{","|","}","~","€","‘","’","’","“","”","–","—","¡","¢","£","¤","¥","¦","§","¨","©","ª","«","¬","®","¯","°","±","²","³","´","µ","¶","·","¸","¹","º","»","¼","½","¾","¿","À","Á","Â","Ã","Ä","Å","Æ","Ç","È","É","Ê","Ë","Ì","Í","Î","Ï","Ð","Ñ","Ò","Ó","Ô","Õ","Ö","×","Ø","Ù","Ú","Û","Ü","Ý","Þ","ß","à","á","â","ã","ä","å","æ","ç","è","é","ê","ë","ì","í","î","ï","ð","ñ","ò","ó","ô","õ","ö","÷","ø","ù","ú","û","ü","ü","ý","þ","ÿ","Œ","œ","Ŵ","Ŷ","ŵ","ŷ","‚","‛","„","…","™","►","•","→","⇒","⇔","♦","≈"] ; |
var cols = 20 ; |
var i = 0 ; |
while (i < aChars.length) |
{ |
document.write("<TR>") ; |
for(var j = 0 ; j < cols ; j++) |
{ |
if (aChars[i]) |
{ |
document.write('<TD width="1%" class="DarkBackground SpecialCharsOut Hand" align="center" onclick="insertChar(\'' + aChars[i].replace(/&/g, "&") + '\')" onmouseover="over(this)" onmouseout="out(this)">') ; |
document.write(aChars[i]) ; |
} |
else |
document.write("<TD class='DarkBackground SpecialCharsOut'> ") ; |
document.write("<\/TD>") ; |
i++ ; |
} |
document.write("<\/TR>") ; |
} |
</script> |
</table> |
</td> |
<td nowrap> </td> |
<td valign="top"> |
<table width="40" cellpadding="0" cellspacing="0" border="0"> |
<tr> |
<td id="SampleTD" width="40" height="40" align="center" class="DarkBackground SpecialCharsOut Sample"> </td> |
</tr> |
</table> |
</td> |
</tr> |
</table> |
</body> |
</html> |
/trunk/api/fckeditor/editor/dialog/fck_colorselector.html |
---|
New file |
0,0 → 1,172 |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" > |
<!-- |
* FCKeditor - The text editor for Internet - http://www.fckeditor.net |
* Copyright (C) 2003-2008 Frederico Caldeira Knabben |
* |
* == BEGIN LICENSE == |
* |
* Licensed under the terms of any of the following licenses at your |
* choice: |
* |
* - GNU General Public License Version 2 or later (the "GPL") |
* http://www.gnu.org/licenses/gpl.html |
* |
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL") |
* http://www.gnu.org/licenses/lgpl.html |
* |
* - Mozilla Public License Version 1.1 or later (the "MPL") |
* http://www.mozilla.org/MPL/MPL-1.1.html |
* |
* == END LICENSE == |
* |
* Color Selection dialog window. |
--> |
<html> |
<head> |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> |
<meta name="robots" content="noindex, nofollow" /> |
<style TYPE="text/css"> |
#ColorTable { cursor: pointer ; cursor: hand ; } |
#hicolor { height: 74px ; width: 74px ; border-width: 1px ; border-style: solid ; } |
#hicolortext { width: 75px ; text-align: right ; margin-bottom: 7px ; } |
#selhicolor { height: 20px ; width: 74px ; border-width: 1px ; border-style: solid ; } |
#selcolor { width: 75px ; height: 20px ; margin-top: 0px ; margin-bottom: 7px ; } |
#btnClear { width: 75px ; height: 22px ; margin-bottom: 6px ; } |
.ColorCell { height: 15px ; width: 15px ; } |
</style> |
<script src="common/fck_dialog_common.js" type="text/javascript"></script> |
<script type="text/javascript"> |
var oEditor = window.parent.InnerDialogLoaded() ; |
function OnLoad() |
{ |
// First of all, translate the dialog box texts |
oEditor.FCKLanguageManager.TranslatePage(document) ; |
CreateColorTable() ; |
window.parent.SetOkButton( true ) ; |
window.parent.SetAutoSize( true ) ; |
} |
function CreateColorTable() |
{ |
// Get the target table. |
var oTable = document.getElementById('ColorTable') ; |
// Create the base colors array. |
var aColors = ['00','33','66','99','cc','ff'] ; |
// This function combines two ranges of three values from the color array into a row. |
function AppendColorRow( rangeA, rangeB ) |
{ |
for ( var i = rangeA ; i < rangeA + 3 ; i++ ) |
{ |
var oRow = oTable.insertRow(-1) ; |
for ( var j = rangeB ; j < rangeB + 3 ; j++ ) |
{ |
for ( var n = 0 ; n < 6 ; n++ ) |
{ |
AppendColorCell( oRow, '#' + aColors[j] + aColors[n] + aColors[i] ) ; |
} |
} |
} |
} |
// This function create a single color cell in the color table. |
function AppendColorCell( targetRow, color ) |
{ |
var oCell = targetRow.insertCell(-1) ; |
oCell.className = 'ColorCell' ; |
oCell.bgColor = color ; |
oCell.onmouseover = function() |
{ |
document.getElementById('hicolor').style.backgroundColor = this.bgColor ; |
document.getElementById('hicolortext').innerHTML = this.bgColor ; |
} |
oCell.onclick = function() |
{ |
document.getElementById('selhicolor').style.backgroundColor = this.bgColor ; |
document.getElementById('selcolor').value = this.bgColor ; |
} |
} |
AppendColorRow( 0, 0 ) ; |
AppendColorRow( 3, 0 ) ; |
AppendColorRow( 0, 3 ) ; |
AppendColorRow( 3, 3 ) ; |
// Create the last row. |
var oRow = oTable.insertRow(-1) ; |
// Create the gray scale colors cells. |
for ( var n = 0 ; n < 6 ; n++ ) |
{ |
AppendColorCell( oRow, '#' + aColors[n] + aColors[n] + aColors[n] ) ; |
} |
// Fill the row with black cells. |
for ( var i = 0 ; i < 12 ; i++ ) |
{ |
AppendColorCell( oRow, '#000000' ) ; |
} |
} |
function Clear() |
{ |
document.getElementById('selhicolor').style.backgroundColor = '' ; |
document.getElementById('selcolor').value = '' ; |
} |
function ClearActual() |
{ |
document.getElementById('hicolor').style.backgroundColor = '' ; |
document.getElementById('hicolortext').innerHTML = ' ' ; |
} |
function UpdateColor() |
{ |
try { document.getElementById('selhicolor').style.backgroundColor = document.getElementById('selcolor').value ; } |
catch (e) { Clear() ; } |
} |
function Ok() |
{ |
if ( typeof(window.parent.Args().CustomValue) == 'function' ) |
window.parent.Args().CustomValue( document.getElementById('selcolor').value ) ; |
return true ; |
} |
</script> |
</head> |
<body onload="OnLoad()" scroll="no" style="OVERFLOW: hidden"> |
<table cellpadding="0" cellspacing="0" border="0" width="100%" height="100%"> |
<tr> |
<td align="center" valign="middle"> |
<table border="0" cellspacing="5" cellpadding="0" width="100%"> |
<tr> |
<td valign="top" align="center" nowrap width="100%"> |
<table id="ColorTable" border="0" cellspacing="0" cellpadding="0" width="270" onmouseout="ClearActual();"> |
</table> |
</td> |
<td valign="top" align="left" nowrap> |
<span fckLang="DlgColorHighlight">Highlight</span> |
<div id="hicolor"></div> |
<div id="hicolortext"> </div> |
<span fckLang="DlgColorSelected">Selected</span> |
<div id="selhicolor"></div> |
<input id="selcolor" type="text" maxlength="20" onchange="UpdateColor();"> |
<br> |
<input id="btnClear" type="button" fckLang="DlgColorBtnClear" value="Clear" onclick="Clear();" /> |
</td> |
</tr> |
</table> |
</td> |
</tr> |
</table> |
</body> |
</html> |
/trunk/api/fckeditor/editor/dialog/fck_image.html |
---|
New file |
0,0 → 1,258 |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> |
<!-- |
* FCKeditor - The text editor for Internet - http://www.fckeditor.net |
* Copyright (C) 2003-2008 Frederico Caldeira Knabben |
* |
* == BEGIN LICENSE == |
* |
* Licensed under the terms of any of the following licenses at your |
* choice: |
* |
* - GNU General Public License Version 2 or later (the "GPL") |
* http://www.gnu.org/licenses/gpl.html |
* |
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL") |
* http://www.gnu.org/licenses/lgpl.html |
* |
* - Mozilla Public License Version 1.1 or later (the "MPL") |
* http://www.mozilla.org/MPL/MPL-1.1.html |
* |
* == END LICENSE == |
* |
* Image Properties dialog window. |
--> |
<html xmlns="http://www.w3.org/1999/xhtml"> |
<head> |
<title>Image Properties</title> |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> |
<meta name="robots" content="noindex, nofollow" /> |
<script src="common/fck_dialog_common.js" type="text/javascript"></script> |
<script src="fck_image/fck_image.js" type="text/javascript"></script> |
<script type="text/javascript"> |
document.write( FCKTools.GetStyleHtml( GetCommonDialogCss() ) ) ; |
</script> |
</head> |
<body scroll="no" style="overflow: hidden"> |
<div id="divInfo"> |
<table cellspacing="1" cellpadding="1" border="0" width="100%" height="100%"> |
<tr> |
<td> |
<table cellspacing="0" cellpadding="0" width="100%" border="0"> |
<tr> |
<td width="100%"> |
<span fcklang="DlgImgURL">URL</span> |
</td> |
<td id="tdBrowse" style="display: none" nowrap="nowrap" rowspan="2"> |
|
<input id="btnBrowse" onclick="BrowseServer();" type="button" value="Browse Server" |
fcklang="DlgBtnBrowseServer" /> |
</td> |
</tr> |
<tr> |
<td valign="top"> |
<input id="txtUrl" style="width: 100%" type="text" onblur="UpdatePreview();" /> |
</td> |
</tr> |
</table> |
</td> |
</tr> |
<tr> |
<td> |
<span fcklang="DlgImgAlt">Short Description</span><br /> |
<input id="txtAlt" style="width: 100%" type="text" /><br /> |
</td> |
</tr> |
<tr height="100%"> |
<td valign="top"> |
<table cellspacing="0" cellpadding="0" width="100%" border="0" height="100%"> |
<tr> |
<td valign="top"> |
<br /> |
<table cellspacing="0" cellpadding="0" border="0"> |
<tr> |
<td nowrap="nowrap"> |
<span fcklang="DlgImgWidth">Width</span> </td> |
<td> |
<input type="text" size="3" id="txtWidth" onkeyup="OnSizeChanged('Width',this.value);" /></td> |
<td rowspan="2"> |
<div id="btnLockSizes" class="BtnLocked" onmouseover="this.className = (bLockRatio ? 'BtnLocked' : 'BtnUnlocked' ) + ' BtnOver';" |
onmouseout="this.className = (bLockRatio ? 'BtnLocked' : 'BtnUnlocked' );" title="Lock Sizes" |
onclick="SwitchLock(this);"> |
</div> |
</td> |
<td rowspan="2"> |
<div id="btnResetSize" class="BtnReset" onmouseover="this.className='BtnReset BtnOver';" |
onmouseout="this.className='BtnReset';" title="Reset Size" onclick="ResetSizes();"> |
</div> |
</td> |
</tr> |
<tr> |
<td nowrap="nowrap"> |
<span fcklang="DlgImgHeight">Height</span> </td> |
<td> |
<input type="text" size="3" id="txtHeight" onkeyup="OnSizeChanged('Height',this.value);" /></td> |
</tr> |
</table> |
<br /> |
<table cellspacing="0" cellpadding="0" border="0"> |
<tr> |
<td nowrap="nowrap"> |
<span fcklang="DlgImgBorder">Border</span> </td> |
<td> |
<input type="text" size="2" value="" id="txtBorder" onkeyup="UpdatePreview();" /></td> |
</tr> |
<tr> |
<td nowrap="nowrap"> |
<span fcklang="DlgImgHSpace">HSpace</span> </td> |
<td> |
<input type="text" size="2" id="txtHSpace" onkeyup="UpdatePreview();" /></td> |
</tr> |
<tr> |
<td nowrap="nowrap"> |
<span fcklang="DlgImgVSpace">VSpace</span> </td> |
<td> |
<input type="text" size="2" id="txtVSpace" onkeyup="UpdatePreview();" /></td> |
</tr> |
<tr> |
<td nowrap="nowrap"> |
<span fcklang="DlgImgAlign">Align</span> </td> |
<td> |
<select id="cmbAlign" onchange="UpdatePreview();"> |
<option value="" selected="selected"></option> |
<option fcklang="DlgImgAlignLeft" value="left">Left</option> |
<option fcklang="DlgImgAlignAbsBottom" value="absBottom">Abs Bottom</option> |
<option fcklang="DlgImgAlignAbsMiddle" value="absMiddle">Abs Middle</option> |
<option fcklang="DlgImgAlignBaseline" value="baseline">Baseline</option> |
<option fcklang="DlgImgAlignBottom" value="bottom">Bottom</option> |
<option fcklang="DlgImgAlignMiddle" value="middle">Middle</option> |
<option fcklang="DlgImgAlignRight" value="right">Right</option> |
<option fcklang="DlgImgAlignTextTop" value="textTop">Text Top</option> |
<option fcklang="DlgImgAlignTop" value="top">Top</option> |
</select> |
</td> |
</tr> |
</table> |
</td> |
<td> |
</td> |
<td width="100%" valign="top"> |
<table cellpadding="0" cellspacing="0" width="100%" style="table-layout: fixed"> |
<tr> |
<td> |
<span fcklang="DlgImgPreview">Preview</span></td> |
</tr> |
<tr> |
<td valign="top"> |
<iframe class="ImagePreviewArea" src="fck_image/fck_image_preview.html" frameborder="0" |
marginheight="0" marginwidth="0"></iframe> |
</td> |
</tr> |
</table> |
</td> |
</tr> |
</table> |
</td> |
</tr> |
</table> |
</div> |
<div id="divUpload" style="display: none"> |
<form id="frmUpload" method="post" target="UploadWindow" enctype="multipart/form-data" |
action="" onsubmit="return CheckUpload();"> |
<span fcklang="DlgLnkUpload">Upload</span><br /> |
<input id="txtUploadFile" style="width: 100%" type="file" size="40" name="NewFile" /><br /> |
<br /> |
<input id="btnUpload" type="submit" value="Send it to the Server" fcklang="DlgLnkBtnUpload" /> |
<script type="text/javascript"> |
document.write( '<iframe name="UploadWindow" style="display: none" src="' + FCKTools.GetVoidUrl() + '"><\/iframe>' ) ; |
</script> |
</form> |
</div> |
<div id="divLink" style="display: none"> |
<table cellspacing="1" cellpadding="1" border="0" width="100%"> |
<tr> |
<td> |
<div> |
<span fcklang="DlgLnkURL">URL</span><br /> |
<input id="txtLnkUrl" style="width: 100%" type="text" onblur="UpdatePreview();" /> |
</div> |
<div id="divLnkBrowseServer" align="right"> |
<input type="button" value="Browse Server" fcklang="DlgBtnBrowseServer" onclick="LnkBrowseServer();" /> |
</div> |
<div> |
<span fcklang="DlgLnkTarget">Target</span><br /> |
<select id="cmbLnkTarget"> |
<option value="" fcklang="DlgGenNotSet" selected="selected"><not set></option> |
<option value="_blank" fcklang="DlgLnkTargetBlank">New Window (_blank)</option> |
<option value="_top" fcklang="DlgLnkTargetTop">Topmost Window (_top)</option> |
<option value="_self" fcklang="DlgLnkTargetSelf">Same Window (_self)</option> |
<option value="_parent" fcklang="DlgLnkTargetParent">Parent Window (_parent)</option> |
</select> |
</div> |
</td> |
</tr> |
</table> |
</div> |
<div id="divAdvanced" style="display: none"> |
<table cellspacing="0" cellpadding="0" width="100%" align="center" border="0"> |
<tr> |
<td valign="top" width="50%"> |
<span fcklang="DlgGenId">Id</span><br /> |
<input id="txtAttId" style="width: 100%" type="text" /> |
</td> |
<td width="1"> |
</td> |
<td valign="top"> |
<table cellspacing="0" cellpadding="0" width="100%" align="center" border="0"> |
<tr> |
<td width="60%"> |
<span fcklang="DlgGenLangDir">Language Direction</span><br /> |
<select id="cmbAttLangDir" style="width: 100%"> |
<option value="" fcklang="DlgGenNotSet" selected="selected"><not set></option> |
<option value="ltr" fcklang="DlgGenLangDirLtr">Left to Right (LTR)</option> |
<option value="rtl" fcklang="DlgGenLangDirRtl">Right to Left (RTL)</option> |
</select> |
</td> |
<td width="1%"> |
</td> |
<td nowrap="nowrap"> |
<span fcklang="DlgGenLangCode">Language Code</span><br /> |
<input id="txtAttLangCode" style="width: 100%" type="text" /> |
</td> |
</tr> |
</table> |
</td> |
</tr> |
<tr> |
<td colspan="3"> |
</td> |
</tr> |
<tr> |
<td colspan="3"> |
<span fcklang="DlgGenLongDescr">Long Description URL</span><br /> |
<input id="txtLongDesc" style="width: 100%" type="text" /> |
</td> |
</tr> |
<tr> |
<td colspan="3"> |
</td> |
</tr> |
<tr> |
<td valign="top"> |
<span fcklang="DlgGenClass">Stylesheet Classes</span><br /> |
<input id="txtAttClasses" style="width: 100%" type="text" /> |
</td> |
<td> |
</td> |
<td valign="top"> |
<span fcklang="DlgGenTitle">Advisory Title</span><br /> |
<input id="txtAttTitle" style="width: 100%" type="text" /> |
</td> |
</tr> |
</table> |
<span fcklang="DlgGenStyle">Style</span><br /> |
<input id="txtAttStyle" style="width: 100%" type="text" /> |
</div> |
</body> |
</html> |
/trunk/api/fckeditor/editor/dialog/fck_spellerpages.html |
---|
New file |
0,0 → 1,70 |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" > |
<!-- |
* FCKeditor - The text editor for Internet - http://www.fckeditor.net |
* Copyright (C) 2003-2008 Frederico Caldeira Knabben |
* |
* == BEGIN LICENSE == |
* |
* Licensed under the terms of any of the following licenses at your |
* choice: |
* |
* - GNU General Public License Version 2 or later (the "GPL") |
* http://www.gnu.org/licenses/gpl.html |
* |
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL") |
* http://www.gnu.org/licenses/lgpl.html |
* |
* - Mozilla Public License Version 1.1 or later (the "MPL") |
* http://www.mozilla.org/MPL/MPL-1.1.html |
* |
* == END LICENSE == |
* |
* Spell Check dialog window. |
--> |
<html> |
<head> |
<title>Spell Check</title> |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> |
<meta content="noindex, nofollow" name="robots"> |
<script src="common/fck_dialog_common.js" type="text/javascript"></script> |
<script src="fck_spellerpages/spellerpages/spellChecker.js"></script> |
<script type="text/javascript"> |
var oEditor = window.parent.InnerDialogLoaded() ; |
var FCKLang = oEditor.FCKLang ; |
window.onload = function() |
{ |
document.getElementById('txtHtml').value = oEditor.FCK.EditorDocument.body.innerHTML ; |
var oSpeller = new spellChecker( document.getElementById('txtHtml') ) ; |
oSpeller.spellCheckScript = oEditor.FCKConfig.SpellerPagesServerScript || 'server-scripts/spellchecker.php' ; |
oSpeller.OnFinished = oSpeller_OnFinished ; |
oSpeller.openChecker() ; |
} |
function OnSpellerControlsLoad( controlsWindow ) |
{ |
// Translate the dialog box texts |
oEditor.FCKLanguageManager.TranslatePage( controlsWindow.document ) ; |
} |
function oSpeller_OnFinished( numberOCorrections ) |
{ |
if ( numberOCorrections > 0 ) |
{ |
oEditor.FCKUndo.SaveUndoStep() ; |
oEditor.FCK.EditorDocument.body.innerHTML = document.getElementById('txtHtml').value ; |
if ( oEditor.FCKBrowserInfo.IsIE ) |
oEditor.FCKSelection.Collapse( true ) ; |
} |
window.parent.Cancel() ; |
} |
</script> |
</head> |
<body style="OVERFLOW: hidden" scroll="no" style="padding:0px;"> |
<input type="hidden" id="txtHtml" value=""> |
<iframe id="frmSpell" src="javascript:void(0)" name="spellchecker" width="100%" height="100%" frameborder="0"></iframe> |
</body> |
</html> |
/trunk/api/fckeditor/editor/dialog/fck_checkbox.html |
---|
New file |
0,0 → 1,104 |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" > |
<!-- |
* FCKeditor - The text editor for Internet - http://www.fckeditor.net |
* Copyright (C) 2003-2008 Frederico Caldeira Knabben |
* |
* == BEGIN LICENSE == |
* |
* Licensed under the terms of any of the following licenses at your |
* choice: |
* |
* - GNU General Public License Version 2 or later (the "GPL") |
* http://www.gnu.org/licenses/gpl.html |
* |
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL") |
* http://www.gnu.org/licenses/lgpl.html |
* |
* - Mozilla Public License Version 1.1 or later (the "MPL") |
* http://www.mozilla.org/MPL/MPL-1.1.html |
* |
* == END LICENSE == |
* |
* Checkbox dialog window. |
--> |
<html> |
<head> |
<title>Checkbox Properties</title> |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> |
<meta content="noindex, nofollow" name="robots"> |
<script src="common/fck_dialog_common.js" type="text/javascript"></script> |
<script type="text/javascript"> |
var dialog = window.parent ; |
var oEditor = dialog.InnerDialogLoaded() ; |
// Gets the document DOM |
var oDOM = oEditor.FCK.EditorDocument ; |
var oActiveEl = dialog.Selection.GetSelectedElement() ; |
window.onload = function() |
{ |
// First of all, translate the dialog box texts |
oEditor.FCKLanguageManager.TranslatePage(document) ; |
if ( oActiveEl && oActiveEl.tagName == 'INPUT' && oActiveEl.type == 'checkbox' ) |
{ |
GetE('txtName').value = oActiveEl.name ; |
GetE('txtValue').value = oEditor.FCKBrowserInfo.IsIE ? oActiveEl.value : GetAttribute( oActiveEl, 'value' ) ; |
GetE('txtSelected').checked = oActiveEl.checked ; |
} |
else |
oActiveEl = null ; |
dialog.SetOkButton( true ) ; |
dialog.SetAutoSize( true ) ; |
SelectField( 'txtName' ) ; |
} |
function Ok() |
{ |
oEditor.FCKUndo.SaveUndoStep() ; |
oActiveEl = CreateNamedElement( oEditor, oActiveEl, 'INPUT', {name: GetE('txtName').value, type: 'checkbox' } ) ; |
if ( oEditor.FCKBrowserInfo.IsIE ) |
oActiveEl.value = GetE('txtValue').value ; |
else |
SetAttribute( oActiveEl, 'value', GetE('txtValue').value ) ; |
var bIsChecked = GetE('txtSelected').checked ; |
SetAttribute( oActiveEl, 'checked', bIsChecked ? 'checked' : null ) ; // For Firefox |
oActiveEl.checked = bIsChecked ; |
return true ; |
} |
</script> |
</head> |
<body style="OVERFLOW: hidden" scroll="no"> |
<table height="100%" width="100%"> |
<tr> |
<td align="center"> |
<table border="0" cellpadding="0" cellspacing="0" width="80%"> |
<tr> |
<td> |
<span fckLang="DlgCheckboxName">Name</span><br> |
<input type="text" size="20" id="txtName" style="WIDTH: 100%"> |
</td> |
</tr> |
<tr> |
<td> |
<span fckLang="DlgCheckboxValue">Value</span><br> |
<input type="text" size="20" id="txtValue" style="WIDTH: 100%"> |
</td> |
</tr> |
<tr> |
<td><input type="checkbox" id="txtSelected"><label for="txtSelected" fckLang="DlgCheckboxSelected">Checked</label></td> |
</tr> |
</table> |
</td> |
</tr> |
</table> |
</body> |
</html> |
/trunk/api/fckeditor/editor/dialog/fck_table.html |
---|
New file |
0,0 → 1,298 |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" > |
<!-- |
* FCKeditor - The text editor for Internet - http://www.fckeditor.net |
* Copyright (C) 2003-2008 Frederico Caldeira Knabben |
* |
* == BEGIN LICENSE == |
* |
* Licensed under the terms of any of the following licenses at your |
* choice: |
* |
* - GNU General Public License Version 2 or later (the "GPL") |
* http://www.gnu.org/licenses/gpl.html |
* |
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL") |
* http://www.gnu.org/licenses/lgpl.html |
* |
* - Mozilla Public License Version 1.1 or later (the "MPL") |
* http://www.mozilla.org/MPL/MPL-1.1.html |
* |
* == END LICENSE == |
* |
* Table dialog window. |
--> |
<html xmlns="http://www.w3.org/1999/xhtml"> |
<head> |
<title>Table Properties</title> |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> |
<meta name="robots" content="noindex, nofollow" /> |
<script src="common/fck_dialog_common.js" type="text/javascript"></script> |
<script type="text/javascript"> |
var dialog = window.parent ; |
var oEditor = dialog.InnerDialogLoaded() ; |
var dialogArguments = dialog.Args() ; |
// Gets the document DOM |
var oDOM = oEditor.FCK.EditorDocument ; |
// Gets the table if there is one selected. |
var table ; |
var e = dialog.Selection.GetSelectedElement() ; |
if ( ( !e && document.location.search.substr(1) == 'Parent' ) || ( e && e.tagName != 'TABLE' ) ) |
e = oEditor.FCKSelection.MoveToAncestorNode( 'TABLE' ) ; |
if ( e && e.tagName == "TABLE" ) |
table = e ; |
// Fired when the window loading process is finished. It sets the fields with the |
// actual values if a table is selected in the editor. |
window.onload = function() |
{ |
// First of all, translate the dialog box texts |
oEditor.FCKLanguageManager.TranslatePage(document) ; |
if (table) |
{ |
document.getElementById('txtRows').value = table.rows.length ; |
document.getElementById('txtColumns').value = table.rows[0].cells.length ; |
// Gets the value from the Width or the Style attribute |
var iWidth = (table.style.width ? table.style.width : table.width ) ; |
var iHeight = (table.style.height ? table.style.height : table.height ) ; |
if (iWidth.indexOf('%') >= 0) // Percentual = % |
{ |
iWidth = parseInt( iWidth.substr(0,iWidth.length - 1), 10 ) ; |
document.getElementById('selWidthType').value = "percent" ; |
} |
else if (iWidth.indexOf('px') >= 0) // Style Pixel = px |
{ // |
iWidth = iWidth.substr(0,iWidth.length - 2); |
document.getElementById('selWidthType').value = "pixels" ; |
} |
if (iHeight && iHeight.indexOf('px') >= 0) // Style Pixel = px |
iHeight = iHeight.substr(0,iHeight.length - 2); |
document.getElementById('txtWidth').value = iWidth || '' ; |
document.getElementById('txtHeight').value = iHeight || '' ; |
document.getElementById('txtBorder').value = GetAttribute( table, 'border', '' ) ; |
document.getElementById('selAlignment').value = GetAttribute( table, 'align', '' ) ; |
document.getElementById('txtCellPadding').value = GetAttribute( table, 'cellPadding', '' ) ; |
document.getElementById('txtCellSpacing').value = GetAttribute( table, 'cellSpacing', '' ) ; |
document.getElementById('txtSummary').value = GetAttribute( table, 'summary', '' ) ; |
// document.getElementById('cmbFontStyle').value = table.className ; |
var eCaption = oEditor.FCKDomTools.GetFirstChild( table, 'CAPTION' ) ; |
if ( eCaption ) document.getElementById('txtCaption').value = eCaption.innerHTML ; |
document.getElementById('txtRows').disabled = true ; |
document.getElementById('txtColumns').disabled = true ; |
SelectField( 'txtWidth' ) ; |
} |
else |
SelectField( 'txtRows' ) ; |
dialog.SetOkButton( true ) ; |
dialog.SetAutoSize( true ) ; |
} |
// Fired when the user press the OK button |
function Ok() |
{ |
var bExists = ( table != null ) ; |
if ( ! bExists ) |
table = oEditor.FCK.EditorDocument.createElement( "TABLE" ) ; |
// Removes the Width and Height styles |
if ( bExists && table.style.width ) table.style.width = null ; //.removeAttribute("width") ; |
if ( bExists && table.style.height ) table.style.height = null ; //.removeAttribute("height") ; |
var sWidth = GetE('txtWidth').value ; |
if ( sWidth.length > 0 && GetE('selWidthType').value == 'percent' ) |
sWidth += '%' ; |
SetAttribute( table, 'width' , sWidth ) ; |
SetAttribute( table, 'height' , GetE('txtHeight').value ) ; |
SetAttribute( table, 'border' , GetE('txtBorder').value ) ; |
SetAttribute( table, 'align' , GetE('selAlignment').value ) ; |
SetAttribute( table, 'cellPadding' , GetE('txtCellPadding').value ) ; |
SetAttribute( table, 'cellSpacing' , GetE('txtCellSpacing').value ) ; |
SetAttribute( table, 'summary' , GetE('txtSummary').value ) ; |
var eCaption = oEditor.FCKDomTools.GetFirstChild( table, 'CAPTION' ) ; |
if ( document.getElementById('txtCaption').value != '') |
{ |
if ( !eCaption ) |
{ |
eCaption = oEditor.FCK.EditorDocument.createElement( 'CAPTION' ) ; |
table.insertBefore( eCaption, table.firstChild ) ; |
} |
eCaption.innerHTML = document.getElementById('txtCaption').value ; |
} |
else if ( bExists && eCaption ) |
{ |
// TODO: It causes an IE internal error if using removeChild or |
// table.deleteCaption() (see #505). |
if ( oEditor.FCKBrowserInfo.IsIE ) |
eCaption.innerHTML = '' ; |
else |
eCaption.parentNode.removeChild( eCaption ) ; |
} |
if (! bExists) |
{ |
var iRows = document.getElementById('txtRows').value ; |
var iCols = document.getElementById('txtColumns').value ; |
for ( var r = 0 ; r < iRows ; r++ ) |
{ |
var oRow = table.insertRow(-1) ; |
for ( var c = 0 ; c < iCols ; c++ ) |
{ |
var oCell = oRow.insertCell(-1) ; |
if ( oEditor.FCKBrowserInfo.IsGeckoLike ) |
oEditor.FCKTools.AppendBogusBr( oCell ) ; |
} |
} |
oEditor.FCKUndo.SaveUndoStep() ; |
oEditor.FCK.InsertElement( table ) ; |
} |
return true ; |
} |
</script> |
</head> |
<body style="overflow: hidden"> |
<table id="otable" cellspacing="0" cellpadding="0" width="100%" border="0" style="height: 100%"> |
<tr> |
<td> |
<table cellspacing="1" cellpadding="1" width="100%" border="0"> |
<tr> |
<td valign="top"> |
<table cellspacing="0" cellpadding="0" border="0"> |
<tr> |
<td> |
<span fcklang="DlgTableRows">Rows</span>:</td> |
<td> |
<input id="txtRows" type="text" maxlength="3" size="2" value="3" name="txtRows" |
onkeypress="return IsDigit(event);" /></td> |
</tr> |
<tr> |
<td> |
<span fcklang="DlgTableColumns">Columns</span>:</td> |
<td> |
<input id="txtColumns" type="text" maxlength="2" size="2" value="2" name="txtColumns" |
onkeypress="return IsDigit(event);" /></td> |
</tr> |
<tr> |
<td> |
</td> |
<td> |
</td> |
</tr> |
<tr> |
<td> |
<span fcklang="DlgTableBorder">Border size</span>:</td> |
<td> |
<input id="txtBorder" type="text" maxlength="2" size="2" value="1" name="txtBorder" |
onkeypress="return IsDigit(event);" /></td> |
</tr> |
<tr> |
<td> |
<span fcklang="DlgTableAlign">Alignment</span>:</td> |
<td> |
<select id="selAlignment" name="selAlignment"> |
<option fcklang="DlgTableAlignNotSet" value="" selected="selected"><Not set></option> |
<option fcklang="DlgTableAlignLeft" value="left">Left</option> |
<option fcklang="DlgTableAlignCenter" value="center">Center</option> |
<option fcklang="DlgTableAlignRight" value="right">Right</option> |
</select></td> |
</tr> |
</table> |
</td> |
<td> |
</td> |
<td align="right" valign="top"> |
<table cellspacing="0" cellpadding="0" border="0"> |
<tr> |
<td> |
<span fcklang="DlgTableWidth">Width</span>:</td> |
<td> |
<input id="txtWidth" type="text" maxlength="4" size="3" value="200" name="txtWidth" |
onkeypress="return IsDigit(event);" /></td> |
<td> |
<select id="selWidthType" name="selWidthType"> |
<option fcklang="DlgTableWidthPx" value="pixels" selected="selected">pixels</option> |
<option fcklang="DlgTableWidthPc" value="percent">percent</option> |
</select></td> |
</tr> |
<tr> |
<td> |
<span fcklang="DlgTableHeight">Height</span>:</td> |
<td> |
<input id="txtHeight" type="text" maxlength="4" size="3" name="txtHeight" onkeypress="return IsDigit(event);" /></td> |
<td> |
<span fcklang="DlgTableWidthPx">pixels</span></td> |
</tr> |
<tr> |
<td> |
</td> |
<td> |
</td> |
<td> |
</td> |
</tr> |
<tr> |
<td nowrap="nowrap"> |
<span fcklang="DlgTableCellSpace">Cell spacing</span>:</td> |
<td> |
<input id="txtCellSpacing" type="text" maxlength="2" size="2" value="1" name="txtCellSpacing" |
onkeypress="return IsDigit(event);" /></td> |
<td> |
</td> |
</tr> |
<tr> |
<td nowrap="nowrap"> |
<span fcklang="DlgTableCellPad">Cell padding</span>:</td> |
<td> |
<input id="txtCellPadding" type="text" maxlength="2" size="2" value="1" name="txtCellPadding" |
onkeypress="return IsDigit(event);" /></td> |
<td> |
</td> |
</tr> |
</table> |
</td> |
</tr> |
</table> |
<table cellspacing="0" cellpadding="0" width="100%" border="0"> |
<tr> |
<td nowrap="nowrap"> |
<span fcklang="DlgTableCaption">Caption</span>: </td> |
<td> |
</td> |
<td width="100%" nowrap="nowrap"> |
<input id="txtCaption" type="text" style="width: 100%" /></td> |
</tr> |
<tr> |
<td nowrap="nowrap"> |
<span fcklang="DlgTableSummary">Summary</span>: </td> |
<td> |
</td> |
<td width="100%" nowrap="nowrap"> |
<input id="txtSummary" type="text" style="width: 100%" /></td> |
</tr> |
</table> |
</td> |
</tr> |
</table> |
</body> |
</html> |
/trunk/api/fckeditor/editor/dialog/fck_tablecell.html |
---|
New file |
0,0 → 1,257 |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" > |
<!-- |
* FCKeditor - The text editor for Internet - http://www.fckeditor.net |
* Copyright (C) 2003-2008 Frederico Caldeira Knabben |
* |
* == BEGIN LICENSE == |
* |
* Licensed under the terms of any of the following licenses at your |
* choice: |
* |
* - GNU General Public License Version 2 or later (the "GPL") |
* http://www.gnu.org/licenses/gpl.html |
* |
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL") |
* http://www.gnu.org/licenses/lgpl.html |
* |
* - Mozilla Public License Version 1.1 or later (the "MPL") |
* http://www.mozilla.org/MPL/MPL-1.1.html |
* |
* == END LICENSE == |
* |
* Cell properties dialog window. |
--> |
<html xmlns="http://www.w3.org/1999/xhtml"> |
<head> |
<title>Table Cell Properties</title> |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> |
<meta name="robots" content="noindex, nofollow" /> |
<script src="common/fck_dialog_common.js" type="text/javascript"></script> |
<script type="text/javascript"> |
var dialog = window.parent ; |
var oEditor = dialog.InnerDialogLoaded() ; |
// Gets the document DOM |
var oDOM = oEditor.FCK.EditorDocument ; |
// Array of selected Cells |
var aCells = oEditor.FCKTableHandler.GetSelectedCells() ; |
window.onload = function() |
{ |
// First of all, translate the dialog box texts |
oEditor.FCKLanguageManager.TranslatePage( document ) ; |
SetStartupValue() ; |
dialog.SetOkButton( true ) ; |
dialog.SetAutoSize( true ) ; |
SelectField( 'txtWidth' ) ; |
} |
function SetStartupValue() |
{ |
if ( aCells.length > 0 ) |
{ |
var oCell = aCells[0] ; |
var iWidth = GetAttribute( oCell, 'width' ) ; |
if ( iWidth.indexOf && iWidth.indexOf( '%' ) >= 0 ) |
{ |
iWidth = iWidth.substr( 0, iWidth.length - 1 ) ; |
GetE('selWidthType').value = 'percent' ; |
} |
if ( oCell.attributes['noWrap'] != null && oCell.attributes['noWrap'].specified ) |
GetE('selWordWrap').value = !oCell.noWrap ; |
GetE('txtWidth').value = iWidth ; |
GetE('txtHeight').value = GetAttribute( oCell, 'height' ) ; |
GetE('selHAlign').value = GetAttribute( oCell, 'align' ) ; |
GetE('selVAlign').value = GetAttribute( oCell, 'vAlign' ) ; |
GetE('txtRowSpan').value = GetAttribute( oCell, 'rowSpan' ) ; |
GetE('txtCollSpan').value = GetAttribute( oCell, 'colSpan' ) ; |
GetE('txtBackColor').value = GetAttribute( oCell, 'bgColor' ) ; |
GetE('txtBorderColor').value = GetAttribute( oCell, 'borderColor' ) ; |
// GetE('cmbFontStyle').value = oCell.className ; |
} |
} |
// Fired when the user press the OK button |
function Ok() |
{ |
for( i = 0 ; i < aCells.length ; i++ ) |
{ |
if ( GetE('txtWidth').value.length > 0 ) |
aCells[i].width = GetE('txtWidth').value + ( GetE('selWidthType').value == 'percent' ? '%' : '') ; |
else |
aCells[i].removeAttribute( 'width', 0 ) ; |
if ( GetE('selWordWrap').value == 'false' ) |
SetAttribute( aCells[i], 'noWrap', 'nowrap' ) ; |
else |
aCells[i].removeAttribute( 'noWrap' ) ; |
SetAttribute( aCells[i], 'height' , GetE('txtHeight').value ) ; |
SetAttribute( aCells[i], 'align' , GetE('selHAlign').value ) ; |
SetAttribute( aCells[i], 'vAlign' , GetE('selVAlign').value ) ; |
SetAttribute( aCells[i], 'rowSpan' , GetE('txtRowSpan').value ) ; |
SetAttribute( aCells[i], 'colSpan' , GetE('txtCollSpan').value ) ; |
SetAttribute( aCells[i], 'bgColor' , GetE('txtBackColor').value ) ; |
SetAttribute( aCells[i], 'borderColor' , GetE('txtBorderColor').value ) ; |
// SetAttribute( aCells[i], 'className' , GetE('cmbFontStyle').value ) ; |
} |
return true ; |
} |
function SelectBackColor( color ) |
{ |
if ( color && color.length > 0 ) |
GetE('txtBackColor').value = color ; |
} |
function SelectBorderColor( color ) |
{ |
if ( color && color.length > 0 ) |
GetE('txtBorderColor').value = color ; |
} |
function SelectColor( wich ) |
{ |
oEditor.FCKDialog.OpenDialog( 'FCKDialog_Color', oEditor.FCKLang.DlgColorTitle, 'dialog/fck_colorselector.html', 410, 320, wich == 'Back' ? SelectBackColor : SelectBorderColor, window ) ; |
} |
</script> |
</head> |
<body scroll="no" style="overflow: hidden"> |
<table cellspacing="0" cellpadding="0" width="100%" border="0" height="100%"> |
<tr> |
<td> |
<table cellspacing="1" cellpadding="1" width="100%" border="0"> |
<tr> |
<td> |
<table cellspacing="0" cellpadding="0" border="0"> |
<tr> |
<td nowrap="nowrap"> |
<span fcklang="DlgCellWidth">Width</span>:</td> |
<td> |
<input onkeypress="return IsDigit(event);" id="txtWidth" type="text" maxlength="4" |
size="3" name="txtWidth" /> <select id="selWidthType" name="selWidthType"> |
<option fcklang="DlgCellWidthPx" value="pixels" selected="selected">pixels</option> |
<option fcklang="DlgCellWidthPc" value="percent">percent</option> |
</select></td> |
</tr> |
<tr> |
<td nowrap="nowrap"> |
<span fcklang="DlgCellHeight">Height</span>:</td> |
<td> |
<input id="txtHeight" type="text" maxlength="4" size="3" name="txtHeight" onkeypress="return IsDigit(event);" /> <span |
fcklang="DlgCellWidthPx">pixels</span></td> |
</tr> |
<tr> |
<td> |
</td> |
<td> |
</td> |
</tr> |
<tr> |
<td nowrap="nowrap"> |
<span fcklang="DlgCellWordWrap">Word Wrap</span>:</td> |
<td> |
<select id="selWordWrap" name="selAlignment"> |
<option fcklang="DlgCellWordWrapYes" value="true" selected="selected">Yes</option> |
<option fcklang="DlgCellWordWrapNo" value="false">No</option> |
</select></td> |
</tr> |
<tr> |
<td> |
</td> |
<td> |
</td> |
</tr> |
<tr> |
<td nowrap="nowrap"> |
<span fcklang="DlgCellHorAlign">Horizontal Alignment</span>:</td> |
<td> |
<select id="selHAlign" name="selAlignment"> |
<option fcklang="DlgCellHorAlignNotSet" value="" selected><Not set></option> |
<option fcklang="DlgCellHorAlignLeft" value="left">Left</option> |
<option fcklang="DlgCellHorAlignCenter" value="center">Center</option> |
<option fcklang="DlgCellHorAlignRight" value="right">Right</option> |
</select></td> |
</tr> |
<tr> |
<td nowrap="nowrap"> |
<span fcklang="DlgCellVerAlign">Vertical Alignment</span>:</td> |
<td> |
<select id="selVAlign" name="selAlignment"> |
<option fcklang="DlgCellVerAlignNotSet" value="" selected><Not set></option> |
<option fcklang="DlgCellVerAlignTop" value="top">Top</option> |
<option fcklang="DlgCellVerAlignMiddle" value="middle">Middle</option> |
<option fcklang="DlgCellVerAlignBottom" value="bottom">Bottom</option> |
<option fcklang="DlgCellVerAlignBaseline" value="baseline">Baseline</option> |
</select></td> |
</tr> |
</table> |
</td> |
<td> |
</td> |
<td align="right"> |
<table cellspacing="0" cellpadding="0" border="0"> |
<tr> |
<td nowrap="nowrap"> |
<span fcklang="DlgCellRowSpan">Rows Span</span>:</td> |
<td> |
|
<input onkeypress="return IsDigit(event);" id="txtRowSpan" type="text" maxlength="3" size="2" |
name="txtRows"></td> |
<td> |
</td> |
</tr> |
<tr> |
<td nowrap="nowrap"> |
<span fcklang="DlgCellCollSpan">Columns Span</span>:</td> |
<td> |
|
<input onkeypress="return IsDigit(event);" id="txtCollSpan" type="text" maxlength="2" |
size="2" name="txtColumns"></td> |
<td> |
</td> |
</tr> |
<tr> |
<td> |
</td> |
<td> |
</td> |
<td> |
</td> |
</tr> |
<tr> |
<td nowrap="nowrap"> |
<span fcklang="DlgCellBackColor">Background Color</span>:</td> |
<td> |
<input id="txtBackColor" type="text" size="8" name="txtCellSpacing"></td> |
<td> |
|
<input type="button" fcklang="DlgCellBtnSelect" value="Select..." onclick="SelectColor( 'Back' )"></td> |
</tr> |
<tr> |
<td nowrap="nowrap"> |
<span fcklang="DlgCellBorderColor">Border Color</span>:</td> |
<td> |
<input id="txtBorderColor" type="text" size="8" name="txtCellPadding" /></td> |
<td> |
|
<input type="button" fcklang="DlgCellBtnSelect" value="Select..." onclick="SelectColor( 'Border' )" /></td> |
</tr> |
</table> |
</td> |
</tr> |
</table> |
</td> |
</tr> |
</table> |
</body> |
</html> |
/trunk/api/fckeditor/editor/dialog/fck_textfield.html |
---|
New file |
0,0 → 1,136 |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" > |
<!-- |
* FCKeditor - The text editor for Internet - http://www.fckeditor.net |
* Copyright (C) 2003-2008 Frederico Caldeira Knabben |
* |
* == BEGIN LICENSE == |
* |
* Licensed under the terms of any of the following licenses at your |
* choice: |
* |
* - GNU General Public License Version 2 or later (the "GPL") |
* http://www.gnu.org/licenses/gpl.html |
* |
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL") |
* http://www.gnu.org/licenses/lgpl.html |
* |
* - Mozilla Public License Version 1.1 or later (the "MPL") |
* http://www.mozilla.org/MPL/MPL-1.1.html |
* |
* == END LICENSE == |
* |
* Text field dialog window. |
--> |
<html xmlns="http://www.w3.org/1999/xhtml"> |
<head> |
<title></title> |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> |
<meta content="noindex, nofollow" name="robots" /> |
<script src="common/fck_dialog_common.js" type="text/javascript"></script> |
<script type="text/javascript"> |
var dialog = window.parent ; |
var oEditor = dialog.InnerDialogLoaded() ; |
// Gets the document DOM |
var oDOM = oEditor.FCK.EditorDocument ; |
var oActiveEl = dialog.Selection.GetSelectedElement() ; |
window.onload = function() |
{ |
// First of all, translate the dialog box texts |
oEditor.FCKLanguageManager.TranslatePage(document) ; |
if ( oActiveEl && oActiveEl.tagName == 'INPUT' && ( oActiveEl.type == 'text' || oActiveEl.type == 'password' ) ) |
{ |
GetE('txtName').value = oActiveEl.name ; |
GetE('txtValue').value = oActiveEl.value ; |
GetE('txtSize').value = GetAttribute( oActiveEl, 'size' ) ; |
GetE('txtMax').value = GetAttribute( oActiveEl, 'maxLength' ) ; |
GetE('txtType').value = oActiveEl.type ; |
} |
else |
oActiveEl = null ; |
dialog.SetOkButton( true ) ; |
dialog.SetAutoSize( true ) ; |
SelectField( 'txtName' ) ; |
} |
function Ok() |
{ |
if ( isNaN( GetE('txtMax').value ) || GetE('txtMax').value < 0 ) |
{ |
alert( "Maximum characters must be a positive number." ) ; |
GetE('txtMax').focus() ; |
return false ; |
} |
else if( isNaN( GetE('txtSize').value ) || GetE('txtSize').value < 0 ) |
{ |
alert( "Width must be a positive number." ) ; |
GetE('txtSize').focus() ; |
return false ; |
} |
oEditor.FCKUndo.SaveUndoStep() ; |
oActiveEl = CreateNamedElement( oEditor, oActiveEl, 'INPUT', {name: GetE('txtName').value, type: GetE('txtType').value } ) ; |
SetAttribute( oActiveEl, 'value' , GetE('txtValue').value ) ; |
SetAttribute( oActiveEl, 'size' , GetE('txtSize').value ) ; |
SetAttribute( oActiveEl, 'maxlength', GetE('txtMax').value ) ; |
return true ; |
} |
</script> |
</head> |
<body style="overflow: hidden"> |
<table width="100%" style="height: 100%"> |
<tr> |
<td align="center"> |
<table cellspacing="0" cellpadding="0" border="0"> |
<tr> |
<td> |
<span fcklang="DlgTextName">Name</span><br /> |
<input id="txtName" type="text" size="20" /> |
</td> |
<td> |
</td> |
<td> |
<span fcklang="DlgTextValue">Value</span><br /> |
<input id="txtValue" type="text" size="25" /> |
</td> |
</tr> |
<tr> |
<td> |
<span fcklang="DlgTextCharWidth">Character Width</span><br /> |
<input id="txtSize" type="text" size="5" /> |
</td> |
<td> |
</td> |
<td> |
<span fcklang="DlgTextMaxChars">Maximum Characters</span><br /> |
<input id="txtMax" type="text" size="5" /> |
</td> |
</tr> |
<tr> |
<td> |
<span fcklang="DlgTextType">Type</span><br /> |
<select id="txtType"> |
<option value="text" selected="selected" fcklang="DlgTextTypeText">Text</option> |
<option value="password" fcklang="DlgTextTypePass">Password</option> |
</select> |
</td> |
<td> |
</td> |
<td> |
</td> |
</tr> |
</table> |
</td> |
</tr> |
</table> |
</body> |
</html> |
/trunk/api/fckeditor/editor/dialog/fck_link/fck_link.js |
---|
New file |
0,0 → 1,893 |
/* |
* FCKeditor - The text editor for Internet - http://www.fckeditor.net |
* Copyright (C) 2003-2008 Frederico Caldeira Knabben |
* |
* == BEGIN LICENSE == |
* |
* Licensed under the terms of any of the following licenses at your |
* choice: |
* |
* - GNU General Public License Version 2 or later (the "GPL") |
* http://www.gnu.org/licenses/gpl.html |
* |
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL") |
* http://www.gnu.org/licenses/lgpl.html |
* |
* - Mozilla Public License Version 1.1 or later (the "MPL") |
* http://www.mozilla.org/MPL/MPL-1.1.html |
* |
* == END LICENSE == |
* |
* Scripts related to the Link dialog window (see fck_link.html). |
*/ |
var dialog = window.parent ; |
var oEditor = dialog.InnerDialogLoaded() ; |
var FCK = oEditor.FCK ; |
var FCKLang = oEditor.FCKLang ; |
var FCKConfig = oEditor.FCKConfig ; |
var FCKRegexLib = oEditor.FCKRegexLib ; |
var FCKTools = oEditor.FCKTools ; |
//#### Dialog Tabs |
// Set the dialog tabs. |
dialog.AddTab( 'Info', FCKLang.DlgLnkInfoTab ) ; |
if ( !FCKConfig.LinkDlgHideTarget ) |
dialog.AddTab( 'Target', FCKLang.DlgLnkTargetTab, true ) ; |
if ( FCKConfig.LinkUpload ) |
dialog.AddTab( 'Upload', FCKLang.DlgLnkUpload, true ) ; |
if ( !FCKConfig.LinkDlgHideAdvanced ) |
dialog.AddTab( 'Advanced', FCKLang.DlgAdvancedTag ) ; |
// Function called when a dialog tag is selected. |
function OnDialogTabChange( tabCode ) |
{ |
ShowE('divInfo' , ( tabCode == 'Info' ) ) ; |
ShowE('divTarget' , ( tabCode == 'Target' ) ) ; |
ShowE('divUpload' , ( tabCode == 'Upload' ) ) ; |
ShowE('divAttribs' , ( tabCode == 'Advanced' ) ) ; |
dialog.SetAutoSize( true ) ; |
} |
//#### Regular Expressions library. |
var oRegex = new Object() ; |
oRegex.UriProtocol = /^(((http|https|ftp|news):\/\/)|mailto:)/gi ; |
oRegex.UrlOnChangeProtocol = /^(http|https|ftp|news):\/\/(?=.)/gi ; |
oRegex.UrlOnChangeTestOther = /^((javascript:)|[#\/\.])/gi ; |
oRegex.ReserveTarget = /^_(blank|self|top|parent)$/i ; |
oRegex.PopupUri = /^javascript:void\(\s*window.open\(\s*'([^']+)'\s*,\s*(?:'([^']*)'|null)\s*,\s*'([^']*)'\s*\)\s*\)\s*$/ ; |
// Accessible popups |
oRegex.OnClickPopup = /^\s*on[cC]lick="\s*window.open\(\s*this\.href\s*,\s*(?:'([^']*)'|null)\s*,\s*'([^']*)'\s*\)\s*;\s*return\s*false;*\s*"$/ ; |
oRegex.PopupFeatures = /(?:^|,)([^=]+)=(\d+|yes|no)/gi ; |
//#### Parser Functions |
var oParser = new Object() ; |
// This method simply returns the two inputs in numerical order. You can even |
// provide strings, as the method would parseInt() the values. |
oParser.SortNumerical = function(a, b) |
{ |
return parseInt( a, 10 ) - parseInt( b, 10 ) ; |
} |
oParser.ParseEMailParams = function(sParams) |
{ |
// Initialize the oEMailParams object. |
var oEMailParams = new Object() ; |
oEMailParams.Subject = '' ; |
oEMailParams.Body = '' ; |
var aMatch = sParams.match( /(^|^\?|&)subject=([^&]+)/i ) ; |
if ( aMatch ) oEMailParams.Subject = decodeURIComponent( aMatch[2] ) ; |
aMatch = sParams.match( /(^|^\?|&)body=([^&]+)/i ) ; |
if ( aMatch ) oEMailParams.Body = decodeURIComponent( aMatch[2] ) ; |
return oEMailParams ; |
} |
// This method returns either an object containing the email info, or FALSE |
// if the parameter is not an email link. |
oParser.ParseEMailUri = function( sUrl ) |
{ |
// Initializes the EMailInfo object. |
var oEMailInfo = new Object() ; |
oEMailInfo.Address = '' ; |
oEMailInfo.Subject = '' ; |
oEMailInfo.Body = '' ; |
var aLinkInfo = sUrl.match( /^(\w+):(.*)$/ ) ; |
if ( aLinkInfo && aLinkInfo[1] == 'mailto' ) |
{ |
// This seems to be an unprotected email link. |
var aParts = aLinkInfo[2].match( /^([^\?]+)\??(.+)?/ ) ; |
if ( aParts ) |
{ |
// Set the e-mail address. |
oEMailInfo.Address = aParts[1] ; |
// Look for the optional e-mail parameters. |
if ( aParts[2] ) |
{ |
var oEMailParams = oParser.ParseEMailParams( aParts[2] ) ; |
oEMailInfo.Subject = oEMailParams.Subject ; |
oEMailInfo.Body = oEMailParams.Body ; |
} |
} |
return oEMailInfo ; |
} |
else if ( aLinkInfo && aLinkInfo[1] == 'javascript' ) |
{ |
// This may be a protected email. |
// Try to match the url against the EMailProtectionFunction. |
var func = FCKConfig.EMailProtectionFunction ; |
if ( func != null ) |
{ |
try |
{ |
// Escape special chars. |
func = func.replace( /([\/^$*+.?()\[\]])/g, '\\$1' ) ; |
// Define the possible keys. |
var keys = new Array('NAME', 'DOMAIN', 'SUBJECT', 'BODY') ; |
// Get the order of the keys (hold them in the array <pos>) and |
// the function replaced by regular expression patterns. |
var sFunc = func ; |
var pos = new Array() ; |
for ( var i = 0 ; i < keys.length ; i ++ ) |
{ |
var rexp = new RegExp( keys[i] ) ; |
var p = func.search( rexp ) ; |
if ( p >= 0 ) |
{ |
sFunc = sFunc.replace( rexp, '\'([^\']*)\'' ) ; |
pos[pos.length] = p + ':' + keys[i] ; |
} |
} |
// Sort the available keys. |
pos.sort( oParser.SortNumerical ) ; |
// Replace the excaped single quotes in the url, such they do |
// not affect the regexp afterwards. |
aLinkInfo[2] = aLinkInfo[2].replace( /\\'/g, '###SINGLE_QUOTE###' ) ; |
// Create the regexp and execute it. |
var rFunc = new RegExp( '^' + sFunc + '$' ) ; |
var aMatch = rFunc.exec( aLinkInfo[2] ) ; |
if ( aMatch ) |
{ |
var aInfo = new Array(); |
for ( var i = 1 ; i < aMatch.length ; i ++ ) |
{ |
var k = pos[i-1].match(/^\d+:(.+)$/) ; |
aInfo[k[1]] = aMatch[i].replace(/###SINGLE_QUOTE###/g, '\'') ; |
} |
// Fill the EMailInfo object that will be returned |
oEMailInfo.Address = aInfo['NAME'] + '@' + aInfo['DOMAIN'] ; |
oEMailInfo.Subject = decodeURIComponent( aInfo['SUBJECT'] ) ; |
oEMailInfo.Body = decodeURIComponent( aInfo['BODY'] ) ; |
return oEMailInfo ; |
} |
} |
catch (e) |
{ |
} |
} |
// Try to match the email against the encode protection. |
var aMatch = aLinkInfo[2].match( /^location\.href='mailto:'\+(String\.fromCharCode\([\d,]+\))\+'(.*)'$/ ) ; |
if ( aMatch ) |
{ |
// The link is encoded |
oEMailInfo.Address = eval( aMatch[1] ) ; |
if ( aMatch[2] ) |
{ |
var oEMailParams = oParser.ParseEMailParams( aMatch[2] ) ; |
oEMailInfo.Subject = oEMailParams.Subject ; |
oEMailInfo.Body = oEMailParams.Body ; |
} |
return oEMailInfo ; |
} |
} |
return false; |
} |
oParser.CreateEMailUri = function( address, subject, body ) |
{ |
// Switch for the EMailProtection setting. |
switch ( FCKConfig.EMailProtection ) |
{ |
case 'function' : |
var func = FCKConfig.EMailProtectionFunction ; |
if ( func == null ) |
{ |
if ( FCKConfig.Debug ) |
{ |
alert('EMailProtection alert!\nNo function defined. Please set "FCKConfig.EMailProtectionFunction"') ; |
} |
return ''; |
} |
// Split the email address into name and domain parts. |
var aAddressParts = address.split( '@', 2 ) ; |
if ( aAddressParts[1] == undefined ) |
{ |
aAddressParts[1] = '' ; |
} |
// Replace the keys by their values (embedded in single quotes). |
func = func.replace(/NAME/g, "'" + aAddressParts[0].replace(/'/g, '\\\'') + "'") ; |
func = func.replace(/DOMAIN/g, "'" + aAddressParts[1].replace(/'/g, '\\\'') + "'") ; |
func = func.replace(/SUBJECT/g, "'" + encodeURIComponent( subject ).replace(/'/g, '\\\'') + "'") ; |
func = func.replace(/BODY/g, "'" + encodeURIComponent( body ).replace(/'/g, '\\\'') + "'") ; |
return 'javascript:' + func ; |
case 'encode' : |
var aParams = [] ; |
var aAddressCode = [] ; |
if ( subject.length > 0 ) |
aParams.push( 'subject='+ encodeURIComponent( subject ) ) ; |
if ( body.length > 0 ) |
aParams.push( 'body=' + encodeURIComponent( body ) ) ; |
for ( var i = 0 ; i < address.length ; i++ ) |
aAddressCode.push( address.charCodeAt( i ) ) ; |
return 'javascript:location.href=\'mailto:\'+String.fromCharCode(' + aAddressCode.join( ',' ) + ')+\'?' + aParams.join( '&' ) + '\'' ; |
} |
// EMailProtection 'none' |
var sBaseUri = 'mailto:' + address ; |
var sParams = '' ; |
if ( subject.length > 0 ) |
sParams = '?subject=' + encodeURIComponent( subject ) ; |
if ( body.length > 0 ) |
{ |
sParams += ( sParams.length == 0 ? '?' : '&' ) ; |
sParams += 'body=' + encodeURIComponent( body ) ; |
} |
return sBaseUri + sParams ; |
} |
//#### Initialization Code |
// oLink: The actual selected link in the editor. |
var oLink = dialog.Selection.GetSelection().MoveToAncestorNode( 'A' ) ; |
if ( oLink ) |
FCK.Selection.SelectNode( oLink ) ; |
window.onload = function() |
{ |
// Translate the dialog box texts. |
oEditor.FCKLanguageManager.TranslatePage(document) ; |
// Fill the Anchor Names and Ids combos. |
LoadAnchorNamesAndIds() ; |
// Load the selected link information (if any). |
LoadSelection() ; |
// Update the dialog box. |
SetLinkType( GetE('cmbLinkType').value ) ; |
// Show/Hide the "Browse Server" button. |
GetE('divBrowseServer').style.display = FCKConfig.LinkBrowser ? '' : 'none' ; |
// Show the initial dialog content. |
GetE('divInfo').style.display = '' ; |
// Set the actual uploader URL. |
if ( FCKConfig.LinkUpload ) |
GetE('frmUpload').action = FCKConfig.LinkUploadURL ; |
// Set the default target (from configuration). |
SetDefaultTarget() ; |
// Activate the "OK" button. |
dialog.SetOkButton( true ) ; |
// Select the first field. |
switch( GetE('cmbLinkType').value ) |
{ |
case 'url' : |
SelectField( 'txtUrl' ) ; |
break ; |
case 'email' : |
SelectField( 'txtEMailAddress' ) ; |
break ; |
case 'anchor' : |
if ( GetE('divSelAnchor').style.display != 'none' ) |
SelectField( 'cmbAnchorName' ) ; |
else |
SelectField( 'cmbLinkType' ) ; |
} |
} |
var bHasAnchors ; |
function LoadAnchorNamesAndIds() |
{ |
// Since version 2.0, the anchors are replaced in the DOM by IMGs so the user see the icon |
// to edit them. So, we must look for that images now. |
var aAnchors = new Array() ; |
var i ; |
var oImages = oEditor.FCK.EditorDocument.getElementsByTagName( 'IMG' ) ; |
for( i = 0 ; i < oImages.length ; i++ ) |
{ |
if ( oImages[i].getAttribute('_fckanchor') ) |
aAnchors[ aAnchors.length ] = oEditor.FCK.GetRealElement( oImages[i] ) ; |
} |
// Add also real anchors |
var oLinks = oEditor.FCK.EditorDocument.getElementsByTagName( 'A' ) ; |
for( i = 0 ; i < oLinks.length ; i++ ) |
{ |
if ( oLinks[i].name && ( oLinks[i].name.length > 0 ) ) |
aAnchors[ aAnchors.length ] = oLinks[i] ; |
} |
var aIds = FCKTools.GetAllChildrenIds( oEditor.FCK.EditorDocument.body ) ; |
bHasAnchors = ( aAnchors.length > 0 || aIds.length > 0 ) ; |
for ( i = 0 ; i < aAnchors.length ; i++ ) |
{ |
var sName = aAnchors[i].name ; |
if ( sName && sName.length > 0 ) |
FCKTools.AddSelectOption( GetE('cmbAnchorName'), sName, sName ) ; |
} |
for ( i = 0 ; i < aIds.length ; i++ ) |
{ |
FCKTools.AddSelectOption( GetE('cmbAnchorId'), aIds[i], aIds[i] ) ; |
} |
ShowE( 'divSelAnchor' , bHasAnchors ) ; |
ShowE( 'divNoAnchor' , !bHasAnchors ) ; |
} |
function LoadSelection() |
{ |
if ( !oLink ) return ; |
var sType = 'url' ; |
// Get the actual Link href. |
var sHRef = oLink.getAttribute( '_fcksavedurl' ) ; |
if ( sHRef == null ) |
sHRef = oLink.getAttribute( 'href' , 2 ) || '' ; |
// Look for a popup javascript link. |
var oPopupMatch = oRegex.PopupUri.exec( sHRef ) ; |
if( oPopupMatch ) |
{ |
GetE('cmbTarget').value = 'popup' ; |
sHRef = oPopupMatch[1] ; |
FillPopupFields( oPopupMatch[2], oPopupMatch[3] ) ; |
SetTarget( 'popup' ) ; |
} |
// Accessible popups, the popup data is in the onclick attribute |
if ( !oPopupMatch ) |
{ |
var onclick = oLink.getAttribute( 'onclick_fckprotectedatt' ) ; |
if ( onclick ) |
{ |
// Decode the protected string |
onclick = decodeURIComponent( onclick ) ; |
oPopupMatch = oRegex.OnClickPopup.exec( onclick ) ; |
if( oPopupMatch ) |
{ |
GetE( 'cmbTarget' ).value = 'popup' ; |
FillPopupFields( oPopupMatch[1], oPopupMatch[2] ) ; |
SetTarget( 'popup' ) ; |
} |
} |
} |
// Search for the protocol. |
var sProtocol = oRegex.UriProtocol.exec( sHRef ) ; |
// Search for a protected email link. |
var oEMailInfo = oParser.ParseEMailUri( sHRef ); |
if ( oEMailInfo ) |
{ |
sType = 'email' ; |
GetE('txtEMailAddress').value = oEMailInfo.Address ; |
GetE('txtEMailSubject').value = oEMailInfo.Subject ; |
GetE('txtEMailBody').value = oEMailInfo.Body ; |
} |
else if ( sProtocol ) |
{ |
sProtocol = sProtocol[0].toLowerCase() ; |
GetE('cmbLinkProtocol').value = sProtocol ; |
// Remove the protocol and get the remaining URL. |
var sUrl = sHRef.replace( oRegex.UriProtocol, '' ) ; |
sType = 'url' ; |
GetE('txtUrl').value = sUrl ; |
} |
else if ( sHRef.substr(0,1) == '#' && sHRef.length > 1 ) // It is an anchor link. |
{ |
sType = 'anchor' ; |
GetE('cmbAnchorName').value = GetE('cmbAnchorId').value = sHRef.substr(1) ; |
} |
else // It is another type of link. |
{ |
sType = 'url' ; |
GetE('cmbLinkProtocol').value = '' ; |
GetE('txtUrl').value = sHRef ; |
} |
if ( !oPopupMatch ) |
{ |
// Get the target. |
var sTarget = oLink.target ; |
if ( sTarget && sTarget.length > 0 ) |
{ |
if ( oRegex.ReserveTarget.test( sTarget ) ) |
{ |
sTarget = sTarget.toLowerCase() ; |
GetE('cmbTarget').value = sTarget ; |
} |
else |
GetE('cmbTarget').value = 'frame' ; |
GetE('txtTargetFrame').value = sTarget ; |
} |
} |
// Get Advances Attributes |
GetE('txtAttId').value = oLink.id ; |
GetE('txtAttName').value = oLink.name ; |
GetE('cmbAttLangDir').value = oLink.dir ; |
GetE('txtAttLangCode').value = oLink.lang ; |
GetE('txtAttAccessKey').value = oLink.accessKey ; |
GetE('txtAttTabIndex').value = oLink.tabIndex <= 0 ? '' : oLink.tabIndex ; |
GetE('txtAttTitle').value = oLink.title ; |
GetE('txtAttContentType').value = oLink.type ; |
GetE('txtAttCharSet').value = oLink.charset ; |
var sClass ; |
if ( oEditor.FCKBrowserInfo.IsIE ) |
{ |
sClass = oLink.getAttribute('className',2) || '' ; |
// Clean up temporary classes for internal use: |
sClass = sClass.replace( FCKRegexLib.FCK_Class, '' ) ; |
GetE('txtAttStyle').value = oLink.style.cssText ; |
} |
else |
{ |
sClass = oLink.getAttribute('class',2) || '' ; |
GetE('txtAttStyle').value = oLink.getAttribute('style',2) || '' ; |
} |
GetE('txtAttClasses').value = sClass ; |
// Update the Link type combo. |
GetE('cmbLinkType').value = sType ; |
} |
//#### Link type selection. |
function SetLinkType( linkType ) |
{ |
ShowE('divLinkTypeUrl' , (linkType == 'url') ) ; |
ShowE('divLinkTypeAnchor' , (linkType == 'anchor') ) ; |
ShowE('divLinkTypeEMail' , (linkType == 'email') ) ; |
if ( !FCKConfig.LinkDlgHideTarget ) |
dialog.SetTabVisibility( 'Target' , (linkType == 'url') ) ; |
if ( FCKConfig.LinkUpload ) |
dialog.SetTabVisibility( 'Upload' , (linkType == 'url') ) ; |
if ( !FCKConfig.LinkDlgHideAdvanced ) |
dialog.SetTabVisibility( 'Advanced' , (linkType != 'anchor' || bHasAnchors) ) ; |
if ( linkType == 'email' ) |
dialog.SetAutoSize( true ) ; |
} |
//#### Target type selection. |
function SetTarget( targetType ) |
{ |
GetE('tdTargetFrame').style.display = ( targetType == 'popup' ? 'none' : '' ) ; |
GetE('tdPopupName').style.display = |
GetE('tablePopupFeatures').style.display = ( targetType == 'popup' ? '' : 'none' ) ; |
switch ( targetType ) |
{ |
case "_blank" : |
case "_self" : |
case "_parent" : |
case "_top" : |
GetE('txtTargetFrame').value = targetType ; |
break ; |
case "" : |
GetE('txtTargetFrame').value = '' ; |
break ; |
} |
if ( targetType == 'popup' ) |
dialog.SetAutoSize( true ) ; |
} |
//#### Called while the user types the URL. |
function OnUrlChange() |
{ |
var sUrl = GetE('txtUrl').value ; |
var sProtocol = oRegex.UrlOnChangeProtocol.exec( sUrl ) ; |
if ( sProtocol ) |
{ |
sUrl = sUrl.substr( sProtocol[0].length ) ; |
GetE('txtUrl').value = sUrl ; |
GetE('cmbLinkProtocol').value = sProtocol[0].toLowerCase() ; |
} |
else if ( oRegex.UrlOnChangeTestOther.test( sUrl ) ) |
{ |
GetE('cmbLinkProtocol').value = '' ; |
} |
} |
//#### Called while the user types the target name. |
function OnTargetNameChange() |
{ |
var sFrame = GetE('txtTargetFrame').value ; |
if ( sFrame.length == 0 ) |
GetE('cmbTarget').value = '' ; |
else if ( oRegex.ReserveTarget.test( sFrame ) ) |
GetE('cmbTarget').value = sFrame.toLowerCase() ; |
else |
GetE('cmbTarget').value = 'frame' ; |
} |
// Accessible popups |
function BuildOnClickPopup() |
{ |
var sWindowName = "'" + GetE('txtPopupName').value.replace(/\W/gi, "") + "'" ; |
var sFeatures = '' ; |
var aChkFeatures = document.getElementsByName( 'chkFeature' ) ; |
for ( var i = 0 ; i < aChkFeatures.length ; i++ ) |
{ |
if ( i > 0 ) sFeatures += ',' ; |
sFeatures += aChkFeatures[i].value + '=' + ( aChkFeatures[i].checked ? 'yes' : 'no' ) ; |
} |
if ( GetE('txtPopupWidth').value.length > 0 ) sFeatures += ',width=' + GetE('txtPopupWidth').value ; |
if ( GetE('txtPopupHeight').value.length > 0 ) sFeatures += ',height=' + GetE('txtPopupHeight').value ; |
if ( GetE('txtPopupLeft').value.length > 0 ) sFeatures += ',left=' + GetE('txtPopupLeft').value ; |
if ( GetE('txtPopupTop').value.length > 0 ) sFeatures += ',top=' + GetE('txtPopupTop').value ; |
if ( sFeatures != '' ) |
sFeatures = sFeatures + ",status" ; |
return ( "window.open(this.href," + sWindowName + ",'" + sFeatures + "'); return false" ) ; |
} |
//#### Fills all Popup related fields. |
function FillPopupFields( windowName, features ) |
{ |
if ( windowName ) |
GetE('txtPopupName').value = windowName ; |
var oFeatures = new Object() ; |
var oFeaturesMatch ; |
while( ( oFeaturesMatch = oRegex.PopupFeatures.exec( features ) ) != null ) |
{ |
var sValue = oFeaturesMatch[2] ; |
if ( sValue == ( 'yes' || '1' ) ) |
oFeatures[ oFeaturesMatch[1] ] = true ; |
else if ( ! isNaN( sValue ) && sValue != 0 ) |
oFeatures[ oFeaturesMatch[1] ] = sValue ; |
} |
// Update all features check boxes. |
var aChkFeatures = document.getElementsByName('chkFeature') ; |
for ( var i = 0 ; i < aChkFeatures.length ; i++ ) |
{ |
if ( oFeatures[ aChkFeatures[i].value ] ) |
aChkFeatures[i].checked = true ; |
} |
// Update position and size text boxes. |
if ( oFeatures['width'] ) GetE('txtPopupWidth').value = oFeatures['width'] ; |
if ( oFeatures['height'] ) GetE('txtPopupHeight').value = oFeatures['height'] ; |
if ( oFeatures['left'] ) GetE('txtPopupLeft').value = oFeatures['left'] ; |
if ( oFeatures['top'] ) GetE('txtPopupTop').value = oFeatures['top'] ; |
} |
//#### The OK button was hit. |
function Ok() |
{ |
var sUri, sInnerHtml ; |
oEditor.FCKUndo.SaveUndoStep() ; |
switch ( GetE('cmbLinkType').value ) |
{ |
case 'url' : |
sUri = GetE('txtUrl').value ; |
if ( sUri.length == 0 ) |
{ |
alert( FCKLang.DlnLnkMsgNoUrl ) ; |
return false ; |
} |
sUri = GetE('cmbLinkProtocol').value + sUri ; |
break ; |
case 'email' : |
sUri = GetE('txtEMailAddress').value ; |
if ( sUri.length == 0 ) |
{ |
alert( FCKLang.DlnLnkMsgNoEMail ) ; |
return false ; |
} |
sUri = oParser.CreateEMailUri( |
sUri, |
GetE('txtEMailSubject').value, |
GetE('txtEMailBody').value ) ; |
break ; |
case 'anchor' : |
var sAnchor = GetE('cmbAnchorName').value ; |
if ( sAnchor.length == 0 ) sAnchor = GetE('cmbAnchorId').value ; |
if ( sAnchor.length == 0 ) |
{ |
alert( FCKLang.DlnLnkMsgNoAnchor ) ; |
return false ; |
} |
sUri = '#' + sAnchor ; |
break ; |
} |
// If no link is selected, create a new one (it may result in more than one link creation - #220). |
var aLinks = oLink ? [ oLink ] : oEditor.FCK.CreateLink( sUri, true ) ; |
// If no selection, no links are created, so use the uri as the link text (by dom, 2006-05-26) |
var aHasSelection = ( aLinks.length > 0 ) ; |
if ( !aHasSelection ) |
{ |
sInnerHtml = sUri; |
// Built a better text for empty links. |
switch ( GetE('cmbLinkType').value ) |
{ |
// anchor: use old behavior --> return true |
case 'anchor': |
sInnerHtml = sInnerHtml.replace( /^#/, '' ) ; |
break ; |
// url: try to get path |
case 'url': |
var oLinkPathRegEx = new RegExp("//?([^?\"']+)([?].*)?$") ; |
var asLinkPath = oLinkPathRegEx.exec( sUri ) ; |
if (asLinkPath != null) |
sInnerHtml = asLinkPath[1]; // use matched path |
break ; |
// mailto: try to get email address |
case 'email': |
sInnerHtml = GetE('txtEMailAddress').value ; |
break ; |
} |
// Create a new (empty) anchor. |
aLinks = [ oEditor.FCK.InsertElement( 'a' ) ] ; |
} |
for ( var i = 0 ; i < aLinks.length ; i++ ) |
{ |
oLink = aLinks[i] ; |
if ( aHasSelection ) |
sInnerHtml = oLink.innerHTML ; // Save the innerHTML (IE changes it if it is like an URL). |
oLink.href = sUri ; |
SetAttribute( oLink, '_fcksavedurl', sUri ) ; |
var onclick; |
// Accessible popups |
if( GetE('cmbTarget').value == 'popup' ) |
{ |
onclick = BuildOnClickPopup() ; |
// Encode the attribute |
onclick = encodeURIComponent( " onclick=\"" + onclick + "\"" ) ; |
SetAttribute( oLink, 'onclick_fckprotectedatt', onclick ) ; |
} |
else |
{ |
// Check if the previous onclick was for a popup: |
// In that case remove the onclick handler. |
onclick = oLink.getAttribute( 'onclick_fckprotectedatt' ) ; |
if ( onclick ) |
{ |
// Decode the protected string |
onclick = decodeURIComponent( onclick ) ; |
if( oRegex.OnClickPopup.test( onclick ) ) |
SetAttribute( oLink, 'onclick_fckprotectedatt', '' ) ; |
} |
} |
oLink.innerHTML = sInnerHtml ; // Set (or restore) the innerHTML |
// Target |
if( GetE('cmbTarget').value != 'popup' ) |
SetAttribute( oLink, 'target', GetE('txtTargetFrame').value ) ; |
else |
SetAttribute( oLink, 'target', null ) ; |
// Let's set the "id" only for the first link to avoid duplication. |
if ( i == 0 ) |
SetAttribute( oLink, 'id', GetE('txtAttId').value ) ; |
// Advances Attributes |
SetAttribute( oLink, 'name' , GetE('txtAttName').value ) ; |
SetAttribute( oLink, 'dir' , GetE('cmbAttLangDir').value ) ; |
SetAttribute( oLink, 'lang' , GetE('txtAttLangCode').value ) ; |
SetAttribute( oLink, 'accesskey', GetE('txtAttAccessKey').value ) ; |
SetAttribute( oLink, 'tabindex' , ( GetE('txtAttTabIndex').value > 0 ? GetE('txtAttTabIndex').value : null ) ) ; |
SetAttribute( oLink, 'title' , GetE('txtAttTitle').value ) ; |
SetAttribute( oLink, 'type' , GetE('txtAttContentType').value ) ; |
SetAttribute( oLink, 'charset' , GetE('txtAttCharSet').value ) ; |
if ( oEditor.FCKBrowserInfo.IsIE ) |
{ |
var sClass = GetE('txtAttClasses').value ; |
// If it's also an anchor add an internal class |
if ( GetE('txtAttName').value.length != 0 ) |
sClass += ' FCK__AnchorC' ; |
SetAttribute( oLink, 'className', sClass ) ; |
oLink.style.cssText = GetE('txtAttStyle').value ; |
} |
else |
{ |
SetAttribute( oLink, 'class', GetE('txtAttClasses').value ) ; |
SetAttribute( oLink, 'style', GetE('txtAttStyle').value ) ; |
} |
} |
// Select the (first) link. |
oEditor.FCKSelection.SelectNode( aLinks[0] ); |
return true ; |
} |
function BrowseServer() |
{ |
OpenFileBrowser( FCKConfig.LinkBrowserURL, FCKConfig.LinkBrowserWindowWidth, FCKConfig.LinkBrowserWindowHeight ) ; |
} |
function SetUrl( url ) |
{ |
GetE('txtUrl').value = url ; |
OnUrlChange() ; |
dialog.SetSelectedTab( 'Info' ) ; |
} |
function OnUploadCompleted( errorNumber, fileUrl, fileName, customMsg ) |
{ |
// Remove animation |
window.parent.Throbber.Hide() ; |
GetE( 'divUpload' ).style.display = '' ; |
switch ( errorNumber ) |
{ |
case 0 : // No errors |
alert( 'Your file has been successfully uploaded' ) ; |
break ; |
case 1 : // Custom error |
alert( customMsg ) ; |
return ; |
case 101 : // Custom warning |
alert( customMsg ) ; |
break ; |
case 201 : |
alert( 'A file with the same name is already available. The uploaded file has been renamed to "' + fileName + '"' ) ; |
break ; |
case 202 : |
alert( 'Invalid file type' ) ; |
return ; |
case 203 : |
alert( "Security error. You probably don't have enough permissions to upload. Please check your server." ) ; |
return ; |
case 500 : |
alert( 'The connector is disabled' ) ; |
break ; |
default : |
alert( 'Error on file upload. Error number: ' + errorNumber ) ; |
return ; |
} |
SetUrl( fileUrl ) ; |
GetE('frmUpload').reset() ; |
} |
var oUploadAllowedExtRegex = new RegExp( FCKConfig.LinkUploadAllowedExtensions, 'i' ) ; |
var oUploadDeniedExtRegex = new RegExp( FCKConfig.LinkUploadDeniedExtensions, 'i' ) ; |
function CheckUpload() |
{ |
var sFile = GetE('txtUploadFile').value ; |
if ( sFile.length == 0 ) |
{ |
alert( 'Please select a file to upload' ) ; |
return false ; |
} |
if ( ( FCKConfig.LinkUploadAllowedExtensions.length > 0 && !oUploadAllowedExtRegex.test( sFile ) ) || |
( FCKConfig.LinkUploadDeniedExtensions.length > 0 && oUploadDeniedExtRegex.test( sFile ) ) ) |
{ |
OnUploadCompleted( 202 ) ; |
return false ; |
} |
// Show animation |
window.parent.Throbber.Show( 100 ) ; |
GetE( 'divUpload' ).style.display = 'none' ; |
return true ; |
} |
function SetDefaultTarget() |
{ |
var target = FCKConfig.DefaultLinkTarget || '' ; |
if ( oLink || target.length == 0 ) |
return ; |
switch ( target ) |
{ |
case '_blank' : |
case '_self' : |
case '_parent' : |
case '_top' : |
GetE('cmbTarget').value = target ; |
break ; |
default : |
GetE('cmbTarget').value = 'frame' ; |
break ; |
} |
GetE('txtTargetFrame').value = target ; |
} |
/trunk/api/fckeditor/editor/dialog/fck_radiobutton.html |
---|
New file |
0,0 → 1,104 |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" > |
<!-- |
* FCKeditor - The text editor for Internet - http://www.fckeditor.net |
* Copyright (C) 2003-2008 Frederico Caldeira Knabben |
* |
* == BEGIN LICENSE == |
* |
* Licensed under the terms of any of the following licenses at your |
* choice: |
* |
* - GNU General Public License Version 2 or later (the "GPL") |
* http://www.gnu.org/licenses/gpl.html |
* |
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL") |
* http://www.gnu.org/licenses/lgpl.html |
* |
* - Mozilla Public License Version 1.1 or later (the "MPL") |
* http://www.mozilla.org/MPL/MPL-1.1.html |
* |
* == END LICENSE == |
* |
* Radio Button dialog window. |
--> |
<html> |
<head> |
<title>Radio Button Properties</title> |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> |
<meta content="noindex, nofollow" name="robots"> |
<script src="common/fck_dialog_common.js" type="text/javascript"></script> |
<script type="text/javascript"> |
var dialog = window.parent ; |
var oEditor = dialog.InnerDialogLoaded() ; |
// Gets the document DOM |
var oDOM = oEditor.FCK.EditorDocument ; |
var oActiveEl = dialog.Selection.GetSelectedElement() ; |
window.onload = function() |
{ |
// First of all, translate the dialog box texts |
oEditor.FCKLanguageManager.TranslatePage(document) ; |
if ( oActiveEl && oActiveEl.tagName.toUpperCase() == 'INPUT' && oActiveEl.type == 'radio' ) |
{ |
GetE('txtName').value = oActiveEl.name ; |
GetE('txtValue').value = oEditor.FCKBrowserInfo.IsIE ? oActiveEl.value : GetAttribute( oActiveEl, 'value' ) ; |
GetE('txtSelected').checked = oActiveEl.checked ; |
} |
else |
oActiveEl = null ; |
dialog.SetOkButton( true ) ; |
dialog.SetAutoSize( true ) ; |
SelectField( 'txtName' ) ; |
} |
function Ok() |
{ |
oEditor.FCKUndo.SaveUndoStep() ; |
oActiveEl = CreateNamedElement( oEditor, oActiveEl, 'INPUT', {name: GetE('txtName').value, type: 'radio' } ) ; |
if ( oEditor.FCKBrowserInfo.IsIE ) |
oActiveEl.value = GetE('txtValue').value ; |
else |
SetAttribute( oActiveEl, 'value', GetE('txtValue').value ) ; |
var bIsChecked = GetE('txtSelected').checked ; |
SetAttribute( oActiveEl, 'checked', bIsChecked ? 'checked' : null ) ; // For Firefox |
oActiveEl.checked = bIsChecked ; |
return true ; |
} |
</script> |
</head> |
<body style="OVERFLOW: hidden" scroll="no"> |
<table height="100%" width="100%"> |
<tr> |
<td align="center"> |
<table border="0" cellpadding="0" cellspacing="0" width="80%"> |
<tr> |
<td> |
<span fckLang="DlgCheckboxName">Name</span><br> |
<input type="text" size="20" id="txtName" style="WIDTH: 100%"> |
</td> |
</tr> |
<tr> |
<td> |
<span fckLang="DlgCheckboxValue">Value</span><br> |
<input type="text" size="20" id="txtValue" style="WIDTH: 100%"> |
</td> |
</tr> |
<tr> |
<td><input type="checkbox" id="txtSelected"><label for="txtSelected" fckLang="DlgCheckboxSelected">Checked</label></td> |
</tr> |
</table> |
</td> |
</tr> |
</table> |
</body> |
</html> |
/trunk/api/fckeditor/editor/dialog/fck_flash/fck_flash_preview.html |
---|
New file |
0,0 → 1,50 |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> |
<!-- |
* FCKeditor - The text editor for Internet - http://www.fckeditor.net |
* Copyright (C) 2003-2008 Frederico Caldeira Knabben |
* |
* == BEGIN LICENSE == |
* |
* Licensed under the terms of any of the following licenses at your |
* choice: |
* |
* - GNU General Public License Version 2 or later (the "GPL") |
* http://www.gnu.org/licenses/gpl.html |
* |
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL") |
* http://www.gnu.org/licenses/lgpl.html |
* |
* - Mozilla Public License Version 1.1 or later (the "MPL") |
* http://www.mozilla.org/MPL/MPL-1.1.html |
* |
* == END LICENSE == |
* |
* Preview page for the Flash dialog window. |
--> |
<html> |
<head> |
<title></title> |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> |
<meta name="robots" content="noindex, nofollow"> |
<script src="../common/fck_dialog_common.js" type="text/javascript"></script> |
<script language="javascript"> |
var FCKTools = window.parent.FCKTools ; |
var FCKConfig = window.parent.FCKConfig ; |
// Sets the Skin CSS |
document.write( FCKTools.GetStyleHtml( FCKConfig.SkinDialogCSS ) ) ; |
document.write( FCKTools.GetStyleHtml( GetCommonDialogCss( '../' ) ) ) ; |
if ( window.parent.FCKConfig.BaseHref.length > 0 ) |
document.write( '<base href="' + window.parent.FCKConfig.BaseHref + '">' ) ; |
window.onload = function() |
{ |
window.parent.SetPreviewElement( document.body ) ; |
} |
</script> |
</head> |
<body style="COLOR: #000000; BACKGROUND-COLOR: #ffffff"></body> |
</html> |
/trunk/api/fckeditor/editor/dialog/fck_flash/fck_flash.js |
---|
New file |
0,0 → 1,300 |
/* |
* FCKeditor - The text editor for Internet - http://www.fckeditor.net |
* Copyright (C) 2003-2008 Frederico Caldeira Knabben |
* |
* == BEGIN LICENSE == |
* |
* Licensed under the terms of any of the following licenses at your |
* choice: |
* |
* - GNU General Public License Version 2 or later (the "GPL") |
* http://www.gnu.org/licenses/gpl.html |
* |
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL") |
* http://www.gnu.org/licenses/lgpl.html |
* |
* - Mozilla Public License Version 1.1 or later (the "MPL") |
* http://www.mozilla.org/MPL/MPL-1.1.html |
* |
* == END LICENSE == |
* |
* Scripts related to the Flash dialog window (see fck_flash.html). |
*/ |
var dialog = window.parent ; |
var oEditor = dialog.InnerDialogLoaded() ; |
var FCK = oEditor.FCK ; |
var FCKLang = oEditor.FCKLang ; |
var FCKConfig = oEditor.FCKConfig ; |
var FCKTools = oEditor.FCKTools ; |
//#### Dialog Tabs |
// Set the dialog tabs. |
dialog.AddTab( 'Info', oEditor.FCKLang.DlgInfoTab ) ; |
if ( FCKConfig.FlashUpload ) |
dialog.AddTab( 'Upload', FCKLang.DlgLnkUpload ) ; |
if ( !FCKConfig.FlashDlgHideAdvanced ) |
dialog.AddTab( 'Advanced', oEditor.FCKLang.DlgAdvancedTag ) ; |
// Function called when a dialog tag is selected. |
function OnDialogTabChange( tabCode ) |
{ |
ShowE('divInfo' , ( tabCode == 'Info' ) ) ; |
ShowE('divUpload' , ( tabCode == 'Upload' ) ) ; |
ShowE('divAdvanced' , ( tabCode == 'Advanced' ) ) ; |
} |
// Get the selected flash embed (if available). |
var oFakeImage = dialog.Selection.GetSelectedElement() ; |
var oEmbed ; |
if ( oFakeImage ) |
{ |
if ( oFakeImage.tagName == 'IMG' && oFakeImage.getAttribute('_fckflash') ) |
oEmbed = FCK.GetRealElement( oFakeImage ) ; |
else |
oFakeImage = null ; |
} |
window.onload = function() |
{ |
// Translate the dialog box texts. |
oEditor.FCKLanguageManager.TranslatePage(document) ; |
// Load the selected element information (if any). |
LoadSelection() ; |
// Show/Hide the "Browse Server" button. |
GetE('tdBrowse').style.display = FCKConfig.FlashBrowser ? '' : 'none' ; |
// Set the actual uploader URL. |
if ( FCKConfig.FlashUpload ) |
GetE('frmUpload').action = FCKConfig.FlashUploadURL ; |
dialog.SetAutoSize( true ) ; |
// Activate the "OK" button. |
dialog.SetOkButton( true ) ; |
SelectField( 'txtUrl' ) ; |
} |
function LoadSelection() |
{ |
if ( ! oEmbed ) return ; |
GetE('txtUrl').value = GetAttribute( oEmbed, 'src', '' ) ; |
GetE('txtWidth').value = GetAttribute( oEmbed, 'width', '' ) ; |
GetE('txtHeight').value = GetAttribute( oEmbed, 'height', '' ) ; |
// Get Advances Attributes |
GetE('txtAttId').value = oEmbed.id ; |
GetE('chkAutoPlay').checked = GetAttribute( oEmbed, 'play', 'true' ) == 'true' ; |
GetE('chkLoop').checked = GetAttribute( oEmbed, 'loop', 'true' ) == 'true' ; |
GetE('chkMenu').checked = GetAttribute( oEmbed, 'menu', 'true' ) == 'true' ; |
GetE('cmbScale').value = GetAttribute( oEmbed, 'scale', '' ).toLowerCase() ; |
GetE('txtAttTitle').value = oEmbed.title ; |
if ( oEditor.FCKBrowserInfo.IsIE ) |
{ |
GetE('txtAttClasses').value = oEmbed.getAttribute('className') || '' ; |
GetE('txtAttStyle').value = oEmbed.style.cssText ; |
} |
else |
{ |
GetE('txtAttClasses').value = oEmbed.getAttribute('class',2) || '' ; |
GetE('txtAttStyle').value = oEmbed.getAttribute('style',2) || '' ; |
} |
UpdatePreview() ; |
} |
//#### The OK button was hit. |
function Ok() |
{ |
if ( GetE('txtUrl').value.length == 0 ) |
{ |
dialog.SetSelectedTab( 'Info' ) ; |
GetE('txtUrl').focus() ; |
alert( oEditor.FCKLang.DlgAlertUrl ) ; |
return false ; |
} |
oEditor.FCKUndo.SaveUndoStep() ; |
if ( !oEmbed ) |
{ |
oEmbed = FCK.EditorDocument.createElement( 'EMBED' ) ; |
oFakeImage = null ; |
} |
UpdateEmbed( oEmbed ) ; |
if ( !oFakeImage ) |
{ |
oFakeImage = oEditor.FCKDocumentProcessor_CreateFakeImage( 'FCK__Flash', oEmbed ) ; |
oFakeImage.setAttribute( '_fckflash', 'true', 0 ) ; |
oFakeImage = FCK.InsertElement( oFakeImage ) ; |
} |
oEditor.FCKEmbedAndObjectProcessor.RefreshView( oFakeImage, oEmbed ) ; |
return true ; |
} |
function UpdateEmbed( e ) |
{ |
SetAttribute( e, 'type' , 'application/x-shockwave-flash' ) ; |
SetAttribute( e, 'pluginspage' , 'http://www.macromedia.com/go/getflashplayer' ) ; |
SetAttribute( e, 'src', GetE('txtUrl').value ) ; |
SetAttribute( e, "width" , GetE('txtWidth').value ) ; |
SetAttribute( e, "height", GetE('txtHeight').value ) ; |
// Advances Attributes |
SetAttribute( e, 'id' , GetE('txtAttId').value ) ; |
SetAttribute( e, 'scale', GetE('cmbScale').value ) ; |
SetAttribute( e, 'play', GetE('chkAutoPlay').checked ? 'true' : 'false' ) ; |
SetAttribute( e, 'loop', GetE('chkLoop').checked ? 'true' : 'false' ) ; |
SetAttribute( e, 'menu', GetE('chkMenu').checked ? 'true' : 'false' ) ; |
SetAttribute( e, 'title' , GetE('txtAttTitle').value ) ; |
if ( oEditor.FCKBrowserInfo.IsIE ) |
{ |
SetAttribute( e, 'className', GetE('txtAttClasses').value ) ; |
e.style.cssText = GetE('txtAttStyle').value ; |
} |
else |
{ |
SetAttribute( e, 'class', GetE('txtAttClasses').value ) ; |
SetAttribute( e, 'style', GetE('txtAttStyle').value ) ; |
} |
} |
var ePreview ; |
function SetPreviewElement( previewEl ) |
{ |
ePreview = previewEl ; |
if ( GetE('txtUrl').value.length > 0 ) |
UpdatePreview() ; |
} |
function UpdatePreview() |
{ |
if ( !ePreview ) |
return ; |
while ( ePreview.firstChild ) |
ePreview.removeChild( ePreview.firstChild ) ; |
if ( GetE('txtUrl').value.length == 0 ) |
ePreview.innerHTML = ' ' ; |
else |
{ |
var oDoc = ePreview.ownerDocument || ePreview.document ; |
var e = oDoc.createElement( 'EMBED' ) ; |
SetAttribute( e, 'src', GetE('txtUrl').value ) ; |
SetAttribute( e, 'type', 'application/x-shockwave-flash' ) ; |
SetAttribute( e, 'width', '100%' ) ; |
SetAttribute( e, 'height', '100%' ) ; |
ePreview.appendChild( e ) ; |
} |
} |
// <embed id="ePreview" src="fck_flash/claims.swf" width="100%" height="100%" style="visibility:hidden" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"> |
function BrowseServer() |
{ |
OpenFileBrowser( FCKConfig.FlashBrowserURL, FCKConfig.FlashBrowserWindowWidth, FCKConfig.FlashBrowserWindowHeight ) ; |
} |
function SetUrl( url, width, height ) |
{ |
GetE('txtUrl').value = url ; |
if ( width ) |
GetE('txtWidth').value = width ; |
if ( height ) |
GetE('txtHeight').value = height ; |
UpdatePreview() ; |
dialog.SetSelectedTab( 'Info' ) ; |
} |
function OnUploadCompleted( errorNumber, fileUrl, fileName, customMsg ) |
{ |
// Remove animation |
window.parent.Throbber.Hide() ; |
GetE( 'divUpload' ).style.display = '' ; |
switch ( errorNumber ) |
{ |
case 0 : // No errors |
alert( 'Your file has been successfully uploaded' ) ; |
break ; |
case 1 : // Custom error |
alert( customMsg ) ; |
return ; |
case 101 : // Custom warning |
alert( customMsg ) ; |
break ; |
case 201 : |
alert( 'A file with the same name is already available. The uploaded file has been renamed to "' + fileName + '"' ) ; |
break ; |
case 202 : |
alert( 'Invalid file type' ) ; |
return ; |
case 203 : |
alert( "Security error. You probably don't have enough permissions to upload. Please check your server." ) ; |
return ; |
case 500 : |
alert( 'The connector is disabled' ) ; |
break ; |
default : |
alert( 'Error on file upload. Error number: ' + errorNumber ) ; |
return ; |
} |
SetUrl( fileUrl ) ; |
GetE('frmUpload').reset() ; |
} |
var oUploadAllowedExtRegex = new RegExp( FCKConfig.FlashUploadAllowedExtensions, 'i' ) ; |
var oUploadDeniedExtRegex = new RegExp( FCKConfig.FlashUploadDeniedExtensions, 'i' ) ; |
function CheckUpload() |
{ |
var sFile = GetE('txtUploadFile').value ; |
if ( sFile.length == 0 ) |
{ |
alert( 'Please select a file to upload' ) ; |
return false ; |
} |
if ( ( FCKConfig.FlashUploadAllowedExtensions.length > 0 && !oUploadAllowedExtRegex.test( sFile ) ) || |
( FCKConfig.FlashUploadDeniedExtensions.length > 0 && oUploadDeniedExtRegex.test( sFile ) ) ) |
{ |
OnUploadCompleted( 202 ) ; |
return false ; |
} |
// Show animation |
window.parent.Throbber.Show( 100 ) ; |
GetE( 'divUpload' ).style.display = 'none' ; |
return true ; |
} |
/trunk/api/fckeditor/editor/dialog/fck_flash.html |
---|
New file |
0,0 → 1,152 |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> |
<!-- |
* FCKeditor - The text editor for Internet - http://www.fckeditor.net |
* Copyright (C) 2003-2008 Frederico Caldeira Knabben |
* |
* == BEGIN LICENSE == |
* |
* Licensed under the terms of any of the following licenses at your |
* choice: |
* |
* - GNU General Public License Version 2 or later (the "GPL") |
* http://www.gnu.org/licenses/gpl.html |
* |
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL") |
* http://www.gnu.org/licenses/lgpl.html |
* |
* - Mozilla Public License Version 1.1 or later (the "MPL") |
* http://www.mozilla.org/MPL/MPL-1.1.html |
* |
* == END LICENSE == |
* |
* Flash Properties dialog window. |
--> |
<html> |
<head> |
<title>Flash Properties</title> |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> |
<meta content="noindex, nofollow" name="robots"> |
<script src="common/fck_dialog_common.js" type="text/javascript"></script> |
<script src="fck_flash/fck_flash.js" type="text/javascript"></script> |
<script type="text/javascript"> |
document.write( FCKTools.GetStyleHtml( GetCommonDialogCss() ) ) ; |
</script> |
</head> |
<body scroll="no" style="OVERFLOW: hidden"> |
<div id="divInfo"> |
<table cellSpacing="1" cellPadding="1" width="100%" border="0"> |
<tr> |
<td> |
<table cellSpacing="0" cellPadding="0" width="100%" border="0"> |
<tr> |
<td width="100%"><span fckLang="DlgImgURL">URL</span> |
</td> |
<td id="tdBrowse" style="DISPLAY: none" noWrap rowSpan="2"> <input id="btnBrowse" onclick="BrowseServer();" type="button" value="Browse Server" fckLang="DlgBtnBrowseServer"> |
</td> |
</tr> |
<tr> |
<td vAlign="top"><input id="txtUrl" onblur="UpdatePreview();" style="WIDTH: 100%" type="text"> |
</td> |
</tr> |
</table> |
</td> |
</tr> |
<TR> |
<TD> |
<table cellSpacing="0" cellPadding="0" border="0"> |
<TR> |
<TD nowrap> |
<span fckLang="DlgImgWidth">Width</span><br> |
<input id="txtWidth" onkeypress="return IsDigit(event);" type="text" size="3"> |
</TD> |
<TD> </TD> |
<TD> |
<span fckLang="DlgImgHeight">Height</span><br> |
<input id="txtHeight" onkeypress="return IsDigit(event);" type="text" size="3"> |
</TD> |
</TR> |
</table> |
</TD> |
</TR> |
<tr> |
<td vAlign="top"> |
<table cellSpacing="0" cellPadding="0" width="100%" border="0"> |
<tr> |
<td valign="top" width="100%"> |
<table cellSpacing="0" cellPadding="0" width="100%"> |
<tr> |
<td><span fckLang="DlgImgPreview">Preview</span></td> |
</tr> |
<tr> |
<td id="ePreviewCell" valign="top" class="FlashPreviewArea"><iframe src="fck_flash/fck_flash_preview.html" frameborder="0" marginheight="0" marginwidth="0"></iframe></td> |
</tr> |
</table> |
</td> |
</tr> |
</table> |
</td> |
</tr> |
</table> |
</div> |
<div id="divUpload" style="DISPLAY: none"> |
<form id="frmUpload" method="post" target="UploadWindow" enctype="multipart/form-data" action="" onsubmit="return CheckUpload();"> |
<span fckLang="DlgLnkUpload">Upload</span><br /> |
<input id="txtUploadFile" style="WIDTH: 100%" type="file" size="40" name="NewFile" /><br /> |
<br /> |
<input id="btnUpload" type="submit" value="Send it to the Server" fckLang="DlgLnkBtnUpload" /> |
<script type="text/javascript"> |
document.write( '<iframe name="UploadWindow" style="DISPLAY: none" src="' + FCKTools.GetVoidUrl() + '"><\/iframe>' ) ; |
</script> |
</form> |
</div> |
<div id="divAdvanced" style="DISPLAY: none"> |
<TABLE cellSpacing="0" cellPadding="0" border="0"> |
<TR> |
<TD nowrap> |
<span fckLang="DlgFlashScale">Scale</span><BR> |
<select id="cmbScale"> |
<option value="" selected></option> |
<option value="showall" fckLang="DlgFlashScaleAll">Show all</option> |
<option value="noborder" fckLang="DlgFlashScaleNoBorder">No Border</option> |
<option value="exactfit" fckLang="DlgFlashScaleFit">Exact Fit</option> |
</select></TD> |
<TD> |
</TD> |
<td valign="bottom"> |
<table> |
<tr> |
<td><input id="chkAutoPlay" type="checkbox" checked></td> |
<td><label for="chkAutoPlay" nowrap fckLang="DlgFlashChkPlay">Auto Play</label> </td> |
<td><input id="chkLoop" type="checkbox" checked></td> |
<td><label for="chkLoop" nowrap fckLang="DlgFlashChkLoop">Loop</label> </td> |
<td><input id="chkMenu" type="checkbox" checked></td> |
<td><label for="chkMenu" nowrap fckLang="DlgFlashChkMenu">Enable Flash Menu</label></td> |
</tr> |
</table> |
</td> |
</TR> |
</TABLE> |
<br> |
|
<table cellSpacing="0" cellPadding="0" width="100%" align="center" border="0"> |
<tr> |
<td vAlign="top" width="50%"><span fckLang="DlgGenId">Id</span><br> |
<input id="txtAttId" style="WIDTH: 100%" type="text"> |
</td> |
<td> </td> |
<td vAlign="top" nowrap><span fckLang="DlgGenClass">Stylesheet Classes</span><br> |
<input id="txtAttClasses" style="WIDTH: 100%" type="text"> |
</td> |
<td> </td> |
<td vAlign="top" nowrap width="50%"> <span fckLang="DlgGenTitle">Advisory Title</span><br> |
<input id="txtAttTitle" style="WIDTH: 100%" type="text"> |
</td> |
</tr> |
</table> |
<span fckLang="DlgGenStyle">Style</span><br> |
<input id="txtAttStyle" style="WIDTH: 100%" type="text"> |
</div> |
</body> |
</html> |
/trunk/api/fckeditor/editor/dialog/fck_link.html |
---|
New file |
0,0 → 1,295 |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> |
<!-- |
* FCKeditor - The text editor for Internet - http://www.fckeditor.net |
* Copyright (C) 2003-2008 Frederico Caldeira Knabben |
* |
* == BEGIN LICENSE == |
* |
* Licensed under the terms of any of the following licenses at your |
* choice: |
* |
* - GNU General Public License Version 2 or later (the "GPL") |
* http://www.gnu.org/licenses/gpl.html |
* |
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL") |
* http://www.gnu.org/licenses/lgpl.html |
* |
* - Mozilla Public License Version 1.1 or later (the "MPL") |
* http://www.mozilla.org/MPL/MPL-1.1.html |
* |
* == END LICENSE == |
* |
* Link dialog window. |
--> |
<html> |
<head> |
<title>Link Properties</title> |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> |
<meta name="robots" content="noindex, nofollow" /> |
<script src="common/fck_dialog_common.js" type="text/javascript"></script> |
<script src="fck_link/fck_link.js" type="text/javascript"></script> |
</head> |
<body scroll="no" style="OVERFLOW: hidden"> |
<div id="divInfo" style="DISPLAY: none"> |
<span fckLang="DlgLnkType">Link Type</span><br /> |
<select id="cmbLinkType" onchange="SetLinkType(this.value);"> |
<option value="url" fckLang="DlgLnkTypeURL" selected="selected">URL</option> |
<option value="anchor" fckLang="DlgLnkTypeAnchor">Anchor in this page</option> |
<option value="email" fckLang="DlgLnkTypeEMail">E-Mail</option> |
</select> |
<br /> |
<br /> |
<div id="divLinkTypeUrl"> |
<table cellspacing="0" cellpadding="0" width="100%" border="0" dir="ltr"> |
<tr> |
<td nowrap="nowrap"> |
<span fckLang="DlgLnkProto">Protocol</span><br /> |
<select id="cmbLinkProtocol"> |
<option value="http://" selected="selected">http://</option> |
<option value="https://">https://</option> |
<option value="ftp://">ftp://</option> |
<option value="news://">news://</option> |
<option value="" fckLang="DlgLnkProtoOther"><other></option> |
</select> |
</td> |
<td nowrap="nowrap"> </td> |
<td nowrap="nowrap" width="100%"> |
<span fckLang="DlgLnkURL">URL</span><br /> |
<input id="txtUrl" style="WIDTH: 100%" type="text" onkeyup="OnUrlChange();" onchange="OnUrlChange();" /> |
</td> |
</tr> |
</table> |
<br /> |
<div id="divBrowseServer"> |
<input type="button" value="Browse Server" fckLang="DlgBtnBrowseServer" onclick="BrowseServer();" /> |
</div> |
</div> |
<div id="divLinkTypeAnchor" style="DISPLAY: none" align="center"> |
<div id="divSelAnchor" style="DISPLAY: none"> |
<table cellspacing="0" cellpadding="0" border="0" width="70%"> |
<tr> |
<td colspan="3"> |
<span fckLang="DlgLnkAnchorSel">Select an Anchor</span> |
</td> |
</tr> |
<tr> |
<td width="50%"> |
<span fckLang="DlgLnkAnchorByName">By Anchor Name</span><br /> |
<select id="cmbAnchorName" onchange="GetE('cmbAnchorId').value='';" style="WIDTH: 100%"> |
<option value="" selected="selected"></option> |
</select> |
</td> |
<td> </td> |
<td width="50%"> |
<span fckLang="DlgLnkAnchorById">By Element Id</span><br /> |
<select id="cmbAnchorId" onchange="GetE('cmbAnchorName').value='';" style="WIDTH: 100%"> |
<option value="" selected="selected"></option> |
</select> |
</td> |
</tr> |
</table> |
</div> |
<div id="divNoAnchor" style="DISPLAY: none"> |
<span fckLang="DlgLnkNoAnchors"><No anchors available in the document></span> |
</div> |
</div> |
<div id="divLinkTypeEMail" style="DISPLAY: none"> |
<span fckLang="DlgLnkEMail">E-Mail Address</span><br /> |
<input id="txtEMailAddress" style="WIDTH: 100%" type="text" /><br /> |
<span fckLang="DlgLnkEMailSubject">Message Subject</span><br /> |
<input id="txtEMailSubject" style="WIDTH: 100%" type="text" /><br /> |
<span fckLang="DlgLnkEMailBody">Message Body</span><br /> |
<textarea id="txtEMailBody" style="WIDTH: 100%" rows="3" cols="20"></textarea> |
</div> |
</div> |
<div id="divUpload" style="DISPLAY: none"> |
<form id="frmUpload" method="post" target="UploadWindow" enctype="multipart/form-data" action="" onsubmit="return CheckUpload();"> |
<span fckLang="DlgLnkUpload">Upload</span><br /> |
<input id="txtUploadFile" style="WIDTH: 100%" type="file" size="40" name="NewFile" /><br /> |
<br /> |
<input id="btnUpload" type="submit" value="Send it to the Server" fckLang="DlgLnkBtnUpload" /> |
<script type="text/javascript"> |
document.write( '<iframe name="UploadWindow" style="display: none" src="' + FCKTools.GetVoidUrl() + '"><\/iframe>' ) ; |
</script> |
</form> |
</div> |
<div id="divTarget" style="DISPLAY: none"> |
<table cellspacing="0" cellpadding="0" width="100%" border="0"> |
<tr> |
<td nowrap="nowrap"> |
<span fckLang="DlgLnkTarget">Target</span><br /> |
<select id="cmbTarget" onchange="SetTarget(this.value);"> |
<option value="" fckLang="DlgGenNotSet" selected="selected"><not set></option> |
<option value="frame" fckLang="DlgLnkTargetFrame"><frame></option> |
<option value="popup" fckLang="DlgLnkTargetPopup"><popup window></option> |
<option value="_blank" fckLang="DlgLnkTargetBlank">New Window (_blank)</option> |
<option value="_top" fckLang="DlgLnkTargetTop">Topmost Window (_top)</option> |
<option value="_self" fckLang="DlgLnkTargetSelf">Same Window (_self)</option> |
<option value="_parent" fckLang="DlgLnkTargetParent">Parent Window (_parent)</option> |
</select> |
</td> |
<td> </td> |
<td id="tdTargetFrame" nowrap="nowrap" width="100%"> |
<span fckLang="DlgLnkTargetFrameName">Target Frame Name</span><br /> |
<input id="txtTargetFrame" style="WIDTH: 100%" type="text" onkeyup="OnTargetNameChange();" |
onchange="OnTargetNameChange();" /> |
</td> |
<td id="tdPopupName" style="DISPLAY: none" nowrap="nowrap" width="100%"> |
<span fckLang="DlgLnkPopWinName">Popup Window Name</span><br /> |
<input id="txtPopupName" style="WIDTH: 100%" type="text" /> |
</td> |
</tr> |
</table> |
<br /> |
<table id="tablePopupFeatures" style="DISPLAY: none" cellspacing="0" cellpadding="0" align="center" |
border="0"> |
<tr> |
<td> |
<span fckLang="DlgLnkPopWinFeat">Popup Window Features</span><br /> |
<table cellspacing="0" cellpadding="0" border="0"> |
<tr> |
<td valign="top" nowrap="nowrap" width="50%"> |
<input id="chkPopupResizable" name="chkFeature" value="resizable" type="checkbox" /><label for="chkPopupResizable" fckLang="DlgLnkPopResize">Resizable</label><br /> |
<input id="chkPopupLocationBar" name="chkFeature" value="location" type="checkbox" /><label for="chkPopupLocationBar" fckLang="DlgLnkPopLocation">Location |
Bar</label><br /> |
<input id="chkPopupManuBar" name="chkFeature" value="menubar" type="checkbox" /><label for="chkPopupManuBar" fckLang="DlgLnkPopMenu">Menu |
Bar</label><br /> |
<input id="chkPopupScrollBars" name="chkFeature" value="scrollbars" type="checkbox" /><label for="chkPopupScrollBars" fckLang="DlgLnkPopScroll">Scroll |
Bars</label> |
</td> |
<td></td> |
<td valign="top" nowrap="nowrap" width="50%"> |
<input id="chkPopupStatusBar" name="chkFeature" value="status" type="checkbox" /><label for="chkPopupStatusBar" fckLang="DlgLnkPopStatus">Status |
Bar</label><br /> |
<input id="chkPopupToolbar" name="chkFeature" value="toolbar" type="checkbox" /><label for="chkPopupToolbar" fckLang="DlgLnkPopToolbar">Toolbar</label><br /> |
<input id="chkPopupFullScreen" name="chkFeature" value="fullscreen" type="checkbox" /><label for="chkPopupFullScreen" fckLang="DlgLnkPopFullScrn">Full |
Screen (IE)</label><br /> |
<input id="chkPopupDependent" name="chkFeature" value="dependent" type="checkbox" /><label for="chkPopupDependent" fckLang="DlgLnkPopDependent">Dependent |
(Netscape)</label> |
</td> |
</tr> |
<tr> |
<td valign="top" nowrap="nowrap" width="50%"> </td> |
<td></td> |
<td valign="top" nowrap="nowrap" width="50%"></td> |
</tr> |
<tr> |
<td valign="top"> |
<table cellspacing="0" cellpadding="0" border="0"> |
<tr> |
<td nowrap="nowrap"><span fckLang="DlgLnkPopWidth">Width</span></td> |
<td> <input id="txtPopupWidth" type="text" maxlength="4" size="4" /></td> |
</tr> |
<tr> |
<td nowrap="nowrap"><span fckLang="DlgLnkPopHeight">Height</span></td> |
<td> <input id="txtPopupHeight" type="text" maxlength="4" size="4" /></td> |
</tr> |
</table> |
</td> |
<td> </td> |
<td valign="top"> |
<table cellspacing="0" cellpadding="0" border="0"> |
<tr> |
<td nowrap="nowrap"><span fckLang="DlgLnkPopLeft">Left Position</span></td> |
<td> <input id="txtPopupLeft" type="text" maxlength="4" size="4" /></td> |
</tr> |
<tr> |
<td nowrap="nowrap"><span fckLang="DlgLnkPopTop">Top Position</span></td> |
<td> <input id="txtPopupTop" type="text" maxlength="4" size="4" /></td> |
</tr> |
</table> |
</td> |
</tr> |
</table> |
</td> |
</tr> |
</table> |
</div> |
<div id="divAttribs" style="DISPLAY: none"> |
<table cellspacing="0" cellpadding="0" width="100%" align="center" border="0"> |
<tr> |
<td valign="top" width="50%"> |
<span fckLang="DlgGenId">Id</span><br /> |
<input id="txtAttId" style="WIDTH: 100%" type="text" /> |
</td> |
<td width="1"></td> |
<td valign="top"> |
<table cellspacing="0" cellpadding="0" width="100%" align="center" border="0"> |
<tr> |
<td width="60%"> |
<span fckLang="DlgGenLangDir">Language Direction</span><br /> |
<select id="cmbAttLangDir" style="WIDTH: 100%"> |
<option value="" fckLang="DlgGenNotSet" selected><not set></option> |
<option value="ltr" fckLang="DlgGenLangDirLtr">Left to Right (LTR)</option> |
<option value="rtl" fckLang="DlgGenLangDirRtl">Right to Left (RTL)</option> |
</select> |
</td> |
<td width="1%"> </td> |
<td nowrap="nowrap"><span fckLang="DlgGenAccessKey">Access Key</span><br /> |
<input id="txtAttAccessKey" style="WIDTH: 100%" type="text" maxlength="1" size="1" /> |
</td> |
</tr> |
</table> |
</td> |
</tr> |
<tr> |
<td valign="top" width="50%"> |
<span fckLang="DlgGenName">Name</span><br /> |
<input id="txtAttName" style="WIDTH: 100%" type="text" /> |
</td> |
<td width="1"></td> |
<td valign="top"> |
<table cellspacing="0" cellpadding="0" width="100%" align="center" border="0"> |
<tr> |
<td width="60%"> |
<span fckLang="DlgGenLangCode">Language Code</span><br /> |
<input id="txtAttLangCode" style="WIDTH: 100%" type="text" /> |
</td> |
<td width="1%"> </td> |
<td nowrap="nowrap"> |
<span fckLang="DlgGenTabIndex">Tab Index</span><br /> |
<input id="txtAttTabIndex" style="WIDTH: 100%" type="text" maxlength="5" size="5" /> |
</td> |
</tr> |
</table> |
</td> |
</tr> |
<tr> |
<td valign="top" width="50%"> </td> |
<td width="1"></td> |
<td valign="top"></td> |
</tr> |
<tr> |
<td valign="top" width="50%"> |
<span fckLang="DlgGenTitle">Advisory Title</span><br /> |
<input id="txtAttTitle" style="WIDTH: 100%" type="text" /> |
</td> |
<td width="1"> </td> |
<td valign="top"> |
<span fckLang="DlgGenContType">Advisory Content Type</span><br /> |
<input id="txtAttContentType" style="WIDTH: 100%" type="text" /> |
</td> |
</tr> |
<tr> |
<td valign="top"> |
<span fckLang="DlgGenClass">Stylesheet Classes</span><br /> |
<input id="txtAttClasses" style="WIDTH: 100%" type="text" /> |
</td> |
<td></td> |
<td valign="top"> |
<span fckLang="DlgGenLinkCharset">Linked Resource Charset</span><br /> |
<input id="txtAttCharSet" style="WIDTH: 100%" type="text" /> |
</td> |
</tr> |
</table> |
<table cellspacing="0" cellpadding="0" width="100%" align="center" border="0"> |
<tr> |
<td> |
<span fckLang="DlgGenStyle">Style</span><br /> |
<input id="txtAttStyle" style="WIDTH: 100%" type="text" /> |
</td> |
</tr> |
</table> |
</div> |
</body> |
</html> |
/trunk/api/fckeditor/editor/dialog/fck_hiddenfield.html |
---|
New file |
0,0 → 1,115 |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" > |
<!-- |
* FCKeditor - The text editor for Internet - http://www.fckeditor.net |
* Copyright (C) 2003-2008 Frederico Caldeira Knabben |
* |
* == BEGIN LICENSE == |
* |
* Licensed under the terms of any of the following licenses at your |
* choice: |
* |
* - GNU General Public License Version 2 or later (the "GPL") |
* http://www.gnu.org/licenses/gpl.html |
* |
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL") |
* http://www.gnu.org/licenses/lgpl.html |
* |
* - Mozilla Public License Version 1.1 or later (the "MPL") |
* http://www.mozilla.org/MPL/MPL-1.1.html |
* |
* == END LICENSE == |
* |
* Hidden Field dialog window. |
--> |
<html xmlns="http://www.w3.org/1999/xhtml"> |
<head> |
<title>Hidden Field Properties</title> |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> |
<meta content="noindex, nofollow" name="robots" /> |
<script src="common/fck_dialog_common.js" type="text/javascript"></script> |
<script type="text/javascript"> |
var dialog = window.parent ; |
var oEditor = dialog.InnerDialogLoaded() ; |
var FCK = oEditor.FCK ; |
// Gets the document DOM |
var oDOM = FCK.EditorDocument ; |
// Get the selected flash embed (if available). |
var oFakeImage = dialog.Selection.GetSelectedElement() ; |
var oActiveEl ; |
if ( oFakeImage ) |
{ |
if ( oFakeImage.tagName == 'IMG' && oFakeImage.getAttribute('_fckinputhidden') ) |
oActiveEl = FCK.GetRealElement( oFakeImage ) ; |
else |
oFakeImage = null ; |
} |
window.onload = function() |
{ |
// First of all, translate the dialog box texts |
oEditor.FCKLanguageManager.TranslatePage(document) ; |
if ( oActiveEl ) |
{ |
GetE('txtName').value = oActiveEl.name ; |
GetE('txtValue').value = oActiveEl.value ; |
} |
dialog.SetOkButton( true ) ; |
dialog.SetAutoSize( true ) ; |
SelectField( 'txtName' ) ; |
} |
function Ok() |
{ |
oEditor.FCKUndo.SaveUndoStep() ; |
oActiveEl = CreateNamedElement( oEditor, oActiveEl, 'INPUT', {name: GetE('txtName').value, type: 'hidden' } ) ; |
SetAttribute( oActiveEl, 'value', GetE('txtValue').value ) ; |
if ( !oFakeImage ) |
{ |
oFakeImage = oEditor.FCKDocumentProcessor_CreateFakeImage( 'FCK__InputHidden', oActiveEl ) ; |
oFakeImage.setAttribute( '_fckinputhidden', 'true', 0 ) ; |
oActiveEl.parentNode.insertBefore( oFakeImage, oActiveEl ) ; |
oActiveEl.parentNode.removeChild( oActiveEl ) ; |
} |
else |
oEditor.FCKUndo.SaveUndoStep() ; |
return true ; |
} |
</script> |
</head> |
<body style="overflow: hidden" scroll="no"> |
<table height="100%" width="100%"> |
<tr> |
<td align="center"> |
<table border="0" class="inhoud" cellpadding="0" cellspacing="0" width="80%"> |
<tr> |
<td> |
<span fcklang="DlgHiddenName">Name</span><br /> |
<input type="text" size="20" id="txtName" style="width: 100%" /> |
</td> |
</tr> |
<tr> |
<td> |
<span fcklang="DlgHiddenValue">Value</span><br /> |
<input type="text" size="30" id="txtValue" style="width: 100%" /> |
</td> |
</tr> |
</table> |
</td> |
</tr> |
</table> |
</body> |
</html> |
/trunk/api/fckeditor/editor/dialog/common/fck_dialog_common.css |
---|
New file |
0,0 → 1,85 |
/* |
* FCKeditor - The text editor for Internet - http://www.fckeditor.net |
* Copyright (C) 2003-2008 Frederico Caldeira Knabben |
* |
* == BEGIN LICENSE == |
* |
* Licensed under the terms of any of the following licenses at your |
* choice: |
* |
* - GNU General Public License Version 2 or later (the "GPL") |
* http://www.gnu.org/licenses/gpl.html |
* |
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL") |
* http://www.gnu.org/licenses/lgpl.html |
* |
* - Mozilla Public License Version 1.1 or later (the "MPL") |
* http://www.mozilla.org/MPL/MPL-1.1.html |
* |
* == END LICENSE == |
* |
* This is the CSS file used for interface details in some dialog |
* windows. |
*/ |
/* ######### |
* WARNING |
* ######### |
* When changing this file, the minified version of it must be updated in the |
* fck_dialog_common.js file (see GetCommonDialogCss). |
*/ |
.ImagePreviewArea |
{ |
border: #000000 1px solid; |
overflow: auto; |
width: 100%; |
height: 170px; |
background-color: #ffffff; |
} |
.FlashPreviewArea |
{ |
border: #000000 1px solid; |
padding: 5px; |
overflow: auto; |
width: 100%; |
height: 170px; |
background-color: #ffffff; |
} |
.BtnReset |
{ |
float: left; |
background-position: center center; |
background-image: url(images/reset.gif); |
width: 16px; |
height: 16px; |
background-repeat: no-repeat; |
border: 1px none; |
font-size: 1px ; |
} |
.BtnLocked, .BtnUnlocked |
{ |
float: left; |
background-position: center center; |
background-image: url(images/locked.gif); |
width: 16px; |
height: 16px; |
background-repeat: no-repeat; |
border: none 1px; |
font-size: 1px ; |
} |
.BtnUnlocked |
{ |
background-image: url(images/unlocked.gif); |
} |
.BtnOver |
{ |
border: outset 1px; |
cursor: pointer; |
cursor: hand; |
} |
/trunk/api/fckeditor/editor/dialog/common/fck_dialog_common.js |
---|
New file |
0,0 → 1,311 |
/* |
* FCKeditor - The text editor for Internet - http://www.fckeditor.net |
* Copyright (C) 2003-2008 Frederico Caldeira Knabben |
* |
* == BEGIN LICENSE == |
* |
* Licensed under the terms of any of the following licenses at your |
* choice: |
* |
* - GNU General Public License Version 2 or later (the "GPL") |
* http://www.gnu.org/licenses/gpl.html |
* |
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL") |
* http://www.gnu.org/licenses/lgpl.html |
* |
* - Mozilla Public License Version 1.1 or later (the "MPL") |
* http://www.mozilla.org/MPL/MPL-1.1.html |
* |
* == END LICENSE == |
* |
* Useful functions used by almost all dialog window pages. |
* Dialogs should link to this file as the very first script on the page. |
*/ |
// Automatically detect the correct document.domain (#123). |
(function() |
{ |
var d = document.domain ; |
while ( true ) |
{ |
// Test if we can access a parent property. |
try |
{ |
var test = window.parent.document.domain ; |
break ; |
} |
catch( e ) {} |
// Remove a domain part: www.mytest.example.com => mytest.example.com => example.com ... |
d = d.replace( /.*?(?:\.|$)/, '' ) ; |
if ( d.length == 0 ) |
break ; // It was not able to detect the domain. |
try |
{ |
document.domain = d ; |
} |
catch (e) |
{ |
break ; |
} |
} |
})() ; |
// Attention: FCKConfig must be available in the page. |
function GetCommonDialogCss( prefix ) |
{ |
// CSS minified by http://iceyboard.no-ip.org/projects/css_compressor (see _dev/css_compression.txt). |
return FCKConfig.BasePath + 'dialog/common/' + '|.ImagePreviewArea{border:#000 1px solid;overflow:auto;width:100%;height:170px;background-color:#fff}.FlashPreviewArea{border:#000 1px solid;padding:5px;overflow:auto;width:100%;height:170px;background-color:#fff}.BtnReset{float:left;background-position:center center;background-image:url(images/reset.gif);width:16px;height:16px;background-repeat:no-repeat;border:1px none;font-size:1px}.BtnLocked,.BtnUnlocked{float:left;background-position:center center;background-image:url(images/locked.gif);width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.BtnUnlocked{background-image:url(images/unlocked.gif)}.BtnOver{border:outset 1px;cursor:pointer;cursor:hand}' ; |
} |
// Gets a element by its Id. Used for shorter coding. |
function GetE( elementId ) |
{ |
return document.getElementById( elementId ) ; |
} |
function ShowE( element, isVisible ) |
{ |
if ( typeof( element ) == 'string' ) |
element = GetE( element ) ; |
element.style.display = isVisible ? '' : 'none' ; |
} |
function SetAttribute( element, attName, attValue ) |
{ |
if ( attValue == null || attValue.length == 0 ) |
element.removeAttribute( attName, 0 ) ; // 0 : Case Insensitive |
else |
element.setAttribute( attName, attValue, 0 ) ; // 0 : Case Insensitive |
} |
function GetAttribute( element, attName, valueIfNull ) |
{ |
var oAtt = element.attributes[attName] ; |
if ( oAtt == null || !oAtt.specified ) |
return valueIfNull ? valueIfNull : '' ; |
var oValue = element.getAttribute( attName, 2 ) ; |
if ( oValue == null ) |
oValue = oAtt.nodeValue ; |
return ( oValue == null ? valueIfNull : oValue ) ; |
} |
function SelectField( elementId ) |
{ |
var element = GetE( elementId ) ; |
element.focus() ; |
// element.select may not be available for some fields (like <select>). |
if ( element.select ) |
element.select() ; |
} |
// Functions used by text fields to accept numbers only. |
var IsDigit = ( function() |
{ |
var KeyIdentifierMap = |
{ |
End : 35, |
Home : 36, |
Left : 37, |
Right : 39, |
'U+00007F' : 46 // Delete |
} ; |
return function ( e ) |
{ |
if ( !e ) |
e = event ; |
var iCode = ( e.keyCode || e.charCode ) ; |
if ( !iCode && e.keyIdentifier && ( e.keyIdentifier in KeyIdentifierMap ) ) |
iCode = KeyIdentifierMap[ e.keyIdentifier ] ; |
return ( |
( iCode >= 48 && iCode <= 57 ) // Numbers |
|| (iCode >= 35 && iCode <= 40) // Arrows, Home, End |
|| iCode == 8 // Backspace |
|| iCode == 46 // Delete |
|| iCode == 9 // Tab |
) ; |
} |
} )() ; |
String.prototype.Trim = function() |
{ |
return this.replace( /(^\s*)|(\s*$)/g, '' ) ; |
} |
String.prototype.StartsWith = function( value ) |
{ |
return ( this.substr( 0, value.length ) == value ) ; |
} |
String.prototype.Remove = function( start, length ) |
{ |
var s = '' ; |
if ( start > 0 ) |
s = this.substring( 0, start ) ; |
if ( start + length < this.length ) |
s += this.substring( start + length , this.length ) ; |
return s ; |
} |
String.prototype.ReplaceAll = function( searchArray, replaceArray ) |
{ |
var replaced = this ; |
for ( var i = 0 ; i < searchArray.length ; i++ ) |
{ |
replaced = replaced.replace( searchArray[i], replaceArray[i] ) ; |
} |
return replaced ; |
} |
function OpenFileBrowser( url, width, height ) |
{ |
// oEditor must be defined. |
var iLeft = ( oEditor.FCKConfig.ScreenWidth - width ) / 2 ; |
var iTop = ( oEditor.FCKConfig.ScreenHeight - height ) / 2 ; |
var sOptions = "toolbar=no,status=no,resizable=yes,dependent=yes,scrollbars=yes" ; |
sOptions += ",width=" + width ; |
sOptions += ",height=" + height ; |
sOptions += ",left=" + iLeft ; |
sOptions += ",top=" + iTop ; |
window.open( url, 'FCKBrowseWindow', sOptions ) ; |
} |
/** |
Utility function to create/update an element with a name attribute in IE, so it behaves properly when moved around |
It also allows to change the name or other special attributes in an existing node |
oEditor : instance of FCKeditor where the element will be created |
oOriginal : current element being edited or null if it has to be created |
nodeName : string with the name of the element to create |
oAttributes : Hash object with the attributes that must be set at creation time in IE |
Those attributes will be set also after the element has been |
created for any other browser to avoid redudant code |
*/ |
function CreateNamedElement( oEditor, oOriginal, nodeName, oAttributes ) |
{ |
var oNewNode ; |
// IE doesn't allow easily to change properties of an existing object, |
// so remove the old and force the creation of a new one. |
var oldNode = null ; |
if ( oOriginal && oEditor.FCKBrowserInfo.IsIE ) |
{ |
// Force the creation only if some of the special attributes have changed: |
var bChanged = false; |
for( var attName in oAttributes ) |
bChanged |= ( oOriginal.getAttribute( attName, 2) != oAttributes[attName] ) ; |
if ( bChanged ) |
{ |
oldNode = oOriginal ; |
oOriginal = null ; |
} |
} |
// If the node existed (and it's not IE), then we just have to update its attributes |
if ( oOriginal ) |
{ |
oNewNode = oOriginal ; |
} |
else |
{ |
// #676, IE doesn't play nice with the name or type attribute |
if ( oEditor.FCKBrowserInfo.IsIE ) |
{ |
var sbHTML = [] ; |
sbHTML.push( '<' + nodeName ) ; |
for( var prop in oAttributes ) |
{ |
sbHTML.push( ' ' + prop + '="' + oAttributes[prop] + '"' ) ; |
} |
sbHTML.push( '>' ) ; |
if ( !oEditor.FCKListsLib.EmptyElements[nodeName.toLowerCase()] ) |
sbHTML.push( '</' + nodeName + '>' ) ; |
oNewNode = oEditor.FCK.EditorDocument.createElement( sbHTML.join('') ) ; |
// Check if we are just changing the properties of an existing node: copy its properties |
if ( oldNode ) |
{ |
CopyAttributes( oldNode, oNewNode, oAttributes ) ; |
oEditor.FCKDomTools.MoveChildren( oldNode, oNewNode ) ; |
oldNode.parentNode.removeChild( oldNode ) ; |
oldNode = null ; |
if ( oEditor.FCK.Selection.SelectionData ) |
{ |
// Trick to refresh the selection object and avoid error in |
// fckdialog.html Selection.EnsureSelection |
var oSel = oEditor.FCK.EditorDocument.selection ; |
oEditor.FCK.Selection.SelectionData = oSel.createRange() ; // Now oSel.type will be 'None' reflecting the real situation |
} |
} |
oNewNode = oEditor.FCK.InsertElement( oNewNode ) ; |
// FCK.Selection.SelectionData is broken by now since we've |
// deleted the previously selected element. So we need to reassign it. |
if ( oEditor.FCK.Selection.SelectionData ) |
{ |
var range = oEditor.FCK.EditorDocument.body.createControlRange() ; |
range.add( oNewNode ) ; |
oEditor.FCK.Selection.SelectionData = range ; |
} |
} |
else |
{ |
oNewNode = oEditor.FCK.InsertElement( nodeName ) ; |
} |
} |
// Set the basic attributes |
for( var attName in oAttributes ) |
oNewNode.setAttribute( attName, oAttributes[attName], 0 ) ; // 0 : Case Insensitive |
return oNewNode ; |
} |
// Copy all the attributes from one node to the other, kinda like a clone |
// But oSkipAttributes is an object with the attributes that must NOT be copied |
function CopyAttributes( oSource, oDest, oSkipAttributes ) |
{ |
var aAttributes = oSource.attributes ; |
for ( var n = 0 ; n < aAttributes.length ; n++ ) |
{ |
var oAttribute = aAttributes[n] ; |
if ( oAttribute.specified ) |
{ |
var sAttName = oAttribute.nodeName ; |
// We can set the type only once, so do it with the proper value, not copying it. |
if ( sAttName in oSkipAttributes ) |
continue ; |
var sAttValue = oSource.getAttribute( sAttName, 2 ) ; |
if ( sAttValue == null ) |
sAttValue = oAttribute.nodeValue ; |
oDest.setAttribute( sAttName, sAttValue, 0 ) ; // 0 : Case Insensitive |
} |
} |
// The style: |
oDest.style.cssText = oSource.style.cssText ; |
} |
/trunk/api/fckeditor/editor/dialog/common/images/locked.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/api/fckeditor/editor/dialog/common/images/locked.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/trunk/api/fckeditor/editor/dialog/common/images/reset.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/api/fckeditor/editor/dialog/common/images/reset.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/trunk/api/fckeditor/editor/dialog/common/images/unlocked.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/api/fckeditor/editor/dialog/common/images/unlocked.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/trunk/api/fckeditor/editor/dialog/fck_form.html |
---|
New file |
0,0 → 1,109 |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" > |
<!-- |
* FCKeditor - The text editor for Internet - http://www.fckeditor.net |
* Copyright (C) 2003-2008 Frederico Caldeira Knabben |
* |
* == BEGIN LICENSE == |
* |
* Licensed under the terms of any of the following licenses at your |
* choice: |
* |
* - GNU General Public License Version 2 or later (the "GPL") |
* http://www.gnu.org/licenses/gpl.html |
* |
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL") |
* http://www.gnu.org/licenses/lgpl.html |
* |
* - Mozilla Public License Version 1.1 or later (the "MPL") |
* http://www.mozilla.org/MPL/MPL-1.1.html |
* |
* == END LICENSE == |
* |
* Form dialog window. |
--> |
<html xmlns="http://www.w3.org/1999/xhtml"> |
<head> |
<title></title> |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> |
<meta content="noindex, nofollow" name="robots" /> |
<script src="common/fck_dialog_common.js" type="text/javascript"></script> |
<script type="text/javascript"> |
var dialog = window.parent ; |
var oEditor = dialog.InnerDialogLoaded() ; |
// Gets the document DOM |
var oDOM = oEditor.FCK.EditorDocument ; |
var oActiveEl = dialog.Selection.GetSelection().MoveToAncestorNode( 'FORM' ) ; |
window.onload = function() |
{ |
// First of all, translate the dialog box texts |
oEditor.FCKLanguageManager.TranslatePage(document) ; |
if ( oActiveEl ) |
{ |
GetE('txtName').value = oActiveEl.name ; |
GetE('txtAction').value = oActiveEl.getAttribute( 'action', 2 ) ; |
GetE('txtMethod').value = oActiveEl.method ; |
} |
else |
oActiveEl = null ; |
dialog.SetOkButton( true ) ; |
dialog.SetAutoSize( true ) ; |
SelectField( 'txtName' ) ; |
} |
function Ok() |
{ |
if ( !oActiveEl ) |
{ |
oActiveEl = oEditor.FCK.InsertElement( 'form' ) ; |
if ( oEditor.FCKBrowserInfo.IsGeckoLike ) |
oEditor.FCKTools.AppendBogusBr( oActiveEl ) ; |
} |
oActiveEl.name = GetE('txtName').value ; |
SetAttribute( oActiveEl, 'action', GetE('txtAction').value ) ; |
oActiveEl.method = GetE('txtMethod').value ; |
return true ; |
} |
</script> |
</head> |
<body style="overflow: hidden"> |
<table width="100%" style="height: 100%"> |
<tr> |
<td align="center"> |
<table cellspacing="0" cellpadding="0" width="80%" border="0"> |
<tr> |
<td> |
<span fcklang="DlgFormName">Name</span><br /> |
<input style="width: 100%" type="text" id="txtName" /> |
</td> |
</tr> |
<tr> |
<td> |
<span fcklang="DlgFormAction">Action</span><br /> |
<input style="width: 100%" type="text" id="txtAction" /> |
</td> |
</tr> |
<tr> |
<td> |
<span fcklang="DlgFormMethod">Method</span><br /> |
<select id="txtMethod"> |
<option value="get" selected="selected">GET</option> |
<option value="post">POST</option> |
</select> |
</td> |
</tr> |
</table> |
</td> |
</tr> |
</table> |
</body> |
</html> |
/trunk/api/fckeditor/editor/dialog/fck_about/logo_fckeditor.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/api/fckeditor/editor/dialog/fck_about/logo_fckeditor.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/trunk/api/fckeditor/editor/dialog/fck_about/logo_fredck.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/api/fckeditor/editor/dialog/fck_about/logo_fredck.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/trunk/api/fckeditor/editor/dialog/fck_about/sponsors/spellchecker_net.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/api/fckeditor/editor/dialog/fck_about/sponsors/spellchecker_net.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/trunk/api/fckeditor/editor/dialog/fck_template/images/template1.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/api/fckeditor/editor/dialog/fck_template/images/template1.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/trunk/api/fckeditor/editor/dialog/fck_template/images/template2.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/api/fckeditor/editor/dialog/fck_template/images/template2.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/trunk/api/fckeditor/editor/dialog/fck_template/images/template3.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/api/fckeditor/editor/dialog/fck_template/images/template3.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/trunk/api/fckeditor/editor/dialog/fck_anchor.html |
---|
New file |
0,0 → 1,220 |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" > |
<!-- |
* FCKeditor - The text editor for Internet - http://www.fckeditor.net |
* Copyright (C) 2003-2008 Frederico Caldeira Knabben |
* |
* == BEGIN LICENSE == |
* |
* Licensed under the terms of any of the following licenses at your |
* choice: |
* |
* - GNU General Public License Version 2 or later (the "GPL") |
* http://www.gnu.org/licenses/gpl.html |
* |
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL") |
* http://www.gnu.org/licenses/lgpl.html |
* |
* - Mozilla Public License Version 1.1 or later (the "MPL") |
* http://www.mozilla.org/MPL/MPL-1.1.html |
* |
* == END LICENSE == |
* |
* Anchor dialog window. |
--> |
<html> |
<head> |
<title>Anchor Properties</title> |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> |
<meta content="noindex, nofollow" name="robots"> |
<script src="common/fck_dialog_common.js" type="text/javascript"></script> |
<script type="text/javascript"> |
var dialog = window.parent ; |
var oEditor = dialog.InnerDialogLoaded() ; |
var FCK = oEditor.FCK ; |
var FCKBrowserInfo = oEditor.FCKBrowserInfo ; |
var FCKTools = oEditor.FCKTools ; |
var FCKRegexLib = oEditor.FCKRegexLib ; |
var oDOM = FCK.EditorDocument ; |
var oFakeImage = dialog.Selection.GetSelectedElement() ; |
var oAnchor ; |
if ( oFakeImage ) |
{ |
if ( oFakeImage.tagName == 'IMG' && oFakeImage.getAttribute('_fckanchor') ) |
oAnchor = FCK.GetRealElement( oFakeImage ) ; |
else |
oFakeImage = null ; |
} |
//Search for a real anchor |
if ( !oFakeImage ) |
{ |
oAnchor = FCK.Selection.MoveToAncestorNode( 'A' ) ; |
if ( oAnchor ) |
FCK.Selection.SelectNode( oAnchor ) ; |
} |
window.onload = function() |
{ |
// First of all, translate the dialog box texts |
oEditor.FCKLanguageManager.TranslatePage(document) ; |
if ( oAnchor ) |
GetE('txtName').value = oAnchor.name ; |
else |
oAnchor = null ; |
window.parent.SetOkButton( true ) ; |
window.parent.SetAutoSize( true ) ; |
SelectField( 'txtName' ) ; |
} |
function Ok() |
{ |
var sNewName = GetE('txtName').value ; |
// Remove any illegal character in a name attribute: |
// A name should start with a letter, but the validator passes anyway. |
sNewName = sNewName.replace( /[^\w-_\.:]/g, '_' ) ; |
if ( sNewName.length == 0 ) |
{ |
// Remove the anchor if the user leaves the name blank |
if ( oAnchor ) |
{ |
// Removes the current anchor from the document using the new command |
FCK.Commands.GetCommand( 'AnchorDelete' ).Execute() ; |
return true ; |
} |
alert( oEditor.FCKLang.DlgAnchorErrorName ) ; |
return false ; |
} |
oEditor.FCKUndo.SaveUndoStep() ; |
if ( oAnchor ) // Modifying an existent anchor. |
{ |
ReadjustLinksToAnchor( oAnchor.name, sNewName ); |
// Buggy explorer, bad bad browser. http://alt-tag.com/blog/archives/2006/02/ie-dom-bugs/ |
// Instead of just replacing the .name for the existing anchor (in order to preserve the content), we must remove the .name |
// and assign .name, although it won't appear until it's specially processed in fckxhtml.js |
// We remove the previous name |
oAnchor.removeAttribute( 'name' ) ; |
// Now we set it, but later we must process it specially |
oAnchor.name = sNewName ; |
return true ; |
} |
// Create a new anchor preserving the current selection |
var aNewAnchors = oEditor.FCK.CreateLink( '#' ) ; |
if ( aNewAnchors.length == 0 ) |
aNewAnchors.push( oEditor.FCK.InsertElement( 'a' ) ) ; |
else |
{ |
// Remove the fake href |
for ( var i = 0 ; i < aNewAnchors.length ; i++ ) |
aNewAnchors[i].removeAttribute( 'href' ) ; |
} |
// More than one anchors may have been created, so interact through all of them (see #220). |
for ( var i = 0 ; i < aNewAnchors.length ; i++ ) |
{ |
oAnchor = aNewAnchors[i] ; |
// Set the name |
if ( FCKBrowserInfo.IsIE ) |
{ |
// Setting anchor names directly in IE will trash the HTML code stored |
// in FCKTempBin after undos. See #2263. |
var replaceAnchor = oEditor.FCK.EditorDocument.createElement( '<a name="' + |
FCKTools.HTMLEncode( sNewName ).replace( '"', '"' ) + '">' ) ; |
oEditor.FCKDomTools.MoveChildren( oAnchor, replaceAnchor ) ; |
oAnchor.parentNode.replaceChild( replaceAnchor, oAnchor ) ; |
oAnchor = replaceAnchor ; |
} |
else |
oAnchor.name = sNewName ; |
// IE does require special processing to show the Anchor's image |
// Opera doesn't allow to select empty anchors |
if ( FCKBrowserInfo.IsIE || FCKBrowserInfo.IsOpera ) |
{ |
if ( oAnchor.innerHTML != '' ) |
{ |
if ( FCKBrowserInfo.IsIE ) |
oAnchor.className += ' FCK__AnchorC' ; |
} |
else |
{ |
// Create a fake image for both IE and Opera |
var oImg = oEditor.FCKDocumentProcessor_CreateFakeImage( 'FCK__Anchor', oAnchor.cloneNode(true) ) ; |
oImg.setAttribute( '_fckanchor', 'true', 0 ) ; |
oAnchor.parentNode.insertBefore( oImg, oAnchor ) ; |
oAnchor.parentNode.removeChild( oAnchor ) ; |
} |
} |
} |
return true ; |
} |
// Checks all the links in the current page pointing to the current name and changes them to the new name |
function ReadjustLinksToAnchor( sCurrent, sNew ) |
{ |
var oDoc = FCK.EditorDocument ; |
var aLinks = oDoc.getElementsByTagName( 'A' ) ; |
var sReference = '#' + sCurrent ; |
// The url of the document, so we check absolute and partial references. |
var sFullReference = oDoc.location.href.replace( /(#.*$)/, '') ; |
sFullReference += sReference ; |
var oLink ; |
var i = aLinks.length - 1 ; |
while ( i >= 0 && ( oLink = aLinks[i--] ) ) |
{ |
var sHRef = oLink.getAttribute( '_fcksavedurl' ) ; |
if ( sHRef == null ) |
sHRef = oLink.getAttribute( 'href' , 2 ) || '' ; |
if ( sHRef == sReference || sHRef == sFullReference ) |
{ |
oLink.href = '#' + sNew ; |
SetAttribute( oLink, '_fcksavedurl', '#' + sNew ) ; |
} |
} |
} |
</script> |
</head> |
<body style="overflow: hidden"> |
<table height="100%" width="100%"> |
<tr> |
<td align="center"> |
<table border="0" cellpadding="0" cellspacing="0" width="80%"> |
<tr> |
<td> |
<span fckLang="DlgAnchorName">Anchor Name</span><BR> |
<input id="txtName" style="WIDTH: 100%" type="text"> |
</td> |
</tr> |
</table> |
</td> |
</tr> |
</table> |
</body> |
</html> |
/trunk/api/fckeditor/editor/dialog/fck_template.html |
---|
New file |
0,0 → 1,242 |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> |
<!-- |
* FCKeditor - The text editor for Internet - http://www.fckeditor.net |
* Copyright (C) 2003-2008 Frederico Caldeira Knabben |
* |
* == BEGIN LICENSE == |
* |
* Licensed under the terms of any of the following licenses at your |
* choice: |
* |
* - GNU General Public License Version 2 or later (the "GPL") |
* http://www.gnu.org/licenses/gpl.html |
* |
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL") |
* http://www.gnu.org/licenses/lgpl.html |
* |
* - Mozilla Public License Version 1.1 or later (the "MPL") |
* http://www.mozilla.org/MPL/MPL-1.1.html |
* |
* == END LICENSE == |
* |
* Template selection dialog window. |
--> |
<html xmlns="http://www.w3.org/1999/xhtml"> |
<head> |
<title></title> |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> |
<meta name="robots" content="noindex, nofollow" /> |
<style type="text/css"> |
.TplList |
{ |
border: #dcdcdc 2px solid; |
background-color: #ffffff; |
overflow: auto; |
width: 90%; |
} |
.TplItem |
{ |
margin: 5px; |
padding: 7px; |
border: #eeeeee 1px solid; |
} |
.TplItem TABLE |
{ |
display: inline; |
} |
.TplTitle |
{ |
font-weight: bold; |
} |
</style> |
<script src="common/fck_dialog_common.js" type="text/javascript"></script> |
<script type="text/javascript"> |
var oEditor = window.parent.InnerDialogLoaded() ; |
var FCK = oEditor.FCK ; |
var FCKLang = oEditor.FCKLang ; |
var FCKConfig = oEditor.FCKConfig ; |
window.onload = function() |
{ |
// Set the right box height (browser dependent). |
GetE('eList').style.height = document.all ? '100%' : '295px' ; |
// Translate the dialog box texts. |
oEditor.FCKLanguageManager.TranslatePage(document) ; |
GetE('xChkReplaceAll').checked = ( FCKConfig.TemplateReplaceAll !== false ) ; |
if ( FCKConfig.TemplateReplaceCheckbox !== false ) |
GetE('xReplaceBlock').style.display = '' ; |
window.parent.SetAutoSize( true ) ; |
LoadTemplatesXml() ; |
} |
function LoadTemplatesXml() |
{ |
var oTemplate ; |
if ( !FCK._Templates ) |
{ |
GetE('eLoading').style.display = '' ; |
// Create the Templates array. |
FCK._Templates = new Array() ; |
// Load the XML file. |
var oXml = new oEditor.FCKXml() ; |
oXml.LoadUrl( FCKConfig.TemplatesXmlPath ) ; |
// Get the Images Base Path. |
var oAtt = oXml.SelectSingleNode( 'Templates/@imagesBasePath' ) ; |
var sImagesBasePath = oAtt ? oAtt.value : '' ; |
// Get the "Template" nodes defined in the XML file. |
var aTplNodes = oXml.SelectNodes( 'Templates/Template' ) ; |
for ( var i = 0 ; i < aTplNodes.length ; i++ ) |
{ |
var oNode = aTplNodes[i] ; |
oTemplate = new Object() ; |
var oPart ; |
// Get the Template Title. |
if ( (oPart = oNode.attributes.getNamedItem('title')) ) |
oTemplate.Title = oPart.value ; |
else |
oTemplate.Title = 'Template ' + ( i + 1 ) ; |
// Get the Template Description. |
if ( (oPart = oXml.SelectSingleNode( 'Description', oNode )) ) |
oTemplate.Description = oPart.text ? oPart.text : oPart.textContent ; |
// Get the Template Image. |
if ( (oPart = oNode.attributes.getNamedItem('image')) ) |
oTemplate.Image = sImagesBasePath + oPart.value ; |
// Get the Template HTML. |
if ( (oPart = oXml.SelectSingleNode( 'Html', oNode )) ) |
oTemplate.Html = oPart.text ? oPart.text : oPart.textContent ; |
else |
{ |
alert( 'No HTML defined for template index ' + i + '. Please review the "' + FCKConfig.TemplatesXmlPath + '" file.' ) ; |
continue ; |
} |
FCK._Templates[ FCK._Templates.length ] = oTemplate ; |
} |
GetE('eLoading').style.display = 'none' ; |
} |
if ( FCK._Templates.length == 0 ) |
GetE('eEmpty').style.display = '' ; |
else |
{ |
for ( var j = 0 ; j < FCK._Templates.length ; j++ ) |
{ |
oTemplate = FCK._Templates[j] ; |
var oItemDiv = GetE('eList').appendChild( document.createElement( 'DIV' ) ) ; |
oItemDiv.TplIndex = j ; |
oItemDiv.className = 'TplItem' ; |
// Build the inner HTML of our new item DIV. |
var sInner = '<table><tr>' ; |
if ( oTemplate.Image ) |
sInner += '<td valign="top"><img src="' + oTemplate.Image + '"><\/td>' ; |
sInner += '<td valign="top"><div class="TplTitle">' + oTemplate.Title + '<\/div>' ; |
if ( oTemplate.Description ) |
sInner += '<div>' + oTemplate.Description + '<\/div>' ; |
sInner += '<\/td><\/tr><\/table>' ; |
oItemDiv.innerHTML = sInner ; |
oItemDiv.onmouseover = ItemDiv_OnMouseOver ; |
oItemDiv.onmouseout = ItemDiv_OnMouseOut ; |
oItemDiv.onclick = ItemDiv_OnClick ; |
} |
} |
} |
function ItemDiv_OnMouseOver() |
{ |
this.className += ' PopupSelectionBox' ; |
} |
function ItemDiv_OnMouseOut() |
{ |
this.className = this.className.replace( /\s*PopupSelectionBox\s*/, '' ) ; |
} |
function ItemDiv_OnClick() |
{ |
SelectTemplate( this.TplIndex ) ; |
} |
function SelectTemplate( index ) |
{ |
oEditor.FCKUndo.SaveUndoStep() ; |
if ( GetE('xChkReplaceAll').checked ) |
FCK.SetData( FCK._Templates[index].Html ) ; |
else |
FCK.InsertHtml( FCK._Templates[index].Html ) ; |
window.parent.Cancel( true ) ; |
} |
</script> |
</head> |
<body style="overflow: hidden"> |
<table width="100%" style="height: 100%"> |
<tr> |
<td align="center"> |
<span fcklang="DlgTemplatesSelMsg">Please select the template to open in the editor<br /> |
(the actual contents will be lost):</span> |
</td> |
</tr> |
<tr> |
<td height="100%" align="center"> |
<div id="eList" align="left" class="TplList"> |
<div id="eLoading" align="center" style="display: none"> |
<br /> |
<span fcklang="DlgTemplatesLoading">Loading templates list. Please wait...</span> |
</div> |
<div id="eEmpty" align="center" style="display: none"> |
<br /> |
<span fcklang="DlgTemplatesNoTpl">(No templates defined)</span> |
</div> |
</div> |
</td> |
</tr> |
<tr id="xReplaceBlock" style="display: none"> |
<td> |
<table cellpadding="0" cellspacing="0"> |
<tr> |
<td> |
<input id="xChkReplaceAll" type="checkbox" /></td> |
<td> |
</td> |
<td> |
<label for="xChkReplaceAll" fcklang="DlgTemplatesReplace"> |
Replace actual contents</label></td> |
</tr> |
</table> |
</td> |
</tr> |
</table> |
</body> |
</html> |
/trunk/api/fckeditor/editor/dialog/fck_button.html |
---|
New file |
0,0 → 1,104 |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" > |
<!-- |
* FCKeditor - The text editor for Internet - http://www.fckeditor.net |
* Copyright (C) 2003-2008 Frederico Caldeira Knabben |
* |
* == BEGIN LICENSE == |
* |
* Licensed under the terms of any of the following licenses at your |
* choice: |
* |
* - GNU General Public License Version 2 or later (the "GPL") |
* http://www.gnu.org/licenses/gpl.html |
* |
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL") |
* http://www.gnu.org/licenses/lgpl.html |
* |
* - Mozilla Public License Version 1.1 or later (the "MPL") |
* http://www.mozilla.org/MPL/MPL-1.1.html |
* |
* == END LICENSE == |
* |
* Button dialog window. |
--> |
<html xmlns="http://www.w3.org/1999/xhtml"> |
<head> |
<title>Button Properties</title> |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> |
<meta content="noindex, nofollow" name="robots" /> |
<script src="common/fck_dialog_common.js" type="text/javascript"></script> |
<script type="text/javascript"> |
var dialog = window.parent ; |
var oEditor = dialog.InnerDialogLoaded() ; |
// Gets the document DOM |
var oDOM = oEditor.FCK.EditorDocument ; |
var oActiveEl = dialog.Selection.GetSelectedElement() ; |
window.onload = function() |
{ |
// First of all, translate the dialog box texts |
oEditor.FCKLanguageManager.TranslatePage(document) ; |
if ( oActiveEl && oActiveEl.tagName.toUpperCase() == "INPUT" && ( oActiveEl.type == "button" || oActiveEl.type == "submit" || oActiveEl.type == "reset" ) ) |
{ |
GetE('txtName').value = oActiveEl.name ; |
GetE('txtValue').value = oActiveEl.value ; |
GetE('txtType').value = oActiveEl.type ; |
} |
else |
oActiveEl = null ; |
dialog.SetOkButton( true ) ; |
dialog.SetAutoSize( true ) ; |
SelectField( 'txtName' ) ; |
} |
function Ok() |
{ |
oEditor.FCKUndo.SaveUndoStep() ; |
oActiveEl = CreateNamedElement( oEditor, oActiveEl, 'INPUT', {name: GetE('txtName').value, type: GetE('txtType').value } ) ; |
SetAttribute( oActiveEl, 'value', GetE('txtValue').value ) ; |
return true ; |
} |
</script> |
</head> |
<body style="overflow: hidden"> |
<table width="100%" style="height: 100%"> |
<tr> |
<td align="center"> |
<table border="0" cellpadding="0" cellspacing="0" width="80%"> |
<tr> |
<td colspan=""> |
<span fcklang="DlgCheckboxName">Name</span><br /> |
<input type="text" size="20" id="txtName" style="width: 100%" /> |
</td> |
</tr> |
<tr> |
<td> |
<span fcklang="DlgButtonText">Text (Value)</span><br /> |
<input type="text" id="txtValue" style="width: 100%" /> |
</td> |
</tr> |
<tr> |
<td> |
<span fcklang="DlgButtonType">Type</span><br /> |
<select id="txtType"> |
<option fcklang="DlgButtonTypeBtn" value="button" selected="selected">Button</option> |
<option fcklang="DlgButtonTypeSbm" value="submit">Submit</option> |
<option fcklang="DlgButtonTypeRst" value="reset">Reset</option> |
</select> |
</td> |
</tr> |
</table> |
</td> |
</tr> |
</table> |
</body> |
</html> |
/trunk/api/fckeditor/editor/dialog/fck_select/fck_select.js |
---|
New file |
0,0 → 1,194 |
/* |
* FCKeditor - The text editor for Internet - http://www.fckeditor.net |
* Copyright (C) 2003-2008 Frederico Caldeira Knabben |
* |
* == BEGIN LICENSE == |
* |
* Licensed under the terms of any of the following licenses at your |
* choice: |
* |
* - GNU General Public License Version 2 or later (the "GPL") |
* http://www.gnu.org/licenses/gpl.html |
* |
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL") |
* http://www.gnu.org/licenses/lgpl.html |
* |
* - Mozilla Public License Version 1.1 or later (the "MPL") |
* http://www.mozilla.org/MPL/MPL-1.1.html |
* |
* == END LICENSE == |
* |
* Scripts for the fck_select.html page. |
*/ |
function Select( combo ) |
{ |
var iIndex = combo.selectedIndex ; |
oListText.selectedIndex = iIndex ; |
oListValue.selectedIndex = iIndex ; |
var oTxtText = document.getElementById( "txtText" ) ; |
var oTxtValue = document.getElementById( "txtValue" ) ; |
oTxtText.value = oListText.value ; |
oTxtValue.value = oListValue.value ; |
} |
function Add() |
{ |
var oTxtText = document.getElementById( "txtText" ) ; |
var oTxtValue = document.getElementById( "txtValue" ) ; |
AddComboOption( oListText, oTxtText.value, oTxtText.value ) ; |
AddComboOption( oListValue, oTxtValue.value, oTxtValue.value ) ; |
oListText.selectedIndex = oListText.options.length - 1 ; |
oListValue.selectedIndex = oListValue.options.length - 1 ; |
oTxtText.value = '' ; |
oTxtValue.value = '' ; |
oTxtText.focus() ; |
} |
function Modify() |
{ |
var iIndex = oListText.selectedIndex ; |
if ( iIndex < 0 ) return ; |
var oTxtText = document.getElementById( "txtText" ) ; |
var oTxtValue = document.getElementById( "txtValue" ) ; |
oListText.options[ iIndex ].innerHTML = HTMLEncode( oTxtText.value ) ; |
oListText.options[ iIndex ].value = oTxtText.value ; |
oListValue.options[ iIndex ].innerHTML = HTMLEncode( oTxtValue.value ) ; |
oListValue.options[ iIndex ].value = oTxtValue.value ; |
oTxtText.value = '' ; |
oTxtValue.value = '' ; |
oTxtText.focus() ; |
} |
function Move( steps ) |
{ |
ChangeOptionPosition( oListText, steps ) ; |
ChangeOptionPosition( oListValue, steps ) ; |
} |
function Delete() |
{ |
RemoveSelectedOptions( oListText ) ; |
RemoveSelectedOptions( oListValue ) ; |
} |
function SetSelectedValue() |
{ |
var iIndex = oListValue.selectedIndex ; |
if ( iIndex < 0 ) return ; |
var oTxtValue = document.getElementById( "txtSelValue" ) ; |
oTxtValue.value = oListValue.options[ iIndex ].value ; |
} |
// Moves the selected option by a number of steps (also negative) |
function ChangeOptionPosition( combo, steps ) |
{ |
var iActualIndex = combo.selectedIndex ; |
if ( iActualIndex < 0 ) |
return ; |
var iFinalIndex = iActualIndex + steps ; |
if ( iFinalIndex < 0 ) |
iFinalIndex = 0 ; |
if ( iFinalIndex > ( combo.options.length - 1 ) ) |
iFinalIndex = combo.options.length - 1 ; |
if ( iActualIndex == iFinalIndex ) |
return ; |
var oOption = combo.options[ iActualIndex ] ; |
var sText = HTMLDecode( oOption.innerHTML ) ; |
var sValue = oOption.value ; |
combo.remove( iActualIndex ) ; |
oOption = AddComboOption( combo, sText, sValue, null, iFinalIndex ) ; |
oOption.selected = true ; |
} |
// Remove all selected options from a SELECT object |
function RemoveSelectedOptions(combo) |
{ |
// Save the selected index |
var iSelectedIndex = combo.selectedIndex ; |
var oOptions = combo.options ; |
// Remove all selected options |
for ( var i = oOptions.length - 1 ; i >= 0 ; i-- ) |
{ |
if (oOptions[i].selected) combo.remove(i) ; |
} |
// Reset the selection based on the original selected index |
if ( combo.options.length > 0 ) |
{ |
if ( iSelectedIndex >= combo.options.length ) iSelectedIndex = combo.options.length - 1 ; |
combo.selectedIndex = iSelectedIndex ; |
} |
} |
// Add a new option to a SELECT object (combo or list) |
function AddComboOption( combo, optionText, optionValue, documentObject, index ) |
{ |
var oOption ; |
if ( documentObject ) |
oOption = documentObject.createElement("OPTION") ; |
else |
oOption = document.createElement("OPTION") ; |
if ( index != null ) |
combo.options.add( oOption, index ) ; |
else |
combo.options.add( oOption ) ; |
oOption.innerHTML = optionText.length > 0 ? HTMLEncode( optionText ) : ' ' ; |
oOption.value = optionValue ; |
return oOption ; |
} |
function HTMLEncode( text ) |
{ |
if ( !text ) |
return '' ; |
text = text.replace( /&/g, '&' ) ; |
text = text.replace( /</g, '<' ) ; |
text = text.replace( />/g, '>' ) ; |
return text ; |
} |
function HTMLDecode( text ) |
{ |
if ( !text ) |
return '' ; |
text = text.replace( />/g, '>' ) ; |
text = text.replace( /</g, '<' ) ; |
text = text.replace( /&/g, '&' ) ; |
return text ; |
} |
/trunk/api/fckeditor/editor/dialog/fck_image/fck_image_preview.html |
---|
New file |
0,0 → 1,72 |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> |
<!-- |
* FCKeditor - The text editor for Internet - http://www.fckeditor.net |
* Copyright (C) 2003-2008 Frederico Caldeira Knabben |
* |
* == BEGIN LICENSE == |
* |
* Licensed under the terms of any of the following licenses at your |
* choice: |
* |
* - GNU General Public License Version 2 or later (the "GPL") |
* http://www.gnu.org/licenses/gpl.html |
* |
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL") |
* http://www.gnu.org/licenses/lgpl.html |
* |
* - Mozilla Public License Version 1.1 or later (the "MPL") |
* http://www.mozilla.org/MPL/MPL-1.1.html |
* |
* == END LICENSE == |
* |
* Preview page for the Image dialog window. |
* |
* Curiosity: http://en.wikipedia.org/wiki/Lorem_ipsum |
--> |
<html xmlns="http://www.w3.org/1999/xhtml"> |
<head> |
<title></title> |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> |
<meta name="robots" content="noindex, nofollow" /> |
<script src="../common/fck_dialog_common.js" type="text/javascript"></script> |
<script type="text/javascript"> |
var FCKTools = window.parent.FCKTools ; |
var FCKConfig = window.parent.FCKConfig ; |
// Set the preview CSS |
document.write( FCKTools.GetStyleHtml( FCKConfig.EditorAreaCSS ) ) ; |
document.write( FCKTools.GetStyleHtml( FCKConfig.EditorAreaStyles ) ) ; |
if ( window.parent.FCKConfig.BaseHref.length > 0 ) |
document.write( '<base href="' + window.parent.FCKConfig.BaseHref + '">' ) ; |
window.onload = function() |
{ |
window.parent.SetPreviewElements( |
document.getElementById( 'imgPreview' ), |
document.getElementById( 'lnkPreview' ) ) ; |
} |
</script> |
</head> |
<body> |
<div> |
<a id="lnkPreview" onclick="return false;" style="cursor: default"> |
<img id="imgPreview" onload="window.parent.UpdateOriginal();" |
style="display: none" alt="" /></a>Lorem ipsum dolor sit amet, consectetuer adipiscing |
elit. Maecenas feugiat consequat diam. Maecenas metus. Vivamus diam purus, cursus |
a, commodo non, facilisis vitae, nulla. Aenean dictum lacinia tortor. Nunc iaculis, |
nibh non iaculis aliquam, orci felis euismod neque, sed ornare massa mauris sed |
velit. Nulla pretium mi et risus. Fusce mi pede, tempor id, cursus ac, ullamcorper |
nec, enim. Sed tortor. Curabitur molestie. Duis velit augue, condimentum at, ultrices |
a, luctus ut, orci. Donec pellentesque egestas eros. Integer cursus, augue in cursus |
faucibus, eros pede bibendum sem, in tempus tellus justo quis ligula. Etiam eget |
tortor. Vestibulum rutrum, est ut placerat elementum, lectus nisl aliquam velit, |
tempor aliquam eros nunc nonummy metus. In eros metus, gravida a, gravida sed, lobortis |
id, turpis. Ut ultrices, ipsum at venenatis fringilla, sem nulla lacinia tellus, |
eget aliquet turpis mauris non enim. Nam turpis. Suspendisse lacinia. Curabitur |
ac tortor ut ipsum egestas elementum. Nunc imperdiet gravida mauris. |
</div> |
</body> |
</html> |
/trunk/api/fckeditor/editor/dialog/fck_image/fck_image.js |
---|
New file |
0,0 → 1,512 |
/* |
* FCKeditor - The text editor for Internet - http://www.fckeditor.net |
* Copyright (C) 2003-2008 Frederico Caldeira Knabben |
* |
* == BEGIN LICENSE == |
* |
* Licensed under the terms of any of the following licenses at your |
* choice: |
* |
* - GNU General Public License Version 2 or later (the "GPL") |
* http://www.gnu.org/licenses/gpl.html |
* |
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL") |
* http://www.gnu.org/licenses/lgpl.html |
* |
* - Mozilla Public License Version 1.1 or later (the "MPL") |
* http://www.mozilla.org/MPL/MPL-1.1.html |
* |
* == END LICENSE == |
* |
* Scripts related to the Image dialog window (see fck_image.html). |
*/ |
var dialog = window.parent ; |
var oEditor = dialog.InnerDialogLoaded() ; |
var FCK = oEditor.FCK ; |
var FCKLang = oEditor.FCKLang ; |
var FCKConfig = oEditor.FCKConfig ; |
var FCKDebug = oEditor.FCKDebug ; |
var FCKTools = oEditor.FCKTools ; |
var bImageButton = ( document.location.search.length > 0 && document.location.search.substr(1) == 'ImageButton' ) ; |
//#### Dialog Tabs |
// Set the dialog tabs. |
dialog.AddTab( 'Info', FCKLang.DlgImgInfoTab ) ; |
if ( !bImageButton && !FCKConfig.ImageDlgHideLink ) |
dialog.AddTab( 'Link', FCKLang.DlgImgLinkTab ) ; |
if ( FCKConfig.ImageUpload ) |
dialog.AddTab( 'Upload', FCKLang.DlgLnkUpload ) ; |
if ( !FCKConfig.ImageDlgHideAdvanced ) |
dialog.AddTab( 'Advanced', FCKLang.DlgAdvancedTag ) ; |
// Function called when a dialog tag is selected. |
function OnDialogTabChange( tabCode ) |
{ |
ShowE('divInfo' , ( tabCode == 'Info' ) ) ; |
ShowE('divLink' , ( tabCode == 'Link' ) ) ; |
ShowE('divUpload' , ( tabCode == 'Upload' ) ) ; |
ShowE('divAdvanced' , ( tabCode == 'Advanced' ) ) ; |
} |
// Get the selected image (if available). |
var oImage = dialog.Selection.GetSelectedElement() ; |
if ( oImage && oImage.tagName != 'IMG' && !( oImage.tagName == 'INPUT' && oImage.type == 'image' ) ) |
oImage = null ; |
// Get the active link. |
var oLink = dialog.Selection.GetSelection().MoveToAncestorNode( 'A' ) ; |
var oImageOriginal ; |
function UpdateOriginal( resetSize ) |
{ |
if ( !eImgPreview ) |
return ; |
if ( GetE('txtUrl').value.length == 0 ) |
{ |
oImageOriginal = null ; |
return ; |
} |
oImageOriginal = document.createElement( 'IMG' ) ; // new Image() ; |
if ( resetSize ) |
{ |
oImageOriginal.onload = function() |
{ |
this.onload = null ; |
ResetSizes() ; |
} |
} |
oImageOriginal.src = eImgPreview.src ; |
} |
var bPreviewInitialized ; |
window.onload = function() |
{ |
// Translate the dialog box texts. |
oEditor.FCKLanguageManager.TranslatePage(document) ; |
GetE('btnLockSizes').title = FCKLang.DlgImgLockRatio ; |
GetE('btnResetSize').title = FCKLang.DlgBtnResetSize ; |
// Load the selected element information (if any). |
LoadSelection() ; |
// Show/Hide the "Browse Server" button. |
GetE('tdBrowse').style.display = FCKConfig.ImageBrowser ? '' : 'none' ; |
GetE('divLnkBrowseServer').style.display = FCKConfig.LinkBrowser ? '' : 'none' ; |
UpdateOriginal() ; |
// Set the actual uploader URL. |
if ( FCKConfig.ImageUpload ) |
GetE('frmUpload').action = FCKConfig.ImageUploadURL ; |
dialog.SetAutoSize( true ) ; |
// Activate the "OK" button. |
dialog.SetOkButton( true ) ; |
SelectField( 'txtUrl' ) ; |
} |
function LoadSelection() |
{ |
if ( ! oImage ) return ; |
var sUrl = oImage.getAttribute( '_fcksavedurl' ) ; |
if ( sUrl == null ) |
sUrl = GetAttribute( oImage, 'src', '' ) ; |
GetE('txtUrl').value = sUrl ; |
GetE('txtAlt').value = GetAttribute( oImage, 'alt', '' ) ; |
GetE('txtVSpace').value = GetAttribute( oImage, 'vspace', '' ) ; |
GetE('txtHSpace').value = GetAttribute( oImage, 'hspace', '' ) ; |
GetE('txtBorder').value = GetAttribute( oImage, 'border', '' ) ; |
GetE('cmbAlign').value = GetAttribute( oImage, 'align', '' ) ; |
var iWidth, iHeight ; |
var regexSize = /^\s*(\d+)px\s*$/i ; |
if ( oImage.style.width ) |
{ |
var aMatchW = oImage.style.width.match( regexSize ) ; |
if ( aMatchW ) |
{ |
iWidth = aMatchW[1] ; |
oImage.style.width = '' ; |
SetAttribute( oImage, 'width' , iWidth ) ; |
} |
} |
if ( oImage.style.height ) |
{ |
var aMatchH = oImage.style.height.match( regexSize ) ; |
if ( aMatchH ) |
{ |
iHeight = aMatchH[1] ; |
oImage.style.height = '' ; |
SetAttribute( oImage, 'height', iHeight ) ; |
} |
} |
GetE('txtWidth').value = iWidth ? iWidth : GetAttribute( oImage, "width", '' ) ; |
GetE('txtHeight').value = iHeight ? iHeight : GetAttribute( oImage, "height", '' ) ; |
// Get Advances Attributes |
GetE('txtAttId').value = oImage.id ; |
GetE('cmbAttLangDir').value = oImage.dir ; |
GetE('txtAttLangCode').value = oImage.lang ; |
GetE('txtAttTitle').value = oImage.title ; |
GetE('txtLongDesc').value = oImage.longDesc ; |
if ( oEditor.FCKBrowserInfo.IsIE ) |
{ |
GetE('txtAttClasses').value = oImage.className || '' ; |
GetE('txtAttStyle').value = oImage.style.cssText ; |
} |
else |
{ |
GetE('txtAttClasses').value = oImage.getAttribute('class',2) || '' ; |
GetE('txtAttStyle').value = oImage.getAttribute('style',2) ; |
} |
if ( oLink ) |
{ |
var sLinkUrl = oLink.getAttribute( '_fcksavedurl' ) ; |
if ( sLinkUrl == null ) |
sLinkUrl = oLink.getAttribute('href',2) ; |
GetE('txtLnkUrl').value = sLinkUrl ; |
GetE('cmbLnkTarget').value = oLink.target ; |
} |
UpdatePreview() ; |
} |
//#### The OK button was hit. |
function Ok() |
{ |
if ( GetE('txtUrl').value.length == 0 ) |
{ |
dialog.SetSelectedTab( 'Info' ) ; |
GetE('txtUrl').focus() ; |
alert( FCKLang.DlgImgAlertUrl ) ; |
return false ; |
} |
var bHasImage = ( oImage != null ) ; |
if ( bHasImage && bImageButton && oImage.tagName == 'IMG' ) |
{ |
if ( confirm( 'Do you want to transform the selected image on a image button?' ) ) |
oImage = null ; |
} |
else if ( bHasImage && !bImageButton && oImage.tagName == 'INPUT' ) |
{ |
if ( confirm( 'Do you want to transform the selected image button on a simple image?' ) ) |
oImage = null ; |
} |
oEditor.FCKUndo.SaveUndoStep() ; |
if ( !bHasImage ) |
{ |
if ( bImageButton ) |
{ |
oImage = FCK.EditorDocument.createElement( 'input' ) ; |
oImage.type = 'image' ; |
oImage = FCK.InsertElement( oImage ) ; |
} |
else |
oImage = FCK.InsertElement( 'img' ) ; |
} |
UpdateImage( oImage ) ; |
var sLnkUrl = GetE('txtLnkUrl').value.Trim() ; |
if ( sLnkUrl.length == 0 ) |
{ |
if ( oLink ) |
FCK.ExecuteNamedCommand( 'Unlink' ) ; |
} |
else |
{ |
if ( oLink ) // Modifying an existent link. |
oLink.href = sLnkUrl ; |
else // Creating a new link. |
{ |
if ( !bHasImage ) |
oEditor.FCKSelection.SelectNode( oImage ) ; |
oLink = oEditor.FCK.CreateLink( sLnkUrl )[0] ; |
if ( !bHasImage ) |
{ |
oEditor.FCKSelection.SelectNode( oLink ) ; |
oEditor.FCKSelection.Collapse( false ) ; |
} |
} |
SetAttribute( oLink, '_fcksavedurl', sLnkUrl ) ; |
SetAttribute( oLink, 'target', GetE('cmbLnkTarget').value ) ; |
} |
return true ; |
} |
function UpdateImage( e, skipId ) |
{ |
e.src = GetE('txtUrl').value ; |
SetAttribute( e, "_fcksavedurl", GetE('txtUrl').value ) ; |
SetAttribute( e, "alt" , GetE('txtAlt').value ) ; |
SetAttribute( e, "width" , GetE('txtWidth').value ) ; |
SetAttribute( e, "height", GetE('txtHeight').value ) ; |
SetAttribute( e, "vspace", GetE('txtVSpace').value ) ; |
SetAttribute( e, "hspace", GetE('txtHSpace').value ) ; |
SetAttribute( e, "border", GetE('txtBorder').value ) ; |
SetAttribute( e, "align" , GetE('cmbAlign').value ) ; |
// Advances Attributes |
if ( ! skipId ) |
SetAttribute( e, 'id', GetE('txtAttId').value ) ; |
SetAttribute( e, 'dir' , GetE('cmbAttLangDir').value ) ; |
SetAttribute( e, 'lang' , GetE('txtAttLangCode').value ) ; |
SetAttribute( e, 'title' , GetE('txtAttTitle').value ) ; |
SetAttribute( e, 'longDesc' , GetE('txtLongDesc').value ) ; |
if ( oEditor.FCKBrowserInfo.IsIE ) |
{ |
e.className = GetE('txtAttClasses').value ; |
e.style.cssText = GetE('txtAttStyle').value ; |
} |
else |
{ |
SetAttribute( e, 'class' , GetE('txtAttClasses').value ) ; |
SetAttribute( e, 'style', GetE('txtAttStyle').value ) ; |
} |
} |
var eImgPreview ; |
var eImgPreviewLink ; |
function SetPreviewElements( imageElement, linkElement ) |
{ |
eImgPreview = imageElement ; |
eImgPreviewLink = linkElement ; |
UpdatePreview() ; |
UpdateOriginal() ; |
bPreviewInitialized = true ; |
} |
function UpdatePreview() |
{ |
if ( !eImgPreview || !eImgPreviewLink ) |
return ; |
if ( GetE('txtUrl').value.length == 0 ) |
eImgPreviewLink.style.display = 'none' ; |
else |
{ |
UpdateImage( eImgPreview, true ) ; |
if ( GetE('txtLnkUrl').value.Trim().length > 0 ) |
eImgPreviewLink.href = 'javascript:void(null);' ; |
else |
SetAttribute( eImgPreviewLink, 'href', '' ) ; |
eImgPreviewLink.style.display = '' ; |
} |
} |
var bLockRatio = true ; |
function SwitchLock( lockButton ) |
{ |
bLockRatio = !bLockRatio ; |
lockButton.className = bLockRatio ? 'BtnLocked' : 'BtnUnlocked' ; |
lockButton.title = bLockRatio ? 'Lock sizes' : 'Unlock sizes' ; |
if ( bLockRatio ) |
{ |
if ( GetE('txtWidth').value.length > 0 ) |
OnSizeChanged( 'Width', GetE('txtWidth').value ) ; |
else |
OnSizeChanged( 'Height', GetE('txtHeight').value ) ; |
} |
} |
// Fired when the width or height input texts change |
function OnSizeChanged( dimension, value ) |
{ |
// Verifies if the aspect ration has to be maintained |
if ( oImageOriginal && bLockRatio ) |
{ |
var e = dimension == 'Width' ? GetE('txtHeight') : GetE('txtWidth') ; |
if ( value.length == 0 || isNaN( value ) ) |
{ |
e.value = '' ; |
return ; |
} |
if ( dimension == 'Width' ) |
value = value == 0 ? 0 : Math.round( oImageOriginal.height * ( value / oImageOriginal.width ) ) ; |
else |
value = value == 0 ? 0 : Math.round( oImageOriginal.width * ( value / oImageOriginal.height ) ) ; |
if ( !isNaN( value ) ) |
e.value = value ; |
} |
UpdatePreview() ; |
} |
// Fired when the Reset Size button is clicked |
function ResetSizes() |
{ |
if ( ! oImageOriginal ) return ; |
if ( oEditor.FCKBrowserInfo.IsGecko && !oImageOriginal.complete ) |
{ |
setTimeout( ResetSizes, 50 ) ; |
return ; |
} |
GetE('txtWidth').value = oImageOriginal.width ; |
GetE('txtHeight').value = oImageOriginal.height ; |
UpdatePreview() ; |
} |
function BrowseServer() |
{ |
OpenServerBrowser( |
'Image', |
FCKConfig.ImageBrowserURL, |
FCKConfig.ImageBrowserWindowWidth, |
FCKConfig.ImageBrowserWindowHeight ) ; |
} |
function LnkBrowseServer() |
{ |
OpenServerBrowser( |
'Link', |
FCKConfig.LinkBrowserURL, |
FCKConfig.LinkBrowserWindowWidth, |
FCKConfig.LinkBrowserWindowHeight ) ; |
} |
function OpenServerBrowser( type, url, width, height ) |
{ |
sActualBrowser = type ; |
OpenFileBrowser( url, width, height ) ; |
} |
var sActualBrowser ; |
function SetUrl( url, width, height, alt ) |
{ |
if ( sActualBrowser == 'Link' ) |
{ |
GetE('txtLnkUrl').value = url ; |
UpdatePreview() ; |
} |
else |
{ |
GetE('txtUrl').value = url ; |
GetE('txtWidth').value = width ? width : '' ; |
GetE('txtHeight').value = height ? height : '' ; |
if ( alt ) |
GetE('txtAlt').value = alt; |
UpdatePreview() ; |
UpdateOriginal( true ) ; |
} |
dialog.SetSelectedTab( 'Info' ) ; |
} |
function OnUploadCompleted( errorNumber, fileUrl, fileName, customMsg ) |
{ |
// Remove animation |
window.parent.Throbber.Hide() ; |
GetE( 'divUpload' ).style.display = '' ; |
switch ( errorNumber ) |
{ |
case 0 : // No errors |
alert( 'Your file has been successfully uploaded' ) ; |
break ; |
case 1 : // Custom error |
alert( customMsg ) ; |
return ; |
case 101 : // Custom warning |
alert( customMsg ) ; |
break ; |
case 201 : |
alert( 'A file with the same name is already available. The uploaded file has been renamed to "' + fileName + '"' ) ; |
break ; |
case 202 : |
alert( 'Invalid file type' ) ; |
return ; |
case 203 : |
alert( "Security error. You probably don't have enough permissions to upload. Please check your server." ) ; |
return ; |
case 500 : |
alert( 'The connector is disabled' ) ; |
break ; |
default : |
alert( 'Error on file upload. Error number: ' + errorNumber ) ; |
return ; |
} |
sActualBrowser = '' ; |
SetUrl( fileUrl ) ; |
GetE('frmUpload').reset() ; |
} |
var oUploadAllowedExtRegex = new RegExp( FCKConfig.ImageUploadAllowedExtensions, 'i' ) ; |
var oUploadDeniedExtRegex = new RegExp( FCKConfig.ImageUploadDeniedExtensions, 'i' ) ; |
function CheckUpload() |
{ |
var sFile = GetE('txtUploadFile').value ; |
if ( sFile.length == 0 ) |
{ |
alert( 'Please select a file to upload' ) ; |
return false ; |
} |
if ( ( FCKConfig.ImageUploadAllowedExtensions.length > 0 && !oUploadAllowedExtRegex.test( sFile ) ) || |
( FCKConfig.ImageUploadDeniedExtensions.length > 0 && oUploadDeniedExtRegex.test( sFile ) ) ) |
{ |
OnUploadCompleted( 202 ) ; |
return false ; |
} |
// Show animation |
window.parent.Throbber.Show( 100 ) ; |
GetE( 'divUpload' ).style.display = 'none' ; |
return true ; |
} |
/trunk/api/fckeditor/editor/dialog/fck_select.html |
---|
New file |
0,0 → 1,180 |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" > |
<!-- |
* FCKeditor - The text editor for Internet - http://www.fckeditor.net |
* Copyright (C) 2003-2008 Frederico Caldeira Knabben |
* |
* == BEGIN LICENSE == |
* |
* Licensed under the terms of any of the following licenses at your |
* choice: |
* |
* - GNU General Public License Version 2 or later (the "GPL") |
* http://www.gnu.org/licenses/gpl.html |
* |
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL") |
* http://www.gnu.org/licenses/lgpl.html |
* |
* - Mozilla Public License Version 1.1 or later (the "MPL") |
* http://www.mozilla.org/MPL/MPL-1.1.html |
* |
* == END LICENSE == |
* |
* Select dialog window. |
--> |
<html> |
<head> |
<title>Select Properties</title> |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> |
<meta content="noindex, nofollow" name="robots"> |
<script src="common/fck_dialog_common.js" type="text/javascript"></script> |
<script type="text/javascript" src="fck_select/fck_select.js"></script> |
<script type="text/javascript"> |
var dialog = window.parent ; |
var oEditor = dialog.InnerDialogLoaded() ; |
// Gets the document DOM |
var oDOM = oEditor.FCK.EditorDocument ; |
var oActiveEl = dialog.Selection.GetSelectedElement() ; |
var oListText ; |
var oListValue ; |
window.onload = function() |
{ |
// First of all, translate the dialog box texts |
oEditor.FCKLanguageManager.TranslatePage(document) ; |
oListText = document.getElementById( 'cmbText' ) ; |
oListValue = document.getElementById( 'cmbValue' ) ; |
// Fix the lists widths. (Bug #970) |
oListText.style.width = oListText.offsetWidth ; |
oListValue.style.width = oListValue.offsetWidth ; |
if ( oActiveEl && oActiveEl.tagName == 'SELECT' ) |
{ |
GetE('txtName').value = oActiveEl.name ; |
GetE('txtSelValue').value = oActiveEl.value ; |
GetE('txtLines').value = GetAttribute( oActiveEl, 'size' ) ; |
GetE('chkMultiple').checked = oActiveEl.multiple ; |
// Load the actual options |
for ( var i = 0 ; i < oActiveEl.options.length ; i++ ) |
{ |
var sText = HTMLDecode( oActiveEl.options[i].innerHTML ) ; |
var sValue = oActiveEl.options[i].value ; |
AddComboOption( oListText, sText, sText ) ; |
AddComboOption( oListValue, sValue, sValue ) ; |
} |
} |
else |
oActiveEl = null ; |
dialog.SetOkButton( true ) ; |
dialog.SetAutoSize( true ) ; |
SelectField( 'txtName' ) ; |
} |
function Ok() |
{ |
oEditor.FCKUndo.SaveUndoStep() ; |
var sSize = GetE('txtLines').value ; |
if ( sSize == null || isNaN( sSize ) || sSize <= 1 ) |
sSize = '' ; |
oActiveEl = CreateNamedElement( oEditor, oActiveEl, 'SELECT', {name: GetE('txtName').value} ) ; |
SetAttribute( oActiveEl, 'size' , sSize ) ; |
oActiveEl.multiple = ( sSize.length > 0 && GetE('chkMultiple').checked ) ; |
// Remove all options. |
while ( oActiveEl.options.length > 0 ) |
oActiveEl.remove(0) ; |
// Add all available options. |
for ( var i = 0 ; i < oListText.options.length ; i++ ) |
{ |
var sText = oListText.options[i].value ; |
var sValue = oListValue.options[i].value ; |
if ( sValue.length == 0 ) sValue = sText ; |
var oOption = AddComboOption( oActiveEl, sText, sValue, oDOM ) ; |
if ( sValue == GetE('txtSelValue').value ) |
{ |
SetAttribute( oOption, 'selected', 'selected' ) ; |
oOption.selected = true ; |
} |
} |
return true ; |
} |
</script> |
</head> |
<body style="overflow: hidden"> |
<table width="100%" height="100%"> |
<tr> |
<td> |
<table width="100%"> |
<tr> |
<td nowrap><span fckLang="DlgSelectName">Name</span> </td> |
<td width="100%" colSpan="2"><input id="txtName" style="WIDTH: 100%" type="text"></td> |
</tr> |
<tr> |
<td nowrap><span fckLang="DlgSelectValue">Value</span> </td> |
<td width="100%" colSpan="2"><input id="txtSelValue" style="WIDTH: 100%; BACKGROUND-COLOR: buttonface" type="text" readonly></td> |
</tr> |
<tr> |
<td nowrap><span fckLang="DlgSelectSize">Size</span> </td> |
<td nowrap><input id="txtLines" type="text" size="2" value=""> <span fckLang="DlgSelectLines">lines</span></td> |
<td nowrap align="right"><input id="chkMultiple" name="chkMultiple" type="checkbox"><label for="chkMultiple" fckLang="DlgSelectChkMulti">Allow |
multiple selections</label></td> |
</tr> |
</table> |
<br> |
<hr style="POSITION: absolute"> |
<span style="LEFT: 10px; POSITION: relative; TOP: -7px" class="BackColor"> <span fckLang="DlgSelectOpAvail">Available |
Options</span> </span> |
<table width="100%"> |
<tr> |
<td width="50%"><span fckLang="DlgSelectOpText">Text</span><br> |
<input id="txtText" style="WIDTH: 100%" type="text" name="txtText"> |
</td> |
<td width="50%"><span fckLang="DlgSelectOpValue">Value</span><br> |
<input id="txtValue" style="WIDTH: 100%" type="text" name="txtValue"> |
</td> |
<td vAlign="bottom"><input onclick="Add();" type="button" fckLang="DlgSelectBtnAdd" value="Add"></td> |
<td vAlign="bottom"><input onclick="Modify();" type="button" fckLang="DlgSelectBtnModify" value="Modify"></td> |
</tr> |
<tr> |
<td rowSpan="2"><select id="cmbText" style="WIDTH: 100%" onchange="GetE('cmbValue').selectedIndex = this.selectedIndex;Select(this);" |
size="5" name="cmbText"></select> |
</td> |
<td rowSpan="2"><select id="cmbValue" style="WIDTH: 100%" onchange="GetE('cmbText').selectedIndex = this.selectedIndex;Select(this);" |
size="5" name="cmbValue"></select> |
</td> |
<td vAlign="top" colSpan="2"> |
</td> |
</tr> |
<tr> |
<td vAlign="bottom" colSpan="2"><input style="WIDTH: 100%" onclick="Move(-1);" type="button" fckLang="DlgSelectBtnUp" value="Up"> |
<br> |
<input style="WIDTH: 100%" onclick="Move(1);" type="button" fckLang="DlgSelectBtnDown" |
value="Down"> |
</td> |
</tr> |
<TR> |
<TD vAlign="bottom" colSpan="4"><INPUT onclick="SetSelectedValue();" type="button" fckLang="DlgSelectBtnSetValue" value="Set as selected value"> |
<input onclick="Delete();" type="button" fckLang="DlgSelectBtnDelete" value="Delete"></TD> |
</TR> |
</table> |
</td> |
</tr> |
</table> |
</body> |
</html> |
/trunk/api/fckeditor/editor/dialog/fck_div.html |
---|
New file |
0,0 → 1,364 |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" > |
<!-- |
* FCKeditor - The text editor for Internet - http://www.fckeditor.net |
* Copyright (C) 2003-2008 Frederico Caldeira Knabben |
* |
* == BEGIN LICENSE == |
* |
* Licensed under the terms of any of the following licenses at your |
* choice: |
* |
* - GNU General Public License Version 2 or later (the "GPL") |
* http://www.gnu.org/licenses/gpl.html |
* |
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL") |
* http://www.gnu.org/licenses/lgpl.html |
* |
* - Mozilla Public License Version 1.1 or later (the "MPL") |
* http://www.mozilla.org/MPL/MPL-1.1.html |
* |
* == END LICENSE == |
* |
* Form dialog window. |
--> |
<html xmlns="http://www.w3.org/1999/xhtml"> |
<head> |
<title></title> |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> |
<meta content="noindex, nofollow" name="robots" /> |
<script src="common/fck_dialog_common.js" type="text/javascript"></script> |
<script type="text/javascript"> |
var dialog = window.parent ; |
var oEditor = dialog.InnerDialogLoaded() ; |
var FCK = oEditor.FCK ; |
var FCKLang = oEditor.FCKLang ; |
var FCKBrowserInfo = oEditor.FCKBrowserInfo ; |
var FCKStyles = oEditor.FCKStyles ; |
var FCKElementPath = oEditor.FCKElementPath ; |
var FCKDomRange = oEditor.FCKDomRange ; |
var FCKDomTools = oEditor.FCKDomTools ; |
var FCKDomRangeIterator = oEditor.FCKDomRangeIterator ; |
var FCKListsLib = oEditor.FCKListsLib ; |
var AlwaysCreate = dialog.Args().CustomValue ; |
String.prototype.IEquals = function() |
{ |
var thisUpper = this.toUpperCase() ; |
var aArgs = arguments ; |
// The arguments could also be a single array. |
if ( aArgs.length == 1 && aArgs[0].pop ) |
aArgs = aArgs[0] ; |
for ( var i = 0 ; i < aArgs.length ; i++ ) |
{ |
if ( thisUpper == aArgs[i].toUpperCase() ) |
return true ; |
} |
return false ; |
} |
var CurrentContainers = [] ; |
if ( !AlwaysCreate ) |
{ |
dialog.Selection.EnsureSelection() ; |
CurrentContainers = FCKDomTools.GetSelectedDivContainers() ; |
} |
// Add some tabs |
dialog.AddTab( 'General', FCKLang.DlgDivGeneralTab ); |
dialog.AddTab( 'Advanced', FCKLang.DlgDivAdvancedTab ) ; |
function AddStyleOption( styleName ) |
{ |
var el = GetE( 'selStyle' ) ; |
var opt = document.createElement( 'option' ) ; |
opt.text = opt.value = styleName ; |
if ( FCKBrowserInfo.IsIE ) |
el.add( opt ) ; |
else |
el.add( opt, null ) ; |
} |
function OnDialogTabChange( tabCode ) |
{ |
ShowE( 'divGeneral', tabCode == 'General' ) ; |
ShowE( 'divAdvanced', tabCode == 'Advanced' ) ; |
dialog.SetAutoSize( true ) ; |
} |
function GetNearestAncestorDirection( node ) |
{ |
var dir = 'ltr' ; // HTML default. |
while ( ( node = node.parentNode ) ) |
{ |
if ( node.dir ) |
dir = node.dir ; |
} |
return dir ; |
} |
window.onload = function() |
{ |
// First of all, translate the dialog box texts |
oEditor.FCKLanguageManager.TranslatePage(document) ; |
dialog.SetOkButton( true ) ; |
dialog.SetAutoSize( true ) ; |
// Popuplate the style menu |
var styles = FCKStyles.GetStyles() ; |
var selectableStyles = {} ; |
for ( var i in styles ) |
{ |
if ( ! /^_FCK_/.test( i ) && styles[i].Element == 'div' ) |
selectableStyles[i] = styles[i] ; |
} |
if ( CurrentContainers.length <= 1 ) |
{ |
var target = CurrentContainers[0] ; |
var match = null ; |
for ( var i in selectableStyles ) |
{ |
if ( target && styles[i].CheckElementRemovable( target, true ) ) |
match = i ; |
} |
if ( !match ) |
AddStyleOption( "" ) ; |
for ( var i in selectableStyles ) |
AddStyleOption( i ) ; |
if ( match ) |
GetE( 'selStyle' ).value = match ; |
// Set the value for other inputs |
if ( target ) |
{ |
GetE( 'txtClass' ).value = target.className ; |
GetE( 'txtId' ).value = target.id ; |
GetE( 'txtLang' ).value = target.lang ; |
GetE( 'txtInlineStyle').value = target.style.cssText ; |
GetE( 'txtTitle' ).value = target.title ; |
GetE( 'selLangDir').value = target.dir || GetNearestAncestorDirection( target ) ; |
} |
} |
else |
{ |
GetE( 'txtId' ).disabled = true ; |
AddStyleOption( "" ) ; |
for ( var i in selectableStyles ) |
AddStyleOption( i ) ; |
} |
} |
function CreateDiv() |
{ |
var newBlocks = [] ; |
var range = new FCKDomRange( FCK.EditorWindow ) ; |
range.MoveToSelection() ; |
var bookmark = range.CreateBookmark() ; |
// Kludge for #1592: if the bookmark nodes are in the beginning of |
// $tagName, then move them to the nearest block element in the |
// $tagName. |
if ( FCKBrowserInfo.IsIE ) |
{ |
var bStart = range.GetBookmarkNode( bookmark, true ) ; |
var bEnd = range.GetBookmarkNode( bookmark, false ) ; |
var cursor ; |
if ( bStart |
&& bStart.parentNode.nodeName.IEquals( 'div' ) |
&& !bStart.previousSibling ) |
{ |
cursor = bStart ; |
while ( ( cursor = cursor.nextSibling ) ) |
{ |
if ( FCKListsLib.BlockElements[ cursor.nodeName.toLowerCase() ] ) |
FCKDomTools.MoveNode( bStart, cursor, true ) ; |
} |
} |
if ( bEnd |
&& bEnd.parentNode.nodeName.IEquals( 'div' ) |
&& !bEnd.previousSibling ) |
{ |
cursor = bEnd ; |
while ( ( cursor = cursor.nextSibling ) ) |
{ |
if ( FCKListsLib.BlockElements[ cursor.nodeName.toLowerCase() ] ) |
{ |
if ( cursor.firstChild == bStart ) |
FCKDomTools.InsertAfterNode( bStart, bEnd ) ; |
else |
FCKDomTools.MoveNode( bEnd, cursor, true ) ; |
} |
} |
} |
} |
var iterator = new FCKDomRangeIterator( range ) ; |
var block ; |
iterator.EnforceRealBlocks = true ; |
var paragraphs = [] ; |
var groups = [] ; |
var lastBlockLimit = null ; |
while ( ( block = iterator.GetNextParagraph() ) ) |
{ |
var elementPath = new FCKElementPath( block ) ; |
if ( elementPath.BlockLimit != lastBlockLimit ) |
{ |
groups.push( [] ) ; |
lastBlockLimit = elementPath.BlockLimit ; |
} |
groups[groups.length - 1].push( block ) ; |
} |
for ( var i = 0 ; i < groups.length ; i++ ) |
{ |
var divNode = FCK.EditorDocument.createElement( 'div' ) ; |
groups[i][0].parentNode.insertBefore( divNode, groups[i][0] ) ; |
for ( var j = 0 ; j < groups[i].length ; j++ ) |
FCKDomTools.MoveNode( groups[i][j], divNode ) ; |
newBlocks.push( divNode ) ; |
} |
range.MoveToBookmark( bookmark ) ; |
range.Select() ; |
FCK.Focus() ; |
FCK.Events.FireEvent( 'OnSelectionChange' ) ; |
return newBlocks ; |
} |
function Ok() |
{ |
oEditor.FCKUndo.SaveUndoStep() ; |
if ( CurrentContainers.length < 1 ) |
CurrentContainers = CreateDiv(); |
var setValue = function( attrName, inputName ) |
{ |
var val = GetE( inputName ).value ; |
for ( var i = 0 ; i < CurrentContainers.length ; i++ ) |
{ |
if ( val == '' ) |
CurrentContainers[i].removeAttribute( attrName ) ; |
else |
CurrentContainers[i].setAttribute( attrName, val ) ; |
} |
} |
// Apply modifications to the DIV container according to dialog inputs. |
if ( CurrentContainers.length == 1 ) |
{ |
setValue( 'class', 'txtClass' ) ; |
setValue( 'id', 'txtId' ) ; |
} |
setValue( 'lang', 'txtLang' ) ; |
if ( FCKBrowserInfo.IsIE ) |
{ |
for ( var i = 0 ; i < CurrentContainers.length ; i++ ) |
CurrentContainers[i].style.cssText = GetE( 'txtInlineStyle' ).value ; |
} |
else |
setValue( 'style', 'txtInlineStyle' ) ; |
setValue( 'title', 'txtTitle' ) ; |
for ( var i = 0 ; i < CurrentContainers.length ; i++ ) |
{ |
var dir = GetE( 'selLangDir' ).value ; |
var styleName = GetE( 'selStyle' ).value ; |
if ( GetNearestAncestorDirection( CurrentContainers[i] ) != dir ) |
CurrentContainers[i].dir = dir ; |
else |
CurrentContainers[i].removeAttribute( 'dir' ) ; |
if ( styleName ) |
FCKStyles.GetStyle( styleName ).ApplyToObject( CurrentContainers[i] ) ; |
} |
return true ; |
} |
</script> |
</head> |
<body style="overflow: hidden"> |
<div id="divGeneral"> |
<table cellspacing="0" cellpadding="0" width="100%" border="0"> |
<colgroup span="2"> |
<col width="49%" /> |
<col width="2%" /> |
<col width="49%" /> |
</colgroup> |
<tr> |
<td> |
<span fcklang="DlgDivStyle">Style</span><br /> |
<select id="selStyle" style="width: 100%;"> |
</select> |
</td> |
<td> </td> |
<td> |
<span fcklang="DlgGenClass">Stylesheet Classes</span><br /> |
<input id="txtClass" style="width: 100%" type="text" /> |
</td> |
</tr> |
</table> |
</div> |
<div id="divAdvanced" style="display: none"> |
<table cellspacing="0" cellpadding="0" width="100%" border="0"> |
<colgroup span="2"> |
<col width="49%" /> |
<col width="2%" /> |
<col width="49%" /> |
</colgroup> |
<tr> |
<td> |
<span fcklang="DlgGenId">Id</span><br /> |
<input style="width: 100%" type="text" id="txtId" /> |
</td> |
<td> </td> |
<td> |
<span fcklang="DlgGenLangCode">Language Code</span><br /> |
<input style="width: 100%" type="text" id="txtLang" /> |
</td> |
</tr> |
<tr> |
<td colspan="3"> </td> |
</tr> |
<tr> |
<td colspan="3"> |
<span fcklang="DlgDivInlineStyle">Inline Style</span><br /> |
<input style="width: 100%" type="text" id="txtInlineStyle" /> |
</td> |
</tr> |
<tr> |
<td colspan="3"> </td> |
</tr> |
<tr> |
<td colspan="3"> |
<span fcklang="DlgGenTitle">Advisory Title</span><br /> |
<input style="width: 100%" type="text" id="txtTitle" /> |
</td> |
</tr> |
<tr> |
<td> </td> |
</tr> |
<tr> |
<td> |
<span fcklang="DlgGenLangDir">Language Direction</span><br /> |
<select id="selLangDir"> |
<option fcklang="DlgGenLangDirLtr" value="ltr">Left to Right (LTR) |
<option fcklang="DlgGenLangDirRtl" value="rtl">Right to Left (RTL) |
</select> |
</td> |
</tr> |
</table> |
</div> |
</body> |
</html> |
/trunk/api/fckeditor/editor/dialog/fck_spellerpages/spellerpages/controlWindow.js |
---|
New file |
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; |
} |
} |
} |
/trunk/api/fckeditor/editor/dialog/fck_spellerpages/spellerpages/controls.html |
---|
New file |
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> |
/trunk/api/fckeditor/editor/dialog/fck_spellerpages/spellerpages/spellchecker.html |
---|
New file |
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> |
/trunk/api/fckeditor/editor/dialog/fck_spellerpages/spellerpages/blank.html |
---|
--- fck_spellerpages/spellerpages/server-scripts/spellchecker.php (revision 0) |
+++ fck_spellerpages/spellerpages/server-scripts/spellchecker.php (revision 1925) |
@@ -0,0 +1,199 @@ |
+<?php |
+header('Content-type: text/html; charset=utf-8'); |
+ |
+// The following variables values must reflect your installation needs. |
+ |
+$aspell_prog = '"C:\Program Files\Aspell\bin\aspell.exe"'; // by FredCK (for Windows) |
+//$aspell_prog = 'aspell'; // by FredCK (for Linux) |
+ |
+$lang = 'en_US'; |
+$aspell_opts = "-a --lang=$lang --encoding=utf-8 -H --rem-sgml-check=alt"; // by FredCK |
+ |
+$tempfiledir = "./"; |
+ |
+$spellercss = '../spellerStyle.css'; // by FredCK |
+$word_win_src = '../wordWindow.js'; // by FredCK |
+ |
+$textinputs = $_POST['textinputs']; # array |
+$input_separator = "A"; |
+ |
+# set the JavaScript variable to the submitted text. |
+# textinputs is an array, each element corresponding to the (url-encoded) |
+# value of the text control submitted for spell-checking |
+function print_textinputs_var() { |
+ global $textinputs; |
+ foreach( $textinputs as $key=>$val ) { |
+ # $val = str_replace( "'", "%27", $val ); |
+ echo "textinputs[$key] = decodeURIComponent(\"" . $val . "\");\n"; |
+ } |
+} |
+ |
+# make declarations for the text input index |
+function print_textindex_decl( $text_input_idx ) { |
+ echo "words[$text_input_idx] = [];\n"; |
+ echo "suggs[$text_input_idx] = [];\n"; |
+} |
+ |
+# set an element of the JavaScript 'words' array to a misspelled word |
+function print_words_elem( $word, $index, $text_input_idx ) { |
+ echo "words[$text_input_idx][$index] = '" . escape_quote( $word ) . "';\n"; |
+} |
+ |
+ |
+# set an element of the JavaScript 'suggs' array to a list of suggestions |
+function print_suggs_elem( $suggs, $index, $text_input_idx ) { |
+ echo "suggs[$text_input_idx][$index] = ["; |
+ foreach( $suggs as $key=>$val ) { |
+ if( $val ) { |
+ echo "'" . escape_quote( $val ) . "'"; |
+ if ( $key+1 < count( $suggs )) { |
+ echo ", "; |
+ } |
+ } |
+ } |
+ echo "];\n"; |
+} |
+ |
+# escape single quote |
+function escape_quote( $str ) { |
+ return preg_replace ( "/'/", "\\'", $str ); |
+} |
+ |
+ |
+# handle a server-side error. |
+function error_handler( $err ) { |
+ echo "error = '" . preg_replace( "/['\\\\]/", "\\\\$0", $err ) . "';\n"; |
+} |
+ |
+## get the list of misspelled words. Put the results in the javascript words array |
+## for each misspelled word, get suggestions and put in the javascript suggs array |
+function print_checker_results() { |
+ |
+ global $aspell_prog; |
+ global $aspell_opts; |
+ global $tempfiledir; |
+ global $textinputs; |
+ global $input_separator; |
+ $aspell_err = ""; |
+ # create temp file |
+ $tempfile = tempnam( $tempfiledir, 'aspell_data_' ); |
+ |
+ # open temp file, add the submitted text. |
+ if( $fh = fopen( $tempfile, 'w' )) { |
+ for( $i = 0; $i < count( $textinputs ); $i++ ) { |
+ $text = urldecode( $textinputs[$i] ); |
+ |
+ // Strip all tags for the text. (by FredCK - #339 / #681) |
+ $text = preg_replace( "/<[^>]+>/", " ", $text ) ; |
+ |
+ $lines = explode( "\n", $text ); |
+ fwrite ( $fh, "%\n" ); # exit terse mode |
+ fwrite ( $fh, "^$input_separator\n" ); |
+ fwrite ( $fh, "!\n" ); # enter terse mode |
+ foreach( $lines as $key=>$value ) { |
+ # use carat on each line to escape possible aspell commands |
+ fwrite( $fh, "^$value\n" ); |
+ } |
+ } |
+ fclose( $fh ); |
+ |
+ # exec aspell command - redirect STDERR to STDOUT |
+ $cmd = "$aspell_prog $aspell_opts < $tempfile 2>&1"; |
+ if( $aspellret = shell_exec( $cmd )) { |
+ $linesout = explode( "\n", $aspellret ); |
+ $index = 0; |
+ $text_input_index = -1; |
+ # parse each line of aspell return |
+ foreach( $linesout as $key=>$val ) { |
+ $chardesc = substr( $val, 0, 1 ); |
+ # if '&', then not in dictionary but has suggestions |
+ # if '#', then not in dictionary and no suggestions |
+ # if '*', then it is a delimiter between text inputs |
+ # if '@' then version info |
+ if( $chardesc == '&' || $chardesc == '#' ) { |
+ $line = explode( " ", $val, 5 ); |
+ print_words_elem( $line[1], $index, $text_input_index ); |
+ if( isset( $line[4] )) { |
+ $suggs = explode( ", ", $line[4] ); |
+ } else { |
+ $suggs = array(); |
+ } |
+ print_suggs_elem( $suggs, $index, $text_input_index ); |
+ $index++; |
+ } elseif( $chardesc == '*' ) { |
+ $text_input_index++; |
+ print_textindex_decl( $text_input_index ); |
+ $index = 0; |
+ } elseif( $chardesc != '@' && $chardesc != "" ) { |
+ # assume this is error output |
+ $aspell_err .= $val; |
+ } |
+ } |
+ if( $aspell_err ) { |
+ $aspell_err = "Error executing `$cmd`\\n$aspell_err"; |
+ error_handler( $aspell_err ); |
+ } |
+ } else { |
+ error_handler( "System error: Aspell program execution failed (`$cmd`)" ); |
+ } |
+ } else { |
+ error_handler( "System error: Could not open file '$tempfile' for writing" ); |
+ } |
+ |
+ # close temp file, delete file |
+ unlink( $tempfile ); |
+} |
+ |
+ |
+?> |
+<html> |
+<head> |
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> |
+<link rel="stylesheet" type="text/css" href="<?php echo $spellercss ?>" /> |
+<script language="javascript" src="<?php echo $word_win_src ?>"></script> |
+<script language="javascript"> |
+var suggs = new Array(); |
+var words = new Array(); |
+var textinputs = new Array(); |
+var error; |
+<?php |
+ |
+print_textinputs_var(); |
+ |
+print_checker_results(); |
+ |
+?> |
+ |
+var wordWindowObj = new wordWindow(); |
+wordWindowObj.originalSpellings = words; |
+wordWindowObj.suggestions = suggs; |
+wordWindowObj.textInputs = textinputs; |
+ |
+function init_spell() { |
+ // check if any error occured during server-side processing |
+ if( error ) { |
+ alert( error ); |
+ } else { |
+ // call the init_spell() function in the parent frameset |
+ if (parent.frames.length) { |
+ parent.init_spell( wordWindowObj ); |
+ } else { |
+ alert('This page was loaded outside of a frameset. It might not display properly'); |
+ } |
+ } |
+} |
+ |
+ |
+ |
+</script> |
+ |
+</head> |
+<!-- <body onLoad="init_spell();"> by FredCK --> |
+<body onLoad="init_spell();" bgcolor="#ffffff"> |
+ |
+<script type="text/javascript"> |
+wordWindowObj.writeBody(); |
+</script> |
+ |
+</body> |
+</html> |
/trunk/api/fckeditor/editor/dialog/fck_spellerpages/spellerpages/spellerStyle.css |
---|
New file |
0,0 → 1,49 |
.blend { |
font-family: courier new; |
font-size: 10pt; |
border: 0; |
margin-bottom:-1; |
} |
.normalLabel { |
font-size:8pt; |
} |
.normalText { |
font-family:arial, helvetica, sans-serif; |
font-size:10pt; |
color:000000; |
background-color:FFFFFF; |
} |
.plainText { |
font-family: courier new, courier, monospace; |
font-size: 10pt; |
color:000000; |
background-color:FFFFFF; |
} |
.controlWindowBody { |
font-family:arial, helvetica, sans-serif; |
font-size:8pt; |
padding: 7px ; /* by FredCK */ |
margin: 0px ; /* by FredCK */ |
/* color:000000; by FredCK */ |
/* background-color:DADADA; by FredCK */ |
} |
.readonlyInput { |
background-color:DADADA; |
color:000000; |
font-size:8pt; |
width:392px; |
} |
.textDefault { |
font-size:8pt; |
width: 200px; |
} |
.buttonDefault { |
width:90px; |
height:22px; |
font-size:8pt; |
} |
.suggSlct { |
width:200px; |
margin-top:2; |
font-size:8pt; |
} |
/trunk/api/fckeditor/editor/dialog/fck_spellerpages/spellerpages/wordWindow.js |
---|
New file |
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; |
} |
} |
/trunk/api/fckeditor/editor/dialog/fck_spellerpages/spellerpages/spellChecker.js |
---|
New file |
0,0 → 1,461 |
//////////////////////////////////////////////////// |
// spellChecker.js |
// |
// spellChecker object |
// |
// This file is sourced on web pages that have a textarea object to evaluate |
// for spelling. It includes the implementation for the spellCheckObject. |
// |
//////////////////////////////////////////////////// |
// constructor |
function spellChecker( textObject ) { |
// public properties - configurable |
// this.popUpUrl = '/speller/spellchecker.html'; // by FredCK |
this.popUpUrl = 'fck_spellerpages/spellerpages/spellchecker.html'; // by FredCK |
this.popUpName = 'spellchecker'; |
// this.popUpProps = "menu=no,width=440,height=350,top=70,left=120,resizable=yes,status=yes"; // by FredCK |
this.popUpProps = null ; // by FredCK |
// this.spellCheckScript = '/speller/server-scripts/spellchecker.php'; // by FredCK |
//this.spellCheckScript = '/cgi-bin/spellchecker.pl'; |
// values used to keep track of what happened to a word |
this.replWordFlag = "R"; // single replace |
this.ignrWordFlag = "I"; // single ignore |
this.replAllFlag = "RA"; // replace all occurances |
this.ignrAllFlag = "IA"; // ignore all occurances |
this.fromReplAll = "~RA"; // an occurance of a "replace all" word |
this.fromIgnrAll = "~IA"; // an occurance of a "ignore all" word |
// properties set at run time |
this.wordFlags = new Array(); |
this.currentTextIndex = 0; |
this.currentWordIndex = 0; |
this.spellCheckerWin = null; |
this.controlWin = null; |
this.wordWin = null; |
this.textArea = textObject; // deprecated |
this.textInputs = arguments; |
// private methods |
this._spellcheck = _spellcheck; |
this._getSuggestions = _getSuggestions; |
this._setAsIgnored = _setAsIgnored; |
this._getTotalReplaced = _getTotalReplaced; |
this._setWordText = _setWordText; |
this._getFormInputs = _getFormInputs; |
// public methods |
this.openChecker = openChecker; |
this.startCheck = startCheck; |
this.checkTextBoxes = checkTextBoxes; |
this.checkTextAreas = checkTextAreas; |
this.spellCheckAll = spellCheckAll; |
this.ignoreWord = ignoreWord; |
this.ignoreAll = ignoreAll; |
this.replaceWord = replaceWord; |
this.replaceAll = replaceAll; |
this.terminateSpell = terminateSpell; |
this.undo = undo; |
// set the current window's "speller" property to the instance of this class. |
// this object can now be referenced by child windows/frames. |
window.speller = this; |
} |
// call this method to check all text boxes (and only text boxes) in the HTML document |
function checkTextBoxes() { |
this.textInputs = this._getFormInputs( "^text$" ); |
this.openChecker(); |
} |
// call this method to check all textareas (and only textareas ) in the HTML document |
function checkTextAreas() { |
this.textInputs = this._getFormInputs( "^textarea$" ); |
this.openChecker(); |
} |
// call this method to check all text boxes and textareas in the HTML document |
function spellCheckAll() { |
this.textInputs = this._getFormInputs( "^text(area)?$" ); |
this.openChecker(); |
} |
// call this method to check text boxe(s) and/or textarea(s) that were passed in to the |
// object's constructor or to the textInputs property |
function openChecker() { |
this.spellCheckerWin = window.open( this.popUpUrl, this.popUpName, this.popUpProps ); |
if( !this.spellCheckerWin.opener ) { |
this.spellCheckerWin.opener = window; |
} |
} |
function startCheck( wordWindowObj, controlWindowObj ) { |
// set properties from args |
this.wordWin = wordWindowObj; |
this.controlWin = controlWindowObj; |
// reset properties |
this.wordWin.resetForm(); |
this.controlWin.resetForm(); |
this.currentTextIndex = 0; |
this.currentWordIndex = 0; |
// initialize the flags to an array - one element for each text input |
this.wordFlags = new Array( this.wordWin.textInputs.length ); |
// each element will be an array that keeps track of each word in the text |
for( var i=0; i<this.wordFlags.length; i++ ) { |
this.wordFlags[i] = []; |
} |
// start |
this._spellcheck(); |
return true; |
} |
function ignoreWord() { |
var wi = this.currentWordIndex; |
var ti = this.currentTextIndex; |
if( !this.wordWin ) { |
alert( 'Error: Word frame not available.' ); |
return false; |
} |
if( !this.wordWin.getTextVal( ti, wi )) { |
alert( 'Error: "Not in dictionary" text is missing.' ); |
return false; |
} |
// set as ignored |
if( this._setAsIgnored( ti, wi, this.ignrWordFlag )) { |
this.currentWordIndex++; |
this._spellcheck(); |
} |
return true; |
} |
function ignoreAll() { |
var wi = this.currentWordIndex; |
var ti = this.currentTextIndex; |
if( !this.wordWin ) { |
alert( 'Error: Word frame not available.' ); |
return false; |
} |
// get the word that is currently being evaluated. |
var s_word_to_repl = this.wordWin.getTextVal( ti, wi ); |
if( !s_word_to_repl ) { |
alert( 'Error: "Not in dictionary" text is missing' ); |
return false; |
} |
// set this word as an "ignore all" word. |
this._setAsIgnored( ti, wi, this.ignrAllFlag ); |
// loop through all the words after this word |
for( var i = ti; i < this.wordWin.textInputs.length; i++ ) { |
for( var j = 0; j < this.wordWin.totalWords( i ); j++ ) { |
if(( i == ti && j > wi ) || i > ti ) { |
// future word: set as "from ignore all" if |
// 1) do not already have a flag and |
// 2) have the same value as current word |
if(( this.wordWin.getTextVal( i, j ) == s_word_to_repl ) |
&& ( !this.wordFlags[i][j] )) { |
this._setAsIgnored( i, j, this.fromIgnrAll ); |
} |
} |
} |
} |
// finally, move on |
this.currentWordIndex++; |
this._spellcheck(); |
return true; |
} |
function replaceWord() { |
var wi = this.currentWordIndex; |
var ti = this.currentTextIndex; |
if( !this.wordWin ) { |
alert( 'Error: Word frame not available.' ); |
return false; |
} |
if( !this.wordWin.getTextVal( ti, wi )) { |
alert( 'Error: "Not in dictionary" text is missing' ); |
return false; |
} |
if( !this.controlWin.replacementText ) { |
return false ; |
} |
var txt = this.controlWin.replacementText; |
if( txt.value ) { |
var newspell = new String( txt.value ); |
if( this._setWordText( ti, wi, newspell, this.replWordFlag )) { |
this.currentWordIndex++; |
this._spellcheck(); |
} |
} |
return true; |
} |
function replaceAll() { |
var ti = this.currentTextIndex; |
var wi = this.currentWordIndex; |
if( !this.wordWin ) { |
alert( 'Error: Word frame not available.' ); |
return false; |
} |
var s_word_to_repl = this.wordWin.getTextVal( ti, wi ); |
if( !s_word_to_repl ) { |
alert( 'Error: "Not in dictionary" text is missing' ); |
return false; |
} |
var txt = this.controlWin.replacementText; |
if( !txt.value ) return false; |
var newspell = new String( txt.value ); |
// set this word as a "replace all" word. |
this._setWordText( ti, wi, newspell, this.replAllFlag ); |
// loop through all the words after this word |
for( var i = ti; i < this.wordWin.textInputs.length; i++ ) { |
for( var j = 0; j < this.wordWin.totalWords( i ); j++ ) { |
if(( i == ti && j > wi ) || i > ti ) { |
// future word: set word text to s_word_to_repl if |
// 1) do not already have a flag and |
// 2) have the same value as s_word_to_repl |
if(( this.wordWin.getTextVal( i, j ) == s_word_to_repl ) |
&& ( !this.wordFlags[i][j] )) { |
this._setWordText( i, j, newspell, this.fromReplAll ); |
} |
} |
} |
} |
// finally, move on |
this.currentWordIndex++; |
this._spellcheck(); |
return true; |
} |
function terminateSpell() { |
// called when we have reached the end of the spell checking. |
var msg = ""; // by FredCK |
var numrepl = this._getTotalReplaced(); |
if( numrepl == 0 ) { |
// see if there were no misspellings to begin with |
if( !this.wordWin ) { |
msg = ""; |
} else { |
if( this.wordWin.totalMisspellings() ) { |
// msg += "No words changed."; // by FredCK |
msg += FCKLang.DlgSpellNoChanges ; // by FredCK |
} else { |
// msg += "No misspellings found."; // by FredCK |
msg += FCKLang.DlgSpellNoMispell ; // by FredCK |
} |
} |
} else if( numrepl == 1 ) { |
// msg += "One word changed."; // by FredCK |
msg += FCKLang.DlgSpellOneChange ; // by FredCK |
} else { |
// msg += numrepl + " words changed."; // by FredCK |
msg += FCKLang.DlgSpellManyChanges.replace( /%1/g, numrepl ) ; |
} |
if( msg ) { |
// msg += "\n"; // by FredCK |
alert( msg ); |
} |
if( numrepl > 0 ) { |
// update the text field(s) on the opener window |
for( var i = 0; i < this.textInputs.length; i++ ) { |
// this.textArea.value = this.wordWin.text; |
if( this.wordWin ) { |
if( this.wordWin.textInputs[i] ) { |
this.textInputs[i].value = this.wordWin.textInputs[i]; |
} |
} |
} |
} |
// return back to the calling window |
// this.spellCheckerWin.close(); // by FredCK |
if ( typeof( this.OnFinished ) == 'function' ) // by FredCK |
this.OnFinished(numrepl) ; // by FredCK |
return true; |
} |
function undo() { |
// skip if this is the first word! |
var ti = this.currentTextIndex; |
var wi = this.currentWordIndex; |
if( this.wordWin.totalPreviousWords( ti, wi ) > 0 ) { |
this.wordWin.removeFocus( ti, wi ); |
// go back to the last word index that was acted upon |
do { |
// if the current word index is zero then reset the seed |
if( this.currentWordIndex == 0 && this.currentTextIndex > 0 ) { |
this.currentTextIndex--; |
this.currentWordIndex = this.wordWin.totalWords( this.currentTextIndex )-1; |
if( this.currentWordIndex < 0 ) this.currentWordIndex = 0; |
} else { |
if( this.currentWordIndex > 0 ) { |
this.currentWordIndex--; |
} |
} |
} while ( |
this.wordWin.totalWords( this.currentTextIndex ) == 0 |
|| this.wordFlags[this.currentTextIndex][this.currentWordIndex] == this.fromIgnrAll |
|| this.wordFlags[this.currentTextIndex][this.currentWordIndex] == this.fromReplAll |
); |
var text_idx = this.currentTextIndex; |
var idx = this.currentWordIndex; |
var preReplSpell = this.wordWin.originalSpellings[text_idx][idx]; |
// if we got back to the first word then set the Undo button back to disabled |
if( this.wordWin.totalPreviousWords( text_idx, idx ) == 0 ) { |
this.controlWin.disableUndo(); |
} |
var i, j, origSpell ; |
// examine what happened to this current word. |
switch( this.wordFlags[text_idx][idx] ) { |
// replace all: go through this and all the future occurances of the word |
// and revert them all to the original spelling and clear their flags |
case this.replAllFlag : |
for( i = text_idx; i < this.wordWin.textInputs.length; i++ ) { |
for( j = 0; j < this.wordWin.totalWords( i ); j++ ) { |
if(( i == text_idx && j >= idx ) || i > text_idx ) { |
origSpell = this.wordWin.originalSpellings[i][j]; |
if( origSpell == preReplSpell ) { |
this._setWordText ( i, j, origSpell, undefined ); |
} |
} |
} |
} |
break; |
// ignore all: go through all the future occurances of the word |
// and clear their flags |
case this.ignrAllFlag : |
for( i = text_idx; i < this.wordWin.textInputs.length; i++ ) { |
for( j = 0; j < this.wordWin.totalWords( i ); j++ ) { |
if(( i == text_idx && j >= idx ) || i > text_idx ) { |
origSpell = this.wordWin.originalSpellings[i][j]; |
if( origSpell == preReplSpell ) { |
this.wordFlags[i][j] = undefined; |
} |
} |
} |
} |
break; |
// replace: revert the word to its original spelling |
case this.replWordFlag : |
this._setWordText ( text_idx, idx, preReplSpell, undefined ); |
break; |
} |
// For all four cases, clear the wordFlag of this word. re-start the process |
this.wordFlags[text_idx][idx] = undefined; |
this._spellcheck(); |
} |
} |
function _spellcheck() { |
var ww = this.wordWin; |
// check if this is the last word in the current text element |
if( this.currentWordIndex == ww.totalWords( this.currentTextIndex) ) { |
this.currentTextIndex++; |
this.currentWordIndex = 0; |
// keep going if we're not yet past the last text element |
if( this.currentTextIndex < this.wordWin.textInputs.length ) { |
this._spellcheck(); |
return; |
} else { |
this.terminateSpell(); |
return; |
} |
} |
// if this is after the first one make sure the Undo button is enabled |
if( this.currentWordIndex > 0 ) { |
this.controlWin.enableUndo(); |
} |
// skip the current word if it has already been worked on |
if( this.wordFlags[this.currentTextIndex][this.currentWordIndex] ) { |
// increment the global current word index and move on. |
this.currentWordIndex++; |
this._spellcheck(); |
} else { |
var evalText = ww.getTextVal( this.currentTextIndex, this.currentWordIndex ); |
if( evalText ) { |
this.controlWin.evaluatedText.value = evalText; |
ww.setFocus( this.currentTextIndex, this.currentWordIndex ); |
this._getSuggestions( this.currentTextIndex, this.currentWordIndex ); |
} |
} |
} |
function _getSuggestions( text_num, word_num ) { |
this.controlWin.clearSuggestions(); |
// add suggestion in list for each suggested word. |
// get the array of suggested words out of the |
// three-dimensional array containing all suggestions. |
var a_suggests = this.wordWin.suggestions[text_num][word_num]; |
if( a_suggests ) { |
// got an array of suggestions. |
for( var ii = 0; ii < a_suggests.length; ii++ ) { |
this.controlWin.addSuggestion( a_suggests[ii] ); |
} |
} |
this.controlWin.selectDefaultSuggestion(); |
} |
function _setAsIgnored( text_num, word_num, flag ) { |
// set the UI |
this.wordWin.removeFocus( text_num, word_num ); |
// do the bookkeeping |
this.wordFlags[text_num][word_num] = flag; |
return true; |
} |
function _getTotalReplaced() { |
var i_replaced = 0; |
for( var i = 0; i < this.wordFlags.length; i++ ) { |
for( var j = 0; j < this.wordFlags[i].length; j++ ) { |
if(( this.wordFlags[i][j] == this.replWordFlag ) |
|| ( this.wordFlags[i][j] == this.replAllFlag ) |
|| ( this.wordFlags[i][j] == this.fromReplAll )) { |
i_replaced++; |
} |
} |
} |
return i_replaced; |
} |
function _setWordText( text_num, word_num, newText, flag ) { |
// set the UI and form inputs |
this.wordWin.setText( text_num, word_num, newText ); |
// keep track of what happened to this word: |
this.wordFlags[text_num][word_num] = flag; |
return true; |
} |
function _getFormInputs( inputPattern ) { |
var inputs = new Array(); |
for( var i = 0; i < document.forms.length; i++ ) { |
for( var j = 0; j < document.forms[i].elements.length; j++ ) { |
if( document.forms[i].elements[j].type.match( inputPattern )) { |
inputs[inputs.length] = document.forms[i].elements[j]; |
} |
} |
} |
return inputs; |
} |
/trunk/api/fckeditor/editor/dialog/fck_docprops/fck_document_preview.html |
---|
New file |
0,0 → 1,113 |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> |
<!-- |
* FCKeditor - The text editor for Internet - http://www.fckeditor.net |
* Copyright (C) 2003-2008 Frederico Caldeira Knabben |
* |
* == BEGIN LICENSE == |
* |
* Licensed under the terms of any of the following licenses at your |
* choice: |
* |
* - GNU General Public License Version 2 or later (the "GPL") |
* http://www.gnu.org/licenses/gpl.html |
* |
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL") |
* http://www.gnu.org/licenses/lgpl.html |
* |
* - Mozilla Public License Version 1.1 or later (the "MPL") |
* http://www.mozilla.org/MPL/MPL-1.1.html |
* |
* == END LICENSE == |
* |
* Preview shown in the "Document Properties" dialog window. |
--> |
<html> |
<head> |
<title>Document Properties - Preview</title> |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> |
<meta name="robots" content="noindex, nofollow"> |
<script language="javascript"> |
var eBase = parent.FCK.EditorDocument.getElementsByTagName( 'BASE' ) ; |
if ( eBase.length > 0 && eBase[0].href.length > 0 ) |
{ |
document.write( '<base href="' + eBase[0].href + '">' ) ; |
} |
window.onload = function() |
{ |
if ( typeof( parent.OnPreviewLoad ) == 'function' ) |
parent.OnPreviewLoad( window, document.body ) ; |
} |
function SetBaseHRef( baseHref ) |
{ |
var eBase = document.createElement( 'BASE' ) ; |
eBase.href = baseHref ; |
var eHead = document.getElementsByTagName( 'HEAD' )[0] ; |
eHead.appendChild( eBase ) ; |
} |
function SetLinkColor( color ) |
{ |
if ( color && color.length > 0 ) |
document.getElementById('eLink').style.color = color ; |
else |
document.getElementById('eLink').style.color = window.document.linkColor ; |
} |
function SetVisitedColor( color ) |
{ |
if ( color && color.length > 0 ) |
document.getElementById('eVisited').style.color = color ; |
else |
document.getElementById('eVisited').style.color = window.document.vlinkColor ; |
} |
function SetActiveColor( color ) |
{ |
if ( color && color.length > 0 ) |
document.getElementById('eActive').style.color = color ; |
else |
document.getElementById('eActive').style.color = window.document.alinkColor ; |
} |
</script> |
</head> |
<body> |
<table width="100%" height="100%" cellpadding="0" cellspacing="0" border="0"> |
<tr> |
<td align="center" valign="middle"> |
Normal Text |
</td> |
<td id="eLink" align="center" valign="middle"> |
<u>Link Text</u> |
</td> |
</tr> |
<tr> |
<td id="eVisited" valign="middle" align="center"> |
<u>Visited Link</u> |
</td> |
<td id="eActive" valign="middle" align="center"> |
<u>Active Link</u> |
</td> |
</tr> |
</table> |
<br> |
<br> |
<br> |
<br> |
<br> |
<br> |
<br> |
<br> |
<br> |
<br> |
<br> |
<br> |
<br> |
<br> |
<br> |
<br> |
</body> |
</html> |
/trunk/api/fckeditor/editor/dialog/fck_docprops.html |
---|
New file |
0,0 → 1,600 |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> |
<!-- |
* FCKeditor - The text editor for Internet - http://www.fckeditor.net |
* Copyright (C) 2003-2008 Frederico Caldeira Knabben |
* |
* == BEGIN LICENSE == |
* |
* Licensed under the terms of any of the following licenses at your |
* choice: |
* |
* - GNU General Public License Version 2 or later (the "GPL") |
* http://www.gnu.org/licenses/gpl.html |
* |
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL") |
* http://www.gnu.org/licenses/lgpl.html |
* |
* - Mozilla Public License Version 1.1 or later (the "MPL") |
* http://www.mozilla.org/MPL/MPL-1.1.html |
* |
* == END LICENSE == |
* |
* Link dialog window. |
--> |
<html xmlns="http://www.w3.org/1999/xhtml"> |
<head> |
<title></title> |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> |
<meta content="noindex, nofollow" name="robots" /> |
<script src="common/fck_dialog_common.js" type="text/javascript"></script> |
<script type="text/javascript"> |
var oEditor = window.parent.InnerDialogLoaded() ; |
var FCK = oEditor.FCK ; |
var FCKLang = oEditor.FCKLang ; |
var FCKConfig = oEditor.FCKConfig ; |
//#### Dialog Tabs |
// Set the dialog tabs. |
window.parent.AddTab( 'General' , FCKLang.DlgDocGeneralTab ) ; |
window.parent.AddTab( 'Background' , FCKLang.DlgDocBackTab ) ; |
window.parent.AddTab( 'Colors' , FCKLang.DlgDocColorsTab ) ; |
window.parent.AddTab( 'Meta' , FCKLang.DlgDocMetaTab ) ; |
// Function called when a dialog tag is selected. |
function OnDialogTabChange( tabCode ) |
{ |
ShowE( 'divGeneral' , ( tabCode == 'General' ) ) ; |
ShowE( 'divBackground' , ( tabCode == 'Background' ) ) ; |
ShowE( 'divColors' , ( tabCode == 'Colors' ) ) ; |
ShowE( 'divMeta' , ( tabCode == 'Meta' ) ) ; |
ShowE( 'ePreview' , ( tabCode == 'Background' || tabCode == 'Colors' ) ) ; |
} |
//#### Get Base elements from the document: BEGIN |
// The HTML element of the document. |
var oHTML = FCK.EditorDocument.getElementsByTagName('html')[0] ; |
// The HEAD element of the document. |
var oHead = oHTML.getElementsByTagName('head')[0] ; |
var oBody = FCK.EditorDocument.body ; |
// This object contains all META tags defined in the document. |
var oMetaTags = new Object() ; |
// Get all META tags defined in the document. |
AppendMetaCollection( oMetaTags, oHead.getElementsByTagName('meta') ) ; |
AppendMetaCollection( oMetaTags, oHead.getElementsByTagName('fck:meta') ) ; |
function AppendMetaCollection( targetObject, metaCollection ) |
{ |
// Loop throw all METAs and put it in the HashTable. |
for ( var i = 0 ; i < metaCollection.length ; i++ ) |
{ |
// Try to get the "name" attribute. |
var sName = GetAttribute( metaCollection[i], 'name', GetAttribute( metaCollection[i], '___fcktoreplace:name', '' ) ) ; |
// If no "name", try with the "http-equiv" attribute. |
if ( sName.length == 0 ) |
{ |
if ( oEditor.FCKBrowserInfo.IsIE ) |
{ |
// Get the http-equiv value from the outerHTML. |
var oHttpEquivMatch = metaCollection[i].outerHTML.match( oEditor.FCKRegexLib.MetaHttpEquiv ) ; |
if ( oHttpEquivMatch ) |
sName = oHttpEquivMatch[1] ; |
} |
else |
sName = GetAttribute( metaCollection[i], 'http-equiv', '' ) ; |
} |
if ( sName.length > 0 ) |
targetObject[ sName.toLowerCase() ] = metaCollection[i] ; |
} |
} |
//#### END |
// Set a META tag in the document. |
function SetMetadata( name, content, isHttp ) |
{ |
if ( content.length == 0 ) |
{ |
RemoveMetadata( name ) ; |
return ; |
} |
var oMeta = oMetaTags[ name.toLowerCase() ] ; |
if ( !oMeta ) |
{ |
oMeta = oHead.appendChild( FCK.EditorDocument.createElement('META') ) ; |
if ( isHttp ) |
SetAttribute( oMeta, 'http-equiv', name ) ; |
else |
{ |
// On IE, it is not possible to set the "name" attribute of the META tag. |
// So a temporary attribute is used and it is replaced when getting the |
// editor's HTML/XHTML value. This is sad, I know :( |
if ( oEditor.FCKBrowserInfo.IsIE ) |
SetAttribute( oMeta, '___fcktoreplace:name', name ) ; |
else |
SetAttribute( oMeta, 'name', name ) ; |
} |
oMetaTags[ name.toLowerCase() ] = oMeta ; |
} |
SetAttribute( oMeta, 'content', content ) ; |
// oMeta.content = content ; |
} |
function RemoveMetadata( name ) |
{ |
var oMeta = oMetaTags[ name.toLowerCase() ] ; |
if ( oMeta && oMeta != null ) |
{ |
oMeta.parentNode.removeChild( oMeta ) ; |
oMetaTags[ name.toLowerCase() ] = null ; |
} |
} |
function GetMetadata( name ) |
{ |
var oMeta = oMetaTags[ name.toLowerCase() ] ; |
if ( oMeta && oMeta != null ) |
return oMeta.getAttribute( 'content', 2 ) ; |
else |
return '' ; |
} |
window.onload = function () |
{ |
// Show/Hide the "Browse Server" button. |
GetE('tdBrowse').style.display = oEditor.FCKConfig.ImageBrowser ? "" : "none"; |
// First of all, translate the dialog box texts |
oEditor.FCKLanguageManager.TranslatePage( document ) ; |
FillFields() ; |
UpdatePreview() ; |
// Show the "Ok" button. |
window.parent.SetOkButton( true ) ; |
window.parent.SetAutoSize( true ) ; |
} |
function FillFields() |
{ |
// ### General Info |
GetE('txtPageTitle').value = FCK.EditorDocument.title ; |
GetE('selDirection').value = GetAttribute( oHTML, 'dir', '' ) ; |
GetE('txtLang').value = GetAttribute( oHTML, 'xml:lang', GetAttribute( oHTML, 'lang', '' ) ) ; // "xml:lang" takes precedence to "lang". |
// Character Set Encoding. |
// if ( oEditor.FCKBrowserInfo.IsIE ) |
// var sCharSet = FCK.EditorDocument.charset ; |
// else |
var sCharSet = GetMetadata( 'Content-Type' ) ; |
if ( sCharSet != null && sCharSet.length > 0 ) |
{ |
// if ( !oEditor.FCKBrowserInfo.IsIE ) |
sCharSet = sCharSet.match( /[^=]*$/ ) ; |
GetE('selCharSet').value = sCharSet ; |
if ( GetE('selCharSet').selectedIndex == -1 ) |
{ |
GetE('selCharSet').value = '...' ; |
GetE('txtCustomCharSet').value = sCharSet ; |
CheckOther( GetE('selCharSet'), 'txtCustomCharSet' ) ; |
} |
} |
// Document Type. |
if ( FCK.DocTypeDeclaration && FCK.DocTypeDeclaration.length > 0 ) |
{ |
GetE('selDocType').value = FCK.DocTypeDeclaration ; |
if ( GetE('selDocType').selectedIndex == -1 ) |
{ |
GetE('selDocType').value = '...' ; |
GetE('txtDocType').value = FCK.DocTypeDeclaration ; |
CheckOther( GetE('selDocType'), 'txtDocType' ) ; |
} |
} |
// Document Type. |
GetE('chkIncXHTMLDecl').checked = ( FCK.XmlDeclaration && FCK.XmlDeclaration.length > 0 ) ; |
// ### Background |
GetE('txtBackColor').value = GetAttribute( oBody, 'bgColor' , '' ) ; |
GetE('txtBackImage').value = GetAttribute( oBody, 'background' , '' ) ; |
GetE('chkBackNoScroll').checked = ( GetAttribute( oBody, 'bgProperties', '' ).toLowerCase() == 'fixed' ) ; |
// ### Colors |
GetE('txtColorText').value = GetAttribute( oBody, 'text' , '' ) ; |
GetE('txtColorLink').value = GetAttribute( oBody, 'link' , '' ) ; |
GetE('txtColorVisited').value = GetAttribute( oBody, 'vLink' , '' ) ; |
GetE('txtColorActive').value = GetAttribute( oBody, 'aLink' , '' ) ; |
// ### Margins |
GetE('txtMarginTop').value = GetAttribute( oBody, 'topMargin' , '' ) ; |
GetE('txtMarginLeft').value = GetAttribute( oBody, 'leftMargin' , '' ) ; |
GetE('txtMarginRight').value = GetAttribute( oBody, 'rightMargin' , '' ) ; |
GetE('txtMarginBottom').value = GetAttribute( oBody, 'bottomMargin' , '' ) ; |
// ### Meta Data |
GetE('txtMetaKeywords').value = GetMetadata( 'keywords' ) ; |
GetE('txtMetaDescription').value = GetMetadata( 'description' ) ; |
GetE('txtMetaAuthor').value = GetMetadata( 'author' ) ; |
GetE('txtMetaCopyright').value = GetMetadata( 'copyright' ) ; |
} |
// Called when the "Ok" button is clicked. |
function Ok() |
{ |
// ### General Info |
FCK.EditorDocument.title = GetE('txtPageTitle').value ; |
var oHTML = FCK.EditorDocument.getElementsByTagName('html')[0] ; |
SetAttribute( oHTML, 'dir' , GetE('selDirection').value ) ; |
SetAttribute( oHTML, 'lang' , GetE('txtLang').value ) ; |
SetAttribute( oHTML, 'xml:lang' , GetE('txtLang').value ) ; |
// Character Set Enconding. |
var sCharSet = GetE('selCharSet').value ; |
if ( sCharSet == '...' ) |
sCharSet = GetE('txtCustomCharSet').value ; |
if ( sCharSet.length > 0 ) |
sCharSet = 'text/html; charset=' + sCharSet ; |
// if ( oEditor.FCKBrowserInfo.IsIE ) |
// FCK.EditorDocument.charset = sCharSet ; |
// else |
SetMetadata( 'Content-Type', sCharSet, true ) ; |
// Document Type |
var sDocType = GetE('selDocType').value ; |
if ( sDocType == '...' ) |
sDocType = GetE('txtDocType').value ; |
FCK.DocTypeDeclaration = sDocType ; |
// XHTML Declarations. |
if ( GetE('chkIncXHTMLDecl').checked ) |
{ |
if ( sCharSet.length == 0 ) |
sCharSet = 'utf-8' ; |
FCK.XmlDeclaration = '<' + '?xml version="1.0" encoding="' + sCharSet + '"?>' ; |
SetAttribute( oHTML, 'xmlns', 'http://www.w3.org/1999/xhtml' ) ; |
} |
else |
{ |
FCK.XmlDeclaration = null ; |
oHTML.removeAttribute( 'xmlns', 0 ) ; |
} |
// ### Background |
SetAttribute( oBody, 'bgcolor' , GetE('txtBackColor').value ) ; |
SetAttribute( oBody, 'background' , GetE('txtBackImage').value ) ; |
SetAttribute( oBody, 'bgproperties' , GetE('chkBackNoScroll').checked ? 'fixed' : '' ) ; |
// ### Colors |
SetAttribute( oBody, 'text' , GetE('txtColorText').value ) ; |
SetAttribute( oBody, 'link' , GetE('txtColorLink').value ) ; |
SetAttribute( oBody, 'vlink', GetE('txtColorVisited').value ) ; |
SetAttribute( oBody, 'alink', GetE('txtColorActive').value ) ; |
// ### Margins |
SetAttribute( oBody, 'topmargin' , GetE('txtMarginTop').value ) ; |
SetAttribute( oBody, 'leftmargin' , GetE('txtMarginLeft').value ) ; |
SetAttribute( oBody, 'rightmargin' , GetE('txtMarginRight').value ) ; |
SetAttribute( oBody, 'bottommargin' , GetE('txtMarginBottom').value ) ; |
// ### Meta data |
SetMetadata( 'keywords' , GetE('txtMetaKeywords').value ) ; |
SetMetadata( 'description' , GetE('txtMetaDescription').value ) ; |
SetMetadata( 'author' , GetE('txtMetaAuthor').value ) ; |
SetMetadata( 'copyright' , GetE('txtMetaCopyright').value ) ; |
return true ; |
} |
var bPreviewIsLoaded = false ; |
var oPreviewWindow ; |
var oPreviewBody ; |
// Called by the Preview page when loaded. |
function OnPreviewLoad( previewWindow, previewBody ) |
{ |
oPreviewWindow = previewWindow ; |
oPreviewBody = previewBody ; |
bPreviewIsLoaded = true ; |
UpdatePreview() ; |
} |
function UpdatePreview() |
{ |
if ( !bPreviewIsLoaded ) |
return ; |
// ### Background |
SetAttribute( oPreviewBody, 'bgcolor' , GetE('txtBackColor').value ) ; |
SetAttribute( oPreviewBody, 'background' , GetE('txtBackImage').value ) ; |
SetAttribute( oPreviewBody, 'bgproperties' , GetE('chkBackNoScroll').checked ? 'fixed' : '' ) ; |
// ### Colors |
SetAttribute( oPreviewBody, 'text', GetE('txtColorText').value ) ; |
oPreviewWindow.SetLinkColor( GetE('txtColorLink').value ) ; |
oPreviewWindow.SetVisitedColor( GetE('txtColorVisited').value ) ; |
oPreviewWindow.SetActiveColor( GetE('txtColorActive').value ) ; |
} |
function CheckOther( combo, txtField ) |
{ |
var bNotOther = ( combo.value != '...' ) ; |
GetE(txtField).style.backgroundColor = ( bNotOther ? '#cccccc' : '' ) ; |
GetE(txtField).disabled = bNotOther ; |
} |
function SetColor( inputId, color ) |
{ |
GetE( inputId ).value = color + '' ; |
UpdatePreview() ; |
} |
function SelectBackColor( color ) { SetColor('txtBackColor', color ) ; } |
function SelectColorText( color ) { SetColor('txtColorText', color ) ; } |
function SelectColorLink( color ) { SetColor('txtColorLink', color ) ; } |
function SelectColorVisited( color ) { SetColor('txtColorVisited', color ) ; } |
function SelectColorActive( color ) { SetColor('txtColorActive', color ) ; } |
function SelectColor( wich ) |
{ |
switch ( wich ) |
{ |
case 'Back' : oEditor.FCKDialog.OpenDialog( 'FCKDialog_Color', FCKLang.DlgColorTitle, 'dialog/fck_colorselector.html', 410, 320, SelectBackColor, window ) ; return ; |
case 'ColorText' : oEditor.FCKDialog.OpenDialog( 'FCKDialog_Color', FCKLang.DlgColorTitle, 'dialog/fck_colorselector.html', 410, 320, SelectColorText, window ) ; return ; |
case 'ColorLink' : oEditor.FCKDialog.OpenDialog( 'FCKDialog_Color', FCKLang.DlgColorTitle, 'dialog/fck_colorselector.html', 410, 320, SelectColorLink, window ) ; return ; |
case 'ColorVisited' : oEditor.FCKDialog.OpenDialog( 'FCKDialog_Color', FCKLang.DlgColorTitle, 'dialog/fck_colorselector.html', 410, 320, SelectColorVisited, window ) ; return ; |
case 'ColorActive' : oEditor.FCKDialog.OpenDialog( 'FCKDialog_Color', FCKLang.DlgColorTitle, 'dialog/fck_colorselector.html', 410, 320, SelectColorActive, window ) ; return ; |
} |
} |
function BrowseServerBack() |
{ |
OpenFileBrowser( FCKConfig.ImageBrowserURL, FCKConfig.ImageBrowserWindowWidth, FCKConfig.ImageBrowserWindowHeight ) ; |
} |
function SetUrl( url ) |
{ |
GetE('txtBackImage').value = url ; |
UpdatePreview() ; |
} |
</script> |
</head> |
<body style="overflow: hidden"> |
<table cellspacing="0" cellpadding="0" width="100%" border="0" style="height: 100%"> |
<tr> |
<td valign="top" style="height: 100%"> |
<div id="divGeneral"> |
<span fcklang="DlgDocPageTitle">Page Title</span><br /> |
<input id="txtPageTitle" style="width: 100%" type="text" /> |
<br /> |
<table cellspacing="0" cellpadding="0" border="0"> |
<tr> |
<td> |
<span fcklang="DlgDocLangDir">Language Direction</span><br /> |
<select id="selDirection"> |
<option value="" selected="selected"></option> |
<option value="ltr" fcklang="DlgDocLangDirLTR">Left to Right (LTR)</option> |
<option value="rtl" fcklang="DlgDocLangDirRTL">Right to Left (RTL)</option> |
</select> |
</td> |
<td> |
</td> |
<td> |
<span fcklang="DlgDocLangCode">Language Code</span><br /> |
<input id="txtLang" type="text" /> |
</td> |
</tr> |
</table> |
<br /> |
<table cellspacing="0" cellpadding="0" width="100%" border="0"> |
<tr> |
<td style="white-space: nowrap"> |
<span fcklang="DlgDocCharSet">Character Set Encoding</span><br /> |
<select id="selCharSet" onchange="CheckOther( this, 'txtCustomCharSet' );"> |
<option value="" selected="selected"></option> |
<option value="us-ascii">ASCII</option> |
<option fcklang="DlgDocCharSetCE" value="iso-8859-2">Central European</option> |
<option fcklang="DlgDocCharSetCT" value="big5">Chinese Traditional (Big5)</option> |
<option fcklang="DlgDocCharSetCR" value="iso-8859-5">Cyrillic</option> |
<option fcklang="DlgDocCharSetGR" value="iso-8859-7">Greek</option> |
<option fcklang="DlgDocCharSetJP" value="iso-2022-jp">Japanese</option> |
<option fcklang="DlgDocCharSetKR" value="iso-2022-kr">Korean</option> |
<option fcklang="DlgDocCharSetTR" value="iso-8859-9">Turkish</option> |
<option fcklang="DlgDocCharSetUN" value="utf-8">Unicode (UTF-8)</option> |
<option fcklang="DlgDocCharSetWE" value="iso-8859-1">Western European</option> |
<option fcklang="DlgOpOther" value="..."><Other></option> |
</select> |
</td> |
<td> |
</td> |
<td width="100%"> |
<span fcklang="DlgDocCharSetOther">Other Character Set Encoding</span><br /> |
<input id="txtCustomCharSet" style="width: 100%; background-color: #cccccc" disabled="disabled" |
type="text" /> |
</td> |
</tr> |
<tr> |
<td colspan="3"> |
</td> |
</tr> |
<tr> |
<td nowrap="nowrap"> |
<span fcklang="DlgDocDocType">Document Type Heading</span><br /> |
<select id="selDocType" name="selDocType" onchange="CheckOther( this, 'txtDocType' );"> |
<option value="" selected="selected"></option> |
<option value='<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">'>HTML |
4.01 Transitional</option> |
<option value='<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">'> |
HTML 4.01 Strict</option> |
<option value='<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">'> |
HTML 4.01 Frameset</option> |
<option value='<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">'> |
XHTML 1.0 Transitional</option> |
<option value='<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">'> |
XHTML 1.0 Strict</option> |
<option value='<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">'> |
XHTML 1.0 Frameset</option> |
<option value='<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">'> |
XHTML 1.1</option> |
<option value='<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">'>HTML 3.2</option> |
<option value='<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">'>HTML 2.0</option> |
<option value="..." fcklang="DlgOpOther"><Other></option> |
</select> |
</td> |
<td> |
</td> |
<td width="100%"> |
<span fcklang="DlgDocDocTypeOther">Other Document Type Heading</span><br /> |
<input id="txtDocType" style="width: 100%; background-color: #cccccc" disabled="disabled" |
type="text" /> |
</td> |
</tr> |
</table> |
<br /> |
<input id="chkIncXHTMLDecl" type="checkbox" /> |
<label for="chkIncXHTMLDecl" fcklang="DlgDocIncXHTML"> |
Include XHTML Declarations</label> |
</div> |
<div id="divBackground" style="display: none"> |
<span fcklang="DlgDocBgColor">Background Color</span><br /> |
<input id="txtBackColor" type="text" onchange="UpdatePreview();" onkeyup="UpdatePreview();" /> <input |
id="btnSelBackColor" onclick="SelectColor( 'Back' )" type="button" value="Select..." |
fcklang="DlgCellBtnSelect" /><br /> |
<br /> |
<span fcklang="DlgDocBgImage">Background Image URL</span><br /> |
<table cellspacing="0" cellpadding="0" width="100%" border="0"> |
<tr> |
<td width="100%"> |
<input id="txtBackImage" style="width: 100%" type="text" onchange="UpdatePreview();" |
onkeyup="UpdatePreview();" /></td> |
<td id="tdBrowse" nowrap="nowrap"> |
<input id="btnBrowse" onclick="BrowseServerBack();" type="button" fcklang="DlgBtnBrowseServer" |
value="Browse Server" /></td> |
</tr> |
</table> |
<input id="chkBackNoScroll" type="checkbox" onclick="UpdatePreview();" /> |
<label for="chkBackNoScroll" fcklang="DlgDocBgNoScroll"> |
Nonscrolling Background</label> |
</div> |
<div id="divColors" style="display: none"> |
<table cellspacing="0" cellpadding="0" width="100%" border="0"> |
<tr> |
<td> |
<span fcklang="DlgDocCText">Text</span><br /> |
<input id="txtColorText" type="text" onchange="UpdatePreview();" onkeyup="UpdatePreview();" /><input |
onclick="SelectColor( 'ColorText' )" type="button" value="Select..." fcklang="DlgCellBtnSelect" /> |
<br /> |
<span fcklang="DlgDocCLink">Link</span><br /> |
<input id="txtColorLink" type="text" onchange="UpdatePreview();" onkeyup="UpdatePreview();" /><input |
onclick="SelectColor( 'ColorLink' )" type="button" value="Select..." fcklang="DlgCellBtnSelect" /> |
<br /> |
<span fcklang="DlgDocCVisited">Visited Link</span><br /> |
<input id="txtColorVisited" type="text" onchange="UpdatePreview();" onkeyup="UpdatePreview();" /><input |
onclick="SelectColor( 'ColorVisited' )" type="button" value="Select..." fcklang="DlgCellBtnSelect" /> |
<br /> |
<span fcklang="DlgDocCActive">Active Link</span><br /> |
<input id="txtColorActive" type="text" onchange="UpdatePreview();" onkeyup="UpdatePreview();" /><input |
onclick="SelectColor( 'ColorActive' )" type="button" value="Select..." fcklang="DlgCellBtnSelect" /> |
</td> |
<td valign="middle" align="center"> |
<table cellspacing="2" cellpadding="0" border="0"> |
<tr> |
<td> |
<span fcklang="DlgDocMargins">Page Margins</span></td> |
</tr> |
<tr> |
<td style="border: #000000 1px solid; padding: 5px"> |
<table cellpadding="0" cellspacing="0" border="0" dir="ltr"> |
<tr> |
<td align="center" colspan="3"> |
<span fcklang="DlgDocMaTop">Top</span><br /> |
<input id="txtMarginTop" type="text" size="3" /> |
</td> |
</tr> |
<tr> |
<td align="left"> |
<span fcklang="DlgDocMaLeft">Left</span><br /> |
<input id="txtMarginLeft" type="text" size="3" /> |
</td> |
<td> |
</td> |
<td align="right"> |
<span fcklang="DlgDocMaRight">Right</span><br /> |
<input id="txtMarginRight" type="text" size="3" /> |
</td> |
</tr> |
<tr> |
<td align="center" colspan="3"> |
<span fcklang="DlgDocMaBottom">Bottom</span><br /> |
<input id="txtMarginBottom" type="text" size="3" /> |
</td> |
</tr> |
</table> |
</td> |
</tr> |
</table> |
</td> |
</tr> |
</table> |
</div> |
<div id="divMeta" style="display: none"> |
<span fcklang="DlgDocMeIndex">Document Indexing Keywords (comma separated)</span><br /> |
<textarea id="txtMetaKeywords" style="width: 100%" rows="2" cols="20"></textarea> |
<br /> |
<span fcklang="DlgDocMeDescr">Document Description</span><br /> |
<textarea id="txtMetaDescription" style="width: 100%" rows="4" cols="20"></textarea> |
<br /> |
<span fcklang="DlgDocMeAuthor">Author</span><br /> |
<input id="txtMetaAuthor" style="width: 100%" type="text" /><br /> |
<br /> |
<span fcklang="DlgDocMeCopy">Copyright</span><br /> |
<input id="txtMetaCopyright" type="text" style="width: 100%" /> |
</div> |
</td> |
</tr> |
<tr id="ePreview" style="display: none"> |
<td> |
<span fcklang="DlgDocPreview">Preview</span><br /> |
<iframe id="frmPreview" src="fck_docprops/fck_document_preview.html" width="100%" |
height="100"></iframe> |
</td> |
</tr> |
</table> |
</body> |
</html> |