first commit
79
admin/FCKeditor/editor/dialog/common/fck_dialog_common.css
Normal file
@ -0,0 +1,79 @@
|
||||
/*
|
||||
* FCKeditor - The text editor for internet
|
||||
* Copyright (C) 2003-2006 Frederico Caldeira Knabben
|
||||
*
|
||||
* Licensed under the terms of the GNU Lesser General Public License:
|
||||
* http://www.opensource.org/licenses/lgpl-license.php
|
||||
*
|
||||
* For further information visit:
|
||||
* http://www.fckeditor.net/
|
||||
*
|
||||
* "Support Open Source software. What about a donation today?"
|
||||
*
|
||||
* File Name: fck_dialog_common.css
|
||||
* This is the CSS file used for interface details in some dialog
|
||||
* windows.
|
||||
*
|
||||
* File Authors:
|
||||
* Frederico Caldeira Knabben (fredck@fckeditor.net)
|
||||
*/
|
||||
|
||||
.ImagePreviewArea
|
||||
{
|
||||
border: #000000 1px solid;
|
||||
overflow: auto;
|
||||
width: 100%;
|
||||
height: 170px;
|
||||
background-color: #ffffff;
|
||||
}
|
||||
|
||||
.FlashPreviewArea
|
||||
{
|
||||
border: #000000 1px solid;
|
||||
padding: 5px;
|
||||
overflow: auto;
|
||||
width: 100%;
|
||||
height: 170px;
|
||||
background-color: #ffffff;
|
||||
}
|
||||
|
||||
.BtnReset
|
||||
{
|
||||
float: left;
|
||||
background-position: center center;
|
||||
background-image: url(images/reset.gif);
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
background-repeat: no-repeat;
|
||||
border: 1px none;
|
||||
font-size: 1px ;
|
||||
}
|
||||
|
||||
.BtnLocked, .BtnUnlocked
|
||||
{
|
||||
float: left;
|
||||
background-position: center center;
|
||||
background-image: url(images/locked.gif);
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
background-repeat: no-repeat;
|
||||
border: none 1px;
|
||||
font-size: 1px ;
|
||||
}
|
||||
|
||||
.BtnUnlocked
|
||||
{
|
||||
background-image: url(images/unlocked.gif);
|
||||
}
|
||||
|
||||
.BtnOver
|
||||
{
|
||||
border: outset 1px;
|
||||
cursor: pointer;
|
||||
cursor: hand;
|
||||
}
|
||||
|
||||
.FCK__FieldNumeric
|
||||
{
|
||||
behavior: url(common/fcknumericfield.htc) ;
|
||||
}
|
148
admin/FCKeditor/editor/dialog/common/fck_dialog_common.js
Normal file
@ -0,0 +1,148 @@
|
||||
/*
|
||||
* FCKeditor - The text editor for internet
|
||||
* Copyright (C) 2003-2006 Frederico Caldeira Knabben
|
||||
*
|
||||
* Licensed under the terms of the GNU Lesser General Public License:
|
||||
* http://www.opensource.org/licenses/lgpl-license.php
|
||||
*
|
||||
* For further information visit:
|
||||
* http://www.fckeditor.net/
|
||||
*
|
||||
* "Support Open Source software. What about a donation today?"
|
||||
*
|
||||
* File Name: fck_dialog_common.js
|
||||
* Useful functions used by almost all dialog window pages.
|
||||
*
|
||||
* File Authors:
|
||||
* Frederico Caldeira Knabben (fredck@fckeditor.net)
|
||||
*/
|
||||
|
||||
// Gets a element by its Id. Used for shorter coding.
|
||||
function GetE( elementId )
|
||||
{
|
||||
return document.getElementById( elementId ) ;
|
||||
}
|
||||
|
||||
function ShowE( element, isVisible )
|
||||
{
|
||||
if ( typeof( element ) == 'string' )
|
||||
element = GetE( element ) ;
|
||||
element.style.display = isVisible ? '' : 'none' ;
|
||||
}
|
||||
|
||||
function SetAttribute( element, attName, attValue )
|
||||
{
|
||||
if ( attValue == null || attValue.length == 0 )
|
||||
element.removeAttribute( attName, 0 ) ; // 0 : Case Insensitive
|
||||
else
|
||||
element.setAttribute( attName, attValue, 0 ) ; // 0 : Case Insensitive
|
||||
}
|
||||
|
||||
function GetAttribute( element, attName, valueIfNull )
|
||||
{
|
||||
var oAtt = element.attributes[attName] ;
|
||||
|
||||
if ( oAtt == null || !oAtt.specified )
|
||||
return valueIfNull ? valueIfNull : '' ;
|
||||
|
||||
var oValue ;
|
||||
|
||||
if ( !( oValue = element.getAttribute( attName, 2 ) ) )
|
||||
oValue = oAtt.nodeValue ;
|
||||
|
||||
return ( oValue == null ? valueIfNull : oValue ) ;
|
||||
}
|
||||
|
||||
// Functions used by text fiels to accept numbers only.
|
||||
function IsDigit( e )
|
||||
{
|
||||
if ( !e )
|
||||
e = event ;
|
||||
|
||||
var iCode = ( e.keyCode || e.charCode ) ;
|
||||
|
||||
return (
|
||||
( iCode >= 48 && iCode <= 57 ) // Numbers
|
||||
|| (iCode >= 37 && iCode <= 40) // Arrows
|
||||
|| iCode == 8 // Backspace
|
||||
|| iCode == 46 // Delete
|
||||
) ;
|
||||
}
|
||||
|
||||
String.prototype.trim = function()
|
||||
{
|
||||
return this.replace( /(^\s*)|(\s*$)/g, '' ) ;
|
||||
}
|
||||
|
||||
String.prototype.startsWith = function( value )
|
||||
{
|
||||
return ( this.substr( 0, value.length ) == value ) ;
|
||||
}
|
||||
|
||||
String.prototype.remove = function( start, length )
|
||||
{
|
||||
var s = '' ;
|
||||
|
||||
if ( start > 0 )
|
||||
s = this.substring( 0, start ) ;
|
||||
|
||||
if ( start + length < this.length )
|
||||
s += this.substring( start + length , this.length ) ;
|
||||
|
||||
return s ;
|
||||
}
|
||||
|
||||
String.prototype.ReplaceAll = function( searchArray, replaceArray )
|
||||
{
|
||||
var replaced = this ;
|
||||
|
||||
for ( var i = 0 ; i < searchArray.length ; i++ )
|
||||
{
|
||||
replaced = replaced.replace( searchArray[i], replaceArray[i] ) ;
|
||||
}
|
||||
|
||||
return replaced ;
|
||||
}
|
||||
|
||||
function OpenFileBrowser( url, width, height )
|
||||
{
|
||||
// oEditor must be defined.
|
||||
|
||||
var iLeft = ( oEditor.FCKConfig.ScreenWidth - width ) / 2 ;
|
||||
var iTop = ( oEditor.FCKConfig.ScreenHeight - height ) / 2 ;
|
||||
|
||||
var sOptions = "toolbar=no,status=no,resizable=yes,dependent=yes,scrollbars=yes" ;
|
||||
sOptions += ",width=" + width ;
|
||||
sOptions += ",height=" + height ;
|
||||
sOptions += ",left=" + iLeft ;
|
||||
sOptions += ",top=" + iTop ;
|
||||
|
||||
// The "PreserveSessionOnFileBrowser" because the above code could be
|
||||
// blocked by popup blockers.
|
||||
if ( oEditor.FCKConfig.PreserveSessionOnFileBrowser && oEditor.FCKBrowserInfo.IsIE )
|
||||
{
|
||||
// The following change has been made otherwise IE will open the file
|
||||
// browser on a different server session (on some cases):
|
||||
// http://support.microsoft.com/default.aspx?scid=kb;en-us;831678
|
||||
// by Simone Chiaretta.
|
||||
var oWindow = oEditor.window.open( url, 'FCKBrowseWindow', sOptions ) ;
|
||||
|
||||
if ( oWindow )
|
||||
{
|
||||
// Detect Yahoo popup blocker.
|
||||
try
|
||||
{
|
||||
var sTest = oWindow.name ; // Yahoo returns "something", but we can't access it, so detect that and avoid strange errors for the user.
|
||||
oWindow.opener = window ;
|
||||
}
|
||||
catch(e)
|
||||
{
|
||||
alert( oEditor.FCKLang.BrowseServerBlocked ) ;
|
||||
}
|
||||
}
|
||||
else
|
||||
alert( oEditor.FCKLang.BrowseServerBlocked ) ;
|
||||
}
|
||||
else
|
||||
window.open( url, 'FCKBrowseWindow', sOptions ) ;
|
||||
}
|
24
admin/FCKeditor/editor/dialog/common/fcknumericfield.htc
Normal file
@ -0,0 +1,24 @@
|
||||
<public:component lightweight="true">
|
||||
|
||||
<script language="javascript">
|
||||
|
||||
function CheckIsDigit()
|
||||
{
|
||||
var iCode = event.keyCode ;
|
||||
|
||||
event.returnValue =
|
||||
(
|
||||
( iCode >= 48 && iCode <= 57 ) // Numbers
|
||||
|| (iCode >= 37 && iCode <= 40) // Arrows
|
||||
|| iCode == 8 // Backspace
|
||||
|| iCode == 46 // Delete
|
||||
) ;
|
||||
|
||||
return event.returnValue ;
|
||||
}
|
||||
|
||||
this.onkeypress = CheckIsDigit ;
|
||||
|
||||
</script>
|
||||
|
||||
</public:component>
|
BIN
admin/FCKeditor/editor/dialog/common/images/locked.gif
Normal file
After Width: | Height: | Size: 74 B |
BIN
admin/FCKeditor/editor/dialog/common/images/reset.gif
Normal file
After Width: | Height: | Size: 104 B |
BIN
admin/FCKeditor/editor/dialog/common/images/unlocked.gif
Normal file
After Width: | Height: | Size: 75 B |
30
admin/FCKeditor/editor/dialog/common/moz-bindings.xml
Normal file
@ -0,0 +1,30 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<bindings xmlns="http://www.mozilla.org/xbl">
|
||||
<binding id="numericfield">
|
||||
<implementation>
|
||||
<constructor>
|
||||
this.keypress = CheckIsDigit ;
|
||||
</constructor>
|
||||
<method name="CheckIsDigit">
|
||||
<body>
|
||||
<![CDATA[
|
||||
var iCode = keyCode ;
|
||||
|
||||
var bAccepted =
|
||||
(
|
||||
( iCode >= 48 && iCode <= 57 ) // Numbers
|
||||
|| (iCode >= 37 && iCode <= 40) // Arrows
|
||||
|| iCode == 8 // Backspace
|
||||
|| iCode == 46 // Delete
|
||||
) ;
|
||||
|
||||
return bAccepted ;
|
||||
]]>
|
||||
</body>
|
||||
</method>
|
||||
</implementation>
|
||||
<events>
|
||||
<event type="keypress" value="CheckIsDigit()" />
|
||||
</events>
|
||||
</binding>
|
||||
</bindings>
|
145
admin/FCKeditor/editor/dialog/fck_about.html
Normal file
@ -0,0 +1,145 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||
<!--
|
||||
* FCKeditor - The text editor for internet
|
||||
* Copyright (C) 2003-2006 Frederico Caldeira Knabben
|
||||
*
|
||||
* Licensed under the terms of the GNU Lesser General Public License:
|
||||
* http://www.opensource.org/licenses/lgpl-license.php
|
||||
*
|
||||
* For further information visit:
|
||||
* http://www.fckeditor.net/
|
||||
*
|
||||
* "Support Open Source software. What about a donation today?"
|
||||
*
|
||||
* File Name: fck_about.html
|
||||
* "About" dialog window.
|
||||
*
|
||||
* File Authors:
|
||||
* Frederico Caldeira Knabben (fredck@fckeditor.net)
|
||||
-->
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
<script src="common/fck_dialog_common.js" type="text/javascript"></script>
|
||||
<script language="javascript">
|
||||
|
||||
var oEditor = window.parent.InnerDialogLoaded() ;
|
||||
var FCKLang = oEditor.FCKLang ;
|
||||
|
||||
window.parent.AddTab( 'About', FCKLang.DlgAboutAboutTab ) ;
|
||||
window.parent.AddTab( 'License', FCKLang.DlgAboutLicenseTab ) ;
|
||||
window.parent.AddTab( 'BrowserInfo', FCKLang.DlgAboutBrowserInfoTab ) ;
|
||||
|
||||
// Function called when a dialog tag is selected.
|
||||
function OnDialogTabChange( tabCode )
|
||||
{
|
||||
ShowE('divAbout', ( tabCode == 'About' ) ) ;
|
||||
ShowE('divLicense', ( tabCode == 'License' ) ) ;
|
||||
ShowE('divInfo' , ( tabCode == 'BrowserInfo' ) ) ;
|
||||
}
|
||||
|
||||
function SendEMail()
|
||||
{
|
||||
var eMail = 'mailto:' ;
|
||||
eMail += 'fredck' ;
|
||||
eMail += '@' ;
|
||||
eMail += 'fckeditor' ;
|
||||
eMail += '.' ;
|
||||
eMail += 'net' ;
|
||||
|
||||
window.location = eMail ;
|
||||
}
|
||||
|
||||
window.onload = function()
|
||||
{
|
||||
// Translate the dialog box texts.
|
||||
oEditor.FCKLanguageManager.TranslatePage(document) ;
|
||||
|
||||
window.parent.SetAutoSize( true ) ;
|
||||
}
|
||||
|
||||
</script>
|
||||
</head>
|
||||
<body scroll="no" style="OVERFLOW: hidden">
|
||||
<div id="divAbout">
|
||||
<table cellpadding="0" cellspacing="0" border="0" width="100%" height="100%">
|
||||
<tr>
|
||||
<td>
|
||||
<img alt="" src="fck_about/logo_fckeditor.gif" width="236" height="41" align="left">
|
||||
<table width="80" border="0" cellspacing="0" cellpadding="5" bgcolor="#ffffff" align="right">
|
||||
<tr>
|
||||
<td align="center" nowrap style="BORDER-RIGHT: #000000 1px solid; BORDER-TOP: #000000 1px solid; BORDER-LEFT: #000000 1px solid; BORDER-BOTTOM: #000000 1px solid">
|
||||
<span fckLang="DlgAboutVersion">version</span>
|
||||
<br>
|
||||
<b>2.3.2</b><br />
|
||||
Build 1082</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr height="100%">
|
||||
<td align="center">
|
||||
<br>
|
||||
<span style="FONT-SIZE: 14px" dir="ltr"><br>
|
||||
<b><a href="http://www.fckeditor.net/?about" target="_blank" title="Visit the FCKeditor web site">
|
||||
Support <b>Open Source</b> Software</a></b> </span>
|
||||
<br><br><br>
|
||||
<span fckLang="DlgAboutInfo">For further information go to</span> <a href="http://www.fckeditor.net/?About" target="_blank">
|
||||
http://www.fckeditor.net/</a>.
|
||||
<br>
|
||||
Copyright © 2003-2006 <a href="#" onclick="SendEMail();">Frederico Caldeira
|
||||
Knabben</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center">
|
||||
<img alt="" src="fck_about/logo_fredck.gif" width="87" height="36">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div id="divLicense" style="DISPLAY: none">
|
||||
<table height="100%" width="100%">
|
||||
<tr>
|
||||
<td>
|
||||
<span fckLang="DlgAboutLicense">Licensed under the terms of the GNU Lesser General
|
||||
Public License</span>
|
||||
<br>
|
||||
<a href="http://www.opensource.org/licenses/lgpl-license.php" target="_blank">http://www.opensource.org/licenses/lgpl-license.php</a>
|
||||
<br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td height="100%">
|
||||
<iframe height="100%" width="100%" src="fck_about/lgpl.html"></iframe>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div id="divInfo" style="DISPLAY: none" dir="ltr">
|
||||
<table align="center" width="80%" border="0">
|
||||
<tr>
|
||||
<td>
|
||||
<script language="javascript">
|
||||
<!--
|
||||
document.write( '<b>User Agent<\/b><br>' + window.navigator.userAgent + '<br><br>' ) ;
|
||||
document.write( '<b>Browser<\/b><br>' + window.navigator.appName + ' ' + window.navigator.appVersion + '<br><br>' ) ;
|
||||
document.write( '<b>Platform<\/b><br>' + window.navigator.platform + '<br><br>' ) ;
|
||||
|
||||
var sUserLang = '?' ;
|
||||
|
||||
if ( window.navigator.language )
|
||||
sUserLang = window.navigator.language.toLowerCase() ;
|
||||
else if ( window.navigator.userLanguage )
|
||||
sUserLang = window.navigator.userLanguage.toLowerCase() ;
|
||||
|
||||
document.write( '<b>User Language<\/b><br>' + sUserLang ) ;
|
||||
//-->
|
||||
</script>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
434
admin/FCKeditor/editor/dialog/fck_about/lgpl.html
Normal file
@ -0,0 +1,434 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||
<html>
|
||||
<head>
|
||||
<title>GNU Lesser General Public License</title>
|
||||
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
|
||||
<STYLE>
|
||||
BODY { FONT-SIZE: 12px }
|
||||
</STYLE>
|
||||
</head>
|
||||
<body>
|
||||
<H3>GNU Lesser General Public License</H3>
|
||||
<TT>
|
||||
<P>Version 2.1, February 1999</P>
|
||||
<BLOCKQUOTE>
|
||||
<P>Copyright (C) 1991, 1999 Free Software Foundation, Inc. 59 Temple Place, Suite
|
||||
330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute
|
||||
verbatim copies of this license document, but changing it is not allowed.</P>
|
||||
<P>[This is the first released version of the Lesser GPL. It also counts as the
|
||||
successor of the GNU Library Public License, version 2, hence the version
|
||||
number 2.1.]</P>
|
||||
</BLOCKQUOTE>
|
||||
<H4>Preamble</H4>
|
||||
<P>The licenses for most software are designed to take away your freedom to share
|
||||
and change it. By contrast, the GNU General Public Licenses are intended to
|
||||
guarantee your freedom to share and change free software--to make sure the
|
||||
software is free for all its users.
|
||||
</P>
|
||||
<P>This license, the Lesser General Public License, applies to some specially
|
||||
designated software packages--typically libraries--of the Free Software
|
||||
Foundation and other authors who decide to use it. You can use it too, but we
|
||||
suggest you first think carefully about whether this license or the ordinary
|
||||
General Public License is the better strategy to use in any particular case,
|
||||
based on the explanations below.
|
||||
</P>
|
||||
<P>When we speak of free software, we are referring to freedom of use, not price.
|
||||
Our General Public Licenses are designed to make sure that you have the freedom
|
||||
to distribute copies of free software (and charge for this service if you
|
||||
wish); that you receive source code or can get it if you want it; that you can
|
||||
change the software and use pieces of it in new free programs; and that you are
|
||||
informed that you can do these things.</P>
|
||||
<P>To protect your rights, we need to make restrictions that forbid distributors to
|
||||
deny you these rights or to ask you to surrender these rights. These
|
||||
restrictions translate to certain responsibilities for you if you distribute
|
||||
copies of the library or if you modify it.
|
||||
</P>
|
||||
<P>For example, if you distribute copies of the library, whether gratis or for a
|
||||
fee, you must give the recipients all the rights that we gave you. You must
|
||||
make sure that they, too, receive or can get the source code. If you link other
|
||||
code with the library, you must provide complete object files to the
|
||||
recipients, so that they can relink them with the library after making changes
|
||||
to the library and recompiling it. And you must show them these terms so they
|
||||
know their rights.
|
||||
</P>
|
||||
<P>We protect your rights with a two-step method: (1) we copyright the library, and
|
||||
(2) we offer you this license, which gives you legal permission to copy,
|
||||
distribute and/or modify the library.
|
||||
</P>
|
||||
<P>To protect each distributor, we want to make it very clear that there is no
|
||||
warranty for the free library. Also, if the library is modified by someone else
|
||||
and passed on, the recipients should know that what they have is not the
|
||||
original version, so that the original author's reputation will not be affected
|
||||
by problems that might be introduced by others.
|
||||
</P>
|
||||
<P>Finally, software patents pose a constant threat to the existence of any free
|
||||
program. We wish to make sure that a company cannot effectively restrict the
|
||||
users of a free program by obtaining a restrictive license from a patent
|
||||
holder. Therefore, we insist that any patent license obtained for a version of
|
||||
the library must be consistent with the full freedom of use specified in this
|
||||
license.
|
||||
</P>
|
||||
<P>Most GNU software, including some libraries, is covered by the ordinary GNU
|
||||
General Public License. This license, the GNU Lesser General Public License,
|
||||
applies to certain designated libraries, and is quite different from the
|
||||
ordinary General Public License. We use this license for certain libraries in
|
||||
order to permit linking those libraries into non-free programs.
|
||||
</P>
|
||||
<P>When a program is linked with a library, whether statically or using a shared
|
||||
library, the combination of the two is legally speaking a combined work, a
|
||||
derivative of the original library. The ordinary General Public License
|
||||
therefore permits such linking only if the entire combination fits its criteria
|
||||
of freedom. The Lesser General Public License permits more lax criteria for
|
||||
linking other code with the library.
|
||||
</P>
|
||||
<P>We call this license the "Lesser" General Public License because it does Less to
|
||||
protect the user's freedom than the ordinary General Public License. It also
|
||||
provides other free software developers Less of an advantage over competing
|
||||
non-free programs. These disadvantages are the reason we use the ordinary
|
||||
General Public License for many libraries. However, the Lesser license provides
|
||||
advantages in certain special circumstances.
|
||||
</P>
|
||||
<P>For example, on rare occasions, there may be a special need to encourage the
|
||||
widest possible use of a certain library, so that it becomes a de-facto
|
||||
standard. To achieve this, non-free programs must be allowed to use the
|
||||
library. A more frequent case is that a free library does the same job as
|
||||
widely used non-free libraries. In this case, there is little to gain by
|
||||
limiting the free library to free software only, so we use the Lesser General
|
||||
Public License.
|
||||
</P>
|
||||
<P>In other cases, permission to use a particular library in non-free programs
|
||||
enables a greater number of people to use a large body of free software. For
|
||||
example, permission to use the GNU C Library in non-free programs enables many
|
||||
more people to use the whole GNU operating system, as well as its variant, the
|
||||
GNU/Linux operating system.
|
||||
</P>
|
||||
<P>Although the Lesser General Public License is Less protective of the users'
|
||||
freedom, it does ensure that the user of a program that is linked with the
|
||||
Library has the freedom and the wherewithal to run that program using a
|
||||
modified version of the Library.
|
||||
</P>
|
||||
<P>The precise terms and conditions for copying, distribution and modification
|
||||
follow. Pay close attention to the difference between a "work based on the
|
||||
library" and a "work that uses the library". The former contains code derived
|
||||
from the library, whereas the latter must be combined with the library in order
|
||||
to run.
|
||||
</P>
|
||||
<H4>TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION</H4>
|
||||
<P><STRONG>0.</STRONG> This License Agreement applies to any software library or
|
||||
other program which contains a notice placed by the copyright holder or other
|
||||
authorized party saying it may be distributed under the terms of this Lesser
|
||||
General Public License (also called "this License"). Each licensee is addressed
|
||||
as "you".</P>
|
||||
<P>A "library" means a collection of software functions and/or data prepared so as
|
||||
to be conveniently linked with application programs (which use some of those
|
||||
functions and data) to form executables.
|
||||
</P>
|
||||
<P>The "Library", below, refers to any such software library or work which has been
|
||||
distributed under these terms. A "work based on the Library" means either the
|
||||
Library or any derivative work under copyright law: that is to say, a work
|
||||
containing the Library or a portion of it, either verbatim or with
|
||||
modifications and/or translated straightforwardly into another language.
|
||||
(Hereinafter, translation is included without limitation in the term
|
||||
"modification".)
|
||||
</P>
|
||||
<P>"Source code" for a work means the preferred form of the work for making
|
||||
modifications to it. For a library, complete source code means all the source
|
||||
code for all modules it contains, plus any associated interface definition
|
||||
files, plus the scripts used to control compilation and installation of the
|
||||
library.</P>
|
||||
<P>Activities other than copying, distribution and modification are not covered by
|
||||
this License; they are outside its scope. The act of running a program using
|
||||
the Library is not restricted, and output from such a program is covered only
|
||||
if its contents constitute a work based on the Library (independent of the use
|
||||
of the Library in a tool for writing it). Whether that is true depends on what
|
||||
the Library does and what the program that uses the Library does.
|
||||
</P>
|
||||
<P><STRONG>1.</STRONG> You may copy and distribute verbatim copies of the Library's
|
||||
complete source code as you receive it, in any medium, provided that you
|
||||
conspicuously and appropriately publish on each copy an appropriate copyright
|
||||
notice and disclaimer of warranty; keep intact all the notices that refer to
|
||||
this License and to the absence of any warranty; and distribute a copy of this
|
||||
License along with the Library.
|
||||
</P>
|
||||
<P>You may charge a fee for the physical act of transferring a copy, and you may at
|
||||
your option offer warranty protection in exchange for a fee.
|
||||
</P>
|
||||
<P><STRONG>2.</STRONG> You may modify your copy or copies of the Library or any
|
||||
portion of it, thus forming a work based on the Library, and copy and
|
||||
distribute such modifications or work under the terms of Section 1 above,
|
||||
provided that you also meet all of these conditions:
|
||||
</P>
|
||||
<BLOCKQUOTE>
|
||||
<P>a) The modified work must itself be a software library.
|
||||
</P>
|
||||
<P>b) You must cause the files modified to carry prominent notices stating that you
|
||||
changed the files and the date of any change.</P>
|
||||
<P>c) You must cause the whole of the work to be licensed at no charge to all third
|
||||
parties under the terms of this License.
|
||||
</P>
|
||||
<P>d) If a facility in the modified Library refers to a function or a table of data
|
||||
to be supplied by an application program that uses the facility, other than as
|
||||
an argument passed when the facility is invoked, then you must make a good
|
||||
faith effort to ensure that, in the event an application does not supply such
|
||||
function or table, the facility still operates, and performs whatever part of
|
||||
its purpose remains meaningful.
|
||||
</P>
|
||||
<P>(For example, a function in a library to compute square roots has a purpose that
|
||||
is entirely well-defined independent of the application. Therefore, Subsection
|
||||
2d requires that any application-supplied function or table used by this
|
||||
function must be optional: if the application does not supply it, the square
|
||||
root function must still compute square roots.)
|
||||
</P>
|
||||
<P>These requirements apply to the modified work as a whole. If identifiable
|
||||
sections of that work are not derived from the Library, and can be reasonably
|
||||
considered independent and separate works in themselves, then this License, and
|
||||
its terms, do not apply to those sections when you distribute them as separate
|
||||
works. But when you distribute the same sections as part of a whole which is a
|
||||
work based on the Library, the distribution of the whole must be on the terms
|
||||
of this License, whose permissions for other licensees extend to the entire
|
||||
whole, and thus to each and every part regardless of who wrote it.
|
||||
</P>
|
||||
<P>Thus, it is not the intent of this section to claim rights or contest your
|
||||
rights to work written entirely by you; rather, the intent is to exercise the
|
||||
right to control the distribution of derivative or collective works based on
|
||||
the Library.
|
||||
</P>
|
||||
<P>In addition, mere aggregation of another work not based on the Library with the
|
||||
Library (or with a work based on the Library) on a volume of a storage or
|
||||
distribution medium does not bring the other work under the scope of this
|
||||
License.
|
||||
</P>
|
||||
</BLOCKQUOTE>
|
||||
<P><STRONG>3.</STRONG> You may opt to apply the terms of the ordinary GNU General
|
||||
Public License instead of this License to a given copy of the Library. To do
|
||||
this, you must alter all the notices that refer to this License, so that they
|
||||
refer to the ordinary GNU General Public License, version 2, instead of to this
|
||||
License. (If a newer version than version 2 of the ordinary GNU General Public
|
||||
License has appeared, then you can specify that version instead if you wish.)
|
||||
Do not make any other change in these notices.
|
||||
</P>
|
||||
<P>Once this change is made in a given copy, it is irreversible for that copy, so
|
||||
the ordinary GNU General Public License applies to all subsequent copies and
|
||||
derivative works made from that copy.
|
||||
</P>
|
||||
<P>This option is useful when you wish to copy part of the code of the Library into
|
||||
a program that is not a library.
|
||||
</P>
|
||||
<P><STRONG>4.</STRONG> You may copy and distribute the Library (or a portion or
|
||||
derivative of it, under Section 2) in object code or executable form under the
|
||||
terms of Sections 1 and 2 above provided that you accompany it with the
|
||||
complete corresponding machine-readable source code, which must be distributed
|
||||
under the terms of Sections 1 and 2 above on a medium customarily used for
|
||||
software interchange.
|
||||
</P>
|
||||
<P>If distribution of object code is made by offering access to copy from a
|
||||
designated place, then offering equivalent access to copy the source code from
|
||||
the same place satisfies the requirement to distribute the source code, even
|
||||
though third parties are not compelled to copy the source along with the object
|
||||
code.</P>
|
||||
<P><STRONG>5.</STRONG> A program that contains no derivative of any portion of the
|
||||
Library, but is designed to work with the Library by being compiled or linked
|
||||
with it, is called a "work that uses the Library". Such a work, in isolation,
|
||||
is not a derivative work of the Library, and therefore falls outside the scope
|
||||
of this License.
|
||||
</P>
|
||||
<P>However, linking a "work that uses the Library" with the Library creates an
|
||||
executable that is a derivative of the Library (because it contains portions of
|
||||
the Library), rather than a "work that uses the library". The executable is
|
||||
therefore covered by this License. Section 6 states terms for distribution of
|
||||
such executables.
|
||||
</P>
|
||||
<P>When a "work that uses the Library" uses material from a header file that is
|
||||
part of the Library, the object code for the work may be a derivative work of
|
||||
the Library even though the source code is not. Whether this is true is
|
||||
especially significant if the work can be linked without the Library, or if the
|
||||
work is itself a library. The threshold for this to be true is not precisely
|
||||
defined by law.
|
||||
</P>
|
||||
<P>If such an object file uses only numerical parameters, data structure layouts
|
||||
and accessors, and small macros and small inline functions (ten lines or less
|
||||
in length), then the use of the object file is unrestricted, regardless of
|
||||
whether it is legally a derivative work. (Executables containing this object
|
||||
code plus portions of the Library will still fall under Section 6.)
|
||||
</P>
|
||||
<P>Otherwise, if the work is a derivative of the Library, you may distribute the
|
||||
object code for the work under the terms of Section 6. Any executables
|
||||
containing that work also fall under Section 6, whether or not they are linked
|
||||
directly with the Library itself.
|
||||
</P>
|
||||
<P><STRONG>6.</STRONG> As an exception to the Sections above, you may also combine
|
||||
or link a "work that uses the Library" with the Library to produce a work
|
||||
containing portions of the Library, and distribute that work under terms of
|
||||
your choice, provided that the terms permit modification of the work for the
|
||||
customer's own use and reverse engineering for debugging such modifications.
|
||||
</P>
|
||||
<P>You must give prominent notice with each copy of the work that the Library is
|
||||
used in it and that the Library and its use are covered by this License. You
|
||||
must supply a copy of this License. If the work during execution displays
|
||||
copyright notices, you must include the copyright notice for the Library among
|
||||
them, as well as a reference directing the user to the copy of this License.
|
||||
Also, you must do one of these things:
|
||||
</P>
|
||||
<BLOCKQUOTE>
|
||||
<P>a) Accompany the work with the complete corresponding machine-readable source
|
||||
code for the Library including whatever changes were used in the work (which
|
||||
must be distributed under Sections 1 and 2 above); and, if the work is an
|
||||
executable linked with the Library, with the complete machine-readable "work
|
||||
that uses the Library", as object code and/or source code, so that the user can
|
||||
modify the Library and then relink to produce a modified executable containing
|
||||
the modified Library. (It is understood that the user who changes the contents
|
||||
of definitions files in the Library will not necessarily be able to recompile
|
||||
the application to use the modified definitions.)
|
||||
</P>
|
||||
<P>b) Use a suitable shared library mechanism for linking with the Library. A
|
||||
suitable mechanism is one that (1) uses at run time a copy of the library
|
||||
already present on the user's computer system, rather than copying library
|
||||
functions into the executable, and (2) will operate properly with a modified
|
||||
version of the library, if the user installs one, as long as the modified
|
||||
version is interface-compatible with the version that the work was made with.
|
||||
</P>
|
||||
<P>c) Accompany the work with a written offer, valid for at least three years, to
|
||||
give the same user the materials specified in Subsection 6a, above, for a
|
||||
charge no more than the cost of performing this distribution.
|
||||
</P>
|
||||
<P>d) If distribution of the work is made by offering access to copy from a
|
||||
designated place, offer equivalent access to copy the above specified materials
|
||||
from the same place.
|
||||
</P>
|
||||
<P>e) Verify that the user has already received a copy of these materials or that
|
||||
you have already sent this user a copy.</P>
|
||||
</BLOCKQUOTE>
|
||||
<P>For an executable, the required form of the "work that uses the Library" must
|
||||
include any data and utility programs needed for reproducing the executable
|
||||
from it. However, as a special exception, the materials to be distributed need
|
||||
not include anything that is normally distributed (in either source or binary
|
||||
form) with the major components (compiler, kernel, and so on) of the operating
|
||||
system on which the executable runs, unless that component itself accompanies
|
||||
the executable.
|
||||
</P>
|
||||
<P>It may happen that this requirement contradicts the license restrictions of
|
||||
other proprietary libraries that do not normally accompany the operating
|
||||
system. Such a contradiction means you cannot use both them and the Library
|
||||
together in an executable that you distribute.
|
||||
</P>
|
||||
<P><STRONG>7.</STRONG> You may place library facilities that are a work based on
|
||||
the Library side-by-side in a single library together with other library
|
||||
facilities not covered by this License, and distribute such a combined library,
|
||||
provided that the separate distribution of the work based on the Library and of
|
||||
the other library facilities is otherwise permitted, and provided that you do
|
||||
these two things:
|
||||
</P>
|
||||
<BLOCKQUOTE>
|
||||
<P>a) Accompany the combined library with a copy of the same work based on the
|
||||
Library, uncombined with any other library facilities. This must be distributed
|
||||
under the terms of the Sections above.
|
||||
</P>
|
||||
<P>b) Give prominent notice with the combined library of the fact that part of it
|
||||
is a work based on the Library, and explaining where to find the accompanying
|
||||
uncombined form of the same work.</P>
|
||||
</BLOCKQUOTE>
|
||||
<P><STRONG>8.</STRONG> You may not copy, modify, sublicense, link with, or
|
||||
distribute the Library except as expressly provided under this License. Any
|
||||
attempt otherwise to copy, modify, sublicense, link with, or distribute the
|
||||
Library is void, and will automatically terminate your rights under this
|
||||
License. However, parties who have received copies, or rights, from you under
|
||||
this License will not have their licenses terminated so long as such parties
|
||||
remain in full compliance.
|
||||
</P>
|
||||
<P><STRONG>9.</STRONG> You are not required to accept this License, since you have
|
||||
not signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Library or its derivative works. These actions are prohibited by
|
||||
law if you do not accept this License. Therefore, by modifying or distributing
|
||||
the Library (or any work based on the Library), you indicate your acceptance of
|
||||
this License to do so, and all its terms and conditions for copying,
|
||||
distributing or modifying the Library or works based on it.
|
||||
</P>
|
||||
<P><STRONG>10.</STRONG> Each time you redistribute the Library (or any work based
|
||||
on the Library), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute, link with or modify the Library subject
|
||||
to these terms and conditions. You may not impose any further restrictions on
|
||||
the recipients' exercise of the rights granted herein. You are not responsible
|
||||
for enforcing compliance by third parties with this License.
|
||||
</P>
|
||||
<P><STRONG>11.</STRONG> If, as a consequence of a court judgment or allegation of
|
||||
patent infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or otherwise)
|
||||
that contradict the conditions of this License, they do not excuse you from the
|
||||
conditions of this License. If you cannot distribute so as to satisfy
|
||||
simultaneously your obligations under this License and any other pertinent
|
||||
obligations, then as a consequence you may not distribute the Library at all.
|
||||
For example, if a patent license would not permit royalty-free redistribution
|
||||
of the Library by all those who receive copies directly or indirectly through
|
||||
you, then the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Library.
|
||||
</P>
|
||||
<P>If any portion of this section is held invalid or unenforceable under any
|
||||
particular circumstance, the balance of the section is intended to apply, and
|
||||
the section as a whole is intended to apply in other circumstances.
|
||||
</P>
|
||||
<P>It is not the purpose of this section to induce you to infringe any patents or
|
||||
other property right claims or to contest validity of any such claims; this
|
||||
section has the sole purpose of protecting the integrity of the free software
|
||||
distribution system which is implemented by public license practices. Many
|
||||
people have made generous contributions to the wide range of software
|
||||
distributed through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing to
|
||||
distribute software through any other system and a licensee cannot impose that
|
||||
choice.
|
||||
</P>
|
||||
<P>This section is intended to make thoroughly clear what is believed to be a
|
||||
consequence of the rest of this License.
|
||||
</P>
|
||||
<P><STRONG>12.</STRONG> If the distribution and/or use of the Library is restricted
|
||||
in certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Library under this License may add an
|
||||
explicit geographical distribution limitation excluding those countries, so
|
||||
that distribution is permitted only in or among countries not thus excluded. In
|
||||
such case, this License incorporates the limitation as if written in the body
|
||||
of this License.
|
||||
</P>
|
||||
<P><STRONG>13.</STRONG> The Free Software Foundation may publish revised and/or new
|
||||
versions of the Lesser General Public License from time to time. Such new
|
||||
versions will be similar in spirit to the present version, but may differ in
|
||||
detail to address new problems or concerns.</P>
|
||||
<P>Each version is given a distinguishing version number. If the Library specifies
|
||||
a version number of this License which applies to it and "any later version",
|
||||
you have the option of following the terms and conditions either of that
|
||||
version or of any later version published by the Free Software Foundation. If
|
||||
the Library does not specify a license version number, you may choose any
|
||||
version ever published by the Free Software Foundation.
|
||||
</P>
|
||||
<P><STRONG>14.</STRONG> If you wish to incorporate parts of the Library into other
|
||||
free programs whose distribution conditions are incompatible with these, write
|
||||
to the author to ask for permission. For software which is copyrighted by the
|
||||
Free Software Foundation, write to the Free Software Foundation; we sometimes
|
||||
make exceptions for this. Our decision will be guided by the two goals of
|
||||
preserving the free status of all derivatives of our free software and of
|
||||
promoting the sharing and reuse of software generally.
|
||||
</P>
|
||||
<P>NO WARRANTY
|
||||
</P>
|
||||
<P><STRONG>15. </STRONG>BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
|
||||
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT
|
||||
WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||
PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR
|
||||
IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE
|
||||
QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE
|
||||
DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR
|
||||
CORRECTION.
|
||||
</P>
|
||||
<P><STRONG>16.</STRONG> IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO
|
||||
IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||
REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT
|
||||
OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS
|
||||
OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
|
||||
PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN
|
||||
IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
|
||||
DAMAGES.
|
||||
</P>
|
||||
<H4><STRONG>END OF TERMS AND CONDITIONS</STRONG></H4>
|
||||
</TT>
|
||||
</body>
|
||||
</html>
|
BIN
admin/FCKeditor/editor/dialog/fck_about/logo_fckeditor.gif
Normal file
After Width: | Height: | Size: 2.0 KiB |
BIN
admin/FCKeditor/editor/dialog/fck_about/logo_fredck.gif
Normal file
After Width: | Height: | Size: 920 B |
98
admin/FCKeditor/editor/dialog/fck_anchor.html
Normal file
@ -0,0 +1,98 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
|
||||
<!--
|
||||
* FCKeditor - The text editor for internet
|
||||
* Copyright (C) 2003-2006 Frederico Caldeira Knabben
|
||||
*
|
||||
* Licensed under the terms of the GNU Lesser General Public License:
|
||||
* http://www.opensource.org/licenses/lgpl-license.php
|
||||
*
|
||||
* For further information visit:
|
||||
* http://www.fckeditor.net/
|
||||
*
|
||||
* "Support Open Source software. What about a donation today?"
|
||||
*
|
||||
* File Name: fck_anchor.html
|
||||
* Anchor dialog window.
|
||||
*
|
||||
* File Authors:
|
||||
* Frederico Caldeira Knabben (fredck@fckeditor.net)
|
||||
-->
|
||||
<html>
|
||||
<head>
|
||||
<title>Anchor Properties</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta content="noindex, nofollow" name="robots">
|
||||
<script src="common/fck_dialog_common.js" type="text/javascript"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
var oEditor = window.parent.InnerDialogLoaded() ;
|
||||
var FCK = oEditor.FCK ;
|
||||
|
||||
// Gets the document DOM
|
||||
var oDOM = oEditor.FCK.EditorDocument ;
|
||||
|
||||
var oFakeImage = FCK.Selection.GetSelectedElement() ;
|
||||
var oAnchor ;
|
||||
|
||||
if ( oFakeImage )
|
||||
{
|
||||
if ( oFakeImage.tagName == 'IMG' && oFakeImage.getAttribute('_fckanchor') )
|
||||
oAnchor = FCK.GetRealElement( oFakeImage ) ;
|
||||
else
|
||||
oFakeImage = null ;
|
||||
}
|
||||
|
||||
window.onload = function()
|
||||
{
|
||||
// First of all, translate the dialog box texts
|
||||
oEditor.FCKLanguageManager.TranslatePage(document) ;
|
||||
|
||||
if ( oAnchor )
|
||||
GetE('txtName').value = oAnchor.name ;
|
||||
else
|
||||
oAnchor = null ;
|
||||
|
||||
window.parent.SetOkButton( true ) ;
|
||||
}
|
||||
|
||||
function Ok()
|
||||
{
|
||||
if ( GetE('txtName').value.length == 0 )
|
||||
{
|
||||
alert( oEditor.FCKLang.DlgAnchorErrorName ) ;
|
||||
return false ;
|
||||
}
|
||||
|
||||
oEditor.FCKUndo.SaveUndoStep() ;
|
||||
|
||||
oAnchor = FCK.EditorDocument.createElement( 'DIV' ) ;
|
||||
oAnchor.innerHTML = '<a name="' + GetE('txtName').value + '"><\/a>' ;
|
||||
oAnchor = oAnchor.firstChild ;
|
||||
|
||||
oFakeImage = oEditor.FCKDocumentProcessor_CreateFakeImage( 'FCK__Anchor', oAnchor ) ;
|
||||
oFakeImage.setAttribute( '_fckanchor', 'true', 0 ) ;
|
||||
oFakeImage = FCK.InsertElementAndGetIt( oFakeImage ) ;
|
||||
|
||||
// oEditor.FCK.InsertHtml( '<a name="' + GetE('txtName').value + '"><\/a>' ) ;
|
||||
return true ;
|
||||
}
|
||||
|
||||
</script>
|
||||
</head>
|
||||
<body style="OVERFLOW: hidden" scroll="no">
|
||||
<table height="100%" width="100%">
|
||||
<tr>
|
||||
<td align="center">
|
||||
<table border="0" cellpadding="0" cellspacing="0" width="80%">
|
||||
<tr>
|
||||
<td>
|
||||
<span fckLang="DlgAnchorName">Anchor Name</span><BR>
|
||||
<input id="txtName" style="WIDTH: 100%" type="text">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
103
admin/FCKeditor/editor/dialog/fck_button.html
Normal file
@ -0,0 +1,103 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
|
||||
<!--
|
||||
* FCKeditor - The text editor for internet
|
||||
* Copyright (C) 2003-2006 Frederico Caldeira Knabben
|
||||
*
|
||||
* Licensed under the terms of the GNU Lesser General Public License:
|
||||
* http://www.opensource.org/licenses/lgpl-license.php
|
||||
*
|
||||
* For further information visit:
|
||||
* http://www.fckeditor.net/
|
||||
*
|
||||
* "Support Open Source software. What about a donation today?"
|
||||
*
|
||||
* File Name: fck_button.html
|
||||
* Button dialog window.
|
||||
*
|
||||
* File Authors:
|
||||
* Frederico Caldeira Knabben (fredck@fckeditor.net)
|
||||
-->
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<title>Button Properties</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta content="noindex, nofollow" name="robots" />
|
||||
<script src="common/fck_dialog_common.js" type="text/javascript"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
var oEditor = window.parent.InnerDialogLoaded() ;
|
||||
|
||||
// Gets the document DOM
|
||||
var oDOM = oEditor.FCK.EditorDocument ;
|
||||
|
||||
var oActiveEl = oEditor.FCKSelection.GetSelectedElement() ;
|
||||
|
||||
window.onload = function()
|
||||
{
|
||||
// First of all, translate the dialog box texts
|
||||
oEditor.FCKLanguageManager.TranslatePage(document) ;
|
||||
|
||||
if ( oActiveEl && oActiveEl.tagName.toUpperCase() == "INPUT" && ( oActiveEl.type == "button" || oActiveEl.type == "submit" || oActiveEl.type == "reset" ) )
|
||||
{
|
||||
GetE('txtName').value = oActiveEl.name ;
|
||||
GetE('txtValue').value = oActiveEl.value ;
|
||||
GetE('txtType').value = oActiveEl.type ;
|
||||
|
||||
GetE('txtType').disabled = true ;
|
||||
}
|
||||
else
|
||||
oActiveEl = null ;
|
||||
|
||||
window.parent.SetOkButton( true ) ;
|
||||
}
|
||||
|
||||
function Ok()
|
||||
{
|
||||
if ( !oActiveEl )
|
||||
{
|
||||
oActiveEl = oEditor.FCK.EditorDocument.createElement( 'INPUT' ) ;
|
||||
oActiveEl.type = GetE('txtType').value ;
|
||||
oActiveEl = oEditor.FCK.InsertElementAndGetIt( oActiveEl ) ;
|
||||
}
|
||||
|
||||
oActiveEl.name = GetE('txtName').value ;
|
||||
SetAttribute( oActiveEl, 'value', GetE('txtValue').value ) ;
|
||||
|
||||
return true ;
|
||||
}
|
||||
|
||||
</script>
|
||||
</head>
|
||||
<body style="overflow: hidden">
|
||||
<table width="100%" style="height: 100%">
|
||||
<tr>
|
||||
<td align="center">
|
||||
<table border="0" cellpadding="0" cellspacing="0" width="80%">
|
||||
<tr>
|
||||
<td colspan="">
|
||||
<span fcklang="DlgCheckboxName">Name</span><br />
|
||||
<input type="text" size="20" id="txtName" style="width: 100%" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<span fcklang="DlgButtonText">Text (Value)</span><br />
|
||||
<input type="text" id="txtValue" style="width: 100%" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<span fcklang="DlgButtonType">Type</span><br />
|
||||
<select id="txtType">
|
||||
<option fcklang="DlgButtonTypeBtn" value="button" selected="selected">Button</option>
|
||||
<option fcklang="DlgButtonTypeSbm" value="submit">Submit</option>
|
||||
<option fcklang="DlgButtonTypeRst" value="reset">Reset</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
103
admin/FCKeditor/editor/dialog/fck_checkbox.html
Normal file
@ -0,0 +1,103 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
|
||||
<!--
|
||||
* FCKeditor - The text editor for internet
|
||||
* Copyright (C) 2003-2006 Frederico Caldeira Knabben
|
||||
*
|
||||
* Licensed under the terms of the GNU Lesser General Public License:
|
||||
* http://www.opensource.org/licenses/lgpl-license.php
|
||||
*
|
||||
* For further information visit:
|
||||
* http://www.fckeditor.net/
|
||||
*
|
||||
* "Support Open Source software. What about a donation today?"
|
||||
*
|
||||
* File Name: fck_checkbox.html
|
||||
* Checkbox dialog window.
|
||||
*
|
||||
* File Authors:
|
||||
* Frederico Caldeira Knabben (fredck@fckeditor.net)
|
||||
-->
|
||||
<html>
|
||||
<head>
|
||||
<title>Checkbox Properties</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta content="noindex, nofollow" name="robots">
|
||||
<script src="common/fck_dialog_common.js" type="text/javascript"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
var oEditor = window.parent.InnerDialogLoaded() ;
|
||||
|
||||
// Gets the document DOM
|
||||
var oDOM = oEditor.FCK.EditorDocument ;
|
||||
|
||||
var oActiveEl = oEditor.FCKSelection.GetSelectedElement() ;
|
||||
|
||||
window.onload = function()
|
||||
{
|
||||
// First of all, translate the dialog box texts
|
||||
oEditor.FCKLanguageManager.TranslatePage(document) ;
|
||||
|
||||
if ( oActiveEl && oActiveEl.tagName == 'INPUT' && oActiveEl.type == 'checkbox' )
|
||||
{
|
||||
GetE('txtName').value = oActiveEl.name ;
|
||||
GetE('txtValue').value = oEditor.FCKBrowserInfo.IsIE ? oActiveEl.value : GetAttribute( oActiveEl, 'value' ) ;
|
||||
GetE('txtSelected').checked = oActiveEl.checked ;
|
||||
}
|
||||
else
|
||||
oActiveEl = null ;
|
||||
|
||||
window.parent.SetOkButton( true ) ;
|
||||
}
|
||||
|
||||
function Ok()
|
||||
{
|
||||
if ( !oActiveEl )
|
||||
{
|
||||
oActiveEl = oEditor.FCK.EditorDocument.createElement( 'INPUT' ) ;
|
||||
oActiveEl.type = 'checkbox' ;
|
||||
oActiveEl = oEditor.FCK.InsertElementAndGetIt( oActiveEl ) ;
|
||||
}
|
||||
|
||||
if ( GetE('txtName').value.length > 0 )
|
||||
oActiveEl.name = GetE('txtName').value ;
|
||||
|
||||
if ( oEditor.FCKBrowserInfo.IsIE )
|
||||
oActiveEl.value = GetE('txtValue').value ;
|
||||
else
|
||||
SetAttribute( oActiveEl, 'value', GetE('txtValue').value ) ;
|
||||
|
||||
var bIsChecked = GetE('txtSelected').checked ;
|
||||
SetAttribute( oActiveEl, 'checked', bIsChecked ? 'checked' : null ) ; // For Firefox
|
||||
oActiveEl.checked = bIsChecked ;
|
||||
|
||||
return true ;
|
||||
}
|
||||
|
||||
</script>
|
||||
</head>
|
||||
<body style="OVERFLOW: hidden" scroll="no">
|
||||
<table height="100%" width="100%">
|
||||
<tr>
|
||||
<td align="center">
|
||||
<table border="0" cellpadding="0" cellspacing="0" width="80%">
|
||||
<tr>
|
||||
<td>
|
||||
<span fckLang="DlgCheckboxName">Name</span><br>
|
||||
<input type="text" size="20" id="txtName" style="WIDTH: 100%">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<span fckLang="DlgCheckboxValue">Value</span><br>
|
||||
<input type="text" size="20" id="txtValue" style="WIDTH: 100%">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><input type="checkbox" id="txtSelected"><label for="txtSelected" fckLang="DlgCheckboxSelected">Checked</label></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
167
admin/FCKeditor/editor/dialog/fck_colorselector.html
Normal file
@ -0,0 +1,167 @@
|
||||
<!--
|
||||
* FCKeditor - The text editor for internet
|
||||
* Copyright (C) 2003-2006 Frederico Caldeira Knabben
|
||||
*
|
||||
* Licensed under the terms of the GNU Lesser General Public License:
|
||||
* http://www.opensource.org/licenses/lgpl-license.php
|
||||
*
|
||||
* For further information visit:
|
||||
* http://www.fckeditor.net/
|
||||
*
|
||||
* "Support Open Source software. What about a donation today?"
|
||||
*
|
||||
* File Name: fck_colorselector.html
|
||||
* Color Selection dialog window.
|
||||
*
|
||||
* File Authors:
|
||||
* Frederico Caldeira Knabben (fredck@fckeditor.net)
|
||||
-->
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="robots" content="noindex, nofollow" />
|
||||
<style TYPE="text/css">
|
||||
#ColorTable { cursor: pointer ; cursor: hand ; }
|
||||
#hicolor { height: 74px ; width: 74px ; border-width: 1px ; border-style: solid ; }
|
||||
#hicolortext { width: 75px ; text-align: right ; margin-bottom: 7px ; }
|
||||
#selhicolor { height: 20px ; width: 74px ; border-width: 1px ; border-style: solid ; }
|
||||
#selcolor { width: 75px ; height: 20px ; margin-top: 0px ; margin-bottom: 7px ; }
|
||||
#btnClear { width: 75px ; height: 22px ; margin-bottom: 6px ; }
|
||||
.ColorCell { height: 15px ; width: 15px ; }
|
||||
</style>
|
||||
<script type="text/javascript">
|
||||
|
||||
var oEditor = window.parent.InnerDialogLoaded() ;
|
||||
|
||||
function OnLoad()
|
||||
{
|
||||
// First of all, translate the dialog box texts
|
||||
oEditor.FCKLanguageManager.TranslatePage(document) ;
|
||||
|
||||
CreateColorTable() ;
|
||||
|
||||
window.parent.SetOkButton( true ) ;
|
||||
window.parent.SetAutoSize( true ) ;
|
||||
}
|
||||
|
||||
function CreateColorTable()
|
||||
{
|
||||
// Get the target table.
|
||||
var oTable = document.getElementById('ColorTable') ;
|
||||
|
||||
// Create the base colors array.
|
||||
var aColors = ['00','33','66','99','cc','ff'] ;
|
||||
|
||||
// This function combines two ranges of three values from the color array into a row.
|
||||
function AppendColorRow( rangeA, rangeB )
|
||||
{
|
||||
for ( var i = rangeA ; i < rangeA + 3 ; i++ )
|
||||
{
|
||||
var oRow = oTable.insertRow(-1) ;
|
||||
|
||||
for ( var j = rangeB ; j < rangeB + 3 ; j++ )
|
||||
{
|
||||
for ( var n = 0 ; n < 6 ; n++ )
|
||||
{
|
||||
AppendColorCell( oRow, '#' + aColors[j] + aColors[n] + aColors[i] ) ;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// This function create a single color cell in the color table.
|
||||
function AppendColorCell( targetRow, color )
|
||||
{
|
||||
var oCell = targetRow.insertCell(-1) ;
|
||||
oCell.className = 'ColorCell' ;
|
||||
oCell.bgColor = color ;
|
||||
|
||||
oCell.onmouseover = function()
|
||||
{
|
||||
document.getElementById('hicolor').style.backgroundColor = this.bgColor ;
|
||||
document.getElementById('hicolortext').innerHTML = this.bgColor ;
|
||||
}
|
||||
|
||||
oCell.onclick = function()
|
||||
{
|
||||
document.getElementById('selhicolor').style.backgroundColor = this.bgColor ;
|
||||
document.getElementById('selcolor').value = this.bgColor ;
|
||||
}
|
||||
}
|
||||
|
||||
AppendColorRow( 0, 0 ) ;
|
||||
AppendColorRow( 3, 0 ) ;
|
||||
AppendColorRow( 0, 3 ) ;
|
||||
AppendColorRow( 3, 3 ) ;
|
||||
|
||||
// Create the last row.
|
||||
var oRow = oTable.insertRow(-1) ;
|
||||
|
||||
// Create the gray scale colors cells.
|
||||
for ( var n = 0 ; n < 6 ; n++ )
|
||||
{
|
||||
AppendColorCell( oRow, '#' + aColors[n] + aColors[n] + aColors[n] ) ;
|
||||
}
|
||||
|
||||
// Fill the row with black cells.
|
||||
for ( var i = 0 ; i < 12 ; i++ )
|
||||
{
|
||||
AppendColorCell( oRow, '#000000' ) ;
|
||||
}
|
||||
}
|
||||
|
||||
function Clear()
|
||||
{
|
||||
document.getElementById('selhicolor').style.backgroundColor = '' ;
|
||||
document.getElementById('selcolor').value = '' ;
|
||||
}
|
||||
|
||||
function ClearActual()
|
||||
{
|
||||
document.getElementById('hicolor').style.backgroundColor = '' ;
|
||||
document.getElementById('hicolortext').innerHTML = ' ' ;
|
||||
}
|
||||
|
||||
function UpdateColor()
|
||||
{
|
||||
try { document.getElementById('selhicolor').style.backgroundColor = document.getElementById('selcolor').value ; }
|
||||
catch (e) { Clear() ; }
|
||||
}
|
||||
|
||||
function Ok()
|
||||
{
|
||||
if ( typeof(window.parent.dialogArguments.CustomValue) == 'function' )
|
||||
window.parent.dialogArguments.CustomValue( document.getElementById('selcolor').value ) ;
|
||||
|
||||
return true ;
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body onload="OnLoad()" scroll="no" style="OVERFLOW: hidden">
|
||||
<table cellpadding="0" cellspacing="0" border="0" width="100%" height="100%">
|
||||
<tr>
|
||||
<td align="center" valign="middle">
|
||||
<table border="0" cellspacing="5" cellpadding="0" width="100%">
|
||||
<tr>
|
||||
<td valign="top" align="center" nowrap width="100%">
|
||||
<table id="ColorTable" border="0" cellspacing="0" cellpadding="0" width="270" onmouseout="ClearActual();">
|
||||
</table>
|
||||
</td>
|
||||
<td valign="top" align="left" nowrap>
|
||||
<span fckLang="DlgColorHighlight">Highlight</span>
|
||||
<div id="hicolor"></div>
|
||||
<div id="hicolortext"> </div>
|
||||
<span fckLang="DlgColorSelected">Selected</span>
|
||||
<div id="selhicolor"></div>
|
||||
<input id="selcolor" type="text" maxlength="20" onchange="UpdateColor();">
|
||||
<br>
|
||||
<input id="btnClear" type="button" fckLang="DlgColorBtnClear" value="Clear" onclick="Clear();" />
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
591
admin/FCKeditor/editor/dialog/fck_docprops.html
Normal file
@ -0,0 +1,591 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||
<!--
|
||||
* FCKeditor - The text editor for internet
|
||||
* Copyright (C) 2003-2006 Frederico Caldeira Knabben
|
||||
*
|
||||
* Licensed under the terms of the GNU Lesser General Public License:
|
||||
* http://www.opensource.org/licenses/lgpl-license.php
|
||||
*
|
||||
* For further information visit:
|
||||
* http://www.fckeditor.net/
|
||||
*
|
||||
* "Support Open Source software. What about a donation today?"
|
||||
*
|
||||
* File Name: fck_docprops.html
|
||||
* Link dialog window.
|
||||
*
|
||||
* File Authors:
|
||||
* Frederico Caldeira Knabben (fredck@fckeditor.net)
|
||||
-->
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<title></title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta content="noindex, nofollow" name="robots" />
|
||||
<script src="common/fck_dialog_common.js" type="text/javascript"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
var oEditor = window.parent.InnerDialogLoaded() ;
|
||||
var FCK = oEditor.FCK ;
|
||||
var FCKLang = oEditor.FCKLang ;
|
||||
var FCKConfig = oEditor.FCKConfig ;
|
||||
|
||||
//#### Dialog Tabs
|
||||
|
||||
// Set the dialog tabs.
|
||||
window.parent.AddTab( 'General' , FCKLang.DlgDocGeneralTab ) ;
|
||||
window.parent.AddTab( 'Background' , FCKLang.DlgDocBackTab ) ;
|
||||
window.parent.AddTab( 'Colors' , FCKLang.DlgDocColorsTab ) ;
|
||||
window.parent.AddTab( 'Meta' , FCKLang.DlgDocMetaTab ) ;
|
||||
|
||||
// Function called when a dialog tag is selected.
|
||||
function OnDialogTabChange( tabCode )
|
||||
{
|
||||
ShowE( 'divGeneral' , ( tabCode == 'General' ) ) ;
|
||||
ShowE( 'divBackground' , ( tabCode == 'Background' ) ) ;
|
||||
ShowE( 'divColors' , ( tabCode == 'Colors' ) ) ;
|
||||
ShowE( 'divMeta' , ( tabCode == 'Meta' ) ) ;
|
||||
|
||||
ShowE( 'ePreview' , ( tabCode == 'Background' || tabCode == 'Colors' ) ) ;
|
||||
}
|
||||
|
||||
//#### Get Base elements from the document: BEGIN
|
||||
|
||||
// The HTML element of the document.
|
||||
var oHTML = FCK.EditorDocument.getElementsByTagName('html')[0] ;
|
||||
|
||||
// The HEAD element of the document.
|
||||
var oHead = oHTML.getElementsByTagName('head')[0] ;
|
||||
|
||||
var oBody = FCK.EditorDocument.body ;
|
||||
|
||||
// This object contains all META tags defined in the document.
|
||||
var oMetaTags = new Object() ;
|
||||
|
||||
// Get all META tags defined in the document.
|
||||
var aMetas = oHead.getElementsByTagName('meta') ;
|
||||
|
||||
// Loop throw all METAs and put it in the HashTable.
|
||||
for ( var i = 0 ; i < aMetas.length ; i++ )
|
||||
{
|
||||
// Try to get the "name" attribute.
|
||||
var sName = GetAttribute( aMetas[i], 'name', GetAttribute( aMetas[i], '___fcktoreplace:name', '' ) ) ;
|
||||
|
||||
// If no "name", try with the "http-equiv" attribute.
|
||||
if ( sName.length == 0 )
|
||||
{
|
||||
if ( document.all )
|
||||
{
|
||||
// Get the http-equiv value from the outerHTML.
|
||||
var oHttpEquivMatch = aMetas[i].outerHTML.match( oEditor.FCKRegexLib.MetaHttpEquiv ) ;
|
||||
if ( oHttpEquivMatch )
|
||||
sName = oHttpEquivMatch[1] ;
|
||||
}
|
||||
else
|
||||
sName = GetAttribute( aMetas[i], 'http-equiv', '' ) ;
|
||||
}
|
||||
|
||||
if ( sName.length > 0 )
|
||||
oMetaTags[ sName.toLowerCase() ] = aMetas[i] ;
|
||||
}
|
||||
|
||||
//#### END
|
||||
|
||||
// Set a META tag in the document.
|
||||
function SetMetadata( name, content, isHttp )
|
||||
{
|
||||
if ( content.length == 0 )
|
||||
{
|
||||
RemoveMetadata( name ) ;
|
||||
return ;
|
||||
}
|
||||
|
||||
var oMeta = oMetaTags[ name.toLowerCase() ] ;
|
||||
|
||||
if ( !oMeta )
|
||||
{
|
||||
oMeta = oHead.appendChild( FCK.EditorDocument.createElement('META') ) ;
|
||||
|
||||
if ( isHttp )
|
||||
SetAttribute( oMeta, 'http-equiv', name ) ;
|
||||
else
|
||||
{
|
||||
// On IE, it is not possible to set the "name" attribute of the META tag.
|
||||
// So a temporary attribute is used and it is replaced when getting the
|
||||
// editor's HTML/XHTML value. This is sad, I know :(
|
||||
if ( document.all )
|
||||
SetAttribute( oMeta, '___fcktoreplace:name', name ) ;
|
||||
else
|
||||
SetAttribute( oMeta, 'name', name ) ;
|
||||
}
|
||||
|
||||
oMetaTags[ name.toLowerCase() ] = oMeta ;
|
||||
}
|
||||
|
||||
oMeta.content = content ;
|
||||
}
|
||||
|
||||
function RemoveMetadata( name )
|
||||
{
|
||||
var oMeta = oMetaTags[ name.toLowerCase() ] ;
|
||||
|
||||
if ( oMeta && oMeta != null )
|
||||
{
|
||||
oMeta.parentNode.removeChild( oMeta ) ;
|
||||
oMetaTags[ name.toLowerCase() ] = null ;
|
||||
}
|
||||
}
|
||||
|
||||
function GetMetadata( name )
|
||||
{
|
||||
var oMeta = oMetaTags[ name.toLowerCase() ] ;
|
||||
|
||||
if ( oMeta && oMeta != null )
|
||||
return oMeta.content ;
|
||||
else
|
||||
return '' ;
|
||||
}
|
||||
|
||||
window.onload = function ()
|
||||
{
|
||||
// Show/Hide the "Browse Server" button.
|
||||
GetE('tdBrowse').style.display = oEditor.FCKConfig.ImageBrowser ? "" : "none";
|
||||
|
||||
// First of all, translate the dialog box texts
|
||||
oEditor.FCKLanguageManager.TranslatePage( document ) ;
|
||||
|
||||
FillFields() ;
|
||||
|
||||
UpdatePreview() ;
|
||||
|
||||
// Show the "Ok" button.
|
||||
window.parent.SetOkButton( true ) ;
|
||||
|
||||
window.parent.SetAutoSize( true ) ;
|
||||
}
|
||||
|
||||
function FillFields()
|
||||
{
|
||||
// ### General Info
|
||||
GetE('txtPageTitle').value = FCK.EditorDocument.title ;
|
||||
|
||||
GetE('selDirection').value = GetAttribute( oHTML, 'dir', '' ) ;
|
||||
GetE('txtLang').value = GetAttribute( oHTML, 'xml:lang', GetAttribute( oHTML, 'lang', '' ) ) ; // "xml:lang" takes precedence to "lang".
|
||||
|
||||
// Character Set Encoding.
|
||||
// if ( document.all )
|
||||
// var sCharSet = FCK.EditorDocument.charset ;
|
||||
// else
|
||||
var sCharSet = GetMetadata( 'Content-Type' ) ;
|
||||
|
||||
if ( sCharSet != null && sCharSet.length > 0 )
|
||||
{
|
||||
// if ( !document.all )
|
||||
sCharSet = sCharSet.match( /[^=]*$/ ) ;
|
||||
|
||||
GetE('selCharSet').value = sCharSet ;
|
||||
|
||||
if ( GetE('selCharSet').selectedIndex == -1 )
|
||||
{
|
||||
GetE('selCharSet').value = '...' ;
|
||||
GetE('txtCustomCharSet').value = sCharSet ;
|
||||
|
||||
CheckOther( GetE('selCharSet'), 'txtCustomCharSet' ) ;
|
||||
}
|
||||
}
|
||||
|
||||
// Document Type.
|
||||
if ( FCK.DocTypeDeclaration && FCK.DocTypeDeclaration.length > 0 )
|
||||
{
|
||||
GetE('selDocType').value = FCK.DocTypeDeclaration ;
|
||||
|
||||
if ( GetE('selDocType').selectedIndex == -1 )
|
||||
{
|
||||
GetE('selDocType').value = '...' ;
|
||||
GetE('txtDocType').value = FCK.DocTypeDeclaration ;
|
||||
|
||||
CheckOther( GetE('selDocType'), 'txtDocType' ) ;
|
||||
}
|
||||
}
|
||||
|
||||
// Document Type.
|
||||
GetE('chkIncXHTMLDecl').checked = ( FCK.XmlDeclaration && FCK.XmlDeclaration.length > 0 ) ;
|
||||
|
||||
// ### Background
|
||||
GetE('txtBackColor').value = GetAttribute( oBody, 'bgColor' , '' ) ;
|
||||
GetE('txtBackImage').value = GetAttribute( oBody, 'background' , '' ) ;
|
||||
GetE('chkBackNoScroll').checked = ( GetAttribute( oBody, 'bgProperties', '' ).toLowerCase() == 'fixed' ) ;
|
||||
|
||||
// ### Colors
|
||||
GetE('txtColorText').value = GetAttribute( oBody, 'text' , '' ) ;
|
||||
GetE('txtColorLink').value = GetAttribute( oBody, 'link' , '' ) ;
|
||||
GetE('txtColorVisited').value = GetAttribute( oBody, 'vLink' , '' ) ;
|
||||
GetE('txtColorActive').value = GetAttribute( oBody, 'aLink' , '' ) ;
|
||||
|
||||
// ### Margins
|
||||
GetE('txtMarginTop').value = GetAttribute( oBody, 'topMargin' , '' ) ;
|
||||
GetE('txtMarginLeft').value = GetAttribute( oBody, 'leftMargin' , '' ) ;
|
||||
GetE('txtMarginRight').value = GetAttribute( oBody, 'rightMargin' , '' ) ;
|
||||
GetE('txtMarginBottom').value = GetAttribute( oBody, 'bottomMargin' , '' ) ;
|
||||
|
||||
// ### Meta Data
|
||||
GetE('txtMetaKeywords').value = GetMetadata( 'keywords' ) ;
|
||||
GetE('txtMetaDescription').value = GetMetadata( 'description' ) ;
|
||||
GetE('txtMetaAuthor').value = GetMetadata( 'author' ) ;
|
||||
GetE('txtMetaCopyright').value = GetMetadata( 'copyright' ) ;
|
||||
}
|
||||
|
||||
// Called when the "Ok" button is clicked.
|
||||
function Ok()
|
||||
{
|
||||
// ### General Info
|
||||
FCK.EditorDocument.title = GetE('txtPageTitle').value ;
|
||||
|
||||
var oHTML = FCK.EditorDocument.getElementsByTagName('html')[0] ;
|
||||
|
||||
SetAttribute( oHTML, 'dir' , GetE('selDirection').value ) ;
|
||||
SetAttribute( oHTML, 'lang' , GetE('txtLang').value ) ;
|
||||
SetAttribute( oHTML, 'xml:lang' , GetE('txtLang').value ) ;
|
||||
|
||||
// Character Set Enconding.
|
||||
var sCharSet = GetE('selCharSet').value ;
|
||||
if ( sCharSet == '...' )
|
||||
sCharSet = GetE('txtCustomCharSet').value ;
|
||||
|
||||
if ( sCharSet.length > 0 )
|
||||
sCharSet = 'text/html; charset=' + sCharSet ;
|
||||
|
||||
// if ( document.all )
|
||||
// FCK.EditorDocument.charset = sCharSet ;
|
||||
// else
|
||||
SetMetadata( 'Content-Type', sCharSet, true ) ;
|
||||
|
||||
// Document Type
|
||||
var sDocType = GetE('selDocType').value ;
|
||||
if ( sDocType == '...' )
|
||||
sDocType = GetE('txtDocType').value ;
|
||||
|
||||
FCK.DocTypeDeclaration = sDocType ;
|
||||
|
||||
// XHTML Declarations.
|
||||
if ( GetE('chkIncXHTMLDecl').checked )
|
||||
{
|
||||
if ( sCharSet.length == 0 )
|
||||
sCharSet = 'utf-8' ;
|
||||
|
||||
FCK.XmlDeclaration = '<?xml version="1.0" encoding="' + sCharSet + '"?>' ;
|
||||
|
||||
SetAttribute( oHTML, 'xmlns', 'http://www.w3.org/1999/xhtml' ) ;
|
||||
}
|
||||
else
|
||||
{
|
||||
FCK.XmlDeclaration = null ;
|
||||
oHTML.removeAttribute( 'xmlns', 0 ) ;
|
||||
}
|
||||
|
||||
// ### Background
|
||||
SetAttribute( oBody, 'bgcolor' , GetE('txtBackColor').value ) ;
|
||||
SetAttribute( oBody, 'background' , GetE('txtBackImage').value ) ;
|
||||
SetAttribute( oBody, 'bgproperties' , GetE('chkBackNoScroll').checked ? 'fixed' : '' ) ;
|
||||
|
||||
// ### Colors
|
||||
SetAttribute( oBody, 'text' , GetE('txtColorText').value ) ;
|
||||
SetAttribute( oBody, 'link' , GetE('txtColorLink').value ) ;
|
||||
SetAttribute( oBody, 'vlink', GetE('txtColorVisited').value ) ;
|
||||
SetAttribute( oBody, 'alink', GetE('txtColorActive').value ) ;
|
||||
|
||||
// ### Margins
|
||||
SetAttribute( oBody, 'topmargin' , GetE('txtMarginTop').value ) ;
|
||||
SetAttribute( oBody, 'leftmargin' , GetE('txtMarginLeft').value ) ;
|
||||
SetAttribute( oBody, 'rightmargin' , GetE('txtMarginRight').value ) ;
|
||||
SetAttribute( oBody, 'bottommargin' , GetE('txtMarginBottom').value ) ;
|
||||
|
||||
// ### Meta data
|
||||
SetMetadata( 'keywords' , GetE('txtMetaKeywords').value ) ;
|
||||
SetMetadata( 'description' , GetE('txtMetaDescription').value ) ;
|
||||
SetMetadata( 'author' , GetE('txtMetaAuthor').value ) ;
|
||||
SetMetadata( 'copyright' , GetE('txtMetaCopyright').value ) ;
|
||||
|
||||
return true ;
|
||||
}
|
||||
|
||||
var bPreviewIsLoaded = false ;
|
||||
var oPreviewWindow ;
|
||||
var oPreviewBody ;
|
||||
|
||||
// Called by the Preview page when loaded.
|
||||
function OnPreviewLoad( previewWindow, previewBody )
|
||||
{
|
||||
oPreviewWindow = previewWindow ;
|
||||
oPreviewBody = previewBody ;
|
||||
|
||||
bPreviewIsLoaded = true ;
|
||||
UpdatePreview() ;
|
||||
}
|
||||
|
||||
function UpdatePreview()
|
||||
{
|
||||
if ( !bPreviewIsLoaded )
|
||||
return ;
|
||||
|
||||
// ### Background
|
||||
SetAttribute( oPreviewBody, 'bgcolor' , GetE('txtBackColor').value ) ;
|
||||
SetAttribute( oPreviewBody, 'background' , GetE('txtBackImage').value ) ;
|
||||
SetAttribute( oPreviewBody, 'bgproperties' , GetE('chkBackNoScroll').checked ? 'fixed' : '' ) ;
|
||||
|
||||
// ### Colors
|
||||
SetAttribute( oPreviewBody, 'text', GetE('txtColorText').value ) ;
|
||||
|
||||
oPreviewWindow.SetLinkColor( GetE('txtColorLink').value ) ;
|
||||
oPreviewWindow.SetVisitedColor( GetE('txtColorVisited').value ) ;
|
||||
oPreviewWindow.SetActiveColor( GetE('txtColorActive').value ) ;
|
||||
}
|
||||
|
||||
function CheckOther( combo, txtField )
|
||||
{
|
||||
var bNotOther = ( combo.value != '...' ) ;
|
||||
|
||||
GetE(txtField).style.backgroundColor = ( bNotOther ? '#cccccc' : '' ) ;
|
||||
GetE(txtField).disabled = bNotOther ;
|
||||
}
|
||||
|
||||
function SetColor( inputId, color )
|
||||
{
|
||||
GetE( inputId ).value = color + '' ;
|
||||
UpdatePreview() ;
|
||||
}
|
||||
|
||||
function SelectBackColor( color ) { SetColor('txtBackColor', color ) ; }
|
||||
function SelectColorText( color ) { SetColor('txtColorText', color ) ; }
|
||||
function SelectColorLink( color ) { SetColor('txtColorLink', color ) ; }
|
||||
function SelectColorVisited( color ) { SetColor('txtColorVisited', color ) ; }
|
||||
function SelectColorActive( color ) { SetColor('txtColorActive', color ) ; }
|
||||
|
||||
function SelectColor( wich )
|
||||
{
|
||||
switch ( wich )
|
||||
{
|
||||
case 'Back' : oEditor.FCKDialog.OpenDialog( 'FCKDialog_Color', FCKLang.DlgColorTitle, 'dialog/fck_colorselector.html', 400, 330, SelectBackColor, window ) ; return ;
|
||||
case 'ColorText' : oEditor.FCKDialog.OpenDialog( 'FCKDialog_Color', FCKLang.DlgColorTitle, 'dialog/fck_colorselector.html', 400, 330, SelectColorText, window ) ; return ;
|
||||
case 'ColorLink' : oEditor.FCKDialog.OpenDialog( 'FCKDialog_Color', FCKLang.DlgColorTitle, 'dialog/fck_colorselector.html', 400, 330, SelectColorLink, window ) ; return ;
|
||||
case 'ColorVisited' : oEditor.FCKDialog.OpenDialog( 'FCKDialog_Color', FCKLang.DlgColorTitle, 'dialog/fck_colorselector.html', 400, 330, SelectColorVisited, window ) ; return ;
|
||||
case 'ColorActive' : oEditor.FCKDialog.OpenDialog( 'FCKDialog_Color', FCKLang.DlgColorTitle, 'dialog/fck_colorselector.html', 400, 330, SelectColorActive, window ) ; return ;
|
||||
}
|
||||
}
|
||||
|
||||
function BrowseServerBack()
|
||||
{
|
||||
OpenFileBrowser( FCKConfig.ImageBrowserURL, FCKConfig.ImageBrowserWindowWidth, FCKConfig.ImageBrowserWindowHeight ) ;
|
||||
}
|
||||
|
||||
function SetUrl( url )
|
||||
{
|
||||
GetE('txtBackImage').value = url ;
|
||||
UpdatePreview() ;
|
||||
}
|
||||
|
||||
</script>
|
||||
</head>
|
||||
<body style="overflow: hidden">
|
||||
<table cellspacing="0" cellpadding="0" width="100%" border="0" style="height: 100%">
|
||||
<tr>
|
||||
<td valign="top" style="height: 100%">
|
||||
<div id="divGeneral">
|
||||
<span fcklang="DlgDocPageTitle">Page Title</span><br />
|
||||
<input id="txtPageTitle" style="width: 100%" type="text" />
|
||||
<br />
|
||||
<table cellspacing="0" cellpadding="0" border="0">
|
||||
<tr>
|
||||
<td>
|
||||
<span fcklang="DlgDocLangDir">Language Direction</span><br />
|
||||
<select id="selDirection">
|
||||
<option value="" selected="selected"></option>
|
||||
<option value="ltr" fcklang="DlgDocLangDirLTR">Left to Right (LTR)</option>
|
||||
<option value="rtl" fcklang="DlgDocLangDirRTL">Right to Left (RTL)</option>
|
||||
</select>
|
||||
</td>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
<span fcklang="DlgDocLangCode">Language Code</span><br />
|
||||
<input id="txtLang" type="text" />
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br />
|
||||
<table cellspacing="0" cellpadding="0" width="100%" border="0">
|
||||
<tr>
|
||||
<td style="white-space: nowrap">
|
||||
<span fcklang="DlgDocCharSet">Character Set Encoding</span><br />
|
||||
<select id="selCharSet" onchange="CheckOther( this, 'txtCustomCharSet' );">
|
||||
<option value="" selected="selected"></option>
|
||||
<option value="us-ascii">ASCII</option>
|
||||
<option fcklang="DlgDocCharSetCE" value="iso-8859-2">Central European</option>
|
||||
<option fcklang="DlgDocCharSetCT" value="big5">Chinese Traditional (Big5)</option>
|
||||
<option fcklang="DlgDocCharSetCR" value="iso-8859-5">Cyrillic</option>
|
||||
<option fcklang="DlgDocCharSetGR" value="iso-8859-7">Greek</option>
|
||||
<option fcklang="DlgDocCharSetJP" value="iso-2022-jp">Japanese</option>
|
||||
<option fcklang="DlgDocCharSetKR" value="iso-2022-kr">Korean</option>
|
||||
<option fcklang="DlgDocCharSetTR" value="iso-8859-9">Turkish</option>
|
||||
<option fcklang="DlgDocCharSetUN" value="utf-8">Unicode (UTF-8)</option>
|
||||
<option fcklang="DlgDocCharSetWE" value="iso-8859-1">Western European</option>
|
||||
<option fcklang="DlgOpOther" value="..."><Other></option>
|
||||
</select>
|
||||
</td>
|
||||
<td>
|
||||
</td>
|
||||
<td width="100%">
|
||||
<span fcklang="DlgDocCharSetOther">Other Character Set Encoding</span><br />
|
||||
<input id="txtCustomCharSet" style="width: 100%; background-color: #cccccc" disabled="disabled"
|
||||
type="text" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td nowrap="nowrap">
|
||||
<span fcklang="DlgDocDocType">Document Type Heading</span><br />
|
||||
<select id="selDocType" name="selDocType" onchange="CheckOther( this, 'txtDocType' );">
|
||||
<option value="" selected="selected"></option>
|
||||
<option value='<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">'>HTML
|
||||
4.01 Transitional</option>
|
||||
<option value='<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">'>
|
||||
HTML 4.01 Strict</option>
|
||||
<option value='<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">'>
|
||||
HTML 4.01 Frameset</option>
|
||||
<option value='<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">'>
|
||||
XHTML 1.0 Transitional</option>
|
||||
<option value='<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">'>
|
||||
XHTML 1.0 Strict</option>
|
||||
<option value='<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">'>
|
||||
XHTML 1.0 Frameset</option>
|
||||
<option value='<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">'>
|
||||
XHTML 1.1</option>
|
||||
<option value='<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">'>HTML 3.2</option>
|
||||
<option value='<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">'>HTML 2.0</option>
|
||||
<option value="..." fcklang="DlgOpOther"><Other></option>
|
||||
</select>
|
||||
</td>
|
||||
<td>
|
||||
</td>
|
||||
<td width="100%">
|
||||
<span fcklang="DlgDocDocTypeOther">Other Document Type Heading</span><br />
|
||||
<input id="txtDocType" style="width: 100%; background-color: #cccccc" disabled="disabled"
|
||||
type="text" />
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br />
|
||||
<input id="chkIncXHTMLDecl" type="checkbox" />
|
||||
<label for="chkIncXHTMLDecl" fcklang="DlgDocIncXHTML">
|
||||
Include XHTML Declarations</label>
|
||||
</div>
|
||||
<div id="divBackground" style="display: none">
|
||||
<span fcklang="DlgDocBgColor">Background Color</span><br />
|
||||
<input id="txtBackColor" type="text" onchange="UpdatePreview();" onkeyup="UpdatePreview();" /> <input
|
||||
id="btnSelBackColor" onclick="SelectColor( 'Back' )" type="button" value="Select..."
|
||||
fcklang="DlgCellBtnSelect" /><br />
|
||||
<br />
|
||||
<span fcklang="DlgDocBgImage">Background Image URL</span><br />
|
||||
<table cellspacing="0" cellpadding="0" width="100%" border="0">
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<input id="txtBackImage" style="width: 100%" type="text" onchange="UpdatePreview();"
|
||||
onkeyup="UpdatePreview();" /></td>
|
||||
<td id="tdBrowse" nowrap="nowrap">
|
||||
<input id="btnBrowse" onclick="BrowseServerBack();" type="button" fcklang="DlgBtnBrowseServer"
|
||||
value="Browse Server" /></td>
|
||||
</tr>
|
||||
</table>
|
||||
<input id="chkBackNoScroll" type="checkbox" onclick="UpdatePreview();" />
|
||||
<label for="chkBackNoScroll" fcklang="DlgDocBgNoScroll">
|
||||
Nonscrolling Background</label>
|
||||
</div>
|
||||
<div id="divColors" style="display: none">
|
||||
<table cellspacing="0" cellpadding="0" width="100%" border="0">
|
||||
<tr>
|
||||
<td>
|
||||
<span fcklang="DlgDocCText">Text</span><br />
|
||||
<input id="txtColorText" type="text" onchange="UpdatePreview();" onkeyup="UpdatePreview();" /><input
|
||||
onclick="SelectColor( 'ColorText' )" type="button" value="Select..." fcklang="DlgCellBtnSelect" />
|
||||
<br />
|
||||
<span fcklang="DlgDocCLink">Link</span><br />
|
||||
<input id="txtColorLink" type="text" onchange="UpdatePreview();" onkeyup="UpdatePreview();" /><input
|
||||
onclick="SelectColor( 'ColorLink' )" type="button" value="Select..." fcklang="DlgCellBtnSelect" />
|
||||
<br />
|
||||
<span fcklang="DlgDocCVisited">Visited Link</span><br />
|
||||
<input id="txtColorVisited" type="text" onchange="UpdatePreview();" onkeyup="UpdatePreview();" /><input
|
||||
onclick="SelectColor( 'ColorVisited' )" type="button" value="Select..." fcklang="DlgCellBtnSelect" />
|
||||
<br />
|
||||
<span fcklang="DlgDocCActive">Active Link</span><br />
|
||||
<input id="txtColorActive" type="text" onchange="UpdatePreview();" onkeyup="UpdatePreview();" /><input
|
||||
onclick="SelectColor( 'ColorActive' )" type="button" value="Select..." fcklang="DlgCellBtnSelect" />
|
||||
</td>
|
||||
<td valign="middle" align="center">
|
||||
<table cellspacing="2" cellpadding="0" border="0">
|
||||
<tr>
|
||||
<td>
|
||||
<span fcklang="DlgDocMargins">Page Margins</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="border: #000000 1px solid; padding: 5px">
|
||||
<table cellpadding="0" cellspacing="0" border="0" dir="ltr">
|
||||
<tr>
|
||||
<td align="center" colspan="3">
|
||||
<span fcklang="DlgDocMaTop">Top</span><br />
|
||||
<input id="txtMarginTop" type="text" size="3" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="left">
|
||||
<span fcklang="DlgDocMaLeft">Left</span><br />
|
||||
<input id="txtMarginLeft" type="text" size="3" />
|
||||
</td>
|
||||
<td>
|
||||
</td>
|
||||
<td align="right">
|
||||
<span fcklang="DlgDocMaRight">Right</span><br />
|
||||
<input id="txtMarginRight" type="text" size="3" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" colspan="3">
|
||||
<span fcklang="DlgDocMaBottom">Bottom</span><br />
|
||||
<input id="txtMarginBottom" type="text" size="3" />
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div id="divMeta" style="display: none">
|
||||
<span fcklang="DlgDocMeIndex">Document Indexing Keywords (comma separated)</span><br />
|
||||
<textarea id="txtMetaKeywords" style="width: 100%" rows="2" cols="20"></textarea>
|
||||
<br />
|
||||
<span fcklang="DlgDocMeDescr">Document Description</span><br />
|
||||
<textarea id="txtMetaDescription" style="width: 100%" rows="4" cols="20"></textarea>
|
||||
<br />
|
||||
<span fcklang="DlgDocMeAuthor">Author</span><br />
|
||||
<input id="txtMetaAuthor" style="width: 100%" type="text" /><br />
|
||||
<br />
|
||||
<span fcklang="DlgDocMeCopy">Copyright</span><br />
|
||||
<input id="txtMetaCopyright" type="text" style="width: 100%" />
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="ePreview" style="display: none">
|
||||
<td>
|
||||
<span fcklang="DlgDocPreview">Preview</span><br />
|
||||
<iframe id="frmPreview" src="fck_docprops/fck_document_preview.html" width="100%"
|
||||
height="100"></iframe>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,109 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||
<!--
|
||||
* FCKeditor - The text editor for internet
|
||||
* Copyright (C) 2003-2006 Frederico Caldeira Knabben
|
||||
*
|
||||
* Licensed under the terms of the GNU Lesser General Public License:
|
||||
* http://www.opensource.org/licenses/lgpl-license.php
|
||||
*
|
||||
* For further information visit:
|
||||
* http://www.fckeditor.net/
|
||||
*
|
||||
* "Support Open Source software. What about a donation today?"
|
||||
*
|
||||
* File Name: fck_document_preview.html
|
||||
* Preview shown in the "Document Properties" dialog window.
|
||||
*
|
||||
* File Authors:
|
||||
* Frederico Caldeira Knabben (fredck@fckeditor.net)
|
||||
-->
|
||||
<html>
|
||||
<head>
|
||||
<title>Document Properties - Preview</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
<script language="javascript">
|
||||
|
||||
var eBase = parent.FCK.EditorDocument.getElementsByTagName( 'BASE' ) ;
|
||||
if ( eBase.length > 0 && eBase[0].href.length > 0 )
|
||||
{
|
||||
document.write( '<base href="' + eBase[0].href + '">' ) ;
|
||||
}
|
||||
|
||||
window.onload = function()
|
||||
{
|
||||
if ( typeof( parent.OnPreviewLoad ) == 'function' )
|
||||
parent.OnPreviewLoad( window, document.body ) ;
|
||||
}
|
||||
|
||||
function SetBaseHRef( baseHref )
|
||||
{
|
||||
var eBase = document.createElement( 'BASE' ) ;
|
||||
eBase.href = baseHref ;
|
||||
|
||||
var eHead = document.getElementsByTagName( 'HEAD' )[0] ;
|
||||
eHead.appendChild( eBase ) ;
|
||||
}
|
||||
|
||||
function SetLinkColor( color )
|
||||
{
|
||||
if ( color && color.length > 0 )
|
||||
document.getElementById('eLink').style.color = color ;
|
||||
else
|
||||
document.getElementById('eLink').style.color = window.document.linkColor ;
|
||||
}
|
||||
|
||||
function SetVisitedColor( color )
|
||||
{
|
||||
if ( color && color.length > 0 )
|
||||
document.getElementById('eVisited').style.color = color ;
|
||||
else
|
||||
document.getElementById('eVisited').style.color = window.document.vlinkColor ;
|
||||
}
|
||||
|
||||
function SetActiveColor( color )
|
||||
{
|
||||
if ( color && color.length > 0 )
|
||||
document.getElementById('eActive').style.color = color ;
|
||||
else
|
||||
document.getElementById('eActive').style.color = window.document.alinkColor ;
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<table width="100%" height="100%" cellpadding="0" cellspacing="0" border="0">
|
||||
<tr>
|
||||
<td align="center" valign="middle">
|
||||
Normal Text
|
||||
</td>
|
||||
<td id="eLink" align="center" valign="middle">
|
||||
<u>Link Text</u>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td id="eVisited" valign="middle" align="center">
|
||||
<u>Visited Link</u>
|
||||
</td>
|
||||
<td id="eActive" valign="middle" align="center">
|
||||
<u>Active Link</u>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
</body>
|
||||
</html>
|
167
admin/FCKeditor/editor/dialog/fck_find.html
Normal file
@ -0,0 +1,167 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||
<!--
|
||||
* FCKeditor - The text editor for internet
|
||||
* Copyright (C) 2003-2006 Frederico Caldeira Knabben
|
||||
*
|
||||
* Licensed under the terms of the GNU Lesser General Public License:
|
||||
* http://www.opensource.org/licenses/lgpl-license.php
|
||||
*
|
||||
* For further information visit:
|
||||
* http://www.fckeditor.net/
|
||||
*
|
||||
* "Support Open Source software. What about a donation today?"
|
||||
*
|
||||
* File Name: fck_find.html
|
||||
* "Find" dialog window.
|
||||
*
|
||||
* File Authors:
|
||||
* Frederico Caldeira Knabben (fredck@fckeditor.net)
|
||||
-->
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<title></title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta content="noindex, nofollow" name="robots" />
|
||||
<script 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 ;
|
||||
|
||||
if ( oEditor.FCKBrowserInfo.IsIE )
|
||||
oRange = oEditor.FCK.EditorDocument.body.createTextRange() ;
|
||||
|
||||
function FindIE()
|
||||
{
|
||||
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 = oEditor.FCK.EditorDocument.body.createTextRange() ;
|
||||
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 ) ;
|
||||
if ( !oEditor.FCK.EditorWindow.find( document.getElementById('txtFind').value, bCase, false, false, bWord, false, false ) )
|
||||
alert( oEditor.FCKLang.DlgFindNotFoundMsg ) ;
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body onload="OnLoad()" style="overflow: hidden">
|
||||
<table cellspacing="3" cellpadding="2" width="100%" border="0">
|
||||
<tr>
|
||||
<td nowrap="nowrap">
|
||||
<label for="txtFind" fcklang="DlgReplaceFindLbl">
|
||||
Find what:</label>
|
||||
</td>
|
||||
<td width="100%">
|
||||
<input id="txtFind" style="width: 100%" tabindex="1" type="text" />
|
||||
</td>
|
||||
<td>
|
||||
<input id="btnFind" style="padding-right: 5px; padding-left: 5px" onclick="Ok();"
|
||||
type="button" value="Find" fcklang="DlgFindFindBtn" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="bottom" colspan="3">
|
||||
<input id="chkCase" tabindex="3" type="checkbox" /><label for="chkCase" fcklang="DlgReplaceCaseChk">Match
|
||||
case</label>
|
||||
<br />
|
||||
<div id="divWord" style="display: none">
|
||||
<input id="chkWord" tabindex="4" type="checkbox" /><label for="chkWord" fcklang="DlgReplaceWordChk">Match
|
||||
whole word</label>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
142
admin/FCKeditor/editor/dialog/fck_flash.html
Normal file
@ -0,0 +1,142 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||
<!--
|
||||
* FCKeditor - The text editor for internet
|
||||
* Copyright (C) 2003-2006 Frederico Caldeira Knabben
|
||||
*
|
||||
* Licensed under the terms of the GNU Lesser General Public License:
|
||||
* http://www.opensource.org/licenses/lgpl-license.php
|
||||
*
|
||||
* For further information visit:
|
||||
* http://www.fckeditor.net/
|
||||
*
|
||||
* "Support Open Source software. What about a donation today?"
|
||||
*
|
||||
* File Name: fck_flash.html
|
||||
* Flash Properties dialog window.
|
||||
*
|
||||
* File Authors:
|
||||
* Frederico Caldeira Knabben (fredck@fckeditor.net)
|
||||
-->
|
||||
<html>
|
||||
<head>
|
||||
<title>Flash Properties</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta content="noindex, nofollow" name="robots">
|
||||
<script src="common/fck_dialog_common.js" type="text/javascript"></script>
|
||||
<script src="fck_flash/fck_flash.js" type="text/javascript"></script>
|
||||
<link href="common/fck_dialog_common.css" type="text/css" rel="stylesheet">
|
||||
</head>
|
||||
<body scroll="no" style="OVERFLOW: hidden">
|
||||
<div id="divInfo">
|
||||
<table cellSpacing="1" cellPadding="1" width="100%" border="0">
|
||||
<tr>
|
||||
<td>
|
||||
<table cellSpacing="0" cellPadding="0" width="100%" border="0">
|
||||
<tr>
|
||||
<td width="100%"><span fckLang="DlgImgURL">URL</span>
|
||||
</td>
|
||||
<td id="tdBrowse" style="DISPLAY: none" noWrap rowSpan="2"> <input id="btnBrowse" onclick="BrowseServer();" type="button" value="Browse Server" fckLang="DlgBtnBrowseServer">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td vAlign="top"><input id="txtUrl" onblur="UpdatePreview();" style="WIDTH: 100%" type="text">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<TR>
|
||||
<TD>
|
||||
<table cellSpacing="0" cellPadding="0" border="0">
|
||||
<TR>
|
||||
<TD nowrap>
|
||||
<span fckLang="DlgImgWidth">Width</span><br>
|
||||
<input id="txtWidth" class="FCK__FieldNumeric" type="text" size="3">
|
||||
</TD>
|
||||
<TD> </TD>
|
||||
<TD>
|
||||
<span fckLang="DlgImgHeight">Height</span><br>
|
||||
<input id="txtHeight" class="FCK__FieldNumeric" type="text" size="3">
|
||||
</TD>
|
||||
</TR>
|
||||
</table>
|
||||
</TD>
|
||||
</TR>
|
||||
<tr>
|
||||
<td vAlign="top">
|
||||
<table cellSpacing="0" cellPadding="0" width="100%" border="0">
|
||||
<tr>
|
||||
<td valign="top" width="100%">
|
||||
<table cellSpacing="0" cellPadding="0" width="100%">
|
||||
<tr>
|
||||
<td><span fckLang="DlgImgPreview">Preview</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td id="ePreviewCell" valign="top" class="FlashPreviewArea"><iframe src="fck_flash/fck_flash_preview.html" frameborder="0" marginheight="0" marginwidth="0"></iframe></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div id="divUpload" style="DISPLAY: none">
|
||||
<form id="frmUpload" method="post" target="UploadWindow" enctype="multipart/form-data" action="" onsubmit="return CheckUpload();">
|
||||
<span fckLang="DlgLnkUpload">Upload</span><br />
|
||||
<input id="txtUploadFile" style="WIDTH: 100%" type="file" size="40" name="NewFile" /><br />
|
||||
<br />
|
||||
<input id="btnUpload" type="submit" value="Send it to the Server" fckLang="DlgLnkBtnUpload" />
|
||||
<iframe name="UploadWindow" style="DISPLAY: none" src="../fckblank.html"></iframe>
|
||||
</form>
|
||||
</div>
|
||||
<div id="divAdvanced" style="DISPLAY: none">
|
||||
<TABLE cellSpacing="0" cellPadding="0" border="0">
|
||||
<TR>
|
||||
<TD nowrap>
|
||||
<span fckLang="DlgFlashScale">Scale</span><BR>
|
||||
<select id="cmbScale">
|
||||
<option value="" selected></option>
|
||||
<option value="showall" fckLang="DlgFlashScaleAll">Show all</option>
|
||||
<option value="noborder" fckLang="DlgFlashScaleNoBorder">No Border</option>
|
||||
<option value="exactfit" fckLang="DlgFlashScaleFit">Exact Fit</option>
|
||||
</select></TD>
|
||||
<TD>
|
||||
</TD>
|
||||
<td valign="bottom">
|
||||
<table>
|
||||
<tr>
|
||||
<td><input id="chkAutoPlay" type="checkbox" checked></td>
|
||||
<td><label for="chkAutoPlay" nowrap fckLang="DlgFlashChkPlay">Auto Play</label> </td>
|
||||
<td><input id="chkLoop" type="checkbox" checked></td>
|
||||
<td><label for="chkLoop" nowrap fckLang="DlgFlashChkLoop">Loop</label> </td>
|
||||
<td><input id="chkMenu" type="checkbox" checked></td>
|
||||
<td><label for="chkMenu" nowrap fckLang="DlgFlashChkMenu">Enable Flash Menu</label></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</TR>
|
||||
</TABLE>
|
||||
<br>
|
||||
|
||||
<table cellSpacing="0" cellPadding="0" width="100%" align="center" border="0">
|
||||
<tr>
|
||||
<td vAlign="top" width="50%"><span fckLang="DlgGenId">Id</span><br>
|
||||
<input id="txtAttId" style="WIDTH: 100%" type="text">
|
||||
</td>
|
||||
<td> </td>
|
||||
<td vAlign="top" nowrap><span fckLang="DlgGenClass">Stylesheet Classes</span><br>
|
||||
<input id="txtAttClasses" style="WIDTH: 100%" type="text">
|
||||
</td>
|
||||
<td> </td>
|
||||
<td vAlign="top" nowrap width="50%"> <span fckLang="DlgGenTitle">Advisory Title</span><br>
|
||||
<input id="txtAttTitle" style="WIDTH: 100%" type="text">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<span fckLang="DlgGenStyle">Style</span><br>
|
||||
<input id="txtAttStyle" style="WIDTH: 100%" type="text">
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
284
admin/FCKeditor/editor/dialog/fck_flash/fck_flash.js
Normal file
@ -0,0 +1,284 @@
|
||||
/*
|
||||
* FCKeditor - The text editor for internet
|
||||
* Copyright (C) 2003-2006 Frederico Caldeira Knabben
|
||||
*
|
||||
* Licensed under the terms of the GNU Lesser General Public License:
|
||||
* http://www.opensource.org/licenses/lgpl-license.php
|
||||
*
|
||||
* For further information visit:
|
||||
* http://www.fckeditor.net/
|
||||
*
|
||||
* "Support Open Source software. What about a donation today?"
|
||||
*
|
||||
* File Name: fck_flash.js
|
||||
* Scripts related to the Flash dialog window (see fck_flash.html).
|
||||
*
|
||||
* File Authors:
|
||||
* Frederico Caldeira Knabben (fredck@fckeditor.net)
|
||||
*/
|
||||
|
||||
var oEditor = window.parent.InnerDialogLoaded() ;
|
||||
var FCK = oEditor.FCK ;
|
||||
var FCKLang = oEditor.FCKLang ;
|
||||
var FCKConfig = oEditor.FCKConfig ;
|
||||
|
||||
//#### Dialog Tabs
|
||||
|
||||
// Set the dialog tabs.
|
||||
window.parent.AddTab( 'Info', oEditor.FCKLang.DlgInfoTab ) ;
|
||||
|
||||
if ( FCKConfig.FlashUpload )
|
||||
window.parent.AddTab( 'Upload', FCKLang.DlgLnkUpload ) ;
|
||||
|
||||
if ( !FCKConfig.FlashDlgHideAdvanced )
|
||||
window.parent.AddTab( 'Advanced', oEditor.FCKLang.DlgAdvancedTag ) ;
|
||||
|
||||
// Function called when a dialog tag is selected.
|
||||
function OnDialogTabChange( tabCode )
|
||||
{
|
||||
ShowE('divInfo' , ( tabCode == 'Info' ) ) ;
|
||||
ShowE('divUpload' , ( tabCode == 'Upload' ) ) ;
|
||||
ShowE('divAdvanced' , ( tabCode == 'Advanced' ) ) ;
|
||||
}
|
||||
|
||||
// Get the selected flash embed (if available).
|
||||
var oFakeImage = FCK.Selection.GetSelectedElement() ;
|
||||
var oEmbed ;
|
||||
|
||||
if ( oFakeImage )
|
||||
{
|
||||
if ( oFakeImage.tagName == 'IMG' && oFakeImage.getAttribute('_fckflash') )
|
||||
oEmbed = FCK.GetRealElement( oFakeImage ) ;
|
||||
else
|
||||
oFakeImage = null ;
|
||||
}
|
||||
|
||||
window.onload = function()
|
||||
{
|
||||
// Translate the dialog box texts.
|
||||
oEditor.FCKLanguageManager.TranslatePage(document) ;
|
||||
|
||||
// Load the selected element information (if any).
|
||||
LoadSelection() ;
|
||||
|
||||
// Show/Hide the "Browse Server" button.
|
||||
GetE('tdBrowse').style.display = FCKConfig.FlashBrowser ? '' : 'none' ;
|
||||
|
||||
// Set the actual uploader URL.
|
||||
if ( FCKConfig.FlashUpload )
|
||||
GetE('frmUpload').action = FCKConfig.FlashUploadURL ;
|
||||
|
||||
window.parent.SetAutoSize( true ) ;
|
||||
|
||||
// Activate the "OK" button.
|
||||
window.parent.SetOkButton( true ) ;
|
||||
}
|
||||
|
||||
function LoadSelection()
|
||||
{
|
||||
if ( ! oEmbed ) return ;
|
||||
|
||||
var sUrl = GetAttribute( oEmbed, 'src', '' ) ;
|
||||
|
||||
GetE('txtUrl').value = GetAttribute( oEmbed, 'src', '' ) ;
|
||||
GetE('txtWidth').value = GetAttribute( oEmbed, 'width', '' ) ;
|
||||
GetE('txtHeight').value = GetAttribute( oEmbed, 'height', '' ) ;
|
||||
|
||||
// Get Advances Attributes
|
||||
GetE('txtAttId').value = oEmbed.id ;
|
||||
GetE('chkAutoPlay').checked = GetAttribute( oEmbed, 'play', 'true' ) == 'true' ;
|
||||
GetE('chkLoop').checked = GetAttribute( oEmbed, 'loop', 'true' ) == 'true' ;
|
||||
GetE('chkMenu').checked = GetAttribute( oEmbed, 'menu', 'true' ) == 'true' ;
|
||||
GetE('cmbScale').value = GetAttribute( oEmbed, 'scale', '' ).toLowerCase() ;
|
||||
|
||||
GetE('txtAttTitle').value = oEmbed.title ;
|
||||
|
||||
if ( oEditor.FCKBrowserInfo.IsIE )
|
||||
{
|
||||
GetE('txtAttClasses').value = oEmbed.getAttribute('className') || '' ;
|
||||
GetE('txtAttStyle').value = oEmbed.style.cssText ;
|
||||
}
|
||||
else
|
||||
{
|
||||
GetE('txtAttClasses').value = oEmbed.getAttribute('class',2) || '' ;
|
||||
GetE('txtAttStyle').value = oEmbed.getAttribute('style',2) ;
|
||||
}
|
||||
|
||||
UpdatePreview() ;
|
||||
}
|
||||
|
||||
//#### The OK button was hit.
|
||||
function Ok()
|
||||
{
|
||||
if ( GetE('txtUrl').value.length == 0 )
|
||||
{
|
||||
window.parent.SetSelectedTab( 'Info' ) ;
|
||||
GetE('txtUrl').focus() ;
|
||||
|
||||
alert( oEditor.FCKLang.DlgAlertUrl ) ;
|
||||
|
||||
return false ;
|
||||
}
|
||||
|
||||
if ( !oEmbed )
|
||||
{
|
||||
oEmbed = FCK.EditorDocument.createElement( 'EMBED' ) ;
|
||||
oFakeImage = null ;
|
||||
}
|
||||
UpdateEmbed( oEmbed ) ;
|
||||
|
||||
if ( !oFakeImage )
|
||||
{
|
||||
oFakeImage = oEditor.FCKDocumentProcessor_CreateFakeImage( 'FCK__Flash', oEmbed ) ;
|
||||
oFakeImage.setAttribute( '_fckflash', 'true', 0 ) ;
|
||||
oFakeImage = FCK.InsertElementAndGetIt( oFakeImage ) ;
|
||||
}
|
||||
else
|
||||
oEditor.FCKUndo.SaveUndoStep() ;
|
||||
|
||||
oEditor.FCKFlashProcessor.RefreshView( oFakeImage, oEmbed ) ;
|
||||
|
||||
return true ;
|
||||
}
|
||||
|
||||
function UpdateEmbed( e )
|
||||
{
|
||||
SetAttribute( e, 'type' , 'application/x-shockwave-flash' ) ;
|
||||
SetAttribute( e, 'pluginspage' , 'http://www.macromedia.com/go/getflashplayer' ) ;
|
||||
|
||||
e.src = GetE('txtUrl').value ;
|
||||
SetAttribute( e, "width" , GetE('txtWidth').value ) ;
|
||||
SetAttribute( e, "height", GetE('txtHeight').value ) ;
|
||||
|
||||
// Advances Attributes
|
||||
|
||||
SetAttribute( e, 'id' , GetE('txtAttId').value ) ;
|
||||
SetAttribute( e, 'scale', GetE('cmbScale').value ) ;
|
||||
|
||||
SetAttribute( e, 'play', GetE('chkAutoPlay').checked ? 'true' : 'false' ) ;
|
||||
SetAttribute( e, 'loop', GetE('chkLoop').checked ? 'true' : 'false' ) ;
|
||||
SetAttribute( e, 'menu', GetE('chkMenu').checked ? 'true' : 'false' ) ;
|
||||
|
||||
SetAttribute( e, 'title' , GetE('txtAttTitle').value ) ;
|
||||
|
||||
if ( oEditor.FCKBrowserInfo.IsIE )
|
||||
{
|
||||
SetAttribute( e, 'className', GetE('txtAttClasses').value ) ;
|
||||
e.style.cssText = GetE('txtAttStyle').value ;
|
||||
}
|
||||
else
|
||||
{
|
||||
SetAttribute( e, 'class', GetE('txtAttClasses').value ) ;
|
||||
SetAttribute( e, 'style', GetE('txtAttStyle').value ) ;
|
||||
}
|
||||
}
|
||||
|
||||
var ePreview ;
|
||||
|
||||
function SetPreviewElement( previewEl )
|
||||
{
|
||||
ePreview = previewEl ;
|
||||
|
||||
if ( GetE('txtUrl').value.length > 0 )
|
||||
UpdatePreview() ;
|
||||
}
|
||||
|
||||
function UpdatePreview()
|
||||
{
|
||||
if ( !ePreview )
|
||||
return ;
|
||||
|
||||
while ( ePreview.firstChild )
|
||||
ePreview.removeChild( ePreview.firstChild ) ;
|
||||
|
||||
if ( GetE('txtUrl').value.length == 0 )
|
||||
ePreview.innerHTML = ' ' ;
|
||||
else
|
||||
{
|
||||
var oDoc = ePreview.ownerDocument || ePreview.document ;
|
||||
var e = oDoc.createElement( 'EMBED' ) ;
|
||||
|
||||
e.src = GetE('txtUrl').value ;
|
||||
e.type = 'application/x-shockwave-flash' ;
|
||||
e.width = '100%' ;
|
||||
e.height = '100%' ;
|
||||
|
||||
ePreview.appendChild( e ) ;
|
||||
}
|
||||
}
|
||||
|
||||
// <embed id="ePreview" src="fck_flash/claims.swf" width="100%" height="100%" style="visibility:hidden" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer">
|
||||
|
||||
function BrowseServer()
|
||||
{
|
||||
OpenFileBrowser( FCKConfig.FlashBrowserURL, FCKConfig.FlashBrowserWindowWidth, FCKConfig.FlashBrowserWindowHeight ) ;
|
||||
}
|
||||
|
||||
function SetUrl( url, width, height )
|
||||
{
|
||||
GetE('txtUrl').value = url ;
|
||||
|
||||
if ( width )
|
||||
GetE('txtWidth').value = width ;
|
||||
|
||||
if ( height )
|
||||
GetE('txtHeight').value = height ;
|
||||
|
||||
UpdatePreview() ;
|
||||
|
||||
window.parent.SetSelectedTab( 'Info' ) ;
|
||||
}
|
||||
|
||||
function OnUploadCompleted( errorNumber, fileUrl, fileName, customMsg )
|
||||
{
|
||||
switch ( errorNumber )
|
||||
{
|
||||
case 0 : // No errors
|
||||
alert( 'Your file has been successfully uploaded' ) ;
|
||||
break ;
|
||||
case 1 : // Custom error
|
||||
alert( customMsg ) ;
|
||||
return ;
|
||||
case 101 : // Custom warning
|
||||
alert( customMsg ) ;
|
||||
break ;
|
||||
case 201 :
|
||||
alert( 'A file with the same name is already available. The uploaded file has been renamed to "' + fileName + '"' ) ;
|
||||
break ;
|
||||
case 202 :
|
||||
alert( 'Invalid file type' ) ;
|
||||
return ;
|
||||
case 203 :
|
||||
alert( "Security error. You probably don't have enough permissions to upload. Please check your server." ) ;
|
||||
return ;
|
||||
default :
|
||||
alert( 'Error on file upload. Error number: ' + errorNumber ) ;
|
||||
return ;
|
||||
}
|
||||
|
||||
SetUrl( fileUrl ) ;
|
||||
GetE('frmUpload').reset() ;
|
||||
}
|
||||
|
||||
var oUploadAllowedExtRegex = new RegExp( FCKConfig.FlashUploadAllowedExtensions, 'i' ) ;
|
||||
var oUploadDeniedExtRegex = new RegExp( FCKConfig.FlashUploadDeniedExtensions, 'i' ) ;
|
||||
|
||||
function CheckUpload()
|
||||
{
|
||||
var sFile = GetE('txtUploadFile').value ;
|
||||
|
||||
if ( sFile.length == 0 )
|
||||
{
|
||||
alert( 'Please select a file to upload' ) ;
|
||||
return false ;
|
||||
}
|
||||
|
||||
if ( ( FCKConfig.FlashUploadAllowedExtensions.length > 0 && !oUploadAllowedExtRegex.test( sFile ) ) ||
|
||||
( FCKConfig.FlashUploadDeniedExtensions.length > 0 && oUploadDeniedExtRegex.test( sFile ) ) )
|
||||
{
|
||||
OnUploadCompleted( 202 ) ;
|
||||
return false ;
|
||||
}
|
||||
|
||||
return true ;
|
||||
}
|
@ -0,0 +1,42 @@
|
||||
<!--
|
||||
* FCKeditor - The text editor for internet
|
||||
* Copyright (C) 2003-2006 Frederico Caldeira Knabben
|
||||
*
|
||||
* Licensed under the terms of the GNU Lesser General Public License:
|
||||
* http://www.opensource.org/licenses/lgpl-license.php
|
||||
*
|
||||
* For further information visit:
|
||||
* http://www.fckeditor.net/
|
||||
*
|
||||
* "Support Open Source software. What about a donation today?"
|
||||
*
|
||||
* File Name: fck_flash_preview.html
|
||||
* Preview page for the Flash dialog window.
|
||||
*
|
||||
* File Authors:
|
||||
* Frederico Caldeira Knabben (fredck@fckeditor.net)
|
||||
-->
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||
<html>
|
||||
<head>
|
||||
<title></title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
<link href="../common/fck_dialog_common.css" rel="stylesheet" type="text/css" />
|
||||
<script language="javascript">
|
||||
|
||||
// Sets the Skin CSS
|
||||
document.write( '<link href="' + window.parent.FCKConfig.SkinPath + 'fck_dialog.css" type="text/css" rel="stylesheet">' ) ;
|
||||
|
||||
if ( window.parent.FCKConfig.BaseHref.length > 0 )
|
||||
document.write( '<base href="' + window.parent.FCKConfig.BaseHref + '">' ) ;
|
||||
|
||||
window.onload = function()
|
||||
{
|
||||
window.parent.SetPreviewElement( document.body ) ;
|
||||
}
|
||||
|
||||
</script>
|
||||
</head>
|
||||
<body style="COLOR: #000000; BACKGROUND-COLOR: #ffffff"></body>
|
||||
</html>
|
101
admin/FCKeditor/editor/dialog/fck_form.html
Normal file
@ -0,0 +1,101 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
|
||||
<!--
|
||||
* FCKeditor - The text editor for internet
|
||||
* Copyright (C) 2003-2006 Frederico Caldeira Knabben
|
||||
*
|
||||
* Licensed under the terms of the GNU Lesser General Public License:
|
||||
* http://www.opensource.org/licenses/lgpl-license.php
|
||||
*
|
||||
* For further information visit:
|
||||
* http://www.fckeditor.net/
|
||||
*
|
||||
* "Support Open Source software. What about a donation today?"
|
||||
*
|
||||
* File Name: fck_form.html
|
||||
* Form dialog window.
|
||||
*
|
||||
* File Authors:
|
||||
* Frederico Caldeira Knabben (fredck@fckeditor.net)
|
||||
-->
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<title></title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta content="noindex, nofollow" name="robots" />
|
||||
<script src="common/fck_dialog_common.js" type="text/javascript"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
var oEditor = window.parent.InnerDialogLoaded() ;
|
||||
|
||||
// Gets the document DOM
|
||||
var oDOM = oEditor.FCK.EditorDocument ;
|
||||
|
||||
var oActiveEl = oEditor.FCKSelection.MoveToAncestorNode( 'FORM' ) ;
|
||||
|
||||
window.onload = function()
|
||||
{
|
||||
// First of all, translate the dialog box texts
|
||||
oEditor.FCKLanguageManager.TranslatePage(document) ;
|
||||
|
||||
if ( oActiveEl )
|
||||
{
|
||||
GetE('txtName').value = oActiveEl.name ;
|
||||
GetE('txtAction').value = oActiveEl.getAttribute( 'action', 2 ) ;
|
||||
GetE('txtMethod').value = oActiveEl.method ;
|
||||
}
|
||||
else
|
||||
oActiveEl = null ;
|
||||
|
||||
window.parent.SetOkButton( true ) ;
|
||||
}
|
||||
|
||||
function Ok()
|
||||
{
|
||||
if ( !oActiveEl )
|
||||
{
|
||||
oActiveEl = oEditor.FCK.EditorDocument.createElement( 'FORM' ) ;
|
||||
oActiveEl = oEditor.FCK.InsertElementAndGetIt( oActiveEl ) ;
|
||||
oActiveEl.innerHTML = ' ' ;
|
||||
}
|
||||
|
||||
oActiveEl.name = GetE('txtName').value ;
|
||||
SetAttribute( oActiveEl, 'action' , GetE('txtAction').value ) ;
|
||||
oActiveEl.method = GetE('txtMethod').value ;
|
||||
|
||||
return true ;
|
||||
}
|
||||
|
||||
</script>
|
||||
</head>
|
||||
<body style="overflow: hidden">
|
||||
<table width="100%" style="height: 100%">
|
||||
<tr>
|
||||
<td align="center">
|
||||
<table cellspacing="0" cellpadding="0" width="80%" border="0">
|
||||
<tr>
|
||||
<td>
|
||||
<span fcklang="DlgFormName">Name</span><br />
|
||||
<input style="width: 100%" type="text" id="txtName" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<span fcklang="DlgFormAction">Action</span><br />
|
||||
<input style="width: 100%" type="text" id="txtAction" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<span fcklang="DlgFormMethod">Method</span><br />
|
||||
<select id="txtMethod">
|
||||
<option value="get" selected="selected">GET</option>
|
||||
<option value="post">POST</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
91
admin/FCKeditor/editor/dialog/fck_hiddenfield.html
Normal file
@ -0,0 +1,91 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
|
||||
<!--
|
||||
* FCKeditor - The text editor for internet
|
||||
* Copyright (C) 2003-2006 Frederico Caldeira Knabben
|
||||
*
|
||||
* Licensed under the terms of the GNU Lesser General Public License:
|
||||
* http://www.opensource.org/licenses/lgpl-license.php
|
||||
*
|
||||
* For further information visit:
|
||||
* http://www.fckeditor.net/
|
||||
*
|
||||
* "Support Open Source software. What about a donation today?"
|
||||
*
|
||||
* File Name: fck_hiddenfield.html
|
||||
* Hidden Field dialog window.
|
||||
*
|
||||
* File Authors:
|
||||
* Frederico Caldeira Knabben (fredck@fckeditor.net)
|
||||
-->
|
||||
<html>
|
||||
<head>
|
||||
<title>Hidden Field Properties</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta content="noindex, nofollow" name="robots">
|
||||
<script src="common/fck_dialog_common.js" type="text/javascript"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
var oEditor = window.parent.InnerDialogLoaded() ;
|
||||
|
||||
// Gets the document DOM
|
||||
var oDOM = oEditor.FCK.EditorDocument ;
|
||||
|
||||
var oActiveEl = oEditor.FCKSelection.GetSelectedElement() ;
|
||||
|
||||
window.onload = function()
|
||||
{
|
||||
// First of all, translate the dialog box texts
|
||||
oEditor.FCKLanguageManager.TranslatePage(document) ;
|
||||
|
||||
if ( oActiveEl && oActiveEl.tagName == 'INPUT' && oActiveEl.type == 'hidden' )
|
||||
{
|
||||
GetE('txtName').value = oActiveEl.name ;
|
||||
GetE('txtValue').value = oActiveEl.value ;
|
||||
}
|
||||
else
|
||||
oActiveEl = null ;
|
||||
|
||||
window.parent.SetOkButton( true ) ;
|
||||
}
|
||||
|
||||
|
||||
function Ok()
|
||||
{
|
||||
if ( !oActiveEl )
|
||||
{
|
||||
oActiveEl = oEditor.FCK.EditorDocument.createElement( 'INPUT' ) ;
|
||||
oActiveEl.type = 'hidden' ;
|
||||
oActiveEl = oEditor.FCK.InsertElementAndGetIt( oActiveEl ) ;
|
||||
}
|
||||
|
||||
oActiveEl.name = GetE('txtName').value ;
|
||||
SetAttribute( oActiveEl, 'value', GetE('txtValue').value ) ;
|
||||
|
||||
return true ;
|
||||
}
|
||||
|
||||
</script>
|
||||
</head>
|
||||
<body style="OVERFLOW: hidden" scroll="no">
|
||||
<table height="100%" width="100%">
|
||||
<tr>
|
||||
<td align="center">
|
||||
<table border="0" class="inhoud" cellpadding="0" cellspacing="0" width="80%">
|
||||
<tr>
|
||||
<td>
|
||||
<span fckLang="DlgHiddenName">Name</span><br>
|
||||
<input type="text" size="20" id="txtName" style="WIDTH: 100%">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<span fckLang="DlgHiddenValue">Value</span><br>
|
||||
<input type="text" size="30" id="txtValue" style="WIDTH: 100%">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
248
admin/FCKeditor/editor/dialog/fck_image.html
Normal file
@ -0,0 +1,248 @@
|
||||
<!--
|
||||
* FCKeditor - The text editor for internet
|
||||
* Copyright (C) 2003-2006 Frederico Caldeira Knabben
|
||||
*
|
||||
* Licensed under the terms of the GNU Lesser General Public License:
|
||||
* http://www.opensource.org/licenses/lgpl-license.php
|
||||
*
|
||||
* For further information visit:
|
||||
* http://www.fckeditor.net/
|
||||
*
|
||||
* "Support Open Source software. What about a donation today?"
|
||||
*
|
||||
* File Name: fck_image.html
|
||||
* Image Properties dialog window.
|
||||
*
|
||||
* File Authors:
|
||||
* Frederico Caldeira Knabben (fredck@fckeditor.net)
|
||||
-->
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<title>Image Properties</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="robots" content="noindex, nofollow" />
|
||||
<script src="common/fck_dialog_common.js" type="text/javascript"></script>
|
||||
<script src="fck_image/fck_image.js" type="text/javascript"></script>
|
||||
<link href="common/fck_dialog_common.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body scroll="no" style="overflow: hidden">
|
||||
<div id="divInfo">
|
||||
<table cellspacing="1" cellpadding="1" border="0" width="100%" height="100%">
|
||||
<tr>
|
||||
<td>
|
||||
<table cellspacing="0" cellpadding="0" width="100%" border="0">
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<span fcklang="DlgImgURL">URL</span>
|
||||
</td>
|
||||
<td id="tdBrowse" style="display: none" nowrap="nowrap" rowspan="2">
|
||||
|
||||
<input id="btnBrowse" onclick="BrowseServer();" type="button" value="Browse Server"
|
||||
fcklang="DlgBtnBrowseServer" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top">
|
||||
<input id="txtUrl" style="width: 100%" type="text" onblur="UpdatePreview();" />
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<span fcklang="DlgImgAlt">Short Description</span><br />
|
||||
<input id="txtAlt" style="width: 100%" type="text" /><br />
|
||||
</td>
|
||||
</tr>
|
||||
<tr height="100%">
|
||||
<td valign="top">
|
||||
<table cellspacing="0" cellpadding="0" width="100%" border="0" height="100%">
|
||||
<tr>
|
||||
<td valign="top">
|
||||
<br />
|
||||
<table cellspacing="0" cellpadding="0" border="0">
|
||||
<tr>
|
||||
<td nowrap="nowrap">
|
||||
<span fcklang="DlgImgWidth">Width</span> </td>
|
||||
<td>
|
||||
<input type="text" size="3" id="txtWidth" onkeyup="OnSizeChanged('Width',this.value);" /></td>
|
||||
<td rowspan="2">
|
||||
<div id="btnLockSizes" class="BtnLocked" onmouseover="this.className = (bLockRatio ? 'BtnLocked' : 'BtnUnlocked' ) + ' BtnOver';"
|
||||
onmouseout="this.className = (bLockRatio ? 'BtnLocked' : 'BtnUnlocked' );" title="Lock Sizes"
|
||||
onclick="SwitchLock(this);">
|
||||
</div>
|
||||
</td>
|
||||
<td rowspan="2">
|
||||
<div id="btnResetSize" class="BtnReset" onmouseover="this.className='BtnReset BtnOver';"
|
||||
onmouseout="this.className='BtnReset';" title="Reset Size" onclick="ResetSizes();">
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td nowrap="nowrap">
|
||||
<span fcklang="DlgImgHeight">Height</span> </td>
|
||||
<td>
|
||||
<input type="text" size="3" id="txtHeight" onkeyup="OnSizeChanged('Height',this.value);" /></td>
|
||||
</tr>
|
||||
</table>
|
||||
<br />
|
||||
<table cellspacing="0" cellpadding="0" border="0">
|
||||
<tr>
|
||||
<td nowrap="nowrap">
|
||||
<span fcklang="DlgImgBorder">Border</span> </td>
|
||||
<td>
|
||||
<input type="text" size="2" value="" id="txtBorder" onkeyup="UpdatePreview();" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td nowrap="nowrap">
|
||||
<span fcklang="DlgImgHSpace">HSpace</span> </td>
|
||||
<td>
|
||||
<input type="text" size="2" id="txtHSpace" onkeyup="UpdatePreview();" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td nowrap="nowrap">
|
||||
<span fcklang="DlgImgVSpace">VSpace</span> </td>
|
||||
<td>
|
||||
<input type="text" size="2" id="txtVSpace" onkeyup="UpdatePreview();" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td nowrap="nowrap">
|
||||
<span fcklang="DlgImgAlign">Align</span> </td>
|
||||
<td>
|
||||
<select id="cmbAlign" onchange="UpdatePreview();">
|
||||
<option value="" selected="selected"></option>
|
||||
<option fcklang="DlgImgAlignLeft" value="left">Left</option>
|
||||
<option fcklang="DlgImgAlignAbsBottom" value="absBottom">Abs Bottom</option>
|
||||
<option fcklang="DlgImgAlignAbsMiddle" value="absMiddle">Abs Middle</option>
|
||||
<option fcklang="DlgImgAlignBaseline" value="baseline">Baseline</option>
|
||||
<option fcklang="DlgImgAlignBottom" value="bottom">Bottom</option>
|
||||
<option fcklang="DlgImgAlignMiddle" value="middle">Middle</option>
|
||||
<option fcklang="DlgImgAlignRight" value="right">Right</option>
|
||||
<option fcklang="DlgImgAlignTextTop" value="textTop">Text Top</option>
|
||||
<option fcklang="DlgImgAlignTop" value="top">Top</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td>
|
||||
</td>
|
||||
<td width="100%" valign="top">
|
||||
<table cellpadding="0" cellspacing="0" width="100%" style="table-layout: fixed">
|
||||
<tr>
|
||||
<td>
|
||||
<span fcklang="DlgImgPreview">Preview</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top">
|
||||
<iframe class="ImagePreviewArea" src="fck_image/fck_image_preview.html" frameborder="0"
|
||||
marginheight="0" marginwidth="0"></iframe>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div id="divUpload" style="display: none">
|
||||
<form id="frmUpload" method="post" target="UploadWindow" enctype="multipart/form-data"
|
||||
action="" onsubmit="return CheckUpload();">
|
||||
<span fcklang="DlgLnkUpload">Upload</span><br />
|
||||
<input id="txtUploadFile" style="width: 100%" type="file" size="40" name="NewFile" /><br />
|
||||
<br />
|
||||
<input id="btnUpload" type="submit" value="Send it to the Server" fcklang="DlgLnkBtnUpload" />
|
||||
<iframe name="UploadWindow" style="display: none" src="../fckblank.html"></iframe>
|
||||
</form>
|
||||
</div>
|
||||
<div id="divLink" style="display: none">
|
||||
<table cellspacing="1" cellpadding="1" border="0" width="100%">
|
||||
<tr>
|
||||
<td>
|
||||
<div>
|
||||
<span fcklang="DlgLnkURL">URL</span><br />
|
||||
<input id="txtLnkUrl" style="width: 100%" type="text" onblur="UpdatePreview();" />
|
||||
</div>
|
||||
<div id="divLnkBrowseServer" align="right">
|
||||
<input type="button" value="Browse Server" fcklang="DlgBtnBrowseServer" onclick="LnkBrowseServer();" />
|
||||
</div>
|
||||
<div>
|
||||
<span fcklang="DlgLnkTarget">Target</span><br />
|
||||
<select id="cmbLnkTarget">
|
||||
<option value="" fcklang="DlgGenNotSet" selected="selected"><not set></option>
|
||||
<option value="_blank" fcklang="DlgLnkTargetBlank">New Window (_blank)</option>
|
||||
<option value="_top" fcklang="DlgLnkTargetTop">Topmost Window (_top)</option>
|
||||
<option value="_self" fcklang="DlgLnkTargetSelf">Same Window (_self)</option>
|
||||
<option value="_parent" fcklang="DlgLnkTargetParent">Parent Window (_parent)</option>
|
||||
</select>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div id="divAdvanced" style="display: none">
|
||||
<table cellspacing="0" cellpadding="0" width="100%" align="center" border="0">
|
||||
<tr>
|
||||
<td valign="top" width="50%">
|
||||
<span fcklang="DlgGenId">Id</span><br />
|
||||
<input id="txtAttId" style="width: 100%" type="text" />
|
||||
</td>
|
||||
<td width="1">
|
||||
</td>
|
||||
<td valign="top">
|
||||
<table cellspacing="0" cellpadding="0" width="100%" align="center" border="0">
|
||||
<tr>
|
||||
<td width="60%">
|
||||
<span fcklang="DlgGenLangDir">Language Direction</span><br />
|
||||
<select id="cmbAttLangDir" style="width: 100%">
|
||||
<option value="" fcklang="DlgGenNotSet" selected="selected"><not set></option>
|
||||
<option value="ltr" fcklang="DlgGenLangDirLtr">Left to Right (LTR)</option>
|
||||
<option value="rtl" fcklang="DlgGenLangDirRtl">Right to Left (RTL)</option>
|
||||
</select>
|
||||
</td>
|
||||
<td width="1%">
|
||||
</td>
|
||||
<td nowrap="nowrap">
|
||||
<span fcklang="DlgGenLangCode">Language Code</span><br />
|
||||
<input id="txtAttLangCode" style="width: 100%" type="text" />
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
<span fcklang="DlgGenLongDescr">Long Description URL</span><br />
|
||||
<input id="txtLongDesc" style="width: 100%" type="text" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top">
|
||||
<span fcklang="DlgGenClass">Stylesheet Classes</span><br />
|
||||
<input id="txtAttClasses" style="width: 100%" type="text" />
|
||||
</td>
|
||||
<td>
|
||||
</td>
|
||||
<td valign="top">
|
||||
<span fcklang="DlgGenTitle">Advisory Title</span><br />
|
||||
<input id="txtAttTitle" style="width: 100%" type="text" />
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<span fcklang="DlgGenStyle">Style</span><br />
|
||||
<input id="txtAttStyle" style="width: 100%" type="text" />
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
477
admin/FCKeditor/editor/dialog/fck_image/fck_image.js
Normal file
@ -0,0 +1,477 @@
|
||||
/*
|
||||
* FCKeditor - The text editor for internet
|
||||
* Copyright (C) 2003-2006 Frederico Caldeira Knabben
|
||||
*
|
||||
* Licensed under the terms of the GNU Lesser General Public License:
|
||||
* http://www.opensource.org/licenses/lgpl-license.php
|
||||
*
|
||||
* For further information visit:
|
||||
* http://www.fckeditor.net/
|
||||
*
|
||||
* "Support Open Source software. What about a donation today?"
|
||||
*
|
||||
* File Name: fck_image.js
|
||||
* Scripts related to the Image dialog window (see fck_image.html).
|
||||
*
|
||||
* File Authors:
|
||||
* Frederico Caldeira Knabben (fredck@fckeditor.net)
|
||||
*/
|
||||
|
||||
var oEditor = window.parent.InnerDialogLoaded() ;
|
||||
var FCK = oEditor.FCK ;
|
||||
var FCKLang = oEditor.FCKLang ;
|
||||
var FCKConfig = oEditor.FCKConfig ;
|
||||
var FCKDebug = oEditor.FCKDebug ;
|
||||
|
||||
var bImageButton = ( document.location.search.length > 0 && document.location.search.substr(1) == 'ImageButton' ) ;
|
||||
|
||||
//#### Dialog Tabs
|
||||
|
||||
// Set the dialog tabs.
|
||||
window.parent.AddTab( 'Info', FCKLang.DlgImgInfoTab ) ;
|
||||
|
||||
if ( !bImageButton && !FCKConfig.ImageDlgHideLink )
|
||||
window.parent.AddTab( 'Link', FCKLang.DlgImgLinkTab ) ;
|
||||
|
||||
if ( FCKConfig.ImageUpload )
|
||||
window.parent.AddTab( 'Upload', FCKLang.DlgLnkUpload ) ;
|
||||
|
||||
if ( !FCKConfig.ImageDlgHideAdvanced )
|
||||
window.parent.AddTab( 'Advanced', FCKLang.DlgAdvancedTag ) ;
|
||||
|
||||
// Function called when a dialog tag is selected.
|
||||
function OnDialogTabChange( tabCode )
|
||||
{
|
||||
ShowE('divInfo' , ( tabCode == 'Info' ) ) ;
|
||||
ShowE('divLink' , ( tabCode == 'Link' ) ) ;
|
||||
ShowE('divUpload' , ( tabCode == 'Upload' ) ) ;
|
||||
ShowE('divAdvanced' , ( tabCode == 'Advanced' ) ) ;
|
||||
}
|
||||
|
||||
// Get the selected image (if available).
|
||||
var oImage = FCK.Selection.GetSelectedElement() ;
|
||||
|
||||
if ( oImage && oImage.tagName != 'IMG' && !( oImage.tagName == 'INPUT' && oImage.type == 'image' ) )
|
||||
oImage = null ;
|
||||
|
||||
// Get the active link.
|
||||
var oLink = FCK.Selection.MoveToAncestorNode( 'A' ) ;
|
||||
|
||||
var oImageOriginal ;
|
||||
|
||||
function UpdateOriginal( resetSize )
|
||||
{
|
||||
if ( !eImgPreview )
|
||||
return ;
|
||||
|
||||
if ( GetE('txtUrl').value.length == 0 )
|
||||
{
|
||||
oImageOriginal = null ;
|
||||
return ;
|
||||
}
|
||||
|
||||
oImageOriginal = document.createElement( 'IMG' ) ; // new Image() ;
|
||||
|
||||
if ( resetSize )
|
||||
{
|
||||
oImageOriginal.onload = function()
|
||||
{
|
||||
this.onload = null ;
|
||||
ResetSizes() ;
|
||||
}
|
||||
}
|
||||
|
||||
oImageOriginal.src = eImgPreview.src ;
|
||||
}
|
||||
|
||||
var bPreviewInitialized ;
|
||||
|
||||
window.onload = function()
|
||||
{
|
||||
// Translate the dialog box texts.
|
||||
oEditor.FCKLanguageManager.TranslatePage(document) ;
|
||||
|
||||
GetE('btnLockSizes').title = FCKLang.DlgImgLockRatio ;
|
||||
GetE('btnResetSize').title = FCKLang.DlgBtnResetSize ;
|
||||
|
||||
// Load the selected element information (if any).
|
||||
LoadSelection() ;
|
||||
|
||||
// Show/Hide the "Browse Server" button.
|
||||
GetE('tdBrowse').style.display = FCKConfig.ImageBrowser ? '' : 'none' ;
|
||||
GetE('divLnkBrowseServer').style.display = FCKConfig.LinkBrowser ? '' : 'none' ;
|
||||
|
||||
UpdateOriginal() ;
|
||||
|
||||
// Set the actual uploader URL.
|
||||
if ( FCKConfig.ImageUpload )
|
||||
GetE('frmUpload').action = FCKConfig.ImageUploadURL ;
|
||||
|
||||
window.parent.SetAutoSize( true ) ;
|
||||
|
||||
// Activate the "OK" button.
|
||||
window.parent.SetOkButton( true ) ;
|
||||
}
|
||||
|
||||
function LoadSelection()
|
||||
{
|
||||
if ( ! oImage ) return ;
|
||||
|
||||
var sUrl = oImage.getAttribute( '_fcksavedurl' ) ;
|
||||
if ( sUrl == null )
|
||||
sUrl = GetAttribute( oImage, 'src', '' ) ;
|
||||
|
||||
GetE('txtUrl').value = sUrl ;
|
||||
GetE('txtAlt').value = GetAttribute( oImage, 'alt', '' ) ;
|
||||
GetE('txtVSpace').value = GetAttribute( oImage, 'vspace', '' ) ;
|
||||
GetE('txtHSpace').value = GetAttribute( oImage, 'hspace', '' ) ;
|
||||
GetE('txtBorder').value = GetAttribute( oImage, 'border', '' ) ;
|
||||
GetE('cmbAlign').value = GetAttribute( oImage, 'align', '' ) ;
|
||||
|
||||
var iWidth, iHeight ;
|
||||
|
||||
var regexSize = /^\s*(\d+)px\s*$/i ;
|
||||
|
||||
if ( oImage.style.width )
|
||||
{
|
||||
var aMatch = oImage.style.width.match( regexSize ) ;
|
||||
if ( aMatch )
|
||||
{
|
||||
iWidth = aMatch[1] ;
|
||||
oImage.style.width = '' ;
|
||||
}
|
||||
}
|
||||
|
||||
if ( oImage.style.height )
|
||||
{
|
||||
var aMatch = oImage.style.height.match( regexSize ) ;
|
||||
if ( aMatch )
|
||||
{
|
||||
iHeight = aMatch[1] ;
|
||||
oImage.style.height = '' ;
|
||||
}
|
||||
}
|
||||
|
||||
GetE('txtWidth').value = iWidth ? iWidth : GetAttribute( oImage, "width", '' ) ;
|
||||
GetE('txtHeight').value = iHeight ? iHeight : GetAttribute( oImage, "height", '' ) ;
|
||||
|
||||
// Get Advances Attributes
|
||||
GetE('txtAttId').value = oImage.id ;
|
||||
GetE('cmbAttLangDir').value = oImage.dir ;
|
||||
GetE('txtAttLangCode').value = oImage.lang ;
|
||||
GetE('txtAttTitle').value = oImage.title ;
|
||||
GetE('txtAttClasses').value = oImage.getAttribute('class',2) || '' ;
|
||||
GetE('txtLongDesc').value = oImage.longDesc ;
|
||||
|
||||
if ( oEditor.FCKBrowserInfo.IsIE )
|
||||
GetE('txtAttStyle').value = oImage.style.cssText ;
|
||||
else
|
||||
GetE('txtAttStyle').value = oImage.getAttribute('style',2) ;
|
||||
|
||||
if ( oLink )
|
||||
{
|
||||
var sUrl = oLink.getAttribute( '_fcksavedurl' ) ;
|
||||
if ( sUrl == null )
|
||||
sUrl = oLink.getAttribute('href',2) ;
|
||||
|
||||
GetE('txtLnkUrl').value = sUrl ;
|
||||
GetE('cmbLnkTarget').value = oLink.target ;
|
||||
}
|
||||
|
||||
UpdatePreview() ;
|
||||
}
|
||||
|
||||
//#### The OK button was hit.
|
||||
function Ok()
|
||||
{
|
||||
if ( GetE('txtUrl').value.length == 0 )
|
||||
{
|
||||
window.parent.SetSelectedTab( 'Info' ) ;
|
||||
GetE('txtUrl').focus() ;
|
||||
|
||||
alert( FCKLang.DlgImgAlertUrl ) ;
|
||||
|
||||
return false ;
|
||||
}
|
||||
|
||||
var bHasImage = ( oImage != null ) ;
|
||||
|
||||
if ( bHasImage && bImageButton && oImage.tagName == 'IMG' )
|
||||
{
|
||||
if ( confirm( 'Do you want to transform the selected image on a image button?' ) )
|
||||
oImage = null ;
|
||||
}
|
||||
else if ( bHasImage && !bImageButton && oImage.tagName == 'INPUT' )
|
||||
{
|
||||
if ( confirm( 'Do you want to transform the selected image button on a simple image?' ) )
|
||||
oImage = null ;
|
||||
}
|
||||
|
||||
if ( !bHasImage )
|
||||
{
|
||||
if ( bImageButton )
|
||||
{
|
||||
oImage = FCK.EditorDocument.createElement( 'INPUT' ) ;
|
||||
oImage.type = 'image' ;
|
||||
oImage = FCK.InsertElementAndGetIt( oImage ) ;
|
||||
}
|
||||
else
|
||||
oImage = FCK.CreateElement( 'IMG' ) ;
|
||||
}
|
||||
else
|
||||
oEditor.FCKUndo.SaveUndoStep() ;
|
||||
|
||||
UpdateImage( oImage ) ;
|
||||
|
||||
var sLnkUrl = GetE('txtLnkUrl').value.trim() ;
|
||||
|
||||
if ( sLnkUrl.length == 0 )
|
||||
{
|
||||
if ( oLink )
|
||||
FCK.ExecuteNamedCommand( 'Unlink' ) ;
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( oLink ) // Modifying an existent link.
|
||||
oLink.href = sLnkUrl ;
|
||||
else // Creating a new link.
|
||||
{
|
||||
if ( !bHasImage )
|
||||
oEditor.FCKSelection.SelectNode( oImage ) ;
|
||||
|
||||
oLink = oEditor.FCK.CreateLink( sLnkUrl ) ;
|
||||
|
||||
if ( !bHasImage )
|
||||
{
|
||||
oEditor.FCKSelection.SelectNode( oLink ) ;
|
||||
oEditor.FCKSelection.Collapse( false ) ;
|
||||
}
|
||||
}
|
||||
|
||||
SetAttribute( oLink, '_fcksavedurl', sLnkUrl ) ;
|
||||
SetAttribute( oLink, 'target', GetE('cmbLnkTarget').value ) ;
|
||||
}
|
||||
|
||||
return true ;
|
||||
}
|
||||
|
||||
function UpdateImage( e, skipId )
|
||||
{
|
||||
e.src = GetE('txtUrl').value ;
|
||||
SetAttribute( e, "_fcksavedurl", GetE('txtUrl').value ) ;
|
||||
SetAttribute( e, "alt" , GetE('txtAlt').value ) ;
|
||||
SetAttribute( e, "width" , GetE('txtWidth').value ) ;
|
||||
SetAttribute( e, "height", GetE('txtHeight').value ) ;
|
||||
SetAttribute( e, "vspace", GetE('txtVSpace').value ) ;
|
||||
SetAttribute( e, "hspace", GetE('txtHSpace').value ) ;
|
||||
SetAttribute( e, "border", GetE('txtBorder').value ) ;
|
||||
SetAttribute( e, "align" , GetE('cmbAlign').value ) ;
|
||||
|
||||
// Advances Attributes
|
||||
|
||||
if ( ! skipId )
|
||||
SetAttribute( e, 'id', GetE('txtAttId').value ) ;
|
||||
|
||||
SetAttribute( e, 'dir' , GetE('cmbAttLangDir').value ) ;
|
||||
SetAttribute( e, 'lang' , GetE('txtAttLangCode').value ) ;
|
||||
SetAttribute( e, 'title' , GetE('txtAttTitle').value ) ;
|
||||
SetAttribute( e, 'class' , GetE('txtAttClasses').value ) ;
|
||||
SetAttribute( e, 'longDesc' , GetE('txtLongDesc').value ) ;
|
||||
|
||||
if ( oEditor.FCKBrowserInfo.IsIE )
|
||||
e.style.cssText = GetE('txtAttStyle').value ;
|
||||
else
|
||||
SetAttribute( e, 'style', GetE('txtAttStyle').value ) ;
|
||||
}
|
||||
|
||||
var eImgPreview ;
|
||||
var eImgPreviewLink ;
|
||||
|
||||
function SetPreviewElements( imageElement, linkElement )
|
||||
{
|
||||
eImgPreview = imageElement ;
|
||||
eImgPreviewLink = linkElement ;
|
||||
|
||||
UpdatePreview() ;
|
||||
UpdateOriginal() ;
|
||||
|
||||
bPreviewInitialized = true ;
|
||||
}
|
||||
|
||||
function UpdatePreview()
|
||||
{
|
||||
if ( !eImgPreview || !eImgPreviewLink )
|
||||
return ;
|
||||
|
||||
if ( GetE('txtUrl').value.length == 0 )
|
||||
eImgPreviewLink.style.display = 'none' ;
|
||||
else
|
||||
{
|
||||
UpdateImage( eImgPreview, true ) ;
|
||||
|
||||
if ( GetE('txtLnkUrl').value.trim().length > 0 )
|
||||
eImgPreviewLink.href = 'javascript:void(null);' ;
|
||||
else
|
||||
SetAttribute( eImgPreviewLink, 'href', '' ) ;
|
||||
|
||||
eImgPreviewLink.style.display = '' ;
|
||||
}
|
||||
}
|
||||
|
||||
var bLockRatio = true ;
|
||||
|
||||
function SwitchLock( lockButton )
|
||||
{
|
||||
bLockRatio = !bLockRatio ;
|
||||
lockButton.className = bLockRatio ? 'BtnLocked' : 'BtnUnlocked' ;
|
||||
lockButton.title = bLockRatio ? 'Lock sizes' : 'Unlock sizes' ;
|
||||
|
||||
if ( bLockRatio )
|
||||
{
|
||||
if ( GetE('txtWidth').value.length > 0 )
|
||||
OnSizeChanged( 'Width', GetE('txtWidth').value ) ;
|
||||
else
|
||||
OnSizeChanged( 'Height', GetE('txtHeight').value ) ;
|
||||
}
|
||||
}
|
||||
|
||||
// Fired when the width or height input texts change
|
||||
function OnSizeChanged( dimension, value )
|
||||
{
|
||||
// Verifies if the aspect ration has to be mantained
|
||||
if ( oImageOriginal && bLockRatio )
|
||||
{
|
||||
var e = dimension == 'Width' ? GetE('txtHeight') : GetE('txtWidth') ;
|
||||
|
||||
if ( value.length == 0 || isNaN( value ) )
|
||||
{
|
||||
e.value = '' ;
|
||||
return ;
|
||||
}
|
||||
|
||||
if ( dimension == 'Width' )
|
||||
value = value == 0 ? 0 : Math.round( oImageOriginal.height * ( value / oImageOriginal.width ) ) ;
|
||||
else
|
||||
value = value == 0 ? 0 : Math.round( oImageOriginal.width * ( value / oImageOriginal.height ) ) ;
|
||||
|
||||
if ( !isNaN( value ) )
|
||||
e.value = value ;
|
||||
}
|
||||
|
||||
UpdatePreview() ;
|
||||
}
|
||||
|
||||
// Fired when the Reset Size button is clicked
|
||||
function ResetSizes()
|
||||
{
|
||||
if ( ! oImageOriginal ) return ;
|
||||
|
||||
GetE('txtWidth').value = oImageOriginal.width ;
|
||||
GetE('txtHeight').value = oImageOriginal.height ;
|
||||
|
||||
UpdatePreview() ;
|
||||
}
|
||||
|
||||
function BrowseServer()
|
||||
{
|
||||
OpenServerBrowser(
|
||||
'Image',
|
||||
FCKConfig.ImageBrowserURL,
|
||||
FCKConfig.ImageBrowserWindowWidth,
|
||||
FCKConfig.ImageBrowserWindowHeight ) ;
|
||||
}
|
||||
|
||||
function LnkBrowseServer()
|
||||
{
|
||||
OpenServerBrowser(
|
||||
'Link',
|
||||
FCKConfig.LinkBrowserURL,
|
||||
FCKConfig.LinkBrowserWindowWidth,
|
||||
FCKConfig.LinkBrowserWindowHeight ) ;
|
||||
}
|
||||
|
||||
function OpenServerBrowser( type, url, width, height )
|
||||
{
|
||||
sActualBrowser = type ;
|
||||
OpenFileBrowser( url, width, height ) ;
|
||||
}
|
||||
|
||||
var sActualBrowser ;
|
||||
|
||||
function SetUrl( url, width, height, alt )
|
||||
{
|
||||
if ( sActualBrowser == 'Link' )
|
||||
{
|
||||
GetE('txtLnkUrl').value = url ;
|
||||
UpdatePreview() ;
|
||||
}
|
||||
else
|
||||
{
|
||||
GetE('txtUrl').value = url ;
|
||||
GetE('txtWidth').value = width ? width : '' ;
|
||||
GetE('txtHeight').value = height ? height : '' ;
|
||||
|
||||
if ( alt )
|
||||
GetE('txtAlt').value = alt;
|
||||
|
||||
UpdatePreview() ;
|
||||
UpdateOriginal( true ) ;
|
||||
}
|
||||
|
||||
window.parent.SetSelectedTab( 'Info' ) ;
|
||||
}
|
||||
|
||||
function OnUploadCompleted( errorNumber, fileUrl, fileName, customMsg )
|
||||
{
|
||||
switch ( errorNumber )
|
||||
{
|
||||
case 0 : // No errors
|
||||
alert( 'Your file has been successfully uploaded' ) ;
|
||||
break ;
|
||||
case 1 : // Custom error
|
||||
alert( customMsg ) ;
|
||||
return ;
|
||||
case 101 : // Custom warning
|
||||
alert( customMsg ) ;
|
||||
break ;
|
||||
case 201 :
|
||||
alert( 'A file with the same name is already available. The uploaded file has been renamed to "' + fileName + '"' ) ;
|
||||
break ;
|
||||
case 202 :
|
||||
alert( 'Invalid file type' ) ;
|
||||
return ;
|
||||
case 203 :
|
||||
alert( "Security error. You probably don't have enough permissions to upload. Please check your server." ) ;
|
||||
return ;
|
||||
default :
|
||||
alert( 'Error on file upload. Error number: ' + errorNumber ) ;
|
||||
return ;
|
||||
}
|
||||
|
||||
sActualBrowser = ''
|
||||
SetUrl( fileUrl ) ;
|
||||
GetE('frmUpload').reset() ;
|
||||
}
|
||||
|
||||
var oUploadAllowedExtRegex = new RegExp( FCKConfig.ImageUploadAllowedExtensions, 'i' ) ;
|
||||
var oUploadDeniedExtRegex = new RegExp( FCKConfig.ImageUploadDeniedExtensions, 'i' ) ;
|
||||
|
||||
function CheckUpload()
|
||||
{
|
||||
var sFile = GetE('txtUploadFile').value ;
|
||||
|
||||
if ( sFile.length == 0 )
|
||||
{
|
||||
alert( 'Please select a file to upload' ) ;
|
||||
return false ;
|
||||
}
|
||||
|
||||
if ( ( FCKConfig.ImageUploadAllowedExtensions.length > 0 && !oUploadAllowedExtRegex.test( sFile ) ) ||
|
||||
( FCKConfig.ImageUploadDeniedExtensions.length > 0 && oUploadDeniedExtRegex.test( sFile ) ) )
|
||||
{
|
||||
OnUploadCompleted( 202 ) ;
|
||||
return false ;
|
||||
}
|
||||
|
||||
return true ;
|
||||
}
|
@ -0,0 +1,61 @@
|
||||
<!--
|
||||
* FCKeditor - The text editor for internet
|
||||
* Copyright (C) 2003-2006 Frederico Caldeira Knabben
|
||||
*
|
||||
* Licensed under the terms of the GNU Lesser General Public License:
|
||||
* http://www.opensource.org/licenses/lgpl-license.php
|
||||
*
|
||||
* For further information visit:
|
||||
* http://www.fckeditor.net/
|
||||
*
|
||||
* "Support Open Source software. What about a donation today?"
|
||||
*
|
||||
* File Name: fck_image_preview.html
|
||||
* Preview page for the Image dialog window.
|
||||
* Curiosity: http://en.wikipedia.org/wiki/Lorem_ipsum
|
||||
*
|
||||
* File Authors:
|
||||
* Frederico Caldeira Knabben (fredck@fckeditor.net)
|
||||
-->
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<title></title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="robots" content="noindex, nofollow" />
|
||||
<link href="../common/fck_dialog_common.css" rel="stylesheet" type="text/css" />
|
||||
<script type="text/javascript">
|
||||
|
||||
// Sets the Skin CSS
|
||||
document.write( '<link href="' + window.parent.FCKConfig.SkinPath + 'fck_dialog.css" type="text/css" rel="stylesheet">' ) ;
|
||||
|
||||
if ( window.parent.FCKConfig.BaseHref.length > 0 )
|
||||
document.write( '<base href="' + window.parent.FCKConfig.BaseHref + '">' ) ;
|
||||
|
||||
window.onload = function()
|
||||
{
|
||||
window.parent.SetPreviewElements(
|
||||
document.getElementById( 'imgPreview' ),
|
||||
document.getElementById( 'lnkPreview' ) ) ;
|
||||
}
|
||||
|
||||
</script>
|
||||
</head>
|
||||
<body style="color: #000000; background-color: #ffffff">
|
||||
<a id="lnkPreview" onclick="return false;" style="cursor: default">
|
||||
<img id="imgPreview" onload="window.parent.UpdateOriginal();" style="display: none" /></a>Lorem
|
||||
ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas feugiat consequat diam.
|
||||
Maecenas metus. Vivamus diam purus, cursus a, commodo non, facilisis vitae, nulla.
|
||||
Aenean dictum lacinia tortor. Nunc iaculis, nibh non iaculis aliquam, orci felis
|
||||
euismod neque, sed ornare massa mauris sed velit. Nulla pretium mi et risus. Fusce
|
||||
mi pede, tempor id, cursus ac, ullamcorper nec, enim. Sed tortor. Curabitur molestie.
|
||||
Duis velit augue, condimentum at, ultrices a, luctus ut, orci. Donec pellentesque
|
||||
egestas eros. Integer cursus, augue in cursus faucibus, eros pede bibendum sem,
|
||||
in tempus tellus justo quis ligula. Etiam eget tortor. Vestibulum rutrum, est ut
|
||||
placerat elementum, lectus nisl aliquam velit, tempor aliquam eros nunc nonummy
|
||||
metus. In eros metus, gravida a, gravida sed, lobortis id, turpis. Ut ultrices,
|
||||
ipsum at venenatis fringilla, sem nulla lacinia tellus, eget aliquet turpis mauris
|
||||
non enim. Nam turpis. Suspendisse lacinia. Curabitur ac tortor ut ipsum egestas
|
||||
elementum. Nunc imperdiet gravida mauris.
|
||||
</body>
|
||||
</html>
|
289
admin/FCKeditor/editor/dialog/fck_link.html
Normal file
@ -0,0 +1,289 @@
|
||||
<!--
|
||||
* FCKeditor - The text editor for internet
|
||||
* Copyright (C) 2003-2006 Frederico Caldeira Knabben
|
||||
*
|
||||
* Licensed under the terms of the GNU Lesser General Public License:
|
||||
* http://www.opensource.org/licenses/lgpl-license.php
|
||||
*
|
||||
* For further information visit:
|
||||
* http://www.fckeditor.net/
|
||||
*
|
||||
* "Support Open Source software. What about a donation today?"
|
||||
*
|
||||
* File Name: fck_link.html
|
||||
* Link dialog window.
|
||||
*
|
||||
* File Authors:
|
||||
* Frederico Caldeira Knabben (fredck@fckeditor.net)
|
||||
-->
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||
<html>
|
||||
<head>
|
||||
<title>Link Properties</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="robots" content="noindex, nofollow" />
|
||||
<script src="common/fck_dialog_common.js" type="text/javascript"></script>
|
||||
<script src="fck_link/fck_link.js" type="text/javascript"></script>
|
||||
</head>
|
||||
<body scroll="no" style="OVERFLOW: hidden">
|
||||
<div id="divInfo" style="DISPLAY: none">
|
||||
<span fckLang="DlgLnkType">Link Type</span><br />
|
||||
<select id="cmbLinkType" onchange="SetLinkType(this.value);">
|
||||
<option value="url" fckLang="DlgLnkTypeURL" selected="selected">URL</option>
|
||||
<option value="anchor" fckLang="DlgLnkTypeAnchor">Anchor in this page</option>
|
||||
<option value="email" fckLang="DlgLnkTypeEMail">E-Mail</option>
|
||||
</select>
|
||||
<br />
|
||||
<br />
|
||||
<div id="divLinkTypeUrl">
|
||||
<table cellspacing="0" cellpadding="0" width="100%" border="0" dir="ltr">
|
||||
<tr>
|
||||
<td nowrap="nowrap">
|
||||
<span fckLang="DlgLnkProto">Protocol</span><br />
|
||||
<select id="cmbLinkProtocol">
|
||||
<option value="http://" selected="selected">http://</option>
|
||||
<option value="https://">https://</option>
|
||||
<option value="ftp://">ftp://</option>
|
||||
<option value="news://">news://</option>
|
||||
<option value="" fckLang="DlgLnkProtoOther"><other></option>
|
||||
</select>
|
||||
</td>
|
||||
<td nowrap="nowrap"> </td>
|
||||
<td nowrap="nowrap" width="100%">
|
||||
<span fckLang="DlgLnkURL">URL</span><br />
|
||||
<input id="txtUrl" style="WIDTH: 100%" type="text" onkeyup="OnUrlChange();" onchange="OnUrlChange();" />
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br />
|
||||
<div id="divBrowseServer">
|
||||
<input type="button" value="Browse Server" fckLang="DlgBtnBrowseServer" onclick="BrowseServer();" />
|
||||
</div>
|
||||
</div>
|
||||
<div id="divLinkTypeAnchor" style="DISPLAY: none" align="center">
|
||||
<div id="divSelAnchor" style="DISPLAY: none">
|
||||
<table cellspacing="0" cellpadding="0" border="0" width="70%">
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
<span fckLang="DlgLnkAnchorSel">Select an Anchor</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="50%">
|
||||
<span fckLang="DlgLnkAnchorByName">By Anchor Name</span><br />
|
||||
<select id="cmbAnchorName" onchange="GetE('cmbAnchorId').value='';" style="WIDTH: 100%">
|
||||
<option value="" selected="selected"></option>
|
||||
</select>
|
||||
</td>
|
||||
<td> </td>
|
||||
<td width="50%">
|
||||
<span fckLang="DlgLnkAnchorById">By Element Id</span><br />
|
||||
<select id="cmbAnchorId" onchange="GetE('cmbAnchorName').value='';" style="WIDTH: 100%">
|
||||
<option value="" selected="selected"></option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div id="divNoAnchor" style="DISPLAY: none">
|
||||
<span fckLang="DlgLnkNoAnchors"><No anchors available in the document></span>
|
||||
</div>
|
||||
</div>
|
||||
<div id="divLinkTypeEMail" style="DISPLAY: none">
|
||||
<span fckLang="DlgLnkEMail">E-Mail Address</span><br />
|
||||
<input id="txtEMailAddress" style="WIDTH: 100%" type="text" /><br />
|
||||
<span fckLang="DlgLnkEMailSubject">Message Subject</span><br />
|
||||
<input id="txtEMailSubject" style="WIDTH: 100%" type="text" /><br />
|
||||
<span fckLang="DlgLnkEMailBody">Message Body</span><br />
|
||||
<textarea id="txtEMailBody" style="WIDTH: 100%" rows="3" cols="20"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div id="divUpload" style="DISPLAY: none">
|
||||
<form id="frmUpload" method="post" target="UploadWindow" enctype="multipart/form-data" action="" onsubmit="return CheckUpload();">
|
||||
<span fckLang="DlgLnkUpload">Upload</span><br />
|
||||
<input id="txtUploadFile" style="WIDTH: 100%" type="file" size="40" name="NewFile" /><br />
|
||||
<br />
|
||||
<input id="btnUpload" type="submit" value="Send it to the Server" fckLang="DlgLnkBtnUpload" />
|
||||
<iframe name="UploadWindow" style="DISPLAY: none" src="../fckblank.html"></iframe>
|
||||
</form>
|
||||
</div>
|
||||
<div id="divTarget" style="DISPLAY: none">
|
||||
<table cellspacing="0" cellpadding="0" width="100%" border="0">
|
||||
<tr>
|
||||
<td nowrap="nowrap">
|
||||
<span fckLang="DlgLnkTarget">Target</span><br />
|
||||
<select id="cmbTarget" onchange="SetTarget(this.value);">
|
||||
<option value="" fckLang="DlgGenNotSet" selected="selected"><not set></option>
|
||||
<option value="frame" fckLang="DlgLnkTargetFrame"><frame></option>
|
||||
<option value="popup" fckLang="DlgLnkTargetPopup"><popup window></option>
|
||||
<option value="_blank" fckLang="DlgLnkTargetBlank">New Window (_blank)</option>
|
||||
<option value="_top" fckLang="DlgLnkTargetTop">Topmost Window (_top)</option>
|
||||
<option value="_self" fckLang="DlgLnkTargetSelf">Same Window (_self)</option>
|
||||
<option value="_parent" fckLang="DlgLnkTargetParent">Parent Window (_parent)</option>
|
||||
</select>
|
||||
</td>
|
||||
<td> </td>
|
||||
<td id="tdTargetFrame" nowrap="nowrap" width="100%">
|
||||
<span fckLang="DlgLnkTargetFrameName">Target Frame Name</span><br />
|
||||
<input id="txtTargetFrame" style="WIDTH: 100%" type="text" onkeyup="OnTargetNameChange();"
|
||||
onchange="OnTargetNameChange();" />
|
||||
</td>
|
||||
<td id="tdPopupName" style="DISPLAY: none" nowrap="nowrap" width="100%">
|
||||
<span fckLang="DlgLnkPopWinName">Popup Window Name</span><br />
|
||||
<input id="txtPopupName" style="WIDTH: 100%" type="text" />
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br />
|
||||
<table id="tablePopupFeatures" style="DISPLAY: none" cellspacing="0" cellpadding="0" align="center"
|
||||
border="0">
|
||||
<tr>
|
||||
<td>
|
||||
<span fckLang="DlgLnkPopWinFeat">Popup Window Features</span><br />
|
||||
<table cellspacing="0" cellpadding="0" border="0">
|
||||
<tr>
|
||||
<td valign="top" nowrap="nowrap" width="50%">
|
||||
<input id="chkPopupResizable" name="chkFeature" value="resizable" type="checkbox" /><label for="chkPopupResizable" fckLang="DlgLnkPopResize">Resizable</label><br />
|
||||
<input id="chkPopupLocationBar" name="chkFeature" value="location" type="checkbox" /><label for="chkPopupLocationBar" fckLang="DlgLnkPopLocation">Location
|
||||
Bar</label><br />
|
||||
<input id="chkPopupManuBar" name="chkFeature" value="menubar" type="checkbox" /><label for="chkPopupManuBar" fckLang="DlgLnkPopMenu">Menu
|
||||
Bar</label><br />
|
||||
<input id="chkPopupScrollBars" name="chkFeature" value="scrollbars" type="checkbox" /><label for="chkPopupScrollBars" fckLang="DlgLnkPopScroll">Scroll
|
||||
Bars</label>
|
||||
</td>
|
||||
<td></td>
|
||||
<td valign="top" nowrap="nowrap" width="50%">
|
||||
<input id="chkPopupStatusBar" name="chkFeature" value="status" type="checkbox" /><label for="chkPopupStatusBar" fckLang="DlgLnkPopStatus">Status
|
||||
Bar</label><br />
|
||||
<input id="chkPopupToolbar" name="chkFeature" value="toolbar" type="checkbox" /><label for="chkPopupToolbar" fckLang="DlgLnkPopToolbar">Toolbar</label><br />
|
||||
<input id="chkPopupFullScreen" name="chkFeature" value="fullscreen" type="checkbox" /><label for="chkPopupFullScreen" fckLang="DlgLnkPopFullScrn">Full
|
||||
Screen (IE)</label><br />
|
||||
<input id="chkPopupDependent" name="chkFeature" value="dependent" type="checkbox" /><label for="chkPopupDependent" fckLang="DlgLnkPopDependent">Dependent
|
||||
(Netscape)</label>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top" nowrap="nowrap" width="50%"> </td>
|
||||
<td></td>
|
||||
<td valign="top" nowrap="nowrap" width="50%"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top">
|
||||
<table cellspacing="0" cellpadding="0" border="0">
|
||||
<tr>
|
||||
<td nowrap="nowrap"><span fckLang="DlgLnkPopWidth">Width</span></td>
|
||||
<td> <input id="txtPopupWidth" type="text" maxlength="4" size="4" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td nowrap="nowrap"><span fckLang="DlgLnkPopHeight">Height</span></td>
|
||||
<td> <input id="txtPopupHeight" type="text" maxlength="4" size="4" /></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td> </td>
|
||||
<td valign="top">
|
||||
<table cellspacing="0" cellpadding="0" border="0">
|
||||
<tr>
|
||||
<td nowrap="nowrap"><span fckLang="DlgLnkPopLeft">Left Position</span></td>
|
||||
<td> <input id="txtPopupLeft" type="text" maxlength="4" size="4" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td nowrap="nowrap"><span fckLang="DlgLnkPopTop">Top Position</span></td>
|
||||
<td> <input id="txtPopupTop" type="text" maxlength="4" size="4" /></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div id="divAttribs" style="DISPLAY: none">
|
||||
<table cellspacing="0" cellpadding="0" width="100%" align="center" border="0">
|
||||
<tr>
|
||||
<td valign="top" width="50%">
|
||||
<span fckLang="DlgGenId">Id</span><br />
|
||||
<input id="txtAttId" style="WIDTH: 100%" type="text" />
|
||||
</td>
|
||||
<td width="1"></td>
|
||||
<td valign="top">
|
||||
<table cellspacing="0" cellpadding="0" width="100%" align="center" border="0">
|
||||
<tr>
|
||||
<td width="60%">
|
||||
<span fckLang="DlgGenLangDir">Language Direction</span><br />
|
||||
<select id="cmbAttLangDir" style="WIDTH: 100%">
|
||||
<option value="" fckLang="DlgGenNotSet" selected><not set></option>
|
||||
<option value="ltr" fckLang="DlgGenLangDirLtr">Left to Right (LTR)</option>
|
||||
<option value="rtl" fckLang="DlgGenLangDirRtl">Right to Left (RTL)</option>
|
||||
</select>
|
||||
</td>
|
||||
<td width="1%"> </td>
|
||||
<td nowrap="nowrap"><span fckLang="DlgGenAccessKey">Access Key</span><br />
|
||||
<input id="txtAttAccessKey" style="WIDTH: 100%" type="text" maxlength="1" size="1" />
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top" width="50%">
|
||||
<span fckLang="DlgGenName">Name</span><br />
|
||||
<input id="txtAttName" style="WIDTH: 100%" type="text" />
|
||||
</td>
|
||||
<td width="1"></td>
|
||||
<td valign="top">
|
||||
<table cellspacing="0" cellpadding="0" width="100%" align="center" border="0">
|
||||
<tr>
|
||||
<td width="60%">
|
||||
<span fckLang="DlgGenLangCode">Language Code</span><br />
|
||||
<input id="txtAttLangCode" style="WIDTH: 100%" type="text" />
|
||||
</td>
|
||||
<td width="1%"> </td>
|
||||
<td nowrap="nowrap">
|
||||
<span fckLang="DlgGenTabIndex">Tab Index</span><br />
|
||||
<input id="txtAttTabIndex" style="WIDTH: 100%" type="text" maxlength="5" size="5" />
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top" width="50%"> </td>
|
||||
<td width="1"></td>
|
||||
<td valign="top"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top" width="50%">
|
||||
<span fckLang="DlgGenTitle">Advisory Title</span><br />
|
||||
<input id="txtAttTitle" style="WIDTH: 100%" type="text" />
|
||||
</td>
|
||||
<td width="1"> </td>
|
||||
<td valign="top">
|
||||
<span fckLang="DlgGenContType">Advisory Content Type</span><br />
|
||||
<input id="txtAttContentType" style="WIDTH: 100%" type="text" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top">
|
||||
<span fckLang="DlgGenClass">Stylesheet Classes</span><br />
|
||||
<input id="txtAttClasses" style="WIDTH: 100%" type="text" />
|
||||
</td>
|
||||
<td></td>
|
||||
<td valign="top">
|
||||
<span fckLang="DlgGenLinkCharset">Linked Resource Charset</span><br />
|
||||
<input id="txtAttCharSet" style="WIDTH: 100%" type="text" />
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<table cellspacing="0" cellpadding="0" width="100%" align="center" border="0">
|
||||
<tr>
|
||||
<td>
|
||||
<span fckLang="DlgGenStyle">Style</span><br />
|
||||
<input id="txtAttStyle" style="WIDTH: 100%" type="text" />
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
630
admin/FCKeditor/editor/dialog/fck_link/fck_link.js
Normal file
@ -0,0 +1,630 @@
|
||||
/*
|
||||
* FCKeditor - The text editor for internet
|
||||
* Copyright (C) 2003-2006 Frederico Caldeira Knabben
|
||||
*
|
||||
* Licensed under the terms of the GNU Lesser General Public License:
|
||||
* http://www.opensource.org/licenses/lgpl-license.php
|
||||
*
|
||||
* For further information visit:
|
||||
* http://www.fckeditor.net/
|
||||
*
|
||||
* "Support Open Source software. What about a donation today?"
|
||||
*
|
||||
* File Name: fck_link.js
|
||||
* Scripts related to the Link dialog window (see fck_link.html).
|
||||
*
|
||||
* File Authors:
|
||||
* Frederico Caldeira Knabben (fredck@fckeditor.net)
|
||||
* Dominik Pesch ?dom? (empty selection patch) (d.pesch@11com7.de)
|
||||
*/
|
||||
|
||||
var oEditor = window.parent.InnerDialogLoaded() ;
|
||||
var FCK = oEditor.FCK ;
|
||||
var FCKLang = oEditor.FCKLang ;
|
||||
var FCKConfig = oEditor.FCKConfig ;
|
||||
|
||||
//#### Dialog Tabs
|
||||
|
||||
// Set the dialog tabs.
|
||||
window.parent.AddTab( 'Info', FCKLang.DlgLnkInfoTab ) ;
|
||||
|
||||
if ( !FCKConfig.LinkDlgHideTarget )
|
||||
window.parent.AddTab( 'Target', FCKLang.DlgLnkTargetTab, true ) ;
|
||||
|
||||
if ( FCKConfig.LinkUpload )
|
||||
window.parent.AddTab( 'Upload', FCKLang.DlgLnkUpload, true ) ;
|
||||
|
||||
if ( !FCKConfig.LinkDlgHideAdvanced )
|
||||
window.parent.AddTab( 'Advanced', FCKLang.DlgAdvancedTag ) ;
|
||||
|
||||
// Function called when a dialog tag is selected.
|
||||
function OnDialogTabChange( tabCode )
|
||||
{
|
||||
ShowE('divInfo' , ( tabCode == 'Info' ) ) ;
|
||||
ShowE('divTarget' , ( tabCode == 'Target' ) ) ;
|
||||
ShowE('divUpload' , ( tabCode == 'Upload' ) ) ;
|
||||
ShowE('divAttribs' , ( tabCode == 'Advanced' ) ) ;
|
||||
|
||||
window.parent.SetAutoSize( true ) ;
|
||||
}
|
||||
|
||||
//#### Regular Expressions library.
|
||||
var oRegex = new Object() ;
|
||||
|
||||
oRegex.UriProtocol = new RegExp('') ;
|
||||
oRegex.UriProtocol.compile( '^(((http|https|ftp|news):\/\/)|mailto:)', 'gi' ) ;
|
||||
|
||||
oRegex.UrlOnChangeProtocol = new RegExp('') ;
|
||||
oRegex.UrlOnChangeProtocol.compile( '^(http|https|ftp|news)://(?=.)', 'gi' ) ;
|
||||
|
||||
oRegex.UrlOnChangeTestOther = new RegExp('') ;
|
||||
//oRegex.UrlOnChangeTestOther.compile( '^(javascript:|#|/)', 'gi' ) ;
|
||||
oRegex.UrlOnChangeTestOther.compile( '^((javascript:)|[#/\.])', 'gi' ) ;
|
||||
|
||||
oRegex.ReserveTarget = new RegExp('') ;
|
||||
oRegex.ReserveTarget.compile( '^_(blank|self|top|parent)$', 'i' ) ;
|
||||
|
||||
oRegex.PopupUri = new RegExp('') ;
|
||||
oRegex.PopupUri.compile( "^javascript:void\\(\\s*window.open\\(\\s*'([^']+)'\\s*,\\s*(?:'([^']*)'|null)\\s*,\\s*'([^']*)'\\s*\\)\\s*\\)\\s*$" ) ;
|
||||
|
||||
oRegex.PopupFeatures = new RegExp('') ;
|
||||
oRegex.PopupFeatures.compile( '(?:^|,)([^=]+)=(\\d+|yes|no)', 'gi' ) ;
|
||||
|
||||
//#### Parser Functions
|
||||
|
||||
var oParser = new Object() ;
|
||||
|
||||
oParser.ParseEMailUrl = function( emailUrl )
|
||||
{
|
||||
// Initializes the EMailInfo object.
|
||||
var oEMailInfo = new Object() ;
|
||||
oEMailInfo.Address = '' ;
|
||||
oEMailInfo.Subject = '' ;
|
||||
oEMailInfo.Body = '' ;
|
||||
|
||||
var oParts = emailUrl.match( /^([^\?]+)\??(.+)?/ ) ;
|
||||
if ( oParts )
|
||||
{
|
||||
// Set the e-mail address.
|
||||
oEMailInfo.Address = oParts[1] ;
|
||||
|
||||
// Look for the optional e-mail parameters.
|
||||
if ( oParts[2] )
|
||||
{
|
||||
var oMatch = oParts[2].match( /(^|&)subject=([^&]+)/i ) ;
|
||||
if ( oMatch ) oEMailInfo.Subject = unescape( oMatch[2] ) ;
|
||||
|
||||
oMatch = oParts[2].match( /(^|&)body=([^&]+)/i ) ;
|
||||
if ( oMatch ) oEMailInfo.Body = unescape( oMatch[2] ) ;
|
||||
}
|
||||
}
|
||||
|
||||
return oEMailInfo ;
|
||||
}
|
||||
|
||||
oParser.CreateEMailUri = function( address, subject, body )
|
||||
{
|
||||
var sBaseUri = 'mailto:' + address ;
|
||||
|
||||
var sParams = '' ;
|
||||
|
||||
if ( subject.length > 0 )
|
||||
sParams = '?subject=' + escape( subject ) ;
|
||||
|
||||
if ( body.length > 0 )
|
||||
{
|
||||
sParams += ( sParams.length == 0 ? '?' : '&' ) ;
|
||||
sParams += 'body=' + escape( body ) ;
|
||||
}
|
||||
|
||||
return sBaseUri + sParams ;
|
||||
}
|
||||
|
||||
//#### Initialization Code
|
||||
|
||||
// oLink: The actual selected link in the editor.
|
||||
var oLink = FCK.Selection.MoveToAncestorNode( 'A' ) ;
|
||||
if ( oLink )
|
||||
FCK.Selection.SelectNode( oLink ) ;
|
||||
|
||||
window.onload = function()
|
||||
{
|
||||
// Translate the dialog box texts.
|
||||
oEditor.FCKLanguageManager.TranslatePage(document) ;
|
||||
|
||||
// Fill the Anchor Names and Ids combos.
|
||||
LoadAnchorNamesAndIds() ;
|
||||
|
||||
// Load the selected link information (if any).
|
||||
LoadSelection() ;
|
||||
|
||||
// Update the dialog box.
|
||||
SetLinkType( GetE('cmbLinkType').value ) ;
|
||||
|
||||
// Show/Hide the "Browse Server" button.
|
||||
GetE('divBrowseServer').style.display = FCKConfig.LinkBrowser ? '' : 'none' ;
|
||||
|
||||
// Show the initial dialog content.
|
||||
GetE('divInfo').style.display = '' ;
|
||||
|
||||
// Set the actual uploader URL.
|
||||
if ( FCKConfig.LinkUpload )
|
||||
GetE('frmUpload').action = FCKConfig.LinkUploadURL ;
|
||||
|
||||
// Activate the "OK" button.
|
||||
window.parent.SetOkButton( true ) ;
|
||||
}
|
||||
|
||||
var bHasAnchors ;
|
||||
|
||||
function LoadAnchorNamesAndIds()
|
||||
{
|
||||
// Since version 2.0, the anchors are replaced in the DOM by IMGs so the user see the icon
|
||||
// to edit them. So, we must look for that images now.
|
||||
var aAnchors = new Array() ;
|
||||
|
||||
var oImages = oEditor.FCK.EditorDocument.getElementsByTagName( 'IMG' ) ;
|
||||
for( var i = 0 ; i < oImages.length ; i++ )
|
||||
{
|
||||
if ( oImages[i].getAttribute('_fckanchor') )
|
||||
aAnchors[ aAnchors.length ] = oEditor.FCK.GetRealElement( oImages[i] ) ;
|
||||
}
|
||||
|
||||
var aIds = oEditor.FCKTools.GetAllChildrenIds( oEditor.FCK.EditorDocument.body ) ;
|
||||
|
||||
bHasAnchors = ( aAnchors.length > 0 || aIds.length > 0 ) ;
|
||||
|
||||
for ( var i = 0 ; i < aAnchors.length ; i++ )
|
||||
{
|
||||
var sName = aAnchors[i].name ;
|
||||
if ( sName && sName.length > 0 )
|
||||
oEditor.FCKTools.AddSelectOption( GetE('cmbAnchorName'), sName, sName ) ;
|
||||
}
|
||||
|
||||
for ( var i = 0 ; i < aIds.length ; i++ )
|
||||
{
|
||||
oEditor.FCKTools.AddSelectOption( GetE('cmbAnchorId'), aIds[i], aIds[i] ) ;
|
||||
}
|
||||
|
||||
ShowE( 'divSelAnchor' , bHasAnchors ) ;
|
||||
ShowE( 'divNoAnchor' , !bHasAnchors ) ;
|
||||
}
|
||||
|
||||
function LoadSelection()
|
||||
{
|
||||
if ( !oLink ) return ;
|
||||
|
||||
var sType = 'url' ;
|
||||
|
||||
// Get the actual Link href.
|
||||
var sHRef = oLink.getAttribute( '_fcksavedurl' ) ;
|
||||
if ( sHRef == null )
|
||||
sHRef = oLink.getAttribute( 'href' , 2 ) + '' ;
|
||||
|
||||
// Look for a popup javascript link.
|
||||
var oPopupMatch = oRegex.PopupUri.exec( sHRef ) ;
|
||||
if( oPopupMatch )
|
||||
{
|
||||
GetE('cmbTarget').value = 'popup' ;
|
||||
sHRef = oPopupMatch[1] ;
|
||||
FillPopupFields( oPopupMatch[2], oPopupMatch[3] ) ;
|
||||
SetTarget( 'popup' ) ;
|
||||
}
|
||||
|
||||
// Search for the protocol.
|
||||
var sProtocol = oRegex.UriProtocol.exec( sHRef ) ;
|
||||
|
||||
if ( sProtocol )
|
||||
{
|
||||
sProtocol = sProtocol[0].toLowerCase() ;
|
||||
GetE('cmbLinkProtocol').value = sProtocol ;
|
||||
|
||||
// Remove the protocol and get the remainig URL.
|
||||
var sUrl = sHRef.replace( oRegex.UriProtocol, '' ) ;
|
||||
|
||||
if ( sProtocol == 'mailto:' ) // It is an e-mail link.
|
||||
{
|
||||
sType = 'email' ;
|
||||
|
||||
var oEMailInfo = oParser.ParseEMailUrl( sUrl ) ;
|
||||
GetE('txtEMailAddress').value = oEMailInfo.Address ;
|
||||
GetE('txtEMailSubject').value = oEMailInfo.Subject ;
|
||||
GetE('txtEMailBody').value = oEMailInfo.Body ;
|
||||
}
|
||||
else // It is a normal link.
|
||||
{
|
||||
sType = 'url' ;
|
||||
GetE('txtUrl').value = sUrl ;
|
||||
}
|
||||
}
|
||||
else if ( sHRef.substr(0,1) == '#' && sHRef.length > 1 ) // It is an anchor link.
|
||||
{
|
||||
sType = 'anchor' ;
|
||||
GetE('cmbAnchorName').value = GetE('cmbAnchorId').value = sHRef.substr(1) ;
|
||||
}
|
||||
else // It is another type of link.
|
||||
{
|
||||
sType = 'url' ;
|
||||
|
||||
GetE('cmbLinkProtocol').value = '' ;
|
||||
GetE('txtUrl').value = sHRef ;
|
||||
}
|
||||
|
||||
if ( !oPopupMatch )
|
||||
{
|
||||
// Get the target.
|
||||
var sTarget = oLink.target ;
|
||||
|
||||
if ( sTarget && sTarget.length > 0 )
|
||||
{
|
||||
if ( oRegex.ReserveTarget.test( sTarget ) )
|
||||
{
|
||||
sTarget = sTarget.toLowerCase() ;
|
||||
GetE('cmbTarget').value = sTarget ;
|
||||
}
|
||||
else
|
||||
GetE('cmbTarget').value = 'frame' ;
|
||||
GetE('txtTargetFrame').value = sTarget ;
|
||||
}
|
||||
}
|
||||
|
||||
// Get Advances Attributes
|
||||
GetE('txtAttId').value = oLink.id ;
|
||||
GetE('txtAttName').value = oLink.name ;
|
||||
GetE('cmbAttLangDir').value = oLink.dir ;
|
||||
GetE('txtAttLangCode').value = oLink.lang ;
|
||||
GetE('txtAttAccessKey').value = oLink.accessKey ;
|
||||
GetE('txtAttTabIndex').value = oLink.tabIndex <= 0 ? '' : oLink.tabIndex ;
|
||||
GetE('txtAttTitle').value = oLink.title ;
|
||||
GetE('txtAttContentType').value = oLink.type ;
|
||||
GetE('txtAttCharSet').value = oLink.charset ;
|
||||
|
||||
if ( oEditor.FCKBrowserInfo.IsIE )
|
||||
{
|
||||
GetE('txtAttClasses').value = oLink.getAttribute('className',2) || '' ;
|
||||
GetE('txtAttStyle').value = oLink.style.cssText ;
|
||||
}
|
||||
else
|
||||
{
|
||||
GetE('txtAttClasses').value = oLink.getAttribute('class',2) || '' ;
|
||||
GetE('txtAttStyle').value = oLink.getAttribute('style',2) ;
|
||||
}
|
||||
|
||||
// Update the Link type combo.
|
||||
GetE('cmbLinkType').value = sType ;
|
||||
}
|
||||
|
||||
//#### Link type selection.
|
||||
function SetLinkType( linkType )
|
||||
{
|
||||
ShowE('divLinkTypeUrl' , (linkType == 'url') ) ;
|
||||
ShowE('divLinkTypeAnchor' , (linkType == 'anchor') ) ;
|
||||
ShowE('divLinkTypeEMail' , (linkType == 'email') ) ;
|
||||
|
||||
if ( !FCKConfig.LinkDlgHideTarget )
|
||||
window.parent.SetTabVisibility( 'Target' , (linkType == 'url') ) ;
|
||||
|
||||
if ( FCKConfig.LinkUpload )
|
||||
window.parent.SetTabVisibility( 'Upload' , (linkType == 'url') ) ;
|
||||
|
||||
if ( !FCKConfig.LinkDlgHideAdvanced )
|
||||
window.parent.SetTabVisibility( 'Advanced' , (linkType != 'anchor' || bHasAnchors) ) ;
|
||||
|
||||
if ( linkType == 'email' )
|
||||
window.parent.SetAutoSize( true ) ;
|
||||
}
|
||||
|
||||
//#### Target type selection.
|
||||
function SetTarget( targetType )
|
||||
{
|
||||
GetE('tdTargetFrame').style.display = ( targetType == 'popup' ? 'none' : '' ) ;
|
||||
GetE('tdPopupName').style.display =
|
||||
GetE('tablePopupFeatures').style.display = ( targetType == 'popup' ? '' : 'none' ) ;
|
||||
|
||||
switch ( targetType )
|
||||
{
|
||||
case "_blank" :
|
||||
case "_self" :
|
||||
case "_parent" :
|
||||
case "_top" :
|
||||
GetE('txtTargetFrame').value = targetType ;
|
||||
break ;
|
||||
case "" :
|
||||
GetE('txtTargetFrame').value = '' ;
|
||||
break ;
|
||||
}
|
||||
|
||||
if ( targetType == 'popup' )
|
||||
window.parent.SetAutoSize( true ) ;
|
||||
}
|
||||
|
||||
//#### Called while the user types the URL.
|
||||
function OnUrlChange()
|
||||
{
|
||||
var sUrl = GetE('txtUrl').value ;
|
||||
var sProtocol = oRegex.UrlOnChangeProtocol.exec( sUrl ) ;
|
||||
|
||||
if ( sProtocol )
|
||||
{
|
||||
sUrl = sUrl.substr( sProtocol[0].length ) ;
|
||||
GetE('txtUrl').value = sUrl ;
|
||||
GetE('cmbLinkProtocol').value = sProtocol[0].toLowerCase() ;
|
||||
}
|
||||
else if ( oRegex.UrlOnChangeTestOther.test( sUrl ) )
|
||||
{
|
||||
GetE('cmbLinkProtocol').value = '' ;
|
||||
}
|
||||
}
|
||||
|
||||
//#### Called while the user types the target name.
|
||||
function OnTargetNameChange()
|
||||
{
|
||||
var sFrame = GetE('txtTargetFrame').value ;
|
||||
|
||||
if ( sFrame.length == 0 )
|
||||
GetE('cmbTarget').value = '' ;
|
||||
else if ( oRegex.ReserveTarget.test( sFrame ) )
|
||||
GetE('cmbTarget').value = sFrame.toLowerCase() ;
|
||||
else
|
||||
GetE('cmbTarget').value = 'frame' ;
|
||||
}
|
||||
|
||||
//#### Builds the javascript URI to open a popup to the specified URI.
|
||||
function BuildPopupUri( uri )
|
||||
{
|
||||
var oReg = new RegExp( "'", "g" ) ;
|
||||
var sWindowName = "'" + GetE('txtPopupName').value.replace(oReg, "\\'") + "'" ;
|
||||
|
||||
var sFeatures = '' ;
|
||||
var aChkFeatures = document.getElementsByName('chkFeature') ;
|
||||
for ( var i = 0 ; i < aChkFeatures.length ; i++ )
|
||||
{
|
||||
if ( i > 0 ) sFeatures += ',' ;
|
||||
sFeatures += aChkFeatures[i].value + '=' + ( aChkFeatures[i].checked ? 'yes' : 'no' ) ;
|
||||
}
|
||||
|
||||
if ( GetE('txtPopupWidth').value.length > 0 ) sFeatures += ',width=' + GetE('txtPopupWidth').value ;
|
||||
if ( GetE('txtPopupHeight').value.length > 0 ) sFeatures += ',height=' + GetE('txtPopupHeight').value ;
|
||||
if ( GetE('txtPopupLeft').value.length > 0 ) sFeatures += ',left=' + GetE('txtPopupLeft').value ;
|
||||
if ( GetE('txtPopupTop').value.length > 0 ) sFeatures += ',top=' + GetE('txtPopupTop').value ;
|
||||
|
||||
return ( "javascript:void(window.open('" + uri + "'," + sWindowName + ",'" + sFeatures + "'))" ) ;
|
||||
}
|
||||
|
||||
//#### Fills all Popup related fields.
|
||||
function FillPopupFields( windowName, features )
|
||||
{
|
||||
if ( windowName )
|
||||
GetE('txtPopupName').value = windowName ;
|
||||
|
||||
var oFeatures = new Object() ;
|
||||
var oFeaturesMatch ;
|
||||
while( ( oFeaturesMatch = oRegex.PopupFeatures.exec( features ) ) != null )
|
||||
{
|
||||
var sValue = oFeaturesMatch[2] ;
|
||||
if ( sValue == ( 'yes' || '1' ) )
|
||||
oFeatures[ oFeaturesMatch[1] ] = true ;
|
||||
else if ( ! isNaN( sValue ) && sValue != 0 )
|
||||
oFeatures[ oFeaturesMatch[1] ] = sValue ;
|
||||
}
|
||||
|
||||
// Update all features check boxes.
|
||||
var aChkFeatures = document.getElementsByName('chkFeature') ;
|
||||
for ( var i = 0 ; i < aChkFeatures.length ; i++ )
|
||||
{
|
||||
if ( oFeatures[ aChkFeatures[i].value ] )
|
||||
aChkFeatures[i].checked = true ;
|
||||
}
|
||||
|
||||
// Update position and size text boxes.
|
||||
if ( oFeatures['width'] ) GetE('txtPopupWidth').value = oFeatures['width'] ;
|
||||
if ( oFeatures['height'] ) GetE('txtPopupHeight').value = oFeatures['height'] ;
|
||||
if ( oFeatures['left'] ) GetE('txtPopupLeft').value = oFeatures['left'] ;
|
||||
if ( oFeatures['top'] ) GetE('txtPopupTop').value = oFeatures['top'] ;
|
||||
}
|
||||
|
||||
//#### The OK button was hit.
|
||||
function Ok()
|
||||
{
|
||||
var sUri, sInnerHtml ;
|
||||
|
||||
switch ( GetE('cmbLinkType').value )
|
||||
{
|
||||
case 'url' :
|
||||
sUri = GetE('txtUrl').value ;
|
||||
|
||||
if ( sUri.length == 0 )
|
||||
{
|
||||
alert( FCKLang.DlnLnkMsgNoUrl ) ;
|
||||
return false ;
|
||||
}
|
||||
|
||||
sUri = GetE('cmbLinkProtocol').value + sUri ;
|
||||
|
||||
if( GetE('cmbTarget').value == 'popup' )
|
||||
{
|
||||
// Check the window name, according to http://www.w3.org/TR/html4/types.html#type-frame-target (IE throw erros with spaces).
|
||||
if ( /(^[^a-zA-Z])|(\s)/.test( GetE('txtPopupName').value ) )
|
||||
{
|
||||
alert( FCKLang.DlnLnkMsgInvPopName ) ;
|
||||
return false ;
|
||||
}
|
||||
|
||||
sUri = BuildPopupUri( sUri ) ;
|
||||
}
|
||||
|
||||
break ;
|
||||
|
||||
case 'email' :
|
||||
sUri = GetE('txtEMailAddress').value ;
|
||||
|
||||
if ( sUri.length == 0 )
|
||||
{
|
||||
alert( FCKLang.DlnLnkMsgNoEMail ) ;
|
||||
return false ;
|
||||
}
|
||||
|
||||
sUri = oParser.CreateEMailUri(
|
||||
sUri,
|
||||
GetE('txtEMailSubject').value,
|
||||
GetE('txtEMailBody').value ) ;
|
||||
break ;
|
||||
|
||||
case 'anchor' :
|
||||
var sAnchor = GetE('cmbAnchorName').value ;
|
||||
if ( sAnchor.length == 0 ) sAnchor = GetE('cmbAnchorId').value ;
|
||||
|
||||
if ( sAnchor.length == 0 )
|
||||
{
|
||||
alert( FCKLang.DlnLnkMsgNoAnchor ) ;
|
||||
return false ;
|
||||
}
|
||||
|
||||
sUri = '#' + sAnchor ;
|
||||
break ;
|
||||
}
|
||||
|
||||
// No link selected, so try to create one.
|
||||
if ( !oLink )
|
||||
oLink = oEditor.FCK.CreateLink( sUri ) ;
|
||||
|
||||
if ( oLink )
|
||||
sInnerHtml = oLink.innerHTML ; // Save the innerHTML (IE changes it if it is like an URL).
|
||||
else
|
||||
{
|
||||
// If no selection, use the uri as the link text (by dom, 2006-05-26)
|
||||
|
||||
sInnerHtml = sUri;
|
||||
|
||||
// Built a better text for empty links.
|
||||
switch ( GetE('cmbLinkType').value )
|
||||
{
|
||||
// anchor: use old behavior --> return true
|
||||
case 'anchor':
|
||||
sInnerHtml = sInnerHtml.replace( /^#/, '' ) ;
|
||||
break ;
|
||||
|
||||
// url: try to get path
|
||||
case 'url':
|
||||
var oLinkPathRegEx = new RegExp("//?([^?\"']+)([?].*)?$") ;
|
||||
var asLinkPath = oLinkPathRegEx.exec( sUri ) ;
|
||||
if (asLinkPath != null)
|
||||
sInnerHtml = asLinkPath[1]; // use matched path
|
||||
break ;
|
||||
|
||||
// mailto: try to get email address
|
||||
case 'email':
|
||||
sInnerHtml = GetE('txtEMailAddress').value ;
|
||||
break ;
|
||||
}
|
||||
|
||||
// Create a new (empty) anchor.
|
||||
oLink = oEditor.FCK.CreateElement( 'a' ) ;
|
||||
}
|
||||
|
||||
oEditor.FCKUndo.SaveUndoStep() ;
|
||||
|
||||
oLink.href = sUri ;
|
||||
SetAttribute( oLink, '_fcksavedurl', sUri ) ;
|
||||
|
||||
oLink.innerHTML = sInnerHtml ; // Set (or restore) the innerHTML
|
||||
|
||||
// Target
|
||||
if( GetE('cmbTarget').value != 'popup' )
|
||||
SetAttribute( oLink, 'target', GetE('txtTargetFrame').value ) ;
|
||||
else
|
||||
SetAttribute( oLink, 'target', null ) ;
|
||||
|
||||
// Advances Attributes
|
||||
SetAttribute( oLink, 'id' , GetE('txtAttId').value ) ;
|
||||
SetAttribute( oLink, 'name' , GetE('txtAttName').value ) ; // No IE. Set but doesnt't update the outerHTML.
|
||||
SetAttribute( oLink, 'dir' , GetE('cmbAttLangDir').value ) ;
|
||||
SetAttribute( oLink, 'lang' , GetE('txtAttLangCode').value ) ;
|
||||
SetAttribute( oLink, 'accesskey', GetE('txtAttAccessKey').value ) ;
|
||||
SetAttribute( oLink, 'tabindex' , ( GetE('txtAttTabIndex').value > 0 ? GetE('txtAttTabIndex').value : null ) ) ;
|
||||
SetAttribute( oLink, 'title' , GetE('txtAttTitle').value ) ;
|
||||
SetAttribute( oLink, 'type' , GetE('txtAttContentType').value ) ;
|
||||
SetAttribute( oLink, 'charset' , GetE('txtAttCharSet').value ) ;
|
||||
|
||||
if ( oEditor.FCKBrowserInfo.IsIE )
|
||||
{
|
||||
SetAttribute( oLink, 'className', GetE('txtAttClasses').value ) ;
|
||||
oLink.style.cssText = GetE('txtAttStyle').value ;
|
||||
}
|
||||
else
|
||||
{
|
||||
SetAttribute( oLink, 'class', GetE('txtAttClasses').value ) ;
|
||||
SetAttribute( oLink, 'style', GetE('txtAttStyle').value ) ;
|
||||
}
|
||||
|
||||
// Select the link.
|
||||
oEditor.FCKSelection.SelectNode(oLink);
|
||||
|
||||
return true ;
|
||||
}
|
||||
|
||||
function BrowseServer()
|
||||
{
|
||||
OpenFileBrowser( FCKConfig.LinkBrowserURL, FCKConfig.LinkBrowserWindowWidth, FCKConfig.LinkBrowserWindowHeight ) ;
|
||||
}
|
||||
|
||||
function SetUrl( url )
|
||||
{
|
||||
document.getElementById('txtUrl').value = url ;
|
||||
OnUrlChange() ;
|
||||
window.parent.SetSelectedTab( 'Info' ) ;
|
||||
}
|
||||
|
||||
function OnUploadCompleted( errorNumber, fileUrl, fileName, customMsg )
|
||||
{
|
||||
switch ( errorNumber )
|
||||
{
|
||||
case 0 : // No errors
|
||||
alert( 'Your file has been successfully uploaded' ) ;
|
||||
break ;
|
||||
case 1 : // Custom error
|
||||
alert( customMsg ) ;
|
||||
return ;
|
||||
case 101 : // Custom warning
|
||||
alert( customMsg ) ;
|
||||
break ;
|
||||
case 201 :
|
||||
alert( 'A file with the same name is already available. The uploaded file has been renamed to "' + fileName + '"' ) ;
|
||||
break ;
|
||||
case 202 :
|
||||
alert( 'Invalid file type' ) ;
|
||||
return ;
|
||||
case 203 :
|
||||
alert( "Security error. You probably don't have enough permissions to upload. Please check your server." ) ;
|
||||
return ;
|
||||
default :
|
||||
alert( 'Error on file upload. Error number: ' + errorNumber ) ;
|
||||
return ;
|
||||
}
|
||||
|
||||
SetUrl( fileUrl ) ;
|
||||
GetE('frmUpload').reset() ;
|
||||
}
|
||||
|
||||
var oUploadAllowedExtRegex = new RegExp( FCKConfig.LinkUploadAllowedExtensions, 'i' ) ;
|
||||
var oUploadDeniedExtRegex = new RegExp( FCKConfig.LinkUploadDeniedExtensions, 'i' ) ;
|
||||
|
||||
function CheckUpload()
|
||||
{
|
||||
var sFile = GetE('txtUploadFile').value ;
|
||||
|
||||
if ( sFile.length == 0 )
|
||||
{
|
||||
alert( 'Please select a file to upload' ) ;
|
||||
return false ;
|
||||
}
|
||||
|
||||
if ( ( FCKConfig.LinkUploadAllowedExtensions.length > 0 && !oUploadAllowedExtRegex.test( sFile ) ) ||
|
||||
( FCKConfig.LinkUploadDeniedExtensions.length > 0 && oUploadDeniedExtRegex.test( sFile ) ) )
|
||||
{
|
||||
OnUploadCompleted( 202 ) ;
|
||||
return false ;
|
||||
}
|
||||
|
||||
return true ;
|
||||
}
|
113
admin/FCKeditor/editor/dialog/fck_listprop.html
Normal file
@ -0,0 +1,113 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
|
||||
<!--
|
||||
* FCKeditor - The text editor for internet
|
||||
* Copyright (C) 2003-2006 Frederico Caldeira Knabben
|
||||
*
|
||||
* Licensed under the terms of the GNU Lesser General Public License:
|
||||
* http://www.opensource.org/licenses/lgpl-license.php
|
||||
*
|
||||
* For further information visit:
|
||||
* http://www.fckeditor.net/
|
||||
*
|
||||
* "Support Open Source software. What about a donation today?"
|
||||
*
|
||||
* File Name: fck_listprop.html
|
||||
* Bulleted List dialog window.
|
||||
*
|
||||
* File Authors:
|
||||
* Frederico Caldeira Knabben (fredck@fckeditor.net)
|
||||
* Marcel J Bennett (start attribute)
|
||||
-->
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<title></title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta content="noindex, nofollow" name="robots" />
|
||||
<script src="common/fck_dialog_common.js" type="text/javascript"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
var oEditor = window.parent.InnerDialogLoaded() ;
|
||||
|
||||
// Gets the document DOM
|
||||
var oDOM = oEditor.FCK.EditorDocument ;
|
||||
|
||||
var oActiveEl = oEditor.FCKSelection.MoveToAncestorNode( 'UL' ) ;
|
||||
var oActiveSel ;
|
||||
|
||||
window.onload = function()
|
||||
{
|
||||
// First of all, translate the dialog box texts
|
||||
oEditor.FCKLanguageManager.TranslatePage(document) ;
|
||||
|
||||
if ( oActiveEl )
|
||||
oActiveSel = GetE('selBulleted') ;
|
||||
else
|
||||
{
|
||||
oActiveEl = oEditor.FCKSelection.MoveToAncestorNode( 'OL' ) ;
|
||||
if ( oActiveEl )
|
||||
{
|
||||
oActiveSel = GetE('selNumbered') ;
|
||||
GetE('eStart').style.display = '' ;
|
||||
GetE('txtStartPosition').value = GetAttribute( oActiveEl, 'start' ) ;
|
||||
}
|
||||
}
|
||||
|
||||
oActiveSel.style.display = '' ;
|
||||
|
||||
if ( oActiveEl )
|
||||
{
|
||||
if ( oActiveEl.getAttribute('type') )
|
||||
oActiveSel.value = oActiveEl.getAttribute('type').toLowerCase() ;
|
||||
}
|
||||
|
||||
window.parent.SetOkButton( true ) ;
|
||||
}
|
||||
|
||||
function Ok()
|
||||
{
|
||||
if ( oActiveEl ){
|
||||
SetAttribute( oActiveEl, 'type' , oActiveSel.value ) ;
|
||||
if(oActiveEl.tagName == 'OL')
|
||||
SetAttribute( oActiveEl, 'start', GetE('txtStartPosition').value ) ;
|
||||
}
|
||||
|
||||
return true ;
|
||||
}
|
||||
|
||||
</script>
|
||||
</head>
|
||||
<body style="overflow: hidden">
|
||||
<table width="100%" style="height: 100%">
|
||||
<tr>
|
||||
<td style="text-align:center">
|
||||
<table cellspacing="0" cellpadding="0" border="0" style="margin-left: auto; margin-right: auto;">
|
||||
<tr>
|
||||
<td id="eStart" style="display: none; padding-right: 5px; padding-left: 5px">
|
||||
<span fcklang="DlgLstStart">Start</span><br />
|
||||
<input type="text" id="txtStartPosition" size="5" />
|
||||
</td>
|
||||
<td style="padding-right: 5px; padding-left: 5px">
|
||||
<span fcklang="DlgLstType">List Type</span><br />
|
||||
<select id="selBulleted" style="display: none">
|
||||
<option value="" selected="selected"></option>
|
||||
<option value="circle" fcklang="DlgLstTypeCircle">Circle</option>
|
||||
<option value="disc" fcklang="DlgLstTypeDisc">Disc</option>
|
||||
<option value="square" fcklang="DlgLstTypeSquare">Square</option>
|
||||
</select>
|
||||
<select id="selNumbered" style="display: none">
|
||||
<option value="" selected="selected"></option>
|
||||
<option value="1" fcklang="DlgLstTypeNumbers">Numbers (1, 2, 3)</option>
|
||||
<option value="a" fcklang="DlgLstTypeLCase">Lowercase Letters (a, b, c)</option>
|
||||
<option value="A" fcklang="DlgLstTypeUCase">Uppercase Letters (A, B, C)</option>
|
||||
<option value="i" fcklang="DlgLstTypeSRoman">Small Roman Numerals (i, ii, iii)</option>
|
||||
<option value="I" fcklang="DlgLstTypeLRoman">Large Roman Numerals (I, II, III)</option>
|
||||
</select>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
230
admin/FCKeditor/editor/dialog/fck_paste.html
Normal file
@ -0,0 +1,230 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||
<!--
|
||||
* FCKeditor - The text editor for internet
|
||||
* Copyright (C) 2003-2006 Frederico Caldeira Knabben
|
||||
*
|
||||
* Licensed under the terms of the GNU Lesser General Public License:
|
||||
* http://www.opensource.org/licenses/lgpl-license.php
|
||||
*
|
||||
* For further information visit:
|
||||
* http://www.fckeditor.net/
|
||||
*
|
||||
* "Support Open Source software. What about a donation today?"
|
||||
*
|
||||
* File Name: fck_paste.html
|
||||
* This dialog is shown when, for some reason (usually security settings),
|
||||
* the user is not able to paste data from the clipboard to the editor using
|
||||
* the toolbar buttons or the context menu.
|
||||
*
|
||||
* File Authors:
|
||||
* Frederico Caldeira Knabben (fredck@fckeditor.net)
|
||||
-->
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<title></title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="robots" content="noindex, nofollow" />
|
||||
<script type="text/javascript">
|
||||
var oEditor = window.parent.InnerDialogLoaded() ;
|
||||
|
||||
window.onload = function ()
|
||||
{
|
||||
// First of all, translate the dialog box texts
|
||||
oEditor.FCKLanguageManager.TranslatePage(document) ;
|
||||
|
||||
if ( window.parent.dialogArguments.CustomValue == 'Word' )
|
||||
{
|
||||
var oFrame = document.getElementById('frmData')
|
||||
oFrame.style.display = '' ;
|
||||
|
||||
if ( oFrame.contentDocument )
|
||||
oFrame.contentDocument.designMode = 'on' ;
|
||||
else
|
||||
oFrame.contentWindow.document.body.contentEditable = true ;
|
||||
}
|
||||
else
|
||||
{
|
||||
document.getElementById('txtData').style.display = '' ;
|
||||
document.getElementById('oWordCommands').style.display = 'none' ;
|
||||
}
|
||||
|
||||
window.parent.SetOkButton( true ) ;
|
||||
window.parent.SetAutoSize( true ) ;
|
||||
}
|
||||
|
||||
function Ok()
|
||||
{
|
||||
var sHtml ;
|
||||
|
||||
if ( window.parent.dialogArguments.CustomValue == 'Word' )
|
||||
{
|
||||
var oFrame = document.getElementById('frmData') ;
|
||||
|
||||
if ( oFrame.contentDocument )
|
||||
sHtml = oFrame.contentDocument.body.innerHTML ;
|
||||
else
|
||||
sHtml = oFrame.contentWindow.document.body.innerHTML ;
|
||||
|
||||
sHtml = CleanWord( sHtml ) ;
|
||||
}
|
||||
else
|
||||
{
|
||||
var sHtml = oEditor.FCKTools.HTMLEncode( document.getElementById('txtData').value ) ;
|
||||
sHtml = sHtml.replace( /\n/g, '<BR>' ) ;
|
||||
}
|
||||
|
||||
oEditor.FCK.InsertHtml( sHtml ) ;
|
||||
|
||||
return true ;
|
||||
}
|
||||
|
||||
function CleanUpBox()
|
||||
{
|
||||
var oFrame = document.getElementById('frmData') ;
|
||||
|
||||
if ( oFrame.contentDocument )
|
||||
oFrame.contentDocument.body.innerHTML = '' ;
|
||||
else
|
||||
oFrame.contentWindow.document.body.innerHTML = '' ;
|
||||
}
|
||||
|
||||
function CleanWord( html )
|
||||
{
|
||||
var bIgnoreFont = document.getElementById('chkRemoveFont').checked ;
|
||||
var bRemoveStyles = document.getElementById('chkRemoveStyles').checked ;
|
||||
|
||||
html = html.replace(/<o:p>\s*<\/o:p>/g, "") ;
|
||||
html = html.replace(/<o:p>.*?<\/o:p>/g, " ") ;
|
||||
|
||||
// Remove mso-xxx styles.
|
||||
html = html.replace( /\s*mso-[^:]+:[^;"]+;?/gi, "" ) ;
|
||||
|
||||
// Remove margin styles.
|
||||
html = html.replace( /\s*MARGIN: 0cm 0cm 0pt\s*;/gi, "" ) ;
|
||||
html = html.replace( /\s*MARGIN: 0cm 0cm 0pt\s*"/gi, "\"" ) ;
|
||||
|
||||
html = html.replace( /\s*TEXT-INDENT: 0cm\s*;/gi, "" ) ;
|
||||
html = html.replace( /\s*TEXT-INDENT: 0cm\s*"/gi, "\"" ) ;
|
||||
|
||||
html = html.replace( /\s*TEXT-ALIGN: [^\s;]+;?"/gi, "\"" ) ;
|
||||
|
||||
html = html.replace( /\s*PAGE-BREAK-BEFORE: [^\s;]+;?"/gi, "\"" ) ;
|
||||
|
||||
html = html.replace( /\s*FONT-VARIANT: [^\s;]+;?"/gi, "\"" ) ;
|
||||
|
||||
html = html.replace( /\s*tab-stops:[^;"]*;?/gi, "" ) ;
|
||||
html = html.replace( /\s*tab-stops:[^"]*/gi, "" ) ;
|
||||
|
||||
// Remove FONT face attributes.
|
||||
if ( bIgnoreFont )
|
||||
{
|
||||
html = html.replace( /\s*face="[^"]*"/gi, "" ) ;
|
||||
html = html.replace( /\s*face=[^ >]*/gi, "" ) ;
|
||||
|
||||
html = html.replace( /\s*FONT-FAMILY:[^;"]*;?/gi, "" ) ;
|
||||
}
|
||||
|
||||
// Remove Class attributes
|
||||
html = html.replace(/<(\w[^>]*) class=([^ |>]*)([^>]*)/gi, "<$1$3") ;
|
||||
|
||||
// Remove styles.
|
||||
if ( bRemoveStyles )
|
||||
html = html.replace( /<(\w[^>]*) style="([^\"]*)"([^>]*)/gi, "<$1$3" ) ;
|
||||
|
||||
// Remove empty styles.
|
||||
html = html.replace( /\s*style="\s*"/gi, '' ) ;
|
||||
|
||||
html = html.replace( /<SPAN\s*[^>]*>\s* \s*<\/SPAN>/gi, ' ' ) ;
|
||||
|
||||
html = html.replace( /<SPAN\s*[^>]*><\/SPAN>/gi, '' ) ;
|
||||
|
||||
// Remove Lang attributes
|
||||
html = html.replace(/<(\w[^>]*) lang=([^ |>]*)([^>]*)/gi, "<$1$3") ;
|
||||
|
||||
html = html.replace( /<SPAN\s*>(.*?)<\/SPAN>/gi, '$1' ) ;
|
||||
|
||||
html = html.replace( /<FONT\s*>(.*?)<\/FONT>/gi, '$1' ) ;
|
||||
|
||||
// Remove XML elements and declarations
|
||||
html = html.replace(/<\\?\?xml[^>]*>/gi, "") ;
|
||||
|
||||
// Remove Tags with XML namespace declarations: <o:p><\/o:p>
|
||||
html = html.replace(/<\/?\w+:[^>]*>/gi, "") ;
|
||||
|
||||
// Remove comments [SF BUG-1481861].
|
||||
html = html.replace(/<\!--.*-->/g, "") ;
|
||||
|
||||
html = html.replace( /<H\d>\s*<\/H\d>/gi, '' ) ;
|
||||
|
||||
html = html.replace( /<H1([^>]*)>/gi, '<div$1><b><font size="6">' ) ;
|
||||
html = html.replace( /<H2([^>]*)>/gi, '<div$1><b><font size="5">' ) ;
|
||||
html = html.replace( /<H3([^>]*)>/gi, '<div$1><b><font size="4">' ) ;
|
||||
html = html.replace( /<H4([^>]*)>/gi, '<div$1><b><font size="3">' ) ;
|
||||
html = html.replace( /<H5([^>]*)>/gi, '<div$1><b><font size="2">' ) ;
|
||||
html = html.replace( /<H6([^>]*)>/gi, '<div$1><b><font size="1">' ) ;
|
||||
|
||||
html = html.replace( /<\/H\d>/gi, '<\/font><\/b><\/div>' ) ;
|
||||
|
||||
html = html.replace( /<(U|I|STRIKE)> <\/\1>/g, ' ' ) ;
|
||||
|
||||
// Remove empty tags (three times, just to be sure).
|
||||
html = html.replace( /<([^\s>]+)(\s[^>]*)?>\s*<\/\1>/g, '' ) ;
|
||||
html = html.replace( /<([^\s>]+)(\s[^>]*)?>\s*<\/\1>/g, '' ) ;
|
||||
html = html.replace( /<([^\s>]+)(\s[^>]*)?>\s*<\/\1>/g, '' ) ;
|
||||
|
||||
// Transform <P> to <DIV>
|
||||
var re = new RegExp( "(<P)([^>]*>.*?)(<\/P>)", "gi" ) ; // Different because of a IE 5.0 error
|
||||
html = html.replace( re, "<div$2<\/div>" ) ;
|
||||
|
||||
// Fix relative anchor URLs (IE automatically adds the current page URL).
|
||||
re = new RegExp( window.location + "#", "g" ) ;
|
||||
html = html.replace( re, '#') ;
|
||||
|
||||
return html ;
|
||||
}
|
||||
|
||||
</script>
|
||||
</head>
|
||||
<body style="overflow: hidden">
|
||||
<table cellspacing="0" cellpadding="0" width="100%" border="0" style="height: 98%">
|
||||
<tr>
|
||||
<td>
|
||||
<span fcklang="DlgPasteMsg2">Please paste inside the following box using the keyboard
|
||||
(<strong>Ctrl+V</strong>) and hit <strong>OK</strong>.</span>
|
||||
<br />
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top" height="100%" style="border-right: #000000 1px solid; border-top: #000000 1px solid;
|
||||
border-left: #000000 1px solid; border-bottom: #000000 1px solid">
|
||||
<textarea id="txtData" cols="80" rows="5" style="border: #000000 1px; display: none;
|
||||
width: 99%; height: 98%"></textarea>
|
||||
<iframe id="frmData" src="javascript:void(0)" height="98%" width="99%" frameborder="0"
|
||||
style="border-right: #000000 1px; border-top: #000000 1px; display: none; border-left: #000000 1px;
|
||||
border-bottom: #000000 1px; background-color: #ffffff"></iframe>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="oWordCommands">
|
||||
<td>
|
||||
<table border="0" cellpadding="0" cellspacing="0" width="100%">
|
||||
<tr>
|
||||
<td nowrap="nowrap">
|
||||
<input id="chkRemoveFont" type="checkbox" checked="checked" />
|
||||
<label for="chkRemoveFont" fcklang="DlgPasteIgnoreFont">
|
||||
Ignore Font Face definitions</label>
|
||||
<br />
|
||||
<input id="chkRemoveStyles" type="checkbox" />
|
||||
<label for="chkRemoveStyles" fcklang="DlgPasteRemoveStyles">
|
||||
Remove Styles definitions</label>
|
||||
</td>
|
||||
<td align="right" valign="top">
|
||||
<input type="button" fcklang="DlgPasteCleanBox" value="Clean Up Box" onclick="CleanUpBox()" />
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
103
admin/FCKeditor/editor/dialog/fck_radiobutton.html
Normal file
@ -0,0 +1,103 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
|
||||
<!--
|
||||
* FCKeditor - The text editor for internet
|
||||
* Copyright (C) 2003-2006 Frederico Caldeira Knabben
|
||||
*
|
||||
* Licensed under the terms of the GNU Lesser General Public License:
|
||||
* http://www.opensource.org/licenses/lgpl-license.php
|
||||
*
|
||||
* For further information visit:
|
||||
* http://www.fckeditor.net/
|
||||
*
|
||||
* "Support Open Source software. What about a donation today?"
|
||||
*
|
||||
* File Name: fck_radiobutton.html
|
||||
* Radio Button dialog window.
|
||||
*
|
||||
* File Authors:
|
||||
* Frederico Caldeira Knabben (fredck@fckeditor.net)
|
||||
-->
|
||||
<html>
|
||||
<head>
|
||||
<title>Radio Button Properties</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta content="noindex, nofollow" name="robots">
|
||||
<script src="common/fck_dialog_common.js" type="text/javascript"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
var oEditor = window.parent.InnerDialogLoaded() ;
|
||||
|
||||
// Gets the document DOM
|
||||
var oDOM = oEditor.FCK.EditorDocument ;
|
||||
|
||||
var oActiveEl = oEditor.FCKSelection.GetSelectedElement() ;
|
||||
|
||||
window.onload = function()
|
||||
{
|
||||
// First of all, translate the dialog box texts
|
||||
oEditor.FCKLanguageManager.TranslatePage(document) ;
|
||||
|
||||
if ( oActiveEl && oActiveEl.tagName.toUpperCase() == 'INPUT' && oActiveEl.type == 'radio' )
|
||||
{
|
||||
GetE('txtName').value = oActiveEl.name ;
|
||||
GetE('txtValue').value = oEditor.FCKBrowserInfo.IsIE ? oActiveEl.value : GetAttribute( oActiveEl, 'value' ) ;
|
||||
GetE('txtSelected').checked = oActiveEl.checked ;
|
||||
}
|
||||
else
|
||||
oActiveEl = null ;
|
||||
|
||||
window.parent.SetOkButton( true ) ;
|
||||
}
|
||||
|
||||
function Ok()
|
||||
{
|
||||
if ( !oActiveEl )
|
||||
{
|
||||
oActiveEl = oEditor.FCK.EditorDocument.createElement( 'INPUT' ) ;
|
||||
oActiveEl.type = 'radio' ;
|
||||
oActiveEl = oEditor.FCK.InsertElementAndGetIt( oActiveEl ) ;
|
||||
}
|
||||
|
||||
if ( GetE('txtName').value.length > 0 )
|
||||
oActiveEl.name = GetE('txtName').value ;
|
||||
|
||||
if ( oEditor.FCKBrowserInfo.IsIE )
|
||||
oActiveEl.value = GetE('txtValue').value ;
|
||||
else
|
||||
SetAttribute( oActiveEl, 'value', GetE('txtValue').value ) ;
|
||||
|
||||
var bIsChecked = GetE('txtSelected').checked ;
|
||||
SetAttribute( oActiveEl, 'checked', bIsChecked ? 'checked' : null ) ; // For Firefox
|
||||
oActiveEl.checked = bIsChecked ;
|
||||
|
||||
return true ;
|
||||
}
|
||||
|
||||
</script>
|
||||
</head>
|
||||
<body style="OVERFLOW: hidden" scroll="no">
|
||||
<table height="100%" width="100%">
|
||||
<tr>
|
||||
<td align="center">
|
||||
<table border="0" cellpadding="0" cellspacing="0" width="80%">
|
||||
<tr>
|
||||
<td>
|
||||
<span fckLang="DlgCheckboxName">Name</span><br>
|
||||
<input type="text" size="20" id="txtName" style="WIDTH: 100%">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<span fckLang="DlgCheckboxValue">Value</span><br>
|
||||
<input type="text" size="20" id="txtValue" style="WIDTH: 100%">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><input type="checkbox" id="txtSelected"><label for="txtSelected" fckLang="DlgCheckboxSelected">Checked</label></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
153
admin/FCKeditor/editor/dialog/fck_replace.html
Normal file
@ -0,0 +1,153 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||
<!--
|
||||
* FCKeditor - The text editor for internet
|
||||
* Copyright (C) 2003-2006 Frederico Caldeira Knabben
|
||||
*
|
||||
* Licensed under the terms of the GNU Lesser General Public License:
|
||||
* http://www.opensource.org/licenses/lgpl-license.php
|
||||
*
|
||||
* For further information visit:
|
||||
* http://www.fckeditor.net/
|
||||
*
|
||||
* "Support Open Source software. What about a donation today?"
|
||||
*
|
||||
* File Name: fck_replace.html
|
||||
* "Replace" dialog box window.
|
||||
*
|
||||
* File Authors:
|
||||
* Frederico Caldeira Knabben (fredck@fckeditor.net)
|
||||
* Abdul-Aziz A. Al-Oraij (aziz.oraij.com)
|
||||
-->
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<title></title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta content="noindex, nofollow" name="robots" />
|
||||
<script 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 ) ;
|
||||
|
||||
oEditor.FCKUndo.SaveUndoStep() ;
|
||||
}
|
||||
|
||||
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()
|
||||
{
|
||||
var sExpr = EscapeRegexString( document.getElementById('txtFind').value ) ;
|
||||
|
||||
if ( document.getElementById('chkWord').checked )
|
||||
sExpr = '\\b' + sExpr + '\\b' ;
|
||||
|
||||
return sExpr ;
|
||||
}
|
||||
|
||||
function GetCase()
|
||||
{
|
||||
return ( document.getElementById('chkCase').checked ? '' : 'i' ) ;
|
||||
}
|
||||
|
||||
function GetReplacement()
|
||||
{
|
||||
return document.getElementById('txtReplace').value.replace( /\$/g, '$$$$' ) ;
|
||||
}
|
||||
|
||||
function EscapeRegexString( str )
|
||||
{
|
||||
return str.replace( /[\\\^\$\*\+\?\{\}\.\(\)\!\|\[\]\-]/g, '\\$&' ) ;
|
||||
}
|
||||
|
||||
function Replace()
|
||||
{
|
||||
var oRegex = new RegExp( GetRegexExpr(), GetCase() ) ;
|
||||
if ( !ReplaceTextNodes( oEditor.FCK.EditorDocument.body, oRegex, GetReplacement(), false, false ) )
|
||||
alert( oEditor.FCKLang.DlgFindNotFoundMsg ) ;
|
||||
}
|
||||
|
||||
function ReplaceAll()
|
||||
{
|
||||
var oRegex = new RegExp( GetRegexExpr(), GetCase() + 'g' ) ;
|
||||
if ( !ReplaceTextNodes( oEditor.FCK.EditorDocument.body, oRegex, GetReplacement(), true, false ) )
|
||||
alert( oEditor.FCKLang.DlgFindNotFoundMsg ) ;
|
||||
window.parent.Cancel() ;
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body onload="OnLoad()" style="overflow: hidden">
|
||||
<table cellspacing="3" cellpadding="2" width="100%" border="0">
|
||||
<tr>
|
||||
<td nowrap="nowrap">
|
||||
<label for="txtFind" fcklang="DlgReplaceFindLbl">
|
||||
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="disabled" onclick="Replace();"
|
||||
type="button" value="Replace" fcklang="DlgReplaceReplaceBtn" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top" nowrap="nowrap">
|
||||
<label for="txtReplace" fcklang="DlgReplaceReplaceLbl">
|
||||
Replace with:</label>
|
||||
</td>
|
||||
<td valign="top">
|
||||
<input id="txtReplace" style="width: 100%" tabindex="2" type="text" />
|
||||
</td>
|
||||
<td>
|
||||
<input id="btnReplaceAll" disabled="disabled" onclick="ReplaceAll()" type="button"
|
||||
value="Replace All" fcklang="DlgReplaceReplAllBtn" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="bottom" colspan="3">
|
||||
<input id="chkCase" tabindex="3" type="checkbox" /><label for="chkCase" fcklang="DlgReplaceCaseChk">Match
|
||||
case</label>
|
||||
<br />
|
||||
<input id="chkWord" tabindex="4" type="checkbox" /><label for="chkWord" fcklang="DlgReplaceWordChk">Match
|
||||
whole word</label>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
172
admin/FCKeditor/editor/dialog/fck_select.html
Normal file
@ -0,0 +1,172 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
|
||||
<!--
|
||||
* FCKeditor - The text editor for internet
|
||||
* Copyright (C) 2003-2006 Frederico Caldeira Knabben
|
||||
*
|
||||
* Licensed under the terms of the GNU Lesser General Public License:
|
||||
* http://www.opensource.org/licenses/lgpl-license.php
|
||||
*
|
||||
* For further information visit:
|
||||
* http://www.fckeditor.net/
|
||||
*
|
||||
* "Support Open Source software. What about a donation today?"
|
||||
*
|
||||
* File Name: fck_select.html
|
||||
* Select dialog window.
|
||||
*
|
||||
* File Authors:
|
||||
* Frederico Caldeira Knabben (fredck@fckeditor.net)
|
||||
-->
|
||||
<html>
|
||||
<head>
|
||||
<title>Select Properties</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta content="noindex, nofollow" name="robots">
|
||||
<script src="common/fck_dialog_common.js" type="text/javascript"></script>
|
||||
<script type="text/javascript" src="fck_select/fck_select.js"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
var oEditor = window.parent.InnerDialogLoaded() ;
|
||||
|
||||
// Gets the document DOM
|
||||
var oDOM = oEditor.FCK.EditorDocument ;
|
||||
|
||||
var oActiveEl = oEditor.FCKSelection.GetSelectedElement() ;
|
||||
|
||||
var oListText ;
|
||||
var oListValue ;
|
||||
|
||||
window.onload = function()
|
||||
{
|
||||
// First of all, translate the dialog box texts
|
||||
oEditor.FCKLanguageManager.TranslatePage(document) ;
|
||||
|
||||
oListText = document.getElementById( 'cmbText' ) ;
|
||||
oListValue = document.getElementById( 'cmbValue' ) ;
|
||||
|
||||
if ( oActiveEl && oActiveEl.tagName == 'SELECT' )
|
||||
{
|
||||
GetE('txtName').value = oActiveEl.name ;
|
||||
GetE('txtSelValue').value = oActiveEl.value ;
|
||||
GetE('txtLines').value = GetAttribute( oActiveEl, 'size' ) ;
|
||||
GetE('chkMultiple').checked = oActiveEl.multiple ;
|
||||
|
||||
// Load the actual options
|
||||
for ( var i = 0 ; i < oActiveEl.options.length ; i++ )
|
||||
{
|
||||
var sText = oActiveEl.options[i].innerHTML ;
|
||||
var sValue = oActiveEl.options[i].value ;
|
||||
|
||||
AddComboOption( oListText, sText, sText ) ;
|
||||
AddComboOption( oListValue, sValue, sValue ) ;
|
||||
}
|
||||
}
|
||||
else
|
||||
oActiveEl = null ;
|
||||
|
||||
window.parent.SetOkButton( true ) ;
|
||||
}
|
||||
|
||||
function Ok()
|
||||
{
|
||||
var sSize = GetE('txtLines').value ;
|
||||
if ( sSize == null || isNaN( sSize ) || sSize <= 1 )
|
||||
sSize = '' ;
|
||||
|
||||
if ( !oActiveEl )
|
||||
{
|
||||
oActiveEl = oEditor.FCK.EditorDocument.createElement( 'SELECT' ) ;
|
||||
oActiveEl = oEditor.FCK.InsertElementAndGetIt( oActiveEl ) ;
|
||||
}
|
||||
|
||||
SetAttribute( oActiveEl, 'name' , GetE('txtName').value ) ;
|
||||
SetAttribute( oActiveEl, 'size' , sSize ) ;
|
||||
oActiveEl.multiple = ( sSize.length > 0 && GetE('chkMultiple').checked ) ;
|
||||
|
||||
// Remove all options.
|
||||
while ( oActiveEl.options.length > 0 )
|
||||
oActiveEl.remove(0) ;
|
||||
|
||||
// Add all available options.
|
||||
for ( var i = 0 ; i < oListText.options.length ; i++ )
|
||||
{
|
||||
var sText = oListText.options[i].value ;
|
||||
var sValue = oListValue.options[i].value ;
|
||||
if ( sValue.length == 0 ) sValue = sText ;
|
||||
|
||||
var oOption = AddComboOption( oActiveEl, sText, sValue, oDOM ) ;
|
||||
|
||||
if ( sValue == GetE('txtSelValue').value )
|
||||
{
|
||||
SetAttribute( oOption, 'selected', 'selected' ) ;
|
||||
oOption.selected = true ;
|
||||
}
|
||||
}
|
||||
|
||||
return true ;
|
||||
}
|
||||
|
||||
</script>
|
||||
</head>
|
||||
<body style='OVERFLOW: hidden' scroll='no'>
|
||||
<table width="100%" height="100%">
|
||||
<tr>
|
||||
<td>
|
||||
<table width="100%">
|
||||
<tr>
|
||||
<td nowrap><span fckLang="DlgSelectName">Name</span> </td>
|
||||
<td width="100%" colSpan="2"><input id="txtName" style="WIDTH: 100%" type="text"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td nowrap><span fckLang="DlgSelectValue">Value</span> </td>
|
||||
<td width="100%" colSpan="2"><input id="txtSelValue" style="WIDTH: 100%; BACKGROUND-COLOR: buttonface" type="text" readonly></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td nowrap><span fckLang="DlgSelectSize">Size</span> </td>
|
||||
<td nowrap><input id="txtLines" type="text" size="2" value=""> <span fckLang="DlgSelectLines">lines</span></td>
|
||||
<td nowrap align="right"><input id="chkMultiple" name="chkMultiple" type="checkbox"><label for="chkMultiple" fckLang="DlgSelectChkMulti">Allow
|
||||
multiple selections</label></td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
<hr style="POSITION: absolute">
|
||||
<span style="LEFT: 10px; POSITION: relative; TOP: -7px" class="BackColor"> <span fckLang="DlgSelectOpAvail">Available
|
||||
Options</span> </span>
|
||||
<table width="100%">
|
||||
<tr>
|
||||
<td width="50%"><span fckLang="DlgSelectOpText">Text</span><br>
|
||||
<input id="txtText" style="WIDTH: 100%" type="text" name="txtText">
|
||||
</td>
|
||||
<td width="50%"><span fckLang="DlgSelectOpValue">Value</span><br>
|
||||
<input id="txtValue" style="WIDTH: 100%" type="text" name="txtValue">
|
||||
</td>
|
||||
<td vAlign="bottom"><input onclick="Add();" type="button" fckLang="DlgSelectBtnAdd" value="Add"></td>
|
||||
<td vAlign="bottom"><input onclick="Modify();" type="button" fckLang="DlgSelectBtnModify" value="Modify"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td rowSpan="2"><select id="cmbText" style="WIDTH: 100%" onchange="GetE('cmbValue').selectedIndex = this.selectedIndex;Select(this);"
|
||||
size="5" name="cmbText"></select>
|
||||
</td>
|
||||
<td rowSpan="2"><select id="cmbValue" style="WIDTH: 100%" onchange="GetE('cmbText').selectedIndex = this.selectedIndex;Select(this);"
|
||||
size="5" name="cmbValue"></select>
|
||||
</td>
|
||||
<td vAlign="top" colSpan="2">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td vAlign="bottom" colSpan="2"><input style="WIDTH: 100%" onclick="Move(-1);" type="button" fckLang="DlgSelectBtnUp" value="Up">
|
||||
<br>
|
||||
<input style="WIDTH: 100%" onclick="Move(1);" type="button" fckLang="DlgSelectBtnDown"
|
||||
value="Down">
|
||||
</td>
|
||||
</tr>
|
||||
<TR>
|
||||
<TD vAlign="bottom" colSpan="4"><INPUT onclick="SetSelectedValue();" type="button" fckLang="DlgSelectBtnSetValue" value="Set as selected value">
|
||||
<input onclick="Delete();" type="button" fckLang="DlgSelectBtnDelete" value="Delete"></TD>
|
||||
</TR>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
165
admin/FCKeditor/editor/dialog/fck_select/fck_select.js
Normal file
@ -0,0 +1,165 @@
|
||||
/*
|
||||
* FCKeditor - The text editor for internet
|
||||
* Copyright (C) 2003-2006 Frederico Caldeira Knabben
|
||||
*
|
||||
* Licensed under the terms of the GNU Lesser General Public License:
|
||||
* http://www.opensource.org/licenses/lgpl-license.php
|
||||
*
|
||||
* For further information visit:
|
||||
* http://www.fckeditor.net/
|
||||
*
|
||||
* "Support Open Source software. What about a donation today?"
|
||||
*
|
||||
* File Name: fck_select.js
|
||||
* Scripts for the fck_select.html page.
|
||||
*
|
||||
* File Authors:
|
||||
* Frederico Caldeira Knabben (fredck@fckeditor.net)
|
||||
*/
|
||||
|
||||
function Select( combo )
|
||||
{
|
||||
var iIndex = combo.selectedIndex ;
|
||||
|
||||
oListText.selectedIndex = iIndex ;
|
||||
oListValue.selectedIndex = iIndex ;
|
||||
|
||||
var oTxtText = document.getElementById( "txtText" ) ;
|
||||
var oTxtValue = document.getElementById( "txtValue" ) ;
|
||||
|
||||
oTxtText.value = oListText.value ;
|
||||
oTxtValue.value = oListValue.value ;
|
||||
}
|
||||
|
||||
function Add()
|
||||
{
|
||||
var oTxtText = document.getElementById( "txtText" ) ;
|
||||
var oTxtValue = document.getElementById( "txtValue" ) ;
|
||||
|
||||
AddComboOption( oListText, oTxtText.value, oTxtText.value ) ;
|
||||
AddComboOption( oListValue, oTxtValue.value, oTxtValue.value ) ;
|
||||
|
||||
oListText.selectedIndex = oListText.options.length - 1 ;
|
||||
oListValue.selectedIndex = oListValue.options.length - 1 ;
|
||||
|
||||
oTxtText.value = '' ;
|
||||
oTxtValue.value = '' ;
|
||||
|
||||
oTxtText.focus() ;
|
||||
}
|
||||
|
||||
function Modify()
|
||||
{
|
||||
var iIndex = oListText.selectedIndex ;
|
||||
|
||||
if ( iIndex < 0 ) return ;
|
||||
|
||||
var oTxtText = document.getElementById( "txtText" ) ;
|
||||
var oTxtValue = document.getElementById( "txtValue" ) ;
|
||||
|
||||
oListText.options[ iIndex ].innerHTML = oTxtText.value ;
|
||||
oListText.options[ iIndex ].value = oTxtText.value ;
|
||||
|
||||
oListValue.options[ iIndex ].innerHTML = oTxtValue.value ;
|
||||
oListValue.options[ iIndex ].value = oTxtValue.value ;
|
||||
|
||||
oTxtText.value = '' ;
|
||||
oTxtValue.value = '' ;
|
||||
|
||||
oTxtText.focus() ;
|
||||
}
|
||||
|
||||
function Move( steps )
|
||||
{
|
||||
ChangeOptionPosition( oListText, steps ) ;
|
||||
ChangeOptionPosition( oListValue, steps ) ;
|
||||
}
|
||||
|
||||
function Delete()
|
||||
{
|
||||
RemoveSelectedOptions( oListText ) ;
|
||||
RemoveSelectedOptions( oListValue ) ;
|
||||
}
|
||||
|
||||
function SetSelectedValue()
|
||||
{
|
||||
var iIndex = oListValue.selectedIndex ;
|
||||
if ( iIndex < 0 ) return ;
|
||||
|
||||
var oTxtValue = document.getElementById( "txtSelValue" ) ;
|
||||
|
||||
oTxtValue.value = oListValue.options[ iIndex ].value ;
|
||||
}
|
||||
|
||||
// Moves the selected option by a number of steps (also negative)
|
||||
function ChangeOptionPosition( combo, steps )
|
||||
{
|
||||
var iActualIndex = combo.selectedIndex ;
|
||||
|
||||
if ( iActualIndex < 0 )
|
||||
return ;
|
||||
|
||||
var iFinalIndex = iActualIndex + steps ;
|
||||
|
||||
if ( iFinalIndex < 0 )
|
||||
iFinalIndex = 0 ;
|
||||
|
||||
if ( iFinalIndex > ( combo.options.length - 1 ) )
|
||||
iFinalIndex = combo.options.length - 1 ;
|
||||
|
||||
if ( iActualIndex == iFinalIndex )
|
||||
return ;
|
||||
|
||||
var oOption = combo.options[ iActualIndex ] ;
|
||||
var sText = oOption.innerHTML ;
|
||||
var sValue = oOption.value ;
|
||||
|
||||
combo.remove( iActualIndex ) ;
|
||||
|
||||
oOption = AddComboOption( combo, sText, sValue, null, iFinalIndex ) ;
|
||||
|
||||
oOption.selected = true ;
|
||||
}
|
||||
|
||||
// Remove all selected options from a SELECT object
|
||||
function RemoveSelectedOptions(combo)
|
||||
{
|
||||
// Save the selected index
|
||||
var iSelectedIndex = combo.selectedIndex ;
|
||||
|
||||
var oOptions = combo.options ;
|
||||
|
||||
// Remove all selected options
|
||||
for ( var i = oOptions.length - 1 ; i >= 0 ; i-- )
|
||||
{
|
||||
if (oOptions[i].selected) combo.remove(i) ;
|
||||
}
|
||||
|
||||
// Reset the selection based on the original selected index
|
||||
if ( combo.options.length > 0 )
|
||||
{
|
||||
if ( iSelectedIndex >= combo.options.length ) iSelectedIndex = combo.options.length - 1 ;
|
||||
combo.selectedIndex = iSelectedIndex ;
|
||||
}
|
||||
}
|
||||
|
||||
// Add a new option to a SELECT object (combo or list)
|
||||
function AddComboOption( combo, optionText, optionValue, documentObject, index )
|
||||
{
|
||||
var oOption ;
|
||||
|
||||
if ( documentObject )
|
||||
oOption = documentObject.createElement("OPTION") ;
|
||||
else
|
||||
oOption = document.createElement("OPTION") ;
|
||||
|
||||
if ( index != null )
|
||||
combo.options.add( oOption, index ) ;
|
||||
else
|
||||
combo.options.add( oOption ) ;
|
||||
|
||||
oOption.innerHTML = optionText.length > 0 ? optionText : ' ' ;
|
||||
oOption.value = optionValue ;
|
||||
|
||||
return oOption ;
|
||||
}
|
101
admin/FCKeditor/editor/dialog/fck_smiley.html
Normal file
@ -0,0 +1,101 @@
|
||||
<!--
|
||||
* FCKeditor - The text editor for internet
|
||||
* Copyright (C) 2003-2006 Frederico Caldeira Knabben
|
||||
*
|
||||
* Licensed under the terms of the GNU Lesser General Public License:
|
||||
* http://www.opensource.org/licenses/lgpl-license.php
|
||||
*
|
||||
* For further information visit:
|
||||
* http://www.fckeditor.net/
|
||||
*
|
||||
* "Support Open Source software. What about a donation today?"
|
||||
*
|
||||
* File Name: fck_smiley.html
|
||||
* Smileys (emoticons) dialog window.
|
||||
*
|
||||
* File Authors:
|
||||
* Frederico Caldeira Knabben (fredck@fckeditor.net)
|
||||
-->
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<title></title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="robots" content="noindex, nofollow" />
|
||||
<style type="text/css">
|
||||
.Hand
|
||||
{
|
||||
cursor: pointer;
|
||||
cursor: hand;
|
||||
}
|
||||
</style>
|
||||
<script type="text/javascript">
|
||||
|
||||
var oEditor = window.parent.InnerDialogLoaded() ;
|
||||
|
||||
window.onload = function ()
|
||||
{
|
||||
// First of all, translate the dialog box texts
|
||||
oEditor.FCKLanguageManager.TranslatePage(document) ;
|
||||
}
|
||||
|
||||
function InsertSmiley( url )
|
||||
{
|
||||
var oImg = oEditor.FCK.CreateElement( 'IMG' ) ;
|
||||
oImg.src = url ;
|
||||
oImg.setAttribute( '_fcksavedurl', url ) ;
|
||||
|
||||
// For long smileys list, it seams that IE continues loading the images in
|
||||
// the background when you quickly select one image. so, let's clear
|
||||
// everything before closing.
|
||||
document.body.innerHTML = '' ;
|
||||
|
||||
window.parent.Cancel() ;
|
||||
}
|
||||
|
||||
function over(td)
|
||||
{
|
||||
td.className = 'LightBackground Hand' ;
|
||||
}
|
||||
|
||||
function out(td)
|
||||
{
|
||||
td.className = 'DarkBackground Hand' ;
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body scroll="no">
|
||||
<table cellpadding="2" cellspacing="2" align="center" border="0" width="100%" height="100%">
|
||||
<script type="text/javascript">
|
||||
|
||||
var FCKConfig = oEditor.FCKConfig ;
|
||||
|
||||
var sBasePath = FCKConfig.SmileyPath ;
|
||||
var aImages = FCKConfig.SmileyImages ;
|
||||
var iCols = FCKConfig.SmileyColumns ;
|
||||
var iColWidth = parseInt( 100 / iCols ) ;
|
||||
|
||||
var i = 0 ;
|
||||
while (i < aImages.length)
|
||||
{
|
||||
document.write( '<tr>' ) ;
|
||||
for(var j = 0 ; j < iCols ; j++)
|
||||
{
|
||||
if (aImages[i])
|
||||
{
|
||||
var sUrl = sBasePath + aImages[i] ;
|
||||
document.write( '<td width="' + iColWidth + '%" align="center" class="DarkBackground Hand" onclick="InsertSmiley(\'' + sUrl.replace(/'/g, "\\'" ) + '\')" onmouseover="over(this)" onmouseout="out(this)">' ) ;
|
||||
document.write( '<img src="' + sUrl + '" border="0" />' ) ;
|
||||
}
|
||||
else
|
||||
document.write( '<td width="' + iColWidth + '%" class="DarkBackground"> ' ) ;
|
||||
document.write( '<\/td>' ) ;
|
||||
i++ ;
|
||||
}
|
||||
document.write('<\/tr>') ;
|
||||
}
|
||||
|
||||
</script>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
61
admin/FCKeditor/editor/dialog/fck_source.html
Normal file
@ -0,0 +1,61 @@
|
||||
<!--
|
||||
* FCKeditor - The text editor for internet
|
||||
* Copyright (C) 2003-2006 Frederico Caldeira Knabben
|
||||
*
|
||||
* Licensed under the terms of the GNU Lesser General Public License:
|
||||
* http://www.opensource.org/licenses/lgpl-license.php
|
||||
*
|
||||
* For further information visit:
|
||||
* http://www.fckeditor.net/
|
||||
*
|
||||
* "Support Open Source software. What about a donation today?"
|
||||
*
|
||||
* File Name: fck_source.html
|
||||
* Source editor dialog window.
|
||||
*
|
||||
* File Authors:
|
||||
* Frederico Caldeira Knabben (fredck@fckeditor.net)
|
||||
-->
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
|
||||
<html>
|
||||
<head>
|
||||
<title>Source</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
<link href="common/fck_dialog_common.css" rel="stylesheet" type="text/css" />
|
||||
<script language="javascript">
|
||||
|
||||
var oEditor = window.parent.InnerDialogLoaded() ;
|
||||
var FCK = oEditor.FCK ;
|
||||
var FCKConfig = oEditor.FCKConfig ;
|
||||
|
||||
window.onload = function()
|
||||
{
|
||||
// EnableXHTML and EnableSourceXHTML has been deprecated
|
||||
// document.getElementById('txtSource').value = ( FCKConfig.EnableXHTML && FCKConfig.EnableSourceXHTML ? FCK.GetXHTML( FCKConfig.FormatSource ) : FCK.GetHTML( FCKConfig.FormatSource ) ) ;
|
||||
document.getElementById('txtSource').value = FCK.GetXHTML( FCKConfig.FormatSource ) ;
|
||||
|
||||
// Activate the "OK" button.
|
||||
window.parent.SetOkButton( true ) ;
|
||||
}
|
||||
|
||||
//#### The OK button was hit.
|
||||
function Ok()
|
||||
{
|
||||
if ( oEditor.FCKBrowserInfo.IsIE )
|
||||
oEditor.FCKUndo.SaveUndoStep() ;
|
||||
|
||||
FCK.SetHTML( document.getElementById('txtSource').value, false ) ;
|
||||
|
||||
return true ;
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body scroll="no" style="OVERFLOW: hidden">
|
||||
<table width="100%" height="100%">
|
||||
<tr>
|
||||
<td height="100%"><textarea id="txtSource" dir="ltr" style="PADDING-RIGHT: 5px; PADDING-LEFT: 5px; FONT-SIZE: 14px; PADDING-BOTTOM: 5px; WIDTH: 100%; PADDING-TOP: 5px; FONT-FAMILY: Monospace; HEIGHT: 100%">Loading. Please wait...</textarea></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
109
admin/FCKeditor/editor/dialog/fck_specialchar.html
Normal file
@ -0,0 +1,109 @@
|
||||
<!--
|
||||
* FCKeditor - The text editor for internet
|
||||
* Copyright (C) 2003-2006 Frederico Caldeira Knabben
|
||||
*
|
||||
* Licensed under the terms of the GNU Lesser General Public License:
|
||||
* http://www.opensource.org/licenses/lgpl-license.php
|
||||
*
|
||||
* For further information visit:
|
||||
* http://www.fckeditor.net/
|
||||
*
|
||||
* "Support Open Source software. What about a donation today?"
|
||||
*
|
||||
* File Name: fck_specialchar.html
|
||||
* Special Chars Selector dialog window.
|
||||
*
|
||||
* File Authors:
|
||||
* Frederico Caldeira Knabben (fredck@fckeditor.net)
|
||||
-->
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
|
||||
<html>
|
||||
<head>
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<style type="text/css">
|
||||
.Hand
|
||||
{
|
||||
cursor: pointer ;
|
||||
cursor: hand ;
|
||||
}
|
||||
.Sample { font-size: 24px; }
|
||||
</style>
|
||||
<script type="text/javascript">
|
||||
|
||||
var oEditor = window.parent.InnerDialogLoaded() ;
|
||||
|
||||
var oSample ;
|
||||
|
||||
function insertChar(charValue)
|
||||
{
|
||||
oEditor.FCK.InsertHtml( charValue || "" ) ;
|
||||
window.parent.Cancel() ;
|
||||
}
|
||||
|
||||
function over(td)
|
||||
{
|
||||
oSample.innerHTML = td.innerHTML ;
|
||||
td.className = 'LightBackground SpecialCharsOver Hand' ;
|
||||
}
|
||||
|
||||
function out(td)
|
||||
{
|
||||
oSample.innerHTML = " " ;
|
||||
td.className = 'DarkBackground SpecialCharsOut Hand' ;
|
||||
}
|
||||
|
||||
function setDefaults()
|
||||
{
|
||||
// Gets the sample placeholder.
|
||||
oSample = document.getElementById("SampleTD") ;
|
||||
|
||||
// First of all, translates the dialog box texts.
|
||||
oEditor.FCKLanguageManager.TranslatePage(document) ;
|
||||
}
|
||||
|
||||
</script>
|
||||
</HEAD>
|
||||
<BODY onload="setDefaults()" scroll="no">
|
||||
<table cellpadding="0" cellspacing="0" width="100%" height="100%">
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<table cellpadding="1" cellspacing="1" align="center" border="0" width="100%" height="100%">
|
||||
<script type="text/javascript">
|
||||
var aChars = ["!",""","#","$","%","&","\\'","(",")","*","+","-",".","/","0","1","2","3","4","5","6","7","8","9",":",";","<","=",">","?","@","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","[","]","^","_","`","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","{","|","}","~","€","‘","’","’","“","”","–","—","¡","¢","£","¤","¥","¦","§","¨","©","ª","«","¬","®","¯","°","±","²","³","´","µ","¶","·","¸","¹","º","»","¼","½","¾","¿","À","Á","Â","Ã","Ä","Å","Æ","Ç","È","É","Ê","Ë","Ì","Í","Î","Ï","Ð","Ñ","Ò","Ó","Ô","Õ","Ö","×","Ø","Ù","Ú","Û","Ü","Ý","Þ","ß","à","á","â","ã","ä","å","æ","ç","è","é","ê","ë","ì","í","î","ï","ð","ñ","ò","ó","ô","õ","ö","÷","ø","ù","ú","û","ü","ü","ý","þ","ÿ","Œ","œ","‚","‛","„","…","™","►","•","→","⇒","⇔","♦","≈"] ;
|
||||
|
||||
var cols = 20 ;
|
||||
|
||||
var i = 0 ;
|
||||
while (i < aChars.length)
|
||||
{
|
||||
document.write("<TR>") ;
|
||||
for(var j = 0 ; j < cols ; j++)
|
||||
{
|
||||
if (aChars[i])
|
||||
{
|
||||
document.write('<TD width="1%" class="DarkBackground SpecialCharsOut Hand" align="center" onclick="insertChar(\'' + aChars[i].replace(/&/g, "&") + '\')" onmouseover="over(this)" onmouseout="out(this)">') ;
|
||||
document.write(aChars[i]) ;
|
||||
}
|
||||
else
|
||||
document.write("<TD class='DarkBackground SpecialCharsOut'> ") ;
|
||||
document.write("<\/TD>") ;
|
||||
i++ ;
|
||||
}
|
||||
document.write("<\/TR>") ;
|
||||
}
|
||||
</script>
|
||||
</table>
|
||||
</td>
|
||||
<td nowrap> </td>
|
||||
<td valign="top">
|
||||
<table width="40" cellpadding="0" cellspacing="0" border="0">
|
||||
<tr>
|
||||
<td id="SampleTD" width="40" height="40" align="center" class="DarkBackground SpecialCharsOut Sample"> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</BODY>
|
||||
</HTML>
|
59
admin/FCKeditor/editor/dialog/fck_spellerpages.html
Normal file
@ -0,0 +1,59 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
|
||||
<!--
|
||||
* FCKeditor - The text editor for internet
|
||||
* Copyright (C) 2003-2006 Frederico Caldeira Knabben
|
||||
*
|
||||
* Licensed under the terms of the GNU Lesser General Public License:
|
||||
* http://www.opensource.org/licenses/lgpl-license.php
|
||||
*
|
||||
* For further information visit:
|
||||
* http://www.fckeditor.net/
|
||||
*
|
||||
* "Support Open Source software. What about a donation today?"
|
||||
*
|
||||
* File Name: fck_spellerpages.html
|
||||
* Spell Check dialog window.
|
||||
*
|
||||
* File Authors:
|
||||
* Frederico Caldeira Knabben (fredck@fckeditor.net)
|
||||
-->
|
||||
<html>
|
||||
<head>
|
||||
<title>Spell Check</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta content="noindex, nofollow" name="robots">
|
||||
<script src="fck_spellerpages/spellerpages/spellChecker.js"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
var oEditor = window.parent.InnerDialogLoaded() ;
|
||||
var FCKLang = oEditor.FCKLang ;
|
||||
|
||||
window.onload = function()
|
||||
{
|
||||
document.getElementById('txtHtml').value = oEditor.FCK.EditorDocument.body.innerHTML ;
|
||||
|
||||
var oSpeller = new spellChecker( document.getElementById('txtHtml') ) ;
|
||||
oSpeller.OnFinished = oSpeller_OnFinished ;
|
||||
oSpeller.openChecker() ;
|
||||
}
|
||||
|
||||
function OnSpellerControlsLoad( controlsWindow )
|
||||
{
|
||||
// Translate the dialog box texts
|
||||
oEditor.FCKLanguageManager.TranslatePage( controlsWindow.document ) ;
|
||||
}
|
||||
|
||||
function oSpeller_OnFinished( numberOCorrections )
|
||||
{
|
||||
if ( numberOCorrections > 0 )
|
||||
oEditor.FCK.SetHTML( document.getElementById('txtHtml').value ) ;
|
||||
window.parent.Cancel() ;
|
||||
}
|
||||
|
||||
</script>
|
||||
</head>
|
||||
<body style="OVERFLOW: hidden" scroll="no" style="padding:0px;">
|
||||
<input type="hidden" id="txtHtml" value="">
|
||||
<iframe id="frmSpell" src="../fckblank.html" name="spellchecker" width="100%" height="100%" frameborder="0"></iframe>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,87 @@
|
||||
////////////////////////////////////////////////////
|
||||
// controlWindow object
|
||||
////////////////////////////////////////////////////
|
||||
function controlWindow( controlForm ) {
|
||||
// private properties
|
||||
this._form = controlForm;
|
||||
|
||||
// public properties
|
||||
this.windowType = "controlWindow";
|
||||
// this.noSuggestionSelection = "- No suggestions -"; // by FredCK
|
||||
this.noSuggestionSelection = FCKLang.DlgSpellNoSuggestions ;
|
||||
// set up the properties for elements of the given control form
|
||||
this.suggestionList = this._form.sugg;
|
||||
this.evaluatedText = this._form.misword;
|
||||
this.replacementText = this._form.txtsugg;
|
||||
this.undoButton = this._form.btnUndo;
|
||||
|
||||
// public methods
|
||||
this.addSuggestion = addSuggestion;
|
||||
this.clearSuggestions = clearSuggestions;
|
||||
this.selectDefaultSuggestion = selectDefaultSuggestion;
|
||||
this.resetForm = resetForm;
|
||||
this.setSuggestedText = setSuggestedText;
|
||||
this.enableUndo = enableUndo;
|
||||
this.disableUndo = disableUndo;
|
||||
}
|
||||
|
||||
function resetForm() {
|
||||
if( this._form ) {
|
||||
this._form.reset();
|
||||
}
|
||||
}
|
||||
|
||||
function setSuggestedText() {
|
||||
var slct = this.suggestionList;
|
||||
var txt = this.replacementText;
|
||||
var str = "";
|
||||
if( (slct.options[0].text) && slct.options[0].text != this.noSuggestionSelection ) {
|
||||
str = slct.options[slct.selectedIndex].text;
|
||||
}
|
||||
txt.value = str;
|
||||
}
|
||||
|
||||
function selectDefaultSuggestion() {
|
||||
var slct = this.suggestionList;
|
||||
var txt = this.replacementText;
|
||||
if( slct.options.length == 0 ) {
|
||||
this.addSuggestion( this.noSuggestionSelection );
|
||||
} else {
|
||||
slct.options[0].selected = true;
|
||||
}
|
||||
this.setSuggestedText();
|
||||
}
|
||||
|
||||
function addSuggestion( sugg_text ) {
|
||||
var slct = this.suggestionList;
|
||||
if( sugg_text ) {
|
||||
var i = slct.options.length;
|
||||
var newOption = new Option( sugg_text, 'sugg_text'+i );
|
||||
slct.options[i] = newOption;
|
||||
}
|
||||
}
|
||||
|
||||
function clearSuggestions() {
|
||||
var slct = this.suggestionList;
|
||||
for( var j = slct.length - 1; j > -1; j-- ) {
|
||||
if( slct.options[j] ) {
|
||||
slct.options[j] = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function enableUndo() {
|
||||
if( this.undoButton ) {
|
||||
if( this.undoButton.disabled == true ) {
|
||||
this.undoButton.disabled = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function disableUndo() {
|
||||
if( this.undoButton ) {
|
||||
if( this.undoButton.disabled == false ) {
|
||||
this.undoButton.disabled = true;
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,153 @@
|
||||
<html>
|
||||
<head>
|
||||
<link rel="stylesheet" type="text/css" href="spellerStyle.css" />
|
||||
<script src="controlWindow.js"></script>
|
||||
<script>
|
||||
var spellerObject;
|
||||
var controlWindowObj;
|
||||
|
||||
if( parent.opener ) {
|
||||
spellerObject = parent.opener.speller;
|
||||
}
|
||||
|
||||
function ignore_word() {
|
||||
if( spellerObject ) {
|
||||
spellerObject.ignoreWord();
|
||||
}
|
||||
}
|
||||
|
||||
function ignore_all() {
|
||||
if( spellerObject ) {
|
||||
spellerObject.ignoreAll();
|
||||
}
|
||||
}
|
||||
|
||||
function replace_word() {
|
||||
if( spellerObject ) {
|
||||
spellerObject.replaceWord();
|
||||
}
|
||||
}
|
||||
|
||||
function replace_all() {
|
||||
if( spellerObject ) {
|
||||
spellerObject.replaceAll();
|
||||
}
|
||||
}
|
||||
|
||||
function end_spell() {
|
||||
if( spellerObject ) {
|
||||
spellerObject.terminateSpell();
|
||||
}
|
||||
}
|
||||
|
||||
function undo() {
|
||||
if( spellerObject ) {
|
||||
spellerObject.undo();
|
||||
}
|
||||
}
|
||||
|
||||
function suggText() {
|
||||
if( controlWindowObj ) {
|
||||
controlWindowObj.setSuggestedText();
|
||||
}
|
||||
}
|
||||
|
||||
var FCKLang = window.parent.parent.FCKLang ; // by FredCK
|
||||
|
||||
function init_spell() {
|
||||
// By FredCK (fckLang attributes have been added to the HTML source of this page)
|
||||
window.parent.parent.OnSpellerControlsLoad( this ) ;
|
||||
|
||||
var controlForm = document.spellcheck;
|
||||
|
||||
// create a new controlWindow object
|
||||
controlWindowObj = new controlWindow( controlForm );
|
||||
|
||||
// call the init_spell() function in the parent frameset
|
||||
if( parent.frames.length ) {
|
||||
parent.init_spell( controlWindowObj );
|
||||
} else {
|
||||
alert( 'This page was loaded outside of a frameset. It might not display properly' );
|
||||
}
|
||||
}
|
||||
|
||||
</script>
|
||||
</head>
|
||||
<body class="controlWindowBody" onLoad="init_spell();" style="OVERFLOW: hidden" scroll="no"> <!-- by FredCK -->
|
||||
<form name="spellcheck">
|
||||
<table border="0" cellpadding="0" cellspacing="0" border="0" align="center">
|
||||
<tr>
|
||||
<td colspan="3" class="normalLabel"><span fckLang="DlgSpellNotInDic">Not in dictionary:</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3"><input class="readonlyInput" type="text" name="misword" readonly /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3" height="5"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="normalLabel"><span fckLang="DlgSpellChangeTo">Change to:</span></td>
|
||||
</tr>
|
||||
<tr valign="top">
|
||||
<td>
|
||||
<table border="0" cellpadding="0" cellspacing="0" border="0">
|
||||
<tr>
|
||||
<td class="normalLabel">
|
||||
<input class="textDefault" type="text" name="txtsugg" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<select class="suggSlct" name="sugg" size="7" onChange="suggText();" onDblClick="replace_word();">
|
||||
<option></option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td> </td>
|
||||
<td>
|
||||
<table border="0" cellpadding="0" cellspacing="0" border="0">
|
||||
<tr>
|
||||
<td>
|
||||
<input class="buttonDefault" type="button" fckLang="DlgSpellBtnIgnore" value="Ignore" onClick="ignore_word();">
|
||||
</td>
|
||||
<td> </td>
|
||||
<td>
|
||||
<input class="buttonDefault" type="button" fckLang="DlgSpellBtnIgnoreAll" value="Ignore All" onClick="ignore_all();">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3" height="5"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<input class="buttonDefault" type="button" fckLang="DlgSpellBtnReplace" value="Replace" onClick="replace_word();">
|
||||
</td>
|
||||
<td> </td>
|
||||
<td>
|
||||
<input class="buttonDefault" type="button" fckLang="DlgSpellBtnReplaceAll" value="Replace All" onClick="replace_all();">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3" height="5"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<input class="buttonDefault" type="button" name="btnUndo" fckLang="DlgSpellBtnUndo" value="Undo" onClick="undo();"
|
||||
disabled>
|
||||
</td>
|
||||
<td> </td>
|
||||
<td>
|
||||
<!-- by FredCK
|
||||
<input class="buttonDefault" type="button" value="Close" onClick="end_spell();">
|
||||
-->
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,132 @@
|
||||
<!--- Coldfusion MX uses java on the server to process tags. So it is save to use most java attributes. For example below
|
||||
I use list.lastindexOf(), lastindexOf() is a java string attribute. If you plan on using this tag with earlier versions
|
||||
of Coldfusion, you will have to replace the lastindexOf with a pure coldfusion function. By replacing the lastindexOf, spellchecker.cfm
|
||||
script should be compatible with all cf version 4.5 and up.
|
||||
|
||||
Also if you are hosting your site at an ISP, you will have to check with them to see if the use of <CFEXECUTE> is allowed.
|
||||
In most cases ISP will not allow the use of that tag for security reasons. Clients would be able to access each others files in certain cases.
|
||||
--->
|
||||
|
||||
|
||||
<!--- Set up variables --->
|
||||
<cfset tempFolder = "c:\test">
|
||||
<cfset tempfile = "spell_#randrange(1,1000)#">
|
||||
<cfset apsell_dir = "c:\aspell\bin">
|
||||
<!--- <cfset spellercss = "/speller/spellerStyle.css"> by FredCK --->
|
||||
<cfset spellercss = "../spellerStyle.css">
|
||||
<!--- <cfset word_win_src = "/speller/wordWindow.js"> by FredCK --->
|
||||
<cfset word_win_src = "../wordWindow.js">
|
||||
|
||||
|
||||
<!--- Takes care of those pesky smart quotes from MS apps, replaces them with regular quotes --->
|
||||
<cfset submitted_text = replacelist(form.checktext,"%u201C,%u201D","%22,%22")>
|
||||
<cfset submitted_text = urlDecode(submitted_text)>
|
||||
|
||||
|
||||
|
||||
|
||||
<!--- need to escape special javascript characters such as ' --->
|
||||
<cfset unaltered_text = submitted_text>
|
||||
<cfset submitted_text = replace(submitted_text,"'","\'","All")>
|
||||
<cfset submitted_text = replace(submitted_text,"""","\""","All")>
|
||||
|
||||
<!--- use carat on each line to escape possible aspell commands --->
|
||||
<cfset text = "">
|
||||
<cfloop list="#submitted_text#" index="idx" delimiters="#chr(10)##chr(13)#">
|
||||
<cfset text =text&"^"&idx&"#chr(10)##chr(13)#">
|
||||
</cfloop>
|
||||
|
||||
|
||||
|
||||
<!--- create temp file from the submitted text, this will be passed to aspell to be check for misspelled words --->
|
||||
<cffile action="write" file="#tempFolder#\#tempfile#.txt" output="#text#" charset="utf-8">
|
||||
|
||||
|
||||
<!--- cfsavecontent is used to set the variable that will be returned with the results from aspell.
|
||||
If your using the new version of mx 6.1 you can use the following cfexecute tag instead:
|
||||
<cfexecute name="C:\WINDOWS\SYSTEM32\cmd.exe" arguments="/c type c:\test\#tempfile#.txt | c:\aspell\bin\aspell -a --encoding=utf-8 -H" timeout="100" variable="results"></cfexecute> --->
|
||||
|
||||
<cfsavecontent variable="food">
|
||||
<cfexecute name="C:\WINDOWS\SYSTEM32\cmd.exe" arguments="/c type #tempFolder#\#tempfile#.txt | #apsell_dir#\aspell -a --encoding=utf-8 -H" timeout="100"></cfexecute>
|
||||
</cfsavecontent>
|
||||
|
||||
<!--- remove temp file --->
|
||||
<cffile action="delete" file="#tempFolder#\#tempfile#.txt">
|
||||
|
||||
|
||||
|
||||
|
||||
<cfoutput>
|
||||
<html>
|
||||
<head>
|
||||
<link rel="stylesheet" type="text/css" href="speller/spellerStyle.css">
|
||||
<script src="/speller/wordWindow.js"></script>
|
||||
<script language="javascript">
|
||||
var suggs = new Array();
|
||||
var words = new Array();
|
||||
var error;
|
||||
var wordtext = unescape('#urlencodedFormat(unaltered_text)#');
|
||||
|
||||
<cfset cnt = 1>
|
||||
<cfset word_cnt = 0>
|
||||
<cfloop list="#food#" index="list" delimiters="#chr(10)##chr(13)#">
|
||||
<!--- removes the first line of the aspell output "@(#) International Ispell Version 3.1.20 (but really Aspell 0.50.3)" --->
|
||||
<cfif NOT cnt EQ 1>
|
||||
<cfif find("&",list) OR find("##",list)>
|
||||
<!--- word that misspelled --->
|
||||
<cfset bad_word = listGetAt(list,"2"," ")>
|
||||
<!--- sugestions --->
|
||||
<cfset wrdList = mid(list,(list.lastindexOf(':') + 2),(len(list) - (list.lastindexOf(':') + 2)))>
|
||||
<cfset wrdsList = "">
|
||||
<cfloop list=#wrdList# index="idx">
|
||||
<cfset wrdsList =wrdsList&"'"&trim(replace(idx,"'","\'","All"))&"',">
|
||||
</cfloop>
|
||||
<!--- javascript --->
|
||||
words[#word_cnt#] = '#trim(replace(bad_word,"'","\'","All"))#';
|
||||
suggs[#word_cnt#] = [#trim(wrdsList)#];
|
||||
<cfset word_cnt = word_cnt + 1>
|
||||
<cfelseif find("*",list)>
|
||||
</cfif>
|
||||
</cfif>
|
||||
<cfset cnt = cnt + 1>
|
||||
</cfloop>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
var wordWindowObj = new wordWindow();
|
||||
wordWindowObj.originalSpellings = words;
|
||||
wordWindowObj.suggestions = suggs;
|
||||
wordWindowObj.text = wordtext;
|
||||
|
||||
|
||||
function init_spell() {
|
||||
// check if any error occured during server-side processing
|
||||
if( error ) {
|
||||
alert( error );
|
||||
} else {
|
||||
// call the init_spell() function in the parent frameset
|
||||
if (parent.frames.length) {
|
||||
parent.init_spell( wordWindowObj );
|
||||
} else {
|
||||
alert('This page was loaded outside of a frameset. It might not display properly');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
</head>
|
||||
<body onLoad="init_spell();">
|
||||
|
||||
<script>
|
||||
wordWindowObj.writeBody();
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
</cfoutput>
|
@ -0,0 +1,193 @@
|
||||
<?php
|
||||
header('Content-type: text/html; charset=utf-8');
|
||||
|
||||
//$spellercss = '/speller/spellerStyle.css'; // by FredCK
|
||||
$spellercss = '../spellerStyle.css'; // by FredCK
|
||||
//$word_win_src = '/speller/wordWindow.js'; // by FredCK
|
||||
$word_win_src = '../wordWindow.js'; // by FredCK
|
||||
$textinputs = $_POST['textinputs']; # array
|
||||
//$aspell_prog = 'aspell'; // by FredCK (for Linux)
|
||||
$aspell_prog = '"C:\Program Files\Aspell\bin\aspell.exe"'; // by FredCK (for Windows)
|
||||
$lang = 'en_US';
|
||||
//$aspell_opts = "-a --lang=$lang --encoding=utf-8"; // by FredCK
|
||||
$aspell_opts = "-a --lang=$lang --encoding=utf-8 -H"; // by FredCK
|
||||
$tempfiledir = "./";
|
||||
$input_separator = "A";
|
||||
|
||||
# set the JavaScript variable to the submitted text.
|
||||
# textinputs is an array, each element corresponding to the (url-encoded)
|
||||
# value of the text control submitted for spell-checking
|
||||
function print_textinputs_var() {
|
||||
global $textinputs;
|
||||
foreach( $textinputs as $key=>$val ) {
|
||||
# $val = str_replace( "'", "%27", $val );
|
||||
echo "textinputs[$key] = decodeURIComponent(\"" . $val . "\");\n";
|
||||
}
|
||||
}
|
||||
|
||||
# make declarations for the text input index
|
||||
function print_textindex_decl( $text_input_idx ) {
|
||||
echo "words[$text_input_idx] = [];\n";
|
||||
echo "suggs[$text_input_idx] = [];\n";
|
||||
}
|
||||
|
||||
# set an element of the JavaScript 'words' array to a misspelled word
|
||||
function print_words_elem( $word, $index, $text_input_idx ) {
|
||||
echo "words[$text_input_idx][$index] = '" . escape_quote( $word ) . "';\n";
|
||||
}
|
||||
|
||||
|
||||
# set an element of the JavaScript 'suggs' array to a list of suggestions
|
||||
function print_suggs_elem( $suggs, $index, $text_input_idx ) {
|
||||
echo "suggs[$text_input_idx][$index] = [";
|
||||
foreach( $suggs as $key=>$val ) {
|
||||
if( $val ) {
|
||||
echo "'" . escape_quote( $val ) . "'";
|
||||
if ( $key+1 < count( $suggs )) {
|
||||
echo ", ";
|
||||
}
|
||||
}
|
||||
}
|
||||
echo "];\n";
|
||||
}
|
||||
|
||||
# escape single quote
|
||||
function escape_quote( $str ) {
|
||||
return preg_replace ( "/'/", "\\'", $str );
|
||||
}
|
||||
|
||||
|
||||
# handle a server-side error.
|
||||
function error_handler( $err ) {
|
||||
echo "error = '" . escape_quote( $err ) . "';\n";
|
||||
}
|
||||
|
||||
## get the list of misspelled words. Put the results in the javascript words array
|
||||
## for each misspelled word, get suggestions and put in the javascript suggs array
|
||||
function print_checker_results() {
|
||||
|
||||
global $aspell_prog;
|
||||
global $aspell_opts;
|
||||
global $tempfiledir;
|
||||
global $textinputs;
|
||||
global $input_separator;
|
||||
$aspell_err = "";
|
||||
# create temp file
|
||||
$tempfile = tempnam( $tempfiledir, 'aspell_data_' );
|
||||
|
||||
# open temp file, add the submitted text.
|
||||
if( $fh = fopen( $tempfile, 'w' )) {
|
||||
for( $i = 0; $i < count( $textinputs ); $i++ ) {
|
||||
$text = urldecode( $textinputs[$i] );
|
||||
$lines = explode( "\n", $text );
|
||||
fwrite ( $fh, "%\n" ); # exit terse mode
|
||||
fwrite ( $fh, "^$input_separator\n" );
|
||||
fwrite ( $fh, "!\n" ); # enter terse mode
|
||||
foreach( $lines as $key=>$value ) {
|
||||
# use carat on each line to escape possible aspell commands
|
||||
fwrite( $fh, "^$value\n" );
|
||||
}
|
||||
}
|
||||
fclose( $fh );
|
||||
|
||||
# exec aspell command - redirect STDERR to STDOUT
|
||||
$cmd = "$aspell_prog $aspell_opts < $tempfile 2>&1";
|
||||
if( $aspellret = shell_exec( $cmd )) {
|
||||
$linesout = explode( "\n", $aspellret );
|
||||
$index = 0;
|
||||
$text_input_index = -1;
|
||||
# parse each line of aspell return
|
||||
foreach( $linesout as $key=>$val ) {
|
||||
$chardesc = substr( $val, 0, 1 );
|
||||
# if '&', then not in dictionary but has suggestions
|
||||
# if '#', then not in dictionary and no suggestions
|
||||
# if '*', then it is a delimiter between text inputs
|
||||
# if '@' then version info
|
||||
if( $chardesc == '&' || $chardesc == '#' ) {
|
||||
$line = explode( " ", $val, 5 );
|
||||
print_words_elem( $line[1], $index, $text_input_index );
|
||||
if( isset( $line[4] )) {
|
||||
$suggs = explode( ", ", $line[4] );
|
||||
} else {
|
||||
$suggs = array();
|
||||
}
|
||||
print_suggs_elem( $suggs, $index, $text_input_index );
|
||||
$index++;
|
||||
} elseif( $chardesc == '*' ) {
|
||||
$text_input_index++;
|
||||
print_textindex_decl( $text_input_index );
|
||||
$index = 0;
|
||||
} elseif( $chardesc != '@' && $chardesc != "" ) {
|
||||
# assume this is error output
|
||||
$aspell_err .= $val;
|
||||
}
|
||||
}
|
||||
if( $aspell_err ) {
|
||||
$aspell_err = "Error executing `$cmd`\\n$aspell_err";
|
||||
error_handler( $aspell_err );
|
||||
}
|
||||
} else {
|
||||
error_handler( "System error: Aspell program execution failed (`$cmd`)" );
|
||||
}
|
||||
} else {
|
||||
error_handler( "System error: Could not open file '$tempfile' for writing" );
|
||||
}
|
||||
|
||||
# close temp file, delete file
|
||||
unlink( $tempfile );
|
||||
}
|
||||
|
||||
|
||||
?>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<link rel="stylesheet" type="text/css" href="<?php echo $spellercss ?>" />
|
||||
<script language="javascript" src="<?php echo $word_win_src ?>"></script>
|
||||
<script language="javascript">
|
||||
var suggs = new Array();
|
||||
var words = new Array();
|
||||
var textinputs = new Array();
|
||||
var error;
|
||||
<?php
|
||||
|
||||
print_textinputs_var();
|
||||
|
||||
print_checker_results();
|
||||
|
||||
?>
|
||||
|
||||
var wordWindowObj = new wordWindow();
|
||||
wordWindowObj.originalSpellings = words;
|
||||
wordWindowObj.suggestions = suggs;
|
||||
wordWindowObj.textInputs = textinputs;
|
||||
|
||||
function init_spell() {
|
||||
// check if any error occured during server-side processing
|
||||
if( error ) {
|
||||
alert( error );
|
||||
} else {
|
||||
// call the init_spell() function in the parent frameset
|
||||
if (parent.frames.length) {
|
||||
parent.init_spell( wordWindowObj );
|
||||
} else {
|
||||
alert('This page was loaded outside of a frameset. It might not display properly');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
</head>
|
||||
<!-- <body onLoad="init_spell();"> by FredCK -->
|
||||
<body onLoad="init_spell();" bgcolor="#ffffff">
|
||||
|
||||
<script type="text/javascript">
|
||||
wordWindowObj.writeBody();
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
@ -0,0 +1,180 @@
|
||||
#!/usr/bin/perl
|
||||
|
||||
use CGI qw/ :standard /;
|
||||
use File::Temp qw/ tempfile tempdir /;
|
||||
|
||||
# my $spellercss = '/speller/spellerStyle.css'; # by FredCK
|
||||
my $spellercss = '../spellerStyle.css'; # by FredCK
|
||||
# my $wordWindowSrc = '/speller/wordWindow.js'; # by FredCK
|
||||
my $wordWindowSrc = '../wordWindow.js'; # by FredCK
|
||||
my @textinputs = param( 'textinputs[]' ); # array
|
||||
# my $aspell_cmd = 'aspell'; # by FredCK (for Linux)
|
||||
my $aspell_cmd = '"C:\Program Files\Aspell\bin\aspell.exe"'; # by FredCK (for Windows)
|
||||
my $lang = 'en_US';
|
||||
# my $aspell_opts = "-a --lang=$lang --encoding=utf-8"; # by FredCK
|
||||
my $aspell_opts = "-a --lang=$lang --encoding=utf-8 -H"; # by FredCK
|
||||
my $input_separator = "A";
|
||||
|
||||
# set the 'wordtext' JavaScript variable to the submitted text.
|
||||
sub printTextVar {
|
||||
for( my $i = 0; $i <= $#textinputs; $i++ ) {
|
||||
print "textinputs[$i] = decodeURIComponent('" . escapeQuote( $textinputs[$i] ) . "')\n";
|
||||
}
|
||||
}
|
||||
|
||||
sub printTextIdxDecl {
|
||||
my $idx = shift;
|
||||
print "words[$idx] = [];\n";
|
||||
print "suggs[$idx] = [];\n";
|
||||
}
|
||||
|
||||
sub printWordsElem {
|
||||
my( $textIdx, $wordIdx, $word ) = @_;
|
||||
print "words[$textIdx][$wordIdx] = '" . escapeQuote( $word ) . "';\n";
|
||||
}
|
||||
|
||||
sub printSuggsElem {
|
||||
my( $textIdx, $wordIdx, @suggs ) = @_;
|
||||
print "suggs[$textIdx][$wordIdx] = [";
|
||||
for my $i ( 0..$#suggs ) {
|
||||
print "'" . escapeQuote( $suggs[$i] ) . "'";
|
||||
if( $i < $#suggs ) {
|
||||
print ", ";
|
||||
}
|
||||
}
|
||||
print "];\n";
|
||||
}
|
||||
|
||||
sub printCheckerResults {
|
||||
my $textInputIdx = -1;
|
||||
my $wordIdx = 0;
|
||||
my $unhandledText;
|
||||
# create temp file
|
||||
my $dir = tempdir( CLEANUP => 1 );
|
||||
my( $fh, $tmpfilename ) = tempfile( DIR => $dir );
|
||||
|
||||
# temp file was created properly?
|
||||
|
||||
# open temp file, add the submitted text.
|
||||
for( my $i = 0; $i <= $#textinputs; $i++ ) {
|
||||
$text = url_decode( $textinputs[$i] );
|
||||
@lines = split( /\n/, $text );
|
||||
print $fh "\%\n"; # exit terse mode
|
||||
print $fh "^$input_separator\n";
|
||||
print $fh "!\n"; # enter terse mode
|
||||
for my $line ( @lines ) {
|
||||
# use carat on each line to escape possible aspell commands
|
||||
print $fh "^$line\n";
|
||||
}
|
||||
|
||||
}
|
||||
# exec aspell command
|
||||
my $cmd = "$aspell_cmd $aspell_opts < $tmpfilename 2>&1";
|
||||
open ASPELL, "$cmd |" or handleError( "Could not execute `$cmd`\\n$!" ) and return;
|
||||
# parse each line of aspell return
|
||||
for my $ret ( <ASPELL> ) {
|
||||
chomp( $ret );
|
||||
# if '&', then not in dictionary but has suggestions
|
||||
# if '#', then not in dictionary and no suggestions
|
||||
# if '*', then it is a delimiter between text inputs
|
||||
if( $ret =~ /^\*/ ) {
|
||||
$textInputIdx++;
|
||||
printTextIdxDecl( $textInputIdx );
|
||||
$wordIdx = 0;
|
||||
|
||||
} elsif( $ret =~ /^(&|#)/ ) {
|
||||
my @tokens = split( " ", $ret, 5 );
|
||||
printWordsElem( $textInputIdx, $wordIdx, $tokens[1] );
|
||||
my @suggs = ();
|
||||
if( $tokens[4] ) {
|
||||
@suggs = split( ", ", $tokens[4] );
|
||||
}
|
||||
printSuggsElem( $textInputIdx, $wordIdx, @suggs );
|
||||
$wordIdx++;
|
||||
} else {
|
||||
$unhandledText .= $ret;
|
||||
}
|
||||
}
|
||||
close ASPELL or handleError( "Error executing `$cmd`\\n$unhandledText" ) and return;
|
||||
}
|
||||
|
||||
sub escapeQuote {
|
||||
my $str = shift;
|
||||
$str =~ s/'/\\'/g;
|
||||
return $str;
|
||||
}
|
||||
|
||||
sub handleError {
|
||||
my $err = shift;
|
||||
print "error = '" . escapeQuote( $err ) . "';\n";
|
||||
}
|
||||
|
||||
sub url_decode {
|
||||
local $_ = @_ ? shift : $_;
|
||||
defined or return;
|
||||
# change + signs to spaces
|
||||
tr/+/ /;
|
||||
# change hex escapes to the proper characters
|
||||
s/%([a-fA-F0-9]{2})/pack "H2", $1/eg;
|
||||
return $_;
|
||||
}
|
||||
|
||||
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
|
||||
# Display HTML
|
||||
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
|
||||
|
||||
print <<EOF;
|
||||
Content-type: text/html; charset=utf-8
|
||||
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<link rel="stylesheet" type="text/css" href="$spellercss"/>
|
||||
<script src="$wordWindowSrc"></script>
|
||||
<script type="text/javascript">
|
||||
var suggs = new Array();
|
||||
var words = new Array();
|
||||
var textinputs = new Array();
|
||||
var error;
|
||||
EOF
|
||||
|
||||
printTextVar();
|
||||
|
||||
printCheckerResults();
|
||||
|
||||
print <<EOF;
|
||||
var wordWindowObj = new wordWindow();
|
||||
wordWindowObj.originalSpellings = words;
|
||||
wordWindowObj.suggestions = suggs;
|
||||
wordWindowObj.textInputs = textinputs;
|
||||
|
||||
|
||||
function init_spell() {
|
||||
// check if any error occured during server-side processing
|
||||
if( error ) {
|
||||
alert( error );
|
||||
} else {
|
||||
// call the init_spell() function in the parent frameset
|
||||
if (parent.frames.length) {
|
||||
parent.init_spell( wordWindowObj );
|
||||
} else {
|
||||
error = "This page was loaded outside of a frameset. ";
|
||||
error += "It might not display properly";
|
||||
alert( error );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
</head>
|
||||
<body onLoad="init_spell();">
|
||||
|
||||
<script type="text/javascript">
|
||||
wordWindowObj.writeBody();
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
EOF
|
||||
|
@ -0,0 +1,458 @@
|
||||
////////////////////////////////////////////////////
|
||||
// spellChecker.js
|
||||
//
|
||||
// spellChecker object
|
||||
//
|
||||
// This file is sourced on web pages that have a textarea object to evaluate
|
||||
// for spelling. It includes the implementation for the spellCheckObject.
|
||||
//
|
||||
////////////////////////////////////////////////////
|
||||
|
||||
|
||||
// constructor
|
||||
function spellChecker( textObject ) {
|
||||
|
||||
// public properties - configurable
|
||||
// this.popUpUrl = '/speller/spellchecker.html'; // by FredCK
|
||||
this.popUpUrl = 'fck_spellerpages/spellerpages/spellchecker.html'; // by FredCK
|
||||
this.popUpName = 'spellchecker';
|
||||
// this.popUpProps = "menu=no,width=440,height=350,top=70,left=120,resizable=yes,status=yes"; // by FredCK
|
||||
this.popUpProps = null ; // by FredCK
|
||||
// this.spellCheckScript = '/speller/server-scripts/spellchecker.php'; // by FredCK
|
||||
this.spellCheckScript = 'server-scripts/spellchecker.php'; // by FredCK
|
||||
//this.spellCheckScript = '/cgi-bin/spellchecker.pl';
|
||||
|
||||
// values used to keep track of what happened to a word
|
||||
this.replWordFlag = "R"; // single replace
|
||||
this.ignrWordFlag = "I"; // single ignore
|
||||
this.replAllFlag = "RA"; // replace all occurances
|
||||
this.ignrAllFlag = "IA"; // ignore all occurances
|
||||
this.fromReplAll = "~RA"; // an occurance of a "replace all" word
|
||||
this.fromIgnrAll = "~IA"; // an occurance of a "ignore all" word
|
||||
// properties set at run time
|
||||
this.wordFlags = new Array();
|
||||
this.currentTextIndex = 0;
|
||||
this.currentWordIndex = 0;
|
||||
this.spellCheckerWin = null;
|
||||
this.controlWin = null;
|
||||
this.wordWin = null;
|
||||
this.textArea = textObject; // deprecated
|
||||
this.textInputs = arguments;
|
||||
|
||||
// private methods
|
||||
this._spellcheck = _spellcheck;
|
||||
this._getSuggestions = _getSuggestions;
|
||||
this._setAsIgnored = _setAsIgnored;
|
||||
this._getTotalReplaced = _getTotalReplaced;
|
||||
this._setWordText = _setWordText;
|
||||
this._getFormInputs = _getFormInputs;
|
||||
|
||||
// public methods
|
||||
this.openChecker = openChecker;
|
||||
this.startCheck = startCheck;
|
||||
this.checkTextBoxes = checkTextBoxes;
|
||||
this.checkTextAreas = checkTextAreas;
|
||||
this.spellCheckAll = spellCheckAll;
|
||||
this.ignoreWord = ignoreWord;
|
||||
this.ignoreAll = ignoreAll;
|
||||
this.replaceWord = replaceWord;
|
||||
this.replaceAll = replaceAll;
|
||||
this.terminateSpell = terminateSpell;
|
||||
this.undo = undo;
|
||||
|
||||
// set the current window's "speller" property to the instance of this class.
|
||||
// this object can now be referenced by child windows/frames.
|
||||
window.speller = this;
|
||||
}
|
||||
|
||||
// call this method to check all text boxes (and only text boxes) in the HTML document
|
||||
function checkTextBoxes() {
|
||||
this.textInputs = this._getFormInputs( "^text$" );
|
||||
this.openChecker();
|
||||
}
|
||||
|
||||
// call this method to check all textareas (and only textareas ) in the HTML document
|
||||
function checkTextAreas() {
|
||||
this.textInputs = this._getFormInputs( "^textarea$" );
|
||||
this.openChecker();
|
||||
}
|
||||
|
||||
// call this method to check all text boxes and textareas in the HTML document
|
||||
function spellCheckAll() {
|
||||
this.textInputs = this._getFormInputs( "^text(area)?$" );
|
||||
this.openChecker();
|
||||
}
|
||||
|
||||
// call this method to check text boxe(s) and/or textarea(s) that were passed in to the
|
||||
// object's constructor or to the textInputs property
|
||||
function openChecker() {
|
||||
this.spellCheckerWin = window.open( this.popUpUrl, this.popUpName, this.popUpProps );
|
||||
if( !this.spellCheckerWin.opener ) {
|
||||
this.spellCheckerWin.opener = window;
|
||||
}
|
||||
}
|
||||
|
||||
function startCheck( wordWindowObj, controlWindowObj ) {
|
||||
|
||||
// set properties from args
|
||||
this.wordWin = wordWindowObj;
|
||||
this.controlWin = controlWindowObj;
|
||||
|
||||
// reset properties
|
||||
this.wordWin.resetForm();
|
||||
this.controlWin.resetForm();
|
||||
this.currentTextIndex = 0;
|
||||
this.currentWordIndex = 0;
|
||||
// initialize the flags to an array - one element for each text input
|
||||
this.wordFlags = new Array( this.wordWin.textInputs.length );
|
||||
// each element will be an array that keeps track of each word in the text
|
||||
for( var i=0; i<this.wordFlags.length; i++ ) {
|
||||
this.wordFlags[i] = [];
|
||||
}
|
||||
|
||||
// start
|
||||
this._spellcheck();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
function ignoreWord() {
|
||||
var wi = this.currentWordIndex;
|
||||
var ti = this.currentTextIndex;
|
||||
if( !this.wordWin ) {
|
||||
alert( 'Error: Word frame not available.' );
|
||||
return false;
|
||||
}
|
||||
if( !this.wordWin.getTextVal( ti, wi )) {
|
||||
alert( 'Error: "Not in dictionary" text is missing.' );
|
||||
return false;
|
||||
}
|
||||
// set as ignored
|
||||
if( this._setAsIgnored( ti, wi, this.ignrWordFlag )) {
|
||||
this.currentWordIndex++;
|
||||
this._spellcheck();
|
||||
}
|
||||
}
|
||||
|
||||
function ignoreAll() {
|
||||
var wi = this.currentWordIndex;
|
||||
var ti = this.currentTextIndex;
|
||||
if( !this.wordWin ) {
|
||||
alert( 'Error: Word frame not available.' );
|
||||
return false;
|
||||
}
|
||||
// get the word that is currently being evaluated.
|
||||
var s_word_to_repl = this.wordWin.getTextVal( ti, wi );
|
||||
if( !s_word_to_repl ) {
|
||||
alert( 'Error: "Not in dictionary" text is missing' );
|
||||
return false;
|
||||
}
|
||||
|
||||
// set this word as an "ignore all" word.
|
||||
this._setAsIgnored( ti, wi, this.ignrAllFlag );
|
||||
|
||||
// loop through all the words after this word
|
||||
for( var i = ti; i < this.wordWin.textInputs.length; i++ ) {
|
||||
for( var j = 0; j < this.wordWin.totalWords( i ); j++ ) {
|
||||
if(( i == ti && j > wi ) || i > ti ) {
|
||||
// future word: set as "from ignore all" if
|
||||
// 1) do not already have a flag and
|
||||
// 2) have the same value as current word
|
||||
if(( this.wordWin.getTextVal( i, j ) == s_word_to_repl )
|
||||
&& ( !this.wordFlags[i][j] )) {
|
||||
this._setAsIgnored( i, j, this.fromIgnrAll );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// finally, move on
|
||||
this.currentWordIndex++;
|
||||
this._spellcheck();
|
||||
}
|
||||
|
||||
function replaceWord() {
|
||||
var wi = this.currentWordIndex;
|
||||
var ti = this.currentTextIndex;
|
||||
if( !this.wordWin ) {
|
||||
alert( 'Error: Word frame not available.' );
|
||||
return false;
|
||||
}
|
||||
if( !this.wordWin.getTextVal( ti, wi )) {
|
||||
alert( 'Error: "Not in dictionary" text is missing' );
|
||||
return false;
|
||||
}
|
||||
if( !this.controlWin.replacementText ) {
|
||||
return;
|
||||
}
|
||||
var txt = this.controlWin.replacementText;
|
||||
if( txt.value ) {
|
||||
var newspell = new String( txt.value );
|
||||
if( this._setWordText( ti, wi, newspell, this.replWordFlag )) {
|
||||
this.currentWordIndex++;
|
||||
this._spellcheck();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function replaceAll() {
|
||||
var ti = this.currentTextIndex;
|
||||
var wi = this.currentWordIndex;
|
||||
if( !this.wordWin ) {
|
||||
alert( 'Error: Word frame not available.' );
|
||||
return false;
|
||||
}
|
||||
var s_word_to_repl = this.wordWin.getTextVal( ti, wi );
|
||||
if( !s_word_to_repl ) {
|
||||
alert( 'Error: "Not in dictionary" text is missing' );
|
||||
return false;
|
||||
}
|
||||
var txt = this.controlWin.replacementText;
|
||||
if( !txt.value ) return;
|
||||
var newspell = new String( txt.value );
|
||||
|
||||
// set this word as a "replace all" word.
|
||||
this._setWordText( ti, wi, newspell, this.replAllFlag );
|
||||
|
||||
// loop through all the words after this word
|
||||
for( var i = ti; i < this.wordWin.textInputs.length; i++ ) {
|
||||
for( var j = 0; j < this.wordWin.totalWords( i ); j++ ) {
|
||||
if(( i == ti && j > wi ) || i > ti ) {
|
||||
// future word: set word text to s_word_to_repl if
|
||||
// 1) do not already have a flag and
|
||||
// 2) have the same value as s_word_to_repl
|
||||
if(( this.wordWin.getTextVal( i, j ) == s_word_to_repl )
|
||||
&& ( !this.wordFlags[i][j] )) {
|
||||
this._setWordText( i, j, newspell, this.fromReplAll );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// finally, move on
|
||||
this.currentWordIndex++;
|
||||
this._spellcheck();
|
||||
}
|
||||
|
||||
function terminateSpell() {
|
||||
// called when we have reached the end of the spell checking.
|
||||
var msg = ""; // by FredCK
|
||||
var numrepl = this._getTotalReplaced();
|
||||
if( numrepl == 0 ) {
|
||||
// see if there were no misspellings to begin with
|
||||
if( !this.wordWin ) {
|
||||
msg = "";
|
||||
} else {
|
||||
if( this.wordWin.totalMisspellings() ) {
|
||||
// msg += "No words changed."; // by FredCK
|
||||
msg += FCKLang.DlgSpellNoChanges ; // by FredCK
|
||||
} else {
|
||||
// msg += "No misspellings found."; // by FredCK
|
||||
msg += FCKLang.DlgSpellNoMispell ; // by FredCK
|
||||
}
|
||||
}
|
||||
} else if( numrepl == 1 ) {
|
||||
// msg += "One word changed."; // by FredCK
|
||||
msg += FCKLang.DlgSpellOneChange ; // by FredCK
|
||||
} else {
|
||||
// msg += numrepl + " words changed."; // by FredCK
|
||||
msg += FCKLang.DlgSpellManyChanges.replace( /%1/g, numrepl ) ;
|
||||
}
|
||||
if( msg ) {
|
||||
// msg += "\n"; // by FredCK
|
||||
alert( msg );
|
||||
}
|
||||
|
||||
if( numrepl > 0 ) {
|
||||
// update the text field(s) on the opener window
|
||||
for( var i = 0; i < this.textInputs.length; i++ ) {
|
||||
// this.textArea.value = this.wordWin.text;
|
||||
if( this.wordWin ) {
|
||||
if( this.wordWin.textInputs[i] ) {
|
||||
this.textInputs[i].value = this.wordWin.textInputs[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// return back to the calling window
|
||||
// this.spellCheckerWin.close(); // by FredCK
|
||||
if ( typeof( this.OnFinished ) == 'function' ) // by FredCK
|
||||
this.OnFinished(numrepl) ; // by FredCK
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
function undo() {
|
||||
// skip if this is the first word!
|
||||
var ti = this.currentTextIndex;
|
||||
var wi = this.currentWordIndex
|
||||
|
||||
if( this.wordWin.totalPreviousWords( ti, wi ) > 0 ) {
|
||||
this.wordWin.removeFocus( ti, wi );
|
||||
|
||||
// go back to the last word index that was acted upon
|
||||
do {
|
||||
// if the current word index is zero then reset the seed
|
||||
if( this.currentWordIndex == 0 && this.currentTextIndex > 0 ) {
|
||||
this.currentTextIndex--;
|
||||
this.currentWordIndex = this.wordWin.totalWords( this.currentTextIndex )-1;
|
||||
if( this.currentWordIndex < 0 ) this.currentWordIndex = 0;
|
||||
} else {
|
||||
if( this.currentWordIndex > 0 ) {
|
||||
this.currentWordIndex--;
|
||||
}
|
||||
}
|
||||
} while (
|
||||
this.wordWin.totalWords( this.currentTextIndex ) == 0
|
||||
|| this.wordFlags[this.currentTextIndex][this.currentWordIndex] == this.fromIgnrAll
|
||||
|| this.wordFlags[this.currentTextIndex][this.currentWordIndex] == this.fromReplAll
|
||||
);
|
||||
|
||||
var text_idx = this.currentTextIndex;
|
||||
var idx = this.currentWordIndex;
|
||||
var preReplSpell = this.wordWin.originalSpellings[text_idx][idx];
|
||||
|
||||
// if we got back to the first word then set the Undo button back to disabled
|
||||
if( this.wordWin.totalPreviousWords( text_idx, idx ) == 0 ) {
|
||||
this.controlWin.disableUndo();
|
||||
}
|
||||
|
||||
// examine what happened to this current word.
|
||||
switch( this.wordFlags[text_idx][idx] ) {
|
||||
// replace all: go through this and all the future occurances of the word
|
||||
// and revert them all to the original spelling and clear their flags
|
||||
case this.replAllFlag :
|
||||
for( var i = text_idx; i < this.wordWin.textInputs.length; i++ ) {
|
||||
for( var j = 0; j < this.wordWin.totalWords( i ); j++ ) {
|
||||
if(( i == text_idx && j >= idx ) || i > text_idx ) {
|
||||
var origSpell = this.wordWin.originalSpellings[i][j];
|
||||
if( origSpell == preReplSpell ) {
|
||||
this._setWordText ( i, j, origSpell, undefined );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
// ignore all: go through all the future occurances of the word
|
||||
// and clear their flags
|
||||
case this.ignrAllFlag :
|
||||
for( var i = text_idx; i < this.wordWin.textInputs.length; i++ ) {
|
||||
for( var j = 0; j < this.wordWin.totalWords( i ); j++ ) {
|
||||
if(( i == text_idx && j >= idx ) || i > text_idx ) {
|
||||
var origSpell = this.wordWin.originalSpellings[i][j];
|
||||
if( origSpell == preReplSpell ) {
|
||||
this.wordFlags[i][j] = undefined;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
// replace: revert the word to its original spelling
|
||||
case this.replWordFlag :
|
||||
this._setWordText ( text_idx, idx, preReplSpell, undefined );
|
||||
break;
|
||||
}
|
||||
|
||||
// For all four cases, clear the wordFlag of this word. re-start the process
|
||||
this.wordFlags[text_idx][idx] = undefined;
|
||||
this._spellcheck();
|
||||
}
|
||||
}
|
||||
|
||||
function _spellcheck() {
|
||||
var ww = this.wordWin;
|
||||
|
||||
// check if this is the last word in the current text element
|
||||
if( this.currentWordIndex == ww.totalWords( this.currentTextIndex) ) {
|
||||
this.currentTextIndex++;
|
||||
this.currentWordIndex = 0;
|
||||
// keep going if we're not yet past the last text element
|
||||
if( this.currentTextIndex < this.wordWin.textInputs.length ) {
|
||||
this._spellcheck();
|
||||
return;
|
||||
} else {
|
||||
this.terminateSpell();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// if this is after the first one make sure the Undo button is enabled
|
||||
if( this.currentWordIndex > 0 ) {
|
||||
this.controlWin.enableUndo();
|
||||
}
|
||||
|
||||
// skip the current word if it has already been worked on
|
||||
if( this.wordFlags[this.currentTextIndex][this.currentWordIndex] ) {
|
||||
// increment the global current word index and move on.
|
||||
this.currentWordIndex++;
|
||||
this._spellcheck();
|
||||
} else {
|
||||
var evalText = ww.getTextVal( this.currentTextIndex, this.currentWordIndex );
|
||||
if( evalText ) {
|
||||
this.controlWin.evaluatedText.value = evalText;
|
||||
ww.setFocus( this.currentTextIndex, this.currentWordIndex );
|
||||
this._getSuggestions( this.currentTextIndex, this.currentWordIndex );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function _getSuggestions( text_num, word_num ) {
|
||||
this.controlWin.clearSuggestions();
|
||||
// add suggestion in list for each suggested word.
|
||||
// get the array of suggested words out of the
|
||||
// three-dimensional array containing all suggestions.
|
||||
var a_suggests = this.wordWin.suggestions[text_num][word_num];
|
||||
if( a_suggests ) {
|
||||
// got an array of suggestions.
|
||||
for( var ii = 0; ii < a_suggests.length; ii++ ) {
|
||||
this.controlWin.addSuggestion( a_suggests[ii] );
|
||||
}
|
||||
}
|
||||
this.controlWin.selectDefaultSuggestion();
|
||||
}
|
||||
|
||||
function _setAsIgnored( text_num, word_num, flag ) {
|
||||
// set the UI
|
||||
this.wordWin.removeFocus( text_num, word_num );
|
||||
// do the bookkeeping
|
||||
this.wordFlags[text_num][word_num] = flag;
|
||||
return true;
|
||||
}
|
||||
|
||||
function _getTotalReplaced() {
|
||||
var i_replaced = 0;
|
||||
for( var i = 0; i < this.wordFlags.length; i++ ) {
|
||||
for( var j = 0; j < this.wordFlags[i].length; j++ ) {
|
||||
if(( this.wordFlags[i][j] == this.replWordFlag )
|
||||
|| ( this.wordFlags[i][j] == this.replAllFlag )
|
||||
|| ( this.wordFlags[i][j] == this.fromReplAll )) {
|
||||
i_replaced++;
|
||||
}
|
||||
}
|
||||
}
|
||||
return i_replaced;
|
||||
}
|
||||
|
||||
function _setWordText( text_num, word_num, newText, flag ) {
|
||||
// set the UI and form inputs
|
||||
this.wordWin.setText( text_num, word_num, newText );
|
||||
// keep track of what happened to this word:
|
||||
this.wordFlags[text_num][word_num] = flag;
|
||||
return true;
|
||||
}
|
||||
|
||||
function _getFormInputs( inputPattern ) {
|
||||
var inputs = new Array();
|
||||
for( var i = 0; i < document.forms.length; i++ ) {
|
||||
for( var j = 0; j < document.forms[i].elements.length; j++ ) {
|
||||
if( document.forms[i].elements[j].type.match( inputPattern )) {
|
||||
inputs[inputs.length] = document.forms[i].elements[j];
|
||||
}
|
||||
}
|
||||
}
|
||||
return inputs;
|
||||
}
|
||||
|
@ -0,0 +1,71 @@
|
||||
|
||||
<script>
|
||||
|
||||
var wordWindow = null;
|
||||
var controlWindow = null;
|
||||
|
||||
function init_spell( spellerWindow ) {
|
||||
|
||||
if( spellerWindow ) {
|
||||
if( spellerWindow.windowType == "wordWindow" ) {
|
||||
wordWindow = spellerWindow;
|
||||
} else if ( spellerWindow.windowType == "controlWindow" ) {
|
||||
controlWindow = spellerWindow;
|
||||
}
|
||||
}
|
||||
|
||||
if( controlWindow && wordWindow ) {
|
||||
// populate the speller object and start it off!
|
||||
var speller = opener.speller;
|
||||
wordWindow.speller = speller;
|
||||
speller.startCheck( wordWindow, controlWindow );
|
||||
}
|
||||
}
|
||||
|
||||
// encodeForPost
|
||||
function encodeForPost( str ) {
|
||||
var s = new String( str );
|
||||
s = encodeURIComponent( s );
|
||||
// additionally encode single quotes to evade any PHP
|
||||
// magic_quotes_gpc setting (it inserts escape characters and
|
||||
// therefore skews the btye positions of misspelled words)
|
||||
return s.replace( /\'/g, '%27' );
|
||||
}
|
||||
|
||||
// post the text area data to the script that populates the speller
|
||||
function postWords() {
|
||||
var bodyDoc = window.frames[0].document;
|
||||
bodyDoc.open();
|
||||
bodyDoc.write('<html>');
|
||||
bodyDoc.write('<meta http-equiv="Content-Type" content="text/html; charset=utf-8">');
|
||||
bodyDoc.write('<link rel="stylesheet" type="text/css" href="spellerStyle.css"/>');
|
||||
if (opener) {
|
||||
var speller = opener.speller;
|
||||
bodyDoc.write('<body class="normalText" onLoad="document.forms[0].submit();">');
|
||||
bodyDoc.write('<p>' + window.parent.FCKLang.DlgSpellProgress + '<\/p>'); // by FredCK
|
||||
bodyDoc.write('<form action="'+speller.spellCheckScript+'" method="post">');
|
||||
for( var i = 0; i < speller.textInputs.length; i++ ) {
|
||||
bodyDoc.write('<input type="hidden" name="textinputs[]" value="'+encodeForPost(speller.textInputs[i].value)+'">');
|
||||
}
|
||||
bodyDoc.write('<\/form>');
|
||||
bodyDoc.write('<\/body>');
|
||||
} else {
|
||||
bodyDoc.write('<body class="normalText">');
|
||||
bodyDoc.write('<p><b>This page cannot be displayed<\/b><\/p><p>The window was not opened from another window.<\/p>');
|
||||
bodyDoc.write('<\/body>');
|
||||
}
|
||||
bodyDoc.write('<\/html>');
|
||||
bodyDoc.close();
|
||||
}
|
||||
</script>
|
||||
|
||||
<html>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<head>
|
||||
<title>Speller Pages</title>
|
||||
</head>
|
||||
<frameset rows="*,201" onLoad="postWords();">
|
||||
<frame src="blank.html">
|
||||
<frame src="controls.html">
|
||||
</frameset>
|
||||
</html>
|
@ -0,0 +1,49 @@
|
||||
.blend {
|
||||
font-family: courier new;
|
||||
font-size: 10pt;
|
||||
border: 0;
|
||||
margin-bottom:-1;
|
||||
}
|
||||
.normalLabel {
|
||||
font-size:8pt;
|
||||
}
|
||||
.normalText {
|
||||
font-family:arial, helvetica, sans-serif;
|
||||
font-size:10pt;
|
||||
color:000000;
|
||||
background-color:FFFFFF;
|
||||
}
|
||||
.plainText {
|
||||
font-family: courier new, courier, monospace;
|
||||
font-size: 10pt;
|
||||
color:000000;
|
||||
background-color:FFFFFF;
|
||||
}
|
||||
.controlWindowBody {
|
||||
font-family:arial, helvetica, sans-serif;
|
||||
font-size:8pt;
|
||||
padding: 7px ; /* by FredCK */
|
||||
margin: 0px ; /* by FredCK */
|
||||
/* color:000000; by FredCK */
|
||||
/* background-color:DADADA; by FredCK */
|
||||
}
|
||||
.readonlyInput {
|
||||
background-color:DADADA;
|
||||
color:000000;
|
||||
font-size:8pt;
|
||||
width:392px;
|
||||
}
|
||||
.textDefault {
|
||||
font-size:8pt;
|
||||
width: 200px;
|
||||
}
|
||||
.buttonDefault {
|
||||
width:90px;
|
||||
height:22px;
|
||||
font-size:8pt;
|
||||
}
|
||||
.suggSlct {
|
||||
width:200px;
|
||||
margin-top:2;
|
||||
font-size:8pt;
|
||||
}
|
@ -0,0 +1,271 @@
|
||||
////////////////////////////////////////////////////
|
||||
// wordWindow object
|
||||
////////////////////////////////////////////////////
|
||||
function wordWindow() {
|
||||
// private properties
|
||||
this._forms = [];
|
||||
|
||||
// private methods
|
||||
this._getWordObject = _getWordObject;
|
||||
//this._getSpellerObject = _getSpellerObject;
|
||||
this._wordInputStr = _wordInputStr;
|
||||
this._adjustIndexes = _adjustIndexes;
|
||||
this._isWordChar = _isWordChar;
|
||||
this._lastPos = _lastPos;
|
||||
|
||||
// public properties
|
||||
this.wordChar = /[a-zA-Z]/;
|
||||
this.windowType = "wordWindow";
|
||||
this.originalSpellings = new Array();
|
||||
this.suggestions = new Array();
|
||||
this.checkWordBgColor = "pink";
|
||||
this.normWordBgColor = "white";
|
||||
this.text = "";
|
||||
this.textInputs = new Array();
|
||||
this.indexes = new Array();
|
||||
//this.speller = this._getSpellerObject();
|
||||
|
||||
// public methods
|
||||
this.resetForm = resetForm;
|
||||
this.totalMisspellings = totalMisspellings;
|
||||
this.totalWords = totalWords;
|
||||
this.totalPreviousWords = totalPreviousWords;
|
||||
//this.getTextObjectArray = getTextObjectArray;
|
||||
this.getTextVal = getTextVal;
|
||||
this.setFocus = setFocus;
|
||||
this.removeFocus = removeFocus;
|
||||
this.setText = setText;
|
||||
//this.getTotalWords = getTotalWords;
|
||||
this.writeBody = writeBody;
|
||||
this.printForHtml = printForHtml;
|
||||
}
|
||||
|
||||
function resetForm() {
|
||||
if( this._forms ) {
|
||||
for( var i = 0; i < this._forms.length; i++ ) {
|
||||
this._forms[i].reset();
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
function totalMisspellings() {
|
||||
var total_words = 0;
|
||||
for( var i = 0; i < this.textInputs.length; i++ ) {
|
||||
total_words += this.totalWords( i );
|
||||
}
|
||||
return total_words;
|
||||
}
|
||||
|
||||
function totalWords( textIndex ) {
|
||||
return this.originalSpellings[textIndex].length;
|
||||
}
|
||||
|
||||
function totalPreviousWords( textIndex, wordIndex ) {
|
||||
var total_words = 0;
|
||||
for( var i = 0; i <= textIndex; i++ ) {
|
||||
for( var j = 0; j < this.totalWords( i ); j++ ) {
|
||||
if( i == textIndex && j == wordIndex ) {
|
||||
break;
|
||||
} else {
|
||||
total_words++;
|
||||
}
|
||||
}
|
||||
}
|
||||
return total_words;
|
||||
}
|
||||
|
||||
//function getTextObjectArray() {
|
||||
// return this._form.elements;
|
||||
//}
|
||||
|
||||
function getTextVal( textIndex, wordIndex ) {
|
||||
var word = this._getWordObject( textIndex, wordIndex );
|
||||
if( word ) {
|
||||
return word.value;
|
||||
}
|
||||
}
|
||||
|
||||
function setFocus( textIndex, wordIndex ) {
|
||||
var word = this._getWordObject( textIndex, wordIndex );
|
||||
if( word ) {
|
||||
if( word.type == "text" ) {
|
||||
word.focus();
|
||||
word.style.backgroundColor = this.checkWordBgColor;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function removeFocus( textIndex, wordIndex ) {
|
||||
var word = this._getWordObject( textIndex, wordIndex );
|
||||
if( word ) {
|
||||
if( word.type == "text" ) {
|
||||
word.blur();
|
||||
word.style.backgroundColor = this.normWordBgColor;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function setText( textIndex, wordIndex, newText ) {
|
||||
var word = this._getWordObject( textIndex, wordIndex );
|
||||
var beginStr;
|
||||
var endStr;
|
||||
if( word ) {
|
||||
var pos = this.indexes[textIndex][wordIndex];
|
||||
var oldText = word.value;
|
||||
// update the text given the index of the string
|
||||
beginStr = this.textInputs[textIndex].substring( 0, pos );
|
||||
endStr = this.textInputs[textIndex].substring(
|
||||
pos + oldText.length,
|
||||
this.textInputs[textIndex].length
|
||||
);
|
||||
this.textInputs[textIndex] = beginStr + newText + endStr;
|
||||
|
||||
// adjust the indexes on the stack given the differences in
|
||||
// length between the new word and old word.
|
||||
var lengthDiff = newText.length - oldText.length;
|
||||
this._adjustIndexes( textIndex, wordIndex, lengthDiff );
|
||||
|
||||
word.size = newText.length;
|
||||
word.value = newText;
|
||||
this.removeFocus( textIndex, wordIndex );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function writeBody() {
|
||||
var d = window.document;
|
||||
var is_html = false;
|
||||
|
||||
d.open();
|
||||
|
||||
// iterate through each text input.
|
||||
for( var txtid = 0; txtid < this.textInputs.length; txtid++ ) {
|
||||
var end_idx = 0;
|
||||
var begin_idx = 0;
|
||||
d.writeln( '<form name="textInput'+txtid+'">' );
|
||||
var wordtxt = this.textInputs[txtid];
|
||||
this.indexes[txtid] = [];
|
||||
|
||||
if( wordtxt ) {
|
||||
var orig = this.originalSpellings[txtid];
|
||||
if( !orig ) break;
|
||||
|
||||
//!!! plain text, or HTML mode?
|
||||
d.writeln( '<div class="plainText">' );
|
||||
// iterate through each occurrence of a misspelled word.
|
||||
for( var i = 0; i < orig.length; i++ ) {
|
||||
// find the position of the current misspelled word,
|
||||
// starting at the last misspelled word.
|
||||
// and keep looking if it's a substring of another word
|
||||
do {
|
||||
begin_idx = wordtxt.indexOf( orig[i], end_idx );
|
||||
end_idx = begin_idx + orig[i].length;
|
||||
// word not found? messed up!
|
||||
if( begin_idx == -1 ) break;
|
||||
// look at the characters immediately before and after
|
||||
// the word. If they are word characters we'll keep looking.
|
||||
var before_char = wordtxt.charAt( begin_idx - 1 );
|
||||
var after_char = wordtxt.charAt( end_idx );
|
||||
} while (
|
||||
this._isWordChar( before_char )
|
||||
|| this._isWordChar( after_char )
|
||||
);
|
||||
|
||||
// keep track of its position in the original text.
|
||||
this.indexes[txtid][i] = begin_idx;
|
||||
|
||||
// write out the characters before the current misspelled word
|
||||
for( var j = this._lastPos( txtid, i ); j < begin_idx; j++ ) {
|
||||
// !!! html mode? make it html compatible
|
||||
d.write( this.printForHtml( wordtxt.charAt( j )));
|
||||
}
|
||||
|
||||
// write out the misspelled word.
|
||||
d.write( this._wordInputStr( orig[i] ));
|
||||
|
||||
// if it's the last word, write out the rest of the text
|
||||
if( i == orig.length-1 ){
|
||||
d.write( printForHtml( wordtxt.substr( end_idx )));
|
||||
}
|
||||
}
|
||||
|
||||
d.writeln( '</div>' );
|
||||
|
||||
}
|
||||
d.writeln( '</form>' );
|
||||
}
|
||||
//for ( var j = 0; j < d.forms.length; j++ ) {
|
||||
// alert( d.forms[j].name );
|
||||
// for( var k = 0; k < d.forms[j].elements.length; k++ ) {
|
||||
// alert( d.forms[j].elements[k].name + ": " + d.forms[j].elements[k].value );
|
||||
// }
|
||||
//}
|
||||
|
||||
// set the _forms property
|
||||
this._forms = d.forms;
|
||||
d.close();
|
||||
}
|
||||
|
||||
// return the character index in the full text after the last word we evaluated
|
||||
function _lastPos( txtid, idx ) {
|
||||
if( idx > 0 )
|
||||
return this.indexes[txtid][idx-1] + this.originalSpellings[txtid][idx-1].length;
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
function printForHtml( n ) {
|
||||
return n ; // by FredCK
|
||||
|
||||
var htmlstr = n;
|
||||
if( htmlstr.length == 1 ) {
|
||||
// do simple case statement if it's just one character
|
||||
switch ( n ) {
|
||||
case "\n":
|
||||
htmlstr = '<br/>';
|
||||
break;
|
||||
case "<":
|
||||
htmlstr = '<';
|
||||
break;
|
||||
case ">":
|
||||
htmlstr = '>';
|
||||
break;
|
||||
}
|
||||
return htmlstr;
|
||||
} else {
|
||||
htmlstr = htmlstr.replace( /</g, '<' );
|
||||
htmlstr = htmlstr.replace( />/g, '>' );
|
||||
htmlstr = htmlstr.replace( /\n/g, '<br/>' );
|
||||
return htmlstr;
|
||||
}
|
||||
}
|
||||
|
||||
function _isWordChar( letter ) {
|
||||
if( letter.search( this.wordChar ) == -1 ) {
|
||||
return false;
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
function _getWordObject( textIndex, wordIndex ) {
|
||||
if( this._forms[textIndex] ) {
|
||||
if( this._forms[textIndex].elements[wordIndex] ) {
|
||||
return this._forms[textIndex].elements[wordIndex];
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
function _wordInputStr( word ) {
|
||||
var str = '<input readonly ';
|
||||
str += 'class="blend" type="text" value="' + word + '" size="' + word.length + '">';
|
||||
return str;
|
||||
}
|
||||
|
||||
function _adjustIndexes( textIndex, wordIndex, lengthDiff ) {
|
||||
for( var i = wordIndex + 1; i < this.originalSpellings[textIndex].length; i++ ) {
|
||||
this.indexes[textIndex][i] = this.indexes[textIndex][i] + lengthDiff;
|
||||
}
|
||||
}
|
316
admin/FCKeditor/editor/dialog/fck_table.html
Normal file
@ -0,0 +1,316 @@
|
||||
<!--
|
||||
* FCKeditor - The text editor for internet
|
||||
* Copyright (C) 2003-2006 Frederico Caldeira Knabben
|
||||
*
|
||||
* Licensed under the terms of the GNU Lesser General Public License:
|
||||
* http://www.opensource.org/licenses/lgpl-license.php
|
||||
*
|
||||
* For further information visit:
|
||||
* http://www.fckeditor.net/
|
||||
*
|
||||
* "Support Open Source software. What about a donation today?"
|
||||
*
|
||||
* File Name: fck_table.html
|
||||
* Table dialog window.
|
||||
*
|
||||
* File Authors:
|
||||
* Frederico Caldeira Knabben (fredck@fckeditor.net)
|
||||
-->
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<title>Table Properties</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="robots" content="noindex, nofollow" />
|
||||
<script type="text/javascript">
|
||||
|
||||
var oEditor = window.parent.InnerDialogLoaded() ;
|
||||
|
||||
// Gets the document DOM
|
||||
var oDOM = oEditor.FCK.EditorDocument ;
|
||||
|
||||
// Gets the table if there is one selected.
|
||||
var table ;
|
||||
var e = oEditor.FCKSelection.GetSelectedElement() ;
|
||||
|
||||
if ( ( !e && document.location.search.substr(1) == 'Parent' ) || ( e && e.tagName != 'TABLE' ) )
|
||||
e = oEditor.FCKSelection.MoveToAncestorNode( 'TABLE' ) ;
|
||||
|
||||
if ( e && e.tagName == "TABLE" )
|
||||
table = e ;
|
||||
|
||||
// Fired when the window loading process is finished. It sets the fields with the
|
||||
// actual values if a table is selected in the editor.
|
||||
window.onload = function()
|
||||
{
|
||||
// First of all, translate the dialog box texts
|
||||
oEditor.FCKLanguageManager.TranslatePage(document) ;
|
||||
|
||||
if (table)
|
||||
{
|
||||
document.getElementById('txtRows').value = table.rows.length ;
|
||||
document.getElementById('txtColumns').value = table.rows[0].cells.length ;
|
||||
|
||||
// Gets the value from the Width or the Style attribute
|
||||
var iWidth = (table.style.width ? table.style.width : table.width ) ;
|
||||
var iHeight = (table.style.height ? table.style.height : table.height ) ;
|
||||
|
||||
if (iWidth.indexOf('%') >= 0) // Percentual = %
|
||||
{
|
||||
iWidth = parseInt( iWidth.substr(0,iWidth.length - 1) ) ;
|
||||
document.getElementById('selWidthType').value = "percent" ;
|
||||
}
|
||||
else if (iWidth.indexOf('px') >= 0) // Style Pixel = px
|
||||
{ //
|
||||
iWidth = iWidth.substr(0,iWidth.length - 2);
|
||||
document.getElementById('selWidthType').value = "pixels" ;
|
||||
}
|
||||
|
||||
if (iHeight && iHeight.indexOf('px') >= 0) // Style Pixel = px
|
||||
iHeight = iHeight.substr(0,iHeight.length - 2);
|
||||
|
||||
document.getElementById('txtWidth').value = iWidth ;
|
||||
document.getElementById('txtHeight').value = iHeight ;
|
||||
document.getElementById('txtBorder').value = table.border ;
|
||||
document.getElementById('selAlignment').value = table.align ;
|
||||
document.getElementById('txtCellPadding').value = table.cellPadding ;
|
||||
document.getElementById('txtCellSpacing').value = table.cellSpacing ;
|
||||
document.getElementById('txtSummary').value = table.summary;
|
||||
// document.getElementById('cmbFontStyle').value = table.className ;
|
||||
|
||||
if (table.caption) document.getElementById('txtCaption').value = table.caption.innerHTML ;
|
||||
|
||||
document.getElementById('txtRows').disabled = true ;
|
||||
document.getElementById('txtColumns').disabled = true ;
|
||||
}
|
||||
|
||||
window.parent.SetOkButton( true ) ;
|
||||
window.parent.SetAutoSize( true ) ;
|
||||
}
|
||||
|
||||
// Fired when the user press the OK button
|
||||
function Ok()
|
||||
{
|
||||
var bExists = ( table != null ) ;
|
||||
|
||||
if ( ! bExists )
|
||||
{
|
||||
table = oEditor.FCK.EditorDocument.createElement( "TABLE" ) ;
|
||||
}
|
||||
|
||||
// Removes the Width and Height styles
|
||||
if ( bExists && table.style.width ) table.style.width = null ; //.removeAttribute("width") ;
|
||||
if ( bExists && table.style.height ) table.style.height = null ; //.removeAttribute("height") ;
|
||||
|
||||
table.width = document.getElementById('txtWidth').value + ( document.getElementById('selWidthType').value == "percent" ? "%" : "") ;
|
||||
table.height = document.getElementById('txtHeight').value ;
|
||||
table.border = document.getElementById('txtBorder').value ;
|
||||
table.align = document.getElementById('selAlignment').value ;
|
||||
table.cellPadding = document.getElementById('txtCellPadding').value ;
|
||||
table.cellSpacing = document.getElementById('txtCellSpacing').value ;
|
||||
table.summary = document.getElementById('txtSummary').value ;
|
||||
// table.className = cmbFontStyle.value ;
|
||||
|
||||
if ( document.getElementById('txtCaption').value != '')
|
||||
{
|
||||
if (! table.caption) table.createCaption() ;
|
||||
table.caption.innerHTML = document.getElementById('txtCaption').value ;
|
||||
}
|
||||
else if ( bExists && table.caption )
|
||||
{
|
||||
if ( document.all )
|
||||
table.caption.innerHTML = '' ; // TODO: It causes an IE internal error if using removeChild.
|
||||
else
|
||||
table.caption.parentNode.removeChild( table.caption ) ;
|
||||
}
|
||||
|
||||
if (! bExists)
|
||||
{
|
||||
var iRows = document.getElementById('txtRows').value ;
|
||||
var iCols = document.getElementById('txtColumns').value ;
|
||||
|
||||
for ( var r = 0 ; r < iRows ; r++ )
|
||||
{
|
||||
var oRow = table.insertRow(-1) ;
|
||||
for ( var c = 0 ; c < iCols ; c++ )
|
||||
{
|
||||
var oCell = oRow.insertCell(-1) ;
|
||||
if ( oEditor.FCKBrowserInfo.IsGecko )
|
||||
oCell.innerHTML = '<br _moz_editor_bogus_node="TRUE">' ;
|
||||
//oCell.innerHTML = " " ;
|
||||
}
|
||||
}
|
||||
|
||||
oEditor.FCKUndo.SaveUndoStep() ;
|
||||
|
||||
// START iCM MODIFICATIONS
|
||||
// Amended to ensure that newly inserted tables are not incorrectly nested in P tags, etc
|
||||
// We insert the table first and then rectify any nestings afterwards so we can re-use the
|
||||
// FCKTablesProcessor function that corrects tables on SetHTML()
|
||||
/*
|
||||
table = oEditor.FCK.InsertElementAndGetIt( table ) ;
|
||||
if ( !oEditor.FCKConfig.UseBROnCarriageReturn )
|
||||
{
|
||||
oEditor.FCKTablesProcessor.CheckTableNesting( table ) ;
|
||||
}
|
||||
*/
|
||||
// END iCM MODIFICATIONS
|
||||
|
||||
oEditor.FCK.InsertElement( table ) ;
|
||||
}
|
||||
|
||||
return true ;
|
||||
}
|
||||
|
||||
function IsDigit( e )
|
||||
{
|
||||
e = e || event ;
|
||||
var iCode = ( e.keyCode || e.charCode ) ;
|
||||
return
|
||||
(
|
||||
( iCode >= 48 && iCode <= 57 ) // Numbers
|
||||
|| (iCode >= 37 && iCode <= 40) // Arrows
|
||||
|| iCode == 8 // Backspace
|
||||
|| iCode == 46 // Delete
|
||||
) ;
|
||||
}
|
||||
|
||||
</script>
|
||||
</head>
|
||||
<body style="overflow: hidden">
|
||||
<table id="otable" cellspacing="0" cellpadding="0" width="100%" border="0" style="height: 100%">
|
||||
<tr>
|
||||
<td>
|
||||
<table cellspacing="1" cellpadding="1" width="100%" border="0">
|
||||
<tr>
|
||||
<td valign="top">
|
||||
<table cellspacing="0" cellpadding="0" border="0">
|
||||
<tr>
|
||||
<td>
|
||||
<span fcklang="DlgTableRows">Rows</span>:</td>
|
||||
<td>
|
||||
<input id="txtRows" type="text" maxlength="3" size="2" value="3" name="txtRows"
|
||||
onkeypress="return IsDigit(event);" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<span fcklang="DlgTableColumns">Columns</span>:</td>
|
||||
<td>
|
||||
<input id="txtColumns" type="text" maxlength="2" size="2" value="2" name="txtColumns"
|
||||
onkeypress="return IsDigit(event);" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<span fcklang="DlgTableBorder">Border size</span>:</td>
|
||||
<td>
|
||||
<input id="txtBorder" type="text" maxlength="2" size="2" value="1" name="txtBorder"
|
||||
onkeypress="return IsDigit(event);" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<span fcklang="DlgTableAlign">Alignment</span>:</td>
|
||||
<td>
|
||||
<select id="selAlignment" name="selAlignment">
|
||||
<option fcklang="DlgTableAlignNotSet" value="" selected="selected"><Not set></option>
|
||||
<option fcklang="DlgTableAlignLeft" value="left">Left</option>
|
||||
<option fcklang="DlgTableAlignCenter" value="center">Center</option>
|
||||
<option fcklang="DlgTableAlignRight" value="right">Right</option>
|
||||
</select></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td>
|
||||
</td>
|
||||
<td align="right" valign="top">
|
||||
<table cellspacing="0" cellpadding="0" border="0">
|
||||
<tr>
|
||||
<td>
|
||||
<span fcklang="DlgTableWidth">Width</span>:</td>
|
||||
<td>
|
||||
<input id="txtWidth" type="text" maxlength="4" size="3" value="200" name="txtWidth"
|
||||
onkeypress="return IsDigit(event);" /></td>
|
||||
<td>
|
||||
<select id="selWidthType" name="selWidthType">
|
||||
<option fcklang="DlgTableWidthPx" value="pixels" selected="selected">pixels</option>
|
||||
<option fcklang="DlgTableWidthPc" value="percent">percent</option>
|
||||
</select></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<span fcklang="DlgTableHeight">Height</span>:</td>
|
||||
<td>
|
||||
<input id="txtHeight" type="text" maxlength="4" size="3" name="txtHeight" onkeypress="return IsDigit(event);" /></td>
|
||||
<td>
|
||||
<span fcklang="DlgTableWidthPx">pixels</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td nowrap="nowrap">
|
||||
<span fcklang="DlgTableCellSpace">Cell spacing</span>:</td>
|
||||
<td>
|
||||
<input id="txtCellSpacing" type="text" maxlength="2" size="2" value="1" name="txtCellSpacing"
|
||||
onkeypress="return IsDigit(event);" /></td>
|
||||
<td>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td nowrap="nowrap">
|
||||
<span fcklang="DlgTableCellPad">Cell padding</span>:</td>
|
||||
<td>
|
||||
<input id="txtCellPadding" type="text" maxlength="2" size="2" value="1" name="txtCellPadding"
|
||||
onkeypress="return IsDigit(event);" /></td>
|
||||
<td>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<table cellspacing="0" cellpadding="0" width="100%" border="0">
|
||||
<!--
|
||||
<tr>
|
||||
<td nowrap>
|
||||
<span fcklang="DlgClassName">Class Name</span>:</td>
|
||||
<td> </td>
|
||||
<td>
|
||||
<script type="text/javascript">
|
||||
// var tbstyles = new TBCombo( "FontStyle" , "null" , "", oEditor.config.StyleNames, oEditor.config.StyleValues, 'CheckStyle("cmbFontStyle")');
|
||||
// document.write(tbstyles.GetHTML());
|
||||
</script></td>
|
||||
</tr>
|
||||
-->
|
||||
<tr>
|
||||
<td nowrap="nowrap">
|
||||
<span fcklang="DlgTableCaption">Caption</span>: </td>
|
||||
<td>
|
||||
</td>
|
||||
<td width="100%" nowrap="nowrap">
|
||||
<input id="txtCaption" type="text" style="width: 100%" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td nowrap="nowrap">
|
||||
<span fcklang="DlgTableSummary">Summary</span>: </td>
|
||||
<td>
|
||||
</td>
|
||||
<td width="100%" nowrap="nowrap">
|
||||
<input id="txtSummary" type="text" style="width: 100%" /></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
251
admin/FCKeditor/editor/dialog/fck_tablecell.html
Normal file
@ -0,0 +1,251 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
|
||||
<!--
|
||||
* FCKeditor - The text editor for internet
|
||||
* Copyright (C) 2003-2006 Frederico Caldeira Knabben
|
||||
*
|
||||
* Licensed under the terms of the GNU Lesser General Public License:
|
||||
* http://www.opensource.org/licenses/lgpl-license.php
|
||||
*
|
||||
* For further information visit:
|
||||
* http://www.fckeditor.net/
|
||||
*
|
||||
* "Support Open Source software. What about a donation today?"
|
||||
*
|
||||
* File Name: fck_tablecell.html
|
||||
* Cell properties dialog window.
|
||||
*
|
||||
* File Authors:
|
||||
* Frederico Caldeira Knabben (fredck@fckeditor.net)
|
||||
-->
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<title>Table Cell Properties</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="robots" content="noindex, nofollow" />
|
||||
<script src="common/fck_dialog_common.js" type="text/javascript"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
var oEditor = window.parent.InnerDialogLoaded() ;
|
||||
|
||||
// Gets the document DOM
|
||||
var oDOM = oEditor.FCK.EditorDocument ;
|
||||
|
||||
// Array of selected Cells
|
||||
var aCells = oEditor.FCKTableHandler.GetSelectedCells() ;
|
||||
|
||||
window.onload = function()
|
||||
{
|
||||
// First of all, translate the dialog box texts
|
||||
oEditor.FCKLanguageManager.TranslatePage( document ) ;
|
||||
|
||||
SetStartupValue() ;
|
||||
|
||||
window.parent.SetOkButton( true ) ;
|
||||
window.parent.SetAutoSize( true ) ;
|
||||
}
|
||||
|
||||
function SetStartupValue()
|
||||
{
|
||||
if ( aCells.length > 0 )
|
||||
{
|
||||
var oCell = aCells[0] ;
|
||||
var iWidth = GetAttribute( oCell, 'width' ) ;
|
||||
|
||||
if ( iWidth.indexOf && iWidth.indexOf( '%' ) >= 0 )
|
||||
{
|
||||
iWidth = iWidth.substr( 0, iWidth.length - 1 ) ;
|
||||
GetE('selWidthType').value = 'percent' ;
|
||||
}
|
||||
|
||||
if ( oCell.attributes['noWrap'] != null && oCell.attributes['noWrap'].specified )
|
||||
GetE('selWordWrap').value = !oCell.noWrap ;
|
||||
|
||||
GetE('txtWidth').value = iWidth ;
|
||||
GetE('txtHeight').value = GetAttribute( oCell, 'height' ) ;
|
||||
GetE('selHAlign').value = GetAttribute( oCell, 'align' ) ;
|
||||
GetE('selVAlign').value = GetAttribute( oCell, 'vAlign' ) ;
|
||||
GetE('txtRowSpan').value = GetAttribute( oCell, 'rowSpan' ) ;
|
||||
GetE('txtCollSpan').value = GetAttribute( oCell, 'colSpan' ) ;
|
||||
GetE('txtBackColor').value = GetAttribute( oCell, 'bgColor' ) ;
|
||||
GetE('txtBorderColor').value = GetAttribute( oCell, 'borderColor' ) ;
|
||||
// GetE('cmbFontStyle').value = oCell.className ;
|
||||
}
|
||||
}
|
||||
|
||||
// Fired when the user press the OK button
|
||||
function Ok()
|
||||
{
|
||||
for( i = 0 ; i < aCells.length ; i++ )
|
||||
{
|
||||
if ( GetE('txtWidth').value.length > 0 )
|
||||
aCells[i].width = GetE('txtWidth').value + ( GetE('selWidthType').value == 'percent' ? '%' : '') ;
|
||||
else
|
||||
aCells[i].removeAttribute( 'width', 0 ) ;
|
||||
|
||||
if ( GetE('selWordWrap').value == 'false' )
|
||||
aCells[i].noWrap = true ;
|
||||
else
|
||||
aCells[i].removeAttribute( 'noWrap' ) ;
|
||||
|
||||
SetAttribute( aCells[i], 'height' , GetE('txtHeight').value ) ;
|
||||
SetAttribute( aCells[i], 'align' , GetE('selHAlign').value ) ;
|
||||
SetAttribute( aCells[i], 'vAlign' , GetE('selVAlign').value ) ;
|
||||
SetAttribute( aCells[i], 'rowSpan' , GetE('txtRowSpan').value ) ;
|
||||
SetAttribute( aCells[i], 'colSpan' , GetE('txtCollSpan').value ) ;
|
||||
SetAttribute( aCells[i], 'bgColor' , GetE('txtBackColor').value ) ;
|
||||
SetAttribute( aCells[i], 'borderColor' , GetE('txtBorderColor').value ) ;
|
||||
// SetAttribute( aCells[i], 'className' , GetE('cmbFontStyle').value ) ;
|
||||
}
|
||||
|
||||
return true ;
|
||||
}
|
||||
|
||||
function SelectBackColor( color )
|
||||
{
|
||||
if ( color && color.length > 0 )
|
||||
GetE('txtBackColor').value = color ;
|
||||
}
|
||||
|
||||
function SelectBorderColor( color )
|
||||
{
|
||||
if ( color && color.length > 0 )
|
||||
GetE('txtBorderColor').value = color ;
|
||||
}
|
||||
|
||||
function SelectColor( wich )
|
||||
{
|
||||
oEditor.FCKDialog.OpenDialog( 'FCKDialog_Color', oEditor.FCKLang.DlgColorTitle, 'dialog/fck_colorselector.html', 400, 330, wich == 'Back' ? SelectBackColor : SelectBorderColor, window ) ;
|
||||
}
|
||||
|
||||
</script>
|
||||
</head>
|
||||
<body scroll="no" style="overflow: hidden">
|
||||
<table cellspacing="0" cellpadding="0" width="100%" border="0" height="100%">
|
||||
<tr>
|
||||
<td>
|
||||
<table cellspacing="1" cellpadding="1" width="100%" border="0">
|
||||
<tr>
|
||||
<td>
|
||||
<table cellspacing="0" cellpadding="0" border="0">
|
||||
<tr>
|
||||
<td nowrap="nowrap">
|
||||
<span fcklang="DlgCellWidth">Width</span>:</td>
|
||||
<td>
|
||||
<input onkeypress="return IsDigit(event);" id="txtWidth" type="text" maxlength="4"
|
||||
size="3" name="txtWidth" /> <select id="selWidthType" name="selWidthType">
|
||||
<option fcklang="DlgCellWidthPx" value="pixels" selected="selected">pixels</option>
|
||||
<option fcklang="DlgCellWidthPc" value="percent">percent</option>
|
||||
</select></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td nowrap="nowrap">
|
||||
<span fcklang="DlgCellHeight">Height</span>:</td>
|
||||
<td>
|
||||
<input id="txtHeight" type="text" maxlength="4" size="3" name="txtHeight" onkeypress="return IsDigit(event);" /> <span
|
||||
fcklang="DlgCellWidthPx">pixels</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td nowrap="nowrap">
|
||||
<span fcklang="DlgCellWordWrap">Word Wrap</span>:</td>
|
||||
<td>
|
||||
<select id="selWordWrap" name="selAlignment">
|
||||
<option fcklang="DlgCellWordWrapYes" value="true" selected="selected">Yes</option>
|
||||
<option fcklang="DlgCellWordWrapNo" value="false">No</option>
|
||||
</select></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td nowrap="nowrap">
|
||||
<span fcklang="DlgCellHorAlign">Horizontal Alignment</span>:</td>
|
||||
<td>
|
||||
<select id="selHAlign" name="selAlignment">
|
||||
<option fcklang="DlgCellHorAlignNotSet" value="" selected><Not set></option>
|
||||
<option fcklang="DlgCellHorAlignLeft" value="left">Left</option>
|
||||
<option fcklang="DlgCellHorAlignCenter" value="center">Center</option>
|
||||
<option fcklang="DlgCellHorAlignRight" value="right">Right</option>
|
||||
</select></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td nowrap="nowrap">
|
||||
<span fcklang="DlgCellVerAlign">Vertical Alignment</span>:</td>
|
||||
<td>
|
||||
<select id="selVAlign" name="selAlignment">
|
||||
<option fcklang="DlgCellVerAlignNotSet" value="" selected><Not set></option>
|
||||
<option fcklang="DlgCellVerAlignTop" value="top">Top</option>
|
||||
<option fcklang="DlgCellVerAlignMiddle" value="middle">Middle</option>
|
||||
<option fcklang="DlgCellVerAlignBottom" value="bottom">Bottom</option>
|
||||
<option fcklang="DlgCellVerAlignBaseline" value="baseline">Baseline</option>
|
||||
</select></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td>
|
||||
</td>
|
||||
<td align="right">
|
||||
<table cellspacing="0" cellpadding="0" border="0">
|
||||
<tr>
|
||||
<td nowrap="nowrap">
|
||||
<span fcklang="DlgCellRowSpan">Rows Span</span>:</td>
|
||||
<td>
|
||||
|
||||
<input onkeypress="return IsDigit(event);" id="txtRowSpan" type="text" maxlength="3" size="2"
|
||||
name="txtRows"></td>
|
||||
<td>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td nowrap="nowrap">
|
||||
<span fcklang="DlgCellCollSpan">Columns Span</span>:</td>
|
||||
<td>
|
||||
|
||||
<input onkeypress="return IsDigit(event);" id="txtCollSpan" type="text" maxlength="2"
|
||||
size="2" name="txtColumns"></td>
|
||||
<td>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td nowrap="nowrap">
|
||||
<span fcklang="DlgCellBackColor">Background Color</span>:</td>
|
||||
<td>
|
||||
<input id="txtBackColor" type="text" size="8" name="txtCellSpacing"></td>
|
||||
<td>
|
||||
|
||||
<input type="button" fcklang="DlgCellBtnSelect" value="Select..." onclick="SelectColor( 'Back' )"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td nowrap="nowrap">
|
||||
<span fcklang="DlgCellBorderColor">Border Color</span>:</td>
|
||||
<td>
|
||||
<input id="txtBorderColor" type="text" size="8" name="txtCellPadding" /></td>
|
||||
<td>
|
||||
|
||||
<input type="button" fcklang="DlgCellBtnSelect" value="Select..." onclick="SelectColor( 'Border' )" /></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
236
admin/FCKeditor/editor/dialog/fck_template.html
Normal file
@ -0,0 +1,236 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||
<!--
|
||||
* FCKeditor - The text editor for internet
|
||||
* Copyright (C) 2003-2006 Frederico Caldeira Knabben
|
||||
*
|
||||
* Licensed under the terms of the GNU Lesser General Public License:
|
||||
* http://www.opensource.org/licenses/lgpl-license.php
|
||||
*
|
||||
* For further information visit:
|
||||
* http://www.fckeditor.net/
|
||||
*
|
||||
* "Support Open Source software. What about a donation today?"
|
||||
*
|
||||
* File Name: fck_template.html
|
||||
* Template selection dialog window.
|
||||
*
|
||||
* File Authors:
|
||||
* Frederico Caldeira Knabben (fredck@fckeditor.net)
|
||||
-->
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<title></title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="robots" content="noindex, nofollow" />
|
||||
<style type="text/css">
|
||||
.TplList
|
||||
{
|
||||
border: #dcdcdc 2px solid;
|
||||
background-color: #ffffff;
|
||||
overflow: auto;
|
||||
width: 90%;
|
||||
}
|
||||
|
||||
.TplItem
|
||||
{
|
||||
margin: 5px;
|
||||
padding: 7px;
|
||||
border: #eeeeee 1px solid;
|
||||
}
|
||||
|
||||
.TplItem TABLE
|
||||
{
|
||||
display: inline;
|
||||
}
|
||||
|
||||
.TplTitle
|
||||
{
|
||||
font-weight: bold;
|
||||
}
|
||||
</style>
|
||||
<script src="common/fck_dialog_common.js" type="text/javascript"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
var oEditor = window.parent.InnerDialogLoaded() ;
|
||||
var FCK = oEditor.FCK ;
|
||||
var FCKLang = oEditor.FCKLang ;
|
||||
var FCKConfig = oEditor.FCKConfig ;
|
||||
|
||||
window.onload = function()
|
||||
{
|
||||
// Set the right box height (browser dependent).
|
||||
GetE('eList').style.height = document.all ? '100%' : '295px' ;
|
||||
|
||||
// Translate the dialog box texts.
|
||||
oEditor.FCKLanguageManager.TranslatePage(document) ;
|
||||
|
||||
GetE('xChkReplaceAll').checked = ( FCKConfig.TemplateReplaceAll !== false ) ;
|
||||
|
||||
if ( FCKConfig.TemplateReplaceCheckbox !== false )
|
||||
GetE('xReplaceBlock').style.display = '' ;
|
||||
|
||||
window.parent.SetAutoSize( true ) ;
|
||||
|
||||
LoadTemplatesXml() ;
|
||||
}
|
||||
|
||||
function LoadTemplatesXml()
|
||||
{
|
||||
if ( !FCK._Templates )
|
||||
{
|
||||
GetE('eLoading').style.display = '' ;
|
||||
|
||||
// Create the Templates array.
|
||||
FCK._Templates = new Array() ;
|
||||
|
||||
// Load the XML file.
|
||||
var oXml = new oEditor.FCKXml() ;
|
||||
oXml.LoadUrl( FCKConfig.TemplatesXmlPath ) ;
|
||||
|
||||
// Get the Images Base Path.
|
||||
var oAtt = oXml.SelectSingleNode( 'Templates/@imagesBasePath' ) ;
|
||||
var sImagesBasePath = oAtt ? oAtt.value : '' ;
|
||||
|
||||
// Get the "Template" nodes defined in the XML file.
|
||||
var aTplNodes = oXml.SelectNodes( 'Templates/Template' ) ;
|
||||
|
||||
for ( var i = 0 ; i < aTplNodes.length ; i++ )
|
||||
{
|
||||
var oNode = aTplNodes[i]
|
||||
|
||||
var oTemplate = new Object() ;
|
||||
|
||||
var oPart ;
|
||||
|
||||
// Get the Template Title.
|
||||
if ( oPart = oNode.attributes.getNamedItem('title') )
|
||||
oTemplate.Title = oPart.value ;
|
||||
else
|
||||
oTemplate.Title = 'Template ' + ( i + 1 ) ;
|
||||
|
||||
// Get the Template Description.
|
||||
if ( oPart = oXml.SelectSingleNode( 'Description', oNode ) )
|
||||
oTemplate.Description = oPart.text ? oPart.text : oPart.textContent ;
|
||||
|
||||
// Get the Template Image.
|
||||
if ( oPart = oNode.attributes.getNamedItem('image') )
|
||||
oTemplate.Image = sImagesBasePath + oPart.value ;
|
||||
|
||||
// Get the Template HTML.
|
||||
if ( oPart = oXml.SelectSingleNode( 'Html', oNode ) )
|
||||
oTemplate.Html = oPart.text ? oPart.text : oPart.textContent ;
|
||||
else
|
||||
{
|
||||
alert( 'No HTML defined for template index ' + i + '. Please review the "' + FCKConfig.TemplatesXmlPath + '" file.' ) ;
|
||||
continue ;
|
||||
}
|
||||
|
||||
FCK._Templates[ FCK._Templates.length ] = oTemplate ;
|
||||
}
|
||||
|
||||
GetE('eLoading').style.display = 'none' ;
|
||||
}
|
||||
|
||||
if ( FCK._Templates.length == 0 )
|
||||
GetE('eEmpty').style.display = '' ;
|
||||
else
|
||||
{
|
||||
for ( var i = 0 ; i < FCK._Templates.length ; i++ )
|
||||
{
|
||||
var oTemplate = FCK._Templates[i] ;
|
||||
|
||||
var oItemDiv = GetE('eList').appendChild( document.createElement( 'DIV' ) ) ;
|
||||
oItemDiv.TplIndex = i ;
|
||||
oItemDiv.className = 'TplItem' ;
|
||||
|
||||
// Build the inner HTML of our new item DIV.
|
||||
var sInner = '<table><tr>' ;
|
||||
|
||||
if ( oTemplate.Image )
|
||||
sInner += '<td valign="top"><img src="' + oTemplate.Image + '"><\/td>' ;
|
||||
|
||||
sInner += '<td valign="top"><div class="TplTitle">' + oTemplate.Title + '<\/div>' ;
|
||||
|
||||
if ( oTemplate.Description )
|
||||
sInner += '<div>' + oTemplate.Description + '<\/div>' ;
|
||||
|
||||
sInner += '<\/td><\/tr><\/table>' ;
|
||||
|
||||
oItemDiv.innerHTML = sInner ;
|
||||
|
||||
oItemDiv.onmouseover = ItemDiv_OnMouseOver ;
|
||||
oItemDiv.onmouseout = ItemDiv_OnMouseOut ;
|
||||
oItemDiv.onclick = ItemDiv_OnClick ;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function ItemDiv_OnMouseOver()
|
||||
{
|
||||
this.className += ' PopupSelectionBox' ;
|
||||
}
|
||||
|
||||
function ItemDiv_OnMouseOut()
|
||||
{
|
||||
this.className = this.className.replace( /\s*PopupSelectionBox\s*/, '' ) ;
|
||||
}
|
||||
|
||||
function ItemDiv_OnClick()
|
||||
{
|
||||
SelectTemplate( this.TplIndex ) ;
|
||||
}
|
||||
|
||||
function SelectTemplate( index )
|
||||
{
|
||||
oEditor.FCKUndo.SaveUndoStep() ;
|
||||
|
||||
if ( GetE('xChkReplaceAll').checked )
|
||||
FCK.SetHTML( FCK._Templates[index].Html ) ;
|
||||
else
|
||||
FCK.InsertHtml( FCK._Templates[index].Html ) ;
|
||||
|
||||
window.parent.Cancel( true ) ;
|
||||
}
|
||||
|
||||
</script>
|
||||
</head>
|
||||
<body style="overflow: hidden">
|
||||
<table width="100%" style="height: 100%">
|
||||
<tr>
|
||||
<td align="center">
|
||||
<span fcklang="DlgTemplatesSelMsg">Please select the template to open in the editor<br />
|
||||
(the actual contents will be lost):</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td height="100%" align="center">
|
||||
<div id="eList" align="left" class="TplList">
|
||||
<div id="eLoading" align="center" style="display: none">
|
||||
<br />
|
||||
<span fcklang="DlgTemplatesLoading">Loading templates list. Please wait...</span>
|
||||
</div>
|
||||
<div id="eEmpty" align="center" style="display: none">
|
||||
<br />
|
||||
<span fcklang="DlgTemplatesNoTpl">(No templates defined)</span>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="xReplaceBlock" style="display: none">
|
||||
<td>
|
||||
<table cellpadding="0" cellspacing="0">
|
||||
<tr>
|
||||
<td>
|
||||
<input id="xChkReplaceAll" type="checkbox" /></td>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
<label for="xChkReplaceAll" fcklang="DlgTemplatesReplace">
|
||||
Replace actual contents</label></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
BIN
admin/FCKeditor/editor/dialog/fck_template/images/template1.gif
Normal file
After Width: | Height: | Size: 375 B |
BIN
admin/FCKeditor/editor/dialog/fck_template/images/template2.gif
Normal file
After Width: | Height: | Size: 333 B |
BIN
admin/FCKeditor/editor/dialog/fck_template/images/template3.gif
Normal file
After Width: | Height: | Size: 422 B |
90
admin/FCKeditor/editor/dialog/fck_textarea.html
Normal file
@ -0,0 +1,90 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
|
||||
<!--
|
||||
* FCKeditor - The text editor for internet
|
||||
* Copyright (C) 2003-2006 Frederico Caldeira Knabben
|
||||
*
|
||||
* Licensed under the terms of the GNU Lesser General Public License:
|
||||
* http://www.opensource.org/licenses/lgpl-license.php
|
||||
*
|
||||
* For further information visit:
|
||||
* http://www.fckeditor.net/
|
||||
*
|
||||
* "Support Open Source software. What about a donation today?"
|
||||
*
|
||||
* File Name: fck_textarea.html
|
||||
* Text Area dialog window.
|
||||
*
|
||||
* File Authors:
|
||||
* Frederico Caldeira Knabben (fredck@fckeditor.net)
|
||||
-->
|
||||
<html>
|
||||
<head>
|
||||
<title>Text Area Properties</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta content="noindex, nofollow" name="robots">
|
||||
<script src="common/fck_dialog_common.js" type="text/javascript"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
var oEditor = window.parent.InnerDialogLoaded() ;
|
||||
|
||||
// Gets the document DOM
|
||||
var oDOM = oEditor.FCK.EditorDocument ;
|
||||
|
||||
var oActiveEl = oEditor.FCKSelection.GetSelectedElement() ;
|
||||
|
||||
window.onload = function()
|
||||
{
|
||||
// First of all, translate the dialog box texts
|
||||
oEditor.FCKLanguageManager.TranslatePage(document) ;
|
||||
|
||||
if ( oActiveEl && oActiveEl.tagName == 'TEXTAREA' )
|
||||
{
|
||||
GetE('txtName').value = oActiveEl.name ;
|
||||
GetE('txtCols').value = GetAttribute( oActiveEl, 'cols' ) ;
|
||||
GetE('txtRows').value = GetAttribute( oActiveEl, 'rows' ) ;
|
||||
}
|
||||
else
|
||||
oActiveEl = null ;
|
||||
|
||||
window.parent.SetOkButton( true ) ;
|
||||
}
|
||||
|
||||
function Ok()
|
||||
{
|
||||
if ( !oActiveEl )
|
||||
{
|
||||
oActiveEl = oEditor.FCK.EditorDocument.createElement( 'TEXTAREA' ) ;
|
||||
oActiveEl = oEditor.FCK.InsertElementAndGetIt( oActiveEl ) ;
|
||||
}
|
||||
|
||||
oActiveEl.name = GetE('txtName').value ;
|
||||
SetAttribute( oActiveEl, 'cols', GetE('txtCols').value ) ;
|
||||
SetAttribute( oActiveEl, 'rows', GetE('txtRows').value ) ;
|
||||
|
||||
return true ;
|
||||
}
|
||||
|
||||
</script>
|
||||
</head>
|
||||
<body style='OVERFLOW: hidden' scroll='no'>
|
||||
<table height="100%" width="100%">
|
||||
<tr>
|
||||
<td align="center">
|
||||
<table border="0" cellpadding="0" cellspacing="0" width="80%">
|
||||
<tr>
|
||||
<td>
|
||||
<span fckLang="DlgTextareaName">Name</span><br>
|
||||
<input type="text" id="txtName" style="WIDTH: 100%">
|
||||
<span fckLang="DlgTextareaCols">Collumns</span><br>
|
||||
<input id="txtCols" type="text" size="5">
|
||||
<br>
|
||||
<span fckLang="DlgTextareaRows">Rows</span><br>
|
||||
<input id="txtRows" type="text" size="5">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
135
admin/FCKeditor/editor/dialog/fck_textfield.html
Normal file
@ -0,0 +1,135 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
|
||||
<!--
|
||||
* FCKeditor - The text editor for internet
|
||||
* Copyright (C) 2003-2006 Frederico Caldeira Knabben
|
||||
*
|
||||
* Licensed under the terms of the GNU Lesser General Public License:
|
||||
* http://www.opensource.org/licenses/lgpl-license.php
|
||||
*
|
||||
* For further information visit:
|
||||
* http://www.fckeditor.net/
|
||||
*
|
||||
* "Support Open Source software. What about a donation today?"
|
||||
*
|
||||
* File Name: fck_textfield.html
|
||||
* Text field dialog window.
|
||||
*
|
||||
* File Authors:
|
||||
* Frederico Caldeira Knabben (fredck@fckeditor.net)
|
||||
-->
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<title></title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta content="noindex, nofollow" name="robots" />
|
||||
<script src="common/fck_dialog_common.js" type="text/javascript"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
var oEditor = window.parent.InnerDialogLoaded() ;
|
||||
|
||||
// Gets the document DOM
|
||||
var oDOM = oEditor.FCK.EditorDocument ;
|
||||
|
||||
var oActiveEl = oEditor.FCKSelection.GetSelectedElement() ;
|
||||
|
||||
window.onload = function()
|
||||
{
|
||||
// First of all, translate the dialog box texts
|
||||
oEditor.FCKLanguageManager.TranslatePage(document) ;
|
||||
|
||||
if ( oActiveEl && oActiveEl.tagName == 'INPUT' && ( oActiveEl.type == 'text' || oActiveEl.type == 'password' ) )
|
||||
{
|
||||
GetE('txtName').value = oActiveEl.name ;
|
||||
GetE('txtValue').value = oActiveEl.value ;
|
||||
GetE('txtSize').value = GetAttribute( oActiveEl, 'size' ) ;
|
||||
GetE('txtMax').value = GetAttribute( oActiveEl, 'maxLength' ) ;
|
||||
GetE('txtType').value = oActiveEl.type ;
|
||||
|
||||
GetE('txtType').disabled = true ;
|
||||
}
|
||||
else
|
||||
oActiveEl = null ;
|
||||
|
||||
window.parent.SetOkButton( true ) ;
|
||||
}
|
||||
|
||||
function Ok()
|
||||
{
|
||||
if ( isNaN( GetE('txtMax').value ) || GetE('txtMax').value < 0 )
|
||||
{
|
||||
alert( "Maximum characters must be a positive number." ) ;
|
||||
GetE('txtMax').focus() ;
|
||||
return false ;
|
||||
}
|
||||
else if( isNaN( GetE('txtSize').value ) || GetE('txtSize').value < 0 )
|
||||
{
|
||||
alert( "Width must be a positive number." ) ;
|
||||
GetE('txtSize').focus() ;
|
||||
return false ;
|
||||
}
|
||||
|
||||
if ( !oActiveEl )
|
||||
{
|
||||
oActiveEl = oEditor.FCK.EditorDocument.createElement( 'INPUT' ) ;
|
||||
oActiveEl.type = GetE('txtType').value ;
|
||||
oActiveEl = oEditor.FCK.InsertElementAndGetIt( oActiveEl ) ;
|
||||
}
|
||||
|
||||
oActiveEl.name = GetE('txtName').value ;
|
||||
SetAttribute( oActiveEl, 'value' , GetE('txtValue').value ) ;
|
||||
SetAttribute( oActiveEl, 'size' , GetE('txtSize').value ) ;
|
||||
SetAttribute( oActiveEl, 'maxlength', GetE('txtMax').value ) ;
|
||||
|
||||
return true ;
|
||||
}
|
||||
|
||||
</script>
|
||||
</head>
|
||||
<body style="overflow: hidden">
|
||||
<table width="100%" style="height: 100%">
|
||||
<tr>
|
||||
<td align="center">
|
||||
<table cellspacing="0" cellpadding="0" border="0">
|
||||
<tr>
|
||||
<td>
|
||||
<span fcklang="DlgTextName">Name</span><br />
|
||||
<input id="txtName" type="text" size="20" />
|
||||
</td>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
<span fcklang="DlgTextValue">Value</span><br />
|
||||
<input id="txtValue" type="text" size="25" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<span fcklang="DlgTextCharWidth">Character Width</span><br />
|
||||
<input id="txtSize" type="text" size="5" />
|
||||
</td>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
<span fcklang="DlgTextMaxChars">Maximum Characters</span><br />
|
||||
<input id="txtMax" type="text" size="5" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<span fcklang="DlgTextType">Type</span><br />
|
||||
<select id="txtType">
|
||||
<option value="text" selected="selected" fcklang="DlgTextTypeText">Text</option>
|
||||
<option value="password" fcklang="DlgTextTypePass">Password</option>
|
||||
</select>
|
||||
</td>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
63
admin/FCKeditor/editor/dialog/fck_universalkey.html
Normal file
@ -0,0 +1,63 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
|
||||
<!--
|
||||
* FCKeditor - The text editor for internet
|
||||
* Copyright (C) 2003-2006 Frederico Caldeira Knabben
|
||||
*
|
||||
* Licensed under the terms of the GNU Lesser General Public License:
|
||||
* http://www.opensource.org/licenses/lgpl-license.php
|
||||
*
|
||||
* For further information visit:
|
||||
* http://www.fckeditor.net/
|
||||
*
|
||||
* "Support Open Source software. What about a donation today?"
|
||||
*
|
||||
* File Name: fck_universalkey.html
|
||||
* Unicode Keyboard dialog window.
|
||||
*
|
||||
* File Authors:
|
||||
* Abdul-Aziz Al-Oraij (top7up@hotmail.com)
|
||||
* Michel Staelens
|
||||
* Bernadette Cierzniak
|
||||
* Frederico Caldeira Knabben (fredck@fckeditor.net)
|
||||
-->
|
||||
<html>
|
||||
<head>
|
||||
<title>Universal Keyboard</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta content="noindex, nofollow" name="robots">
|
||||
<link rel="stylesheet" type="text/css" href="fck_universalkey/fck_universalkey.css" />
|
||||
<script type="text/javascript">
|
||||
|
||||
var oEditor = window.parent.InnerDialogLoaded() ;
|
||||
|
||||
window.onload = function()
|
||||
{
|
||||
document.body.style.padding = '0px' ;
|
||||
|
||||
// First of all, translate the dialog box texts
|
||||
oEditor.FCKLanguageManager.TranslatePage(document) ;
|
||||
|
||||
window.parent.SetOkButton( true ) ;
|
||||
window.parent.SetAutoSize( true ) ;
|
||||
}
|
||||
|
||||
function Ok()
|
||||
{
|
||||
var oArea = document.getElementById( 'uni_area' ) ;
|
||||
|
||||
if ( oArea.value.length > 0 )
|
||||
oEditor.FCK.InsertHtml( oArea.value ) ;
|
||||
|
||||
return true ;
|
||||
}
|
||||
|
||||
</script>
|
||||
</head>
|
||||
<body style="OVERFLOW: hidden" scroll="no">
|
||||
<textarea id="uni_area" cols="40" rows="4" style="width:100%;height:60px;"></textarea>
|
||||
<script type="text/javascript" src="fck_universalkey/data.js"></script>
|
||||
<script type="text/javascript" src="fck_universalkey/diacritic.js"></script>
|
||||
<script type="text/javascript" src="fck_universalkey/dialogue.js"></script>
|
||||
<script type="text/javascript" src="fck_universalkey/multihexa.js"></script>
|
||||
</body>
|
||||
</html>
|
BIN
admin/FCKeditor/editor/dialog/fck_universalkey/00.gif
Normal file
After Width: | Height: | Size: 43 B |
73
admin/FCKeditor/editor/dialog/fck_universalkey/data.js
Normal file
@ -0,0 +1,73 @@
|
||||
/*
|
||||
* FCKeditor - The text editor for internet
|
||||
* Copyright (C) 2003-2006 Frederico Caldeira Knabben
|
||||
*
|
||||
* Licensed under the terms of the GNU Lesser General Public License:
|
||||
* http://www.opensource.org/licenses/lgpl-license.php
|
||||
*
|
||||
* For further information visit:
|
||||
* http://www.fckeditor.net/
|
||||
*
|
||||
* "Support Open Source software. What about a donation today?"
|
||||
*
|
||||
* File Name: data.js
|
||||
* Scripts for the fck_universalkey.html page.
|
||||
* Definition des 104 caracteres en hexa unicode.
|
||||
*
|
||||
* File Authors:
|
||||
* Michel Staelens (michel.staelens@wanadoo.fr)
|
||||
* Abdul-Aziz Al-Oraij (top7up@hotmail.com)
|
||||
* Bo Brandt (bbr@dynamicweb.dk)
|
||||
*/
|
||||
|
||||
var Maj = new Array() ;
|
||||
var Min = new Array() ;
|
||||
|
||||
Maj["Arabic"] ="0651|0021|0040|0023|0024|0025|005E|0026|002A|0029|0028|005F|002B|064E|064B|064F|064C|0625|0625|2018|00F7|00D7|061B|003C|003E|0650|064D|005D|005B|0623|0623|0640|060C|002F|003A|0022|007E|0652|007D|007B|0622|0622|2019|002C|002E|061F|007C|0020|0020|0020|0020|0020" ;
|
||||
Min["Arabic"] ="0630|0031|0032|0033|0034|0035|0036|0037|0038|0039|0030|002D|003D|0636|0635|062B|0642|0641|063A|0639|0647|062E|062D|062C|062F|0634|0633|064A|0628|0644|0627|062A|0646|0645|0643|0637|0626|0621|0624|0631|0644|0627|0649|0629|0648|0632|0638|005C|0020|0020|0020|0020" ;
|
||||
Maj["Belarusian (C)"] ="0401|0021|0022|2116|003B|0025|003A|003F|002A|0028|0029|005F|002B|0419|0426|0423|041A|0415|041D|0413|0428|040E|0417|0425|0027|0424|042B|0412|0410|041F|0420|041E|041B|0414|0416|042D|042F|0427|0421|041C|0406|0422|042C|0411|042E|002C|0020|0020|0020|0020|0020|0020" ;
|
||||
Min["Belarusian (C)"] ="0451|0031|0032|0033|0034|0035|0036|0037|0038|0039|0030|002D|003D|0439|0446|0443|043A|0435|043D|0433|0448|045E|0437|0445|0027|0444|044B|0432|0430|043F|0440|043E|043B|0434|0436|044D|044F|0447|0441|043C|0456|0442|044C|0431|044E|002E|0020|0020|0020|0020|0020|0020" ;
|
||||
Maj["Bulgarian (C)"] ="007E|0021|003F|002B|0022|0025|003D|003A|002F|005F|2116|0406|0056|044B|0423|0415|0418|0428|0429|041A|0421|0414|0417|0426|00A7|042C|042F|0410|041E|0416|0413|0422|041D|0412|041C|0427|042E|0419|042A|042D|0424|0425|041F|0420|041B|0411|0029|0020|0020|0020|0020|0020" ;
|
||||
Min["Bulgarian (C)"] ="0060|0031|0032|0033|0034|0035|0036|0037|0038|0039|0030|002D|002E|002C|0443|0435|0438|0448|0449|043A|0441|0434|0437|0446|003B|044C|044F|0430|043E|0436|0433|0442|043D|0432|043C|0447|044E|0439|044A|044D|0444|0445|043F|0440|043B|0431|0028|0020|0020|0020|0020|0020" ;
|
||||
Maj["Croatian (L)"] ="00B8|0021|0022|0023|0024|0025|0026|002F|0028|0029|003D|003F|00A8|0051|0057|0045|0052|0054|005A|0055|0049|004F|0050|0160|0110|0041|0053|0044|0046|0047|0048|004A|004B|004C|010C|0106|0059|0058|0043|0056|0042|004E|004D|017D|003B|003A|003C|003E|005F|002D|002A|002B" ;
|
||||
Min["Croatian (L)"] ="00B8|0031|0032|0033|0034|0035|0036|0037|0038|0039|0030|0027|00A8|0071|0077|0065|0072|0074|007A|0075|0069|006F|0070|0161|0111|0061|0073|0064|0066|0067|0068|006A|006B|006C|010D|0107|0079|0078|0063|0076|0062|006E|006D|017E|002C|002E|003C|003E|005F|002D|002A|002B" ;
|
||||
Maj["Czech (L)"] ="00B0|0031|0032|0033|0034|0035|0036|0037|0038|0039|0030|0025|02C7|0051|0057|0045|0052|0054|005A|0055|0049|004F|0050|002F|0028|0041|0053|0044|0046|0047|0048|004A|004B|004C|0022|0027|0059|0058|0043|0056|0042|004E|004D|003F|003A|005F|005B|007B|0021|0020|0148|010F" ;
|
||||
Min["Czech (L)"] ="003B|002B|011B|0161|010D|0159|017E|00FD|00E1|00ED|00E9|003D|00B4|0071|0077|0065|0072|0074|007A|0075|0069|006F|0070|00FA|0029|0061|0073|0064|0066|0067|0068|006A|006B|006C|016F|00A7|0079|0078|0063|0076|0062|006E|006D|002C|002E|002D|005D|007D|00A8|0040|00F3|0165" ;
|
||||
Maj["Danish (L)"] ="00A7|0021|0022|0023|00A4|0025|0026|002F|0028|0029|003D|003F|0060|0051|0057|0045|0052|0054|0059|0055|0049|004F|0050|00C5|005E|0041|0053|0044|0046|0047|0048|004A|004B|004C|00C6|00D8|003E|005A|0058|0043|0056|0042|004E|004D|003B|003A|002A|005F|007B|007D|005C|007E" ;
|
||||
Min["Danish (L)"] ="00BD|0031|0032|0033|0034|0035|0036|0037|0038|0039|0030|002B|00B4|0071|0077|0065|0072|0074|0079|0075|0069|006F|0070|00E5|00A8|0061|0073|0064|0066|0067|0068|006A|006B|006C|00E6|00F8|003C|007A|0078|0063|0076|0062|006E|006D|002C|002E|0027|002D|005B|005D|007C|0040" ;
|
||||
Maj["Diacritical (L)"] ="0060|00B4|005E|00A8|007E|00B0|00B7|00B8|00AF|02D9|02DB|02C7|02D8|0051|0057|0045|0052|0054|005A|0055|0049|004F|0050|00C6|02DD|0041|0053|0044|0046|0047|0048|004A|004B|004C|0141|0152|0059|0058|0043|0056|0042|004E|004D|01A0|01AF|00D8|0126|0110|0132|00DE|00D0|00DF" ;
|
||||
Min["Diacritical (L)"] ="0060|00B4|005E|00A8|007E|00B0|00B7|00B8|00AF|02D9|02DB|02C7|02D8|0071|0077|0065|0072|0074|007A|0075|0069|006F|0070|00E6|02DD|0061|0073|0064|0066|0067|0068|006A|006B|006C|0142|0153|0079|0078|0063|0076|0062|006E|006D|01A1|01B0|00F8|0127|0111|0133|00FE|00F0|00DF" ;
|
||||
Maj["Finnish (L)"] ="00A7|0021|0022|0023|00A4|0025|0026|002F|0028|0029|003D|003F|0060|0051|0057|0045|0052|0054|0059|0055|0049|004F|0050|00C5|005E|0041|0053|0044|0046|0047|0048|004A|004B|004C|00D6|00C4|003E|005A|0058|0043|0056|0042|004E|004D|003B|003A|002A|005F|007B|007D|005C|007E" ;
|
||||
Min["Finnish (L)"] ="00BD|0031|0032|0033|0034|0035|0036|0037|0038|0039|0030|002B|00B4|0071|0077|0065|0072|0074|0079|0075|0069|006F|0070|00E5|00A8|0061|0073|0064|0066|0067|0068|006A|006B|006C|00F6|00E4|003C|007A|0078|0063|0076|0062|006E|006D|002C|002E|0027|002D|005B|005D|007C|0040" ;
|
||||
Maj["French (L)"] ="0031|0032|0033|0034|0035|0036|0037|0038|0039|0030|00B0|002B|0023|0041|005A|0045|0052|0054|0059|0055|0049|004F|0050|00A8|0025|0051|0053|0044|0046|0047|0048|004A|004B|004C|004D|00B5|0057|0058|0043|0056|0042|004E|003F|002E|002F|00A7|003C|005B|007B|00A3|007E|0020" ;
|
||||
Min["French (L)"] ="0026|00E9|0022|0027|0028|002D|00E8|005F|00E7|00E0|0029|003D|0040|0061|007A|0065|0072|0074|0079|0075|0069|006F|0070|005E|00F9|0071|0073|0064|0066|0067|0068|006A|006B|006C|006D|002A|0077|0078|0063|0076|0062|006E|002C|003B|003A|0021|003E|005D|007D|0024|007E|0020" ;
|
||||
Maj["Greek"] ="007E|0021|0040|0023|0024|0025|0390|0026|03B0|0028|0029|005F|002B|003A|03A3|0395|03A1|03A4|03A5|0398|0399|039F|03A0|0386|038F|0391|03A3|0394|03A6|0393|0397|039E|039A|039B|038C|0022|0396|03A7|03A8|03A9|0392|039D|039C|003C|003E|003F|0388|0389|038A|03AA|03AB|038E" ;
|
||||
Min["Greek"] ="0060|0031|0032|0033|0034|0035|0036|0037|0038|0039|0030|002D|003D|003B|03C2|03B5|03C1|03C4|03C5|03B8|03B9|03BF|03C0|03AC|03CE|03B1|03C3|03B4|03C6|03B3|03B7|03BE|03BA|03BB|03CC|0027|03B6|03C7|03C8|03C9|03B2|03BD|03BC|002C|002E|002F|03AD|03AE|03AF|03CA|03CB|03CD" ;
|
||||
Maj["Hebrew"] ="007E|0021|0040|0023|0024|0025|005E|0026|002A|0028|0029|005F|002B|0051|0057|0045|0052|0054|0059|0055|0049|004F|0050|007B|007D|0041|0053|0044|0046|0047|0048|004A|004B|004C|003A|0022|005A|0058|0043|0056|0042|004E|004D|003C|003E|003F|0020|0020|0020|0020|0020|0020" ;
|
||||
Min["Hebrew"] ="0060|0031|0032|0033|0034|0035|0036|0037|0038|0039|0030|002D|003D|002F|0027|05E7|05E8|05D0|05D8|05D5|05DF|05DD|05E4|005B|005D|05E9|05D3|05D2|05DB|05E2|05D9|05D7|05DC|05DA|05E3|002C|05D6|05E1|05D1|05D4|05E0|05DE|05E6|05EA|05E5|002E|0020|0020|0020|0020|0020|0020" ;
|
||||
Maj["Hungarian (L)"] ="00A7|0027|0022|002B|0021|0025|002F|003D|0028|0029|00ED|00DC|00D3|0051|0057|0045|0052|0054|005A|0055|0049|004F|0050|0150|00DA|0041|0053|0044|0046|0047|0048|004A|004B|004C|00C9|00C1|0170|00CD|0059|0058|0043|0056|0042|004E|004D|003F|002E|003A|002D|005F|007B|007D" ;
|
||||
Min["Hungarian (L)"] ="0030|0031|0032|0033|0034|0035|0036|0037|0038|0039|00F6|00FC|00F3|0071|0077|0065|0072|0074|007A|0075|0069|006F|0070|0151|00FA|0061|0073|0064|0066|0067|0068|006A|006B|006C|00E9|00E1|0171|00ED|0079|0078|0063|0076|0062|006E|006D|002C|002E|003A|002D|005F|007B|007D" ;
|
||||
Maj["Macedonian (C)"] ="007E|0021|201E|201C|2019|0025|2018|0026|002A|0028|0029|005F|002B|0409|040A|0415|0420|0422|0405|0423|0418|041E|041F|0428|0403|0410|0421|0414|0424|0413|0425|0408|041A|041B|0427|040C|0401|0417|040F|0426|0412|0411|041D|041C|0416|003B|003A|003F|002A|005F|007B|007D" ;
|
||||
Min["Macedonian (C)"] ="0060|0031|0032|0033|0034|0035|0036|0037|0038|0039|0030|002D|003D|0459|045A|0435|0440|0442|0455|0443|0438|043E|043F|0448|0453|0430|0441|0434|0444|0433|0445|0458|043A|043B|0447|045C|0451|0437|045F|0446|0432|0431|043D|043C|0436|002C|002E|002F|0027|002D|005B|005D" ;
|
||||
Maj["Norwegian (L)"] ="00A7|0021|0022|0023|00A4|0025|0026|002F|0028|0029|003D|003F|0060|0051|0057|0045|0052|0054|0059|0055|0049|004F|0050|00C5|005E|0041|0053|0044|0046|0047|0048|004A|004B|00D8|00C6|00C4|003E|005A|0058|0043|0056|0042|004E|004D|003B|003A|002A|005F|007B|007D|005C|007E" ;
|
||||
Min["Norwegian (L)"] ="00BD|0031|0032|0033|0034|0035|0036|0037|0038|0039|0030|002B|00B4|0071|0077|0065|0072|0074|0079|0075|0069|006F|0070|00E5|00A8|0061|0073|0064|0066|0067|0068|006A|006B|00F8|00E6|00E4|003C|007A|0078|0063|0076|0062|006E|006D|002C|002E|0027|002D|005B|005D|007C|0040" ;
|
||||
Maj["Persian"] ="200D|0021|066C|066B|FDFC|066A|00D7|060C|002A|0029|0028|0640|002B|0652|064C|064D|064B|064F|0650|064E|0651|005D|005B|007D|007B|0624|0626|064A|0625|0623|0622|0629|00BB|00AB|003A|061B|0643|0020|0698|0670|200C|0654|0621|003E|003C|061F|007C|0020|0020|0020|0020|0020" ;
|
||||
Min["Persian"] ="200D|06F1|06F2|06F3|06F4|06F5|06F6|06F7|06F8|06F9|06F0|002D|003D|0636|0635|062B|0642|0641|063A|0639|0647|062E|062D|062C|0686|0634|0633|06CC|0628|0644|0627|062A|0646|0645|06A9|06AF|0638|0637|0632|0631|0630|062F|067E|0648|002E|002F|005C|0020|0020|0020|0020|0020" ;
|
||||
Maj["Polish (L)"] ="002A|0021|0022|0023|00A4|0025|0026|002F|0028|0029|003D|003F|017A|0051|0057|0045|0052|0054|005A|0055|0049|004F|0050|0144|0107|0041|0053|0044|0046|0047|0048|004A|004B|004C|0141|0119|0059|0058|0043|0056|0042|004E|004D|003B|003A|005F|003C|005B|007B|02D9|00B4|02DB" ;
|
||||
Min["Polish (L)"] ="0027|0031|0032|0033|0034|0035|0036|0037|0038|0039|0030|002B|00F3|0071|0077|0065|0072|0074|007A|0075|0069|006F|0070|017C|015B|0061|0073|0064|0066|0067|0068|006A|006B|006C|0142|0105|0079|0078|0063|0076|0062|006E|006D|002C|002E|002D|003E|005D|007D|02D9|00B4|02DB" ;
|
||||
Maj["Portuguese (L)"] ="007C|0021|0022|0023|0024|0025|0026|002F|0028|0029|003D|003F|00BB|0051|0057|0045|0052|0054|0059|0055|0049|004F|0050|002A|0060|0041|0053|0044|0046|0047|0048|004A|004B|004C|00C7|00AA|003E|005A|0058|0043|0056|0042|004E|004D|003B|003A|005E|007B|007D|00A7|20AC|005F" ;
|
||||
Min["Portuguese (L)"] ="005C|0031|0032|0033|0034|0035|0036|0037|0038|0039|0030|0027|00AB|0071|0077|0065|0072|0074|0079|0075|0069|006F|0070|002B|00B4|0061|0073|0064|0066|0067|0068|006A|006B|006C|00E7|00BA|003C|007A|0078|0063|0076|0062|006E|006D|002C|002E|007E|005B|005D|00A8|0040|002D" ;
|
||||
Maj["Russian (C)"] ="0401|0021|0040|0023|2116|0025|005E|0026|002A|0028|0029|005F|002B|0419|0426|0423|041A|0415|041D|0413|0428|0429|0417|0425|042A|0424|042B|0412|0410|041F|0420|041E|041B|0414|0416|042D|042F|0427|0421|041C|0418|0422|042C|0411|042E|003E|002E|003A|0022|005B|005D|003F" ;
|
||||
Min["Russian (C)"] ="0451|0031|0032|0033|0034|0035|0036|0037|0038|0039|0030|002D|003D|0439|0446|0443|043A|0435|043D|0433|0448|0449|0437|0445|044A|0444|044B|0432|0430|043F|0440|043E|043B|0434|0436|044D|044F|0447|0441|043C|0438|0442|044C|0431|044E|003C|002C|003B|0027|007B|007D|002F" ;
|
||||
Maj["Serbian (C)"] ="007E|0021|0022|0023|0024|0025|0026|002F|0028|0029|003D|003F|002A|0409|040A|0415|0420|0422|0417|0423|0418|041E|041F|0428|0402|0410|0421|0414|0424|0413|0425|0408|041A|041B|0427|040B|003E|0405|040F|0426|0412|0411|041D|041C|0416|003A|005F|002E|003A|0022|005B|005D" ;
|
||||
Min["Serbian (C)"] ="0060|0031|0032|0033|0034|0035|0036|0037|0038|0039|0030|0027|002B|0459|045A|0435|0440|0442|0437|0443|0438|043E|043F|0448|0452|0430|0441|0434|0444|0433|0445|0458|043A|043B|0447|045B|003C|0455|045F|0446|0432|0431|043D|043C|0436|002E|002D|002C|003B|0027|007B|007D" ;
|
||||
Maj["Serbian (L)"] ="007E|0021|0022|0023|0024|0025|0026|002F|0028|0029|003D|003F|002A|0051|0057|0045|0052|0054|005A|0055|0049|004F|0050|0160|0110|0041|0053|0044|0046|0047|0048|004A|004B|004C|010C|0106|003E|0059|0058|0043|0056|0042|004E|004D|017D|003A|005F|002E|003A|0022|005B|005D" ;
|
||||
Min["Serbian (L)"] ="201A|0031|0032|0033|0034|0035|0036|0037|0038|0039|0030|0027|002B|0071|0077|0065|0072|0074|007A|0075|0069|006F|0070|0161|0111|0061|0073|0064|0066|0067|0068|006A|006B|006C|010D|0107|003C|0079|0078|0063|0076|0062|006E|006D|017E|002E|002D|002C|003B|0027|007B|007D" ;
|
||||
Maj["Slovak (L)"] ="00B0|0031|0032|0033|0034|0035|0036|0037|0038|0039|0030|0025|02C7|0051|0057|0045|0052|0054|005A|0055|0049|004F|0050|002F|0028|0041|0053|0044|0046|0047|0048|004A|004B|004C|0022|0021|0059|0058|0043|0056|0042|004E|004D|003F|003A|005F|003C|005B|010F|0029|002A|0020" ;
|
||||
Min["Slovak (L)"] ="003B|002B|013E|0161|010D|0165|017E|00FD|00E1|00ED|00E9|003D|00B4|0071|0077|0065|0072|0074|007A|0075|0069|006F|0070|00FA|00E4|0061|0073|0064|0066|0067|0068|006A|006B|006C|00F4|00A7|0079|0078|0063|0076|0062|006E|006D|002C|002E|002D|003E|005D|00F3|0148|0026|0020" ;
|
||||
Maj["Spanish (L)"] ="00AA|0021|0022|00B7|0024|0025|0026|002F|0028|0029|003D|003F|00BF|0051|0057|0045|0052|0054|0059|0055|0049|004F|0050|005E|00A8|0041|0053|0044|0046|0047|0048|004A|004B|004C|00D1|00C7|005A|0058|0043|0056|0042|004E|004D|003B|003A|005F|003E|007C|0040|0023|007E|002A" ;
|
||||
Min["Spanish (L)"] ="00BA|0031|0032|0033|0034|0035|0036|0037|0038|0039|0030|0027|00A1|0071|0077|0065|0072|0074|0079|0075|0069|006F|0070|0060|00B4|0061|0073|0064|0066|0067|0068|006A|006B|006C|00F1|00E7|007A|0078|0063|0076|0062|006E|006D|002C|002E|002D|003C|005C|0040|0023|007E|002B" ;
|
||||
Maj["Ukrainian (C)"] ="0401|0021|0040|0023|2116|0025|005E|0026|002A|0028|0029|005F|002B|0419|0426|0423|041A|0415|041D|0413|0428|0429|0417|0425|0407|0424|0406|0412|0410|041F|0420|041E|041B|0414|0416|0404|0490|042F|0427|0421|041C|0418|0422|042C|0411|042E|002E|003A|0022|003C|003E|003F" ;
|
||||
Min["Ukrainian (C)"] ="0451|0031|0032|0033|0034|0035|0036|0037|0038|0039|0030|002D|003D|0439|0446|0443|043A|0435|043D|0433|0448|0449|0437|0445|0457|0444|0456|0432|0430|043F|0440|043E|043B|0434|0436|0454|0491|044F|0447|0441|043C|0438|0442|044C|0431|044E|002C|003B|0027|007B|007D|002F" ;
|
||||
Maj["Vietnamese (L)"] ="007E|0021|0040|0023|0024|0025|005E|0026|002A|0028|0029|005F|002B|0051|0057|0045|0052|0054|0059|0055|0049|004F|0050|01AF|01A0|0041|0053|0044|0046|0047|0048|004A|004B|004C|0102|00C2|005A|0058|0043|0056|0042|004E|004D|00CA|00D4|0110|003C|003E|003F|007D|003A|0022" ;
|
||||
Min["Vietnamese (L)"] ="20AB|0031|0032|0033|0034|0035|0036|0037|0038|0039|0030|002D|003D|0071|0077|0065|0072|0074|0079|0075|0069|006F|0070|01B0|01A1|0061|0073|0064|0066|0067|0068|006A|006B|006C|0103|00E2|007A|0078|0063|0076|0062|006E|006D|00EA|00F4|0111|002C|002E|002F|007B|003B|0027" ;
|
65
admin/FCKeditor/editor/dialog/fck_universalkey/diacritic.js
Normal file
@ -0,0 +1,65 @@
|
||||
/*
|
||||
* FCKeditor - The text editor for internet
|
||||
* Copyright (C) 2003-2006 Frederico Caldeira Knabben
|
||||
*
|
||||
* Licensed under the terms of the GNU Lesser General Public License:
|
||||
* http://www.opensource.org/licenses/lgpl-license.php
|
||||
*
|
||||
* For further information visit:
|
||||
* http://www.fckeditor.net/
|
||||
*
|
||||
* "Support Open Source software. What about a donation today?"
|
||||
*
|
||||
* File Name: diacritic.js
|
||||
* Scripts for the fck_universalkey.html page.
|
||||
*
|
||||
* File Authors:
|
||||
* Michel Staelens (michel.staelens@wanadoo.fr)
|
||||
* Abdul-Aziz Al-Oraij (top7up@hotmail.com)
|
||||
*/
|
||||
|
||||
var dia = new Array()
|
||||
|
||||
dia["0060"]=new Array();dia["00B4"]=new Array();dia["005E"]=new Array();dia["00A8"]=new Array();dia["007E"]=new Array();dia["00B0"]=new Array();dia["00B7"]=new Array();dia["00B8"]=new Array();dia["00AF"]=new Array();dia["02D9"]=new Array();dia["02DB"]=new Array();dia["02C7"]=new Array();dia["02D8"]=new Array();dia["02DD"]=new Array();dia["031B"]=new Array();
|
||||
dia["0060"]["0061"]="00E0";dia["00B4"]["0061"]="00E1";dia["005E"]["0061"]="00E2";dia["00A8"]["0061"]="00E4";dia["007E"]["0061"]="00E3";dia["00B0"]["0061"]="00E5";dia["00AF"]["0061"]="0101";dia["02DB"]["0061"]="0105";dia["02D8"]["0061"]="0103";
|
||||
dia["00B4"]["0063"]="0107";dia["005E"]["0063"]="0109";dia["00B8"]["0063"]="00E7";dia["02D9"]["0063"]="010B";dia["02C7"]["0063"]="010D";
|
||||
dia["02C7"]["0064"]="010F";
|
||||
dia["0060"]["0065"]="00E8";dia["00B4"]["0065"]="00E9";dia["005E"]["0065"]="00EA";dia["00A8"]["0065"]="00EB";dia["00AF"]["0065"]="0113";dia["02D9"]["0065"]="0117";dia["02DB"]["0065"]="0119";dia["02C7"]["0065"]="011B";dia["02D8"]["0065"]="0115";
|
||||
dia["005E"]["0067"]="011D";dia["00B8"]["0067"]="0123";dia["02D9"]["0067"]="0121";dia["02D8"]["0067"]="011F";
|
||||
dia["005E"]["0068"]="0125";
|
||||
dia["0060"]["0069"]="00EC";dia["00B4"]["0069"]="00ED";dia["005E"]["0069"]="00EE";dia["00A8"]["0069"]="00EF";dia["007E"]["0069"]="0129";dia["00AF"]["0069"]="012B";dia["02DB"]["0069"]="012F";dia["02D8"]["0069"]="012D";
|
||||
dia["005E"]["006A"]="0135";
|
||||
dia["00B8"]["006B"]="0137";
|
||||
dia["00B4"]["006C"]="013A";dia["00B7"]["006C"]="0140";dia["00B8"]["006C"]="013C";dia["02C7"]["006C"]="013E";
|
||||
dia["00B4"]["006E"]="0144";dia["007E"]["006E"]="00F1";dia["00B8"]["006E"]="0146";dia["02D8"]["006E"]="0148";
|
||||
dia["0060"]["006F"]="00F2";dia["00B4"]["006F"]="00F3";dia["005E"]["006F"]="00F4";dia["00A8"]["006F"]="00F6";dia["007E"]["006F"]="00F5";dia["00AF"]["006F"]="014D";dia["02D8"]["006F"]="014F";dia["02DD"]["006F"]="0151";dia["031B"]["006F"]="01A1";
|
||||
dia["00B4"]["0072"]="0155";dia["00B8"]["0072"]="0157";dia["02C7"]["0072"]="0159";
|
||||
dia["00B4"]["0073"]="015B";dia["005E"]["0073"]="015D";dia["00B8"]["0073"]="015F";dia["02C7"]["0073"]="0161";
|
||||
dia["00B8"]["0074"]="0163";dia["02C7"]["0074"]="0165";
|
||||
dia["0060"]["0075"]="00F9";dia["00B4"]["0075"]="00FA";dia["005E"]["0075"]="00FB";dia["00A8"]["0075"]="00FC";dia["007E"]["0075"]="0169";dia["00B0"]["0075"]="016F";dia["00AF"]["0075"]="016B";dia["02DB"]["0075"]="0173";dia["02D8"]["0075"]="016D";dia["02DD"]["0075"]="0171";dia["031B"]["0075"]="01B0";
|
||||
dia["005E"]["0077"]="0175";
|
||||
dia["00B4"]["0079"]="00FD";dia["005E"]["0079"]="0177";dia["00A8"]["0079"]="00FF";
|
||||
dia["00B4"]["007A"]="017A";dia["02D9"]["007A"]="017C";dia["02C7"]["007A"]="017E";
|
||||
dia["00B4"]["00E6"]="01FD";
|
||||
dia["00B4"]["00F8"]="01FF";
|
||||
dia["0060"]["0041"]="00C0";dia["00B4"]["0041"]="00C1";dia["005E"]["0041"]="00C2";dia["00A8"]["0041"]="00C4";dia["007E"]["0041"]="00C3";dia["00B0"]["0041"]="00C5";dia["00AF"]["0041"]="0100";dia["02DB"]["0041"]="0104";dia["02D8"]["0041"]="0102";
|
||||
dia["00B4"]["0043"]="0106";dia["005E"]["0043"]="0108";dia["00B8"]["0043"]="00C7";dia["02D9"]["0043"]="010A";dia["02C7"]["0043"]="010C";
|
||||
dia["02C7"]["0044"]="010E";
|
||||
dia["0060"]["0045"]="00C8";dia["00B4"]["0045"]="00C9";dia["005E"]["0045"]="00CA";dia["00A8"]["0045"]="00CB";dia["00AF"]["0045"]="0112";dia["02D9"]["0045"]="0116";dia["02DB"]["0045"]="0118";dia["02C7"]["0045"]="011A";dia["02D8"]["0045"]="0114";
|
||||
dia["005E"]["0047"]="011C";dia["00B8"]["0047"]="0122";dia["02D9"]["0047"]="0120";dia["02D8"]["0047"]="011E";
|
||||
dia["005E"]["0048"]="0124";
|
||||
dia["0060"]["0049"]="00CC";dia["00B4"]["0049"]="00CD";dia["005E"]["0049"]="00CE";dia["00A8"]["0049"]="00CF";dia["007E"]["0049"]="0128";dia["00AF"]["0049"]="012A";dia["02D9"]["0049"]="0130";dia["02DB"]["0049"]="012E";dia["02D8"]["0049"]="012C";
|
||||
dia["005E"]["004A"]="0134";
|
||||
dia["00B8"]["004B"]="0136";
|
||||
dia["00B4"]["004C"]="0139";dia["00B7"]["004C"]="013F";dia["00B8"]["004C"]="013B";dia["02C7"]["004C"]="013D";
|
||||
dia["00B4"]["004E"]="0143";dia["007E"]["004E"]="00D1";dia["00B8"]["004E"]="0145";dia["02D8"]["004E"]="0147";
|
||||
dia["0060"]["004F"]="00D2";dia["00B4"]["004F"]="00D3";dia["005E"]["004F"]="00D4";dia["00A8"]["004F"]="00D6";dia["007E"]["004F"]="00D5";dia["00AF"]["004F"]="014C";dia["02D8"]["004F"]="014E";dia["02DD"]["004F"]="0150";dia["031B"]["004F"]="01A0";
|
||||
dia["00B4"]["0052"]="0154";dia["00B8"]["0052"]="0156";dia["02C7"]["0052"]="0158";
|
||||
dia["00B4"]["0053"]="015A";dia["005E"]["0053"]="015C";dia["00B8"]["0053"]="015E";dia["02C7"]["0053"]="0160";
|
||||
dia["00B8"]["0054"]="0162";dia["02C7"]["0054"]="0164";
|
||||
dia["0060"]["0055"]="00D9";dia["00B4"]["0055"]="00DA";dia["005E"]["0055"]="00DB";dia["00A8"]["0055"]="00DC";dia["007E"]["0055"]="0168";dia["00B0"]["0055"]="016E";dia["00AF"]["0055"]="016A";dia["02DB"]["0055"]="0172";dia["02D8"]["0055"]="016C";dia["02DD"]["0055"]="0170";dia["031B"]["0055"]="01AF";
|
||||
dia["005E"]["0057"]="0174";
|
||||
dia["00B4"]["0059"]="00DD";dia["005E"]["0059"]="0176";dia["00A8"]["0059"]="0178";
|
||||
dia["00B4"]["005A"]="0179";dia["02D9"]["005A"]="017B";dia["02C7"]["005A"]="017D";
|
||||
dia["00B4"]["00C6"]="01FC";
|
||||
dia["00B4"]["00D8"]="01FE";
|
31
admin/FCKeditor/editor/dialog/fck_universalkey/dialogue.js
Normal file
@ -0,0 +1,31 @@
|
||||
/*
|
||||
* FCKeditor - The text editor for internet
|
||||
* Copyright (C) 2003-2006 Frederico Caldeira Knabben
|
||||
*
|
||||
* Licensed under the terms of the GNU Lesser General Public License:
|
||||
* http://www.opensource.org/licenses/lgpl-license.php
|
||||
*
|
||||
* For further information visit:
|
||||
* http://www.fckeditor.net/
|
||||
*
|
||||
* "Support Open Source software. What about a donation today?"
|
||||
*
|
||||
* File Name: dialogue.js
|
||||
* Scripts for the fck_universalkey.html page.
|
||||
*
|
||||
* File Authors:
|
||||
* Michel Staelens (michel.staelens@wanadoo.fr)
|
||||
* Bernadette Cierzniak
|
||||
* Abdul-Aziz Al-Oraij (top7up@hotmail.com)
|
||||
* Frederico Caldeira Knabben (fredck@fckeditor.net)
|
||||
*/
|
||||
|
||||
function afficher(txt)
|
||||
{
|
||||
document.getElementById( 'uni_area' ).value = txt ;
|
||||
}
|
||||
|
||||
function rechercher()
|
||||
{
|
||||
return document.getElementById( 'uni_area' ).value ;
|
||||
}
|
@ -0,0 +1,62 @@
|
||||
/*
|
||||
* FCKeditor - The text editor for internet
|
||||
* Copyright (C) 2003-2006 Frederico Caldeira Knabben
|
||||
*
|
||||
* Licensed under the terms of the GNU Lesser General Public License:
|
||||
* http://www.opensource.org/licenses/lgpl-license.php
|
||||
*
|
||||
* For further information visit:
|
||||
* http://www.fckeditor.net/
|
||||
*
|
||||
* "Support Open Source software. What about a donation today?"
|
||||
*
|
||||
* File Name: fck_universalkey.css
|
||||
* CSS styles for the Universal Keyboard.
|
||||
*
|
||||
* File Authors:
|
||||
* Michel Staelens (michel.staelens@wanadoo.fr)
|
||||
* Bernadette Cierzniak
|
||||
* Abdul-Aziz Al-Oraij (top7up@hotmail.com)
|
||||
*/
|
||||
|
||||
BODY, TEXTAREA, INPUT, TD, SELECT
|
||||
{
|
||||
font-family: Tahoma,verdana,arial,sans-serif;
|
||||
}
|
||||
DIV
|
||||
{
|
||||
position: absolute;
|
||||
}
|
||||
.simple
|
||||
{
|
||||
font-size: 11pt;
|
||||
}
|
||||
.double
|
||||
{
|
||||
font-size: 9pt;
|
||||
}
|
||||
.simpledia
|
||||
{
|
||||
color: red;
|
||||
font-size: 11pt;
|
||||
}
|
||||
.doubledia
|
||||
{
|
||||
color: red;
|
||||
font-size: 9pt;
|
||||
}
|
||||
.action
|
||||
{
|
||||
color: white;
|
||||
font-size: 7pt;
|
||||
}
|
||||
.clavier
|
||||
{
|
||||
color: blue;
|
||||
font-size: 7pt;
|
||||
}
|
||||
.sign
|
||||
{
|
||||
color: gray;
|
||||
font-size: 7pt;
|
||||
}
|
After Width: | Height: | Size: 3.0 KiB |
309
admin/FCKeditor/editor/dialog/fck_universalkey/multihexa.js
Normal file
@ -0,0 +1,309 @@
|
||||
/*
|
||||
* FCKeditor - The text editor for internet
|
||||
* Copyright (C) 2003-2006 Frederico Caldeira Knabben
|
||||
*
|
||||
* Licensed under the terms of the GNU Lesser General Public License:
|
||||
* http://www.opensource.org/licenses/lgpl-license.php
|
||||
*
|
||||
* For further information visit:
|
||||
* http://www.fckeditor.net/
|
||||
*
|
||||
* "Support Open Source software. What about a donation today?"
|
||||
*
|
||||
* File Name: multihexa.js
|
||||
* Scripts for the fck_universalkey.html page.
|
||||
* Definition des 104 caracteres en hexa unicode.
|
||||
*
|
||||
* File Authors:
|
||||
* Michel Staelens (michel.staelens@wanadoo.fr)
|
||||
* Bernadette Cierzniak
|
||||
* Abdul-Aziz Al-Oraij (top7up@hotmail.com)
|
||||
*/
|
||||
|
||||
var caps=0, lock=0, hexchars="0123456789ABCDEF", accent="0000", keydeb=0
|
||||
var key=new Array();j=0;for (i in Maj){key[j]=i;j++}
|
||||
var ns6=((!document.all)&&(document.getElementById))
|
||||
var ie=document.all
|
||||
|
||||
var langue=getCk();
|
||||
if (langue==""){
|
||||
langue=key[keydeb]
|
||||
}
|
||||
CarMaj=Maj[langue].split("|");CarMin=Min[langue].split("|")
|
||||
|
||||
/*unikey*/
|
||||
var posUniKeyLeft=0, posUniKeyTop=0
|
||||
if (ns6){posUniKeyLeft=0;posUniKeyTop=60}
|
||||
else if (ie){posUniKeyLeft=0;posUniKeyTop=60}
|
||||
tracer("fond",posUniKeyLeft,posUniKeyTop,'<img src="fck_universalkey/keyboard_layout.gif" width=404 height=152 border="0"><br />',"sign")
|
||||
/*touches*/
|
||||
var posX=new Array(0,28,56,84,112,140,168,196,224,252,280,308,336,42,70,98,126,154,182,210,238,266,294,322,350,50,78,106,134,162,190,218,246,274,302,330,64,92,120,148,176,204,232,260,288,316,28,56,84,294,322,350)
|
||||
var posY=new Array(14,14,14,14,14,14,14,14,14,14,14,14,14,42,42,42,42,42,42,42,42,42,42,42,42,70,70,70,70,70,70,70,70,70,70,70,98,98,98,98,98,98,98,98,98,98,126,126,126,126,126,126)
|
||||
var nbTouches=52
|
||||
for (i=0;i<nbTouches;i++){
|
||||
CarMaj[i]=((CarMaj[i]!="0000")?(fromhexby4tocar(CarMaj[i])):"")
|
||||
CarMin[i]=((CarMin[i]!="0000")?(fromhexby4tocar(CarMin[i])):"")
|
||||
if (CarMaj[i]==CarMin[i].toUpperCase()){
|
||||
cecar=((lock==0)&&(caps==0)?CarMin[i]:CarMaj[i])
|
||||
tracer("car"+i,posUniKeyLeft+6+posX[i],posUniKeyTop+3+posY[i],cecar,((dia[hexa(cecar)]!=null)?"simpledia":"simple"))
|
||||
tracer("majus"+i,posUniKeyLeft+15+posX[i],posUniKeyTop+1+posY[i]," ","double")
|
||||
tracer("minus"+i,posUniKeyLeft+3+posX[i],posUniKeyTop+9+posY[i]," ","double")
|
||||
}
|
||||
else{
|
||||
tracer("car"+i,posUniKeyLeft+6+posX[i],posUniKeyTop+3+posY[i]," ","simple")
|
||||
cecar=CarMin[i]
|
||||
tracer("minus"+i,posUniKeyLeft+3+posX[i],posUniKeyTop+9+posY[i],cecar,((dia[hexa(cecar)]!=null)?"doubledia":"double"))
|
||||
cecar=CarMaj[i]
|
||||
tracer("majus"+i,posUniKeyLeft+15+posX[i],posUniKeyTop+1+posY[i],cecar,((dia[hexa(cecar)]!=null)?"doubledia":"double"))
|
||||
}
|
||||
}
|
||||
/*touches de fonctions*/
|
||||
var actC1=new Array(0,371,364,0,378,0,358,0,344,0,112,378)
|
||||
var actC2=new Array(0,0,14,42,42,70,70,98,98,126,126,126)
|
||||
var actC3=new Array(32,403,403,39,403,47,403,61,403,25,291,403)
|
||||
var actC4=new Array(11,11,39,67,67,95,95,123,123,151,151,151)
|
||||
var act =new Array(" « KB"," KB » ","Delete","Clear","Back","Caps<br> Lock","Enter","Shift","Shift","<|<","Space",">|>")
|
||||
var effet=new Array("keyscroll(-3)","keyscroll(3)","faire(\"del\")","RAZ()","faire(\"bck\")","bloq()","faire(\"\\n\")","haut()","haut()","faire(\"ar\")","faire(\" \")","faire(\"av\")")
|
||||
var nbActions=12
|
||||
for (i=0;i<nbActions;i++){
|
||||
tracer("act"+i,posUniKeyLeft+1+actC1[i],posUniKeyTop-1+actC2[i],act[i],"action")
|
||||
}
|
||||
/*navigation*/
|
||||
var keyC1=new Array(35,119,203,287)
|
||||
var keyC2=new Array(0,0,0,0)
|
||||
var keyC3=new Array(116,200,284,368)
|
||||
var keyC4=new Array(11,11,11,11)
|
||||
for (i=0;i<4;i++){
|
||||
tracer("key"+i,posUniKeyLeft+5+keyC1[i],posUniKeyTop-1+keyC2[i],key[i],"unikey")
|
||||
}
|
||||
/*zones reactives*/
|
||||
tracer("masque",posUniKeyLeft,posUniKeyTop,'<img src="fck_universalkey/00.gif" width=404 height=152 border="0" usemap="#unikey">')
|
||||
document.write('<map name="unikey">')
|
||||
for (i=0;i<nbTouches;i++){
|
||||
document.write('<area coords="'+posX[i]+','+posY[i]+','+(posX[i]+25)+','+(posY[i]+25)+'" href=# onClick=\'javascript:ecrire('+i+')\'>')
|
||||
}
|
||||
for (i=0;i<nbActions;i++){
|
||||
document.write('<area coords="'+actC1[i]+','+actC2[i]+','+actC3[i]+','+actC4[i]+'" href=# onClick=\'javascript:'+effet[i]+'\'>')
|
||||
}
|
||||
for (i=0;i<4;i++){
|
||||
document.write('<area coords="'+keyC1[i]+','+keyC2[i]+','+keyC3[i]+','+keyC4[i]+'" onclick=\'javascript:charger('+i+')\'>')
|
||||
}
|
||||
document.write('</map>')
|
||||
|
||||
/*fonctions*/
|
||||
function ecrire(i){
|
||||
txt=rechercher()+"|";subtxt=txt.split("|")
|
||||
ceci=(lock==1)?CarMaj[i]:((caps==1)?CarMaj[i]:CarMin[i])
|
||||
if (test(ceci)){subtxt[0]+=cardia(ceci);distinguer(false)}
|
||||
else if(dia[accent]!=null&&dia[hexa(ceci)]!=null){distinguer(false);accent=hexa(ceci);distinguer(true)}
|
||||
else if(dia[accent]!=null){subtxt[0]+=fromhexby4tocar(accent)+ceci;distinguer(false)}
|
||||
else if(dia[hexa(ceci)]!=null){accent=hexa(ceci);distinguer(true)}
|
||||
else {subtxt[0]+=ceci}
|
||||
txt=subtxt[0]+"|"+subtxt[1]
|
||||
afficher(txt)
|
||||
if (caps==1){caps=0;MinusMajus()}
|
||||
}
|
||||
function faire(ceci){
|
||||
txt=rechercher()+"|";subtxt=txt.split("|")
|
||||
l0=subtxt[0].length
|
||||
l1=subtxt[1].length
|
||||
c1=subtxt[0].substring(0,(l0-2))
|
||||
c2=subtxt[0].substring(0,(l0-1))
|
||||
c3=subtxt[1].substring(0,1)
|
||||
c4=subtxt[1].substring(0,2)
|
||||
c5=subtxt[0].substring((l0-2),l0)
|
||||
c6=subtxt[0].substring((l0-1),l0)
|
||||
c7=subtxt[1].substring(1,l1)
|
||||
c8=subtxt[1].substring(2,l1)
|
||||
if(dia[accent]!=null){if(ceci==" "){ceci=fromhexby4tocar(accent)}distinguer(false)}
|
||||
switch (ceci){
|
||||
case("av") :if(escape(c4)!="%0D%0A"){txt=subtxt[0]+c3+"|"+c7}else{txt=subtxt[0]+c4+"|"+c8}break
|
||||
case("ar") :if(escape(c5)!="%0D%0A"){txt=c2+"|"+c6+subtxt[1]}else{txt=c1+"|"+c5+subtxt[1]}break
|
||||
case("bck"):if(escape(c5)!="%0D%0A"){txt=c2+"|"+subtxt[1]}else{txt=c1+"|"+subtxt[1]}break
|
||||
case("del"):if(escape(c4)!="%0D%0A"){txt=subtxt[0]+"|"+c7}else{txt=subtxt[0]+"|"+c8}break
|
||||
default:txt=subtxt[0]+ceci+"|"+subtxt[1];break
|
||||
}
|
||||
afficher(txt)
|
||||
}
|
||||
function RAZ(){txt="";if(dia[accent]!=null){distinguer(false)}afficher(txt)}
|
||||
function haut(){caps=1;MinusMajus()}
|
||||
function bloq(){lock=(lock==1)?0:1;MinusMajus()}
|
||||
|
||||
/*fonctions de traitement du unikey*/
|
||||
function tracer(nom,gauche,haut,ceci,classe){ceci="<span class="+classe+">"+ceci+"</span>";document.write('<div id="'+nom+'" >'+ceci+'</div>');if (ns6){document.getElementById(nom).style.left=gauche+"px";document.getElementById(nom).style.top=haut+"px";}else if (ie){document.all(nom).style.left=gauche;document.all(nom).style.top=haut}}
|
||||
function retracer(nom,ceci,classe){ceci="<span class="+classe+">"+ceci+"</span>";if (ns6){document.getElementById(nom).innerHTML=ceci}else if (ie){doc=document.all(nom);doc.innerHTML=ceci}}
|
||||
function keyscroll(n){
|
||||
keydeb+=n
|
||||
if (keydeb<0){
|
||||
keydeb=0
|
||||
}
|
||||
if (keydeb>key.length-4){
|
||||
keydeb=key.length-4
|
||||
}
|
||||
for (i=keydeb;i<keydeb+4;i++){
|
||||
retracer("key"+(i-keydeb),key[i],"unikey")
|
||||
}
|
||||
if (keydeb==0){
|
||||
retracer("act0"," ","action")
|
||||
}else {
|
||||
retracer("act0",act[0],"action")
|
||||
}
|
||||
if (keydeb==key.length-4){
|
||||
retracer("act1"," ","action")
|
||||
}else {
|
||||
retracer("act1",act[1],"action")
|
||||
}
|
||||
}
|
||||
function charger(i){
|
||||
langue=key[i+keydeb];setCk(langue);accent="0000"
|
||||
CarMaj=Maj[langue].split("|");CarMin=Min[langue].split("|")
|
||||
for (i=0;i<nbTouches;i++){
|
||||
CarMaj[i]=((CarMaj[i]!="0000")?(fromhexby4tocar(CarMaj[i])):"")
|
||||
CarMin[i]=((CarMin[i]!="0000")?(fromhexby4tocar(CarMin[i])):"")
|
||||
if (CarMaj[i]==CarMin[i].toUpperCase()){
|
||||
cecar=((lock==0)&&(caps==0)?CarMin[i]:CarMaj[i])
|
||||
retracer("car"+i,cecar,((dia[hexa(cecar)]!=null)?"simpledia":"simple"))
|
||||
retracer("minus"+i," ")
|
||||
retracer("majus"+i," ")
|
||||
}
|
||||
else{
|
||||
retracer("car"+i," ")
|
||||
cecar=CarMin[i]
|
||||
retracer("minus"+i,cecar,((dia[hexa(cecar)]!=null)?"doubledia":"double"))
|
||||
cecar=CarMaj[i]
|
||||
retracer("majus"+i,cecar,((dia[hexa(cecar)]!=null)?"doubledia":"double"))
|
||||
}
|
||||
}
|
||||
}
|
||||
function distinguer(oui){
|
||||
for (i=0;i<nbTouches;i++){
|
||||
if (CarMaj[i]==CarMin[i].toUpperCase()){
|
||||
cecar=((lock==0)&&(caps==0)?CarMin[i]:CarMaj[i])
|
||||
if(test(cecar)){retracer("car"+i,oui?(cardia(cecar)):cecar,oui?"simpledia":"simple")}
|
||||
}
|
||||
else{
|
||||
cecar=CarMin[i]
|
||||
if(test(cecar)){retracer("minus"+i,oui?(cardia(cecar)):cecar,oui?"doubledia":"double")}
|
||||
cecar=CarMaj[i]
|
||||
if(test(cecar)){retracer("majus"+i,oui?(cardia(cecar)):cecar,oui?"doubledia":"double")}
|
||||
}
|
||||
}
|
||||
if (!oui){accent="0000"}
|
||||
}
|
||||
function MinusMajus(){
|
||||
for (i=0;i<nbTouches;i++){
|
||||
if (CarMaj[i]==CarMin[i].toUpperCase()){
|
||||
cecar=((lock==0)&&(caps==0)?CarMin[i]:CarMaj[i])
|
||||
retracer("car"+i,(test(cecar)?cardia(cecar):cecar),((dia[hexa(cecar)]!=null||test(cecar))?"simpledia":"simple"))
|
||||
}
|
||||
}
|
||||
}
|
||||
function test(cecar){return(dia[accent]!=null&&dia[accent][hexa(cecar)]!=null)}
|
||||
function cardia(cecar){return(fromhexby4tocar(dia[accent][hexa(cecar)]))}
|
||||
function fromhex(inval){out=0;for (a=inval.length-1;a>=0;a--){out+=Math.pow(16,inval.length-a-1)*hexchars.indexOf(inval.charAt(a))}return out}
|
||||
function fromhexby4tocar(ceci){out4=new String();for (l=0;l<ceci.length;l+=4){out4+=String.fromCharCode(fromhex(ceci.substring(l,l+4)))}return out4}
|
||||
function tohex(inval){return hexchars.charAt(inval/16)+hexchars.charAt(inval%16)}
|
||||
function tohex2(inval){return tohex(inval/256)+tohex(inval%256)}
|
||||
function hexa(ceci){out="";for (k=0;k<ceci.length;k++){out+=(tohex2(ceci.charCodeAt(k)))}return out}
|
||||
function getCk(){
|
||||
fromN=document.cookie.indexOf("langue=")+0;
|
||||
if((fromN)!=-1){
|
||||
fromN+=7;
|
||||
toN=document.cookie.indexOf(";",fromN)+0;
|
||||
if(toN==-1){
|
||||
toN=document.cookie.length
|
||||
}
|
||||
return unescape(document.cookie.substring(fromN,toN))
|
||||
}
|
||||
return ""
|
||||
}
|
||||
function setCk(inval){
|
||||
if(inval!=null){
|
||||
exp=new Date();
|
||||
time=365*60*60*24*1000;
|
||||
exp.setTime(exp.getTime()+time);
|
||||
document.cookie=escape("langue")+"="+escape(inval)+"; "+"expires="+exp.toGMTString()
|
||||
}
|
||||
}
|
||||
|
||||
// Arabic Keystroke Translator
|
||||
function arkey(e) {
|
||||
if ((document.layers)|(navigator.userAgent.indexOf("MSIE 4")>-1)|(langue!="Arabic")) return true;
|
||||
|
||||
if (!e) var e = window.event;
|
||||
if (e.keyCode) keyCode = e.keyCode;
|
||||
else if (e.which) keyCode = e.which;
|
||||
var character = String.fromCharCode(keyCode);
|
||||
|
||||
entry = true;
|
||||
cont=e.srcElement || e.currentTarget || e.target;
|
||||
if (keyCode>64 && keyCode<91) {
|
||||
entry=false;
|
||||
source='ش لاؤ ي ث ب ل ا ه ت ن م ة ى خ ح ض ق س ف ع ر ص ء غ ئ ';
|
||||
shsource='ِ لآ} ] ُ [ لأأ ÷ ـ ، / آ × ؛ َ ٌ ٍ لإ { ً ْ إ ~';
|
||||
|
||||
if (e.shiftKey) cont.value += shsource.substr((keyCode-64)*2-2,2);
|
||||
else
|
||||
cont.value += source.substr((keyCode-64)*2-2,2);
|
||||
if (cont.value.substr(cont.value.length-1,1)==' ') cont.value=cont.value.substr(0,cont.value.length-1);
|
||||
}
|
||||
if (e.shiftKey) {
|
||||
if (keyCode==186) {cont.value += ':';entry=false;}
|
||||
if (keyCode==188) {cont.value += ',';entry=false;}
|
||||
if (keyCode==190) {cont.value += '.';entry=false;}
|
||||
if (keyCode==191) {cont.value += '؟';entry=false;}
|
||||
if (keyCode==192) {cont.value += 'ّ';entry=false;}
|
||||
if (keyCode==219) {cont.value += '<';entry=false;}
|
||||
if (keyCode==221) {cont.value += '>';entry=false;}
|
||||
} else {
|
||||
if (keyCode==186||keyCode==59) {cont.value += 'ك';entry=false;}
|
||||
if (keyCode==188) {cont.value += 'و';entry=false;}
|
||||
if (keyCode==190) {cont.value += 'ز';entry=false;}
|
||||
if (keyCode==191) {cont.value += 'ظ';entry=false;}
|
||||
if (keyCode==192) {cont.value += 'ذ';entry=false;}
|
||||
if (keyCode==219) {cont.value += 'ج';entry=false;}
|
||||
if (keyCode==221) {cont.value += 'د';entry=false;}
|
||||
if (keyCode==222) {cont.value += 'ط';entry=false;}
|
||||
}
|
||||
return entry;
|
||||
}
|
||||
function hold_it(e){
|
||||
if ((document.layers)|(navigator.userAgent.indexOf("MSIE 4")>-1)|(langue!="Arabic")) return true;
|
||||
|
||||
var keyCode;
|
||||
if (!e) var e = window.event;
|
||||
if (e.keyCode) keyCode = e.keyCode;
|
||||
else if (e.which) keyCode = e.which;
|
||||
var character = String.fromCharCode(keyCode);
|
||||
switch(keyCode){
|
||||
case 186:
|
||||
case 188:
|
||||
case 190:
|
||||
case 191:
|
||||
case 192:
|
||||
case 219:
|
||||
case 221:
|
||||
case 222:
|
||||
case 116:
|
||||
case 59:
|
||||
case 47:
|
||||
case 46:
|
||||
case 44:
|
||||
case 39:
|
||||
return false;
|
||||
case 92:
|
||||
return true;
|
||||
}
|
||||
if (keyCode<63) return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
var obj = document.getElementById( 'uni_area' );
|
||||
if ( obj && langue=="Arabic"){
|
||||
with (navigator) {
|
||||
if (appName=="Netscape")
|
||||
obj.onkeypress = hold_it;
|
||||
}
|
||||
obj.onkeydown = arkey;
|
||||
}
|
||||
// Arabic Keystroke Translator End
|