Mise jour de fckeditor la version 2.5beta - rinstallation complte car la structure des rpertoires change
@@ -537,7 +537,7 @@ if ($_POST['action'] == "addligne" && $user->rights->propale->creer)
|
|||||||
}
|
}
|
||||||
|
|
||||||
$desc = $prod->description;
|
$desc = $prod->description;
|
||||||
$desc.= $prod->description && $_POST['np_desc'] ? "\n" : "";
|
$desc.= ($prod->description && $_POST['np_desc']) ? "\n" : "";
|
||||||
$desc.= $_POST['np_desc'];
|
$desc.= $_POST['np_desc'];
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ dolibarr_syslog("eee".$conf->fckeditor->dir_output);
|
|||||||
$Config['Enabled'] = true ;
|
$Config['Enabled'] = true ;
|
||||||
|
|
||||||
// Path to user files relative to the document root.
|
// Path to user files relative to the document root.
|
||||||
$Config['UserFilesPath'] = '/viewimage.php?modulepart=fckeditor&file=' ;
|
$Config['UserFilesPath'] = DOL_URL_ROOT.'/viewimage.php?modulepart=fckeditor&file=' ;
|
||||||
|
|
||||||
// Fill the following value it you prefer to specify the absolute path for the
|
// Fill the following value it you prefer to specify the absolute path for the
|
||||||
// user files directory. Usefull if you are using a virtual directory, symbolic
|
// user files directory. Usefull if you are using a virtual directory, symbolic
|
||||||
|
|||||||
@@ -0,0 +1,15 @@
|
|||||||
|
<public:component lightweight="true">
|
||||||
|
|
||||||
|
<script language="javascript">
|
||||||
|
|
||||||
|
function CancelEvent()
|
||||||
|
{
|
||||||
|
return false ;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.onresizestart = CancelEvent ;
|
||||||
|
this.onbeforeeditfocus = CancelEvent ;
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
</public:component>
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
<public:component lightweight="true">
|
||||||
|
|
||||||
|
<public:attach event="oncontentready" onevent="ShowBorders()" />
|
||||||
|
<public:attach event="onpropertychange" onevent="OnPropertyChange()" />
|
||||||
|
|
||||||
|
<script language="javascript">
|
||||||
|
|
||||||
|
var oClassRegex = /\s*FCK__ShowTableBorders/ ;
|
||||||
|
|
||||||
|
function ShowBorders()
|
||||||
|
{
|
||||||
|
if ( this.border == 0 )
|
||||||
|
{
|
||||||
|
if ( !oClassRegex.test( this.className ) )
|
||||||
|
this.className += ' FCK__ShowTableBorders' ;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if ( oClassRegex.test( this.className ) )
|
||||||
|
{
|
||||||
|
this.className = this.className.replace( oClassRegex, '' ) ;
|
||||||
|
if ( this.className.length == 0 )
|
||||||
|
this.removeAttribute( 'className', 0 ) ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function OnPropertyChange()
|
||||||
|
{
|
||||||
|
if ( event.propertyName == 'border' || event.propertyName == 'className' )
|
||||||
|
ShowBorders.call(this) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
</public:component>
|
||||||
91
htdocs/includes/fckeditor/editor/css/fck_editorarea.css
Normal file
@@ -0,0 +1,91 @@
|
|||||||
|
/*
|
||||||
|
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
||||||
|
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
||||||
|
*
|
||||||
|
* == BEGIN LICENSE ==
|
||||||
|
*
|
||||||
|
* Licensed under the terms of any of the following licenses at your
|
||||||
|
* choice:
|
||||||
|
*
|
||||||
|
* - GNU General Public License Version 2 or later (the "GPL")
|
||||||
|
* http://www.gnu.org/licenses/gpl.html
|
||||||
|
*
|
||||||
|
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
||||||
|
* http://www.gnu.org/licenses/lgpl.html
|
||||||
|
*
|
||||||
|
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
||||||
|
* http://www.mozilla.org/MPL/MPL-1.1.html
|
||||||
|
*
|
||||||
|
* == END LICENSE ==
|
||||||
|
*
|
||||||
|
* This is the default CSS file used by the editor area. It defines the
|
||||||
|
* initial font of the editor and background color.
|
||||||
|
*
|
||||||
|
* A user can configure the editor to use another CSS file. Just change
|
||||||
|
* the value of the FCKConfig.EditorAreaCSS key in the configuration
|
||||||
|
* file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
The "body" styles should match your editor web site, mainly regarding
|
||||||
|
background color and font family and size.
|
||||||
|
*/
|
||||||
|
|
||||||
|
body
|
||||||
|
{
|
||||||
|
background-color: #ffffff;
|
||||||
|
padding: 5px 5px 5px 5px;
|
||||||
|
margin: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
body, td
|
||||||
|
{
|
||||||
|
font-family: Arial, Verdana, sans-serif;
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
a[href]
|
||||||
|
{
|
||||||
|
color: -moz-hyperlinktext !important; /* For Firefox... mark as important, otherwise it becomes black */
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
Just uncomment the following block if you want to avoid spaces between
|
||||||
|
paragraphs. Remember to apply the same style in your output front end page.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
p, ul, li
|
||||||
|
{
|
||||||
|
margin-top: 0px;
|
||||||
|
margin-bottom: 0px;
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
The following are some sample styles used in the "Styles" toolbar command.
|
||||||
|
You should instead remove them, and include the styles used by the site
|
||||||
|
you are using the editor in.
|
||||||
|
*/
|
||||||
|
|
||||||
|
.Bold
|
||||||
|
{
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.Title
|
||||||
|
{
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 18px;
|
||||||
|
color: #cc3300;
|
||||||
|
}
|
||||||
|
|
||||||
|
.Code
|
||||||
|
{
|
||||||
|
border: #8b4513 1px solid;
|
||||||
|
padding-right: 5px;
|
||||||
|
padding-left: 5px;
|
||||||
|
color: #000066;
|
||||||
|
font-family: 'Courier New' , Monospace;
|
||||||
|
background-color: #ff9933;
|
||||||
|
}
|
||||||
182
htdocs/includes/fckeditor/editor/css/fck_internal.css
Normal file
@@ -0,0 +1,182 @@
|
|||||||
|
/*
|
||||||
|
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
||||||
|
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
||||||
|
*
|
||||||
|
* == BEGIN LICENSE ==
|
||||||
|
*
|
||||||
|
* Licensed under the terms of any of the following licenses at your
|
||||||
|
* choice:
|
||||||
|
*
|
||||||
|
* - GNU General Public License Version 2 or later (the "GPL")
|
||||||
|
* http://www.gnu.org/licenses/gpl.html
|
||||||
|
*
|
||||||
|
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
||||||
|
* http://www.gnu.org/licenses/lgpl.html
|
||||||
|
*
|
||||||
|
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
||||||
|
* http://www.mozilla.org/MPL/MPL-1.1.html
|
||||||
|
*
|
||||||
|
* == END LICENSE ==
|
||||||
|
*
|
||||||
|
* This CSS Style Sheet defines rules used by the editor for its internal use.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Fix to allow putting the caret at the end of the content in Firefox if
|
||||||
|
clicking below the content. */
|
||||||
|
html
|
||||||
|
{
|
||||||
|
min-height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.FCK__ShowTableBorders, table.FCK__ShowTableBorders td, table.FCK__ShowTableBorders th
|
||||||
|
{
|
||||||
|
border: #d3d3d3 1px solid;
|
||||||
|
}
|
||||||
|
|
||||||
|
form
|
||||||
|
{
|
||||||
|
border: 1px dotted #FF0000;
|
||||||
|
padding: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.FCK__Flash
|
||||||
|
{
|
||||||
|
border: #a9a9a9 1px solid;
|
||||||
|
background-position: center center;
|
||||||
|
background-image: url(images/fck_flashlogo.gif);
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
width: 80px;
|
||||||
|
height: 80px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Empty anchors images */
|
||||||
|
.FCK__Anchor
|
||||||
|
{
|
||||||
|
border: 1px dotted #00F;
|
||||||
|
background-position: center center;
|
||||||
|
background-image: url(images/fck_anchor.gif);
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
width: 16px;
|
||||||
|
height: 15px;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Anchors with content */
|
||||||
|
.FCK__AnchorC
|
||||||
|
{
|
||||||
|
border: 1px dotted #00F;
|
||||||
|
background-position: 1px center;
|
||||||
|
background-image: url(images/fck_anchor.gif);
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
padding-left: 18px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Any anchor for non-IE, if we combine it with the previous rule IE ignores all. */
|
||||||
|
a[name]
|
||||||
|
{
|
||||||
|
border: 1px dotted #00F;
|
||||||
|
background-position: 0 center;
|
||||||
|
background-image: url(images/fck_anchor.gif);
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
padding-left: 18px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.FCK__PageBreak
|
||||||
|
{
|
||||||
|
background-position: center center;
|
||||||
|
background-image: url(images/fck_pagebreak.gif);
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
clear: both;
|
||||||
|
display: block;
|
||||||
|
float: none;
|
||||||
|
width: 100%;
|
||||||
|
border-top: #999999 1px dotted;
|
||||||
|
border-bottom: #999999 1px dotted;
|
||||||
|
border-right: 0px;
|
||||||
|
border-left: 0px;
|
||||||
|
height: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Hidden fields */
|
||||||
|
.FCK__InputHidden
|
||||||
|
{
|
||||||
|
width: 19px;
|
||||||
|
height: 18px;
|
||||||
|
background-image: url(images/fck_hiddenfield.gif);
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
vertical-align: text-bottom;
|
||||||
|
background-position: center center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.FCK__ShowBlocks p,
|
||||||
|
.FCK__ShowBlocks div,
|
||||||
|
.FCK__ShowBlocks pre,
|
||||||
|
.FCK__ShowBlocks address,
|
||||||
|
.FCK__ShowBlocks blockquote,
|
||||||
|
.FCK__ShowBlocks h1,
|
||||||
|
.FCK__ShowBlocks h2,
|
||||||
|
.FCK__ShowBlocks h3,
|
||||||
|
.FCK__ShowBlocks h4,
|
||||||
|
.FCK__ShowBlocks h5,
|
||||||
|
.FCK__ShowBlocks h6
|
||||||
|
{
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
border: 1px dotted gray;
|
||||||
|
padding-top: 8px;
|
||||||
|
padding-left: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.FCK__ShowBlocks p
|
||||||
|
{
|
||||||
|
background-image: url(images/block_p.png);
|
||||||
|
}
|
||||||
|
|
||||||
|
.FCK__ShowBlocks div
|
||||||
|
{
|
||||||
|
background-image: url(images/block_div.png);
|
||||||
|
}
|
||||||
|
|
||||||
|
.FCK__ShowBlocks pre
|
||||||
|
{
|
||||||
|
background-image: url(images/block_pre.png);
|
||||||
|
}
|
||||||
|
|
||||||
|
.FCK__ShowBlocks address
|
||||||
|
{
|
||||||
|
background-image: url(images/block_address.png);
|
||||||
|
}
|
||||||
|
|
||||||
|
.FCK__ShowBlocks blockquote
|
||||||
|
{
|
||||||
|
background-image: url(images/block_blockquote.png);
|
||||||
|
}
|
||||||
|
|
||||||
|
.FCK__ShowBlocks h1
|
||||||
|
{
|
||||||
|
background-image: url(images/block_h1.png);
|
||||||
|
}
|
||||||
|
|
||||||
|
.FCK__ShowBlocks h2
|
||||||
|
{
|
||||||
|
background-image: url(images/block_h2.png);
|
||||||
|
}
|
||||||
|
|
||||||
|
.FCK__ShowBlocks h3
|
||||||
|
{
|
||||||
|
background-image: url(images/block_h3.png);
|
||||||
|
}
|
||||||
|
|
||||||
|
.FCK__ShowBlocks h4
|
||||||
|
{
|
||||||
|
background-image: url(images/block_h4.png);
|
||||||
|
}
|
||||||
|
|
||||||
|
.FCK__ShowBlocks h5
|
||||||
|
{
|
||||||
|
background-image: url(images/block_h5.png);
|
||||||
|
}
|
||||||
|
|
||||||
|
.FCK__ShowBlocks h6
|
||||||
|
{
|
||||||
|
background-image: url(images/block_h6.png);
|
||||||
|
}
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
/*
|
||||||
|
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
||||||
|
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
||||||
|
*
|
||||||
|
* == BEGIN LICENSE ==
|
||||||
|
*
|
||||||
|
* Licensed under the terms of any of the following licenses at your
|
||||||
|
* choice:
|
||||||
|
*
|
||||||
|
* - GNU General Public License Version 2 or later (the "GPL")
|
||||||
|
* http://www.gnu.org/licenses/gpl.html
|
||||||
|
*
|
||||||
|
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
||||||
|
* http://www.gnu.org/licenses/lgpl.html
|
||||||
|
*
|
||||||
|
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
||||||
|
* http://www.mozilla.org/MPL/MPL-1.1.html
|
||||||
|
*
|
||||||
|
* == END LICENSE ==
|
||||||
|
*
|
||||||
|
* This CSS Style Sheet defines the rules to show table borders on Gecko.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* For tables with the "border" attribute set to "0" */
|
||||||
|
table[border="0"],
|
||||||
|
table[border="0"] > tr > td, table[border="0"] > tr > th,
|
||||||
|
table[border="0"] > tbody > tr > td, table[border="0"] > tbody > tr > th,
|
||||||
|
table[border="0"] > thead > tr > td, table[border="0"] > thead > tr > th,
|
||||||
|
table[border="0"] > tfoot > tr > td, table[border="0"] > tfoot > tr > th
|
||||||
|
{
|
||||||
|
border: #d3d3d3 1px dotted ;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* For tables with no "border" attribute set */
|
||||||
|
table:not([border]),
|
||||||
|
table:not([border]) > tr > td, table:not([border]) > tr > th,
|
||||||
|
table:not([border]) > tbody > tr > td, table:not([border]) > tbody > tr > th,
|
||||||
|
table:not([border]) > thead > tr > td, table:not([border]) > thead > tr > th,
|
||||||
|
table:not([border]) > tfoot > tr > td, table:not([border]) > tfoot > tr > th
|
||||||
|
{
|
||||||
|
border: #d3d3d3 1px dotted ;
|
||||||
|
}
|
||||||
BIN
htdocs/includes/fckeditor/editor/css/images/block_address.png
Normal file
|
After Width: | Height: | Size: 288 B |
BIN
htdocs/includes/fckeditor/editor/css/images/block_blockquote.png
Normal file
|
After Width: | Height: | Size: 293 B |
BIN
htdocs/includes/fckeditor/editor/css/images/block_div.png
Normal file
|
After Width: | Height: | Size: 229 B |
BIN
htdocs/includes/fckeditor/editor/css/images/block_h1.png
Normal file
|
After Width: | Height: | Size: 218 B |
BIN
htdocs/includes/fckeditor/editor/css/images/block_h2.png
Normal file
|
After Width: | Height: | Size: 220 B |
BIN
htdocs/includes/fckeditor/editor/css/images/block_h3.png
Normal file
|
After Width: | Height: | Size: 219 B |
BIN
htdocs/includes/fckeditor/editor/css/images/block_h4.png
Normal file
|
After Width: | Height: | Size: 229 B |
BIN
htdocs/includes/fckeditor/editor/css/images/block_h5.png
Normal file
|
After Width: | Height: | Size: 236 B |
BIN
htdocs/includes/fckeditor/editor/css/images/block_h6.png
Normal file
|
After Width: | Height: | Size: 216 B |
BIN
htdocs/includes/fckeditor/editor/css/images/block_p.png
Normal file
|
After Width: | Height: | Size: 205 B |
BIN
htdocs/includes/fckeditor/editor/css/images/block_pre.png
Normal file
|
After Width: | Height: | Size: 223 B |
BIN
htdocs/includes/fckeditor/editor/css/images/fck_anchor.gif
Normal file
|
After Width: | Height: | Size: 184 B |
BIN
htdocs/includes/fckeditor/editor/css/images/fck_flashlogo.gif
Normal file
|
After Width: | Height: | Size: 599 B |
BIN
htdocs/includes/fckeditor/editor/css/images/fck_hiddenfield.gif
Normal file
|
After Width: | Height: | Size: 105 B |
BIN
htdocs/includes/fckeditor/editor/css/images/fck_pagebreak.gif
Normal file
|
After Width: | Height: | Size: 54 B |
@@ -0,0 +1,78 @@
|
|||||||
|
/*
|
||||||
|
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
||||||
|
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
||||||
|
*
|
||||||
|
* == BEGIN LICENSE ==
|
||||||
|
*
|
||||||
|
* Licensed under the terms of any of the following licenses at your
|
||||||
|
* choice:
|
||||||
|
*
|
||||||
|
* - GNU General Public License Version 2 or later (the "GPL")
|
||||||
|
* http://www.gnu.org/licenses/gpl.html
|
||||||
|
*
|
||||||
|
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
||||||
|
* http://www.gnu.org/licenses/lgpl.html
|
||||||
|
*
|
||||||
|
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
||||||
|
* http://www.mozilla.org/MPL/MPL-1.1.html
|
||||||
|
*
|
||||||
|
* == END LICENSE ==
|
||||||
|
*
|
||||||
|
* This is the CSS file used for interface details in some dialog
|
||||||
|
* windows.
|
||||||
|
*/
|
||||||
|
|
||||||
|
.ImagePreviewArea
|
||||||
|
{
|
||||||
|
border: #000000 1px solid;
|
||||||
|
overflow: auto;
|
||||||
|
width: 100%;
|
||||||
|
height: 170px;
|
||||||
|
background-color: #ffffff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.FlashPreviewArea
|
||||||
|
{
|
||||||
|
border: #000000 1px solid;
|
||||||
|
padding: 5px;
|
||||||
|
overflow: auto;
|
||||||
|
width: 100%;
|
||||||
|
height: 170px;
|
||||||
|
background-color: #ffffff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.BtnReset
|
||||||
|
{
|
||||||
|
float: left;
|
||||||
|
background-position: center center;
|
||||||
|
background-image: url(images/reset.gif);
|
||||||
|
width: 16px;
|
||||||
|
height: 16px;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
border: 1px none;
|
||||||
|
font-size: 1px ;
|
||||||
|
}
|
||||||
|
|
||||||
|
.BtnLocked, .BtnUnlocked
|
||||||
|
{
|
||||||
|
float: left;
|
||||||
|
background-position: center center;
|
||||||
|
background-image: url(images/locked.gif);
|
||||||
|
width: 16px;
|
||||||
|
height: 16px;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
border: none 1px;
|
||||||
|
font-size: 1px ;
|
||||||
|
}
|
||||||
|
|
||||||
|
.BtnUnlocked
|
||||||
|
{
|
||||||
|
background-image: url(images/unlocked.gif);
|
||||||
|
}
|
||||||
|
|
||||||
|
.BtnOver
|
||||||
|
{
|
||||||
|
border: outset 1px;
|
||||||
|
cursor: pointer;
|
||||||
|
cursor: hand;
|
||||||
|
}
|
||||||
@@ -0,0 +1,165 @@
|
|||||||
|
/*
|
||||||
|
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
||||||
|
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
||||||
|
*
|
||||||
|
* == BEGIN LICENSE ==
|
||||||
|
*
|
||||||
|
* Licensed under the terms of any of the following licenses at your
|
||||||
|
* choice:
|
||||||
|
*
|
||||||
|
* - GNU General Public License Version 2 or later (the "GPL")
|
||||||
|
* http://www.gnu.org/licenses/gpl.html
|
||||||
|
*
|
||||||
|
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
||||||
|
* http://www.gnu.org/licenses/lgpl.html
|
||||||
|
*
|
||||||
|
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
||||||
|
* http://www.mozilla.org/MPL/MPL-1.1.html
|
||||||
|
*
|
||||||
|
* == END LICENSE ==
|
||||||
|
*
|
||||||
|
* Useful functions used by almost all dialog window pages.
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Gets a element by its Id. Used for shorter coding.
|
||||||
|
function GetE( elementId )
|
||||||
|
{
|
||||||
|
return document.getElementById( elementId ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
function ShowE( element, isVisible )
|
||||||
|
{
|
||||||
|
if ( typeof( element ) == 'string' )
|
||||||
|
element = GetE( element ) ;
|
||||||
|
element.style.display = isVisible ? '' : 'none' ;
|
||||||
|
}
|
||||||
|
|
||||||
|
function SetAttribute( element, attName, attValue )
|
||||||
|
{
|
||||||
|
if ( attValue == null || attValue.length == 0 )
|
||||||
|
element.removeAttribute( attName, 0 ) ; // 0 : Case Insensitive
|
||||||
|
else
|
||||||
|
element.setAttribute( attName, attValue, 0 ) ; // 0 : Case Insensitive
|
||||||
|
}
|
||||||
|
|
||||||
|
function GetAttribute( element, attName, valueIfNull )
|
||||||
|
{
|
||||||
|
var oAtt = element.attributes[attName] ;
|
||||||
|
|
||||||
|
if ( oAtt == null || !oAtt.specified )
|
||||||
|
return valueIfNull ? valueIfNull : '' ;
|
||||||
|
|
||||||
|
var oValue = element.getAttribute( attName, 2 ) ;
|
||||||
|
|
||||||
|
if ( oValue == null )
|
||||||
|
oValue = oAtt.nodeValue ;
|
||||||
|
|
||||||
|
return ( oValue == null ? valueIfNull : oValue ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
var KeyIdentifierMap =
|
||||||
|
{
|
||||||
|
End : 35,
|
||||||
|
Home : 36,
|
||||||
|
Left : 37,
|
||||||
|
Right : 39,
|
||||||
|
'U+00007F' : 46 // Delete
|
||||||
|
}
|
||||||
|
|
||||||
|
// Functions used by text fields to accept numbers only.
|
||||||
|
function IsDigit( e )
|
||||||
|
{
|
||||||
|
if ( !e )
|
||||||
|
e = event ;
|
||||||
|
|
||||||
|
var iCode = ( e.keyCode || e.charCode ) ;
|
||||||
|
|
||||||
|
if ( !iCode && e.keyIdentifier && ( e.keyIdentifier in KeyIdentifierMap ) )
|
||||||
|
iCode = KeyIdentifierMap[ e.keyIdentifier ] ;
|
||||||
|
|
||||||
|
return (
|
||||||
|
( iCode >= 48 && iCode <= 57 ) // Numbers
|
||||||
|
|| (iCode >= 35 && iCode <= 40) // Arrows, Home, End
|
||||||
|
|| iCode == 8 // Backspace
|
||||||
|
|| iCode == 46 // Delete
|
||||||
|
|| iCode == 9 // Tab
|
||||||
|
) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
String.prototype.Trim = function()
|
||||||
|
{
|
||||||
|
return this.replace( /(^\s*)|(\s*$)/g, '' ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
String.prototype.StartsWith = function( value )
|
||||||
|
{
|
||||||
|
return ( this.substr( 0, value.length ) == value ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
String.prototype.Remove = function( start, length )
|
||||||
|
{
|
||||||
|
var s = '' ;
|
||||||
|
|
||||||
|
if ( start > 0 )
|
||||||
|
s = this.substring( 0, start ) ;
|
||||||
|
|
||||||
|
if ( start + length < this.length )
|
||||||
|
s += this.substring( start + length , this.length ) ;
|
||||||
|
|
||||||
|
return s ;
|
||||||
|
}
|
||||||
|
|
||||||
|
String.prototype.ReplaceAll = function( searchArray, replaceArray )
|
||||||
|
{
|
||||||
|
var replaced = this ;
|
||||||
|
|
||||||
|
for ( var i = 0 ; i < searchArray.length ; i++ )
|
||||||
|
{
|
||||||
|
replaced = replaced.replace( searchArray[i], replaceArray[i] ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
return replaced ;
|
||||||
|
}
|
||||||
|
|
||||||
|
function OpenFileBrowser( url, width, height )
|
||||||
|
{
|
||||||
|
// oEditor must be defined.
|
||||||
|
|
||||||
|
var iLeft = ( oEditor.FCKConfig.ScreenWidth - width ) / 2 ;
|
||||||
|
var iTop = ( oEditor.FCKConfig.ScreenHeight - height ) / 2 ;
|
||||||
|
|
||||||
|
var sOptions = "toolbar=no,status=no,resizable=yes,dependent=yes,scrollbars=yes" ;
|
||||||
|
sOptions += ",width=" + width ;
|
||||||
|
sOptions += ",height=" + height ;
|
||||||
|
sOptions += ",left=" + iLeft ;
|
||||||
|
sOptions += ",top=" + iTop ;
|
||||||
|
|
||||||
|
// The "PreserveSessionOnFileBrowser" because the above code could be
|
||||||
|
// blocked by popup blockers.
|
||||||
|
if ( oEditor.FCKConfig.PreserveSessionOnFileBrowser && oEditor.FCKBrowserInfo.IsIE )
|
||||||
|
{
|
||||||
|
// The following change has been made otherwise IE will open the file
|
||||||
|
// browser on a different server session (on some cases):
|
||||||
|
// http://support.microsoft.com/default.aspx?scid=kb;en-us;831678
|
||||||
|
// by Simone Chiaretta.
|
||||||
|
var oWindow = oEditor.window.open( url, 'FCKBrowseWindow', sOptions ) ;
|
||||||
|
|
||||||
|
if ( oWindow )
|
||||||
|
{
|
||||||
|
// Detect Yahoo popup blocker.
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var sTest = oWindow.name ; // Yahoo returns "something", but we can't access it, so detect that and avoid strange errors for the user.
|
||||||
|
oWindow.opener = window ;
|
||||||
|
}
|
||||||
|
catch(e)
|
||||||
|
{
|
||||||
|
alert( oEditor.FCKLang.BrowseServerBlocked ) ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
alert( oEditor.FCKLang.BrowseServerBlocked ) ;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
window.open( url, 'FCKBrowseWindow', sOptions ) ;
|
||||||
|
}
|
||||||
BIN
htdocs/includes/fckeditor/editor/dialog/common/images/locked.gif
Normal file
|
After Width: | Height: | Size: 74 B |
BIN
htdocs/includes/fckeditor/editor/dialog/common/images/reset.gif
Normal file
|
After Width: | Height: | Size: 104 B |
|
After Width: | Height: | Size: 75 B |
155
htdocs/includes/fckeditor/editor/dialog/fck_about.html
Normal file
@@ -0,0 +1,155 @@
|
|||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||||
|
<!--
|
||||||
|
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
||||||
|
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
||||||
|
*
|
||||||
|
* == BEGIN LICENSE ==
|
||||||
|
*
|
||||||
|
* Licensed under the terms of any of the following licenses at your
|
||||||
|
* choice:
|
||||||
|
*
|
||||||
|
* - GNU General Public License Version 2 or later (the "GPL")
|
||||||
|
* http://www.gnu.org/licenses/gpl.html
|
||||||
|
*
|
||||||
|
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
||||||
|
* http://www.gnu.org/licenses/lgpl.html
|
||||||
|
*
|
||||||
|
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
||||||
|
* http://www.mozilla.org/MPL/MPL-1.1.html
|
||||||
|
*
|
||||||
|
* == END LICENSE ==
|
||||||
|
*
|
||||||
|
* "About" dialog window.
|
||||||
|
-->
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<title></title>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
|
<meta name="robots" content="noindex, nofollow" />
|
||||||
|
<script src="common/fck_dialog_common.js" type="text/javascript"></script>
|
||||||
|
<script type="text/javascript">
|
||||||
|
|
||||||
|
var oEditor = window.parent.InnerDialogLoaded() ;
|
||||||
|
var FCKLang = oEditor.FCKLang ;
|
||||||
|
|
||||||
|
window.parent.AddTab( 'About', FCKLang.DlgAboutAboutTab ) ;
|
||||||
|
window.parent.AddTab( 'License', FCKLang.DlgAboutLicenseTab ) ;
|
||||||
|
window.parent.AddTab( 'BrowserInfo', FCKLang.DlgAboutBrowserInfoTab ) ;
|
||||||
|
|
||||||
|
// Function called when a dialog tag is selected.
|
||||||
|
function OnDialogTabChange( tabCode )
|
||||||
|
{
|
||||||
|
ShowE('divAbout', ( tabCode == 'About' ) ) ;
|
||||||
|
ShowE('divLicense', ( tabCode == 'License' ) ) ;
|
||||||
|
ShowE('divInfo' , ( tabCode == 'BrowserInfo' ) ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
function SendEMail()
|
||||||
|
{
|
||||||
|
var eMail = 'mailto:' ;
|
||||||
|
eMail += 'fredck' ;
|
||||||
|
eMail += '@' ;
|
||||||
|
eMail += 'fckeditor' ;
|
||||||
|
eMail += '.' ;
|
||||||
|
eMail += 'net' ;
|
||||||
|
|
||||||
|
window.location = eMail ;
|
||||||
|
}
|
||||||
|
|
||||||
|
window.onload = function()
|
||||||
|
{
|
||||||
|
// Translate the dialog box texts.
|
||||||
|
oEditor.FCKLanguageManager.TranslatePage(document) ;
|
||||||
|
|
||||||
|
window.parent.SetAutoSize( true ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
<body style="overflow: hidden">
|
||||||
|
<div id="divAbout">
|
||||||
|
<table cellpadding="0" cellspacing="0" border="0" width="100%" style="height: 100%">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<img alt="" src="fck_about/logo_fckeditor.gif" width="236" height="41" align="left" />
|
||||||
|
<table width="80" border="0" cellspacing="0" cellpadding="5" bgcolor="#ffffff" align="right">
|
||||||
|
<tr>
|
||||||
|
<td align="center" nowrap="nowrap" style="border-right: #000000 1px solid; border-top: #000000 1px solid;
|
||||||
|
border-left: #000000 1px solid; border-bottom: #000000 1px solid">
|
||||||
|
<span fcklang="DlgAboutVersion">version</span>
|
||||||
|
<br />
|
||||||
|
<b>2.5 Beta</b><br />
|
||||||
|
Build 16848</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr style="height: 100%">
|
||||||
|
<td align="center">
|
||||||
|
<br />
|
||||||
|
<span style="font-size: 14px" dir="ltr">
|
||||||
|
<br />
|
||||||
|
<b><a href="http://www.fckeditor.net/?about" target="_blank" title="Visit the FCKeditor web site">
|
||||||
|
Support <b>Open Source</b> Software</a></b> </span>
|
||||||
|
<br />
|
||||||
|
<br />
|
||||||
|
<br />
|
||||||
|
<span fcklang="DlgAboutInfo">For further information go to</span> <a href="http://www.fckeditor.net/?About"
|
||||||
|
target="_blank">http://www.fckeditor.net/</a>.
|
||||||
|
<br />
|
||||||
|
Copyright © 2003-2007 <a href="#" onclick="SendEMail();">Frederico Caldeira Knabben</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center">
|
||||||
|
<img alt="" src="fck_about/logo_fredck.gif" width="87" height="36" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div id="divLicense" style="display: none">
|
||||||
|
<p>
|
||||||
|
Licensed under the terms of any of the following licenses at your
|
||||||
|
choice:
|
||||||
|
</p>
|
||||||
|
<ul>
|
||||||
|
<li style="margin-bottom:15px">
|
||||||
|
<b>GNU General Public License</b> Version 2 or later (the "GPL")<br />
|
||||||
|
<a href="http://www.gnu.org/licenses/gpl.html" target="_blank">http://www.gnu.org/licenses/gpl.html</a>
|
||||||
|
</li>
|
||||||
|
<li style="margin-bottom:15px">
|
||||||
|
<b>GNU Lesser General Public License</b> Version 2.1 or later (the "LGPL")<br />
|
||||||
|
<a href="http://www.gnu.org/licenses/lgpl.html" target="_blank">http://www.gnu.org/licenses/lgpl.html</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<b>Mozilla Public License</b> Version 1.1 or later (the "MPL")<br />
|
||||||
|
<a href="http://www.mozilla.org/MPL/MPL-1.1.html" target="_blank">http://www.mozilla.org/MPL/MPL-1.1.html</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div id="divInfo" style="display: none" dir="ltr">
|
||||||
|
<table align="center" width="80%" border="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<script type="text/javascript">
|
||||||
|
<!--
|
||||||
|
document.write( '<b>User Agent<\/b><br />' + window.navigator.userAgent + '<br /><br />' ) ;
|
||||||
|
document.write( '<b>Browser<\/b><br />' + window.navigator.appName + ' ' + window.navigator.appVersion + '<br /><br />' ) ;
|
||||||
|
document.write( '<b>Platform<\/b><br />' + window.navigator.platform + '<br /><br />' ) ;
|
||||||
|
|
||||||
|
var sUserLang = '?' ;
|
||||||
|
|
||||||
|
if ( window.navigator.language )
|
||||||
|
sUserLang = window.navigator.language.toLowerCase() ;
|
||||||
|
else if ( window.navigator.userLanguage )
|
||||||
|
sUserLang = window.navigator.userLanguage.toLowerCase() ;
|
||||||
|
|
||||||
|
document.write( '<b>User Language<\/b><br />' + sUserLang ) ;
|
||||||
|
//-->
|
||||||
|
</script>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
After Width: | Height: | Size: 2.0 KiB |
|
After Width: | Height: | Size: 920 B |
207
htdocs/includes/fckeditor/editor/dialog/fck_anchor.html
Normal file
@@ -0,0 +1,207 @@
|
|||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
|
||||||
|
<!--
|
||||||
|
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
||||||
|
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
||||||
|
*
|
||||||
|
* == BEGIN LICENSE ==
|
||||||
|
*
|
||||||
|
* Licensed under the terms of any of the following licenses at your
|
||||||
|
* choice:
|
||||||
|
*
|
||||||
|
* - GNU General Public License Version 2 or later (the "GPL")
|
||||||
|
* http://www.gnu.org/licenses/gpl.html
|
||||||
|
*
|
||||||
|
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
||||||
|
* http://www.gnu.org/licenses/lgpl.html
|
||||||
|
*
|
||||||
|
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
||||||
|
* http://www.mozilla.org/MPL/MPL-1.1.html
|
||||||
|
*
|
||||||
|
* == END LICENSE ==
|
||||||
|
*
|
||||||
|
* Anchor dialog window.
|
||||||
|
-->
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Anchor Properties</title>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||||
|
<meta content="noindex, nofollow" name="robots">
|
||||||
|
<script src="common/fck_dialog_common.js" type="text/javascript"></script>
|
||||||
|
<script type="text/javascript">
|
||||||
|
|
||||||
|
var oEditor = window.parent.InnerDialogLoaded() ;
|
||||||
|
var FCK = oEditor.FCK ;
|
||||||
|
var FCKBrowserInfo = oEditor.FCKBrowserInfo ;
|
||||||
|
var FCKTools = oEditor.FCKTools ;
|
||||||
|
var FCKRegexLib = oEditor.FCKRegexLib ;
|
||||||
|
|
||||||
|
// Gets the document DOM
|
||||||
|
var oDOM = oEditor.FCK.EditorDocument ;
|
||||||
|
|
||||||
|
var oFakeImage = FCK.Selection.GetSelectedElement() ;
|
||||||
|
var oAnchor ;
|
||||||
|
|
||||||
|
if ( oFakeImage )
|
||||||
|
{
|
||||||
|
if ( oFakeImage.tagName == 'IMG' && oFakeImage.getAttribute('_fckanchor') )
|
||||||
|
oAnchor = FCK.GetRealElement( oFakeImage ) ;
|
||||||
|
else
|
||||||
|
oFakeImage = null ;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Search for a real anchor
|
||||||
|
if ( !oFakeImage )
|
||||||
|
{
|
||||||
|
oAnchor = FCK.Selection.MoveToAncestorNode( 'A' ) ;
|
||||||
|
if ( oAnchor )
|
||||||
|
FCK.Selection.SelectNode( oAnchor ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
window.onload = function()
|
||||||
|
{
|
||||||
|
// First of all, translate the dialog box texts
|
||||||
|
oEditor.FCKLanguageManager.TranslatePage(document) ;
|
||||||
|
|
||||||
|
if ( oAnchor )
|
||||||
|
GetE('txtName').value = oAnchor.name ;
|
||||||
|
else
|
||||||
|
oAnchor = null ;
|
||||||
|
|
||||||
|
window.parent.SetOkButton( true ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
function Ok()
|
||||||
|
{
|
||||||
|
var sNewName = GetE('txtName').value ;
|
||||||
|
|
||||||
|
// Remove any illegal character in a name attribute:
|
||||||
|
// A name should start with a letter, but the validator passes anyway.
|
||||||
|
sNewName = sNewName.replace( /[^\w-_\.:]/g, '_' ) ;
|
||||||
|
|
||||||
|
if ( sNewName.length == 0 )
|
||||||
|
{
|
||||||
|
// Remove the anchor if the user leaves the name blank
|
||||||
|
if ( oAnchor )
|
||||||
|
{
|
||||||
|
// Removes the current anchor from the document using the new command
|
||||||
|
FCK.Commands.GetCommand( 'AnchorDelete' ).Execute() ;
|
||||||
|
return true ;
|
||||||
|
}
|
||||||
|
|
||||||
|
alert( oEditor.FCKLang.DlgAnchorErrorName ) ;
|
||||||
|
return false ;
|
||||||
|
}
|
||||||
|
|
||||||
|
oEditor.FCKUndo.SaveUndoStep() ;
|
||||||
|
|
||||||
|
if ( oAnchor ) // Modifying an existent anchor.
|
||||||
|
{
|
||||||
|
ReadjustLinksToAnchor( oAnchor.name, sNewName );
|
||||||
|
|
||||||
|
// Buggy explorer, bad bad browser. http://alt-tag.com/blog/archives/2006/02/ie-dom-bugs/
|
||||||
|
// Instead of just replacing the .name for the existing anchor (in order to preserve the content), we must remove the .name
|
||||||
|
// and assign .name, although it won't appear until it's specially processed in fckxhtml.js
|
||||||
|
|
||||||
|
// We remove the previous name
|
||||||
|
oAnchor.removeAttribute( 'name' ) ;
|
||||||
|
// Now we set it, but later we must process it specially
|
||||||
|
oAnchor.name = sNewName ;
|
||||||
|
|
||||||
|
return true ;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create a new anchor preserving the current selection
|
||||||
|
var aNewAnchors = oEditor.FCK.CreateLink( '#' ) ;
|
||||||
|
|
||||||
|
if ( aNewAnchors.length == 0 )
|
||||||
|
{
|
||||||
|
// Nothing was selected, so now just create a normal A
|
||||||
|
aNewAnchors.push( oEditor.FCK.InsertElement( 'a' ) ) ;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Remove the fake href
|
||||||
|
for ( var i = 0 ; i < aNewAnchors.length ; i++ )
|
||||||
|
aNewAnchors[i].removeAttribute( 'href' ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
// More than one anchors may have been created, so interact through all of them (see #220).
|
||||||
|
for ( var i = 0 ; i < aNewAnchors.length ; i++ )
|
||||||
|
{
|
||||||
|
oAnchor = aNewAnchors[i] ;
|
||||||
|
|
||||||
|
// Set the name
|
||||||
|
oAnchor.name = sNewName ;
|
||||||
|
|
||||||
|
// IE does require special processing to show the Anchor's image
|
||||||
|
// Opera doesn't allow to select empty anchors
|
||||||
|
if ( FCKBrowserInfo.IsIE || FCKBrowserInfo.IsOpera )
|
||||||
|
{
|
||||||
|
if ( oAnchor.innerHTML != '' )
|
||||||
|
{
|
||||||
|
if ( FCKBrowserInfo.IsIE )
|
||||||
|
oAnchor.className += ' FCK__AnchorC' ;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Create a fake image for both IE and Opera
|
||||||
|
var oImg = oEditor.FCKDocumentProcessor_CreateFakeImage( 'FCK__Anchor', oAnchor.cloneNode(true) ) ;
|
||||||
|
oImg.setAttribute( '_fckanchor', 'true', 0 ) ;
|
||||||
|
|
||||||
|
oAnchor.parentNode.insertBefore( oImg, oAnchor ) ;
|
||||||
|
oAnchor.parentNode.removeChild( oAnchor ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true ;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Checks all the links in the current page pointing to the current name and changes them to the new name
|
||||||
|
function ReadjustLinksToAnchor( sCurrent, sNew )
|
||||||
|
{
|
||||||
|
var oDoc = FCK.EditorDocument ;
|
||||||
|
|
||||||
|
var aLinks = oDoc.getElementsByTagName( 'A' ) ;
|
||||||
|
|
||||||
|
var sReference = '#' + sCurrent ;
|
||||||
|
// The url of the document, so we check absolute and partial references.
|
||||||
|
var sFullReference = oDoc.location.href.replace( /(#.*$)/, '') ;
|
||||||
|
sFullReference += sReference ;
|
||||||
|
|
||||||
|
var oLink ;
|
||||||
|
var i = aLinks.length - 1 ;
|
||||||
|
while ( i >= 0 && ( oLink = aLinks[i--] ) )
|
||||||
|
{
|
||||||
|
var sHRef = oLink.getAttribute( '_fcksavedurl' ) ;
|
||||||
|
if ( sHRef == null )
|
||||||
|
sHRef = oLink.getAttribute( 'href' , 2 ) || '' ;
|
||||||
|
|
||||||
|
if ( sHRef == sReference || sHRef == sFullReference )
|
||||||
|
{
|
||||||
|
oLink.href = '#' + sNew ;
|
||||||
|
SetAttribute( oLink, '_fcksavedurl', '#' + sNew ) ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
<body style="OVERFLOW: hidden" 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>
|
||||||
109
htdocs/includes/fckeditor/editor/dialog/fck_button.html
Normal file
@@ -0,0 +1,109 @@
|
|||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
|
||||||
|
<!--
|
||||||
|
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
||||||
|
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
||||||
|
*
|
||||||
|
* == BEGIN LICENSE ==
|
||||||
|
*
|
||||||
|
* Licensed under the terms of any of the following licenses at your
|
||||||
|
* choice:
|
||||||
|
*
|
||||||
|
* - GNU General Public License Version 2 or later (the "GPL")
|
||||||
|
* http://www.gnu.org/licenses/gpl.html
|
||||||
|
*
|
||||||
|
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
||||||
|
* http://www.gnu.org/licenses/lgpl.html
|
||||||
|
*
|
||||||
|
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
||||||
|
* http://www.mozilla.org/MPL/MPL-1.1.html
|
||||||
|
*
|
||||||
|
* == END LICENSE ==
|
||||||
|
*
|
||||||
|
* Button dialog window.
|
||||||
|
-->
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<title>Button Properties</title>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
|
<meta content="noindex, nofollow" name="robots" />
|
||||||
|
<script src="common/fck_dialog_common.js" type="text/javascript"></script>
|
||||||
|
<script type="text/javascript">
|
||||||
|
|
||||||
|
var oEditor = window.parent.InnerDialogLoaded() ;
|
||||||
|
|
||||||
|
// Gets the document DOM
|
||||||
|
var oDOM = oEditor.FCK.EditorDocument ;
|
||||||
|
|
||||||
|
var oActiveEl = oEditor.FCKSelection.GetSelectedElement() ;
|
||||||
|
|
||||||
|
window.onload = function()
|
||||||
|
{
|
||||||
|
// First of all, translate the dialog box texts
|
||||||
|
oEditor.FCKLanguageManager.TranslatePage(document) ;
|
||||||
|
|
||||||
|
if ( oActiveEl && oActiveEl.tagName.toUpperCase() == "INPUT" && ( oActiveEl.type == "button" || oActiveEl.type == "submit" || oActiveEl.type == "reset" ) )
|
||||||
|
{
|
||||||
|
GetE('txtName').value = oActiveEl.name ;
|
||||||
|
GetE('txtValue').value = oActiveEl.value ;
|
||||||
|
GetE('txtType').value = oActiveEl.type ;
|
||||||
|
|
||||||
|
GetE('txtType').disabled = true ;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
oActiveEl = null ;
|
||||||
|
|
||||||
|
window.parent.SetOkButton( true ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
function Ok()
|
||||||
|
{
|
||||||
|
oEditor.FCKUndo.SaveUndoStep() ;
|
||||||
|
|
||||||
|
if ( !oActiveEl )
|
||||||
|
{
|
||||||
|
oActiveEl = oEditor.FCK.EditorDocument.createElement( 'INPUT' ) ;
|
||||||
|
oActiveEl.type = GetE('txtType').value ;
|
||||||
|
oActiveEl = oEditor.FCK.InsertElement( oActiveEl ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
oActiveEl.name = GetE('txtName').value ;
|
||||||
|
SetAttribute( oActiveEl, 'value', GetE('txtValue').value ) ;
|
||||||
|
|
||||||
|
return true ;
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
<body style="overflow: hidden">
|
||||||
|
<table width="100%" style="height: 100%">
|
||||||
|
<tr>
|
||||||
|
<td align="center">
|
||||||
|
<table border="0" cellpadding="0" cellspacing="0" width="80%">
|
||||||
|
<tr>
|
||||||
|
<td colspan="">
|
||||||
|
<span fcklang="DlgCheckboxName">Name</span><br />
|
||||||
|
<input type="text" size="20" id="txtName" style="width: 100%" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<span fcklang="DlgButtonText">Text (Value)</span><br />
|
||||||
|
<input type="text" id="txtValue" style="width: 100%" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<span fcklang="DlgButtonType">Type</span><br />
|
||||||
|
<select id="txtType">
|
||||||
|
<option fcklang="DlgButtonTypeBtn" value="button" selected="selected">Button</option>
|
||||||
|
<option fcklang="DlgButtonTypeSbm" value="submit">Submit</option>
|
||||||
|
<option fcklang="DlgButtonTypeRst" value="reset">Reset</option>
|
||||||
|
</select>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
109
htdocs/includes/fckeditor/editor/dialog/fck_checkbox.html
Normal file
@@ -0,0 +1,109 @@
|
|||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
|
||||||
|
<!--
|
||||||
|
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
||||||
|
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
||||||
|
*
|
||||||
|
* == BEGIN LICENSE ==
|
||||||
|
*
|
||||||
|
* Licensed under the terms of any of the following licenses at your
|
||||||
|
* choice:
|
||||||
|
*
|
||||||
|
* - GNU General Public License Version 2 or later (the "GPL")
|
||||||
|
* http://www.gnu.org/licenses/gpl.html
|
||||||
|
*
|
||||||
|
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
||||||
|
* http://www.gnu.org/licenses/lgpl.html
|
||||||
|
*
|
||||||
|
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
||||||
|
* http://www.mozilla.org/MPL/MPL-1.1.html
|
||||||
|
*
|
||||||
|
* == END LICENSE ==
|
||||||
|
*
|
||||||
|
* Checkbox dialog window.
|
||||||
|
-->
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Checkbox Properties</title>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||||
|
<meta content="noindex, nofollow" name="robots">
|
||||||
|
<script src="common/fck_dialog_common.js" type="text/javascript"></script>
|
||||||
|
<script type="text/javascript">
|
||||||
|
|
||||||
|
var oEditor = window.parent.InnerDialogLoaded() ;
|
||||||
|
|
||||||
|
// Gets the document DOM
|
||||||
|
var oDOM = oEditor.FCK.EditorDocument ;
|
||||||
|
|
||||||
|
var oActiveEl = oEditor.FCKSelection.GetSelectedElement() ;
|
||||||
|
|
||||||
|
window.onload = function()
|
||||||
|
{
|
||||||
|
// First of all, translate the dialog box texts
|
||||||
|
oEditor.FCKLanguageManager.TranslatePage(document) ;
|
||||||
|
|
||||||
|
if ( oActiveEl && oActiveEl.tagName == 'INPUT' && oActiveEl.type == 'checkbox' )
|
||||||
|
{
|
||||||
|
GetE('txtName').value = oActiveEl.name ;
|
||||||
|
GetE('txtValue').value = oEditor.FCKBrowserInfo.IsIE ? oActiveEl.value : GetAttribute( oActiveEl, 'value' ) ;
|
||||||
|
GetE('txtSelected').checked = oActiveEl.checked ;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
oActiveEl = null ;
|
||||||
|
|
||||||
|
window.parent.SetOkButton( true ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
function Ok()
|
||||||
|
{
|
||||||
|
oEditor.FCKUndo.SaveUndoStep() ;
|
||||||
|
|
||||||
|
if ( !oActiveEl )
|
||||||
|
{
|
||||||
|
oActiveEl = oEditor.FCK.EditorDocument.createElement( 'INPUT' ) ;
|
||||||
|
oActiveEl.type = 'checkbox' ;
|
||||||
|
oActiveEl = oEditor.FCK.InsertElement( oActiveEl ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( GetE('txtName').value.length > 0 )
|
||||||
|
oActiveEl.name = GetE('txtName').value ;
|
||||||
|
|
||||||
|
if ( oEditor.FCKBrowserInfo.IsIE )
|
||||||
|
oActiveEl.value = GetE('txtValue').value ;
|
||||||
|
else
|
||||||
|
SetAttribute( oActiveEl, 'value', GetE('txtValue').value ) ;
|
||||||
|
|
||||||
|
var bIsChecked = GetE('txtSelected').checked ;
|
||||||
|
SetAttribute( oActiveEl, 'checked', bIsChecked ? 'checked' : null ) ; // For Firefox
|
||||||
|
oActiveEl.checked = bIsChecked ;
|
||||||
|
|
||||||
|
return true ;
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
<body style="OVERFLOW: hidden" scroll="no">
|
||||||
|
<table height="100%" width="100%">
|
||||||
|
<tr>
|
||||||
|
<td align="center">
|
||||||
|
<table border="0" cellpadding="0" cellspacing="0" width="80%">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<span fckLang="DlgCheckboxName">Name</span><br>
|
||||||
|
<input type="text" size="20" id="txtName" style="WIDTH: 100%">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<span fckLang="DlgCheckboxValue">Value</span><br>
|
||||||
|
<input type="text" size="20" id="txtValue" style="WIDTH: 100%">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><input type="checkbox" id="txtSelected"><label for="txtSelected" fckLang="DlgCheckboxSelected">Checked</label></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
171
htdocs/includes/fckeditor/editor/dialog/fck_colorselector.html
Normal file
@@ -0,0 +1,171 @@
|
|||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
|
||||||
|
<!--
|
||||||
|
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
||||||
|
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
||||||
|
*
|
||||||
|
* == BEGIN LICENSE ==
|
||||||
|
*
|
||||||
|
* Licensed under the terms of any of the following licenses at your
|
||||||
|
* choice:
|
||||||
|
*
|
||||||
|
* - GNU General Public License Version 2 or later (the "GPL")
|
||||||
|
* http://www.gnu.org/licenses/gpl.html
|
||||||
|
*
|
||||||
|
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
||||||
|
* http://www.gnu.org/licenses/lgpl.html
|
||||||
|
*
|
||||||
|
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
||||||
|
* http://www.mozilla.org/MPL/MPL-1.1.html
|
||||||
|
*
|
||||||
|
* == END LICENSE ==
|
||||||
|
*
|
||||||
|
* Color Selection dialog window.
|
||||||
|
-->
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
|
<meta name="robots" content="noindex, nofollow" />
|
||||||
|
<style TYPE="text/css">
|
||||||
|
#ColorTable { cursor: pointer ; cursor: hand ; }
|
||||||
|
#hicolor { height: 74px ; width: 74px ; border-width: 1px ; border-style: solid ; }
|
||||||
|
#hicolortext { width: 75px ; text-align: right ; margin-bottom: 7px ; }
|
||||||
|
#selhicolor { height: 20px ; width: 74px ; border-width: 1px ; border-style: solid ; }
|
||||||
|
#selcolor { width: 75px ; height: 20px ; margin-top: 0px ; margin-bottom: 7px ; }
|
||||||
|
#btnClear { width: 75px ; height: 22px ; margin-bottom: 6px ; }
|
||||||
|
.ColorCell { height: 15px ; width: 15px ; }
|
||||||
|
</style>
|
||||||
|
<script type="text/javascript">
|
||||||
|
|
||||||
|
var oEditor = window.parent.InnerDialogLoaded() ;
|
||||||
|
|
||||||
|
function OnLoad()
|
||||||
|
{
|
||||||
|
// First of all, translate the dialog box texts
|
||||||
|
oEditor.FCKLanguageManager.TranslatePage(document) ;
|
||||||
|
|
||||||
|
CreateColorTable() ;
|
||||||
|
|
||||||
|
window.parent.SetOkButton( true ) ;
|
||||||
|
window.parent.SetAutoSize( true ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
function CreateColorTable()
|
||||||
|
{
|
||||||
|
// Get the target table.
|
||||||
|
var oTable = document.getElementById('ColorTable') ;
|
||||||
|
|
||||||
|
// Create the base colors array.
|
||||||
|
var aColors = ['00','33','66','99','cc','ff'] ;
|
||||||
|
|
||||||
|
// This function combines two ranges of three values from the color array into a row.
|
||||||
|
function AppendColorRow( rangeA, rangeB )
|
||||||
|
{
|
||||||
|
for ( var i = rangeA ; i < rangeA + 3 ; i++ )
|
||||||
|
{
|
||||||
|
var oRow = oTable.insertRow(-1) ;
|
||||||
|
|
||||||
|
for ( var j = rangeB ; j < rangeB + 3 ; j++ )
|
||||||
|
{
|
||||||
|
for ( var n = 0 ; n < 6 ; n++ )
|
||||||
|
{
|
||||||
|
AppendColorCell( oRow, '#' + aColors[j] + aColors[n] + aColors[i] ) ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// This function create a single color cell in the color table.
|
||||||
|
function AppendColorCell( targetRow, color )
|
||||||
|
{
|
||||||
|
var oCell = targetRow.insertCell(-1) ;
|
||||||
|
oCell.className = 'ColorCell' ;
|
||||||
|
oCell.bgColor = color ;
|
||||||
|
|
||||||
|
oCell.onmouseover = function()
|
||||||
|
{
|
||||||
|
document.getElementById('hicolor').style.backgroundColor = this.bgColor ;
|
||||||
|
document.getElementById('hicolortext').innerHTML = this.bgColor ;
|
||||||
|
}
|
||||||
|
|
||||||
|
oCell.onclick = function()
|
||||||
|
{
|
||||||
|
document.getElementById('selhicolor').style.backgroundColor = this.bgColor ;
|
||||||
|
document.getElementById('selcolor').value = this.bgColor ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
AppendColorRow( 0, 0 ) ;
|
||||||
|
AppendColorRow( 3, 0 ) ;
|
||||||
|
AppendColorRow( 0, 3 ) ;
|
||||||
|
AppendColorRow( 3, 3 ) ;
|
||||||
|
|
||||||
|
// Create the last row.
|
||||||
|
var oRow = oTable.insertRow(-1) ;
|
||||||
|
|
||||||
|
// Create the gray scale colors cells.
|
||||||
|
for ( var n = 0 ; n < 6 ; n++ )
|
||||||
|
{
|
||||||
|
AppendColorCell( oRow, '#' + aColors[n] + aColors[n] + aColors[n] ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Fill the row with black cells.
|
||||||
|
for ( var i = 0 ; i < 12 ; i++ )
|
||||||
|
{
|
||||||
|
AppendColorCell( oRow, '#000000' ) ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function Clear()
|
||||||
|
{
|
||||||
|
document.getElementById('selhicolor').style.backgroundColor = '' ;
|
||||||
|
document.getElementById('selcolor').value = '' ;
|
||||||
|
}
|
||||||
|
|
||||||
|
function ClearActual()
|
||||||
|
{
|
||||||
|
document.getElementById('hicolor').style.backgroundColor = '' ;
|
||||||
|
document.getElementById('hicolortext').innerHTML = ' ' ;
|
||||||
|
}
|
||||||
|
|
||||||
|
function UpdateColor()
|
||||||
|
{
|
||||||
|
try { document.getElementById('selhicolor').style.backgroundColor = document.getElementById('selcolor').value ; }
|
||||||
|
catch (e) { Clear() ; }
|
||||||
|
}
|
||||||
|
|
||||||
|
function Ok()
|
||||||
|
{
|
||||||
|
if ( typeof(window.parent.dialogArguments.CustomValue) == 'function' )
|
||||||
|
window.parent.dialogArguments.CustomValue( document.getElementById('selcolor').value ) ;
|
||||||
|
|
||||||
|
return true ;
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
<body onload="OnLoad()" scroll="no" style="OVERFLOW: hidden">
|
||||||
|
<table cellpadding="0" cellspacing="0" border="0" width="100%" height="100%">
|
||||||
|
<tr>
|
||||||
|
<td align="center" valign="middle">
|
||||||
|
<table border="0" cellspacing="5" cellpadding="0" width="100%">
|
||||||
|
<tr>
|
||||||
|
<td valign="top" align="center" nowrap width="100%">
|
||||||
|
<table id="ColorTable" border="0" cellspacing="0" cellpadding="0" width="270" onmouseout="ClearActual();">
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
<td valign="top" align="left" nowrap>
|
||||||
|
<span fckLang="DlgColorHighlight">Highlight</span>
|
||||||
|
<div id="hicolor"></div>
|
||||||
|
<div id="hicolortext"> </div>
|
||||||
|
<span fckLang="DlgColorSelected">Selected</span>
|
||||||
|
<div id="selhicolor"></div>
|
||||||
|
<input id="selcolor" type="text" maxlength="20" onchange="UpdateColor();">
|
||||||
|
<br>
|
||||||
|
<input id="btnClear" type="button" fckLang="DlgColorBtnClear" value="Clear" onclick="Clear();" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
600
htdocs/includes/fckeditor/editor/dialog/fck_docprops.html
Normal file
@@ -0,0 +1,600 @@
|
|||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||||
|
<!--
|
||||||
|
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
||||||
|
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
||||||
|
*
|
||||||
|
* == BEGIN LICENSE ==
|
||||||
|
*
|
||||||
|
* Licensed under the terms of any of the following licenses at your
|
||||||
|
* choice:
|
||||||
|
*
|
||||||
|
* - GNU General Public License Version 2 or later (the "GPL")
|
||||||
|
* http://www.gnu.org/licenses/gpl.html
|
||||||
|
*
|
||||||
|
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
||||||
|
* http://www.gnu.org/licenses/lgpl.html
|
||||||
|
*
|
||||||
|
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
||||||
|
* http://www.mozilla.org/MPL/MPL-1.1.html
|
||||||
|
*
|
||||||
|
* == END LICENSE ==
|
||||||
|
*
|
||||||
|
* Link dialog window.
|
||||||
|
-->
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<title></title>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
|
<meta content="noindex, nofollow" name="robots" />
|
||||||
|
<script src="common/fck_dialog_common.js" type="text/javascript"></script>
|
||||||
|
<script type="text/javascript">
|
||||||
|
|
||||||
|
var oEditor = window.parent.InnerDialogLoaded() ;
|
||||||
|
var FCK = oEditor.FCK ;
|
||||||
|
var FCKLang = oEditor.FCKLang ;
|
||||||
|
var FCKConfig = oEditor.FCKConfig ;
|
||||||
|
|
||||||
|
//#### Dialog Tabs
|
||||||
|
|
||||||
|
// Set the dialog tabs.
|
||||||
|
window.parent.AddTab( 'General' , FCKLang.DlgDocGeneralTab ) ;
|
||||||
|
window.parent.AddTab( 'Background' , FCKLang.DlgDocBackTab ) ;
|
||||||
|
window.parent.AddTab( 'Colors' , FCKLang.DlgDocColorsTab ) ;
|
||||||
|
window.parent.AddTab( 'Meta' , FCKLang.DlgDocMetaTab ) ;
|
||||||
|
|
||||||
|
// Function called when a dialog tag is selected.
|
||||||
|
function OnDialogTabChange( tabCode )
|
||||||
|
{
|
||||||
|
ShowE( 'divGeneral' , ( tabCode == 'General' ) ) ;
|
||||||
|
ShowE( 'divBackground' , ( tabCode == 'Background' ) ) ;
|
||||||
|
ShowE( 'divColors' , ( tabCode == 'Colors' ) ) ;
|
||||||
|
ShowE( 'divMeta' , ( tabCode == 'Meta' ) ) ;
|
||||||
|
|
||||||
|
ShowE( 'ePreview' , ( tabCode == 'Background' || tabCode == 'Colors' ) ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
//#### Get Base elements from the document: BEGIN
|
||||||
|
|
||||||
|
// The HTML element of the document.
|
||||||
|
var oHTML = FCK.EditorDocument.getElementsByTagName('html')[0] ;
|
||||||
|
|
||||||
|
// The HEAD element of the document.
|
||||||
|
var oHead = oHTML.getElementsByTagName('head')[0] ;
|
||||||
|
|
||||||
|
var oBody = FCK.EditorDocument.body ;
|
||||||
|
|
||||||
|
// This object contains all META tags defined in the document.
|
||||||
|
var oMetaTags = new Object() ;
|
||||||
|
|
||||||
|
// Get all META tags defined in the document.
|
||||||
|
AppendMetaCollection( oMetaTags, oHead.getElementsByTagName('meta') ) ;
|
||||||
|
AppendMetaCollection( oMetaTags, oHead.getElementsByTagName('fck:meta') ) ;
|
||||||
|
|
||||||
|
function AppendMetaCollection( targetObject, metaCollection )
|
||||||
|
{
|
||||||
|
// Loop throw all METAs and put it in the HashTable.
|
||||||
|
for ( var i = 0 ; i < metaCollection.length ; i++ )
|
||||||
|
{
|
||||||
|
// Try to get the "name" attribute.
|
||||||
|
var sName = GetAttribute( metaCollection[i], 'name', GetAttribute( metaCollection[i], '___fcktoreplace:name', '' ) ) ;
|
||||||
|
|
||||||
|
// If no "name", try with the "http-equiv" attribute.
|
||||||
|
if ( sName.length == 0 )
|
||||||
|
{
|
||||||
|
if ( oEditor.FCKBrowserInfo.IsIE )
|
||||||
|
{
|
||||||
|
// Get the http-equiv value from the outerHTML.
|
||||||
|
var oHttpEquivMatch = metaCollection[i].outerHTML.match( oEditor.FCKRegexLib.MetaHttpEquiv ) ;
|
||||||
|
if ( oHttpEquivMatch )
|
||||||
|
sName = oHttpEquivMatch[1] ;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
sName = GetAttribute( metaCollection[i], 'http-equiv', '' ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( sName.length > 0 )
|
||||||
|
targetObject[ sName.toLowerCase() ] = metaCollection[i] ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//#### END
|
||||||
|
|
||||||
|
// Set a META tag in the document.
|
||||||
|
function SetMetadata( name, content, isHttp )
|
||||||
|
{
|
||||||
|
if ( content.length == 0 )
|
||||||
|
{
|
||||||
|
RemoveMetadata( name ) ;
|
||||||
|
return ;
|
||||||
|
}
|
||||||
|
|
||||||
|
var oMeta = oMetaTags[ name.toLowerCase() ] ;
|
||||||
|
|
||||||
|
if ( !oMeta )
|
||||||
|
{
|
||||||
|
oMeta = oHead.appendChild( FCK.EditorDocument.createElement('META') ) ;
|
||||||
|
|
||||||
|
if ( isHttp )
|
||||||
|
SetAttribute( oMeta, 'http-equiv', name ) ;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// On IE, it is not possible to set the "name" attribute of the META tag.
|
||||||
|
// So a temporary attribute is used and it is replaced when getting the
|
||||||
|
// editor's HTML/XHTML value. This is sad, I know :(
|
||||||
|
if ( oEditor.FCKBrowserInfo.IsIE )
|
||||||
|
SetAttribute( oMeta, '___fcktoreplace:name', name ) ;
|
||||||
|
else
|
||||||
|
SetAttribute( oMeta, 'name', name ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
oMetaTags[ name.toLowerCase() ] = oMeta ;
|
||||||
|
}
|
||||||
|
|
||||||
|
SetAttribute( oMeta, 'content', content ) ;
|
||||||
|
// oMeta.content = content ;
|
||||||
|
}
|
||||||
|
|
||||||
|
function RemoveMetadata( name )
|
||||||
|
{
|
||||||
|
var oMeta = oMetaTags[ name.toLowerCase() ] ;
|
||||||
|
|
||||||
|
if ( oMeta && oMeta != null )
|
||||||
|
{
|
||||||
|
oMeta.parentNode.removeChild( oMeta ) ;
|
||||||
|
oMetaTags[ name.toLowerCase() ] = null ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function GetMetadata( name )
|
||||||
|
{
|
||||||
|
var oMeta = oMetaTags[ name.toLowerCase() ] ;
|
||||||
|
|
||||||
|
if ( oMeta && oMeta != null )
|
||||||
|
return oMeta.getAttribute( 'content', 2 ) ;
|
||||||
|
else
|
||||||
|
return '' ;
|
||||||
|
}
|
||||||
|
|
||||||
|
window.onload = function ()
|
||||||
|
{
|
||||||
|
// Show/Hide the "Browse Server" button.
|
||||||
|
GetE('tdBrowse').style.display = oEditor.FCKConfig.ImageBrowser ? "" : "none";
|
||||||
|
|
||||||
|
// First of all, translate the dialog box texts
|
||||||
|
oEditor.FCKLanguageManager.TranslatePage( document ) ;
|
||||||
|
|
||||||
|
FillFields() ;
|
||||||
|
|
||||||
|
UpdatePreview() ;
|
||||||
|
|
||||||
|
// Show the "Ok" button.
|
||||||
|
window.parent.SetOkButton( true ) ;
|
||||||
|
|
||||||
|
window.parent.SetAutoSize( true ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
function FillFields()
|
||||||
|
{
|
||||||
|
// ### General Info
|
||||||
|
GetE('txtPageTitle').value = FCK.EditorDocument.title ;
|
||||||
|
|
||||||
|
GetE('selDirection').value = GetAttribute( oHTML, 'dir', '' ) ;
|
||||||
|
GetE('txtLang').value = GetAttribute( oHTML, 'xml:lang', GetAttribute( oHTML, 'lang', '' ) ) ; // "xml:lang" takes precedence to "lang".
|
||||||
|
|
||||||
|
// Character Set Encoding.
|
||||||
|
// if ( oEditor.FCKBrowserInfo.IsIE )
|
||||||
|
// var sCharSet = FCK.EditorDocument.charset ;
|
||||||
|
// else
|
||||||
|
var sCharSet = GetMetadata( 'Content-Type' ) ;
|
||||||
|
|
||||||
|
if ( sCharSet != null && sCharSet.length > 0 )
|
||||||
|
{
|
||||||
|
// if ( !oEditor.FCKBrowserInfo.IsIE )
|
||||||
|
sCharSet = sCharSet.match( /[^=]*$/ ) ;
|
||||||
|
|
||||||
|
GetE('selCharSet').value = sCharSet ;
|
||||||
|
|
||||||
|
if ( GetE('selCharSet').selectedIndex == -1 )
|
||||||
|
{
|
||||||
|
GetE('selCharSet').value = '...' ;
|
||||||
|
GetE('txtCustomCharSet').value = sCharSet ;
|
||||||
|
|
||||||
|
CheckOther( GetE('selCharSet'), 'txtCustomCharSet' ) ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Document Type.
|
||||||
|
if ( FCK.DocTypeDeclaration && FCK.DocTypeDeclaration.length > 0 )
|
||||||
|
{
|
||||||
|
GetE('selDocType').value = FCK.DocTypeDeclaration ;
|
||||||
|
|
||||||
|
if ( GetE('selDocType').selectedIndex == -1 )
|
||||||
|
{
|
||||||
|
GetE('selDocType').value = '...' ;
|
||||||
|
GetE('txtDocType').value = FCK.DocTypeDeclaration ;
|
||||||
|
|
||||||
|
CheckOther( GetE('selDocType'), 'txtDocType' ) ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Document Type.
|
||||||
|
GetE('chkIncXHTMLDecl').checked = ( FCK.XmlDeclaration && FCK.XmlDeclaration.length > 0 ) ;
|
||||||
|
|
||||||
|
// ### Background
|
||||||
|
GetE('txtBackColor').value = GetAttribute( oBody, 'bgColor' , '' ) ;
|
||||||
|
GetE('txtBackImage').value = GetAttribute( oBody, 'background' , '' ) ;
|
||||||
|
GetE('chkBackNoScroll').checked = ( GetAttribute( oBody, 'bgProperties', '' ).toLowerCase() == 'fixed' ) ;
|
||||||
|
|
||||||
|
// ### Colors
|
||||||
|
GetE('txtColorText').value = GetAttribute( oBody, 'text' , '' ) ;
|
||||||
|
GetE('txtColorLink').value = GetAttribute( oBody, 'link' , '' ) ;
|
||||||
|
GetE('txtColorVisited').value = GetAttribute( oBody, 'vLink' , '' ) ;
|
||||||
|
GetE('txtColorActive').value = GetAttribute( oBody, 'aLink' , '' ) ;
|
||||||
|
|
||||||
|
// ### Margins
|
||||||
|
GetE('txtMarginTop').value = GetAttribute( oBody, 'topMargin' , '' ) ;
|
||||||
|
GetE('txtMarginLeft').value = GetAttribute( oBody, 'leftMargin' , '' ) ;
|
||||||
|
GetE('txtMarginRight').value = GetAttribute( oBody, 'rightMargin' , '' ) ;
|
||||||
|
GetE('txtMarginBottom').value = GetAttribute( oBody, 'bottomMargin' , '' ) ;
|
||||||
|
|
||||||
|
// ### Meta Data
|
||||||
|
GetE('txtMetaKeywords').value = GetMetadata( 'keywords' ) ;
|
||||||
|
GetE('txtMetaDescription').value = GetMetadata( 'description' ) ;
|
||||||
|
GetE('txtMetaAuthor').value = GetMetadata( 'author' ) ;
|
||||||
|
GetE('txtMetaCopyright').value = GetMetadata( 'copyright' ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Called when the "Ok" button is clicked.
|
||||||
|
function Ok()
|
||||||
|
{
|
||||||
|
// ### General Info
|
||||||
|
FCK.EditorDocument.title = GetE('txtPageTitle').value ;
|
||||||
|
|
||||||
|
var oHTML = FCK.EditorDocument.getElementsByTagName('html')[0] ;
|
||||||
|
|
||||||
|
SetAttribute( oHTML, 'dir' , GetE('selDirection').value ) ;
|
||||||
|
SetAttribute( oHTML, 'lang' , GetE('txtLang').value ) ;
|
||||||
|
SetAttribute( oHTML, 'xml:lang' , GetE('txtLang').value ) ;
|
||||||
|
|
||||||
|
// Character Set Enconding.
|
||||||
|
var sCharSet = GetE('selCharSet').value ;
|
||||||
|
if ( sCharSet == '...' )
|
||||||
|
sCharSet = GetE('txtCustomCharSet').value ;
|
||||||
|
|
||||||
|
if ( sCharSet.length > 0 )
|
||||||
|
sCharSet = 'text/html; charset=' + sCharSet ;
|
||||||
|
|
||||||
|
// if ( oEditor.FCKBrowserInfo.IsIE )
|
||||||
|
// FCK.EditorDocument.charset = sCharSet ;
|
||||||
|
// else
|
||||||
|
SetMetadata( 'Content-Type', sCharSet, true ) ;
|
||||||
|
|
||||||
|
// Document Type
|
||||||
|
var sDocType = GetE('selDocType').value ;
|
||||||
|
if ( sDocType == '...' )
|
||||||
|
sDocType = GetE('txtDocType').value ;
|
||||||
|
|
||||||
|
FCK.DocTypeDeclaration = sDocType ;
|
||||||
|
|
||||||
|
// XHTML Declarations.
|
||||||
|
if ( GetE('chkIncXHTMLDecl').checked )
|
||||||
|
{
|
||||||
|
if ( sCharSet.length == 0 )
|
||||||
|
sCharSet = 'utf-8' ;
|
||||||
|
|
||||||
|
FCK.XmlDeclaration = '<' + '?xml version="1.0" encoding="' + sCharSet + '"?>' ;
|
||||||
|
|
||||||
|
SetAttribute( oHTML, 'xmlns', 'http://www.w3.org/1999/xhtml' ) ;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
FCK.XmlDeclaration = null ;
|
||||||
|
oHTML.removeAttribute( 'xmlns', 0 ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
// ### Background
|
||||||
|
SetAttribute( oBody, 'bgcolor' , GetE('txtBackColor').value ) ;
|
||||||
|
SetAttribute( oBody, 'background' , GetE('txtBackImage').value ) ;
|
||||||
|
SetAttribute( oBody, 'bgproperties' , GetE('chkBackNoScroll').checked ? 'fixed' : '' ) ;
|
||||||
|
|
||||||
|
// ### Colors
|
||||||
|
SetAttribute( oBody, 'text' , GetE('txtColorText').value ) ;
|
||||||
|
SetAttribute( oBody, 'link' , GetE('txtColorLink').value ) ;
|
||||||
|
SetAttribute( oBody, 'vlink', GetE('txtColorVisited').value ) ;
|
||||||
|
SetAttribute( oBody, 'alink', GetE('txtColorActive').value ) ;
|
||||||
|
|
||||||
|
// ### Margins
|
||||||
|
SetAttribute( oBody, 'topmargin' , GetE('txtMarginTop').value ) ;
|
||||||
|
SetAttribute( oBody, 'leftmargin' , GetE('txtMarginLeft').value ) ;
|
||||||
|
SetAttribute( oBody, 'rightmargin' , GetE('txtMarginRight').value ) ;
|
||||||
|
SetAttribute( oBody, 'bottommargin' , GetE('txtMarginBottom').value ) ;
|
||||||
|
|
||||||
|
// ### Meta data
|
||||||
|
SetMetadata( 'keywords' , GetE('txtMetaKeywords').value ) ;
|
||||||
|
SetMetadata( 'description' , GetE('txtMetaDescription').value ) ;
|
||||||
|
SetMetadata( 'author' , GetE('txtMetaAuthor').value ) ;
|
||||||
|
SetMetadata( 'copyright' , GetE('txtMetaCopyright').value ) ;
|
||||||
|
|
||||||
|
return true ;
|
||||||
|
}
|
||||||
|
|
||||||
|
var bPreviewIsLoaded = false ;
|
||||||
|
var oPreviewWindow ;
|
||||||
|
var oPreviewBody ;
|
||||||
|
|
||||||
|
// Called by the Preview page when loaded.
|
||||||
|
function OnPreviewLoad( previewWindow, previewBody )
|
||||||
|
{
|
||||||
|
oPreviewWindow = previewWindow ;
|
||||||
|
oPreviewBody = previewBody ;
|
||||||
|
|
||||||
|
bPreviewIsLoaded = true ;
|
||||||
|
UpdatePreview() ;
|
||||||
|
}
|
||||||
|
|
||||||
|
function UpdatePreview()
|
||||||
|
{
|
||||||
|
if ( !bPreviewIsLoaded )
|
||||||
|
return ;
|
||||||
|
|
||||||
|
// ### Background
|
||||||
|
SetAttribute( oPreviewBody, 'bgcolor' , GetE('txtBackColor').value ) ;
|
||||||
|
SetAttribute( oPreviewBody, 'background' , GetE('txtBackImage').value ) ;
|
||||||
|
SetAttribute( oPreviewBody, 'bgproperties' , GetE('chkBackNoScroll').checked ? 'fixed' : '' ) ;
|
||||||
|
|
||||||
|
// ### Colors
|
||||||
|
SetAttribute( oPreviewBody, 'text', GetE('txtColorText').value ) ;
|
||||||
|
|
||||||
|
oPreviewWindow.SetLinkColor( GetE('txtColorLink').value ) ;
|
||||||
|
oPreviewWindow.SetVisitedColor( GetE('txtColorVisited').value ) ;
|
||||||
|
oPreviewWindow.SetActiveColor( GetE('txtColorActive').value ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
function CheckOther( combo, txtField )
|
||||||
|
{
|
||||||
|
var bNotOther = ( combo.value != '...' ) ;
|
||||||
|
|
||||||
|
GetE(txtField).style.backgroundColor = ( bNotOther ? '#cccccc' : '' ) ;
|
||||||
|
GetE(txtField).disabled = bNotOther ;
|
||||||
|
}
|
||||||
|
|
||||||
|
function SetColor( inputId, color )
|
||||||
|
{
|
||||||
|
GetE( inputId ).value = color + '' ;
|
||||||
|
UpdatePreview() ;
|
||||||
|
}
|
||||||
|
|
||||||
|
function SelectBackColor( color ) { SetColor('txtBackColor', color ) ; }
|
||||||
|
function SelectColorText( color ) { SetColor('txtColorText', color ) ; }
|
||||||
|
function SelectColorLink( color ) { SetColor('txtColorLink', color ) ; }
|
||||||
|
function SelectColorVisited( color ) { SetColor('txtColorVisited', color ) ; }
|
||||||
|
function SelectColorActive( color ) { SetColor('txtColorActive', color ) ; }
|
||||||
|
|
||||||
|
function SelectColor( wich )
|
||||||
|
{
|
||||||
|
switch ( wich )
|
||||||
|
{
|
||||||
|
case 'Back' : oEditor.FCKDialog.OpenDialog( 'FCKDialog_Color', FCKLang.DlgColorTitle, 'dialog/fck_colorselector.html', 400, 330, SelectBackColor, window ) ; return ;
|
||||||
|
case 'ColorText' : oEditor.FCKDialog.OpenDialog( 'FCKDialog_Color', FCKLang.DlgColorTitle, 'dialog/fck_colorselector.html', 400, 330, SelectColorText, window ) ; return ;
|
||||||
|
case 'ColorLink' : oEditor.FCKDialog.OpenDialog( 'FCKDialog_Color', FCKLang.DlgColorTitle, 'dialog/fck_colorselector.html', 400, 330, SelectColorLink, window ) ; return ;
|
||||||
|
case 'ColorVisited' : oEditor.FCKDialog.OpenDialog( 'FCKDialog_Color', FCKLang.DlgColorTitle, 'dialog/fck_colorselector.html', 400, 330, SelectColorVisited, window ) ; return ;
|
||||||
|
case 'ColorActive' : oEditor.FCKDialog.OpenDialog( 'FCKDialog_Color', FCKLang.DlgColorTitle, 'dialog/fck_colorselector.html', 400, 330, SelectColorActive, window ) ; return ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function BrowseServerBack()
|
||||||
|
{
|
||||||
|
OpenFileBrowser( FCKConfig.ImageBrowserURL, FCKConfig.ImageBrowserWindowWidth, FCKConfig.ImageBrowserWindowHeight ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
function SetUrl( url )
|
||||||
|
{
|
||||||
|
GetE('txtBackImage').value = url ;
|
||||||
|
UpdatePreview() ;
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
<body style="overflow: hidden">
|
||||||
|
<table cellspacing="0" cellpadding="0" width="100%" border="0" style="height: 100%">
|
||||||
|
<tr>
|
||||||
|
<td valign="top" style="height: 100%">
|
||||||
|
<div id="divGeneral">
|
||||||
|
<span fcklang="DlgDocPageTitle">Page Title</span><br />
|
||||||
|
<input id="txtPageTitle" style="width: 100%" type="text" />
|
||||||
|
<br />
|
||||||
|
<table cellspacing="0" cellpadding="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<span fcklang="DlgDocLangDir">Language Direction</span><br />
|
||||||
|
<select id="selDirection">
|
||||||
|
<option value="" selected="selected"></option>
|
||||||
|
<option value="ltr" fcklang="DlgDocLangDirLTR">Left to Right (LTR)</option>
|
||||||
|
<option value="rtl" fcklang="DlgDocLangDirRTL">Right to Left (RTL)</option>
|
||||||
|
</select>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<span fcklang="DlgDocLangCode">Language Code</span><br />
|
||||||
|
<input id="txtLang" type="text" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<br />
|
||||||
|
<table cellspacing="0" cellpadding="0" width="100%" border="0">
|
||||||
|
<tr>
|
||||||
|
<td style="white-space: nowrap">
|
||||||
|
<span fcklang="DlgDocCharSet">Character Set Encoding</span><br />
|
||||||
|
<select id="selCharSet" onchange="CheckOther( this, 'txtCustomCharSet' );">
|
||||||
|
<option value="" selected="selected"></option>
|
||||||
|
<option value="us-ascii">ASCII</option>
|
||||||
|
<option fcklang="DlgDocCharSetCE" value="iso-8859-2">Central European</option>
|
||||||
|
<option fcklang="DlgDocCharSetCT" value="big5">Chinese Traditional (Big5)</option>
|
||||||
|
<option fcklang="DlgDocCharSetCR" value="iso-8859-5">Cyrillic</option>
|
||||||
|
<option fcklang="DlgDocCharSetGR" value="iso-8859-7">Greek</option>
|
||||||
|
<option fcklang="DlgDocCharSetJP" value="iso-2022-jp">Japanese</option>
|
||||||
|
<option fcklang="DlgDocCharSetKR" value="iso-2022-kr">Korean</option>
|
||||||
|
<option fcklang="DlgDocCharSetTR" value="iso-8859-9">Turkish</option>
|
||||||
|
<option fcklang="DlgDocCharSetUN" value="utf-8">Unicode (UTF-8)</option>
|
||||||
|
<option fcklang="DlgDocCharSetWE" value="iso-8859-1">Western European</option>
|
||||||
|
<option fcklang="DlgOpOther" value="..."><Other></option>
|
||||||
|
</select>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
</td>
|
||||||
|
<td width="100%">
|
||||||
|
<span fcklang="DlgDocCharSetOther">Other Character Set Encoding</span><br />
|
||||||
|
<input id="txtCustomCharSet" style="width: 100%; background-color: #cccccc" disabled="disabled"
|
||||||
|
type="text" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colspan="3">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td nowrap="nowrap">
|
||||||
|
<span fcklang="DlgDocDocType">Document Type Heading</span><br />
|
||||||
|
<select id="selDocType" name="selDocType" onchange="CheckOther( this, 'txtDocType' );">
|
||||||
|
<option value="" selected="selected"></option>
|
||||||
|
<option value='<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">'>HTML
|
||||||
|
4.01 Transitional</option>
|
||||||
|
<option value='<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">'>
|
||||||
|
HTML 4.01 Strict</option>
|
||||||
|
<option value='<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">'>
|
||||||
|
HTML 4.01 Frameset</option>
|
||||||
|
<option value='<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">'>
|
||||||
|
XHTML 1.0 Transitional</option>
|
||||||
|
<option value='<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">'>
|
||||||
|
XHTML 1.0 Strict</option>
|
||||||
|
<option value='<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">'>
|
||||||
|
XHTML 1.0 Frameset</option>
|
||||||
|
<option value='<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">'>
|
||||||
|
XHTML 1.1</option>
|
||||||
|
<option value='<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">'>HTML 3.2</option>
|
||||||
|
<option value='<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">'>HTML 2.0</option>
|
||||||
|
<option value="..." fcklang="DlgOpOther"><Other></option>
|
||||||
|
</select>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
</td>
|
||||||
|
<td width="100%">
|
||||||
|
<span fcklang="DlgDocDocTypeOther">Other Document Type Heading</span><br />
|
||||||
|
<input id="txtDocType" style="width: 100%; background-color: #cccccc" disabled="disabled"
|
||||||
|
type="text" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<br />
|
||||||
|
<input id="chkIncXHTMLDecl" type="checkbox" />
|
||||||
|
<label for="chkIncXHTMLDecl" fcklang="DlgDocIncXHTML">
|
||||||
|
Include XHTML Declarations</label>
|
||||||
|
</div>
|
||||||
|
<div id="divBackground" style="display: none">
|
||||||
|
<span fcklang="DlgDocBgColor">Background Color</span><br />
|
||||||
|
<input id="txtBackColor" type="text" onchange="UpdatePreview();" onkeyup="UpdatePreview();" /> <input
|
||||||
|
id="btnSelBackColor" onclick="SelectColor( 'Back' )" type="button" value="Select..."
|
||||||
|
fcklang="DlgCellBtnSelect" /><br />
|
||||||
|
<br />
|
||||||
|
<span fcklang="DlgDocBgImage">Background Image URL</span><br />
|
||||||
|
<table cellspacing="0" cellpadding="0" width="100%" border="0">
|
||||||
|
<tr>
|
||||||
|
<td width="100%">
|
||||||
|
<input id="txtBackImage" style="width: 100%" type="text" onchange="UpdatePreview();"
|
||||||
|
onkeyup="UpdatePreview();" /></td>
|
||||||
|
<td id="tdBrowse" nowrap="nowrap">
|
||||||
|
<input id="btnBrowse" onclick="BrowseServerBack();" type="button" fcklang="DlgBtnBrowseServer"
|
||||||
|
value="Browse Server" /></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<input id="chkBackNoScroll" type="checkbox" onclick="UpdatePreview();" />
|
||||||
|
<label for="chkBackNoScroll" fcklang="DlgDocBgNoScroll">
|
||||||
|
Nonscrolling Background</label>
|
||||||
|
</div>
|
||||||
|
<div id="divColors" style="display: none">
|
||||||
|
<table cellspacing="0" cellpadding="0" width="100%" border="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<span fcklang="DlgDocCText">Text</span><br />
|
||||||
|
<input id="txtColorText" type="text" onchange="UpdatePreview();" onkeyup="UpdatePreview();" /><input
|
||||||
|
onclick="SelectColor( 'ColorText' )" type="button" value="Select..." fcklang="DlgCellBtnSelect" />
|
||||||
|
<br />
|
||||||
|
<span fcklang="DlgDocCLink">Link</span><br />
|
||||||
|
<input id="txtColorLink" type="text" onchange="UpdatePreview();" onkeyup="UpdatePreview();" /><input
|
||||||
|
onclick="SelectColor( 'ColorLink' )" type="button" value="Select..." fcklang="DlgCellBtnSelect" />
|
||||||
|
<br />
|
||||||
|
<span fcklang="DlgDocCVisited">Visited Link</span><br />
|
||||||
|
<input id="txtColorVisited" type="text" onchange="UpdatePreview();" onkeyup="UpdatePreview();" /><input
|
||||||
|
onclick="SelectColor( 'ColorVisited' )" type="button" value="Select..." fcklang="DlgCellBtnSelect" />
|
||||||
|
<br />
|
||||||
|
<span fcklang="DlgDocCActive">Active Link</span><br />
|
||||||
|
<input id="txtColorActive" type="text" onchange="UpdatePreview();" onkeyup="UpdatePreview();" /><input
|
||||||
|
onclick="SelectColor( 'ColorActive' )" type="button" value="Select..." fcklang="DlgCellBtnSelect" />
|
||||||
|
</td>
|
||||||
|
<td valign="middle" align="center">
|
||||||
|
<table cellspacing="2" cellpadding="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<span fcklang="DlgDocMargins">Page Margins</span></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td style="border: #000000 1px solid; padding: 5px">
|
||||||
|
<table cellpadding="0" cellspacing="0" border="0" dir="ltr">
|
||||||
|
<tr>
|
||||||
|
<td align="center" colspan="3">
|
||||||
|
<span fcklang="DlgDocMaTop">Top</span><br />
|
||||||
|
<input id="txtMarginTop" type="text" size="3" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="left">
|
||||||
|
<span fcklang="DlgDocMaLeft">Left</span><br />
|
||||||
|
<input id="txtMarginLeft" type="text" size="3" />
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
</td>
|
||||||
|
<td align="right">
|
||||||
|
<span fcklang="DlgDocMaRight">Right</span><br />
|
||||||
|
<input id="txtMarginRight" type="text" size="3" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" colspan="3">
|
||||||
|
<span fcklang="DlgDocMaBottom">Bottom</span><br />
|
||||||
|
<input id="txtMarginBottom" type="text" size="3" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div id="divMeta" style="display: none">
|
||||||
|
<span fcklang="DlgDocMeIndex">Document Indexing Keywords (comma separated)</span><br />
|
||||||
|
<textarea id="txtMetaKeywords" style="width: 100%" rows="2" cols="20"></textarea>
|
||||||
|
<br />
|
||||||
|
<span fcklang="DlgDocMeDescr">Document Description</span><br />
|
||||||
|
<textarea id="txtMetaDescription" style="width: 100%" rows="4" cols="20"></textarea>
|
||||||
|
<br />
|
||||||
|
<span fcklang="DlgDocMeAuthor">Author</span><br />
|
||||||
|
<input id="txtMetaAuthor" style="width: 100%" type="text" /><br />
|
||||||
|
<br />
|
||||||
|
<span fcklang="DlgDocMeCopy">Copyright</span><br />
|
||||||
|
<input id="txtMetaCopyright" type="text" style="width: 100%" />
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr id="ePreview" style="display: none">
|
||||||
|
<td>
|
||||||
|
<span fcklang="DlgDocPreview">Preview</span><br />
|
||||||
|
<iframe id="frmPreview" src="fck_docprops/fck_document_preview.html" width="100%"
|
||||||
|
height="100"></iframe>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,113 @@
|
|||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||||
|
<!--
|
||||||
|
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
||||||
|
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
||||||
|
*
|
||||||
|
* == BEGIN LICENSE ==
|
||||||
|
*
|
||||||
|
* Licensed under the terms of any of the following licenses at your
|
||||||
|
* choice:
|
||||||
|
*
|
||||||
|
* - GNU General Public License Version 2 or later (the "GPL")
|
||||||
|
* http://www.gnu.org/licenses/gpl.html
|
||||||
|
*
|
||||||
|
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
||||||
|
* http://www.gnu.org/licenses/lgpl.html
|
||||||
|
*
|
||||||
|
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
||||||
|
* http://www.mozilla.org/MPL/MPL-1.1.html
|
||||||
|
*
|
||||||
|
* == END LICENSE ==
|
||||||
|
*
|
||||||
|
* Preview shown in the "Document Properties" dialog window.
|
||||||
|
-->
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Document Properties - Preview</title>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||||
|
<meta name="robots" content="noindex, nofollow">
|
||||||
|
<script language="javascript">
|
||||||
|
|
||||||
|
var eBase = parent.FCK.EditorDocument.getElementsByTagName( 'BASE' ) ;
|
||||||
|
if ( eBase.length > 0 && eBase[0].href.length > 0 )
|
||||||
|
{
|
||||||
|
document.write( '<base href="' + eBase[0].href + '">' ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
window.onload = function()
|
||||||
|
{
|
||||||
|
if ( typeof( parent.OnPreviewLoad ) == 'function' )
|
||||||
|
parent.OnPreviewLoad( window, document.body ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
function SetBaseHRef( baseHref )
|
||||||
|
{
|
||||||
|
var eBase = document.createElement( 'BASE' ) ;
|
||||||
|
eBase.href = baseHref ;
|
||||||
|
|
||||||
|
var eHead = document.getElementsByTagName( 'HEAD' )[0] ;
|
||||||
|
eHead.appendChild( eBase ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
function SetLinkColor( color )
|
||||||
|
{
|
||||||
|
if ( color && color.length > 0 )
|
||||||
|
document.getElementById('eLink').style.color = color ;
|
||||||
|
else
|
||||||
|
document.getElementById('eLink').style.color = window.document.linkColor ;
|
||||||
|
}
|
||||||
|
|
||||||
|
function SetVisitedColor( color )
|
||||||
|
{
|
||||||
|
if ( color && color.length > 0 )
|
||||||
|
document.getElementById('eVisited').style.color = color ;
|
||||||
|
else
|
||||||
|
document.getElementById('eVisited').style.color = window.document.vlinkColor ;
|
||||||
|
}
|
||||||
|
|
||||||
|
function SetActiveColor( color )
|
||||||
|
{
|
||||||
|
if ( color && color.length > 0 )
|
||||||
|
document.getElementById('eActive').style.color = color ;
|
||||||
|
else
|
||||||
|
document.getElementById('eActive').style.color = window.document.alinkColor ;
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<table width="100%" height="100%" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td align="center" valign="middle">
|
||||||
|
Normal Text
|
||||||
|
</td>
|
||||||
|
<td id="eLink" align="center" valign="middle">
|
||||||
|
<u>Link Text</u>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td id="eVisited" valign="middle" align="center">
|
||||||
|
<u>Visited Link</u>
|
||||||
|
</td>
|
||||||
|
<td id="eActive" valign="middle" align="center">
|
||||||
|
<u>Active Link</u>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
173
htdocs/includes/fckeditor/editor/dialog/fck_find.html
Normal file
@@ -0,0 +1,173 @@
|
|||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||||
|
<!--
|
||||||
|
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
||||||
|
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
||||||
|
*
|
||||||
|
* == BEGIN LICENSE ==
|
||||||
|
*
|
||||||
|
* Licensed under the terms of any of the following licenses at your
|
||||||
|
* choice:
|
||||||
|
*
|
||||||
|
* - GNU General Public License Version 2 or later (the "GPL")
|
||||||
|
* http://www.gnu.org/licenses/gpl.html
|
||||||
|
*
|
||||||
|
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
||||||
|
* http://www.gnu.org/licenses/lgpl.html
|
||||||
|
*
|
||||||
|
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
||||||
|
* http://www.mozilla.org/MPL/MPL-1.1.html
|
||||||
|
*
|
||||||
|
* == END LICENSE ==
|
||||||
|
*
|
||||||
|
* "Find" dialog window.
|
||||||
|
-->
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<title></title>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
|
<meta content="noindex, nofollow" name="robots" />
|
||||||
|
<script 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()
|
||||||
|
{
|
||||||
|
var sExpr ;
|
||||||
|
|
||||||
|
if ( document.getElementById('chkWord').checked )
|
||||||
|
sExpr = '\\b' + document.getElementById('txtFind').value + '\\b' ;
|
||||||
|
else
|
||||||
|
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>
|
||||||
146
htdocs/includes/fckeditor/editor/dialog/fck_flash.html
Normal file
@@ -0,0 +1,146 @@
|
|||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||||
|
<!--
|
||||||
|
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
||||||
|
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
||||||
|
*
|
||||||
|
* == BEGIN LICENSE ==
|
||||||
|
*
|
||||||
|
* Licensed under the terms of any of the following licenses at your
|
||||||
|
* choice:
|
||||||
|
*
|
||||||
|
* - GNU General Public License Version 2 or later (the "GPL")
|
||||||
|
* http://www.gnu.org/licenses/gpl.html
|
||||||
|
*
|
||||||
|
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
||||||
|
* http://www.gnu.org/licenses/lgpl.html
|
||||||
|
*
|
||||||
|
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
||||||
|
* http://www.mozilla.org/MPL/MPL-1.1.html
|
||||||
|
*
|
||||||
|
* == END LICENSE ==
|
||||||
|
*
|
||||||
|
* Flash Properties dialog window.
|
||||||
|
-->
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Flash Properties</title>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||||
|
<meta content="noindex, nofollow" name="robots">
|
||||||
|
<script src="common/fck_dialog_common.js" type="text/javascript"></script>
|
||||||
|
<script src="fck_flash/fck_flash.js" type="text/javascript"></script>
|
||||||
|
<link href="common/fck_dialog_common.css" type="text/css" rel="stylesheet">
|
||||||
|
</head>
|
||||||
|
<body scroll="no" style="OVERFLOW: hidden">
|
||||||
|
<div id="divInfo">
|
||||||
|
<table cellSpacing="1" cellPadding="1" width="100%" border="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<table cellSpacing="0" cellPadding="0" width="100%" border="0">
|
||||||
|
<tr>
|
||||||
|
<td width="100%"><span fckLang="DlgImgURL">URL</span>
|
||||||
|
</td>
|
||||||
|
<td id="tdBrowse" style="DISPLAY: none" noWrap rowSpan="2"> <input id="btnBrowse" onclick="BrowseServer();" type="button" value="Browse Server" fckLang="DlgBtnBrowseServer">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td vAlign="top"><input id="txtUrl" onblur="UpdatePreview();" style="WIDTH: 100%" type="text">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<TR>
|
||||||
|
<TD>
|
||||||
|
<table cellSpacing="0" cellPadding="0" border="0">
|
||||||
|
<TR>
|
||||||
|
<TD nowrap>
|
||||||
|
<span fckLang="DlgImgWidth">Width</span><br>
|
||||||
|
<input id="txtWidth" onkeypress="return IsDigit(event);" type="text" size="3">
|
||||||
|
</TD>
|
||||||
|
<TD> </TD>
|
||||||
|
<TD>
|
||||||
|
<span fckLang="DlgImgHeight">Height</span><br>
|
||||||
|
<input id="txtHeight" onkeypress="return IsDigit(event);" type="text" size="3">
|
||||||
|
</TD>
|
||||||
|
</TR>
|
||||||
|
</table>
|
||||||
|
</TD>
|
||||||
|
</TR>
|
||||||
|
<tr>
|
||||||
|
<td vAlign="top">
|
||||||
|
<table cellSpacing="0" cellPadding="0" width="100%" border="0">
|
||||||
|
<tr>
|
||||||
|
<td valign="top" width="100%">
|
||||||
|
<table cellSpacing="0" cellPadding="0" width="100%">
|
||||||
|
<tr>
|
||||||
|
<td><span fckLang="DlgImgPreview">Preview</span></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td id="ePreviewCell" valign="top" class="FlashPreviewArea"><iframe src="fck_flash/fck_flash_preview.html" frameborder="0" marginheight="0" marginwidth="0"></iframe></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div id="divUpload" style="DISPLAY: none">
|
||||||
|
<form id="frmUpload" method="post" target="UploadWindow" enctype="multipart/form-data" action="" onsubmit="return CheckUpload();">
|
||||||
|
<span fckLang="DlgLnkUpload">Upload</span><br />
|
||||||
|
<input id="txtUploadFile" style="WIDTH: 100%" type="file" size="40" name="NewFile" /><br />
|
||||||
|
<br />
|
||||||
|
<input id="btnUpload" type="submit" value="Send it to the Server" fckLang="DlgLnkBtnUpload" />
|
||||||
|
<iframe name="UploadWindow" style="DISPLAY: none" src="javascript:void(0)"></iframe>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
<div id="divAdvanced" style="DISPLAY: none">
|
||||||
|
<TABLE cellSpacing="0" cellPadding="0" border="0">
|
||||||
|
<TR>
|
||||||
|
<TD nowrap>
|
||||||
|
<span fckLang="DlgFlashScale">Scale</span><BR>
|
||||||
|
<select id="cmbScale">
|
||||||
|
<option value="" selected></option>
|
||||||
|
<option value="showall" fckLang="DlgFlashScaleAll">Show all</option>
|
||||||
|
<option value="noborder" fckLang="DlgFlashScaleNoBorder">No Border</option>
|
||||||
|
<option value="exactfit" fckLang="DlgFlashScaleFit">Exact Fit</option>
|
||||||
|
</select></TD>
|
||||||
|
<TD>
|
||||||
|
</TD>
|
||||||
|
<td valign="bottom">
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td><input id="chkAutoPlay" type="checkbox" checked></td>
|
||||||
|
<td><label for="chkAutoPlay" nowrap fckLang="DlgFlashChkPlay">Auto Play</label> </td>
|
||||||
|
<td><input id="chkLoop" type="checkbox" checked></td>
|
||||||
|
<td><label for="chkLoop" nowrap fckLang="DlgFlashChkLoop">Loop</label> </td>
|
||||||
|
<td><input id="chkMenu" type="checkbox" checked></td>
|
||||||
|
<td><label for="chkMenu" nowrap fckLang="DlgFlashChkMenu">Enable Flash Menu</label></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</TR>
|
||||||
|
</TABLE>
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<table cellSpacing="0" cellPadding="0" width="100%" align="center" border="0">
|
||||||
|
<tr>
|
||||||
|
<td vAlign="top" width="50%"><span fckLang="DlgGenId">Id</span><br>
|
||||||
|
<input id="txtAttId" style="WIDTH: 100%" type="text">
|
||||||
|
</td>
|
||||||
|
<td> </td>
|
||||||
|
<td vAlign="top" nowrap><span fckLang="DlgGenClass">Stylesheet Classes</span><br>
|
||||||
|
<input id="txtAttClasses" style="WIDTH: 100%" type="text">
|
||||||
|
</td>
|
||||||
|
<td> </td>
|
||||||
|
<td vAlign="top" nowrap width="50%"> <span fckLang="DlgGenTitle">Advisory Title</span><br>
|
||||||
|
<input id="txtAttTitle" style="WIDTH: 100%" type="text">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<span fckLang="DlgGenStyle">Style</span><br>
|
||||||
|
<input id="txtAttStyle" style="WIDTH: 100%" type="text">
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
285
htdocs/includes/fckeditor/editor/dialog/fck_flash/fck_flash.js
Normal file
@@ -0,0 +1,285 @@
|
|||||||
|
/*
|
||||||
|
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
||||||
|
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
||||||
|
*
|
||||||
|
* == BEGIN LICENSE ==
|
||||||
|
*
|
||||||
|
* Licensed under the terms of any of the following licenses at your
|
||||||
|
* choice:
|
||||||
|
*
|
||||||
|
* - GNU General Public License Version 2 or later (the "GPL")
|
||||||
|
* http://www.gnu.org/licenses/gpl.html
|
||||||
|
*
|
||||||
|
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
||||||
|
* http://www.gnu.org/licenses/lgpl.html
|
||||||
|
*
|
||||||
|
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
||||||
|
* http://www.mozilla.org/MPL/MPL-1.1.html
|
||||||
|
*
|
||||||
|
* == END LICENSE ==
|
||||||
|
*
|
||||||
|
* Scripts related to the Flash dialog window (see fck_flash.html).
|
||||||
|
*/
|
||||||
|
|
||||||
|
var oEditor = window.parent.InnerDialogLoaded() ;
|
||||||
|
var FCK = oEditor.FCK ;
|
||||||
|
var FCKLang = oEditor.FCKLang ;
|
||||||
|
var FCKConfig = oEditor.FCKConfig ;
|
||||||
|
|
||||||
|
//#### Dialog Tabs
|
||||||
|
|
||||||
|
// Set the dialog tabs.
|
||||||
|
window.parent.AddTab( 'Info', oEditor.FCKLang.DlgInfoTab ) ;
|
||||||
|
|
||||||
|
if ( FCKConfig.FlashUpload )
|
||||||
|
window.parent.AddTab( 'Upload', FCKLang.DlgLnkUpload ) ;
|
||||||
|
|
||||||
|
if ( !FCKConfig.FlashDlgHideAdvanced )
|
||||||
|
window.parent.AddTab( 'Advanced', oEditor.FCKLang.DlgAdvancedTag ) ;
|
||||||
|
|
||||||
|
// Function called when a dialog tag is selected.
|
||||||
|
function OnDialogTabChange( tabCode )
|
||||||
|
{
|
||||||
|
ShowE('divInfo' , ( tabCode == 'Info' ) ) ;
|
||||||
|
ShowE('divUpload' , ( tabCode == 'Upload' ) ) ;
|
||||||
|
ShowE('divAdvanced' , ( tabCode == 'Advanced' ) ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get the selected flash embed (if available).
|
||||||
|
var oFakeImage = FCK.Selection.GetSelectedElement() ;
|
||||||
|
var oEmbed ;
|
||||||
|
|
||||||
|
if ( oFakeImage )
|
||||||
|
{
|
||||||
|
if ( oFakeImage.tagName == 'IMG' && oFakeImage.getAttribute('_fckflash') )
|
||||||
|
oEmbed = FCK.GetRealElement( oFakeImage ) ;
|
||||||
|
else
|
||||||
|
oFakeImage = null ;
|
||||||
|
}
|
||||||
|
|
||||||
|
window.onload = function()
|
||||||
|
{
|
||||||
|
// Translate the dialog box texts.
|
||||||
|
oEditor.FCKLanguageManager.TranslatePage(document) ;
|
||||||
|
|
||||||
|
// Load the selected element information (if any).
|
||||||
|
LoadSelection() ;
|
||||||
|
|
||||||
|
// Show/Hide the "Browse Server" button.
|
||||||
|
GetE('tdBrowse').style.display = FCKConfig.FlashBrowser ? '' : 'none' ;
|
||||||
|
|
||||||
|
// Set the actual uploader URL.
|
||||||
|
if ( FCKConfig.FlashUpload )
|
||||||
|
GetE('frmUpload').action = FCKConfig.FlashUploadURL ;
|
||||||
|
|
||||||
|
window.parent.SetAutoSize( true ) ;
|
||||||
|
|
||||||
|
// Activate the "OK" button.
|
||||||
|
window.parent.SetOkButton( true ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
function LoadSelection()
|
||||||
|
{
|
||||||
|
if ( ! oEmbed ) return ;
|
||||||
|
|
||||||
|
GetE('txtUrl').value = GetAttribute( oEmbed, 'src', '' ) ;
|
||||||
|
GetE('txtWidth').value = GetAttribute( oEmbed, 'width', '' ) ;
|
||||||
|
GetE('txtHeight').value = GetAttribute( oEmbed, 'height', '' ) ;
|
||||||
|
|
||||||
|
// Get Advances Attributes
|
||||||
|
GetE('txtAttId').value = oEmbed.id ;
|
||||||
|
GetE('chkAutoPlay').checked = GetAttribute( oEmbed, 'play', 'true' ) == 'true' ;
|
||||||
|
GetE('chkLoop').checked = GetAttribute( oEmbed, 'loop', 'true' ) == 'true' ;
|
||||||
|
GetE('chkMenu').checked = GetAttribute( oEmbed, 'menu', 'true' ) == 'true' ;
|
||||||
|
GetE('cmbScale').value = GetAttribute( oEmbed, 'scale', '' ).toLowerCase() ;
|
||||||
|
|
||||||
|
GetE('txtAttTitle').value = oEmbed.title ;
|
||||||
|
|
||||||
|
if ( oEditor.FCKBrowserInfo.IsIE )
|
||||||
|
{
|
||||||
|
GetE('txtAttClasses').value = oEmbed.getAttribute('className') || '' ;
|
||||||
|
GetE('txtAttStyle').value = oEmbed.style.cssText ;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
GetE('txtAttClasses').value = oEmbed.getAttribute('class',2) || '' ;
|
||||||
|
GetE('txtAttStyle').value = oEmbed.getAttribute('style',2) || '' ;
|
||||||
|
}
|
||||||
|
|
||||||
|
UpdatePreview() ;
|
||||||
|
}
|
||||||
|
|
||||||
|
//#### The OK button was hit.
|
||||||
|
function Ok()
|
||||||
|
{
|
||||||
|
if ( GetE('txtUrl').value.length == 0 )
|
||||||
|
{
|
||||||
|
window.parent.SetSelectedTab( 'Info' ) ;
|
||||||
|
GetE('txtUrl').focus() ;
|
||||||
|
|
||||||
|
alert( oEditor.FCKLang.DlgAlertUrl ) ;
|
||||||
|
|
||||||
|
return false ;
|
||||||
|
}
|
||||||
|
|
||||||
|
oEditor.FCKUndo.SaveUndoStep() ;
|
||||||
|
if ( !oEmbed )
|
||||||
|
{
|
||||||
|
oEmbed = FCK.EditorDocument.createElement( 'EMBED' ) ;
|
||||||
|
oFakeImage = null ;
|
||||||
|
}
|
||||||
|
UpdateEmbed( oEmbed ) ;
|
||||||
|
|
||||||
|
if ( !oFakeImage )
|
||||||
|
{
|
||||||
|
oFakeImage = oEditor.FCKDocumentProcessor_CreateFakeImage( 'FCK__Flash', oEmbed ) ;
|
||||||
|
oFakeImage.setAttribute( '_fckflash', 'true', 0 ) ;
|
||||||
|
oFakeImage = FCK.InsertElement( oFakeImage ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
oEditor.FCKFlashProcessor.RefreshView( oFakeImage, oEmbed ) ;
|
||||||
|
|
||||||
|
return true ;
|
||||||
|
}
|
||||||
|
|
||||||
|
function UpdateEmbed( e )
|
||||||
|
{
|
||||||
|
SetAttribute( e, 'type' , 'application/x-shockwave-flash' ) ;
|
||||||
|
SetAttribute( e, 'pluginspage' , 'http://www.macromedia.com/go/getflashplayer' ) ;
|
||||||
|
|
||||||
|
SetAttribute( e, 'src', GetE('txtUrl').value ) ;
|
||||||
|
SetAttribute( e, "width" , GetE('txtWidth').value ) ;
|
||||||
|
SetAttribute( e, "height", GetE('txtHeight').value ) ;
|
||||||
|
|
||||||
|
// Advances Attributes
|
||||||
|
|
||||||
|
SetAttribute( e, 'id' , GetE('txtAttId').value ) ;
|
||||||
|
SetAttribute( e, 'scale', GetE('cmbScale').value ) ;
|
||||||
|
|
||||||
|
SetAttribute( e, 'play', GetE('chkAutoPlay').checked ? 'true' : 'false' ) ;
|
||||||
|
SetAttribute( e, 'loop', GetE('chkLoop').checked ? 'true' : 'false' ) ;
|
||||||
|
SetAttribute( e, 'menu', GetE('chkMenu').checked ? 'true' : 'false' ) ;
|
||||||
|
|
||||||
|
SetAttribute( e, 'title' , GetE('txtAttTitle').value ) ;
|
||||||
|
|
||||||
|
if ( oEditor.FCKBrowserInfo.IsIE )
|
||||||
|
{
|
||||||
|
SetAttribute( e, 'className', GetE('txtAttClasses').value ) ;
|
||||||
|
e.style.cssText = GetE('txtAttStyle').value ;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
SetAttribute( e, 'class', GetE('txtAttClasses').value ) ;
|
||||||
|
SetAttribute( e, 'style', GetE('txtAttStyle').value ) ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var ePreview ;
|
||||||
|
|
||||||
|
function SetPreviewElement( previewEl )
|
||||||
|
{
|
||||||
|
ePreview = previewEl ;
|
||||||
|
|
||||||
|
if ( GetE('txtUrl').value.length > 0 )
|
||||||
|
UpdatePreview() ;
|
||||||
|
}
|
||||||
|
|
||||||
|
function UpdatePreview()
|
||||||
|
{
|
||||||
|
if ( !ePreview )
|
||||||
|
return ;
|
||||||
|
|
||||||
|
while ( ePreview.firstChild )
|
||||||
|
ePreview.removeChild( ePreview.firstChild ) ;
|
||||||
|
|
||||||
|
if ( GetE('txtUrl').value.length == 0 )
|
||||||
|
ePreview.innerHTML = ' ' ;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var oDoc = ePreview.ownerDocument || ePreview.document ;
|
||||||
|
var e = oDoc.createElement( 'EMBED' ) ;
|
||||||
|
|
||||||
|
SetAttribute( e, 'src', GetE('txtUrl').value ) ;
|
||||||
|
SetAttribute( e, 'type', 'application/x-shockwave-flash' ) ;
|
||||||
|
SetAttribute( e, 'width', '100%' ) ;
|
||||||
|
SetAttribute( e, 'height', '100%' ) ;
|
||||||
|
|
||||||
|
ePreview.appendChild( e ) ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// <embed id="ePreview" src="fck_flash/claims.swf" width="100%" height="100%" style="visibility:hidden" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer">
|
||||||
|
|
||||||
|
function BrowseServer()
|
||||||
|
{
|
||||||
|
OpenFileBrowser( FCKConfig.FlashBrowserURL, FCKConfig.FlashBrowserWindowWidth, FCKConfig.FlashBrowserWindowHeight ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
function SetUrl( url, width, height )
|
||||||
|
{
|
||||||
|
GetE('txtUrl').value = url ;
|
||||||
|
|
||||||
|
if ( width )
|
||||||
|
GetE('txtWidth').value = width ;
|
||||||
|
|
||||||
|
if ( height )
|
||||||
|
GetE('txtHeight').value = height ;
|
||||||
|
|
||||||
|
UpdatePreview() ;
|
||||||
|
|
||||||
|
window.parent.SetSelectedTab( 'Info' ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
function OnUploadCompleted( errorNumber, fileUrl, fileName, customMsg )
|
||||||
|
{
|
||||||
|
switch ( errorNumber )
|
||||||
|
{
|
||||||
|
case 0 : // No errors
|
||||||
|
alert( 'Your file has been successfully uploaded' ) ;
|
||||||
|
break ;
|
||||||
|
case 1 : // Custom error
|
||||||
|
alert( customMsg ) ;
|
||||||
|
return ;
|
||||||
|
case 101 : // Custom warning
|
||||||
|
alert( customMsg ) ;
|
||||||
|
break ;
|
||||||
|
case 201 :
|
||||||
|
alert( 'A file with the same name is already available. The uploaded file has been renamed to "' + fileName + '"' ) ;
|
||||||
|
break ;
|
||||||
|
case 202 :
|
||||||
|
alert( 'Invalid file type' ) ;
|
||||||
|
return ;
|
||||||
|
case 203 :
|
||||||
|
alert( "Security error. You probably don't have enough permissions to upload. Please check your server." ) ;
|
||||||
|
return ;
|
||||||
|
default :
|
||||||
|
alert( 'Error on file upload. Error number: ' + errorNumber ) ;
|
||||||
|
return ;
|
||||||
|
}
|
||||||
|
|
||||||
|
SetUrl( fileUrl ) ;
|
||||||
|
GetE('frmUpload').reset() ;
|
||||||
|
}
|
||||||
|
|
||||||
|
var oUploadAllowedExtRegex = new RegExp( FCKConfig.FlashUploadAllowedExtensions, 'i' ) ;
|
||||||
|
var oUploadDeniedExtRegex = new RegExp( FCKConfig.FlashUploadDeniedExtensions, 'i' ) ;
|
||||||
|
|
||||||
|
function CheckUpload()
|
||||||
|
{
|
||||||
|
var sFile = GetE('txtUploadFile').value ;
|
||||||
|
|
||||||
|
if ( sFile.length == 0 )
|
||||||
|
{
|
||||||
|
alert( 'Please select a file to upload' ) ;
|
||||||
|
return false ;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( ( FCKConfig.FlashUploadAllowedExtensions.length > 0 && !oUploadAllowedExtRegex.test( sFile ) ) ||
|
||||||
|
( FCKConfig.FlashUploadDeniedExtensions.length > 0 && oUploadDeniedExtRegex.test( sFile ) ) )
|
||||||
|
{
|
||||||
|
OnUploadCompleted( 202 ) ;
|
||||||
|
return false ;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true ;
|
||||||
|
}
|
||||||
@@ -0,0 +1,46 @@
|
|||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||||
|
<!--
|
||||||
|
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
||||||
|
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
||||||
|
*
|
||||||
|
* == BEGIN LICENSE ==
|
||||||
|
*
|
||||||
|
* Licensed under the terms of any of the following licenses at your
|
||||||
|
* choice:
|
||||||
|
*
|
||||||
|
* - GNU General Public License Version 2 or later (the "GPL")
|
||||||
|
* http://www.gnu.org/licenses/gpl.html
|
||||||
|
*
|
||||||
|
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
||||||
|
* http://www.gnu.org/licenses/lgpl.html
|
||||||
|
*
|
||||||
|
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
||||||
|
* http://www.mozilla.org/MPL/MPL-1.1.html
|
||||||
|
*
|
||||||
|
* == END LICENSE ==
|
||||||
|
*
|
||||||
|
* Preview page for the Flash dialog window.
|
||||||
|
-->
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title></title>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||||
|
<meta name="robots" content="noindex, nofollow">
|
||||||
|
<link href="../common/fck_dialog_common.css" rel="stylesheet" type="text/css" />
|
||||||
|
<script language="javascript">
|
||||||
|
|
||||||
|
// Sets the Skin CSS
|
||||||
|
document.write( '<link href="' + window.parent.FCKConfig.SkinPath + 'fck_dialog.css" type="text/css" rel="stylesheet">' ) ;
|
||||||
|
|
||||||
|
if ( window.parent.FCKConfig.BaseHref.length > 0 )
|
||||||
|
document.write( '<base href="' + window.parent.FCKConfig.BaseHref + '">' ) ;
|
||||||
|
|
||||||
|
window.onload = function()
|
||||||
|
{
|
||||||
|
window.parent.SetPreviewElement( document.body ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
<body style="COLOR: #000000; BACKGROUND-COLOR: #ffffff"></body>
|
||||||
|
</html>
|
||||||
106
htdocs/includes/fckeditor/editor/dialog/fck_form.html
Normal file
@@ -0,0 +1,106 @@
|
|||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
|
||||||
|
<!--
|
||||||
|
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
||||||
|
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
||||||
|
*
|
||||||
|
* == BEGIN LICENSE ==
|
||||||
|
*
|
||||||
|
* Licensed under the terms of any of the following licenses at your
|
||||||
|
* choice:
|
||||||
|
*
|
||||||
|
* - GNU General Public License Version 2 or later (the "GPL")
|
||||||
|
* http://www.gnu.org/licenses/gpl.html
|
||||||
|
*
|
||||||
|
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
||||||
|
* http://www.gnu.org/licenses/lgpl.html
|
||||||
|
*
|
||||||
|
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
||||||
|
* http://www.mozilla.org/MPL/MPL-1.1.html
|
||||||
|
*
|
||||||
|
* == END LICENSE ==
|
||||||
|
*
|
||||||
|
* Form dialog window.
|
||||||
|
-->
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<title></title>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
|
<meta content="noindex, nofollow" name="robots" />
|
||||||
|
<script src="common/fck_dialog_common.js" type="text/javascript"></script>
|
||||||
|
<script type="text/javascript">
|
||||||
|
|
||||||
|
var oEditor = window.parent.InnerDialogLoaded() ;
|
||||||
|
|
||||||
|
// Gets the document DOM
|
||||||
|
var oDOM = oEditor.FCK.EditorDocument ;
|
||||||
|
|
||||||
|
var oActiveEl = oEditor.FCKSelection.MoveToAncestorNode( 'FORM' ) ;
|
||||||
|
|
||||||
|
window.onload = function()
|
||||||
|
{
|
||||||
|
// First of all, translate the dialog box texts
|
||||||
|
oEditor.FCKLanguageManager.TranslatePage(document) ;
|
||||||
|
|
||||||
|
if ( oActiveEl )
|
||||||
|
{
|
||||||
|
GetE('txtName').value = oActiveEl.name ;
|
||||||
|
GetE('txtAction').value = oActiveEl.getAttribute( 'action', 2 ) ;
|
||||||
|
GetE('txtMethod').value = oActiveEl.method ;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
oActiveEl = null ;
|
||||||
|
|
||||||
|
window.parent.SetOkButton( true ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
function Ok()
|
||||||
|
{
|
||||||
|
if ( !oActiveEl )
|
||||||
|
{
|
||||||
|
oActiveEl = oEditor.FCK.InsertElement( 'form' ) ;
|
||||||
|
|
||||||
|
if ( oEditor.FCKBrowserInfo.IsGeckoLike )
|
||||||
|
oEditor.FCKTools.AppendBogusBr( oActiveEl ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
oActiveEl.name = GetE('txtName').value ;
|
||||||
|
SetAttribute( oActiveEl, 'action', GetE('txtAction').value ) ;
|
||||||
|
oActiveEl.method = GetE('txtMethod').value ;
|
||||||
|
|
||||||
|
return true ;
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
<body style="overflow: hidden">
|
||||||
|
<table width="100%" style="height: 100%">
|
||||||
|
<tr>
|
||||||
|
<td align="center">
|
||||||
|
<table cellspacing="0" cellpadding="0" width="80%" border="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<span fcklang="DlgFormName">Name</span><br />
|
||||||
|
<input style="width: 100%" type="text" id="txtName" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<span fcklang="DlgFormAction">Action</span><br />
|
||||||
|
<input style="width: 100%" type="text" id="txtAction" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<span fcklang="DlgFormMethod">Method</span><br />
|
||||||
|
<select id="txtMethod">
|
||||||
|
<option value="get" selected="selected">GET</option>
|
||||||
|
<option value="post">POST</option>
|
||||||
|
</select>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
118
htdocs/includes/fckeditor/editor/dialog/fck_hiddenfield.html
Normal file
@@ -0,0 +1,118 @@
|
|||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
|
||||||
|
<!--
|
||||||
|
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
||||||
|
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
||||||
|
*
|
||||||
|
* == BEGIN LICENSE ==
|
||||||
|
*
|
||||||
|
* Licensed under the terms of any of the following licenses at your
|
||||||
|
* choice:
|
||||||
|
*
|
||||||
|
* - GNU General Public License Version 2 or later (the "GPL")
|
||||||
|
* http://www.gnu.org/licenses/gpl.html
|
||||||
|
*
|
||||||
|
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
||||||
|
* http://www.gnu.org/licenses/lgpl.html
|
||||||
|
*
|
||||||
|
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
||||||
|
* http://www.mozilla.org/MPL/MPL-1.1.html
|
||||||
|
*
|
||||||
|
* == END LICENSE ==
|
||||||
|
*
|
||||||
|
* Hidden Field dialog window.
|
||||||
|
-->
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<title>Hidden Field Properties</title>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
|
<meta content="noindex, nofollow" name="robots" />
|
||||||
|
<script src="common/fck_dialog_common.js" type="text/javascript"></script>
|
||||||
|
<script type="text/javascript">
|
||||||
|
|
||||||
|
var oEditor = window.parent.InnerDialogLoaded() ;
|
||||||
|
var FCK = oEditor.FCK ;
|
||||||
|
|
||||||
|
// Gets the document DOM
|
||||||
|
var oDOM = FCK.EditorDocument ;
|
||||||
|
|
||||||
|
// Get the selected flash embed (if available).
|
||||||
|
var oFakeImage = FCK.Selection.GetSelectedElement() ;
|
||||||
|
var oActiveEl ;
|
||||||
|
|
||||||
|
if ( oFakeImage )
|
||||||
|
{
|
||||||
|
if ( oFakeImage.tagName == 'IMG' && oFakeImage.getAttribute('_fckinputhidden') )
|
||||||
|
oActiveEl = FCK.GetRealElement( oFakeImage ) ;
|
||||||
|
else
|
||||||
|
oFakeImage = null ;
|
||||||
|
}
|
||||||
|
|
||||||
|
window.onload = function()
|
||||||
|
{
|
||||||
|
// First of all, translate the dialog box texts
|
||||||
|
oEditor.FCKLanguageManager.TranslatePage(document) ;
|
||||||
|
|
||||||
|
if ( oActiveEl )
|
||||||
|
{
|
||||||
|
GetE('txtName').value = oActiveEl.name ;
|
||||||
|
GetE('txtValue').value = oActiveEl.value ;
|
||||||
|
}
|
||||||
|
|
||||||
|
window.parent.SetOkButton( true ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function Ok()
|
||||||
|
{
|
||||||
|
oEditor.FCKUndo.SaveUndoStep() ;
|
||||||
|
|
||||||
|
if ( !oActiveEl )
|
||||||
|
{
|
||||||
|
oActiveEl = FCK.EditorDocument.createElement( 'INPUT' ) ;
|
||||||
|
oActiveEl.type = 'hidden' ;
|
||||||
|
|
||||||
|
oFakeImage = null ;
|
||||||
|
}
|
||||||
|
|
||||||
|
oActiveEl.name = GetE('txtName').value ;
|
||||||
|
SetAttribute( oActiveEl, 'value', GetE('txtValue').value ) ;
|
||||||
|
|
||||||
|
if ( !oFakeImage )
|
||||||
|
{
|
||||||
|
oFakeImage = oEditor.FCKDocumentProcessor_CreateFakeImage( 'FCK__InputHidden', oActiveEl ) ;
|
||||||
|
oFakeImage.setAttribute( '_fckinputhidden', 'true', 0 ) ;
|
||||||
|
oFakeImage = FCK.InsertElement( oFakeImage ) ;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
oEditor.FCKUndo.SaveUndoStep() ;
|
||||||
|
|
||||||
|
oEditor.FCKFlashProcessor.RefreshView( oFakeImage, oActiveEl ) ;
|
||||||
|
|
||||||
|
return true ;
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
<body style="overflow: hidden" scroll="no">
|
||||||
|
<table height="100%" width="100%">
|
||||||
|
<tr>
|
||||||
|
<td align="center">
|
||||||
|
<table border="0" class="inhoud" cellpadding="0" cellspacing="0" width="80%">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<span fcklang="DlgHiddenName">Name</span><br />
|
||||||
|
<input type="text" size="20" id="txtName" style="width: 100%" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<span fcklang="DlgHiddenValue">Value</span><br />
|
||||||
|
<input type="text" size="30" id="txtValue" style="width: 100%" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
252
htdocs/includes/fckeditor/editor/dialog/fck_image.html
Normal file
@@ -0,0 +1,252 @@
|
|||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||||
|
<!--
|
||||||
|
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
||||||
|
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
||||||
|
*
|
||||||
|
* == BEGIN LICENSE ==
|
||||||
|
*
|
||||||
|
* Licensed under the terms of any of the following licenses at your
|
||||||
|
* choice:
|
||||||
|
*
|
||||||
|
* - GNU General Public License Version 2 or later (the "GPL")
|
||||||
|
* http://www.gnu.org/licenses/gpl.html
|
||||||
|
*
|
||||||
|
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
||||||
|
* http://www.gnu.org/licenses/lgpl.html
|
||||||
|
*
|
||||||
|
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
||||||
|
* http://www.mozilla.org/MPL/MPL-1.1.html
|
||||||
|
*
|
||||||
|
* == END LICENSE ==
|
||||||
|
*
|
||||||
|
* Image Properties dialog window.
|
||||||
|
-->
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<title>Image Properties</title>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
|
<meta name="robots" content="noindex, nofollow" />
|
||||||
|
<script src="common/fck_dialog_common.js" type="text/javascript"></script>
|
||||||
|
<script src="fck_image/fck_image.js" type="text/javascript"></script>
|
||||||
|
<link href="common/fck_dialog_common.css" rel="stylesheet" type="text/css" />
|
||||||
|
</head>
|
||||||
|
<body scroll="no" style="overflow: hidden">
|
||||||
|
<div id="divInfo">
|
||||||
|
<table cellspacing="1" cellpadding="1" border="0" width="100%" height="100%">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<table cellspacing="0" cellpadding="0" width="100%" border="0">
|
||||||
|
<tr>
|
||||||
|
<td width="100%">
|
||||||
|
<span fcklang="DlgImgURL">URL</span>
|
||||||
|
</td>
|
||||||
|
<td id="tdBrowse" style="display: none" nowrap="nowrap" rowspan="2">
|
||||||
|
|
||||||
|
<input id="btnBrowse" onclick="BrowseServer();" type="button" value="Browse Server"
|
||||||
|
fcklang="DlgBtnBrowseServer" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td valign="top">
|
||||||
|
<input id="txtUrl" style="width: 100%" type="text" onblur="UpdatePreview();" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<span fcklang="DlgImgAlt">Short Description</span><br />
|
||||||
|
<input id="txtAlt" style="width: 100%" type="text" /><br />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr height="100%">
|
||||||
|
<td valign="top">
|
||||||
|
<table cellspacing="0" cellpadding="0" width="100%" border="0" height="100%">
|
||||||
|
<tr>
|
||||||
|
<td valign="top">
|
||||||
|
<br />
|
||||||
|
<table cellspacing="0" cellpadding="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td nowrap="nowrap">
|
||||||
|
<span fcklang="DlgImgWidth">Width</span> </td>
|
||||||
|
<td>
|
||||||
|
<input type="text" size="3" id="txtWidth" onkeyup="OnSizeChanged('Width',this.value);" /></td>
|
||||||
|
<td rowspan="2">
|
||||||
|
<div id="btnLockSizes" class="BtnLocked" onmouseover="this.className = (bLockRatio ? 'BtnLocked' : 'BtnUnlocked' ) + ' BtnOver';"
|
||||||
|
onmouseout="this.className = (bLockRatio ? 'BtnLocked' : 'BtnUnlocked' );" title="Lock Sizes"
|
||||||
|
onclick="SwitchLock(this);">
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
<td rowspan="2">
|
||||||
|
<div id="btnResetSize" class="BtnReset" onmouseover="this.className='BtnReset BtnOver';"
|
||||||
|
onmouseout="this.className='BtnReset';" title="Reset Size" onclick="ResetSizes();">
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td nowrap="nowrap">
|
||||||
|
<span fcklang="DlgImgHeight">Height</span> </td>
|
||||||
|
<td>
|
||||||
|
<input type="text" size="3" id="txtHeight" onkeyup="OnSizeChanged('Height',this.value);" /></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<br />
|
||||||
|
<table cellspacing="0" cellpadding="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td nowrap="nowrap">
|
||||||
|
<span fcklang="DlgImgBorder">Border</span> </td>
|
||||||
|
<td>
|
||||||
|
<input type="text" size="2" value="" id="txtBorder" onkeyup="UpdatePreview();" /></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td nowrap="nowrap">
|
||||||
|
<span fcklang="DlgImgHSpace">HSpace</span> </td>
|
||||||
|
<td>
|
||||||
|
<input type="text" size="2" id="txtHSpace" onkeyup="UpdatePreview();" /></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td nowrap="nowrap">
|
||||||
|
<span fcklang="DlgImgVSpace">VSpace</span> </td>
|
||||||
|
<td>
|
||||||
|
<input type="text" size="2" id="txtVSpace" onkeyup="UpdatePreview();" /></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td nowrap="nowrap">
|
||||||
|
<span fcklang="DlgImgAlign">Align</span> </td>
|
||||||
|
<td>
|
||||||
|
<select id="cmbAlign" onchange="UpdatePreview();">
|
||||||
|
<option value="" selected="selected"></option>
|
||||||
|
<option fcklang="DlgImgAlignLeft" value="left">Left</option>
|
||||||
|
<option fcklang="DlgImgAlignAbsBottom" value="absBottom">Abs Bottom</option>
|
||||||
|
<option fcklang="DlgImgAlignAbsMiddle" value="absMiddle">Abs Middle</option>
|
||||||
|
<option fcklang="DlgImgAlignBaseline" value="baseline">Baseline</option>
|
||||||
|
<option fcklang="DlgImgAlignBottom" value="bottom">Bottom</option>
|
||||||
|
<option fcklang="DlgImgAlignMiddle" value="middle">Middle</option>
|
||||||
|
<option fcklang="DlgImgAlignRight" value="right">Right</option>
|
||||||
|
<option fcklang="DlgImgAlignTextTop" value="textTop">Text Top</option>
|
||||||
|
<option fcklang="DlgImgAlignTop" value="top">Top</option>
|
||||||
|
</select>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
</td>
|
||||||
|
<td width="100%" valign="top">
|
||||||
|
<table cellpadding="0" cellspacing="0" width="100%" style="table-layout: fixed">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<span fcklang="DlgImgPreview">Preview</span></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td valign="top">
|
||||||
|
<iframe class="ImagePreviewArea" src="fck_image/fck_image_preview.html" frameborder="0"
|
||||||
|
marginheight="0" marginwidth="0"></iframe>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div id="divUpload" style="display: none">
|
||||||
|
<form id="frmUpload" method="post" target="UploadWindow" enctype="multipart/form-data"
|
||||||
|
action="" onsubmit="return CheckUpload();">
|
||||||
|
<span fcklang="DlgLnkUpload">Upload</span><br />
|
||||||
|
<input id="txtUploadFile" style="width: 100%" type="file" size="40" name="NewFile" /><br />
|
||||||
|
<br />
|
||||||
|
<input id="btnUpload" type="submit" value="Send it to the Server" fcklang="DlgLnkBtnUpload" />
|
||||||
|
<iframe name="UploadWindow" style="display: none" src="javascript:void(0)"></iframe>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
<div id="divLink" style="display: none">
|
||||||
|
<table cellspacing="1" cellpadding="1" border="0" width="100%">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<div>
|
||||||
|
<span fcklang="DlgLnkURL">URL</span><br />
|
||||||
|
<input id="txtLnkUrl" style="width: 100%" type="text" onblur="UpdatePreview();" />
|
||||||
|
</div>
|
||||||
|
<div id="divLnkBrowseServer" align="right">
|
||||||
|
<input type="button" value="Browse Server" fcklang="DlgBtnBrowseServer" onclick="LnkBrowseServer();" />
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<span fcklang="DlgLnkTarget">Target</span><br />
|
||||||
|
<select id="cmbLnkTarget">
|
||||||
|
<option value="" fcklang="DlgGenNotSet" selected="selected"><not set></option>
|
||||||
|
<option value="_blank" fcklang="DlgLnkTargetBlank">New Window (_blank)</option>
|
||||||
|
<option value="_top" fcklang="DlgLnkTargetTop">Topmost Window (_top)</option>
|
||||||
|
<option value="_self" fcklang="DlgLnkTargetSelf">Same Window (_self)</option>
|
||||||
|
<option value="_parent" fcklang="DlgLnkTargetParent">Parent Window (_parent)</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div id="divAdvanced" style="display: none">
|
||||||
|
<table cellspacing="0" cellpadding="0" width="100%" align="center" border="0">
|
||||||
|
<tr>
|
||||||
|
<td valign="top" width="50%">
|
||||||
|
<span fcklang="DlgGenId">Id</span><br />
|
||||||
|
<input id="txtAttId" style="width: 100%" type="text" />
|
||||||
|
</td>
|
||||||
|
<td width="1">
|
||||||
|
</td>
|
||||||
|
<td valign="top">
|
||||||
|
<table cellspacing="0" cellpadding="0" width="100%" align="center" border="0">
|
||||||
|
<tr>
|
||||||
|
<td width="60%">
|
||||||
|
<span fcklang="DlgGenLangDir">Language Direction</span><br />
|
||||||
|
<select id="cmbAttLangDir" style="width: 100%">
|
||||||
|
<option value="" fcklang="DlgGenNotSet" selected="selected"><not set></option>
|
||||||
|
<option value="ltr" fcklang="DlgGenLangDirLtr">Left to Right (LTR)</option>
|
||||||
|
<option value="rtl" fcklang="DlgGenLangDirRtl">Right to Left (RTL)</option>
|
||||||
|
</select>
|
||||||
|
</td>
|
||||||
|
<td width="1%">
|
||||||
|
</td>
|
||||||
|
<td nowrap="nowrap">
|
||||||
|
<span fcklang="DlgGenLangCode">Language Code</span><br />
|
||||||
|
<input id="txtAttLangCode" style="width: 100%" type="text" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colspan="3">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colspan="3">
|
||||||
|
<span fcklang="DlgGenLongDescr">Long Description URL</span><br />
|
||||||
|
<input id="txtLongDesc" style="width: 100%" type="text" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colspan="3">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td valign="top">
|
||||||
|
<span fcklang="DlgGenClass">Stylesheet Classes</span><br />
|
||||||
|
<input id="txtAttClasses" style="width: 100%" type="text" />
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
</td>
|
||||||
|
<td valign="top">
|
||||||
|
<span fcklang="DlgGenTitle">Advisory Title</span><br />
|
||||||
|
<input id="txtAttTitle" style="width: 100%" type="text" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<span fcklang="DlgGenStyle">Style</span><br />
|
||||||
|
<input id="txtAttStyle" style="width: 100%" type="text" />
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
492
htdocs/includes/fckeditor/editor/dialog/fck_image/fck_image.js
Normal file
@@ -0,0 +1,492 @@
|
|||||||
|
/*
|
||||||
|
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
||||||
|
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
||||||
|
*
|
||||||
|
* == BEGIN LICENSE ==
|
||||||
|
*
|
||||||
|
* Licensed under the terms of any of the following licenses at your
|
||||||
|
* choice:
|
||||||
|
*
|
||||||
|
* - GNU General Public License Version 2 or later (the "GPL")
|
||||||
|
* http://www.gnu.org/licenses/gpl.html
|
||||||
|
*
|
||||||
|
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
||||||
|
* http://www.gnu.org/licenses/lgpl.html
|
||||||
|
*
|
||||||
|
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
||||||
|
* http://www.mozilla.org/MPL/MPL-1.1.html
|
||||||
|
*
|
||||||
|
* == END LICENSE ==
|
||||||
|
*
|
||||||
|
* Scripts related to the Image dialog window (see fck_image.html).
|
||||||
|
*/
|
||||||
|
|
||||||
|
var oEditor = window.parent.InnerDialogLoaded() ;
|
||||||
|
var FCK = oEditor.FCK ;
|
||||||
|
var FCKLang = oEditor.FCKLang ;
|
||||||
|
var FCKConfig = oEditor.FCKConfig ;
|
||||||
|
var FCKDebug = oEditor.FCKDebug ;
|
||||||
|
|
||||||
|
var bImageButton = ( document.location.search.length > 0 && document.location.search.substr(1) == 'ImageButton' ) ;
|
||||||
|
|
||||||
|
//#### Dialog Tabs
|
||||||
|
|
||||||
|
// Set the dialog tabs.
|
||||||
|
window.parent.AddTab( 'Info', FCKLang.DlgImgInfoTab ) ;
|
||||||
|
|
||||||
|
if ( !bImageButton && !FCKConfig.ImageDlgHideLink )
|
||||||
|
window.parent.AddTab( 'Link', FCKLang.DlgImgLinkTab ) ;
|
||||||
|
|
||||||
|
if ( FCKConfig.ImageUpload )
|
||||||
|
window.parent.AddTab( 'Upload', FCKLang.DlgLnkUpload ) ;
|
||||||
|
|
||||||
|
if ( !FCKConfig.ImageDlgHideAdvanced )
|
||||||
|
window.parent.AddTab( 'Advanced', FCKLang.DlgAdvancedTag ) ;
|
||||||
|
|
||||||
|
// Function called when a dialog tag is selected.
|
||||||
|
function OnDialogTabChange( tabCode )
|
||||||
|
{
|
||||||
|
ShowE('divInfo' , ( tabCode == 'Info' ) ) ;
|
||||||
|
ShowE('divLink' , ( tabCode == 'Link' ) ) ;
|
||||||
|
ShowE('divUpload' , ( tabCode == 'Upload' ) ) ;
|
||||||
|
ShowE('divAdvanced' , ( tabCode == 'Advanced' ) ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get the selected image (if available).
|
||||||
|
var oImage = FCK.Selection.GetSelectedElement() ;
|
||||||
|
|
||||||
|
if ( oImage && oImage.tagName != 'IMG' && !( oImage.tagName == 'INPUT' && oImage.type == 'image' ) )
|
||||||
|
oImage = null ;
|
||||||
|
|
||||||
|
// Get the active link.
|
||||||
|
var oLink = FCK.Selection.MoveToAncestorNode( 'A' ) ;
|
||||||
|
|
||||||
|
var oImageOriginal ;
|
||||||
|
|
||||||
|
function UpdateOriginal( resetSize )
|
||||||
|
{
|
||||||
|
if ( !eImgPreview )
|
||||||
|
return ;
|
||||||
|
|
||||||
|
if ( GetE('txtUrl').value.length == 0 )
|
||||||
|
{
|
||||||
|
oImageOriginal = null ;
|
||||||
|
return ;
|
||||||
|
}
|
||||||
|
|
||||||
|
oImageOriginal = document.createElement( 'IMG' ) ; // new Image() ;
|
||||||
|
|
||||||
|
if ( resetSize )
|
||||||
|
{
|
||||||
|
oImageOriginal.onload = function()
|
||||||
|
{
|
||||||
|
this.onload = null ;
|
||||||
|
ResetSizes() ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
oImageOriginal.src = eImgPreview.src ;
|
||||||
|
}
|
||||||
|
|
||||||
|
var bPreviewInitialized ;
|
||||||
|
|
||||||
|
window.onload = function()
|
||||||
|
{
|
||||||
|
// Translate the dialog box texts.
|
||||||
|
oEditor.FCKLanguageManager.TranslatePage(document) ;
|
||||||
|
|
||||||
|
GetE('btnLockSizes').title = FCKLang.DlgImgLockRatio ;
|
||||||
|
GetE('btnResetSize').title = FCKLang.DlgBtnResetSize ;
|
||||||
|
|
||||||
|
// Load the selected element information (if any).
|
||||||
|
LoadSelection() ;
|
||||||
|
|
||||||
|
// Show/Hide the "Browse Server" button.
|
||||||
|
GetE('tdBrowse').style.display = FCKConfig.ImageBrowser ? '' : 'none' ;
|
||||||
|
GetE('divLnkBrowseServer').style.display = FCKConfig.LinkBrowser ? '' : 'none' ;
|
||||||
|
|
||||||
|
UpdateOriginal() ;
|
||||||
|
|
||||||
|
// Set the actual uploader URL.
|
||||||
|
if ( FCKConfig.ImageUpload )
|
||||||
|
GetE('frmUpload').action = FCKConfig.ImageUploadURL ;
|
||||||
|
|
||||||
|
window.parent.SetAutoSize( true ) ;
|
||||||
|
|
||||||
|
// Activate the "OK" button.
|
||||||
|
window.parent.SetOkButton( true ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
function LoadSelection()
|
||||||
|
{
|
||||||
|
if ( ! oImage ) return ;
|
||||||
|
|
||||||
|
var sUrl = oImage.getAttribute( '_fcksavedurl' ) ;
|
||||||
|
if ( sUrl == null )
|
||||||
|
sUrl = GetAttribute( oImage, 'src', '' ) ;
|
||||||
|
|
||||||
|
GetE('txtUrl').value = sUrl ;
|
||||||
|
GetE('txtAlt').value = GetAttribute( oImage, 'alt', '' ) ;
|
||||||
|
GetE('txtVSpace').value = GetAttribute( oImage, 'vspace', '' ) ;
|
||||||
|
GetE('txtHSpace').value = GetAttribute( oImage, 'hspace', '' ) ;
|
||||||
|
GetE('txtBorder').value = GetAttribute( oImage, 'border', '' ) ;
|
||||||
|
GetE('cmbAlign').value = GetAttribute( oImage, 'align', '' ) ;
|
||||||
|
|
||||||
|
var iWidth, iHeight ;
|
||||||
|
|
||||||
|
var regexSize = /^\s*(\d+)px\s*$/i ;
|
||||||
|
|
||||||
|
if ( oImage.style.width )
|
||||||
|
{
|
||||||
|
var aMatchW = oImage.style.width.match( regexSize ) ;
|
||||||
|
if ( aMatchW )
|
||||||
|
{
|
||||||
|
iWidth = aMatchW[1] ;
|
||||||
|
oImage.style.width = '' ;
|
||||||
|
SetAttribute( oImage, 'width' , iWidth ) ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( oImage.style.height )
|
||||||
|
{
|
||||||
|
var aMatchH = oImage.style.height.match( regexSize ) ;
|
||||||
|
if ( aMatchH )
|
||||||
|
{
|
||||||
|
iHeight = aMatchH[1] ;
|
||||||
|
oImage.style.height = '' ;
|
||||||
|
SetAttribute( oImage, 'height', iHeight ) ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
GetE('txtWidth').value = iWidth ? iWidth : GetAttribute( oImage, "width", '' ) ;
|
||||||
|
GetE('txtHeight').value = iHeight ? iHeight : GetAttribute( oImage, "height", '' ) ;
|
||||||
|
|
||||||
|
// Get Advances Attributes
|
||||||
|
GetE('txtAttId').value = oImage.id ;
|
||||||
|
GetE('cmbAttLangDir').value = oImage.dir ;
|
||||||
|
GetE('txtAttLangCode').value = oImage.lang ;
|
||||||
|
GetE('txtAttTitle').value = oImage.title ;
|
||||||
|
GetE('txtLongDesc').value = oImage.longDesc ;
|
||||||
|
|
||||||
|
if ( oEditor.FCKBrowserInfo.IsIE )
|
||||||
|
{
|
||||||
|
GetE('txtAttClasses').value = oImage.className || '' ;
|
||||||
|
GetE('txtAttStyle').value = oImage.style.cssText ;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
GetE('txtAttClasses').value = oImage.getAttribute('class',2) || '' ;
|
||||||
|
GetE('txtAttStyle').value = oImage.getAttribute('style',2) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( oLink )
|
||||||
|
{
|
||||||
|
var sLinkUrl = oLink.getAttribute( '_fcksavedurl' ) ;
|
||||||
|
if ( sLinkUrl == null )
|
||||||
|
sLinkUrl = oLink.getAttribute('href',2) ;
|
||||||
|
|
||||||
|
GetE('txtLnkUrl').value = sLinkUrl ;
|
||||||
|
GetE('cmbLnkTarget').value = oLink.target ;
|
||||||
|
}
|
||||||
|
|
||||||
|
UpdatePreview() ;
|
||||||
|
}
|
||||||
|
|
||||||
|
//#### The OK button was hit.
|
||||||
|
function Ok()
|
||||||
|
{
|
||||||
|
if ( GetE('txtUrl').value.length == 0 )
|
||||||
|
{
|
||||||
|
window.parent.SetSelectedTab( 'Info' ) ;
|
||||||
|
GetE('txtUrl').focus() ;
|
||||||
|
|
||||||
|
alert( FCKLang.DlgImgAlertUrl ) ;
|
||||||
|
|
||||||
|
return false ;
|
||||||
|
}
|
||||||
|
|
||||||
|
var bHasImage = ( oImage != null ) ;
|
||||||
|
|
||||||
|
if ( bHasImage && bImageButton && oImage.tagName == 'IMG' )
|
||||||
|
{
|
||||||
|
if ( confirm( 'Do you want to transform the selected image on a image button?' ) )
|
||||||
|
oImage = null ;
|
||||||
|
}
|
||||||
|
else if ( bHasImage && !bImageButton && oImage.tagName == 'INPUT' )
|
||||||
|
{
|
||||||
|
if ( confirm( 'Do you want to transform the selected image button on a simple image?' ) )
|
||||||
|
oImage = null ;
|
||||||
|
}
|
||||||
|
|
||||||
|
oEditor.FCKUndo.SaveUndoStep() ;
|
||||||
|
if ( !bHasImage )
|
||||||
|
{
|
||||||
|
if ( bImageButton )
|
||||||
|
{
|
||||||
|
oImage = FCK.EditorDocument.createElement( 'input' ) ;
|
||||||
|
oImage.type = 'image' ;
|
||||||
|
oImage = FCK.InsertElement( oImage ) ;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
oImage = FCK.InsertElement( 'img' ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
UpdateImage( oImage ) ;
|
||||||
|
|
||||||
|
var sLnkUrl = GetE('txtLnkUrl').value.Trim() ;
|
||||||
|
|
||||||
|
if ( sLnkUrl.length == 0 )
|
||||||
|
{
|
||||||
|
if ( oLink )
|
||||||
|
FCK.ExecuteNamedCommand( 'Unlink' ) ;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if ( oLink ) // Modifying an existent link.
|
||||||
|
oLink.href = sLnkUrl ;
|
||||||
|
else // Creating a new link.
|
||||||
|
{
|
||||||
|
if ( !bHasImage )
|
||||||
|
oEditor.FCKSelection.SelectNode( oImage ) ;
|
||||||
|
|
||||||
|
oLink = oEditor.FCK.CreateLink( sLnkUrl )[0] ;
|
||||||
|
|
||||||
|
if ( !bHasImage )
|
||||||
|
{
|
||||||
|
oEditor.FCKSelection.SelectNode( oLink ) ;
|
||||||
|
oEditor.FCKSelection.Collapse( false ) ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
SetAttribute( oLink, '_fcksavedurl', sLnkUrl ) ;
|
||||||
|
SetAttribute( oLink, 'target', GetE('cmbLnkTarget').value ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true ;
|
||||||
|
}
|
||||||
|
|
||||||
|
function UpdateImage( e, skipId )
|
||||||
|
{
|
||||||
|
e.src = GetE('txtUrl').value ;
|
||||||
|
SetAttribute( e, "_fcksavedurl", GetE('txtUrl').value ) ;
|
||||||
|
SetAttribute( e, "alt" , GetE('txtAlt').value ) ;
|
||||||
|
SetAttribute( e, "width" , GetE('txtWidth').value ) ;
|
||||||
|
SetAttribute( e, "height", GetE('txtHeight').value ) ;
|
||||||
|
SetAttribute( e, "vspace", GetE('txtVSpace').value ) ;
|
||||||
|
SetAttribute( e, "hspace", GetE('txtHSpace').value ) ;
|
||||||
|
SetAttribute( e, "border", GetE('txtBorder').value ) ;
|
||||||
|
SetAttribute( e, "align" , GetE('cmbAlign').value ) ;
|
||||||
|
|
||||||
|
// Advances Attributes
|
||||||
|
|
||||||
|
if ( ! skipId )
|
||||||
|
SetAttribute( e, 'id', GetE('txtAttId').value ) ;
|
||||||
|
|
||||||
|
SetAttribute( e, 'dir' , GetE('cmbAttLangDir').value ) ;
|
||||||
|
SetAttribute( e, 'lang' , GetE('txtAttLangCode').value ) ;
|
||||||
|
SetAttribute( e, 'title' , GetE('txtAttTitle').value ) ;
|
||||||
|
SetAttribute( e, 'longDesc' , GetE('txtLongDesc').value ) ;
|
||||||
|
|
||||||
|
if ( oEditor.FCKBrowserInfo.IsIE )
|
||||||
|
{
|
||||||
|
e.className = GetE('txtAttClasses').value ;
|
||||||
|
e.style.cssText = GetE('txtAttStyle').value ;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
SetAttribute( e, 'class' , GetE('txtAttClasses').value ) ;
|
||||||
|
SetAttribute( e, 'style', GetE('txtAttStyle').value ) ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var eImgPreview ;
|
||||||
|
var eImgPreviewLink ;
|
||||||
|
|
||||||
|
function SetPreviewElements( imageElement, linkElement )
|
||||||
|
{
|
||||||
|
eImgPreview = imageElement ;
|
||||||
|
eImgPreviewLink = linkElement ;
|
||||||
|
|
||||||
|
UpdatePreview() ;
|
||||||
|
UpdateOriginal() ;
|
||||||
|
|
||||||
|
bPreviewInitialized = true ;
|
||||||
|
}
|
||||||
|
|
||||||
|
function UpdatePreview()
|
||||||
|
{
|
||||||
|
if ( !eImgPreview || !eImgPreviewLink )
|
||||||
|
return ;
|
||||||
|
|
||||||
|
if ( GetE('txtUrl').value.length == 0 )
|
||||||
|
eImgPreviewLink.style.display = 'none' ;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
UpdateImage( eImgPreview, true ) ;
|
||||||
|
|
||||||
|
if ( GetE('txtLnkUrl').value.Trim().length > 0 )
|
||||||
|
eImgPreviewLink.href = 'javascript:void(null);' ;
|
||||||
|
else
|
||||||
|
SetAttribute( eImgPreviewLink, 'href', '' ) ;
|
||||||
|
|
||||||
|
eImgPreviewLink.style.display = '' ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var bLockRatio = true ;
|
||||||
|
|
||||||
|
function SwitchLock( lockButton )
|
||||||
|
{
|
||||||
|
bLockRatio = !bLockRatio ;
|
||||||
|
lockButton.className = bLockRatio ? 'BtnLocked' : 'BtnUnlocked' ;
|
||||||
|
lockButton.title = bLockRatio ? 'Lock sizes' : 'Unlock sizes' ;
|
||||||
|
|
||||||
|
if ( bLockRatio )
|
||||||
|
{
|
||||||
|
if ( GetE('txtWidth').value.length > 0 )
|
||||||
|
OnSizeChanged( 'Width', GetE('txtWidth').value ) ;
|
||||||
|
else
|
||||||
|
OnSizeChanged( 'Height', GetE('txtHeight').value ) ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Fired when the width or height input texts change
|
||||||
|
function OnSizeChanged( dimension, value )
|
||||||
|
{
|
||||||
|
// Verifies if the aspect ration has to be maintained
|
||||||
|
if ( oImageOriginal && bLockRatio )
|
||||||
|
{
|
||||||
|
var e = dimension == 'Width' ? GetE('txtHeight') : GetE('txtWidth') ;
|
||||||
|
|
||||||
|
if ( value.length == 0 || isNaN( value ) )
|
||||||
|
{
|
||||||
|
e.value = '' ;
|
||||||
|
return ;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( dimension == 'Width' )
|
||||||
|
value = value == 0 ? 0 : Math.round( oImageOriginal.height * ( value / oImageOriginal.width ) ) ;
|
||||||
|
else
|
||||||
|
value = value == 0 ? 0 : Math.round( oImageOriginal.width * ( value / oImageOriginal.height ) ) ;
|
||||||
|
|
||||||
|
if ( !isNaN( value ) )
|
||||||
|
e.value = value ;
|
||||||
|
}
|
||||||
|
|
||||||
|
UpdatePreview() ;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Fired when the Reset Size button is clicked
|
||||||
|
function ResetSizes()
|
||||||
|
{
|
||||||
|
if ( ! oImageOriginal ) return ;
|
||||||
|
|
||||||
|
GetE('txtWidth').value = oImageOriginal.width ;
|
||||||
|
GetE('txtHeight').value = oImageOriginal.height ;
|
||||||
|
|
||||||
|
UpdatePreview() ;
|
||||||
|
}
|
||||||
|
|
||||||
|
function BrowseServer()
|
||||||
|
{
|
||||||
|
OpenServerBrowser(
|
||||||
|
'Image',
|
||||||
|
FCKConfig.ImageBrowserURL,
|
||||||
|
FCKConfig.ImageBrowserWindowWidth,
|
||||||
|
FCKConfig.ImageBrowserWindowHeight ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
function LnkBrowseServer()
|
||||||
|
{
|
||||||
|
OpenServerBrowser(
|
||||||
|
'Link',
|
||||||
|
FCKConfig.LinkBrowserURL,
|
||||||
|
FCKConfig.LinkBrowserWindowWidth,
|
||||||
|
FCKConfig.LinkBrowserWindowHeight ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
function OpenServerBrowser( type, url, width, height )
|
||||||
|
{
|
||||||
|
sActualBrowser = type ;
|
||||||
|
OpenFileBrowser( url, width, height ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
var sActualBrowser ;
|
||||||
|
|
||||||
|
function SetUrl( url, width, height, alt )
|
||||||
|
{
|
||||||
|
if ( sActualBrowser == 'Link' )
|
||||||
|
{
|
||||||
|
GetE('txtLnkUrl').value = url ;
|
||||||
|
UpdatePreview() ;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
GetE('txtUrl').value = url ;
|
||||||
|
GetE('txtWidth').value = width ? width : '' ;
|
||||||
|
GetE('txtHeight').value = height ? height : '' ;
|
||||||
|
|
||||||
|
if ( alt )
|
||||||
|
GetE('txtAlt').value = alt;
|
||||||
|
|
||||||
|
UpdatePreview() ;
|
||||||
|
UpdateOriginal( true ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
window.parent.SetSelectedTab( 'Info' ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
function OnUploadCompleted( errorNumber, fileUrl, fileName, customMsg )
|
||||||
|
{
|
||||||
|
switch ( errorNumber )
|
||||||
|
{
|
||||||
|
case 0 : // No errors
|
||||||
|
alert( 'Your file has been successfully uploaded' ) ;
|
||||||
|
break ;
|
||||||
|
case 1 : // Custom error
|
||||||
|
alert( customMsg ) ;
|
||||||
|
return ;
|
||||||
|
case 101 : // Custom warning
|
||||||
|
alert( customMsg ) ;
|
||||||
|
break ;
|
||||||
|
case 201 :
|
||||||
|
alert( 'A file with the same name is already available. The uploaded file has been renamed to "' + fileName + '"' ) ;
|
||||||
|
break ;
|
||||||
|
case 202 :
|
||||||
|
alert( 'Invalid file type' ) ;
|
||||||
|
return ;
|
||||||
|
case 203 :
|
||||||
|
alert( "Security error. You probably don't have enough permissions to upload. Please check your server." ) ;
|
||||||
|
return ;
|
||||||
|
default :
|
||||||
|
alert( 'Error on file upload. Error number: ' + errorNumber ) ;
|
||||||
|
return ;
|
||||||
|
}
|
||||||
|
|
||||||
|
sActualBrowser = '' ;
|
||||||
|
SetUrl( fileUrl ) ;
|
||||||
|
GetE('frmUpload').reset() ;
|
||||||
|
}
|
||||||
|
|
||||||
|
var oUploadAllowedExtRegex = new RegExp( FCKConfig.ImageUploadAllowedExtensions, 'i' ) ;
|
||||||
|
var oUploadDeniedExtRegex = new RegExp( FCKConfig.ImageUploadDeniedExtensions, 'i' ) ;
|
||||||
|
|
||||||
|
function CheckUpload()
|
||||||
|
{
|
||||||
|
var sFile = GetE('txtUploadFile').value ;
|
||||||
|
|
||||||
|
if ( sFile.length == 0 )
|
||||||
|
{
|
||||||
|
alert( 'Please select a file to upload' ) ;
|
||||||
|
return false ;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( ( FCKConfig.ImageUploadAllowedExtensions.length > 0 && !oUploadAllowedExtRegex.test( sFile ) ) ||
|
||||||
|
( FCKConfig.ImageUploadDeniedExtensions.length > 0 && oUploadDeniedExtRegex.test( sFile ) ) )
|
||||||
|
{
|
||||||
|
OnUploadCompleted( 202 ) ;
|
||||||
|
return false ;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true ;
|
||||||
|
}
|
||||||
@@ -0,0 +1,66 @@
|
|||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||||
|
<!--
|
||||||
|
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
||||||
|
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
||||||
|
*
|
||||||
|
* == BEGIN LICENSE ==
|
||||||
|
*
|
||||||
|
* Licensed under the terms of any of the following licenses at your
|
||||||
|
* choice:
|
||||||
|
*
|
||||||
|
* - GNU General Public License Version 2 or later (the "GPL")
|
||||||
|
* http://www.gnu.org/licenses/gpl.html
|
||||||
|
*
|
||||||
|
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
||||||
|
* http://www.gnu.org/licenses/lgpl.html
|
||||||
|
*
|
||||||
|
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
||||||
|
* http://www.mozilla.org/MPL/MPL-1.1.html
|
||||||
|
*
|
||||||
|
* == END LICENSE ==
|
||||||
|
*
|
||||||
|
* Preview page for the Image dialog window.
|
||||||
|
*
|
||||||
|
* Curiosity: http://en.wikipedia.org/wiki/Lorem_ipsum
|
||||||
|
-->
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<title></title>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
|
<meta name="robots" content="noindex, nofollow" />
|
||||||
|
<link href="../common/fck_dialog_common.css" rel="stylesheet" type="text/css" />
|
||||||
|
<script type="text/javascript">
|
||||||
|
|
||||||
|
// Sets the Skin CSS
|
||||||
|
document.write( '<link href="' + window.parent.FCKConfig.SkinPath + 'fck_dialog.css" type="text/css" rel="stylesheet">' ) ;
|
||||||
|
|
||||||
|
if ( window.parent.FCKConfig.BaseHref.length > 0 )
|
||||||
|
document.write( '<base href="' + window.parent.FCKConfig.BaseHref + '">' ) ;
|
||||||
|
|
||||||
|
window.onload = function()
|
||||||
|
{
|
||||||
|
window.parent.SetPreviewElements(
|
||||||
|
document.getElementById( 'imgPreview' ),
|
||||||
|
document.getElementById( 'lnkPreview' ) ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
<body style="color: #000000; background-color: #ffffff">
|
||||||
|
<a id="lnkPreview" onclick="return false;" style="cursor: default">
|
||||||
|
<img id="imgPreview" onload="window.parent.UpdateOriginal();" style="display: none" /></a>Lorem
|
||||||
|
ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas feugiat consequat diam.
|
||||||
|
Maecenas metus. Vivamus diam purus, cursus a, commodo non, facilisis vitae, nulla.
|
||||||
|
Aenean dictum lacinia tortor. Nunc iaculis, nibh non iaculis aliquam, orci felis
|
||||||
|
euismod neque, sed ornare massa mauris sed velit. Nulla pretium mi et risus. Fusce
|
||||||
|
mi pede, tempor id, cursus ac, ullamcorper nec, enim. Sed tortor. Curabitur molestie.
|
||||||
|
Duis velit augue, condimentum at, ultrices a, luctus ut, orci. Donec pellentesque
|
||||||
|
egestas eros. Integer cursus, augue in cursus faucibus, eros pede bibendum sem,
|
||||||
|
in tempus tellus justo quis ligula. Etiam eget tortor. Vestibulum rutrum, est ut
|
||||||
|
placerat elementum, lectus nisl aliquam velit, tempor aliquam eros nunc nonummy
|
||||||
|
metus. In eros metus, gravida a, gravida sed, lobortis id, turpis. Ut ultrices,
|
||||||
|
ipsum at venenatis fringilla, sem nulla lacinia tellus, eget aliquet turpis mauris
|
||||||
|
non enim. Nam turpis. Suspendisse lacinia. Curabitur ac tortor ut ipsum egestas
|
||||||
|
elementum. Nunc imperdiet gravida mauris.
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
293
htdocs/includes/fckeditor/editor/dialog/fck_link.html
Normal file
@@ -0,0 +1,293 @@
|
|||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||||
|
<!--
|
||||||
|
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
||||||
|
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
||||||
|
*
|
||||||
|
* == BEGIN LICENSE ==
|
||||||
|
*
|
||||||
|
* Licensed under the terms of any of the following licenses at your
|
||||||
|
* choice:
|
||||||
|
*
|
||||||
|
* - GNU General Public License Version 2 or later (the "GPL")
|
||||||
|
* http://www.gnu.org/licenses/gpl.html
|
||||||
|
*
|
||||||
|
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
||||||
|
* http://www.gnu.org/licenses/lgpl.html
|
||||||
|
*
|
||||||
|
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
||||||
|
* http://www.mozilla.org/MPL/MPL-1.1.html
|
||||||
|
*
|
||||||
|
* == END LICENSE ==
|
||||||
|
*
|
||||||
|
* Link dialog window.
|
||||||
|
-->
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Link Properties</title>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
|
<meta name="robots" content="noindex, nofollow" />
|
||||||
|
<script src="common/fck_dialog_common.js" type="text/javascript"></script>
|
||||||
|
<script src="fck_link/fck_link.js" type="text/javascript"></script>
|
||||||
|
</head>
|
||||||
|
<body scroll="no" style="OVERFLOW: hidden">
|
||||||
|
<div id="divInfo" style="DISPLAY: none">
|
||||||
|
<span fckLang="DlgLnkType">Link Type</span><br />
|
||||||
|
<select id="cmbLinkType" onchange="SetLinkType(this.value);">
|
||||||
|
<option value="url" fckLang="DlgLnkTypeURL" selected="selected">URL</option>
|
||||||
|
<option value="anchor" fckLang="DlgLnkTypeAnchor">Anchor in this page</option>
|
||||||
|
<option value="email" fckLang="DlgLnkTypeEMail">E-Mail</option>
|
||||||
|
</select>
|
||||||
|
<br />
|
||||||
|
<br />
|
||||||
|
<div id="divLinkTypeUrl">
|
||||||
|
<table cellspacing="0" cellpadding="0" width="100%" border="0" dir="ltr">
|
||||||
|
<tr>
|
||||||
|
<td nowrap="nowrap">
|
||||||
|
<span fckLang="DlgLnkProto">Protocol</span><br />
|
||||||
|
<select id="cmbLinkProtocol">
|
||||||
|
<option value="http://" selected="selected">http://</option>
|
||||||
|
<option value="https://">https://</option>
|
||||||
|
<option value="ftp://">ftp://</option>
|
||||||
|
<option value="news://">news://</option>
|
||||||
|
<option value="" fckLang="DlgLnkProtoOther"><other></option>
|
||||||
|
</select>
|
||||||
|
</td>
|
||||||
|
<td nowrap="nowrap"> </td>
|
||||||
|
<td nowrap="nowrap" width="100%">
|
||||||
|
<span fckLang="DlgLnkURL">URL</span><br />
|
||||||
|
<input id="txtUrl" style="WIDTH: 100%" type="text" onkeyup="OnUrlChange();" onchange="OnUrlChange();" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<br />
|
||||||
|
<div id="divBrowseServer">
|
||||||
|
<input type="button" value="Browse Server" fckLang="DlgBtnBrowseServer" onclick="BrowseServer();" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="divLinkTypeAnchor" style="DISPLAY: none" align="center">
|
||||||
|
<div id="divSelAnchor" style="DISPLAY: none">
|
||||||
|
<table cellspacing="0" cellpadding="0" border="0" width="70%">
|
||||||
|
<tr>
|
||||||
|
<td colspan="3">
|
||||||
|
<span fckLang="DlgLnkAnchorSel">Select an Anchor</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td width="50%">
|
||||||
|
<span fckLang="DlgLnkAnchorByName">By Anchor Name</span><br />
|
||||||
|
<select id="cmbAnchorName" onchange="GetE('cmbAnchorId').value='';" style="WIDTH: 100%">
|
||||||
|
<option value="" selected="selected"></option>
|
||||||
|
</select>
|
||||||
|
</td>
|
||||||
|
<td> </td>
|
||||||
|
<td width="50%">
|
||||||
|
<span fckLang="DlgLnkAnchorById">By Element Id</span><br />
|
||||||
|
<select id="cmbAnchorId" onchange="GetE('cmbAnchorName').value='';" style="WIDTH: 100%">
|
||||||
|
<option value="" selected="selected"></option>
|
||||||
|
</select>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div id="divNoAnchor" style="DISPLAY: none">
|
||||||
|
<span fckLang="DlgLnkNoAnchors"><No anchors available in the document></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="divLinkTypeEMail" style="DISPLAY: none">
|
||||||
|
<span fckLang="DlgLnkEMail">E-Mail Address</span><br />
|
||||||
|
<input id="txtEMailAddress" style="WIDTH: 100%" type="text" /><br />
|
||||||
|
<span fckLang="DlgLnkEMailSubject">Message Subject</span><br />
|
||||||
|
<input id="txtEMailSubject" style="WIDTH: 100%" type="text" /><br />
|
||||||
|
<span fckLang="DlgLnkEMailBody">Message Body</span><br />
|
||||||
|
<textarea id="txtEMailBody" style="WIDTH: 100%" rows="3" cols="20"></textarea>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="divUpload" style="DISPLAY: none">
|
||||||
|
<form id="frmUpload" method="post" target="UploadWindow" enctype="multipart/form-data" action="" onsubmit="return CheckUpload();">
|
||||||
|
<span fckLang="DlgLnkUpload">Upload</span><br />
|
||||||
|
<input id="txtUploadFile" style="WIDTH: 100%" type="file" size="40" name="NewFile" /><br />
|
||||||
|
<br />
|
||||||
|
<input id="btnUpload" type="submit" value="Send it to the Server" fckLang="DlgLnkBtnUpload" />
|
||||||
|
<iframe name="UploadWindow" style="DISPLAY: none" src="javascript:void(0)"></iframe>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
<div id="divTarget" style="DISPLAY: none">
|
||||||
|
<table cellspacing="0" cellpadding="0" width="100%" border="0">
|
||||||
|
<tr>
|
||||||
|
<td nowrap="nowrap">
|
||||||
|
<span fckLang="DlgLnkTarget">Target</span><br />
|
||||||
|
<select id="cmbTarget" onchange="SetTarget(this.value);">
|
||||||
|
<option value="" fckLang="DlgGenNotSet" selected="selected"><not set></option>
|
||||||
|
<option value="frame" fckLang="DlgLnkTargetFrame"><frame></option>
|
||||||
|
<option value="popup" fckLang="DlgLnkTargetPopup"><popup window></option>
|
||||||
|
<option value="_blank" fckLang="DlgLnkTargetBlank">New Window (_blank)</option>
|
||||||
|
<option value="_top" fckLang="DlgLnkTargetTop">Topmost Window (_top)</option>
|
||||||
|
<option value="_self" fckLang="DlgLnkTargetSelf">Same Window (_self)</option>
|
||||||
|
<option value="_parent" fckLang="DlgLnkTargetParent">Parent Window (_parent)</option>
|
||||||
|
</select>
|
||||||
|
</td>
|
||||||
|
<td> </td>
|
||||||
|
<td id="tdTargetFrame" nowrap="nowrap" width="100%">
|
||||||
|
<span fckLang="DlgLnkTargetFrameName">Target Frame Name</span><br />
|
||||||
|
<input id="txtTargetFrame" style="WIDTH: 100%" type="text" onkeyup="OnTargetNameChange();"
|
||||||
|
onchange="OnTargetNameChange();" />
|
||||||
|
</td>
|
||||||
|
<td id="tdPopupName" style="DISPLAY: none" nowrap="nowrap" width="100%">
|
||||||
|
<span fckLang="DlgLnkPopWinName">Popup Window Name</span><br />
|
||||||
|
<input id="txtPopupName" style="WIDTH: 100%" type="text" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<br />
|
||||||
|
<table id="tablePopupFeatures" style="DISPLAY: none" cellspacing="0" cellpadding="0" align="center"
|
||||||
|
border="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<span fckLang="DlgLnkPopWinFeat">Popup Window Features</span><br />
|
||||||
|
<table cellspacing="0" cellpadding="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td valign="top" nowrap="nowrap" width="50%">
|
||||||
|
<input id="chkPopupResizable" name="chkFeature" value="resizable" type="checkbox" /><label for="chkPopupResizable" fckLang="DlgLnkPopResize">Resizable</label><br />
|
||||||
|
<input id="chkPopupLocationBar" name="chkFeature" value="location" type="checkbox" /><label for="chkPopupLocationBar" fckLang="DlgLnkPopLocation">Location
|
||||||
|
Bar</label><br />
|
||||||
|
<input id="chkPopupManuBar" name="chkFeature" value="menubar" type="checkbox" /><label for="chkPopupManuBar" fckLang="DlgLnkPopMenu">Menu
|
||||||
|
Bar</label><br />
|
||||||
|
<input id="chkPopupScrollBars" name="chkFeature" value="scrollbars" type="checkbox" /><label for="chkPopupScrollBars" fckLang="DlgLnkPopScroll">Scroll
|
||||||
|
Bars</label>
|
||||||
|
</td>
|
||||||
|
<td></td>
|
||||||
|
<td valign="top" nowrap="nowrap" width="50%">
|
||||||
|
<input id="chkPopupStatusBar" name="chkFeature" value="status" type="checkbox" /><label for="chkPopupStatusBar" fckLang="DlgLnkPopStatus">Status
|
||||||
|
Bar</label><br />
|
||||||
|
<input id="chkPopupToolbar" name="chkFeature" value="toolbar" type="checkbox" /><label for="chkPopupToolbar" fckLang="DlgLnkPopToolbar">Toolbar</label><br />
|
||||||
|
<input id="chkPopupFullScreen" name="chkFeature" value="fullscreen" type="checkbox" /><label for="chkPopupFullScreen" fckLang="DlgLnkPopFullScrn">Full
|
||||||
|
Screen (IE)</label><br />
|
||||||
|
<input id="chkPopupDependent" name="chkFeature" value="dependent" type="checkbox" /><label for="chkPopupDependent" fckLang="DlgLnkPopDependent">Dependent
|
||||||
|
(Netscape)</label>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td valign="top" nowrap="nowrap" width="50%"> </td>
|
||||||
|
<td></td>
|
||||||
|
<td valign="top" nowrap="nowrap" width="50%"></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td valign="top">
|
||||||
|
<table cellspacing="0" cellpadding="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td nowrap="nowrap"><span fckLang="DlgLnkPopWidth">Width</span></td>
|
||||||
|
<td> <input id="txtPopupWidth" type="text" maxlength="4" size="4" /></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td nowrap="nowrap"><span fckLang="DlgLnkPopHeight">Height</span></td>
|
||||||
|
<td> <input id="txtPopupHeight" type="text" maxlength="4" size="4" /></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
<td> </td>
|
||||||
|
<td valign="top">
|
||||||
|
<table cellspacing="0" cellpadding="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td nowrap="nowrap"><span fckLang="DlgLnkPopLeft">Left Position</span></td>
|
||||||
|
<td> <input id="txtPopupLeft" type="text" maxlength="4" size="4" /></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td nowrap="nowrap"><span fckLang="DlgLnkPopTop">Top Position</span></td>
|
||||||
|
<td> <input id="txtPopupTop" type="text" maxlength="4" size="4" /></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div id="divAttribs" style="DISPLAY: none">
|
||||||
|
<table cellspacing="0" cellpadding="0" width="100%" align="center" border="0">
|
||||||
|
<tr>
|
||||||
|
<td valign="top" width="50%">
|
||||||
|
<span fckLang="DlgGenId">Id</span><br />
|
||||||
|
<input id="txtAttId" style="WIDTH: 100%" type="text" />
|
||||||
|
</td>
|
||||||
|
<td width="1"></td>
|
||||||
|
<td valign="top">
|
||||||
|
<table cellspacing="0" cellpadding="0" width="100%" align="center" border="0">
|
||||||
|
<tr>
|
||||||
|
<td width="60%">
|
||||||
|
<span fckLang="DlgGenLangDir">Language Direction</span><br />
|
||||||
|
<select id="cmbAttLangDir" style="WIDTH: 100%">
|
||||||
|
<option value="" fckLang="DlgGenNotSet" selected><not set></option>
|
||||||
|
<option value="ltr" fckLang="DlgGenLangDirLtr">Left to Right (LTR)</option>
|
||||||
|
<option value="rtl" fckLang="DlgGenLangDirRtl">Right to Left (RTL)</option>
|
||||||
|
</select>
|
||||||
|
</td>
|
||||||
|
<td width="1%"> </td>
|
||||||
|
<td nowrap="nowrap"><span fckLang="DlgGenAccessKey">Access Key</span><br />
|
||||||
|
<input id="txtAttAccessKey" style="WIDTH: 100%" type="text" maxlength="1" size="1" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td valign="top" width="50%">
|
||||||
|
<span fckLang="DlgGenName">Name</span><br />
|
||||||
|
<input id="txtAttName" style="WIDTH: 100%" type="text" />
|
||||||
|
</td>
|
||||||
|
<td width="1"></td>
|
||||||
|
<td valign="top">
|
||||||
|
<table cellspacing="0" cellpadding="0" width="100%" align="center" border="0">
|
||||||
|
<tr>
|
||||||
|
<td width="60%">
|
||||||
|
<span fckLang="DlgGenLangCode">Language Code</span><br />
|
||||||
|
<input id="txtAttLangCode" style="WIDTH: 100%" type="text" />
|
||||||
|
</td>
|
||||||
|
<td width="1%"> </td>
|
||||||
|
<td nowrap="nowrap">
|
||||||
|
<span fckLang="DlgGenTabIndex">Tab Index</span><br />
|
||||||
|
<input id="txtAttTabIndex" style="WIDTH: 100%" type="text" maxlength="5" size="5" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td valign="top" width="50%"> </td>
|
||||||
|
<td width="1"></td>
|
||||||
|
<td valign="top"></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td valign="top" width="50%">
|
||||||
|
<span fckLang="DlgGenTitle">Advisory Title</span><br />
|
||||||
|
<input id="txtAttTitle" style="WIDTH: 100%" type="text" />
|
||||||
|
</td>
|
||||||
|
<td width="1"> </td>
|
||||||
|
<td valign="top">
|
||||||
|
<span fckLang="DlgGenContType">Advisory Content Type</span><br />
|
||||||
|
<input id="txtAttContentType" style="WIDTH: 100%" type="text" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td valign="top">
|
||||||
|
<span fckLang="DlgGenClass">Stylesheet Classes</span><br />
|
||||||
|
<input id="txtAttClasses" style="WIDTH: 100%" type="text" />
|
||||||
|
</td>
|
||||||
|
<td></td>
|
||||||
|
<td valign="top">
|
||||||
|
<span fckLang="DlgGenLinkCharset">Linked Resource Charset</span><br />
|
||||||
|
<input id="txtAttCharSet" style="WIDTH: 100%" type="text" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<table cellspacing="0" cellpadding="0" width="100%" align="center" border="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<span fckLang="DlgGenStyle">Style</span><br />
|
||||||
|
<input id="txtAttStyle" style="WIDTH: 100%" type="text" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
715
htdocs/includes/fckeditor/editor/dialog/fck_link/fck_link.js
Normal file
@@ -0,0 +1,715 @@
|
|||||||
|
/*
|
||||||
|
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
||||||
|
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
||||||
|
*
|
||||||
|
* == BEGIN LICENSE ==
|
||||||
|
*
|
||||||
|
* Licensed under the terms of any of the following licenses at your
|
||||||
|
* choice:
|
||||||
|
*
|
||||||
|
* - GNU General Public License Version 2 or later (the "GPL")
|
||||||
|
* http://www.gnu.org/licenses/gpl.html
|
||||||
|
*
|
||||||
|
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
||||||
|
* http://www.gnu.org/licenses/lgpl.html
|
||||||
|
*
|
||||||
|
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
||||||
|
* http://www.mozilla.org/MPL/MPL-1.1.html
|
||||||
|
*
|
||||||
|
* == END LICENSE ==
|
||||||
|
*
|
||||||
|
* Scripts related to the Link dialog window (see fck_link.html).
|
||||||
|
*/
|
||||||
|
|
||||||
|
var oEditor = window.parent.InnerDialogLoaded() ;
|
||||||
|
var FCK = oEditor.FCK ;
|
||||||
|
var FCKLang = oEditor.FCKLang ;
|
||||||
|
var FCKConfig = oEditor.FCKConfig ;
|
||||||
|
var FCKRegexLib = oEditor.FCKRegexLib ;
|
||||||
|
var FCKTools = oEditor.FCKTools ;
|
||||||
|
|
||||||
|
//#### Dialog Tabs
|
||||||
|
|
||||||
|
// Set the dialog tabs.
|
||||||
|
window.parent.AddTab( 'Info', FCKLang.DlgLnkInfoTab ) ;
|
||||||
|
|
||||||
|
if ( !FCKConfig.LinkDlgHideTarget )
|
||||||
|
window.parent.AddTab( 'Target', FCKLang.DlgLnkTargetTab, true ) ;
|
||||||
|
|
||||||
|
if ( FCKConfig.LinkUpload )
|
||||||
|
window.parent.AddTab( 'Upload', FCKLang.DlgLnkUpload, true ) ;
|
||||||
|
|
||||||
|
if ( !FCKConfig.LinkDlgHideAdvanced )
|
||||||
|
window.parent.AddTab( 'Advanced', FCKLang.DlgAdvancedTag ) ;
|
||||||
|
|
||||||
|
// Function called when a dialog tag is selected.
|
||||||
|
function OnDialogTabChange( tabCode )
|
||||||
|
{
|
||||||
|
ShowE('divInfo' , ( tabCode == 'Info' ) ) ;
|
||||||
|
ShowE('divTarget' , ( tabCode == 'Target' ) ) ;
|
||||||
|
ShowE('divUpload' , ( tabCode == 'Upload' ) ) ;
|
||||||
|
ShowE('divAttribs' , ( tabCode == 'Advanced' ) ) ;
|
||||||
|
|
||||||
|
window.parent.SetAutoSize( true ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
//#### Regular Expressions library.
|
||||||
|
var oRegex = new Object() ;
|
||||||
|
|
||||||
|
oRegex.UriProtocol = /^(((http|https|ftp|news):\/\/)|mailto:)/gi ;
|
||||||
|
|
||||||
|
oRegex.UrlOnChangeProtocol = /^(http|https|ftp|news):\/\/(?=.)/gi ;
|
||||||
|
|
||||||
|
oRegex.UrlOnChangeTestOther = /^((javascript:)|[#\/\.])/gi ;
|
||||||
|
|
||||||
|
oRegex.ReserveTarget = /^_(blank|self|top|parent)$/i ;
|
||||||
|
|
||||||
|
oRegex.PopupUri = /^javascript:void\(\s*window.open\(\s*'([^']+)'\s*,\s*(?:'([^']*)'|null)\s*,\s*'([^']*)'\s*\)\s*\)\s*$/ ;
|
||||||
|
|
||||||
|
// Accessible popups
|
||||||
|
oRegex.OnClickPopup = /^\s*on[cC]lick="\s*window.open\(\s*this\.href\s*,\s*(?:'([^']*)'|null)\s*,\s*'([^']*)'\s*\)\s*;\s*return\s*false;*\s*"$/ ;
|
||||||
|
|
||||||
|
oRegex.PopupFeatures = /(?:^|,)([^=]+)=(\d+|yes|no)/gi ;
|
||||||
|
|
||||||
|
//#### Parser Functions
|
||||||
|
|
||||||
|
var oParser = new Object() ;
|
||||||
|
|
||||||
|
oParser.ParseEMailUrl = function( emailUrl )
|
||||||
|
{
|
||||||
|
// Initializes the EMailInfo object.
|
||||||
|
var oEMailInfo = new Object() ;
|
||||||
|
oEMailInfo.Address = '' ;
|
||||||
|
oEMailInfo.Subject = '' ;
|
||||||
|
oEMailInfo.Body = '' ;
|
||||||
|
|
||||||
|
var oParts = emailUrl.match( /^([^\?]+)\??(.+)?/ ) ;
|
||||||
|
if ( oParts )
|
||||||
|
{
|
||||||
|
// Set the e-mail address.
|
||||||
|
oEMailInfo.Address = oParts[1] ;
|
||||||
|
|
||||||
|
// Look for the optional e-mail parameters.
|
||||||
|
if ( oParts[2] )
|
||||||
|
{
|
||||||
|
var oMatch = oParts[2].match( /(^|&)subject=([^&]+)/i ) ;
|
||||||
|
if ( oMatch ) oEMailInfo.Subject = decodeURIComponent( oMatch[2] ) ;
|
||||||
|
|
||||||
|
oMatch = oParts[2].match( /(^|&)body=([^&]+)/i ) ;
|
||||||
|
if ( oMatch ) oEMailInfo.Body = decodeURIComponent( oMatch[2] ) ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return oEMailInfo ;
|
||||||
|
}
|
||||||
|
|
||||||
|
oParser.CreateEMailUri = function( address, subject, body )
|
||||||
|
{
|
||||||
|
var sBaseUri = 'mailto:' + address ;
|
||||||
|
|
||||||
|
var sParams = '' ;
|
||||||
|
|
||||||
|
if ( subject.length > 0 )
|
||||||
|
sParams = '?subject=' + encodeURIComponent( subject ) ;
|
||||||
|
|
||||||
|
if ( body.length > 0 )
|
||||||
|
{
|
||||||
|
sParams += ( sParams.length == 0 ? '?' : '&' ) ;
|
||||||
|
sParams += 'body=' + encodeURIComponent( body ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
return sBaseUri + sParams ;
|
||||||
|
}
|
||||||
|
|
||||||
|
//#### Initialization Code
|
||||||
|
|
||||||
|
// oLink: The actual selected link in the editor.
|
||||||
|
var oLink = FCK.Selection.MoveToAncestorNode( 'A' ) ;
|
||||||
|
if ( oLink )
|
||||||
|
FCK.Selection.SelectNode( oLink ) ;
|
||||||
|
|
||||||
|
window.onload = function()
|
||||||
|
{
|
||||||
|
// Translate the dialog box texts.
|
||||||
|
oEditor.FCKLanguageManager.TranslatePage(document) ;
|
||||||
|
|
||||||
|
// Fill the Anchor Names and Ids combos.
|
||||||
|
LoadAnchorNamesAndIds() ;
|
||||||
|
|
||||||
|
// Load the selected link information (if any).
|
||||||
|
LoadSelection() ;
|
||||||
|
|
||||||
|
// Update the dialog box.
|
||||||
|
SetLinkType( GetE('cmbLinkType').value ) ;
|
||||||
|
|
||||||
|
// Show/Hide the "Browse Server" button.
|
||||||
|
GetE('divBrowseServer').style.display = FCKConfig.LinkBrowser ? '' : 'none' ;
|
||||||
|
|
||||||
|
// Show the initial dialog content.
|
||||||
|
GetE('divInfo').style.display = '' ;
|
||||||
|
|
||||||
|
// Set the actual uploader URL.
|
||||||
|
if ( FCKConfig.LinkUpload )
|
||||||
|
GetE('frmUpload').action = FCKConfig.LinkUploadURL ;
|
||||||
|
|
||||||
|
// Set the default target (from configuration).
|
||||||
|
SetDefaultTarget() ;
|
||||||
|
|
||||||
|
// Activate the "OK" button.
|
||||||
|
window.parent.SetOkButton( true ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
var bHasAnchors ;
|
||||||
|
|
||||||
|
function LoadAnchorNamesAndIds()
|
||||||
|
{
|
||||||
|
// Since version 2.0, the anchors are replaced in the DOM by IMGs so the user see the icon
|
||||||
|
// to edit them. So, we must look for that images now.
|
||||||
|
var aAnchors = new Array() ;
|
||||||
|
var i ;
|
||||||
|
var oImages = oEditor.FCK.EditorDocument.getElementsByTagName( 'IMG' ) ;
|
||||||
|
for( i = 0 ; i < oImages.length ; i++ )
|
||||||
|
{
|
||||||
|
if ( oImages[i].getAttribute('_fckanchor') )
|
||||||
|
aAnchors[ aAnchors.length ] = oEditor.FCK.GetRealElement( oImages[i] ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add also real anchors
|
||||||
|
var oLinks = oEditor.FCK.EditorDocument.getElementsByTagName( 'A' ) ;
|
||||||
|
for( i = 0 ; i < oLinks.length ; i++ )
|
||||||
|
{
|
||||||
|
if ( oLinks[i].name && ( oLinks[i].name.length > 0 ) )
|
||||||
|
aAnchors[ aAnchors.length ] = oLinks[i] ;
|
||||||
|
}
|
||||||
|
|
||||||
|
var aIds = FCKTools.GetAllChildrenIds( oEditor.FCK.EditorDocument.body ) ;
|
||||||
|
|
||||||
|
bHasAnchors = ( aAnchors.length > 0 || aIds.length > 0 ) ;
|
||||||
|
|
||||||
|
for ( i = 0 ; i < aAnchors.length ; i++ )
|
||||||
|
{
|
||||||
|
var sName = aAnchors[i].name ;
|
||||||
|
if ( sName && sName.length > 0 )
|
||||||
|
FCKTools.AddSelectOption( GetE('cmbAnchorName'), sName, sName ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
for ( i = 0 ; i < aIds.length ; i++ )
|
||||||
|
{
|
||||||
|
FCKTools.AddSelectOption( GetE('cmbAnchorId'), aIds[i], aIds[i] ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
ShowE( 'divSelAnchor' , bHasAnchors ) ;
|
||||||
|
ShowE( 'divNoAnchor' , !bHasAnchors ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
function LoadSelection()
|
||||||
|
{
|
||||||
|
if ( !oLink ) return ;
|
||||||
|
|
||||||
|
var sType = 'url' ;
|
||||||
|
|
||||||
|
// Get the actual Link href.
|
||||||
|
var sHRef = oLink.getAttribute( '_fcksavedurl' ) ;
|
||||||
|
if ( sHRef == null )
|
||||||
|
sHRef = oLink.getAttribute( 'href' , 2 ) || '' ;
|
||||||
|
|
||||||
|
// Look for a popup javascript link.
|
||||||
|
var oPopupMatch = oRegex.PopupUri.exec( sHRef ) ;
|
||||||
|
if( oPopupMatch )
|
||||||
|
{
|
||||||
|
GetE('cmbTarget').value = 'popup' ;
|
||||||
|
sHRef = oPopupMatch[1] ;
|
||||||
|
FillPopupFields( oPopupMatch[2], oPopupMatch[3] ) ;
|
||||||
|
SetTarget( 'popup' ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Accessible popups, the popup data is in the onclick attribute
|
||||||
|
if ( !oPopupMatch )
|
||||||
|
{
|
||||||
|
var onclick = oLink.getAttribute( 'onclick_fckprotectedatt' ) ;
|
||||||
|
if ( onclick )
|
||||||
|
{
|
||||||
|
// Decode the protected string
|
||||||
|
onclick = decodeURIComponent( onclick ) ;
|
||||||
|
|
||||||
|
oPopupMatch = oRegex.OnClickPopup.exec( onclick ) ;
|
||||||
|
if( oPopupMatch )
|
||||||
|
{
|
||||||
|
GetE( 'cmbTarget' ).value = 'popup' ;
|
||||||
|
FillPopupFields( oPopupMatch[1], oPopupMatch[2] ) ;
|
||||||
|
SetTarget( 'popup' ) ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Search for the protocol.
|
||||||
|
var sProtocol = oRegex.UriProtocol.exec( sHRef ) ;
|
||||||
|
|
||||||
|
if ( sProtocol )
|
||||||
|
{
|
||||||
|
sProtocol = sProtocol[0].toLowerCase() ;
|
||||||
|
GetE('cmbLinkProtocol').value = sProtocol ;
|
||||||
|
|
||||||
|
// Remove the protocol and get the remaining URL.
|
||||||
|
var sUrl = sHRef.replace( oRegex.UriProtocol, '' ) ;
|
||||||
|
|
||||||
|
if ( sProtocol == 'mailto:' ) // It is an e-mail link.
|
||||||
|
{
|
||||||
|
sType = 'email' ;
|
||||||
|
|
||||||
|
var oEMailInfo = oParser.ParseEMailUrl( sUrl ) ;
|
||||||
|
GetE('txtEMailAddress').value = oEMailInfo.Address ;
|
||||||
|
GetE('txtEMailSubject').value = oEMailInfo.Subject ;
|
||||||
|
GetE('txtEMailBody').value = oEMailInfo.Body ;
|
||||||
|
}
|
||||||
|
else // It is a normal link.
|
||||||
|
{
|
||||||
|
sType = 'url' ;
|
||||||
|
GetE('txtUrl').value = sUrl ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if ( sHRef.substr(0,1) == '#' && sHRef.length > 1 ) // It is an anchor link.
|
||||||
|
{
|
||||||
|
sType = 'anchor' ;
|
||||||
|
GetE('cmbAnchorName').value = GetE('cmbAnchorId').value = sHRef.substr(1) ;
|
||||||
|
}
|
||||||
|
else // It is another type of link.
|
||||||
|
{
|
||||||
|
sType = 'url' ;
|
||||||
|
|
||||||
|
GetE('cmbLinkProtocol').value = '' ;
|
||||||
|
GetE('txtUrl').value = sHRef ;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( !oPopupMatch )
|
||||||
|
{
|
||||||
|
// Get the target.
|
||||||
|
var sTarget = oLink.target ;
|
||||||
|
|
||||||
|
if ( sTarget && sTarget.length > 0 )
|
||||||
|
{
|
||||||
|
if ( oRegex.ReserveTarget.test( sTarget ) )
|
||||||
|
{
|
||||||
|
sTarget = sTarget.toLowerCase() ;
|
||||||
|
GetE('cmbTarget').value = sTarget ;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
GetE('cmbTarget').value = 'frame' ;
|
||||||
|
GetE('txtTargetFrame').value = sTarget ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get Advances Attributes
|
||||||
|
GetE('txtAttId').value = oLink.id ;
|
||||||
|
GetE('txtAttName').value = oLink.name ;
|
||||||
|
GetE('cmbAttLangDir').value = oLink.dir ;
|
||||||
|
GetE('txtAttLangCode').value = oLink.lang ;
|
||||||
|
GetE('txtAttAccessKey').value = oLink.accessKey ;
|
||||||
|
GetE('txtAttTabIndex').value = oLink.tabIndex <= 0 ? '' : oLink.tabIndex ;
|
||||||
|
GetE('txtAttTitle').value = oLink.title ;
|
||||||
|
GetE('txtAttContentType').value = oLink.type ;
|
||||||
|
GetE('txtAttCharSet').value = oLink.charset ;
|
||||||
|
|
||||||
|
var sClass ;
|
||||||
|
if ( oEditor.FCKBrowserInfo.IsIE )
|
||||||
|
{
|
||||||
|
sClass = oLink.getAttribute('className',2) || '' ;
|
||||||
|
// Clean up temporary classes for internal use:
|
||||||
|
sClass = sClass.replace( FCKRegexLib.FCK_Class, '' ) ;
|
||||||
|
|
||||||
|
GetE('txtAttStyle').value = oLink.style.cssText ;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sClass = oLink.getAttribute('class',2) || '' ;
|
||||||
|
GetE('txtAttStyle').value = oLink.getAttribute('style',2) || '' ;
|
||||||
|
}
|
||||||
|
GetE('txtAttClasses').value = sClass ;
|
||||||
|
|
||||||
|
// Update the Link type combo.
|
||||||
|
GetE('cmbLinkType').value = sType ;
|
||||||
|
}
|
||||||
|
|
||||||
|
//#### Link type selection.
|
||||||
|
function SetLinkType( linkType )
|
||||||
|
{
|
||||||
|
ShowE('divLinkTypeUrl' , (linkType == 'url') ) ;
|
||||||
|
ShowE('divLinkTypeAnchor' , (linkType == 'anchor') ) ;
|
||||||
|
ShowE('divLinkTypeEMail' , (linkType == 'email') ) ;
|
||||||
|
|
||||||
|
if ( !FCKConfig.LinkDlgHideTarget )
|
||||||
|
window.parent.SetTabVisibility( 'Target' , (linkType == 'url') ) ;
|
||||||
|
|
||||||
|
if ( FCKConfig.LinkUpload )
|
||||||
|
window.parent.SetTabVisibility( 'Upload' , (linkType == 'url') ) ;
|
||||||
|
|
||||||
|
if ( !FCKConfig.LinkDlgHideAdvanced )
|
||||||
|
window.parent.SetTabVisibility( 'Advanced' , (linkType != 'anchor' || bHasAnchors) ) ;
|
||||||
|
|
||||||
|
if ( linkType == 'email' )
|
||||||
|
window.parent.SetAutoSize( true ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
//#### Target type selection.
|
||||||
|
function SetTarget( targetType )
|
||||||
|
{
|
||||||
|
GetE('tdTargetFrame').style.display = ( targetType == 'popup' ? 'none' : '' ) ;
|
||||||
|
GetE('tdPopupName').style.display =
|
||||||
|
GetE('tablePopupFeatures').style.display = ( targetType == 'popup' ? '' : 'none' ) ;
|
||||||
|
|
||||||
|
switch ( targetType )
|
||||||
|
{
|
||||||
|
case "_blank" :
|
||||||
|
case "_self" :
|
||||||
|
case "_parent" :
|
||||||
|
case "_top" :
|
||||||
|
GetE('txtTargetFrame').value = targetType ;
|
||||||
|
break ;
|
||||||
|
case "" :
|
||||||
|
GetE('txtTargetFrame').value = '' ;
|
||||||
|
break ;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( targetType == 'popup' )
|
||||||
|
window.parent.SetAutoSize( true ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
//#### Called while the user types the URL.
|
||||||
|
function OnUrlChange()
|
||||||
|
{
|
||||||
|
var sUrl = GetE('txtUrl').value ;
|
||||||
|
var sProtocol = oRegex.UrlOnChangeProtocol.exec( sUrl ) ;
|
||||||
|
|
||||||
|
if ( sProtocol )
|
||||||
|
{
|
||||||
|
sUrl = sUrl.substr( sProtocol[0].length ) ;
|
||||||
|
GetE('txtUrl').value = sUrl ;
|
||||||
|
GetE('cmbLinkProtocol').value = sProtocol[0].toLowerCase() ;
|
||||||
|
}
|
||||||
|
else if ( oRegex.UrlOnChangeTestOther.test( sUrl ) )
|
||||||
|
{
|
||||||
|
GetE('cmbLinkProtocol').value = '' ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//#### Called while the user types the target name.
|
||||||
|
function OnTargetNameChange()
|
||||||
|
{
|
||||||
|
var sFrame = GetE('txtTargetFrame').value ;
|
||||||
|
|
||||||
|
if ( sFrame.length == 0 )
|
||||||
|
GetE('cmbTarget').value = '' ;
|
||||||
|
else if ( oRegex.ReserveTarget.test( sFrame ) )
|
||||||
|
GetE('cmbTarget').value = sFrame.toLowerCase() ;
|
||||||
|
else
|
||||||
|
GetE('cmbTarget').value = 'frame' ;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Accessible popups
|
||||||
|
function BuildOnClickPopup()
|
||||||
|
{
|
||||||
|
var sWindowName = "'" + GetE('txtPopupName').value.replace(/\W/gi, "") + "'" ;
|
||||||
|
|
||||||
|
var sFeatures = '' ;
|
||||||
|
var aChkFeatures = document.getElementsByName( 'chkFeature' ) ;
|
||||||
|
for ( var i = 0 ; i < aChkFeatures.length ; i++ )
|
||||||
|
{
|
||||||
|
if ( i > 0 ) sFeatures += ',' ;
|
||||||
|
sFeatures += aChkFeatures[i].value + '=' + ( aChkFeatures[i].checked ? 'yes' : 'no' ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( GetE('txtPopupWidth').value.length > 0 ) sFeatures += ',width=' + GetE('txtPopupWidth').value ;
|
||||||
|
if ( GetE('txtPopupHeight').value.length > 0 ) sFeatures += ',height=' + GetE('txtPopupHeight').value ;
|
||||||
|
if ( GetE('txtPopupLeft').value.length > 0 ) sFeatures += ',left=' + GetE('txtPopupLeft').value ;
|
||||||
|
if ( GetE('txtPopupTop').value.length > 0 ) sFeatures += ',top=' + GetE('txtPopupTop').value ;
|
||||||
|
|
||||||
|
if ( sFeatures != '' )
|
||||||
|
sFeatures = sFeatures + ",status" ;
|
||||||
|
|
||||||
|
return ( "window.open(this.href," + sWindowName + ",'" + sFeatures + "'); return false" ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
//#### Fills all Popup related fields.
|
||||||
|
function FillPopupFields( windowName, features )
|
||||||
|
{
|
||||||
|
if ( windowName )
|
||||||
|
GetE('txtPopupName').value = windowName ;
|
||||||
|
|
||||||
|
var oFeatures = new Object() ;
|
||||||
|
var oFeaturesMatch ;
|
||||||
|
while( ( oFeaturesMatch = oRegex.PopupFeatures.exec( features ) ) != null )
|
||||||
|
{
|
||||||
|
var sValue = oFeaturesMatch[2] ;
|
||||||
|
if ( sValue == ( 'yes' || '1' ) )
|
||||||
|
oFeatures[ oFeaturesMatch[1] ] = true ;
|
||||||
|
else if ( ! isNaN( sValue ) && sValue != 0 )
|
||||||
|
oFeatures[ oFeaturesMatch[1] ] = sValue ;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update all features check boxes.
|
||||||
|
var aChkFeatures = document.getElementsByName('chkFeature') ;
|
||||||
|
for ( var i = 0 ; i < aChkFeatures.length ; i++ )
|
||||||
|
{
|
||||||
|
if ( oFeatures[ aChkFeatures[i].value ] )
|
||||||
|
aChkFeatures[i].checked = true ;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update position and size text boxes.
|
||||||
|
if ( oFeatures['width'] ) GetE('txtPopupWidth').value = oFeatures['width'] ;
|
||||||
|
if ( oFeatures['height'] ) GetE('txtPopupHeight').value = oFeatures['height'] ;
|
||||||
|
if ( oFeatures['left'] ) GetE('txtPopupLeft').value = oFeatures['left'] ;
|
||||||
|
if ( oFeatures['top'] ) GetE('txtPopupTop').value = oFeatures['top'] ;
|
||||||
|
}
|
||||||
|
|
||||||
|
//#### The OK button was hit.
|
||||||
|
function Ok()
|
||||||
|
{
|
||||||
|
var sUri, sInnerHtml ;
|
||||||
|
oEditor.FCKUndo.SaveUndoStep() ;
|
||||||
|
|
||||||
|
switch ( GetE('cmbLinkType').value )
|
||||||
|
{
|
||||||
|
case 'url' :
|
||||||
|
sUri = GetE('txtUrl').value ;
|
||||||
|
|
||||||
|
if ( sUri.length == 0 )
|
||||||
|
{
|
||||||
|
alert( FCKLang.DlnLnkMsgNoUrl ) ;
|
||||||
|
return false ;
|
||||||
|
}
|
||||||
|
|
||||||
|
sUri = GetE('cmbLinkProtocol').value + sUri ;
|
||||||
|
|
||||||
|
break ;
|
||||||
|
|
||||||
|
case 'email' :
|
||||||
|
sUri = GetE('txtEMailAddress').value ;
|
||||||
|
|
||||||
|
if ( sUri.length == 0 )
|
||||||
|
{
|
||||||
|
alert( FCKLang.DlnLnkMsgNoEMail ) ;
|
||||||
|
return false ;
|
||||||
|
}
|
||||||
|
|
||||||
|
sUri = oParser.CreateEMailUri(
|
||||||
|
sUri,
|
||||||
|
GetE('txtEMailSubject').value,
|
||||||
|
GetE('txtEMailBody').value ) ;
|
||||||
|
break ;
|
||||||
|
|
||||||
|
case 'anchor' :
|
||||||
|
var sAnchor = GetE('cmbAnchorName').value ;
|
||||||
|
if ( sAnchor.length == 0 ) sAnchor = GetE('cmbAnchorId').value ;
|
||||||
|
|
||||||
|
if ( sAnchor.length == 0 )
|
||||||
|
{
|
||||||
|
alert( FCKLang.DlnLnkMsgNoAnchor ) ;
|
||||||
|
return false ;
|
||||||
|
}
|
||||||
|
|
||||||
|
sUri = '#' + sAnchor ;
|
||||||
|
break ;
|
||||||
|
}
|
||||||
|
|
||||||
|
// If no link is selected, create a new one (it may result in more than one link creation - #220).
|
||||||
|
var aLinks = oLink ? [ oLink ] : oEditor.FCK.CreateLink( sUri, true ) ;
|
||||||
|
|
||||||
|
// If no selection, no links are created, so use the uri as the link text (by dom, 2006-05-26)
|
||||||
|
var aHasSelection = ( aLinks.length > 0 ) ;
|
||||||
|
if ( !aHasSelection )
|
||||||
|
{
|
||||||
|
sInnerHtml = sUri;
|
||||||
|
|
||||||
|
// Built a better text for empty links.
|
||||||
|
switch ( GetE('cmbLinkType').value )
|
||||||
|
{
|
||||||
|
// anchor: use old behavior --> return true
|
||||||
|
case 'anchor':
|
||||||
|
sInnerHtml = sInnerHtml.replace( /^#/, '' ) ;
|
||||||
|
break ;
|
||||||
|
|
||||||
|
// url: try to get path
|
||||||
|
case 'url':
|
||||||
|
var oLinkPathRegEx = new RegExp("//?([^?\"']+)([?].*)?$") ;
|
||||||
|
var asLinkPath = oLinkPathRegEx.exec( sUri ) ;
|
||||||
|
if (asLinkPath != null)
|
||||||
|
sInnerHtml = asLinkPath[1]; // use matched path
|
||||||
|
break ;
|
||||||
|
|
||||||
|
// mailto: try to get email address
|
||||||
|
case 'email':
|
||||||
|
sInnerHtml = GetE('txtEMailAddress').value ;
|
||||||
|
break ;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create a new (empty) anchor.
|
||||||
|
aLinks = [ oEditor.FCK.InsertElement( 'a' ) ] ;
|
||||||
|
}
|
||||||
|
|
||||||
|
for ( var i = 0 ; i < aLinks.length ; i++ )
|
||||||
|
{
|
||||||
|
oLink = aLinks[i] ;
|
||||||
|
|
||||||
|
if ( aHasSelection )
|
||||||
|
sInnerHtml = oLink.innerHTML ; // Save the innerHTML (IE changes it if it is like an URL).
|
||||||
|
|
||||||
|
oLink.href = sUri ;
|
||||||
|
SetAttribute( oLink, '_fcksavedurl', sUri ) ;
|
||||||
|
|
||||||
|
var onclick;
|
||||||
|
// Accessible popups
|
||||||
|
if( GetE('cmbTarget').value == 'popup' )
|
||||||
|
{
|
||||||
|
onclick = BuildOnClickPopup() ;
|
||||||
|
// Encode the attribute
|
||||||
|
onclick = encodeURIComponent( " onclick=\"" + onclick + "\"" ) ;
|
||||||
|
SetAttribute( oLink, 'onclick_fckprotectedatt', onclick ) ;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Check if the previous onclick was for a popup:
|
||||||
|
// In that case remove the onclick handler.
|
||||||
|
onclick = oLink.getAttribute( 'onclick_fckprotectedatt' ) ;
|
||||||
|
if ( onclick )
|
||||||
|
{
|
||||||
|
// Decode the protected string
|
||||||
|
onclick = decodeURIComponent( onclick ) ;
|
||||||
|
|
||||||
|
if( oRegex.OnClickPopup.test( onclick ) )
|
||||||
|
SetAttribute( oLink, 'onclick_fckprotectedatt', '' ) ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
oLink.innerHTML = sInnerHtml ; // Set (or restore) the innerHTML
|
||||||
|
|
||||||
|
// Target
|
||||||
|
if( GetE('cmbTarget').value != 'popup' )
|
||||||
|
SetAttribute( oLink, 'target', GetE('txtTargetFrame').value ) ;
|
||||||
|
else
|
||||||
|
SetAttribute( oLink, 'target', null ) ;
|
||||||
|
|
||||||
|
// Let's set the "id" only for the first link to avoid duplication.
|
||||||
|
if ( i == 0 )
|
||||||
|
SetAttribute( oLink, 'id', GetE('txtAttId').value ) ;
|
||||||
|
|
||||||
|
// Advances Attributes
|
||||||
|
SetAttribute( oLink, 'name' , GetE('txtAttName').value ) ;
|
||||||
|
SetAttribute( oLink, 'dir' , GetE('cmbAttLangDir').value ) ;
|
||||||
|
SetAttribute( oLink, 'lang' , GetE('txtAttLangCode').value ) ;
|
||||||
|
SetAttribute( oLink, 'accesskey', GetE('txtAttAccessKey').value ) ;
|
||||||
|
SetAttribute( oLink, 'tabindex' , ( GetE('txtAttTabIndex').value > 0 ? GetE('txtAttTabIndex').value : null ) ) ;
|
||||||
|
SetAttribute( oLink, 'title' , GetE('txtAttTitle').value ) ;
|
||||||
|
SetAttribute( oLink, 'type' , GetE('txtAttContentType').value ) ;
|
||||||
|
SetAttribute( oLink, 'charset' , GetE('txtAttCharSet').value ) ;
|
||||||
|
|
||||||
|
if ( oEditor.FCKBrowserInfo.IsIE )
|
||||||
|
{
|
||||||
|
var sClass = GetE('txtAttClasses').value ;
|
||||||
|
// If it's also an anchor add an internal class
|
||||||
|
if ( GetE('txtAttName').value.length != 0 )
|
||||||
|
sClass += ' FCK__AnchorC' ;
|
||||||
|
SetAttribute( oLink, 'className', sClass ) ;
|
||||||
|
|
||||||
|
oLink.style.cssText = GetE('txtAttStyle').value ;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
SetAttribute( oLink, 'class', GetE('txtAttClasses').value ) ;
|
||||||
|
SetAttribute( oLink, 'style', GetE('txtAttStyle').value ) ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Select the (first) link.
|
||||||
|
oEditor.FCKSelection.SelectNode( aLinks[0] );
|
||||||
|
|
||||||
|
return true ;
|
||||||
|
}
|
||||||
|
|
||||||
|
function BrowseServer()
|
||||||
|
{
|
||||||
|
OpenFileBrowser( FCKConfig.LinkBrowserURL, FCKConfig.LinkBrowserWindowWidth, FCKConfig.LinkBrowserWindowHeight ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
function SetUrl( url )
|
||||||
|
{
|
||||||
|
document.getElementById('txtUrl').value = url ;
|
||||||
|
OnUrlChange() ;
|
||||||
|
window.parent.SetSelectedTab( 'Info' ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
function OnUploadCompleted( errorNumber, fileUrl, fileName, customMsg )
|
||||||
|
{
|
||||||
|
switch ( errorNumber )
|
||||||
|
{
|
||||||
|
case 0 : // No errors
|
||||||
|
alert( 'Your file has been successfully uploaded' ) ;
|
||||||
|
break ;
|
||||||
|
case 1 : // Custom error
|
||||||
|
alert( customMsg ) ;
|
||||||
|
return ;
|
||||||
|
case 101 : // Custom warning
|
||||||
|
alert( customMsg ) ;
|
||||||
|
break ;
|
||||||
|
case 201 :
|
||||||
|
alert( 'A file with the same name is already available. The uploaded file has been renamed to "' + fileName + '"' ) ;
|
||||||
|
break ;
|
||||||
|
case 202 :
|
||||||
|
alert( 'Invalid file type' ) ;
|
||||||
|
return ;
|
||||||
|
case 203 :
|
||||||
|
alert( "Security error. You probably don't have enough permissions to upload. Please check your server." ) ;
|
||||||
|
return ;
|
||||||
|
default :
|
||||||
|
alert( 'Error on file upload. Error number: ' + errorNumber ) ;
|
||||||
|
return ;
|
||||||
|
}
|
||||||
|
|
||||||
|
SetUrl( fileUrl ) ;
|
||||||
|
GetE('frmUpload').reset() ;
|
||||||
|
}
|
||||||
|
|
||||||
|
var oUploadAllowedExtRegex = new RegExp( FCKConfig.LinkUploadAllowedExtensions, 'i' ) ;
|
||||||
|
var oUploadDeniedExtRegex = new RegExp( FCKConfig.LinkUploadDeniedExtensions, 'i' ) ;
|
||||||
|
|
||||||
|
function CheckUpload()
|
||||||
|
{
|
||||||
|
var sFile = GetE('txtUploadFile').value ;
|
||||||
|
|
||||||
|
if ( sFile.length == 0 )
|
||||||
|
{
|
||||||
|
alert( 'Please select a file to upload' ) ;
|
||||||
|
return false ;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( ( FCKConfig.LinkUploadAllowedExtensions.length > 0 && !oUploadAllowedExtRegex.test( sFile ) ) ||
|
||||||
|
( FCKConfig.LinkUploadDeniedExtensions.length > 0 && oUploadDeniedExtRegex.test( sFile ) ) )
|
||||||
|
{
|
||||||
|
OnUploadCompleted( 202 ) ;
|
||||||
|
return false ;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true ;
|
||||||
|
}
|
||||||
|
|
||||||
|
function SetDefaultTarget()
|
||||||
|
{
|
||||||
|
var target = FCKConfig.DefaultLinkTarget || '' ;
|
||||||
|
|
||||||
|
if ( oLink || target.length == 0 )
|
||||||
|
return ;
|
||||||
|
|
||||||
|
switch ( target )
|
||||||
|
{
|
||||||
|
case '_blank' :
|
||||||
|
case '_self' :
|
||||||
|
case '_parent' :
|
||||||
|
case '_top' :
|
||||||
|
GetE('cmbTarget').value = target ;
|
||||||
|
break ;
|
||||||
|
default :
|
||||||
|
GetE('cmbTarget').value = 'frame' ;
|
||||||
|
break ;
|
||||||
|
}
|
||||||
|
|
||||||
|
GetE('txtTargetFrame').value = target ;
|
||||||
|
}
|
||||||
116
htdocs/includes/fckeditor/editor/dialog/fck_listprop.html
Normal file
@@ -0,0 +1,116 @@
|
|||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
|
||||||
|
<!--
|
||||||
|
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
||||||
|
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
||||||
|
*
|
||||||
|
* == BEGIN LICENSE ==
|
||||||
|
*
|
||||||
|
* Licensed under the terms of any of the following licenses at your
|
||||||
|
* choice:
|
||||||
|
*
|
||||||
|
* - GNU General Public License Version 2 or later (the "GPL")
|
||||||
|
* http://www.gnu.org/licenses/gpl.html
|
||||||
|
*
|
||||||
|
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
||||||
|
* http://www.gnu.org/licenses/lgpl.html
|
||||||
|
*
|
||||||
|
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
||||||
|
* http://www.mozilla.org/MPL/MPL-1.1.html
|
||||||
|
*
|
||||||
|
* == END LICENSE ==
|
||||||
|
*
|
||||||
|
* Bulleted List dialog window.
|
||||||
|
-->
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<title></title>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
|
<meta content="noindex, nofollow" name="robots" />
|
||||||
|
<script src="common/fck_dialog_common.js" type="text/javascript"></script>
|
||||||
|
<script type="text/javascript">
|
||||||
|
|
||||||
|
var oEditor = window.parent.InnerDialogLoaded() ;
|
||||||
|
|
||||||
|
// Gets the document DOM
|
||||||
|
var oDOM = oEditor.FCK.EditorDocument ;
|
||||||
|
var sListType = ( location.search == '?OL' ? 'OL' : 'UL' ) ;
|
||||||
|
|
||||||
|
var oActiveEl = oEditor.FCKSelection.MoveToAncestorNode( sListType ) ;
|
||||||
|
var oActiveSel ;
|
||||||
|
|
||||||
|
window.onload = function()
|
||||||
|
{
|
||||||
|
// First of all, translate the dialog box texts
|
||||||
|
oEditor.FCKLanguageManager.TranslatePage(document) ;
|
||||||
|
|
||||||
|
if ( sListType == 'UL' )
|
||||||
|
oActiveSel = GetE('selBulleted') ;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if ( oActiveEl )
|
||||||
|
{
|
||||||
|
oActiveSel = GetE('selNumbered') ;
|
||||||
|
GetE('eStart').style.display = '' ;
|
||||||
|
GetE('txtStartPosition').value = GetAttribute( oActiveEl, 'start' ) ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
oActiveSel.style.display = '' ;
|
||||||
|
|
||||||
|
if ( oActiveEl )
|
||||||
|
{
|
||||||
|
if ( oActiveEl.getAttribute('type') )
|
||||||
|
oActiveSel.value = oActiveEl.getAttribute('type') ;
|
||||||
|
}
|
||||||
|
|
||||||
|
window.parent.SetOkButton( true ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
function Ok()
|
||||||
|
{
|
||||||
|
if ( oActiveEl ){
|
||||||
|
SetAttribute( oActiveEl, 'type' , oActiveSel.value ) ;
|
||||||
|
if(oActiveEl.tagName == 'OL')
|
||||||
|
SetAttribute( oActiveEl, 'start', GetE('txtStartPosition').value ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true ;
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
<body style="overflow: hidden">
|
||||||
|
<table width="100%" style="height: 100%">
|
||||||
|
<tr>
|
||||||
|
<td style="text-align:center">
|
||||||
|
<table cellspacing="0" cellpadding="0" border="0" style="margin-left: auto; margin-right: auto;">
|
||||||
|
<tr>
|
||||||
|
<td id="eStart" style="display: none; padding-right: 5px; padding-left: 5px">
|
||||||
|
<span fcklang="DlgLstStart">Start</span><br />
|
||||||
|
<input type="text" id="txtStartPosition" size="5" />
|
||||||
|
</td>
|
||||||
|
<td style="padding-right: 5px; padding-left: 5px">
|
||||||
|
<span fcklang="DlgLstType">List Type</span><br />
|
||||||
|
<select id="selBulleted" style="display: none">
|
||||||
|
<option value="" selected="selected"></option>
|
||||||
|
<option value="circle" fcklang="DlgLstTypeCircle">Circle</option>
|
||||||
|
<option value="disc" fcklang="DlgLstTypeDisc">Disc</option>
|
||||||
|
<option value="square" fcklang="DlgLstTypeSquare">Square</option>
|
||||||
|
</select>
|
||||||
|
<select id="selNumbered" style="display: none">
|
||||||
|
<option value="" selected="selected"></option>
|
||||||
|
<option value="1" fcklang="DlgLstTypeNumbers">Numbers (1, 2, 3)</option>
|
||||||
|
<option value="a" fcklang="DlgLstTypeLCase">Lowercase Letters (a, b, c)</option>
|
||||||
|
<option value="A" fcklang="DlgLstTypeUCase">Uppercase Letters (A, B, C)</option>
|
||||||
|
<option value="i" fcklang="DlgLstTypeSRoman">Small Roman Numerals (i, ii, iii)</option>
|
||||||
|
<option value="I" fcklang="DlgLstTypeLRoman">Large Roman Numerals (I, II, III)</option>
|
||||||
|
</select>
|
||||||
|
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
340
htdocs/includes/fckeditor/editor/dialog/fck_paste.html
Normal file
@@ -0,0 +1,340 @@
|
|||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||||
|
<!--
|
||||||
|
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
||||||
|
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
||||||
|
*
|
||||||
|
* == BEGIN LICENSE ==
|
||||||
|
*
|
||||||
|
* Licensed under the terms of any of the following licenses at your
|
||||||
|
* choice:
|
||||||
|
*
|
||||||
|
* - GNU General Public License Version 2 or later (the "GPL")
|
||||||
|
* http://www.gnu.org/licenses/gpl.html
|
||||||
|
*
|
||||||
|
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
||||||
|
* http://www.gnu.org/licenses/lgpl.html
|
||||||
|
*
|
||||||
|
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
||||||
|
* http://www.mozilla.org/MPL/MPL-1.1.html
|
||||||
|
*
|
||||||
|
* == END LICENSE ==
|
||||||
|
*
|
||||||
|
* This dialog is shown when, for some reason (usually security settings),
|
||||||
|
* the user is not able to paste data from the clipboard to the editor using
|
||||||
|
* the toolbar buttons or the context menu.
|
||||||
|
-->
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<title></title>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
|
<meta name="robots" content="noindex, nofollow" />
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
var oEditor = window.parent.InnerDialogLoaded() ;
|
||||||
|
var FCK = oEditor.FCK;
|
||||||
|
var FCKTools = oEditor.FCKTools ;
|
||||||
|
var FCKConfig = oEditor.FCKConfig ;
|
||||||
|
|
||||||
|
window.onload = function ()
|
||||||
|
{
|
||||||
|
// First of all, translate the dialog box texts
|
||||||
|
oEditor.FCKLanguageManager.TranslatePage(document) ;
|
||||||
|
|
||||||
|
var sPastingType = window.parent.dialogArguments.CustomValue ;
|
||||||
|
|
||||||
|
if ( sPastingType == 'Word' || sPastingType == 'Security' )
|
||||||
|
{
|
||||||
|
if ( sPastingType == 'Security' )
|
||||||
|
document.getElementById( 'xSecurityMsg' ).style.display = '' ;
|
||||||
|
|
||||||
|
var oFrame = document.getElementById('frmData') ;
|
||||||
|
oFrame.style.display = '' ;
|
||||||
|
|
||||||
|
// Avoid errors if the pasted content has any script that fails: #389
|
||||||
|
var oDoc = oFrame.contentWindow.document ;
|
||||||
|
oDoc.open() ;
|
||||||
|
oDoc.write('<html><head><script>window.onerror = function() { return true ; };<\/script><\/head><body><\/body><\/html>') ;
|
||||||
|
oDoc.close() ;
|
||||||
|
|
||||||
|
if ( oFrame.contentDocument )
|
||||||
|
oFrame.contentDocument.designMode = 'on' ;
|
||||||
|
else
|
||||||
|
oFrame.contentWindow.document.body.contentEditable = true ;
|
||||||
|
|
||||||
|
// Set the focus on the pasting area
|
||||||
|
oFrame.contentWindow.focus();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
document.getElementById('txtData').style.display = '' ;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( sPastingType != 'Word' )
|
||||||
|
document.getElementById('oWordCommands').style.display = 'none' ;
|
||||||
|
|
||||||
|
window.parent.SetOkButton( true ) ;
|
||||||
|
window.parent.SetAutoSize( true ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
function Ok()
|
||||||
|
{
|
||||||
|
// Before doing anything, save undo snapshot.
|
||||||
|
oEditor.FCKUndo.SaveUndoStep() ;
|
||||||
|
|
||||||
|
var sHtml ;
|
||||||
|
|
||||||
|
var sPastingType = window.parent.dialogArguments.CustomValue ;
|
||||||
|
|
||||||
|
if ( sPastingType == 'Word' || sPastingType == 'Security' )
|
||||||
|
{
|
||||||
|
var oFrame = document.getElementById('frmData') ;
|
||||||
|
var oBody ;
|
||||||
|
|
||||||
|
if ( oFrame.contentDocument )
|
||||||
|
oBody = oFrame.contentDocument.body ;
|
||||||
|
else
|
||||||
|
oBody = oFrame.contentWindow.document.body ;
|
||||||
|
|
||||||
|
if ( sPastingType == 'Word' )
|
||||||
|
{
|
||||||
|
// If a plugin creates a FCK.CustomCleanWord function it will be called instead of the default one
|
||||||
|
if ( typeof( FCK.CustomCleanWord ) == 'function' )
|
||||||
|
sHtml = FCK.CustomCleanWord( oBody, document.getElementById('chkRemoveFont').checked, document.getElementById('chkRemoveStyles').checked ) ;
|
||||||
|
else
|
||||||
|
sHtml = CleanWord( oBody, document.getElementById('chkRemoveFont').checked, document.getElementById('chkRemoveStyles').checked ) ;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
sHtml = oBody.innerHTML ;
|
||||||
|
|
||||||
|
// Fix relative anchor URLs (IE automatically adds the current page URL).
|
||||||
|
var re = new RegExp( window.location + "#", "g" ) ;
|
||||||
|
sHtml = sHtml.replace( re, '#') ;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sHtml = oEditor.FCKTools.HTMLEncode( document.getElementById('txtData').value ) ;
|
||||||
|
sHtml = FCKTools.ProcessLineBreaks( oEditor, FCKConfig, sHtml ) ;
|
||||||
|
|
||||||
|
// FCK.InsertHtml() does not work for us, since document fragments cannot contain node fragments. :(
|
||||||
|
// Use the marker method instead. It's primitive, but it works.
|
||||||
|
var range = new oEditor.FCKDomRange( oEditor.FCK.EditorWindow ) ;
|
||||||
|
var oDoc = oEditor.FCK.EditorDocument ;
|
||||||
|
range.MoveToSelection() ;
|
||||||
|
range.DeleteContents() ;
|
||||||
|
var marker = [] ;
|
||||||
|
for ( var i = 0 ; i < 5 ; i++ )
|
||||||
|
marker.push( parseInt(Math.random() * 100000, 10 ) ) ;
|
||||||
|
marker = marker.join( "" ) ;
|
||||||
|
range.InsertNode ( oDoc.createTextNode( marker ) ) ;
|
||||||
|
var bookmark = range.CreateBookmark() ;
|
||||||
|
|
||||||
|
// Now we've got a marker indicating the paste position in the editor document.
|
||||||
|
// Find its position in the HTML code.
|
||||||
|
var htmlString = oDoc.body.innerHTML ;
|
||||||
|
var index = htmlString.indexOf( marker ) ;
|
||||||
|
|
||||||
|
// Split it the HTML code up, add the code we generated, and put them back together.
|
||||||
|
var htmlList = [] ;
|
||||||
|
htmlList.push( htmlString.substr( 0, index ) ) ;
|
||||||
|
htmlList.push( sHtml ) ;
|
||||||
|
htmlList.push( htmlString.substr( index + marker.length ) ) ;
|
||||||
|
htmlString = htmlList.join( "" ) ;
|
||||||
|
|
||||||
|
if ( oEditor.FCKBrowserInfo.IsIE )
|
||||||
|
oEditor.FCK.SetInnerHtml( htmlString ) ;
|
||||||
|
else
|
||||||
|
oDoc.body.innerHTML = htmlString ;
|
||||||
|
|
||||||
|
range.MoveToBookmark( bookmark ) ;
|
||||||
|
range.Collapse( false ) ;
|
||||||
|
range.Select() ;
|
||||||
|
range.Release() ;
|
||||||
|
return true ;
|
||||||
|
}
|
||||||
|
|
||||||
|
oEditor.FCK.InsertHtml( sHtml ) ;
|
||||||
|
|
||||||
|
return true ;
|
||||||
|
}
|
||||||
|
|
||||||
|
function CleanUpBox()
|
||||||
|
{
|
||||||
|
var oFrame = document.getElementById('frmData') ;
|
||||||
|
|
||||||
|
if ( oFrame.contentDocument )
|
||||||
|
oFrame.contentDocument.body.innerHTML = '' ;
|
||||||
|
else
|
||||||
|
oFrame.contentWindow.document.body.innerHTML = '' ;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// This function will be called from the PasteFromWord dialog (fck_paste.html)
|
||||||
|
// Input: oNode a DOM node that contains the raw paste from the clipboard
|
||||||
|
// bIgnoreFont, bRemoveStyles booleans according to the values set in the dialog
|
||||||
|
// Output: the cleaned string
|
||||||
|
function CleanWord( oNode, bIgnoreFont, bRemoveStyles )
|
||||||
|
{
|
||||||
|
var html = oNode.innerHTML ;
|
||||||
|
|
||||||
|
html = html.replace(/<o:p>\s*<\/o:p>/g, '') ;
|
||||||
|
html = html.replace(/<o:p>.*?<\/o:p>/g, ' ') ;
|
||||||
|
|
||||||
|
// Remove mso-xxx styles.
|
||||||
|
html = html.replace( /\s*mso-[^:]+:[^;"]+;?/gi, '' ) ;
|
||||||
|
|
||||||
|
// Remove margin styles.
|
||||||
|
html = html.replace( /\s*MARGIN: 0cm 0cm 0pt\s*;/gi, '' ) ;
|
||||||
|
html = html.replace( /\s*MARGIN: 0cm 0cm 0pt\s*"/gi, "\"" ) ;
|
||||||
|
|
||||||
|
html = html.replace( /\s*TEXT-INDENT: 0cm\s*;/gi, '' ) ;
|
||||||
|
html = html.replace( /\s*TEXT-INDENT: 0cm\s*"/gi, "\"" ) ;
|
||||||
|
|
||||||
|
html = html.replace( /\s*TEXT-ALIGN: [^\s;]+;?"/gi, "\"" ) ;
|
||||||
|
|
||||||
|
html = html.replace( /\s*PAGE-BREAK-BEFORE: [^\s;]+;?"/gi, "\"" ) ;
|
||||||
|
|
||||||
|
html = html.replace( /\s*FONT-VARIANT: [^\s;]+;?"/gi, "\"" ) ;
|
||||||
|
|
||||||
|
html = html.replace( /\s*tab-stops:[^;"]*;?/gi, '' ) ;
|
||||||
|
html = html.replace( /\s*tab-stops:[^"]*/gi, '' ) ;
|
||||||
|
|
||||||
|
// Remove FONT face attributes.
|
||||||
|
if ( bIgnoreFont )
|
||||||
|
{
|
||||||
|
html = html.replace( /\s*face="[^"]*"/gi, '' ) ;
|
||||||
|
html = html.replace( /\s*face=[^ >]*/gi, '' ) ;
|
||||||
|
|
||||||
|
html = html.replace( /\s*FONT-FAMILY:[^;"]*;?/gi, '' ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Remove Class attributes
|
||||||
|
html = html.replace(/<(\w[^>]*) class=([^ |>]*)([^>]*)/gi, "<$1$3") ;
|
||||||
|
|
||||||
|
// Remove styles.
|
||||||
|
if ( bRemoveStyles )
|
||||||
|
html = html.replace( /<(\w[^>]*) style="([^\"]*)"([^>]*)/gi, "<$1$3" ) ;
|
||||||
|
|
||||||
|
// Remove empty styles.
|
||||||
|
html = html.replace( /\s*style="\s*"/gi, '' ) ;
|
||||||
|
|
||||||
|
html = html.replace( /<SPAN\s*[^>]*>\s* \s*<\/SPAN>/gi, ' ' ) ;
|
||||||
|
|
||||||
|
html = html.replace( /<SPAN\s*[^>]*><\/SPAN>/gi, '' ) ;
|
||||||
|
|
||||||
|
// Remove Lang attributes
|
||||||
|
html = html.replace(/<(\w[^>]*) lang=([^ |>]*)([^>]*)/gi, "<$1$3") ;
|
||||||
|
|
||||||
|
html = html.replace( /<SPAN\s*>(.*?)<\/SPAN>/gi, '$1' ) ;
|
||||||
|
|
||||||
|
html = html.replace( /<FONT\s*>(.*?)<\/FONT>/gi, '$1' ) ;
|
||||||
|
|
||||||
|
// Remove XML elements and declarations
|
||||||
|
html = html.replace(/<\\?\?xml[^>]*>/gi, '' ) ;
|
||||||
|
|
||||||
|
// Remove Tags with XML namespace declarations: <o:p><\/o:p>
|
||||||
|
html = html.replace(/<\/?\w+:[^>]*>/gi, '' ) ;
|
||||||
|
|
||||||
|
// Remove comments [SF BUG-1481861].
|
||||||
|
html = html.replace(/<\!--.*?-->/g, '' ) ;
|
||||||
|
|
||||||
|
html = html.replace( /<(U|I|STRIKE)> <\/\1>/g, ' ' ) ;
|
||||||
|
|
||||||
|
html = html.replace( /<H\d>\s*<\/H\d>/gi, '' ) ;
|
||||||
|
|
||||||
|
// Remove "display:none" tags.
|
||||||
|
html = html.replace( /<(\w+)[^>]*\sstyle="[^"]*DISPLAY\s?:\s?none(.*?)<\/\1>/ig, '' ) ;
|
||||||
|
|
||||||
|
// Remove language tags
|
||||||
|
html = html.replace( /<(\w[^>]*) language=([^ |>]*)([^>]*)/gi, "<$1$3") ;
|
||||||
|
|
||||||
|
// Remove onmouseover and onmouseout events (from MS Word comments effect)
|
||||||
|
html = html.replace( /<(\w[^>]*) onmouseover="([^\"]*)"([^>]*)/gi, "<$1$3") ;
|
||||||
|
html = html.replace( /<(\w[^>]*) onmouseout="([^\"]*)"([^>]*)/gi, "<$1$3") ;
|
||||||
|
|
||||||
|
if ( FCKConfig.CleanWordKeepsStructure )
|
||||||
|
{
|
||||||
|
// The original <Hn> tag send from Word is something like this: <Hn style="margin-top:0px;margin-bottom:0px">
|
||||||
|
html = html.replace( /<H(\d)([^>]*)>/gi, '<h$1>' ) ;
|
||||||
|
|
||||||
|
// Word likes to insert extra <font> tags, when using MSIE. (Wierd).
|
||||||
|
html = html.replace( /<(H\d)><FONT[^>]*>(.*?)<\/FONT><\/\1>/gi, '<$1>$2<\/$1>' );
|
||||||
|
html = html.replace( /<(H\d)><EM>(.*?)<\/EM><\/\1>/gi, '<$1>$2<\/$1>' );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
html = html.replace( /<H1([^>]*)>/gi, '<div$1><b><font size="6">' ) ;
|
||||||
|
html = html.replace( /<H2([^>]*)>/gi, '<div$1><b><font size="5">' ) ;
|
||||||
|
html = html.replace( /<H3([^>]*)>/gi, '<div$1><b><font size="4">' ) ;
|
||||||
|
html = html.replace( /<H4([^>]*)>/gi, '<div$1><b><font size="3">' ) ;
|
||||||
|
html = html.replace( /<H5([^>]*)>/gi, '<div$1><b><font size="2">' ) ;
|
||||||
|
html = html.replace( /<H6([^>]*)>/gi, '<div$1><b><font size="1">' ) ;
|
||||||
|
|
||||||
|
html = html.replace( /<\/H\d>/gi, '<\/font><\/b><\/div>' ) ;
|
||||||
|
|
||||||
|
// Transform <P> to <DIV>
|
||||||
|
var re = new RegExp( '(<P)([^>]*>.*?)(<\/P>)', 'gi' ) ; // Different because of a IE 5.0 error
|
||||||
|
html = html.replace( re, '<div$2<\/div>' ) ;
|
||||||
|
|
||||||
|
// Remove empty tags (three times, just to be sure).
|
||||||
|
// This also removes any empty anchor
|
||||||
|
html = html.replace( /<([^\s>]+)(\s[^>]*)?>\s*<\/\1>/g, '' ) ;
|
||||||
|
html = html.replace( /<([^\s>]+)(\s[^>]*)?>\s*<\/\1>/g, '' ) ;
|
||||||
|
html = html.replace( /<([^\s>]+)(\s[^>]*)?>\s*<\/\1>/g, '' ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
return html ;
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body style="overflow: hidden">
|
||||||
|
<table cellspacing="0" cellpadding="0" width="100%" border="0" style="height: 98%">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<div id="xSecurityMsg" style="display: none">
|
||||||
|
<span fcklang="DlgPasteSec">Because of your browser security settings,
|
||||||
|
the editor is not able to access your clipboard data directly. You are required
|
||||||
|
to paste it again in this window.</span><br />
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<span fcklang="DlgPasteMsg2">Please paste inside the following box using the keyboard
|
||||||
|
(<strong>Ctrl+V</strong>) and hit <strong>OK</strong>.</span><br />
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td valign="top" height="100%" style="border-right: #000000 1px solid; border-top: #000000 1px solid;
|
||||||
|
border-left: #000000 1px solid; border-bottom: #000000 1px solid">
|
||||||
|
<textarea id="txtData" cols="80" rows="5" style="border: #000000 1px; display: none;
|
||||||
|
width: 99%; height: 98%"></textarea>
|
||||||
|
<iframe id="frmData" src="javascript:void(0)" height="98%" width="99%" frameborder="0"
|
||||||
|
style="border-right: #000000 1px; border-top: #000000 1px; display: none; border-left: #000000 1px;
|
||||||
|
border-bottom: #000000 1px; background-color: #ffffff"></iframe>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr id="oWordCommands">
|
||||||
|
<td>
|
||||||
|
<table border="0" cellpadding="0" cellspacing="0" width="100%">
|
||||||
|
<tr>
|
||||||
|
<td nowrap="nowrap">
|
||||||
|
<input id="chkRemoveFont" type="checkbox" checked="checked" />
|
||||||
|
<label for="chkRemoveFont" fcklang="DlgPasteIgnoreFont">
|
||||||
|
Ignore Font Face definitions</label>
|
||||||
|
<br />
|
||||||
|
<input id="chkRemoveStyles" type="checkbox" />
|
||||||
|
<label for="chkRemoveStyles" fcklang="DlgPasteRemoveStyles">
|
||||||
|
Remove Styles definitions</label>
|
||||||
|
</td>
|
||||||
|
<td align="right" valign="top">
|
||||||
|
<input type="button" fcklang="DlgPasteCleanBox" value="Clean Up Box" onclick="CleanUpBox()" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
109
htdocs/includes/fckeditor/editor/dialog/fck_radiobutton.html
Normal file
@@ -0,0 +1,109 @@
|
|||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
|
||||||
|
<!--
|
||||||
|
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
||||||
|
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
||||||
|
*
|
||||||
|
* == BEGIN LICENSE ==
|
||||||
|
*
|
||||||
|
* Licensed under the terms of any of the following licenses at your
|
||||||
|
* choice:
|
||||||
|
*
|
||||||
|
* - GNU General Public License Version 2 or later (the "GPL")
|
||||||
|
* http://www.gnu.org/licenses/gpl.html
|
||||||
|
*
|
||||||
|
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
||||||
|
* http://www.gnu.org/licenses/lgpl.html
|
||||||
|
*
|
||||||
|
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
||||||
|
* http://www.mozilla.org/MPL/MPL-1.1.html
|
||||||
|
*
|
||||||
|
* == END LICENSE ==
|
||||||
|
*
|
||||||
|
* Radio Button dialog window.
|
||||||
|
-->
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Radio Button Properties</title>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||||
|
<meta content="noindex, nofollow" name="robots">
|
||||||
|
<script src="common/fck_dialog_common.js" type="text/javascript"></script>
|
||||||
|
<script type="text/javascript">
|
||||||
|
|
||||||
|
var oEditor = window.parent.InnerDialogLoaded() ;
|
||||||
|
|
||||||
|
// Gets the document DOM
|
||||||
|
var oDOM = oEditor.FCK.EditorDocument ;
|
||||||
|
|
||||||
|
var oActiveEl = oEditor.FCKSelection.GetSelectedElement() ;
|
||||||
|
|
||||||
|
window.onload = function()
|
||||||
|
{
|
||||||
|
// First of all, translate the dialog box texts
|
||||||
|
oEditor.FCKLanguageManager.TranslatePage(document) ;
|
||||||
|
|
||||||
|
if ( oActiveEl && oActiveEl.tagName.toUpperCase() == 'INPUT' && oActiveEl.type == 'radio' )
|
||||||
|
{
|
||||||
|
GetE('txtName').value = oActiveEl.name ;
|
||||||
|
GetE('txtValue').value = oEditor.FCKBrowserInfo.IsIE ? oActiveEl.value : GetAttribute( oActiveEl, 'value' ) ;
|
||||||
|
GetE('txtSelected').checked = oActiveEl.checked ;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
oActiveEl = null ;
|
||||||
|
|
||||||
|
window.parent.SetOkButton( true ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
function Ok()
|
||||||
|
{
|
||||||
|
oEditor.FCKUndo.SaveUndoStep() ;
|
||||||
|
|
||||||
|
if ( !oActiveEl )
|
||||||
|
{
|
||||||
|
oActiveEl = oEditor.FCK.EditorDocument.createElement( 'INPUT' ) ;
|
||||||
|
oActiveEl.type = 'radio' ;
|
||||||
|
oActiveEl = oEditor.FCK.InsertElement( oActiveEl ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( GetE('txtName').value.length > 0 )
|
||||||
|
oActiveEl.name = GetE('txtName').value ;
|
||||||
|
|
||||||
|
if ( oEditor.FCKBrowserInfo.IsIE )
|
||||||
|
oActiveEl.value = GetE('txtValue').value ;
|
||||||
|
else
|
||||||
|
SetAttribute( oActiveEl, 'value', GetE('txtValue').value ) ;
|
||||||
|
|
||||||
|
var bIsChecked = GetE('txtSelected').checked ;
|
||||||
|
SetAttribute( oActiveEl, 'checked', bIsChecked ? 'checked' : null ) ; // For Firefox
|
||||||
|
oActiveEl.checked = bIsChecked ;
|
||||||
|
|
||||||
|
return true ;
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
<body style="OVERFLOW: hidden" scroll="no">
|
||||||
|
<table height="100%" width="100%">
|
||||||
|
<tr>
|
||||||
|
<td align="center">
|
||||||
|
<table border="0" cellpadding="0" cellspacing="0" width="80%">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<span fckLang="DlgCheckboxName">Name</span><br>
|
||||||
|
<input type="text" size="20" id="txtName" style="WIDTH: 100%">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<span fckLang="DlgCheckboxValue">Value</span><br>
|
||||||
|
<input type="text" size="20" id="txtValue" style="WIDTH: 100%">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><input type="checkbox" id="txtSelected"><label for="txtSelected" fckLang="DlgCheckboxSelected">Checked</label></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
452
htdocs/includes/fckeditor/editor/dialog/fck_replace.html
Normal file
@@ -0,0 +1,452 @@
|
|||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||||
|
<!--
|
||||||
|
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
||||||
|
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
||||||
|
*
|
||||||
|
* == BEGIN LICENSE ==
|
||||||
|
*
|
||||||
|
* Licensed under the terms of any of the following licenses at your
|
||||||
|
* choice:
|
||||||
|
*
|
||||||
|
* - GNU General Public License Version 2 or later (the "GPL")
|
||||||
|
* http://www.gnu.org/licenses/gpl.html
|
||||||
|
*
|
||||||
|
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
||||||
|
* http://www.gnu.org/licenses/lgpl.html
|
||||||
|
*
|
||||||
|
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
||||||
|
* http://www.mozilla.org/MPL/MPL-1.1.html
|
||||||
|
*
|
||||||
|
* == END LICENSE ==
|
||||||
|
*
|
||||||
|
* "Find" and "Replace" dialog box window.
|
||||||
|
-->
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<title></title>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
|
<meta content="noindex, nofollow" name="robots" />
|
||||||
|
<script src="common/fck_dialog_common.js" type="text/javascript"></script>
|
||||||
|
<script type="text/javascript">
|
||||||
|
|
||||||
|
var oEditor = window.parent.InnerDialogLoaded() ;
|
||||||
|
var FCKLang = oEditor.FCKLang ;
|
||||||
|
|
||||||
|
window.parent.AddTab( 'Find', FCKLang.DlgFindTitle ) ;
|
||||||
|
window.parent.AddTab( 'Replace', FCKLang.DlgReplaceTitle ) ;
|
||||||
|
var idMap = {} ;
|
||||||
|
|
||||||
|
function OnDialogTabChange( tabCode )
|
||||||
|
{
|
||||||
|
ShowE( 'divFind', ( tabCode == 'Find' ) ) ;
|
||||||
|
ShowE( 'divReplace', ( tabCode == 'Replace' ) ) ;
|
||||||
|
idMap['FindText'] = 'txtFind' + tabCode ;
|
||||||
|
idMap['CheckCase'] = 'chkCase' + tabCode ;
|
||||||
|
idMap['CheckWord'] = 'chkWord' + tabCode ;
|
||||||
|
}
|
||||||
|
|
||||||
|
function OnLoad()
|
||||||
|
{
|
||||||
|
// First of all, translate the dialog box texts.
|
||||||
|
oEditor.FCKLanguageManager.TranslatePage( document ) ;
|
||||||
|
|
||||||
|
// Place the cursor at the start of document.
|
||||||
|
// This will be the starting point of our search.
|
||||||
|
var range = new oEditor.FCKDomRange( oEditor.FCK.EditorWindow ) ;
|
||||||
|
range.SetStart( oEditor.FCK.EditorDocument.body, 1 ) ;
|
||||||
|
range.SetEnd( oEditor.FCK.EditorDocument.body, 1 ) ;
|
||||||
|
range.Collapse( true ) ;
|
||||||
|
range.Select() ;
|
||||||
|
|
||||||
|
// Show the appropriate tab at startup.
|
||||||
|
if ( window.parent.name.search( 'Replace' ) == -1 )
|
||||||
|
window.parent.SetSelectedTab( 'Find' ) ;
|
||||||
|
else
|
||||||
|
window.parent.SetSelectedTab( 'Replace' ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
function btnStat(frm)
|
||||||
|
{
|
||||||
|
document.getElementById('btnReplace').disabled =
|
||||||
|
document.getElementById('btnReplaceAll').disabled =
|
||||||
|
document.getElementById('btnFind').disabled =
|
||||||
|
( document.getElementById(idMap["FindText"]).value.length == 0 ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
function GetSelection()
|
||||||
|
{
|
||||||
|
var range = new oEditor.FCKDomRange( oEditor.FCK.EditorWindow ) ;
|
||||||
|
range.MoveToSelection() ;
|
||||||
|
return range.CreateBookmark2() ;
|
||||||
|
}
|
||||||
|
|
||||||
|
function GetSearchString()
|
||||||
|
{
|
||||||
|
return document.getElementById(idMap['FindText']).value ;
|
||||||
|
}
|
||||||
|
|
||||||
|
function GetReplaceString()
|
||||||
|
{
|
||||||
|
return document.getElementById("txtReplace").value ;
|
||||||
|
}
|
||||||
|
|
||||||
|
function GetCheckCase()
|
||||||
|
{
|
||||||
|
return !! ( document.getElementById(idMap['CheckCase']).checked ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
function GetMatchWord()
|
||||||
|
{
|
||||||
|
return !! ( document.getElementById(idMap['CheckWord']).checked ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get the data pointed to by a bookmark.
|
||||||
|
function GetData( bookmark )
|
||||||
|
{
|
||||||
|
var currentNode = oEditor.FCK.EditorDocument.documentElement;
|
||||||
|
for( var i = 0 ; i < bookmark.length ; i++ )
|
||||||
|
{
|
||||||
|
if ( currentNode.childNodes.length > bookmark[i] )
|
||||||
|
currentNode = currentNode.childNodes.item( bookmark[i] ) ;
|
||||||
|
else if ( currentNode.nodeType == 3 ) // text node
|
||||||
|
{
|
||||||
|
var c = currentNode.nodeValue.charAt( bookmark[i] ) ;
|
||||||
|
if ( i == bookmark.length - 1 )
|
||||||
|
return c != "" ? c : null ;
|
||||||
|
else
|
||||||
|
return null ;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return currentNode ;
|
||||||
|
}
|
||||||
|
|
||||||
|
// With this function, we can treat the bookmark as an iterator for DFS.
|
||||||
|
function NextPosition( bookmark )
|
||||||
|
{
|
||||||
|
// See if there's anything further down the tree.
|
||||||
|
var next = bookmark.concat( [0] ) ;
|
||||||
|
|
||||||
|
if ( GetData( next ) != null )
|
||||||
|
return next ;
|
||||||
|
|
||||||
|
// Nothing down there? See if there's anything next to me.
|
||||||
|
var next = bookmark.slice( 0, bookmark.length - 1 ).concat( [ bookmark[ bookmark.length - 1 ] + 1 ] ) ;
|
||||||
|
if ( GetData( next ) != null )
|
||||||
|
return next ;
|
||||||
|
|
||||||
|
// Nothing even next to me? See if there's anything next to my ancestors.
|
||||||
|
for ( var i = bookmark.length - 1 ; i > 0 ; i-- )
|
||||||
|
{
|
||||||
|
var next = bookmark.slice( 0, i - 1 ).concat( [ bookmark[ i - 1 ] + 1 ] ) ;
|
||||||
|
if ( GetData( next ) != null )
|
||||||
|
return next ;
|
||||||
|
}
|
||||||
|
|
||||||
|
// There's absolutely nothing left to walk, return null.
|
||||||
|
return null ;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Is this character a unicode whitespace?
|
||||||
|
// Reference: http://unicode.org/Public/UNIDATA/PropList.txt
|
||||||
|
function CheckIsWhitespace( c )
|
||||||
|
{
|
||||||
|
var code = c.charCodeAt( 0 );
|
||||||
|
if ( code >= 9 && code <= 0xd )
|
||||||
|
return true;
|
||||||
|
if ( code >= 0x2000 && code <= 0x200a )
|
||||||
|
return true;
|
||||||
|
switch ( code )
|
||||||
|
{
|
||||||
|
case 0x20:
|
||||||
|
case 0x85:
|
||||||
|
case 0xa0:
|
||||||
|
case 0x1680:
|
||||||
|
case 0x180e:
|
||||||
|
case 0x2028:
|
||||||
|
case 0x2029:
|
||||||
|
case 0x202f:
|
||||||
|
case 0x205f:
|
||||||
|
case 0x3000:
|
||||||
|
return true;
|
||||||
|
default:
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Knuth-Morris-Pratt Algorithm for stream input
|
||||||
|
KMP_NOMATCH = 0 ;
|
||||||
|
KMP_ADVANCED = 1 ;
|
||||||
|
KMP_MATCHED = 2 ;
|
||||||
|
function KmpMatch( pattern, ignoreCase )
|
||||||
|
{
|
||||||
|
var overlap = [ -1 ] ;
|
||||||
|
for ( var i = 0 ; i < pattern.length ; i++ )
|
||||||
|
{
|
||||||
|
overlap.push( overlap[i] + 1 ) ;
|
||||||
|
while ( overlap[ i + 1 ] > 0 && pattern.charAt( i ) != pattern.charAt( overlap[ i + 1 ] - 1 ) )
|
||||||
|
overlap[ i + 1 ] = overlap[ overlap[ i + 1 ] - 1 ] + 1 ;
|
||||||
|
}
|
||||||
|
this._Overlap = overlap ;
|
||||||
|
this._State = 0 ;
|
||||||
|
this._IgnoreCase = ( ignoreCase === true ) ;
|
||||||
|
if ( ignoreCase )
|
||||||
|
this.Pattern = pattern.toLowerCase();
|
||||||
|
else
|
||||||
|
this.Pattern = pattern ;
|
||||||
|
}
|
||||||
|
KmpMatch.prototype = {
|
||||||
|
"FeedCharacter" : function( c )
|
||||||
|
{
|
||||||
|
if ( this._IgnoreCase )
|
||||||
|
c = c.toLowerCase();
|
||||||
|
|
||||||
|
while ( true )
|
||||||
|
{
|
||||||
|
if ( c == this.Pattern.charAt( this._State ) )
|
||||||
|
{
|
||||||
|
this._State++ ;
|
||||||
|
if ( this._State == this.Pattern.length )
|
||||||
|
{
|
||||||
|
// found a match, start over, don't care about partial matches involving the current match
|
||||||
|
this._State = 0;
|
||||||
|
return KMP_MATCHED;
|
||||||
|
}
|
||||||
|
return KMP_ADVANCED;
|
||||||
|
}
|
||||||
|
else if ( this._State == 0 )
|
||||||
|
return KMP_NOMATCH;
|
||||||
|
else
|
||||||
|
this._State = this._Overlap[ this._State ];
|
||||||
|
}
|
||||||
|
|
||||||
|
return null ;
|
||||||
|
},
|
||||||
|
"Reset" : function()
|
||||||
|
{
|
||||||
|
this._State = 0 ;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
function _Find()
|
||||||
|
{
|
||||||
|
// Start from the end of the current selection.
|
||||||
|
var matcher = new KmpMatch( GetSearchString(), ! GetCheckCase() ) ;
|
||||||
|
var cursor = GetSelection().End ;
|
||||||
|
var matchState = KMP_NOMATCH ;
|
||||||
|
var matchBookmark = null ;
|
||||||
|
|
||||||
|
// Match finding.
|
||||||
|
while ( true )
|
||||||
|
{
|
||||||
|
// Perform KMP stream matching.
|
||||||
|
// - Reset KMP matcher if we encountered a block element.
|
||||||
|
var data = GetData( cursor ) ;
|
||||||
|
if ( data )
|
||||||
|
{
|
||||||
|
if ( data.tagName )
|
||||||
|
{
|
||||||
|
if ( oEditor.FCKListsLib.BlockElements[ data.tagName.toLowerCase() ] )
|
||||||
|
matcher.Reset();
|
||||||
|
}
|
||||||
|
else if ( data.charAt != undefined )
|
||||||
|
{
|
||||||
|
matchState = matcher.FeedCharacter(data) ;
|
||||||
|
|
||||||
|
if ( matchState == KMP_NOMATCH )
|
||||||
|
matchBookmark = null ;
|
||||||
|
else if ( matchState == KMP_ADVANCED && matchBookmark == null )
|
||||||
|
matchBookmark = { Start : cursor.concat( [] ) } ;
|
||||||
|
else if ( matchState == KMP_MATCHED )
|
||||||
|
{
|
||||||
|
if ( matchBookmark == null )
|
||||||
|
matchBookmark = { Start : cursor.concat( [] ) } ;
|
||||||
|
matchBookmark.End = cursor.concat( [] ) ;
|
||||||
|
matchBookmark.End[ matchBookmark.End.length - 1 ]++;
|
||||||
|
|
||||||
|
// Wait, do we have to match a whole word?
|
||||||
|
if ( GetMatchWord() )
|
||||||
|
{
|
||||||
|
var startOk = false ;
|
||||||
|
var endOk = false ;
|
||||||
|
var start = matchBookmark.Start ;
|
||||||
|
var end = matchBookmark.End ;
|
||||||
|
if ( start[ start.length - 1 ] == 0 )
|
||||||
|
startOk = true ;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var cursorBeforeStart = start.slice( 0, start.length - 1 ) ;
|
||||||
|
cursorBeforeStart.push( start[ start.length - 1 ] - 1 ) ;
|
||||||
|
var dataBeforeStart = GetData( cursorBeforeStart ) ;
|
||||||
|
if ( dataBeforeStart == null || dataBeforeStart.charAt == undefined )
|
||||||
|
startOk = true ;
|
||||||
|
else if ( CheckIsWhitespace( dataBeforeStart ) )
|
||||||
|
startOk = true ;
|
||||||
|
}
|
||||||
|
|
||||||
|
// this is already one character beyond the last char, no need to move
|
||||||
|
var cursorAfterEnd = end ;
|
||||||
|
var dataAfterEnd = GetData( cursorAfterEnd );
|
||||||
|
if ( dataAfterEnd == null || dataAfterEnd.charAt == undefined )
|
||||||
|
endOk = true ;
|
||||||
|
else if ( CheckIsWhitespace( dataAfterEnd ) )
|
||||||
|
endOk = true ;
|
||||||
|
|
||||||
|
if ( startOk && endOk )
|
||||||
|
break ;
|
||||||
|
else
|
||||||
|
matcher.Reset() ;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
break ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Perform DFS across the document, until we've reached the end.
|
||||||
|
cursor = NextPosition( cursor ) ;
|
||||||
|
if ( cursor == null )
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// If we've found a match, select the match.
|
||||||
|
if ( matchState == KMP_MATCHED )
|
||||||
|
{
|
||||||
|
var range = new oEditor.FCKDomRange( oEditor.FCK.EditorWindow ) ;
|
||||||
|
range.MoveToBookmark2( matchBookmark ) ;
|
||||||
|
range.Select() ;
|
||||||
|
var focus = range._Range.endContainer ;
|
||||||
|
while ( focus && focus.nodeType != 1 )
|
||||||
|
focus = focus.parentNode ;
|
||||||
|
if ( focus )
|
||||||
|
focus.scrollIntoView( false ) ;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
function Find()
|
||||||
|
{
|
||||||
|
var range = new oEditor.FCKDomRange( oEditor.FCK.EditorWindow ) ;
|
||||||
|
range.MoveToSelection() ;
|
||||||
|
range.Collapse( false ) ;
|
||||||
|
range.Select() ;
|
||||||
|
|
||||||
|
if ( ! _Find() )
|
||||||
|
alert( FCKLang.DlgFindNotFoundMsg ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
function Replace()
|
||||||
|
{
|
||||||
|
var selection = new oEditor.FCKDomRange( oEditor.FCK.EditorWindow ) ;
|
||||||
|
selection.MoveToSelection() ;
|
||||||
|
|
||||||
|
if ( selection.CheckIsCollapsed() )
|
||||||
|
{
|
||||||
|
if (! _Find() )
|
||||||
|
alert( FCKLang.DlgFindNotFoundMsg ) ;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
oEditor.FCKUndo.SaveUndoStep() ;
|
||||||
|
selection.DeleteContents() ;
|
||||||
|
selection.InsertNode( oEditor.FCK.EditorDocument.createTextNode( GetReplaceString() ) ) ;
|
||||||
|
selection.Collapse( false ) ;
|
||||||
|
selection.Select() ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function ReplaceAll()
|
||||||
|
{
|
||||||
|
oEditor.FCKUndo.SaveUndoStep() ;
|
||||||
|
var range = new oEditor.FCKDomRange( oEditor.FCK.EditorWindow ) ;
|
||||||
|
|
||||||
|
var replaceCount = 0 ;
|
||||||
|
|
||||||
|
while ( _Find() )
|
||||||
|
{
|
||||||
|
range.MoveToSelection() ;
|
||||||
|
range.DeleteContents() ;
|
||||||
|
range.InsertNode( oEditor.FCK.EditorDocument.createTextNode( GetReplaceString() ) ) ;
|
||||||
|
range.Collapse( false ) ;
|
||||||
|
range.Select() ;
|
||||||
|
replaceCount++ ;
|
||||||
|
}
|
||||||
|
if ( replaceCount == 0 )
|
||||||
|
alert( FCKLang.DlgFindNotFoundMsg ) ;
|
||||||
|
window.parent.Cancel() ;
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
<body onload="OnLoad()" style="overflow: hidden">
|
||||||
|
<div id="divFind" style="display: none">
|
||||||
|
<table cellspacing="3" cellpadding="2" width="100%" border="0">
|
||||||
|
<tr>
|
||||||
|
<td nowrap="nowrap">
|
||||||
|
<label for="txtFindFind" fcklang="DlgReplaceFindLbl">
|
||||||
|
Find what:</label>
|
||||||
|
</td>
|
||||||
|
<td width="100%">
|
||||||
|
<input id="txtFindFind" onkeyup="btnStat(this.form)" style="width: 100%" tabindex="1"
|
||||||
|
type="text" />
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input id="btnFind" style="width: 80px" disabled="disabled" onclick="Find();"
|
||||||
|
type="button" value="Find" fcklang="DlgFindFindBtn" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td valign="bottom" colspan="3">
|
||||||
|
<input id="chkCaseFind" tabindex="3" type="checkbox" /><label for="chkCaseFind" fcklang="DlgReplaceCaseChk">Match
|
||||||
|
case</label>
|
||||||
|
<br />
|
||||||
|
<input id="chkWordFind" tabindex="4" type="checkbox" /><label for="chkWordFind" fcklang="DlgReplaceWordChk">Match
|
||||||
|
whole word</label>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div id="divReplace" style="display:none">
|
||||||
|
<table cellspacing="3" cellpadding="2" width="100%" border="0">
|
||||||
|
<tr>
|
||||||
|
<td nowrap="nowrap">
|
||||||
|
<label for="txtFindReplace" fcklang="DlgReplaceFindLbl">
|
||||||
|
Find what:</label>
|
||||||
|
</td>
|
||||||
|
<td width="100%">
|
||||||
|
<input id="txtFindReplace" onkeyup="btnStat(this.form)" style="width: 100%" tabindex="1"
|
||||||
|
type="text" />
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input id="btnReplace" style="width: 80px" disabled="disabled" onclick="Replace();"
|
||||||
|
type="button" value="Replace" fcklang="DlgReplaceReplaceBtn" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td valign="top" nowrap="nowrap">
|
||||||
|
<label for="txtReplace" fcklang="DlgReplaceReplaceLbl">
|
||||||
|
Replace with:</label>
|
||||||
|
</td>
|
||||||
|
<td valign="top">
|
||||||
|
<input id="txtReplace" style="width: 100%" tabindex="2" type="text" />
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input id="btnReplaceAll" style="width: 80px" disabled="disabled" onclick="ReplaceAll()" type="button"
|
||||||
|
value="Replace All" fcklang="DlgReplaceReplAllBtn" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td valign="bottom" colspan="3">
|
||||||
|
<input id="chkCaseReplace" tabindex="3" type="checkbox" /><label for="chkCaseReplace" fcklang="DlgReplaceCaseChk">Match
|
||||||
|
case</label>
|
||||||
|
<br />
|
||||||
|
<input id="chkWordReplace" tabindex="4" type="checkbox" /><label for="chkWordReplace" fcklang="DlgReplaceWordChk">Match
|
||||||
|
whole word</label>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
177
htdocs/includes/fckeditor/editor/dialog/fck_select.html
Normal file
@@ -0,0 +1,177 @@
|
|||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
|
||||||
|
<!--
|
||||||
|
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
||||||
|
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
||||||
|
*
|
||||||
|
* == BEGIN LICENSE ==
|
||||||
|
*
|
||||||
|
* Licensed under the terms of any of the following licenses at your
|
||||||
|
* choice:
|
||||||
|
*
|
||||||
|
* - GNU General Public License Version 2 or later (the "GPL")
|
||||||
|
* http://www.gnu.org/licenses/gpl.html
|
||||||
|
*
|
||||||
|
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
||||||
|
* http://www.gnu.org/licenses/lgpl.html
|
||||||
|
*
|
||||||
|
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
||||||
|
* http://www.mozilla.org/MPL/MPL-1.1.html
|
||||||
|
*
|
||||||
|
* == END LICENSE ==
|
||||||
|
*
|
||||||
|
* Select dialog window.
|
||||||
|
-->
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Select Properties</title>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||||
|
<meta content="noindex, nofollow" name="robots">
|
||||||
|
<script src="common/fck_dialog_common.js" type="text/javascript"></script>
|
||||||
|
<script type="text/javascript" src="fck_select/fck_select.js"></script>
|
||||||
|
<script type="text/javascript">
|
||||||
|
|
||||||
|
var oEditor = window.parent.InnerDialogLoaded() ;
|
||||||
|
|
||||||
|
// Gets the document DOM
|
||||||
|
var oDOM = oEditor.FCK.EditorDocument ;
|
||||||
|
|
||||||
|
var oActiveEl = oEditor.FCKSelection.GetSelectedElement() ;
|
||||||
|
|
||||||
|
var oListText ;
|
||||||
|
var oListValue ;
|
||||||
|
|
||||||
|
window.onload = function()
|
||||||
|
{
|
||||||
|
// First of all, translate the dialog box texts
|
||||||
|
oEditor.FCKLanguageManager.TranslatePage(document) ;
|
||||||
|
|
||||||
|
oListText = document.getElementById( 'cmbText' ) ;
|
||||||
|
oListValue = document.getElementById( 'cmbValue' ) ;
|
||||||
|
|
||||||
|
if ( oActiveEl && oActiveEl.tagName == 'SELECT' )
|
||||||
|
{
|
||||||
|
GetE('txtName').value = oActiveEl.name ;
|
||||||
|
GetE('txtSelValue').value = oActiveEl.value ;
|
||||||
|
GetE('txtLines').value = GetAttribute( oActiveEl, 'size' ) ;
|
||||||
|
GetE('chkMultiple').checked = oActiveEl.multiple ;
|
||||||
|
|
||||||
|
// Load the actual options
|
||||||
|
for ( var i = 0 ; i < oActiveEl.options.length ; i++ )
|
||||||
|
{
|
||||||
|
var sText = HTMLDecode( oActiveEl.options[i].innerHTML ) ;
|
||||||
|
var sValue = oActiveEl.options[i].value ;
|
||||||
|
|
||||||
|
AddComboOption( oListText, sText, sText ) ;
|
||||||
|
AddComboOption( oListValue, sValue, sValue ) ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
oActiveEl = null ;
|
||||||
|
|
||||||
|
window.parent.SetOkButton( true ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
function Ok()
|
||||||
|
{
|
||||||
|
oEditor.FCKUndo.SaveUndoStep() ;
|
||||||
|
|
||||||
|
var sSize = GetE('txtLines').value ;
|
||||||
|
if ( sSize == null || isNaN( sSize ) || sSize <= 1 )
|
||||||
|
sSize = '' ;
|
||||||
|
|
||||||
|
if ( !oActiveEl )
|
||||||
|
{
|
||||||
|
oActiveEl = oEditor.FCK.InsertElement( 'select' ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
SetAttribute( oActiveEl, 'name' , GetE('txtName').value ) ;
|
||||||
|
SetAttribute( oActiveEl, 'size' , sSize ) ;
|
||||||
|
oActiveEl.multiple = ( sSize.length > 0 && GetE('chkMultiple').checked ) ;
|
||||||
|
|
||||||
|
// Remove all options.
|
||||||
|
while ( oActiveEl.options.length > 0 )
|
||||||
|
oActiveEl.remove(0) ;
|
||||||
|
|
||||||
|
// Add all available options.
|
||||||
|
for ( var i = 0 ; i < oListText.options.length ; i++ )
|
||||||
|
{
|
||||||
|
var sText = oListText.options[i].value ;
|
||||||
|
var sValue = oListValue.options[i].value ;
|
||||||
|
if ( sValue.length == 0 ) sValue = sText ;
|
||||||
|
|
||||||
|
var oOption = AddComboOption( oActiveEl, sText, sValue, oDOM ) ;
|
||||||
|
|
||||||
|
if ( sValue == GetE('txtSelValue').value )
|
||||||
|
{
|
||||||
|
SetAttribute( oOption, 'selected', 'selected' ) ;
|
||||||
|
oOption.selected = true ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true ;
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
<body style='OVERFLOW: hidden' 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>
|
||||||
194
htdocs/includes/fckeditor/editor/dialog/fck_select/fck_select.js
Normal file
@@ -0,0 +1,194 @@
|
|||||||
|
/*
|
||||||
|
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
||||||
|
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
||||||
|
*
|
||||||
|
* == BEGIN LICENSE ==
|
||||||
|
*
|
||||||
|
* Licensed under the terms of any of the following licenses at your
|
||||||
|
* choice:
|
||||||
|
*
|
||||||
|
* - GNU General Public License Version 2 or later (the "GPL")
|
||||||
|
* http://www.gnu.org/licenses/gpl.html
|
||||||
|
*
|
||||||
|
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
||||||
|
* http://www.gnu.org/licenses/lgpl.html
|
||||||
|
*
|
||||||
|
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
||||||
|
* http://www.mozilla.org/MPL/MPL-1.1.html
|
||||||
|
*
|
||||||
|
* == END LICENSE ==
|
||||||
|
*
|
||||||
|
* Scripts for the fck_select.html page.
|
||||||
|
*/
|
||||||
|
|
||||||
|
function Select( combo )
|
||||||
|
{
|
||||||
|
var iIndex = combo.selectedIndex ;
|
||||||
|
|
||||||
|
oListText.selectedIndex = iIndex ;
|
||||||
|
oListValue.selectedIndex = iIndex ;
|
||||||
|
|
||||||
|
var oTxtText = document.getElementById( "txtText" ) ;
|
||||||
|
var oTxtValue = document.getElementById( "txtValue" ) ;
|
||||||
|
|
||||||
|
oTxtText.value = oListText.value ;
|
||||||
|
oTxtValue.value = oListValue.value ;
|
||||||
|
}
|
||||||
|
|
||||||
|
function Add()
|
||||||
|
{
|
||||||
|
var oTxtText = document.getElementById( "txtText" ) ;
|
||||||
|
var oTxtValue = document.getElementById( "txtValue" ) ;
|
||||||
|
|
||||||
|
AddComboOption( oListText, oTxtText.value, oTxtText.value ) ;
|
||||||
|
AddComboOption( oListValue, oTxtValue.value, oTxtValue.value ) ;
|
||||||
|
|
||||||
|
oListText.selectedIndex = oListText.options.length - 1 ;
|
||||||
|
oListValue.selectedIndex = oListValue.options.length - 1 ;
|
||||||
|
|
||||||
|
oTxtText.value = '' ;
|
||||||
|
oTxtValue.value = '' ;
|
||||||
|
|
||||||
|
oTxtText.focus() ;
|
||||||
|
}
|
||||||
|
|
||||||
|
function Modify()
|
||||||
|
{
|
||||||
|
var iIndex = oListText.selectedIndex ;
|
||||||
|
|
||||||
|
if ( iIndex < 0 ) return ;
|
||||||
|
|
||||||
|
var oTxtText = document.getElementById( "txtText" ) ;
|
||||||
|
var oTxtValue = document.getElementById( "txtValue" ) ;
|
||||||
|
|
||||||
|
oListText.options[ iIndex ].innerHTML = HTMLEncode( oTxtText.value ) ;
|
||||||
|
oListText.options[ iIndex ].value = oTxtText.value ;
|
||||||
|
|
||||||
|
oListValue.options[ iIndex ].innerHTML = HTMLEncode( oTxtValue.value ) ;
|
||||||
|
oListValue.options[ iIndex ].value = oTxtValue.value ;
|
||||||
|
|
||||||
|
oTxtText.value = '' ;
|
||||||
|
oTxtValue.value = '' ;
|
||||||
|
|
||||||
|
oTxtText.focus() ;
|
||||||
|
}
|
||||||
|
|
||||||
|
function Move( steps )
|
||||||
|
{
|
||||||
|
ChangeOptionPosition( oListText, steps ) ;
|
||||||
|
ChangeOptionPosition( oListValue, steps ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
function Delete()
|
||||||
|
{
|
||||||
|
RemoveSelectedOptions( oListText ) ;
|
||||||
|
RemoveSelectedOptions( oListValue ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
function SetSelectedValue()
|
||||||
|
{
|
||||||
|
var iIndex = oListValue.selectedIndex ;
|
||||||
|
if ( iIndex < 0 ) return ;
|
||||||
|
|
||||||
|
var oTxtValue = document.getElementById( "txtSelValue" ) ;
|
||||||
|
|
||||||
|
oTxtValue.value = oListValue.options[ iIndex ].value ;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Moves the selected option by a number of steps (also negative)
|
||||||
|
function ChangeOptionPosition( combo, steps )
|
||||||
|
{
|
||||||
|
var iActualIndex = combo.selectedIndex ;
|
||||||
|
|
||||||
|
if ( iActualIndex < 0 )
|
||||||
|
return ;
|
||||||
|
|
||||||
|
var iFinalIndex = iActualIndex + steps ;
|
||||||
|
|
||||||
|
if ( iFinalIndex < 0 )
|
||||||
|
iFinalIndex = 0 ;
|
||||||
|
|
||||||
|
if ( iFinalIndex > ( combo.options.length - 1 ) )
|
||||||
|
iFinalIndex = combo.options.length - 1 ;
|
||||||
|
|
||||||
|
if ( iActualIndex == iFinalIndex )
|
||||||
|
return ;
|
||||||
|
|
||||||
|
var oOption = combo.options[ iActualIndex ] ;
|
||||||
|
var sText = HTMLDecode( oOption.innerHTML ) ;
|
||||||
|
var sValue = oOption.value ;
|
||||||
|
|
||||||
|
combo.remove( iActualIndex ) ;
|
||||||
|
|
||||||
|
oOption = AddComboOption( combo, sText, sValue, null, iFinalIndex ) ;
|
||||||
|
|
||||||
|
oOption.selected = true ;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Remove all selected options from a SELECT object
|
||||||
|
function RemoveSelectedOptions(combo)
|
||||||
|
{
|
||||||
|
// Save the selected index
|
||||||
|
var iSelectedIndex = combo.selectedIndex ;
|
||||||
|
|
||||||
|
var oOptions = combo.options ;
|
||||||
|
|
||||||
|
// Remove all selected options
|
||||||
|
for ( var i = oOptions.length - 1 ; i >= 0 ; i-- )
|
||||||
|
{
|
||||||
|
if (oOptions[i].selected) combo.remove(i) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Reset the selection based on the original selected index
|
||||||
|
if ( combo.options.length > 0 )
|
||||||
|
{
|
||||||
|
if ( iSelectedIndex >= combo.options.length ) iSelectedIndex = combo.options.length - 1 ;
|
||||||
|
combo.selectedIndex = iSelectedIndex ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add a new option to a SELECT object (combo or list)
|
||||||
|
function AddComboOption( combo, optionText, optionValue, documentObject, index )
|
||||||
|
{
|
||||||
|
var oOption ;
|
||||||
|
|
||||||
|
if ( documentObject )
|
||||||
|
oOption = documentObject.createElement("OPTION") ;
|
||||||
|
else
|
||||||
|
oOption = document.createElement("OPTION") ;
|
||||||
|
|
||||||
|
if ( index != null )
|
||||||
|
combo.options.add( oOption, index ) ;
|
||||||
|
else
|
||||||
|
combo.options.add( oOption ) ;
|
||||||
|
|
||||||
|
oOption.innerHTML = optionText.length > 0 ? HTMLEncode( optionText ) : ' ' ;
|
||||||
|
oOption.value = optionValue ;
|
||||||
|
|
||||||
|
return oOption ;
|
||||||
|
}
|
||||||
|
|
||||||
|
function HTMLEncode( text )
|
||||||
|
{
|
||||||
|
if ( !text )
|
||||||
|
return '' ;
|
||||||
|
|
||||||
|
text = text.replace( /&/g, '&' ) ;
|
||||||
|
text = text.replace( /</g, '<' ) ;
|
||||||
|
text = text.replace( />/g, '>' ) ;
|
||||||
|
|
||||||
|
return text ;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function HTMLDecode( text )
|
||||||
|
{
|
||||||
|
if ( !text )
|
||||||
|
return '' ;
|
||||||
|
|
||||||
|
text = text.replace( />/g, '>' ) ;
|
||||||
|
text = text.replace( /</g, '<' ) ;
|
||||||
|
text = text.replace( /&/g, '&' ) ;
|
||||||
|
|
||||||
|
return text ;
|
||||||
|
}
|
||||||
106
htdocs/includes/fckeditor/editor/dialog/fck_smiley.html
Normal file
@@ -0,0 +1,106 @@
|
|||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
|
||||||
|
<!--
|
||||||
|
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
||||||
|
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
||||||
|
*
|
||||||
|
* == BEGIN LICENSE ==
|
||||||
|
*
|
||||||
|
* Licensed under the terms of any of the following licenses at your
|
||||||
|
* choice:
|
||||||
|
*
|
||||||
|
* - GNU General Public License Version 2 or later (the "GPL")
|
||||||
|
* http://www.gnu.org/licenses/gpl.html
|
||||||
|
*
|
||||||
|
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
||||||
|
* http://www.gnu.org/licenses/lgpl.html
|
||||||
|
*
|
||||||
|
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
||||||
|
* http://www.mozilla.org/MPL/MPL-1.1.html
|
||||||
|
*
|
||||||
|
* == END LICENSE ==
|
||||||
|
*
|
||||||
|
* Smileys (emoticons) dialog window.
|
||||||
|
-->
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<title></title>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
|
<meta name="robots" content="noindex, nofollow" />
|
||||||
|
<style type="text/css">
|
||||||
|
.Hand
|
||||||
|
{
|
||||||
|
cursor: pointer;
|
||||||
|
cursor: hand;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<script type="text/javascript">
|
||||||
|
|
||||||
|
var oEditor = window.parent.InnerDialogLoaded() ;
|
||||||
|
|
||||||
|
window.onload = function ()
|
||||||
|
{
|
||||||
|
// First of all, translate the dialog box texts
|
||||||
|
oEditor.FCKLanguageManager.TranslatePage(document) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
function InsertSmiley( url )
|
||||||
|
{
|
||||||
|
oEditor.FCKUndo.SaveUndoStep() ;
|
||||||
|
var oImg = oEditor.FCK.InsertElement( 'img' ) ;
|
||||||
|
oImg.src = url ;
|
||||||
|
oImg.setAttribute( '_fcksavedurl', url ) ;
|
||||||
|
|
||||||
|
// For long smileys list, it seams that IE continues loading the images in
|
||||||
|
// the background when you quickly select one image. so, let's clear
|
||||||
|
// everything before closing.
|
||||||
|
document.body.innerHTML = '' ;
|
||||||
|
|
||||||
|
window.parent.Cancel() ;
|
||||||
|
}
|
||||||
|
|
||||||
|
function over(td)
|
||||||
|
{
|
||||||
|
td.className = 'LightBackground Hand' ;
|
||||||
|
}
|
||||||
|
|
||||||
|
function out(td)
|
||||||
|
{
|
||||||
|
td.className = 'DarkBackground Hand' ;
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
<body 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, 10 ) ;
|
||||||
|
|
||||||
|
var i = 0 ;
|
||||||
|
while (i < aImages.length)
|
||||||
|
{
|
||||||
|
document.write( '<tr>' ) ;
|
||||||
|
for(var j = 0 ; j < iCols ; j++)
|
||||||
|
{
|
||||||
|
if (aImages[i])
|
||||||
|
{
|
||||||
|
var sUrl = sBasePath + aImages[i] ;
|
||||||
|
document.write( '<td width="' + iColWidth + '%" align="center" class="DarkBackground Hand" onclick="InsertSmiley(\'' + sUrl.replace(/'/g, "\\'" ) + '\')" onmouseover="over(this)" onmouseout="out(this)">' ) ;
|
||||||
|
document.write( '<img src="' + sUrl + '" border="0" />' ) ;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
document.write( '<td width="' + iColWidth + '%" class="DarkBackground"> ' ) ;
|
||||||
|
document.write( '<\/td>' ) ;
|
||||||
|
i++ ;
|
||||||
|
}
|
||||||
|
document.write('<\/tr>') ;
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
||||||
|
</table>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
65
htdocs/includes/fckeditor/editor/dialog/fck_source.html
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
|
||||||
|
<!--
|
||||||
|
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
||||||
|
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
||||||
|
*
|
||||||
|
* == BEGIN LICENSE ==
|
||||||
|
*
|
||||||
|
* Licensed under the terms of any of the following licenses at your
|
||||||
|
* choice:
|
||||||
|
*
|
||||||
|
* - GNU General Public License Version 2 or later (the "GPL")
|
||||||
|
* http://www.gnu.org/licenses/gpl.html
|
||||||
|
*
|
||||||
|
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
||||||
|
* http://www.gnu.org/licenses/lgpl.html
|
||||||
|
*
|
||||||
|
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
||||||
|
* http://www.mozilla.org/MPL/MPL-1.1.html
|
||||||
|
*
|
||||||
|
* == END LICENSE ==
|
||||||
|
*
|
||||||
|
* Source editor dialog window.
|
||||||
|
-->
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Source</title>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||||
|
<meta name="robots" content="noindex, nofollow">
|
||||||
|
<link href="common/fck_dialog_common.css" rel="stylesheet" type="text/css" />
|
||||||
|
<script language="javascript">
|
||||||
|
|
||||||
|
var oEditor = window.parent.InnerDialogLoaded() ;
|
||||||
|
var FCK = oEditor.FCK ;
|
||||||
|
var FCKConfig = oEditor.FCKConfig ;
|
||||||
|
|
||||||
|
window.onload = function()
|
||||||
|
{
|
||||||
|
// EnableXHTML and EnableSourceXHTML has been deprecated
|
||||||
|
// document.getElementById('txtSource').value = ( FCKConfig.EnableXHTML && FCKConfig.EnableSourceXHTML ? FCK.GetXHTML( FCKConfig.FormatSource ) : FCK.GetHTML( FCKConfig.FormatSource ) ) ;
|
||||||
|
document.getElementById('txtSource').value = FCK.GetXHTML( FCKConfig.FormatSource ) ;
|
||||||
|
|
||||||
|
// Activate the "OK" button.
|
||||||
|
window.parent.SetOkButton( true ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
//#### The OK button was hit.
|
||||||
|
function Ok()
|
||||||
|
{
|
||||||
|
if ( oEditor.FCKBrowserInfo.IsIE )
|
||||||
|
oEditor.FCKUndo.SaveUndoStep() ;
|
||||||
|
|
||||||
|
FCK.SetData( document.getElementById('txtSource').value, false ) ;
|
||||||
|
|
||||||
|
return true ;
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
<body scroll="no" style="OVERFLOW: hidden">
|
||||||
|
<table width="100%" height="100%">
|
||||||
|
<tr>
|
||||||
|
<td height="100%"><textarea id="txtSource" dir="ltr" style="PADDING-RIGHT: 5px; PADDING-LEFT: 5px; FONT-SIZE: 14px; PADDING-BOTTOM: 5px; WIDTH: 100%; PADDING-TOP: 5px; FONT-FAMILY: Monospace; HEIGHT: 100%">Loading. Please wait...</textarea></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
118
htdocs/includes/fckeditor/editor/dialog/fck_specialchar.html
Normal file
@@ -0,0 +1,118 @@
|
|||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
|
||||||
|
<!--
|
||||||
|
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
||||||
|
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
||||||
|
*
|
||||||
|
* == BEGIN LICENSE ==
|
||||||
|
*
|
||||||
|
* Licensed under the terms of any of the following licenses at your
|
||||||
|
* choice:
|
||||||
|
*
|
||||||
|
* - GNU General Public License Version 2 or later (the "GPL")
|
||||||
|
* http://www.gnu.org/licenses/gpl.html
|
||||||
|
*
|
||||||
|
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
||||||
|
* http://www.gnu.org/licenses/lgpl.html
|
||||||
|
*
|
||||||
|
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
||||||
|
* http://www.mozilla.org/MPL/MPL-1.1.html
|
||||||
|
*
|
||||||
|
* == END LICENSE ==
|
||||||
|
*
|
||||||
|
* Special Chars Selector dialog window.
|
||||||
|
-->
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta name="robots" content="noindex, nofollow">
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||||
|
<style type="text/css">
|
||||||
|
.Hand
|
||||||
|
{
|
||||||
|
cursor: pointer ;
|
||||||
|
cursor: hand ;
|
||||||
|
}
|
||||||
|
.Sample { font-size: 24px; }
|
||||||
|
</style>
|
||||||
|
<script type="text/javascript">
|
||||||
|
|
||||||
|
var oEditor = window.parent.InnerDialogLoaded() ;
|
||||||
|
|
||||||
|
var oSample ;
|
||||||
|
|
||||||
|
function insertChar(charValue)
|
||||||
|
{
|
||||||
|
oEditor.FCKUndo.SaveUndoStep() ;
|
||||||
|
oEditor.FCK.InsertHtml( charValue || "" ) ;
|
||||||
|
window.parent.Cancel() ;
|
||||||
|
}
|
||||||
|
|
||||||
|
function over(td)
|
||||||
|
{
|
||||||
|
if ( ! oSample )
|
||||||
|
return ;
|
||||||
|
oSample.innerHTML = td.innerHTML ;
|
||||||
|
td.className = 'LightBackground SpecialCharsOver Hand' ;
|
||||||
|
}
|
||||||
|
|
||||||
|
function out(td)
|
||||||
|
{
|
||||||
|
if ( ! oSample )
|
||||||
|
return ;
|
||||||
|
oSample.innerHTML = " " ;
|
||||||
|
td.className = 'DarkBackground SpecialCharsOut Hand' ;
|
||||||
|
}
|
||||||
|
|
||||||
|
function setDefaults()
|
||||||
|
{
|
||||||
|
// Gets the sample placeholder.
|
||||||
|
oSample = document.getElementById("SampleTD") ;
|
||||||
|
|
||||||
|
// First of all, translates the dialog box texts.
|
||||||
|
oEditor.FCKLanguageManager.TranslatePage(document) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
</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>
|
||||||
@@ -0,0 +1,64 @@
|
|||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
|
||||||
|
<!--
|
||||||
|
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
||||||
|
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
||||||
|
*
|
||||||
|
* == BEGIN LICENSE ==
|
||||||
|
*
|
||||||
|
* Licensed under the terms of any of the following licenses at your
|
||||||
|
* choice:
|
||||||
|
*
|
||||||
|
* - GNU General Public License Version 2 or later (the "GPL")
|
||||||
|
* http://www.gnu.org/licenses/gpl.html
|
||||||
|
*
|
||||||
|
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
||||||
|
* http://www.gnu.org/licenses/lgpl.html
|
||||||
|
*
|
||||||
|
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
||||||
|
* http://www.mozilla.org/MPL/MPL-1.1.html
|
||||||
|
*
|
||||||
|
* == END LICENSE ==
|
||||||
|
*
|
||||||
|
* Spell Check dialog window.
|
||||||
|
-->
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Spell Check</title>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||||
|
<meta content="noindex, nofollow" name="robots">
|
||||||
|
<script src="fck_spellerpages/spellerpages/spellChecker.js"></script>
|
||||||
|
<script type="text/javascript">
|
||||||
|
|
||||||
|
var oEditor = window.parent.InnerDialogLoaded() ;
|
||||||
|
var FCKLang = oEditor.FCKLang ;
|
||||||
|
|
||||||
|
window.onload = function()
|
||||||
|
{
|
||||||
|
document.getElementById('txtHtml').value = oEditor.FCK.EditorDocument.body.innerHTML ;
|
||||||
|
|
||||||
|
var oSpeller = new spellChecker( document.getElementById('txtHtml') ) ;
|
||||||
|
oSpeller.spellCheckScript = oEditor.FCKConfig.SpellerPagesServerScript || 'server-scripts/spellchecker.php' ;
|
||||||
|
oSpeller.OnFinished = oSpeller_OnFinished ;
|
||||||
|
oSpeller.openChecker() ;
|
||||||
|
}
|
||||||
|
|
||||||
|
function OnSpellerControlsLoad( controlsWindow )
|
||||||
|
{
|
||||||
|
// Translate the dialog box texts
|
||||||
|
oEditor.FCKLanguageManager.TranslatePage( controlsWindow.document ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
function oSpeller_OnFinished( numberOCorrections )
|
||||||
|
{
|
||||||
|
if ( numberOCorrections > 0 )
|
||||||
|
oEditor.FCK.SetData( document.getElementById('txtHtml').value ) ;
|
||||||
|
window.parent.Cancel() ;
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
<body style="OVERFLOW: hidden" scroll="no" style="padding:0px;">
|
||||||
|
<input type="hidden" id="txtHtml" value="">
|
||||||
|
<iframe id="frmSpell" src="javascript:void(0)" name="spellchecker" width="100%" height="100%" frameborder="0"></iframe>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,87 @@
|
|||||||
|
////////////////////////////////////////////////////
|
||||||
|
// controlWindow object
|
||||||
|
////////////////////////////////////////////////////
|
||||||
|
function controlWindow( controlForm ) {
|
||||||
|
// private properties
|
||||||
|
this._form = controlForm;
|
||||||
|
|
||||||
|
// public properties
|
||||||
|
this.windowType = "controlWindow";
|
||||||
|
// this.noSuggestionSelection = "- No suggestions -"; // by FredCK
|
||||||
|
this.noSuggestionSelection = FCKLang.DlgSpellNoSuggestions ;
|
||||||
|
// set up the properties for elements of the given control form
|
||||||
|
this.suggestionList = this._form.sugg;
|
||||||
|
this.evaluatedText = this._form.misword;
|
||||||
|
this.replacementText = this._form.txtsugg;
|
||||||
|
this.undoButton = this._form.btnUndo;
|
||||||
|
|
||||||
|
// public methods
|
||||||
|
this.addSuggestion = addSuggestion;
|
||||||
|
this.clearSuggestions = clearSuggestions;
|
||||||
|
this.selectDefaultSuggestion = selectDefaultSuggestion;
|
||||||
|
this.resetForm = resetForm;
|
||||||
|
this.setSuggestedText = setSuggestedText;
|
||||||
|
this.enableUndo = enableUndo;
|
||||||
|
this.disableUndo = disableUndo;
|
||||||
|
}
|
||||||
|
|
||||||
|
function resetForm() {
|
||||||
|
if( this._form ) {
|
||||||
|
this._form.reset();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function setSuggestedText() {
|
||||||
|
var slct = this.suggestionList;
|
||||||
|
var txt = this.replacementText;
|
||||||
|
var str = "";
|
||||||
|
if( (slct.options[0].text) && slct.options[0].text != this.noSuggestionSelection ) {
|
||||||
|
str = slct.options[slct.selectedIndex].text;
|
||||||
|
}
|
||||||
|
txt.value = str;
|
||||||
|
}
|
||||||
|
|
||||||
|
function selectDefaultSuggestion() {
|
||||||
|
var slct = this.suggestionList;
|
||||||
|
var txt = this.replacementText;
|
||||||
|
if( slct.options.length == 0 ) {
|
||||||
|
this.addSuggestion( this.noSuggestionSelection );
|
||||||
|
} else {
|
||||||
|
slct.options[0].selected = true;
|
||||||
|
}
|
||||||
|
this.setSuggestedText();
|
||||||
|
}
|
||||||
|
|
||||||
|
function addSuggestion( sugg_text ) {
|
||||||
|
var slct = this.suggestionList;
|
||||||
|
if( sugg_text ) {
|
||||||
|
var i = slct.options.length;
|
||||||
|
var newOption = new Option( sugg_text, 'sugg_text'+i );
|
||||||
|
slct.options[i] = newOption;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function clearSuggestions() {
|
||||||
|
var slct = this.suggestionList;
|
||||||
|
for( var j = slct.length - 1; j > -1; j-- ) {
|
||||||
|
if( slct.options[j] ) {
|
||||||
|
slct.options[j] = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function enableUndo() {
|
||||||
|
if( this.undoButton ) {
|
||||||
|
if( this.undoButton.disabled == true ) {
|
||||||
|
this.undoButton.disabled = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function disableUndo() {
|
||||||
|
if( this.undoButton ) {
|
||||||
|
if( this.undoButton.disabled == false ) {
|
||||||
|
this.undoButton.disabled = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,153 @@
|
|||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<link rel="stylesheet" type="text/css" href="spellerStyle.css" />
|
||||||
|
<script type="text/javascript" src="controlWindow.js"></script>
|
||||||
|
<script type="text/javascript">
|
||||||
|
var spellerObject;
|
||||||
|
var controlWindowObj;
|
||||||
|
|
||||||
|
if( parent.opener ) {
|
||||||
|
spellerObject = parent.opener.speller;
|
||||||
|
}
|
||||||
|
|
||||||
|
function ignore_word() {
|
||||||
|
if( spellerObject ) {
|
||||||
|
spellerObject.ignoreWord();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function ignore_all() {
|
||||||
|
if( spellerObject ) {
|
||||||
|
spellerObject.ignoreAll();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function replace_word() {
|
||||||
|
if( spellerObject ) {
|
||||||
|
spellerObject.replaceWord();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function replace_all() {
|
||||||
|
if( spellerObject ) {
|
||||||
|
spellerObject.replaceAll();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function end_spell() {
|
||||||
|
if( spellerObject ) {
|
||||||
|
spellerObject.terminateSpell();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function undo() {
|
||||||
|
if( spellerObject ) {
|
||||||
|
spellerObject.undo();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function suggText() {
|
||||||
|
if( controlWindowObj ) {
|
||||||
|
controlWindowObj.setSuggestedText();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var FCKLang = window.parent.parent.FCKLang ; // by FredCK
|
||||||
|
|
||||||
|
function init_spell() {
|
||||||
|
// By FredCK (fckLang attributes have been added to the HTML source of this page)
|
||||||
|
window.parent.parent.OnSpellerControlsLoad( this ) ;
|
||||||
|
|
||||||
|
var controlForm = document.spellcheck;
|
||||||
|
|
||||||
|
// create a new controlWindow object
|
||||||
|
controlWindowObj = new controlWindow( controlForm );
|
||||||
|
|
||||||
|
// call the init_spell() function in the parent frameset
|
||||||
|
if( parent.frames.length ) {
|
||||||
|
parent.init_spell( controlWindowObj );
|
||||||
|
} else {
|
||||||
|
alert( 'This page was loaded outside of a frameset. It might not display properly' );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
<body class="controlWindowBody" onLoad="init_spell();" style="OVERFLOW: hidden" scroll="no"> <!-- by FredCK -->
|
||||||
|
<form name="spellcheck">
|
||||||
|
<table border="0" cellpadding="0" cellspacing="0" border="0" align="center">
|
||||||
|
<tr>
|
||||||
|
<td colspan="3" class="normalLabel"><span fckLang="DlgSpellNotInDic">Not in dictionary:</span></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colspan="3"><input class="readonlyInput" type="text" name="misword" readonly /></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colspan="3" height="5"></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="normalLabel"><span fckLang="DlgSpellChangeTo">Change to:</span></td>
|
||||||
|
</tr>
|
||||||
|
<tr valign="top">
|
||||||
|
<td>
|
||||||
|
<table border="0" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td class="normalLabel">
|
||||||
|
<input class="textDefault" type="text" name="txtsugg" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<select class="suggSlct" name="sugg" size="7" onChange="suggText();" onDblClick="replace_word();">
|
||||||
|
<option></option>
|
||||||
|
</select>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
<td> </td>
|
||||||
|
<td>
|
||||||
|
<table border="0" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<input class="buttonDefault" type="button" fckLang="DlgSpellBtnIgnore" value="Ignore" onClick="ignore_word();">
|
||||||
|
</td>
|
||||||
|
<td> </td>
|
||||||
|
<td>
|
||||||
|
<input class="buttonDefault" type="button" fckLang="DlgSpellBtnIgnoreAll" value="Ignore All" onClick="ignore_all();">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colspan="3" height="5"></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<input class="buttonDefault" type="button" fckLang="DlgSpellBtnReplace" value="Replace" onClick="replace_word();">
|
||||||
|
</td>
|
||||||
|
<td> </td>
|
||||||
|
<td>
|
||||||
|
<input class="buttonDefault" type="button" fckLang="DlgSpellBtnReplaceAll" value="Replace All" onClick="replace_all();">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colspan="3" height="5"></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<input class="buttonDefault" type="button" name="btnUndo" fckLang="DlgSpellBtnUndo" value="Undo" onClick="undo();"
|
||||||
|
disabled>
|
||||||
|
</td>
|
||||||
|
<td> </td>
|
||||||
|
<td>
|
||||||
|
<!-- by FredCK
|
||||||
|
<input class="buttonDefault" type="button" value="Close" onClick="end_spell();">
|
||||||
|
-->
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</form>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,146 @@
|
|||||||
|
<cfsetting enablecfoutputonly="true">
|
||||||
|
<!---
|
||||||
|
This code uses a CF User Defined Function and should work in CF version 5.0
|
||||||
|
and up without alteration.
|
||||||
|
|
||||||
|
Also if you are hosting your site at an ISP, you will have to check with them
|
||||||
|
to see if the use of <CFEXECUTE> is allowed. In most cases ISP will not allow
|
||||||
|
the use of that tag for security reasons. Clients would be able to access each
|
||||||
|
others files in certain cases.
|
||||||
|
--->
|
||||||
|
|
||||||
|
<!--- The following variables values must reflect your installation. --->
|
||||||
|
<cfset aspell_dir = "C:\Program Files\Aspell\bin">
|
||||||
|
<cfset lang = "en_US">
|
||||||
|
<cfset aspell_opts = "-a --lang=#lang# --encoding=utf-8 -H --rem-sgml-check=alt">
|
||||||
|
<cfset tempfile_in = GetTempFile(GetTempDirectory(), "spell_")>
|
||||||
|
<cfset tempfile_out = GetTempFile(GetTempDirectory(), "spell_")>
|
||||||
|
<cfset spellercss = "../spellerStyle.css">
|
||||||
|
<cfset word_win_src = "../wordWindow.js">
|
||||||
|
|
||||||
|
<cfset form.checktext = form["textinputs[]"]>
|
||||||
|
|
||||||
|
<!--- make no difference between URL and FORM scopes --->
|
||||||
|
<cfparam name="url.checktext" default="">
|
||||||
|
<cfparam name="form.checktext" default="#url.checktext#">
|
||||||
|
|
||||||
|
<!--- Takes care of those pesky smart quotes from MS apps, replaces them with regular quotes --->
|
||||||
|
<cfset submitted_text = ReplaceList(form.checktext,"%u201C,%u201D","%22,%22")>
|
||||||
|
|
||||||
|
<!--- submitted_text now is ready for processing --->
|
||||||
|
|
||||||
|
<!--- use carat on each line to escape possible aspell commands --->
|
||||||
|
<cfset text = "">
|
||||||
|
<cfset CRLF = Chr(13) & Chr(10)>
|
||||||
|
|
||||||
|
<cfloop list="#submitted_text#" index="field" delimiters=",">
|
||||||
|
<cfset text = text & "%" & CRLF
|
||||||
|
& "^A" & CRLF
|
||||||
|
& "!" & CRLF>
|
||||||
|
<cfloop list="#URLDecode(field)#" index="line" delimiters="#CRLF#">
|
||||||
|
<cfset text = ListAppend(text, "^" & Trim(JSStringFormat(line)), CRLF)>
|
||||||
|
</cfloop>
|
||||||
|
</cfloop>
|
||||||
|
|
||||||
|
<!--- create temp file from the submitted text, this will be passed to aspell to be check for misspelled words --->
|
||||||
|
<cffile action="write" file="#tempfile_in#" output="#text#" charset="utf-8">
|
||||||
|
|
||||||
|
<!--- execute aspell in an UTF-8 console and redirect output to a file. UTF-8 encoding is lost if done differently --->
|
||||||
|
<cfexecute name="cmd.exe" arguments='/c type "#tempfile_in#" | "#aspell_dir#\aspell.exe" #aspell_opts# > "#tempfile_out#"' timeout="100"/>
|
||||||
|
|
||||||
|
<!--- read output file for further processing --->
|
||||||
|
<cffile action="read" file="#tempfile_out#" variable="food" charset="utf-8">
|
||||||
|
|
||||||
|
<!--- remove temp files --->
|
||||||
|
<cffile action="delete" file="#tempfile_in#">
|
||||||
|
<cffile action="delete" file="#tempfile_out#">
|
||||||
|
|
||||||
|
<cfset texts = StructNew()>
|
||||||
|
<cfset texts.textinputs = "">
|
||||||
|
<cfset texts.words = "">
|
||||||
|
<cfset texts.abort = "">
|
||||||
|
|
||||||
|
<!--- Generate Text Inputs --->
|
||||||
|
<cfset i = 0>
|
||||||
|
<cfloop list="#submitted_text#" index="textinput">
|
||||||
|
<cfset texts.textinputs = ListAppend(texts.textinputs, 'textinputs[#i#] = decodeURIComponent("#textinput#");', CRLF)>
|
||||||
|
<cfset i = i + 1>
|
||||||
|
</cfloop>
|
||||||
|
|
||||||
|
<!--- Generate Words Lists --->
|
||||||
|
<cfset word_cnt = 0>
|
||||||
|
<cfset input_cnt = -1>
|
||||||
|
<cfloop list="#food#" index="aspell_line" delimiters="#CRLF#">
|
||||||
|
<cfset leftChar = Left(aspell_line, 1)>
|
||||||
|
<cfif leftChar eq "*">
|
||||||
|
<cfset input_cnt = input_cnt + 1>
|
||||||
|
<cfset word_cnt = 0>
|
||||||
|
<cfset texts.words = ListAppend(texts.words, "words[#input_cnt#] = [];", CRLF)>
|
||||||
|
<cfset texts.words = ListAppend(texts.words, "suggs[#input_cnt#] = [];", CRLF)>
|
||||||
|
<cfelse>
|
||||||
|
<cfif leftChar eq "&" or leftChar eq "##">
|
||||||
|
<!--- word that misspelled --->
|
||||||
|
<cfset bad_word = Trim(ListGetAt(aspell_line, 2, " "))>
|
||||||
|
<cfset bad_word = Replace(bad_word, "'", "\'", "ALL")>
|
||||||
|
<!--- sugestions --->
|
||||||
|
<cfset sug_list = Trim(ListRest(aspell_line, ":"))>
|
||||||
|
<cfset sug_list = ListQualify(Replace(sug_list, "'", "\'", "ALL"), "'")>
|
||||||
|
<!--- javascript --->
|
||||||
|
<cfset texts.words = ListAppend(texts.words, "words[#input_cnt#][#word_cnt#] = '#bad_word#';", CRLF)>
|
||||||
|
<cfset texts.words = ListAppend(texts.words, "suggs[#input_cnt#][#word_cnt#] = [#sug_list#];", CRLF)>
|
||||||
|
<cfset word_cnt = word_cnt + 1>
|
||||||
|
</cfif>
|
||||||
|
</cfif>
|
||||||
|
</cfloop>
|
||||||
|
|
||||||
|
<cfif texts.words eq "">
|
||||||
|
<cfset texts.abort = "alert('Spell check complete.\n\nNo misspellings found.'); top.window.close();">
|
||||||
|
</cfif>
|
||||||
|
|
||||||
|
<cfcontent type="text/html; charset=utf-8">
|
||||||
|
|
||||||
|
<cfoutput><html>
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||||
|
<link rel="stylesheet" type="text/css" href="#spellercss#" />
|
||||||
|
<script language="javascript" src="#word_win_src#"></script>
|
||||||
|
<script language="javascript">
|
||||||
|
var suggs = new Array();
|
||||||
|
var words = new Array();
|
||||||
|
var textinputs = new Array();
|
||||||
|
var error;
|
||||||
|
|
||||||
|
#texts.textinputs##CRLF#
|
||||||
|
#texts.words#
|
||||||
|
#texts.abort#
|
||||||
|
|
||||||
|
var wordWindowObj = new wordWindow();
|
||||||
|
wordWindowObj.originalSpellings = words;
|
||||||
|
wordWindowObj.suggestions = suggs;
|
||||||
|
wordWindowObj.textInputs = textinputs;
|
||||||
|
|
||||||
|
function init_spell() {
|
||||||
|
// check if any error occured during server-side processing
|
||||||
|
if( error ) {
|
||||||
|
alert( error );
|
||||||
|
} else {
|
||||||
|
// call the init_spell() function in the parent frameset
|
||||||
|
if (parent.frames.length) {
|
||||||
|
parent.init_spell( wordWindowObj );
|
||||||
|
} else {
|
||||||
|
alert('This page was loaded outside of a frameset. It might not display properly');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body onLoad="init_spell();">
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
wordWindowObj.writeBody();
|
||||||
|
</script>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html></cfoutput>
|
||||||
|
<cfsetting enablecfoutputonly="false">
|
||||||
@@ -0,0 +1,196 @@
|
|||||||
|
<?php
|
||||||
|
header('Content-type: text/html; charset=utf-8');
|
||||||
|
|
||||||
|
// The following variables values must reflect your installation needs.
|
||||||
|
|
||||||
|
$aspell_prog = '"C:\Program Files\Aspell\bin\aspell.exe"'; // by FredCK (for Windows)
|
||||||
|
//$aspell_prog = 'aspell'; // by FredCK (for Linux)
|
||||||
|
|
||||||
|
$lang = 'en_US';
|
||||||
|
$aspell_opts = "-a --lang=$lang --encoding=utf-8 -H --rem-sgml-check=alt"; // by FredCK
|
||||||
|
|
||||||
|
$tempfiledir = "./";
|
||||||
|
|
||||||
|
$spellercss = '../spellerStyle.css'; // by FredCK
|
||||||
|
$word_win_src = '../wordWindow.js'; // by FredCK
|
||||||
|
|
||||||
|
$textinputs = $_POST['textinputs']; # array
|
||||||
|
$input_separator = "A";
|
||||||
|
|
||||||
|
# set the JavaScript variable to the submitted text.
|
||||||
|
# textinputs is an array, each element corresponding to the (url-encoded)
|
||||||
|
# value of the text control submitted for spell-checking
|
||||||
|
function print_textinputs_var() {
|
||||||
|
global $textinputs;
|
||||||
|
foreach( $textinputs as $key=>$val ) {
|
||||||
|
# $val = str_replace( "'", "%27", $val );
|
||||||
|
echo "textinputs[$key] = decodeURIComponent(\"" . $val . "\");\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# make declarations for the text input index
|
||||||
|
function print_textindex_decl( $text_input_idx ) {
|
||||||
|
echo "words[$text_input_idx] = [];\n";
|
||||||
|
echo "suggs[$text_input_idx] = [];\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
# set an element of the JavaScript 'words' array to a misspelled word
|
||||||
|
function print_words_elem( $word, $index, $text_input_idx ) {
|
||||||
|
echo "words[$text_input_idx][$index] = '" . escape_quote( $word ) . "';\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# set an element of the JavaScript 'suggs' array to a list of suggestions
|
||||||
|
function print_suggs_elem( $suggs, $index, $text_input_idx ) {
|
||||||
|
echo "suggs[$text_input_idx][$index] = [";
|
||||||
|
foreach( $suggs as $key=>$val ) {
|
||||||
|
if( $val ) {
|
||||||
|
echo "'" . escape_quote( $val ) . "'";
|
||||||
|
if ( $key+1 < count( $suggs )) {
|
||||||
|
echo ", ";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
echo "];\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
# escape single quote
|
||||||
|
function escape_quote( $str ) {
|
||||||
|
return preg_replace ( "/'/", "\\'", $str );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# handle a server-side error.
|
||||||
|
function error_handler( $err ) {
|
||||||
|
echo "error = '" . escape_quote( $err ) . "';\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
## get the list of misspelled words. Put the results in the javascript words array
|
||||||
|
## for each misspelled word, get suggestions and put in the javascript suggs array
|
||||||
|
function print_checker_results() {
|
||||||
|
|
||||||
|
global $aspell_prog;
|
||||||
|
global $aspell_opts;
|
||||||
|
global $tempfiledir;
|
||||||
|
global $textinputs;
|
||||||
|
global $input_separator;
|
||||||
|
$aspell_err = "";
|
||||||
|
# create temp file
|
||||||
|
$tempfile = tempnam( $tempfiledir, 'aspell_data_' );
|
||||||
|
|
||||||
|
# open temp file, add the submitted text.
|
||||||
|
if( $fh = fopen( $tempfile, 'w' )) {
|
||||||
|
for( $i = 0; $i < count( $textinputs ); $i++ ) {
|
||||||
|
$text = urldecode( $textinputs[$i] );
|
||||||
|
$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 --rem-sgml-check=alt"; # by FredCK
|
||||||
|
my $input_separator = "A";
|
||||||
|
|
||||||
|
# set the 'wordtext' JavaScript variable to the submitted text.
|
||||||
|
sub printTextVar {
|
||||||
|
for( my $i = 0; $i <= $#textinputs; $i++ ) {
|
||||||
|
print "textinputs[$i] = decodeURIComponent('" . escapeQuote( $textinputs[$i] ) . "')\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sub printTextIdxDecl {
|
||||||
|
my $idx = shift;
|
||||||
|
print "words[$idx] = [];\n";
|
||||||
|
print "suggs[$idx] = [];\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
sub printWordsElem {
|
||||||
|
my( $textIdx, $wordIdx, $word ) = @_;
|
||||||
|
print "words[$textIdx][$wordIdx] = '" . escapeQuote( $word ) . "';\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
sub printSuggsElem {
|
||||||
|
my( $textIdx, $wordIdx, @suggs ) = @_;
|
||||||
|
print "suggs[$textIdx][$wordIdx] = [";
|
||||||
|
for my $i ( 0..$#suggs ) {
|
||||||
|
print "'" . escapeQuote( $suggs[$i] ) . "'";
|
||||||
|
if( $i < $#suggs ) {
|
||||||
|
print ", ";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
print "];\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
sub printCheckerResults {
|
||||||
|
my $textInputIdx = -1;
|
||||||
|
my $wordIdx = 0;
|
||||||
|
my $unhandledText;
|
||||||
|
# create temp file
|
||||||
|
my $dir = tempdir( CLEANUP => 1 );
|
||||||
|
my( $fh, $tmpfilename ) = tempfile( DIR => $dir );
|
||||||
|
|
||||||
|
# temp file was created properly?
|
||||||
|
|
||||||
|
# open temp file, add the submitted text.
|
||||||
|
for( my $i = 0; $i <= $#textinputs; $i++ ) {
|
||||||
|
$text = url_decode( $textinputs[$i] );
|
||||||
|
@lines = split( /\n/, $text );
|
||||||
|
print $fh "\%\n"; # exit terse mode
|
||||||
|
print $fh "^$input_separator\n";
|
||||||
|
print $fh "!\n"; # enter terse mode
|
||||||
|
for my $line ( @lines ) {
|
||||||
|
# use carat on each line to escape possible aspell commands
|
||||||
|
print $fh "^$line\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
# exec aspell command
|
||||||
|
my $cmd = "$aspell_cmd $aspell_opts < $tmpfilename 2>&1";
|
||||||
|
open ASPELL, "$cmd |" or handleError( "Could not execute `$cmd`\\n$!" ) and return;
|
||||||
|
# parse each line of aspell return
|
||||||
|
for my $ret ( <ASPELL> ) {
|
||||||
|
chomp( $ret );
|
||||||
|
# if '&', then not in dictionary but has suggestions
|
||||||
|
# if '#', then not in dictionary and no suggestions
|
||||||
|
# if '*', then it is a delimiter between text inputs
|
||||||
|
if( $ret =~ /^\*/ ) {
|
||||||
|
$textInputIdx++;
|
||||||
|
printTextIdxDecl( $textInputIdx );
|
||||||
|
$wordIdx = 0;
|
||||||
|
|
||||||
|
} elsif( $ret =~ /^(&|#)/ ) {
|
||||||
|
my @tokens = split( " ", $ret, 5 );
|
||||||
|
printWordsElem( $textInputIdx, $wordIdx, $tokens[1] );
|
||||||
|
my @suggs = ();
|
||||||
|
if( $tokens[4] ) {
|
||||||
|
@suggs = split( ", ", $tokens[4] );
|
||||||
|
}
|
||||||
|
printSuggsElem( $textInputIdx, $wordIdx, @suggs );
|
||||||
|
$wordIdx++;
|
||||||
|
} else {
|
||||||
|
$unhandledText .= $ret;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
close ASPELL or handleError( "Error executing `$cmd`\\n$unhandledText" ) and return;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub escapeQuote {
|
||||||
|
my $str = shift;
|
||||||
|
$str =~ s/'/\\'/g;
|
||||||
|
return $str;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub handleError {
|
||||||
|
my $err = shift;
|
||||||
|
print "error = '" . escapeQuote( $err ) . "';\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
sub url_decode {
|
||||||
|
local $_ = @_ ? shift : $_;
|
||||||
|
defined or return;
|
||||||
|
# change + signs to spaces
|
||||||
|
tr/+/ /;
|
||||||
|
# change hex escapes to the proper characters
|
||||||
|
s/%([a-fA-F0-9]{2})/pack "H2", $1/eg;
|
||||||
|
return $_;
|
||||||
|
}
|
||||||
|
|
||||||
|
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
|
||||||
|
# Display HTML
|
||||||
|
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
|
||||||
|
|
||||||
|
print <<EOF;
|
||||||
|
Content-type: text/html; charset=utf-8
|
||||||
|
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||||
|
<link rel="stylesheet" type="text/css" href="$spellercss"/>
|
||||||
|
<script src="$wordWindowSrc"></script>
|
||||||
|
<script type="text/javascript">
|
||||||
|
var suggs = new Array();
|
||||||
|
var words = new Array();
|
||||||
|
var textinputs = new Array();
|
||||||
|
var error;
|
||||||
|
EOF
|
||||||
|
|
||||||
|
printTextVar();
|
||||||
|
|
||||||
|
printCheckerResults();
|
||||||
|
|
||||||
|
print <<EOF;
|
||||||
|
var wordWindowObj = new wordWindow();
|
||||||
|
wordWindowObj.originalSpellings = words;
|
||||||
|
wordWindowObj.suggestions = suggs;
|
||||||
|
wordWindowObj.textInputs = textinputs;
|
||||||
|
|
||||||
|
|
||||||
|
function init_spell() {
|
||||||
|
// check if any error occured during server-side processing
|
||||||
|
if( error ) {
|
||||||
|
alert( error );
|
||||||
|
} else {
|
||||||
|
// call the init_spell() function in the parent frameset
|
||||||
|
if (parent.frames.length) {
|
||||||
|
parent.init_spell( wordWindowObj );
|
||||||
|
} else {
|
||||||
|
error = "This page was loaded outside of a frameset. ";
|
||||||
|
error += "It might not display properly";
|
||||||
|
alert( error );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body onLoad="init_spell();">
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
wordWindowObj.writeBody();
|
||||||
|
</script>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
EOF
|
||||||
|
|
||||||
@@ -0,0 +1,462 @@
|
|||||||
|
////////////////////////////////////////////////////
|
||||||
|
// spellChecker.js
|
||||||
|
//
|
||||||
|
// spellChecker object
|
||||||
|
//
|
||||||
|
// This file is sourced on web pages that have a textarea object to evaluate
|
||||||
|
// for spelling. It includes the implementation for the spellCheckObject.
|
||||||
|
//
|
||||||
|
////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
|
// constructor
|
||||||
|
function spellChecker( textObject ) {
|
||||||
|
|
||||||
|
// public properties - configurable
|
||||||
|
// this.popUpUrl = '/speller/spellchecker.html'; // by FredCK
|
||||||
|
this.popUpUrl = 'fck_spellerpages/spellerpages/spellchecker.html'; // by FredCK
|
||||||
|
this.popUpName = 'spellchecker';
|
||||||
|
// this.popUpProps = "menu=no,width=440,height=350,top=70,left=120,resizable=yes,status=yes"; // by FredCK
|
||||||
|
this.popUpProps = null ; // by FredCK
|
||||||
|
// this.spellCheckScript = '/speller/server-scripts/spellchecker.php'; // by FredCK
|
||||||
|
//this.spellCheckScript = '/cgi-bin/spellchecker.pl';
|
||||||
|
|
||||||
|
// values used to keep track of what happened to a word
|
||||||
|
this.replWordFlag = "R"; // single replace
|
||||||
|
this.ignrWordFlag = "I"; // single ignore
|
||||||
|
this.replAllFlag = "RA"; // replace all occurances
|
||||||
|
this.ignrAllFlag = "IA"; // ignore all occurances
|
||||||
|
this.fromReplAll = "~RA"; // an occurance of a "replace all" word
|
||||||
|
this.fromIgnrAll = "~IA"; // an occurance of a "ignore all" word
|
||||||
|
// properties set at run time
|
||||||
|
this.wordFlags = new Array();
|
||||||
|
this.currentTextIndex = 0;
|
||||||
|
this.currentWordIndex = 0;
|
||||||
|
this.spellCheckerWin = null;
|
||||||
|
this.controlWin = null;
|
||||||
|
this.wordWin = null;
|
||||||
|
this.textArea = textObject; // deprecated
|
||||||
|
this.textInputs = arguments;
|
||||||
|
|
||||||
|
// private methods
|
||||||
|
this._spellcheck = _spellcheck;
|
||||||
|
this._getSuggestions = _getSuggestions;
|
||||||
|
this._setAsIgnored = _setAsIgnored;
|
||||||
|
this._getTotalReplaced = _getTotalReplaced;
|
||||||
|
this._setWordText = _setWordText;
|
||||||
|
this._getFormInputs = _getFormInputs;
|
||||||
|
|
||||||
|
// public methods
|
||||||
|
this.openChecker = openChecker;
|
||||||
|
this.startCheck = startCheck;
|
||||||
|
this.checkTextBoxes = checkTextBoxes;
|
||||||
|
this.checkTextAreas = checkTextAreas;
|
||||||
|
this.spellCheckAll = spellCheckAll;
|
||||||
|
this.ignoreWord = ignoreWord;
|
||||||
|
this.ignoreAll = ignoreAll;
|
||||||
|
this.replaceWord = replaceWord;
|
||||||
|
this.replaceAll = replaceAll;
|
||||||
|
this.terminateSpell = terminateSpell;
|
||||||
|
this.undo = undo;
|
||||||
|
|
||||||
|
// set the current window's "speller" property to the instance of this class.
|
||||||
|
// this object can now be referenced by child windows/frames.
|
||||||
|
window.speller = this;
|
||||||
|
}
|
||||||
|
|
||||||
|
// call this method to check all text boxes (and only text boxes) in the HTML document
|
||||||
|
function checkTextBoxes() {
|
||||||
|
this.textInputs = this._getFormInputs( "^text$" );
|
||||||
|
this.openChecker();
|
||||||
|
}
|
||||||
|
|
||||||
|
// call this method to check all textareas (and only textareas ) in the HTML document
|
||||||
|
function checkTextAreas() {
|
||||||
|
this.textInputs = this._getFormInputs( "^textarea$" );
|
||||||
|
this.openChecker();
|
||||||
|
}
|
||||||
|
|
||||||
|
// call this method to check all text boxes and textareas in the HTML document
|
||||||
|
function spellCheckAll() {
|
||||||
|
this.textInputs = this._getFormInputs( "^text(area)?$" );
|
||||||
|
this.openChecker();
|
||||||
|
}
|
||||||
|
|
||||||
|
// call this method to check text boxe(s) and/or textarea(s) that were passed in to the
|
||||||
|
// object's constructor or to the textInputs property
|
||||||
|
function openChecker() {
|
||||||
|
this.spellCheckerWin = window.open( this.popUpUrl, this.popUpName, this.popUpProps );
|
||||||
|
if( !this.spellCheckerWin.opener ) {
|
||||||
|
this.spellCheckerWin.opener = window;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function startCheck( wordWindowObj, controlWindowObj ) {
|
||||||
|
|
||||||
|
// set properties from args
|
||||||
|
this.wordWin = wordWindowObj;
|
||||||
|
this.controlWin = controlWindowObj;
|
||||||
|
|
||||||
|
// reset properties
|
||||||
|
this.wordWin.resetForm();
|
||||||
|
this.controlWin.resetForm();
|
||||||
|
this.currentTextIndex = 0;
|
||||||
|
this.currentWordIndex = 0;
|
||||||
|
// initialize the flags to an array - one element for each text input
|
||||||
|
this.wordFlags = new Array( this.wordWin.textInputs.length );
|
||||||
|
// each element will be an array that keeps track of each word in the text
|
||||||
|
for( var i=0; i<this.wordFlags.length; i++ ) {
|
||||||
|
this.wordFlags[i] = [];
|
||||||
|
}
|
||||||
|
|
||||||
|
// start
|
||||||
|
this._spellcheck();
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
function ignoreWord() {
|
||||||
|
var wi = this.currentWordIndex;
|
||||||
|
var ti = this.currentTextIndex;
|
||||||
|
if( !this.wordWin ) {
|
||||||
|
alert( 'Error: Word frame not available.' );
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if( !this.wordWin.getTextVal( ti, wi )) {
|
||||||
|
alert( 'Error: "Not in dictionary" text is missing.' );
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
// set as ignored
|
||||||
|
if( this._setAsIgnored( ti, wi, this.ignrWordFlag )) {
|
||||||
|
this.currentWordIndex++;
|
||||||
|
this._spellcheck();
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
function ignoreAll() {
|
||||||
|
var wi = this.currentWordIndex;
|
||||||
|
var ti = this.currentTextIndex;
|
||||||
|
if( !this.wordWin ) {
|
||||||
|
alert( 'Error: Word frame not available.' );
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
// get the word that is currently being evaluated.
|
||||||
|
var s_word_to_repl = this.wordWin.getTextVal( ti, wi );
|
||||||
|
if( !s_word_to_repl ) {
|
||||||
|
alert( 'Error: "Not in dictionary" text is missing' );
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// set this word as an "ignore all" word.
|
||||||
|
this._setAsIgnored( ti, wi, this.ignrAllFlag );
|
||||||
|
|
||||||
|
// loop through all the words after this word
|
||||||
|
for( var i = ti; i < this.wordWin.textInputs.length; i++ ) {
|
||||||
|
for( var j = 0; j < this.wordWin.totalWords( i ); j++ ) {
|
||||||
|
if(( i == ti && j > wi ) || i > ti ) {
|
||||||
|
// future word: set as "from ignore all" if
|
||||||
|
// 1) do not already have a flag and
|
||||||
|
// 2) have the same value as current word
|
||||||
|
if(( this.wordWin.getTextVal( i, j ) == s_word_to_repl )
|
||||||
|
&& ( !this.wordFlags[i][j] )) {
|
||||||
|
this._setAsIgnored( i, j, this.fromIgnrAll );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// finally, move on
|
||||||
|
this.currentWordIndex++;
|
||||||
|
this._spellcheck();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
function replaceWord() {
|
||||||
|
var wi = this.currentWordIndex;
|
||||||
|
var ti = this.currentTextIndex;
|
||||||
|
if( !this.wordWin ) {
|
||||||
|
alert( 'Error: Word frame not available.' );
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if( !this.wordWin.getTextVal( ti, wi )) {
|
||||||
|
alert( 'Error: "Not in dictionary" text is missing' );
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if( !this.controlWin.replacementText ) {
|
||||||
|
return false ;
|
||||||
|
}
|
||||||
|
var txt = this.controlWin.replacementText;
|
||||||
|
if( txt.value ) {
|
||||||
|
var newspell = new String( txt.value );
|
||||||
|
if( this._setWordText( ti, wi, newspell, this.replWordFlag )) {
|
||||||
|
this.currentWordIndex++;
|
||||||
|
this._spellcheck();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
function replaceAll() {
|
||||||
|
var ti = this.currentTextIndex;
|
||||||
|
var wi = this.currentWordIndex;
|
||||||
|
if( !this.wordWin ) {
|
||||||
|
alert( 'Error: Word frame not available.' );
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
var s_word_to_repl = this.wordWin.getTextVal( ti, wi );
|
||||||
|
if( !s_word_to_repl ) {
|
||||||
|
alert( 'Error: "Not in dictionary" text is missing' );
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
var txt = this.controlWin.replacementText;
|
||||||
|
if( !txt.value ) return false;
|
||||||
|
var newspell = new String( txt.value );
|
||||||
|
|
||||||
|
// set this word as a "replace all" word.
|
||||||
|
this._setWordText( ti, wi, newspell, this.replAllFlag );
|
||||||
|
|
||||||
|
// loop through all the words after this word
|
||||||
|
for( var i = ti; i < this.wordWin.textInputs.length; i++ ) {
|
||||||
|
for( var j = 0; j < this.wordWin.totalWords( i ); j++ ) {
|
||||||
|
if(( i == ti && j > wi ) || i > ti ) {
|
||||||
|
// future word: set word text to s_word_to_repl if
|
||||||
|
// 1) do not already have a flag and
|
||||||
|
// 2) have the same value as s_word_to_repl
|
||||||
|
if(( this.wordWin.getTextVal( i, j ) == s_word_to_repl )
|
||||||
|
&& ( !this.wordFlags[i][j] )) {
|
||||||
|
this._setWordText( i, j, newspell, this.fromReplAll );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// finally, move on
|
||||||
|
this.currentWordIndex++;
|
||||||
|
this._spellcheck();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
function terminateSpell() {
|
||||||
|
// called when we have reached the end of the spell checking.
|
||||||
|
var msg = ""; // by FredCK
|
||||||
|
var numrepl = this._getTotalReplaced();
|
||||||
|
if( numrepl == 0 ) {
|
||||||
|
// see if there were no misspellings to begin with
|
||||||
|
if( !this.wordWin ) {
|
||||||
|
msg = "";
|
||||||
|
} else {
|
||||||
|
if( this.wordWin.totalMisspellings() ) {
|
||||||
|
// msg += "No words changed."; // by FredCK
|
||||||
|
msg += FCKLang.DlgSpellNoChanges ; // by FredCK
|
||||||
|
} else {
|
||||||
|
// msg += "No misspellings found."; // by FredCK
|
||||||
|
msg += FCKLang.DlgSpellNoMispell ; // by FredCK
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if( numrepl == 1 ) {
|
||||||
|
// msg += "One word changed."; // by FredCK
|
||||||
|
msg += FCKLang.DlgSpellOneChange ; // by FredCK
|
||||||
|
} else {
|
||||||
|
// msg += numrepl + " words changed."; // by FredCK
|
||||||
|
msg += FCKLang.DlgSpellManyChanges.replace( /%1/g, numrepl ) ;
|
||||||
|
}
|
||||||
|
if( msg ) {
|
||||||
|
// msg += "\n"; // by FredCK
|
||||||
|
alert( msg );
|
||||||
|
}
|
||||||
|
|
||||||
|
if( numrepl > 0 ) {
|
||||||
|
// update the text field(s) on the opener window
|
||||||
|
for( var i = 0; i < this.textInputs.length; i++ ) {
|
||||||
|
// this.textArea.value = this.wordWin.text;
|
||||||
|
if( this.wordWin ) {
|
||||||
|
if( this.wordWin.textInputs[i] ) {
|
||||||
|
this.textInputs[i].value = this.wordWin.textInputs[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// return back to the calling window
|
||||||
|
// this.spellCheckerWin.close(); // by FredCK
|
||||||
|
if ( typeof( this.OnFinished ) == 'function' ) // by FredCK
|
||||||
|
this.OnFinished(numrepl) ; // by FredCK
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
function undo() {
|
||||||
|
// skip if this is the first word!
|
||||||
|
var ti = this.currentTextIndex;
|
||||||
|
var wi = this.currentWordIndex;
|
||||||
|
|
||||||
|
if( this.wordWin.totalPreviousWords( ti, wi ) > 0 ) {
|
||||||
|
this.wordWin.removeFocus( ti, wi );
|
||||||
|
|
||||||
|
// go back to the last word index that was acted upon
|
||||||
|
do {
|
||||||
|
// if the current word index is zero then reset the seed
|
||||||
|
if( this.currentWordIndex == 0 && this.currentTextIndex > 0 ) {
|
||||||
|
this.currentTextIndex--;
|
||||||
|
this.currentWordIndex = this.wordWin.totalWords( this.currentTextIndex )-1;
|
||||||
|
if( this.currentWordIndex < 0 ) this.currentWordIndex = 0;
|
||||||
|
} else {
|
||||||
|
if( this.currentWordIndex > 0 ) {
|
||||||
|
this.currentWordIndex--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} while (
|
||||||
|
this.wordWin.totalWords( this.currentTextIndex ) == 0
|
||||||
|
|| this.wordFlags[this.currentTextIndex][this.currentWordIndex] == this.fromIgnrAll
|
||||||
|
|| this.wordFlags[this.currentTextIndex][this.currentWordIndex] == this.fromReplAll
|
||||||
|
);
|
||||||
|
|
||||||
|
var text_idx = this.currentTextIndex;
|
||||||
|
var idx = this.currentWordIndex;
|
||||||
|
var preReplSpell = this.wordWin.originalSpellings[text_idx][idx];
|
||||||
|
|
||||||
|
// if we got back to the first word then set the Undo button back to disabled
|
||||||
|
if( this.wordWin.totalPreviousWords( text_idx, idx ) == 0 ) {
|
||||||
|
this.controlWin.disableUndo();
|
||||||
|
}
|
||||||
|
|
||||||
|
var i, j, origSpell ;
|
||||||
|
// examine what happened to this current word.
|
||||||
|
switch( this.wordFlags[text_idx][idx] ) {
|
||||||
|
// replace all: go through this and all the future occurances of the word
|
||||||
|
// and revert them all to the original spelling and clear their flags
|
||||||
|
case this.replAllFlag :
|
||||||
|
for( i = text_idx; i < this.wordWin.textInputs.length; i++ ) {
|
||||||
|
for( j = 0; j < this.wordWin.totalWords( i ); j++ ) {
|
||||||
|
if(( i == text_idx && j >= idx ) || i > text_idx ) {
|
||||||
|
origSpell = this.wordWin.originalSpellings[i][j];
|
||||||
|
if( origSpell == preReplSpell ) {
|
||||||
|
this._setWordText ( i, j, origSpell, undefined );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
// ignore all: go through all the future occurances of the word
|
||||||
|
// and clear their flags
|
||||||
|
case this.ignrAllFlag :
|
||||||
|
for( i = text_idx; i < this.wordWin.textInputs.length; i++ ) {
|
||||||
|
for( j = 0; j < this.wordWin.totalWords( i ); j++ ) {
|
||||||
|
if(( i == text_idx && j >= idx ) || i > text_idx ) {
|
||||||
|
origSpell = this.wordWin.originalSpellings[i][j];
|
||||||
|
if( origSpell == preReplSpell ) {
|
||||||
|
this.wordFlags[i][j] = undefined;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
// replace: revert the word to its original spelling
|
||||||
|
case this.replWordFlag :
|
||||||
|
this._setWordText ( text_idx, idx, preReplSpell, undefined );
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// For all four cases, clear the wordFlag of this word. re-start the process
|
||||||
|
this.wordFlags[text_idx][idx] = undefined;
|
||||||
|
this._spellcheck();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function _spellcheck() {
|
||||||
|
var ww = this.wordWin;
|
||||||
|
|
||||||
|
// check if this is the last word in the current text element
|
||||||
|
if( this.currentWordIndex == ww.totalWords( this.currentTextIndex) ) {
|
||||||
|
this.currentTextIndex++;
|
||||||
|
this.currentWordIndex = 0;
|
||||||
|
// keep going if we're not yet past the last text element
|
||||||
|
if( this.currentTextIndex < this.wordWin.textInputs.length ) {
|
||||||
|
this._spellcheck();
|
||||||
|
return;
|
||||||
|
} else {
|
||||||
|
this.terminateSpell();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// if this is after the first one make sure the Undo button is enabled
|
||||||
|
if( this.currentWordIndex > 0 ) {
|
||||||
|
this.controlWin.enableUndo();
|
||||||
|
}
|
||||||
|
|
||||||
|
// skip the current word if it has already been worked on
|
||||||
|
if( this.wordFlags[this.currentTextIndex][this.currentWordIndex] ) {
|
||||||
|
// increment the global current word index and move on.
|
||||||
|
this.currentWordIndex++;
|
||||||
|
this._spellcheck();
|
||||||
|
} else {
|
||||||
|
var evalText = ww.getTextVal( this.currentTextIndex, this.currentWordIndex );
|
||||||
|
if( evalText ) {
|
||||||
|
this.controlWin.evaluatedText.value = evalText;
|
||||||
|
ww.setFocus( this.currentTextIndex, this.currentWordIndex );
|
||||||
|
this._getSuggestions( this.currentTextIndex, this.currentWordIndex );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function _getSuggestions( text_num, word_num ) {
|
||||||
|
this.controlWin.clearSuggestions();
|
||||||
|
// add suggestion in list for each suggested word.
|
||||||
|
// get the array of suggested words out of the
|
||||||
|
// three-dimensional array containing all suggestions.
|
||||||
|
var a_suggests = this.wordWin.suggestions[text_num][word_num];
|
||||||
|
if( a_suggests ) {
|
||||||
|
// got an array of suggestions.
|
||||||
|
for( var ii = 0; ii < a_suggests.length; ii++ ) {
|
||||||
|
this.controlWin.addSuggestion( a_suggests[ii] );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.controlWin.selectDefaultSuggestion();
|
||||||
|
}
|
||||||
|
|
||||||
|
function _setAsIgnored( text_num, word_num, flag ) {
|
||||||
|
// set the UI
|
||||||
|
this.wordWin.removeFocus( text_num, word_num );
|
||||||
|
// do the bookkeeping
|
||||||
|
this.wordFlags[text_num][word_num] = flag;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
function _getTotalReplaced() {
|
||||||
|
var i_replaced = 0;
|
||||||
|
for( var i = 0; i < this.wordFlags.length; i++ ) {
|
||||||
|
for( var j = 0; j < this.wordFlags[i].length; j++ ) {
|
||||||
|
if(( this.wordFlags[i][j] == this.replWordFlag )
|
||||||
|
|| ( this.wordFlags[i][j] == this.replAllFlag )
|
||||||
|
|| ( this.wordFlags[i][j] == this.fromReplAll )) {
|
||||||
|
i_replaced++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return i_replaced;
|
||||||
|
}
|
||||||
|
|
||||||
|
function _setWordText( text_num, word_num, newText, flag ) {
|
||||||
|
// set the UI and form inputs
|
||||||
|
this.wordWin.setText( text_num, word_num, newText );
|
||||||
|
// keep track of what happened to this word:
|
||||||
|
this.wordFlags[text_num][word_num] = flag;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
function _getFormInputs( inputPattern ) {
|
||||||
|
var inputs = new Array();
|
||||||
|
for( var i = 0; i < document.forms.length; i++ ) {
|
||||||
|
for( var j = 0; j < document.forms[i].elements.length; j++ ) {
|
||||||
|
if( document.forms[i].elements[j].type.match( inputPattern )) {
|
||||||
|
inputs[inputs.length] = document.forms[i].elements[j];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return inputs;
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,71 @@
|
|||||||
|
|
||||||
|
<script>
|
||||||
|
|
||||||
|
var wordWindow = null;
|
||||||
|
var controlWindow = null;
|
||||||
|
|
||||||
|
function init_spell( spellerWindow ) {
|
||||||
|
|
||||||
|
if( spellerWindow ) {
|
||||||
|
if( spellerWindow.windowType == "wordWindow" ) {
|
||||||
|
wordWindow = spellerWindow;
|
||||||
|
} else if ( spellerWindow.windowType == "controlWindow" ) {
|
||||||
|
controlWindow = spellerWindow;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if( controlWindow && wordWindow ) {
|
||||||
|
// populate the speller object and start it off!
|
||||||
|
var speller = opener.speller;
|
||||||
|
wordWindow.speller = speller;
|
||||||
|
speller.startCheck( wordWindow, controlWindow );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// encodeForPost
|
||||||
|
function encodeForPost( str ) {
|
||||||
|
var s = new String( str );
|
||||||
|
s = encodeURIComponent( s );
|
||||||
|
// additionally encode single quotes to evade any PHP
|
||||||
|
// magic_quotes_gpc setting (it inserts escape characters and
|
||||||
|
// therefore skews the btye positions of misspelled words)
|
||||||
|
return s.replace( /\'/g, '%27' );
|
||||||
|
}
|
||||||
|
|
||||||
|
// post the text area data to the script that populates the speller
|
||||||
|
function postWords() {
|
||||||
|
var bodyDoc = window.frames[0].document;
|
||||||
|
bodyDoc.open();
|
||||||
|
bodyDoc.write('<html>');
|
||||||
|
bodyDoc.write('<meta http-equiv="Content-Type" content="text/html; charset=utf-8">');
|
||||||
|
bodyDoc.write('<link rel="stylesheet" type="text/css" href="spellerStyle.css"/>');
|
||||||
|
if (opener) {
|
||||||
|
var speller = opener.speller;
|
||||||
|
bodyDoc.write('<body class="normalText" onLoad="document.forms[0].submit();">');
|
||||||
|
bodyDoc.write('<p>' + window.parent.FCKLang.DlgSpellProgress + '<\/p>'); // by FredCK
|
||||||
|
bodyDoc.write('<form action="'+speller.spellCheckScript+'" method="post">');
|
||||||
|
for( var i = 0; i < speller.textInputs.length; i++ ) {
|
||||||
|
bodyDoc.write('<input type="hidden" name="textinputs[]" value="'+encodeForPost(speller.textInputs[i].value)+'">');
|
||||||
|
}
|
||||||
|
bodyDoc.write('<\/form>');
|
||||||
|
bodyDoc.write('<\/body>');
|
||||||
|
} else {
|
||||||
|
bodyDoc.write('<body class="normalText">');
|
||||||
|
bodyDoc.write('<p><b>This page cannot be displayed<\/b><\/p><p>The window was not opened from another window.<\/p>');
|
||||||
|
bodyDoc.write('<\/body>');
|
||||||
|
}
|
||||||
|
bodyDoc.write('<\/html>');
|
||||||
|
bodyDoc.close();
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<html>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||||
|
<head>
|
||||||
|
<title>Speller Pages</title>
|
||||||
|
</head>
|
||||||
|
<frameset rows="*,201" onLoad="postWords();">
|
||||||
|
<frame src="blank.html">
|
||||||
|
<frame src="controls.html">
|
||||||
|
</frameset>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,49 @@
|
|||||||
|
.blend {
|
||||||
|
font-family: courier new;
|
||||||
|
font-size: 10pt;
|
||||||
|
border: 0;
|
||||||
|
margin-bottom:-1;
|
||||||
|
}
|
||||||
|
.normalLabel {
|
||||||
|
font-size:8pt;
|
||||||
|
}
|
||||||
|
.normalText {
|
||||||
|
font-family:arial, helvetica, sans-serif;
|
||||||
|
font-size:10pt;
|
||||||
|
color:000000;
|
||||||
|
background-color:FFFFFF;
|
||||||
|
}
|
||||||
|
.plainText {
|
||||||
|
font-family: courier new, courier, monospace;
|
||||||
|
font-size: 10pt;
|
||||||
|
color:000000;
|
||||||
|
background-color:FFFFFF;
|
||||||
|
}
|
||||||
|
.controlWindowBody {
|
||||||
|
font-family:arial, helvetica, sans-serif;
|
||||||
|
font-size:8pt;
|
||||||
|
padding: 7px ; /* by FredCK */
|
||||||
|
margin: 0px ; /* by FredCK */
|
||||||
|
/* color:000000; by FredCK */
|
||||||
|
/* background-color:DADADA; by FredCK */
|
||||||
|
}
|
||||||
|
.readonlyInput {
|
||||||
|
background-color:DADADA;
|
||||||
|
color:000000;
|
||||||
|
font-size:8pt;
|
||||||
|
width:392px;
|
||||||
|
}
|
||||||
|
.textDefault {
|
||||||
|
font-size:8pt;
|
||||||
|
width: 200px;
|
||||||
|
}
|
||||||
|
.buttonDefault {
|
||||||
|
width:90px;
|
||||||
|
height:22px;
|
||||||
|
font-size:8pt;
|
||||||
|
}
|
||||||
|
.suggSlct {
|
||||||
|
width:200px;
|
||||||
|
margin-top:2;
|
||||||
|
font-size:8pt;
|
||||||
|
}
|
||||||
@@ -0,0 +1,272 @@
|
|||||||
|
////////////////////////////////////////////////////
|
||||||
|
// wordWindow object
|
||||||
|
////////////////////////////////////////////////////
|
||||||
|
function wordWindow() {
|
||||||
|
// private properties
|
||||||
|
this._forms = [];
|
||||||
|
|
||||||
|
// private methods
|
||||||
|
this._getWordObject = _getWordObject;
|
||||||
|
//this._getSpellerObject = _getSpellerObject;
|
||||||
|
this._wordInputStr = _wordInputStr;
|
||||||
|
this._adjustIndexes = _adjustIndexes;
|
||||||
|
this._isWordChar = _isWordChar;
|
||||||
|
this._lastPos = _lastPos;
|
||||||
|
|
||||||
|
// public properties
|
||||||
|
this.wordChar = /[a-zA-Z]/;
|
||||||
|
this.windowType = "wordWindow";
|
||||||
|
this.originalSpellings = new Array();
|
||||||
|
this.suggestions = new Array();
|
||||||
|
this.checkWordBgColor = "pink";
|
||||||
|
this.normWordBgColor = "white";
|
||||||
|
this.text = "";
|
||||||
|
this.textInputs = new Array();
|
||||||
|
this.indexes = new Array();
|
||||||
|
//this.speller = this._getSpellerObject();
|
||||||
|
|
||||||
|
// public methods
|
||||||
|
this.resetForm = resetForm;
|
||||||
|
this.totalMisspellings = totalMisspellings;
|
||||||
|
this.totalWords = totalWords;
|
||||||
|
this.totalPreviousWords = totalPreviousWords;
|
||||||
|
//this.getTextObjectArray = getTextObjectArray;
|
||||||
|
this.getTextVal = getTextVal;
|
||||||
|
this.setFocus = setFocus;
|
||||||
|
this.removeFocus = removeFocus;
|
||||||
|
this.setText = setText;
|
||||||
|
//this.getTotalWords = getTotalWords;
|
||||||
|
this.writeBody = writeBody;
|
||||||
|
this.printForHtml = printForHtml;
|
||||||
|
}
|
||||||
|
|
||||||
|
function resetForm() {
|
||||||
|
if( this._forms ) {
|
||||||
|
for( var i = 0; i < this._forms.length; i++ ) {
|
||||||
|
this._forms[i].reset();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
function totalMisspellings() {
|
||||||
|
var total_words = 0;
|
||||||
|
for( var i = 0; i < this.textInputs.length; i++ ) {
|
||||||
|
total_words += this.totalWords( i );
|
||||||
|
}
|
||||||
|
return total_words;
|
||||||
|
}
|
||||||
|
|
||||||
|
function totalWords( textIndex ) {
|
||||||
|
return this.originalSpellings[textIndex].length;
|
||||||
|
}
|
||||||
|
|
||||||
|
function totalPreviousWords( textIndex, wordIndex ) {
|
||||||
|
var total_words = 0;
|
||||||
|
for( var i = 0; i <= textIndex; i++ ) {
|
||||||
|
for( var j = 0; j < this.totalWords( i ); j++ ) {
|
||||||
|
if( i == textIndex && j == wordIndex ) {
|
||||||
|
break;
|
||||||
|
} else {
|
||||||
|
total_words++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return total_words;
|
||||||
|
}
|
||||||
|
|
||||||
|
//function getTextObjectArray() {
|
||||||
|
// return this._form.elements;
|
||||||
|
//}
|
||||||
|
|
||||||
|
function getTextVal( textIndex, wordIndex ) {
|
||||||
|
var word = this._getWordObject( textIndex, wordIndex );
|
||||||
|
if( word ) {
|
||||||
|
return word.value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function setFocus( textIndex, wordIndex ) {
|
||||||
|
var word = this._getWordObject( textIndex, wordIndex );
|
||||||
|
if( word ) {
|
||||||
|
if( word.type == "text" ) {
|
||||||
|
word.focus();
|
||||||
|
word.style.backgroundColor = this.checkWordBgColor;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function removeFocus( textIndex, wordIndex ) {
|
||||||
|
var word = this._getWordObject( textIndex, wordIndex );
|
||||||
|
if( word ) {
|
||||||
|
if( word.type == "text" ) {
|
||||||
|
word.blur();
|
||||||
|
word.style.backgroundColor = this.normWordBgColor;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function setText( textIndex, wordIndex, newText ) {
|
||||||
|
var word = this._getWordObject( textIndex, wordIndex );
|
||||||
|
var beginStr;
|
||||||
|
var endStr;
|
||||||
|
if( word ) {
|
||||||
|
var pos = this.indexes[textIndex][wordIndex];
|
||||||
|
var oldText = word.value;
|
||||||
|
// update the text given the index of the string
|
||||||
|
beginStr = this.textInputs[textIndex].substring( 0, pos );
|
||||||
|
endStr = this.textInputs[textIndex].substring(
|
||||||
|
pos + oldText.length,
|
||||||
|
this.textInputs[textIndex].length
|
||||||
|
);
|
||||||
|
this.textInputs[textIndex] = beginStr + newText + endStr;
|
||||||
|
|
||||||
|
// adjust the indexes on the stack given the differences in
|
||||||
|
// length between the new word and old word.
|
||||||
|
var lengthDiff = newText.length - oldText.length;
|
||||||
|
this._adjustIndexes( textIndex, wordIndex, lengthDiff );
|
||||||
|
|
||||||
|
word.size = newText.length;
|
||||||
|
word.value = newText;
|
||||||
|
this.removeFocus( textIndex, wordIndex );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function writeBody() {
|
||||||
|
var d = window.document;
|
||||||
|
var is_html = false;
|
||||||
|
|
||||||
|
d.open();
|
||||||
|
|
||||||
|
// iterate through each text input.
|
||||||
|
for( var txtid = 0; txtid < this.textInputs.length; txtid++ ) {
|
||||||
|
var end_idx = 0;
|
||||||
|
var begin_idx = 0;
|
||||||
|
d.writeln( '<form name="textInput'+txtid+'">' );
|
||||||
|
var wordtxt = this.textInputs[txtid];
|
||||||
|
this.indexes[txtid] = [];
|
||||||
|
|
||||||
|
if( wordtxt ) {
|
||||||
|
var orig = this.originalSpellings[txtid];
|
||||||
|
if( !orig ) break;
|
||||||
|
|
||||||
|
//!!! plain text, or HTML mode?
|
||||||
|
d.writeln( '<div class="plainText">' );
|
||||||
|
// iterate through each occurrence of a misspelled word.
|
||||||
|
for( var i = 0; i < orig.length; i++ ) {
|
||||||
|
// find the position of the current misspelled word,
|
||||||
|
// starting at the last misspelled word.
|
||||||
|
// and keep looking if it's a substring of another word
|
||||||
|
do {
|
||||||
|
begin_idx = wordtxt.indexOf( orig[i], end_idx );
|
||||||
|
end_idx = begin_idx + orig[i].length;
|
||||||
|
// word not found? messed up!
|
||||||
|
if( begin_idx == -1 ) break;
|
||||||
|
// look at the characters immediately before and after
|
||||||
|
// the word. If they are word characters we'll keep looking.
|
||||||
|
var before_char = wordtxt.charAt( begin_idx - 1 );
|
||||||
|
var after_char = wordtxt.charAt( end_idx );
|
||||||
|
} while (
|
||||||
|
this._isWordChar( before_char )
|
||||||
|
|| this._isWordChar( after_char )
|
||||||
|
);
|
||||||
|
|
||||||
|
// keep track of its position in the original text.
|
||||||
|
this.indexes[txtid][i] = begin_idx;
|
||||||
|
|
||||||
|
// write out the characters before the current misspelled word
|
||||||
|
for( var j = this._lastPos( txtid, i ); j < begin_idx; j++ ) {
|
||||||
|
// !!! html mode? make it html compatible
|
||||||
|
d.write( this.printForHtml( wordtxt.charAt( j )));
|
||||||
|
}
|
||||||
|
|
||||||
|
// write out the misspelled word.
|
||||||
|
d.write( this._wordInputStr( orig[i] ));
|
||||||
|
|
||||||
|
// if it's the last word, write out the rest of the text
|
||||||
|
if( i == orig.length-1 ){
|
||||||
|
d.write( printForHtml( wordtxt.substr( end_idx )));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
d.writeln( '</div>' );
|
||||||
|
|
||||||
|
}
|
||||||
|
d.writeln( '</form>' );
|
||||||
|
}
|
||||||
|
//for ( var j = 0; j < d.forms.length; j++ ) {
|
||||||
|
// alert( d.forms[j].name );
|
||||||
|
// for( var k = 0; k < d.forms[j].elements.length; k++ ) {
|
||||||
|
// alert( d.forms[j].elements[k].name + ": " + d.forms[j].elements[k].value );
|
||||||
|
// }
|
||||||
|
//}
|
||||||
|
|
||||||
|
// set the _forms property
|
||||||
|
this._forms = d.forms;
|
||||||
|
d.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
// return the character index in the full text after the last word we evaluated
|
||||||
|
function _lastPos( txtid, idx ) {
|
||||||
|
if( idx > 0 )
|
||||||
|
return this.indexes[txtid][idx-1] + this.originalSpellings[txtid][idx-1].length;
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
function printForHtml( n ) {
|
||||||
|
return n ; // by FredCK
|
||||||
|
/*
|
||||||
|
var htmlstr = n;
|
||||||
|
if( htmlstr.length == 1 ) {
|
||||||
|
// do simple case statement if it's just one character
|
||||||
|
switch ( n ) {
|
||||||
|
case "\n":
|
||||||
|
htmlstr = '<br/>';
|
||||||
|
break;
|
||||||
|
case "<":
|
||||||
|
htmlstr = '<';
|
||||||
|
break;
|
||||||
|
case ">":
|
||||||
|
htmlstr = '>';
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return htmlstr;
|
||||||
|
} else {
|
||||||
|
htmlstr = htmlstr.replace( /</g, '<' );
|
||||||
|
htmlstr = htmlstr.replace( />/g, '>' );
|
||||||
|
htmlstr = htmlstr.replace( /\n/g, '<br/>' );
|
||||||
|
return htmlstr;
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
|
||||||
|
function _isWordChar( letter ) {
|
||||||
|
if( letter.search( this.wordChar ) == -1 ) {
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function _getWordObject( textIndex, wordIndex ) {
|
||||||
|
if( this._forms[textIndex] ) {
|
||||||
|
if( this._forms[textIndex].elements[wordIndex] ) {
|
||||||
|
return this._forms[textIndex].elements[wordIndex];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
function _wordInputStr( word ) {
|
||||||
|
var str = '<input readonly ';
|
||||||
|
str += 'class="blend" type="text" value="' + word + '" size="' + word.length + '">';
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
|
||||||
|
function _adjustIndexes( textIndex, wordIndex, lengthDiff ) {
|
||||||
|
for( var i = wordIndex + 1; i < this.originalSpellings[textIndex].length; i++ ) {
|
||||||
|
this.indexes[textIndex][i] = this.indexes[textIndex][i] + lengthDiff;
|
||||||
|
}
|
||||||
|
}
|
||||||
293
htdocs/includes/fckeditor/editor/dialog/fck_table.html
Normal file
@@ -0,0 +1,293 @@
|
|||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
|
||||||
|
<!--
|
||||||
|
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
||||||
|
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
||||||
|
*
|
||||||
|
* == BEGIN LICENSE ==
|
||||||
|
*
|
||||||
|
* Licensed under the terms of any of the following licenses at your
|
||||||
|
* choice:
|
||||||
|
*
|
||||||
|
* - GNU General Public License Version 2 or later (the "GPL")
|
||||||
|
* http://www.gnu.org/licenses/gpl.html
|
||||||
|
*
|
||||||
|
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
||||||
|
* http://www.gnu.org/licenses/lgpl.html
|
||||||
|
*
|
||||||
|
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
||||||
|
* http://www.mozilla.org/MPL/MPL-1.1.html
|
||||||
|
*
|
||||||
|
* == END LICENSE ==
|
||||||
|
*
|
||||||
|
* Table dialog window.
|
||||||
|
-->
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<title>Table Properties</title>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
|
<meta name="robots" content="noindex, nofollow" />
|
||||||
|
<script src="common/fck_dialog_common.js" type="text/javascript"></script>
|
||||||
|
<script type="text/javascript">
|
||||||
|
|
||||||
|
var oEditor = window.parent.InnerDialogLoaded() ;
|
||||||
|
|
||||||
|
// Gets the document DOM
|
||||||
|
var oDOM = oEditor.FCK.EditorDocument ;
|
||||||
|
|
||||||
|
// Gets the table if there is one selected.
|
||||||
|
var table ;
|
||||||
|
var e = oEditor.FCKSelection.GetSelectedElement() ;
|
||||||
|
|
||||||
|
if ( ( !e && document.location.search.substr(1) == 'Parent' ) || ( e && e.tagName != 'TABLE' ) )
|
||||||
|
e = oEditor.FCKSelection.MoveToAncestorNode( 'TABLE' ) ;
|
||||||
|
|
||||||
|
if ( e && e.tagName == "TABLE" )
|
||||||
|
table = e ;
|
||||||
|
|
||||||
|
// Fired when the window loading process is finished. It sets the fields with the
|
||||||
|
// actual values if a table is selected in the editor.
|
||||||
|
window.onload = function()
|
||||||
|
{
|
||||||
|
// First of all, translate the dialog box texts
|
||||||
|
oEditor.FCKLanguageManager.TranslatePage(document) ;
|
||||||
|
|
||||||
|
if (table)
|
||||||
|
{
|
||||||
|
document.getElementById('txtRows').value = table.rows.length ;
|
||||||
|
document.getElementById('txtColumns').value = table.rows[0].cells.length ;
|
||||||
|
|
||||||
|
// Gets the value from the Width or the Style attribute
|
||||||
|
var iWidth = (table.style.width ? table.style.width : table.width ) ;
|
||||||
|
var iHeight = (table.style.height ? table.style.height : table.height ) ;
|
||||||
|
|
||||||
|
if (iWidth.indexOf('%') >= 0) // Percentual = %
|
||||||
|
{
|
||||||
|
iWidth = parseInt( iWidth.substr(0,iWidth.length - 1), 10 ) ;
|
||||||
|
document.getElementById('selWidthType').value = "percent" ;
|
||||||
|
}
|
||||||
|
else if (iWidth.indexOf('px') >= 0) // Style Pixel = px
|
||||||
|
{ //
|
||||||
|
iWidth = iWidth.substr(0,iWidth.length - 2);
|
||||||
|
document.getElementById('selWidthType').value = "pixels" ;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (iHeight && iHeight.indexOf('px') >= 0) // Style Pixel = px
|
||||||
|
iHeight = iHeight.substr(0,iHeight.length - 2);
|
||||||
|
|
||||||
|
document.getElementById('txtWidth').value = iWidth || '' ;
|
||||||
|
document.getElementById('txtHeight').value = iHeight || '' ;
|
||||||
|
document.getElementById('txtBorder').value = GetAttribute( table, 'border', '' ) ;
|
||||||
|
document.getElementById('selAlignment').value = GetAttribute( table, 'align', '' ) ;
|
||||||
|
document.getElementById('txtCellPadding').value = GetAttribute( table, 'cellPadding', '' ) ;
|
||||||
|
document.getElementById('txtCellSpacing').value = GetAttribute( table, 'cellSpacing', '' ) ;
|
||||||
|
document.getElementById('txtSummary').value = GetAttribute( table, 'summary', '' ) ;
|
||||||
|
// document.getElementById('cmbFontStyle').value = table.className ;
|
||||||
|
|
||||||
|
var eCaption = oEditor.FCKDomTools.GetFirstChild( table, 'CAPTION' ) ;
|
||||||
|
if ( eCaption ) document.getElementById('txtCaption').value = eCaption.innerHTML ;
|
||||||
|
|
||||||
|
document.getElementById('txtRows').disabled = true ;
|
||||||
|
document.getElementById('txtColumns').disabled = true ;
|
||||||
|
}
|
||||||
|
|
||||||
|
window.parent.SetOkButton( true ) ;
|
||||||
|
window.parent.SetAutoSize( true ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Fired when the user press the OK button
|
||||||
|
function Ok()
|
||||||
|
{
|
||||||
|
var bExists = ( table != null ) ;
|
||||||
|
|
||||||
|
if ( ! bExists )
|
||||||
|
table = oEditor.FCK.EditorDocument.createElement( "TABLE" ) ;
|
||||||
|
|
||||||
|
// Removes the Width and Height styles
|
||||||
|
if ( bExists && table.style.width ) table.style.width = null ; //.removeAttribute("width") ;
|
||||||
|
if ( bExists && table.style.height ) table.style.height = null ; //.removeAttribute("height") ;
|
||||||
|
|
||||||
|
var sWidth = GetE('txtWidth').value ;
|
||||||
|
if ( sWidth.length > 0 && GetE('selWidthType').value == 'percent' )
|
||||||
|
sWidth += '%' ;
|
||||||
|
|
||||||
|
SetAttribute( table, 'width' , sWidth ) ;
|
||||||
|
SetAttribute( table, 'height' , GetE('txtHeight').value ) ;
|
||||||
|
SetAttribute( table, 'border' , GetE('txtBorder').value ) ;
|
||||||
|
SetAttribute( table, 'align' , GetE('selAlignment').value ) ;
|
||||||
|
SetAttribute( table, 'cellPadding' , GetE('txtCellPadding').value ) ;
|
||||||
|
SetAttribute( table, 'cellSpacing' , GetE('txtCellSpacing').value ) ;
|
||||||
|
SetAttribute( table, 'summary' , GetE('txtSummary').value ) ;
|
||||||
|
|
||||||
|
var eCaption = oEditor.FCKDomTools.GetFirstChild( table, 'CAPTION' ) ;
|
||||||
|
|
||||||
|
if ( document.getElementById('txtCaption').value != '')
|
||||||
|
{
|
||||||
|
if ( !eCaption )
|
||||||
|
{
|
||||||
|
eCaption = oEditor.FCK.EditorDocument.createElement( 'CAPTION' ) ;
|
||||||
|
table.insertBefore( eCaption, table.firstChild ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
eCaption.innerHTML = document.getElementById('txtCaption').value ;
|
||||||
|
}
|
||||||
|
else if ( bExists && eCaption )
|
||||||
|
{
|
||||||
|
// TODO: It causes an IE internal error if using removeChild or
|
||||||
|
// table.deleteCaption() (see #505).
|
||||||
|
if ( oEditor.FCKBrowserInfo.IsIE )
|
||||||
|
eCaption.innerHTML = '' ;
|
||||||
|
else
|
||||||
|
eCaption.parentNode.removeChild( eCaption ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (! bExists)
|
||||||
|
{
|
||||||
|
var iRows = document.getElementById('txtRows').value ;
|
||||||
|
var iCols = document.getElementById('txtColumns').value ;
|
||||||
|
|
||||||
|
for ( var r = 0 ; r < iRows ; r++ )
|
||||||
|
{
|
||||||
|
var oRow = table.insertRow(-1) ;
|
||||||
|
for ( var c = 0 ; c < iCols ; c++ )
|
||||||
|
{
|
||||||
|
var oCell = oRow.insertCell(-1) ;
|
||||||
|
if ( oEditor.FCKBrowserInfo.IsGeckoLike )
|
||||||
|
oEditor.FCKTools.AppendBogusBr( oCell ) ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
oEditor.FCKUndo.SaveUndoStep() ;
|
||||||
|
|
||||||
|
oEditor.FCK.InsertElement( table ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true ;
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
<body style="overflow: hidden">
|
||||||
|
<table id="otable" cellspacing="0" cellpadding="0" width="100%" border="0" style="height: 100%">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<table cellspacing="1" cellpadding="1" width="100%" border="0">
|
||||||
|
<tr>
|
||||||
|
<td valign="top">
|
||||||
|
<table cellspacing="0" cellpadding="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<span fcklang="DlgTableRows">Rows</span>:</td>
|
||||||
|
<td>
|
||||||
|
<input id="txtRows" type="text" maxlength="3" size="2" value="3" name="txtRows"
|
||||||
|
onkeypress="return IsDigit(event);" /></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<span fcklang="DlgTableColumns">Columns</span>:</td>
|
||||||
|
<td>
|
||||||
|
<input id="txtColumns" type="text" maxlength="2" size="2" value="2" name="txtColumns"
|
||||||
|
onkeypress="return IsDigit(event);" /></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<span fcklang="DlgTableBorder">Border size</span>:</td>
|
||||||
|
<td>
|
||||||
|
<input id="txtBorder" type="text" maxlength="2" size="2" value="1" name="txtBorder"
|
||||||
|
onkeypress="return IsDigit(event);" /></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<span fcklang="DlgTableAlign">Alignment</span>:</td>
|
||||||
|
<td>
|
||||||
|
<select id="selAlignment" name="selAlignment">
|
||||||
|
<option fcklang="DlgTableAlignNotSet" value="" selected="selected"><Not set></option>
|
||||||
|
<option fcklang="DlgTableAlignLeft" value="left">Left</option>
|
||||||
|
<option fcklang="DlgTableAlignCenter" value="center">Center</option>
|
||||||
|
<option fcklang="DlgTableAlignRight" value="right">Right</option>
|
||||||
|
</select></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
</td>
|
||||||
|
<td align="right" valign="top">
|
||||||
|
<table cellspacing="0" cellpadding="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<span fcklang="DlgTableWidth">Width</span>:</td>
|
||||||
|
<td>
|
||||||
|
<input id="txtWidth" type="text" maxlength="4" size="3" value="200" name="txtWidth"
|
||||||
|
onkeypress="return IsDigit(event);" /></td>
|
||||||
|
<td>
|
||||||
|
<select id="selWidthType" name="selWidthType">
|
||||||
|
<option fcklang="DlgTableWidthPx" value="pixels" selected="selected">pixels</option>
|
||||||
|
<option fcklang="DlgTableWidthPc" value="percent">percent</option>
|
||||||
|
</select></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<span fcklang="DlgTableHeight">Height</span>:</td>
|
||||||
|
<td>
|
||||||
|
<input id="txtHeight" type="text" maxlength="4" size="3" name="txtHeight" onkeypress="return IsDigit(event);" /></td>
|
||||||
|
<td>
|
||||||
|
<span fcklang="DlgTableWidthPx">pixels</span></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td nowrap="nowrap">
|
||||||
|
<span fcklang="DlgTableCellSpace">Cell spacing</span>:</td>
|
||||||
|
<td>
|
||||||
|
<input id="txtCellSpacing" type="text" maxlength="2" size="2" value="1" name="txtCellSpacing"
|
||||||
|
onkeypress="return IsDigit(event);" /></td>
|
||||||
|
<td>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td nowrap="nowrap">
|
||||||
|
<span fcklang="DlgTableCellPad">Cell padding</span>:</td>
|
||||||
|
<td>
|
||||||
|
<input id="txtCellPadding" type="text" maxlength="2" size="2" value="1" name="txtCellPadding"
|
||||||
|
onkeypress="return IsDigit(event);" /></td>
|
||||||
|
<td>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<table cellspacing="0" cellpadding="0" width="100%" border="0">
|
||||||
|
<tr>
|
||||||
|
<td nowrap="nowrap">
|
||||||
|
<span fcklang="DlgTableCaption">Caption</span>: </td>
|
||||||
|
<td>
|
||||||
|
</td>
|
||||||
|
<td width="100%" nowrap="nowrap">
|
||||||
|
<input id="txtCaption" type="text" style="width: 100%" /></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td nowrap="nowrap">
|
||||||
|
<span fcklang="DlgTableSummary">Summary</span>: </td>
|
||||||
|
<td>
|
||||||
|
</td>
|
||||||
|
<td width="100%" nowrap="nowrap">
|
||||||
|
<input id="txtSummary" type="text" style="width: 100%" /></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
255
htdocs/includes/fckeditor/editor/dialog/fck_tablecell.html
Normal file
@@ -0,0 +1,255 @@
|
|||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
|
||||||
|
<!--
|
||||||
|
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
||||||
|
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
||||||
|
*
|
||||||
|
* == BEGIN LICENSE ==
|
||||||
|
*
|
||||||
|
* Licensed under the terms of any of the following licenses at your
|
||||||
|
* choice:
|
||||||
|
*
|
||||||
|
* - GNU General Public License Version 2 or later (the "GPL")
|
||||||
|
* http://www.gnu.org/licenses/gpl.html
|
||||||
|
*
|
||||||
|
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
||||||
|
* http://www.gnu.org/licenses/lgpl.html
|
||||||
|
*
|
||||||
|
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
||||||
|
* http://www.mozilla.org/MPL/MPL-1.1.html
|
||||||
|
*
|
||||||
|
* == END LICENSE ==
|
||||||
|
*
|
||||||
|
* Cell properties dialog window.
|
||||||
|
-->
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<title>Table Cell Properties</title>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
|
<meta name="robots" content="noindex, nofollow" />
|
||||||
|
<script src="common/fck_dialog_common.js" type="text/javascript"></script>
|
||||||
|
<script type="text/javascript">
|
||||||
|
|
||||||
|
var oEditor = window.parent.InnerDialogLoaded() ;
|
||||||
|
|
||||||
|
// Gets the document DOM
|
||||||
|
var oDOM = oEditor.FCK.EditorDocument ;
|
||||||
|
|
||||||
|
// Array of selected Cells
|
||||||
|
var aCells = oEditor.FCKTableHandler.GetSelectedCells() ;
|
||||||
|
|
||||||
|
window.onload = function()
|
||||||
|
{
|
||||||
|
// First of all, translate the dialog box texts
|
||||||
|
oEditor.FCKLanguageManager.TranslatePage( document ) ;
|
||||||
|
|
||||||
|
SetStartupValue() ;
|
||||||
|
|
||||||
|
window.parent.SetOkButton( true ) ;
|
||||||
|
window.parent.SetAutoSize( true ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
function SetStartupValue()
|
||||||
|
{
|
||||||
|
if ( aCells.length > 0 )
|
||||||
|
{
|
||||||
|
var oCell = aCells[0] ;
|
||||||
|
var iWidth = GetAttribute( oCell, 'width' ) ;
|
||||||
|
|
||||||
|
if ( iWidth.indexOf && iWidth.indexOf( '%' ) >= 0 )
|
||||||
|
{
|
||||||
|
iWidth = iWidth.substr( 0, iWidth.length - 1 ) ;
|
||||||
|
GetE('selWidthType').value = 'percent' ;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( oCell.attributes['noWrap'] != null && oCell.attributes['noWrap'].specified )
|
||||||
|
GetE('selWordWrap').value = !oCell.noWrap ;
|
||||||
|
|
||||||
|
GetE('txtWidth').value = iWidth ;
|
||||||
|
GetE('txtHeight').value = GetAttribute( oCell, 'height' ) ;
|
||||||
|
GetE('selHAlign').value = GetAttribute( oCell, 'align' ) ;
|
||||||
|
GetE('selVAlign').value = GetAttribute( oCell, 'vAlign' ) ;
|
||||||
|
GetE('txtRowSpan').value = GetAttribute( oCell, 'rowSpan' ) ;
|
||||||
|
GetE('txtCollSpan').value = GetAttribute( oCell, 'colSpan' ) ;
|
||||||
|
GetE('txtBackColor').value = GetAttribute( oCell, 'bgColor' ) ;
|
||||||
|
GetE('txtBorderColor').value = GetAttribute( oCell, 'borderColor' ) ;
|
||||||
|
// GetE('cmbFontStyle').value = oCell.className ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Fired when the user press the OK button
|
||||||
|
function Ok()
|
||||||
|
{
|
||||||
|
for( i = 0 ; i < aCells.length ; i++ )
|
||||||
|
{
|
||||||
|
if ( GetE('txtWidth').value.length > 0 )
|
||||||
|
aCells[i].width = GetE('txtWidth').value + ( GetE('selWidthType').value == 'percent' ? '%' : '') ;
|
||||||
|
else
|
||||||
|
aCells[i].removeAttribute( 'width', 0 ) ;
|
||||||
|
|
||||||
|
if ( GetE('selWordWrap').value == 'false' )
|
||||||
|
SetAttribute( aCells[i], 'noWrap', 'nowrap' ) ;
|
||||||
|
else
|
||||||
|
aCells[i].removeAttribute( 'noWrap' ) ;
|
||||||
|
|
||||||
|
SetAttribute( aCells[i], 'height' , GetE('txtHeight').value ) ;
|
||||||
|
SetAttribute( aCells[i], 'align' , GetE('selHAlign').value ) ;
|
||||||
|
SetAttribute( aCells[i], 'vAlign' , GetE('selVAlign').value ) ;
|
||||||
|
SetAttribute( aCells[i], 'rowSpan' , GetE('txtRowSpan').value ) ;
|
||||||
|
SetAttribute( aCells[i], 'colSpan' , GetE('txtCollSpan').value ) ;
|
||||||
|
SetAttribute( aCells[i], 'bgColor' , GetE('txtBackColor').value ) ;
|
||||||
|
SetAttribute( aCells[i], 'borderColor' , GetE('txtBorderColor').value ) ;
|
||||||
|
// SetAttribute( aCells[i], 'className' , GetE('cmbFontStyle').value ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true ;
|
||||||
|
}
|
||||||
|
|
||||||
|
function SelectBackColor( color )
|
||||||
|
{
|
||||||
|
if ( color && color.length > 0 )
|
||||||
|
GetE('txtBackColor').value = color ;
|
||||||
|
}
|
||||||
|
|
||||||
|
function SelectBorderColor( color )
|
||||||
|
{
|
||||||
|
if ( color && color.length > 0 )
|
||||||
|
GetE('txtBorderColor').value = color ;
|
||||||
|
}
|
||||||
|
|
||||||
|
function SelectColor( wich )
|
||||||
|
{
|
||||||
|
oEditor.FCKDialog.OpenDialog( 'FCKDialog_Color', oEditor.FCKLang.DlgColorTitle, 'dialog/fck_colorselector.html', 400, 330, wich == 'Back' ? SelectBackColor : SelectBorderColor, window ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
<body scroll="no" style="overflow: hidden">
|
||||||
|
<table cellspacing="0" cellpadding="0" width="100%" border="0" height="100%">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<table cellspacing="1" cellpadding="1" width="100%" border="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<table cellspacing="0" cellpadding="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td nowrap="nowrap">
|
||||||
|
<span fcklang="DlgCellWidth">Width</span>:</td>
|
||||||
|
<td>
|
||||||
|
<input onkeypress="return IsDigit(event);" id="txtWidth" type="text" maxlength="4"
|
||||||
|
size="3" name="txtWidth" /> <select id="selWidthType" name="selWidthType">
|
||||||
|
<option fcklang="DlgCellWidthPx" value="pixels" selected="selected">pixels</option>
|
||||||
|
<option fcklang="DlgCellWidthPc" value="percent">percent</option>
|
||||||
|
</select></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td nowrap="nowrap">
|
||||||
|
<span fcklang="DlgCellHeight">Height</span>:</td>
|
||||||
|
<td>
|
||||||
|
<input id="txtHeight" type="text" maxlength="4" size="3" name="txtHeight" onkeypress="return IsDigit(event);" /> <span
|
||||||
|
fcklang="DlgCellWidthPx">pixels</span></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td nowrap="nowrap">
|
||||||
|
<span fcklang="DlgCellWordWrap">Word Wrap</span>:</td>
|
||||||
|
<td>
|
||||||
|
<select id="selWordWrap" name="selAlignment">
|
||||||
|
<option fcklang="DlgCellWordWrapYes" value="true" selected="selected">Yes</option>
|
||||||
|
<option fcklang="DlgCellWordWrapNo" value="false">No</option>
|
||||||
|
</select></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td nowrap="nowrap">
|
||||||
|
<span fcklang="DlgCellHorAlign">Horizontal Alignment</span>:</td>
|
||||||
|
<td>
|
||||||
|
<select id="selHAlign" name="selAlignment">
|
||||||
|
<option fcklang="DlgCellHorAlignNotSet" value="" selected><Not set></option>
|
||||||
|
<option fcklang="DlgCellHorAlignLeft" value="left">Left</option>
|
||||||
|
<option fcklang="DlgCellHorAlignCenter" value="center">Center</option>
|
||||||
|
<option fcklang="DlgCellHorAlignRight" value="right">Right</option>
|
||||||
|
</select></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td nowrap="nowrap">
|
||||||
|
<span fcklang="DlgCellVerAlign">Vertical Alignment</span>:</td>
|
||||||
|
<td>
|
||||||
|
<select id="selVAlign" name="selAlignment">
|
||||||
|
<option fcklang="DlgCellVerAlignNotSet" value="" selected><Not set></option>
|
||||||
|
<option fcklang="DlgCellVerAlignTop" value="top">Top</option>
|
||||||
|
<option fcklang="DlgCellVerAlignMiddle" value="middle">Middle</option>
|
||||||
|
<option fcklang="DlgCellVerAlignBottom" value="bottom">Bottom</option>
|
||||||
|
<option fcklang="DlgCellVerAlignBaseline" value="baseline">Baseline</option>
|
||||||
|
</select></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
</td>
|
||||||
|
<td align="right">
|
||||||
|
<table cellspacing="0" cellpadding="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td nowrap="nowrap">
|
||||||
|
<span fcklang="DlgCellRowSpan">Rows Span</span>:</td>
|
||||||
|
<td>
|
||||||
|
|
||||||
|
<input onkeypress="return IsDigit(event);" id="txtRowSpan" type="text" maxlength="3" size="2"
|
||||||
|
name="txtRows"></td>
|
||||||
|
<td>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td nowrap="nowrap">
|
||||||
|
<span fcklang="DlgCellCollSpan">Columns Span</span>:</td>
|
||||||
|
<td>
|
||||||
|
|
||||||
|
<input onkeypress="return IsDigit(event);" id="txtCollSpan" type="text" maxlength="2"
|
||||||
|
size="2" name="txtColumns"></td>
|
||||||
|
<td>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td nowrap="nowrap">
|
||||||
|
<span fcklang="DlgCellBackColor">Background Color</span>:</td>
|
||||||
|
<td>
|
||||||
|
<input id="txtBackColor" type="text" size="8" name="txtCellSpacing"></td>
|
||||||
|
<td>
|
||||||
|
|
||||||
|
<input type="button" fcklang="DlgCellBtnSelect" value="Select..." onclick="SelectColor( 'Back' )"></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td nowrap="nowrap">
|
||||||
|
<span fcklang="DlgCellBorderColor">Border Color</span>:</td>
|
||||||
|
<td>
|
||||||
|
<input id="txtBorderColor" type="text" size="8" name="txtCellPadding" /></td>
|
||||||
|
<td>
|
||||||
|
|
||||||
|
<input type="button" fcklang="DlgCellBtnSelect" value="Select..." onclick="SelectColor( 'Border' )" /></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
242
htdocs/includes/fckeditor/editor/dialog/fck_template.html
Normal file
@@ -0,0 +1,242 @@
|
|||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||||
|
<!--
|
||||||
|
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
||||||
|
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
||||||
|
*
|
||||||
|
* == BEGIN LICENSE ==
|
||||||
|
*
|
||||||
|
* Licensed under the terms of any of the following licenses at your
|
||||||
|
* choice:
|
||||||
|
*
|
||||||
|
* - GNU General Public License Version 2 or later (the "GPL")
|
||||||
|
* http://www.gnu.org/licenses/gpl.html
|
||||||
|
*
|
||||||
|
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
||||||
|
* http://www.gnu.org/licenses/lgpl.html
|
||||||
|
*
|
||||||
|
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
||||||
|
* http://www.mozilla.org/MPL/MPL-1.1.html
|
||||||
|
*
|
||||||
|
* == END LICENSE ==
|
||||||
|
*
|
||||||
|
* Template selection dialog window.
|
||||||
|
-->
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<title></title>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
|
<meta name="robots" content="noindex, nofollow" />
|
||||||
|
<style type="text/css">
|
||||||
|
.TplList
|
||||||
|
{
|
||||||
|
border: #dcdcdc 2px solid;
|
||||||
|
background-color: #ffffff;
|
||||||
|
overflow: auto;
|
||||||
|
width: 90%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.TplItem
|
||||||
|
{
|
||||||
|
margin: 5px;
|
||||||
|
padding: 7px;
|
||||||
|
border: #eeeeee 1px solid;
|
||||||
|
}
|
||||||
|
|
||||||
|
.TplItem TABLE
|
||||||
|
{
|
||||||
|
display: inline;
|
||||||
|
}
|
||||||
|
|
||||||
|
.TplTitle
|
||||||
|
{
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<script src="common/fck_dialog_common.js" type="text/javascript"></script>
|
||||||
|
<script type="text/javascript">
|
||||||
|
|
||||||
|
var oEditor = window.parent.InnerDialogLoaded() ;
|
||||||
|
var FCK = oEditor.FCK ;
|
||||||
|
var FCKLang = oEditor.FCKLang ;
|
||||||
|
var FCKConfig = oEditor.FCKConfig ;
|
||||||
|
|
||||||
|
window.onload = function()
|
||||||
|
{
|
||||||
|
// Set the right box height (browser dependent).
|
||||||
|
GetE('eList').style.height = document.all ? '100%' : '295px' ;
|
||||||
|
|
||||||
|
// Translate the dialog box texts.
|
||||||
|
oEditor.FCKLanguageManager.TranslatePage(document) ;
|
||||||
|
|
||||||
|
GetE('xChkReplaceAll').checked = ( FCKConfig.TemplateReplaceAll !== false ) ;
|
||||||
|
|
||||||
|
if ( FCKConfig.TemplateReplaceCheckbox !== false )
|
||||||
|
GetE('xReplaceBlock').style.display = '' ;
|
||||||
|
|
||||||
|
window.parent.SetAutoSize( true ) ;
|
||||||
|
|
||||||
|
LoadTemplatesXml() ;
|
||||||
|
}
|
||||||
|
|
||||||
|
function LoadTemplatesXml()
|
||||||
|
{
|
||||||
|
var oTemplate ;
|
||||||
|
|
||||||
|
if ( !FCK._Templates )
|
||||||
|
{
|
||||||
|
GetE('eLoading').style.display = '' ;
|
||||||
|
|
||||||
|
// Create the Templates array.
|
||||||
|
FCK._Templates = new Array() ;
|
||||||
|
|
||||||
|
// Load the XML file.
|
||||||
|
var oXml = new oEditor.FCKXml() ;
|
||||||
|
oXml.LoadUrl( FCKConfig.TemplatesXmlPath ) ;
|
||||||
|
|
||||||
|
// Get the Images Base Path.
|
||||||
|
var oAtt = oXml.SelectSingleNode( 'Templates/@imagesBasePath' ) ;
|
||||||
|
var sImagesBasePath = oAtt ? oAtt.value : '' ;
|
||||||
|
|
||||||
|
// Get the "Template" nodes defined in the XML file.
|
||||||
|
var aTplNodes = oXml.SelectNodes( 'Templates/Template' ) ;
|
||||||
|
|
||||||
|
for ( var i = 0 ; i < aTplNodes.length ; i++ )
|
||||||
|
{
|
||||||
|
var oNode = aTplNodes[i] ;
|
||||||
|
|
||||||
|
oTemplate = new Object() ;
|
||||||
|
|
||||||
|
var oPart ;
|
||||||
|
|
||||||
|
// Get the Template Title.
|
||||||
|
if ( (oPart = oNode.attributes.getNamedItem('title')) )
|
||||||
|
oTemplate.Title = oPart.value ;
|
||||||
|
else
|
||||||
|
oTemplate.Title = 'Template ' + ( i + 1 ) ;
|
||||||
|
|
||||||
|
// Get the Template Description.
|
||||||
|
if ( (oPart = oXml.SelectSingleNode( 'Description', oNode )) )
|
||||||
|
oTemplate.Description = oPart.text ? oPart.text : oPart.textContent ;
|
||||||
|
|
||||||
|
// Get the Template Image.
|
||||||
|
if ( (oPart = oNode.attributes.getNamedItem('image')) )
|
||||||
|
oTemplate.Image = sImagesBasePath + oPart.value ;
|
||||||
|
|
||||||
|
// Get the Template HTML.
|
||||||
|
if ( (oPart = oXml.SelectSingleNode( 'Html', oNode )) )
|
||||||
|
oTemplate.Html = oPart.text ? oPart.text : oPart.textContent ;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
alert( 'No HTML defined for template index ' + i + '. Please review the "' + FCKConfig.TemplatesXmlPath + '" file.' ) ;
|
||||||
|
continue ;
|
||||||
|
}
|
||||||
|
|
||||||
|
FCK._Templates[ FCK._Templates.length ] = oTemplate ;
|
||||||
|
}
|
||||||
|
|
||||||
|
GetE('eLoading').style.display = 'none' ;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( FCK._Templates.length == 0 )
|
||||||
|
GetE('eEmpty').style.display = '' ;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
for ( var j = 0 ; j < FCK._Templates.length ; j++ )
|
||||||
|
{
|
||||||
|
oTemplate = FCK._Templates[j] ;
|
||||||
|
|
||||||
|
var oItemDiv = GetE('eList').appendChild( document.createElement( 'DIV' ) ) ;
|
||||||
|
oItemDiv.TplIndex = j ;
|
||||||
|
oItemDiv.className = 'TplItem' ;
|
||||||
|
|
||||||
|
// Build the inner HTML of our new item DIV.
|
||||||
|
var sInner = '<table><tr>' ;
|
||||||
|
|
||||||
|
if ( oTemplate.Image )
|
||||||
|
sInner += '<td valign="top"><img src="' + oTemplate.Image + '"><\/td>' ;
|
||||||
|
|
||||||
|
sInner += '<td valign="top"><div class="TplTitle">' + oTemplate.Title + '<\/div>' ;
|
||||||
|
|
||||||
|
if ( oTemplate.Description )
|
||||||
|
sInner += '<div>' + oTemplate.Description + '<\/div>' ;
|
||||||
|
|
||||||
|
sInner += '<\/td><\/tr><\/table>' ;
|
||||||
|
|
||||||
|
oItemDiv.innerHTML = sInner ;
|
||||||
|
|
||||||
|
oItemDiv.onmouseover = ItemDiv_OnMouseOver ;
|
||||||
|
oItemDiv.onmouseout = ItemDiv_OnMouseOut ;
|
||||||
|
oItemDiv.onclick = ItemDiv_OnClick ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function ItemDiv_OnMouseOver()
|
||||||
|
{
|
||||||
|
this.className += ' PopupSelectionBox' ;
|
||||||
|
}
|
||||||
|
|
||||||
|
function ItemDiv_OnMouseOut()
|
||||||
|
{
|
||||||
|
this.className = this.className.replace( /\s*PopupSelectionBox\s*/, '' ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
function ItemDiv_OnClick()
|
||||||
|
{
|
||||||
|
SelectTemplate( this.TplIndex ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
function SelectTemplate( index )
|
||||||
|
{
|
||||||
|
oEditor.FCKUndo.SaveUndoStep() ;
|
||||||
|
|
||||||
|
if ( GetE('xChkReplaceAll').checked )
|
||||||
|
FCK.SetData( FCK._Templates[index].Html ) ;
|
||||||
|
else
|
||||||
|
FCK.InsertHtml( FCK._Templates[index].Html ) ;
|
||||||
|
|
||||||
|
window.parent.Cancel( true ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
<body style="overflow: hidden">
|
||||||
|
<table width="100%" style="height: 100%">
|
||||||
|
<tr>
|
||||||
|
<td align="center">
|
||||||
|
<span fcklang="DlgTemplatesSelMsg">Please select the template to open in the editor<br />
|
||||||
|
(the actual contents will be lost):</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td height="100%" align="center">
|
||||||
|
<div id="eList" align="left" class="TplList">
|
||||||
|
<div id="eLoading" align="center" style="display: none">
|
||||||
|
<br />
|
||||||
|
<span fcklang="DlgTemplatesLoading">Loading templates list. Please wait...</span>
|
||||||
|
</div>
|
||||||
|
<div id="eEmpty" align="center" style="display: none">
|
||||||
|
<br />
|
||||||
|
<span fcklang="DlgTemplatesNoTpl">(No templates defined)</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr id="xReplaceBlock" style="display: none">
|
||||||
|
<td>
|
||||||
|
<table cellpadding="0" cellspacing="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<input id="xChkReplaceAll" type="checkbox" /></td>
|
||||||
|
<td>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<label for="xChkReplaceAll" fcklang="DlgTemplatesReplace">
|
||||||
|
Replace actual contents</label></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
After Width: | Height: | Size: 375 B |
|
After Width: | Height: | Size: 333 B |
|
After Width: | Height: | Size: 422 B |
95
htdocs/includes/fckeditor/editor/dialog/fck_textarea.html
Normal file
@@ -0,0 +1,95 @@
|
|||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
|
||||||
|
<!--
|
||||||
|
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
||||||
|
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
||||||
|
*
|
||||||
|
* == BEGIN LICENSE ==
|
||||||
|
*
|
||||||
|
* Licensed under the terms of any of the following licenses at your
|
||||||
|
* choice:
|
||||||
|
*
|
||||||
|
* - GNU General Public License Version 2 or later (the "GPL")
|
||||||
|
* http://www.gnu.org/licenses/gpl.html
|
||||||
|
*
|
||||||
|
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
||||||
|
* http://www.gnu.org/licenses/lgpl.html
|
||||||
|
*
|
||||||
|
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
||||||
|
* http://www.mozilla.org/MPL/MPL-1.1.html
|
||||||
|
*
|
||||||
|
* == END LICENSE ==
|
||||||
|
*
|
||||||
|
* Text Area dialog window.
|
||||||
|
-->
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Text Area Properties</title>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||||
|
<meta content="noindex, nofollow" name="robots">
|
||||||
|
<script src="common/fck_dialog_common.js" type="text/javascript"></script>
|
||||||
|
<script type="text/javascript">
|
||||||
|
|
||||||
|
var oEditor = window.parent.InnerDialogLoaded() ;
|
||||||
|
|
||||||
|
// Gets the document DOM
|
||||||
|
var oDOM = oEditor.FCK.EditorDocument ;
|
||||||
|
|
||||||
|
var oActiveEl = oEditor.FCKSelection.GetSelectedElement() ;
|
||||||
|
|
||||||
|
window.onload = function()
|
||||||
|
{
|
||||||
|
// First of all, translate the dialog box texts
|
||||||
|
oEditor.FCKLanguageManager.TranslatePage(document) ;
|
||||||
|
|
||||||
|
if ( oActiveEl && oActiveEl.tagName == 'TEXTAREA' )
|
||||||
|
{
|
||||||
|
GetE('txtName').value = oActiveEl.name ;
|
||||||
|
GetE('txtCols').value = GetAttribute( oActiveEl, 'cols' ) ;
|
||||||
|
GetE('txtRows').value = GetAttribute( oActiveEl, 'rows' ) ;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
oActiveEl = null ;
|
||||||
|
|
||||||
|
window.parent.SetOkButton( true ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
function Ok()
|
||||||
|
{
|
||||||
|
oEditor.FCKUndo.SaveUndoStep() ;
|
||||||
|
|
||||||
|
if ( !oActiveEl )
|
||||||
|
{
|
||||||
|
oActiveEl = oEditor.FCK.InsertElement( 'textarea' ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
oActiveEl.name = GetE('txtName').value ;
|
||||||
|
SetAttribute( oActiveEl, 'cols', GetE('txtCols').value ) ;
|
||||||
|
SetAttribute( oActiveEl, 'rows', GetE('txtRows').value ) ;
|
||||||
|
|
||||||
|
return true ;
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
<body style='OVERFLOW: hidden' 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>
|
||||||
140
htdocs/includes/fckeditor/editor/dialog/fck_textfield.html
Normal file
@@ -0,0 +1,140 @@
|
|||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
|
||||||
|
<!--
|
||||||
|
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
||||||
|
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
||||||
|
*
|
||||||
|
* == BEGIN LICENSE ==
|
||||||
|
*
|
||||||
|
* Licensed under the terms of any of the following licenses at your
|
||||||
|
* choice:
|
||||||
|
*
|
||||||
|
* - GNU General Public License Version 2 or later (the "GPL")
|
||||||
|
* http://www.gnu.org/licenses/gpl.html
|
||||||
|
*
|
||||||
|
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
||||||
|
* http://www.gnu.org/licenses/lgpl.html
|
||||||
|
*
|
||||||
|
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
||||||
|
* http://www.mozilla.org/MPL/MPL-1.1.html
|
||||||
|
*
|
||||||
|
* == END LICENSE ==
|
||||||
|
*
|
||||||
|
* Text field dialog window.
|
||||||
|
-->
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<title></title>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
|
<meta content="noindex, nofollow" name="robots" />
|
||||||
|
<script src="common/fck_dialog_common.js" type="text/javascript"></script>
|
||||||
|
<script type="text/javascript">
|
||||||
|
|
||||||
|
var oEditor = window.parent.InnerDialogLoaded() ;
|
||||||
|
|
||||||
|
// Gets the document DOM
|
||||||
|
var oDOM = oEditor.FCK.EditorDocument ;
|
||||||
|
|
||||||
|
var oActiveEl = oEditor.FCKSelection.GetSelectedElement() ;
|
||||||
|
|
||||||
|
window.onload = function()
|
||||||
|
{
|
||||||
|
// First of all, translate the dialog box texts
|
||||||
|
oEditor.FCKLanguageManager.TranslatePage(document) ;
|
||||||
|
|
||||||
|
if ( oActiveEl && oActiveEl.tagName == 'INPUT' && ( oActiveEl.type == 'text' || oActiveEl.type == 'password' ) )
|
||||||
|
{
|
||||||
|
GetE('txtName').value = oActiveEl.name ;
|
||||||
|
GetE('txtValue').value = oActiveEl.value ;
|
||||||
|
GetE('txtSize').value = GetAttribute( oActiveEl, 'size' ) ;
|
||||||
|
GetE('txtMax').value = GetAttribute( oActiveEl, 'maxLength' ) ;
|
||||||
|
GetE('txtType').value = oActiveEl.type ;
|
||||||
|
|
||||||
|
GetE('txtType').disabled = true ;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
oActiveEl = null ;
|
||||||
|
|
||||||
|
window.parent.SetOkButton( true ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
function Ok()
|
||||||
|
{
|
||||||
|
if ( isNaN( GetE('txtMax').value ) || GetE('txtMax').value < 0 )
|
||||||
|
{
|
||||||
|
alert( "Maximum characters must be a positive number." ) ;
|
||||||
|
GetE('txtMax').focus() ;
|
||||||
|
return false ;
|
||||||
|
}
|
||||||
|
else if( isNaN( GetE('txtSize').value ) || GetE('txtSize').value < 0 )
|
||||||
|
{
|
||||||
|
alert( "Width must be a positive number." ) ;
|
||||||
|
GetE('txtSize').focus() ;
|
||||||
|
return false ;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( !oActiveEl )
|
||||||
|
{
|
||||||
|
oActiveEl = oEditor.FCK.EditorDocument.createElement( 'INPUT' ) ;
|
||||||
|
oActiveEl.type = GetE('txtType').value ;
|
||||||
|
oEditor.FCKUndo.SaveUndoStep() ;
|
||||||
|
oActiveEl = oEditor.FCK.InsertElement( oActiveEl ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
oActiveEl.name = GetE('txtName').value ;
|
||||||
|
SetAttribute( oActiveEl, 'value' , GetE('txtValue').value ) ;
|
||||||
|
SetAttribute( oActiveEl, 'size' , GetE('txtSize').value ) ;
|
||||||
|
SetAttribute( oActiveEl, 'maxlength', GetE('txtMax').value ) ;
|
||||||
|
|
||||||
|
return true ;
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
<body style="overflow: hidden">
|
||||||
|
<table width="100%" style="height: 100%">
|
||||||
|
<tr>
|
||||||
|
<td align="center">
|
||||||
|
<table cellspacing="0" cellpadding="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<span fcklang="DlgTextName">Name</span><br />
|
||||||
|
<input id="txtName" type="text" size="20" />
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<span fcklang="DlgTextValue">Value</span><br />
|
||||||
|
<input id="txtValue" type="text" size="25" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<span fcklang="DlgTextCharWidth">Character Width</span><br />
|
||||||
|
<input id="txtSize" type="text" size="5" />
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<span fcklang="DlgTextMaxChars">Maximum Characters</span><br />
|
||||||
|
<input id="txtMax" type="text" size="5" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<span fcklang="DlgTextType">Type</span><br />
|
||||||
|
<select id="txtType">
|
||||||
|
<option value="text" selected="selected" fcklang="DlgTextTypeText">Text</option>
|
||||||
|
<option value="password" fcklang="DlgTextTypePass">Password</option>
|
||||||
|
</select>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
43
htdocs/includes/fckeditor/editor/dtd/fck_dtd_test.html
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<title>DTD Test Page</title>
|
||||||
|
<script type="text/javascript">
|
||||||
|
|
||||||
|
// Define an object for this test page, so the assignment to FCK.DTD works
|
||||||
|
var FCK = {} ;
|
||||||
|
</script>
|
||||||
|
<script type="text/javascript" src="../_source/internals/fcktools.js"></script>
|
||||||
|
<script type="text/javascript" src="fck_xhtml10transitional.js"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>
|
||||||
|
DTD Contents
|
||||||
|
</h1>
|
||||||
|
<table border="1">
|
||||||
|
<script type="text/javascript">
|
||||||
|
|
||||||
|
alert(FCK.DTD);
|
||||||
|
|
||||||
|
for ( var p in FCK.DTD )
|
||||||
|
{
|
||||||
|
document.write( '<tr><td><b>' + p + '</b></td><td>' ) ;
|
||||||
|
|
||||||
|
var isFirst = true ;
|
||||||
|
|
||||||
|
for ( var c in FCK.DTD[p] )
|
||||||
|
{
|
||||||
|
if ( !isFirst )
|
||||||
|
document.write( ', ' ) ;
|
||||||
|
isFirst = false ;
|
||||||
|
|
||||||
|
document.write( c ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
document.write( '</td></tr>' ) ;
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</table>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
116
htdocs/includes/fckeditor/editor/dtd/fck_xhtml10strict.js
Normal file
@@ -0,0 +1,116 @@
|
|||||||
|
/*
|
||||||
|
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
||||||
|
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
||||||
|
*
|
||||||
|
* == BEGIN LICENSE ==
|
||||||
|
*
|
||||||
|
* Licensed under the terms of any of the following licenses at your
|
||||||
|
* choice:
|
||||||
|
*
|
||||||
|
* - GNU General Public License Version 2 or later (the "GPL")
|
||||||
|
* http://www.gnu.org/licenses/gpl.html
|
||||||
|
*
|
||||||
|
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
||||||
|
* http://www.gnu.org/licenses/lgpl.html
|
||||||
|
*
|
||||||
|
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
||||||
|
* http://www.mozilla.org/MPL/MPL-1.1.html
|
||||||
|
*
|
||||||
|
* == END LICENSE ==
|
||||||
|
*
|
||||||
|
* Contains the DTD mapping for XHTML 1.0 Strict.
|
||||||
|
* This file was automatically generated from the file: xhtml10-strict.dtd
|
||||||
|
*/
|
||||||
|
FCK.DTD = (function()
|
||||||
|
{
|
||||||
|
X = FCKTools.Merge ;
|
||||||
|
|
||||||
|
var H,I,J,K,C,L,M,A,B,D,E,G,N,F ;
|
||||||
|
A = {ins:1, del:1, script:1} ;
|
||||||
|
B = {hr:1, ul:1, div:1, blockquote:1, noscript:1, table:1, address:1, pre:1, p:1, h5:1, dl:1, h4:1, ol:1, h6:1, h1:1, h3:1, h2:1} ;
|
||||||
|
C = X({fieldset:1}, B) ;
|
||||||
|
D = X({sub:1, bdo:1, 'var':1, sup:1, br:1, kbd:1, map:1, samp:1, b:1, acronym:1, '#':1, abbr:1, code:1, i:1, cite:1, tt:1, strong:1, q:1, em:1, big:1, small:1, span:1, dfn:1}, A) ;
|
||||||
|
E = X({img:1, object:1}, D) ;
|
||||||
|
F = {input:1, button:1, textarea:1, select:1, label:1} ;
|
||||||
|
G = X({a:1}, F) ;
|
||||||
|
H = {img:1, noscript:1, br:1, kbd:1, button:1, h5:1, h4:1, samp:1, h6:1, ol:1, h1:1, h3:1, h2:1, form:1, select:1, '#':1, ins:1, abbr:1, label:1, code:1, table:1, script:1, cite:1, input:1, strong:1, textarea:1, big:1, small:1, span:1, hr:1, sub:1, bdo:1, 'var':1, div:1, object:1, sup:1, map:1, dl:1, del:1, fieldset:1, ul:1, b:1, acronym:1, a:1, blockquote:1, i:1, address:1, tt:1, q:1, pre:1, p:1, em:1, dfn:1} ;
|
||||||
|
|
||||||
|
I = X({form:1, fieldset:1}, B, E, G) ;
|
||||||
|
J = {tr:1} ;
|
||||||
|
K = {'#':1} ;
|
||||||
|
L = X(E, G) ;
|
||||||
|
M = {li:1} ;
|
||||||
|
N = X({form:1}, A, C) ;
|
||||||
|
|
||||||
|
return {
|
||||||
|
col: {},
|
||||||
|
tr: {td:1, th:1},
|
||||||
|
img: {},
|
||||||
|
colgroup: {col:1},
|
||||||
|
noscript: N,
|
||||||
|
td: I,
|
||||||
|
br: {},
|
||||||
|
th: I,
|
||||||
|
kbd: L,
|
||||||
|
button: X(B, E),
|
||||||
|
h5: L,
|
||||||
|
h4: L,
|
||||||
|
samp: L,
|
||||||
|
h6: L,
|
||||||
|
ol: M,
|
||||||
|
h1: L,
|
||||||
|
h3: L,
|
||||||
|
option: K,
|
||||||
|
h2: L,
|
||||||
|
form: X(A, C),
|
||||||
|
select: {optgroup:1, option:1},
|
||||||
|
ins: I,
|
||||||
|
abbr: L,
|
||||||
|
label: L,
|
||||||
|
code: L,
|
||||||
|
table: {thead:1, col:1, tbody:1, tr:1, colgroup:1, caption:1, tfoot:1},
|
||||||
|
script: K,
|
||||||
|
tfoot: J,
|
||||||
|
cite: L,
|
||||||
|
li: I,
|
||||||
|
input: {},
|
||||||
|
strong: L,
|
||||||
|
textarea: K,
|
||||||
|
big: L,
|
||||||
|
small: L,
|
||||||
|
span: L,
|
||||||
|
dt: L,
|
||||||
|
hr: {},
|
||||||
|
sub: L,
|
||||||
|
optgroup: {option:1},
|
||||||
|
bdo: L,
|
||||||
|
param: {},
|
||||||
|
'var': L,
|
||||||
|
div: I,
|
||||||
|
object: X({param:1}, H),
|
||||||
|
sup: L,
|
||||||
|
dd: I,
|
||||||
|
area: {},
|
||||||
|
map: X({form:1, area:1}, A, C),
|
||||||
|
dl: {dt:1, dd:1},
|
||||||
|
del: I,
|
||||||
|
fieldset: X({legend:1}, H),
|
||||||
|
thead: J,
|
||||||
|
ul: M,
|
||||||
|
acronym: L,
|
||||||
|
b: L,
|
||||||
|
a: X({img:1, object:1}, D, F),
|
||||||
|
blockquote: N,
|
||||||
|
caption: L,
|
||||||
|
i: L,
|
||||||
|
tbody: J,
|
||||||
|
address: L,
|
||||||
|
tt: L,
|
||||||
|
legend: L,
|
||||||
|
q: L,
|
||||||
|
pre: X({a:1}, D, F),
|
||||||
|
p: L,
|
||||||
|
em: L,
|
||||||
|
dfn: L
|
||||||
|
} ;
|
||||||
|
})() ;
|
||||||
140
htdocs/includes/fckeditor/editor/dtd/fck_xhtml10transitional.js
Normal file
@@ -0,0 +1,140 @@
|
|||||||
|
/*
|
||||||
|
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
||||||
|
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
||||||
|
*
|
||||||
|
* == BEGIN LICENSE ==
|
||||||
|
*
|
||||||
|
* Licensed under the terms of any of the following licenses at your
|
||||||
|
* choice:
|
||||||
|
*
|
||||||
|
* - GNU General Public License Version 2 or later (the "GPL")
|
||||||
|
* http://www.gnu.org/licenses/gpl.html
|
||||||
|
*
|
||||||
|
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
||||||
|
* http://www.gnu.org/licenses/lgpl.html
|
||||||
|
*
|
||||||
|
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
||||||
|
* http://www.mozilla.org/MPL/MPL-1.1.html
|
||||||
|
*
|
||||||
|
* == END LICENSE ==
|
||||||
|
*
|
||||||
|
* Contains the DTD mapping for XHTML 1.0 Transitional.
|
||||||
|
* This file was automatically generated from the file: xhtml10-transitional.dtd
|
||||||
|
*/
|
||||||
|
FCK.DTD = (function()
|
||||||
|
{
|
||||||
|
X = FCKTools.Merge ;
|
||||||
|
|
||||||
|
var A,L,J,M,N,O,D,H,P,K,Q,F,G,C,B,E,I ;
|
||||||
|
A = {isindex:1, fieldset:1} ;
|
||||||
|
B = {input:1, button:1, select:1, textarea:1, label:1} ;
|
||||||
|
C = X({a:1}, B) ;
|
||||||
|
D = X({iframe:1}, C) ;
|
||||||
|
E = {hr:1, ul:1, menu:1, div:1, blockquote:1, noscript:1, table:1, center:1, address:1, dir:1, pre:1, h5:1, dl:1, h4:1, noframes:1, h6:1, ol:1, h1:1, h3:1, h2:1} ;
|
||||||
|
F = {ins:1, del:1, script:1} ;
|
||||||
|
G = X({b:1, acronym:1, bdo:1, 'var':1, '#':1, abbr:1, code:1, br:1, i:1, cite:1, kbd:1, u:1, strike:1, s:1, tt:1, strong:1, q:1, samp:1, em:1, dfn:1, span:1}, F) ;
|
||||||
|
H = X({sub:1, img:1, object:1, sup:1, basefont:1, map:1, applet:1, font:1, big:1, small:1}, G) ;
|
||||||
|
I = X({p:1}, H) ;
|
||||||
|
J = X({iframe:1}, H, B) ;
|
||||||
|
K = {img:1, noscript:1, br:1, kbd:1, center:1, button:1, basefont:1, h5:1, h4:1, samp:1, h6:1, ol:1, h1:1, h3:1, h2:1, form:1, font:1, '#':1, select:1, menu:1, ins:1, abbr:1, label:1, code:1, table:1, script:1, cite:1, input:1, iframe:1, strong:1, textarea:1, noframes:1, big:1, small:1, span:1, hr:1, sub:1, bdo:1, 'var':1, div:1, object:1, sup:1, strike:1, dir:1, map:1, dl:1, applet:1, del:1, isindex:1, fieldset:1, ul:1, b:1, acronym:1, a:1, blockquote:1, i:1, u:1, s:1, tt:1, address:1, q:1, pre:1, p:1, em:1, dfn:1} ;
|
||||||
|
|
||||||
|
L = X({a:1}, J) ;
|
||||||
|
M = {tr:1} ;
|
||||||
|
N = {'#':1} ;
|
||||||
|
O = X({param:1}, K) ;
|
||||||
|
P = X({form:1}, A, D, E, I) ;
|
||||||
|
Q = {li:1} ;
|
||||||
|
|
||||||
|
return {
|
||||||
|
col: {},
|
||||||
|
tr: {td:1, th:1},
|
||||||
|
img: {},
|
||||||
|
colgroup: {col:1},
|
||||||
|
noscript: P,
|
||||||
|
td: P,
|
||||||
|
br: {},
|
||||||
|
th: P,
|
||||||
|
center: P,
|
||||||
|
kbd: L,
|
||||||
|
button: X(I, E),
|
||||||
|
basefont: {},
|
||||||
|
h5: L,
|
||||||
|
h4: L,
|
||||||
|
samp: L,
|
||||||
|
h6: L,
|
||||||
|
ol: Q,
|
||||||
|
h1: L,
|
||||||
|
h3: L,
|
||||||
|
option: N,
|
||||||
|
h2: L,
|
||||||
|
form: X(A, D, E, I),
|
||||||
|
select: {optgroup:1, option:1},
|
||||||
|
font: J, // Changed from L to J (see (1))
|
||||||
|
ins: P,
|
||||||
|
menu: Q,
|
||||||
|
abbr: L,
|
||||||
|
label: L,
|
||||||
|
table: {thead:1, col:1, tbody:1, tr:1, colgroup:1, caption:1, tfoot:1},
|
||||||
|
code: L,
|
||||||
|
script: N,
|
||||||
|
tfoot: M,
|
||||||
|
cite: L,
|
||||||
|
li: P,
|
||||||
|
input: {},
|
||||||
|
iframe: P,
|
||||||
|
strong: J, // Changed from L to J (see (1))
|
||||||
|
textarea: N,
|
||||||
|
noframes: P,
|
||||||
|
big: J, // Changed from L to J (see (1))
|
||||||
|
small: J, // Changed from L to J (see (1))
|
||||||
|
span: J, // Changed from L to J (see (1))
|
||||||
|
hr: {},
|
||||||
|
dt: L,
|
||||||
|
sub: J, // Changed from L to J (see (1))
|
||||||
|
optgroup: {option:1},
|
||||||
|
param: {},
|
||||||
|
bdo: L,
|
||||||
|
'var': J, // Changed from L to J (see (1))
|
||||||
|
div: P,
|
||||||
|
object: O,
|
||||||
|
sup: J, // Changed from L to J (see (1))
|
||||||
|
dd: P,
|
||||||
|
strike: J, // Changed from L to J (see (1))
|
||||||
|
area: {},
|
||||||
|
dir: Q,
|
||||||
|
map: X({area:1, form:1, p:1}, A, F, E),
|
||||||
|
applet: O,
|
||||||
|
dl: {dt:1, dd:1},
|
||||||
|
del: P,
|
||||||
|
isindex: {},
|
||||||
|
fieldset: X({legend:1}, K),
|
||||||
|
thead: M,
|
||||||
|
ul: Q,
|
||||||
|
acronym: L,
|
||||||
|
b: J, // Changed from L to J (see (1))
|
||||||
|
a: J,
|
||||||
|
blockquote: P,
|
||||||
|
caption: L,
|
||||||
|
i: J, // Changed from L to J (see (1))
|
||||||
|
u: J, // Changed from L to J (see (1))
|
||||||
|
tbody: M,
|
||||||
|
s: L,
|
||||||
|
address: X(D, I),
|
||||||
|
tt: J, // Changed from L to J (see (1))
|
||||||
|
legend: L,
|
||||||
|
q: L,
|
||||||
|
pre: X(G, C),
|
||||||
|
p: L,
|
||||||
|
em: J, // Changed from L to J (see (1))
|
||||||
|
dfn: L
|
||||||
|
} ;
|
||||||
|
})() ;
|
||||||
|
|
||||||
|
/*
|
||||||
|
Notes:
|
||||||
|
(1) According to the DTD, many elements, like <b> accept <a> elements
|
||||||
|
inside of them. But, to produce better output results, we have manually
|
||||||
|
changed the map to avoid breaking the links on pieces, having
|
||||||
|
"<b>this is a </b><a><b>link</b> test</a>", instead of
|
||||||
|
"<b>this is a <a>link</a></b><a> test</a>".
|
||||||
|
*/
|
||||||
@@ -0,0 +1,89 @@
|
|||||||
|
/*
|
||||||
|
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
||||||
|
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
||||||
|
*
|
||||||
|
* == BEGIN LICENSE ==
|
||||||
|
*
|
||||||
|
* Licensed under the terms of any of the following licenses at your
|
||||||
|
* choice:
|
||||||
|
*
|
||||||
|
* - GNU General Public License Version 2 or later (the "GPL")
|
||||||
|
* http://www.gnu.org/licenses/gpl.html
|
||||||
|
*
|
||||||
|
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
||||||
|
* http://www.gnu.org/licenses/lgpl.html
|
||||||
|
*
|
||||||
|
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
||||||
|
* http://www.mozilla.org/MPL/MPL-1.1.html
|
||||||
|
*
|
||||||
|
* == END LICENSE ==
|
||||||
|
*
|
||||||
|
* CSS styles used by all pages that compose the File Browser.
|
||||||
|
*/
|
||||||
|
|
||||||
|
body
|
||||||
|
{
|
||||||
|
background-color: #f1f1e3;
|
||||||
|
}
|
||||||
|
|
||||||
|
form
|
||||||
|
{
|
||||||
|
margin: 0px 0px 0px 0px ;
|
||||||
|
padding: 0px 0px 0px 0px ;
|
||||||
|
}
|
||||||
|
|
||||||
|
.Frame
|
||||||
|
{
|
||||||
|
background-color: #f1f1e3;
|
||||||
|
border-color: #f1f1e3;
|
||||||
|
border-right: thin inset;
|
||||||
|
border-top: thin inset;
|
||||||
|
border-left: thin inset;
|
||||||
|
border-bottom: thin inset;
|
||||||
|
}
|
||||||
|
|
||||||
|
body.FileArea
|
||||||
|
{
|
||||||
|
|
||||||
|
background-color: #ffffff;
|
||||||
|
margin: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
body, td, input, select
|
||||||
|
{
|
||||||
|
font-size: 11px;
|
||||||
|
font-family: 'Microsoft Sans Serif' , Arial, Helvetica, Verdana;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ActualFolder
|
||||||
|
{
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.PopupButtons
|
||||||
|
{
|
||||||
|
border-top: #d5d59d 1px solid;
|
||||||
|
background-color: #e3e3c7;
|
||||||
|
padding: 7px 10px 7px 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.Button, button
|
||||||
|
{
|
||||||
|
border-right: #737357 1px solid;
|
||||||
|
border-top: #737357 1px solid;
|
||||||
|
border-left: #737357 1px solid;
|
||||||
|
color: #3b3b1f;
|
||||||
|
border-bottom: #737357 1px solid;
|
||||||
|
background-color: #c7c78f;
|
||||||
|
}
|
||||||
|
|
||||||
|
.FolderListCurrentFolder img
|
||||||
|
{
|
||||||
|
background-image: url(images/FolderOpened.gif);
|
||||||
|
}
|
||||||
|
|
||||||
|
.FolderListFolder img
|
||||||
|
{
|
||||||
|
background-image: url(images/Folder.gif);
|
||||||
|
}
|
||||||
@@ -0,0 +1,163 @@
|
|||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||||
|
<!--
|
||||||
|
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
||||||
|
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
||||||
|
*
|
||||||
|
* == BEGIN LICENSE ==
|
||||||
|
*
|
||||||
|
* Licensed under the terms of any of the following licenses at your
|
||||||
|
* choice:
|
||||||
|
*
|
||||||
|
* - GNU General Public License Version 2 or later (the "GPL")
|
||||||
|
* http://www.gnu.org/licenses/gpl.html
|
||||||
|
*
|
||||||
|
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
||||||
|
* http://www.gnu.org/licenses/lgpl.html
|
||||||
|
*
|
||||||
|
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
||||||
|
* http://www.mozilla.org/MPL/MPL-1.1.html
|
||||||
|
*
|
||||||
|
* == END LICENSE ==
|
||||||
|
*
|
||||||
|
* This page compose the File Browser dialog frameset.
|
||||||
|
-->
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>FCKeditor - Resources Browser</title>
|
||||||
|
<link href="browser.css" type="text/css" rel="stylesheet">
|
||||||
|
<script type="text/javascript" src="js/fckxml.js"></script>
|
||||||
|
<script language="javascript">
|
||||||
|
|
||||||
|
function GetUrlParam( paramName )
|
||||||
|
{
|
||||||
|
var oRegex = new RegExp( '[\?&]' + paramName + '=([^&]+)', 'i' ) ;
|
||||||
|
var oMatch = oRegex.exec( window.top.location.search ) ;
|
||||||
|
|
||||||
|
if ( oMatch && oMatch.length > 1 )
|
||||||
|
return decodeURIComponent( oMatch[1] ) ;
|
||||||
|
else
|
||||||
|
return '' ;
|
||||||
|
}
|
||||||
|
|
||||||
|
var oConnector = new Object() ;
|
||||||
|
oConnector.CurrentFolder = '/' ;
|
||||||
|
|
||||||
|
var sConnUrl = GetUrlParam( 'Connector' ) ;
|
||||||
|
|
||||||
|
// Gecko has some problems when using relative URLs (not starting with slash).
|
||||||
|
if ( sConnUrl.substr(0,1) != '/' && sConnUrl.indexOf( '://' ) < 0 )
|
||||||
|
sConnUrl = window.location.href.replace( /browser.html.*$/, '' ) + sConnUrl ;
|
||||||
|
|
||||||
|
oConnector.ConnectorUrl = sConnUrl + ( sConnUrl.indexOf('?') != -1 ? '&' : '?' ) ;
|
||||||
|
|
||||||
|
var sServerPath = GetUrlParam( 'ServerPath' ) ;
|
||||||
|
if ( sServerPath.length > 0 )
|
||||||
|
oConnector.ConnectorUrl += 'ServerPath=' + encodeURIComponent( sServerPath ) + '&' ;
|
||||||
|
|
||||||
|
oConnector.ResourceType = GetUrlParam( 'Type' ) ;
|
||||||
|
oConnector.ShowAllTypes = ( oConnector.ResourceType.length == 0 ) ;
|
||||||
|
|
||||||
|
if ( oConnector.ShowAllTypes )
|
||||||
|
oConnector.ResourceType = 'File' ;
|
||||||
|
|
||||||
|
oConnector.SendCommand = function( command, params, callBackFunction )
|
||||||
|
{
|
||||||
|
var sUrl = this.ConnectorUrl + 'Command=' + command ;
|
||||||
|
sUrl += '&Type=' + this.ResourceType ;
|
||||||
|
sUrl += '&CurrentFolder=' + encodeURIComponent( this.CurrentFolder ) ;
|
||||||
|
|
||||||
|
if ( params ) sUrl += '&' + params ;
|
||||||
|
|
||||||
|
// Add a random salt to avoid getting a cached version of the command execution
|
||||||
|
sUrl += '&uuid=' + new Date().getTime() ;
|
||||||
|
|
||||||
|
var oXML = new FCKXml() ;
|
||||||
|
|
||||||
|
if ( callBackFunction )
|
||||||
|
oXML.LoadUrl( sUrl, callBackFunction ) ; // Asynchronous load.
|
||||||
|
else
|
||||||
|
return oXML.LoadUrl( sUrl ) ;
|
||||||
|
|
||||||
|
return null ;
|
||||||
|
}
|
||||||
|
|
||||||
|
oConnector.CheckError = function( responseXml )
|
||||||
|
{
|
||||||
|
var iErrorNumber = 0 ;
|
||||||
|
var oErrorNode = responseXml.SelectSingleNode( 'Connector/Error' ) ;
|
||||||
|
|
||||||
|
if ( oErrorNode )
|
||||||
|
{
|
||||||
|
iErrorNumber = parseInt( oErrorNode.attributes.getNamedItem('number').value, 10 ) ;
|
||||||
|
|
||||||
|
switch ( iErrorNumber )
|
||||||
|
{
|
||||||
|
case 0 :
|
||||||
|
break ;
|
||||||
|
case 1 : // Custom error. Message placed in the "text" attribute.
|
||||||
|
alert( oErrorNode.attributes.getNamedItem('text').value ) ;
|
||||||
|
break ;
|
||||||
|
case 101 :
|
||||||
|
alert( 'Folder already exists' ) ;
|
||||||
|
break ;
|
||||||
|
case 102 :
|
||||||
|
alert( 'Invalid folder name' ) ;
|
||||||
|
break ;
|
||||||
|
case 103 :
|
||||||
|
alert( 'You have no permissions to create the folder' ) ;
|
||||||
|
break ;
|
||||||
|
case 110 :
|
||||||
|
alert( 'Unknown error creating folder' ) ;
|
||||||
|
break ;
|
||||||
|
default :
|
||||||
|
alert( 'Error on your request. Error number: ' + iErrorNumber ) ;
|
||||||
|
break ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return iErrorNumber ;
|
||||||
|
}
|
||||||
|
|
||||||
|
var oIcons = new Object() ;
|
||||||
|
|
||||||
|
oIcons.AvailableIconsArray = [
|
||||||
|
'ai','avi','bmp','cs','dll','doc','exe','fla','gif','htm','html','jpg','js',
|
||||||
|
'mdb','mp3','pdf','png','ppt','rdp','swf','swt','txt','vsd','xls','xml','zip' ] ;
|
||||||
|
|
||||||
|
oIcons.AvailableIcons = new Object() ;
|
||||||
|
|
||||||
|
for ( var i = 0 ; i < oIcons.AvailableIconsArray.length ; i++ )
|
||||||
|
oIcons.AvailableIcons[ oIcons.AvailableIconsArray[i] ] = true ;
|
||||||
|
|
||||||
|
oIcons.GetIcon = function( fileName )
|
||||||
|
{
|
||||||
|
var sExtension = fileName.substr( fileName.lastIndexOf('.') + 1 ).toLowerCase() ;
|
||||||
|
|
||||||
|
if ( this.AvailableIcons[ sExtension ] == true )
|
||||||
|
return sExtension ;
|
||||||
|
else
|
||||||
|
return 'default.icon' ;
|
||||||
|
}
|
||||||
|
|
||||||
|
function OnUploadCompleted( errorNumber, fileUrl, fileName, customMsg )
|
||||||
|
{
|
||||||
|
window.frames['frmUpload'].OnUploadCompleted( errorNumber, fileName ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
<frameset cols="150,*" class="Frame" framespacing="3" bordercolor="#f1f1e3" frameborder="1">
|
||||||
|
<frameset rows="50,*" framespacing="0">
|
||||||
|
<frame src="frmresourcetype.html" scrolling="no" frameborder="0">
|
||||||
|
<frame name="frmFolders" src="frmfolders.html" scrolling="auto" frameborder="1">
|
||||||
|
</frameset>
|
||||||
|
<frameset rows="50,*,50" framespacing="0">
|
||||||
|
<frame name="frmActualFolder" src="frmactualfolder.html" scrolling="no" frameborder="0">
|
||||||
|
<frame name="frmResourcesList" src="frmresourceslist.html" scrolling="auto" frameborder="1">
|
||||||
|
<frameset cols="150,*,0" framespacing="0" frameborder="0">
|
||||||
|
<frame name="frmCreateFolder" src="frmcreatefolder.html" scrolling="no" frameborder="0">
|
||||||
|
<frame name="frmUpload" src="frmupload.html" scrolling="no" frameborder="0">
|
||||||
|
<frame name="frmUploadWorker" src="javascript:void(0)" scrolling="no" frameborder="0">
|
||||||
|
</frameset>
|
||||||
|
</frameset>
|
||||||
|
</frameset>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,67 @@
|
|||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||||
|
<!--
|
||||||
|
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
||||||
|
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
||||||
|
*
|
||||||
|
* == BEGIN LICENSE ==
|
||||||
|
*
|
||||||
|
* Licensed under the terms of any of the following licenses at your
|
||||||
|
* choice:
|
||||||
|
*
|
||||||
|
* - GNU General Public License Version 2 or later (the "GPL")
|
||||||
|
* http://www.gnu.org/licenses/gpl.html
|
||||||
|
*
|
||||||
|
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
||||||
|
* http://www.gnu.org/licenses/lgpl.html
|
||||||
|
*
|
||||||
|
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
||||||
|
* http://www.mozilla.org/MPL/MPL-1.1.html
|
||||||
|
*
|
||||||
|
* == END LICENSE ==
|
||||||
|
*
|
||||||
|
* This page shows the actual folder path.
|
||||||
|
-->
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<link href="browser.css" type="text/css" rel="stylesheet">
|
||||||
|
<script type="text/javascript">
|
||||||
|
|
||||||
|
function OnResize()
|
||||||
|
{
|
||||||
|
divName.style.width = "1px" ;
|
||||||
|
divName.style.width = tdName.offsetWidth + "px" ;
|
||||||
|
}
|
||||||
|
|
||||||
|
function SetCurrentFolder( resourceType, folderPath )
|
||||||
|
{
|
||||||
|
document.getElementById('tdName').innerHTML = folderPath ;
|
||||||
|
}
|
||||||
|
|
||||||
|
window.onload = function()
|
||||||
|
{
|
||||||
|
window.top.IsLoadedActualFolder = true ;
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
<body bottomMargin="0" topMargin="0">
|
||||||
|
<table height="100%" cellSpacing="0" cellPadding="0" width="100%" border="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<button style="WIDTH: 100%" type="button">
|
||||||
|
<table cellSpacing="0" cellPadding="0" width="100%" border="0">
|
||||||
|
<tr>
|
||||||
|
<td><img height="32" alt="" src="images/FolderOpened32.gif" width="32"></td>
|
||||||
|
<td> </td>
|
||||||
|
<td id="tdName" width="100%" nowrap class="ActualFolder">/</td>
|
||||||
|
<td> </td>
|
||||||
|
<td><img height="8" src="images/ButtonArrow.gif" width="12"></td>
|
||||||
|
<td> </td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</button>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,113 @@
|
|||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||||
|
<!--
|
||||||
|
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
||||||
|
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
||||||
|
*
|
||||||
|
* == BEGIN LICENSE ==
|
||||||
|
*
|
||||||
|
* Licensed under the terms of any of the following licenses at your
|
||||||
|
* choice:
|
||||||
|
*
|
||||||
|
* - GNU General Public License Version 2 or later (the "GPL")
|
||||||
|
* http://www.gnu.org/licenses/gpl.html
|
||||||
|
*
|
||||||
|
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
||||||
|
* http://www.gnu.org/licenses/lgpl.html
|
||||||
|
*
|
||||||
|
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
||||||
|
* http://www.mozilla.org/MPL/MPL-1.1.html
|
||||||
|
*
|
||||||
|
* == END LICENSE ==
|
||||||
|
*
|
||||||
|
* Page used to create new folders in the current folder.
|
||||||
|
-->
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||||
|
<link href="browser.css" type="text/css" rel="stylesheet">
|
||||||
|
<script type="text/javascript" src="js/common.js"></script>
|
||||||
|
<script language="javascript">
|
||||||
|
|
||||||
|
function SetCurrentFolder( resourceType, folderPath )
|
||||||
|
{
|
||||||
|
oConnector.ResourceType = resourceType ;
|
||||||
|
oConnector.CurrentFolder = folderPath ;
|
||||||
|
}
|
||||||
|
|
||||||
|
function CreateFolder()
|
||||||
|
{
|
||||||
|
var sFolderName ;
|
||||||
|
|
||||||
|
while ( true )
|
||||||
|
{
|
||||||
|
sFolderName = prompt( 'Type the name of the new folder:', '' ) ;
|
||||||
|
|
||||||
|
if ( sFolderName == null )
|
||||||
|
return ;
|
||||||
|
else if ( sFolderName.length == 0 )
|
||||||
|
alert( 'Please type the folder name' ) ;
|
||||||
|
else
|
||||||
|
break ;
|
||||||
|
}
|
||||||
|
|
||||||
|
oConnector.SendCommand( 'CreateFolder', 'NewFolderName=' + encodeURIComponent( sFolderName) , CreateFolderCallBack ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
function CreateFolderCallBack( fckXml )
|
||||||
|
{
|
||||||
|
if ( oConnector.CheckError( fckXml ) == 0 )
|
||||||
|
window.parent.frames['frmResourcesList'].Refresh() ;
|
||||||
|
|
||||||
|
/*
|
||||||
|
// Get the current folder path.
|
||||||
|
var oNode = fckXml.SelectSingleNode( 'Connector/Error' ) ;
|
||||||
|
var iErrorNumber = parseInt( oNode.attributes.getNamedItem('number').value ) ;
|
||||||
|
|
||||||
|
switch ( iErrorNumber )
|
||||||
|
{
|
||||||
|
case 0 :
|
||||||
|
window.parent.frames['frmResourcesList'].Refresh() ;
|
||||||
|
break ;
|
||||||
|
case 101 :
|
||||||
|
alert( 'Folder already exists' ) ;
|
||||||
|
break ;
|
||||||
|
case 102 :
|
||||||
|
alert( 'Invalid folder name' ) ;
|
||||||
|
break ;
|
||||||
|
case 103 :
|
||||||
|
alert( 'You have no permissions to create the folder' ) ;
|
||||||
|
break ;
|
||||||
|
case 110 :
|
||||||
|
alert( 'Unknown error creating folder' ) ;
|
||||||
|
break ;
|
||||||
|
default :
|
||||||
|
alert( 'Error creating folder. Error number: ' + iErrorNumber ) ;
|
||||||
|
break ;
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
|
||||||
|
window.onload = function()
|
||||||
|
{
|
||||||
|
window.top.IsLoadedCreateFolder = true ;
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
<body bottomMargin="0" topMargin="0">
|
||||||
|
<table height="100%" cellSpacing="0" cellPadding="0" width="100%" border="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<button type="button" style="WIDTH: 100%" onclick="CreateFolder();">
|
||||||
|
<table cellSpacing="0" cellPadding="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td><img height="16" alt="" src="images/Folder.gif" width="16"></td>
|
||||||
|
<td> </td>
|
||||||
|
<td nowrap>Create New Folder</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</button>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,196 @@
|
|||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||||
|
<!--
|
||||||
|
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
||||||
|
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
||||||
|
*
|
||||||
|
* == BEGIN LICENSE ==
|
||||||
|
*
|
||||||
|
* Licensed under the terms of any of the following licenses at your
|
||||||
|
* choice:
|
||||||
|
*
|
||||||
|
* - GNU General Public License Version 2 or later (the "GPL")
|
||||||
|
* http://www.gnu.org/licenses/gpl.html
|
||||||
|
*
|
||||||
|
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
||||||
|
* http://www.gnu.org/licenses/lgpl.html
|
||||||
|
*
|
||||||
|
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
||||||
|
* http://www.mozilla.org/MPL/MPL-1.1.html
|
||||||
|
*
|
||||||
|
* == END LICENSE ==
|
||||||
|
*
|
||||||
|
* This page shows the list of folders available in the parent folder
|
||||||
|
* of the current folder.
|
||||||
|
-->
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<link href="browser.css" type="text/css" rel="stylesheet">
|
||||||
|
<script type="text/javascript" src="js/common.js"></script>
|
||||||
|
<script language="javascript">
|
||||||
|
|
||||||
|
var sActiveFolder ;
|
||||||
|
|
||||||
|
var bIsLoaded = false ;
|
||||||
|
var iIntervalId ;
|
||||||
|
|
||||||
|
var oListManager = new Object() ;
|
||||||
|
|
||||||
|
oListManager.Init = function()
|
||||||
|
{
|
||||||
|
this.Table = document.getElementById('tableFiles') ;
|
||||||
|
this.UpRow = document.getElementById('trUp') ;
|
||||||
|
|
||||||
|
this.TableRows = new Object() ;
|
||||||
|
}
|
||||||
|
|
||||||
|
oListManager.Clear = function()
|
||||||
|
{
|
||||||
|
// Remove all other rows available.
|
||||||
|
while ( this.Table.rows.length > 1 )
|
||||||
|
this.Table.deleteRow(1) ;
|
||||||
|
|
||||||
|
// Reset the TableRows collection.
|
||||||
|
this.TableRows = new Object() ;
|
||||||
|
}
|
||||||
|
|
||||||
|
oListManager.AddItem = function( folderName, folderPath )
|
||||||
|
{
|
||||||
|
// Create the new row.
|
||||||
|
var oRow = this.Table.insertRow(-1) ;
|
||||||
|
oRow.className = 'FolderListFolder' ;
|
||||||
|
|
||||||
|
// Build the link to view the folder.
|
||||||
|
var sLink = '<a href="#" onclick="OpenFolder(\'' + folderPath + '\');return false;">' ;
|
||||||
|
|
||||||
|
// Add the folder icon cell.
|
||||||
|
var oCell = oRow.insertCell(-1) ;
|
||||||
|
oCell.width = 16 ;
|
||||||
|
oCell.innerHTML = sLink + '<img alt="" src="images/spacer.gif" width="16" height="16" border="0"></a>' ;
|
||||||
|
|
||||||
|
// Add the folder name cell.
|
||||||
|
oCell = oRow.insertCell(-1) ;
|
||||||
|
oCell.noWrap = true ;
|
||||||
|
oCell.innerHTML = ' ' + sLink + folderName + '</a>' ;
|
||||||
|
|
||||||
|
this.TableRows[ folderPath ] = oRow ;
|
||||||
|
}
|
||||||
|
|
||||||
|
oListManager.ShowUpFolder = function( upFolderPath )
|
||||||
|
{
|
||||||
|
this.UpRow.style.display = ( upFolderPath != null ? '' : 'none' ) ;
|
||||||
|
|
||||||
|
if ( upFolderPath != null )
|
||||||
|
{
|
||||||
|
document.getElementById('linkUpIcon').onclick = document.getElementById('linkUp').onclick = function()
|
||||||
|
{
|
||||||
|
LoadFolders( upFolderPath ) ;
|
||||||
|
return false ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function CheckLoaded()
|
||||||
|
{
|
||||||
|
if ( window.top.IsLoadedActualFolder
|
||||||
|
&& window.top.IsLoadedCreateFolder
|
||||||
|
&& window.top.IsLoadedUpload
|
||||||
|
&& window.top.IsLoadedResourcesList )
|
||||||
|
{
|
||||||
|
window.clearInterval( iIntervalId ) ;
|
||||||
|
bIsLoaded = true ;
|
||||||
|
OpenFolder( sActiveFolder ) ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function OpenFolder( folderPath )
|
||||||
|
{
|
||||||
|
sActiveFolder = folderPath ;
|
||||||
|
|
||||||
|
if ( ! bIsLoaded )
|
||||||
|
{
|
||||||
|
if ( ! iIntervalId )
|
||||||
|
iIntervalId = window.setInterval( CheckLoaded, 100 ) ;
|
||||||
|
return ;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Change the style for the select row (to show the opened folder).
|
||||||
|
for ( var sFolderPath in oListManager.TableRows )
|
||||||
|
{
|
||||||
|
oListManager.TableRows[ sFolderPath ].className =
|
||||||
|
( sFolderPath == folderPath ? 'FolderListCurrentFolder' : 'FolderListFolder' ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Set the current folder in all frames.
|
||||||
|
window.parent.frames['frmActualFolder'].SetCurrentFolder( oConnector.ResourceType, folderPath ) ;
|
||||||
|
window.parent.frames['frmCreateFolder'].SetCurrentFolder( oConnector.ResourceType, folderPath ) ;
|
||||||
|
window.parent.frames['frmUpload'].SetCurrentFolder( oConnector.ResourceType, folderPath ) ;
|
||||||
|
|
||||||
|
// Load the resources list for this folder.
|
||||||
|
window.parent.frames['frmResourcesList'].LoadResources( oConnector.ResourceType, folderPath ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
function LoadFolders( folderPath )
|
||||||
|
{
|
||||||
|
// Clear the folders list.
|
||||||
|
oListManager.Clear() ;
|
||||||
|
|
||||||
|
// Get the parent folder path.
|
||||||
|
var sParentFolderPath ;
|
||||||
|
if ( folderPath != '/' )
|
||||||
|
sParentFolderPath = folderPath.substring( 0, folderPath.lastIndexOf( '/', folderPath.length - 2 ) + 1 ) ;
|
||||||
|
|
||||||
|
// Show/Hide the Up Folder.
|
||||||
|
oListManager.ShowUpFolder( sParentFolderPath ) ;
|
||||||
|
|
||||||
|
if ( folderPath != '/' )
|
||||||
|
{
|
||||||
|
sActiveFolder = folderPath ;
|
||||||
|
oConnector.CurrentFolder = sParentFolderPath ;
|
||||||
|
oConnector.SendCommand( 'GetFolders', null, GetFoldersCallBack ) ;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
OpenFolder( '/' ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
function GetFoldersCallBack( fckXml )
|
||||||
|
{
|
||||||
|
if ( oConnector.CheckError( fckXml ) != 0 )
|
||||||
|
return ;
|
||||||
|
|
||||||
|
// Get the current folder path.
|
||||||
|
var oNode = fckXml.SelectSingleNode( 'Connector/CurrentFolder' ) ;
|
||||||
|
var sCurrentFolderPath = oNode.attributes.getNamedItem('path').value ;
|
||||||
|
|
||||||
|
var oNodes = fckXml.SelectNodes( 'Connector/Folders/Folder' ) ;
|
||||||
|
|
||||||
|
for ( var i = 0 ; i < oNodes.length ; i++ )
|
||||||
|
{
|
||||||
|
var sFolderName = oNodes[i].attributes.getNamedItem('name').value ;
|
||||||
|
oListManager.AddItem( sFolderName, sCurrentFolderPath + sFolderName + '/' ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
OpenFolder( sActiveFolder ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
function SetResourceType( type )
|
||||||
|
{
|
||||||
|
oConnector.ResourceType = type ;
|
||||||
|
LoadFolders( '/' ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
window.onload = function()
|
||||||
|
{
|
||||||
|
oListManager.Init() ;
|
||||||
|
LoadFolders( '/' ) ;
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
<body class="FileArea" bottomMargin="10" leftMargin="10" topMargin="10" rightMargin="10">
|
||||||
|
<table id="tableFiles" cellSpacing="0" cellPadding="0" width="100%" border="0">
|
||||||
|
<tr id="trUp" style="DISPLAY: none">
|
||||||
|
<td width="16"><a id="linkUpIcon" href="#"><img alt="" src="images/FolderUp.gif" width="16" height="16" border="0"></a></td>
|
||||||
|
<td nowrap width="100%"> <a id="linkUp" href="#">..</a></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,167 @@
|
|||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||||
|
<!--
|
||||||
|
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
||||||
|
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
||||||
|
*
|
||||||
|
* == BEGIN LICENSE ==
|
||||||
|
*
|
||||||
|
* Licensed under the terms of any of the following licenses at your
|
||||||
|
* choice:
|
||||||
|
*
|
||||||
|
* - GNU General Public License Version 2 or later (the "GPL")
|
||||||
|
* http://www.gnu.org/licenses/gpl.html
|
||||||
|
*
|
||||||
|
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
||||||
|
* http://www.gnu.org/licenses/lgpl.html
|
||||||
|
*
|
||||||
|
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
||||||
|
* http://www.mozilla.org/MPL/MPL-1.1.html
|
||||||
|
*
|
||||||
|
* == END LICENSE ==
|
||||||
|
*
|
||||||
|
* This page shows all resources available in a folder in the File Browser.
|
||||||
|
-->
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<link href="browser.css" type="text/css" rel="stylesheet" />
|
||||||
|
<script type="text/javascript" src="js/common.js"></script>
|
||||||
|
<script type="text/javascript">
|
||||||
|
|
||||||
|
var oListManager = new Object() ;
|
||||||
|
|
||||||
|
oListManager.Clear = function()
|
||||||
|
{
|
||||||
|
document.body.innerHTML = '' ;
|
||||||
|
}
|
||||||
|
|
||||||
|
function ProtectPath(path)
|
||||||
|
{
|
||||||
|
path = path.replace( /\\/g, '\\\\') ;
|
||||||
|
path = path.replace( /'/g, '\\\'') ;
|
||||||
|
return path ;
|
||||||
|
}
|
||||||
|
|
||||||
|
oListManager.GetFolderRowHtml = function( folderName, folderPath )
|
||||||
|
{
|
||||||
|
// Build the link to view the folder.
|
||||||
|
var sLink = '<a href="#" onclick="OpenFolder(\'' + ProtectPath( folderPath ) + '\');return false;">' ;
|
||||||
|
|
||||||
|
return '<tr>' +
|
||||||
|
'<td width="16">' +
|
||||||
|
sLink +
|
||||||
|
'<img alt="" src="images/Folder.gif" width="16" height="16" border="0"><\/a>' +
|
||||||
|
'<\/td><td nowrap colspan="2"> ' +
|
||||||
|
sLink +
|
||||||
|
folderName +
|
||||||
|
'<\/a>' +
|
||||||
|
'<\/td><\/tr>' ;
|
||||||
|
}
|
||||||
|
|
||||||
|
oListManager.GetFileRowHtml = function( fileName, fileUrl, fileSize )
|
||||||
|
{
|
||||||
|
// Build the link to view the folder.
|
||||||
|
var sLink = '<a href="#" onclick="OpenFile(\'' + ProtectPath( fileUrl ) + '\');return false;">' ;
|
||||||
|
|
||||||
|
// Get the file icon.
|
||||||
|
var sIcon = oIcons.GetIcon( fileName ) ;
|
||||||
|
|
||||||
|
return '<tr>' +
|
||||||
|
'<td width="16">' +
|
||||||
|
sLink +
|
||||||
|
'<img alt="" src="images/icons/' + sIcon + '.gif" width="16" height="16" border="0"><\/a>' +
|
||||||
|
'<\/td><td> ' +
|
||||||
|
sLink +
|
||||||
|
fileName +
|
||||||
|
'<\/a>' +
|
||||||
|
'<\/td><td align="right" nowrap> ' +
|
||||||
|
fileSize +
|
||||||
|
' KB' +
|
||||||
|
'<\/td><\/tr>' ;
|
||||||
|
}
|
||||||
|
|
||||||
|
function OpenFolder( folderPath )
|
||||||
|
{
|
||||||
|
// Load the resources list for this folder.
|
||||||
|
window.parent.frames['frmFolders'].LoadFolders( folderPath ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
function OpenFile( fileUrl )
|
||||||
|
{
|
||||||
|
window.top.opener.SetUrl( encodeURI( fileUrl ) ) ;
|
||||||
|
window.top.close() ;
|
||||||
|
window.top.opener.focus() ;
|
||||||
|
}
|
||||||
|
|
||||||
|
function LoadResources( resourceType, folderPath )
|
||||||
|
{
|
||||||
|
oListManager.Clear() ;
|
||||||
|
oConnector.ResourceType = resourceType ;
|
||||||
|
oConnector.CurrentFolder = folderPath ;
|
||||||
|
oConnector.SendCommand( 'GetFoldersAndFiles', null, GetFoldersAndFilesCallBack ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
function Refresh()
|
||||||
|
{
|
||||||
|
LoadResources( oConnector.ResourceType, oConnector.CurrentFolder ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
function GetFoldersAndFilesCallBack( fckXml )
|
||||||
|
{
|
||||||
|
if ( oConnector.CheckError( fckXml ) != 0 )
|
||||||
|
return ;
|
||||||
|
|
||||||
|
// Get the current folder path.
|
||||||
|
var oFolderNode = fckXml.SelectSingleNode( 'Connector/CurrentFolder' ) ;
|
||||||
|
if ( oFolderNode == null )
|
||||||
|
{
|
||||||
|
alert( 'The server didn\'t reply with a proper XML data. Please check your configuration.' ) ;
|
||||||
|
return ;
|
||||||
|
}
|
||||||
|
var sCurrentFolderPath = oFolderNode.attributes.getNamedItem('path').value ;
|
||||||
|
var sCurrentFolderUrl = oFolderNode.attributes.getNamedItem('url').value ;
|
||||||
|
|
||||||
|
// var dTimer = new Date() ;
|
||||||
|
|
||||||
|
var oHtml = new StringBuilder( '<table id="tableFiles" cellspacing="1" cellpadding="0" width="100%" border="0">' ) ;
|
||||||
|
|
||||||
|
// Add the Folders.
|
||||||
|
var oNodes ;
|
||||||
|
oNodes = fckXml.SelectNodes( 'Connector/Folders/Folder' ) ;
|
||||||
|
for ( var i = 0 ; i < oNodes.length ; i++ )
|
||||||
|
{
|
||||||
|
var sFolderName = oNodes[i].attributes.getNamedItem('name').value ;
|
||||||
|
oHtml.Append( oListManager.GetFolderRowHtml( sFolderName, sCurrentFolderPath + sFolderName + "/" ) ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add the Files.
|
||||||
|
oNodes = fckXml.SelectNodes( 'Connector/Files/File' ) ;
|
||||||
|
for ( var j = 0 ; j < oNodes.length ; j++ )
|
||||||
|
{
|
||||||
|
var oNode = oNodes[j] ;
|
||||||
|
var sFileName = oNode.attributes.getNamedItem('name').value ;
|
||||||
|
var sFileSize = oNode.attributes.getNamedItem('size').value ;
|
||||||
|
|
||||||
|
// Get the optional "url" attribute. If not available, build the url.
|
||||||
|
var oFileUrlAtt = oNodes[j].attributes.getNamedItem('url') ;
|
||||||
|
var sFileUrl = oFileUrlAtt != null ? oFileUrlAtt.value : sCurrentFolderUrl + sFileName ;
|
||||||
|
|
||||||
|
oHtml.Append( oListManager.GetFileRowHtml( sFileName, sFileUrl, sFileSize ) ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
oHtml.Append( '<\/table>' ) ;
|
||||||
|
|
||||||
|
document.body.innerHTML = oHtml.ToString() ;
|
||||||
|
|
||||||
|
// window.top.document.title = 'Finished processing in ' + ( ( ( new Date() ) - dTimer ) / 1000 ) + ' seconds' ;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
window.onload = function()
|
||||||
|
{
|
||||||
|
window.top.IsLoadedResourcesList = true ;
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
<body class="FileArea">
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,65 @@
|
|||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||||
|
<!--
|
||||||
|
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
||||||
|
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
||||||
|
*
|
||||||
|
* == BEGIN LICENSE ==
|
||||||
|
*
|
||||||
|
* Licensed under the terms of any of the following licenses at your
|
||||||
|
* choice:
|
||||||
|
*
|
||||||
|
* - GNU General Public License Version 2 or later (the "GPL")
|
||||||
|
* http://www.gnu.org/licenses/gpl.html
|
||||||
|
*
|
||||||
|
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
||||||
|
* http://www.gnu.org/licenses/lgpl.html
|
||||||
|
*
|
||||||
|
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
||||||
|
* http://www.mozilla.org/MPL/MPL-1.1.html
|
||||||
|
*
|
||||||
|
* == END LICENSE ==
|
||||||
|
*
|
||||||
|
* This page shows the list of available resource types.
|
||||||
|
-->
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||||
|
<link href="browser.css" type="text/css" rel="stylesheet">
|
||||||
|
<script type="text/javascript" src="js/common.js"></script>
|
||||||
|
<script language="javascript">
|
||||||
|
|
||||||
|
function SetResourceType( type )
|
||||||
|
{
|
||||||
|
window.parent.frames["frmFolders"].SetResourceType( type ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
var aTypes = [
|
||||||
|
['File','File'],
|
||||||
|
['Image','Image'],
|
||||||
|
['Flash','Flash'],
|
||||||
|
['Media','Media']
|
||||||
|
] ;
|
||||||
|
|
||||||
|
window.onload = function()
|
||||||
|
{
|
||||||
|
for ( var i = 0 ; i < aTypes.length ; i++ )
|
||||||
|
{
|
||||||
|
if ( oConnector.ShowAllTypes || aTypes[i][0] == oConnector.ResourceType )
|
||||||
|
AddSelectOption( document.getElementById('cmbType'), aTypes[i][1], aTypes[i][0] ) ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
<body bottomMargin="0" topMargin="0">
|
||||||
|
<table height="100%" cellSpacing="0" cellPadding="0" width="100%" border="0">
|
||||||
|
<tr>
|
||||||
|
<td nowrap>
|
||||||
|
Resource Type<BR>
|
||||||
|
<select id="cmbType" style="WIDTH: 100%" onchange="SetResourceType(this.value);">
|
||||||
|
</select>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,114 @@
|
|||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||||
|
<!--
|
||||||
|
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
||||||
|
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
||||||
|
*
|
||||||
|
* == BEGIN LICENSE ==
|
||||||
|
*
|
||||||
|
* Licensed under the terms of any of the following licenses at your
|
||||||
|
* choice:
|
||||||
|
*
|
||||||
|
* - GNU General Public License Version 2 or later (the "GPL")
|
||||||
|
* http://www.gnu.org/licenses/gpl.html
|
||||||
|
*
|
||||||
|
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
||||||
|
* http://www.gnu.org/licenses/lgpl.html
|
||||||
|
*
|
||||||
|
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
||||||
|
* http://www.mozilla.org/MPL/MPL-1.1.html
|
||||||
|
*
|
||||||
|
* == END LICENSE ==
|
||||||
|
*
|
||||||
|
* Page used to upload new files in the current folder.
|
||||||
|
-->
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<title>File Upload</title>
|
||||||
|
<link href="browser.css" type="text/css" rel="stylesheet" />
|
||||||
|
<script type="text/javascript" src="js/common.js"></script>
|
||||||
|
<script type="text/javascript">
|
||||||
|
|
||||||
|
function SetCurrentFolder( resourceType, folderPath )
|
||||||
|
{
|
||||||
|
var sUrl = oConnector.ConnectorUrl + 'Command=FileUpload' ;
|
||||||
|
sUrl += '&Type=' + resourceType ;
|
||||||
|
sUrl += '&CurrentFolder=' + encodeURIComponent( folderPath ) ;
|
||||||
|
|
||||||
|
document.getElementById('frmUpload').action = sUrl ;
|
||||||
|
}
|
||||||
|
|
||||||
|
function OnSubmit()
|
||||||
|
{
|
||||||
|
if ( document.getElementById('NewFile').value.length == 0 )
|
||||||
|
{
|
||||||
|
alert( 'Please select a file from your computer' ) ;
|
||||||
|
return false ;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Set the interface elements.
|
||||||
|
document.getElementById('eUploadMessage').innerHTML = 'Upload a new file in this folder (Upload in progress, please wait...)' ;
|
||||||
|
document.getElementById('btnUpload').disabled = true ;
|
||||||
|
|
||||||
|
return true ;
|
||||||
|
}
|
||||||
|
|
||||||
|
function OnUploadCompleted( errorNumber, data )
|
||||||
|
{
|
||||||
|
// Reset the Upload Worker Frame.
|
||||||
|
window.parent.frames['frmUploadWorker'].location = 'javascript:void(0)' ;
|
||||||
|
|
||||||
|
// Reset the upload form (On IE we must do a little trick to avoid problems).
|
||||||
|
if ( document.all )
|
||||||
|
document.getElementById('NewFile').outerHTML = '<input id="NewFile" name="NewFile" style="WIDTH: 100%" type="file">' ;
|
||||||
|
else
|
||||||
|
document.getElementById('frmUpload').reset() ;
|
||||||
|
|
||||||
|
// Reset the interface elements.
|
||||||
|
document.getElementById('eUploadMessage').innerHTML = 'Upload a new file in this folder' ;
|
||||||
|
document.getElementById('btnUpload').disabled = false ;
|
||||||
|
|
||||||
|
switch ( errorNumber )
|
||||||
|
{
|
||||||
|
case 0 :
|
||||||
|
window.parent.frames['frmResourcesList'].Refresh() ;
|
||||||
|
break ;
|
||||||
|
case 1 : // Custom error.
|
||||||
|
alert( data ) ;
|
||||||
|
break ;
|
||||||
|
case 201 :
|
||||||
|
window.parent.frames['frmResourcesList'].Refresh() ;
|
||||||
|
alert( 'A file with the same name is already available. The uploaded file has been renamed to "' + data + '"' ) ;
|
||||||
|
break ;
|
||||||
|
case 202 :
|
||||||
|
alert( 'Invalid file' ) ;
|
||||||
|
break ;
|
||||||
|
default :
|
||||||
|
alert( 'Error on file upload. Error number: ' + errorNumber ) ;
|
||||||
|
break ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
window.onload = function()
|
||||||
|
{
|
||||||
|
window.top.IsLoadedUpload = true ;
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
<body bottommargin="0" topmargin="0">
|
||||||
|
<form id="frmUpload" action="" target="frmUploadWorker" method="post" enctype="multipart/form-data" onsubmit="return OnSubmit();">
|
||||||
|
<table height="100%" cellspacing="0" cellpadding="0" width="100%" border="0">
|
||||||
|
<tr>
|
||||||
|
<td nowrap="nowrap">
|
||||||
|
<span id="eUploadMessage">Upload a new file in this folder</span><br>
|
||||||
|
<table cellspacing="0" cellpadding="0" width="100%" border="0">
|
||||||
|
<tr>
|
||||||
|
<td width="100%"><input id="NewFile" name="NewFile" style="WIDTH: 100%" type="file"></td>
|
||||||
|
<td nowrap="nowrap"> <input id="btnUpload" type="submit" value="Upload"></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</form>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
After Width: | Height: | Size: 138 B |
|
After Width: | Height: | Size: 128 B |
|
After Width: | Height: | Size: 281 B |
|
After Width: | Height: | Size: 132 B |
|
After Width: | Height: | Size: 264 B |
|
After Width: | Height: | Size: 132 B |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 454 B |
|
After Width: | Height: | Size: 709 B |
|
After Width: | Height: | Size: 224 B |
|
After Width: | Height: | Size: 177 B |
|
After Width: | Height: | Size: 258 B |
|
After Width: | Height: | Size: 260 B |
|
After Width: | Height: | Size: 170 B |