mirror of
https://github.com/EGroupware/egroupware.git
synced 2024-12-23 07:09:20 +01:00
Deleting fckeditor in order to import 2.5 adapted
This commit is contained in:
parent
18790b1362
commit
0bbb81840d
@ -1,38 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<!--
|
||||
* 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 ==
|
||||
-->
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<title>FCKeditor - Documentation</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<style type="text/css">
|
||||
body { font-family: arial, verdana, sans-serif }
|
||||
p { margin-left: 20px }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1>
|
||||
FCKeditor Documentation</h1>
|
||||
<p>
|
||||
You can find the official documentation for FCKeditor online, at <a href="http://wiki.fckeditor.net/">
|
||||
http://wiki.fckeditor.net/</a>.</p>
|
||||
</body>
|
||||
</html>
|
@ -1,38 +0,0 @@
|
||||
/*
|
||||
* 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 sample plugin definition file.
|
||||
*/
|
||||
|
||||
// Register the related commands.
|
||||
FCKCommands.RegisterCommand( 'My_Find' , new FCKDialogCommand( FCKLang['DlgMyFindTitle'] , FCKLang['DlgMyFindTitle'] , FCKConfig.PluginsPath + 'findreplace/find.html' , 340, 170 ) ) ;
|
||||
FCKCommands.RegisterCommand( 'My_Replace' , new FCKDialogCommand( FCKLang['DlgMyReplaceTitle'], FCKLang['DlgMyReplaceTitle'] , FCKConfig.PluginsPath + 'findreplace/replace.html', 340, 200 ) ) ;
|
||||
|
||||
// Create the "Find" toolbar button.
|
||||
var oFindItem = new FCKToolbarButton( 'My_Find', FCKLang['DlgMyFindTitle'] ) ;
|
||||
oFindItem.IconPath = FCKConfig.PluginsPath + 'findreplace/find.gif' ;
|
||||
|
||||
FCKToolbarItems.RegisterItem( 'My_Find', oFindItem ) ; // 'My_Find' is the name used in the Toolbar config.
|
||||
|
||||
// Create the "Replace" toolbar button.
|
||||
var oReplaceItem = new FCKToolbarButton( 'My_Replace', FCKLang['DlgMyReplaceTitle'] ) ;
|
||||
oReplaceItem.IconPath = FCKConfig.PluginsPath + 'findreplace/replace.gif' ;
|
||||
|
||||
FCKToolbarItems.RegisterItem( 'My_Replace', oReplaceItem ) ; // 'My_Replace' is the name used in the Toolbar config.
|
Binary file not shown.
Before Width: | Height: | Size: 595 B |
@ -1,172 +0,0 @@
|
||||
<!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 is the sample "Find" plugin window.
|
||||
-->
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta content="noindex, nofollow" name="robots">
|
||||
<script type="text/javascript">
|
||||
|
||||
var oEditor = window.parent.InnerDialogLoaded() ;
|
||||
|
||||
function OnLoad()
|
||||
{
|
||||
// Whole word is available on IE only.
|
||||
if ( oEditor.FCKBrowserInfo.IsIE )
|
||||
document.getElementById('divWord').style.display = '' ;
|
||||
|
||||
// First of all, translate the dialog box texts.
|
||||
oEditor.FCKLanguageManager.TranslatePage( document ) ;
|
||||
|
||||
window.parent.SetAutoSize( true ) ;
|
||||
}
|
||||
|
||||
function btnStat(frm)
|
||||
{
|
||||
document.getElementById('btnFind').disabled =
|
||||
( document.getElementById('txtFind').value.length == 0 ) ;
|
||||
}
|
||||
|
||||
function ReplaceTextNodes( parentNode, regex, replaceValue, replaceAll )
|
||||
{
|
||||
for ( var i = 0 ; i < parentNode.childNodes.length ; i++ )
|
||||
{
|
||||
var oNode = parentNode.childNodes[i] ;
|
||||
if ( oNode.nodeType == 3 )
|
||||
{
|
||||
var sReplaced = oNode.nodeValue.replace( regex, replaceValue ) ;
|
||||
if ( oNode.nodeValue != sReplaced )
|
||||
{
|
||||
oNode.nodeValue = sReplaced ;
|
||||
if ( ! replaceAll )
|
||||
return true ;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( ReplaceTextNodes( oNode, regex, replaceValue ) )
|
||||
return true ;
|
||||
}
|
||||
}
|
||||
return false ;
|
||||
}
|
||||
|
||||
function GetRegexExpr()
|
||||
{
|
||||
if ( document.getElementById('chkWord').checked )
|
||||
var sExpr = '\\b' + document.getElementById('txtFind').value + '\\b' ;
|
||||
else
|
||||
var sExpr = document.getElementById('txtFind').value ;
|
||||
|
||||
return sExpr ;
|
||||
}
|
||||
|
||||
function GetCase()
|
||||
{
|
||||
return ( document.getElementById('chkCase').checked ? '' : 'i' ) ;
|
||||
}
|
||||
|
||||
function Ok()
|
||||
{
|
||||
if ( document.getElementById('txtFind').value.length == 0 )
|
||||
return ;
|
||||
|
||||
if ( oEditor.FCKBrowserInfo.IsIE )
|
||||
FindIE() ;
|
||||
else
|
||||
FindGecko() ;
|
||||
}
|
||||
|
||||
var oRange = null ;
|
||||
|
||||
function FindIE()
|
||||
{
|
||||
if ( oRange == null )
|
||||
oRange = oEditor.FCK.EditorDocument.body.createTextRange() ;
|
||||
|
||||
var iFlags = 0 ;
|
||||
|
||||
if ( chkCase.checked )
|
||||
iFlags = iFlags | 4 ;
|
||||
|
||||
if ( chkWord.checked )
|
||||
iFlags = iFlags | 2 ;
|
||||
|
||||
var bFound = oRange.findText( document.getElementById('txtFind').value, 1, iFlags ) ;
|
||||
|
||||
if ( bFound )
|
||||
{
|
||||
oRange.scrollIntoView() ;
|
||||
oRange.select() ;
|
||||
oRange.collapse(false) ;
|
||||
oLastRangeFound = oRange ;
|
||||
}
|
||||
else
|
||||
{
|
||||
oRange = null ;
|
||||
alert( oEditor.FCKLang.DlgFindNotFoundMsg ) ;
|
||||
}
|
||||
}
|
||||
|
||||
function FindGecko()
|
||||
{
|
||||
var bCase = document.getElementById('chkCase').checked ;
|
||||
var bWord = document.getElementById('chkWord').checked ;
|
||||
|
||||
// window.find( searchString, caseSensitive, backwards, wrapAround, wholeWord, searchInFrames, showDialog ) ;
|
||||
oEditor.FCK.EditorWindow.find( document.getElementById('txtFind').value, bCase, false, false, bWord, false, false ) ;
|
||||
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body onload="OnLoad()" scroll="no" style="OVERFLOW: hidden">
|
||||
<div align="center">
|
||||
This is my Plugin!
|
||||
</div>
|
||||
<table cellSpacing="3" cellPadding="2" width="100%" border="0">
|
||||
<tr>
|
||||
<td nowrap>
|
||||
<label for="txtFind" fckLang="DlgMyReplaceFindLbl">Find what:</label>
|
||||
</td>
|
||||
<td width="100%">
|
||||
<input id="txtFind" onkeyup="btnStat(this.form)" style="WIDTH: 100%" tabIndex="1" type="text">
|
||||
</td>
|
||||
<td>
|
||||
<input id="btnFind" style="WIDTH: 100%; PADDING-RIGHT: 5px; PADDING-LEFT: 5px" disabled
|
||||
onclick="Ok();" type="button" value="Find" fckLang="DlgMyFindFindBtn">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="bottom" colSpan="3">
|
||||
<input id="chkCase" tabIndex="3" type="checkbox"><label for="chkCase" fckLang="DlgMyReplaceCaseChk">Match
|
||||
case</label>
|
||||
<br>
|
||||
<div id="divWord" style="DISPLAY: none">
|
||||
<input id="chkWord" tabIndex="4" type="checkbox"><label for="chkWord" fckLang="DlgMyReplaceWordChk">Match
|
||||
whole word</label>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
@ -1,33 +0,0 @@
|
||||
/*
|
||||
* 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 ==
|
||||
*
|
||||
* English language file for the sample plugin.
|
||||
*/
|
||||
|
||||
FCKLang['DlgMyReplaceTitle'] = 'Plugin - Replace' ;
|
||||
FCKLang['DlgMyReplaceFindLbl'] = 'Find what:' ;
|
||||
FCKLang['DlgMyReplaceReplaceLbl'] = 'Replace with:' ;
|
||||
FCKLang['DlgMyReplaceCaseChk'] = 'Match case' ;
|
||||
FCKLang['DlgMyReplaceReplaceBtn'] = 'Replace' ;
|
||||
FCKLang['DlgMyReplaceReplAllBtn'] = 'Replace All' ;
|
||||
FCKLang['DlgMyReplaceWordChk'] = 'Match whole word' ;
|
||||
|
||||
FCKLang['DlgMyFindTitle'] = 'Plugin - Find' ;
|
||||
FCKLang['DlgMyFindFindBtn'] = 'Find' ;
|
@ -1,33 +0,0 @@
|
||||
/*
|
||||
* 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 ==
|
||||
*
|
||||
* French language file for the sample plugin.
|
||||
*/
|
||||
|
||||
FCKLang['DlgMyReplaceTitle'] = 'Plugin - Remplacer' ;
|
||||
FCKLang['DlgMyReplaceFindLbl'] = 'Chercher:' ;
|
||||
FCKLang['DlgMyReplaceReplaceLbl'] = 'Remplacer par:' ;
|
||||
FCKLang['DlgMyReplaceCaseChk'] = 'Respecter la casse' ;
|
||||
FCKLang['DlgMyReplaceReplaceBtn'] = 'Remplacer' ;
|
||||
FCKLang['DlgMyReplaceReplAllBtn'] = 'Remplacer Tout' ;
|
||||
FCKLang['DlgMyReplaceWordChk'] = 'Mot entier' ;
|
||||
|
||||
FCKLang['DlgMyFindTitle'] = 'Plugin - Chercher' ;
|
||||
FCKLang['DlgMyFindFindBtn'] = 'Chercher' ;
|
@ -1,33 +0,0 @@
|
||||
/*
|
||||
* 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 ==
|
||||
*
|
||||
* Italian language file for the sample plugin.
|
||||
*/
|
||||
|
||||
FCKLang['DlgMyReplaceTitle'] = 'Plugin - Sostituisci' ;
|
||||
FCKLang['DlgMyReplaceFindLbl'] = 'Trova:' ;
|
||||
FCKLang['DlgMyReplaceReplaceLbl'] = 'Sostituisci con:' ;
|
||||
FCKLang['DlgMyReplaceCaseChk'] = 'Maiuscole/minuscole' ;
|
||||
FCKLang['DlgMyReplaceReplaceBtn'] = 'Sostituisci' ;
|
||||
FCKLang['DlgMyReplaceReplAllBtn'] = 'Sostituisci tutto' ;
|
||||
FCKLang['DlgMyReplaceWordChk'] = 'Parola intera' ;
|
||||
|
||||
FCKLang['DlgMyFindTitle'] = 'Plugin - Cerca' ;
|
||||
FCKLang['DlgMyFindFindBtn'] = 'Cerca' ;
|
Binary file not shown.
Before Width: | Height: | Size: 326 B |
@ -1,135 +0,0 @@
|
||||
<!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 is the sample "Replace" plugin window.
|
||||
-->
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta content="noindex, nofollow" name="robots">
|
||||
<script type="text/javascript">
|
||||
|
||||
var oEditor = window.parent.InnerDialogLoaded() ;
|
||||
|
||||
function OnLoad()
|
||||
{
|
||||
// First of all, translate the dialog box texts
|
||||
oEditor.FCKLanguageManager.TranslatePage( document ) ;
|
||||
|
||||
window.parent.SetAutoSize( true ) ;
|
||||
}
|
||||
|
||||
function btnStat(frm)
|
||||
{
|
||||
document.getElementById('btnReplace').disabled =
|
||||
document.getElementById('btnReplaceAll').disabled =
|
||||
( document.getElementById('txtFind').value.length == 0 ) ;
|
||||
}
|
||||
|
||||
function ReplaceTextNodes( parentNode, regex, replaceValue, replaceAll, hasFound )
|
||||
{
|
||||
for ( var i = 0 ; i < parentNode.childNodes.length ; i++ )
|
||||
{
|
||||
var oNode = parentNode.childNodes[i] ;
|
||||
if ( oNode.nodeType == 3 )
|
||||
{
|
||||
var sReplaced = oNode.nodeValue.replace( regex, replaceValue ) ;
|
||||
if ( oNode.nodeValue != sReplaced )
|
||||
{
|
||||
oNode.nodeValue = sReplaced ;
|
||||
if ( ! replaceAll )
|
||||
return true ;
|
||||
hasFound = true ;
|
||||
}
|
||||
}
|
||||
|
||||
hasFound = ReplaceTextNodes( oNode, regex, replaceValue, replaceAll, hasFound ) ;
|
||||
if ( ! replaceAll && hasFound )
|
||||
return true ;
|
||||
}
|
||||
|
||||
return hasFound ;
|
||||
}
|
||||
|
||||
function GetRegexExpr()
|
||||
{
|
||||
if ( document.getElementById('chkWord').checked )
|
||||
var sExpr = '\\b' + document.getElementById('txtFind').value + '\\b' ;
|
||||
else
|
||||
var sExpr = document.getElementById('txtFind').value ;
|
||||
|
||||
return sExpr ;
|
||||
}
|
||||
|
||||
function GetCase()
|
||||
{
|
||||
return ( document.getElementById('chkCase').checked ? '' : 'i' ) ;
|
||||
}
|
||||
|
||||
function Replace()
|
||||
{
|
||||
var oRegex = new RegExp( GetRegexExpr(), GetCase() ) ;
|
||||
ReplaceTextNodes( oEditor.FCK.EditorDocument.body, oRegex, document.getElementById('txtReplace').value, false ) ;
|
||||
}
|
||||
|
||||
function ReplaceAll()
|
||||
{
|
||||
var oRegex = new RegExp( GetRegexExpr(), GetCase() + 'g' ) ;
|
||||
ReplaceTextNodes( oEditor.FCK.EditorDocument.body, oRegex, document.getElementById('txtReplace').value, true ) ;
|
||||
window.parent.Cancel() ;
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body onload="OnLoad()" scroll="no" style="OVERFLOW: hidden">
|
||||
<div align="center">
|
||||
This is my Plugin!
|
||||
</div>
|
||||
<table cellSpacing="3" cellPadding="2" width="100%" border="0">
|
||||
<tr>
|
||||
<td noWrap><label for="txtFind" fckLang="DlgMyReplaceFindLbl">Find what:</label>
|
||||
</td>
|
||||
<td width="100%"><input id="txtFind" onkeyup="btnStat(this.form)" style="WIDTH: 100%" tabIndex="1" type="text">
|
||||
</td>
|
||||
<td><input id="btnReplace" style="WIDTH: 100%" disabled onclick="Replace();" type="button"
|
||||
value="Replace" fckLang="DlgMyReplaceReplaceBtn">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td vAlign="top" nowrap><label for="txtReplace" fckLang="DlgMyReplaceReplaceLbl">Replace
|
||||
with:</label>
|
||||
</td>
|
||||
<td vAlign="top"><input id="txtReplace" style="WIDTH: 100%" tabIndex="2" type="text">
|
||||
</td>
|
||||
<td><input id="btnReplaceAll" disabled onclick="ReplaceAll()" type="button" value="Replace All"
|
||||
fckLang="DlgMyReplaceReplAllBtn">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td vAlign="bottom" colSpan="3"> <input id="chkCase" tabIndex="3" type="checkbox"><label for="chkCase" fckLang="DlgMyReplaceCaseChk">Match
|
||||
case</label>
|
||||
<br>
|
||||
<input id="chkWord" tabIndex="4" type="checkbox"><label for="chkWord" fckLang="DlgMyReplaceWordChk">Match
|
||||
whole word</label>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
@ -1,73 +0,0 @@
|
||||
/*
|
||||
* 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 a sample plugin definition file.
|
||||
*/
|
||||
|
||||
// Here we define our custom Style combo, with custom widths.
|
||||
var oMyBigStyleCombo = new FCKToolbarStyleCombo() ;
|
||||
oMyBigStyleCombo.FieldWidth = 250 ;
|
||||
oMyBigStyleCombo.PanelWidth = 300 ;
|
||||
FCKToolbarItems.RegisterItem( 'My_BigStyle', oMyBigStyleCombo ) ;
|
||||
|
||||
|
||||
// ##### Defining a custom context menu entry.
|
||||
|
||||
// ## 1. Define the command to be executed when selecting the context menu item.
|
||||
var oMyCMCommand = new Object() ;
|
||||
oMyCMCommand.Name = 'OpenImage' ;
|
||||
|
||||
// This is the standard function used to execute the command (called when clicking in the context menu item).
|
||||
oMyCMCommand.Execute = function()
|
||||
{
|
||||
// This command is called only when an image element is selected (IMG).
|
||||
// Get image URL (src).
|
||||
var sUrl = FCKSelection.GetSelectedElement().src ;
|
||||
|
||||
// Open the URL in a new window.
|
||||
window.top.open( sUrl ) ;
|
||||
}
|
||||
|
||||
// This is the standard function used to retrieve the command state (it could be disabled for some reason).
|
||||
oMyCMCommand.GetState = function()
|
||||
{
|
||||
// Let's make it always enabled.
|
||||
return FCK_TRISTATE_OFF ;
|
||||
}
|
||||
|
||||
// ## 2. Register our custom command.
|
||||
FCKCommands.RegisterCommand( 'OpenImage', oMyCMCommand ) ;
|
||||
|
||||
// ## 3. Define the context menu "listener".
|
||||
var oMyContextMenuListener = new Object() ;
|
||||
|
||||
// This is the standard function called right before sowing the context menu.
|
||||
oMyContextMenuListener.AddItems = function( contextMenu, tag, tagName )
|
||||
{
|
||||
// Let's show our custom option only for images.
|
||||
if ( tagName == 'IMG' )
|
||||
{
|
||||
contextMenu.AddSeparator() ;
|
||||
contextMenu.AddItem( 'OpenImage', 'Open image in a new window (Custom)' ) ;
|
||||
}
|
||||
}
|
||||
|
||||
// ## 4. Register our context menu listener.
|
||||
FCK.ContextMenu.RegisterListener( oMyContextMenuListener ) ;
|
@ -1 +0,0 @@
|
||||
<application ID="fck"/>
|
@ -1,166 +0,0 @@
|
||||
* 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 class definition file for the sample pages.
|
||||
*
|
||||
|
||||
DEFINE CLASS fckeditor AS custom
|
||||
cInstanceName =""
|
||||
BasePath =""
|
||||
cWIDTH =""
|
||||
cHEIGHT =""
|
||||
ToolbarSet =""
|
||||
cValue=""
|
||||
DIMENSION aConfig(10,2)
|
||||
|
||||
&& -----------------------------------------------------------------------
|
||||
FUNCTION fckeditor( tcInstanceName )
|
||||
LOCAL lnLoop,lnLoop2
|
||||
THIS.cInstanceName = tcInstanceName
|
||||
THIS.BasePath = '../../../FCKeditor/'
|
||||
THIS.cWIDTH = '100%'
|
||||
THIS.cHEIGHT = '200'
|
||||
THIS.ToolbarSet = 'Default'
|
||||
THIS.cValue = ''
|
||||
FOR lnLoop=1 TO 10
|
||||
FOR lnLoop2=1 TO 2
|
||||
THIS.aConfig(lnLoop,lnLoop2) = ""
|
||||
NEXT
|
||||
NEXT
|
||||
RETURN
|
||||
ENDFUNC
|
||||
|
||||
|
||||
&& -----------------------------------------------------------------------
|
||||
FUNCTION CREATE()
|
||||
RETURN(THIS.CreateHtml())
|
||||
ENDFUNC
|
||||
|
||||
&& -----------------------------------------------------------------------
|
||||
FUNCTION CreateHtml()
|
||||
LOCAL html
|
||||
LOCAL lcLink
|
||||
|
||||
HtmlValue = THIS.cValue && HTMLSPECIALCHARS()
|
||||
|
||||
html = [<div>]
|
||||
IF THIS.IsCompatible()
|
||||
lcLink = THIS.BasePath+[editor/fckeditor.html?InstanceName=]+THIS.cInstanceName
|
||||
|
||||
IF ( !THIS.ToolbarSet == '' )
|
||||
lcLink = lcLink + [&Toolbar=]+THIS.ToolbarSet
|
||||
ENDIF
|
||||
|
||||
&& Render the LINKED HIDDEN FIELD.
|
||||
html = html + [<input type="hidden" id="]+THIS.cInstanceName +[" name="]+THIS.cInstanceName +[" value="]+HtmlValue+[">]
|
||||
|
||||
&& Render the configurations HIDDEN FIELD.
|
||||
html = html + [<input type="hidden" id="]+THIS.cInstanceName +[___Config" value="]+THIS.GetConfigFieldString() + [">] +CHR(13)+CHR(10)
|
||||
|
||||
&& Render the EDITOR IFRAME.
|
||||
html = html + [<iframe id="]+THIS.cInstanceName +[___Frame" src="]+lcLink+[" width="]+THIS.cWIDTH+[" height="]+THIS.cHEIGHT+[" frameborder="no" scrolling="no"></iframe>]
|
||||
ELSE
|
||||
IF ( AT("%", THIS.cWIDTH)=0 )
|
||||
WidthCSS = THIS.cWIDTH + 'px'
|
||||
ELSE
|
||||
WidthCSS = THIS.cWIDTH
|
||||
ENDIF
|
||||
|
||||
IF ( AT("%",THIS.cHEIGHT)=0 )
|
||||
HeightCSS = THIS.cHEIGHT + 'px'
|
||||
ELSE
|
||||
HeightCSS = THIS.cHEIGHT
|
||||
ENDIF
|
||||
|
||||
html = html + [<textarea name="]+THIS.cInstanceName +[" rows="4" cols="40" style="width: ]+WidthCSS+[ height: ]+HeightCSS+[" wrap="virtual">]+HtmlValue+[</textarea>]
|
||||
ENDIF
|
||||
|
||||
html = html + [</div>]
|
||||
|
||||
RETURN (html)
|
||||
ENDFUNC
|
||||
|
||||
|
||||
&& -----------------------------------------------------------------------
|
||||
FUNCTION IsCompatible()
|
||||
LOCAL llRetval
|
||||
LOCAL sAgent
|
||||
|
||||
llRetval=.F.
|
||||
|
||||
sAgent= LOWER(Request.ServerVariables("HTTP_USER_AGENT"))
|
||||
|
||||
IF AT("msie",sAgent) >0 .AND. AT("mac",sAgent)=0 .AND. AT("opera",sAgent)=0
|
||||
iVersion=VAL(SUBSTR(sAgent,AT("msie",sAgent)+5,3))
|
||||
llRetval= iVersion > 5.5
|
||||
ELSE
|
||||
IF AT("gecko",sAgent)>0
|
||||
iVersion=VAL(SUBSTR(sAgent,AT("gecko/",sAgent)+6,8))
|
||||
llRetval =iVersion > 20030210
|
||||
ENDIF
|
||||
ENDIF
|
||||
RETURN (llRetval)
|
||||
ENDFUNC
|
||||
|
||||
&& -----------------------------------------------------------------------
|
||||
FUNCTION GetConfigFieldString()
|
||||
LOCAL sParams
|
||||
LOCAL bFirst
|
||||
LOCAL sKey
|
||||
sParams = ""
|
||||
bFirst = .T.
|
||||
FOR lnLoop=1 TO 10 && ALEN(this.aconfig)
|
||||
IF !EMPTY(THIS.aConfig(lnLoop,1))
|
||||
IF bFirst = .F.
|
||||
sParams = sParams + "&"
|
||||
ELSE
|
||||
bFirst = .F.
|
||||
ENDIF
|
||||
sParams = sParams +THIS.aConfig(lnLoop,1)+[=]+THIS.aConfig(lnLoop,2)
|
||||
ELSE
|
||||
EXIT
|
||||
ENDIF
|
||||
NEXT
|
||||
RETURN(sParams)
|
||||
ENDFUNC
|
||||
&& -----------------------------------------------------------------------
|
||||
&& This function removes unwanted characters in URL parameters mostly entered by hackers
|
||||
|
||||
FUNCTION StripAttacks
|
||||
LPARAMETERS tcString
|
||||
IF !EMPTY(tcString)
|
||||
tcString=STRTRAN(tcString,"&","")
|
||||
tcString=STRTRAN(tcString,"?","")
|
||||
tcString=STRTRAN(tcString,";","")
|
||||
tcString=STRTRAN(tcString,"!","")
|
||||
tcString=STRTRAN(tcString,"<%","")
|
||||
tcString=STRTRAN(tcString,"%>","")
|
||||
tcString=STRTRAN(tcString,"<","")
|
||||
tcString=STRTRAN(tcString,">","")
|
||||
tcString=STRTRAN(tcString,"..","")
|
||||
tcString=STRTRAN(tcString,"/","")
|
||||
tcString=STRTRAN(tcString,"\","")
|
||||
tcString=STRTRAN(tcString,":","")
|
||||
ELSE
|
||||
tcString=""
|
||||
ENDIF
|
||||
RETURN (tcString)
|
||||
|
||||
ENDDEFINE
|
||||
|
@ -1,56 +0,0 @@
|
||||
<%
|
||||
* 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 page lists the data posted by a form.
|
||||
*
|
||||
%>
|
||||
|
||||
<html>
|
||||
<head>
|
||||
<title>FCKeditor - AFP Sample 1</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
<link href="../sample.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<h1>FCKeditor - AFP - Sample 1</h1>
|
||||
This sample displays a normal HTML form with an FCKeditor with full features enabled.
|
||||
<hr>
|
||||
<form action="sampleposteddata.afp" method="post" target="_blank">
|
||||
<%
|
||||
|
||||
sBasePath="../../../fckeditor/" && Change this to your local path
|
||||
|
||||
lcText=[This is some <strong>sample text</strong>. You are using ]
|
||||
lcText=lcText+[<a href='http://www.fckeditor.net/'>FCKeditor</a>.]
|
||||
|
||||
oFCKeditor = CREATEOBJECT("FCKeditor")
|
||||
oFCKeditor.fckeditor("FCKeditor1")
|
||||
oFCKeditor.BasePath = sBasePath
|
||||
oFCKeditor.cValue = lcText
|
||||
|
||||
? oFCKeditor.Create()
|
||||
|
||||
%>
|
||||
<br>
|
||||
<input type="submit" value="Submit">
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
@ -1,113 +0,0 @@
|
||||
<%
|
||||
* 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 page is a basic Sample for FCKeditor integration in the AFP script language (www.afpages.de)
|
||||
*
|
||||
%>
|
||||
|
||||
<html>
|
||||
<head>
|
||||
<title>FCKeditor - AFP Sample 2</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
<link href="../sample.css" rel="stylesheet" type="text/css" />
|
||||
|
||||
<script type="text/javascript">
|
||||
function FCKeditor_OnComplete( editorInstance )
|
||||
{
|
||||
var oCombo = document.getElementById( 'cmbLanguages' ) ;
|
||||
for ( code in editorInstance.Language.AvailableLanguages )
|
||||
{
|
||||
AddComboOption( oCombo, editorInstance.Language.AvailableLanguages[code] + ' (' + code + ')', code ) ;
|
||||
}
|
||||
oCombo.value = editorInstance.Language.ActiveLanguage.Code ;
|
||||
}
|
||||
|
||||
function AddComboOption(combo, optionText, optionValue)
|
||||
{
|
||||
var oOption = document.createElement("OPTION") ;
|
||||
|
||||
combo.options.add(oOption) ;
|
||||
|
||||
oOption.innerHTML = optionText ;
|
||||
oOption.value = optionValue ;
|
||||
|
||||
return oOption ;
|
||||
}
|
||||
|
||||
function ChangeLanguage( languageCode )
|
||||
{
|
||||
window.location.href = window.location.pathname + "?Lang=" + languageCode ;
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<h1>FCKeditor - AFP - Sample 2</h1>
|
||||
This sample shows the editor in all its available languages.
|
||||
<hr>
|
||||
<table cellpadding="0" cellspacing="0" border="0">
|
||||
<tr>
|
||||
<td>
|
||||
Select a language:
|
||||
</td>
|
||||
<td>
|
||||
<select id="cmbLanguages" onchange="ChangeLanguage(this.value);">
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
<form action="sampleposteddata.afp" method="post" target="_blank">
|
||||
<%
|
||||
|
||||
sBasePath="../../../fckeditor/" && Change this to your local path
|
||||
|
||||
oFCKeditor = CREATEOBJECT("FCKeditor")
|
||||
oFCKeditor.fckeditor("FCKeditor1")
|
||||
|
||||
lcLanguage="" && Initialize Variable
|
||||
lcLanguage=request.querystring("Lang") && Request Parameter
|
||||
lcLanguage=oFCKeditor.StripAttacks(lcLanguage) && Remove special escape characters
|
||||
IF EMPTY(lcLanguage)
|
||||
oFCKeditor.aconfig[1,1]="AutoDetectLanguage"
|
||||
oFCKeditor.aconfig[1,2]="true"
|
||||
oFCKeditor.aconfig[2,1]="DefaultLanguage"
|
||||
oFCKeditor.aconfig[2,2]="en"
|
||||
ELSE
|
||||
oFCKeditor.aconfig[1,1]="AutoDetectLanguage"
|
||||
oFCKeditor.aconfig[1,2]="false"
|
||||
oFCKeditor.aconfig[2,1]="DefaultLanguage"
|
||||
oFCKeditor.aconfig[2,2]=lcLanguage
|
||||
ENDIF
|
||||
|
||||
lcText=[This is some <strong>sample text</strong>. You are using ]
|
||||
lcText=lcText+[<a href='http://www.fckeditor.net/'>FCKeditor</a>.]
|
||||
|
||||
oFCKeditor.BasePath = sBasePath
|
||||
oFCKeditor.cValue = lcText
|
||||
|
||||
? oFCKeditor.Create()
|
||||
|
||||
%>
|
||||
<br>
|
||||
<input type="submit" value="Submit">
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
@ -1,91 +0,0 @@
|
||||
<%
|
||||
* 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 page is a basic Sample for FCKeditor integration in the AFP script language (www.afpages.de)
|
||||
*
|
||||
%>
|
||||
|
||||
<html>
|
||||
<head>
|
||||
<title>FCKeditor - AFP Sample 3</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
<link href="../sample.css" rel="stylesheet" type="text/css" />
|
||||
|
||||
<script type="text/javascript">
|
||||
function FCKeditor_OnComplete( editorInstance )
|
||||
{
|
||||
var oCombo = document.getElementById( 'cmbToolbars' ) ;
|
||||
oCombo.value = editorInstance.ToolbarSet.Name ;
|
||||
oCombo.style.visibility = '' ;
|
||||
}
|
||||
|
||||
function ChangeToolbar( toolbarName )
|
||||
{
|
||||
window.location.href = window.location.pathname + "?Toolbar=" + toolbarName ;
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<h1>FCKeditor - AFP - Sample 3</h1>
|
||||
This sample shows how to change the editor toolbar.
|
||||
<hr>
|
||||
<table cellpadding="0" cellspacing="0" border="0">
|
||||
<tr>
|
||||
<td>
|
||||
Select the toolbar to load:
|
||||
</td>
|
||||
<td>
|
||||
<select id="cmbToolbars" onchange="ChangeToolbar(this.value);" style="VISIBILITY: hidden">
|
||||
<option value="Default" selected>Default</option>
|
||||
<option value="Basic">Basic</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
<form action="sampleposteddata.afp" method="post" target="_blank">
|
||||
<%
|
||||
|
||||
sBasePath="../../../fckeditor/" && Change this to your local path
|
||||
|
||||
oFCKeditor = CREATEOBJECT("FCKeditor")
|
||||
oFCKeditor.fckeditor("FCKeditor1")
|
||||
|
||||
lcToolbar=request.querystring("Toolbar") && Request Parameter
|
||||
lcToolbar=oFCKeditor.StripAttacks(lcToolbar) && Remove special escape characters
|
||||
IF !EMPTY(lcToolbar)
|
||||
oFCKeditor.ToolbarSet=lcToolbar
|
||||
ENDIF
|
||||
|
||||
lcText=[This is some <strong>sample text</strong>. You are using ]
|
||||
lcText=lcText+[<a href='http://www.fckeditor.net/'>FCKeditor</a>.]
|
||||
|
||||
oFCKeditor.BasePath = sBasePath
|
||||
oFCKeditor.cValue = lcText
|
||||
|
||||
? oFCKeditor.Create()
|
||||
|
||||
%>
|
||||
<br>
|
||||
<input type="submit" value="Submit">
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
@ -1,98 +0,0 @@
|
||||
<%
|
||||
* 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 page is a basic Sample for FCKeditor integration in the AFP script language (www.afpages.de)
|
||||
*
|
||||
%>
|
||||
|
||||
<html>
|
||||
<head>
|
||||
<title>FCKeditor - AFP Sample 4</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
<link href="../sample.css" rel="stylesheet" type="text/css" />
|
||||
|
||||
<script type="text/javascript">
|
||||
function FCKeditor_OnComplete( editorInstance )
|
||||
{
|
||||
var oCombo = document.getElementById( 'cmbSkins' ) ;
|
||||
|
||||
// Get the active skin.
|
||||
var sSkin = editorInstance.Config['SkinPath'] ;
|
||||
sSkin = sSkin.match( /[^\/]+(?=\/$)/g ) ;
|
||||
|
||||
oCombo.value = sSkin ;
|
||||
oCombo.style.visibility = '' ;
|
||||
}
|
||||
|
||||
function ChangeSkin( skinName )
|
||||
{
|
||||
window.location.href = window.location.pathname + "?Skin=" + skinName ;
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<h1>FCKeditor - AFP - Sample 4</h1>
|
||||
This sample shows how to change the editor skin.
|
||||
<hr>
|
||||
<table cellpadding="0" cellspacing="0" border="0">
|
||||
<tr>
|
||||
<td>
|
||||
Select the skin to load:
|
||||
</td>
|
||||
<td>
|
||||
<select id="cmbSkins" onchange="ChangeSkin(this.value);" style="VISIBILITY: hidden">
|
||||
<option value="default" selected>Default</option>
|
||||
<option value="office2003">Office 2003</option>
|
||||
<option value="silver">Silver</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
<form action="sampleposteddata.afp" method="post" target="_blank">
|
||||
<%
|
||||
|
||||
sBasePath="../../../fckeditor/" && <-- Change this to your local path
|
||||
|
||||
oFCKeditor = CREATEOBJECT("FCKeditor")
|
||||
oFCKeditor.fckeditor("FCKeditor1")
|
||||
|
||||
lcSkin=request.querystring("Skin") && Request Parameter
|
||||
lcSkin=oFCKeditor.StripAttacks(lcSkin) && Remove special escape characters
|
||||
IF !EMPTY(lcSkin)
|
||||
oFCKeditor.aconfig[1,1]="SkinPath"
|
||||
oFCKeditor.aconfig[1,2]="/fckeditor/editor/skins/"+lcSkin+"/" && <-- Change this to your local path
|
||||
ENDIF
|
||||
|
||||
lcText=[This is some <strong>sample text</strong>. You are using ]
|
||||
lcText=lcText+[<a href='http://www.fckeditor.net/'>FCKeditor</a>.]
|
||||
|
||||
oFCKeditor.BasePath = sBasePath
|
||||
oFCKeditor.cValue = lcText
|
||||
|
||||
? oFCKeditor.Create()
|
||||
|
||||
%>
|
||||
<br>
|
||||
<input type="submit" value="Submit">
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
@ -1,60 +0,0 @@
|
||||
<%
|
||||
* 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 page lists the data posted by a form.
|
||||
*
|
||||
%>
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||
<html>
|
||||
<head>
|
||||
<title>FCKeditor - AFP - Samples - Posted Data</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
<link href="../sample.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<h1>FCKeditor - Samples - Posted Data</h1>
|
||||
This page lists all data posted by the form.
|
||||
<hr>
|
||||
<table width="100%" border="1" cellspacing="0" bordercolor="#999999">
|
||||
<tr style="FONT-WEIGHT: bold; COLOR: #dddddd; BACKGROUND-COLOR: #999999">
|
||||
<td nowrap>Field Name </td>
|
||||
<td>Value</td>
|
||||
</tr>
|
||||
<%
|
||||
lcForm=REQUEST.Form()
|
||||
lcForm=STRTRAN(lcForm,"&",CHR(13)+CHR(10))
|
||||
|
||||
FOR lnLoop=1 TO MEMLINES(lcForm)
|
||||
lcZeile=ALLTRIM(MLINE(lcForm,lnLoop))
|
||||
IF AT("=",lcZeile)>0
|
||||
lcVariable=UPPER(ALLTRIM(LEFT(lcZeile,AT("=",lcZeile)-1)))
|
||||
lcWert=ALLTRIM(RIGHT(lcZeile,LEN(lcZeile)-AT("=",lcZeile)))
|
||||
lcWert=Server.UrlDecode( lcWert )
|
||||
lcWert=STRTRAN(lcWert,"<","<")
|
||||
lcWert=STRTRAN(lcWert,">",">") && ... if wanted remove/translate HTML Chars ...
|
||||
|
||||
? [<tr><td>]+lcVariable+[ =</td><td>]+lcWert+[</td></tr>]
|
||||
ENDIF
|
||||
NEXT
|
||||
%>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
@ -1,62 +0,0 @@
|
||||
<%@ codepage="65001" language="VBScript" %>
|
||||
<% Option Explicit %>
|
||||
<!--
|
||||
* 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 ==
|
||||
*
|
||||
* Sample page.
|
||||
-->
|
||||
<% ' You must set "Enable Parent Paths" on your web site in order this relative include to work. %>
|
||||
<!-- #INCLUDE file="../../fckeditor.asp" -->
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<title>FCKeditor - Sample</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="robots" content="noindex, nofollow" />
|
||||
<link href="../sample.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<h1>
|
||||
FCKeditor - ASP - Sample 1
|
||||
</h1>
|
||||
<div>
|
||||
This sample displays a normal HTML form with an FCKeditor with full features enabled.
|
||||
</div>
|
||||
<hr />
|
||||
<form action="sampleposteddata.asp" method="post" target="_blank">
|
||||
<%
|
||||
' Automatically calculates the editor base path based on the _samples directory.
|
||||
' This is usefull only for these samples. A real application should use something like this:
|
||||
' oFCKeditor.BasePath = '/fckeditor/' ; // '/fckeditor/' is the default value.
|
||||
Dim sBasePath
|
||||
sBasePath = Request.ServerVariables("PATH_INFO")
|
||||
sBasePath = Left( sBasePath, InStrRev( sBasePath, "/_samples" ) )
|
||||
|
||||
Dim oFCKeditor
|
||||
Set oFCKeditor = New FCKeditor
|
||||
oFCKeditor.BasePath = sBasePath
|
||||
oFCKeditor.Value = "This is some <strong>sample text</strong>. You are using <a href=""http://www.fckeditor.net/"">FCKeditor</a>."
|
||||
oFCKeditor.Create "FCKeditor1"
|
||||
%>
|
||||
<br />
|
||||
<input type="submit" value="Submit" />
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
@ -1,108 +0,0 @@
|
||||
<%@ CodePage=65001 Language="VBScript"%>
|
||||
<% Option Explicit %>
|
||||
<!--
|
||||
* 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 ==
|
||||
*
|
||||
* Sample page.
|
||||
-->
|
||||
<% ' You must set "Enable Parent Paths" on your web site in order this relative include to work. %>
|
||||
<!-- #INCLUDE file="../../fckeditor.asp" -->
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||
<html>
|
||||
<head>
|
||||
<title>FCKeditor - Sample</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
<link href="../sample.css" rel="stylesheet" type="text/css" />
|
||||
<script type="text/javascript">
|
||||
|
||||
function FCKeditor_OnComplete( editorInstance )
|
||||
{
|
||||
var oCombo = document.getElementById( 'cmbLanguages' ) ;
|
||||
for ( code in editorInstance.Language.AvailableLanguages )
|
||||
{
|
||||
AddComboOption( oCombo, editorInstance.Language.AvailableLanguages[code] + ' (' + code + ')', code ) ;
|
||||
}
|
||||
oCombo.value = editorInstance.Language.ActiveLanguage.Code ;
|
||||
}
|
||||
|
||||
function AddComboOption(combo, optionText, optionValue)
|
||||
{
|
||||
var oOption = document.createElement("OPTION") ;
|
||||
|
||||
combo.options.add(oOption) ;
|
||||
|
||||
oOption.innerHTML = optionText ;
|
||||
oOption.value = optionValue ;
|
||||
|
||||
return oOption ;
|
||||
}
|
||||
|
||||
function ChangeLanguage( languageCode )
|
||||
{
|
||||
window.location.href = window.location.pathname + "?Lang=" + languageCode ;
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<h1>FCKeditor - ASP - Sample 2</h1>
|
||||
This sample shows the editor in all its available languages.
|
||||
<hr>
|
||||
<table cellpadding="0" cellspacing="0" border="0">
|
||||
<tr>
|
||||
<td>
|
||||
Select a language:
|
||||
</td>
|
||||
<td>
|
||||
<select id="cmbLanguages" onchange="ChangeLanguage(this.value);">
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
<form action="sampleposteddata.asp" method="post" target="_blank">
|
||||
<%
|
||||
' Automatically calculates the editor base path based on the _samples directory.
|
||||
' This is usefull only for these samples. A real application should use something like this:
|
||||
' oFCKeditor.BasePath = '/fckeditor/' ; // '/fckeditor/' is the default value.
|
||||
Dim sBasePath
|
||||
sBasePath = Request.ServerVariables("PATH_INFO")
|
||||
sBasePath = Left( sBasePath, InStrRev( sBasePath, "/_samples" ) )
|
||||
|
||||
Dim oFCKeditor
|
||||
Set oFCKeditor = New FCKeditor
|
||||
oFCKeditor.BasePath = sBasePath
|
||||
|
||||
If Request.QueryString("Lang") = "" Then
|
||||
oFCKeditor.Config("AutoDetectLanguage") = True
|
||||
oFCKeditor.Config("DefaultLanguage") = "en"
|
||||
Else
|
||||
oFCKeditor.Config("AutoDetectLanguage") = False
|
||||
oFCKeditor.Config("DefaultLanguage") = Request.QueryString("Lang")
|
||||
End If
|
||||
|
||||
oFCKeditor.Value = "This is some <strong>sample text</strong>. You are using <a href=""http://www.fckeditor.net/"">FCKeditor</a>."
|
||||
oFCKeditor.Create "FCKeditor1"
|
||||
%>
|
||||
<br>
|
||||
<input type="submit" value="Submit">
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
@ -1,92 +0,0 @@
|
||||
<%@ CodePage=65001 Language="VBScript"%>
|
||||
<% Option Explicit %>
|
||||
<!--
|
||||
* 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 ==
|
||||
*
|
||||
* Sample page.
|
||||
-->
|
||||
<% ' You must set "Enable Parent Paths" on your web site in order this relative include to work. %>
|
||||
<!-- #INCLUDE file="../../fckeditor.asp" -->
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||
<html>
|
||||
<head>
|
||||
<title>FCKeditor - Sample</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
<link href="../sample.css" rel="stylesheet" type="text/css" />
|
||||
<script type="text/javascript">
|
||||
|
||||
function FCKeditor_OnComplete( editorInstance )
|
||||
{
|
||||
var oCombo = document.getElementById( 'cmbToolbars' ) ;
|
||||
oCombo.value = editorInstance.ToolbarSet.Name ;
|
||||
oCombo.style.visibility = '' ;
|
||||
}
|
||||
|
||||
function ChangeToolbar( toolbarName )
|
||||
{
|
||||
window.location.href = window.location.pathname + "?Toolbar=" + toolbarName ;
|
||||
}
|
||||
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<h1>FCKeditor - ASP - Sample 3</h1>
|
||||
This sample shows how to change the editor toolbar.
|
||||
<hr>
|
||||
<table cellpadding="0" cellspacing="0" border="0">
|
||||
<tr>
|
||||
<td>
|
||||
Select the toolbar to load:
|
||||
</td>
|
||||
<td>
|
||||
<select id="cmbToolbars" onchange="ChangeToolbar(this.value);" style="VISIBILITY: hidden">
|
||||
<option value="Default" selected>Default</option>
|
||||
<option value="Basic">Basic</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
<form action="sampleposteddata.asp" method="post" target="_blank">
|
||||
<%
|
||||
' Automatically calculates the editor base path based on the _samples directory.
|
||||
' This is usefull only for these samples. A real application should use something like this:
|
||||
' oFCKeditor.BasePath = '/fckeditor/' ; // '/fckeditor/' is the default value.
|
||||
Dim sBasePath
|
||||
sBasePath = Request.ServerVariables("PATH_INFO")
|
||||
sBasePath = Left( sBasePath, InStrRev( sBasePath, "/_samples" ) )
|
||||
|
||||
Dim oFCKeditor
|
||||
Set oFCKeditor = New FCKeditor
|
||||
oFCKeditor.BasePath = sBasePath
|
||||
|
||||
If Request.QueryString("Toolbar") <> "" Then
|
||||
oFCKeditor.ToolbarSet = Server.HTMLEncode( Request.QueryString("Toolbar") )
|
||||
End If
|
||||
|
||||
oFCKeditor.Value = "This is some <strong>sample text</strong>. You are using <a href=""http://www.fckeditor.net/"">FCKeditor</a>."
|
||||
oFCKeditor.Create "FCKeditor1"
|
||||
%>
|
||||
<br>
|
||||
<input type="submit" value="Submit">
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
@ -1,98 +0,0 @@
|
||||
<%@ CodePage=65001 Language="VBScript"%>
|
||||
<% Option Explicit %>
|
||||
<!--
|
||||
* 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 ==
|
||||
*
|
||||
* Sample page.
|
||||
-->
|
||||
<% ' You must set "Enable Parent Paths" on your web site in order this relative include to work. %>
|
||||
<!-- #INCLUDE file="../../fckeditor.asp" -->
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||
<html>
|
||||
<head>
|
||||
<title>FCKeditor - Sample</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
<link href="../sample.css" rel="stylesheet" type="text/css" />
|
||||
<script type="text/javascript">
|
||||
|
||||
function FCKeditor_OnComplete( editorInstance )
|
||||
{
|
||||
var oCombo = document.getElementById( 'cmbSkins' ) ;
|
||||
|
||||
// Get the active skin.
|
||||
var sSkin = editorInstance.Config['SkinPath'] ;
|
||||
sSkin = sSkin.match( /[^\/]+(?=\/$)/g ) ;
|
||||
|
||||
oCombo.value = sSkin ;
|
||||
oCombo.style.visibility = '' ;
|
||||
}
|
||||
|
||||
function ChangeSkin( skinName )
|
||||
{
|
||||
window.location.href = window.location.pathname + "?Skin=" + skinName ;
|
||||
}
|
||||
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<h1>FCKeditor - ASP - Sample 4</h1>
|
||||
This sample shows how to change the editor skin.
|
||||
<hr>
|
||||
<table cellpadding="0" cellspacing="0" border="0">
|
||||
<tr>
|
||||
<td>
|
||||
Select the skin to load:
|
||||
</td>
|
||||
<td>
|
||||
<select id="cmbSkins" onchange="ChangeSkin(this.value);" style="VISIBILITY: hidden">
|
||||
<option value="default" selected>Default</option>
|
||||
<option value="office2003">Office 2003</option>
|
||||
<option value="silver">Silver</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
<form action="sampleposteddata.asp" method="post" target="_blank">
|
||||
<%
|
||||
' Automatically calculates the editor base path based on the _samples directory.
|
||||
' This is usefull only for these samples. A real application should use something like this:
|
||||
' oFCKeditor.BasePath = '/fckeditor/' ; // '/fckeditor/' is the default value.
|
||||
Dim sBasePath
|
||||
sBasePath = Request.ServerVariables("PATH_INFO")
|
||||
sBasePath = Left( sBasePath, InStrRev( sBasePath, "/_samples" ) )
|
||||
|
||||
Dim oFCKeditor
|
||||
Set oFCKeditor = New FCKeditor
|
||||
oFCKeditor.BasePath = sBasePath
|
||||
|
||||
If Request.QueryString("Skin") <> "" Then
|
||||
oFCKeditor.Config("SkinPath") = sBasePath + "editor/skins/" & Server.HTMLEncode( Request.QueryString("Skin") ) + "/"
|
||||
End If
|
||||
|
||||
oFCKeditor.Value = "This is some <strong>sample text</strong>. You are using <a href=""http://www.fckeditor.net/"">FCKeditor</a>."
|
||||
oFCKeditor.Create "FCKeditor1"
|
||||
%>
|
||||
<br>
|
||||
<input type="submit" value="Submit">
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
@ -1,53 +0,0 @@
|
||||
<%@ CodePage=65001 Language="VBScript"%>
|
||||
<% Option Explicit %>
|
||||
<!--
|
||||
* 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 page lists the data posted by a form.
|
||||
-->
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||
<html>
|
||||
<head>
|
||||
<title>FCKeditor - Samples - Posted Data</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
<link href="../sample.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<h1>FCKeditor - Samples - Posted Data</h1>
|
||||
This page lists all data posted by the form.
|
||||
<hr>
|
||||
<table width="100%" border="1" cellspacing="0" bordercolor="#999999">
|
||||
<tr style="FONT-WEIGHT: bold; COLOR: #dddddd; BACKGROUND-COLOR: #999999">
|
||||
<td noWrap>Field Name </td>
|
||||
<td>Value</td>
|
||||
</tr>
|
||||
<%
|
||||
Dim sForm
|
||||
For Each sForm in Request.Form
|
||||
%>
|
||||
<tr>
|
||||
<td valign="top" nowrap><b><%=sForm%></b></td>
|
||||
<td width="100%"><%=Server.HTMLEncode( Request.Form(sForm) )%></td>
|
||||
</tr>
|
||||
<% Next %>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
@ -1,87 +0,0 @@
|
||||
<cfsetting enablecfoutputonly="true" showdebugoutput="false">
|
||||
<!---
|
||||
* 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 ==
|
||||
*
|
||||
* Sample page for ColdFusion.
|
||||
--->
|
||||
|
||||
<cfoutput>
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
<html>
|
||||
<head>
|
||||
<title>FCKeditor - Sample</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
<link href="../sample.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<h1>FCKeditor - ColdFusion - Sample 1</h1>
|
||||
|
||||
This sample displays a normal HTML form with a FCKeditor with full features enabled; invoked by a ColdFusion Custom Tag / Module.
|
||||
<hr>
|
||||
<form method="POST" action="#cgi.script_name#">
|
||||
</cfoutput>
|
||||
|
||||
<cfmodule
|
||||
template="../../fckeditor.cfm"
|
||||
basePath="#Left(cgi.script_name, FindNoCase('_samples', cgi.script_name)-1)#"
|
||||
instanceName="myEditor"
|
||||
value='This is some sample text. You are using <a href="http://fckeditor.net/" target="_blank">FCKeditor</a>.'
|
||||
width="100%"
|
||||
height="200"
|
||||
>
|
||||
<cfoutput>
|
||||
<br />
|
||||
<input type="submit" value="Submit">
|
||||
<br />
|
||||
</form>
|
||||
</cfoutput>
|
||||
|
||||
<cfif isDefined( 'FORM.fieldnames' )>
|
||||
<cfoutput>
|
||||
<hr />
|
||||
<style>
|
||||
<!--
|
||||
td, th { font: 11px Verdana, Arial, Helv, Helvetica, sans-serif; }
|
||||
-->
|
||||
</style>
|
||||
<table border="1" cellspacing="0" cellpadding="2" bordercolor="darkblue" bordercolordark="darkblue" bordercolorlight="darkblue">
|
||||
<tr>
|
||||
<th colspan="2" bgcolor="darkblue"><font color="white"><strong>Dump of FORM Variables</strong></font></th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td bgcolor="lightskyblue">FieldNames</td>
|
||||
<td>#FORM.fieldNames#</td>
|
||||
</tr>
|
||||
<cfloop list="#FORM.fieldnames#" index="key">
|
||||
<tr>
|
||||
<td valign="top" bgcolor="lightskyblue">#key#</td>
|
||||
<td>#HTMLEditFormat(evaluate("FORM.#key#"))#</td>
|
||||
</tr>
|
||||
</cfloop>
|
||||
</table>
|
||||
</cfoutput>
|
||||
</cfif>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
<cfsetting enablecfoutputonly="false">
|
@ -1,93 +0,0 @@
|
||||
<cfsetting enablecfoutputonly="true">
|
||||
<!---
|
||||
* 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 ==
|
||||
*
|
||||
* Sample page for ColdFusion MX.
|
||||
--->
|
||||
|
||||
<!--- ::
|
||||
* You must set the url path to the base directory for your media files (images, flash, files)
|
||||
* The best position for this variable is in your Application.cfm file
|
||||
*
|
||||
* Possible variable scopes are:
|
||||
* <cfset APPLICATION.userFilesPath = "/userfiles/">
|
||||
* OR:
|
||||
* <cfset SERVER.userFilesPath = "/userfiles/">
|
||||
* OR:
|
||||
* <cfset request.FCKeditor.userFilesPath = "/userfiles/">
|
||||
* OR:
|
||||
* <cfset application.FCKeditor.userFilesPath = "/userfiles/">
|
||||
* OR:
|
||||
* <cfset server.FCKeditor.userFilesPath = "/userfiles/">
|
||||
*
|
||||
* Note #1: Do _not_ set the physical directory on your server, only a path relative to your current webroot
|
||||
* Note #2: Directories will be automatically created
|
||||
:: --->
|
||||
|
||||
<cfoutput>
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
<html>
|
||||
<head>
|
||||
<title>FCKeditor - Sample</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
<link href="../sample.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<h1>FCKeditor - ColdFusion Component (CFC) - Sample 2</h1>
|
||||
|
||||
This sample displays a normal HTML form with a FCKeditor with full features enabled; invoked by a ColdFusion Component.
|
||||
<hr>
|
||||
|
||||
<form method="POST" action="#cgi.script_name#">
|
||||
</cfoutput>
|
||||
|
||||
<cfif listFirst( server.coldFusion.productVersion ) LT 6>
|
||||
<cfoutput><br><em style="color: red;">This sample works only with a ColdFusion MX server and higher, because it uses some advantages of this version.</em></cfoutput>
|
||||
<cfabort>
|
||||
</cfif>
|
||||
|
||||
<cfscript>
|
||||
// Calculate basepath for FCKeditor. It's in the folder right above _samples
|
||||
basePath = Left(cgi.script_name, FindNoCase('_samples', cgi.script_name)-1);
|
||||
|
||||
fckEditor = createObject("component", "#basePath#fckeditor");
|
||||
fckEditor.instanceName = "myEditor";
|
||||
fckEditor.value = 'This is some sample text. You are using <a href="http://fckeditor.net/" target="_blank">FCKeditor</a>.';
|
||||
fckEditor.basePath = basePath;
|
||||
fckEditor.width = "100%";
|
||||
fckEditor.height = 300;
|
||||
fckEditor.create(); // create the editor.
|
||||
</cfscript>
|
||||
|
||||
<cfoutput>
|
||||
<br />
|
||||
<input type="submit" value="Submit">
|
||||
<hr />
|
||||
</cfoutput>
|
||||
|
||||
<cfdump
|
||||
var="#FORM#"
|
||||
label="Dump of FORM Variables"
|
||||
>
|
||||
|
||||
<cfoutput></form></body></html></cfoutput>
|
||||
|
||||
<cfsetting enablecfoutputonly="false">
|
@ -1,34 +0,0 @@
|
||||
<!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 ==
|
||||
*
|
||||
* Samples Frameset page.
|
||||
-->
|
||||
<html>
|
||||
<head>
|
||||
<title>FCKeditor - Samples</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
</head>
|
||||
<frameset rows="60,*">
|
||||
<frame src="sampleslist.html" noresize scrolling="no">
|
||||
<frame name="Sample" src="html/sample01.html" noresize>
|
||||
</frameset>
|
||||
</html>
|
@ -1,59 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<!--
|
||||
* 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 ==
|
||||
*
|
||||
* Sample page.
|
||||
-->
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<title>FCKeditor - Sample</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="robots" content="noindex, nofollow" />
|
||||
<link href="../sample.css" rel="stylesheet" type="text/css" />
|
||||
<script type="text/javascript" src="../../fckeditor.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<h1>
|
||||
FCKeditor - JavaScript - Sample 1
|
||||
</h1>
|
||||
<div>
|
||||
This sample displays a normal HTML form with an FCKeditor with full features enabled.
|
||||
</div>
|
||||
<hr />
|
||||
<form action="sampleposteddata.asp" method="post" target="_blank">
|
||||
<script type="text/javascript">
|
||||
<!--
|
||||
// Automatically calculates the editor base path based on the _samples directory.
|
||||
// This is usefull only for these samples. A real application should use something like this:
|
||||
// oFCKeditor.BasePath = '/fckeditor/' ; // '/fckeditor/' is the default value.
|
||||
var sBasePath = document.location.pathname.substring(0,document.location.pathname.lastIndexOf('_samples')) ;
|
||||
|
||||
var oFCKeditor = new FCKeditor( 'FCKeditor1' ) ;
|
||||
oFCKeditor.BasePath = sBasePath ;
|
||||
oFCKeditor.Height = 300 ;
|
||||
oFCKeditor.Value = 'This is some <strong>sample text<\/strong>. You are using <a href="http://www.fckeditor.net/">FCKeditor<\/a>.' ;
|
||||
oFCKeditor.Create() ;
|
||||
//-->
|
||||
</script>
|
||||
<br />
|
||||
<input type="submit" value="Submit" />
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
@ -1,63 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<!--
|
||||
* 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 ==
|
||||
*
|
||||
* Sample page.
|
||||
-->
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<title>FCKeditor - Sample</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="robots" content="noindex, nofollow" />
|
||||
<link href="../sample.css" rel="stylesheet" type="text/css" />
|
||||
<script type="text/javascript" src="../../fckeditor.js"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
window.onload = function()
|
||||
{
|
||||
// Automatically calculates the editor base path based on the _samples directory.
|
||||
// This is usefull only for these samples. A real application should use something like this:
|
||||
// oFCKeditor.BasePath = '/fckeditor/' ; // '/fckeditor/' is the default value.
|
||||
var sBasePath = document.location.pathname.substring(0,document.location.pathname.lastIndexOf('_samples')) ;
|
||||
|
||||
var oFCKeditor = new FCKeditor( 'FCKeditor1' ) ;
|
||||
oFCKeditor.BasePath = sBasePath ;
|
||||
oFCKeditor.ReplaceTextarea() ;
|
||||
}
|
||||
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<h1>
|
||||
FCKeditor - JavaScript - Sample 2</h1>
|
||||
<div>
|
||||
This sample displays a normal HTML form with an FCKeditor with full features enabled.
|
||||
It uses the "ReplaceTextarea" command to create the editor.
|
||||
</div>
|
||||
<hr />
|
||||
<form action="sampleposteddata.asp" method="post" target="_blank">
|
||||
<div>
|
||||
<textarea name="FCKeditor1" rows="10" cols="80" style="width: 100%; height: 200px">This is some <strong>sample text</strong>. You are using <a href="http://www.fckeditor.net/">FCKeditor</a>.</textarea>
|
||||
</div>
|
||||
<br />
|
||||
<input type="submit" value="Submit" />
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
@ -1,136 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<!--
|
||||
* 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 ==
|
||||
*
|
||||
* Sample page.
|
||||
-->
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<title>FCKeditor - Sample</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="robots" content="noindex, nofollow" />
|
||||
<link href="../sample.css" rel="stylesheet" type="text/css" />
|
||||
<script type="text/javascript" src="../../fckeditor.js"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
var bIsLoaded = false ;
|
||||
|
||||
function FCKeditor_OnComplete( editorInstance )
|
||||
{
|
||||
if ( bIsLoaded )
|
||||
return ;
|
||||
|
||||
var oCombo = document.getElementById( 'cmbLanguages' ) ;
|
||||
|
||||
var aLanguages = new Array() ;
|
||||
|
||||
for ( code in editorInstance.Language.AvailableLanguages )
|
||||
aLanguages.push( { Code : code, Name : editorInstance.Language.AvailableLanguages[code] } ) ;
|
||||
|
||||
aLanguages.sort( SortLanguage ) ;
|
||||
|
||||
for ( var i = 0 ; i < aLanguages.length ; i++ )
|
||||
AddComboOption( oCombo, aLanguages[i].Name + ' (' + aLanguages[i].Code + ')', aLanguages[i].Code ) ;
|
||||
|
||||
oCombo.value = editorInstance.Language.ActiveLanguage.Code ;
|
||||
|
||||
document.getElementById('eNumLangs').innerHTML = '(' + aLanguages.length + ' languages available!)' ;
|
||||
|
||||
bIsLoaded = true ;
|
||||
}
|
||||
|
||||
function SortLanguage( langA, langB )
|
||||
{
|
||||
return ( langA.Name < langB.Name ? -1 : langA.Name > langB.Name ? 1 : 0 ) ;
|
||||
}
|
||||
|
||||
function AddComboOption(combo, optionText, optionValue)
|
||||
{
|
||||
var oOption = document.createElement("OPTION") ;
|
||||
|
||||
combo.options.add(oOption) ;
|
||||
|
||||
oOption.innerHTML = optionText ;
|
||||
oOption.value = optionValue ;
|
||||
|
||||
return oOption ;
|
||||
}
|
||||
|
||||
function ChangeLanguage( languageCode )
|
||||
{
|
||||
window.location.href = window.location.pathname + "?" + languageCode ;
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<h1>
|
||||
FCKeditor - JavaScript - Sample 3</h1>
|
||||
<div>
|
||||
This sample shows the editor in all its available languages.
|
||||
</div>
|
||||
<hr />
|
||||
<table cellpadding="0" cellspacing="0" border="0">
|
||||
<tr>
|
||||
<td>
|
||||
Select a language:
|
||||
</td>
|
||||
<td>
|
||||
<select id="cmbLanguages" onchange="ChangeLanguage(this.value);">
|
||||
</select>
|
||||
</td>
|
||||
<td>
|
||||
<span id="eNumLangs"></span>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br />
|
||||
<form action="sampleposteddata.asp" method="post" target="_blank">
|
||||
<script type="text/javascript">
|
||||
<!--
|
||||
// Automatically calculates the editor base path based on the _samples directory.
|
||||
// This is usefull only for these samples. A real application should use something like this:
|
||||
// oFCKeditor.BasePath = '/fckeditor/' ; // '/fckeditor/' is the default value.
|
||||
var sBasePath = document.location.pathname.substring(0,document.location.pathname.lastIndexOf('_samples')) ;
|
||||
|
||||
var sLang ;
|
||||
if ( document.location.search.length > 1 )
|
||||
sLang = document.location.search.substr(1) ;
|
||||
|
||||
var oFCKeditor = new FCKeditor( 'FCKeditor1' ) ;
|
||||
oFCKeditor.BasePath = sBasePath ;
|
||||
if ( sLang == null )
|
||||
{
|
||||
oFCKeditor.Config["AutoDetectLanguage"] = true ;
|
||||
oFCKeditor.Config["DefaultLanguage"] = "en" ;
|
||||
}
|
||||
else
|
||||
{
|
||||
oFCKeditor.Config["AutoDetectLanguage"] = false ;
|
||||
oFCKeditor.Config["DefaultLanguage"] = sLang ;
|
||||
}
|
||||
oFCKeditor.Value = 'This is some <strong>sample text</strong>. You are using <a href="http://www.fckeditor.net/">FCKeditor</a>.' ;
|
||||
oFCKeditor.Create() ;
|
||||
//-->
|
||||
</script>
|
||||
<br />
|
||||
<input type="submit" value="Submit" />
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
@ -1,95 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<!--
|
||||
* 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 ==
|
||||
*
|
||||
* Sample page.
|
||||
-->
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<title>FCKeditor - Sample</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="robots" content="noindex, nofollow" />
|
||||
<link href="../sample.css" rel="stylesheet" type="text/css" />
|
||||
<script type="text/javascript" src="../../fckeditor.js"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
function FCKeditor_OnComplete( editorInstance )
|
||||
{
|
||||
var oCombo = document.getElementById( 'cmbToolbars' ) ;
|
||||
oCombo.value = editorInstance.ToolbarSet.Name ;
|
||||
oCombo.style.visibility = '' ;
|
||||
}
|
||||
|
||||
function ChangeLanguage( languageCode )
|
||||
{
|
||||
window.location.href = window.location.pathname + "?" + languageCode ;
|
||||
}
|
||||
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<h1>
|
||||
FCKeditor - JavaScript - Sample 4</h1>
|
||||
<div>
|
||||
This sample shows how to change the editor toolbar.
|
||||
</div>
|
||||
<hr />
|
||||
<table cellpadding="0" cellspacing="0" border="0">
|
||||
<tr>
|
||||
<td>
|
||||
Select the toolbar to load:
|
||||
</td>
|
||||
<td>
|
||||
<select id="cmbToolbars" onchange="ChangeLanguage(this.value);" style="visibility: hidden">
|
||||
<option value="Default" selected="selected">Default</option>
|
||||
<option value="Basic">Basic</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br />
|
||||
<form action="sampleposteddata.asp" method="post" target="_blank">
|
||||
<script type="text/javascript">
|
||||
<!--
|
||||
// Automatically calculates the editor base path based on the _samples directory.
|
||||
// This is usefull only for these samples. A real application should use something like this:
|
||||
// oFCKeditor.BasePath = '/fckeditor/' ; // '/fckeditor/' is the default value.
|
||||
var sBasePath = document.location.pathname.substring(0,document.location.pathname.lastIndexOf('_samples')) ;
|
||||
|
||||
// Get the toolbar from the URL.
|
||||
var sToolbar ;
|
||||
if ( document.location.search.length > 1 )
|
||||
sToolbar = document.location.search.substr(1) ;
|
||||
|
||||
var oFCKeditor = new FCKeditor( 'FCKeditor1' ) ;
|
||||
oFCKeditor.BasePath = sBasePath ;
|
||||
|
||||
if ( sToolbar != null )
|
||||
oFCKeditor.ToolbarSet = sToolbar ;
|
||||
|
||||
oFCKeditor.Value = 'This is some <strong>sample text</strong>. You are using <a href="http://www.fckeditor.net/">FCKeditor</a>.' ;
|
||||
oFCKeditor.Create() ;
|
||||
//-->
|
||||
</script>
|
||||
<br />
|
||||
<input type="submit" value="Submit" />
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
@ -1,125 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<!--
|
||||
* 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 ==
|
||||
*
|
||||
* Sample page.
|
||||
-->
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<title>FCKeditor - Sample</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="robots" content="noindex, nofollow" />
|
||||
<link href="../sample.css" rel="stylesheet" type="text/css" />
|
||||
<script type="text/javascript" src="../../fckeditor.js"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
function FCKeditor_OnComplete( editorInstance )
|
||||
{
|
||||
var oCombo = document.getElementById( 'cmbSkins' ) ;
|
||||
|
||||
// Get the active skin.
|
||||
var sSkin = editorInstance.Config['SkinPath'] ;
|
||||
sSkin = sSkin.match( /[^\/]+(?=\/$)/g ) ;
|
||||
|
||||
oCombo.value = sSkin ;
|
||||
oCombo.style.visibility = '' ;
|
||||
}
|
||||
|
||||
function ChangeLanguage( languageCode )
|
||||
{
|
||||
window.location.href = window.location.pathname + "?" + languageCode ;
|
||||
}
|
||||
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<h1>
|
||||
FCKeditor - JavaScript - Sample 5</h1>
|
||||
<div>
|
||||
This sample shows how to change the editor skin.
|
||||
</div>
|
||||
<hr />
|
||||
<table cellpadding="0" cellspacing="0" border="0">
|
||||
<tr>
|
||||
<td>
|
||||
Select the skin to load:
|
||||
</td>
|
||||
<td>
|
||||
<select id="cmbSkins" onchange="ChangeLanguage(this.value);" style="visibility: hidden">
|
||||
<option value="default" selected="selected">Default</option>
|
||||
<option value="office2003">Office 2003</option>
|
||||
<option value="silver">Silver</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br />
|
||||
<form action="sampleposteddata.asp" method="post" target="_blank">
|
||||
<script type="text/javascript">
|
||||
<!--
|
||||
// Automatically calculates the editor base path based on the _samples directory.
|
||||
// This is usefull only for these samples. A real application should use something like this:
|
||||
// oFCKeditor.BasePath = '/fckeditor/' ; // '/fckeditor/' is the default value.
|
||||
var sBasePath = document.location.pathname.substring(0,document.location.pathname.lastIndexOf('_samples')) ;
|
||||
|
||||
// Get the skin from the URL.
|
||||
var sSkin ;
|
||||
if ( document.location.search.length > 1 )
|
||||
sSkin = document.location.search.substr(1) ;
|
||||
|
||||
var oFCKeditor = new FCKeditor( 'FCKeditor1' ) ;
|
||||
oFCKeditor.BasePath = sBasePath ;
|
||||
|
||||
if ( sSkin != null )
|
||||
{
|
||||
var sSkinPath = sBasePath + 'editor/skins/' + sSkin + '/' ;
|
||||
oFCKeditor.Config['SkinPath'] = sSkinPath ;
|
||||
|
||||
// The following switch is optional. It is done to enhance the loading
|
||||
// time of the toolbar, by preloading the images used on it.
|
||||
switch ( sSkin )
|
||||
{
|
||||
case 'office2003' :
|
||||
oFCKeditor.Config['PreloadImages'] =
|
||||
sSkinPath + 'images/toolbar.start.gif' + ';' +
|
||||
sSkinPath + 'images/toolbar.end.gif' + ';' +
|
||||
sSkinPath + 'images/toolbar.bg.gif' + ';' +
|
||||
sSkinPath + 'images/toolbar.buttonarrow.gif' ;
|
||||
break ;
|
||||
|
||||
case 'silver' :
|
||||
oFCKeditor.Config['PreloadImages'] =
|
||||
sSkinPath + 'images/toolbar.start.gif' + ';' +
|
||||
sSkinPath + 'images/toolbar.end.gif' + ';' +
|
||||
sSkinPath + 'images/toolbar.buttonbg.gif' + ';' +
|
||||
sSkinPath + 'images/toolbar.buttonarrow.gif' ;
|
||||
break ;
|
||||
}
|
||||
}
|
||||
|
||||
oFCKeditor.Value = 'This is some <strong>sample text</strong>. You are using <a href="http://www.fckeditor.net/">FCKeditor</a>.' ;
|
||||
oFCKeditor.Create() ;
|
||||
//-->
|
||||
</script>
|
||||
<br />
|
||||
<input type="submit" value="Submit" />
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
@ -1,49 +0,0 @@
|
||||
/*
|
||||
* 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 ==
|
||||
*
|
||||
* Sample custom configuration settings used in the plugin sample page (sample06).
|
||||
*/
|
||||
|
||||
// Set our sample toolbar.
|
||||
FCKConfig.ToolbarSets['PluginTest'] = [
|
||||
['SourceSimple'],
|
||||
['My_Find','My_Replace','-','Placeholder'],
|
||||
['StyleSimple','FontFormatSimple','FontNameSimple','FontSizeSimple'],
|
||||
['Table','-','TableInsertRow','TableDeleteRows','TableInsertColumn','TableDeleteColumns','TableInsertCell','TableDeleteCells','TableMergeCells','TableSplitCell'],
|
||||
['Bold','Italic','-','OrderedList','UnorderedList','-','Link','Unlink'],
|
||||
'/',
|
||||
['My_BigStyle','-','Smiley','-','About']
|
||||
] ;
|
||||
|
||||
// Change the default plugin path.
|
||||
FCKConfig.PluginsPath = FCKConfig.BasePath.substr(0, FCKConfig.BasePath.length - 7) + '_samples/_plugins/' ;
|
||||
|
||||
// Add our plugin to the plugins list.
|
||||
// FCKConfig.Plugins.Add( pluginName, availableLanguages )
|
||||
// pluginName: The plugin name. The plugin directory must match this name.
|
||||
// availableLanguages: a list of available language files for the plugin (separated by a comma).
|
||||
FCKConfig.Plugins.Add( 'findreplace', 'en,it,fr' ) ;
|
||||
FCKConfig.Plugins.Add( 'samples' ) ;
|
||||
|
||||
// If you want to use plugins found on other directories, just use the third parameter.
|
||||
var sOtherPluginPath = FCKConfig.BasePath.substr(0, FCKConfig.BasePath.length - 7) + 'editor/plugins/' ;
|
||||
FCKConfig.Plugins.Add( 'placeholder', 'en,it,de,fr', sOtherPluginPath ) ;
|
||||
FCKConfig.Plugins.Add( 'tablecommands', null, sOtherPluginPath ) ;
|
||||
FCKConfig.Plugins.Add( 'simplecommands', null, sOtherPluginPath ) ;
|
@ -1,73 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<!--
|
||||
* 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 ==
|
||||
*
|
||||
* Sample page.
|
||||
-->
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<title>FCKeditor - Sample</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="robots" content="noindex, nofollow" />
|
||||
<link href="../sample.css" rel="stylesheet" type="text/css" />
|
||||
<script type="text/javascript" src="../../fckeditor.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<h1>
|
||||
FCKeditor - JavaScript - 6</h1>
|
||||
<div>
|
||||
This sample shows some sample plugins implementations. Things to note:<br />
|
||||
<ul>
|
||||
<li>In the toolbar, you will find sample "Find" and "Replace" plugins that do exactly
|
||||
the same thing that the built in ones do. It just shows how to do that with a custom
|
||||
implementation. Use the green toolbar buttons the test then. </li>
|
||||
<li>There is also another sample plugin that is available in the package: the "Placeholder"
|
||||
command (use the yellow icon). </li>
|
||||
<li>It also shows a custom context menu option when right cliking on images (insert
|
||||
a smiley to test it).</li>
|
||||
</ul>
|
||||
</div>
|
||||
<hr />
|
||||
<form action="sampleposteddata.asp" method="post" target="_blank">
|
||||
<script type="text/javascript">
|
||||
<!--
|
||||
// Automatically calculates the editor base path based on the _samples directory.
|
||||
// This is usefull only for these samples. A real application should use something like this:
|
||||
// oFCKeditor.BasePath = '/fckeditor/' ; // '/fckeditor/' is the default value.
|
||||
var sBasePath = document.location.pathname.substring(0,document.location.pathname.lastIndexOf('_samples')) ;
|
||||
|
||||
var oFCKeditor = new FCKeditor( 'FCKeditor1' ) ;
|
||||
oFCKeditor.BasePath = sBasePath ;
|
||||
|
||||
// Set the custom configurations file path (in this way the original file is mantained).
|
||||
oFCKeditor.Config['CustomConfigurationsPath'] = sBasePath + '_samples/html/sample06.config.js' ;
|
||||
|
||||
// Let's use a custom toolbar for this sample.
|
||||
oFCKeditor.ToolbarSet = 'PluginTest' ;
|
||||
|
||||
oFCKeditor.Value = 'This is some <strong>sample text</strong>. You are using <a href="http://www.fckeditor.net/">FCKeditor</a>.' ;
|
||||
oFCKeditor.Create() ;
|
||||
//-->
|
||||
</script>
|
||||
<br />
|
||||
<input type="submit" value="Submit" />
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
@ -1,59 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<!--
|
||||
* 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 ==
|
||||
*
|
||||
* Sample page.
|
||||
-->
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<title>FCKeditor - Sample</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="robots" content="noindex, nofollow" />
|
||||
<link href="../sample.css" rel="stylesheet" type="text/css" />
|
||||
<script type="text/javascript" src="../../fckeditor.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<h1>
|
||||
FCKeditor - JavaScript - Sample 7</h1>
|
||||
<div>
|
||||
In this sample the user can edit the complete page contents and header (from <HTML>
|
||||
to </HTML>).
|
||||
</div>
|
||||
<hr />
|
||||
<form action="sampleposteddata.asp" method="post" target="_blank">
|
||||
<script type="text/javascript">
|
||||
<!--
|
||||
// Automatically calculates the editor base path based on the _samples directory.
|
||||
// This is usefull only for these samples. A real application should use something like this:
|
||||
// oFCKeditor.BasePath = '/fckeditor/' ; // '/fckeditor/' is the default value.
|
||||
var sBasePath = document.location.pathname.substring(0,document.location.pathname.lastIndexOf('_samples')) ;
|
||||
|
||||
var oFCKeditor = new FCKeditor( 'FCKeditor1' ) ;
|
||||
oFCKeditor.BasePath = sBasePath ;
|
||||
oFCKeditor.Config['FullPage'] = true ;
|
||||
oFCKeditor.Value = '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>Full Page Test</title><meta content="text/html; charset=utf-8" http-equiv="Content-Type"/></head><body>This is some <strong>sample text</strong>. You are using <a href="http://www.fckeditor.net/">FCKeditor</a>.</body></html>' ;
|
||||
oFCKeditor.Create() ;
|
||||
//-->
|
||||
</script>
|
||||
<br />
|
||||
<input type="submit" value="Submit" />
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
@ -1,196 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<!--
|
||||
* 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 ==
|
||||
*
|
||||
* Sample page.
|
||||
-->
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<title>FCKeditor - Sample</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="robots" content="noindex, nofollow" />
|
||||
<link href="../sample.css" rel="stylesheet" type="text/css" />
|
||||
<script type="text/javascript" src="../../fckeditor.js"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
// FCKeditor_OnComplete is a special function that is called when an editor
|
||||
// instance is loaded ad available to the API. It must be named exactly in
|
||||
// this way.
|
||||
function FCKeditor_OnComplete( editorInstance )
|
||||
{
|
||||
// Show the editor name and description in the browser status bar.
|
||||
document.getElementById('eMessage').innerHTML = 'Instance "' + editorInstance.Name + '" loaded - ' + editorInstance.Description ;
|
||||
|
||||
// Show this sample buttons.
|
||||
document.getElementById('eButtons').style.visibility = '' ;
|
||||
}
|
||||
|
||||
function InsertHTML()
|
||||
{
|
||||
// Get the editor instance that we want to interact with.
|
||||
var oEditor = FCKeditorAPI.GetInstance('FCKeditor1') ;
|
||||
|
||||
// Check the active editing mode.
|
||||
if ( oEditor.EditMode == FCK_EDITMODE_WYSIWYG )
|
||||
{
|
||||
// Insert the desired HTML.
|
||||
oEditor.InsertHtml( '- This is some <a href="/Test1.html">sample</a> HTML -' ) ;
|
||||
}
|
||||
else
|
||||
alert( 'You must be on WYSIWYG mode!' ) ;
|
||||
}
|
||||
|
||||
function SetContents()
|
||||
{
|
||||
// Get the editor instance that we want to interact with.
|
||||
var oEditor = FCKeditorAPI.GetInstance('FCKeditor1') ;
|
||||
|
||||
// Set the editor contents (replace the actual one).
|
||||
oEditor.SetHTML( 'This is the <b>new content</b> I want in the editor.' ) ;
|
||||
}
|
||||
|
||||
function GetContents()
|
||||
{
|
||||
// Get the editor instance that we want to interact with.
|
||||
var oEditor = FCKeditorAPI.GetInstance('FCKeditor1') ;
|
||||
|
||||
// Get the editor contents in XHTML.
|
||||
alert( oEditor.GetXHTML( true ) ) ; // "true" means you want it formatted.
|
||||
}
|
||||
|
||||
function ExecuteCommand( commandName )
|
||||
{
|
||||
// Get the editor instance that we want to interact with.
|
||||
var oEditor = FCKeditorAPI.GetInstance('FCKeditor1') ;
|
||||
|
||||
// Execute the command.
|
||||
oEditor.Commands.GetCommand( commandName ).Execute() ;
|
||||
}
|
||||
|
||||
function GetLength()
|
||||
{
|
||||
// This functions shows that you can interact directly with the editor area
|
||||
// DOM. In this way you have the freedom to do anything you want with it.
|
||||
|
||||
// Get the editor instance that we want to interact with.
|
||||
var oEditor = FCKeditorAPI.GetInstance('FCKeditor1') ;
|
||||
|
||||
// Get the Editor Area DOM (Document object).
|
||||
var oDOM = oEditor.EditorDocument ;
|
||||
|
||||
var iLength ;
|
||||
|
||||
// The are two diffent ways to get the text (without HTML markups).
|
||||
// It is browser specific.
|
||||
|
||||
if ( document.all ) // If Internet Explorer.
|
||||
{
|
||||
iLength = oDOM.body.innerText.length ;
|
||||
}
|
||||
else // If Gecko.
|
||||
{
|
||||
var r = oDOM.createRange() ;
|
||||
r.selectNodeContents( oDOM.body ) ;
|
||||
iLength = r.toString().length ;
|
||||
}
|
||||
|
||||
alert( 'Actual text length (without HTML markups): ' + iLength + ' characters' ) ;
|
||||
}
|
||||
|
||||
function GetInnerHTML()
|
||||
{
|
||||
// Get the editor instance that we want to interact with.
|
||||
var oEditor = FCKeditorAPI.GetInstance('FCKeditor1') ;
|
||||
|
||||
alert( oEditor.EditorDocument.body.innerHTML ) ;
|
||||
}
|
||||
|
||||
function CheckIsDirty()
|
||||
{
|
||||
// Get the editor instance that we want to interact with.
|
||||
var oEditor = FCKeditorAPI.GetInstance('FCKeditor1') ;
|
||||
alert( oEditor.IsDirty() ) ;
|
||||
}
|
||||
|
||||
function ResetIsDirty()
|
||||
{
|
||||
// Get the editor instance that we want to interact with.
|
||||
var oEditor = FCKeditorAPI.GetInstance('FCKeditor1') ;
|
||||
oEditor.ResetIsDirty() ;
|
||||
alert( 'The "IsDirty" status has been reset' ) ;
|
||||
}
|
||||
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<h1>
|
||||
FCKeditor - JavaScript - Sample 8
|
||||
</h1>
|
||||
<div>
|
||||
This sample shows how to use the FCKeditor JavaScript API to interact with the editor
|
||||
at runtime.
|
||||
</div>
|
||||
<hr />
|
||||
<form action="sampleposteddata.asp" method="post" target="_blank">
|
||||
<script type="text/javascript">
|
||||
<!--
|
||||
// Automatically calculates the editor base path based on the _samples directory.
|
||||
// This is usefull only for these samples. A real application should use something like this:
|
||||
// oFCKeditor.BasePath = '/fckeditor/' ; // '/fckeditor/' is the default value.
|
||||
var sBasePath = document.location.pathname.substring(0,document.location.pathname.lastIndexOf('_samples')) ;
|
||||
|
||||
var oFCKeditor = new FCKeditor( 'FCKeditor1' ) ;
|
||||
oFCKeditor.BasePath = sBasePath ;
|
||||
oFCKeditor.Value = 'This is some <strong>sample text</strong>. You are using <a href="http://www.fckeditor.net/">FCKeditor</a>.' ;
|
||||
oFCKeditor.Create() ;
|
||||
//-->
|
||||
</script>
|
||||
<br />
|
||||
<input type="submit" value="Submit" />
|
||||
</form>
|
||||
<div>
|
||||
|
||||
</div>
|
||||
<hr />
|
||||
<div id="eMessage">
|
||||
|
||||
</div>
|
||||
<div>
|
||||
|
||||
</div>
|
||||
<div id="eButtons" style="visibility: hidden">
|
||||
<input type="button" value="Insert HTML" onclick="InsertHTML();" />
|
||||
<input type="button" value="Set Editor Contents" onclick="SetContents();" />
|
||||
<input type="button" value="Get Editor Contents (XHTML)" onclick="GetContents();" />
|
||||
<br />
|
||||
<br />
|
||||
<input type="button" value='Execute "Bold" Command' onclick="ExecuteCommand('Bold');" />
|
||||
<input type="button" value='Execute "Link" Command' onclick="ExecuteCommand('Link');" />
|
||||
<br />
|
||||
<br />
|
||||
<input type="button" value="Interact with the Editor Area DOM" onclick="GetLength();" />
|
||||
<input type="button" value="Get innerHTML" onclick="GetInnerHTML();" />
|
||||
<br />
|
||||
<br />
|
||||
<input type="button" value="Check IsDirty()" onclick="CheckIsDirty();" />
|
||||
<input type="button" value="Reset IsDirty()" onclick="ResetIsDirty();" />
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
@ -1,100 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<!--
|
||||
* 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 ==
|
||||
*
|
||||
* Sample page.
|
||||
-->
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<title>FCKeditor - Sample</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="robots" content="noindex, nofollow" />
|
||||
<link href="../sample.css" rel="stylesheet" type="text/css" />
|
||||
<script type="text/javascript" src="../../fckeditor.js"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
function FCKeditor_OnComplete( editorInstance )
|
||||
{
|
||||
editorInstance.Events.AttachEvent( 'OnBlur' , FCKeditor_OnBlur ) ;
|
||||
editorInstance.Events.AttachEvent( 'OnFocus', FCKeditor_OnFocus ) ;
|
||||
}
|
||||
|
||||
function FCKeditor_OnBlur( editorInstance )
|
||||
{
|
||||
editorInstance.ToolbarSet.Collapse() ;
|
||||
}
|
||||
|
||||
function FCKeditor_OnFocus( editorInstance )
|
||||
{
|
||||
editorInstance.ToolbarSet.Expand() ;
|
||||
}
|
||||
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<h1>
|
||||
FCKeditor - JavaScript - Sample 9</h1>
|
||||
<div>
|
||||
This sample shows FCKeditor in a more complex form with two different instances.<br />
|
||||
It also shows and interesting usage of the "OnFocus" and "OnBlur" events available
|
||||
in the JavaScript API.
|
||||
</div>
|
||||
<hr />
|
||||
<form action="sampleposteddata.asp" method="post" target="_blank">
|
||||
Normal text field:<br />
|
||||
<input name="NormaText" value="Plain Text" />
|
||||
<br />
|
||||
<br />
|
||||
FCKeditor with Basic toolbar:
|
||||
<script type="text/javascript">
|
||||
<!--
|
||||
// Automatically calculates the editor base path based on the _samples directory.
|
||||
// This is usefull only for these samples. A real application should use something like this:
|
||||
// oFCKeditor.BasePath = '/fckeditor/' ; // '/fckeditor/' is the default value.
|
||||
var sBasePath = document.location.pathname.substring(0,document.location.pathname.lastIndexOf('_samples')) ;
|
||||
|
||||
var oFCKeditor = new FCKeditor( 'FCKeditor_Basic' ) ;
|
||||
|
||||
oFCKeditor.Config['ToolbarStartExpanded'] = false ;
|
||||
|
||||
oFCKeditor.BasePath = sBasePath ;
|
||||
oFCKeditor.ToolbarSet = 'Basic' ;
|
||||
oFCKeditor.Value = 'This is some <strong>sample text</strong>. You are using <a href="http://www.fckeditor.net/">FCKeditor</a>.' ;
|
||||
oFCKeditor.Create() ;
|
||||
//-->
|
||||
</script>
|
||||
<br />
|
||||
FCKeditor with Default toolbar:
|
||||
<script type="text/javascript">
|
||||
<!--
|
||||
oFCKeditor = new FCKeditor( 'FCKeditor_Default' ) ;
|
||||
|
||||
oFCKeditor.Config['ToolbarStartExpanded'] = false ;
|
||||
|
||||
oFCKeditor.BasePath = sBasePath ;
|
||||
oFCKeditor.Value = 'This is some <strong>sample text</strong>. You are using <a href="http://www.fckeditor.net/">FCKeditor</a>.' ;
|
||||
oFCKeditor.Create() ;
|
||||
//-->
|
||||
</script>
|
||||
<br />
|
||||
<input type="submit" value="Submit" />
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
@ -1,79 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<!--
|
||||
* 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 ==
|
||||
*
|
||||
* Sample page.
|
||||
-->
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<title>FCKeditor - Sample</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="robots" content="noindex, nofollow" />
|
||||
<link href="../sample.css" rel="stylesheet" type="text/css" />
|
||||
<script type="text/javascript" src="../../fckeditor.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<h1>
|
||||
FCKeditor - JavaScript - Sample 10</h1>
|
||||
<div>
|
||||
This sample shows a form with two FCKeditor instance. Both instances share the same
|
||||
toolbar, available in the top.
|
||||
</div>
|
||||
<hr />
|
||||
<div id="xToolbar"></div>
|
||||
<hr />
|
||||
<form action="sampleposteddata.asp" method="post" target="_blank">
|
||||
Normal text field:<br />
|
||||
<input name="NormaText" value="Plain Text" />
|
||||
<br />
|
||||
<br />
|
||||
FCKeditor 1:
|
||||
<script type="text/javascript">
|
||||
<!--
|
||||
// Automatically calculates the editor base path based on the _samples directory.
|
||||
// This is usefull only for these samples. A real application should use something like this:
|
||||
// oFCKeditor.BasePath = '/fckeditor/' ; // '/fckeditor/' is the default value.
|
||||
var sBasePath = document.location.pathname.substring(0,document.location.pathname.lastIndexOf('_samples')) ;
|
||||
|
||||
var oFCKeditor = new FCKeditor( 'FCKeditor_1' ) ;
|
||||
oFCKeditor.BasePath = sBasePath ;
|
||||
oFCKeditor.Height = 100 ;
|
||||
oFCKeditor.Config[ 'ToolbarLocation' ] = 'Out:xToolbar' ;
|
||||
oFCKeditor.Value = 'This is some <strong>sample text</strong>. You are using <a href="http://www.fckeditor.net/">FCKeditor</a>.' ;
|
||||
oFCKeditor.Create() ;
|
||||
//-->
|
||||
</script>
|
||||
<br />
|
||||
FCKeditor 2:
|
||||
<script type="text/javascript">
|
||||
<!--
|
||||
oFCKeditor = new FCKeditor( 'FCKeditor_2' ) ;
|
||||
oFCKeditor.BasePath = sBasePath ;
|
||||
oFCKeditor.Height = 100 ;
|
||||
oFCKeditor.Config[ 'ToolbarLocation' ] = 'Out:xToolbar' ;
|
||||
oFCKeditor.Value = 'This is some <strong>sample text</strong>. You are using <a href="http://www.fckeditor.net/">FCKeditor</a>.' ;
|
||||
oFCKeditor.Create() ;
|
||||
//-->
|
||||
</script>
|
||||
<br />
|
||||
<input type="submit" value="Submit" />
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
@ -1,43 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<!--
|
||||
* 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 ==
|
||||
*
|
||||
* Sample page.
|
||||
-->
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<title>FCKeditor - Sample</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="robots" content="noindex, nofollow" />
|
||||
<link href="../sample.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<h1>
|
||||
FCKeditor - JavaScript - Sample 11</h1>
|
||||
<div>
|
||||
This sample shows a form with two FCKeditor instance loaded inside an IFRAME. Both instances share the same
|
||||
toolbar, available in the main page (top).
|
||||
</div>
|
||||
<hr />
|
||||
<div id="xToolbar"></div>
|
||||
<hr />
|
||||
<iframe src="sample11_frame.html" width="100%" height="300"></iframe>
|
||||
</body>
|
||||
</html>
|
@ -1,69 +0,0 @@
|
||||
<!--
|
||||
* 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 ==
|
||||
*
|
||||
* Sample page.
|
||||
-->
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<title>FCKeditor - Sample</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="robots" content="noindex, nofollow" />
|
||||
<link href="../sample.css" rel="stylesheet" type="text/css" />
|
||||
<script type="text/javascript" src="../../fckeditor.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<form action="sampleposteddata.asp" method="post" target="_blank">
|
||||
Normal text field:<br />
|
||||
<input name="NormaText" value="Plain Text" />
|
||||
<br />
|
||||
<br />
|
||||
FCKeditor 1:
|
||||
<script type="text/javascript">
|
||||
<!--
|
||||
// Automatically calculates the editor base path based on the _samples directory.
|
||||
// This is usefull only for these samples. A real application should use something like this:
|
||||
// oFCKeditor.BasePath = '/fckeditor/' ; // '/fckeditor/' is the default value.
|
||||
var sBasePath = document.location.pathname.substring(0,document.location.pathname.lastIndexOf('_samples')) ;
|
||||
|
||||
var oFCKeditor = new FCKeditor( 'FCKeditor_1' ) ;
|
||||
oFCKeditor.BasePath = sBasePath ;
|
||||
oFCKeditor.Height = 100 ;
|
||||
oFCKeditor.Config[ 'ToolbarLocation' ] = 'Out:parent(xToolbar)' ;
|
||||
oFCKeditor.Value = 'This is some <strong>sample text</strong>. You are using <a href="http://www.fckeditor.net/">FCKeditor</a>.' ;
|
||||
oFCKeditor.Create() ;
|
||||
//-->
|
||||
</script>
|
||||
<br />
|
||||
FCKeditor 2:
|
||||
<script type="text/javascript">
|
||||
<!--
|
||||
oFCKeditor = new FCKeditor( 'FCKeditor_2' ) ;
|
||||
oFCKeditor.BasePath = sBasePath ;
|
||||
oFCKeditor.Height = 100 ;
|
||||
oFCKeditor.Config[ 'ToolbarLocation' ] = 'Out:parent(xToolbar)' ;
|
||||
oFCKeditor.Value = 'This is some <strong>sample text</strong>. You are using <a href="http://www.fckeditor.net/">FCKeditor</a>.' ;
|
||||
oFCKeditor.Create() ;
|
||||
//-->
|
||||
</script>
|
||||
<br />
|
||||
<input type="submit" value="Submit" />
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
@ -1,127 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<!--
|
||||
* 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 ==
|
||||
*
|
||||
* Sample page.
|
||||
-->
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<title>FCKeditor - Sample</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="robots" content="noindex, nofollow" />
|
||||
<link href="../sample.css" rel="stylesheet" type="text/css" />
|
||||
<script type="text/javascript" src="../../fckeditor.js"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
// The following function is used in this samples to reload the page,
|
||||
// setting the querystring parameters for the enter mode.
|
||||
function ChangeMode()
|
||||
{
|
||||
var sEnterMode = document.getElementById('xEnter').value ;
|
||||
var sShiftEnterMode = document.getElementById('xShiftEnter').value ;
|
||||
|
||||
window.location.href = window.location.pathname + '?enter=' + sEnterMode + '&shift=' + sShiftEnterMode ;
|
||||
}
|
||||
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<h1>
|
||||
FCKeditor - JavaScript - Sample 12</h1>
|
||||
<div>
|
||||
This sample shows the different ways to configure the [Enter] key behavior on FCKeditor.
|
||||
</div>
|
||||
<hr />
|
||||
<table cellpadding="0" cellspacing="0" border="0">
|
||||
<tr>
|
||||
<td>
|
||||
When [Enter] is pressed:
|
||||
</td>
|
||||
<td>
|
||||
<select id="xEnter" onchange="ChangeMode();">
|
||||
<option value="p" selected="selected">Create new <P></option>
|
||||
<option value="div">Create new <DIV></option>
|
||||
<option value="br">Break the line with a <BR></option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
When [Shift] + [Enter] is pressed:
|
||||
</td>
|
||||
<td>
|
||||
<select id="xShiftEnter" onchange="ChangeMode();">
|
||||
<option value="p">Create new <P></option>
|
||||
<option value="div">Create new <DIV></option>
|
||||
<option value="br" selected="selected">Break the line with a <BR></option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br />
|
||||
<form action="sampleposteddata.asp" method="post" target="_blank">
|
||||
<script type="text/javascript">
|
||||
<!--
|
||||
// Automatically calculates the editor base path based on the _samples directory.
|
||||
// This is usefull only for these samples. A real application should use something like this:
|
||||
// oFCKeditor.BasePath = '/fckeditor/' ; // '/fckeditor/' is the default value.
|
||||
var sBasePath = document.location.pathname.substring(0,document.location.pathname.lastIndexOf('_samples')) ;
|
||||
|
||||
// The following are the default configurations for the Enter and Shift+Enter modes.
|
||||
var sEnterMode = 'p' ;
|
||||
var sShiftEnterMode = 'br' ;
|
||||
|
||||
// Try to get the new configurations from the querystring, if available.
|
||||
if ( document.location.search.length > 1 )
|
||||
{
|
||||
var aMatch = document.location.search.match( /enter=(p|div|br)/ ) ;
|
||||
if ( aMatch )
|
||||
sEnterMode = aMatch[1] ;
|
||||
|
||||
aMatch = document.location.search.match( /shift=(p|div|br)/ ) ;
|
||||
if ( aMatch )
|
||||
sShiftEnterMode = aMatch[1] ;
|
||||
}
|
||||
|
||||
// Create the FCKeditor instance.
|
||||
var oFCKeditor = new FCKeditor( 'FCKeditor1' ) ;
|
||||
oFCKeditor.BasePath = sBasePath ;
|
||||
oFCKeditor.Value = 'This is some <strong>sample text</strong>. You are using <a href="http://www.fckeditor.net/">FCKeditor</a>.' ;
|
||||
|
||||
// Enable the Enter Key Handler. This feature will not be available in the release version.
|
||||
oFCKeditor.Config["DisableEnterKeyHandler"] = false ;
|
||||
|
||||
// Set the configuration options for the Enter Key mode.
|
||||
oFCKeditor.Config["EnterMode"] = sEnterMode ;
|
||||
oFCKeditor.Config["ShiftEnterMode"] = sShiftEnterMode ;
|
||||
|
||||
oFCKeditor.Create() ;
|
||||
|
||||
// Update the select combos with the current values.
|
||||
document.getElementById('xEnter').value = sEnterMode ;
|
||||
document.getElementById('xShiftEnter').value = sShiftEnterMode ;
|
||||
|
||||
//-->
|
||||
</script>
|
||||
<br />
|
||||
<input type="submit" value="Submit" />
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
@ -1,148 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<!--
|
||||
* 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 ==
|
||||
*
|
||||
* Sample page.
|
||||
-->
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<title>FCKeditor - Sample</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="robots" content="noindex, nofollow" />
|
||||
<link href="../sample.css" rel="stylesheet" type="text/css" />
|
||||
<script type="text/javascript" src="../../fckeditor.js"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
function Toggle()
|
||||
{
|
||||
// Try to get the FCKeditor instance, if available.
|
||||
var oEditor ;
|
||||
if ( typeof( FCKeditorAPI ) != 'undefined' )
|
||||
oEditor = FCKeditorAPI.GetInstance( '_DataFCKeditor' ) ;
|
||||
|
||||
// Get the _Textarea and _FCKeditor DIVs.
|
||||
var eTextareaDiv = document.getElementById( '_Textarea' ) ;
|
||||
var eFCKeditorDiv = document.getElementById( '_FCKeditor' ) ;
|
||||
|
||||
// If the _Textarea DIV is visible, switch to FCKeditor.
|
||||
if ( eTextareaDiv.style.display != 'none' )
|
||||
{
|
||||
// If it is the first time, create the editor.
|
||||
if ( !oEditor )
|
||||
{
|
||||
CreateEditor() ;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Set the current text in the textarea to the editor.
|
||||
oEditor.SetHTML( document.getElementById('_DataTextarea').value ) ;
|
||||
}
|
||||
|
||||
// Switch the DIVs display.
|
||||
eTextareaDiv.style.display = 'none' ;
|
||||
eFCKeditorDiv.style.display = '' ;
|
||||
|
||||
// This is a hack for Gecko 1.0.x ... it stops editing when the editor is hidden.
|
||||
if ( oEditor && !document.all )
|
||||
{
|
||||
if ( oEditor.EditMode == FCK_EDITMODE_WYSIWYG )
|
||||
oEditor.MakeEditable() ;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// Set the textarea value to the editor value.
|
||||
document.getElementById('_DataTextarea').value = oEditor.GetXHTML() ;
|
||||
|
||||
// Switch the DIVs display.
|
||||
eTextareaDiv.style.display = '' ;
|
||||
eFCKeditorDiv.style.display = 'none' ;
|
||||
}
|
||||
}
|
||||
|
||||
function CreateEditor()
|
||||
{
|
||||
// Copy the value of the current textarea, to the textarea that will be used by the editor.
|
||||
document.getElementById('_DataFCKeditor').value = document.getElementById('_DataTextarea').value ;
|
||||
|
||||
// Automatically calculates the editor base path based on the _samples directory.
|
||||
// This is usefull only for these samples. A real application should use something like this:
|
||||
// oFCKeditor.BasePath = '/fckeditor/' ; // '/fckeditor/' is the default value.
|
||||
var sBasePath = document.location.pathname.substring(0,document.location.pathname.lastIndexOf('_samples')) ;
|
||||
|
||||
// Create an instance of FCKeditor (using the target textarea as the name).
|
||||
var oFCKeditor = new FCKeditor( '_DataFCKeditor' ) ;
|
||||
oFCKeditor.BasePath = sBasePath ;
|
||||
oFCKeditor.Width = '100%' ;
|
||||
oFCKeditor.Height = '350' ;
|
||||
oFCKeditor.ReplaceTextarea() ;
|
||||
}
|
||||
|
||||
// The FCKeditor_OnComplete function is a special function called everytime an
|
||||
// editor instance is completely loaded and available for API interactions.
|
||||
function FCKeditor_OnComplete( editorInstance )
|
||||
{
|
||||
// Enable the switch button. It is disabled at startup, waiting the editor to be loaded.
|
||||
document.getElementById('_BtnSwitchTextarea').disabled = false ;
|
||||
}
|
||||
|
||||
function PrepareSave()
|
||||
{
|
||||
// If the textarea isn't visible update the content from the editor.
|
||||
if ( document.getElementById( '_Textarea' ).style.display == 'none' )
|
||||
{
|
||||
var oEditor = FCKeditorAPI.GetInstance( '_DataFCKeditor' ) ;
|
||||
document.getElementById( '_DataTextarea' ).value = oEditor.GetXHTML() ;
|
||||
}
|
||||
}
|
||||
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<h1>
|
||||
FCKeditor - JavaScript - Sample 13
|
||||
</h1>
|
||||
<div>
|
||||
This sample starts with a normal textarea and provides the ability to switch back
|
||||
and forth between the textarea and FCKeditor. It uses the JavaScript API to do the
|
||||
operations so it will work even if the internal implementation changes.
|
||||
</div>
|
||||
<hr />
|
||||
<form action="sampleposteddata.asp" method="post" target="_blank" onsubmit="PrepareSave();">
|
||||
<div id="_Textarea">
|
||||
<input type="button" value="Switch to FCKeditor" onclick="Toggle()" />
|
||||
<br />
|
||||
<br />
|
||||
<textarea id="_DataTextarea" name="Data" cols="80" rows="20" style="width: 95%">This is some <strong>sample text</strong>. You are using <a href="http://www.fckeditor.net/">FCKeditor</a>.</textarea>
|
||||
</div>
|
||||
<div id="_FCKeditor" style="display: none">
|
||||
<!-- Note that the following button is disabled at startup.
|
||||
It will be enabled once the editor is completely loaded. -->
|
||||
<input id="_BtnSwitchTextarea" type="button" disabled="disabled" value="Switch to Textarea" onclick="Toggle()" />
|
||||
<br />
|
||||
<br />
|
||||
<!-- Note that the following textarea doesn't have a "name", so it will not be posted. -->
|
||||
<textarea id="_DataFCKeditor" cols="80" rows="20"></textarea>
|
||||
</div>
|
||||
<br />
|
||||
<input type="submit" value="Submit" />
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
@ -1,72 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<!--
|
||||
* 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 page lists the data posted by a form.
|
||||
-->
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<title>FCKeditor - Samples - Posted Data</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="robots" content="noindex, nofollow" />
|
||||
<link href="../sample.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<h1>
|
||||
FCKeditor - Samples - Posted Data</h1>
|
||||
<div>
|
||||
This page lists all data posted by the form.
|
||||
</div>
|
||||
<hr />
|
||||
<table width="100%" border="1" cellpadding="3" style="border-color: #999999; border-collapse: collapse;">
|
||||
<tr style="font-weight: bold; color: #dddddd; background-color: #999999">
|
||||
<td style="white-space: nowrap;">
|
||||
Field Name </td>
|
||||
<td>
|
||||
Value</td>
|
||||
</tr>
|
||||
<% For Each sForm in Request.Form %>
|
||||
<tr>
|
||||
<td valign="top" style="white-space: nowrap;">
|
||||
<b>
|
||||
<%=sForm%>
|
||||
</b>
|
||||
</td>
|
||||
<td style="width: 100%;">
|
||||
<pre><%=ModifyForOutput( Request.Form(sForm) )%></pre>
|
||||
</td>
|
||||
</tr>
|
||||
<% Next %>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
<%
|
||||
|
||||
' This function is useful only for this sample page se whe can display the
|
||||
' posted data accordingly. This processing is usually not done on real
|
||||
' applications, where the posted data must be saved on a DB or file. In those
|
||||
' cases, no processing must be done, and the data is saved as posted.
|
||||
Function ModifyForOutput( value )
|
||||
|
||||
ModifyForOutput = Server.HTMLEncode( Request.Form(sForm) )
|
||||
|
||||
End Function
|
||||
|
||||
%>
|
@ -1,80 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<!--
|
||||
* 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 page lists the data posted by a form. It uses the URL (GET data),
|
||||
* so it's limited to 2KB of data.
|
||||
-->
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<title>FCKeditor - Samples - Posted Data</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="robots" content="noindex, nofollow" />
|
||||
<link href="../sample.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<h1>
|
||||
FCKeditor - Samples - Posted Data
|
||||
</h1>
|
||||
<div>
|
||||
This page lists all data posted by the form. It uses the "QueryString" to search
|
||||
for data submitted using the "GET" method, so it is limited to 2KB.
|
||||
</div>
|
||||
<hr />
|
||||
<table width="100%" border="1" cellpadding="3" style="border-color: #999999; border-collapse: collapse;">
|
||||
<tr style="font-weight: bold; color: #dddddd; background-color: #999999">
|
||||
<td style="white-space: nowrap;">
|
||||
Field</td>
|
||||
<td>
|
||||
Value</td>
|
||||
</tr>
|
||||
<script type="text/javascript">
|
||||
<!--
|
||||
|
||||
function HTMLEncode( text )
|
||||
{
|
||||
text = text.replace(/&/g, "&") ;
|
||||
text = text.replace(/"/g, """) ;
|
||||
text = text.replace(/</g, "<") ;
|
||||
text = text.replace(/>/g, ">") ;
|
||||
text = text.replace(/'/g, "'") ;
|
||||
|
||||
return text ;
|
||||
}
|
||||
|
||||
var aParams = document.location.search.substr(1).split('&') ;
|
||||
|
||||
for ( i = 0 ; i < aParams.length ; i++ )
|
||||
{
|
||||
var aParam = aParams[i].split('=') ;
|
||||
var sParamName = aParam[0] ;
|
||||
var sParamValue = aParam[1] ;
|
||||
|
||||
document.write( '<tr>' ) ;
|
||||
document.write( '<td valign="top" style="white-space: nowrap;">' + sParamName + '</td>' ) ;
|
||||
document.write( '<td style="width: 100%;"><pre>' + HTMLEncode( decodeURIComponent( sParamValue.replace( /\+/g, ' ' ) ) ) + '</pre></td>' ) ;
|
||||
document.write( '</tr>' ) ;
|
||||
}
|
||||
|
||||
//-->
|
||||
</script>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
@ -1,55 +0,0 @@
|
||||
[//lasso
|
||||
/*
|
||||
* 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 ==
|
||||
*
|
||||
* Sample page.
|
||||
*/
|
||||
]
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||
<html>
|
||||
<head>
|
||||
<title>FCKeditor - Sample</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
<link href="../sample.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<h1>FCKeditor - Lasso - Sample 1</h1>
|
||||
This sample displays a normal HTML form with an FCKeditor with full features
|
||||
enabled.
|
||||
<hr>
|
||||
<form action="sampleposteddata.lasso" method="post" target="_blank">
|
||||
[//lasso
|
||||
include('../../fckeditor.lasso');
|
||||
var('basepath') = response_filepath->split('_samples')->get(1);
|
||||
|
||||
var('myeditor') = fck_editor(
|
||||
-instancename='FCKeditor1',
|
||||
-basepath=$basepath,
|
||||
-initialvalue='This is some <strong>sample text</strong>. You are using <a href="http://www.fckeditor.net/">FCKeditor</a>.'
|
||||
);
|
||||
|
||||
$myeditor->create;
|
||||
]
|
||||
<br>
|
||||
<input type="submit" value="Submit">
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
@ -1,109 +0,0 @@
|
||||
[//lasso
|
||||
/*
|
||||
* 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 ==
|
||||
*
|
||||
* Sample page.
|
||||
*/
|
||||
]
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||
<html>
|
||||
<head>
|
||||
<title>FCKeditor - Sample</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
<link href="../sample.css" rel="stylesheet" type="text/css" />
|
||||
<script type="text/javascript">
|
||||
<!--
|
||||
function FCKeditor_OnComplete( editorInstance )
|
||||
{
|
||||
var oCombo = document.getElementById( 'cmbLanguages' ) ;
|
||||
for ( code in editorInstance.Language.AvailableLanguages )
|
||||
{
|
||||
AddComboOption( oCombo, editorInstance.Language.AvailableLanguages[code] + ' (' + code + ')', code ) ;
|
||||
}
|
||||
oCombo.value = editorInstance.Language.ActiveLanguage.Code ;
|
||||
}
|
||||
|
||||
function AddComboOption(combo, optionText, optionValue)
|
||||
{
|
||||
var oOption = document.createElement("OPTION") ;
|
||||
|
||||
combo.options.add(oOption) ;
|
||||
|
||||
oOption.innerHTML = optionText ;
|
||||
oOption.value = optionValue ;
|
||||
|
||||
return oOption ;
|
||||
}
|
||||
|
||||
function ChangeLanguage( languageCode )
|
||||
{
|
||||
window.location.href = window.location.pathname + "?Lang=" + languageCode ;
|
||||
}
|
||||
//-->
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<h1>FCKeditor - Lasso - Sample 2</h1>
|
||||
This sample shows the editor in all its available languages.
|
||||
<hr>
|
||||
<table cellpadding="0" cellspacing="0" border="0">
|
||||
<tr>
|
||||
<td>
|
||||
Select a language:
|
||||
</td>
|
||||
<td>
|
||||
<select id="cmbLanguages" onchange="ChangeLanguage(this.value);">
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
<form action="sampleposteddata.lasso" method="post" target="_blank">
|
||||
[//lasso
|
||||
include('../../fckeditor.lasso');
|
||||
var('basepath') = response_filepath->split('_samples')->get(1);
|
||||
|
||||
if(action_param('Lang'));
|
||||
var('config') = array(
|
||||
'AutoDetectLanguage' = 'false',
|
||||
'DefaultLanguage' = action_param('Lang')
|
||||
);
|
||||
else;
|
||||
var('config') = array(
|
||||
'AutoDetectLanguage' = 'true',
|
||||
'DefaultLanguage' = 'en'
|
||||
);
|
||||
/if;
|
||||
|
||||
var('myeditor') = fck_editor(
|
||||
-instancename='FCKeditor1',
|
||||
-basepath=$basepath,
|
||||
-config=$config,
|
||||
-initialvalue='This is some <strong>sample text</strong>. You are using <a href="http://www.fckeditor.net/">FCKeditor</a>.'
|
||||
);
|
||||
|
||||
$myeditor->create;
|
||||
]
|
||||
<br>
|
||||
<input type="submit" value="Submit">
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
@ -1,87 +0,0 @@
|
||||
[//lasso
|
||||
/*
|
||||
* 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 ==
|
||||
*
|
||||
* Sample page.
|
||||
*/
|
||||
]
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||
<html>
|
||||
<head>
|
||||
<title>FCKeditor - Sample</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
<link href="../sample.css" rel="stylesheet" type="text/css" />
|
||||
<script type="text/javascript">
|
||||
<!--
|
||||
function FCKeditor_OnComplete( editorInstance )
|
||||
{
|
||||
var oCombo = document.getElementById( 'cmbToolbars' ) ;
|
||||
oCombo.value = editorInstance.ToolbarSet.Name ;
|
||||
oCombo.style.visibility = '' ;
|
||||
}
|
||||
|
||||
function ChangeToolbar( toolbarName )
|
||||
{
|
||||
window.location.href = window.location.pathname + "?Toolbar=" + toolbarName ;
|
||||
}
|
||||
//-->
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<h1>FCKeditor - Lasso - Sample 3</h1>
|
||||
This sample shows how to change the editor toolbar.
|
||||
<hr>
|
||||
<table cellpadding="0" cellspacing="0" border="0">
|
||||
<tr>
|
||||
<td>
|
||||
Select the toolbar to load:
|
||||
</td>
|
||||
<td>
|
||||
<select id="cmbToolbars" onchange="ChangeToolbar(this.value);" style="VISIBILITY: hidden">
|
||||
<option value="Default" selected>Default</option>
|
||||
<option value="Basic">Basic</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
<form action="sampleposteddata.lasso" method="post" target="_blank">
|
||||
[//lasso
|
||||
include('../../fckeditor.lasso');
|
||||
var('basepath') = response_filepath->split('_samples')->get(1);
|
||||
|
||||
var('myeditor') = fck_editor(
|
||||
-instancename='FCKeditor1',
|
||||
-basepath=$basepath,
|
||||
-initialvalue='This is some <strong>sample text</strong>. You are using <a href="http://www.fckeditor.net/">FCKeditor</a>.'
|
||||
);
|
||||
|
||||
if(action_param('Toolbar'));
|
||||
$myeditor->toolbarset = action_param('Toolbar');
|
||||
/if;
|
||||
|
||||
$myeditor->create;
|
||||
]
|
||||
<br>
|
||||
<input type="submit" value="Submit">
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
@ -1,93 +0,0 @@
|
||||
[//lasso
|
||||
/*
|
||||
* 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 ==
|
||||
*
|
||||
* Sample page.
|
||||
*/
|
||||
]
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||
<html>
|
||||
<head>
|
||||
<title>FCKeditor - Sample</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
<link href="../sample.css" rel="stylesheet" type="text/css" />
|
||||
<script type="text/javascript">
|
||||
<!--
|
||||
function FCKeditor_OnComplete( editorInstance )
|
||||
{
|
||||
var oCombo = document.getElementById( 'cmbSkins' ) ;
|
||||
|
||||
// Get the active skin.
|
||||
var sSkin = editorInstance.Config['SkinPath'] ;
|
||||
sSkin = sSkin.match( /[^\/]+(?=\/$)/g ) ;
|
||||
|
||||
oCombo.value = sSkin ;
|
||||
oCombo.style.visibility = '' ;
|
||||
}
|
||||
|
||||
function ChangeSkin( skinName )
|
||||
{
|
||||
window.location.href = window.location.pathname + "?Skin=" + skinName ;
|
||||
}
|
||||
//-->
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<h1>FCKeditor - Lasso - Sample 4</h1>
|
||||
This sample shows how to change the editor skin.
|
||||
<hr>
|
||||
<table cellpadding="0" cellspacing="0" border="0">
|
||||
<tr>
|
||||
<td>
|
||||
Select the skin to load:
|
||||
</td>
|
||||
<td>
|
||||
<select id="cmbSkins" onchange="ChangeSkin(this.value);" style="VISIBILITY: hidden">
|
||||
<option value="default" selected>Default</option>
|
||||
<option value="office2003">Office 2003</option>
|
||||
<option value="silver">Silver</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
<form action="sampleposteddata.lasso" method="post" target="_blank">
|
||||
[//lasso
|
||||
include('../../fckeditor.lasso');
|
||||
var('basepath') = response_filepath->split('_samples')->get(1);
|
||||
|
||||
var('myeditor') = fck_editor(
|
||||
-instancename='FCKeditor1',
|
||||
-basepath=$basepath,
|
||||
-initialvalue='This is some <strong>sample text</strong>. You are using <a href="http://www.fckeditor.net/">FCKeditor</a>.'
|
||||
);
|
||||
|
||||
if(action_param('Skin'));
|
||||
$myeditor->config = array('SkinPath' = $basepath + 'editor/skins/' + action_param('Skin') + '/');
|
||||
/if;
|
||||
|
||||
$myeditor->create;
|
||||
]
|
||||
<br>
|
||||
<input type="submit" value="Submit">
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
@ -1,50 +0,0 @@
|
||||
[//lasso
|
||||
/*
|
||||
* 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 ==
|
||||
*
|
||||
* Sample page.
|
||||
*/
|
||||
]
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||
<html>
|
||||
<head>
|
||||
<title>FCKeditor - Samples - Posted Data</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
<link href="../sample.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<h1>FCKeditor - Samples - Posted Data</h1>
|
||||
This page lists all data posted by the form.
|
||||
<hr>
|
||||
<table width="100%" border="1" cellspacing="0" bordercolor="#999999">
|
||||
<tr style="FONT-WEIGHT: bold; COLOR: #dddddd; BACKGROUND-COLOR: #999999">
|
||||
<td nowrap>Field Name </td>
|
||||
<td>Value</td>
|
||||
</tr>
|
||||
[iterate(client_postparams, local('this'))]
|
||||
<tr>
|
||||
<td valign="top" nowrap><b>[#this->first]</b></td>
|
||||
<td width="100%">[#this->second]</td>
|
||||
</tr>
|
||||
[/iterate]
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
@ -1,115 +0,0 @@
|
||||
#!/usr/bin/env perl
|
||||
|
||||
#####
|
||||
# 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 ==
|
||||
#
|
||||
# Sample page.
|
||||
#####
|
||||
|
||||
## START: Hack for Windows (Not important to understand the editor code... Perl specific).
|
||||
if(Windows_check()) {
|
||||
chdir(GetScriptPath($0));
|
||||
}
|
||||
|
||||
sub Windows_check
|
||||
{
|
||||
# IIS,PWS(NT/95)
|
||||
$www_server_os = $^O;
|
||||
# Win98 & NT(SP4)
|
||||
if($www_server_os eq "") { $www_server_os= $ENV{'OS'}; }
|
||||
# AnHTTPd/Omni/IIS
|
||||
if($ENV{'SERVER_SOFTWARE'} =~ /AnWeb|Omni|IIS\//i) { $www_server_os= 'win'; }
|
||||
# Win Apache
|
||||
if($ENV{'WINDIR'} ne "") { $www_server_os= 'win'; }
|
||||
if($www_server_os=~ /win/i) { return(1); }
|
||||
return(0);
|
||||
}
|
||||
|
||||
sub GetScriptPath {
|
||||
local($path) = @_;
|
||||
if($path =~ /[\:\/\\]/) { $path =~ s/(.*?)[\/\\][^\/\\]+$/$1/; } else { $path = '.'; }
|
||||
$path;
|
||||
}
|
||||
## END: Hack for IIS
|
||||
|
||||
require '../../fckeditor.pl';
|
||||
|
||||
# When $ENV{'PATH_INFO'} cannot be used by perl.
|
||||
# $DefRootPath = "/XXXXX/_samples/perl/sample01.cgi"; Please write in script.
|
||||
|
||||
my $DefServerPath = "";
|
||||
my $ServerPath;
|
||||
|
||||
$ServerPath = &GetServerPath();
|
||||
print "Content-type: text/html\n\n";
|
||||
print <<"_HTML_TAG_";
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||
<html>
|
||||
<head>
|
||||
<title>FCKeditor - Sample</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
<link href="../sample.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<h1>FCKeditor - Perl - Sample 1</h1>
|
||||
This sample displays a normal HTML form with an FCKeditor with full features
|
||||
enabled.
|
||||
<hr>
|
||||
<form action="sampleposteddata.cgi" method="post" target="_blank">
|
||||
_HTML_TAG_
|
||||
|
||||
#// Automatically calculates the editor base path based on the _samples directory.
|
||||
#// This is usefull only for these samples. A real application should use something like this:
|
||||
#// $oFCKeditor->BasePath = '/fckeditor/' ; // '/fckeditor/' is the default value.
|
||||
|
||||
$sBasePath = $ServerPath;
|
||||
$sBasePath = substr($sBasePath,0,index($sBasePath,"_samples"));
|
||||
&FCKeditor('FCKeditor1');
|
||||
$BasePath = $sBasePath;
|
||||
$Value = 'This is some <strong>sample text</strong>. You are using <a href="http://www.fckeditor.net/">FCKeditor</a>.';
|
||||
&Create();
|
||||
|
||||
print <<"_HTML_TAG_";
|
||||
<br>
|
||||
<input type="submit" value="Submit">
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
||||
_HTML_TAG_
|
||||
|
||||
################
|
||||
#Please use this function, rewriting it depending on a server's environment.
|
||||
################
|
||||
sub GetServerPath
|
||||
{
|
||||
my $dir;
|
||||
|
||||
if($DefServerPath) {
|
||||
$dir = $DefServerPath;
|
||||
} else {
|
||||
if($ENV{'PATH_INFO'}) {
|
||||
$dir = $ENV{'PATH_INFO'};
|
||||
} elsif($ENV{'FILEPATH_INFO'}) {
|
||||
$dir = $ENV{'FILEPATH_INFO'};
|
||||
}
|
||||
}
|
||||
return($dir);
|
||||
}
|
@ -1,180 +0,0 @@
|
||||
#!/usr/bin/env perl
|
||||
|
||||
#####
|
||||
# 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 ==
|
||||
#
|
||||
# Sample page.
|
||||
#####
|
||||
|
||||
## START: Hack for Windows (Not important to understand the editor code... Perl specific).
|
||||
if(Windows_check()) {
|
||||
chdir(GetScriptPath($0));
|
||||
}
|
||||
|
||||
sub Windows_check
|
||||
{
|
||||
# IIS,PWS(NT/95)
|
||||
$www_server_os = $^O;
|
||||
# Win98 & NT(SP4)
|
||||
if($www_server_os eq "") { $www_server_os= $ENV{'OS'}; }
|
||||
# AnHTTPd/Omni/IIS
|
||||
if($ENV{'SERVER_SOFTWARE'} =~ /AnWeb|Omni|IIS\//i) { $www_server_os= 'win'; }
|
||||
# Win Apache
|
||||
if($ENV{'WINDIR'} ne "") { $www_server_os= 'win'; }
|
||||
if($www_server_os=~ /win/i) { return(1); }
|
||||
return(0);
|
||||
}
|
||||
|
||||
sub GetScriptPath {
|
||||
local($path) = @_;
|
||||
if($path =~ /[\:\/\\]/) { $path =~ s/(.*?)[\/\\][^\/\\]+$/$1/; } else { $path = '.'; }
|
||||
$path;
|
||||
}
|
||||
## END: Hack for IIS
|
||||
|
||||
require '../../fckeditor.pl';
|
||||
|
||||
# When $ENV{'PATH_INFO'} cannot be used by perl.
|
||||
# $DefRootPath = "/XXXXX/_samples/perl/sample02.cgi"; Please write in script.
|
||||
|
||||
my $DefServerPath = "";
|
||||
my $ServerPath;
|
||||
|
||||
$ServerPath = &GetServerPath();
|
||||
|
||||
if($ENV{'REQUEST_METHOD'} eq "POST") {
|
||||
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
|
||||
} else {
|
||||
$buffer = $ENV{'QUERY_STRING'};
|
||||
}
|
||||
@pairs = split(/&/,$buffer);
|
||||
foreach $pair (@pairs) {
|
||||
($name,$value) = split(/=/,$pair);
|
||||
$value =~ tr/+/ /;
|
||||
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
|
||||
$value =~ s/\t//g;
|
||||
$value =~ s/\r\n/\n/g;
|
||||
$FORM{$name} .= "\0" if(defined($FORM{$name}));
|
||||
$FORM{$name} .= $value;
|
||||
}
|
||||
|
||||
print "Content-type: text/html\n\n";
|
||||
print <<"_HTML_TAG_";
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||
<html>
|
||||
<head>
|
||||
<title>FCKeditor - Sample</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
<link href="../sample.css" rel="stylesheet" type="text/css" />
|
||||
<script type="text/javascript">
|
||||
|
||||
function FCKeditor_OnComplete( editorInstance )
|
||||
{
|
||||
var oCombo = document.getElementById( 'cmbLanguages' ) ;
|
||||
for ( code in editorInstance.Language.AvailableLanguages )
|
||||
{
|
||||
AddComboOption( oCombo, editorInstance.Language.AvailableLanguages[code] + ' (' + code + ')', code ) ;
|
||||
}
|
||||
oCombo.value = editorInstance.Language.ActiveLanguage.Code ;
|
||||
}
|
||||
|
||||
function AddComboOption(combo, optionText, optionValue)
|
||||
{
|
||||
var oOption = document.createElement("OPTION") ;
|
||||
|
||||
combo.options.add(oOption) ;
|
||||
|
||||
oOption.innerHTML = optionText ;
|
||||
oOption.value = optionValue ;
|
||||
|
||||
return oOption ;
|
||||
}
|
||||
|
||||
function ChangeLanguage( languageCode )
|
||||
{
|
||||
window.location.href = window.location.pathname + "?Lang=" + languageCode ;
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<h1>FCKeditor - Perl - Sample 2</h1>
|
||||
This sample shows the editor in all its available languages.
|
||||
<hr>
|
||||
<table cellpadding="0" cellspacing="0" border="0">
|
||||
<tr>
|
||||
<td>
|
||||
Select a language:
|
||||
</td>
|
||||
<td>
|
||||
<select id="cmbLanguages" onchange="ChangeLanguage(this.value);">
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
<form action="sampleposteddata.cgi" method="post" target="_blank">
|
||||
_HTML_TAG_
|
||||
|
||||
#// Automatically calculates the editor base path based on the _samples directory.
|
||||
#// This is usefull only for these samples. A real application should use something like this:
|
||||
#// $oFCKeditor->BasePath = '/fckeditor/' ; // '/fckeditor/' is the default value.
|
||||
$sBasePath = $ServerPath;
|
||||
$sBasePath = substr( $sBasePath, 0, index($sBasePath,"_samples"));
|
||||
|
||||
&FCKeditor('FCKeditor1');
|
||||
$BasePath = $sBasePath;
|
||||
|
||||
if($FORM{'Lang'} ne "") {
|
||||
$Config{'AutoDetectLanguage'} = "false";
|
||||
$Config{'DefaultLanguage'} = $FORM{'Lang'};
|
||||
} else {
|
||||
$Config{'AutoDetectLanguage'} = "true";
|
||||
$Config{'DefaultLanguage'} = 'en' ;
|
||||
}
|
||||
$Value = 'This is some <strong>sample text</strong>. You are using <a href="http://www.fckeditor.net/">FCKeditor</a>.' ;
|
||||
&Create();
|
||||
|
||||
print <<"_HTML_TAG_";
|
||||
<br>
|
||||
<input type="submit" value="Submit">
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
||||
_HTML_TAG_
|
||||
|
||||
################
|
||||
#Please use this function, rewriting it depending on a server's environment.
|
||||
################
|
||||
sub GetServerPath
|
||||
{
|
||||
my $dir;
|
||||
|
||||
if($DefServerPath) {
|
||||
$dir = $DefServerPath;
|
||||
} else {
|
||||
if($ENV{'PATH_INFO'}) {
|
||||
$dir = $ENV{'PATH_INFO'};
|
||||
} elsif($ENV{'FILEPATH_INFO'}) {
|
||||
$dir = $ENV{'FILEPATH_INFO'};
|
||||
}
|
||||
}
|
||||
return($dir);
|
||||
}
|
@ -1,165 +0,0 @@
|
||||
#!/usr/bin/env perl
|
||||
|
||||
#####
|
||||
# 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 ==
|
||||
#
|
||||
# Sample page.
|
||||
#####
|
||||
|
||||
## START: Hack for Windows (Not important to understand the editor code... Perl specific).
|
||||
if(Windows_check()) {
|
||||
chdir(GetScriptPath($0));
|
||||
}
|
||||
|
||||
sub Windows_check
|
||||
{
|
||||
# IIS,PWS(NT/95)
|
||||
$www_server_os = $^O;
|
||||
# Win98 & NT(SP4)
|
||||
if($www_server_os eq "") { $www_server_os= $ENV{'OS'}; }
|
||||
# AnHTTPd/Omni/IIS
|
||||
if($ENV{'SERVER_SOFTWARE'} =~ /AnWeb|Omni|IIS\//i) { $www_server_os= 'win'; }
|
||||
# Win Apache
|
||||
if($ENV{'WINDIR'} ne "") { $www_server_os= 'win'; }
|
||||
if($www_server_os=~ /win/i) { return(1); }
|
||||
return(0);
|
||||
}
|
||||
|
||||
sub GetScriptPath {
|
||||
local($path) = @_;
|
||||
if($path =~ /[\:\/\\]/) { $path =~ s/(.*?)[\/\\][^\/\\]+$/$1/; } else { $path = '.'; }
|
||||
$path;
|
||||
}
|
||||
## END: Hack for IIS
|
||||
|
||||
require '../../fckeditor.pl';
|
||||
|
||||
# When $ENV{'PATH_INFO'} cannot be used by perl.
|
||||
# $DefRootPath = "/XXXXX/_samples/perl/sample03.cgi"; Please write in script.
|
||||
|
||||
my $DefServerPath = "";
|
||||
my $ServerPath;
|
||||
|
||||
$ServerPath = &GetServerPath();
|
||||
|
||||
if($ENV{'REQUEST_METHOD'} eq "POST") {
|
||||
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
|
||||
} else {
|
||||
$buffer = $ENV{'QUERY_STRING'};
|
||||
}
|
||||
@pairs = split(/&/,$buffer);
|
||||
foreach $pair (@pairs) {
|
||||
($name,$value) = split(/=/,$pair);
|
||||
$value =~ tr/+/ /;
|
||||
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
|
||||
$value =~ s/\t//g;
|
||||
$value =~ s/\r\n/\n/g;
|
||||
$FORM{$name} .= "\0" if(defined($FORM{$name}));
|
||||
$FORM{$name} .= $value;
|
||||
}
|
||||
|
||||
print "Content-type: text/html\n\n";
|
||||
print <<"_HTML_TAG_";
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||
<html>
|
||||
<head>
|
||||
<title>FCKeditor - Sample</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
<link href="../sample.css" rel="stylesheet" type="text/css" />
|
||||
<script type="text/javascript">
|
||||
|
||||
function FCKeditor_OnComplete( editorInstance )
|
||||
{
|
||||
var oCombo = document.getElementById( 'cmbToolbars' ) ;
|
||||
oCombo.value = editorInstance.ToolbarSet.Name ;
|
||||
oCombo.style.visibility = '' ;
|
||||
}
|
||||
|
||||
function ChangeToolbar( toolbarName )
|
||||
{
|
||||
window.location.href = window.location.pathname + "?Toolbar=" + toolbarName ;
|
||||
}
|
||||
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<h1>FCKeditor - Perl - Sample 3</h1>
|
||||
This sample shows how to change the editor toolbar.
|
||||
<hr>
|
||||
<table cellpadding="0" cellspacing="0" border="0">
|
||||
<tr>
|
||||
<td>
|
||||
Select the toolbar to load:
|
||||
</td>
|
||||
<td>
|
||||
<select id="cmbToolbars" onchange="ChangeToolbar(this.value);" style="VISIBILITY: hidden">
|
||||
<option value="Default" selected>Default</option>
|
||||
<option value="Basic">Basic</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
<form action="sampleposteddata.cgi" method="post" target="_blank">
|
||||
_HTML_TAG_
|
||||
|
||||
#// Automatically calculates the editor base path based on the _samples directory.
|
||||
#// This is usefull only for these samples. A real application should use something like this:
|
||||
#// $oFCKeditor->BasePath = '/fckeditor/' ; // '/fckeditor/' is the default value.
|
||||
|
||||
$sBasePath = $ServerPath;
|
||||
$sBasePath = substr($sBasePath, 0, index( $sBasePath, "_samples" ));
|
||||
|
||||
&FCKeditor('FCKeditor1') ;
|
||||
$BasePath = $sBasePath ;
|
||||
|
||||
if($FORM{'Toolbar'} ne "") {
|
||||
$ToolbarSet = &specialchar_cnv( $FORM{'Toolbar'} );
|
||||
}
|
||||
$Value = 'This is some <strong>sample text</strong>. You are using <a href="http://www.fckeditor.net/">FCKeditor</a>.' ;
|
||||
&Create();
|
||||
|
||||
print <<"_HTML_TAG_";
|
||||
<br>
|
||||
<input type="submit" value="Submit">
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
||||
_HTML_TAG_
|
||||
|
||||
################
|
||||
#Please use this function, rewriting it depending on a server's environment.
|
||||
################
|
||||
sub GetServerPath
|
||||
{
|
||||
my $dir;
|
||||
|
||||
if($DefServerPath) {
|
||||
$dir = $DefServerPath;
|
||||
} else {
|
||||
if($ENV{'PATH_INFO'}) {
|
||||
$dir = $ENV{'PATH_INFO'};
|
||||
} elsif($ENV{'FILEPATH_INFO'}) {
|
||||
$dir = $ENV{'FILEPATH_INFO'};
|
||||
}
|
||||
}
|
||||
return($dir);
|
||||
}
|
@ -1,172 +0,0 @@
|
||||
#!/usr/bin/env perl
|
||||
|
||||
#####
|
||||
# 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 ==
|
||||
#
|
||||
# Sample page.
|
||||
#####
|
||||
|
||||
## START: Hack for Windows (Not important to understand the editor code... Perl specific).
|
||||
if(Windows_check()) {
|
||||
chdir(GetScriptPath($0));
|
||||
}
|
||||
|
||||
sub Windows_check
|
||||
{
|
||||
# IIS,PWS(NT/95)
|
||||
$www_server_os = $^O;
|
||||
# Win98 & NT(SP4)
|
||||
if($www_server_os eq "") { $www_server_os= $ENV{'OS'}; }
|
||||
# AnHTTPd/Omni/IIS
|
||||
if($ENV{'SERVER_SOFTWARE'} =~ /AnWeb|Omni|IIS\//i) { $www_server_os= 'win'; }
|
||||
# Win Apache
|
||||
if($ENV{'WINDIR'} ne "") { $www_server_os= 'win'; }
|
||||
if($www_server_os=~ /win/i) { return(1); }
|
||||
return(0);
|
||||
}
|
||||
|
||||
sub GetScriptPath {
|
||||
local($path) = @_;
|
||||
if($path =~ /[\:\/\\]/) { $path =~ s/(.*?)[\/\\][^\/\\]+$/$1/; } else { $path = '.'; }
|
||||
$path;
|
||||
}
|
||||
## END: Hack for IIS
|
||||
|
||||
require '../../fckeditor.pl';
|
||||
|
||||
# When $ENV{'PATH_INFO'} cannot be used by perl.
|
||||
# $DefRootPath = "/XXXXX/_samples/perl/sample04.cgi"; Please write in script.
|
||||
|
||||
my $DefServerPath = "";
|
||||
my $ServerPath;
|
||||
|
||||
$ServerPath = &GetServerPath();
|
||||
|
||||
if($ENV{'REQUEST_METHOD'} eq "POST") {
|
||||
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
|
||||
} else {
|
||||
$buffer = $ENV{'QUERY_STRING'};
|
||||
}
|
||||
@pairs = split(/&/,$buffer);
|
||||
foreach $pair (@pairs) {
|
||||
($name,$value) = split(/=/,$pair);
|
||||
$value =~ tr/+/ /;
|
||||
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
|
||||
$value =~ s/\t//g;
|
||||
$value =~ s/\r\n/\n/g;
|
||||
$FORM{$name} .= "\0" if(defined($FORM{$name}));
|
||||
$FORM{$name} .= $value;
|
||||
}
|
||||
|
||||
#!!Caution javascript \ Quart
|
||||
|
||||
print "Content-type: text/html\n\n";
|
||||
print <<"_HTML_TAG_";
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||
<html>
|
||||
<head>
|
||||
<title>FCKeditor - Sample</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
<link href="../sample.css" rel="stylesheet" type="text/css" />
|
||||
<script type="text/javascript">
|
||||
|
||||
function FCKeditor_OnComplete( editorInstance )
|
||||
{
|
||||
var oCombo = document.getElementById( 'cmbSkins' ) ;
|
||||
|
||||
// Get the active skin.
|
||||
var sSkin = editorInstance.Config['SkinPath'] ;
|
||||
sSkin = sSkin.match(/[^\\/]+(?=\\/\$)/g) ;
|
||||
|
||||
oCombo.value = sSkin ;
|
||||
oCombo.style.visibility = '' ;
|
||||
}
|
||||
|
||||
function ChangeSkin( skinName )
|
||||
{
|
||||
window.location.href = window.location.pathname + "?Skin=" + skinName ;
|
||||
}
|
||||
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<h1>FCKeditor - Perl - Sample 4</h1>
|
||||
This sample shows how to change the editor skin.
|
||||
<hr>
|
||||
<table cellpadding="0" cellspacing="0" border="0">
|
||||
<tr>
|
||||
<td>
|
||||
Select the skin to load:
|
||||
</td>
|
||||
<td>
|
||||
<select id="cmbSkins" onchange="ChangeSkin(this.value);" style="VISIBILITY: hidden">
|
||||
<option value="default" selected>Default</option>
|
||||
<option value="office2003">Office 2003</option>
|
||||
<option value="silver">Silver</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
<form action="sampleposteddata.cgi" method="post" target="_blank">
|
||||
_HTML_TAG_
|
||||
|
||||
#// Automatically calculates the editor base path based on the _samples directory.
|
||||
#// This is usefull only for these samples. A real application should use something like this:
|
||||
#// $oFCKeditor->BasePath = '/fckeditor/' ; // '/fckeditor/' is the default value.
|
||||
$sBasePath = $ServerPath;
|
||||
$sBasePath = substr( $sBasePath, 0, index( $sBasePath, "_samples" ) ) ;
|
||||
|
||||
&FCKeditor('FCKeditor1');
|
||||
$BasePath = $sBasePath;
|
||||
|
||||
if($FORM{'Skin'} ne "") {
|
||||
$Config{'SkinPath'} = $sBasePath . 'editor/skins/' . &specialchar_cnv( $FORM{'Skin'} ) . '/' ;
|
||||
}
|
||||
$Value = 'This is some <strong>sample text</strong>. You are using <a href="http://www.fckeditor.net/">FCKeditor</a>.' ;
|
||||
&Create() ;
|
||||
|
||||
print <<"_HTML_TAG_";
|
||||
<br>
|
||||
<input type="submit" value="Submit">
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
||||
_HTML_TAG_
|
||||
|
||||
################
|
||||
#Please use this function, rewriting it depending on a server's environment.
|
||||
################
|
||||
sub GetServerPath
|
||||
{
|
||||
my $dir;
|
||||
|
||||
if($DefServerPath) {
|
||||
$dir = $DefServerPath;
|
||||
} else {
|
||||
if($ENV{'PATH_INFO'}) {
|
||||
$dir = $ENV{'PATH_INFO'};
|
||||
} elsif($ENV{'FILEPATH_INFO'}) {
|
||||
$dir = $ENV{'FILEPATH_INFO'};
|
||||
}
|
||||
}
|
||||
return($dir);
|
||||
}
|
@ -1,105 +0,0 @@
|
||||
#!/usr/bin/env perl
|
||||
|
||||
#####
|
||||
# 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 page lists the data posted by a form.
|
||||
#####
|
||||
|
||||
## START: Hack for Windows (Not important to understand the editor code... Perl specific).
|
||||
if(Windows_check()) {
|
||||
chdir(GetScriptPath($0));
|
||||
}
|
||||
|
||||
sub Windows_check
|
||||
{
|
||||
# IIS,PWS(NT/95)
|
||||
$www_server_os = $^O;
|
||||
# Win98 & NT(SP4)
|
||||
if($www_server_os eq "") { $www_server_os= $ENV{'OS'}; }
|
||||
# AnHTTPd/Omni/IIS
|
||||
if($ENV{'SERVER_SOFTWARE'} =~ /AnWeb|Omni|IIS\//i) { $www_server_os= 'win'; }
|
||||
# Win Apache
|
||||
if($ENV{'WINDIR'} ne "") { $www_server_os= 'win'; }
|
||||
if($www_server_os=~ /win/i) { return(1); }
|
||||
return(0);
|
||||
}
|
||||
|
||||
sub GetScriptPath {
|
||||
local($path) = @_;
|
||||
if($path =~ /[\:\/\\]/) { $path =~ s/(.*?)[\/\\][^\/\\]+$/$1/; } else { $path = '.'; }
|
||||
$path;
|
||||
}
|
||||
## END: Hack for IIS
|
||||
|
||||
require '../../fckeditor.pl';
|
||||
|
||||
if($ENV{'REQUEST_METHOD'} eq "POST") {
|
||||
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
|
||||
} else {
|
||||
$buffer = $ENV{'QUERY_STRING'};
|
||||
}
|
||||
@pairs = split(/&/,$buffer);
|
||||
foreach $pair (@pairs) {
|
||||
($name,$value) = split(/=/,$pair);
|
||||
$value =~ tr/+/ /;
|
||||
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
|
||||
$value =~ s/\t//g;
|
||||
$value =~ s/\r\n/\n/g;
|
||||
$FORM{$name} .= "\0" if(defined($FORM{$name}));
|
||||
$FORM{$name} .= $value;
|
||||
}
|
||||
|
||||
print "Content-type: text/html\n\n";
|
||||
print <<"_HTML_TAG_";
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||
|
||||
<html>
|
||||
<head>
|
||||
<title>FCKeditor - Samples - Posted Data</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
<link href="../sample.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<h1>FCKeditor - Samples - Posted Data</h1>
|
||||
This page lists all data posted by the form.
|
||||
<hr>
|
||||
<table width="100%" border="1" cellspacing="0" bordercolor="#999999">
|
||||
<tr style="FONT-WEIGHT: bold; COLOR: #dddddd; BACKGROUND-COLOR: #999999">
|
||||
<td nowrap>Field Name </td>
|
||||
<td>Value</td>
|
||||
</tr>
|
||||
_HTML_TAG_
|
||||
|
||||
foreach $key (keys %FORM) {
|
||||
$postedValue = &specialchar_cnv($FORM{$key});
|
||||
print <<"_HTML_TAG_";
|
||||
<tr>
|
||||
<td valign="top" nowrap><b>$key</b></td>
|
||||
<td width="100%">$postedValue</td>
|
||||
</tr>
|
||||
_HTML_TAG_
|
||||
}
|
||||
print <<"_HTML_TAG_";
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
_HTML_TAG_
|
@ -1,57 +0,0 @@
|
||||
<?php
|
||||
/*
|
||||
* 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 ==
|
||||
*
|
||||
* Sample page.
|
||||
*/
|
||||
|
||||
include("../../fckeditor.php") ;
|
||||
?>
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||
<html>
|
||||
<head>
|
||||
<title>FCKeditor - Sample</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
<link href="../sample.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<h1>FCKeditor - PHP - Sample 1</h1>
|
||||
This sample displays a normal HTML form with an FCKeditor with full features
|
||||
enabled.
|
||||
<hr>
|
||||
<form action="sampleposteddata.php" method="post" target="_blank">
|
||||
<?php
|
||||
// Automatically calculates the editor base path based on the _samples directory.
|
||||
// This is usefull only for these samples. A real application should use something like this:
|
||||
// $oFCKeditor->BasePath = '/fckeditor/' ; // '/fckeditor/' is the default value.
|
||||
$sBasePath = $_SERVER['PHP_SELF'] ;
|
||||
$sBasePath = substr( $sBasePath, 0, strpos( $sBasePath, "_samples" ) ) ;
|
||||
|
||||
$oFCKeditor = new FCKeditor('FCKeditor1') ;
|
||||
$oFCKeditor->BasePath = $sBasePath ;
|
||||
$oFCKeditor->Value = 'This is some <strong>sample text</strong>. You are using <a href="http://www.fckeditor.net/">FCKeditor</a>.' ;
|
||||
$oFCKeditor->Create() ;
|
||||
?>
|
||||
<br>
|
||||
<input type="submit" value="Submit">
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
@ -1,108 +0,0 @@
|
||||
<?php
|
||||
/*
|
||||
* 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 ==
|
||||
*
|
||||
* Sample page.
|
||||
*/
|
||||
|
||||
include("../../fckeditor.php") ;
|
||||
?>
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||
<html>
|
||||
<head>
|
||||
<title>FCKeditor - Sample</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
<link href="../sample.css" rel="stylesheet" type="text/css" />
|
||||
<script type="text/javascript">
|
||||
|
||||
function FCKeditor_OnComplete( editorInstance )
|
||||
{
|
||||
var oCombo = document.getElementById( 'cmbLanguages' ) ;
|
||||
for ( code in editorInstance.Language.AvailableLanguages )
|
||||
{
|
||||
AddComboOption( oCombo, editorInstance.Language.AvailableLanguages[code] + ' (' + code + ')', code ) ;
|
||||
}
|
||||
oCombo.value = editorInstance.Language.ActiveLanguage.Code ;
|
||||
}
|
||||
|
||||
function AddComboOption(combo, optionText, optionValue)
|
||||
{
|
||||
var oOption = document.createElement("OPTION") ;
|
||||
|
||||
combo.options.add(oOption) ;
|
||||
|
||||
oOption.innerHTML = optionText ;
|
||||
oOption.value = optionValue ;
|
||||
|
||||
return oOption ;
|
||||
}
|
||||
|
||||
function ChangeLanguage( languageCode )
|
||||
{
|
||||
window.location.href = window.location.pathname + "?Lang=" + languageCode ;
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<h1>FCKeditor - PHP - Sample 2</h1>
|
||||
This sample shows the editor in all its available languages.
|
||||
<hr>
|
||||
<table cellpadding="0" cellspacing="0" border="0">
|
||||
<tr>
|
||||
<td>
|
||||
Select a language:
|
||||
</td>
|
||||
<td>
|
||||
<select id="cmbLanguages" onchange="ChangeLanguage(this.value);">
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
<form action="sampleposteddata.php" method="post" target="_blank">
|
||||
<?php
|
||||
// Automatically calculates the editor base path based on the _samples directory.
|
||||
// This is usefull only for these samples. A real application should use something like this:
|
||||
// $oFCKeditor->BasePath = '/fckeditor/' ; // '/fckeditor/' is the default value.
|
||||
$sBasePath = $_SERVER['PHP_SELF'] ;
|
||||
$sBasePath = substr( $sBasePath, 0, strpos( $sBasePath, "_samples" ) ) ;
|
||||
|
||||
$oFCKeditor = new FCKeditor('FCKeditor1') ;
|
||||
$oFCKeditor->BasePath = $sBasePath ;
|
||||
|
||||
if ( isset($_GET['Lang']) )
|
||||
{
|
||||
$oFCKeditor->Config['AutoDetectLanguage'] = false ;
|
||||
$oFCKeditor->Config['DefaultLanguage'] = $_GET['Lang'] ;
|
||||
}
|
||||
else
|
||||
{
|
||||
$oFCKeditor->Config['AutoDetectLanguage'] = true ;
|
||||
$oFCKeditor->Config['DefaultLanguage'] = 'en' ;
|
||||
}
|
||||
|
||||
$oFCKeditor->Value = 'This is some <strong>sample text</strong>. You are using <a href="http://www.fckeditor.net/">FCKeditor</a>.' ;
|
||||
$oFCKeditor->Create() ;
|
||||
?> <br>
|
||||
<input type="submit" value="Submit">
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
@ -1,89 +0,0 @@
|
||||
<?php
|
||||
/*
|
||||
* 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 ==
|
||||
*
|
||||
* Sample page.
|
||||
*/
|
||||
|
||||
include("../../fckeditor.php") ;
|
||||
?>
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||
<html>
|
||||
<head>
|
||||
<title>FCKeditor - Sample</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
<link href="../sample.css" rel="stylesheet" type="text/css" />
|
||||
<script type="text/javascript">
|
||||
|
||||
function FCKeditor_OnComplete( editorInstance )
|
||||
{
|
||||
var oCombo = document.getElementById( 'cmbToolbars' ) ;
|
||||
oCombo.value = editorInstance.ToolbarSet.Name ;
|
||||
oCombo.style.visibility = '' ;
|
||||
}
|
||||
|
||||
function ChangeToolbar( toolbarName )
|
||||
{
|
||||
window.location.href = window.location.pathname + "?Toolbar=" + toolbarName ;
|
||||
}
|
||||
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<h1>FCKeditor - PHP - Sample 3</h1>
|
||||
This sample shows how to change the editor toolbar.
|
||||
<hr>
|
||||
<table cellpadding="0" cellspacing="0" border="0">
|
||||
<tr>
|
||||
<td>
|
||||
Select the toolbar to load:
|
||||
</td>
|
||||
<td>
|
||||
<select id="cmbToolbars" onchange="ChangeToolbar(this.value);" style="VISIBILITY: hidden">
|
||||
<option value="Default" selected>Default</option>
|
||||
<option value="Basic">Basic</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
<form action="sampleposteddata.php" method="post" target="_blank">
|
||||
<?php
|
||||
// Automatically calculates the editor base path based on the _samples directory.
|
||||
// This is usefull only for these samples. A real application should use something like this:
|
||||
// $oFCKeditor->BasePath = '/fckeditor/' ; // '/fckeditor/' is the default value.
|
||||
$sBasePath = $_SERVER['PHP_SELF'] ;
|
||||
$sBasePath = substr( $sBasePath, 0, strpos( $sBasePath, "_samples" ) ) ;
|
||||
|
||||
$oFCKeditor = new FCKeditor('FCKeditor1') ;
|
||||
$oFCKeditor->BasePath = $sBasePath ;
|
||||
|
||||
if ( isset($_GET['Toolbar']) )
|
||||
$oFCKeditor->ToolbarSet = htmlspecialchars($_GET['Toolbar']);
|
||||
|
||||
$oFCKeditor->Value = 'This is some <strong>sample text</strong>. You are using <a href="http://www.fckeditor.net/">FCKeditor</a>.' ;
|
||||
$oFCKeditor->Create() ;
|
||||
?>
|
||||
<br>
|
||||
<input type="submit" value="Submit">
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
@ -1,95 +0,0 @@
|
||||
<?php
|
||||
/*
|
||||
* 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 ==
|
||||
*
|
||||
* Sample page.
|
||||
*/
|
||||
|
||||
include("../../fckeditor.php") ;
|
||||
?>
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||
<html>
|
||||
<head>
|
||||
<title>FCKeditor - Sample</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
<link href="../sample.css" rel="stylesheet" type="text/css" />
|
||||
<script type="text/javascript">
|
||||
|
||||
function FCKeditor_OnComplete( editorInstance )
|
||||
{
|
||||
var oCombo = document.getElementById( 'cmbSkins' ) ;
|
||||
|
||||
// Get the active skin.
|
||||
var sSkin = editorInstance.Config['SkinPath'] ;
|
||||
sSkin = sSkin.match( /[^\/]+(?=\/$)/g ) ;
|
||||
|
||||
oCombo.value = sSkin ;
|
||||
oCombo.style.visibility = '' ;
|
||||
}
|
||||
|
||||
function ChangeSkin( skinName )
|
||||
{
|
||||
window.location.href = window.location.pathname + "?Skin=" + skinName ;
|
||||
}
|
||||
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<h1>FCKeditor - PHP - Sample 4</h1>
|
||||
This sample shows how to change the editor skin.
|
||||
<hr>
|
||||
<table cellpadding="0" cellspacing="0" border="0">
|
||||
<tr>
|
||||
<td>
|
||||
Select the skin to load:
|
||||
</td>
|
||||
<td>
|
||||
<select id="cmbSkins" onchange="ChangeSkin(this.value);" style="VISIBILITY: hidden">
|
||||
<option value="default" selected>Default</option>
|
||||
<option value="office2003">Office 2003</option>
|
||||
<option value="silver">Silver</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
<form action="sampleposteddata.php" method="post" target="_blank">
|
||||
<?php
|
||||
// Automatically calculates the editor base path based on the _samples directory.
|
||||
// This is usefull only for these samples. A real application should use something like this:
|
||||
// $oFCKeditor->BasePath = '/fckeditor/' ; // '/fckeditor/' is the default value.
|
||||
$sBasePath = $_SERVER['PHP_SELF'] ;
|
||||
$sBasePath = substr( $sBasePath, 0, strpos( $sBasePath, "_samples" ) ) ;
|
||||
|
||||
$oFCKeditor = new FCKeditor('FCKeditor1') ;
|
||||
$oFCKeditor->BasePath = $sBasePath ;
|
||||
|
||||
if ( isset($_GET['Skin']) )
|
||||
$oFCKeditor->Config['SkinPath'] = $sBasePath . 'editor/skins/' . htmlspecialchars($_GET['Skin']) . '/' ;
|
||||
|
||||
$oFCKeditor->Value = 'This is some <strong>sample text</strong>. You are using <a href="http://www.fckeditor.net/">FCKeditor</a>.' ;
|
||||
$oFCKeditor->Create() ;
|
||||
?>
|
||||
<br>
|
||||
<input type="submit" value="Submit">
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
@ -1,66 +0,0 @@
|
||||
<?php
|
||||
/*
|
||||
* 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 page lists the data posted by a form.
|
||||
*/
|
||||
?>
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||
<html>
|
||||
<head>
|
||||
<title>FCKeditor - Samples - Posted Data</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
<link href="../sample.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<h1>FCKeditor - Samples - Posted Data</h1>
|
||||
This page lists all data posted by the form.
|
||||
<hr>
|
||||
<table width="100%" border="1" cellspacing="0" bordercolor="#999999">
|
||||
<tr style="FONT-WEIGHT: bold; COLOR: #dddddd; BACKGROUND-COLOR: #999999">
|
||||
<td nowrap>Field Name </td>
|
||||
<td>Value</td>
|
||||
</tr>
|
||||
<?php
|
||||
|
||||
if ( isset( $_POST ) )
|
||||
$postArray = &$_POST ; // 4.1.0 or later, use $_POST
|
||||
else
|
||||
$postArray = &$HTTP_POST_VARS ; // prior to 4.1.0, use HTTP_POST_VARS
|
||||
|
||||
foreach ( $postArray as $sForm => $value )
|
||||
{
|
||||
if ( get_magic_quotes_gpc() )
|
||||
$postedValue = htmlspecialchars( stripslashes( $value ) ) ;
|
||||
else
|
||||
$postedValue = htmlspecialchars( $value ) ;
|
||||
|
||||
?>
|
||||
<tr>
|
||||
<td valign="top" nowrap><b><?=$sForm?></b></td>
|
||||
<td width="100%"><?=$postedValue?></td>
|
||||
</tr>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
@ -1,82 +0,0 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
"""
|
||||
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 ==
|
||||
|
||||
Sample page.
|
||||
"""
|
||||
|
||||
import cgi
|
||||
import os
|
||||
|
||||
# Ensure that the fckeditor.py is included in your classpath
|
||||
import fckeditor
|
||||
|
||||
# Tell the browser to render html
|
||||
print "Content-Type: text/html"
|
||||
print ""
|
||||
|
||||
# Document header
|
||||
print """<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||
<html>
|
||||
<head>
|
||||
<title>FCKeditor - Sample</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
<link href="../sample.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<h1>FCKeditor - Python - Sample 1</h1>
|
||||
This sample displays a normal HTML form with an FCKeditor with full features
|
||||
enabled.
|
||||
<hr>
|
||||
<form action="sampleposteddata.py" method="post" target="_blank">
|
||||
"""
|
||||
|
||||
# This is the real work
|
||||
try:
|
||||
sBasePath = os.environ.get("SCRIPT_NAME")
|
||||
sBasePath = sBasePath[0:sBasePath.find("_samples")]
|
||||
|
||||
oFCKeditor = fckeditor.FCKeditor('FCKeditor1')
|
||||
oFCKeditor.BasePath = sBasePath
|
||||
oFCKeditor.Value = """This is some <strong>sample text</strong>. You are using <a href="http://www.fckeditor.net/">FCKeditor</a>."""
|
||||
print oFCKeditor.Create()
|
||||
except Exception, e:
|
||||
print e
|
||||
print """
|
||||
<br>
|
||||
<input type="submit" value="Submit">
|
||||
</form>
|
||||
"""
|
||||
|
||||
# For testing your environments
|
||||
print "<hr>"
|
||||
for key in os.environ.keys():
|
||||
print "%s: %s<br>" % (key, os.environ.get(key, ""))
|
||||
print "<hr>"
|
||||
|
||||
# Document footer
|
||||
print """
|
||||
</body>
|
||||
</html>
|
||||
"""
|
||||
|
||||
|
@ -1,85 +0,0 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
"""
|
||||
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 page lists the data posted by a form.
|
||||
"""
|
||||
|
||||
import cgi
|
||||
import os
|
||||
|
||||
# Tell the browser to render html
|
||||
print "Content-Type: text/html"
|
||||
print ""
|
||||
|
||||
try:
|
||||
# Create a cgi object
|
||||
form = cgi.FieldStorage()
|
||||
except Exception, e:
|
||||
print e
|
||||
|
||||
# Document header
|
||||
print """<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||
<html>
|
||||
<head>
|
||||
<title>FCKeditor - Samples - Posted Data</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
<link href="../sample.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
"""
|
||||
|
||||
# This is the real work
|
||||
print """
|
||||
<h1>FCKeditor - Samples - Posted Data</h1>
|
||||
This page lists all data posted by the form.
|
||||
<hr>
|
||||
<table width="100%" border="1" cellspacing="0" bordercolor="#999999">
|
||||
<tr style="FONT-WEIGHT: bold; COLOR: #dddddd; BACKGROUND-COLOR: #999999">
|
||||
<td nowrap>Field Name </td>
|
||||
<td>Value</td>
|
||||
</tr>
|
||||
"""
|
||||
for key in form.keys():
|
||||
try:
|
||||
value = form[key].value
|
||||
print """
|
||||
<tr>
|
||||
<td valign="top" nowrap><b>%s</b></td>
|
||||
<td width="100%%">%s</td>
|
||||
</tr>
|
||||
""" % (key, value)
|
||||
except Exception, e:
|
||||
print e
|
||||
print "</table>"
|
||||
|
||||
# For testing your environments
|
||||
print "<hr>"
|
||||
for key in os.environ.keys():
|
||||
print "%s: %s<br>" % (key, os.environ.get(key, ""))
|
||||
print "<hr>"
|
||||
|
||||
# Document footer
|
||||
print """
|
||||
</body>
|
||||
</html>
|
||||
"""
|
@ -1,50 +0,0 @@
|
||||
/*
|
||||
* 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 ==
|
||||
*
|
||||
* Styles used in the samples pages.
|
||||
*/
|
||||
|
||||
body, td, input, select, textarea
|
||||
{
|
||||
font-size: 12px;
|
||||
font-family: Arial, Verdana, Sans-Serif;
|
||||
}
|
||||
|
||||
h1
|
||||
{
|
||||
font-weight: bold;
|
||||
font-size: 180%;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
form
|
||||
{
|
||||
margin: 0px 0px 0px 0px;
|
||||
padding: 0px 0px 0px 0px;
|
||||
}
|
||||
|
||||
pre
|
||||
{
|
||||
margin:0px;
|
||||
padding:0px;
|
||||
white-space: pre-wrap; /* css-3 */
|
||||
white-space: -moz-pre-wrap; /* Mozilla, since 1999 */
|
||||
word-wrap: break-word; /* Internet Explorer 5.5+ */
|
||||
}
|
@ -1,123 +0,0 @@
|
||||
<!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 ==
|
||||
*
|
||||
* Page used to select the sample to view.
|
||||
-->
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<title>FCKeditor - Sample Selection</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="robots" content="noindex, nofollow" />
|
||||
<link href="sample.css" rel="stylesheet" type="text/css" />
|
||||
<script type="text/javascript">
|
||||
|
||||
if ( window.top == window )
|
||||
document.location = 'default.html' ;
|
||||
|
||||
function OpenSample( sample )
|
||||
{
|
||||
if ( sample.length > 0 )
|
||||
window.open( sample, 'Sample' ) ;
|
||||
}
|
||||
|
||||
</script>
|
||||
</head>
|
||||
<body style="margin-top: 0px; margin-bottom: 0px;">
|
||||
<table border="0" cellpadding="0" cellspacing="0" style="height: 100%">
|
||||
<tr>
|
||||
<td>
|
||||
Please select the sample you want to view:
|
||||
<br />
|
||||
<select onchange="OpenSample(this.value);">
|
||||
<optgroup label="JavaScript">
|
||||
<option value="html/sample01.html" selected="selected">JavaScript : Sample 01 : Editor
|
||||
with all features</option>
|
||||
<option value="html/sample02.html">JavaScript : Sample 02 : Replacement of a TEXTAREA</option>
|
||||
<option value="html/sample03.html">JavaScript : Sample 03 : Multi-language support</option>
|
||||
<option value="html/sample04.html">JavaScript : Sample 04 : Toolbar selection</option>
|
||||
<option value="html/sample05.html">JavaScript : Sample 05 : Skins support</option>
|
||||
<option value="html/sample06.html">JavaScript : Sample 06 : Plugins support</option>
|
||||
<option value="html/sample07.html">JavaScript : Sample 07 : Full Page editing</option>
|
||||
<option value="html/sample08.html">JavaScript : Sample 08 : Editor API usage</option>
|
||||
<option value="html/sample09.html">JavaScript : Sample 09 : Complex form (multiple editors)</option>
|
||||
<option value="html/sample10.html">JavaScript : Sample 10 : Shared toolbar on same page</option>
|
||||
<option value="html/sample11.html">JavaScript : Sample 11 : Shared toolbar from IFRAME</option>
|
||||
<option value="html/sample12.html">JavaScript : Sample 12 : Enter key behavior</option>
|
||||
<option value="html/sample13.html">JavaScript : Sample 13 : Dinamically switching with a Textarea</option>
|
||||
</optgroup>
|
||||
<optgroup label=" ">
|
||||
</optgroup>
|
||||
<optgroup label="Active Fox Pro">
|
||||
<option value="afp/sample01.afp">AFP : Sample 01 : Editor with all features</option>
|
||||
<option value="afp/sample02.afp">AFP : Sample 02 : Multi-language support</option>
|
||||
<option value="afp/sample03.afp">AFP : Sample 03 : Toolbar selection</option>
|
||||
<option value="afp/sample04.afp">AFP : Sample 04 : Skins support</option>
|
||||
</optgroup>
|
||||
<optgroup label=" ">
|
||||
</optgroup>
|
||||
<optgroup label="ASP">
|
||||
<option value="asp/sample01.asp">ASP : Sample 01 : Editor with all features</option>
|
||||
<option value="asp/sample02.asp">ASP : Sample 02 : Multi-language support</option>
|
||||
<option value="asp/sample03.asp">ASP : Sample 03 : Toolbar selection</option>
|
||||
<option value="asp/sample04.asp">ASP : Sample 04 : Skins support</option>
|
||||
</optgroup>
|
||||
<optgroup label=" ">
|
||||
</optgroup>
|
||||
<optgroup label="ColdFusion">
|
||||
<option value="cfm/sample01.cfm">ColdFusion : Sample 01 : Editor with all features</option>
|
||||
<option value="cfm/sample02_mx.cfm">ColdFusion : Sample 02 : Advanced version for ColdFusion
|
||||
MX</option>
|
||||
</optgroup>
|
||||
<optgroup label=" ">
|
||||
</optgroup>
|
||||
<optgroup label="Lasso">
|
||||
<option value="lasso/sample01.lasso">Lasso : Sample 01 : Editor with all features</option>
|
||||
<option value="lasso/sample02.lasso">Lasso : Sample 02 : Multi-language support</option>
|
||||
<option value="lasso/sample03.lasso">Lasso : Sample 03 : Toolbar selection</option>
|
||||
<option value="lasso/sample04.lasso">Lasso : Sample 04 : Skins support</option>
|
||||
</optgroup>
|
||||
<optgroup label=" ">
|
||||
</optgroup>
|
||||
<optgroup label="Perl">
|
||||
<option value="perl/sample01.cgi">Perl : Sample 01 : Editor with all features</option>
|
||||
<option value="perl/sample02.cgi">Perl : Sample 02 : Multi-language support</option>
|
||||
<option value="perl/sample03.cgi">Perl : Sample 03 : Toolbar selection</option>
|
||||
<option value="perl/sample04.cgi">Perl : Sample 04 : Skins support</option>
|
||||
</optgroup>
|
||||
<optgroup label=" ">
|
||||
</optgroup>
|
||||
<optgroup label="PHP">
|
||||
<option value="php/sample01.php">PHP : Sample 01 : Editor with all features</option>
|
||||
<option value="php/sample02.php">PHP : Sample 02 : Multi-language support</option>
|
||||
<option value="php/sample03.php">PHP : Sample 03 : Toolbar selection</option>
|
||||
<option value="php/sample04.php">PHP : Sample 04 : Skins support</option>
|
||||
</optgroup>
|
||||
<optgroup label=" ">
|
||||
</optgroup>
|
||||
<optgroup label="Python">
|
||||
<option value="py/sample01.py">Python : Sample 01 : Editor with all features</option>
|
||||
</optgroup>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
@ -1,38 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<!--
|
||||
* 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 ==
|
||||
-->
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<title>FCKeditor - Upgrade</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<style type="text/css">
|
||||
body { font-family: arial, verdana, sans-serif }
|
||||
p { margin-left: 20px }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1>
|
||||
FCKeditor Upgrade</h1>
|
||||
<p>
|
||||
Please check the following URL for notes regarding upgrade: <a href="http://wiki.fckeditor.net/Developer%27s_Guide/Upgrade">
|
||||
http://wiki.fckeditor.net/Developer%27s_Guide/Upgrade</a></p>
|
||||
</body>
|
||||
</html>
|
File diff suppressed because it is too large
Load Diff
@ -1,134 +0,0 @@
|
||||
/*
|
||||
* 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 ==
|
||||
*
|
||||
* FCKContextMenu Class: renders an control a context menu.
|
||||
*/
|
||||
|
||||
var FCKContextMenu = function( parentWindow, langDir )
|
||||
{
|
||||
var oPanel = this._Panel = new FCKPanel( parentWindow, true ) ;
|
||||
oPanel.AppendStyleSheet( FCKConfig.SkinPath + 'fck_editor.css' ) ;
|
||||
oPanel.IsContextMenu = true ;
|
||||
|
||||
// The FCKTools.DisableSelection doesn't seems to work to avoid dragging of the icons in Mozilla
|
||||
// so we stop the start of the dragging
|
||||
if ( FCKBrowserInfo.IsGecko )
|
||||
oPanel.Document.addEventListener( 'draggesture', function(e) {e.preventDefault(); return false;}, true ) ;
|
||||
|
||||
var oMenuBlock = this._MenuBlock = new FCKMenuBlock() ;
|
||||
oMenuBlock.Panel = oPanel ;
|
||||
oMenuBlock.OnClick = FCKTools.CreateEventListener( FCKContextMenu_MenuBlock_OnClick, this ) ;
|
||||
|
||||
this._Redraw = true ;
|
||||
}
|
||||
|
||||
|
||||
FCKContextMenu.prototype.SetMouseClickWindow = function( mouseClickWindow )
|
||||
{
|
||||
if ( !FCKBrowserInfo.IsIE )
|
||||
{
|
||||
this._Document = mouseClickWindow.document ;
|
||||
this._Document.addEventListener( 'contextmenu', FCKContextMenu_Document_OnContextMenu, false ) ;
|
||||
}
|
||||
}
|
||||
|
||||
FCKContextMenu.prototype.AddItem = function( name, label, iconPathOrStripInfoArrayOrIndex, isDisabled )
|
||||
{
|
||||
var oItem = this._MenuBlock.AddItem( name, label, iconPathOrStripInfoArrayOrIndex, isDisabled) ;
|
||||
this._Redraw = true ;
|
||||
return oItem ;
|
||||
}
|
||||
|
||||
FCKContextMenu.prototype.AddSeparator = function()
|
||||
{
|
||||
this._MenuBlock.AddSeparator() ;
|
||||
this._Redraw = true ;
|
||||
}
|
||||
|
||||
FCKContextMenu.prototype.RemoveAllItems = function()
|
||||
{
|
||||
this._MenuBlock.RemoveAllItems() ;
|
||||
this._Redraw = true ;
|
||||
}
|
||||
|
||||
FCKContextMenu.prototype.AttachToElement = function( element )
|
||||
{
|
||||
if ( FCKBrowserInfo.IsIE )
|
||||
FCKTools.AddEventListenerEx( element, 'contextmenu', FCKContextMenu_AttachedElement_OnContextMenu, this ) ;
|
||||
else
|
||||
element._FCKContextMenu = this ;
|
||||
|
||||
// element.onmouseup = FCKContextMenu_AttachedElement_OnMouseUp ;
|
||||
}
|
||||
|
||||
function FCKContextMenu_Document_OnContextMenu( e )
|
||||
{
|
||||
var el = e.target ;
|
||||
|
||||
while ( el )
|
||||
{
|
||||
if ( el._FCKContextMenu )
|
||||
{
|
||||
FCKTools.CancelEvent( e ) ;
|
||||
FCKContextMenu_AttachedElement_OnContextMenu( e, el._FCKContextMenu, el ) ;
|
||||
}
|
||||
el = el.parentNode ;
|
||||
}
|
||||
}
|
||||
|
||||
function FCKContextMenu_AttachedElement_OnContextMenu( ev, fckContextMenu, el )
|
||||
{
|
||||
// var iButton = e ? e.which - 1 : event.button ;
|
||||
|
||||
// if ( iButton != 2 )
|
||||
// return ;
|
||||
|
||||
var eTarget = el || this ;
|
||||
|
||||
if ( fckContextMenu.OnBeforeOpen )
|
||||
fckContextMenu.OnBeforeOpen.call( fckContextMenu, eTarget ) ;
|
||||
|
||||
if ( fckContextMenu._MenuBlock.Count() == 0 )
|
||||
return false ;
|
||||
|
||||
if ( fckContextMenu._Redraw )
|
||||
{
|
||||
fckContextMenu._MenuBlock.Create( fckContextMenu._Panel.MainNode ) ;
|
||||
fckContextMenu._Redraw = false ;
|
||||
}
|
||||
|
||||
// This will avoid that the content of the context menu can be dragged in IE
|
||||
// as the content of the panel is recreated we need to do it every time
|
||||
FCKTools.DisableSelection( fckContextMenu._Panel.Document.body ) ;
|
||||
|
||||
fckContextMenu._Panel.Show(
|
||||
ev.pageX || ev.screenX,
|
||||
ev.pageY || ev.screenY,
|
||||
ev.currentTarget || null
|
||||
) ;
|
||||
|
||||
return false ;
|
||||
}
|
||||
|
||||
function FCKContextMenu_MenuBlock_OnClick( menuItem, contextMenu )
|
||||
{
|
||||
contextMenu._Panel.Hide() ;
|
||||
FCKTools.RunFunction( contextMenu.OnItemClick, contextMenu, menuItem ) ;
|
||||
}
|
@ -1,46 +0,0 @@
|
||||
/*
|
||||
* 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 a generic Document Fragment object. It is not intended to provide
|
||||
* the W3C implementation, but is a way to fix the missing of a real Document
|
||||
* Fragment in IE (where document.createDocumentFragment() returns a normal
|
||||
* document instead), giving a standard interface for it.
|
||||
* (IE Implementation)
|
||||
*/
|
||||
|
||||
var FCKDocumentFragment = function( parentDocument, baseDocFrag )
|
||||
{
|
||||
this.RootNode = baseDocFrag || parentDocument.createDocumentFragment() ;
|
||||
}
|
||||
|
||||
FCKDocumentFragment.prototype =
|
||||
{
|
||||
|
||||
// Append the contents of this Document Fragment to another element.
|
||||
AppendTo : function( targetNode )
|
||||
{
|
||||
targetNode.appendChild( this.RootNode ) ;
|
||||
},
|
||||
|
||||
InsertAfterNode : function( existingNode )
|
||||
{
|
||||
FCKDomTools.InsertAfterNode( existingNode, this.RootNode ) ;
|
||||
}
|
||||
}
|
@ -1,58 +0,0 @@
|
||||
/*
|
||||
* 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 a generic Document Fragment object. It is not intended to provide
|
||||
* the W3C implementation, but is a way to fix the missing of a real Document
|
||||
* Fragment in IE (where document.createDocumentFragment() returns a normal
|
||||
* document instead), giving a standard interface for it.
|
||||
* (IE Implementation)
|
||||
*/
|
||||
|
||||
var FCKDocumentFragment = function( parentDocument )
|
||||
{
|
||||
this._Document = parentDocument ;
|
||||
this.RootNode = parentDocument.createElement( 'div' ) ;
|
||||
}
|
||||
|
||||
// Append the contents of this Document Fragment to another node.
|
||||
FCKDocumentFragment.prototype =
|
||||
{
|
||||
|
||||
AppendTo : function( targetNode )
|
||||
{
|
||||
FCKDomTools.MoveChildren( this.RootNode, targetNode ) ;
|
||||
},
|
||||
|
||||
AppendHtml : function( html )
|
||||
{
|
||||
var eTmpDiv = this._Document.createElement( 'div' ) ;
|
||||
eTmpDiv.innerHTML = html ;
|
||||
FCKDomTools.MoveChildren( eTmpDiv, this.RootNode ) ;
|
||||
},
|
||||
|
||||
InsertAfterNode : function( existingNode )
|
||||
{
|
||||
var eRoot = this.RootNode ;
|
||||
var eLast ;
|
||||
|
||||
while( ( eLast = eRoot.lastChild ) )
|
||||
FCKDomTools.InsertAfterNode( existingNode, eRoot.removeChild( eLast ) ) ;
|
||||
}
|
||||
} ;
|
@ -1,452 +0,0 @@
|
||||
/*
|
||||
* 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 ==
|
||||
*
|
||||
* Class for working with a selection range, much like the W3C DOM Range, but
|
||||
* it is not intented to be an implementation of the W3C interface.
|
||||
*/
|
||||
|
||||
var FCKDomRange = function( sourceWindow )
|
||||
{
|
||||
this.Window = sourceWindow ;
|
||||
}
|
||||
|
||||
FCKDomRange.prototype =
|
||||
{
|
||||
|
||||
_UpdateElementInfo : function()
|
||||
{
|
||||
if ( !this._Range )
|
||||
this.Release( true ) ;
|
||||
else
|
||||
{
|
||||
var eStart = this._Range.startContainer ;
|
||||
var eEnd = this._Range.endContainer ;
|
||||
|
||||
var oElementPath = new FCKElementPath( eStart ) ;
|
||||
this.StartContainer = oElementPath.LastElement ;
|
||||
this.StartBlock = oElementPath.Block ;
|
||||
this.StartBlockLimit = oElementPath.BlockLimit ;
|
||||
|
||||
if ( eStart != eEnd )
|
||||
oElementPath = new FCKElementPath( eEnd ) ;
|
||||
this.EndContainer = oElementPath.LastElement ;
|
||||
this.EndBlock = oElementPath.Block ;
|
||||
this.EndBlockLimit = oElementPath.BlockLimit ;
|
||||
}
|
||||
},
|
||||
|
||||
CreateRange : function()
|
||||
{
|
||||
return new FCKW3CRange( this.Window.document ) ;
|
||||
},
|
||||
|
||||
DeleteContents : function()
|
||||
{
|
||||
if ( this._Range )
|
||||
{
|
||||
this._Range.deleteContents() ;
|
||||
this._UpdateElementInfo() ;
|
||||
}
|
||||
},
|
||||
|
||||
ExtractContents : function()
|
||||
{
|
||||
if ( this._Range )
|
||||
{
|
||||
var docFrag = this._Range.extractContents() ;
|
||||
this._UpdateElementInfo() ;
|
||||
return docFrag ;
|
||||
}
|
||||
},
|
||||
|
||||
CheckIsCollapsed : function()
|
||||
{
|
||||
if ( this._Range )
|
||||
return this._Range.collapsed ;
|
||||
},
|
||||
|
||||
Collapse : function( toStart )
|
||||
{
|
||||
if ( this._Range )
|
||||
this._Range.collapse( toStart ) ;
|
||||
|
||||
this._UpdateElementInfo() ;
|
||||
},
|
||||
|
||||
Clone : function()
|
||||
{
|
||||
var oClone = FCKTools.CloneObject( this ) ;
|
||||
|
||||
if ( this._Range )
|
||||
oClone._Range = this._Range.cloneRange() ;
|
||||
|
||||
return oClone ;
|
||||
},
|
||||
|
||||
MoveToNodeContents : function( targetNode )
|
||||
{
|
||||
if ( !this._Range )
|
||||
this._Range = this.CreateRange() ;
|
||||
|
||||
this._Range.selectNodeContents( targetNode ) ;
|
||||
|
||||
this._UpdateElementInfo() ;
|
||||
},
|
||||
|
||||
MoveToElementStart : function( targetElement )
|
||||
{
|
||||
this.SetStart(targetElement,1) ;
|
||||
this.SetEnd(targetElement,1) ;
|
||||
},
|
||||
|
||||
// Moves to the first editing point inside a element. For example, in a
|
||||
// element tree like "<p><b><i></i></b> Text</p>", the start editing point
|
||||
// is "<p><b><i>^</i></b> Text</p>" (inside <i>).
|
||||
MoveToElementEditStart : function( targetElement )
|
||||
{
|
||||
var child ;
|
||||
|
||||
while ( ( child = targetElement.firstChild ) && child.nodeType == 1 && FCKListsLib.EmptyElements[ child.nodeName.toLowerCase() ] == null )
|
||||
targetElement = child ;
|
||||
|
||||
this.MoveToElementStart( targetElement ) ;
|
||||
},
|
||||
|
||||
InsertNode : function( node )
|
||||
{
|
||||
if ( this._Range )
|
||||
this._Range.insertNode( node ) ;
|
||||
},
|
||||
|
||||
CheckIsEmpty : function( ignoreEndBRs )
|
||||
{
|
||||
if ( this.CheckIsCollapsed() )
|
||||
return true ;
|
||||
|
||||
// Inserts the contents of the range in a div tag.
|
||||
var eToolDiv = this.Window.document.createElement( 'div' ) ;
|
||||
this._Range.cloneContents().AppendTo( eToolDiv ) ;
|
||||
|
||||
FCKDomTools.TrimNode( eToolDiv, ignoreEndBRs ) ;
|
||||
|
||||
return ( eToolDiv.innerHTML.length == 0 ) ;
|
||||
},
|
||||
|
||||
CheckStartOfBlock : function()
|
||||
{
|
||||
// Create a clone of the current range.
|
||||
var oTestRange = this.Clone() ;
|
||||
|
||||
// Collapse it to its start point.
|
||||
oTestRange.Collapse( true ) ;
|
||||
|
||||
// Move the start boundary to the start of the block.
|
||||
oTestRange.SetStart( oTestRange.StartBlock || oTestRange.StartBlockLimit, 1 ) ;
|
||||
|
||||
var bIsStartOfBlock = oTestRange.CheckIsEmpty() ;
|
||||
|
||||
oTestRange.Release() ;
|
||||
|
||||
return bIsStartOfBlock ;
|
||||
},
|
||||
|
||||
CheckEndOfBlock : function( refreshSelection )
|
||||
{
|
||||
// Create a clone of the current range.
|
||||
var oTestRange = this.Clone() ;
|
||||
|
||||
// Collapse it to its end point.
|
||||
oTestRange.Collapse( false ) ;
|
||||
|
||||
// Move the end boundary to the end of the block.
|
||||
oTestRange.SetEnd( oTestRange.EndBlock || oTestRange.EndBlockLimit, 2 ) ;
|
||||
|
||||
var bIsEndOfBlock = oTestRange.CheckIsCollapsed() ;
|
||||
|
||||
if ( !bIsEndOfBlock )
|
||||
{
|
||||
// Inserts the contents of the range in a div tag.
|
||||
var eToolDiv = this.Window.document.createElement( 'div' ) ;
|
||||
oTestRange._Range.cloneContents().AppendTo( eToolDiv ) ;
|
||||
FCKDomTools.TrimNode( eToolDiv, true ) ;
|
||||
|
||||
// Find out if we are in an empty tree of inline elements, like <b><i><span></span></i></b>
|
||||
bIsEndOfBlock = true ;
|
||||
var eLastChild = eToolDiv ;
|
||||
while ( ( eLastChild = eLastChild.lastChild ) )
|
||||
{
|
||||
// Check the following:
|
||||
// 1. Is there more than one node in the parents children?
|
||||
// 2. Is the node not an element node?
|
||||
// 3. Is it not a inline element.
|
||||
if ( eLastChild.previousSibling || eLastChild.nodeType != 1 || FCKListsLib.InlineChildReqElements[ eLastChild.nodeName.toLowerCase() ] == null )
|
||||
{
|
||||
// So we are not in the end of the range.
|
||||
bIsEndOfBlock = false ;
|
||||
break ;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
oTestRange.Release() ;
|
||||
|
||||
if ( refreshSelection )
|
||||
this.Select() ;
|
||||
|
||||
return bIsEndOfBlock ;
|
||||
},
|
||||
|
||||
CreateBookmark : function()
|
||||
{
|
||||
// Create the bookmark info (random IDs).
|
||||
var oBookmark =
|
||||
{
|
||||
StartId : 'fck_dom_range_start_' + (new Date()).valueOf() + '_' + Math.floor(Math.random()*1000),
|
||||
EndId : 'fck_dom_range_end_' + (new Date()).valueOf() + '_' + Math.floor(Math.random()*1000)
|
||||
} ;
|
||||
|
||||
var oDoc = this.Window.document ;
|
||||
var eSpan ;
|
||||
var oClone ;
|
||||
|
||||
// For collapsed ranges, add just the start marker.
|
||||
if ( !this.CheckIsCollapsed() )
|
||||
{
|
||||
eSpan = oDoc.createElement( 'span' ) ;
|
||||
eSpan.id = oBookmark.EndId ;
|
||||
eSpan.innerHTML = ' ' ; // For IE, it must have something inside, otherwise it may be removed during operations.
|
||||
|
||||
oClone = this.Clone() ;
|
||||
oClone.Collapse( false ) ;
|
||||
oClone.InsertNode( eSpan ) ;
|
||||
}
|
||||
|
||||
eSpan = oDoc.createElement( 'span' ) ;
|
||||
eSpan.id = oBookmark.StartId ;
|
||||
eSpan.innerHTML = ' ' ; // For IE, it must have something inside, otherwise it may be removed during operations.
|
||||
|
||||
oClone = this.Clone() ;
|
||||
oClone.Collapse( true ) ;
|
||||
oClone.InsertNode( eSpan ) ;
|
||||
|
||||
return oBookmark ;
|
||||
},
|
||||
|
||||
MoveToBookmark : function( bookmark, preserveBookmark )
|
||||
{
|
||||
var oDoc = this.Window.document ;
|
||||
|
||||
var eStartSpan = oDoc.getElementById( bookmark.StartId ) ;
|
||||
var eEndSpan = oDoc.getElementById( bookmark.EndId ) ;
|
||||
|
||||
this.SetStart( eStartSpan, 3 ) ;
|
||||
|
||||
if ( !preserveBookmark )
|
||||
FCKDomTools.RemoveNode( eStartSpan ) ;
|
||||
|
||||
// If collapsed, the start span will not be available.
|
||||
if ( eEndSpan )
|
||||
{
|
||||
this.SetEnd( eEndSpan, 3 ) ;
|
||||
|
||||
if ( !preserveBookmark )
|
||||
FCKDomTools.RemoveNode( eEndSpan ) ;
|
||||
}
|
||||
else
|
||||
this.Collapse( true ) ;
|
||||
},
|
||||
|
||||
/*
|
||||
* Moves the position of the start boundary of the range to a specific position
|
||||
* relatively to a element.
|
||||
* @position:
|
||||
* 1 = After Start <target>^contents</target>
|
||||
* 2 = Before End <target>contents^</target>
|
||||
* 3 = Before Start ^<target>contents</target>
|
||||
* 4 = After End <target>contents</target>^
|
||||
*/
|
||||
SetStart : function( targetElement, position )
|
||||
{
|
||||
var oRange = this._Range ;
|
||||
if ( !oRange )
|
||||
oRange = this._Range = this.CreateRange() ;
|
||||
|
||||
switch( position )
|
||||
{
|
||||
case 1 : // After Start <target>^contents</target>
|
||||
oRange.setStart( targetElement, 0 ) ;
|
||||
break ;
|
||||
|
||||
case 2 : // Before End <target>contents^</target>
|
||||
oRange.setStart( targetElement, targetElement.childNodes.length ) ;
|
||||
break ;
|
||||
|
||||
case 3 : // Before Start ^<target>contents</target>
|
||||
oRange.setStartBefore( targetElement ) ;
|
||||
break ;
|
||||
|
||||
case 4 : // After End <target>contents</target>^
|
||||
oRange.setStartAfter( targetElement ) ;
|
||||
}
|
||||
this._UpdateElementInfo() ;
|
||||
},
|
||||
|
||||
/*
|
||||
* Moves the position of the start boundary of the range to a specific position
|
||||
* relatively to a element.
|
||||
* @position:
|
||||
* 1 = After Start <target>^contents</target>
|
||||
* 2 = Before End <target>contents^</target>
|
||||
* 3 = Before Start ^<target>contents</target>
|
||||
* 4 = After End <target>contents</target>^
|
||||
*/
|
||||
SetEnd : function( targetElement, position )
|
||||
{
|
||||
var oRange = this._Range ;
|
||||
if ( !oRange )
|
||||
oRange = this._Range = this.CreateRange() ;
|
||||
|
||||
switch( position )
|
||||
{
|
||||
case 1 : // After Start <target>^contents</target>
|
||||
oRange.setEnd( targetElement, 0 ) ;
|
||||
break ;
|
||||
|
||||
case 2 : // Before End <target>contents^</target>
|
||||
oRange.setEnd( targetElement, targetElement.childNodes.length ) ;
|
||||
break ;
|
||||
|
||||
case 3 : // Before Start ^<target>contents</target>
|
||||
oRange.setEndBefore( targetElement ) ;
|
||||
break ;
|
||||
|
||||
case 4 : // After End <target>contents</target>^
|
||||
oRange.setEndAfter( targetElement ) ;
|
||||
}
|
||||
this._UpdateElementInfo() ;
|
||||
},
|
||||
|
||||
Expand : function( unit )
|
||||
{
|
||||
var oNode, oSibling ;
|
||||
|
||||
switch ( unit )
|
||||
{
|
||||
case 'block_contents' :
|
||||
if ( this.StartBlock )
|
||||
this.SetStart( this.StartBlock, 1 ) ;
|
||||
else
|
||||
{
|
||||
// Get the start node for the current range.
|
||||
oNode = this._Range.startContainer ;
|
||||
|
||||
// If it is an element, get the current child node for the range (in the offset).
|
||||
// If the offset node is not available, the the first one.
|
||||
if ( oNode.nodeType == 1 )
|
||||
{
|
||||
if ( !( oNode = oNode.childNodes[ this._Range.startOffset ] ) )
|
||||
oNode = oNode.firstChild ;
|
||||
}
|
||||
|
||||
// Not able to defined the current position.
|
||||
if ( !oNode )
|
||||
return ;
|
||||
|
||||
// We must look for the left boundary, relative to the range
|
||||
// start, which is limited by a block element.
|
||||
while ( true )
|
||||
{
|
||||
oSibling = oNode.previousSibling ;
|
||||
|
||||
if ( !oSibling )
|
||||
{
|
||||
// Continue if we are not yet in the block limit (inside a <b>, for example).
|
||||
if ( oNode.parentNode != this.StartBlockLimit )
|
||||
oNode = oNode.parentNode ;
|
||||
else
|
||||
break ;
|
||||
}
|
||||
else if ( oSibling.nodeType != 1 || !(/^(?:P|DIV|H1|H2|H3|H4|H5|H6|ADDRESS|PRE|OL|UL|LI|DT|DE)$/).test( oSibling.nodeName.toUpperCase() ) )
|
||||
{
|
||||
// Continue if the sibling is not a block tag.
|
||||
oNode = oSibling ;
|
||||
}
|
||||
else
|
||||
break ;
|
||||
}
|
||||
|
||||
this._Range.setStartBefore( oNode ) ;
|
||||
}
|
||||
|
||||
if ( this.EndBlock )
|
||||
this.SetEnd( this.EndBlock, 2 ) ;
|
||||
else
|
||||
{
|
||||
oNode = this._Range.endContainer ;
|
||||
if ( oNode.nodeType == 1 )
|
||||
oNode = oNode.childNodes[ this._Range.endOffset ] || oNode.lastChild ;
|
||||
|
||||
if ( !oNode )
|
||||
return ;
|
||||
|
||||
// We must look for the right boundary, relative to the range
|
||||
// end, which is limited by a block element.
|
||||
while ( true )
|
||||
{
|
||||
oSibling = oNode.nextSibling ;
|
||||
|
||||
if ( !oSibling )
|
||||
{
|
||||
// Continue if we are not yet in the block limit (inide a <b>, for example).
|
||||
if ( oNode.parentNode != this.EndBlockLimit )
|
||||
oNode = oNode.parentNode ;
|
||||
else
|
||||
break ;
|
||||
}
|
||||
else if ( oSibling.nodeType != 1 || !(/^(?:P|DIV|H1|H2|H3|H4|H5|H6|ADDRESS|PRE|OL|UL|LI|DT|DE)$/).test( oSibling.nodeName.toUpperCase() ) )
|
||||
{
|
||||
// Continue if the sibling is not a block tag.
|
||||
oNode = oSibling ;
|
||||
}
|
||||
else
|
||||
break ;
|
||||
}
|
||||
|
||||
this._Range.setEndAfter( oNode ) ;
|
||||
}
|
||||
|
||||
this._UpdateElementInfo() ;
|
||||
}
|
||||
},
|
||||
|
||||
Release : function( preserveWindow )
|
||||
{
|
||||
if ( !preserveWindow )
|
||||
this.Window = null ;
|
||||
|
||||
this.StartContainer = null ;
|
||||
this.StartBlock = null ;
|
||||
this.StartBlockLimit = null ;
|
||||
this.EndContainer = null ;
|
||||
this.EndBlock = null ;
|
||||
this.EndBlockLimit = null ;
|
||||
this._Range = null ;
|
||||
}
|
||||
} ;
|
@ -1,71 +0,0 @@
|
||||
/*
|
||||
* 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 ==
|
||||
*
|
||||
* Class for working with a selection range, much like the W3C DOM Range, but
|
||||
* it is not intented to be an implementation of the W3C interface.
|
||||
* (Gecko Implementation)
|
||||
*/
|
||||
|
||||
FCKDomRange.prototype.MoveToSelection = function()
|
||||
{
|
||||
this.Release( true ) ;
|
||||
|
||||
var oSel = this.Window.getSelection() ;
|
||||
|
||||
if ( oSel.rangeCount == 1 )
|
||||
{
|
||||
this._Range = FCKW3CRange.CreateFromRange( this.Window.document, oSel.getRangeAt(0) ) ;
|
||||
this._UpdateElementInfo() ;
|
||||
}
|
||||
}
|
||||
|
||||
FCKDomRange.prototype.Select = function()
|
||||
{
|
||||
var oRange = this._Range ;
|
||||
if ( oRange )
|
||||
{
|
||||
var oDocRange = this.Window.document.createRange() ;
|
||||
oDocRange.setStart( oRange.startContainer, oRange.startOffset ) ;
|
||||
|
||||
try
|
||||
{
|
||||
oDocRange.setEnd( oRange.endContainer, oRange.endOffset ) ;
|
||||
}
|
||||
catch ( e )
|
||||
{
|
||||
// There is a bug in Firefox implementation (it would be too easy
|
||||
// otherwhise). The new start can't be after the end (W3C says it can).
|
||||
// So, let's create a new range and collapse it to the desired point.
|
||||
if ( e.toString().Contains( 'NS_ERROR_ILLEGAL_VALUE' ) )
|
||||
{
|
||||
oRange.collapse( true ) ;
|
||||
oDocRange.setEnd( oRange.endContainer, oRange.endOffset ) ;
|
||||
}
|
||||
else
|
||||
throw( e ) ;
|
||||
}
|
||||
|
||||
var oSel = this.Window.getSelection() ;
|
||||
oSel.removeAllRanges() ;
|
||||
|
||||
// We must add a clone otherwise Firefox will have rendering issues.
|
||||
oSel.addRange( oDocRange ) ;
|
||||
}
|
||||
}
|
@ -1,149 +0,0 @@
|
||||
/*
|
||||
* 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 ==
|
||||
*
|
||||
* Class for working with a selection range, much like the W3C DOM Range, but
|
||||
* it is not intented to be an implementation of the W3C interface.
|
||||
* (IE Implementation)
|
||||
*/
|
||||
|
||||
FCKDomRange.prototype.MoveToSelection = function()
|
||||
{
|
||||
this.Release( true ) ;
|
||||
|
||||
this._Range = new FCKW3CRange( this.Window.document ) ;
|
||||
|
||||
var oSel = this.Window.document.selection ;
|
||||
|
||||
if ( oSel.type != 'Control' )
|
||||
{
|
||||
// Set the start boundary.
|
||||
eMarker = this._GetSelectionMarkerTag( true ) ;
|
||||
this._Range.setStart( eMarker.parentNode, FCKDomTools.GetIndexOf( eMarker ) ) ;
|
||||
eMarker.parentNode.removeChild( eMarker ) ;
|
||||
|
||||
// Set the end boundary.
|
||||
var eMarker = this._GetSelectionMarkerTag( false ) ;
|
||||
this._Range.setEnd( eMarker.parentNode, FCKDomTools.GetIndexOf( eMarker ) ) ;
|
||||
eMarker.parentNode.removeChild( eMarker ) ;
|
||||
|
||||
this._UpdateElementInfo() ;
|
||||
}
|
||||
else
|
||||
{
|
||||
var oControl = oSel.createRange().item(0) ;
|
||||
|
||||
if ( oControl )
|
||||
{
|
||||
this._Range.setStartBefore( oControl ) ;
|
||||
this._Range.setEndAfter( oControl ) ;
|
||||
this._UpdateElementInfo() ;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
FCKDomRange.prototype.Select = function()
|
||||
{
|
||||
if ( this._Range )
|
||||
{
|
||||
var bIsCollapsed = this.CheckIsCollapsed() ;
|
||||
|
||||
// Create marker tags for the start and end boundaries.
|
||||
var eStartMarker = this._GetRangeMarkerTag( true ) ;
|
||||
|
||||
if ( !bIsCollapsed )
|
||||
var eEndMarker = this._GetRangeMarkerTag( false ) ;
|
||||
|
||||
// Create the main range which will be used for the selection.
|
||||
var oIERange = this.Window.document.body.createTextRange() ;
|
||||
|
||||
// Position the range at the start boundary.
|
||||
oIERange.moveToElementText( eStartMarker ) ;
|
||||
oIERange.moveStart( 'character', 1 ) ;
|
||||
|
||||
if ( !bIsCollapsed )
|
||||
{
|
||||
// Create a tool range for the end.
|
||||
var oIERangeEnd = this.Window.document.body.createTextRange() ;
|
||||
|
||||
// Position the tool range at the end.
|
||||
oIERangeEnd.moveToElementText( eEndMarker ) ;
|
||||
|
||||
// Move the end boundary of the main range to match the tool range.
|
||||
oIERange.setEndPoint( 'EndToEnd', oIERangeEnd ) ;
|
||||
oIERange.moveEnd( 'character', -1 ) ;
|
||||
}
|
||||
|
||||
// Remove the markers (reset the position, because of the changes in the DOM tree).
|
||||
this._Range.setStartBefore( eStartMarker ) ;
|
||||
eStartMarker.parentNode.removeChild( eStartMarker ) ;
|
||||
|
||||
if ( bIsCollapsed )
|
||||
{
|
||||
// The following trick is needed so IE makes collapsed selections
|
||||
// inside empty blocks visible (expands the block).
|
||||
try
|
||||
{
|
||||
oIERange.pasteHTML(' ') ;
|
||||
oIERange.moveStart( 'character', -1 ) ;
|
||||
}
|
||||
catch (e){}
|
||||
oIERange.select() ;
|
||||
oIERange.pasteHTML('') ;
|
||||
}
|
||||
else
|
||||
{
|
||||
this._Range.setEndBefore( eEndMarker ) ;
|
||||
eEndMarker.parentNode.removeChild( eEndMarker ) ;
|
||||
oIERange.select() ;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
FCKDomRange.prototype._GetSelectionMarkerTag = function( toStart )
|
||||
{
|
||||
// Get a range for the start boundary.
|
||||
var oRange = this.Window.document.selection.createRange() ;
|
||||
oRange.collapse( toStart === true ) ;
|
||||
|
||||
// Paste a marker element at the collapsed range and get it from the DOM.
|
||||
var sMarkerId = 'fck_dom_range_temp_' + (new Date()).valueOf() + '_' + Math.floor(Math.random()*1000) ;
|
||||
oRange.pasteHTML( '<span id="' + sMarkerId + '"></span>' ) ;
|
||||
return this.Window.document.getElementById( sMarkerId ) ;
|
||||
}
|
||||
|
||||
FCKDomRange.prototype._GetRangeMarkerTag = function( toStart )
|
||||
{
|
||||
// Get a range for the start boundary.
|
||||
var oRange = this._Range ;
|
||||
|
||||
// insertNode() will add the node at the beginning of the Range, updating
|
||||
// the endOffset if necessary. So, we can work with the current range in this case.
|
||||
if ( !toStart )
|
||||
{
|
||||
oRange = oRange.cloneRange() ;
|
||||
oRange.collapse( toStart === true ) ;
|
||||
}
|
||||
|
||||
var eSpan = this.Window.document.createElement( 'span' ) ;
|
||||
eSpan.innerHTML = ' ' ;
|
||||
oRange.insertNode( eSpan ) ;
|
||||
|
||||
return eSpan ;
|
||||
}
|
@ -1,253 +0,0 @@
|
||||
/*
|
||||
* 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 ==
|
||||
*
|
||||
* FCKEditingArea Class: renders an editable area.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
* @param {String} targetElement The element that will hold the editing area. Any child element present in the target will be deleted.
|
||||
*/
|
||||
var FCKEditingArea = function( targetElement )
|
||||
{
|
||||
this.TargetElement = targetElement ;
|
||||
this.Mode = FCK_EDITMODE_WYSIWYG ;
|
||||
|
||||
if ( FCK.IECleanup )
|
||||
FCK.IECleanup.AddItem( this, FCKEditingArea_Cleanup ) ;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param {String} html The complete HTML for the page, including DOCTYPE and the <html> tag.
|
||||
*/
|
||||
FCKEditingArea.prototype.Start = function( html, secondCall )
|
||||
{
|
||||
var eTargetElement = this.TargetElement ;
|
||||
var oTargetDocument = FCKTools.GetElementDocument( eTargetElement ) ;
|
||||
|
||||
// Remove all child nodes from the target.
|
||||
while( eTargetElement.childNodes.length > 0 )
|
||||
eTargetElement.removeChild( eTargetElement.childNodes[0] ) ;
|
||||
|
||||
if ( this.Mode == FCK_EDITMODE_WYSIWYG )
|
||||
{
|
||||
// Create the editing area IFRAME.
|
||||
var oIFrame = this.IFrame = oTargetDocument.createElement( 'iframe' ) ;
|
||||
oIFrame.src = 'javascript:void(0)' ;
|
||||
oIFrame.frameBorder = 0 ;
|
||||
oIFrame.width = oIFrame.height = '100%' ;
|
||||
|
||||
// Append the new IFRAME to the target.
|
||||
eTargetElement.appendChild( oIFrame ) ;
|
||||
|
||||
// IE has a bug with the <base> tag... it must have a </base> closer,
|
||||
// otherwise the all sucessive tags will be set as children nodes of the <base>.
|
||||
if ( FCKBrowserInfo.IsIE )
|
||||
html = html.replace( /(<base[^>]*?)\s*\/?>(?!\s*<\/base>)/gi, '$1></base>' ) ;
|
||||
else if ( !secondCall )
|
||||
{
|
||||
// If nothing in the body, place a BOGUS tag so the cursor will appear.
|
||||
if ( FCKBrowserInfo.IsGecko )
|
||||
html = html.replace( /(<body[^>]*>)\s*(<\/body>)/i, '$1' + GECKO_BOGUS + '$2' ) ;
|
||||
|
||||
// Gecko moves some tags out of the body to the head, so we must use
|
||||
// innerHTML to set the body contents (SF BUG 1526154).
|
||||
|
||||
// Extract the BODY contents from the html.
|
||||
var oMatch = html.match( FCKRegexLib.BodyContents ) ;
|
||||
|
||||
if ( oMatch )
|
||||
{
|
||||
html =
|
||||
oMatch[1] + // This is the HTML until the <body...> tag, inclusive.
|
||||
' ' +
|
||||
oMatch[3] ; // This is the HTML from the </body> tag, inclusive.
|
||||
|
||||
this._BodyHTML = oMatch[2] ; // This is the BODY tag contents.
|
||||
}
|
||||
else
|
||||
this._BodyHTML = html ; // Invalid HTML input.
|
||||
}
|
||||
|
||||
// Get the window and document objects used to interact with the newly created IFRAME.
|
||||
this.Window = oIFrame.contentWindow ;
|
||||
|
||||
// IE: Avoid JavaScript errors thrown by the editing are source (like tags events).
|
||||
// TODO: This error handler is not being fired.
|
||||
// this.Window.onerror = function() { alert( 'Error!' ) ; return true ; }
|
||||
|
||||
var oDoc = this.Document = this.Window.document ;
|
||||
|
||||
oDoc.open() ;
|
||||
oDoc.write( html ) ;
|
||||
oDoc.close() ;
|
||||
|
||||
// Firefox 1.0.x is buggy... ohh yes... so let's do it two times and it
|
||||
// will magicaly work.
|
||||
if ( FCKBrowserInfo.IsGecko10 && !secondCall )
|
||||
{
|
||||
this.Start( html, true ) ;
|
||||
return ;
|
||||
}
|
||||
|
||||
this.Window._FCKEditingArea = this ;
|
||||
|
||||
// FF 1.0.x is buggy... we must wait a lot to enable editing because
|
||||
// sometimes the content simply disappears, for example when pasting
|
||||
// "bla1!<img src='some_url'>!bla2" in the source and then switching
|
||||
// back to design.
|
||||
if ( FCKBrowserInfo.IsGecko10 )
|
||||
this.Window.setTimeout( FCKEditingArea_CompleteStart, 500 ) ;
|
||||
else
|
||||
FCKEditingArea_CompleteStart.call( this.Window ) ;
|
||||
}
|
||||
else
|
||||
{
|
||||
var eTextarea = this.Textarea = oTargetDocument.createElement( 'textarea' ) ;
|
||||
eTextarea.className = 'SourceField' ;
|
||||
eTextarea.dir = 'ltr' ;
|
||||
eTextarea.style.width = eTextarea.style.height = '100%' ;
|
||||
eTextarea.style.border = 'none' ;
|
||||
eTargetElement.appendChild( eTextarea ) ;
|
||||
|
||||
eTextarea.value = html ;
|
||||
|
||||
// Fire the "OnLoad" event.
|
||||
FCKTools.RunFunction( this.OnLoad ) ;
|
||||
}
|
||||
}
|
||||
|
||||
// "this" here is FCKEditingArea.Window
|
||||
function FCKEditingArea_CompleteStart()
|
||||
{
|
||||
// Of Firefox, the DOM takes a little to become available. So we must wait for it in a loop.
|
||||
if ( !this.document.body )
|
||||
{
|
||||
this.setTimeout( FCKEditingArea_CompleteStart, 50 ) ;
|
||||
return ;
|
||||
}
|
||||
|
||||
var oEditorArea = this._FCKEditingArea ;
|
||||
oEditorArea.MakeEditable() ;
|
||||
|
||||
// Fire the "OnLoad" event.
|
||||
FCKTools.RunFunction( oEditorArea.OnLoad ) ;
|
||||
}
|
||||
|
||||
FCKEditingArea.prototype.MakeEditable = function()
|
||||
{
|
||||
var oDoc = this.Document ;
|
||||
|
||||
if ( FCKBrowserInfo.IsIE )
|
||||
{
|
||||
oDoc.body.contentEditable = true ;
|
||||
|
||||
/* The following commands don't throw errors, but have no effect.
|
||||
oDoc.execCommand( 'AutoDetect', false, false ) ;
|
||||
oDoc.execCommand( 'KeepSelection', false, true ) ;
|
||||
*/
|
||||
}
|
||||
else
|
||||
{
|
||||
try
|
||||
{
|
||||
// Disable Firefox 2 Spell Checker.
|
||||
oDoc.body.spellcheck = ( this.FFSpellChecker !== false ) ;
|
||||
|
||||
if ( this._BodyHTML )
|
||||
{
|
||||
oDoc.body.innerHTML = this._BodyHTML ;
|
||||
this._BodyHTML = null ;
|
||||
}
|
||||
|
||||
oDoc.designMode = 'on' ;
|
||||
|
||||
// Tell Gecko to use or not the <SPAN> tag for the bold, italic and underline.
|
||||
try
|
||||
{
|
||||
oDoc.execCommand( 'styleWithCSS', false, FCKConfig.GeckoUseSPAN ) ;
|
||||
}
|
||||
catch (e)
|
||||
{
|
||||
// As evidenced here, useCSS is deprecated in favor of styleWithCSS:
|
||||
// http://www.mozilla.org/editor/midas-spec.html
|
||||
oDoc.execCommand( 'useCSS', false, !FCKConfig.GeckoUseSPAN ) ;
|
||||
}
|
||||
|
||||
// Analysing Firefox 1.5 source code, it seams that there is support for a
|
||||
// "insertBrOnReturn" command. Applying it gives no error, but it doesn't
|
||||
// gives the same behavior that you have with IE. It works only if you are
|
||||
// already inside a paragraph and it doesn't render correctly in the first enter.
|
||||
// oDoc.execCommand( 'insertBrOnReturn', false, false ) ;
|
||||
|
||||
// Tell Gecko (Firefox 1.5+) to enable or not live resizing of objects (by Alfonso Martinez)
|
||||
oDoc.execCommand( 'enableObjectResizing', false, !FCKConfig.DisableObjectResizing ) ;
|
||||
|
||||
// Disable the standard table editing features of Firefox.
|
||||
oDoc.execCommand( 'enableInlineTableEditing', false, !FCKConfig.DisableFFTableHandles ) ;
|
||||
}
|
||||
catch (e) {}
|
||||
}
|
||||
}
|
||||
|
||||
FCKEditingArea.prototype.Focus = function()
|
||||
{
|
||||
try
|
||||
{
|
||||
if ( this.Mode == FCK_EDITMODE_WYSIWYG )
|
||||
{
|
||||
// The following check is important to avoid IE entering in a focus loop. Ref:
|
||||
// http://sourceforge.net/tracker/index.php?func=detail&aid=1567060&group_id=75348&atid=543653
|
||||
if ( FCKBrowserInfo.IsIE && this.Document.hasFocus() )
|
||||
return ;
|
||||
|
||||
if ( FCKBrowserInfo.IsSafari )
|
||||
this.IFrame.focus() ;
|
||||
else
|
||||
{
|
||||
this.Window.focus() ;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
var oDoc = FCKTools.GetElementDocument( this.Textarea ) ;
|
||||
if ( (!oDoc.hasFocus || oDoc.hasFocus() ) && oDoc.activeElement == this.Textarea )
|
||||
return ;
|
||||
|
||||
this.Textarea.focus() ;
|
||||
}
|
||||
}
|
||||
catch(e) {}
|
||||
}
|
||||
|
||||
function FCKEditingArea_Cleanup()
|
||||
{
|
||||
this.TargetElement = null ;
|
||||
this.IFrame = null ;
|
||||
this.Document = null ;
|
||||
this.Textarea = null ;
|
||||
|
||||
if ( this.Window )
|
||||
{
|
||||
this.Window._FCKEditingArea = null ;
|
||||
this.Window = null ;
|
||||
}
|
||||
}
|
@ -1,66 +0,0 @@
|
||||
/*
|
||||
* 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 ==
|
||||
*
|
||||
* Manages the DOM anscensors element list of a specific DOM node
|
||||
* (limited to body, inclusive).
|
||||
*/
|
||||
|
||||
// TODO: Implement IE cleanup.
|
||||
|
||||
var FCKElementPath = function( lastNode )
|
||||
{
|
||||
var eBlock = null ;
|
||||
var eBlockLimit = null ;
|
||||
|
||||
var aElements = new Array() ;
|
||||
|
||||
var e = lastNode ;
|
||||
while ( e )
|
||||
{
|
||||
if ( e.nodeType == 1 )
|
||||
{
|
||||
if ( !this.LastElement )
|
||||
this.LastElement = e ;
|
||||
|
||||
var sElementName = e.nodeName.toLowerCase() ;
|
||||
|
||||
if ( !eBlockLimit )
|
||||
{
|
||||
if ( !eBlock && FCKListsLib.PathBlockElements[ sElementName ] != null )
|
||||
eBlock = e ;
|
||||
|
||||
if ( FCKListsLib.PathBlockLimitElements[ sElementName ] != null )
|
||||
eBlockLimit = e ;
|
||||
}
|
||||
|
||||
aElements.push( e ) ;
|
||||
|
||||
if ( sElementName == 'body' )
|
||||
break ;
|
||||
}
|
||||
e = e.parentNode ;
|
||||
}
|
||||
|
||||
this.Block = eBlock ;
|
||||
this.BlockLimit = eBlockLimit ;
|
||||
this.Elements = aElements ;
|
||||
}
|
||||
|
||||
|
@ -1,556 +0,0 @@
|
||||
/*
|
||||
* 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 ==
|
||||
*
|
||||
* Controls the [Enter] keystroke behavior in a document.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Constructor.
|
||||
* @targetDocument : the target document.
|
||||
* @enterMode : the behavior for the <Enter> keystroke.
|
||||
* May be "p", "div", "br". Default is "p".
|
||||
* @shiftEnterMode : the behavior for the <Shift>+<Enter> keystroke.
|
||||
* May be "p", "div", "br". Defaults to "br".
|
||||
*/
|
||||
var FCKEnterKey = function( targetWindow, enterMode, shiftEnterMode )
|
||||
{
|
||||
this.Window = targetWindow ;
|
||||
this.EnterMode = enterMode || 'p' ;
|
||||
this.ShiftEnterMode = shiftEnterMode || 'br' ;
|
||||
|
||||
// Setup the Keystroke Handler.
|
||||
var oKeystrokeHandler = new FCKKeystrokeHandler( false ) ;
|
||||
oKeystrokeHandler._EnterKey = this ;
|
||||
oKeystrokeHandler.OnKeystroke = FCKEnterKey_OnKeystroke ;
|
||||
|
||||
oKeystrokeHandler.SetKeystrokes( [
|
||||
[ 13 , 'Enter' ],
|
||||
[ SHIFT + 13, 'ShiftEnter' ],
|
||||
[ 8 , 'Backspace' ],
|
||||
[ 46 , 'Delete' ]
|
||||
] ) ;
|
||||
|
||||
oKeystrokeHandler.AttachToElement( targetWindow.document ) ;
|
||||
}
|
||||
|
||||
|
||||
function FCKEnterKey_OnKeystroke( keyCombination, keystrokeValue )
|
||||
{
|
||||
var oEnterKey = this._EnterKey ;
|
||||
|
||||
try
|
||||
{
|
||||
switch ( keystrokeValue )
|
||||
{
|
||||
case 'Enter' :
|
||||
return oEnterKey.DoEnter() ;
|
||||
break ;
|
||||
|
||||
case 'ShiftEnter' :
|
||||
return oEnterKey.DoShiftEnter() ;
|
||||
break ;
|
||||
|
||||
case 'Backspace' :
|
||||
return oEnterKey.DoBackspace() ;
|
||||
break ;
|
||||
|
||||
case 'Delete' :
|
||||
return oEnterKey.DoDelete() ;
|
||||
}
|
||||
}
|
||||
catch (e)
|
||||
{
|
||||
// If for any reason we are not able to handle it, go
|
||||
// ahead with the browser default behavior.
|
||||
}
|
||||
|
||||
return false ;
|
||||
}
|
||||
|
||||
/*
|
||||
* Executes the <Enter> key behavior.
|
||||
*/
|
||||
FCKEnterKey.prototype.DoEnter = function( mode, hasShift )
|
||||
{
|
||||
this._HasShift = ( hasShift === true ) ;
|
||||
|
||||
var sMode = mode || this.EnterMode ;
|
||||
|
||||
if ( sMode == 'br' )
|
||||
return this._ExecuteEnterBr() ;
|
||||
else
|
||||
return this._ExecuteEnterBlock( sMode ) ;
|
||||
}
|
||||
|
||||
/*
|
||||
* Executes the <Shift>+<Enter> key behavior.
|
||||
*/
|
||||
FCKEnterKey.prototype.DoShiftEnter = function()
|
||||
{
|
||||
return this.DoEnter( this.ShiftEnterMode, true ) ;
|
||||
}
|
||||
|
||||
/*
|
||||
* Executes the <Backspace> key behavior.
|
||||
*/
|
||||
FCKEnterKey.prototype.DoBackspace = function()
|
||||
{
|
||||
var bCustom = false ;
|
||||
|
||||
// Get the current selection.
|
||||
var oRange = new FCKDomRange( this.Window ) ;
|
||||
oRange.MoveToSelection() ;
|
||||
|
||||
if ( !oRange.CheckIsCollapsed() )
|
||||
return false ;
|
||||
|
||||
var oStartBlock = oRange.StartBlock ;
|
||||
var oEndBlock = oRange.EndBlock ;
|
||||
|
||||
// The selection boundaries must be in the same "block limit" element
|
||||
if ( oRange.StartBlockLimit == oRange.EndBlockLimit && oStartBlock && oEndBlock )
|
||||
{
|
||||
if ( !oRange.CheckIsCollapsed() )
|
||||
{
|
||||
var bEndOfBlock = oRange.CheckEndOfBlock() ;
|
||||
|
||||
oRange.DeleteContents() ;
|
||||
|
||||
if ( oStartBlock != oEndBlock )
|
||||
{
|
||||
oRange.SetStart(oEndBlock,1) ;
|
||||
oRange.SetEnd(oEndBlock,1) ;
|
||||
|
||||
// if ( bEndOfBlock )
|
||||
// oEndBlock.parentNode.removeChild( oEndBlock ) ;
|
||||
}
|
||||
|
||||
oRange.Select() ;
|
||||
|
||||
bCustom = ( oStartBlock == oEndBlock ) ;
|
||||
}
|
||||
|
||||
if ( oRange.CheckStartOfBlock() )
|
||||
{
|
||||
var oCurrentBlock = oRange.StartBlock ;
|
||||
|
||||
var ePrevious = FCKDomTools.GetPreviousSourceElement( oCurrentBlock, true, [ 'BODY', oRange.StartBlockLimit.nodeName ], ['UL','OL'] ) ;
|
||||
|
||||
bCustom = this._ExecuteBackspace( oRange, ePrevious, oCurrentBlock ) ;
|
||||
}
|
||||
else if ( FCKBrowserInfo.IsGecko )
|
||||
{
|
||||
// Firefox looses the selection when executing CheckStartOfBlock, so we must reselect.
|
||||
oRange.Select() ;
|
||||
}
|
||||
}
|
||||
|
||||
oRange.Release() ;
|
||||
return bCustom ;
|
||||
}
|
||||
|
||||
FCKEnterKey.prototype._ExecuteBackspace = function( range, previous, currentBlock )
|
||||
{
|
||||
var bCustom = false ;
|
||||
|
||||
// We could be in a nested LI.
|
||||
if ( !previous && currentBlock.nodeName.IEquals( 'LI' ) && currentBlock.parentNode.parentNode.nodeName.IEquals( 'LI' ) )
|
||||
{
|
||||
this._OutdentWithSelection( currentBlock, range ) ;
|
||||
return true ;
|
||||
}
|
||||
|
||||
if ( previous && previous.nodeName.IEquals( 'LI' ) )
|
||||
{
|
||||
var oNestedList = FCKDomTools.GetLastChild( previous, ['UL','OL'] ) ;
|
||||
|
||||
while ( oNestedList )
|
||||
{
|
||||
previous = FCKDomTools.GetLastChild( oNestedList, 'LI' ) ;
|
||||
oNestedList = FCKDomTools.GetLastChild( previous, ['UL','OL'] ) ;
|
||||
}
|
||||
}
|
||||
|
||||
if ( previous && currentBlock )
|
||||
{
|
||||
// If we are in a LI, and the previous block is not an LI, we must outdent it.
|
||||
if ( currentBlock.nodeName.IEquals( 'LI' ) && !previous.nodeName.IEquals( 'LI' ) )
|
||||
{
|
||||
this._OutdentWithSelection( currentBlock, range ) ;
|
||||
return true ;
|
||||
}
|
||||
|
||||
// Take a reference to the parent for post processing cleanup.
|
||||
var oCurrentParent = currentBlock.parentNode ;
|
||||
|
||||
var sPreviousName = previous.nodeName.toLowerCase() ;
|
||||
if ( FCKListsLib.EmptyElements[ sPreviousName ] != null || sPreviousName == 'table' )
|
||||
{
|
||||
FCKDomTools.RemoveNode( previous ) ;
|
||||
bCustom = true ;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Remove the current block.
|
||||
FCKDomTools.RemoveNode( currentBlock ) ;
|
||||
|
||||
// Remove any empty tag left by the block removal.
|
||||
while ( oCurrentParent.innerHTML.Trim().length == 0 )
|
||||
{
|
||||
var oParent = oCurrentParent.parentNode ;
|
||||
oParent.removeChild( oCurrentParent ) ;
|
||||
oCurrentParent = oParent ;
|
||||
}
|
||||
|
||||
// Cleanup the previous and the current elements.
|
||||
FCKDomTools.TrimNode( currentBlock ) ;
|
||||
FCKDomTools.TrimNode( previous ) ;
|
||||
|
||||
// Append a space to the previous.
|
||||
// Maybe it is not always desirable...
|
||||
// previous.appendChild( this.Window.document.createTextNode( ' ' ) ) ;
|
||||
|
||||
// Set the range to the end of the previous element and bookmark it.
|
||||
range.SetStart( previous, 2 ) ;
|
||||
range.Collapse( true ) ;
|
||||
var oBookmark = range.CreateBookmark() ;
|
||||
|
||||
// Move the contents of the block to the previous element and delete it.
|
||||
FCKDomTools.MoveChildren( currentBlock, previous ) ;
|
||||
|
||||
// Place the selection at the bookmark.
|
||||
range.MoveToBookmark( oBookmark ) ;
|
||||
range.Select() ;
|
||||
|
||||
bCustom = true ;
|
||||
}
|
||||
}
|
||||
|
||||
return bCustom ;
|
||||
}
|
||||
|
||||
/*
|
||||
* Executes the <Delete> key behavior.
|
||||
*/
|
||||
FCKEnterKey.prototype.DoDelete = function()
|
||||
{
|
||||
// The <Delete> has the same effect as the <Backspace>, so we have the same
|
||||
// results if we just move to the next block and apply the same <Backspace> logic.
|
||||
|
||||
var bCustom = false ;
|
||||
|
||||
// Get the current selection.
|
||||
var oRange = new FCKDomRange( this.Window ) ;
|
||||
oRange.MoveToSelection() ;
|
||||
|
||||
// There is just one special case for collapsed selections at the end of a block.
|
||||
if ( oRange.CheckIsCollapsed() && oRange.CheckEndOfBlock( FCKBrowserInfo.IsGecko ) )
|
||||
{
|
||||
var oCurrentBlock = oRange.StartBlock ;
|
||||
|
||||
var eNext = FCKDomTools.GetNextSourceElement( oCurrentBlock, true, [ oRange.StartBlockLimit.nodeName ], ['UL','OL'] ) ;
|
||||
|
||||
bCustom = this._ExecuteBackspace( oRange, oCurrentBlock, eNext ) ;
|
||||
}
|
||||
|
||||
oRange.Release() ;
|
||||
return bCustom ;
|
||||
}
|
||||
|
||||
FCKEnterKey.prototype._ExecuteEnterBlock = function( blockTag, range )
|
||||
{
|
||||
// Get the current selection.
|
||||
var oRange = range || new FCKDomRange( this.Window ) ;
|
||||
|
||||
// If we don't have a range, move it to the selection.
|
||||
if ( !range )
|
||||
oRange.MoveToSelection() ;
|
||||
|
||||
// The selection boundaries must be in the same "block limit" element.
|
||||
if ( oRange.StartBlockLimit == oRange.EndBlockLimit )
|
||||
{
|
||||
// If the StartBlock or EndBlock are not available (for text without a
|
||||
// block tag), we must fix them, by moving the text to a block.
|
||||
if ( !oRange.StartBlock )
|
||||
this._FixBlock( oRange, true, blockTag ) ;
|
||||
|
||||
if ( !oRange.EndBlock )
|
||||
this._FixBlock( oRange, false, blockTag ) ;
|
||||
|
||||
// Get the current blocks.
|
||||
var eStartBlock = oRange.StartBlock ;
|
||||
var eEndBlock = oRange.EndBlock ;
|
||||
|
||||
// Delete the current selection.
|
||||
if ( !oRange.CheckIsEmpty() )
|
||||
oRange.DeleteContents() ;
|
||||
|
||||
// If the selection boundaries are in the same block element
|
||||
if ( eStartBlock == eEndBlock )
|
||||
{
|
||||
var eNewBlock ;
|
||||
|
||||
var bIsStartOfBlock = oRange.CheckStartOfBlock() ;
|
||||
var bIsEndOfBlock = oRange.CheckEndOfBlock() ;
|
||||
|
||||
if ( bIsStartOfBlock && !bIsEndOfBlock )
|
||||
{
|
||||
eNewBlock = eStartBlock.cloneNode(false) ;
|
||||
|
||||
if ( FCKBrowserInfo.IsGeckoLike )
|
||||
eNewBlock.innerHTML = GECKO_BOGUS ;
|
||||
|
||||
// Place the new block before the current block element.
|
||||
eStartBlock.parentNode.insertBefore( eNewBlock, eStartBlock ) ;
|
||||
|
||||
// This is tricky, but to make the new block visible correctly
|
||||
// we must select it.
|
||||
if ( FCKBrowserInfo.IsIE )
|
||||
{
|
||||
// Move the selection to the new block.
|
||||
oRange.MoveToNodeContents( eNewBlock ) ;
|
||||
|
||||
oRange.Select() ;
|
||||
}
|
||||
|
||||
// Move the selection to the new block.
|
||||
oRange.MoveToElementEditStart( eStartBlock ) ;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Check if the selection is at the end of the block.
|
||||
if ( bIsEndOfBlock )
|
||||
{
|
||||
var sStartBlockTag = eStartBlock.tagName.toUpperCase() ;
|
||||
|
||||
// If the entire block is selected, and we are in a LI, let's decrease its indentation.
|
||||
if ( bIsStartOfBlock && sStartBlockTag == 'LI' )
|
||||
{
|
||||
this._OutdentWithSelection( eStartBlock, oRange ) ;
|
||||
oRange.Release() ;
|
||||
return true ;
|
||||
}
|
||||
else
|
||||
{
|
||||
// If is a header tag, or we are in a Shift+Enter (#77),
|
||||
// create a new block element.
|
||||
if ( (/^H[1-6]$/).test( sStartBlockTag ) || this._HasShift )
|
||||
eNewBlock = this.Window.document.createElement( blockTag ) ;
|
||||
// Otherwise, duplicate the current block.
|
||||
else
|
||||
{
|
||||
eNewBlock = eStartBlock.cloneNode(false) ;
|
||||
this._RecreateEndingTree( eStartBlock, eNewBlock ) ;
|
||||
}
|
||||
|
||||
if ( FCKBrowserInfo.IsGeckoLike )
|
||||
{
|
||||
eNewBlock.innerHTML = GECKO_BOGUS ;
|
||||
|
||||
// If the entire block is selected, let's add a bogus in the start block.
|
||||
if ( bIsStartOfBlock )
|
||||
eStartBlock.innerHTML = GECKO_BOGUS ;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// Extract the contents of the block from the selection point to the end of its contents.
|
||||
oRange.SetEnd( eStartBlock, 2 ) ;
|
||||
var eDocFrag = oRange.ExtractContents() ;
|
||||
|
||||
// Duplicate the block element after it.
|
||||
eNewBlock = eStartBlock.cloneNode(false) ;
|
||||
|
||||
// It could be that we are in a LI with a child UL/OL. Insert a bogus to give us space to type.
|
||||
FCKDomTools.TrimNode( eDocFrag.RootNode ) ;
|
||||
if ( eDocFrag.RootNode.firstChild.nodeType == 1 && eDocFrag.RootNode.firstChild.tagName.toUpperCase().Equals( 'UL', 'OL' ) )
|
||||
eNewBlock.innerHTML = GECKO_BOGUS ;
|
||||
|
||||
// Place the extracted contents in the duplicated block.
|
||||
eDocFrag.AppendTo( eNewBlock ) ;
|
||||
|
||||
if ( FCKBrowserInfo.IsGecko )
|
||||
{
|
||||
// In Gecko, the last child node must be a bogus <br>.
|
||||
this._AppendBogusBr( eStartBlock ) ;
|
||||
this._AppendBogusBr( eNewBlock ) ;
|
||||
}
|
||||
}
|
||||
|
||||
if ( eNewBlock )
|
||||
{
|
||||
FCKDomTools.InsertAfterNode( eStartBlock, eNewBlock ) ;
|
||||
|
||||
// Move the selection to the new block.
|
||||
oRange.MoveToElementEditStart( eNewBlock ) ;
|
||||
|
||||
if ( FCKBrowserInfo.IsGecko )
|
||||
eNewBlock.scrollIntoView( false ) ;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// Move the selection to the end block.
|
||||
oRange.MoveToElementEditStart( eEndBlock ) ;
|
||||
}
|
||||
|
||||
oRange.Select() ;
|
||||
}
|
||||
|
||||
// Release the resources used by the range.
|
||||
oRange.Release() ;
|
||||
|
||||
return true ;
|
||||
}
|
||||
|
||||
FCKEnterKey.prototype._ExecuteEnterBr = function( blockTag )
|
||||
{
|
||||
// Get the current selection.
|
||||
var oRange = new FCKDomRange( this.Window ) ;
|
||||
oRange.MoveToSelection() ;
|
||||
|
||||
// The selection boundaries must be in the same "block limit" element.
|
||||
if ( oRange.StartBlockLimit == oRange.EndBlockLimit )
|
||||
{
|
||||
oRange.DeleteContents() ;
|
||||
|
||||
// Get the new selection (it is collapsed at this point).
|
||||
oRange.MoveToSelection() ;
|
||||
|
||||
var bIsStartOfBlock = oRange.CheckStartOfBlock() ;
|
||||
var bIsEndOfBlock = oRange.CheckEndOfBlock() ;
|
||||
|
||||
var sStartBlockTag = oRange.StartBlock ? oRange.StartBlock.tagName.toUpperCase() : '' ;
|
||||
|
||||
var bHasShift = this._HasShift ;
|
||||
|
||||
if ( !bHasShift && sStartBlockTag == 'LI' )
|
||||
return this._ExecuteEnterBlock( null, oRange ) ;
|
||||
|
||||
// If we are at the end of a header block.
|
||||
if ( !bHasShift && bIsEndOfBlock && (/^H[1-6]$/).test( sStartBlockTag ) )
|
||||
{
|
||||
FCKDebug.Output( 'BR - Header' ) ;
|
||||
|
||||
// Insert a BR after the current paragraph.
|
||||
FCKDomTools.InsertAfterNode( oRange.StartBlock, this.Window.document.createElement( 'br' ) ) ;
|
||||
|
||||
// The space is required by Gecko only to make the cursor blink.
|
||||
if ( FCKBrowserInfo.IsGecko )
|
||||
FCKDomTools.InsertAfterNode( oRange.StartBlock, this.Window.document.createTextNode( '' ) ) ;
|
||||
|
||||
// IE and Gecko have different behaviors regarding the position.
|
||||
oRange.SetStart( oRange.StartBlock.nextSibling, FCKBrowserInfo.IsIE ? 3 : 1 ) ;
|
||||
}
|
||||
else
|
||||
{
|
||||
FCKDebug.Output( 'BR - No Header' ) ;
|
||||
|
||||
var eBr = this.Window.document.createElement( 'br' ) ;
|
||||
|
||||
oRange.InsertNode( eBr ) ;
|
||||
|
||||
// The space is required by Gecko only to make the cursor blink.
|
||||
if ( FCKBrowserInfo.IsGecko )
|
||||
FCKDomTools.InsertAfterNode( eBr, this.Window.document.createTextNode( '' ) ) ;
|
||||
|
||||
// If we are at the end of a block, we must be sure the bogus node is available in that block.
|
||||
if ( bIsEndOfBlock && FCKBrowserInfo.IsGecko )
|
||||
this._AppendBogusBr( eBr.parentNode ) ;
|
||||
|
||||
if ( FCKBrowserInfo.IsIE )
|
||||
oRange.SetStart( eBr, 4 ) ;
|
||||
else
|
||||
oRange.SetStart( eBr.nextSibling, 1 ) ;
|
||||
|
||||
}
|
||||
|
||||
// This collapse guarantees the cursor will be blinking.
|
||||
oRange.Collapse( true ) ;
|
||||
|
||||
oRange.Select() ;
|
||||
}
|
||||
|
||||
// Release the resources used by the range.
|
||||
oRange.Release() ;
|
||||
|
||||
return true ;
|
||||
}
|
||||
|
||||
// Transform a block without a block tag in a valid block (orphan text in the body or td, usually).
|
||||
FCKEnterKey.prototype._FixBlock = function( range, isStart, blockTag )
|
||||
{
|
||||
// Bookmark the range so we can restore it later.
|
||||
var oBookmark = range.CreateBookmark() ;
|
||||
|
||||
// Collapse the range to the requested ending boundary.
|
||||
range.Collapse( isStart ) ;
|
||||
|
||||
// Expands it to the block contents.
|
||||
range.Expand( 'block_contents' ) ;
|
||||
|
||||
// Create the fixed block.
|
||||
var oFixedBlock = this.Window.document.createElement( blockTag ) ;
|
||||
|
||||
// Move the contents of the temporary range to the fixed block.
|
||||
range.ExtractContents().AppendTo( oFixedBlock ) ;
|
||||
FCKDomTools.TrimNode( oFixedBlock ) ;
|
||||
|
||||
// Insert the fixed block into the DOM.
|
||||
range.InsertNode( oFixedBlock ) ;
|
||||
|
||||
// Move the range back to the bookmarked place.
|
||||
range.MoveToBookmark( oBookmark ) ;
|
||||
}
|
||||
|
||||
// Appends a bogus <br> at the end of the element, if not yet available.
|
||||
FCKEnterKey.prototype._AppendBogusBr = function( element )
|
||||
{
|
||||
var eLastChild = element.getElementsByTagName('br') ;
|
||||
|
||||
if ( eLastChild )
|
||||
eLastChild = eLastChild[ eLastChild.legth - 1 ] ;
|
||||
|
||||
if ( !eLastChild || eLastChild.getAttribute( 'type', 2 ) != '_moz' )
|
||||
element.appendChild( FCKTools.CreateBogusBR( this.Window.document ) ) ;
|
||||
}
|
||||
|
||||
// Recreate the elements tree at the end of the source block, at the beginning
|
||||
// of the target block. Eg.:
|
||||
// If source = <p><u>Some</u> sample <b><i>text</i></b></p> then target = <p><b><i></i></b></p>
|
||||
// If source = <p><u>Some</u> sample text</p> then target = <p></p>
|
||||
FCKEnterKey.prototype._RecreateEndingTree = function( source, target )
|
||||
{
|
||||
while ( ( source = source.lastChild ) && source.nodeType == 1 && FCKListsLib.InlineChildReqElements[ source.nodeName.toLowerCase() ] != null )
|
||||
target = target.insertBefore( source.cloneNode( false ), target.firstChild ) ;
|
||||
}
|
||||
|
||||
// Outdents a LI, maintaining the seletion defined on a range.
|
||||
FCKEnterKey.prototype._OutdentWithSelection = function( li, range )
|
||||
{
|
||||
var oBookmark = range.CreateBookmark() ;
|
||||
|
||||
FCKListHandler.OutdentListItem( li ) ;
|
||||
|
||||
range.MoveToBookmark( oBookmark ) ;
|
||||
range.Select() ;
|
||||
}
|
@ -1,53 +0,0 @@
|
||||
/*
|
||||
* 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 ==
|
||||
*
|
||||
* FCKEvents Class: used to handle events is a advanced way.
|
||||
*/
|
||||
|
||||
var FCKEvents = function( eventsOwner )
|
||||
{
|
||||
this.Owner = eventsOwner ;
|
||||
this._RegisteredEvents = new Object() ;
|
||||
}
|
||||
|
||||
FCKEvents.prototype.AttachEvent = function( eventName, functionPointer )
|
||||
{
|
||||
var aTargets ;
|
||||
|
||||
if ( !( aTargets = this._RegisteredEvents[ eventName ] ) )
|
||||
this._RegisteredEvents[ eventName ] = [ functionPointer ] ;
|
||||
else
|
||||
aTargets.push( functionPointer ) ;
|
||||
}
|
||||
|
||||
FCKEvents.prototype.FireEvent = function( eventName, params )
|
||||
{
|
||||
var bReturnValue = true ;
|
||||
|
||||
var oCalls = this._RegisteredEvents[ eventName ] ;
|
||||
|
||||
if ( oCalls )
|
||||
{
|
||||
for ( var i = 0 ; i < oCalls.length ; i++ )
|
||||
bReturnValue = ( oCalls[ i ]( this.Owner, params ) && bReturnValue ) ;
|
||||
}
|
||||
|
||||
return bReturnValue ;
|
||||
}
|
@ -1,98 +0,0 @@
|
||||
/*
|
||||
* 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 ==
|
||||
*
|
||||
* FCKIcon Class: renders an icon from a single image, a strip or even a
|
||||
* spacer.
|
||||
*/
|
||||
|
||||
var FCKIcon = function( iconPathOrStripInfoArray )
|
||||
{
|
||||
var sTypeOf = iconPathOrStripInfoArray ? typeof( iconPathOrStripInfoArray ) : 'undefined' ;
|
||||
switch ( sTypeOf )
|
||||
{
|
||||
case 'number' :
|
||||
this.Path = FCKConfig.SkinPath + 'fck_strip.gif' ;
|
||||
this.Size = 16 ;
|
||||
this.Position = iconPathOrStripInfoArray ;
|
||||
break ;
|
||||
|
||||
case 'undefined' :
|
||||
this.Path = FCK_SPACER_PATH ;
|
||||
break ;
|
||||
|
||||
case 'string' :
|
||||
this.Path = iconPathOrStripInfoArray ;
|
||||
break ;
|
||||
|
||||
default :
|
||||
// It is an array in the format [ StripFilePath, IconSize, IconPosition ]
|
||||
this.Path = iconPathOrStripInfoArray[0] ;
|
||||
this.Size = iconPathOrStripInfoArray[1] ;
|
||||
this.Position = iconPathOrStripInfoArray[2] ;
|
||||
}
|
||||
}
|
||||
|
||||
FCKIcon.prototype.CreateIconElement = function( document )
|
||||
{
|
||||
var eIcon, eIconImage ;
|
||||
|
||||
if ( this.Position ) // It is using an icons strip image.
|
||||
{
|
||||
var sPos = '-' + ( ( this.Position - 1 ) * this.Size ) + 'px' ;
|
||||
|
||||
if ( FCKBrowserInfo.IsIE )
|
||||
{
|
||||
// <div class="TB_Button_Image"><img src="strip.gif" style="top:-16px"></div>
|
||||
|
||||
eIcon = document.createElement( 'DIV' ) ;
|
||||
|
||||
eIconImage = eIcon.appendChild( document.createElement( 'IMG' ) ) ;
|
||||
eIconImage.src = this.Path ;
|
||||
eIconImage.style.top = sPos ;
|
||||
}
|
||||
else
|
||||
{
|
||||
// <img class="TB_Button_Image" src="spacer.gif" style="background-position: 0px -16px;background-image: url(strip.gif);">
|
||||
|
||||
eIcon = document.createElement( 'IMG' ) ;
|
||||
eIcon.src = FCK_SPACER_PATH ;
|
||||
eIcon.style.backgroundPosition = '0px ' + sPos ;
|
||||
eIcon.style.backgroundImage = 'url(' + this.Path + ')' ;
|
||||
}
|
||||
}
|
||||
else // It is using a single icon image.
|
||||
{
|
||||
// This is not working well with IE. See notes bellow.
|
||||
// <img class="TB_Button_Image" src="smiley.gif">
|
||||
// eIcon = document.createElement( 'IMG' ) ;
|
||||
// eIcon.src = this.Path ? this.Path : FCK_SPACER_PATH ;
|
||||
|
||||
// IE makes the button 1px higher if using the <img> directly, so we
|
||||
// are changing to the <div> system to clip the image correctly.
|
||||
eIcon = document.createElement( 'DIV' ) ;
|
||||
|
||||
eIconImage = eIcon.appendChild( document.createElement( 'IMG' ) ) ;
|
||||
eIconImage.src = this.Path ? this.Path : FCK_SPACER_PATH ;
|
||||
}
|
||||
|
||||
eIcon.className = 'TB_Button_Image' ;
|
||||
|
||||
return eIcon ;
|
||||
}
|
@ -1,68 +0,0 @@
|
||||
/*
|
||||
* 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 ==
|
||||
*
|
||||
* FCKIECleanup Class: a generic class used as a tool to remove IE leaks.
|
||||
*/
|
||||
|
||||
var FCKIECleanup = function( attachWindow )
|
||||
{
|
||||
// If the attachWindow already have a cleanup object, jusgt use that one.
|
||||
if ( attachWindow._FCKCleanupObj )
|
||||
this.Items = attachWindow._FCKCleanupObj.Items ;
|
||||
else
|
||||
{
|
||||
this.Items = new Array() ;
|
||||
|
||||
attachWindow._FCKCleanupObj = this ;
|
||||
FCKTools.AddEventListenerEx( attachWindow, 'unload', FCKIECleanup_Cleanup ) ;
|
||||
// attachWindow.attachEvent( 'onunload', FCKIECleanup_Cleanup ) ;
|
||||
}
|
||||
}
|
||||
|
||||
FCKIECleanup.prototype.AddItem = function( dirtyItem, cleanupFunction )
|
||||
{
|
||||
this.Items.push( [ dirtyItem, cleanupFunction ] ) ;
|
||||
}
|
||||
|
||||
function FCKIECleanup_Cleanup()
|
||||
{
|
||||
if ( !this._FCKCleanupObj )
|
||||
return ;
|
||||
|
||||
var aItems = this._FCKCleanupObj.Items ;
|
||||
|
||||
while ( aItems.length > 0 )
|
||||
{
|
||||
|
||||
// It is important to remove from the end to the beginning (pop()),
|
||||
// because of the order things get created in the editor. In the code,
|
||||
// elements in deeper position in the DOM are placed at the end of the
|
||||
// cleanup function, so we must cleanup then first, otherwise IE could
|
||||
// throw some crazy memory errors (IE bug).
|
||||
var oItem = aItems.pop() ;
|
||||
if ( oItem )
|
||||
oItem[1].call( oItem[0] ) ;
|
||||
}
|
||||
|
||||
this._FCKCleanupObj = null ;
|
||||
|
||||
if ( CollectGarbage )
|
||||
CollectGarbage() ;
|
||||
}
|
@ -1,68 +0,0 @@
|
||||
/*
|
||||
* 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 ==
|
||||
*
|
||||
* Preload a list of images, firing an event when complete.
|
||||
*/
|
||||
|
||||
var FCKImagePreloader = function()
|
||||
{
|
||||
this._Images = new Array() ;
|
||||
}
|
||||
|
||||
FCKImagePreloader.prototype =
|
||||
{
|
||||
AddImages : function( images )
|
||||
{
|
||||
if ( typeof( images ) == 'string' )
|
||||
images = images.split( ';' ) ;
|
||||
|
||||
this._Images = this._Images.concat( images ) ;
|
||||
},
|
||||
|
||||
Start : function()
|
||||
{
|
||||
var aImages = this._Images ;
|
||||
this._PreloadCount = aImages.length ;
|
||||
|
||||
for ( var i = 0 ; i < aImages.length ; i++ )
|
||||
{
|
||||
var eImg = document.createElement( 'img' ) ;
|
||||
eImg.onload = eImg.onerror = _FCKImagePreloader_OnImage ;
|
||||
eImg._FCKImagePreloader = this ;
|
||||
eImg.src = aImages[i] ;
|
||||
|
||||
_FCKImagePreloader_ImageCache.push( eImg ) ;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
// All preloaded images must be placed in a global array, otherwise the preload
|
||||
// magic will not happen.
|
||||
var _FCKImagePreloader_ImageCache = new Array() ;
|
||||
|
||||
function _FCKImagePreloader_OnImage()
|
||||
{
|
||||
var oImagePreloader = this._FCKImagePreloader ;
|
||||
|
||||
if ( (--oImagePreloader._PreloadCount) == 0 && oImagePreloader.OnComplete )
|
||||
oImagePreloader.OnComplete() ;
|
||||
|
||||
this._FCKImagePreloader = null ;
|
||||
}
|
@ -1,136 +0,0 @@
|
||||
/*
|
||||
* 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 ==
|
||||
*
|
||||
* Control keyboard keystroke combinations.
|
||||
*/
|
||||
|
||||
var FCKKeystrokeHandler = function( cancelCtrlDefaults )
|
||||
{
|
||||
this.Keystrokes = new Object() ;
|
||||
this.CancelCtrlDefaults = ( cancelCtrlDefaults !== false ) ;
|
||||
}
|
||||
|
||||
/*
|
||||
* Listen to keystroke events in an element or DOM document object.
|
||||
* @target: The element or document to listen to keystroke events.
|
||||
*/
|
||||
FCKKeystrokeHandler.prototype.AttachToElement = function( target )
|
||||
{
|
||||
// For newer browsers, it is enough to listen to the keydown event only.
|
||||
// Some browsers instead, don't cancel key events in the keydown, but in the
|
||||
// keypress. So we must do a longer trip in those cases.
|
||||
FCKTools.AddEventListenerEx( target, 'keydown', _FCKKeystrokeHandler_OnKeyDown, this ) ;
|
||||
if ( FCKBrowserInfo.IsGecko10 || FCKBrowserInfo.IsOpera || ( FCKBrowserInfo.IsGecko && FCKBrowserInfo.IsMac ) )
|
||||
FCKTools.AddEventListenerEx( target, 'keypress', _FCKKeystrokeHandler_OnKeyPress, this ) ;
|
||||
}
|
||||
|
||||
/*
|
||||
* Sets a list of keystrokes. It can receive either a single array or "n"
|
||||
* arguments, each one being an array of 1 or 2 elemenst. The first element
|
||||
* is the keystroke combination, and the second is the value to assign to it.
|
||||
* If the second element is missing, the keystroke definition is removed.
|
||||
*/
|
||||
FCKKeystrokeHandler.prototype.SetKeystrokes = function()
|
||||
{
|
||||
// Look through the arguments.
|
||||
for ( var i = 0 ; i < arguments.length ; i++ )
|
||||
{
|
||||
var keyDef = arguments[i] ;
|
||||
|
||||
if ( typeof( keyDef[0] ) == 'object' ) // It is an array with arrays defining the keystrokes.
|
||||
this.SetKeystrokes.apply( this, keyDef ) ;
|
||||
else
|
||||
{
|
||||
if ( keyDef.length == 1 ) // If it has only one element, removed the keystroke.
|
||||
delete this.Keystrokes[ keyDef[0] ] ;
|
||||
else // Otherwise add it.
|
||||
this.Keystrokes[ keyDef[0] ] = keyDef[1] === true ? true : keyDef ;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function _FCKKeystrokeHandler_OnKeyDown( ev, keystrokeHandler )
|
||||
{
|
||||
// Get the key code.
|
||||
var keystroke = ev.keyCode || ev.which ;
|
||||
|
||||
// Combine it with the CTRL, SHIFT and ALT states.
|
||||
var keyModifiers = 0 ;
|
||||
|
||||
if ( ev.ctrlKey || ev.metaKey )
|
||||
keyModifiers += CTRL ;
|
||||
|
||||
if ( ev.shiftKey )
|
||||
keyModifiers += SHIFT ;
|
||||
|
||||
if ( ev.altKey )
|
||||
keyModifiers += ALT ;
|
||||
|
||||
var keyCombination = keystroke + keyModifiers ;
|
||||
|
||||
var cancelIt = keystrokeHandler._CancelIt = false ;
|
||||
|
||||
// Look for its definition availability.
|
||||
var keystrokeValue = keystrokeHandler.Keystrokes[ keyCombination ] ;
|
||||
|
||||
// FCKDebug.Output( 'KeyDown: ' + keyCombination + ' - Value: ' + keystrokeValue ) ;
|
||||
|
||||
// If the keystroke is defined
|
||||
if ( keystrokeValue )
|
||||
{
|
||||
// If the keystroke has been explicetly set to "true" OR calling the
|
||||
// "OnKeystroke" event, it doesn't return "true", the default behavior
|
||||
// must be preserved.
|
||||
if ( keystrokeValue === true || !( keystrokeHandler.OnKeystroke && keystrokeHandler.OnKeystroke.apply( keystrokeHandler, keystrokeValue ) ) )
|
||||
return true ;
|
||||
|
||||
cancelIt = true ;
|
||||
}
|
||||
|
||||
// By default, it will cancel all combinations with the CTRL key only (except positioning keys).
|
||||
if ( cancelIt || ( keystrokeHandler.CancelCtrlDefaults && keyModifiers == CTRL && ( keystroke < 33 || keystroke > 40 ) ) )
|
||||
{
|
||||
keystrokeHandler._CancelIt = true ;
|
||||
|
||||
if ( ev.preventDefault )
|
||||
return ev.preventDefault() ;
|
||||
|
||||
ev.returnValue = false ;
|
||||
ev.cancelBubble = true ;
|
||||
return false ;
|
||||
}
|
||||
|
||||
return true ;
|
||||
}
|
||||
|
||||
function _FCKKeystrokeHandler_OnKeyPress( ev, keystrokeHandler )
|
||||
{
|
||||
if ( keystrokeHandler._CancelIt )
|
||||
{
|
||||
// FCKDebug.Output( 'KeyPress Cancel', 'Red') ;
|
||||
|
||||
if ( ev.preventDefault )
|
||||
return ev.preventDefault() ;
|
||||
|
||||
return false ;
|
||||
}
|
||||
|
||||
return true ;
|
||||
}
|
@ -1,143 +0,0 @@
|
||||
/*
|
||||
* 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 ==
|
||||
*
|
||||
* Renders a list of menu items.
|
||||
*/
|
||||
|
||||
var FCKMenuBlock = function()
|
||||
{
|
||||
this._Items = new Array() ;
|
||||
}
|
||||
|
||||
|
||||
FCKMenuBlock.prototype.Count = function()
|
||||
{
|
||||
return this._Items.length ;
|
||||
}
|
||||
|
||||
FCKMenuBlock.prototype.AddItem = function( name, label, iconPathOrStripInfoArrayOrIndex, isDisabled )
|
||||
{
|
||||
var oItem = new FCKMenuItem( this, name, label, iconPathOrStripInfoArrayOrIndex, isDisabled ) ;
|
||||
|
||||
oItem.OnClick = FCKTools.CreateEventListener( FCKMenuBlock_Item_OnClick, this ) ;
|
||||
oItem.OnActivate = FCKTools.CreateEventListener( FCKMenuBlock_Item_OnActivate, this ) ;
|
||||
|
||||
this._Items.push( oItem ) ;
|
||||
|
||||
return oItem ;
|
||||
}
|
||||
|
||||
FCKMenuBlock.prototype.AddSeparator = function()
|
||||
{
|
||||
this._Items.push( new FCKMenuSeparator() ) ;
|
||||
}
|
||||
|
||||
FCKMenuBlock.prototype.RemoveAllItems = function()
|
||||
{
|
||||
this._Items = new Array() ;
|
||||
|
||||
var eItemsTable = this._ItemsTable ;
|
||||
if ( eItemsTable )
|
||||
{
|
||||
while ( eItemsTable.rows.length > 0 )
|
||||
eItemsTable.deleteRow( 0 ) ;
|
||||
}
|
||||
}
|
||||
|
||||
FCKMenuBlock.prototype.Create = function( parentElement )
|
||||
{
|
||||
if ( !this._ItemsTable )
|
||||
{
|
||||
if ( FCK.IECleanup )
|
||||
FCK.IECleanup.AddItem( this, FCKMenuBlock_Cleanup ) ;
|
||||
|
||||
this._Window = FCKTools.GetElementWindow( parentElement ) ;
|
||||
|
||||
var oDoc = FCKTools.GetElementDocument( parentElement ) ;
|
||||
|
||||
var eTable = parentElement.appendChild( oDoc.createElement( 'table' ) ) ;
|
||||
eTable.cellPadding = 0 ;
|
||||
eTable.cellSpacing = 0 ;
|
||||
|
||||
FCKTools.DisableSelection( eTable ) ;
|
||||
|
||||
var oMainElement = eTable.insertRow(-1).insertCell(-1) ;
|
||||
oMainElement.className = 'MN_Menu' ;
|
||||
|
||||
var eItemsTable = this._ItemsTable = oMainElement.appendChild( oDoc.createElement( 'table' ) ) ;
|
||||
eItemsTable.cellPadding = 0 ;
|
||||
eItemsTable.cellSpacing = 0 ;
|
||||
}
|
||||
|
||||
for ( var i = 0 ; i < this._Items.length ; i++ )
|
||||
this._Items[i].Create( this._ItemsTable ) ;
|
||||
}
|
||||
|
||||
/* Events */
|
||||
|
||||
function FCKMenuBlock_Item_OnClick( clickedItem, menuBlock )
|
||||
{
|
||||
FCKTools.RunFunction( menuBlock.OnClick, menuBlock, [ clickedItem ] ) ;
|
||||
}
|
||||
|
||||
function FCKMenuBlock_Item_OnActivate( menuBlock )
|
||||
{
|
||||
var oActiveItem = menuBlock._ActiveItem ;
|
||||
|
||||
if ( oActiveItem && oActiveItem != this )
|
||||
{
|
||||
// Set the focus to this menu block window (to fire OnBlur on opened panels).
|
||||
if ( !FCKBrowserInfo.IsIE && oActiveItem.HasSubMenu && !this.HasSubMenu )
|
||||
menuBlock._Window.focus() ;
|
||||
|
||||
oActiveItem.Deactivate() ;
|
||||
}
|
||||
|
||||
menuBlock._ActiveItem = this ;
|
||||
}
|
||||
|
||||
function FCKMenuBlock_Cleanup()
|
||||
{
|
||||
this._Window = null ;
|
||||
this._ItemsTable = null ;
|
||||
}
|
||||
|
||||
// ################# //
|
||||
|
||||
var FCKMenuSeparator = function()
|
||||
{}
|
||||
|
||||
FCKMenuSeparator.prototype.Create = function( parentTable )
|
||||
{
|
||||
var oDoc = FCKTools.GetElementDocument( parentTable ) ;
|
||||
|
||||
var r = parentTable.insertRow(-1) ;
|
||||
|
||||
var eCell = r.insertCell(-1) ;
|
||||
eCell.className = 'MN_Separator MN_Icon' ;
|
||||
|
||||
eCell = r.insertCell(-1) ;
|
||||
eCell.className = 'MN_Separator' ;
|
||||
eCell.appendChild( oDoc.createElement( 'DIV' ) ).className = 'MN_Separator_Line' ;
|
||||
|
||||
eCell = r.insertCell(-1) ;
|
||||
eCell.className = 'MN_Separator' ;
|
||||
eCell.appendChild( oDoc.createElement( 'DIV' ) ).className = 'MN_Separator_Line' ;
|
||||
}
|
@ -1,54 +0,0 @@
|
||||
/*
|
||||
* 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 class is a menu block that behaves like a panel. It's a mix of the
|
||||
* FCKMenuBlock and FCKPanel classes.
|
||||
*/
|
||||
|
||||
var FCKMenuBlockPanel = function()
|
||||
{
|
||||
// Call the "base" constructor.
|
||||
FCKMenuBlock.call( this ) ;
|
||||
}
|
||||
|
||||
FCKMenuBlockPanel.prototype = new FCKMenuBlock() ;
|
||||
|
||||
|
||||
// Override the create method.
|
||||
FCKMenuBlockPanel.prototype.Create = function()
|
||||
{
|
||||
var oPanel = this.Panel = ( this.Parent && this.Parent.Panel ? this.Parent.Panel.CreateChildPanel() : new FCKPanel() ) ;
|
||||
oPanel.AppendStyleSheet( FCKConfig.SkinPath + 'fck_editor.css' ) ;
|
||||
|
||||
// Call the "base" implementation.
|
||||
FCKMenuBlock.prototype.Create.call( this, oPanel.MainNode ) ;
|
||||
}
|
||||
|
||||
FCKMenuBlockPanel.prototype.Show = function( x, y, relElement )
|
||||
{
|
||||
if ( !this.Panel.CheckIsOpened() )
|
||||
this.Panel.Show( x, y, relElement ) ;
|
||||
}
|
||||
|
||||
FCKMenuBlockPanel.prototype.Hide = function()
|
||||
{
|
||||
if ( this.Panel.CheckIsOpened() )
|
||||
this.Panel.Hide() ;
|
||||
}
|
@ -1,160 +0,0 @@
|
||||
/*
|
||||
* 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 ==
|
||||
*
|
||||
* Defines and renders a menu items in a menu block.
|
||||
*/
|
||||
|
||||
var FCKMenuItem = function( parentMenuBlock, name, label, iconPathOrStripInfoArray, isDisabled )
|
||||
{
|
||||
this.Name = name ;
|
||||
this.Label = label || name ;
|
||||
this.IsDisabled = isDisabled ;
|
||||
|
||||
this.Icon = new FCKIcon( iconPathOrStripInfoArray ) ;
|
||||
|
||||
this.SubMenu = new FCKMenuBlockPanel() ;
|
||||
this.SubMenu.Parent = parentMenuBlock ;
|
||||
this.SubMenu.OnClick = FCKTools.CreateEventListener( FCKMenuItem_SubMenu_OnClick, this ) ;
|
||||
|
||||
if ( FCK.IECleanup )
|
||||
FCK.IECleanup.AddItem( this, FCKMenuItem_Cleanup ) ;
|
||||
}
|
||||
|
||||
|
||||
FCKMenuItem.prototype.AddItem = function( name, label, iconPathOrStripInfoArrayOrIndex, isDisabled )
|
||||
{
|
||||
this.HasSubMenu = true ;
|
||||
return this.SubMenu.AddItem( name, label, iconPathOrStripInfoArrayOrIndex, isDisabled ) ;
|
||||
}
|
||||
|
||||
FCKMenuItem.prototype.AddSeparator = function()
|
||||
{
|
||||
this.SubMenu.AddSeparator() ;
|
||||
}
|
||||
|
||||
FCKMenuItem.prototype.Create = function( parentTable )
|
||||
{
|
||||
var bHasSubMenu = this.HasSubMenu ;
|
||||
|
||||
var oDoc = FCKTools.GetElementDocument( parentTable ) ;
|
||||
|
||||
// Add a row in the table to hold the menu item.
|
||||
var r = this.MainElement = parentTable.insertRow(-1) ;
|
||||
r.className = this.IsDisabled ? 'MN_Item_Disabled' : 'MN_Item' ;
|
||||
|
||||
// Set the row behavior.
|
||||
if ( !this.IsDisabled )
|
||||
{
|
||||
FCKTools.AddEventListenerEx( r, 'mouseover', FCKMenuItem_OnMouseOver, [ this ] ) ;
|
||||
FCKTools.AddEventListenerEx( r, 'click', FCKMenuItem_OnClick, [ this ] ) ;
|
||||
|
||||
if ( !bHasSubMenu )
|
||||
FCKTools.AddEventListenerEx( r, 'mouseout', FCKMenuItem_OnMouseOut, [ this ] ) ;
|
||||
}
|
||||
|
||||
// Create the icon cell.
|
||||
var eCell = r.insertCell(-1) ;
|
||||
eCell.className = 'MN_Icon' ;
|
||||
eCell.appendChild( this.Icon.CreateIconElement( oDoc ) ) ;
|
||||
|
||||
// Create the label cell.
|
||||
eCell = r.insertCell(-1) ;
|
||||
eCell.className = 'MN_Label' ;
|
||||
eCell.noWrap = true ;
|
||||
eCell.appendChild( oDoc.createTextNode( this.Label ) ) ;
|
||||
|
||||
// Create the arrow cell and setup the sub menu panel (if needed).
|
||||
eCell = r.insertCell(-1) ;
|
||||
if ( bHasSubMenu )
|
||||
{
|
||||
eCell.className = 'MN_Arrow' ;
|
||||
|
||||
// The arrow is a fixed size image.
|
||||
var eArrowImg = eCell.appendChild( oDoc.createElement( 'IMG' ) ) ;
|
||||
eArrowImg.src = FCK_IMAGES_PATH + 'arrow_' + FCKLang.Dir + '.gif' ;
|
||||
eArrowImg.width = 4 ;
|
||||
eArrowImg.height = 7 ;
|
||||
|
||||
this.SubMenu.Create() ;
|
||||
this.SubMenu.Panel.OnHide = FCKTools.CreateEventListener( FCKMenuItem_SubMenu_OnHide, this ) ;
|
||||
}
|
||||
}
|
||||
|
||||
FCKMenuItem.prototype.Activate = function()
|
||||
{
|
||||
this.MainElement.className = 'MN_Item_Over' ;
|
||||
|
||||
if ( this.HasSubMenu )
|
||||
{
|
||||
// Show the child menu block. The ( +2, -2 ) correction is done because
|
||||
// of the padding in the skin. It is not a good solution because one
|
||||
// could change the skin and so the final result would not be accurate.
|
||||
// For now it is ok because we are controlling the skin.
|
||||
this.SubMenu.Show( this.MainElement.offsetWidth + 2, -2, this.MainElement ) ;
|
||||
}
|
||||
|
||||
FCKTools.RunFunction( this.OnActivate, this ) ;
|
||||
}
|
||||
|
||||
FCKMenuItem.prototype.Deactivate = function()
|
||||
{
|
||||
this.MainElement.className = 'MN_Item' ;
|
||||
|
||||
if ( this.HasSubMenu )
|
||||
this.SubMenu.Hide() ;
|
||||
}
|
||||
|
||||
/* Events */
|
||||
|
||||
function FCKMenuItem_SubMenu_OnClick( clickedItem, listeningItem )
|
||||
{
|
||||
FCKTools.RunFunction( listeningItem.OnClick, listeningItem, [ clickedItem ] ) ;
|
||||
}
|
||||
|
||||
function FCKMenuItem_SubMenu_OnHide( menuItem )
|
||||
{
|
||||
menuItem.Deactivate() ;
|
||||
}
|
||||
|
||||
function FCKMenuItem_OnClick( ev, menuItem )
|
||||
{
|
||||
if ( menuItem.HasSubMenu )
|
||||
menuItem.Activate() ;
|
||||
else
|
||||
{
|
||||
menuItem.Deactivate() ;
|
||||
FCKTools.RunFunction( menuItem.OnClick, menuItem, [ menuItem ] ) ;
|
||||
}
|
||||
}
|
||||
|
||||
function FCKMenuItem_OnMouseOver( ev, menuItem )
|
||||
{
|
||||
menuItem.Activate() ;
|
||||
}
|
||||
|
||||
function FCKMenuItem_OnMouseOut( ev, menuItem )
|
||||
{
|
||||
menuItem.Deactivate() ;
|
||||
}
|
||||
|
||||
function FCKMenuItem_Cleanup()
|
||||
{
|
||||
this.MainElement = null ;
|
||||
}
|
@ -1,303 +0,0 @@
|
||||
/*
|
||||
* 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 ==
|
||||
*
|
||||
* Component that creates floating panels. It is used by many
|
||||
* other components, like the toolbar items, context menu, etc...
|
||||
*/
|
||||
|
||||
var FCKPanel = function( parentWindow )
|
||||
{
|
||||
this.IsRTL = ( FCKLang.Dir == 'rtl' ) ;
|
||||
this.IsContextMenu = false ;
|
||||
this._LockCounter = 0 ;
|
||||
|
||||
this._Window = parentWindow || window ;
|
||||
|
||||
var oDocument ;
|
||||
|
||||
if ( FCKBrowserInfo.IsIE )
|
||||
{
|
||||
// Create the Popup that will hold the panel.
|
||||
this._Popup = this._Window.createPopup() ;
|
||||
oDocument = this.Document = this._Popup.document ;
|
||||
|
||||
FCK.IECleanup.AddItem( this, FCKPanel_Cleanup ) ;
|
||||
}
|
||||
else
|
||||
{
|
||||
var oIFrame = this._IFrame = this._Window.document.createElement('iframe') ;
|
||||
oIFrame.src = 'javascript:void(0)' ;
|
||||
oIFrame.allowTransparency = true ;
|
||||
oIFrame.frameBorder = '0' ;
|
||||
oIFrame.scrolling = 'no' ;
|
||||
oIFrame.style.position = 'absolute';
|
||||
oIFrame.style.zIndex = FCKConfig.FloatingPanelsZIndex ;
|
||||
oIFrame.width = oIFrame.height = 0 ;
|
||||
|
||||
if ( this._Window == window.parent && window.frameElement )
|
||||
window.frameElement.parentNode.insertBefore( oIFrame, window.frameElement ) ;
|
||||
else
|
||||
this._Window.document.body.appendChild( oIFrame ) ;
|
||||
|
||||
var oIFrameWindow = oIFrame.contentWindow ;
|
||||
|
||||
oDocument = this.Document = oIFrameWindow.document ;
|
||||
|
||||
// Initialize the IFRAME document body.
|
||||
oDocument.open() ;
|
||||
oDocument.write( '<html><head></head><body style="margin:0px;padding:0px;"><\/body><\/html>' ) ;
|
||||
oDocument.close() ;
|
||||
|
||||
FCKTools.AddEventListenerEx( oIFrameWindow, 'focus', FCKPanel_Window_OnFocus, this ) ;
|
||||
FCKTools.AddEventListenerEx( oIFrameWindow, 'blur', FCKPanel_Window_OnBlur, this ) ;
|
||||
}
|
||||
|
||||
oDocument.dir = FCKLang.Dir ;
|
||||
|
||||
oDocument.oncontextmenu = FCKTools.CancelEvent ;
|
||||
|
||||
|
||||
// Create the main DIV that is used as the panel base.
|
||||
this.MainNode = oDocument.body.appendChild( oDocument.createElement('DIV') ) ;
|
||||
|
||||
// The "float" property must be set so Firefox calculates the size correcly.
|
||||
this.MainNode.style.cssFloat = this.IsRTL ? 'right' : 'left' ;
|
||||
}
|
||||
|
||||
|
||||
FCKPanel.prototype.AppendStyleSheet = function( styleSheet )
|
||||
{
|
||||
FCKTools.AppendStyleSheet( this.Document, styleSheet ) ;
|
||||
}
|
||||
|
||||
FCKPanel.prototype.Preload = function( x, y, relElement )
|
||||
{
|
||||
// The offsetWidth and offsetHeight properties are not available if the
|
||||
// element is not visible. So we must "show" the popup with no size to
|
||||
// be able to use that values in the second call (IE only).
|
||||
if ( this._Popup )
|
||||
this._Popup.show( x, y, 0, 0, relElement ) ;
|
||||
}
|
||||
|
||||
FCKPanel.prototype.Show = function( x, y, relElement, width, height )
|
||||
{
|
||||
var iMainWidth ;
|
||||
|
||||
if ( this._Popup )
|
||||
{
|
||||
// The offsetWidth and offsetHeight properties are not available if the
|
||||
// element is not visible. So we must "show" the popup with no size to
|
||||
// be able to use that values in the second call.
|
||||
this._Popup.show( x, y, 0, 0, relElement ) ;
|
||||
|
||||
// The following lines must be place after the above "show", otherwise it
|
||||
// doesn't has the desired effect.
|
||||
this.MainNode.style.width = width ? width + 'px' : '' ;
|
||||
this.MainNode.style.height = height ? height + 'px' : '' ;
|
||||
|
||||
iMainWidth = this.MainNode.offsetWidth ;
|
||||
|
||||
if ( this.IsRTL )
|
||||
{
|
||||
if ( this.IsContextMenu )
|
||||
x = x - iMainWidth + 1 ;
|
||||
else if ( relElement )
|
||||
x = ( x * -1 ) + relElement.offsetWidth - iMainWidth ;
|
||||
}
|
||||
|
||||
// Second call: Show the Popup at the specified location, with the correct size.
|
||||
this._Popup.show( x, y, iMainWidth, this.MainNode.offsetHeight, relElement ) ;
|
||||
|
||||
if ( this.OnHide )
|
||||
{
|
||||
if ( this._Timer )
|
||||
CheckPopupOnHide.call( this, true ) ;
|
||||
|
||||
this._Timer = FCKTools.SetInterval( CheckPopupOnHide, 100, this ) ;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// Do not fire OnBlur while the panel is opened.
|
||||
if ( typeof( FCKFocusManager ) != 'undefined' )
|
||||
FCKFocusManager.Lock() ;
|
||||
|
||||
if ( this.ParentPanel )
|
||||
this.ParentPanel.Lock() ;
|
||||
|
||||
this.MainNode.style.width = width ? width + 'px' : '' ;
|
||||
this.MainNode.style.height = height ? height + 'px' : '' ;
|
||||
|
||||
iMainWidth = this.MainNode.offsetWidth ;
|
||||
|
||||
if ( !width ) this._IFrame.width = 1 ;
|
||||
if ( !height ) this._IFrame.height = 1 ;
|
||||
|
||||
// This is weird... but with Firefox, we must get the offsetWidth before
|
||||
// setting the _IFrame size (which returns "0"), and then after that,
|
||||
// to return the correct width. Remove the first step and it will not
|
||||
// work when the editor is in RTL.
|
||||
iMainWidth = this.MainNode.offsetWidth ;
|
||||
|
||||
var oPos = FCKTools.GetElementPosition(
|
||||
relElement.nodeType == 9 ?
|
||||
( FCKTools.IsStrictMode( relElement ) ? relElement.documentElement : relElement.body ) :
|
||||
relElement,
|
||||
this._Window ) ;
|
||||
|
||||
if ( this.IsRTL && !this.IsContextMenu )
|
||||
x = ( x * -1 ) ;
|
||||
|
||||
x += oPos.X ;
|
||||
y += oPos.Y ;
|
||||
|
||||
if ( this.IsRTL )
|
||||
{
|
||||
if ( this.IsContextMenu )
|
||||
x = x - iMainWidth + 1 ;
|
||||
else if ( relElement )
|
||||
x = x + relElement.offsetWidth - iMainWidth ;
|
||||
}
|
||||
else
|
||||
{
|
||||
var oViewPaneSize = FCKTools.GetViewPaneSize( this._Window ) ;
|
||||
var oScrollPosition = FCKTools.GetScrollPosition( this._Window ) ;
|
||||
|
||||
var iViewPaneHeight = oViewPaneSize.Height + oScrollPosition.Y ;
|
||||
var iViewPaneWidth = oViewPaneSize.Width + oScrollPosition.X ;
|
||||
|
||||
if ( ( x + iMainWidth ) > iViewPaneWidth )
|
||||
x -= x + iMainWidth - iViewPaneWidth ;
|
||||
|
||||
if ( ( y + this.MainNode.offsetHeight ) > iViewPaneHeight )
|
||||
y -= y + this.MainNode.offsetHeight - iViewPaneHeight ;
|
||||
}
|
||||
|
||||
if ( x < 0 )
|
||||
x = 0 ;
|
||||
|
||||
// Set the context menu DIV in the specified location.
|
||||
this._IFrame.style.left = x + 'px' ;
|
||||
this._IFrame.style.top = y + 'px' ;
|
||||
|
||||
var iWidth = iMainWidth ;
|
||||
var iHeight = this.MainNode.offsetHeight ;
|
||||
|
||||
this._IFrame.width = iWidth ;
|
||||
this._IFrame.height = iHeight ;
|
||||
|
||||
// Move the focus to the IFRAME so we catch the "onblur".
|
||||
this._IFrame.contentWindow.focus() ;
|
||||
}
|
||||
|
||||
this._IsOpened = true ;
|
||||
|
||||
FCKTools.RunFunction( this.OnShow, this ) ;
|
||||
}
|
||||
|
||||
FCKPanel.prototype.Hide = function( ignoreOnHide )
|
||||
{
|
||||
if ( this._Popup )
|
||||
this._Popup.hide() ;
|
||||
else
|
||||
{
|
||||
if ( !this._IsOpened )
|
||||
return ;
|
||||
|
||||
// Enable the editor to fire the "OnBlur".
|
||||
if ( typeof( FCKFocusManager ) != 'undefined' )
|
||||
FCKFocusManager.Unlock() ;
|
||||
|
||||
// It is better to set the sizes to 0, otherwise Firefox would have
|
||||
// rendering problems.
|
||||
this._IFrame.width = this._IFrame.height = 0 ;
|
||||
|
||||
this._IsOpened = false ;
|
||||
|
||||
if ( this.ParentPanel )
|
||||
this.ParentPanel.Unlock() ;
|
||||
|
||||
if ( !ignoreOnHide )
|
||||
FCKTools.RunFunction( this.OnHide, this ) ;
|
||||
}
|
||||
}
|
||||
|
||||
FCKPanel.prototype.CheckIsOpened = function()
|
||||
{
|
||||
if ( this._Popup )
|
||||
return this._Popup.isOpen ;
|
||||
else
|
||||
return this._IsOpened ;
|
||||
}
|
||||
|
||||
FCKPanel.prototype.CreateChildPanel = function()
|
||||
{
|
||||
var oWindow = this._Popup ? FCKTools.GetDocumentWindow( this.Document ) : this._Window ;
|
||||
|
||||
var oChildPanel = new FCKPanel( oWindow, true ) ;
|
||||
oChildPanel.ParentPanel = this ;
|
||||
|
||||
return oChildPanel ;
|
||||
}
|
||||
|
||||
FCKPanel.prototype.Lock = function()
|
||||
{
|
||||
this._LockCounter++ ;
|
||||
}
|
||||
|
||||
FCKPanel.prototype.Unlock = function()
|
||||
{
|
||||
if ( --this._LockCounter == 0 && !this.HasFocus )
|
||||
this.Hide() ;
|
||||
}
|
||||
|
||||
/* Events */
|
||||
|
||||
function FCKPanel_Window_OnFocus( e, panel )
|
||||
{
|
||||
panel.HasFocus = true ;
|
||||
}
|
||||
|
||||
function FCKPanel_Window_OnBlur( e, panel )
|
||||
{
|
||||
panel.HasFocus = false ;
|
||||
|
||||
if ( panel._LockCounter == 0 )
|
||||
FCKTools.RunFunction( panel.Hide, panel ) ;
|
||||
}
|
||||
|
||||
function CheckPopupOnHide( forceHide )
|
||||
{
|
||||
if ( forceHide || !this._Popup.isOpen )
|
||||
{
|
||||
window.clearInterval( this._Timer ) ;
|
||||
this._Timer = null ;
|
||||
|
||||
FCKTools.RunFunction( this.OnHide, this ) ;
|
||||
}
|
||||
}
|
||||
|
||||
function FCKPanel_Cleanup()
|
||||
{
|
||||
this._Popup = null ;
|
||||
this._Window = null ;
|
||||
this.Document = null ;
|
||||
this.MainNode = null ;
|
||||
}
|
@ -1,56 +0,0 @@
|
||||
/*
|
||||
* 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 ==
|
||||
*
|
||||
* FCKPlugin Class: Represents a single plugin.
|
||||
*/
|
||||
|
||||
var FCKPlugin = function( name, availableLangs, basePath )
|
||||
{
|
||||
this.Name = name ;
|
||||
this.BasePath = basePath ? basePath : FCKConfig.PluginsPath ;
|
||||
this.Path = this.BasePath + name + '/' ;
|
||||
|
||||
if ( !availableLangs || availableLangs.length == 0 )
|
||||
this.AvailableLangs = new Array() ;
|
||||
else
|
||||
this.AvailableLangs = availableLangs.split(',') ;
|
||||
}
|
||||
|
||||
FCKPlugin.prototype.Load = function()
|
||||
{
|
||||
// Load the language file, if defined.
|
||||
if ( this.AvailableLangs.length > 0 )
|
||||
{
|
||||
var sLang ;
|
||||
|
||||
// Check if the plugin has the language file for the active language.
|
||||
if ( this.AvailableLangs.IndexOf( FCKLanguageManager.ActiveLanguage.Code ) >= 0 )
|
||||
sLang = FCKLanguageManager.ActiveLanguage.Code ;
|
||||
else
|
||||
// Load the default language file (first one) if the current one is not available.
|
||||
sLang = this.AvailableLangs[0] ;
|
||||
|
||||
// Add the main plugin script.
|
||||
LoadScript( this.Path + 'lang/' + sLang + '.js' ) ;
|
||||
}
|
||||
|
||||
// Add the main plugin script.
|
||||
LoadScript( this.Path + 'fckplugin.js' ) ;
|
||||
}
|
@ -1,363 +0,0 @@
|
||||
/*
|
||||
* 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 ==
|
||||
*
|
||||
* FCKSpecialCombo Class: represents a special combo.
|
||||
*/
|
||||
|
||||
var FCKSpecialCombo = function( caption, fieldWidth, panelWidth, panelMaxHeight, parentWindow )
|
||||
{
|
||||
// Default properties values.
|
||||
this.FieldWidth = fieldWidth || 100 ;
|
||||
this.PanelWidth = panelWidth || 150 ;
|
||||
this.PanelMaxHeight = panelMaxHeight || 150 ;
|
||||
this.Label = ' ' ;
|
||||
this.Caption = caption ;
|
||||
this.Tooltip = caption ;
|
||||
this.Style = FCK_TOOLBARITEM_ICONTEXT ;
|
||||
|
||||
this.Enabled = true ;
|
||||
|
||||
this.Items = new Object() ;
|
||||
|
||||
this._Panel = new FCKPanel( parentWindow || window, true ) ;
|
||||
this._Panel.AppendStyleSheet( FCKConfig.SkinPath + 'fck_editor.css' ) ;
|
||||
this._PanelBox = this._Panel.MainNode.appendChild( this._Panel.Document.createElement( 'DIV' ) ) ;
|
||||
this._PanelBox.className = 'SC_Panel' ;
|
||||
this._PanelBox.style.width = this.PanelWidth + 'px' ;
|
||||
|
||||
this._PanelBox.innerHTML = '<table cellpadding="0" cellspacing="0" width="100%" style="TABLE-LAYOUT: fixed"><tr><td nowrap></td></tr></table>' ;
|
||||
|
||||
this._ItemsHolderEl = this._PanelBox.getElementsByTagName('TD')[0] ;
|
||||
|
||||
if ( FCK.IECleanup )
|
||||
FCK.IECleanup.AddItem( this, FCKSpecialCombo_Cleanup ) ;
|
||||
|
||||
// this._Panel.StyleSheet = FCKConfig.SkinPath + 'fck_contextmenu.css' ;
|
||||
// this._Panel.Create() ;
|
||||
// this._Panel.PanelDiv.className += ' SC_Panel' ;
|
||||
// this._Panel.PanelDiv.innerHTML = '<table cellpadding="0" cellspacing="0" width="100%" style="TABLE-LAYOUT: fixed"><tr><td nowrap></td></tr></table>' ;
|
||||
// this._ItemsHolderEl = this._Panel.PanelDiv.getElementsByTagName('TD')[0] ;
|
||||
}
|
||||
|
||||
function FCKSpecialCombo_ItemOnMouseOver()
|
||||
{
|
||||
this.className += ' SC_ItemOver' ;
|
||||
}
|
||||
|
||||
function FCKSpecialCombo_ItemOnMouseOut()
|
||||
{
|
||||
this.className = this.originalClass ;
|
||||
}
|
||||
|
||||
function FCKSpecialCombo_ItemOnClick()
|
||||
{
|
||||
this.className = this.originalClass ;
|
||||
|
||||
this.FCKSpecialCombo._Panel.Hide() ;
|
||||
|
||||
this.FCKSpecialCombo.SetLabel( this.FCKItemLabel ) ;
|
||||
|
||||
if ( typeof( this.FCKSpecialCombo.OnSelect ) == 'function' )
|
||||
this.FCKSpecialCombo.OnSelect( this.FCKItemID, this ) ;
|
||||
}
|
||||
|
||||
FCKSpecialCombo.prototype.AddItem = function( id, html, label, bgColor )
|
||||
{
|
||||
// <div class="SC_Item" onmouseover="this.className='SC_Item SC_ItemOver';" onmouseout="this.className='SC_Item';"><b>Bold 1</b></div>
|
||||
var oDiv = this._ItemsHolderEl.appendChild( this._Panel.Document.createElement( 'DIV' ) ) ;
|
||||
oDiv.className = oDiv.originalClass = 'SC_Item' ;
|
||||
oDiv.innerHTML = html ;
|
||||
oDiv.FCKItemID = id ;
|
||||
oDiv.FCKItemLabel = label || id ;
|
||||
oDiv.FCKSpecialCombo = this ;
|
||||
oDiv.Selected = false ;
|
||||
|
||||
// In IE, the width must be set so the borders are shown correctly when the content overflows.
|
||||
if ( FCKBrowserInfo.IsIE )
|
||||
oDiv.style.width = '100%' ;
|
||||
|
||||
if ( bgColor )
|
||||
oDiv.style.backgroundColor = bgColor ;
|
||||
|
||||
oDiv.onmouseover = FCKSpecialCombo_ItemOnMouseOver ;
|
||||
oDiv.onmouseout = FCKSpecialCombo_ItemOnMouseOut ;
|
||||
oDiv.onclick = FCKSpecialCombo_ItemOnClick ;
|
||||
|
||||
this.Items[ id.toString().toLowerCase() ] = oDiv ;
|
||||
|
||||
return oDiv ;
|
||||
}
|
||||
|
||||
FCKSpecialCombo.prototype.SelectItem = function( itemId )
|
||||
{
|
||||
itemId = itemId ? itemId.toString().toLowerCase() : '' ;
|
||||
|
||||
var oDiv = this.Items[ itemId ] ;
|
||||
if ( oDiv )
|
||||
{
|
||||
oDiv.className = oDiv.originalClass = 'SC_ItemSelected' ;
|
||||
oDiv.Selected = true ;
|
||||
}
|
||||
}
|
||||
|
||||
FCKSpecialCombo.prototype.SelectItemByLabel = function( itemLabel, setLabel )
|
||||
{
|
||||
for ( var id in this.Items )
|
||||
{
|
||||
var oDiv = this.Items[id] ;
|
||||
|
||||
if ( oDiv.FCKItemLabel == itemLabel )
|
||||
{
|
||||
oDiv.className = oDiv.originalClass = 'SC_ItemSelected' ;
|
||||
oDiv.Selected = true ;
|
||||
|
||||
if ( setLabel )
|
||||
this.SetLabel( itemLabel ) ;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
FCKSpecialCombo.prototype.DeselectAll = function( clearLabel )
|
||||
{
|
||||
for ( var i in this.Items )
|
||||
{
|
||||
this.Items[i].className = this.Items[i].originalClass = 'SC_Item' ;
|
||||
this.Items[i].Selected = false ;
|
||||
}
|
||||
|
||||
if ( clearLabel )
|
||||
this.SetLabel( '' ) ;
|
||||
}
|
||||
|
||||
FCKSpecialCombo.prototype.SetLabelById = function( id )
|
||||
{
|
||||
id = id ? id.toString().toLowerCase() : '' ;
|
||||
|
||||
var oDiv = this.Items[ id ] ;
|
||||
this.SetLabel( oDiv ? oDiv.FCKItemLabel : '' ) ;
|
||||
}
|
||||
|
||||
FCKSpecialCombo.prototype.SetLabel = function( text )
|
||||
{
|
||||
this.Label = text.length == 0 ? ' ' : text ;
|
||||
|
||||
if ( this._LabelEl )
|
||||
{
|
||||
this._LabelEl.innerHTML = this.Label ;
|
||||
|
||||
// It may happen that the label is some HTML, including tags. This
|
||||
// would be a problem because when the user click on those tags, the
|
||||
// combo will get the selection from the editing area. So we must
|
||||
// disable any kind of selection here.
|
||||
FCKTools.DisableSelection( this._LabelEl ) ;
|
||||
}
|
||||
}
|
||||
|
||||
FCKSpecialCombo.prototype.SetEnabled = function( isEnabled )
|
||||
{
|
||||
this.Enabled = isEnabled ;
|
||||
|
||||
this._OuterTable.className = isEnabled ? '' : 'SC_FieldDisabled' ;
|
||||
}
|
||||
|
||||
FCKSpecialCombo.prototype.Create = function( targetElement )
|
||||
{
|
||||
var oDoc = FCKTools.GetElementDocument( targetElement ) ;
|
||||
var eOuterTable = this._OuterTable = targetElement.appendChild( oDoc.createElement( 'TABLE' ) ) ;
|
||||
eOuterTable.cellPadding = 0 ;
|
||||
eOuterTable.cellSpacing = 0 ;
|
||||
|
||||
eOuterTable.insertRow(-1) ;
|
||||
|
||||
var sClass ;
|
||||
var bShowLabel ;
|
||||
|
||||
switch ( this.Style )
|
||||
{
|
||||
case FCK_TOOLBARITEM_ONLYICON :
|
||||
sClass = 'TB_ButtonType_Icon' ;
|
||||
bShowLabel = false;
|
||||
break ;
|
||||
case FCK_TOOLBARITEM_ONLYTEXT :
|
||||
sClass = 'TB_ButtonType_Text' ;
|
||||
bShowLabel = false;
|
||||
break ;
|
||||
case FCK_TOOLBARITEM_ICONTEXT :
|
||||
bShowLabel = true;
|
||||
break ;
|
||||
}
|
||||
|
||||
if ( this.Caption && this.Caption.length > 0 && bShowLabel )
|
||||
{
|
||||
var oCaptionCell = eOuterTable.rows[0].insertCell(-1) ;
|
||||
oCaptionCell.innerHTML = this.Caption ;
|
||||
oCaptionCell.className = 'SC_FieldCaption' ;
|
||||
}
|
||||
|
||||
// Create the main DIV element.
|
||||
var oField = FCKTools.AppendElement( eOuterTable.rows[0].insertCell(-1), 'div' ) ;
|
||||
if ( bShowLabel )
|
||||
{
|
||||
oField.className = 'SC_Field' ;
|
||||
oField.style.width = this.FieldWidth + 'px' ;
|
||||
oField.innerHTML = '<table width="100%" cellpadding="0" cellspacing="0" style="TABLE-LAYOUT: fixed;"><tbody><tr><td class="SC_FieldLabel"><label> </label></td><td class="SC_FieldButton"> </td></tr></tbody></table>' ;
|
||||
|
||||
this._LabelEl = oField.getElementsByTagName('label')[0] ; // Memory Leak
|
||||
this._LabelEl.innerHTML = this.Label ;
|
||||
}
|
||||
else
|
||||
{
|
||||
oField.className = 'TB_Button_Off' ;
|
||||
//oField.innerHTML = '<span className="SC_FieldCaption">' + this.Caption + '<table cellpadding="0" cellspacing="0" style="TABLE-LAYOUT: fixed;"><tbody><tr><td class="SC_FieldButton" style="border-left: none;"> </td></tr></tbody></table>' ;
|
||||
//oField.innerHTML = '<table cellpadding="0" cellspacing="0" style="TABLE-LAYOUT: fixed;"><tbody><tr><td class="SC_FieldButton" style="border-left: none;"> </td></tr></tbody></table>' ;
|
||||
|
||||
// Gets the correct CSS class to use for the specified style (param).
|
||||
oField.innerHTML = '<table title="' + this.Tooltip + '" class="' + sClass + '" cellspacing="0" cellpadding="0" border="0">' +
|
||||
'<tr>' +
|
||||
//'<td class="TB_Icon"><img src="' + FCKConfig.SkinPath + 'toolbar/' + this.Command.Name.toLowerCase() + '.gif" width="21" height="21"></td>' +
|
||||
'<td><img class="TB_Button_Padding" src="' + FCK_SPACER_PATH + '" /></td>' +
|
||||
'<td class="TB_Text">' + this.Caption + '</td>' +
|
||||
'<td><img class="TB_Button_Padding" src="' + FCK_SPACER_PATH + '" /></td>' +
|
||||
'<td class="TB_ButtonArrow"><img src="' + FCKConfig.SkinPath + 'images/toolbar.buttonarrow.gif" width="5" height="3"></td>' +
|
||||
'<td><img class="TB_Button_Padding" src="' + FCK_SPACER_PATH + '" /></td>' +
|
||||
'</tr>' +
|
||||
'</table>' ;
|
||||
}
|
||||
|
||||
|
||||
// Events Handlers
|
||||
|
||||
oField.SpecialCombo = this ;
|
||||
|
||||
oField.onmouseover = FCKSpecialCombo_OnMouseOver ;
|
||||
oField.onmouseout = FCKSpecialCombo_OnMouseOut ;
|
||||
oField.onclick = FCKSpecialCombo_OnClick ;
|
||||
|
||||
FCKTools.DisableSelection( this._Panel.Document.body ) ;
|
||||
}
|
||||
|
||||
function FCKSpecialCombo_Cleanup()
|
||||
{
|
||||
this._LabelEl = null ;
|
||||
this._OuterTable = null ;
|
||||
this._ItemsHolderEl = null ;
|
||||
this._PanelBox = null ;
|
||||
|
||||
if ( this.Items )
|
||||
{
|
||||
for ( var key in this.Items )
|
||||
this.Items[key] = null ;
|
||||
}
|
||||
}
|
||||
|
||||
function FCKSpecialCombo_OnMouseOver()
|
||||
{
|
||||
if ( this.SpecialCombo.Enabled )
|
||||
{
|
||||
switch ( this.SpecialCombo.Style )
|
||||
{
|
||||
case FCK_TOOLBARITEM_ONLYICON :
|
||||
this.className = 'TB_Button_On_Over';
|
||||
break ;
|
||||
case FCK_TOOLBARITEM_ONLYTEXT :
|
||||
this.className = 'TB_Button_On_Over';
|
||||
break ;
|
||||
case FCK_TOOLBARITEM_ICONTEXT :
|
||||
this.className = 'SC_Field SC_FieldOver' ;
|
||||
break ;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function FCKSpecialCombo_OnMouseOut()
|
||||
{
|
||||
switch ( this.SpecialCombo.Style )
|
||||
{
|
||||
case FCK_TOOLBARITEM_ONLYICON :
|
||||
this.className = 'TB_Button_Off';
|
||||
break ;
|
||||
case FCK_TOOLBARITEM_ONLYTEXT :
|
||||
this.className = 'TB_Button_Off';
|
||||
break ;
|
||||
case FCK_TOOLBARITEM_ICONTEXT :
|
||||
this.className='SC_Field' ;
|
||||
break ;
|
||||
}
|
||||
}
|
||||
|
||||
function FCKSpecialCombo_OnClick( e )
|
||||
{
|
||||
// For Mozilla we must stop the event propagation to avoid it hiding
|
||||
// the panel because of a click outside of it.
|
||||
// if ( e )
|
||||
// {
|
||||
// e.stopPropagation() ;
|
||||
// FCKPanelEventHandlers.OnDocumentClick( e ) ;
|
||||
// }
|
||||
|
||||
var oSpecialCombo = this.SpecialCombo ;
|
||||
|
||||
if ( oSpecialCombo.Enabled )
|
||||
{
|
||||
var oPanel = oSpecialCombo._Panel ;
|
||||
var oPanelBox = oSpecialCombo._PanelBox ;
|
||||
var oItemsHolder = oSpecialCombo._ItemsHolderEl ;
|
||||
var iMaxHeight = oSpecialCombo.PanelMaxHeight ;
|
||||
|
||||
if ( oSpecialCombo.OnBeforeClick )
|
||||
oSpecialCombo.OnBeforeClick( oSpecialCombo ) ;
|
||||
|
||||
// This is a tricky thing. We must call the "Load" function, otherwise
|
||||
// it will not be possible to retrieve "oItemsHolder.offsetHeight" (IE only).
|
||||
if ( FCKBrowserInfo.IsIE )
|
||||
oPanel.Preload( 0, this.offsetHeight, this ) ;
|
||||
|
||||
if ( oItemsHolder.offsetHeight > iMaxHeight )
|
||||
// {
|
||||
oPanelBox.style.height = iMaxHeight + 'px' ;
|
||||
|
||||
// if ( FCKBrowserInfo.IsGecko )
|
||||
// oPanelBox.style.overflow = '-moz-scrollbars-vertical' ;
|
||||
// }
|
||||
else
|
||||
oPanelBox.style.height = '' ;
|
||||
|
||||
// oPanel.PanelDiv.style.width = oSpecialCombo.PanelWidth + 'px' ;
|
||||
|
||||
oPanel.Show( 0, this.offsetHeight, this ) ;
|
||||
}
|
||||
|
||||
// return false ;
|
||||
}
|
||||
|
||||
/*
|
||||
Sample Combo Field HTML output:
|
||||
|
||||
<div class="SC_Field" style="width: 80px;">
|
||||
<table width="100%" cellpadding="0" cellspacing="0" style="table-layout: fixed;">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="SC_FieldLabel"><label> </label></td>
|
||||
<td class="SC_FieldButton"> </td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
*/
|
@ -1,59 +0,0 @@
|
||||
/*
|
||||
* 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 ==
|
||||
*
|
||||
* FCKStyleDef Class: represents a single style definition.
|
||||
*/
|
||||
|
||||
var FCKStyleDef = function( name, element )
|
||||
{
|
||||
this.Name = name ;
|
||||
this.Element = element.toUpperCase() ;
|
||||
this.IsObjectElement = FCKRegexLib.ObjectElements.test( this.Element ) ;
|
||||
this.Attributes = new Object() ;
|
||||
}
|
||||
|
||||
FCKStyleDef.prototype.AddAttribute = function( name, value )
|
||||
{
|
||||
this.Attributes[ name ] = value ;
|
||||
}
|
||||
|
||||
FCKStyleDef.prototype.GetOpenerTag = function()
|
||||
{
|
||||
var s = '<' + this.Element ;
|
||||
|
||||
for ( var a in this.Attributes )
|
||||
s += ' ' + a + '="' + this.Attributes[a] + '"' ;
|
||||
|
||||
return s + '>' ;
|
||||
}
|
||||
|
||||
FCKStyleDef.prototype.GetCloserTag = function()
|
||||
{
|
||||
return '</' + this.Element + '>' ;
|
||||
}
|
||||
|
||||
|
||||
FCKStyleDef.prototype.RemoveFromSelection = function()
|
||||
{
|
||||
if ( FCKSelection.GetType() == 'Control' )
|
||||
this._RemoveMe( FCK.ToolbarSet.CurrentInstance.Selection.GetSelectedElement() ) ;
|
||||
else
|
||||
this._RemoveMe( FCK.ToolbarSet.CurrentInstance.Selection.GetParentElement() ) ;
|
||||
}
|
@ -1,119 +0,0 @@
|
||||
/*
|
||||
* 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 ==
|
||||
*
|
||||
* FCKStyleDef Class: represents a single stylke definition. (Gecko specific)
|
||||
*/
|
||||
|
||||
FCKStyleDef.prototype.ApplyToSelection = function()
|
||||
{
|
||||
if ( FCKSelection.GetType() == 'Text' && !this.IsObjectElement )
|
||||
{
|
||||
var oSelection = FCK.ToolbarSet.CurrentInstance.EditorWindow.getSelection() ;
|
||||
|
||||
// Create the main element.
|
||||
var e = FCK.ToolbarSet.CurrentInstance.EditorDocument.createElement( this.Element ) ;
|
||||
|
||||
for ( var i = 0 ; i < oSelection.rangeCount ; i++ )
|
||||
{
|
||||
e.appendChild( oSelection.getRangeAt(i).extractContents() ) ;
|
||||
}
|
||||
|
||||
// Set the attributes.
|
||||
this._AddAttributes( e ) ;
|
||||
|
||||
// Remove the duplicated elements.
|
||||
this._RemoveDuplicates( e ) ;
|
||||
|
||||
var oRange = oSelection.getRangeAt(0) ;
|
||||
oRange.insertNode( e ) ;
|
||||
}
|
||||
else
|
||||
{
|
||||
var oControl = FCK.ToolbarSet.CurrentInstance.Selection.GetSelectedElement() ;
|
||||
if ( oControl.tagName == this.Element )
|
||||
this._AddAttributes( oControl ) ;
|
||||
}
|
||||
}
|
||||
|
||||
FCKStyleDef.prototype._AddAttributes = function( targetElement )
|
||||
{
|
||||
for ( var a in this.Attributes )
|
||||
{
|
||||
switch ( a.toLowerCase() )
|
||||
{
|
||||
case 'src' :
|
||||
targetElement.setAttribute( '_fcksavedurl', this.Attributes[a], 0 ) ;
|
||||
default :
|
||||
targetElement.setAttribute( a, this.Attributes[a], 0 ) ;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
FCKStyleDef.prototype._RemoveDuplicates = function( parent )
|
||||
{
|
||||
for ( var i = 0 ; i < parent.childNodes.length ; i++ )
|
||||
{
|
||||
var oChild = parent.childNodes[i] ;
|
||||
|
||||
if ( oChild.nodeType != 1 )
|
||||
continue ;
|
||||
|
||||
this._RemoveDuplicates( oChild ) ;
|
||||
|
||||
if ( this.IsEqual( oChild ) )
|
||||
FCKTools.RemoveOuterTags( oChild ) ;
|
||||
}
|
||||
}
|
||||
|
||||
FCKStyleDef.prototype.IsEqual = function( e )
|
||||
{
|
||||
if ( e.tagName != this.Element )
|
||||
return false ;
|
||||
|
||||
for ( var a in this.Attributes )
|
||||
{
|
||||
if ( e.getAttribute( a ) != this.Attributes[a] )
|
||||
return false ;
|
||||
}
|
||||
|
||||
return true ;
|
||||
}
|
||||
|
||||
FCKStyleDef.prototype._RemoveMe = function( elementToCheck )
|
||||
{
|
||||
if ( ! elementToCheck )
|
||||
return ;
|
||||
|
||||
var oParent = elementToCheck.parentNode ;
|
||||
|
||||
if ( elementToCheck.nodeType == 1 && this.IsEqual( elementToCheck ) )
|
||||
{
|
||||
if ( this.IsObjectElement )
|
||||
{
|
||||
for ( var a in this.Attributes )
|
||||
elementToCheck.removeAttribute( a, 0 ) ;
|
||||
return ;
|
||||
}
|
||||
else
|
||||
FCKTools.RemoveOuterTags( elementToCheck ) ;
|
||||
}
|
||||
|
||||
this._RemoveMe( oParent ) ;
|
||||
}
|
@ -1,142 +0,0 @@
|
||||
/*
|
||||
* 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 ==
|
||||
*
|
||||
* FCKStyleDef Class: represents a single stylke definition. (IE specific)
|
||||
*/
|
||||
|
||||
FCKStyleDef.prototype.ApplyToSelection = function()
|
||||
{
|
||||
var oSelection = FCK.ToolbarSet.CurrentInstance.EditorDocument.selection ;
|
||||
|
||||
if ( oSelection.type == 'Text' )
|
||||
{
|
||||
var oRange = oSelection.createRange() ;
|
||||
|
||||
// Create the main element.
|
||||
var e = document.createElement( this.Element ) ;
|
||||
e.innerHTML = oRange.htmlText ;
|
||||
|
||||
// Set the attributes.
|
||||
this._AddAttributes( e ) ;
|
||||
|
||||
// Remove the duplicated elements.
|
||||
this._RemoveDuplicates( e ) ;
|
||||
|
||||
// Replace the selection with the resulting HTML.
|
||||
oRange.pasteHTML( e.outerHTML ) ;
|
||||
}
|
||||
else if ( oSelection.type == 'Control' )
|
||||
{
|
||||
var oControl = FCK.ToolbarSet.CurrentInstance.Selection.GetSelectedElement() ;
|
||||
if ( oControl.tagName == this.Element )
|
||||
this._AddAttributes( oControl ) ;
|
||||
}
|
||||
}
|
||||
|
||||
FCKStyleDef.prototype._AddAttributes = function( targetElement )
|
||||
{
|
||||
for ( var a in this.Attributes )
|
||||
{
|
||||
switch ( a.toLowerCase() )
|
||||
{
|
||||
case 'style' :
|
||||
targetElement.style.cssText = this.Attributes[a] ;
|
||||
break ;
|
||||
|
||||
case 'class' :
|
||||
targetElement.setAttribute( 'className', this.Attributes[a], 0 ) ;
|
||||
break ;
|
||||
|
||||
case 'src' :
|
||||
targetElement.setAttribute( '_fcksavedurl', this.Attributes[a], 0 ) ;
|
||||
default :
|
||||
targetElement.setAttribute( a, this.Attributes[a], 0 ) ;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
FCKStyleDef.prototype._RemoveDuplicates = function( parent )
|
||||
{
|
||||
for ( var i = 0 ; i < parent.children.length ; i++ )
|
||||
{
|
||||
var oChild = parent.children[i] ;
|
||||
this._RemoveDuplicates( oChild ) ;
|
||||
|
||||
if ( this.IsEqual( oChild ) )
|
||||
FCKTools.RemoveOuterTags( oChild ) ;
|
||||
}
|
||||
}
|
||||
|
||||
FCKStyleDef.prototype.IsEqual = function( e )
|
||||
{
|
||||
if ( e.tagName != this.Element )
|
||||
return false ;
|
||||
|
||||
for ( var a in this.Attributes )
|
||||
{
|
||||
switch ( a.toLowerCase() )
|
||||
{
|
||||
case 'style' :
|
||||
if ( e.style.cssText.toLowerCase() != this.Attributes[a].toLowerCase() )
|
||||
return false ;
|
||||
break ;
|
||||
case 'class' :
|
||||
if ( e.getAttribute( 'className', 0 ) != this.Attributes[a] )
|
||||
return false ;
|
||||
break ;
|
||||
default :
|
||||
if ( e.getAttribute( a, 0 ) != this.Attributes[a] )
|
||||
return false ;
|
||||
}
|
||||
}
|
||||
|
||||
return true ;
|
||||
}
|
||||
|
||||
FCKStyleDef.prototype._RemoveMe = function( elementToCheck )
|
||||
{
|
||||
if ( ! elementToCheck )
|
||||
return ;
|
||||
|
||||
var oParent = elementToCheck.parentElement ;
|
||||
|
||||
if ( this.IsEqual( elementToCheck ) )
|
||||
{
|
||||
if ( this.IsObjectElement )
|
||||
{
|
||||
for ( var a in this.Attributes )
|
||||
{
|
||||
switch ( a.toLowerCase() )
|
||||
{
|
||||
case 'class' :
|
||||
elementToCheck.removeAttribute( 'className', 0 ) ;
|
||||
break ;
|
||||
default :
|
||||
elementToCheck.removeAttribute( a, 0 ) ;
|
||||
}
|
||||
}
|
||||
return ;
|
||||
}
|
||||
else
|
||||
FCKTools.RemoveOuterTags( elementToCheck ) ;
|
||||
}
|
||||
|
||||
this._RemoveMe( oParent ) ;
|
||||
}
|
@ -1,88 +0,0 @@
|
||||
/*
|
||||
* 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 ==
|
||||
*
|
||||
* FCKStylesLoader Class: this class define objects that are responsible
|
||||
* for loading the styles defined in the XML file.
|
||||
*/
|
||||
|
||||
var FCKStylesLoader = function()
|
||||
{
|
||||
this.Styles = new Object() ;
|
||||
this.StyleGroups = new Object() ;
|
||||
this.Loaded = false ;
|
||||
this.HasObjectElements = false ;
|
||||
}
|
||||
|
||||
FCKStylesLoader.prototype.Load = function( stylesXmlUrl )
|
||||
{
|
||||
// Load the XML file into a FCKXml object.
|
||||
var oXml = new FCKXml() ;
|
||||
oXml.LoadUrl( stylesXmlUrl ) ;
|
||||
|
||||
// Get the "Style" nodes defined in the XML file.
|
||||
var aStyleNodes = oXml.SelectNodes( 'Styles/Style' ) ;
|
||||
|
||||
// Add each style to our "Styles" collection.
|
||||
for ( var i = 0 ; i < aStyleNodes.length ; i++ )
|
||||
{
|
||||
var sElement = aStyleNodes[i].attributes.getNamedItem('element').value.toUpperCase() ;
|
||||
|
||||
// Create the style definition object.
|
||||
var oStyleDef = new FCKStyleDef( aStyleNodes[i].attributes.getNamedItem('name').value, sElement ) ;
|
||||
|
||||
if ( oStyleDef.IsObjectElement )
|
||||
this.HasObjectElements = true ;
|
||||
|
||||
// Get the attributes defined for the style (if any).
|
||||
var aAttNodes = oXml.SelectNodes( 'Attribute', aStyleNodes[i] ) ;
|
||||
|
||||
// Add the attributes to the style definition object.
|
||||
for ( var j = 0 ; j < aAttNodes.length ; j++ )
|
||||
{
|
||||
var sAttName = aAttNodes[j].attributes.getNamedItem('name').value ;
|
||||
var sAttValue = aAttNodes[j].attributes.getNamedItem('value').value ;
|
||||
|
||||
// IE changes the "style" attribute value when applied to an element
|
||||
// so we must get the final resulting value (for comparision issues).
|
||||
if ( sAttName.toLowerCase() == 'style' )
|
||||
{
|
||||
var oTempE = document.createElement( 'SPAN' ) ;
|
||||
oTempE.style.cssText = sAttValue ;
|
||||
sAttValue = oTempE.style.cssText ;
|
||||
}
|
||||
|
||||
oStyleDef.AddAttribute( sAttName, sAttValue ) ;
|
||||
}
|
||||
|
||||
// Add the style to the "Styles" collection using it's name as the key.
|
||||
this.Styles[ oStyleDef.Name ] = oStyleDef ;
|
||||
|
||||
// Add the style to the "StyleGroups" collection.
|
||||
var aGroup = this.StyleGroups[sElement] ;
|
||||
if ( aGroup == null )
|
||||
{
|
||||
this.StyleGroups[sElement] = new Array() ;
|
||||
aGroup = this.StyleGroups[sElement] ;
|
||||
}
|
||||
aGroup[aGroup.length] = oStyleDef ;
|
||||
}
|
||||
|
||||
this.Loaded = true ;
|
||||
}
|
@ -1,120 +0,0 @@
|
||||
/*
|
||||
* 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 ==
|
||||
*
|
||||
* FCKToolbar Class: represents a toolbar in the toolbarset. It is a group of
|
||||
* toolbar items.
|
||||
*/
|
||||
|
||||
var FCKToolbar = function()
|
||||
{
|
||||
this.Items = new Array() ;
|
||||
|
||||
if ( FCK.IECleanup )
|
||||
FCK.IECleanup.AddItem( this, FCKToolbar_Cleanup ) ;
|
||||
}
|
||||
|
||||
FCKToolbar.prototype.AddItem = function( item )
|
||||
{
|
||||
return this.Items[ this.Items.length ] = item ;
|
||||
}
|
||||
|
||||
FCKToolbar.prototype.AddButton = function( name, label, tooltip, iconPathOrStripInfoArrayOrIndex, style, state )
|
||||
{
|
||||
if ( typeof( iconPathOrStripInfoArrayOrIndex ) == 'number' )
|
||||
iconPathOrStripInfoArrayOrIndex = [ this.DefaultIconsStrip, this.DefaultIconSize, iconPathOrStripInfoArrayOrIndex ] ;
|
||||
|
||||
var oButton = new FCKToolbarButtonUI( name, label, tooltip, iconPathOrStripInfoArrayOrIndex, style, state ) ;
|
||||
oButton._FCKToolbar = this ;
|
||||
oButton.OnClick = FCKToolbar_OnItemClick ;
|
||||
|
||||
return this.AddItem( oButton ) ;
|
||||
}
|
||||
|
||||
function FCKToolbar_OnItemClick( item )
|
||||
{
|
||||
var oToolbar = item._FCKToolbar ;
|
||||
|
||||
if ( oToolbar.OnItemClick )
|
||||
oToolbar.OnItemClick( oToolbar, item ) ;
|
||||
}
|
||||
|
||||
FCKToolbar.prototype.AddSeparator = function()
|
||||
{
|
||||
this.AddItem( new FCKToolbarSeparator() ) ;
|
||||
}
|
||||
|
||||
FCKToolbar.prototype.Create = function( parentElement )
|
||||
{
|
||||
if ( this.MainElement )
|
||||
{
|
||||
// this._Cleanup() ;
|
||||
if ( this.MainElement.parentNode )
|
||||
this.MainElement.parentNode.removeChild( this.MainElement ) ;
|
||||
this.MainElement = null ;
|
||||
}
|
||||
|
||||
var oDoc = FCKTools.GetElementDocument( parentElement ) ;
|
||||
|
||||
var e = this.MainElement = oDoc.createElement( 'table' ) ;
|
||||
e.className = 'TB_Toolbar' ;
|
||||
e.style.styleFloat = e.style.cssFloat = ( FCKLang.Dir == 'ltr' ? 'left' : 'right' ) ;
|
||||
e.dir = FCKLang.Dir ;
|
||||
e.cellPadding = 0 ;
|
||||
e.cellSpacing = 0 ;
|
||||
|
||||
this.RowElement = e.insertRow(-1) ;
|
||||
|
||||
// Insert the start cell.
|
||||
var eCell ;
|
||||
|
||||
if ( !this.HideStart )
|
||||
{
|
||||
eCell = this.RowElement.insertCell(-1) ;
|
||||
eCell.appendChild( oDoc.createElement( 'div' ) ).className = 'TB_Start' ;
|
||||
}
|
||||
|
||||
for ( var i = 0 ; i < this.Items.length ; i++ )
|
||||
{
|
||||
this.Items[i].Create( this.RowElement.insertCell(-1) ) ;
|
||||
}
|
||||
|
||||
// Insert the ending cell.
|
||||
if ( !this.HideEnd )
|
||||
{
|
||||
eCell = this.RowElement.insertCell(-1) ;
|
||||
eCell.appendChild( oDoc.createElement( 'div' ) ).className = 'TB_End' ;
|
||||
}
|
||||
|
||||
parentElement.appendChild( e ) ;
|
||||
}
|
||||
|
||||
function FCKToolbar_Cleanup()
|
||||
{
|
||||
this.MainElement = null ;
|
||||
this.RowElement = null ;
|
||||
}
|
||||
|
||||
var FCKToolbarSeparator = function()
|
||||
{}
|
||||
|
||||
FCKToolbarSeparator.prototype.Create = function( parentElement )
|
||||
{
|
||||
FCKTools.AppendElement( parentElement, 'div' ).className = 'TB_Separator' ;
|
||||
}
|
@ -1,36 +0,0 @@
|
||||
/*
|
||||
* 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 ==
|
||||
*
|
||||
* FCKToolbarBreak Class: breaks the toolbars.
|
||||
* It makes it possible to force the toolbar to break to a new line.
|
||||
* This is the Gecko specific implementation.
|
||||
*/
|
||||
|
||||
var FCKToolbarBreak = function()
|
||||
{}
|
||||
|
||||
FCKToolbarBreak.prototype.Create = function( targetElement )
|
||||
{
|
||||
var oBreakDiv = targetElement.ownerDocument.createElement( 'div' ) ;
|
||||
|
||||
oBreakDiv.style.clear = oBreakDiv.style.cssFloat = FCKLang.Dir == 'rtl' ? 'right' : 'left' ;
|
||||
|
||||
targetElement.appendChild( oBreakDiv ) ;
|
||||
}
|
@ -1,38 +0,0 @@
|
||||
/*
|
||||
* 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 ==
|
||||
*
|
||||
* FCKToolbarBreak Class: breaks the toolbars.
|
||||
* It makes it possible to force the toolbar to brak to a new line.
|
||||
* This is the IE specific implementation.
|
||||
*/
|
||||
|
||||
var FCKToolbarBreak = function()
|
||||
{}
|
||||
|
||||
FCKToolbarBreak.prototype.Create = function( targetElement )
|
||||
{
|
||||
var oBreakDiv = FCKTools.GetElementDocument( targetElement ).createElement( 'div' ) ;
|
||||
|
||||
oBreakDiv.className = 'TB_Break' ;
|
||||
|
||||
oBreakDiv.style.clear = FCKLang.Dir == 'rtl' ? 'left' : 'right' ;
|
||||
|
||||
targetElement.appendChild( oBreakDiv ) ;
|
||||
}
|
@ -1,74 +0,0 @@
|
||||
/*
|
||||
* 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 ==
|
||||
*
|
||||
* FCKToolbarButton Class: represents a button in the toolbar.
|
||||
*/
|
||||
|
||||
var FCKToolbarButton = function( commandName, label, tooltip, style, sourceView, contextSensitive, icon )
|
||||
{
|
||||
this.CommandName = commandName ;
|
||||
this.Label = label ;
|
||||
this.Tooltip = tooltip ;
|
||||
this.Style = style ;
|
||||
this.SourceView = sourceView ? true : false ;
|
||||
this.ContextSensitive = contextSensitive ? true : false ;
|
||||
|
||||
if ( icon == null )
|
||||
this.IconPath = FCKConfig.SkinPath + 'toolbar/' + commandName.toLowerCase() + '.gif' ;
|
||||
else if ( typeof( icon ) == 'number' )
|
||||
this.IconPath = [ FCKConfig.SkinPath + 'fck_strip.gif', 16, icon ] ;
|
||||
}
|
||||
|
||||
FCKToolbarButton.prototype.Create = function( targetElement )
|
||||
{
|
||||
this._UIButton = new FCKToolbarButtonUI( this.CommandName, this.Label, this.Tooltip, this.IconPath, this.Style ) ;
|
||||
this._UIButton.OnClick = this.Click ;
|
||||
this._UIButton._ToolbarButton = this ;
|
||||
this._UIButton.Create( targetElement ) ;
|
||||
}
|
||||
|
||||
FCKToolbarButton.prototype.RefreshState = function()
|
||||
{
|
||||
// Gets the actual state.
|
||||
var eState = FCK.ToolbarSet.CurrentInstance.Commands.GetCommand( this.CommandName ).GetState() ;
|
||||
|
||||
// If there are no state changes than do nothing and return.
|
||||
if ( eState == this._UIButton.State ) return ;
|
||||
|
||||
// Sets the actual state.
|
||||
this._UIButton.ChangeState( eState ) ;
|
||||
}
|
||||
|
||||
FCKToolbarButton.prototype.Click = function()
|
||||
{
|
||||
var oToolbarButton = this._ToolbarButton || this ;
|
||||
FCK.ToolbarSet.CurrentInstance.Commands.GetCommand( oToolbarButton.CommandName ).Execute() ;
|
||||
}
|
||||
|
||||
FCKToolbarButton.prototype.Enable = function()
|
||||
{
|
||||
this.RefreshState() ;
|
||||
}
|
||||
|
||||
FCKToolbarButton.prototype.Disable = function()
|
||||
{
|
||||
// Sets the actual state.
|
||||
this._UIButton.ChangeState( FCK_TRISTATE_DISABLED ) ;
|
||||
}
|
@ -1,222 +0,0 @@
|
||||
/*
|
||||
* 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 ==
|
||||
*
|
||||
* FCKToolbarButtonUI Class: interface representation of a toolbar button.
|
||||
*/
|
||||
|
||||
var FCKToolbarButtonUI = function( name, label, tooltip, iconPathOrStripInfoArray, style, state )
|
||||
{
|
||||
this.Name = name ;
|
||||
this.Label = label || name ;
|
||||
this.Tooltip = tooltip || this.Label ;
|
||||
this.Style = style || FCK_TOOLBARITEM_ONLYICON ;
|
||||
this.State = state || FCK_TRISTATE_OFF ;
|
||||
|
||||
this.Icon = new FCKIcon( iconPathOrStripInfoArray ) ;
|
||||
|
||||
if ( FCK.IECleanup )
|
||||
FCK.IECleanup.AddItem( this, FCKToolbarButtonUI_Cleanup ) ;
|
||||
}
|
||||
|
||||
|
||||
FCKToolbarButtonUI.prototype._CreatePaddingElement = function( document )
|
||||
{
|
||||
var oImg = document.createElement( 'IMG' ) ;
|
||||
oImg.className = 'TB_Button_Padding' ;
|
||||
oImg.src = FCK_SPACER_PATH ;
|
||||
return oImg ;
|
||||
}
|
||||
|
||||
FCKToolbarButtonUI.prototype.Create = function( parentElement )
|
||||
{
|
||||
var oMainElement = this.MainElement ;
|
||||
|
||||
if ( oMainElement )
|
||||
{
|
||||
FCKToolbarButtonUI_Cleanup.call(this) ;
|
||||
|
||||
if ( oMainElement.parentNode )
|
||||
oMainElement.parentNode.removeChild( oMainElement ) ;
|
||||
oMainElement = this.MainElement = null ;
|
||||
}
|
||||
|
||||
var oDoc = FCKTools.GetElementDocument( parentElement ) ;
|
||||
|
||||
// Create the Main Element.
|
||||
oMainElement = this.MainElement = oDoc.createElement( 'DIV' ) ;
|
||||
oMainElement._FCKButton = this ; // IE Memory Leak (Circular reference).
|
||||
oMainElement.title = this.Tooltip ;
|
||||
|
||||
// The following will prevent the button from catching the focus.
|
||||
if ( FCKBrowserInfo.IsGecko )
|
||||
oMainElement.onmousedown = FCKTools.CancelEvent ;
|
||||
|
||||
this.ChangeState( this.State, true ) ;
|
||||
|
||||
if ( this.Style == FCK_TOOLBARITEM_ONLYICON && !this.ShowArrow )
|
||||
{
|
||||
// <td><div class="TB_Button_On" title="Smiley">{Image}</div></td>
|
||||
|
||||
oMainElement.appendChild( this.Icon.CreateIconElement( oDoc ) ) ;
|
||||
}
|
||||
else
|
||||
{
|
||||
// <td><div class="TB_Button_On" title="Smiley"><table cellpadding="0" cellspacing="0"><tr><td>{Image}</td><td nowrap>Toolbar Button</td><td><img class="TB_Button_Padding"></td></tr></table></div></td>
|
||||
// <td><div class="TB_Button_On" title="Smiley"><table cellpadding="0" cellspacing="0"><tr><td><img class="TB_Button_Padding"></td><td nowrap>Toolbar Button</td><td><img class="TB_Button_Padding"></td></tr></table></div></td>
|
||||
|
||||
var oTable = oMainElement.appendChild( oDoc.createElement( 'TABLE' ) ) ;
|
||||
oTable.cellPadding = 0 ;
|
||||
oTable.cellSpacing = 0 ;
|
||||
|
||||
var oRow = oTable.insertRow(-1) ;
|
||||
|
||||
// The Image cell (icon or padding).
|
||||
var oCell = oRow.insertCell(-1) ;
|
||||
|
||||
if ( this.Style == FCK_TOOLBARITEM_ONLYICON || this.Style == FCK_TOOLBARITEM_ICONTEXT )
|
||||
oCell.appendChild( this.Icon.CreateIconElement( oDoc ) ) ;
|
||||
else
|
||||
oCell.appendChild( this._CreatePaddingElement( oDoc ) ) ;
|
||||
|
||||
if ( this.Style == FCK_TOOLBARITEM_ONLYTEXT || this.Style == FCK_TOOLBARITEM_ICONTEXT )
|
||||
{
|
||||
// The Text cell.
|
||||
oCell = oRow.insertCell(-1) ;
|
||||
oCell.className = 'TB_Button_Text' ;
|
||||
oCell.noWrap = true ;
|
||||
oCell.appendChild( oDoc.createTextNode( this.Label ) ) ;
|
||||
}
|
||||
|
||||
if ( this.ShowArrow )
|
||||
{
|
||||
if ( this.Style != FCK_TOOLBARITEM_ONLYICON )
|
||||
{
|
||||
// A padding cell.
|
||||
oRow.insertCell(-1).appendChild( this._CreatePaddingElement( oDoc ) ) ;
|
||||
}
|
||||
|
||||
oCell = oRow.insertCell(-1) ;
|
||||
var eImg = oCell.appendChild( oDoc.createElement( 'IMG' ) ) ;
|
||||
eImg.src = FCKConfig.SkinPath + 'images/toolbar.buttonarrow.gif' ;
|
||||
eImg.width = 5 ;
|
||||
eImg.height = 3 ;
|
||||
}
|
||||
|
||||
// The last padding cell.
|
||||
oCell = oRow.insertCell(-1) ;
|
||||
oCell.appendChild( this._CreatePaddingElement( oDoc ) ) ;
|
||||
}
|
||||
|
||||
parentElement.appendChild( oMainElement ) ;
|
||||
}
|
||||
|
||||
FCKToolbarButtonUI.prototype.ChangeState = function( newState, force )
|
||||
{
|
||||
if ( !force && this.State == newState )
|
||||
return ;
|
||||
|
||||
var e = this.MainElement ;
|
||||
|
||||
switch ( parseInt( newState, 10 ) )
|
||||
{
|
||||
case FCK_TRISTATE_OFF :
|
||||
e.className = 'TB_Button_Off' ;
|
||||
e.onmouseover = FCKToolbarButton_OnMouseOverOff ;
|
||||
e.onmouseout = FCKToolbarButton_OnMouseOutOff ;
|
||||
e.onclick = FCKToolbarButton_OnClick ;
|
||||
|
||||
break ;
|
||||
|
||||
case FCK_TRISTATE_ON :
|
||||
e.className = 'TB_Button_On' ;
|
||||
e.onmouseover = FCKToolbarButton_OnMouseOverOn ;
|
||||
e.onmouseout = FCKToolbarButton_OnMouseOutOn ;
|
||||
e.onclick = FCKToolbarButton_OnClick ;
|
||||
|
||||
break ;
|
||||
|
||||
case FCK_TRISTATE_DISABLED :
|
||||
e.className = 'TB_Button_Disabled' ;
|
||||
e.onmouseover = null ;
|
||||
e.onmouseout = null ;
|
||||
e.onclick = null ;
|
||||
|
||||
break ;
|
||||
}
|
||||
|
||||
this.State = newState ;
|
||||
}
|
||||
|
||||
function FCKToolbarButtonUI_Cleanup()
|
||||
{
|
||||
if ( this.MainElement )
|
||||
{
|
||||
this.MainElement._FCKButton = null ;
|
||||
this.MainElement = null ;
|
||||
}
|
||||
}
|
||||
|
||||
// Event Handlers.
|
||||
|
||||
function FCKToolbarButton_OnMouseOverOn()
|
||||
{
|
||||
this.className = 'TB_Button_On_Over' ;
|
||||
}
|
||||
|
||||
function FCKToolbarButton_OnMouseOutOn()
|
||||
{
|
||||
this.className = 'TB_Button_On' ;
|
||||
}
|
||||
|
||||
function FCKToolbarButton_OnMouseOverOff()
|
||||
{
|
||||
this.className = 'TB_Button_Off_Over' ;
|
||||
}
|
||||
|
||||
function FCKToolbarButton_OnMouseOutOff()
|
||||
{
|
||||
this.className = 'TB_Button_Off' ;
|
||||
}
|
||||
|
||||
function FCKToolbarButton_OnClick( e )
|
||||
{
|
||||
if ( this._FCKButton.OnClick )
|
||||
this._FCKButton.OnClick( this._FCKButton ) ;
|
||||
}
|
||||
|
||||
/*
|
||||
Sample outputs:
|
||||
|
||||
This is the base structure. The variation is the image that is marked as {Image}:
|
||||
<td><div class="TB_Button_On" title="Smiley">{Image}</div></td>
|
||||
<td><div class="TB_Button_On" title="Smiley"><table cellpadding="0" cellspacing="0"><tr><td>{Image}</td><td nowrap>Toolbar Button</td><td><img class="TB_Button_Padding"></td></tr></table></div></td>
|
||||
<td><div class="TB_Button_On" title="Smiley"><table cellpadding="0" cellspacing="0"><tr><td><img class="TB_Button_Padding"></td><td nowrap>Toolbar Button</td><td><img class="TB_Button_Padding"></td></tr></table></div></td>
|
||||
|
||||
These are samples of possible {Image} values:
|
||||
|
||||
Strip - IE version:
|
||||
<div class="TB_Button_Image"><img src="strip.gif" style="top:-16px"></div>
|
||||
|
||||
Strip : Firefox, Safari and Opera version
|
||||
<img class="TB_Button_Image" style="background-position: 0px -16px;background-image: url(strip.gif);">
|
||||
|
||||
No-Strip : Browser independent:
|
||||
<img class="TB_Button_Image" src="smiley.gif">
|
||||
*/
|
@ -1,114 +0,0 @@
|
||||
/*
|
||||
* 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 ==
|
||||
*
|
||||
* FCKToolbarPanelButton Class: Handles the Fonts combo selector.
|
||||
*/
|
||||
|
||||
var FCKToolbarFontFormatCombo = function( tooltip, style )
|
||||
{
|
||||
this.CommandName = 'FontFormat' ;
|
||||
this.Label = this.GetLabel() ;
|
||||
this.Tooltip = tooltip ? tooltip : this.Label ;
|
||||
this.Style = style ? style : FCK_TOOLBARITEM_ICONTEXT ;
|
||||
|
||||
this.NormalLabel = 'Normal' ;
|
||||
|
||||
this.PanelWidth = 190 ;
|
||||
}
|
||||
|
||||
// Inherit from FCKToolbarSpecialCombo.
|
||||
FCKToolbarFontFormatCombo.prototype = new FCKToolbarSpecialCombo ;
|
||||
|
||||
|
||||
FCKToolbarFontFormatCombo.prototype.GetLabel = function()
|
||||
{
|
||||
return FCKLang.FontFormat ;
|
||||
}
|
||||
|
||||
FCKToolbarFontFormatCombo.prototype.CreateItems = function( targetSpecialCombo )
|
||||
{
|
||||
var oTargetDoc = targetSpecialCombo._Panel.Document ;
|
||||
|
||||
// Add the Editor Area CSS to the panel to create a realistic preview.
|
||||
FCKTools.AppendStyleSheet( oTargetDoc, FCKConfig.ToolbarComboPreviewCSS ) ;
|
||||
|
||||
// Add ID and Class to the body
|
||||
if ( FCKConfig.BodyId && FCKConfig.BodyId.length > 0 )
|
||||
oTargetDoc.body.id = FCKConfig.BodyId ;
|
||||
if ( FCKConfig.BodyClass && FCKConfig.BodyClass.length > 0 )
|
||||
oTargetDoc.body.className += ' ' + FCKConfig.BodyClass ;
|
||||
|
||||
// Get the format names from the language file.
|
||||
var aNames = FCKLang['FontFormats'].split(';') ;
|
||||
var oNames = {
|
||||
p : aNames[0],
|
||||
pre : aNames[1],
|
||||
address : aNames[2],
|
||||
h1 : aNames[3],
|
||||
h2 : aNames[4],
|
||||
h3 : aNames[5],
|
||||
h4 : aNames[6],
|
||||
h5 : aNames[7],
|
||||
h6 : aNames[8],
|
||||
div : aNames[9]
|
||||
} ;
|
||||
|
||||
// Get the available formats from the configuration file.
|
||||
var aTags = FCKConfig.FontFormats.split(';') ;
|
||||
|
||||
for ( var i = 0 ; i < aTags.length ; i++ )
|
||||
{
|
||||
// Support for DIV in Firefox has been reintroduced on version 2.2.
|
||||
// if ( aTags[i] == 'div' && FCKBrowserInfo.IsGecko )
|
||||
// continue ;
|
||||
|
||||
var sTag = aTags[i] ;
|
||||
var sLabel = oNames[sTag] ;
|
||||
|
||||
if ( sTag == 'p' )
|
||||
this.NormalLabel = sLabel ;
|
||||
|
||||
this._Combo.AddItem( sTag, '<div class="BaseFont"><' + sTag + '>' + sLabel + '</' + sTag + '></div>', sLabel ) ;
|
||||
}
|
||||
}
|
||||
|
||||
if ( FCKBrowserInfo.IsIE )
|
||||
{
|
||||
FCKToolbarFontFormatCombo.prototype.RefreshActiveItems = function( combo, value )
|
||||
{
|
||||
// FCKDebug.Output( 'FCKToolbarFontFormatCombo Value: ' + value ) ;
|
||||
|
||||
// IE returns normal for DIV and P, so to avoid confusion, we will not show it if normal.
|
||||
if ( value == this.NormalLabel )
|
||||
{
|
||||
if ( combo.Label != ' ' )
|
||||
combo.DeselectAll(true) ;
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( this._LastValue == value )
|
||||
return ;
|
||||
|
||||
combo.SelectItemByLabel( value, true ) ;
|
||||
}
|
||||
|
||||
this._LastValue = value ;
|
||||
}
|
||||
}
|
@ -1,47 +0,0 @@
|
||||
/*
|
||||
* 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 ==
|
||||
*
|
||||
* FCKToolbarPanelButton Class: Handles the Fonts combo selector.
|
||||
*/
|
||||
|
||||
var FCKToolbarFontsCombo = function( tooltip, style )
|
||||
{
|
||||
this.CommandName = 'FontName' ;
|
||||
this.Label = this.GetLabel() ;
|
||||
this.Tooltip = tooltip ? tooltip : this.Label ;
|
||||
this.Style = style ? style : FCK_TOOLBARITEM_ICONTEXT ;
|
||||
}
|
||||
|
||||
// Inherit from FCKToolbarSpecialCombo.
|
||||
FCKToolbarFontsCombo.prototype = new FCKToolbarSpecialCombo ;
|
||||
|
||||
|
||||
FCKToolbarFontsCombo.prototype.GetLabel = function()
|
||||
{
|
||||
return FCKLang.Font ;
|
||||
}
|
||||
|
||||
FCKToolbarFontsCombo.prototype.CreateItems = function( targetSpecialCombo )
|
||||
{
|
||||
var aFonts = FCKConfig.FontNames.split(';') ;
|
||||
|
||||
for ( var i = 0 ; i < aFonts.length ; i++ )
|
||||
this._Combo.AddItem( aFonts[i], '<font face="' + aFonts[i] + '" style="font-size: 12px">' + aFonts[i] + '</font>' ) ;
|
||||
}
|
@ -1,52 +0,0 @@
|
||||
/*
|
||||
* 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 ==
|
||||
*
|
||||
* FCKToolbarPanelButton Class: Handles the Fonts combo selector.
|
||||
*/
|
||||
|
||||
var FCKToolbarFontSizeCombo = function( tooltip, style )
|
||||
{
|
||||
this.CommandName = 'FontSize' ;
|
||||
this.Label = this.GetLabel() ;
|
||||
this.Tooltip = tooltip ? tooltip : this.Label ;
|
||||
this.Style = style ? style : FCK_TOOLBARITEM_ICONTEXT ;
|
||||
}
|
||||
|
||||
// Inherit from FCKToolbarSpecialCombo.
|
||||
FCKToolbarFontSizeCombo.prototype = new FCKToolbarSpecialCombo ;
|
||||
|
||||
|
||||
FCKToolbarFontSizeCombo.prototype.GetLabel = function()
|
||||
{
|
||||
return FCKLang.FontSize ;
|
||||
}
|
||||
|
||||
FCKToolbarFontSizeCombo.prototype.CreateItems = function( targetSpecialCombo )
|
||||
{
|
||||
targetSpecialCombo.FieldWidth = 70 ;
|
||||
|
||||
var aSizes = FCKConfig.FontSizes.split(';') ;
|
||||
|
||||
for ( var i = 0 ; i < aSizes.length ; i++ )
|
||||
{
|
||||
var aSizeParts = aSizes[i].split('/') ;
|
||||
this._Combo.AddItem( aSizeParts[0], '<font size="' + aSizeParts[0] + '">' + aSizeParts[1] + '</font>', aSizeParts[1] ) ;
|
||||
}
|
||||
}
|
@ -1,91 +0,0 @@
|
||||
/*
|
||||
* 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 ==
|
||||
*
|
||||
* FCKToolbarPanelButton Class: represents a special button in the toolbar
|
||||
* that shows a panel when pressed.
|
||||
*/
|
||||
|
||||
var FCKToolbarPanelButton = function( commandName, label, tooltip, style, icon )
|
||||
{
|
||||
this.CommandName = commandName ;
|
||||
|
||||
var oIcon ;
|
||||
|
||||
if ( icon == null )
|
||||
oIcon = FCKConfig.SkinPath + 'toolbar/' + commandName.toLowerCase() + '.gif' ;
|
||||
else if ( typeof( icon ) == 'number' )
|
||||
oIcon = [ FCKConfig.SkinPath + 'fck_strip.gif', 16, icon ] ;
|
||||
|
||||
var oUIButton = this._UIButton = new FCKToolbarButtonUI( commandName, label, tooltip, oIcon, style ) ;
|
||||
oUIButton._FCKToolbarPanelButton = this ;
|
||||
oUIButton.ShowArrow = true ;
|
||||
oUIButton.OnClick = FCKToolbarPanelButton_OnButtonClick ;
|
||||
}
|
||||
|
||||
FCKToolbarPanelButton.prototype.TypeName = 'FCKToolbarPanelButton' ;
|
||||
|
||||
FCKToolbarPanelButton.prototype.Create = function( parentElement )
|
||||
{
|
||||
parentElement.className += 'Menu' ;
|
||||
|
||||
this._UIButton.Create( parentElement ) ;
|
||||
|
||||
var oPanel = FCK.ToolbarSet.CurrentInstance.Commands.GetCommand( this.CommandName )._Panel ;
|
||||
oPanel._FCKToolbarPanelButton = this ;
|
||||
|
||||
var eLineDiv = oPanel.Document.body.appendChild( oPanel.Document.createElement( 'div' ) ) ;
|
||||
eLineDiv.style.position = 'absolute' ;
|
||||
eLineDiv.style.top = '0px' ;
|
||||
|
||||
var eLine = this.LineImg = eLineDiv.appendChild( oPanel.Document.createElement( 'IMG' ) ) ;
|
||||
eLine.className = 'TB_ConnectionLine' ;
|
||||
// eLine.style.backgroundColor = 'Red' ;
|
||||
eLine.src = FCK_SPACER_PATH ;
|
||||
|
||||
oPanel.OnHide = FCKToolbarPanelButton_OnPanelHide ;
|
||||
}
|
||||
|
||||
/*
|
||||
Events
|
||||
*/
|
||||
|
||||
function FCKToolbarPanelButton_OnButtonClick( toolbarButton )
|
||||
{
|
||||
var oButton = this._FCKToolbarPanelButton ;
|
||||
var e = oButton._UIButton.MainElement ;
|
||||
|
||||
oButton._UIButton.ChangeState( FCK_TRISTATE_ON ) ;
|
||||
|
||||
oButton.LineImg.style.width = ( e.offsetWidth - 2 ) + 'px' ;
|
||||
|
||||
FCK.ToolbarSet.CurrentInstance.Commands.GetCommand( oButton.CommandName ).Execute( 0, e.offsetHeight - 1, e ) ; // -1 to be over the border
|
||||
}
|
||||
|
||||
function FCKToolbarPanelButton_OnPanelHide()
|
||||
{
|
||||
var oMenuButton = this._FCKToolbarPanelButton ;
|
||||
oMenuButton._UIButton.ChangeState( FCK_TRISTATE_OFF ) ;
|
||||
}
|
||||
|
||||
// The Panel Button works like a normal button so the refresh state functions
|
||||
// defined for the normal button can be reused here.
|
||||
FCKToolbarPanelButton.prototype.RefreshState = FCKToolbarButton.prototype.RefreshState ;
|
||||
FCKToolbarPanelButton.prototype.Enable = FCKToolbarButton.prototype.Enable ;
|
||||
FCKToolbarPanelButton.prototype.Disable = FCKToolbarButton.prototype.Disable ;
|
@ -1,134 +0,0 @@
|
||||
/*
|
||||
* 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 ==
|
||||
*
|
||||
* FCKToolbarSpecialCombo Class: This is a "abstract" base class to be used
|
||||
* by the special combo toolbar elements like font name, font size, paragraph format, etc...
|
||||
*
|
||||
* The following properties and methods must be implemented when inheriting from
|
||||
* this class:
|
||||
* - Property: CommandName [ The command name to be executed ]
|
||||
* - Method: GetLabel() [ Returns the label ]
|
||||
* - CreateItems( targetSpecialCombo ) [ Add all items in the special combo ]
|
||||
*/
|
||||
|
||||
var FCKToolbarSpecialCombo = function()
|
||||
{
|
||||
this.SourceView = false ;
|
||||
this.ContextSensitive = true ;
|
||||
this._LastValue = null ;
|
||||
}
|
||||
|
||||
|
||||
function FCKToolbarSpecialCombo_OnSelect( itemId, item )
|
||||
{
|
||||
FCK.ToolbarSet.CurrentInstance.Commands.GetCommand( this.CommandName ).Execute( itemId, item ) ;
|
||||
}
|
||||
|
||||
FCKToolbarSpecialCombo.prototype.Create = function( targetElement )
|
||||
{
|
||||
this._Combo = new FCKSpecialCombo( this.GetLabel(), this.FieldWidth, this.PanelWidth, this.PanelMaxHeight, FCKBrowserInfo.IsIE ? window : FCKTools.GetElementWindow( targetElement ).parent ) ;
|
||||
|
||||
/*
|
||||
this._Combo.FieldWidth = this.FieldWidth != null ? this.FieldWidth : 100 ;
|
||||
this._Combo.PanelWidth = this.PanelWidth != null ? this.PanelWidth : 150 ;
|
||||
this._Combo.PanelMaxHeight = this.PanelMaxHeight != null ? this.PanelMaxHeight : 150 ;
|
||||
*/
|
||||
|
||||
//this._Combo.Command.Name = this.Command.Name;
|
||||
// this._Combo.Label = this.Label ;
|
||||
this._Combo.Tooltip = this.Tooltip ;
|
||||
this._Combo.Style = this.Style ;
|
||||
|
||||
this.CreateItems( this._Combo ) ;
|
||||
|
||||
this._Combo.Create( targetElement ) ;
|
||||
|
||||
this._Combo.CommandName = this.CommandName ;
|
||||
|
||||
this._Combo.OnSelect = FCKToolbarSpecialCombo_OnSelect ;
|
||||
}
|
||||
|
||||
function FCKToolbarSpecialCombo_RefreshActiveItems( combo, value )
|
||||
{
|
||||
combo.DeselectAll() ;
|
||||
combo.SelectItem( value ) ;
|
||||
combo.SetLabelById( value ) ;
|
||||
}
|
||||
|
||||
FCKToolbarSpecialCombo.prototype.RefreshState = function()
|
||||
{
|
||||
// Gets the actual state.
|
||||
var eState ;
|
||||
|
||||
// if ( FCK.EditMode == FCK_EDITMODE_SOURCE && ! this.SourceView )
|
||||
// eState = FCK_TRISTATE_DISABLED ;
|
||||
// else
|
||||
// {
|
||||
var sValue = FCK.ToolbarSet.CurrentInstance.Commands.GetCommand( this.CommandName ).GetState() ;
|
||||
|
||||
// FCKDebug.Output( 'RefreshState of Special Combo "' + this.TypeOf + '" - State: ' + sValue ) ;
|
||||
|
||||
if ( sValue != FCK_TRISTATE_DISABLED )
|
||||
{
|
||||
eState = FCK_TRISTATE_ON ;
|
||||
|
||||
if ( this.RefreshActiveItems )
|
||||
this.RefreshActiveItems( this._Combo, sValue ) ;
|
||||
else
|
||||
{
|
||||
if ( this._LastValue != sValue )
|
||||
{
|
||||
this._LastValue = sValue ;
|
||||
FCKToolbarSpecialCombo_RefreshActiveItems( this._Combo, sValue ) ;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
eState = FCK_TRISTATE_DISABLED ;
|
||||
// }
|
||||
|
||||
// If there are no state changes then do nothing and return.
|
||||
if ( eState == this.State ) return ;
|
||||
|
||||
if ( eState == FCK_TRISTATE_DISABLED )
|
||||
{
|
||||
this._Combo.DeselectAll() ;
|
||||
this._Combo.SetLabel( '' ) ;
|
||||
}
|
||||
|
||||
// Sets the actual state.
|
||||
this.State = eState ;
|
||||
|
||||
// Updates the graphical state.
|
||||
this._Combo.SetEnabled( eState != FCK_TRISTATE_DISABLED ) ;
|
||||
}
|
||||
|
||||
FCKToolbarSpecialCombo.prototype.Enable = function()
|
||||
{
|
||||
this.RefreshState() ;
|
||||
}
|
||||
|
||||
FCKToolbarSpecialCombo.prototype.Disable = function()
|
||||
{
|
||||
this.State = FCK_TRISTATE_DISABLED ;
|
||||
this._Combo.DeselectAll() ;
|
||||
this._Combo.SetLabel( '' ) ;
|
||||
this._Combo.SetEnabled( false ) ;
|
||||
}
|
@ -1,111 +0,0 @@
|
||||
/*
|
||||
* 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 ==
|
||||
*
|
||||
* FCKToolbarPanelButton Class: Handles the Fonts combo selector.
|
||||
*/
|
||||
|
||||
var FCKToolbarStyleCombo = function( tooltip, style )
|
||||
{
|
||||
this.CommandName = 'Style' ;
|
||||
this.Label = this.GetLabel() ;
|
||||
this.Tooltip = tooltip ? tooltip : this.Label ;
|
||||
this.Style = style ? style : FCK_TOOLBARITEM_ICONTEXT ;
|
||||
}
|
||||
|
||||
// Inherit from FCKToolbarSpecialCombo.
|
||||
FCKToolbarStyleCombo.prototype = new FCKToolbarSpecialCombo ;
|
||||
|
||||
|
||||
FCKToolbarStyleCombo.prototype.GetLabel = function()
|
||||
{
|
||||
return FCKLang.Style ;
|
||||
}
|
||||
|
||||
FCKToolbarStyleCombo.prototype.CreateItems = function( targetSpecialCombo )
|
||||
{
|
||||
var oTargetDoc = targetSpecialCombo._Panel.Document ;
|
||||
|
||||
// Add the Editor Area CSS to the panel so the style classes are previewed correctly.
|
||||
FCKTools.AppendStyleSheet( oTargetDoc, FCKConfig.ToolbarComboPreviewCSS ) ;
|
||||
oTargetDoc.body.className += ' ForceBaseFont' ;
|
||||
|
||||
// Add ID and Class to the body
|
||||
if ( FCKConfig.BodyId && FCKConfig.BodyId.length > 0 )
|
||||
oTargetDoc.body.id = FCKConfig.BodyId ;
|
||||
if ( FCKConfig.BodyClass && FCKConfig.BodyClass.length > 0 )
|
||||
oTargetDoc.body.className += ' ' + FCKConfig.BodyClass ;
|
||||
|
||||
|
||||
// For some reason Gecko is blocking inside the "RefreshVisibleItems" function.
|
||||
// The problem is present only in old versions
|
||||
if ( !( FCKBrowserInfo.IsGecko && FCKBrowserInfo.IsGecko10 ) )
|
||||
targetSpecialCombo.OnBeforeClick = this.RefreshVisibleItems ;
|
||||
|
||||
// Add the styles to the special combo.
|
||||
var aCommandStyles = FCK.ToolbarSet.CurrentInstance.Commands.GetCommand( this.CommandName ).Styles ;
|
||||
for ( var s in aCommandStyles )
|
||||
{
|
||||
var oStyle = aCommandStyles[s] ;
|
||||
var oItem ;
|
||||
|
||||
if ( oStyle.IsObjectElement )
|
||||
oItem = targetSpecialCombo.AddItem( s, s ) ;
|
||||
else
|
||||
oItem = targetSpecialCombo.AddItem( s, oStyle.GetOpenerTag() + s + oStyle.GetCloserTag() ) ;
|
||||
|
||||
oItem.Style = oStyle ;
|
||||
}
|
||||
}
|
||||
|
||||
FCKToolbarStyleCombo.prototype.RefreshActiveItems = function( targetSpecialCombo )
|
||||
{
|
||||
// Clear the actual selection.
|
||||
targetSpecialCombo.DeselectAll() ;
|
||||
|
||||
// Get the active styles.
|
||||
var aStyles = FCK.ToolbarSet.CurrentInstance.Commands.GetCommand( this.CommandName ).GetActiveStyles() ;
|
||||
|
||||
if ( aStyles.length > 0 )
|
||||
{
|
||||
// Select the active styles in the combo.
|
||||
for ( var i = 0 ; i < aStyles.length ; i++ )
|
||||
targetSpecialCombo.SelectItem( aStyles[i].Name ) ;
|
||||
|
||||
// Set the combo label to the first style in the collection.
|
||||
targetSpecialCombo.SetLabelById( aStyles[0].Name ) ;
|
||||
}
|
||||
else
|
||||
targetSpecialCombo.SetLabel('') ;
|
||||
}
|
||||
|
||||
FCKToolbarStyleCombo.prototype.RefreshVisibleItems = function( targetSpecialCombo )
|
||||
{
|
||||
if ( FCKSelection.GetType() == 'Control' )
|
||||
var sTagName = FCKSelection.GetSelectedElement().tagName ;
|
||||
|
||||
for ( var i in targetSpecialCombo.Items )
|
||||
{
|
||||
var oItem = targetSpecialCombo.Items[i] ;
|
||||
if ( ( sTagName && oItem.Style.Element == sTagName ) || ( ! sTagName && ! oItem.Style.IsObjectElement ) )
|
||||
oItem.style.display = '' ;
|
||||
else
|
||||
oItem.style.display = 'none' ; // For some reason Gecko is blocking here.
|
||||
}
|
||||
}
|
@ -1,448 +0,0 @@
|
||||
/*
|
||||
* 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 class partially implements the W3C DOM Range for browser that don't
|
||||
* support the standards (like IE):
|
||||
* http://www.w3.org/TR/DOM-Level-2-Traversal-Range/ranges.html
|
||||
*/
|
||||
|
||||
var FCKW3CRange = function( parentDocument )
|
||||
{
|
||||
this._Document = parentDocument ;
|
||||
|
||||
this.startContainer = null ;
|
||||
this.startOffset = null ;
|
||||
this.endContainer = null ;
|
||||
this.endOffset = null ;
|
||||
this.collapsed = true ;
|
||||
}
|
||||
|
||||
FCKW3CRange.CreateRange = function( parentDocument )
|
||||
{
|
||||
// We could opt to use the Range implentation of the browsers. The problem
|
||||
// is that every browser have different bugs on their implementations,
|
||||
// mostly related to different interpretations of the W3C specifications.
|
||||
// So, for now, let's use our implementation and pray for browsers fixings
|
||||
// soon. Otherwise will go crazy on trying to find out workarounds.
|
||||
/*
|
||||
// Get the browser implementation of the range, if available.
|
||||
if ( parentDocument.createRange )
|
||||
{
|
||||
var range = parentDocument.createRange() ;
|
||||
if ( typeof( range.startContainer ) != 'undefined' )
|
||||
return range ;
|
||||
}
|
||||
*/
|
||||
return new FCKW3CRange( parentDocument ) ;
|
||||
}
|
||||
|
||||
FCKW3CRange.CreateFromRange = function( parentDocument, sourceRange )
|
||||
{
|
||||
var range = FCKW3CRange.CreateRange( parentDocument ) ;
|
||||
range.setStart( sourceRange.startContainer, sourceRange.startOffset ) ;
|
||||
range.setEnd( sourceRange.endContainer, sourceRange.endOffset ) ;
|
||||
return range ;
|
||||
}
|
||||
|
||||
FCKW3CRange.prototype =
|
||||
{
|
||||
|
||||
_UpdateCollapsed : function()
|
||||
{
|
||||
this.collapsed = ( this.startContainer == this.endContainer && this.startOffset == this.endOffset ) ;
|
||||
},
|
||||
|
||||
// W3C requires a check for the new position. If it is after the end
|
||||
// boundary, the range should be collapsed to the new start. It seams we
|
||||
// will not need this check for our use of this class so we can ignore it for now.
|
||||
setStart : function( refNode, offset )
|
||||
{
|
||||
this.startContainer = refNode ;
|
||||
this.startOffset = offset ;
|
||||
|
||||
if ( !this.endContainer )
|
||||
{
|
||||
this.endContainer = refNode ;
|
||||
this.endOffset = offset ;
|
||||
}
|
||||
|
||||
this._UpdateCollapsed() ;
|
||||
},
|
||||
|
||||
// W3C requires a check for the new position. If it is before the start
|
||||
// boundary, the range should be collapsed to the new end. It seams we
|
||||
// will not need this check for our use of this class so we can ignore it for now.
|
||||
setEnd : function( refNode, offset )
|
||||
{
|
||||
this.endContainer = refNode ;
|
||||
this.endOffset = offset ;
|
||||
|
||||
if ( !this.startContainer )
|
||||
{
|
||||
this.startContainer = refNode ;
|
||||
this.startOffset = offset ;
|
||||
}
|
||||
|
||||
this._UpdateCollapsed() ;
|
||||
},
|
||||
|
||||
setStartAfter : function( refNode )
|
||||
{
|
||||
this.setStart( refNode.parentNode, FCKDomTools.GetIndexOf( refNode ) + 1 ) ;
|
||||
},
|
||||
|
||||
setStartBefore : function( refNode )
|
||||
{
|
||||
this.setStart( refNode.parentNode, FCKDomTools.GetIndexOf( refNode ) ) ;
|
||||
},
|
||||
|
||||
setEndAfter : function( refNode )
|
||||
{
|
||||
this.setEnd( refNode.parentNode, FCKDomTools.GetIndexOf( refNode ) + 1 ) ;
|
||||
},
|
||||
|
||||
setEndBefore : function( refNode )
|
||||
{
|
||||
this.setEnd( refNode.parentNode, FCKDomTools.GetIndexOf( refNode ) ) ;
|
||||
},
|
||||
|
||||
collapse : function( toStart )
|
||||
{
|
||||
if ( toStart )
|
||||
{
|
||||
this.endContainer = this.startContainer ;
|
||||
this.endOffset = this.startOffset ;
|
||||
}
|
||||
else
|
||||
{
|
||||
this.startContainer = this.endContainer ;
|
||||
this.startOffset = this.endOffset ;
|
||||
}
|
||||
|
||||
this.collapsed = true ;
|
||||
},
|
||||
|
||||
selectNodeContents : function( refNode )
|
||||
{
|
||||
this.setStart( refNode, 0 ) ;
|
||||
this.setEnd( refNode, refNode.nodeType == 3 ? refNode.data.length : refNode.childNodes.length ) ;
|
||||
},
|
||||
|
||||
insertNode : function( newNode )
|
||||
{
|
||||
var startContainer = this.startContainer ;
|
||||
var startOffset = this.startOffset ;
|
||||
|
||||
// If we are in a text node.
|
||||
if ( startContainer.nodeType == 3 )
|
||||
{
|
||||
startContainer.splitText( startOffset ) ;
|
||||
|
||||
// Check if it is necessary to update the end boundary.
|
||||
if ( startContainer == this.endContainer )
|
||||
this.setEnd( startContainer.nextSibling, this.endOffset - this.startOffset ) ;
|
||||
|
||||
// Insert the new node it after the text node.
|
||||
FCKDomTools.InsertAfterNode( startContainer, newNode ) ;
|
||||
|
||||
return ;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Simply insert the new node before the current start node.
|
||||
startContainer.insertBefore( newNode, startContainer.childNodes[ startOffset ] || null ) ;
|
||||
|
||||
// Check if it is necessary to update the end boundary.
|
||||
if ( startContainer == this.endContainer )
|
||||
{
|
||||
this.endOffset++ ;
|
||||
this.collapsed = false ;
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
deleteContents : function()
|
||||
{
|
||||
if ( this.collapsed )
|
||||
return ;
|
||||
|
||||
this._ExecContentsAction( 0 ) ;
|
||||
},
|
||||
|
||||
extractContents : function()
|
||||
{
|
||||
var docFrag = new FCKDocumentFragment( this._Document ) ;
|
||||
|
||||
if ( !this.collapsed )
|
||||
this._ExecContentsAction( 1, docFrag ) ;
|
||||
|
||||
return docFrag ;
|
||||
},
|
||||
|
||||
// The selection may be lost when clonning (due to the splitText() call).
|
||||
cloneContents : function()
|
||||
{
|
||||
var docFrag = new FCKDocumentFragment( this._Document ) ;
|
||||
|
||||
if ( !this.collapsed )
|
||||
this._ExecContentsAction( 2, docFrag ) ;
|
||||
|
||||
return docFrag ;
|
||||
},
|
||||
|
||||
_ExecContentsAction : function( action, docFrag )
|
||||
{
|
||||
var startNode = this.startContainer ;
|
||||
var endNode = this.endContainer ;
|
||||
|
||||
var startOffset = this.startOffset ;
|
||||
var endOffset = this.endOffset ;
|
||||
|
||||
var removeStartNode = false ;
|
||||
var removeEndNode = false ;
|
||||
|
||||
// Check the start and end nodes and make the necessary removals or changes.
|
||||
|
||||
// Start from the end, otherwise DOM mutations (splitText) made in the
|
||||
// start boundary may interfere on the results here.
|
||||
|
||||
// For text containers, we must simply split the node and point to the
|
||||
// second part. The removal will be handled by the rest of the code .
|
||||
if ( endNode.nodeType == 3 )
|
||||
endNode = endNode.splitText( endOffset ) ;
|
||||
else
|
||||
{
|
||||
// If the end container has children and the offset is pointing
|
||||
// to a child, then we should start from it.
|
||||
if ( endNode.childNodes.length > 0 )
|
||||
{
|
||||
// If the offset points after the last node.
|
||||
if ( endOffset > endNode.childNodes.length - 1 )
|
||||
{
|
||||
// Let's create a temporary node and mark it for removal.
|
||||
endNode = FCKDomTools.InsertAfterNode( endNode.lastChild, this._Document.createTextNode('') ) ;
|
||||
removeEndNode = true ;
|
||||
}
|
||||
else
|
||||
endNode = endNode.childNodes[ endOffset ] ;
|
||||
}
|
||||
}
|
||||
|
||||
// For text containers, we must simply split the node. The removal will
|
||||
// be handled by the rest of the code .
|
||||
if ( startNode.nodeType == 3 )
|
||||
{
|
||||
startNode.splitText( startOffset ) ;
|
||||
|
||||
// In cases the end node is the same as the start node, the above
|
||||
// splitting will also split the end, so me must move the end to
|
||||
// the second part of the split.
|
||||
if ( startNode == endNode )
|
||||
endNode = startNode.nextSibling ;
|
||||
}
|
||||
else
|
||||
{
|
||||
// If the start container has children and the offset is pointing
|
||||
// to a child, then we should start from its previous sibling.
|
||||
if ( startNode.childNodes.length > 0 && startOffset <= startNode.childNodes.length - 1 )
|
||||
{
|
||||
// If the offset points to the first node, we don't have a
|
||||
// sibling, so let's use the first one, but mark it for removal.
|
||||
if ( startOffset == 0 )
|
||||
{
|
||||
// Let's create a temporary node and mark it for removal.
|
||||
startNode = startNode.insertBefore( this._Document.createTextNode(''), startNode.firstChild ) ;
|
||||
removeStartNode = true ;
|
||||
}
|
||||
else
|
||||
startNode = startNode.childNodes[ startOffset ].previousSibling ;
|
||||
}
|
||||
}
|
||||
|
||||
// Get the parent nodes tree for the start and end boundaries.
|
||||
var startParents = FCKDomTools.GetParents( startNode ) ;
|
||||
var endParents = FCKDomTools.GetParents( endNode ) ;
|
||||
|
||||
// Compare them, to find the top most siblings.
|
||||
var i, topStart, topEnd ;
|
||||
|
||||
for ( i = 0 ; i < startParents.length ; i++ )
|
||||
{
|
||||
topStart = startParents[i] ;
|
||||
topEnd = endParents[i] ;
|
||||
|
||||
// The compared nodes will match until we find the top most
|
||||
// siblings (different nodes that have the same parent).
|
||||
// "i" will hold the index in the parants array for the top
|
||||
// most element.
|
||||
if ( topStart != topEnd )
|
||||
break ;
|
||||
}
|
||||
|
||||
var clone, levelStartNode, levelClone, currentNode, currentSibling ;
|
||||
|
||||
if ( docFrag )
|
||||
clone = docFrag.RootNode ;
|
||||
|
||||
// Remove all successive sibling nodes for every node in the
|
||||
// startParents tree.
|
||||
for ( var j = i ; j < startParents.length ; j++ )
|
||||
{
|
||||
levelStartNode = startParents[j] ;
|
||||
|
||||
// For Extract and Clone, we must clone this level.
|
||||
if ( clone && levelStartNode != startNode ) // action = 0 = Delete
|
||||
levelClone = clone.appendChild( levelStartNode.cloneNode( levelStartNode == startNode ) ) ;
|
||||
|
||||
currentNode = levelStartNode.nextSibling ;
|
||||
|
||||
while( currentNode )
|
||||
{
|
||||
// Stop processing when the current node matches a node in the
|
||||
// endParents tree or if it is the endNode.
|
||||
if ( currentNode == endParents[j] || currentNode == endNode )
|
||||
break ;
|
||||
|
||||
// Cache the next sibling.
|
||||
currentSibling = currentNode.nextSibling ;
|
||||
|
||||
// If clonning, just clone it.
|
||||
if ( action == 2 ) // 2 = Clone
|
||||
clone.appendChild( currentNode.cloneNode( true ) ) ;
|
||||
else
|
||||
{
|
||||
// Both Delete and Extract will remove the node.
|
||||
currentNode.parentNode.removeChild( currentNode ) ;
|
||||
|
||||
// When Extracting, move the removed node to the docFrag.
|
||||
if ( action == 1 ) // 1 = Extract
|
||||
clone.appendChild( currentNode ) ;
|
||||
}
|
||||
|
||||
currentNode = currentSibling ;
|
||||
}
|
||||
|
||||
if ( clone )
|
||||
clone = levelClone ;
|
||||
}
|
||||
|
||||
if ( docFrag )
|
||||
clone = docFrag.RootNode ;
|
||||
|
||||
// Remove all previous sibling nodes for every node in the
|
||||
// endParents tree.
|
||||
for ( var k = i ; k < endParents.length ; k++ )
|
||||
{
|
||||
levelStartNode = endParents[k] ;
|
||||
|
||||
// For Extract and Clone, we must clone this level.
|
||||
if ( action > 0 && levelStartNode != endNode ) // action = 0 = Delete
|
||||
levelClone = clone.appendChild( levelStartNode.cloneNode( levelStartNode == endNode ) ) ;
|
||||
|
||||
// The processing of siblings may have already been done by the parent.
|
||||
if ( !startParents[k] || levelStartNode.parentNode != startParents[k].parentNode )
|
||||
{
|
||||
currentNode = levelStartNode.previousSibling ;
|
||||
|
||||
while( currentNode )
|
||||
{
|
||||
// Stop processing when the current node matches a node in the
|
||||
// startParents tree or if it is the startNode.
|
||||
if ( currentNode == startParents[k] || currentNode == startNode )
|
||||
break ;
|
||||
|
||||
// Cache the next sibling.
|
||||
currentSibling = currentNode.previousSibling ;
|
||||
|
||||
// If clonning, just clone it.
|
||||
if ( action == 2 ) // 2 = Clone
|
||||
clone.insertBefore( currentNode.cloneNode( true ), clone.firstChild ) ;
|
||||
else
|
||||
{
|
||||
// Both Delete and Extract will remove the node.
|
||||
currentNode.parentNode.removeChild( currentNode ) ;
|
||||
|
||||
// When Extracting, mode the removed node to the docFrag.
|
||||
if ( action == 1 ) // 1 = Extract
|
||||
clone.insertBefore( currentNode, clone.firstChild ) ;
|
||||
}
|
||||
|
||||
currentNode = currentSibling ;
|
||||
}
|
||||
}
|
||||
|
||||
if ( clone )
|
||||
clone = levelClone ;
|
||||
}
|
||||
|
||||
if ( action == 2 ) // 2 = Clone.
|
||||
{
|
||||
// No changes in the DOM should be done, so fix the split text (if any).
|
||||
|
||||
var startTextNode = this.startContainer ;
|
||||
if ( startTextNode.nodeType == 3 )
|
||||
{
|
||||
startTextNode.data += startTextNode.nextSibling.data ;
|
||||
startTextNode.parentNode.removeChild( startTextNode.nextSibling ) ;
|
||||
}
|
||||
|
||||
var endTextNode = this.endContainer ;
|
||||
if ( endTextNode.nodeType == 3 && endTextNode.nextSibling )
|
||||
{
|
||||
endTextNode.data += endTextNode.nextSibling.data ;
|
||||
endTextNode.parentNode.removeChild( endTextNode.nextSibling ) ;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// Collapse the range.
|
||||
|
||||
// If a node has been partially selected, collapse the range between
|
||||
// topStart and topEnd. Otherwise, simply collapse it to the start. (W3C specs).
|
||||
if ( topStart && topEnd && ( startNode.parentNode != topStart.parentNode || endNode.parentNode != topEnd.parentNode ) )
|
||||
this.setStart( topEnd.parentNode, FCKDomTools.GetIndexOf( topEnd ) ) ;
|
||||
|
||||
// Collapse it to the start.
|
||||
this.collapse( true ) ;
|
||||
}
|
||||
|
||||
// Cleanup any marked node.
|
||||
if( removeStartNode )
|
||||
startNode.parentNode.removeChild( startNode ) ;
|
||||
|
||||
if( removeEndNode && endNode.parentNode )
|
||||
endNode.parentNode.removeChild( endNode ) ;
|
||||
},
|
||||
|
||||
cloneRange : function()
|
||||
{
|
||||
return FCKW3CRange.CreateFromRange( this._Document, this ) ;
|
||||
},
|
||||
|
||||
toString : function()
|
||||
{
|
||||
var docFrag = this.cloneContents() ;
|
||||
|
||||
var tmpDiv = this._Document.createElement( 'div' ) ;
|
||||
docFrag.AppendTo( tmpDiv ) ;
|
||||
|
||||
return tmpDiv.textContent || tmpDiv.innerText ;
|
||||
}
|
||||
} ;
|
@ -1,87 +0,0 @@
|
||||
/*
|
||||
* 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 ==
|
||||
*
|
||||
* FCKXml Class: class to load and manipulate XML files.
|
||||
*/
|
||||
|
||||
var FCKXml = function()
|
||||
{}
|
||||
|
||||
FCKXml.prototype.LoadUrl = function( urlToCall )
|
||||
{
|
||||
this.Error = false ;
|
||||
var oFCKXml = this ;
|
||||
|
||||
var oXmlHttp = FCKTools.CreateXmlObject( 'XmlHttp' ) ;
|
||||
oXmlHttp.open( "GET", urlToCall, false ) ;
|
||||
oXmlHttp.send( null ) ;
|
||||
|
||||
if ( oXmlHttp.status == 200 || oXmlHttp.status == 304 )
|
||||
this.DOMDocument = oXmlHttp.responseXML ;
|
||||
else if ( oXmlHttp.status == 0 && oXmlHttp.readyState == 4 )
|
||||
this.DOMDocument = oXmlHttp.responseXML ;
|
||||
else
|
||||
this.DOMDocument = null ;
|
||||
|
||||
if ( this.DOMDocument == null || this.DOMDocument.firstChild == null )
|
||||
{
|
||||
this.Error = true ;
|
||||
if (window.confirm( 'Error loading "' + urlToCall + '"\r\nDo you want to see more info?' ) )
|
||||
alert( 'URL requested: "' + urlToCall + '"\r\n' +
|
||||
'Server response:\r\nStatus: ' + oXmlHttp.status + '\r\n' +
|
||||
'Response text:\r\n' + oXmlHttp.responseText ) ;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
FCKXml.prototype.SelectNodes = function( xpath, contextNode )
|
||||
{
|
||||
if ( this.Error )
|
||||
return new Array() ;
|
||||
|
||||
var aNodeArray = new Array();
|
||||
|
||||
var xPathResult = this.DOMDocument.evaluate( xpath, contextNode ? contextNode : this.DOMDocument,
|
||||
this.DOMDocument.createNSResolver(this.DOMDocument.documentElement), XPathResult.ORDERED_NODE_ITERATOR_TYPE, null) ;
|
||||
if ( xPathResult )
|
||||
{
|
||||
var oNode = xPathResult.iterateNext() ;
|
||||
while( oNode )
|
||||
{
|
||||
aNodeArray[aNodeArray.length] = oNode ;
|
||||
oNode = xPathResult.iterateNext();
|
||||
}
|
||||
}
|
||||
return aNodeArray ;
|
||||
}
|
||||
|
||||
FCKXml.prototype.SelectSingleNode = function( xpath, contextNode )
|
||||
{
|
||||
if ( this.Error )
|
||||
return null ;
|
||||
|
||||
var xPathResult = this.DOMDocument.evaluate( xpath, contextNode ? contextNode : this.DOMDocument,
|
||||
this.DOMDocument.createNSResolver(this.DOMDocument.documentElement), 9, null);
|
||||
|
||||
if ( xPathResult && xPathResult.singleNodeValue )
|
||||
return xPathResult.singleNodeValue ;
|
||||
else
|
||||
return null ;
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user