initial commit
78
FCKeditor/editor/dialog/common/fck_dialog_common.css
Normal file
|
@ -0,0 +1,78 @@
|
|||
/*
|
||||
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
||||
* Copyright (C) 2003-2007 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.
|
||||
*/
|
||||
|
||||
.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;
|
||||
}
|
165
FCKeditor/editor/dialog/common/fck_dialog_common.js
Normal file
|
@ -0,0 +1,165 @@
|
|||
/*
|
||||
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
||||
* Copyright (C) 2003-2007 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.
|
||||
*/
|
||||
|
||||
// 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 ) ;
|
||||
}
|
||||
|
||||
var KeyIdentifierMap =
|
||||
{
|
||||
End : 35,
|
||||
Home : 36,
|
||||
Left : 37,
|
||||
Right : 39,
|
||||
'U+00007F' : 46 // Delete
|
||||
}
|
||||
|
||||
// Functions used by text fields to accept numbers only.
|
||||
function IsDigit( 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 ;
|
||||
|
||||
// The "PreserveSessionOnFileBrowser" because the above code could be
|
||||
// blocked by popup blockers.
|
||||
if ( oEditor.FCKConfig.PreserveSessionOnFileBrowser && oEditor.FCKBrowserInfo.IsIE )
|
||||
{
|
||||
// The following change has been made otherwise IE will open the file
|
||||
// browser on a different server session (on some cases):
|
||||
// http://support.microsoft.com/default.aspx?scid=kb;en-us;831678
|
||||
// by Simone Chiaretta.
|
||||
var oWindow = oEditor.window.open( url, 'FCKBrowseWindow', sOptions ) ;
|
||||
|
||||
if ( oWindow )
|
||||
{
|
||||
// Detect Yahoo popup blocker.
|
||||
try
|
||||
{
|
||||
var sTest = oWindow.name ; // Yahoo returns "something", but we can't access it, so detect that and avoid strange errors for the user.
|
||||
oWindow.opener = window ;
|
||||
}
|
||||
catch(e)
|
||||
{
|
||||
alert( oEditor.FCKLang.BrowseServerBlocked ) ;
|
||||
}
|
||||
}
|
||||
else
|
||||
alert( oEditor.FCKLang.BrowseServerBlocked ) ;
|
||||
}
|
||||
else
|
||||
window.open( url, 'FCKBrowseWindow', sOptions ) ;
|
||||
}
|
BIN
FCKeditor/editor/dialog/common/images/locked.gif
Normal file
After Width: | Height: | Size: 74 B |
BIN
FCKeditor/editor/dialog/common/images/reset.gif
Normal file
After Width: | Height: | Size: 104 B |
BIN
FCKeditor/editor/dialog/common/images/unlocked.gif
Normal file
After Width: | Height: | Size: 75 B |
155
FCKeditor/editor/dialog/fck_about.html
Normal file
|
@ -0,0 +1,155 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||
<!--
|
||||
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
||||
* Copyright (C) 2003-2007 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>
|
||||
<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.5.1</b><br />
|
||||
Build 17566</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr style="height: 100%">
|
||||
<td align="center">
|
||||
<br />
|
||||
<span style="font-size: 14px" dir="ltr">
|
||||
<br />
|
||||
<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>
|
||||
<br />
|
||||
<br />
|
||||
<br />
|
||||
<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-2007 <a href="#" onclick="SendEMail();">Frederico Caldeira Knabben</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center">
|
||||
<img alt="" src="fck_about/logo_fredck.gif" width="87" height="36" />
|
||||
</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>
|
BIN
FCKeditor/editor/dialog/fck_about/logo_fckeditor.gif
Normal file
After Width: | Height: | Size: 2 KiB |
BIN
FCKeditor/editor/dialog/fck_about/logo_fredck.gif
Normal file
After Width: | Height: | Size: 920 B |
208
FCKeditor/editor/dialog/fck_anchor.html
Normal file
|
@ -0,0 +1,208 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
|
||||
<!--
|
||||
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
||||
* Copyright (C) 2003-2007 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 oEditor = window.parent.InnerDialogLoaded() ;
|
||||
var FCK = oEditor.FCK ;
|
||||
var FCKBrowserInfo = oEditor.FCKBrowserInfo ;
|
||||
var FCKTools = oEditor.FCKTools ;
|
||||
var FCKRegexLib = oEditor.FCKRegexLib ;
|
||||
|
||||
// Gets the document DOM
|
||||
var oDOM = oEditor.FCK.EditorDocument ;
|
||||
|
||||
var oFakeImage = FCK.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 ) ;
|
||||
}
|
||||
|
||||
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 )
|
||||
{
|
||||
// Nothing was selected, so now just create a normal A
|
||||
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
|
||||
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>
|
110
FCKeditor/editor/dialog/fck_button.html
Normal file
|
@ -0,0 +1,110 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
|
||||
<!--
|
||||
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
||||
* Copyright (C) 2003-2007 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 oEditor = window.parent.InnerDialogLoaded() ;
|
||||
|
||||
// Gets the document DOM
|
||||
var oDOM = oEditor.FCK.EditorDocument ;
|
||||
|
||||
var oActiveEl = oEditor.FCKSelection.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 ;
|
||||
|
||||
GetE('txtType').disabled = true ;
|
||||
}
|
||||
else
|
||||
oActiveEl = null ;
|
||||
|
||||
window.parent.SetOkButton( true ) ;
|
||||
window.parent.SetAutoSize( true ) ;
|
||||
}
|
||||
|
||||
function Ok()
|
||||
{
|
||||
oEditor.FCKUndo.SaveUndoStep() ;
|
||||
|
||||
if ( !oActiveEl )
|
||||
{
|
||||
oActiveEl = oEditor.FCK.EditorDocument.createElement( 'INPUT' ) ;
|
||||
oActiveEl.type = GetE('txtType').value ;
|
||||
oActiveEl = oEditor.FCK.InsertElement( oActiveEl ) ;
|
||||
}
|
||||
|
||||
oActiveEl.name = GetE('txtName').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>
|
110
FCKeditor/editor/dialog/fck_checkbox.html
Normal file
|
@ -0,0 +1,110 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
|
||||
<!--
|
||||
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
||||
* Copyright (C) 2003-2007 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 oEditor = window.parent.InnerDialogLoaded() ;
|
||||
|
||||
// Gets the document DOM
|
||||
var oDOM = oEditor.FCK.EditorDocument ;
|
||||
|
||||
var oActiveEl = oEditor.FCKSelection.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 ;
|
||||
|
||||
window.parent.SetOkButton( true ) ;
|
||||
window.parent.SetAutoSize( true ) ;
|
||||
}
|
||||
|
||||
function Ok()
|
||||
{
|
||||
oEditor.FCKUndo.SaveUndoStep() ;
|
||||
|
||||
if ( !oActiveEl )
|
||||
{
|
||||
oActiveEl = oEditor.FCK.EditorDocument.createElement( 'INPUT' ) ;
|
||||
oActiveEl.type = 'checkbox' ;
|
||||
oActiveEl = oEditor.FCK.InsertElement( oActiveEl ) ;
|
||||
}
|
||||
|
||||
if ( GetE('txtName').value.length > 0 )
|
||||
oActiveEl.name = GetE('txtName').value ;
|
||||
|
||||
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>
|
171
FCKeditor/editor/dialog/fck_colorselector.html
Normal file
|
@ -0,0 +1,171 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
|
||||
<!--
|
||||
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
||||
* Copyright (C) 2003-2007 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 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.dialogArguments.CustomValue) == 'function' )
|
||||
window.parent.dialogArguments.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>
|
600
FCKeditor/editor/dialog/fck_docprops.html
Normal 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-2007 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', 400, 330, SelectBackColor, window ) ; return ;
|
||||
case 'ColorText' : oEditor.FCKDialog.OpenDialog( 'FCKDialog_Color', FCKLang.DlgColorTitle, 'dialog/fck_colorselector.html', 400, 330, SelectColorText, window ) ; return ;
|
||||
case 'ColorLink' : oEditor.FCKDialog.OpenDialog( 'FCKDialog_Color', FCKLang.DlgColorTitle, 'dialog/fck_colorselector.html', 400, 330, SelectColorLink, window ) ; return ;
|
||||
case 'ColorVisited' : oEditor.FCKDialog.OpenDialog( 'FCKDialog_Color', FCKLang.DlgColorTitle, 'dialog/fck_colorselector.html', 400, 330, SelectColorVisited, window ) ; return ;
|
||||
case 'ColorActive' : oEditor.FCKDialog.OpenDialog( 'FCKDialog_Color', FCKLang.DlgColorTitle, 'dialog/fck_colorselector.html', 400, 330, 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>
|
113
FCKeditor/editor/dialog/fck_docprops/fck_document_preview.html
Normal 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-2007 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>
|
146
FCKeditor/editor/dialog/fck_flash.html
Normal file
|
@ -0,0 +1,146 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||
<!--
|
||||
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
||||
* Copyright (C) 2003-2007 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>
|
||||
<link href="common/fck_dialog_common.css" type="text/css" rel="stylesheet">
|
||||
</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" />
|
||||
<iframe name="UploadWindow" style="DISPLAY: none" src="javascript:void(0)"></iframe>
|
||||
</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>
|
285
FCKeditor/editor/dialog/fck_flash/fck_flash.js
Normal file
|
@ -0,0 +1,285 @@
|
|||
/*
|
||||
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
||||
* Copyright (C) 2003-2007 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 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( 'Info', oEditor.FCKLang.DlgInfoTab ) ;
|
||||
|
||||
if ( FCKConfig.FlashUpload )
|
||||
window.parent.AddTab( 'Upload', FCKLang.DlgLnkUpload ) ;
|
||||
|
||||
if ( !FCKConfig.FlashDlgHideAdvanced )
|
||||
window.parent.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 = FCK.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 ;
|
||||
|
||||
window.parent.SetAutoSize( true ) ;
|
||||
|
||||
// Activate the "OK" button.
|
||||
window.parent.SetOkButton( true ) ;
|
||||
}
|
||||
|
||||
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 )
|
||||
{
|
||||
window.parent.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.FCKFlashProcessor.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() ;
|
||||
|
||||
window.parent.SetSelectedTab( 'Info' ) ;
|
||||
}
|
||||
|
||||
function OnUploadCompleted( errorNumber, fileUrl, fileName, customMsg )
|
||||
{
|
||||
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 ;
|
||||
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 ;
|
||||
}
|
||||
|
||||
return true ;
|
||||
}
|
46
FCKeditor/editor/dialog/fck_flash/fck_flash_preview.html
Normal file
|
@ -0,0 +1,46 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||
<!--
|
||||
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
||||
* Copyright (C) 2003-2007 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">
|
||||
<link href="../common/fck_dialog_common.css" rel="stylesheet" type="text/css" />
|
||||
<script language="javascript">
|
||||
|
||||
// Sets the Skin CSS
|
||||
document.write( '<link href="' + window.parent.FCKConfig.SkinPath + 'fck_dialog.css" type="text/css" rel="stylesheet">' ) ;
|
||||
|
||||
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>
|
107
FCKeditor/editor/dialog/fck_form.html
Normal file
|
@ -0,0 +1,107 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
|
||||
<!--
|
||||
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
||||
* Copyright (C) 2003-2007 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 oEditor = window.parent.InnerDialogLoaded() ;
|
||||
|
||||
// Gets the document DOM
|
||||
var oDOM = oEditor.FCK.EditorDocument ;
|
||||
|
||||
var oActiveEl = oEditor.FCKSelection.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 ;
|
||||
|
||||
window.parent.SetOkButton( true ) ;
|
||||
window.parent.SetAutoSize( true ) ;
|
||||
}
|
||||
|
||||
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>
|
119
FCKeditor/editor/dialog/fck_hiddenfield.html
Normal file
|
@ -0,0 +1,119 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
|
||||
<!--
|
||||
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
||||
* Copyright (C) 2003-2007 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 oEditor = window.parent.InnerDialogLoaded() ;
|
||||
var FCK = oEditor.FCK ;
|
||||
|
||||
// Gets the document DOM
|
||||
var oDOM = FCK.EditorDocument ;
|
||||
|
||||
// Get the selected flash embed (if available).
|
||||
var oFakeImage = FCK.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 ;
|
||||
}
|
||||
|
||||
window.parent.SetOkButton( true ) ;
|
||||
window.parent.SetAutoSize( true ) ;
|
||||
}
|
||||
|
||||
|
||||
function Ok()
|
||||
{
|
||||
oEditor.FCKUndo.SaveUndoStep() ;
|
||||
|
||||
if ( !oActiveEl )
|
||||
{
|
||||
oActiveEl = FCK.EditorDocument.createElement( 'INPUT' ) ;
|
||||
oActiveEl.type = 'hidden' ;
|
||||
|
||||
oFakeImage = null ;
|
||||
}
|
||||
|
||||
oActiveEl.name = GetE('txtName').value ;
|
||||
SetAttribute( oActiveEl, 'value', GetE('txtValue').value ) ;
|
||||
|
||||
if ( !oFakeImage )
|
||||
{
|
||||
oFakeImage = oEditor.FCKDocumentProcessor_CreateFakeImage( 'FCK__InputHidden', oActiveEl ) ;
|
||||
oFakeImage.setAttribute( '_fckinputhidden', 'true', 0 ) ;
|
||||
oFakeImage = FCK.InsertElement( oFakeImage ) ;
|
||||
}
|
||||
else
|
||||
oEditor.FCKUndo.SaveUndoStep() ;
|
||||
|
||||
oEditor.FCKFlashProcessor.RefreshView( oFakeImage, oActiveEl ) ;
|
||||
|
||||
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>
|
252
FCKeditor/editor/dialog/fck_image.html
Normal file
|
@ -0,0 +1,252 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||
<!--
|
||||
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
||||
* Copyright (C) 2003-2007 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>
|
||||
<link href="common/fck_dialog_common.css" rel="stylesheet" type="text/css" />
|
||||
</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" />
|
||||
<iframe name="UploadWindow" style="display: none" src="javascript:void(0)"></iframe>
|
||||
</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>
|
492
FCKeditor/editor/dialog/fck_image/fck_image.js
Normal file
|
@ -0,0 +1,492 @@
|
|||
/*
|
||||
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
||||
* Copyright (C) 2003-2007 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 oEditor = window.parent.InnerDialogLoaded() ;
|
||||
var FCK = oEditor.FCK ;
|
||||
var FCKLang = oEditor.FCKLang ;
|
||||
var FCKConfig = oEditor.FCKConfig ;
|
||||
var FCKDebug = oEditor.FCKDebug ;
|
||||
|
||||
var bImageButton = ( document.location.search.length > 0 && document.location.search.substr(1) == 'ImageButton' ) ;
|
||||
|
||||
//#### Dialog Tabs
|
||||
|
||||
// Set the dialog tabs.
|
||||
window.parent.AddTab( 'Info', FCKLang.DlgImgInfoTab ) ;
|
||||
|
||||
if ( !bImageButton && !FCKConfig.ImageDlgHideLink )
|
||||
window.parent.AddTab( 'Link', FCKLang.DlgImgLinkTab ) ;
|
||||
|
||||
if ( FCKConfig.ImageUpload )
|
||||
window.parent.AddTab( 'Upload', FCKLang.DlgLnkUpload ) ;
|
||||
|
||||
if ( !FCKConfig.ImageDlgHideAdvanced )
|
||||
window.parent.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 = FCK.Selection.GetSelectedElement() ;
|
||||
|
||||
if ( oImage && oImage.tagName != 'IMG' && !( oImage.tagName == 'INPUT' && oImage.type == 'image' ) )
|
||||
oImage = null ;
|
||||
|
||||
// Get the active link.
|
||||
var oLink = FCK.Selection.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 ;
|
||||
|
||||
window.parent.SetAutoSize( true ) ;
|
||||
|
||||
// Activate the "OK" button.
|
||||
window.parent.SetOkButton( true ) ;
|
||||
}
|
||||
|
||||
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 )
|
||||
{
|
||||
window.parent.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 ;
|
||||
|
||||
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 ) ;
|
||||
}
|
||||
|
||||
window.parent.SetSelectedTab( 'Info' ) ;
|
||||
}
|
||||
|
||||
function OnUploadCompleted( errorNumber, fileUrl, fileName, customMsg )
|
||||
{
|
||||
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 ;
|
||||
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 ;
|
||||
}
|
||||
|
||||
return true ;
|
||||
}
|
66
FCKeditor/editor/dialog/fck_image/fck_image_preview.html
Normal file
|
@ -0,0 +1,66 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||
<!--
|
||||
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
||||
* Copyright (C) 2003-2007 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" />
|
||||
<link href="../common/fck_dialog_common.css" rel="stylesheet" type="text/css" />
|
||||
<script type="text/javascript">
|
||||
|
||||
// Sets the Skin CSS
|
||||
document.write( '<link href="' + window.parent.FCKConfig.SkinPath + 'fck_dialog.css" type="text/css" rel="stylesheet">' ) ;
|
||||
|
||||
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 style="color: #000000; background-color: #ffffff">
|
||||
<a id="lnkPreview" onclick="return false;" style="cursor: default">
|
||||
<img id="imgPreview" onload="window.parent.UpdateOriginal();" style="display: none" /></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.
|
||||
</body>
|
||||
</html>
|
293
FCKeditor/editor/dialog/fck_link.html
Normal file
|
@ -0,0 +1,293 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||
<!--
|
||||
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
||||
* Copyright (C) 2003-2007 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" />
|
||||
<iframe name="UploadWindow" style="DISPLAY: none" src="javascript:void(0)"></iframe>
|
||||
</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>
|
715
FCKeditor/editor/dialog/fck_link/fck_link.js
Normal file
|
@ -0,0 +1,715 @@
|
|||
/*
|
||||
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
||||
* Copyright (C) 2003-2007 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 oEditor = window.parent.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.
|
||||
window.parent.AddTab( 'Info', FCKLang.DlgLnkInfoTab ) ;
|
||||
|
||||
if ( !FCKConfig.LinkDlgHideTarget )
|
||||
window.parent.AddTab( 'Target', FCKLang.DlgLnkTargetTab, true ) ;
|
||||
|
||||
if ( FCKConfig.LinkUpload )
|
||||
window.parent.AddTab( 'Upload', FCKLang.DlgLnkUpload, true ) ;
|
||||
|
||||
if ( !FCKConfig.LinkDlgHideAdvanced )
|
||||
window.parent.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' ) ) ;
|
||||
|
||||
window.parent.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() ;
|
||||
|
||||
oParser.ParseEMailUrl = function( emailUrl )
|
||||
{
|
||||
// Initializes the EMailInfo object.
|
||||
var oEMailInfo = new Object() ;
|
||||
oEMailInfo.Address = '' ;
|
||||
oEMailInfo.Subject = '' ;
|
||||
oEMailInfo.Body = '' ;
|
||||
|
||||
var oParts = emailUrl.match( /^([^\?]+)\??(.+)?/ ) ;
|
||||
if ( oParts )
|
||||
{
|
||||
// Set the e-mail address.
|
||||
oEMailInfo.Address = oParts[1] ;
|
||||
|
||||
// Look for the optional e-mail parameters.
|
||||
if ( oParts[2] )
|
||||
{
|
||||
var oMatch = oParts[2].match( /(^|&)subject=([^&]+)/i ) ;
|
||||
if ( oMatch ) oEMailInfo.Subject = decodeURIComponent( oMatch[2] ) ;
|
||||
|
||||
oMatch = oParts[2].match( /(^|&)body=([^&]+)/i ) ;
|
||||
if ( oMatch ) oEMailInfo.Body = decodeURIComponent( oMatch[2] ) ;
|
||||
}
|
||||
}
|
||||
|
||||
return oEMailInfo ;
|
||||
}
|
||||
|
||||
oParser.CreateEMailUri = function( address, subject, body )
|
||||
{
|
||||
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 = FCK.Selection.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.
|
||||
window.parent.SetOkButton( true ) ;
|
||||
}
|
||||
|
||||
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 ) ;
|
||||
|
||||
if ( sProtocol )
|
||||
{
|
||||
sProtocol = sProtocol[0].toLowerCase() ;
|
||||
GetE('cmbLinkProtocol').value = sProtocol ;
|
||||
|
||||
// Remove the protocol and get the remaining URL.
|
||||
var sUrl = sHRef.replace( oRegex.UriProtocol, '' ) ;
|
||||
|
||||
if ( sProtocol == 'mailto:' ) // It is an e-mail link.
|
||||
{
|
||||
sType = 'email' ;
|
||||
|
||||
var oEMailInfo = oParser.ParseEMailUrl( sUrl ) ;
|
||||
GetE('txtEMailAddress').value = oEMailInfo.Address ;
|
||||
GetE('txtEMailSubject').value = oEMailInfo.Subject ;
|
||||
GetE('txtEMailBody').value = oEMailInfo.Body ;
|
||||
}
|
||||
else // It is a normal link.
|
||||
{
|
||||
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 )
|
||||
window.parent.SetTabVisibility( 'Target' , (linkType == 'url') ) ;
|
||||
|
||||
if ( FCKConfig.LinkUpload )
|
||||
window.parent.SetTabVisibility( 'Upload' , (linkType == 'url') ) ;
|
||||
|
||||
if ( !FCKConfig.LinkDlgHideAdvanced )
|
||||
window.parent.SetTabVisibility( 'Advanced' , (linkType != 'anchor' || bHasAnchors) ) ;
|
||||
|
||||
if ( linkType == 'email' )
|
||||
window.parent.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' )
|
||||
window.parent.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 )
|
||||
{
|
||||
document.getElementById('txtUrl').value = url ;
|
||||
OnUrlChange() ;
|
||||
window.parent.SetSelectedTab( 'Info' ) ;
|
||||
}
|
||||
|
||||
function OnUploadCompleted( errorNumber, fileUrl, fileName, customMsg )
|
||||
{
|
||||
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 ;
|
||||
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 ;
|
||||
}
|
||||
|
||||
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 ;
|
||||
}
|
117
FCKeditor/editor/dialog/fck_listprop.html
Normal file
|
@ -0,0 +1,117 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
|
||||
<!--
|
||||
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
||||
* Copyright (C) 2003-2007 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 oEditor = window.parent.InnerDialogLoaded() ;
|
||||
|
||||
// Gets the document DOM
|
||||
var oDOM = oEditor.FCK.EditorDocument ;
|
||||
var sListType = ( location.search == '?OL' ? 'OL' : 'UL' ) ;
|
||||
|
||||
var oActiveEl = oEditor.FCKSelection.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') ;
|
||||
}
|
||||
|
||||
window.parent.SetOkButton( true ) ;
|
||||
window.parent.SetAutoSize( true ) ;
|
||||
}
|
||||
|
||||
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>
|
340
FCKeditor/editor/dialog/fck_paste.html
Normal file
|
@ -0,0 +1,340 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||
<!--
|
||||
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
||||
* Copyright (C) 2003-2007 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 type="text/javascript">
|
||||
var oEditor = window.parent.InnerDialogLoaded() ;
|
||||
var FCK = oEditor.FCK;
|
||||
var FCKTools = oEditor.FCKTools ;
|
||||
var FCKConfig = oEditor.FCKConfig ;
|
||||
|
||||
window.onload = function ()
|
||||
{
|
||||
// First of all, translate the dialog box texts
|
||||
oEditor.FCKLanguageManager.TranslatePage(document) ;
|
||||
|
||||
var sPastingType = window.parent.dialogArguments.CustomValue ;
|
||||
|
||||
if ( sPastingType == 'Word' || sPastingType == 'Security' )
|
||||
{
|
||||
if ( sPastingType == 'Security' )
|
||||
document.getElementById( 'xSecurityMsg' ).style.display = '' ;
|
||||
|
||||
var oFrame = document.getElementById('frmData') ;
|
||||
oFrame.style.display = '' ;
|
||||
|
||||
// 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 ( oFrame.contentDocument )
|
||||
oFrame.contentDocument.designMode = 'on' ;
|
||||
else
|
||||
oFrame.contentWindow.document.body.contentEditable = true ;
|
||||
|
||||
// Set the focus on the pasting area
|
||||
oFrame.contentWindow.focus();
|
||||
}
|
||||
else
|
||||
{
|
||||
document.getElementById('txtData').style.display = '' ;
|
||||
}
|
||||
|
||||
if ( sPastingType != 'Word' )
|
||||
document.getElementById('oWordCommands').style.display = 'none' ;
|
||||
|
||||
window.parent.SetOkButton( true ) ;
|
||||
window.parent.SetAutoSize( true ) ;
|
||||
}
|
||||
|
||||
function Ok()
|
||||
{
|
||||
// Before doing anything, save undo snapshot.
|
||||
oEditor.FCKUndo.SaveUndoStep() ;
|
||||
|
||||
var sHtml ;
|
||||
|
||||
var sPastingType = window.parent.dialogArguments.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 ;
|
||||
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 ;
|
||||
}
|
||||
|
||||
function CleanUpBox()
|
||||
{
|
||||
var oFrame = document.getElementById('frmData') ;
|
||||
|
||||
if ( oFrame.contentDocument )
|
||||
oFrame.contentDocument.body.innerHTML = '' ;
|
||||
else
|
||||
oFrame.contentWindow.document.body.innerHTML = '' ;
|
||||
}
|
||||
|
||||
|
||||
// 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>.*?<\/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 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*>(.*?)<\/SPAN>/gi, '$1' ) ;
|
||||
|
||||
html = html.replace( /<FONT\s*>(.*?)<\/FONT>/gi, '$1' ) ;
|
||||
|
||||
// Remove XML elements and declarations
|
||||
html = html.replace(/<\\?\?xml[^>]*>/gi, '' ) ;
|
||||
|
||||
// Remove Tags with XML namespace declarations: <o:p><\/o:p>
|
||||
html = html.replace(/<\/?\w+:[^>]*>/gi, '' ) ;
|
||||
|
||||
// Remove comments [SF BUG-1481861].
|
||||
html = html.replace(/<\!--.*?-->/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(.*?)<\/\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[^>]*>(.*?)<\/FONT><\/\1>/gi, '<$1>$2<\/$1>' );
|
||||
html = html.replace( /<(H\d)><EM>(.*?)<\/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)([^>]*>.*?)(<\/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 valign="top" height="100%" style="border-right: #000000 1px solid; border-top: #000000 1px solid;
|
||||
border-left: #000000 1px solid; border-bottom: #000000 1px solid">
|
||||
<textarea id="txtData" cols="80" rows="5" style="border: #000000 1px; display: none;
|
||||
width: 99%; height: 98%"></textarea>
|
||||
<iframe id="frmData" src="javascript:void(0)" height="98%" width="99%" frameborder="0"
|
||||
style="border-right: #000000 1px; border-top: #000000 1px; display: none; border-left: #000000 1px;
|
||||
border-bottom: #000000 1px; background-color: #ffffff"></iframe>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="oWordCommands">
|
||||
<td>
|
||||
<table border="0" cellpadding="0" cellspacing="0" width="100%">
|
||||
<tr>
|
||||
<td nowrap="nowrap">
|
||||
<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>
|
||||
<td align="right" valign="top">
|
||||
<input type="button" fcklang="DlgPasteCleanBox" value="Clean Up Box" onclick="CleanUpBox()" />
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
110
FCKeditor/editor/dialog/fck_radiobutton.html
Normal file
|
@ -0,0 +1,110 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
|
||||
<!--
|
||||
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
||||
* Copyright (C) 2003-2007 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 oEditor = window.parent.InnerDialogLoaded() ;
|
||||
|
||||
// Gets the document DOM
|
||||
var oDOM = oEditor.FCK.EditorDocument ;
|
||||
|
||||
var oActiveEl = oEditor.FCKSelection.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 ;
|
||||
|
||||
window.parent.SetOkButton( true ) ;
|
||||
window.parent.SetAutoSize( true ) ;
|
||||
}
|
||||
|
||||
function Ok()
|
||||
{
|
||||
oEditor.FCKUndo.SaveUndoStep() ;
|
||||
|
||||
if ( !oActiveEl )
|
||||
{
|
||||
oActiveEl = oEditor.FCK.EditorDocument.createElement( 'INPUT' ) ;
|
||||
oActiveEl.type = 'radio' ;
|
||||
oActiveEl = oEditor.FCK.InsertElement( oActiveEl ) ;
|
||||
}
|
||||
|
||||
if ( GetE('txtName').value.length > 0 )
|
||||
oActiveEl.name = GetE('txtName').value ;
|
||||
|
||||
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>
|
490
FCKeditor/editor/dialog/fck_replace.html
Normal file
|
@ -0,0 +1,490 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||
<!--
|
||||
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
||||
* Copyright (C) 2003-2007 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 oEditor = window.parent.InnerDialogLoaded() ;
|
||||
var FCKLang = oEditor.FCKLang ;
|
||||
|
||||
window.parent.AddTab( 'Find', FCKLang.DlgFindTitle ) ;
|
||||
window.parent.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' )
|
||||
window.parent.SetAutoSize( true ) ;
|
||||
}
|
||||
|
||||
function OnLoad()
|
||||
{
|
||||
// First of all, translate the dialog box texts.
|
||||
oEditor.FCKLanguageManager.TranslatePage( document ) ;
|
||||
|
||||
// Place the cursor at the start of document.
|
||||
// This will be the starting point of our search.
|
||||
var range = new oEditor.FCKDomRange( oEditor.FCK.EditorWindow ) ;
|
||||
range.SetStart( oEditor.FCK.EditorDocument.body, 1 ) ;
|
||||
range.SetEnd( oEditor.FCK.EditorDocument.body, 1 ) ;
|
||||
range.Collapse( true ) ;
|
||||
range.Select() ;
|
||||
|
||||
// Show the appropriate tab at startup.
|
||||
if ( window.parent.name.search( 'Replace' ) == -1 )
|
||||
{
|
||||
window.parent.SetSelectedTab( 'Find' ) ;
|
||||
window.parent.SetAutoSize( true ) ;
|
||||
}
|
||||
else
|
||||
window.parent.SetSelectedTab( 'Replace' ) ;
|
||||
|
||||
}
|
||||
|
||||
function btnStat(frm)
|
||||
{
|
||||
document.getElementById('btnReplace').disabled =
|
||||
document.getElementById('btnReplaceAll').disabled =
|
||||
document.getElementById('btnFind').disabled =
|
||||
( document.getElementById(idMap["FindText"]).value.length == 0 ) ;
|
||||
}
|
||||
|
||||
function GetSelection()
|
||||
{
|
||||
var range = new oEditor.FCKDomRange( oEditor.FCK.EditorWindow ) ;
|
||||
range.MoveToSelection() ;
|
||||
return range.CreateBookmark2() ;
|
||||
}
|
||||
|
||||
function GetSearchString()
|
||||
{
|
||||
return document.getElementById(idMap['FindText']).value ;
|
||||
}
|
||||
|
||||
function GetReplaceString()
|
||||
{
|
||||
return document.getElementById("txtReplace").value ;
|
||||
}
|
||||
|
||||
function GetCheckCase()
|
||||
{
|
||||
return !! ( document.getElementById(idMap['CheckCase']).checked ) ;
|
||||
}
|
||||
|
||||
function GetMatchWord()
|
||||
{
|
||||
return !! ( document.getElementById(idMap['CheckWord']).checked ) ;
|
||||
}
|
||||
|
||||
// Get the data pointed to by a bookmark.
|
||||
function GetData( bookmark )
|
||||
{
|
||||
var cursor = oEditor.FCK.EditorDocument.documentElement ;
|
||||
for ( var i = 0 ; i < bookmark.length ; i++ )
|
||||
{
|
||||
var target = bookmark[i] ;
|
||||
var currentIndex = -1 ;
|
||||
if ( cursor.nodeType != 3 )
|
||||
{
|
||||
for (var j = 0 ; j < cursor.childNodes.length ; j++ )
|
||||
{
|
||||
var candidate = cursor.childNodes[j] ;
|
||||
if ( candidate.nodeType == 3 &&
|
||||
candidate.previousSibling &&
|
||||
candidate.previousSibling.nodeType == 3 )
|
||||
continue ;
|
||||
currentIndex++ ;
|
||||
if ( currentIndex == target )
|
||||
{
|
||||
cursor = candidate ;
|
||||
break ;
|
||||
}
|
||||
}
|
||||
if ( currentIndex < target )
|
||||
return null ;
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( i != bookmark.length - 1 )
|
||||
return null ;
|
||||
while ( target >= cursor.length && cursor.nextSibling && cursor.nextSibling.nodeType == 3 )
|
||||
{
|
||||
target -= cursor.length ;
|
||||
cursor = cursor.nextSibling ;
|
||||
}
|
||||
cursor = cursor.nodeValue.charAt( target ) ;
|
||||
if ( cursor == "" )
|
||||
cursor = null ;
|
||||
}
|
||||
}
|
||||
return cursor ;
|
||||
}
|
||||
|
||||
// With this function, we can treat the bookmark as an iterator for DFS.
|
||||
function NextPosition( bookmark )
|
||||
{
|
||||
// See if there's anything further down the tree.
|
||||
var next = bookmark.concat( [0] ) ;
|
||||
if ( GetData( next ) != null )
|
||||
return next ;
|
||||
|
||||
// Nothing down there? See if there's anything next to me.
|
||||
var next = bookmark.slice( 0, bookmark.length - 1 ).concat( [ bookmark[ bookmark.length - 1 ] + 1 ] ) ;
|
||||
if ( GetData( next ) != null )
|
||||
return next ;
|
||||
|
||||
// Nothing even next to me? See if there's anything next to my ancestors.
|
||||
for ( var i = bookmark.length - 1 ; i > 0 ; i-- )
|
||||
{
|
||||
var next = bookmark.slice( 0, i - 1 ).concat( [ bookmark[ i - 1 ] + 1 ] ) ;
|
||||
if ( GetData( next ) != null )
|
||||
return next ;
|
||||
}
|
||||
|
||||
// There's absolutely nothing left to walk, return null.
|
||||
return null ;
|
||||
}
|
||||
|
||||
// Is this character a unicode whitespace?
|
||||
// Reference: http://unicode.org/Public/UNIDATA/PropList.txt
|
||||
function CheckIsWhitespace( 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 false;
|
||||
}
|
||||
}
|
||||
|
||||
// Knuth-Morris-Pratt Algorithm for stream input
|
||||
KMP_NOMATCH = 0 ;
|
||||
KMP_ADVANCED = 1 ;
|
||||
KMP_MATCHED = 2 ;
|
||||
function KmpMatch( 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 ;
|
||||
}
|
||||
};
|
||||
|
||||
function _Find()
|
||||
{
|
||||
// Start from the end of the current selection.
|
||||
var matcher = new KmpMatch( GetSearchString(), ! GetCheckCase() ) ;
|
||||
var cursor = GetSelection().End ;
|
||||
var matchState = KMP_NOMATCH ;
|
||||
var matchBookmark = null ;
|
||||
|
||||
// Match finding.
|
||||
while ( true )
|
||||
{
|
||||
// Perform KMP stream matching.
|
||||
// - Reset KMP matcher if we encountered a block element.
|
||||
var data = GetData( cursor ) ;
|
||||
if ( data )
|
||||
{
|
||||
if ( data.tagName )
|
||||
{
|
||||
if ( oEditor.FCKListsLib.BlockElements[ data.tagName.toLowerCase() ] )
|
||||
{
|
||||
matcher.Reset();
|
||||
matchBookmark = null ;
|
||||
}
|
||||
}
|
||||
else if ( data.charAt != undefined )
|
||||
{
|
||||
matchState = matcher.FeedCharacter(data) ;
|
||||
|
||||
if ( matchState == KMP_NOMATCH )
|
||||
matchBookmark = null ;
|
||||
else if ( matchState == KMP_ADVANCED && matchBookmark == null )
|
||||
matchBookmark = { Start : cursor.concat( [] ) } ;
|
||||
else if ( matchState == KMP_MATCHED )
|
||||
{
|
||||
if ( matchBookmark == null )
|
||||
matchBookmark = { Start : cursor.concat( [] ) } ;
|
||||
matchBookmark.End = cursor.concat( [] ) ;
|
||||
matchBookmark.End[ matchBookmark.End.length - 1 ]++;
|
||||
|
||||
// Wait, do we have to match a whole word?
|
||||
if ( GetMatchWord() )
|
||||
{
|
||||
var startOk = false ;
|
||||
var endOk = false ;
|
||||
var start = matchBookmark.Start ;
|
||||
var end = matchBookmark.End ;
|
||||
if ( start[ start.length - 1 ] == 0 )
|
||||
startOk = true ;
|
||||
else
|
||||
{
|
||||
var cursorBeforeStart = start.slice( 0, start.length - 1 ) ;
|
||||
cursorBeforeStart.push( start[ start.length - 1 ] - 1 ) ;
|
||||
var dataBeforeStart = GetData( cursorBeforeStart ) ;
|
||||
if ( dataBeforeStart == null || dataBeforeStart.charAt == undefined )
|
||||
startOk = true ;
|
||||
else if ( CheckIsWhitespace( dataBeforeStart ) )
|
||||
startOk = true ;
|
||||
}
|
||||
|
||||
// this is already one character beyond the last char, no need to move
|
||||
var cursorAfterEnd = end ;
|
||||
var dataAfterEnd = GetData( cursorAfterEnd );
|
||||
if ( dataAfterEnd == null || dataAfterEnd.charAt == undefined )
|
||||
endOk = true ;
|
||||
else if ( CheckIsWhitespace( dataAfterEnd ) )
|
||||
endOk = true ;
|
||||
|
||||
if ( startOk && endOk )
|
||||
break ;
|
||||
else
|
||||
matcher.Reset() ;
|
||||
}
|
||||
else
|
||||
break ;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Perform DFS across the document, until we've reached the end.
|
||||
cursor = NextPosition( cursor ) ;
|
||||
if ( cursor == null )
|
||||
break;
|
||||
}
|
||||
|
||||
// If we've found a match, select the match.
|
||||
if ( matchState == KMP_MATCHED )
|
||||
{
|
||||
var range = new oEditor.FCKDomRange( oEditor.FCK.EditorWindow ) ;
|
||||
range.MoveToBookmark2( matchBookmark ) ;
|
||||
range.Select() ;
|
||||
var focus = range._Range.endContainer ;
|
||||
while ( focus && focus.nodeType != 1 )
|
||||
focus = focus.parentNode ;
|
||||
|
||||
if ( focus )
|
||||
{
|
||||
if ( oEditor.FCKBrowserInfo.IsSafari )
|
||||
oEditor.FCKDomTools.ScrollIntoView( focus, false ) ;
|
||||
else
|
||||
focus.scrollIntoView( false ) ;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
else
|
||||
return false;
|
||||
}
|
||||
|
||||
function Find()
|
||||
{
|
||||
var range = new oEditor.FCKDomRange( oEditor.FCK.EditorWindow ) ;
|
||||
range.MoveToSelection() ;
|
||||
range.Collapse( false ) ;
|
||||
range.Select() ;
|
||||
|
||||
if ( ! _Find() )
|
||||
alert( FCKLang.DlgFindNotFoundMsg ) ;
|
||||
}
|
||||
|
||||
function Replace()
|
||||
{
|
||||
var selection = new oEditor.FCKDomRange( oEditor.FCK.EditorWindow ) ;
|
||||
selection.MoveToSelection() ;
|
||||
|
||||
if ( selection.CheckIsCollapsed() )
|
||||
{
|
||||
if (! _Find() )
|
||||
alert( FCKLang.DlgFindNotFoundMsg ) ;
|
||||
}
|
||||
else
|
||||
{
|
||||
oEditor.FCKUndo.SaveUndoStep() ;
|
||||
selection.DeleteContents() ;
|
||||
selection.InsertNode( oEditor.FCK.EditorDocument.createTextNode( GetReplaceString() ) ) ;
|
||||
selection.Collapse( false ) ;
|
||||
selection.Select() ;
|
||||
}
|
||||
}
|
||||
|
||||
function ReplaceAll()
|
||||
{
|
||||
oEditor.FCKUndo.SaveUndoStep() ;
|
||||
var range = new oEditor.FCKDomRange( oEditor.FCK.EditorWindow ) ;
|
||||
|
||||
var replaceCount = 0 ;
|
||||
|
||||
while ( _Find() )
|
||||
{
|
||||
range.MoveToSelection() ;
|
||||
range.DeleteContents() ;
|
||||
range.InsertNode( oEditor.FCK.EditorDocument.createTextNode( GetReplaceString() ) ) ;
|
||||
range.Collapse( false ) ;
|
||||
range.Select() ;
|
||||
replaceCount++ ;
|
||||
}
|
||||
if ( replaceCount == 0 )
|
||||
alert( FCKLang.DlgFindNotFoundMsg ) ;
|
||||
window.parent.Cancel() ;
|
||||
}
|
||||
</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(this.form)" 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(this.form)" 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>
|
178
FCKeditor/editor/dialog/fck_select.html
Normal file
|
@ -0,0 +1,178 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
|
||||
<!--
|
||||
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
||||
* Copyright (C) 2003-2007 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 oEditor = window.parent.InnerDialogLoaded() ;
|
||||
|
||||
// Gets the document DOM
|
||||
var oDOM = oEditor.FCK.EditorDocument ;
|
||||
|
||||
var oActiveEl = oEditor.FCKSelection.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' ) ;
|
||||
|
||||
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 ;
|
||||
|
||||
window.parent.SetOkButton( true ) ;
|
||||
window.parent.SetAutoSize( true ) ;
|
||||
}
|
||||
|
||||
function Ok()
|
||||
{
|
||||
oEditor.FCKUndo.SaveUndoStep() ;
|
||||
|
||||
var sSize = GetE('txtLines').value ;
|
||||
if ( sSize == null || isNaN( sSize ) || sSize <= 1 )
|
||||
sSize = '' ;
|
||||
|
||||
if ( !oActiveEl )
|
||||
{
|
||||
oActiveEl = oEditor.FCK.InsertElement( 'select' ) ;
|
||||
}
|
||||
|
||||
SetAttribute( oActiveEl, '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>
|
194
FCKeditor/editor/dialog/fck_select/fck_select.js
Normal file
|
@ -0,0 +1,194 @@
|
|||
/*
|
||||
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
||||
* Copyright (C) 2003-2007 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 ;
|
||||
}
|
108
FCKeditor/editor/dialog/fck_smiley.html
Normal file
|
@ -0,0 +1,108 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
|
||||
<!--
|
||||
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
||||
* Copyright (C) 2003-2007 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 type="text/javascript">
|
||||
|
||||
var oEditor = window.parent.InnerDialogLoaded() ;
|
||||
|
||||
window.onload = function ()
|
||||
{
|
||||
// First of all, translate the dialog box texts
|
||||
oEditor.FCKLanguageManager.TranslatePage(document) ;
|
||||
|
||||
window.parent.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 = '' ;
|
||||
|
||||
window.parent.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>
|
65
FCKeditor/editor/dialog/fck_source.html
Normal file
|
@ -0,0 +1,65 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
|
||||
<!--
|
||||
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
||||
* Copyright (C) 2003-2007 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">
|
||||
<link href="common/fck_dialog_common.css" rel="stylesheet" type="text/css" />
|
||||
<script language="javascript">
|
||||
|
||||
var oEditor = window.parent.InnerDialogLoaded() ;
|
||||
var FCK = oEditor.FCK ;
|
||||
var FCKConfig = oEditor.FCKConfig ;
|
||||
|
||||
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>
|
120
FCKeditor/editor/dialog/fck_specialchar.html
Normal 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-2007 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 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>
|
64
FCKeditor/editor/dialog/fck_spellerpages.html
Normal file
|
@ -0,0 +1,64 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
|
||||
<!--
|
||||
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
||||
* Copyright (C) 2003-2007 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="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.FCK.SetData( document.getElementById('txtHtml').value ) ;
|
||||
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>
|
|
@ -0,0 +1,87 @@
|
|||
////////////////////////////////////////////////////
|
||||
// controlWindow object
|
||||
////////////////////////////////////////////////////
|
||||
function controlWindow( controlForm ) {
|
||||
// private properties
|
||||
this._form = controlForm;
|
||||
|
||||
// public properties
|
||||
this.windowType = "controlWindow";
|
||||
// this.noSuggestionSelection = "- No suggestions -"; // by FredCK
|
||||
this.noSuggestionSelection = FCKLang.DlgSpellNoSuggestions ;
|
||||
// set up the properties for elements of the given control form
|
||||
this.suggestionList = this._form.sugg;
|
||||
this.evaluatedText = this._form.misword;
|
||||
this.replacementText = this._form.txtsugg;
|
||||
this.undoButton = this._form.btnUndo;
|
||||
|
||||
// public methods
|
||||
this.addSuggestion = addSuggestion;
|
||||
this.clearSuggestions = clearSuggestions;
|
||||
this.selectDefaultSuggestion = selectDefaultSuggestion;
|
||||
this.resetForm = resetForm;
|
||||
this.setSuggestedText = setSuggestedText;
|
||||
this.enableUndo = enableUndo;
|
||||
this.disableUndo = disableUndo;
|
||||
}
|
||||
|
||||
function resetForm() {
|
||||
if( this._form ) {
|
||||
this._form.reset();
|
||||
}
|
||||
}
|
||||
|
||||
function setSuggestedText() {
|
||||
var slct = this.suggestionList;
|
||||
var txt = this.replacementText;
|
||||
var str = "";
|
||||
if( (slct.options[0].text) && slct.options[0].text != this.noSuggestionSelection ) {
|
||||
str = slct.options[slct.selectedIndex].text;
|
||||
}
|
||||
txt.value = str;
|
||||
}
|
||||
|
||||
function selectDefaultSuggestion() {
|
||||
var slct = this.suggestionList;
|
||||
var txt = this.replacementText;
|
||||
if( slct.options.length == 0 ) {
|
||||
this.addSuggestion( this.noSuggestionSelection );
|
||||
} else {
|
||||
slct.options[0].selected = true;
|
||||
}
|
||||
this.setSuggestedText();
|
||||
}
|
||||
|
||||
function addSuggestion( sugg_text ) {
|
||||
var slct = this.suggestionList;
|
||||
if( sugg_text ) {
|
||||
var i = slct.options.length;
|
||||
var newOption = new Option( sugg_text, 'sugg_text'+i );
|
||||
slct.options[i] = newOption;
|
||||
}
|
||||
}
|
||||
|
||||
function clearSuggestions() {
|
||||
var slct = this.suggestionList;
|
||||
for( var j = slct.length - 1; j > -1; j-- ) {
|
||||
if( slct.options[j] ) {
|
||||
slct.options[j] = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function enableUndo() {
|
||||
if( this.undoButton ) {
|
||||
if( this.undoButton.disabled == true ) {
|
||||
this.undoButton.disabled = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function disableUndo() {
|
||||
if( this.undoButton ) {
|
||||
if( this.undoButton.disabled == false ) {
|
||||
this.undoButton.disabled = true;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,153 @@
|
|||
<html>
|
||||
<head>
|
||||
<link rel="stylesheet" type="text/css" href="spellerStyle.css" />
|
||||
<script type="text/javascript" src="controlWindow.js"></script>
|
||||
<script type="text/javascript">
|
||||
var spellerObject;
|
||||
var controlWindowObj;
|
||||
|
||||
if( parent.opener ) {
|
||||
spellerObject = parent.opener.speller;
|
||||
}
|
||||
|
||||
function ignore_word() {
|
||||
if( spellerObject ) {
|
||||
spellerObject.ignoreWord();
|
||||
}
|
||||
}
|
||||
|
||||
function ignore_all() {
|
||||
if( spellerObject ) {
|
||||
spellerObject.ignoreAll();
|
||||
}
|
||||
}
|
||||
|
||||
function replace_word() {
|
||||
if( spellerObject ) {
|
||||
spellerObject.replaceWord();
|
||||
}
|
||||
}
|
||||
|
||||
function replace_all() {
|
||||
if( spellerObject ) {
|
||||
spellerObject.replaceAll();
|
||||
}
|
||||
}
|
||||
|
||||
function end_spell() {
|
||||
if( spellerObject ) {
|
||||
spellerObject.terminateSpell();
|
||||
}
|
||||
}
|
||||
|
||||
function undo() {
|
||||
if( spellerObject ) {
|
||||
spellerObject.undo();
|
||||
}
|
||||
}
|
||||
|
||||
function suggText() {
|
||||
if( controlWindowObj ) {
|
||||
controlWindowObj.setSuggestedText();
|
||||
}
|
||||
}
|
||||
|
||||
var FCKLang = window.parent.parent.FCKLang ; // by FredCK
|
||||
|
||||
function init_spell() {
|
||||
// By FredCK (fckLang attributes have been added to the HTML source of this page)
|
||||
window.parent.parent.OnSpellerControlsLoad( this ) ;
|
||||
|
||||
var controlForm = document.spellcheck;
|
||||
|
||||
// create a new controlWindow object
|
||||
controlWindowObj = new controlWindow( controlForm );
|
||||
|
||||
// call the init_spell() function in the parent frameset
|
||||
if( parent.frames.length ) {
|
||||
parent.init_spell( controlWindowObj );
|
||||
} else {
|
||||
alert( 'This page was loaded outside of a frameset. It might not display properly' );
|
||||
}
|
||||
}
|
||||
|
||||
</script>
|
||||
</head>
|
||||
<body class="controlWindowBody" onLoad="init_spell();" style="OVERFLOW: hidden" scroll="no"> <!-- by FredCK -->
|
||||
<form name="spellcheck">
|
||||
<table border="0" cellpadding="0" cellspacing="0" border="0" align="center">
|
||||
<tr>
|
||||
<td colspan="3" class="normalLabel"><span fckLang="DlgSpellNotInDic">Not in dictionary:</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3"><input class="readonlyInput" type="text" name="misword" readonly /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3" height="5"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="normalLabel"><span fckLang="DlgSpellChangeTo">Change to:</span></td>
|
||||
</tr>
|
||||
<tr valign="top">
|
||||
<td>
|
||||
<table border="0" cellpadding="0" cellspacing="0" border="0">
|
||||
<tr>
|
||||
<td class="normalLabel">
|
||||
<input class="textDefault" type="text" name="txtsugg" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<select class="suggSlct" name="sugg" size="7" onChange="suggText();" onDblClick="replace_word();">
|
||||
<option></option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td> </td>
|
||||
<td>
|
||||
<table border="0" cellpadding="0" cellspacing="0" border="0">
|
||||
<tr>
|
||||
<td>
|
||||
<input class="buttonDefault" type="button" fckLang="DlgSpellBtnIgnore" value="Ignore" onClick="ignore_word();">
|
||||
</td>
|
||||
<td> </td>
|
||||
<td>
|
||||
<input class="buttonDefault" type="button" fckLang="DlgSpellBtnIgnoreAll" value="Ignore All" onClick="ignore_all();">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3" height="5"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<input class="buttonDefault" type="button" fckLang="DlgSpellBtnReplace" value="Replace" onClick="replace_word();">
|
||||
</td>
|
||||
<td> </td>
|
||||
<td>
|
||||
<input class="buttonDefault" type="button" fckLang="DlgSpellBtnReplaceAll" value="Replace All" onClick="replace_all();">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3" height="5"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<input class="buttonDefault" type="button" name="btnUndo" fckLang="DlgSpellBtnUndo" value="Undo" onClick="undo();"
|
||||
disabled>
|
||||
</td>
|
||||
<td> </td>
|
||||
<td>
|
||||
<!-- by FredCK
|
||||
<input class="buttonDefault" type="button" value="Close" onClick="end_spell();">
|
||||
-->
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,148 @@
|
|||
<cfsetting enablecfoutputonly="true">
|
||||
<!---
|
||||
This code uses a CF User Defined Function and should work in CF version 5.0
|
||||
and up without alteration.
|
||||
|
||||
Also if you are hosting your site at an ISP, you will have to check with them
|
||||
to see if the use of <CFEXECUTE> is allowed. In most cases ISP will not allow
|
||||
the use of that tag for security reasons. Clients would be able to access each
|
||||
others files in certain cases.
|
||||
--->
|
||||
|
||||
<!--- The following variables values must reflect your installation. --->
|
||||
<cfset aspell_dir = "C:\Program Files\Aspell\bin">
|
||||
<cfset lang = "en_US">
|
||||
<cfset aspell_opts = "-a --lang=#lang# --encoding=utf-8 -H --rem-sgml-check=alt">
|
||||
<cfset tempfile_in = GetTempFile(GetTempDirectory(), "spell_")>
|
||||
<cfset tempfile_out = GetTempFile(GetTempDirectory(), "spell_")>
|
||||
<cfset spellercss = "../spellerStyle.css">
|
||||
<cfset word_win_src = "../wordWindow.js">
|
||||
|
||||
<cfset form.checktext = form["textinputs[]"]>
|
||||
|
||||
<!--- make no difference between URL and FORM scopes --->
|
||||
<cfparam name="url.checktext" default="">
|
||||
<cfparam name="form.checktext" default="#url.checktext#">
|
||||
|
||||
<!--- Takes care of those pesky smart quotes from MS apps, replaces them with regular quotes --->
|
||||
<cfset submitted_text = ReplaceList(form.checktext,"%u201C,%u201D","%22,%22")>
|
||||
|
||||
<!--- submitted_text now is ready for processing --->
|
||||
|
||||
<!--- use carat on each line to escape possible aspell commands --->
|
||||
<cfset text = "">
|
||||
<cfset CRLF = Chr(13) & Chr(10)>
|
||||
|
||||
<cfloop list="#submitted_text#" index="field" delimiters=",">
|
||||
<cfset text = text & "%" & CRLF
|
||||
& "^A" & CRLF
|
||||
& "!" & CRLF>
|
||||
<!--- Strip all tags for the text. (by FredCK - #339 / #681) --->
|
||||
<cfset field = REReplace(URLDecode(field), "<[^>]+>", " ", "all")>
|
||||
<cfloop list="#field#" index="line" delimiters="#CRLF#">
|
||||
<cfset text = ListAppend(text, "^" & Trim(JSStringFormat(line)), CRLF)>
|
||||
</cfloop>
|
||||
</cfloop>
|
||||
|
||||
<!--- create temp file from the submitted text, this will be passed to aspell to be check for misspelled words --->
|
||||
<cffile action="write" file="#tempfile_in#" output="#text#" charset="utf-8">
|
||||
|
||||
<!--- execute aspell in an UTF-8 console and redirect output to a file. UTF-8 encoding is lost if done differently --->
|
||||
<cfexecute name="cmd.exe" arguments='/c type "#tempfile_in#" | "#aspell_dir#\aspell.exe" #aspell_opts# > "#tempfile_out#"' timeout="100"/>
|
||||
|
||||
<!--- read output file for further processing --->
|
||||
<cffile action="read" file="#tempfile_out#" variable="food" charset="utf-8">
|
||||
|
||||
<!--- remove temp files --->
|
||||
<cffile action="delete" file="#tempfile_in#">
|
||||
<cffile action="delete" file="#tempfile_out#">
|
||||
|
||||
<cfset texts = StructNew()>
|
||||
<cfset texts.textinputs = "">
|
||||
<cfset texts.words = "">
|
||||
<cfset texts.abort = "">
|
||||
|
||||
<!--- Generate Text Inputs --->
|
||||
<cfset i = 0>
|
||||
<cfloop list="#submitted_text#" index="textinput">
|
||||
<cfset texts.textinputs = ListAppend(texts.textinputs, 'textinputs[#i#] = decodeURIComponent("#textinput#");', CRLF)>
|
||||
<cfset i = i + 1>
|
||||
</cfloop>
|
||||
|
||||
<!--- Generate Words Lists --->
|
||||
<cfset word_cnt = 0>
|
||||
<cfset input_cnt = -1>
|
||||
<cfloop list="#food#" index="aspell_line" delimiters="#CRLF#">
|
||||
<cfset leftChar = Left(aspell_line, 1)>
|
||||
<cfif leftChar eq "*">
|
||||
<cfset input_cnt = input_cnt + 1>
|
||||
<cfset word_cnt = 0>
|
||||
<cfset texts.words = ListAppend(texts.words, "words[#input_cnt#] = [];", CRLF)>
|
||||
<cfset texts.words = ListAppend(texts.words, "suggs[#input_cnt#] = [];", CRLF)>
|
||||
<cfelse>
|
||||
<cfif leftChar eq "&" or leftChar eq "##">
|
||||
<!--- word that misspelled --->
|
||||
<cfset bad_word = Trim(ListGetAt(aspell_line, 2, " "))>
|
||||
<cfset bad_word = Replace(bad_word, "'", "\'", "ALL")>
|
||||
<!--- sugestions --->
|
||||
<cfset sug_list = Trim(ListRest(aspell_line, ":"))>
|
||||
<cfset sug_list = ListQualify(Replace(sug_list, "'", "\'", "ALL"), "'")>
|
||||
<!--- javascript --->
|
||||
<cfset texts.words = ListAppend(texts.words, "words[#input_cnt#][#word_cnt#] = '#bad_word#';", CRLF)>
|
||||
<cfset texts.words = ListAppend(texts.words, "suggs[#input_cnt#][#word_cnt#] = [#sug_list#];", CRLF)>
|
||||
<cfset word_cnt = word_cnt + 1>
|
||||
</cfif>
|
||||
</cfif>
|
||||
</cfloop>
|
||||
|
||||
<cfif texts.words eq "">
|
||||
<cfset texts.abort = "alert('Spell check complete.\n\nNo misspellings found.'); top.window.close();">
|
||||
</cfif>
|
||||
|
||||
<cfcontent type="text/html; charset=utf-8">
|
||||
|
||||
<cfoutput><html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<link rel="stylesheet" type="text/css" href="#spellercss#" />
|
||||
<script language="javascript" src="#word_win_src#"></script>
|
||||
<script language="javascript">
|
||||
var suggs = new Array();
|
||||
var words = new Array();
|
||||
var textinputs = new Array();
|
||||
var error;
|
||||
|
||||
#texts.textinputs##CRLF#
|
||||
#texts.words#
|
||||
#texts.abort#
|
||||
|
||||
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();">
|
||||
|
||||
<script type="text/javascript">
|
||||
wordWindowObj.writeBody();
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html></cfoutput>
|
||||
<cfsetting enablecfoutputonly="false">
|
|
@ -0,0 +1,201 @@
|
|||
<?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 = '" . escape_quote( $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>
|
||||
|
||||
|
|
@ -0,0 +1,183 @@
|
|||
#!/usr/bin/perl
|
||||
|
||||
use CGI qw/ :standard /;
|
||||
use File::Temp qw/ tempfile tempdir /;
|
||||
|
||||
# my $spellercss = '/speller/spellerStyle.css'; # by FredCK
|
||||
my $spellercss = '../spellerStyle.css'; # by FredCK
|
||||
# my $wordWindowSrc = '/speller/wordWindow.js'; # by FredCK
|
||||
my $wordWindowSrc = '../wordWindow.js'; # by FredCK
|
||||
my @textinputs = param( 'textinputs[]' ); # array
|
||||
# my $aspell_cmd = 'aspell'; # by FredCK (for Linux)
|
||||
my $aspell_cmd = '"C:\Program Files\Aspell\bin\aspell.exe"'; # by FredCK (for Windows)
|
||||
my $lang = 'en_US';
|
||||
# my $aspell_opts = "-a --lang=$lang --encoding=utf-8"; # by FredCK
|
||||
my $aspell_opts = "-a --lang=$lang --encoding=utf-8 -H --rem-sgml-check=alt"; # by FredCK
|
||||
my $input_separator = "A";
|
||||
|
||||
# set the 'wordtext' JavaScript variable to the submitted text.
|
||||
sub printTextVar {
|
||||
for( my $i = 0; $i <= $#textinputs; $i++ ) {
|
||||
print "textinputs[$i] = decodeURIComponent('" . escapeQuote( $textinputs[$i] ) . "')\n";
|
||||
}
|
||||
}
|
||||
|
||||
sub printTextIdxDecl {
|
||||
my $idx = shift;
|
||||
print "words[$idx] = [];\n";
|
||||
print "suggs[$idx] = [];\n";
|
||||
}
|
||||
|
||||
sub printWordsElem {
|
||||
my( $textIdx, $wordIdx, $word ) = @_;
|
||||
print "words[$textIdx][$wordIdx] = '" . escapeQuote( $word ) . "';\n";
|
||||
}
|
||||
|
||||
sub printSuggsElem {
|
||||
my( $textIdx, $wordIdx, @suggs ) = @_;
|
||||
print "suggs[$textIdx][$wordIdx] = [";
|
||||
for my $i ( 0..$#suggs ) {
|
||||
print "'" . escapeQuote( $suggs[$i] ) . "'";
|
||||
if( $i < $#suggs ) {
|
||||
print ", ";
|
||||
}
|
||||
}
|
||||
print "];\n";
|
||||
}
|
||||
|
||||
sub printCheckerResults {
|
||||
my $textInputIdx = -1;
|
||||
my $wordIdx = 0;
|
||||
my $unhandledText;
|
||||
# create temp file
|
||||
my $dir = tempdir( CLEANUP => 1 );
|
||||
my( $fh, $tmpfilename ) = tempfile( DIR => $dir );
|
||||
|
||||
# temp file was created properly?
|
||||
|
||||
# open temp file, add the submitted text.
|
||||
for( my $i = 0; $i <= $#textinputs; $i++ ) {
|
||||
$text = url_decode( $textinputs[$i] );
|
||||
# Strip all tags for the text. (by FredCK - #339 / #681)
|
||||
$text =~ s/<[^>]+>/ /g;
|
||||
@lines = split( /\n/, $text );
|
||||
print $fh "\%\n"; # exit terse mode
|
||||
print $fh "^$input_separator\n";
|
||||
print $fh "!\n"; # enter terse mode
|
||||
for my $line ( @lines ) {
|
||||
# use carat on each line to escape possible aspell commands
|
||||
print $fh "^$line\n";
|
||||
}
|
||||
|
||||
}
|
||||
# exec aspell command
|
||||
my $cmd = "$aspell_cmd $aspell_opts < $tmpfilename 2>&1";
|
||||
open ASPELL, "$cmd |" or handleError( "Could not execute `$cmd`\\n$!" ) and return;
|
||||
# parse each line of aspell return
|
||||
for my $ret ( <ASPELL> ) {
|
||||
chomp( $ret );
|
||||
# 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( $ret =~ /^\*/ ) {
|
||||
$textInputIdx++;
|
||||
printTextIdxDecl( $textInputIdx );
|
||||
$wordIdx = 0;
|
||||
|
||||
} elsif( $ret =~ /^(&|#)/ ) {
|
||||
my @tokens = split( " ", $ret, 5 );
|
||||
printWordsElem( $textInputIdx, $wordIdx, $tokens[1] );
|
||||
my @suggs = ();
|
||||
if( $tokens[4] ) {
|
||||
@suggs = split( ", ", $tokens[4] );
|
||||
}
|
||||
printSuggsElem( $textInputIdx, $wordIdx, @suggs );
|
||||
$wordIdx++;
|
||||
} else {
|
||||
$unhandledText .= $ret;
|
||||
}
|
||||
}
|
||||
close ASPELL or handleError( "Error executing `$cmd`\\n$unhandledText" ) and return;
|
||||
}
|
||||
|
||||
sub escapeQuote {
|
||||
my $str = shift;
|
||||
$str =~ s/'/\\'/g;
|
||||
return $str;
|
||||
}
|
||||
|
||||
sub handleError {
|
||||
my $err = shift;
|
||||
print "error = '" . escapeQuote( $err ) . "';\n";
|
||||
}
|
||||
|
||||
sub url_decode {
|
||||
local $_ = @_ ? shift : $_;
|
||||
defined or return;
|
||||
# change + signs to spaces
|
||||
tr/+/ /;
|
||||
# change hex escapes to the proper characters
|
||||
s/%([a-fA-F0-9]{2})/pack "H2", $1/eg;
|
||||
return $_;
|
||||
}
|
||||
|
||||
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
|
||||
# Display HTML
|
||||
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
|
||||
|
||||
print <<EOF;
|
||||
Content-type: text/html; charset=utf-8
|
||||
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<link rel="stylesheet" type="text/css" href="$spellercss"/>
|
||||
<script src="$wordWindowSrc"></script>
|
||||
<script type="text/javascript">
|
||||
var suggs = new Array();
|
||||
var words = new Array();
|
||||
var textinputs = new Array();
|
||||
var error;
|
||||
EOF
|
||||
|
||||
printTextVar();
|
||||
|
||||
printCheckerResults();
|
||||
|
||||
print <<EOF;
|
||||
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 {
|
||||
error = "This page was loaded outside of a frameset. ";
|
||||
error += "It might not display properly";
|
||||
alert( error );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
</head>
|
||||
<body onLoad="init_spell();">
|
||||
|
||||
<script type="text/javascript">
|
||||
wordWindowObj.writeBody();
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
EOF
|
||||
|
||||
|
|
@ -0,0 +1,462 @@
|
|||
////////////////////////////////////////////////////
|
||||
// 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;
|
||||
}
|
||||
|
|
@ -0,0 +1,71 @@
|
|||
|
||||
<script>
|
||||
|
||||
var wordWindow = null;
|
||||
var controlWindow = null;
|
||||
|
||||
function init_spell( spellerWindow ) {
|
||||
|
||||
if( spellerWindow ) {
|
||||
if( spellerWindow.windowType == "wordWindow" ) {
|
||||
wordWindow = spellerWindow;
|
||||
} else if ( spellerWindow.windowType == "controlWindow" ) {
|
||||
controlWindow = spellerWindow;
|
||||
}
|
||||
}
|
||||
|
||||
if( controlWindow && wordWindow ) {
|
||||
// populate the speller object and start it off!
|
||||
var speller = opener.speller;
|
||||
wordWindow.speller = speller;
|
||||
speller.startCheck( wordWindow, controlWindow );
|
||||
}
|
||||
}
|
||||
|
||||
// encodeForPost
|
||||
function encodeForPost( str ) {
|
||||
var s = new String( str );
|
||||
s = encodeURIComponent( s );
|
||||
// additionally encode single quotes to evade any PHP
|
||||
// magic_quotes_gpc setting (it inserts escape characters and
|
||||
// therefore skews the btye positions of misspelled words)
|
||||
return s.replace( /\'/g, '%27' );
|
||||
}
|
||||
|
||||
// post the text area data to the script that populates the speller
|
||||
function postWords() {
|
||||
var bodyDoc = window.frames[0].document;
|
||||
bodyDoc.open();
|
||||
bodyDoc.write('<html>');
|
||||
bodyDoc.write('<meta http-equiv="Content-Type" content="text/html; charset=utf-8">');
|
||||
bodyDoc.write('<link rel="stylesheet" type="text/css" href="spellerStyle.css"/>');
|
||||
if (opener) {
|
||||
var speller = opener.speller;
|
||||
bodyDoc.write('<body class="normalText" onLoad="document.forms[0].submit();">');
|
||||
bodyDoc.write('<p>' + window.parent.FCKLang.DlgSpellProgress + '<\/p>'); // by FredCK
|
||||
bodyDoc.write('<form action="'+speller.spellCheckScript+'" method="post">');
|
||||
for( var i = 0; i < speller.textInputs.length; i++ ) {
|
||||
bodyDoc.write('<input type="hidden" name="textinputs[]" value="'+encodeForPost(speller.textInputs[i].value)+'">');
|
||||
}
|
||||
bodyDoc.write('<\/form>');
|
||||
bodyDoc.write('<\/body>');
|
||||
} else {
|
||||
bodyDoc.write('<body class="normalText">');
|
||||
bodyDoc.write('<p><b>This page cannot be displayed<\/b><\/p><p>The window was not opened from another window.<\/p>');
|
||||
bodyDoc.write('<\/body>');
|
||||
}
|
||||
bodyDoc.write('<\/html>');
|
||||
bodyDoc.close();
|
||||
}
|
||||
</script>
|
||||
|
||||
<html>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<head>
|
||||
<title>Speller Pages</title>
|
||||
</head>
|
||||
<frameset rows="*,201" onLoad="postWords();">
|
||||
<frame src="blank.html">
|
||||
<frame src="controls.html">
|
||||
</frameset>
|
||||
</html>
|
|
@ -0,0 +1,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;
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
}
|
293
FCKeditor/editor/dialog/fck_table.html
Normal file
|
@ -0,0 +1,293 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
|
||||
<!--
|
||||
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
||||
* Copyright (C) 2003-2007 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 oEditor = window.parent.InnerDialogLoaded() ;
|
||||
|
||||
// Gets the document DOM
|
||||
var oDOM = oEditor.FCK.EditorDocument ;
|
||||
|
||||
// Gets the table if there is one selected.
|
||||
var table ;
|
||||
var e = oEditor.FCKSelection.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 ;
|
||||
}
|
||||
|
||||
window.parent.SetOkButton( true ) ;
|
||||
window.parent.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>
|
255
FCKeditor/editor/dialog/fck_tablecell.html
Normal file
|
@ -0,0 +1,255 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
|
||||
<!--
|
||||
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
||||
* Copyright (C) 2003-2007 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 oEditor = window.parent.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() ;
|
||||
|
||||
window.parent.SetOkButton( true ) ;
|
||||
window.parent.SetAutoSize( true ) ;
|
||||
}
|
||||
|
||||
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', 400, 330, 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>
|
242
FCKeditor/editor/dialog/fck_template.html
Normal 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-2007 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>
|
BIN
FCKeditor/editor/dialog/fck_template/images/template1.gif
Normal file
After Width: | Height: | Size: 375 B |
BIN
FCKeditor/editor/dialog/fck_template/images/template2.gif
Normal file
After Width: | Height: | Size: 333 B |
BIN
FCKeditor/editor/dialog/fck_template/images/template3.gif
Normal file
After Width: | Height: | Size: 422 B |
96
FCKeditor/editor/dialog/fck_textarea.html
Normal file
|
@ -0,0 +1,96 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
|
||||
<!--
|
||||
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
||||
* Copyright (C) 2003-2007 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 oEditor = window.parent.InnerDialogLoaded() ;
|
||||
|
||||
// Gets the document DOM
|
||||
var oDOM = oEditor.FCK.EditorDocument ;
|
||||
|
||||
var oActiveEl = oEditor.FCKSelection.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 ;
|
||||
|
||||
window.parent.SetOkButton( true ) ;
|
||||
window.parent.SetAutoSize( true ) ;
|
||||
}
|
||||
|
||||
function Ok()
|
||||
{
|
||||
oEditor.FCKUndo.SaveUndoStep() ;
|
||||
|
||||
if ( !oActiveEl )
|
||||
{
|
||||
oActiveEl = oEditor.FCK.InsertElement( 'textarea' ) ;
|
||||
}
|
||||
|
||||
oActiveEl.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>
|
141
FCKeditor/editor/dialog/fck_textfield.html
Normal file
|
@ -0,0 +1,141 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
|
||||
<!--
|
||||
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
||||
* Copyright (C) 2003-2007 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 oEditor = window.parent.InnerDialogLoaded() ;
|
||||
|
||||
// Gets the document DOM
|
||||
var oDOM = oEditor.FCK.EditorDocument ;
|
||||
|
||||
var oActiveEl = oEditor.FCKSelection.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 ;
|
||||
|
||||
GetE('txtType').disabled = true ;
|
||||
}
|
||||
else
|
||||
oActiveEl = null ;
|
||||
|
||||
window.parent.SetOkButton( true ) ;
|
||||
window.parent.SetAutoSize( true ) ;
|
||||
}
|
||||
|
||||
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 ;
|
||||
}
|
||||
|
||||
if ( !oActiveEl )
|
||||
{
|
||||
oActiveEl = oEditor.FCK.EditorDocument.createElement( 'INPUT' ) ;
|
||||
oActiveEl.type = GetE('txtType').value ;
|
||||
oEditor.FCKUndo.SaveUndoStep() ;
|
||||
oActiveEl = oEditor.FCK.InsertElement( oActiveEl ) ;
|
||||
}
|
||||
|
||||
oActiveEl.name = GetE('txtName').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>
|