Mise jour de fckeditor la version 2.5beta - rinstallation complte car la structure des rpertoires change
@@ -1,15 +0,0 @@
|
|||||||
<public:component lightweight="true">
|
|
||||||
|
|
||||||
<script language="javascript">
|
|
||||||
|
|
||||||
function CancelEvent()
|
|
||||||
{
|
|
||||||
return false ;
|
|
||||||
}
|
|
||||||
|
|
||||||
this.onresizestart = CancelEvent ;
|
|
||||||
this.onbeforeeditfocus = CancelEvent ;
|
|
||||||
|
|
||||||
</script>
|
|
||||||
|
|
||||||
</public:component>
|
|
||||||
|
Before Width: | Height: | Size: 111 B |
@@ -1,30 +0,0 @@
|
|||||||
<public:component lightweight="true">
|
|
||||||
|
|
||||||
<public:attach event="oncontentready" onevent="ShowField()" />
|
|
||||||
<public:attach event="ondoubleclick" onevent="EditField()" />
|
|
||||||
|
|
||||||
<script language="javascript">
|
|
||||||
|
|
||||||
var bIsHiddenField = this.type == 'hidden' ;
|
|
||||||
|
|
||||||
function ShowField()
|
|
||||||
{
|
|
||||||
if ( bIsHiddenField )
|
|
||||||
{
|
|
||||||
this.runtimeStyle.width = '20px' ;
|
|
||||||
this.runtimeStyle.height = '20px' ;
|
|
||||||
this.runtimeStyle.border = '1px dotted #FF0000' ;
|
|
||||||
this.runtimeStyle.backgroundImage = 'url(css/behaviors/hiddenfield.gif)' ;
|
|
||||||
this.runtimeStyle.fontSize = '99px' ;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function EditField()
|
|
||||||
{
|
|
||||||
if ( bIsHiddenField )
|
|
||||||
alert( this.outerHTML ) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
</script>
|
|
||||||
|
|
||||||
</public:component>
|
|
||||||
@@ -1,36 +0,0 @@
|
|||||||
<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>
|
|
||||||
@@ -1,96 +0,0 @@
|
|||||||
/*
|
|
||||||
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
|
||||||
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
|
||||||
*
|
|
||||||
* == BEGIN LICENSE ==
|
|
||||||
*
|
|
||||||
* Licensed under the terms of any of the following licenses at your
|
|
||||||
* choice:
|
|
||||||
*
|
|
||||||
* - GNU General Public License Version 2 or later (the "GPL")
|
|
||||||
* http://www.gnu.org/licenses/gpl.html
|
|
||||||
*
|
|
||||||
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
|
||||||
* http://www.gnu.org/licenses/lgpl.html
|
|
||||||
*
|
|
||||||
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
|
||||||
* http://www.mozilla.org/MPL/MPL-1.1.html
|
|
||||||
*
|
|
||||||
* == END LICENSE ==
|
|
||||||
*
|
|
||||||
* File Name: fck_editorarea.css
|
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* File Authors:
|
|
||||||
* Frederico Caldeira Knabben (www.fckeditor.net)
|
|
||||||
* Alfonso Martinez de Lizarrondo - Uritec (alfonso at uritec dot net)
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
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: #0000FF !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;
|
|
||||||
}
|
|
||||||
@@ -1,121 +0,0 @@
|
|||||||
/*
|
|
||||||
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
|
||||||
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
|
||||||
*
|
|
||||||
* == BEGIN LICENSE ==
|
|
||||||
*
|
|
||||||
* Licensed under the terms of any of the following licenses at your
|
|
||||||
* choice:
|
|
||||||
*
|
|
||||||
* - GNU General Public License Version 2 or later (the "GPL")
|
|
||||||
* http://www.gnu.org/licenses/gpl.html
|
|
||||||
*
|
|
||||||
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
|
||||||
* http://www.gnu.org/licenses/lgpl.html
|
|
||||||
*
|
|
||||||
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
|
||||||
* http://www.mozilla.org/MPL/MPL-1.1.html
|
|
||||||
*
|
|
||||||
* == END LICENSE ==
|
|
||||||
*
|
|
||||||
* File Name: fck_internal.css
|
|
||||||
* This CSS Style Sheet defines rules used by the editor for its internal use.
|
|
||||||
*
|
|
||||||
* File Authors:
|
|
||||||
* Frederico Caldeira Knabben (www.fckeditor.net)
|
|
||||||
* Alfonso Martinez de Lizarrondo - Uritec (alfonso at uritec dot net)
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* 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: darkgray 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: 1 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;
|
|
||||||
}
|
|
||||||
|
|
||||||
input[type="hidden"]
|
|
||||||
{
|
|
||||||
display: inline;
|
|
||||||
width:20px;
|
|
||||||
height:20px;
|
|
||||||
border:1px dotted #FF0000 ;
|
|
||||||
background-image: url(behaviors/hiddenfield.gif);
|
|
||||||
background-repeat: no-repeat;
|
|
||||||
}
|
|
||||||
|
|
||||||
input[type="hidden"]:after
|
|
||||||
{
|
|
||||||
padding-left: 20px;
|
|
||||||
content: "" ;
|
|
||||||
}
|
|
||||||
@@ -1,46 +0,0 @@
|
|||||||
/*
|
|
||||||
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
|
||||||
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
|
||||||
*
|
|
||||||
* == BEGIN LICENSE ==
|
|
||||||
*
|
|
||||||
* Licensed under the terms of any of the following licenses at your
|
|
||||||
* choice:
|
|
||||||
*
|
|
||||||
* - GNU General Public License Version 2 or later (the "GPL")
|
|
||||||
* http://www.gnu.org/licenses/gpl.html
|
|
||||||
*
|
|
||||||
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
|
||||||
* http://www.gnu.org/licenses/lgpl.html
|
|
||||||
*
|
|
||||||
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
|
||||||
* http://www.mozilla.org/MPL/MPL-1.1.html
|
|
||||||
*
|
|
||||||
* == END LICENSE ==
|
|
||||||
*
|
|
||||||
* File Name: fck_showtableborders_gecko.css
|
|
||||||
* This CSS Style Sheet defines the rules to show table borders on Gecko.
|
|
||||||
*
|
|
||||||
* File Authors:
|
|
||||||
* Frederico Caldeira Knabben (www.fckeditor.net)
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* 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 ;
|
|
||||||
}
|
|
||||||
|
Before Width: | Height: | Size: 288 B |
|
Before Width: | Height: | Size: 293 B |
|
Before Width: | Height: | Size: 229 B |
|
Before Width: | Height: | Size: 218 B |
|
Before Width: | Height: | Size: 220 B |
|
Before Width: | Height: | Size: 219 B |
|
Before Width: | Height: | Size: 229 B |
|
Before Width: | Height: | Size: 236 B |
|
Before Width: | Height: | Size: 216 B |
|
Before Width: | Height: | Size: 205 B |
|
Before Width: | Height: | Size: 223 B |
|
Before Width: | Height: | Size: 184 B |
|
Before Width: | Height: | Size: 599 B |
|
Before Width: | Height: | Size: 105 B |
|
Before Width: | Height: | Size: 54 B |
@@ -1,87 +0,0 @@
|
|||||||
/*
|
|
||||||
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
|
||||||
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
|
||||||
*
|
|
||||||
* == BEGIN LICENSE ==
|
|
||||||
*
|
|
||||||
* Licensed under the terms of any of the following licenses at your
|
|
||||||
* choice:
|
|
||||||
*
|
|
||||||
* - GNU General Public License Version 2 or later (the "GPL")
|
|
||||||
* http://www.gnu.org/licenses/gpl.html
|
|
||||||
*
|
|
||||||
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
|
||||||
* http://www.gnu.org/licenses/lgpl.html
|
|
||||||
*
|
|
||||||
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
|
||||||
* http://www.mozilla.org/MPL/MPL-1.1.html
|
|
||||||
*
|
|
||||||
* == END LICENSE ==
|
|
||||||
*
|
|
||||||
* File Name: fck_dialog_common.css
|
|
||||||
* This is the CSS file used for interface details in some dialog
|
|
||||||
* windows.
|
|
||||||
*
|
|
||||||
* File Authors:
|
|
||||||
* Frederico Caldeira Knabben (www.fckeditor.net)
|
|
||||||
*/
|
|
||||||
|
|
||||||
.ImagePreviewArea
|
|
||||||
{
|
|
||||||
border: #000000 1px solid;
|
|
||||||
overflow: auto;
|
|
||||||
width: 100%;
|
|
||||||
height: 170px;
|
|
||||||
background-color: #ffffff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.FlashPreviewArea
|
|
||||||
{
|
|
||||||
border: #000000 1px solid;
|
|
||||||
padding: 5px;
|
|
||||||
overflow: auto;
|
|
||||||
width: 100%;
|
|
||||||
height: 170px;
|
|
||||||
background-color: #ffffff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.BtnReset
|
|
||||||
{
|
|
||||||
float: left;
|
|
||||||
background-position: center center;
|
|
||||||
background-image: url(images/reset.gif);
|
|
||||||
width: 16px;
|
|
||||||
height: 16px;
|
|
||||||
background-repeat: no-repeat;
|
|
||||||
border: 1px none;
|
|
||||||
font-size: 1px ;
|
|
||||||
}
|
|
||||||
|
|
||||||
.BtnLocked, .BtnUnlocked
|
|
||||||
{
|
|
||||||
float: left;
|
|
||||||
background-position: center center;
|
|
||||||
background-image: url(images/locked.gif);
|
|
||||||
width: 16px;
|
|
||||||
height: 16px;
|
|
||||||
background-repeat: no-repeat;
|
|
||||||
border: none 1px;
|
|
||||||
font-size: 1px ;
|
|
||||||
}
|
|
||||||
|
|
||||||
.BtnUnlocked
|
|
||||||
{
|
|
||||||
background-image: url(images/unlocked.gif);
|
|
||||||
}
|
|
||||||
|
|
||||||
.BtnOver
|
|
||||||
{
|
|
||||||
border: outset 1px;
|
|
||||||
cursor: pointer;
|
|
||||||
cursor: hand;
|
|
||||||
}
|
|
||||||
|
|
||||||
.FCK__FieldNumeric
|
|
||||||
{
|
|
||||||
behavior: url(common/fcknumericfield.htc) ;
|
|
||||||
}
|
|
||||||
@@ -1,158 +0,0 @@
|
|||||||
/*
|
|
||||||
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
|
||||||
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
|
||||||
*
|
|
||||||
* == BEGIN LICENSE ==
|
|
||||||
*
|
|
||||||
* Licensed under the terms of any of the following licenses at your
|
|
||||||
* choice:
|
|
||||||
*
|
|
||||||
* - GNU General Public License Version 2 or later (the "GPL")
|
|
||||||
* http://www.gnu.org/licenses/gpl.html
|
|
||||||
*
|
|
||||||
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
|
||||||
* http://www.gnu.org/licenses/lgpl.html
|
|
||||||
*
|
|
||||||
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
|
||||||
* http://www.mozilla.org/MPL/MPL-1.1.html
|
|
||||||
*
|
|
||||||
* == END LICENSE ==
|
|
||||||
*
|
|
||||||
* File Name: fck_dialog_common.js
|
|
||||||
* Useful functions used by almost all dialog window pages.
|
|
||||||
*
|
|
||||||
* File Authors:
|
|
||||||
* Frederico Caldeira Knabben (www.fckeditor.net)
|
|
||||||
*/
|
|
||||||
|
|
||||||
var GECKO_BOGUS = '<br type="_moz">' ;
|
|
||||||
|
|
||||||
// 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 ) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Functions used by text fiels to accept numbers only.
|
|
||||||
function IsDigit( e )
|
|
||||||
{
|
|
||||||
if ( !e )
|
|
||||||
e = event ;
|
|
||||||
|
|
||||||
var iCode = ( e.keyCode || e.charCode ) ;
|
|
||||||
|
|
||||||
return (
|
|
||||||
( iCode >= 48 && iCode <= 57 ) // Numbers
|
|
||||||
|| (iCode >= 37 && iCode <= 40) // Arrows
|
|
||||||
|| iCode == 8 // Backspace
|
|
||||||
|| iCode == 46 // Delete
|
|
||||||
) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
String.prototype.Trim = function()
|
|
||||||
{
|
|
||||||
return this.replace( /(^\s*)|(\s*$)/g, '' ) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
String.prototype.StartsWith = function( value )
|
|
||||||
{
|
|
||||||
return ( this.substr( 0, value.length ) == value ) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
String.prototype.Remove = function( start, length )
|
|
||||||
{
|
|
||||||
var s = '' ;
|
|
||||||
|
|
||||||
if ( start > 0 )
|
|
||||||
s = this.substring( 0, start ) ;
|
|
||||||
|
|
||||||
if ( start + length < this.length )
|
|
||||||
s += this.substring( start + length , this.length ) ;
|
|
||||||
|
|
||||||
return s ;
|
|
||||||
}
|
|
||||||
|
|
||||||
String.prototype.ReplaceAll = function( searchArray, replaceArray )
|
|
||||||
{
|
|
||||||
var replaced = this ;
|
|
||||||
|
|
||||||
for ( var i = 0 ; i < searchArray.length ; i++ )
|
|
||||||
{
|
|
||||||
replaced = replaced.replace( searchArray[i], replaceArray[i] ) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
return replaced ;
|
|
||||||
}
|
|
||||||
|
|
||||||
function OpenFileBrowser( url, width, height )
|
|
||||||
{
|
|
||||||
// oEditor must be defined.
|
|
||||||
|
|
||||||
var iLeft = ( oEditor.FCKConfig.ScreenWidth - width ) / 2 ;
|
|
||||||
var iTop = ( oEditor.FCKConfig.ScreenHeight - height ) / 2 ;
|
|
||||||
|
|
||||||
var sOptions = "toolbar=no,status=no,resizable=yes,dependent=yes,scrollbars=yes" ;
|
|
||||||
sOptions += ",width=" + width ;
|
|
||||||
sOptions += ",height=" + height ;
|
|
||||||
sOptions += ",left=" + iLeft ;
|
|
||||||
sOptions += ",top=" + iTop ;
|
|
||||||
|
|
||||||
// The "PreserveSessionOnFileBrowser" because the above code could be
|
|
||||||
// blocked by popup blockers.
|
|
||||||
if ( oEditor.FCKConfig.PreserveSessionOnFileBrowser && oEditor.FCKBrowserInfo.IsIE )
|
|
||||||
{
|
|
||||||
// The following change has been made otherwise IE will open the file
|
|
||||||
// browser on a different server session (on some cases):
|
|
||||||
// http://support.microsoft.com/default.aspx?scid=kb;en-us;831678
|
|
||||||
// by Simone Chiaretta.
|
|
||||||
var oWindow = oEditor.window.open( url, 'FCKBrowseWindow', sOptions ) ;
|
|
||||||
|
|
||||||
if ( oWindow )
|
|
||||||
{
|
|
||||||
// Detect Yahoo popup blocker.
|
|
||||||
try
|
|
||||||
{
|
|
||||||
var sTest = oWindow.name ; // Yahoo returns "something", but we can't access it, so detect that and avoid strange errors for the user.
|
|
||||||
oWindow.opener = window ;
|
|
||||||
}
|
|
||||||
catch(e)
|
|
||||||
{
|
|
||||||
alert( oEditor.FCKLang.BrowseServerBlocked ) ;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
alert( oEditor.FCKLang.BrowseServerBlocked ) ;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
window.open( url, 'FCKBrowseWindow', sOptions ) ;
|
|
||||||
}
|
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
<public:component lightweight="true">
|
|
||||||
|
|
||||||
<script language="javascript">
|
|
||||||
|
|
||||||
function CheckIsDigit()
|
|
||||||
{
|
|
||||||
var iCode = event.keyCode ;
|
|
||||||
|
|
||||||
event.returnValue =
|
|
||||||
(
|
|
||||||
( iCode >= 48 && iCode <= 57 ) // Numbers
|
|
||||||
|| (iCode >= 37 && iCode <= 40) // Arrows
|
|
||||||
|| iCode == 8 // Backspace
|
|
||||||
|| iCode == 46 // Delete
|
|
||||||
) ;
|
|
||||||
|
|
||||||
return event.returnValue ;
|
|
||||||
}
|
|
||||||
|
|
||||||
this.onkeypress = CheckIsDigit ;
|
|
||||||
|
|
||||||
</script>
|
|
||||||
|
|
||||||
</public:component>
|
|
||||||
|
Before Width: | Height: | Size: 74 B |
|
Before Width: | Height: | Size: 104 B |
|
Before Width: | Height: | Size: 75 B |
@@ -1,30 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8" ?>
|
|
||||||
<bindings xmlns="http://www.mozilla.org/xbl">
|
|
||||||
<binding id="numericfield">
|
|
||||||
<implementation>
|
|
||||||
<constructor>
|
|
||||||
this.keypress = CheckIsDigit ;
|
|
||||||
</constructor>
|
|
||||||
<method name="CheckIsDigit">
|
|
||||||
<body>
|
|
||||||
<![CDATA[
|
|
||||||
var iCode = keyCode ;
|
|
||||||
|
|
||||||
var bAccepted =
|
|
||||||
(
|
|
||||||
( iCode >= 48 && iCode <= 57 ) // Numbers
|
|
||||||
|| (iCode >= 37 && iCode <= 40) // Arrows
|
|
||||||
|| iCode == 8 // Backspace
|
|
||||||
|| iCode == 46 // Delete
|
|
||||||
) ;
|
|
||||||
|
|
||||||
return bAccepted ;
|
|
||||||
]]>
|
|
||||||
</body>
|
|
||||||
</method>
|
|
||||||
</implementation>
|
|
||||||
<events>
|
|
||||||
<event type="keypress" value="CheckIsDigit()" />
|
|
||||||
</events>
|
|
||||||
</binding>
|
|
||||||
</bindings>
|
|
||||||
@@ -1,159 +0,0 @@
|
|||||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
|
||||||
<!--
|
|
||||||
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
|
||||||
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
|
||||||
*
|
|
||||||
* == BEGIN LICENSE ==
|
|
||||||
*
|
|
||||||
* Licensed under the terms of any of the following licenses at your
|
|
||||||
* choice:
|
|
||||||
*
|
|
||||||
* - GNU General Public License Version 2 or later (the "GPL")
|
|
||||||
* http://www.gnu.org/licenses/gpl.html
|
|
||||||
*
|
|
||||||
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
|
||||||
* http://www.gnu.org/licenses/lgpl.html
|
|
||||||
*
|
|
||||||
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
|
||||||
* http://www.mozilla.org/MPL/MPL-1.1.html
|
|
||||||
*
|
|
||||||
* == END LICENSE ==
|
|
||||||
*
|
|
||||||
* File Name: fck_about.html
|
|
||||||
* "About" dialog window.
|
|
||||||
*
|
|
||||||
* File Authors:
|
|
||||||
* Frederico Caldeira Knabben (www.fckeditor.net)
|
|
||||||
-->
|
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
||||||
<head>
|
|
||||||
<title></title>
|
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
||||||
<meta name="robots" content="noindex, nofollow" />
|
|
||||||
<script 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.4</b><br />
|
|
||||||
Build 1148</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>
|
|
||||||
|
Before Width: | Height: | Size: 2.0 KiB |
|
Before Width: | Height: | Size: 920 B |
@@ -1,232 +0,0 @@
|
|||||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
|
|
||||||
<!--
|
|
||||||
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
|
||||||
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
|
||||||
*
|
|
||||||
* == BEGIN LICENSE ==
|
|
||||||
*
|
|
||||||
* Licensed under the terms of any of the following licenses at your
|
|
||||||
* choice:
|
|
||||||
*
|
|
||||||
* - GNU General Public License Version 2 or later (the "GPL")
|
|
||||||
* http://www.gnu.org/licenses/gpl.html
|
|
||||||
*
|
|
||||||
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
|
||||||
* http://www.gnu.org/licenses/lgpl.html
|
|
||||||
*
|
|
||||||
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
|
||||||
* http://www.mozilla.org/MPL/MPL-1.1.html
|
|
||||||
*
|
|
||||||
* == END LICENSE ==
|
|
||||||
*
|
|
||||||
* File Name: fck_anchor.html
|
|
||||||
* Anchor dialog window.
|
|
||||||
*
|
|
||||||
* File Authors:
|
|
||||||
* Frederico Caldeira Knabben (www.fckeditor.net)
|
|
||||||
* Alfonso Martinez de Lizarrondo - Uritec (alfonso at uritec dot net)
|
|
||||||
-->
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title>Anchor Properties</title>
|
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
|
||||||
<meta content="noindex, nofollow" name="robots">
|
|
||||||
<script src="common/fck_dialog_common.js" type="text/javascript"></script>
|
|
||||||
<script type="text/javascript">
|
|
||||||
|
|
||||||
var oEditor = window.parent.InnerDialogLoaded() ;
|
|
||||||
var FCK = oEditor.FCK ;
|
|
||||||
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 )
|
|
||||||
{
|
|
||||||
RemoveAnchor() ;
|
|
||||||
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
|
|
||||||
oAnchor = oEditor.FCK.CreateLink( '#' ) ;
|
|
||||||
if ( !oAnchor )
|
|
||||||
{
|
|
||||||
// Nothing was selected, so now just create a normal A
|
|
||||||
oAnchor = oEditor.FCK.CreateElement( 'a' ) ;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// Remove the fake href
|
|
||||||
oAnchor.removeAttribute( 'href' ) ;
|
|
||||||
}
|
|
||||||
// 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 ;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Removes the current anchor from the document
|
|
||||||
function RemoveAnchor()
|
|
||||||
{
|
|
||||||
// If it's also a link, then just remove the name and exit
|
|
||||||
if ( oAnchor.href.length != 0 )
|
|
||||||
{
|
|
||||||
oAnchor.removeAttribute( 'name' ) ;
|
|
||||||
// Remove temporary class for IE
|
|
||||||
if ( FCKBrowserInfo.IsIE )
|
|
||||||
oAnchor.className = oAnchor.className.replace( FCKRegexLib.FCK_Class, '' ) ;
|
|
||||||
return ;
|
|
||||||
}
|
|
||||||
|
|
||||||
// We need to remove the anchor
|
|
||||||
// If we got a fake image, then just remove it and we're done
|
|
||||||
if ( oFakeImage )
|
|
||||||
{
|
|
||||||
oFakeImage.parentNode.removeChild( oFakeImage ) ;
|
|
||||||
return ;
|
|
||||||
}
|
|
||||||
// Empty anchor, so just remove it
|
|
||||||
if ( oAnchor.innerHTML.length == 0 )
|
|
||||||
{
|
|
||||||
oAnchor.parentNode.removeChild( oAnchor ) ;
|
|
||||||
return ;
|
|
||||||
}
|
|
||||||
// Anchor with content, leave the content
|
|
||||||
FCKTools.RemoveOuterTags( oAnchor ) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 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>
|
|
||||||
@@ -1,111 +0,0 @@
|
|||||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
|
|
||||||
<!--
|
|
||||||
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
|
||||||
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
|
||||||
*
|
|
||||||
* == BEGIN LICENSE ==
|
|
||||||
*
|
|
||||||
* Licensed under the terms of any of the following licenses at your
|
|
||||||
* choice:
|
|
||||||
*
|
|
||||||
* - GNU General Public License Version 2 or later (the "GPL")
|
|
||||||
* http://www.gnu.org/licenses/gpl.html
|
|
||||||
*
|
|
||||||
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
|
||||||
* http://www.gnu.org/licenses/lgpl.html
|
|
||||||
*
|
|
||||||
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
|
||||||
* http://www.mozilla.org/MPL/MPL-1.1.html
|
|
||||||
*
|
|
||||||
* == END LICENSE ==
|
|
||||||
*
|
|
||||||
* File Name: fck_button.html
|
|
||||||
* Button dialog window.
|
|
||||||
*
|
|
||||||
* File Authors:
|
|
||||||
* Frederico Caldeira Knabben (www.fckeditor.net)
|
|
||||||
-->
|
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
||||||
<head>
|
|
||||||
<title>Button Properties</title>
|
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
||||||
<meta content="noindex, nofollow" name="robots" />
|
|
||||||
<script src="common/fck_dialog_common.js" type="text/javascript"></script>
|
|
||||||
<script type="text/javascript">
|
|
||||||
|
|
||||||
var oEditor = window.parent.InnerDialogLoaded() ;
|
|
||||||
|
|
||||||
// Gets the document DOM
|
|
||||||
var oDOM = oEditor.FCK.EditorDocument ;
|
|
||||||
|
|
||||||
var oActiveEl = oEditor.FCKSelection.GetSelectedElement() ;
|
|
||||||
|
|
||||||
window.onload = function()
|
|
||||||
{
|
|
||||||
// First of all, translate the dialog box texts
|
|
||||||
oEditor.FCKLanguageManager.TranslatePage(document) ;
|
|
||||||
|
|
||||||
if ( oActiveEl && oActiveEl.tagName.toUpperCase() == "INPUT" && ( oActiveEl.type == "button" || oActiveEl.type == "submit" || oActiveEl.type == "reset" ) )
|
|
||||||
{
|
|
||||||
GetE('txtName').value = oActiveEl.name ;
|
|
||||||
GetE('txtValue').value = oActiveEl.value ;
|
|
||||||
GetE('txtType').value = oActiveEl.type ;
|
|
||||||
|
|
||||||
GetE('txtType').disabled = true ;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
oActiveEl = null ;
|
|
||||||
|
|
||||||
window.parent.SetOkButton( true ) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
function Ok()
|
|
||||||
{
|
|
||||||
if ( !oActiveEl )
|
|
||||||
{
|
|
||||||
oActiveEl = oEditor.FCK.EditorDocument.createElement( 'INPUT' ) ;
|
|
||||||
oActiveEl.type = GetE('txtType').value ;
|
|
||||||
oActiveEl = oEditor.FCK.InsertElementAndGetIt( oActiveEl ) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
oActiveEl.name = GetE('txtName').value ;
|
|
||||||
SetAttribute( oActiveEl, 'value', GetE('txtValue').value ) ;
|
|
||||||
|
|
||||||
return true ;
|
|
||||||
}
|
|
||||||
|
|
||||||
</script>
|
|
||||||
</head>
|
|
||||||
<body style="overflow: hidden">
|
|
||||||
<table width="100%" style="height: 100%">
|
|
||||||
<tr>
|
|
||||||
<td align="center">
|
|
||||||
<table border="0" cellpadding="0" cellspacing="0" width="80%">
|
|
||||||
<tr>
|
|
||||||
<td colspan="">
|
|
||||||
<span fcklang="DlgCheckboxName">Name</span><br />
|
|
||||||
<input type="text" size="20" id="txtName" style="width: 100%" />
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
<span fcklang="DlgButtonText">Text (Value)</span><br />
|
|
||||||
<input type="text" id="txtValue" style="width: 100%" />
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
<span fcklang="DlgButtonType">Type</span><br />
|
|
||||||
<select id="txtType">
|
|
||||||
<option fcklang="DlgButtonTypeBtn" value="button" selected="selected">Button</option>
|
|
||||||
<option fcklang="DlgButtonTypeSbm" value="submit">Submit</option>
|
|
||||||
<option fcklang="DlgButtonTypeRst" value="reset">Reset</option>
|
|
||||||
</select>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
@@ -1,111 +0,0 @@
|
|||||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
|
|
||||||
<!--
|
|
||||||
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
|
||||||
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
|
||||||
*
|
|
||||||
* == BEGIN LICENSE ==
|
|
||||||
*
|
|
||||||
* Licensed under the terms of any of the following licenses at your
|
|
||||||
* choice:
|
|
||||||
*
|
|
||||||
* - GNU General Public License Version 2 or later (the "GPL")
|
|
||||||
* http://www.gnu.org/licenses/gpl.html
|
|
||||||
*
|
|
||||||
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
|
||||||
* http://www.gnu.org/licenses/lgpl.html
|
|
||||||
*
|
|
||||||
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
|
||||||
* http://www.mozilla.org/MPL/MPL-1.1.html
|
|
||||||
*
|
|
||||||
* == END LICENSE ==
|
|
||||||
*
|
|
||||||
* File Name: fck_checkbox.html
|
|
||||||
* Checkbox dialog window.
|
|
||||||
*
|
|
||||||
* File Authors:
|
|
||||||
* Frederico Caldeira Knabben (www.fckeditor.net)
|
|
||||||
-->
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title>Checkbox Properties</title>
|
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
|
||||||
<meta content="noindex, nofollow" name="robots">
|
|
||||||
<script src="common/fck_dialog_common.js" type="text/javascript"></script>
|
|
||||||
<script type="text/javascript">
|
|
||||||
|
|
||||||
var oEditor = window.parent.InnerDialogLoaded() ;
|
|
||||||
|
|
||||||
// Gets the document DOM
|
|
||||||
var oDOM = oEditor.FCK.EditorDocument ;
|
|
||||||
|
|
||||||
var oActiveEl = oEditor.FCKSelection.GetSelectedElement() ;
|
|
||||||
|
|
||||||
window.onload = function()
|
|
||||||
{
|
|
||||||
// First of all, translate the dialog box texts
|
|
||||||
oEditor.FCKLanguageManager.TranslatePage(document) ;
|
|
||||||
|
|
||||||
if ( oActiveEl && oActiveEl.tagName == 'INPUT' && oActiveEl.type == 'checkbox' )
|
|
||||||
{
|
|
||||||
GetE('txtName').value = oActiveEl.name ;
|
|
||||||
GetE('txtValue').value = oEditor.FCKBrowserInfo.IsIE ? oActiveEl.value : GetAttribute( oActiveEl, 'value' ) ;
|
|
||||||
GetE('txtSelected').checked = oActiveEl.checked ;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
oActiveEl = null ;
|
|
||||||
|
|
||||||
window.parent.SetOkButton( true ) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
function Ok()
|
|
||||||
{
|
|
||||||
if ( !oActiveEl )
|
|
||||||
{
|
|
||||||
oActiveEl = oEditor.FCK.EditorDocument.createElement( 'INPUT' ) ;
|
|
||||||
oActiveEl.type = 'checkbox' ;
|
|
||||||
oActiveEl = oEditor.FCK.InsertElementAndGetIt( oActiveEl ) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( GetE('txtName').value.length > 0 )
|
|
||||||
oActiveEl.name = GetE('txtName').value ;
|
|
||||||
|
|
||||||
if ( oEditor.FCKBrowserInfo.IsIE )
|
|
||||||
oActiveEl.value = GetE('txtValue').value ;
|
|
||||||
else
|
|
||||||
SetAttribute( oActiveEl, 'value', GetE('txtValue').value ) ;
|
|
||||||
|
|
||||||
var bIsChecked = GetE('txtSelected').checked ;
|
|
||||||
SetAttribute( oActiveEl, 'checked', bIsChecked ? 'checked' : null ) ; // For Firefox
|
|
||||||
oActiveEl.checked = bIsChecked ;
|
|
||||||
|
|
||||||
return true ;
|
|
||||||
}
|
|
||||||
|
|
||||||
</script>
|
|
||||||
</head>
|
|
||||||
<body style="OVERFLOW: hidden" scroll="no">
|
|
||||||
<table height="100%" width="100%">
|
|
||||||
<tr>
|
|
||||||
<td align="center">
|
|
||||||
<table border="0" cellpadding="0" cellspacing="0" width="80%">
|
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
<span fckLang="DlgCheckboxName">Name</span><br>
|
|
||||||
<input type="text" size="20" id="txtName" style="WIDTH: 100%">
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
<span fckLang="DlgCheckboxValue">Value</span><br>
|
|
||||||
<input type="text" size="20" id="txtValue" style="WIDTH: 100%">
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><input type="checkbox" id="txtSelected"><label for="txtSelected" fckLang="DlgCheckboxSelected">Checked</label></td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
@@ -1,175 +0,0 @@
|
|||||||
<!--
|
|
||||||
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
|
||||||
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
|
||||||
*
|
|
||||||
* == BEGIN LICENSE ==
|
|
||||||
*
|
|
||||||
* Licensed under the terms of any of the following licenses at your
|
|
||||||
* choice:
|
|
||||||
*
|
|
||||||
* - GNU General Public License Version 2 or later (the "GPL")
|
|
||||||
* http://www.gnu.org/licenses/gpl.html
|
|
||||||
*
|
|
||||||
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
|
||||||
* http://www.gnu.org/licenses/lgpl.html
|
|
||||||
*
|
|
||||||
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
|
||||||
* http://www.mozilla.org/MPL/MPL-1.1.html
|
|
||||||
*
|
|
||||||
* == END LICENSE ==
|
|
||||||
*
|
|
||||||
* File Name: fck_colorselector.html
|
|
||||||
* Color Selection dialog window.
|
|
||||||
*
|
|
||||||
* File Authors:
|
|
||||||
* Frederico Caldeira Knabben (www.fckeditor.net)
|
|
||||||
-->
|
|
||||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
||||||
<meta name="robots" content="noindex, nofollow" />
|
|
||||||
<style TYPE="text/css">
|
|
||||||
#ColorTable { cursor: pointer ; cursor: hand ; }
|
|
||||||
#hicolor { height: 74px ; width: 74px ; border-width: 1px ; border-style: solid ; }
|
|
||||||
#hicolortext { width: 75px ; text-align: right ; margin-bottom: 7px ; }
|
|
||||||
#selhicolor { height: 20px ; width: 74px ; border-width: 1px ; border-style: solid ; }
|
|
||||||
#selcolor { width: 75px ; height: 20px ; margin-top: 0px ; margin-bottom: 7px ; }
|
|
||||||
#btnClear { width: 75px ; height: 22px ; margin-bottom: 6px ; }
|
|
||||||
.ColorCell { height: 15px ; width: 15px ; }
|
|
||||||
</style>
|
|
||||||
<script type="text/javascript">
|
|
||||||
|
|
||||||
var oEditor = window.parent.InnerDialogLoaded() ;
|
|
||||||
|
|
||||||
function OnLoad()
|
|
||||||
{
|
|
||||||
// First of all, translate the dialog box texts
|
|
||||||
oEditor.FCKLanguageManager.TranslatePage(document) ;
|
|
||||||
|
|
||||||
CreateColorTable() ;
|
|
||||||
|
|
||||||
window.parent.SetOkButton( true ) ;
|
|
||||||
window.parent.SetAutoSize( true ) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
function CreateColorTable()
|
|
||||||
{
|
|
||||||
// Get the target table.
|
|
||||||
var oTable = document.getElementById('ColorTable') ;
|
|
||||||
|
|
||||||
// Create the base colors array.
|
|
||||||
var aColors = ['00','33','66','99','cc','ff'] ;
|
|
||||||
|
|
||||||
// This function combines two ranges of three values from the color array into a row.
|
|
||||||
function AppendColorRow( rangeA, rangeB )
|
|
||||||
{
|
|
||||||
for ( var i = rangeA ; i < rangeA + 3 ; i++ )
|
|
||||||
{
|
|
||||||
var oRow = oTable.insertRow(-1) ;
|
|
||||||
|
|
||||||
for ( var j = rangeB ; j < rangeB + 3 ; j++ )
|
|
||||||
{
|
|
||||||
for ( var n = 0 ; n < 6 ; n++ )
|
|
||||||
{
|
|
||||||
AppendColorCell( oRow, '#' + aColors[j] + aColors[n] + aColors[i] ) ;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// This function create a single color cell in the color table.
|
|
||||||
function AppendColorCell( targetRow, color )
|
|
||||||
{
|
|
||||||
var oCell = targetRow.insertCell(-1) ;
|
|
||||||
oCell.className = 'ColorCell' ;
|
|
||||||
oCell.bgColor = color ;
|
|
||||||
|
|
||||||
oCell.onmouseover = function()
|
|
||||||
{
|
|
||||||
document.getElementById('hicolor').style.backgroundColor = this.bgColor ;
|
|
||||||
document.getElementById('hicolortext').innerHTML = this.bgColor ;
|
|
||||||
}
|
|
||||||
|
|
||||||
oCell.onclick = function()
|
|
||||||
{
|
|
||||||
document.getElementById('selhicolor').style.backgroundColor = this.bgColor ;
|
|
||||||
document.getElementById('selcolor').value = this.bgColor ;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
AppendColorRow( 0, 0 ) ;
|
|
||||||
AppendColorRow( 3, 0 ) ;
|
|
||||||
AppendColorRow( 0, 3 ) ;
|
|
||||||
AppendColorRow( 3, 3 ) ;
|
|
||||||
|
|
||||||
// Create the last row.
|
|
||||||
var oRow = oTable.insertRow(-1) ;
|
|
||||||
|
|
||||||
// Create the gray scale colors cells.
|
|
||||||
for ( var n = 0 ; n < 6 ; n++ )
|
|
||||||
{
|
|
||||||
AppendColorCell( oRow, '#' + aColors[n] + aColors[n] + aColors[n] ) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Fill the row with black cells.
|
|
||||||
for ( var i = 0 ; i < 12 ; i++ )
|
|
||||||
{
|
|
||||||
AppendColorCell( oRow, '#000000' ) ;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function Clear()
|
|
||||||
{
|
|
||||||
document.getElementById('selhicolor').style.backgroundColor = '' ;
|
|
||||||
document.getElementById('selcolor').value = '' ;
|
|
||||||
}
|
|
||||||
|
|
||||||
function ClearActual()
|
|
||||||
{
|
|
||||||
document.getElementById('hicolor').style.backgroundColor = '' ;
|
|
||||||
document.getElementById('hicolortext').innerHTML = ' ' ;
|
|
||||||
}
|
|
||||||
|
|
||||||
function UpdateColor()
|
|
||||||
{
|
|
||||||
try { document.getElementById('selhicolor').style.backgroundColor = document.getElementById('selcolor').value ; }
|
|
||||||
catch (e) { Clear() ; }
|
|
||||||
}
|
|
||||||
|
|
||||||
function Ok()
|
|
||||||
{
|
|
||||||
if ( typeof(window.parent.dialogArguments.CustomValue) == 'function' )
|
|
||||||
window.parent.dialogArguments.CustomValue( document.getElementById('selcolor').value ) ;
|
|
||||||
|
|
||||||
return true ;
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
</head>
|
|
||||||
<body onload="OnLoad()" scroll="no" style="OVERFLOW: hidden">
|
|
||||||
<table cellpadding="0" cellspacing="0" border="0" width="100%" height="100%">
|
|
||||||
<tr>
|
|
||||||
<td align="center" valign="middle">
|
|
||||||
<table border="0" cellspacing="5" cellpadding="0" width="100%">
|
|
||||||
<tr>
|
|
||||||
<td valign="top" align="center" nowrap width="100%">
|
|
||||||
<table id="ColorTable" border="0" cellspacing="0" cellpadding="0" width="270" onmouseout="ClearActual();">
|
|
||||||
</table>
|
|
||||||
</td>
|
|
||||||
<td valign="top" align="left" nowrap>
|
|
||||||
<span fckLang="DlgColorHighlight">Highlight</span>
|
|
||||||
<div id="hicolor"></div>
|
|
||||||
<div id="hicolortext"> </div>
|
|
||||||
<span fckLang="DlgColorSelected">Selected</span>
|
|
||||||
<div id="selhicolor"></div>
|
|
||||||
<input id="selcolor" type="text" maxlength="20" onchange="UpdateColor();">
|
|
||||||
<br>
|
|
||||||
<input id="btnClear" type="button" fckLang="DlgColorBtnClear" value="Clear" onclick="Clear();" />
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
@@ -1,604 +0,0 @@
|
|||||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
|
||||||
<!--
|
|
||||||
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
|
||||||
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
|
||||||
*
|
|
||||||
* == BEGIN LICENSE ==
|
|
||||||
*
|
|
||||||
* Licensed under the terms of any of the following licenses at your
|
|
||||||
* choice:
|
|
||||||
*
|
|
||||||
* - GNU General Public License Version 2 or later (the "GPL")
|
|
||||||
* http://www.gnu.org/licenses/gpl.html
|
|
||||||
*
|
|
||||||
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
|
||||||
* http://www.gnu.org/licenses/lgpl.html
|
|
||||||
*
|
|
||||||
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
|
||||||
* http://www.mozilla.org/MPL/MPL-1.1.html
|
|
||||||
*
|
|
||||||
* == END LICENSE ==
|
|
||||||
*
|
|
||||||
* File Name: fck_docprops.html
|
|
||||||
* Link dialog window.
|
|
||||||
*
|
|
||||||
* File Authors:
|
|
||||||
* Frederico Caldeira Knabben (www.fckeditor.net)
|
|
||||||
-->
|
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
||||||
<head>
|
|
||||||
<title></title>
|
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
||||||
<meta content="noindex, nofollow" name="robots" />
|
|
||||||
<script src="common/fck_dialog_common.js" type="text/javascript"></script>
|
|
||||||
<script type="text/javascript">
|
|
||||||
|
|
||||||
var oEditor = window.parent.InnerDialogLoaded() ;
|
|
||||||
var FCK = oEditor.FCK ;
|
|
||||||
var FCKLang = oEditor.FCKLang ;
|
|
||||||
var FCKConfig = oEditor.FCKConfig ;
|
|
||||||
|
|
||||||
//#### Dialog Tabs
|
|
||||||
|
|
||||||
// Set the dialog tabs.
|
|
||||||
window.parent.AddTab( 'General' , FCKLang.DlgDocGeneralTab ) ;
|
|
||||||
window.parent.AddTab( 'Background' , FCKLang.DlgDocBackTab ) ;
|
|
||||||
window.parent.AddTab( 'Colors' , FCKLang.DlgDocColorsTab ) ;
|
|
||||||
window.parent.AddTab( 'Meta' , FCKLang.DlgDocMetaTab ) ;
|
|
||||||
|
|
||||||
// Function called when a dialog tag is selected.
|
|
||||||
function OnDialogTabChange( tabCode )
|
|
||||||
{
|
|
||||||
ShowE( 'divGeneral' , ( tabCode == 'General' ) ) ;
|
|
||||||
ShowE( 'divBackground' , ( tabCode == 'Background' ) ) ;
|
|
||||||
ShowE( 'divColors' , ( tabCode == 'Colors' ) ) ;
|
|
||||||
ShowE( 'divMeta' , ( tabCode == 'Meta' ) ) ;
|
|
||||||
|
|
||||||
ShowE( 'ePreview' , ( tabCode == 'Background' || tabCode == 'Colors' ) ) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
//#### Get Base elements from the document: BEGIN
|
|
||||||
|
|
||||||
// The HTML element of the document.
|
|
||||||
var oHTML = FCK.EditorDocument.getElementsByTagName('html')[0] ;
|
|
||||||
|
|
||||||
// The HEAD element of the document.
|
|
||||||
var oHead = oHTML.getElementsByTagName('head')[0] ;
|
|
||||||
|
|
||||||
var oBody = FCK.EditorDocument.body ;
|
|
||||||
|
|
||||||
// This object contains all META tags defined in the document.
|
|
||||||
var oMetaTags = new Object() ;
|
|
||||||
|
|
||||||
// Get all META tags defined in the document.
|
|
||||||
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>
|
|
||||||
@@ -1,117 +0,0 @@
|
|||||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
|
||||||
<!--
|
|
||||||
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
|
||||||
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
|
||||||
*
|
|
||||||
* == BEGIN LICENSE ==
|
|
||||||
*
|
|
||||||
* Licensed under the terms of any of the following licenses at your
|
|
||||||
* choice:
|
|
||||||
*
|
|
||||||
* - GNU General Public License Version 2 or later (the "GPL")
|
|
||||||
* http://www.gnu.org/licenses/gpl.html
|
|
||||||
*
|
|
||||||
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
|
||||||
* http://www.gnu.org/licenses/lgpl.html
|
|
||||||
*
|
|
||||||
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
|
||||||
* http://www.mozilla.org/MPL/MPL-1.1.html
|
|
||||||
*
|
|
||||||
* == END LICENSE ==
|
|
||||||
*
|
|
||||||
* File Name: fck_document_preview.html
|
|
||||||
* Preview shown in the "Document Properties" dialog window.
|
|
||||||
*
|
|
||||||
* File Authors:
|
|
||||||
* Frederico Caldeira Knabben (www.fckeditor.net)
|
|
||||||
-->
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title>Document Properties - Preview</title>
|
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
|
||||||
<meta name="robots" content="noindex, nofollow">
|
|
||||||
<script language="javascript">
|
|
||||||
|
|
||||||
var eBase = parent.FCK.EditorDocument.getElementsByTagName( 'BASE' ) ;
|
|
||||||
if ( eBase.length > 0 && eBase[0].href.length > 0 )
|
|
||||||
{
|
|
||||||
document.write( '<base href="' + eBase[0].href + '">' ) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
window.onload = function()
|
|
||||||
{
|
|
||||||
if ( typeof( parent.OnPreviewLoad ) == 'function' )
|
|
||||||
parent.OnPreviewLoad( window, document.body ) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
function SetBaseHRef( baseHref )
|
|
||||||
{
|
|
||||||
var eBase = document.createElement( 'BASE' ) ;
|
|
||||||
eBase.href = baseHref ;
|
|
||||||
|
|
||||||
var eHead = document.getElementsByTagName( 'HEAD' )[0] ;
|
|
||||||
eHead.appendChild( eBase ) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
function SetLinkColor( color )
|
|
||||||
{
|
|
||||||
if ( color && color.length > 0 )
|
|
||||||
document.getElementById('eLink').style.color = color ;
|
|
||||||
else
|
|
||||||
document.getElementById('eLink').style.color = window.document.linkColor ;
|
|
||||||
}
|
|
||||||
|
|
||||||
function SetVisitedColor( color )
|
|
||||||
{
|
|
||||||
if ( color && color.length > 0 )
|
|
||||||
document.getElementById('eVisited').style.color = color ;
|
|
||||||
else
|
|
||||||
document.getElementById('eVisited').style.color = window.document.vlinkColor ;
|
|
||||||
}
|
|
||||||
|
|
||||||
function SetActiveColor( color )
|
|
||||||
{
|
|
||||||
if ( color && color.length > 0 )
|
|
||||||
document.getElementById('eActive').style.color = color ;
|
|
||||||
else
|
|
||||||
document.getElementById('eActive').style.color = window.document.alinkColor ;
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<table width="100%" height="100%" cellpadding="0" cellspacing="0" border="0">
|
|
||||||
<tr>
|
|
||||||
<td align="center" valign="middle">
|
|
||||||
Normal Text
|
|
||||||
</td>
|
|
||||||
<td id="eLink" align="center" valign="middle">
|
|
||||||
<u>Link Text</u>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td id="eVisited" valign="middle" align="center">
|
|
||||||
<u>Visited Link</u>
|
|
||||||
</td>
|
|
||||||
<td id="eActive" valign="middle" align="center">
|
|
||||||
<u>Active Link</u>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
<br>
|
|
||||||
<br>
|
|
||||||
<br>
|
|
||||||
<br>
|
|
||||||
<br>
|
|
||||||
<br>
|
|
||||||
<br>
|
|
||||||
<br>
|
|
||||||
<br>
|
|
||||||
<br>
|
|
||||||
<br>
|
|
||||||
<br>
|
|
||||||
<br>
|
|
||||||
<br>
|
|
||||||
<br>
|
|
||||||
<br>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
@@ -1,177 +0,0 @@
|
|||||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
|
||||||
<!--
|
|
||||||
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
|
||||||
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
|
||||||
*
|
|
||||||
* == BEGIN LICENSE ==
|
|
||||||
*
|
|
||||||
* Licensed under the terms of any of the following licenses at your
|
|
||||||
* choice:
|
|
||||||
*
|
|
||||||
* - GNU General Public License Version 2 or later (the "GPL")
|
|
||||||
* http://www.gnu.org/licenses/gpl.html
|
|
||||||
*
|
|
||||||
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
|
||||||
* http://www.gnu.org/licenses/lgpl.html
|
|
||||||
*
|
|
||||||
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
|
||||||
* http://www.mozilla.org/MPL/MPL-1.1.html
|
|
||||||
*
|
|
||||||
* == END LICENSE ==
|
|
||||||
*
|
|
||||||
* File Name: fck_find.html
|
|
||||||
* "Find" dialog window.
|
|
||||||
*
|
|
||||||
* File Authors:
|
|
||||||
* Frederico Caldeira Knabben (www.fckeditor.net)
|
|
||||||
-->
|
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
||||||
<head>
|
|
||||||
<title></title>
|
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
||||||
<meta content="noindex, nofollow" name="robots" />
|
|
||||||
<script type="text/javascript">
|
|
||||||
|
|
||||||
var oEditor = window.parent.InnerDialogLoaded() ;
|
|
||||||
|
|
||||||
function OnLoad()
|
|
||||||
{
|
|
||||||
// Whole word is available on IE only.
|
|
||||||
if ( oEditor.FCKBrowserInfo.IsIE )
|
|
||||||
document.getElementById('divWord').style.display = '' ;
|
|
||||||
|
|
||||||
// First of all, translate the dialog box texts.
|
|
||||||
oEditor.FCKLanguageManager.TranslatePage( document ) ;
|
|
||||||
|
|
||||||
window.parent.SetAutoSize( true ) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
function btnStat(frm)
|
|
||||||
{
|
|
||||||
document.getElementById('btnFind').disabled =
|
|
||||||
( document.getElementById('txtFind').value.length == 0 ) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
function ReplaceTextNodes( parentNode, regex, replaceValue, replaceAll )
|
|
||||||
{
|
|
||||||
for ( var i = 0 ; i < parentNode.childNodes.length ; i++ )
|
|
||||||
{
|
|
||||||
var oNode = parentNode.childNodes[i] ;
|
|
||||||
if ( oNode.nodeType == 3 )
|
|
||||||
{
|
|
||||||
var sReplaced = oNode.nodeValue.replace( regex, replaceValue ) ;
|
|
||||||
if ( oNode.nodeValue != sReplaced )
|
|
||||||
{
|
|
||||||
oNode.nodeValue = sReplaced ;
|
|
||||||
if ( ! replaceAll )
|
|
||||||
return true ;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if ( ReplaceTextNodes( oNode, regex, replaceValue ) )
|
|
||||||
return true ;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false ;
|
|
||||||
}
|
|
||||||
|
|
||||||
function GetRegexExpr()
|
|
||||||
{
|
|
||||||
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>
|
|
||||||
@@ -1,150 +0,0 @@
|
|||||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
|
||||||
<!--
|
|
||||||
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
|
||||||
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
|
||||||
*
|
|
||||||
* == BEGIN LICENSE ==
|
|
||||||
*
|
|
||||||
* Licensed under the terms of any of the following licenses at your
|
|
||||||
* choice:
|
|
||||||
*
|
|
||||||
* - GNU General Public License Version 2 or later (the "GPL")
|
|
||||||
* http://www.gnu.org/licenses/gpl.html
|
|
||||||
*
|
|
||||||
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
|
||||||
* http://www.gnu.org/licenses/lgpl.html
|
|
||||||
*
|
|
||||||
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
|
||||||
* http://www.mozilla.org/MPL/MPL-1.1.html
|
|
||||||
*
|
|
||||||
* == END LICENSE ==
|
|
||||||
*
|
|
||||||
* File Name: fck_flash.html
|
|
||||||
* Flash Properties dialog window.
|
|
||||||
*
|
|
||||||
* File Authors:
|
|
||||||
* Frederico Caldeira Knabben (www.fckeditor.net)
|
|
||||||
-->
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title>Flash Properties</title>
|
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
|
||||||
<meta content="noindex, nofollow" name="robots">
|
|
||||||
<script src="common/fck_dialog_common.js" type="text/javascript"></script>
|
|
||||||
<script src="fck_flash/fck_flash.js" type="text/javascript"></script>
|
|
||||||
<link href="common/fck_dialog_common.css" type="text/css" rel="stylesheet">
|
|
||||||
</head>
|
|
||||||
<body scroll="no" style="OVERFLOW: hidden">
|
|
||||||
<div id="divInfo">
|
|
||||||
<table cellSpacing="1" cellPadding="1" width="100%" border="0">
|
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
<table cellSpacing="0" cellPadding="0" width="100%" border="0">
|
|
||||||
<tr>
|
|
||||||
<td width="100%"><span fckLang="DlgImgURL">URL</span>
|
|
||||||
</td>
|
|
||||||
<td id="tdBrowse" style="DISPLAY: none" noWrap rowSpan="2"> <input id="btnBrowse" onclick="BrowseServer();" type="button" value="Browse Server" fckLang="DlgBtnBrowseServer">
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td vAlign="top"><input id="txtUrl" onblur="UpdatePreview();" style="WIDTH: 100%" type="text">
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<TR>
|
|
||||||
<TD>
|
|
||||||
<table cellSpacing="0" cellPadding="0" border="0">
|
|
||||||
<TR>
|
|
||||||
<TD nowrap>
|
|
||||||
<span fckLang="DlgImgWidth">Width</span><br>
|
|
||||||
<input id="txtWidth" class="FCK__FieldNumeric" type="text" size="3">
|
|
||||||
</TD>
|
|
||||||
<TD> </TD>
|
|
||||||
<TD>
|
|
||||||
<span fckLang="DlgImgHeight">Height</span><br>
|
|
||||||
<input id="txtHeight" class="FCK__FieldNumeric" type="text" size="3">
|
|
||||||
</TD>
|
|
||||||
</TR>
|
|
||||||
</table>
|
|
||||||
</TD>
|
|
||||||
</TR>
|
|
||||||
<tr>
|
|
||||||
<td vAlign="top">
|
|
||||||
<table cellSpacing="0" cellPadding="0" width="100%" border="0">
|
|
||||||
<tr>
|
|
||||||
<td valign="top" width="100%">
|
|
||||||
<table cellSpacing="0" cellPadding="0" width="100%">
|
|
||||||
<tr>
|
|
||||||
<td><span fckLang="DlgImgPreview">Preview</span></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td id="ePreviewCell" valign="top" class="FlashPreviewArea"><iframe src="fck_flash/fck_flash_preview.html" frameborder="0" marginheight="0" marginwidth="0"></iframe></td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
<div id="divUpload" style="DISPLAY: none">
|
|
||||||
<form id="frmUpload" method="post" target="UploadWindow" enctype="multipart/form-data" action="" onsubmit="return CheckUpload();">
|
|
||||||
<span fckLang="DlgLnkUpload">Upload</span><br />
|
|
||||||
<input id="txtUploadFile" style="WIDTH: 100%" type="file" size="40" name="NewFile" /><br />
|
|
||||||
<br />
|
|
||||||
<input id="btnUpload" type="submit" value="Send it to the Server" fckLang="DlgLnkBtnUpload" />
|
|
||||||
<iframe name="UploadWindow" style="DISPLAY: none" src="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>
|
|
||||||
@@ -1,292 +0,0 @@
|
|||||||
/*
|
|
||||||
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
|
||||||
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
|
||||||
*
|
|
||||||
* == BEGIN LICENSE ==
|
|
||||||
*
|
|
||||||
* Licensed under the terms of any of the following licenses at your
|
|
||||||
* choice:
|
|
||||||
*
|
|
||||||
* - GNU General Public License Version 2 or later (the "GPL")
|
|
||||||
* http://www.gnu.org/licenses/gpl.html
|
|
||||||
*
|
|
||||||
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
|
||||||
* http://www.gnu.org/licenses/lgpl.html
|
|
||||||
*
|
|
||||||
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
|
||||||
* http://www.mozilla.org/MPL/MPL-1.1.html
|
|
||||||
*
|
|
||||||
* == END LICENSE ==
|
|
||||||
*
|
|
||||||
* File Name: fck_flash.js
|
|
||||||
* Scripts related to the Flash dialog window (see fck_flash.html).
|
|
||||||
*
|
|
||||||
* File Authors:
|
|
||||||
* Frederico Caldeira Knabben (www.fckeditor.net)
|
|
||||||
*/
|
|
||||||
|
|
||||||
var oEditor = window.parent.InnerDialogLoaded() ;
|
|
||||||
var FCK = oEditor.FCK ;
|
|
||||||
var FCKLang = oEditor.FCKLang ;
|
|
||||||
var FCKConfig = oEditor.FCKConfig ;
|
|
||||||
|
|
||||||
//#### Dialog Tabs
|
|
||||||
|
|
||||||
// Set the dialog tabs.
|
|
||||||
window.parent.AddTab( 'Info', oEditor.FCKLang.DlgInfoTab ) ;
|
|
||||||
|
|
||||||
if ( FCKConfig.FlashUpload )
|
|
||||||
window.parent.AddTab( 'Upload', FCKLang.DlgLnkUpload ) ;
|
|
||||||
|
|
||||||
if ( !FCKConfig.FlashDlgHideAdvanced )
|
|
||||||
window.parent.AddTab( 'Advanced', oEditor.FCKLang.DlgAdvancedTag ) ;
|
|
||||||
|
|
||||||
// Function called when a dialog tag is selected.
|
|
||||||
function OnDialogTabChange( tabCode )
|
|
||||||
{
|
|
||||||
ShowE('divInfo' , ( tabCode == 'Info' ) ) ;
|
|
||||||
ShowE('divUpload' , ( tabCode == 'Upload' ) ) ;
|
|
||||||
ShowE('divAdvanced' , ( tabCode == 'Advanced' ) ) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Get the selected flash embed (if available).
|
|
||||||
var oFakeImage = FCK.Selection.GetSelectedElement() ;
|
|
||||||
var oEmbed ;
|
|
||||||
|
|
||||||
if ( oFakeImage )
|
|
||||||
{
|
|
||||||
if ( oFakeImage.tagName == 'IMG' && oFakeImage.getAttribute('_fckflash') )
|
|
||||||
oEmbed = FCK.GetRealElement( oFakeImage ) ;
|
|
||||||
else
|
|
||||||
oFakeImage = null ;
|
|
||||||
}
|
|
||||||
|
|
||||||
window.onload = function()
|
|
||||||
{
|
|
||||||
// Translate the dialog box texts.
|
|
||||||
oEditor.FCKLanguageManager.TranslatePage(document) ;
|
|
||||||
|
|
||||||
// Load the selected element information (if any).
|
|
||||||
LoadSelection() ;
|
|
||||||
|
|
||||||
// Show/Hide the "Browse Server" button.
|
|
||||||
GetE('tdBrowse').style.display = FCKConfig.FlashBrowser ? '' : 'none' ;
|
|
||||||
|
|
||||||
// Set the actual uploader URL.
|
|
||||||
if ( FCKConfig.FlashUpload )
|
|
||||||
GetE('frmUpload').action = FCKConfig.FlashUploadURL ;
|
|
||||||
|
|
||||||
window.parent.SetAutoSize( true ) ;
|
|
||||||
|
|
||||||
// Activate the "OK" button.
|
|
||||||
window.parent.SetOkButton( true ) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
function LoadSelection()
|
|
||||||
{
|
|
||||||
if ( ! oEmbed ) return ;
|
|
||||||
|
|
||||||
var sUrl = GetAttribute( oEmbed, 'src', '' ) ;
|
|
||||||
|
|
||||||
GetE('txtUrl').value = GetAttribute( oEmbed, 'src', '' ) ;
|
|
||||||
GetE('txtWidth').value = GetAttribute( oEmbed, 'width', '' ) ;
|
|
||||||
GetE('txtHeight').value = GetAttribute( oEmbed, 'height', '' ) ;
|
|
||||||
|
|
||||||
// Get Advances Attributes
|
|
||||||
GetE('txtAttId').value = oEmbed.id ;
|
|
||||||
GetE('chkAutoPlay').checked = GetAttribute( oEmbed, 'play', 'true' ) == 'true' ;
|
|
||||||
GetE('chkLoop').checked = GetAttribute( oEmbed, 'loop', 'true' ) == 'true' ;
|
|
||||||
GetE('chkMenu').checked = GetAttribute( oEmbed, 'menu', 'true' ) == 'true' ;
|
|
||||||
GetE('cmbScale').value = GetAttribute( oEmbed, 'scale', '' ).toLowerCase() ;
|
|
||||||
|
|
||||||
GetE('txtAttTitle').value = oEmbed.title ;
|
|
||||||
|
|
||||||
if ( oEditor.FCKBrowserInfo.IsIE )
|
|
||||||
{
|
|
||||||
GetE('txtAttClasses').value = oEmbed.getAttribute('className') || '' ;
|
|
||||||
GetE('txtAttStyle').value = oEmbed.style.cssText ;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
GetE('txtAttClasses').value = oEmbed.getAttribute('class',2) || '' ;
|
|
||||||
GetE('txtAttStyle').value = oEmbed.getAttribute('style',2) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
UpdatePreview() ;
|
|
||||||
}
|
|
||||||
|
|
||||||
//#### The OK button was hit.
|
|
||||||
function Ok()
|
|
||||||
{
|
|
||||||
if ( GetE('txtUrl').value.length == 0 )
|
|
||||||
{
|
|
||||||
window.parent.SetSelectedTab( 'Info' ) ;
|
|
||||||
GetE('txtUrl').focus() ;
|
|
||||||
|
|
||||||
alert( oEditor.FCKLang.DlgAlertUrl ) ;
|
|
||||||
|
|
||||||
return false ;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( !oEmbed )
|
|
||||||
{
|
|
||||||
oEmbed = FCK.EditorDocument.createElement( 'EMBED' ) ;
|
|
||||||
oFakeImage = null ;
|
|
||||||
}
|
|
||||||
UpdateEmbed( oEmbed ) ;
|
|
||||||
|
|
||||||
if ( !oFakeImage )
|
|
||||||
{
|
|
||||||
oFakeImage = oEditor.FCKDocumentProcessor_CreateFakeImage( 'FCK__Flash', oEmbed ) ;
|
|
||||||
oFakeImage.setAttribute( '_fckflash', 'true', 0 ) ;
|
|
||||||
oFakeImage = FCK.InsertElementAndGetIt( oFakeImage ) ;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
oEditor.FCKUndo.SaveUndoStep() ;
|
|
||||||
|
|
||||||
oEditor.FCKFlashProcessor.RefreshView( oFakeImage, oEmbed ) ;
|
|
||||||
|
|
||||||
return true ;
|
|
||||||
}
|
|
||||||
|
|
||||||
function UpdateEmbed( e )
|
|
||||||
{
|
|
||||||
SetAttribute( e, 'type' , 'application/x-shockwave-flash' ) ;
|
|
||||||
SetAttribute( e, 'pluginspage' , 'http://www.macromedia.com/go/getflashplayer' ) ;
|
|
||||||
|
|
||||||
e.src = GetE('txtUrl').value ;
|
|
||||||
SetAttribute( e, "width" , GetE('txtWidth').value ) ;
|
|
||||||
SetAttribute( e, "height", GetE('txtHeight').value ) ;
|
|
||||||
|
|
||||||
// Advances Attributes
|
|
||||||
|
|
||||||
SetAttribute( e, 'id' , GetE('txtAttId').value ) ;
|
|
||||||
SetAttribute( e, 'scale', GetE('cmbScale').value ) ;
|
|
||||||
|
|
||||||
SetAttribute( e, 'play', GetE('chkAutoPlay').checked ? 'true' : 'false' ) ;
|
|
||||||
SetAttribute( e, 'loop', GetE('chkLoop').checked ? 'true' : 'false' ) ;
|
|
||||||
SetAttribute( e, 'menu', GetE('chkMenu').checked ? 'true' : 'false' ) ;
|
|
||||||
|
|
||||||
SetAttribute( e, 'title' , GetE('txtAttTitle').value ) ;
|
|
||||||
|
|
||||||
if ( oEditor.FCKBrowserInfo.IsIE )
|
|
||||||
{
|
|
||||||
SetAttribute( e, 'className', GetE('txtAttClasses').value ) ;
|
|
||||||
e.style.cssText = GetE('txtAttStyle').value ;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
SetAttribute( e, 'class', GetE('txtAttClasses').value ) ;
|
|
||||||
SetAttribute( e, 'style', GetE('txtAttStyle').value ) ;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var ePreview ;
|
|
||||||
|
|
||||||
function SetPreviewElement( previewEl )
|
|
||||||
{
|
|
||||||
ePreview = previewEl ;
|
|
||||||
|
|
||||||
if ( GetE('txtUrl').value.length > 0 )
|
|
||||||
UpdatePreview() ;
|
|
||||||
}
|
|
||||||
|
|
||||||
function UpdatePreview()
|
|
||||||
{
|
|
||||||
if ( !ePreview )
|
|
||||||
return ;
|
|
||||||
|
|
||||||
while ( ePreview.firstChild )
|
|
||||||
ePreview.removeChild( ePreview.firstChild ) ;
|
|
||||||
|
|
||||||
if ( GetE('txtUrl').value.length == 0 )
|
|
||||||
ePreview.innerHTML = ' ' ;
|
|
||||||
else
|
|
||||||
{
|
|
||||||
var oDoc = ePreview.ownerDocument || ePreview.document ;
|
|
||||||
var e = oDoc.createElement( 'EMBED' ) ;
|
|
||||||
|
|
||||||
e.src = GetE('txtUrl').value ;
|
|
||||||
e.type = 'application/x-shockwave-flash' ;
|
|
||||||
e.width = '100%' ;
|
|
||||||
e.height = '100%' ;
|
|
||||||
|
|
||||||
ePreview.appendChild( e ) ;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// <embed id="ePreview" src="fck_flash/claims.swf" width="100%" height="100%" style="visibility:hidden" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer">
|
|
||||||
|
|
||||||
function BrowseServer()
|
|
||||||
{
|
|
||||||
OpenFileBrowser( FCKConfig.FlashBrowserURL, FCKConfig.FlashBrowserWindowWidth, FCKConfig.FlashBrowserWindowHeight ) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
function SetUrl( url, width, height )
|
|
||||||
{
|
|
||||||
GetE('txtUrl').value = url ;
|
|
||||||
|
|
||||||
if ( width )
|
|
||||||
GetE('txtWidth').value = width ;
|
|
||||||
|
|
||||||
if ( height )
|
|
||||||
GetE('txtHeight').value = height ;
|
|
||||||
|
|
||||||
UpdatePreview() ;
|
|
||||||
|
|
||||||
window.parent.SetSelectedTab( 'Info' ) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
function OnUploadCompleted( errorNumber, fileUrl, fileName, customMsg )
|
|
||||||
{
|
|
||||||
switch ( errorNumber )
|
|
||||||
{
|
|
||||||
case 0 : // No errors
|
|
||||||
alert( 'Your file has been successfully uploaded' ) ;
|
|
||||||
break ;
|
|
||||||
case 1 : // Custom error
|
|
||||||
alert( customMsg ) ;
|
|
||||||
return ;
|
|
||||||
case 101 : // Custom warning
|
|
||||||
alert( customMsg ) ;
|
|
||||||
break ;
|
|
||||||
case 201 :
|
|
||||||
alert( 'A file with the same name is already available. The uploaded file has been renamed to "' + fileName + '"' ) ;
|
|
||||||
break ;
|
|
||||||
case 202 :
|
|
||||||
alert( 'Invalid file type' ) ;
|
|
||||||
return ;
|
|
||||||
case 203 :
|
|
||||||
alert( "Security error. You probably don't have enough permissions to upload. Please check your server." ) ;
|
|
||||||
return ;
|
|
||||||
default :
|
|
||||||
alert( 'Error on file upload. Error number: ' + errorNumber ) ;
|
|
||||||
return ;
|
|
||||||
}
|
|
||||||
|
|
||||||
SetUrl( fileUrl ) ;
|
|
||||||
GetE('frmUpload').reset() ;
|
|
||||||
}
|
|
||||||
|
|
||||||
var oUploadAllowedExtRegex = new RegExp( FCKConfig.FlashUploadAllowedExtensions, 'i' ) ;
|
|
||||||
var oUploadDeniedExtRegex = new RegExp( FCKConfig.FlashUploadDeniedExtensions, 'i' ) ;
|
|
||||||
|
|
||||||
function CheckUpload()
|
|
||||||
{
|
|
||||||
var sFile = GetE('txtUploadFile').value ;
|
|
||||||
|
|
||||||
if ( sFile.length == 0 )
|
|
||||||
{
|
|
||||||
alert( 'Please select a file to upload' ) ;
|
|
||||||
return false ;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( ( FCKConfig.FlashUploadAllowedExtensions.length > 0 && !oUploadAllowedExtRegex.test( sFile ) ) ||
|
|
||||||
( FCKConfig.FlashUploadDeniedExtensions.length > 0 && oUploadDeniedExtRegex.test( sFile ) ) )
|
|
||||||
{
|
|
||||||
OnUploadCompleted( 202 ) ;
|
|
||||||
return false ;
|
|
||||||
}
|
|
||||||
|
|
||||||
return true ;
|
|
||||||
}
|
|
||||||
@@ -1,50 +0,0 @@
|
|||||||
<!--
|
|
||||||
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
|
||||||
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
|
||||||
*
|
|
||||||
* == BEGIN LICENSE ==
|
|
||||||
*
|
|
||||||
* Licensed under the terms of any of the following licenses at your
|
|
||||||
* choice:
|
|
||||||
*
|
|
||||||
* - GNU General Public License Version 2 or later (the "GPL")
|
|
||||||
* http://www.gnu.org/licenses/gpl.html
|
|
||||||
*
|
|
||||||
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
|
||||||
* http://www.gnu.org/licenses/lgpl.html
|
|
||||||
*
|
|
||||||
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
|
||||||
* http://www.mozilla.org/MPL/MPL-1.1.html
|
|
||||||
*
|
|
||||||
* == END LICENSE ==
|
|
||||||
*
|
|
||||||
* File Name: fck_flash_preview.html
|
|
||||||
* Preview page for the Flash dialog window.
|
|
||||||
*
|
|
||||||
* File Authors:
|
|
||||||
* Frederico Caldeira Knabben (www.fckeditor.net)
|
|
||||||
-->
|
|
||||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title></title>
|
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
|
||||||
<meta name="robots" content="noindex, nofollow">
|
|
||||||
<link href="../common/fck_dialog_common.css" rel="stylesheet" type="text/css" />
|
|
||||||
<script language="javascript">
|
|
||||||
|
|
||||||
// Sets the Skin CSS
|
|
||||||
document.write( '<link href="' + window.parent.FCKConfig.SkinPath + 'fck_dialog.css" type="text/css" rel="stylesheet">' ) ;
|
|
||||||
|
|
||||||
if ( window.parent.FCKConfig.BaseHref.length > 0 )
|
|
||||||
document.write( '<base href="' + window.parent.FCKConfig.BaseHref + '">' ) ;
|
|
||||||
|
|
||||||
window.onload = function()
|
|
||||||
{
|
|
||||||
window.parent.SetPreviewElement( document.body ) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
</script>
|
|
||||||
</head>
|
|
||||||
<body style="COLOR: #000000; BACKGROUND-COLOR: #ffffff"></body>
|
|
||||||
</html>
|
|
||||||
@@ -1,109 +0,0 @@
|
|||||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
|
|
||||||
<!--
|
|
||||||
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
|
||||||
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
|
||||||
*
|
|
||||||
* == BEGIN LICENSE ==
|
|
||||||
*
|
|
||||||
* Licensed under the terms of any of the following licenses at your
|
|
||||||
* choice:
|
|
||||||
*
|
|
||||||
* - GNU General Public License Version 2 or later (the "GPL")
|
|
||||||
* http://www.gnu.org/licenses/gpl.html
|
|
||||||
*
|
|
||||||
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
|
||||||
* http://www.gnu.org/licenses/lgpl.html
|
|
||||||
*
|
|
||||||
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
|
||||||
* http://www.mozilla.org/MPL/MPL-1.1.html
|
|
||||||
*
|
|
||||||
* == END LICENSE ==
|
|
||||||
*
|
|
||||||
* File Name: fck_form.html
|
|
||||||
* Form dialog window.
|
|
||||||
*
|
|
||||||
* File Authors:
|
|
||||||
* Frederico Caldeira Knabben (www.fckeditor.net)
|
|
||||||
-->
|
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
||||||
<head>
|
|
||||||
<title></title>
|
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
||||||
<meta content="noindex, nofollow" name="robots" />
|
|
||||||
<script src="common/fck_dialog_common.js" type="text/javascript"></script>
|
|
||||||
<script type="text/javascript">
|
|
||||||
|
|
||||||
var oEditor = window.parent.InnerDialogLoaded() ;
|
|
||||||
|
|
||||||
// Gets the document DOM
|
|
||||||
var oDOM = oEditor.FCK.EditorDocument ;
|
|
||||||
|
|
||||||
var oActiveEl = oEditor.FCKSelection.MoveToAncestorNode( 'FORM' ) ;
|
|
||||||
|
|
||||||
window.onload = function()
|
|
||||||
{
|
|
||||||
// First of all, translate the dialog box texts
|
|
||||||
oEditor.FCKLanguageManager.TranslatePage(document) ;
|
|
||||||
|
|
||||||
if ( oActiveEl )
|
|
||||||
{
|
|
||||||
GetE('txtName').value = oActiveEl.name ;
|
|
||||||
GetE('txtAction').value = oActiveEl.getAttribute( 'action', 2 ) ;
|
|
||||||
GetE('txtMethod').value = oActiveEl.method ;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
oActiveEl = null ;
|
|
||||||
|
|
||||||
window.parent.SetOkButton( true ) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
function Ok()
|
|
||||||
{
|
|
||||||
if ( !oActiveEl )
|
|
||||||
{
|
|
||||||
oActiveEl = oEditor.FCK.EditorDocument.createElement( 'FORM' ) ;
|
|
||||||
oActiveEl = oEditor.FCK.InsertElementAndGetIt( oActiveEl ) ;
|
|
||||||
oActiveEl.innerHTML = ' ' ;
|
|
||||||
}
|
|
||||||
|
|
||||||
oActiveEl.name = GetE('txtName').value ;
|
|
||||||
SetAttribute( oActiveEl, 'action' , GetE('txtAction').value ) ;
|
|
||||||
oActiveEl.method = GetE('txtMethod').value ;
|
|
||||||
|
|
||||||
return true ;
|
|
||||||
}
|
|
||||||
|
|
||||||
</script>
|
|
||||||
</head>
|
|
||||||
<body style="overflow: hidden">
|
|
||||||
<table width="100%" style="height: 100%">
|
|
||||||
<tr>
|
|
||||||
<td align="center">
|
|
||||||
<table cellspacing="0" cellpadding="0" width="80%" border="0">
|
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
<span fcklang="DlgFormName">Name</span><br />
|
|
||||||
<input style="width: 100%" type="text" id="txtName" />
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
<span fcklang="DlgFormAction">Action</span><br />
|
|
||||||
<input style="width: 100%" type="text" id="txtAction" />
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
<span fcklang="DlgFormMethod">Method</span><br />
|
|
||||||
<select id="txtMethod">
|
|
||||||
<option value="get" selected="selected">GET</option>
|
|
||||||
<option value="post">POST</option>
|
|
||||||
</select>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
@@ -1,99 +0,0 @@
|
|||||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
|
|
||||||
<!--
|
|
||||||
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
|
||||||
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
|
||||||
*
|
|
||||||
* == BEGIN LICENSE ==
|
|
||||||
*
|
|
||||||
* Licensed under the terms of any of the following licenses at your
|
|
||||||
* choice:
|
|
||||||
*
|
|
||||||
* - GNU General Public License Version 2 or later (the "GPL")
|
|
||||||
* http://www.gnu.org/licenses/gpl.html
|
|
||||||
*
|
|
||||||
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
|
||||||
* http://www.gnu.org/licenses/lgpl.html
|
|
||||||
*
|
|
||||||
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
|
||||||
* http://www.mozilla.org/MPL/MPL-1.1.html
|
|
||||||
*
|
|
||||||
* == END LICENSE ==
|
|
||||||
*
|
|
||||||
* File Name: fck_hiddenfield.html
|
|
||||||
* Hidden Field dialog window.
|
|
||||||
*
|
|
||||||
* File Authors:
|
|
||||||
* Frederico Caldeira Knabben (www.fckeditor.net)
|
|
||||||
-->
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title>Hidden Field Properties</title>
|
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
|
||||||
<meta content="noindex, nofollow" name="robots">
|
|
||||||
<script src="common/fck_dialog_common.js" type="text/javascript"></script>
|
|
||||||
<script type="text/javascript">
|
|
||||||
|
|
||||||
var oEditor = window.parent.InnerDialogLoaded() ;
|
|
||||||
|
|
||||||
// Gets the document DOM
|
|
||||||
var oDOM = oEditor.FCK.EditorDocument ;
|
|
||||||
|
|
||||||
var oActiveEl = oEditor.FCKSelection.GetSelectedElement() ;
|
|
||||||
|
|
||||||
window.onload = function()
|
|
||||||
{
|
|
||||||
// First of all, translate the dialog box texts
|
|
||||||
oEditor.FCKLanguageManager.TranslatePage(document) ;
|
|
||||||
|
|
||||||
if ( oActiveEl && oActiveEl.tagName == 'INPUT' && oActiveEl.type == 'hidden' )
|
|
||||||
{
|
|
||||||
GetE('txtName').value = oActiveEl.name ;
|
|
||||||
GetE('txtValue').value = oActiveEl.value ;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
oActiveEl = null ;
|
|
||||||
|
|
||||||
window.parent.SetOkButton( true ) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
function Ok()
|
|
||||||
{
|
|
||||||
if ( !oActiveEl )
|
|
||||||
{
|
|
||||||
oActiveEl = oEditor.FCK.EditorDocument.createElement( 'INPUT' ) ;
|
|
||||||
oActiveEl.type = 'hidden' ;
|
|
||||||
oActiveEl = oEditor.FCK.InsertElementAndGetIt( oActiveEl ) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
oActiveEl.name = GetE('txtName').value ;
|
|
||||||
SetAttribute( oActiveEl, 'value', GetE('txtValue').value ) ;
|
|
||||||
|
|
||||||
return true ;
|
|
||||||
}
|
|
||||||
|
|
||||||
</script>
|
|
||||||
</head>
|
|
||||||
<body style="OVERFLOW: hidden" scroll="no">
|
|
||||||
<table height="100%" width="100%">
|
|
||||||
<tr>
|
|
||||||
<td align="center">
|
|
||||||
<table border="0" class="inhoud" cellpadding="0" cellspacing="0" width="80%">
|
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
<span fckLang="DlgHiddenName">Name</span><br>
|
|
||||||
<input type="text" size="20" id="txtName" style="WIDTH: 100%">
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
<span fckLang="DlgHiddenValue">Value</span><br>
|
|
||||||
<input type="text" size="30" id="txtValue" style="WIDTH: 100%">
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
@@ -1,256 +0,0 @@
|
|||||||
<!--
|
|
||||||
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
|
||||||
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
|
||||||
*
|
|
||||||
* == BEGIN LICENSE ==
|
|
||||||
*
|
|
||||||
* Licensed under the terms of any of the following licenses at your
|
|
||||||
* choice:
|
|
||||||
*
|
|
||||||
* - GNU General Public License Version 2 or later (the "GPL")
|
|
||||||
* http://www.gnu.org/licenses/gpl.html
|
|
||||||
*
|
|
||||||
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
|
||||||
* http://www.gnu.org/licenses/lgpl.html
|
|
||||||
*
|
|
||||||
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
|
||||||
* http://www.mozilla.org/MPL/MPL-1.1.html
|
|
||||||
*
|
|
||||||
* == END LICENSE ==
|
|
||||||
*
|
|
||||||
* File Name: fck_image.html
|
|
||||||
* Image Properties dialog window.
|
|
||||||
*
|
|
||||||
* File Authors:
|
|
||||||
* Frederico Caldeira Knabben (www.fckeditor.net)
|
|
||||||
-->
|
|
||||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
||||||
<head>
|
|
||||||
<title>Image Properties</title>
|
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
||||||
<meta name="robots" content="noindex, nofollow" />
|
|
||||||
<script src="common/fck_dialog_common.js" type="text/javascript"></script>
|
|
||||||
<script src="fck_image/fck_image.js" type="text/javascript"></script>
|
|
||||||
<link href="common/fck_dialog_common.css" rel="stylesheet" type="text/css" />
|
|
||||||
</head>
|
|
||||||
<body scroll="no" style="overflow: hidden">
|
|
||||||
<div id="divInfo">
|
|
||||||
<table cellspacing="1" cellpadding="1" border="0" width="100%" height="100%">
|
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
<table cellspacing="0" cellpadding="0" width="100%" border="0">
|
|
||||||
<tr>
|
|
||||||
<td width="100%">
|
|
||||||
<span fcklang="DlgImgURL">URL</span>
|
|
||||||
</td>
|
|
||||||
<td id="tdBrowse" style="display: none" nowrap="nowrap" rowspan="2">
|
|
||||||
|
|
||||||
<input id="btnBrowse" onclick="BrowseServer();" type="button" value="Browse Server"
|
|
||||||
fcklang="DlgBtnBrowseServer" />
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td valign="top">
|
|
||||||
<input id="txtUrl" style="width: 100%" type="text" onblur="UpdatePreview();" />
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
<span fcklang="DlgImgAlt">Short Description</span><br />
|
|
||||||
<input id="txtAlt" style="width: 100%" type="text" /><br />
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr height="100%">
|
|
||||||
<td valign="top">
|
|
||||||
<table cellspacing="0" cellpadding="0" width="100%" border="0" height="100%">
|
|
||||||
<tr>
|
|
||||||
<td valign="top">
|
|
||||||
<br />
|
|
||||||
<table cellspacing="0" cellpadding="0" border="0">
|
|
||||||
<tr>
|
|
||||||
<td nowrap="nowrap">
|
|
||||||
<span fcklang="DlgImgWidth">Width</span> </td>
|
|
||||||
<td>
|
|
||||||
<input type="text" size="3" id="txtWidth" onkeyup="OnSizeChanged('Width',this.value);" /></td>
|
|
||||||
<td rowspan="2">
|
|
||||||
<div id="btnLockSizes" class="BtnLocked" onmouseover="this.className = (bLockRatio ? 'BtnLocked' : 'BtnUnlocked' ) + ' BtnOver';"
|
|
||||||
onmouseout="this.className = (bLockRatio ? 'BtnLocked' : 'BtnUnlocked' );" title="Lock Sizes"
|
|
||||||
onclick="SwitchLock(this);">
|
|
||||||
</div>
|
|
||||||
</td>
|
|
||||||
<td rowspan="2">
|
|
||||||
<div id="btnResetSize" class="BtnReset" onmouseover="this.className='BtnReset BtnOver';"
|
|
||||||
onmouseout="this.className='BtnReset';" title="Reset Size" onclick="ResetSizes();">
|
|
||||||
</div>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td nowrap="nowrap">
|
|
||||||
<span fcklang="DlgImgHeight">Height</span> </td>
|
|
||||||
<td>
|
|
||||||
<input type="text" size="3" id="txtHeight" onkeyup="OnSizeChanged('Height',this.value);" /></td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
<br />
|
|
||||||
<table cellspacing="0" cellpadding="0" border="0">
|
|
||||||
<tr>
|
|
||||||
<td nowrap="nowrap">
|
|
||||||
<span fcklang="DlgImgBorder">Border</span> </td>
|
|
||||||
<td>
|
|
||||||
<input type="text" size="2" value="" id="txtBorder" onkeyup="UpdatePreview();" /></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td nowrap="nowrap">
|
|
||||||
<span fcklang="DlgImgHSpace">HSpace</span> </td>
|
|
||||||
<td>
|
|
||||||
<input type="text" size="2" id="txtHSpace" onkeyup="UpdatePreview();" /></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td nowrap="nowrap">
|
|
||||||
<span fcklang="DlgImgVSpace">VSpace</span> </td>
|
|
||||||
<td>
|
|
||||||
<input type="text" size="2" id="txtVSpace" onkeyup="UpdatePreview();" /></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td nowrap="nowrap">
|
|
||||||
<span fcklang="DlgImgAlign">Align</span> </td>
|
|
||||||
<td>
|
|
||||||
<select id="cmbAlign" onchange="UpdatePreview();">
|
|
||||||
<option value="" selected="selected"></option>
|
|
||||||
<option fcklang="DlgImgAlignLeft" value="left">Left</option>
|
|
||||||
<option fcklang="DlgImgAlignAbsBottom" value="absBottom">Abs Bottom</option>
|
|
||||||
<option fcklang="DlgImgAlignAbsMiddle" value="absMiddle">Abs Middle</option>
|
|
||||||
<option fcklang="DlgImgAlignBaseline" value="baseline">Baseline</option>
|
|
||||||
<option fcklang="DlgImgAlignBottom" value="bottom">Bottom</option>
|
|
||||||
<option fcklang="DlgImgAlignMiddle" value="middle">Middle</option>
|
|
||||||
<option fcklang="DlgImgAlignRight" value="right">Right</option>
|
|
||||||
<option fcklang="DlgImgAlignTextTop" value="textTop">Text Top</option>
|
|
||||||
<option fcklang="DlgImgAlignTop" value="top">Top</option>
|
|
||||||
</select>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
</td>
|
|
||||||
<td width="100%" valign="top">
|
|
||||||
<table cellpadding="0" cellspacing="0" width="100%" style="table-layout: fixed">
|
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
<span fcklang="DlgImgPreview">Preview</span></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td valign="top">
|
|
||||||
<iframe class="ImagePreviewArea" src="fck_image/fck_image_preview.html" frameborder="0"
|
|
||||||
marginheight="0" marginwidth="0"></iframe>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
<div id="divUpload" style="display: none">
|
|
||||||
<form id="frmUpload" method="post" target="UploadWindow" enctype="multipart/form-data"
|
|
||||||
action="" onsubmit="return CheckUpload();">
|
|
||||||
<span fcklang="DlgLnkUpload">Upload</span><br />
|
|
||||||
<input id="txtUploadFile" style="width: 100%" type="file" size="40" name="NewFile" /><br />
|
|
||||||
<br />
|
|
||||||
<input id="btnUpload" type="submit" value="Send it to the Server" fcklang="DlgLnkBtnUpload" />
|
|
||||||
<iframe name="UploadWindow" style="display: none" src="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>
|
|
||||||
@@ -1,490 +0,0 @@
|
|||||||
/*
|
|
||||||
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
|
||||||
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
|
||||||
*
|
|
||||||
* == BEGIN LICENSE ==
|
|
||||||
*
|
|
||||||
* Licensed under the terms of any of the following licenses at your
|
|
||||||
* choice:
|
|
||||||
*
|
|
||||||
* - GNU General Public License Version 2 or later (the "GPL")
|
|
||||||
* http://www.gnu.org/licenses/gpl.html
|
|
||||||
*
|
|
||||||
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
|
||||||
* http://www.gnu.org/licenses/lgpl.html
|
|
||||||
*
|
|
||||||
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
|
||||||
* http://www.mozilla.org/MPL/MPL-1.1.html
|
|
||||||
*
|
|
||||||
* == END LICENSE ==
|
|
||||||
*
|
|
||||||
* File Name: fck_image.js
|
|
||||||
* Scripts related to the Image dialog window (see fck_image.html).
|
|
||||||
*
|
|
||||||
* File Authors:
|
|
||||||
* Frederico Caldeira Knabben (www.fckeditor.net)
|
|
||||||
*/
|
|
||||||
|
|
||||||
var oEditor = window.parent.InnerDialogLoaded() ;
|
|
||||||
var FCK = oEditor.FCK ;
|
|
||||||
var FCKLang = oEditor.FCKLang ;
|
|
||||||
var FCKConfig = oEditor.FCKConfig ;
|
|
||||||
var FCKDebug = oEditor.FCKDebug ;
|
|
||||||
|
|
||||||
var bImageButton = ( document.location.search.length > 0 && document.location.search.substr(1) == 'ImageButton' ) ;
|
|
||||||
|
|
||||||
//#### Dialog Tabs
|
|
||||||
|
|
||||||
// Set the dialog tabs.
|
|
||||||
window.parent.AddTab( 'Info', FCKLang.DlgImgInfoTab ) ;
|
|
||||||
|
|
||||||
if ( !bImageButton && !FCKConfig.ImageDlgHideLink )
|
|
||||||
window.parent.AddTab( 'Link', FCKLang.DlgImgLinkTab ) ;
|
|
||||||
|
|
||||||
if ( FCKConfig.ImageUpload )
|
|
||||||
window.parent.AddTab( 'Upload', FCKLang.DlgLnkUpload ) ;
|
|
||||||
|
|
||||||
if ( !FCKConfig.ImageDlgHideAdvanced )
|
|
||||||
window.parent.AddTab( 'Advanced', FCKLang.DlgAdvancedTag ) ;
|
|
||||||
|
|
||||||
// Function called when a dialog tag is selected.
|
|
||||||
function OnDialogTabChange( tabCode )
|
|
||||||
{
|
|
||||||
ShowE('divInfo' , ( tabCode == 'Info' ) ) ;
|
|
||||||
ShowE('divLink' , ( tabCode == 'Link' ) ) ;
|
|
||||||
ShowE('divUpload' , ( tabCode == 'Upload' ) ) ;
|
|
||||||
ShowE('divAdvanced' , ( tabCode == 'Advanced' ) ) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Get the selected image (if available).
|
|
||||||
var oImage = FCK.Selection.GetSelectedElement() ;
|
|
||||||
|
|
||||||
if ( oImage && oImage.tagName != 'IMG' && !( oImage.tagName == 'INPUT' && oImage.type == 'image' ) )
|
|
||||||
oImage = null ;
|
|
||||||
|
|
||||||
// Get the active link.
|
|
||||||
var oLink = FCK.Selection.MoveToAncestorNode( 'A' ) ;
|
|
||||||
|
|
||||||
var oImageOriginal ;
|
|
||||||
|
|
||||||
function UpdateOriginal( resetSize )
|
|
||||||
{
|
|
||||||
if ( !eImgPreview )
|
|
||||||
return ;
|
|
||||||
|
|
||||||
if ( GetE('txtUrl').value.length == 0 )
|
|
||||||
{
|
|
||||||
oImageOriginal = null ;
|
|
||||||
return ;
|
|
||||||
}
|
|
||||||
|
|
||||||
oImageOriginal = document.createElement( 'IMG' ) ; // new Image() ;
|
|
||||||
|
|
||||||
if ( resetSize )
|
|
||||||
{
|
|
||||||
oImageOriginal.onload = function()
|
|
||||||
{
|
|
||||||
this.onload = null ;
|
|
||||||
ResetSizes() ;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
oImageOriginal.src = eImgPreview.src ;
|
|
||||||
}
|
|
||||||
|
|
||||||
var bPreviewInitialized ;
|
|
||||||
|
|
||||||
window.onload = function()
|
|
||||||
{
|
|
||||||
// Translate the dialog box texts.
|
|
||||||
oEditor.FCKLanguageManager.TranslatePage(document) ;
|
|
||||||
|
|
||||||
GetE('btnLockSizes').title = FCKLang.DlgImgLockRatio ;
|
|
||||||
GetE('btnResetSize').title = FCKLang.DlgBtnResetSize ;
|
|
||||||
|
|
||||||
// Load the selected element information (if any).
|
|
||||||
LoadSelection() ;
|
|
||||||
|
|
||||||
// Show/Hide the "Browse Server" button.
|
|
||||||
GetE('tdBrowse').style.display = FCKConfig.ImageBrowser ? '' : 'none' ;
|
|
||||||
GetE('divLnkBrowseServer').style.display = FCKConfig.LinkBrowser ? '' : 'none' ;
|
|
||||||
|
|
||||||
UpdateOriginal() ;
|
|
||||||
|
|
||||||
// Set the actual uploader URL.
|
|
||||||
if ( FCKConfig.ImageUpload )
|
|
||||||
GetE('frmUpload').action = FCKConfig.ImageUploadURL ;
|
|
||||||
|
|
||||||
window.parent.SetAutoSize( true ) ;
|
|
||||||
|
|
||||||
// Activate the "OK" button.
|
|
||||||
window.parent.SetOkButton( true ) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
function LoadSelection()
|
|
||||||
{
|
|
||||||
if ( ! oImage ) return ;
|
|
||||||
|
|
||||||
var sUrl = oImage.getAttribute( '_fcksavedurl' ) ;
|
|
||||||
if ( sUrl == null )
|
|
||||||
sUrl = GetAttribute( oImage, 'src', '' ) ;
|
|
||||||
|
|
||||||
GetE('txtUrl').value = sUrl ;
|
|
||||||
GetE('txtAlt').value = GetAttribute( oImage, 'alt', '' ) ;
|
|
||||||
GetE('txtVSpace').value = GetAttribute( oImage, 'vspace', '' ) ;
|
|
||||||
GetE('txtHSpace').value = GetAttribute( oImage, 'hspace', '' ) ;
|
|
||||||
GetE('txtBorder').value = GetAttribute( oImage, 'border', '' ) ;
|
|
||||||
GetE('cmbAlign').value = GetAttribute( oImage, 'align', '' ) ;
|
|
||||||
|
|
||||||
var iWidth, iHeight ;
|
|
||||||
|
|
||||||
var regexSize = /^\s*(\d+)px\s*$/i ;
|
|
||||||
|
|
||||||
if ( oImage.style.width )
|
|
||||||
{
|
|
||||||
var aMatchW = oImage.style.width.match( regexSize ) ;
|
|
||||||
if ( aMatchW )
|
|
||||||
{
|
|
||||||
iWidth = aMatchW[1] ;
|
|
||||||
oImage.style.width = '' ;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( oImage.style.height )
|
|
||||||
{
|
|
||||||
var aMatchH = oImage.style.height.match( regexSize ) ;
|
|
||||||
if ( aMatchH )
|
|
||||||
{
|
|
||||||
iHeight = aMatchH[1] ;
|
|
||||||
oImage.style.height = '' ;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
GetE('txtWidth').value = iWidth ? iWidth : GetAttribute( oImage, "width", '' ) ;
|
|
||||||
GetE('txtHeight').value = iHeight ? iHeight : GetAttribute( oImage, "height", '' ) ;
|
|
||||||
|
|
||||||
// Get Advances Attributes
|
|
||||||
GetE('txtAttId').value = oImage.id ;
|
|
||||||
GetE('cmbAttLangDir').value = oImage.dir ;
|
|
||||||
GetE('txtAttLangCode').value = oImage.lang ;
|
|
||||||
GetE('txtAttTitle').value = oImage.title ;
|
|
||||||
GetE('txtLongDesc').value = oImage.longDesc ;
|
|
||||||
|
|
||||||
if ( oEditor.FCKBrowserInfo.IsIE )
|
|
||||||
{
|
|
||||||
GetE('txtAttClasses').value = oImage.getAttribute('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 ;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( !bHasImage )
|
|
||||||
{
|
|
||||||
if ( bImageButton )
|
|
||||||
{
|
|
||||||
oImage = FCK.EditorDocument.createElement( 'INPUT' ) ;
|
|
||||||
oImage.type = 'image' ;
|
|
||||||
oImage = FCK.InsertElementAndGetIt( oImage ) ;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
oImage = FCK.CreateElement( 'IMG' ) ;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
oEditor.FCKUndo.SaveUndoStep() ;
|
|
||||||
|
|
||||||
UpdateImage( oImage ) ;
|
|
||||||
|
|
||||||
var sLnkUrl = GetE('txtLnkUrl').value.Trim() ;
|
|
||||||
|
|
||||||
if ( sLnkUrl.length == 0 )
|
|
||||||
{
|
|
||||||
if ( oLink )
|
|
||||||
FCK.ExecuteNamedCommand( 'Unlink' ) ;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if ( oLink ) // Modifying an existent link.
|
|
||||||
oLink.href = sLnkUrl ;
|
|
||||||
else // Creating a new link.
|
|
||||||
{
|
|
||||||
if ( !bHasImage )
|
|
||||||
oEditor.FCKSelection.SelectNode( oImage ) ;
|
|
||||||
|
|
||||||
oLink = oEditor.FCK.CreateLink( sLnkUrl ) ;
|
|
||||||
|
|
||||||
if ( !bHasImage )
|
|
||||||
{
|
|
||||||
oEditor.FCKSelection.SelectNode( oLink ) ;
|
|
||||||
oEditor.FCKSelection.Collapse( false ) ;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
SetAttribute( oLink, '_fcksavedurl', sLnkUrl ) ;
|
|
||||||
SetAttribute( oLink, 'target', GetE('cmbLnkTarget').value ) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
return true ;
|
|
||||||
}
|
|
||||||
|
|
||||||
function UpdateImage( e, skipId )
|
|
||||||
{
|
|
||||||
e.src = GetE('txtUrl').value ;
|
|
||||||
SetAttribute( e, "_fcksavedurl", GetE('txtUrl').value ) ;
|
|
||||||
SetAttribute( e, "alt" , GetE('txtAlt').value ) ;
|
|
||||||
SetAttribute( e, "width" , GetE('txtWidth').value ) ;
|
|
||||||
SetAttribute( e, "height", GetE('txtHeight').value ) ;
|
|
||||||
SetAttribute( e, "vspace", GetE('txtVSpace').value ) ;
|
|
||||||
SetAttribute( e, "hspace", GetE('txtHSpace').value ) ;
|
|
||||||
SetAttribute( e, "border", GetE('txtBorder').value ) ;
|
|
||||||
SetAttribute( e, "align" , GetE('cmbAlign').value ) ;
|
|
||||||
|
|
||||||
// Advances Attributes
|
|
||||||
|
|
||||||
if ( ! skipId )
|
|
||||||
SetAttribute( e, 'id', GetE('txtAttId').value ) ;
|
|
||||||
|
|
||||||
SetAttribute( e, 'dir' , GetE('cmbAttLangDir').value ) ;
|
|
||||||
SetAttribute( e, 'lang' , GetE('txtAttLangCode').value ) ;
|
|
||||||
SetAttribute( e, 'title' , GetE('txtAttTitle').value ) ;
|
|
||||||
SetAttribute( e, 'class' , GetE('txtAttClasses').value ) ;
|
|
||||||
SetAttribute( e, 'longDesc' , GetE('txtLongDesc').value ) ;
|
|
||||||
|
|
||||||
if ( oEditor.FCKBrowserInfo.IsIE )
|
|
||||||
e.style.cssText = GetE('txtAttStyle').value ;
|
|
||||||
else
|
|
||||||
SetAttribute( e, 'style', GetE('txtAttStyle').value ) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
var eImgPreview ;
|
|
||||||
var eImgPreviewLink ;
|
|
||||||
|
|
||||||
function SetPreviewElements( imageElement, linkElement )
|
|
||||||
{
|
|
||||||
eImgPreview = imageElement ;
|
|
||||||
eImgPreviewLink = linkElement ;
|
|
||||||
|
|
||||||
UpdatePreview() ;
|
|
||||||
UpdateOriginal() ;
|
|
||||||
|
|
||||||
bPreviewInitialized = true ;
|
|
||||||
}
|
|
||||||
|
|
||||||
function UpdatePreview()
|
|
||||||
{
|
|
||||||
if ( !eImgPreview || !eImgPreviewLink )
|
|
||||||
return ;
|
|
||||||
|
|
||||||
if ( GetE('txtUrl').value.length == 0 )
|
|
||||||
eImgPreviewLink.style.display = 'none' ;
|
|
||||||
else
|
|
||||||
{
|
|
||||||
UpdateImage( eImgPreview, true ) ;
|
|
||||||
|
|
||||||
if ( GetE('txtLnkUrl').value.Trim().length > 0 )
|
|
||||||
eImgPreviewLink.href = 'javascript:void(null);' ;
|
|
||||||
else
|
|
||||||
SetAttribute( eImgPreviewLink, 'href', '' ) ;
|
|
||||||
|
|
||||||
eImgPreviewLink.style.display = '' ;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var bLockRatio = true ;
|
|
||||||
|
|
||||||
function SwitchLock( lockButton )
|
|
||||||
{
|
|
||||||
bLockRatio = !bLockRatio ;
|
|
||||||
lockButton.className = bLockRatio ? 'BtnLocked' : 'BtnUnlocked' ;
|
|
||||||
lockButton.title = bLockRatio ? 'Lock sizes' : 'Unlock sizes' ;
|
|
||||||
|
|
||||||
if ( bLockRatio )
|
|
||||||
{
|
|
||||||
if ( GetE('txtWidth').value.length > 0 )
|
|
||||||
OnSizeChanged( 'Width', GetE('txtWidth').value ) ;
|
|
||||||
else
|
|
||||||
OnSizeChanged( 'Height', GetE('txtHeight').value ) ;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Fired when the width or height input texts change
|
|
||||||
function OnSizeChanged( dimension, value )
|
|
||||||
{
|
|
||||||
// Verifies if the aspect ration has to be mantained
|
|
||||||
if ( oImageOriginal && bLockRatio )
|
|
||||||
{
|
|
||||||
var e = dimension == 'Width' ? GetE('txtHeight') : GetE('txtWidth') ;
|
|
||||||
|
|
||||||
if ( value.length == 0 || isNaN( value ) )
|
|
||||||
{
|
|
||||||
e.value = '' ;
|
|
||||||
return ;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( dimension == 'Width' )
|
|
||||||
value = value == 0 ? 0 : Math.round( oImageOriginal.height * ( value / oImageOriginal.width ) ) ;
|
|
||||||
else
|
|
||||||
value = value == 0 ? 0 : Math.round( oImageOriginal.width * ( value / oImageOriginal.height ) ) ;
|
|
||||||
|
|
||||||
if ( !isNaN( value ) )
|
|
||||||
e.value = value ;
|
|
||||||
}
|
|
||||||
|
|
||||||
UpdatePreview() ;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Fired when the Reset Size button is clicked
|
|
||||||
function ResetSizes()
|
|
||||||
{
|
|
||||||
if ( ! oImageOriginal ) return ;
|
|
||||||
|
|
||||||
GetE('txtWidth').value = oImageOriginal.width ;
|
|
||||||
GetE('txtHeight').value = oImageOriginal.height ;
|
|
||||||
|
|
||||||
UpdatePreview() ;
|
|
||||||
}
|
|
||||||
|
|
||||||
function BrowseServer()
|
|
||||||
{
|
|
||||||
OpenServerBrowser(
|
|
||||||
'Image',
|
|
||||||
FCKConfig.ImageBrowserURL,
|
|
||||||
FCKConfig.ImageBrowserWindowWidth,
|
|
||||||
FCKConfig.ImageBrowserWindowHeight ) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
function LnkBrowseServer()
|
|
||||||
{
|
|
||||||
OpenServerBrowser(
|
|
||||||
'Link',
|
|
||||||
FCKConfig.LinkBrowserURL,
|
|
||||||
FCKConfig.LinkBrowserWindowWidth,
|
|
||||||
FCKConfig.LinkBrowserWindowHeight ) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
function OpenServerBrowser( type, url, width, height )
|
|
||||||
{
|
|
||||||
sActualBrowser = type ;
|
|
||||||
OpenFileBrowser( url, width, height ) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
var sActualBrowser ;
|
|
||||||
|
|
||||||
function SetUrl( url, width, height, alt )
|
|
||||||
{
|
|
||||||
if ( sActualBrowser == 'Link' )
|
|
||||||
{
|
|
||||||
GetE('txtLnkUrl').value = url ;
|
|
||||||
UpdatePreview() ;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
GetE('txtUrl').value = url ;
|
|
||||||
GetE('txtWidth').value = width ? width : '' ;
|
|
||||||
GetE('txtHeight').value = height ? height : '' ;
|
|
||||||
|
|
||||||
if ( alt )
|
|
||||||
GetE('txtAlt').value = alt;
|
|
||||||
|
|
||||||
UpdatePreview() ;
|
|
||||||
UpdateOriginal( true ) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
window.parent.SetSelectedTab( 'Info' ) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
function OnUploadCompleted( errorNumber, fileUrl, fileName, customMsg )
|
|
||||||
{
|
|
||||||
switch ( errorNumber )
|
|
||||||
{
|
|
||||||
case 0 : // No errors
|
|
||||||
alert( 'Your file has been successfully uploaded' ) ;
|
|
||||||
break ;
|
|
||||||
case 1 : // Custom error
|
|
||||||
alert( customMsg ) ;
|
|
||||||
return ;
|
|
||||||
case 101 : // Custom warning
|
|
||||||
alert( customMsg ) ;
|
|
||||||
break ;
|
|
||||||
case 201 :
|
|
||||||
alert( 'A file with the same name is already available. The uploaded file has been renamed to "' + fileName + '"' ) ;
|
|
||||||
break ;
|
|
||||||
case 202 :
|
|
||||||
alert( 'Invalid file type' ) ;
|
|
||||||
return ;
|
|
||||||
case 203 :
|
|
||||||
alert( "Security error. You probably don't have enough permissions to upload. Please check your server." ) ;
|
|
||||||
return ;
|
|
||||||
default :
|
|
||||||
alert( 'Error on file upload. Error number: ' + errorNumber ) ;
|
|
||||||
return ;
|
|
||||||
}
|
|
||||||
|
|
||||||
sActualBrowser = '' ;
|
|
||||||
SetUrl( fileUrl ) ;
|
|
||||||
GetE('frmUpload').reset() ;
|
|
||||||
}
|
|
||||||
|
|
||||||
var oUploadAllowedExtRegex = new RegExp( FCKConfig.ImageUploadAllowedExtensions, 'i' ) ;
|
|
||||||
var oUploadDeniedExtRegex = new RegExp( FCKConfig.ImageUploadDeniedExtensions, 'i' ) ;
|
|
||||||
|
|
||||||
function CheckUpload()
|
|
||||||
{
|
|
||||||
var sFile = GetE('txtUploadFile').value ;
|
|
||||||
|
|
||||||
if ( sFile.length == 0 )
|
|
||||||
{
|
|
||||||
alert( 'Please select a file to upload' ) ;
|
|
||||||
return false ;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( ( FCKConfig.ImageUploadAllowedExtensions.length > 0 && !oUploadAllowedExtRegex.test( sFile ) ) ||
|
|
||||||
( FCKConfig.ImageUploadDeniedExtensions.length > 0 && oUploadDeniedExtRegex.test( sFile ) ) )
|
|
||||||
{
|
|
||||||
OnUploadCompleted( 202 ) ;
|
|
||||||
return false ;
|
|
||||||
}
|
|
||||||
|
|
||||||
return true ;
|
|
||||||
}
|
|
||||||
@@ -1,69 +0,0 @@
|
|||||||
<!--
|
|
||||||
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
|
||||||
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
|
||||||
*
|
|
||||||
* == BEGIN LICENSE ==
|
|
||||||
*
|
|
||||||
* Licensed under the terms of any of the following licenses at your
|
|
||||||
* choice:
|
|
||||||
*
|
|
||||||
* - GNU General Public License Version 2 or later (the "GPL")
|
|
||||||
* http://www.gnu.org/licenses/gpl.html
|
|
||||||
*
|
|
||||||
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
|
||||||
* http://www.gnu.org/licenses/lgpl.html
|
|
||||||
*
|
|
||||||
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
|
||||||
* http://www.mozilla.org/MPL/MPL-1.1.html
|
|
||||||
*
|
|
||||||
* == END LICENSE ==
|
|
||||||
*
|
|
||||||
* File Name: fck_image_preview.html
|
|
||||||
* Preview page for the Image dialog window.
|
|
||||||
* Curiosity: http://en.wikipedia.org/wiki/Lorem_ipsum
|
|
||||||
*
|
|
||||||
* File Authors:
|
|
||||||
* Frederico Caldeira Knabben (www.fckeditor.net)
|
|
||||||
-->
|
|
||||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
||||||
<head>
|
|
||||||
<title></title>
|
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
||||||
<meta name="robots" content="noindex, nofollow" />
|
|
||||||
<link href="../common/fck_dialog_common.css" rel="stylesheet" type="text/css" />
|
|
||||||
<script type="text/javascript">
|
|
||||||
|
|
||||||
// Sets the Skin CSS
|
|
||||||
document.write( '<link href="' + window.parent.FCKConfig.SkinPath + 'fck_dialog.css" type="text/css" rel="stylesheet">' ) ;
|
|
||||||
|
|
||||||
if ( window.parent.FCKConfig.BaseHref.length > 0 )
|
|
||||||
document.write( '<base href="' + window.parent.FCKConfig.BaseHref + '">' ) ;
|
|
||||||
|
|
||||||
window.onload = function()
|
|
||||||
{
|
|
||||||
window.parent.SetPreviewElements(
|
|
||||||
document.getElementById( 'imgPreview' ),
|
|
||||||
document.getElementById( 'lnkPreview' ) ) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
</script>
|
|
||||||
</head>
|
|
||||||
<body style="color: #000000; background-color: #ffffff">
|
|
||||||
<a id="lnkPreview" onclick="return false;" style="cursor: default">
|
|
||||||
<img id="imgPreview" onload="window.parent.UpdateOriginal();" style="display: none" /></a>Lorem
|
|
||||||
ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas feugiat consequat diam.
|
|
||||||
Maecenas metus. Vivamus diam purus, cursus a, commodo non, facilisis vitae, nulla.
|
|
||||||
Aenean dictum lacinia tortor. Nunc iaculis, nibh non iaculis aliquam, orci felis
|
|
||||||
euismod neque, sed ornare massa mauris sed velit. Nulla pretium mi et risus. Fusce
|
|
||||||
mi pede, tempor id, cursus ac, ullamcorper nec, enim. Sed tortor. Curabitur molestie.
|
|
||||||
Duis velit augue, condimentum at, ultrices a, luctus ut, orci. Donec pellentesque
|
|
||||||
egestas eros. Integer cursus, augue in cursus faucibus, eros pede bibendum sem,
|
|
||||||
in tempus tellus justo quis ligula. Etiam eget tortor. Vestibulum rutrum, est ut
|
|
||||||
placerat elementum, lectus nisl aliquam velit, tempor aliquam eros nunc nonummy
|
|
||||||
metus. In eros metus, gravida a, gravida sed, lobortis id, turpis. Ut ultrices,
|
|
||||||
ipsum at venenatis fringilla, sem nulla lacinia tellus, eget aliquet turpis mauris
|
|
||||||
non enim. Nam turpis. Suspendisse lacinia. Curabitur ac tortor ut ipsum egestas
|
|
||||||
elementum. Nunc imperdiet gravida mauris.
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
@@ -1,297 +0,0 @@
|
|||||||
<!--
|
|
||||||
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
|
||||||
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
|
||||||
*
|
|
||||||
* == BEGIN LICENSE ==
|
|
||||||
*
|
|
||||||
* Licensed under the terms of any of the following licenses at your
|
|
||||||
* choice:
|
|
||||||
*
|
|
||||||
* - GNU General Public License Version 2 or later (the "GPL")
|
|
||||||
* http://www.gnu.org/licenses/gpl.html
|
|
||||||
*
|
|
||||||
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
|
||||||
* http://www.gnu.org/licenses/lgpl.html
|
|
||||||
*
|
|
||||||
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
|
||||||
* http://www.mozilla.org/MPL/MPL-1.1.html
|
|
||||||
*
|
|
||||||
* == END LICENSE ==
|
|
||||||
*
|
|
||||||
* File Name: fck_link.html
|
|
||||||
* Link dialog window.
|
|
||||||
*
|
|
||||||
* File Authors:
|
|
||||||
* Frederico Caldeira Knabben (www.fckeditor.net)
|
|
||||||
-->
|
|
||||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title>Link Properties</title>
|
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
||||||
<meta name="robots" content="noindex, nofollow" />
|
|
||||||
<script src="common/fck_dialog_common.js" type="text/javascript"></script>
|
|
||||||
<script src="fck_link/fck_link.js" type="text/javascript"></script>
|
|
||||||
</head>
|
|
||||||
<body scroll="no" style="OVERFLOW: hidden">
|
|
||||||
<div id="divInfo" style="DISPLAY: none">
|
|
||||||
<span fckLang="DlgLnkType">Link Type</span><br />
|
|
||||||
<select id="cmbLinkType" onchange="SetLinkType(this.value);">
|
|
||||||
<option value="url" fckLang="DlgLnkTypeURL" selected="selected">URL</option>
|
|
||||||
<option value="anchor" fckLang="DlgLnkTypeAnchor">Anchor in this page</option>
|
|
||||||
<option value="email" fckLang="DlgLnkTypeEMail">E-Mail</option>
|
|
||||||
</select>
|
|
||||||
<br />
|
|
||||||
<br />
|
|
||||||
<div id="divLinkTypeUrl">
|
|
||||||
<table cellspacing="0" cellpadding="0" width="100%" border="0" dir="ltr">
|
|
||||||
<tr>
|
|
||||||
<td nowrap="nowrap">
|
|
||||||
<span fckLang="DlgLnkProto">Protocol</span><br />
|
|
||||||
<select id="cmbLinkProtocol">
|
|
||||||
<option value="http://" selected="selected">http://</option>
|
|
||||||
<option value="https://">https://</option>
|
|
||||||
<option value="ftp://">ftp://</option>
|
|
||||||
<option value="news://">news://</option>
|
|
||||||
<option value="" fckLang="DlgLnkProtoOther"><other></option>
|
|
||||||
</select>
|
|
||||||
</td>
|
|
||||||
<td nowrap="nowrap"> </td>
|
|
||||||
<td nowrap="nowrap" width="100%">
|
|
||||||
<span fckLang="DlgLnkURL">URL</span><br />
|
|
||||||
<input id="txtUrl" style="WIDTH: 100%" type="text" onkeyup="OnUrlChange();" onchange="OnUrlChange();" />
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
<br />
|
|
||||||
<div id="divBrowseServer">
|
|
||||||
<input type="button" value="Browse Server" fckLang="DlgBtnBrowseServer" onclick="BrowseServer();" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div id="divLinkTypeAnchor" style="DISPLAY: none" align="center">
|
|
||||||
<div id="divSelAnchor" style="DISPLAY: none">
|
|
||||||
<table cellspacing="0" cellpadding="0" border="0" width="70%">
|
|
||||||
<tr>
|
|
||||||
<td colspan="3">
|
|
||||||
<span fckLang="DlgLnkAnchorSel">Select an Anchor</span>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td width="50%">
|
|
||||||
<span fckLang="DlgLnkAnchorByName">By Anchor Name</span><br />
|
|
||||||
<select id="cmbAnchorName" onchange="GetE('cmbAnchorId').value='';" style="WIDTH: 100%">
|
|
||||||
<option value="" selected="selected"></option>
|
|
||||||
</select>
|
|
||||||
</td>
|
|
||||||
<td> </td>
|
|
||||||
<td width="50%">
|
|
||||||
<span fckLang="DlgLnkAnchorById">By Element Id</span><br />
|
|
||||||
<select id="cmbAnchorId" onchange="GetE('cmbAnchorName').value='';" style="WIDTH: 100%">
|
|
||||||
<option value="" selected="selected"></option>
|
|
||||||
</select>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
<div id="divNoAnchor" style="DISPLAY: none">
|
|
||||||
<span fckLang="DlgLnkNoAnchors"><No anchors available in the document></span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div id="divLinkTypeEMail" style="DISPLAY: none">
|
|
||||||
<span fckLang="DlgLnkEMail">E-Mail Address</span><br />
|
|
||||||
<input id="txtEMailAddress" style="WIDTH: 100%" type="text" /><br />
|
|
||||||
<span fckLang="DlgLnkEMailSubject">Message Subject</span><br />
|
|
||||||
<input id="txtEMailSubject" style="WIDTH: 100%" type="text" /><br />
|
|
||||||
<span fckLang="DlgLnkEMailBody">Message Body</span><br />
|
|
||||||
<textarea id="txtEMailBody" style="WIDTH: 100%" rows="3" cols="20"></textarea>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div id="divUpload" style="DISPLAY: none">
|
|
||||||
<form id="frmUpload" method="post" target="UploadWindow" enctype="multipart/form-data" action="" onsubmit="return CheckUpload();">
|
|
||||||
<span fckLang="DlgLnkUpload">Upload</span><br />
|
|
||||||
<input id="txtUploadFile" style="WIDTH: 100%" type="file" size="40" name="NewFile" /><br />
|
|
||||||
<br />
|
|
||||||
<input id="btnUpload" type="submit" value="Send it to the Server" fckLang="DlgLnkBtnUpload" />
|
|
||||||
<iframe name="UploadWindow" style="DISPLAY: none" src="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>
|
|
||||||
@@ -1,678 +0,0 @@
|
|||||||
/*
|
|
||||||
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
|
||||||
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
|
||||||
*
|
|
||||||
* == BEGIN LICENSE ==
|
|
||||||
*
|
|
||||||
* Licensed under the terms of any of the following licenses at your
|
|
||||||
* choice:
|
|
||||||
*
|
|
||||||
* - GNU General Public License Version 2 or later (the "GPL")
|
|
||||||
* http://www.gnu.org/licenses/gpl.html
|
|
||||||
*
|
|
||||||
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
|
||||||
* http://www.gnu.org/licenses/lgpl.html
|
|
||||||
*
|
|
||||||
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
|
||||||
* http://www.mozilla.org/MPL/MPL-1.1.html
|
|
||||||
*
|
|
||||||
* == END LICENSE ==
|
|
||||||
*
|
|
||||||
* File Name: fck_link.js
|
|
||||||
* Scripts related to the Link dialog window (see fck_link.html).
|
|
||||||
*
|
|
||||||
* File Authors:
|
|
||||||
* Frederico Caldeira Knabben (www.fckeditor.net)
|
|
||||||
* Dominik Pesch ?dom? (empty selection patch) (d.pesch@11com7.de)
|
|
||||||
* Alfonso Martinez de Lizarrondo - Uritec (alfonso at uritec dot net)
|
|
||||||
*/
|
|
||||||
|
|
||||||
var oEditor = window.parent.InnerDialogLoaded() ;
|
|
||||||
var FCK = oEditor.FCK ;
|
|
||||||
var FCKLang = oEditor.FCKLang ;
|
|
||||||
var FCKConfig = oEditor.FCKConfig ;
|
|
||||||
var FCKRegexLib = oEditor.FCKRegexLib ;
|
|
||||||
|
|
||||||
//#### Dialog Tabs
|
|
||||||
|
|
||||||
// Set the dialog tabs.
|
|
||||||
window.parent.AddTab( 'Info', FCKLang.DlgLnkInfoTab ) ;
|
|
||||||
|
|
||||||
if ( !FCKConfig.LinkDlgHideTarget )
|
|
||||||
window.parent.AddTab( 'Target', FCKLang.DlgLnkTargetTab, true ) ;
|
|
||||||
|
|
||||||
if ( FCKConfig.LinkUpload )
|
|
||||||
window.parent.AddTab( 'Upload', FCKLang.DlgLnkUpload, true ) ;
|
|
||||||
|
|
||||||
if ( !FCKConfig.LinkDlgHideAdvanced )
|
|
||||||
window.parent.AddTab( 'Advanced', FCKLang.DlgAdvancedTag ) ;
|
|
||||||
|
|
||||||
// Function called when a dialog tag is selected.
|
|
||||||
function OnDialogTabChange( tabCode )
|
|
||||||
{
|
|
||||||
ShowE('divInfo' , ( tabCode == 'Info' ) ) ;
|
|
||||||
ShowE('divTarget' , ( tabCode == 'Target' ) ) ;
|
|
||||||
ShowE('divUpload' , ( tabCode == 'Upload' ) ) ;
|
|
||||||
ShowE('divAttribs' , ( tabCode == 'Advanced' ) ) ;
|
|
||||||
|
|
||||||
window.parent.SetAutoSize( true ) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
//#### Regular Expressions library.
|
|
||||||
var oRegex = new Object() ;
|
|
||||||
|
|
||||||
oRegex.UriProtocol = new RegExp('') ;
|
|
||||||
oRegex.UriProtocol.compile( '^(((http|https|ftp|news):\/\/)|mailto:)', 'gi' ) ;
|
|
||||||
|
|
||||||
oRegex.UrlOnChangeProtocol = new RegExp('') ;
|
|
||||||
oRegex.UrlOnChangeProtocol.compile( '^(http|https|ftp|news)://(?=.)', 'gi' ) ;
|
|
||||||
|
|
||||||
oRegex.UrlOnChangeTestOther = new RegExp('') ;
|
|
||||||
//oRegex.UrlOnChangeTestOther.compile( '^(javascript:|#|/)', 'gi' ) ;
|
|
||||||
oRegex.UrlOnChangeTestOther.compile( '^((javascript:)|[#/\.])', 'gi' ) ;
|
|
||||||
|
|
||||||
oRegex.ReserveTarget = new RegExp('') ;
|
|
||||||
oRegex.ReserveTarget.compile( '^_(blank|self|top|parent)$', 'i' ) ;
|
|
||||||
|
|
||||||
oRegex.PopupUri = new RegExp('') ;
|
|
||||||
oRegex.PopupUri.compile( "^javascript:void\\(\\s*window.open\\(\\s*'([^']+)'\\s*,\\s*(?:'([^']*)'|null)\\s*,\\s*'([^']*)'\\s*\\)\\s*\\)\\s*$" ) ;
|
|
||||||
|
|
||||||
// Accesible popups
|
|
||||||
oRegex.OnClickPopup = new RegExp('') ;
|
|
||||||
oRegex.OnClickPopup.compile( "^\\s*onClick=\"\\s*window.open\\(\\s*this\\.href\\s*,\\s*(?:'([^']*)'|null)\\s*,\\s*'([^']*)'\\s*\\)\\s*;\\s*return\\s*false;*\\s*\"$" ) ;
|
|
||||||
|
|
||||||
oRegex.PopupFeatures = new RegExp('') ;
|
|
||||||
oRegex.PopupFeatures.compile( '(?:^|,)([^=]+)=(\\d+|yes|no)', 'gi' ) ;
|
|
||||||
|
|
||||||
//#### Parser Functions
|
|
||||||
|
|
||||||
var oParser = new Object() ;
|
|
||||||
|
|
||||||
oParser.ParseEMailUrl = function( emailUrl )
|
|
||||||
{
|
|
||||||
// Initializes the EMailInfo object.
|
|
||||||
var oEMailInfo = new Object() ;
|
|
||||||
oEMailInfo.Address = '' ;
|
|
||||||
oEMailInfo.Subject = '' ;
|
|
||||||
oEMailInfo.Body = '' ;
|
|
||||||
|
|
||||||
var oParts = emailUrl.match( /^([^\?]+)\??(.+)?/ ) ;
|
|
||||||
if ( oParts )
|
|
||||||
{
|
|
||||||
// Set the e-mail address.
|
|
||||||
oEMailInfo.Address = oParts[1] ;
|
|
||||||
|
|
||||||
// Look for the optional e-mail parameters.
|
|
||||||
if ( oParts[2] )
|
|
||||||
{
|
|
||||||
var oMatch = oParts[2].match( /(^|&)subject=([^&]+)/i ) ;
|
|
||||||
if ( oMatch ) oEMailInfo.Subject = 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 ;
|
|
||||||
|
|
||||||
// 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 = oEditor.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 )
|
|
||||||
oEditor.FCKTools.AddSelectOption( GetE('cmbAnchorName'), sName, sName ) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
for ( i = 0 ; i < aIds.length ; i++ )
|
|
||||||
{
|
|
||||||
oEditor.FCKTools.AddSelectOption( GetE('cmbAnchorId'), aIds[i], aIds[i] ) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
ShowE( 'divSelAnchor' , bHasAnchors ) ;
|
|
||||||
ShowE( 'divNoAnchor' , !bHasAnchors ) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
function LoadSelection()
|
|
||||||
{
|
|
||||||
if ( !oLink ) return ;
|
|
||||||
|
|
||||||
var sType = 'url' ;
|
|
||||||
|
|
||||||
// Get the actual Link href.
|
|
||||||
var sHRef = oLink.getAttribute( '_fcksavedurl' ) ;
|
|
||||||
if ( sHRef == null )
|
|
||||||
sHRef = oLink.getAttribute( 'href' , 2 ) || '' ;
|
|
||||||
|
|
||||||
// Look for a popup javascript link.
|
|
||||||
var oPopupMatch = oRegex.PopupUri.exec( sHRef ) ;
|
|
||||||
if( oPopupMatch )
|
|
||||||
{
|
|
||||||
GetE('cmbTarget').value = 'popup' ;
|
|
||||||
sHRef = oPopupMatch[1] ;
|
|
||||||
FillPopupFields( oPopupMatch[2], oPopupMatch[3] ) ;
|
|
||||||
SetTarget( 'popup' ) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Accesible popups, the popup data is in the onclick attribute
|
|
||||||
if ( !oPopupMatch ) {
|
|
||||||
var onclick = oLink.getAttribute( 'onClick_fckprotectedatt' ) ;
|
|
||||||
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 remainig URL.
|
|
||||||
var sUrl = sHRef.replace( oRegex.UriProtocol, '' ) ;
|
|
||||||
|
|
||||||
if ( sProtocol == 'mailto:' ) // It is an e-mail link.
|
|
||||||
{
|
|
||||||
sType = 'email' ;
|
|
||||||
|
|
||||||
var oEMailInfo = oParser.ParseEMailUrl( sUrl ) ;
|
|
||||||
GetE('txtEMailAddress').value = oEMailInfo.Address ;
|
|
||||||
GetE('txtEMailSubject').value = oEMailInfo.Subject ;
|
|
||||||
GetE('txtEMailBody').value = oEMailInfo.Body ;
|
|
||||||
}
|
|
||||||
else // It is a normal link.
|
|
||||||
{
|
|
||||||
sType = 'url' ;
|
|
||||||
GetE('txtUrl').value = sUrl ;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if ( sHRef.substr(0,1) == '#' && sHRef.length > 1 ) // It is an anchor link.
|
|
||||||
{
|
|
||||||
sType = 'anchor' ;
|
|
||||||
GetE('cmbAnchorName').value = GetE('cmbAnchorId').value = sHRef.substr(1) ;
|
|
||||||
}
|
|
||||||
else // It is another type of link.
|
|
||||||
{
|
|
||||||
sType = 'url' ;
|
|
||||||
|
|
||||||
GetE('cmbLinkProtocol').value = '' ;
|
|
||||||
GetE('txtUrl').value = sHRef ;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( !oPopupMatch )
|
|
||||||
{
|
|
||||||
// Get the target.
|
|
||||||
var sTarget = oLink.target ;
|
|
||||||
|
|
||||||
if ( sTarget && sTarget.length > 0 )
|
|
||||||
{
|
|
||||||
if ( oRegex.ReserveTarget.test( sTarget ) )
|
|
||||||
{
|
|
||||||
sTarget = sTarget.toLowerCase() ;
|
|
||||||
GetE('cmbTarget').value = sTarget ;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
GetE('cmbTarget').value = 'frame' ;
|
|
||||||
GetE('txtTargetFrame').value = sTarget ;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Get Advances Attributes
|
|
||||||
GetE('txtAttId').value = oLink.id ;
|
|
||||||
GetE('txtAttName').value = oLink.name ;
|
|
||||||
GetE('cmbAttLangDir').value = oLink.dir ;
|
|
||||||
GetE('txtAttLangCode').value = oLink.lang ;
|
|
||||||
GetE('txtAttAccessKey').value = oLink.accessKey ;
|
|
||||||
GetE('txtAttTabIndex').value = oLink.tabIndex <= 0 ? '' : oLink.tabIndex ;
|
|
||||||
GetE('txtAttTitle').value = oLink.title ;
|
|
||||||
GetE('txtAttContentType').value = oLink.type ;
|
|
||||||
GetE('txtAttCharSet').value = oLink.charset ;
|
|
||||||
|
|
||||||
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' ;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Accesible 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 ;
|
|
||||||
|
|
||||||
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 ;
|
|
||||||
}
|
|
||||||
|
|
||||||
// No link selected, so try to create one.
|
|
||||||
if ( !oLink )
|
|
||||||
oLink = oEditor.FCK.CreateLink( sUri ) ;
|
|
||||||
|
|
||||||
if ( oLink )
|
|
||||||
sInnerHtml = oLink.innerHTML ; // Save the innerHTML (IE changes it if it is like an URL).
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// If no selection, use the uri as the link text (by dom, 2006-05-26)
|
|
||||||
|
|
||||||
sInnerHtml = sUri;
|
|
||||||
|
|
||||||
// Built a better text for empty links.
|
|
||||||
switch ( GetE('cmbLinkType').value )
|
|
||||||
{
|
|
||||||
// anchor: use old behavior --> return true
|
|
||||||
case 'anchor':
|
|
||||||
sInnerHtml = sInnerHtml.replace( /^#/, '' ) ;
|
|
||||||
break ;
|
|
||||||
|
|
||||||
// url: try to get path
|
|
||||||
case 'url':
|
|
||||||
var oLinkPathRegEx = new RegExp("//?([^?\"']+)([?].*)?$") ;
|
|
||||||
var asLinkPath = oLinkPathRegEx.exec( sUri ) ;
|
|
||||||
if (asLinkPath != null)
|
|
||||||
sInnerHtml = asLinkPath[1]; // use matched path
|
|
||||||
break ;
|
|
||||||
|
|
||||||
// mailto: try to get email address
|
|
||||||
case 'email':
|
|
||||||
sInnerHtml = GetE('txtEMailAddress').value ;
|
|
||||||
break ;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Create a new (empty) anchor.
|
|
||||||
oLink = oEditor.FCK.CreateElement( 'a' ) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
oEditor.FCKUndo.SaveUndoStep() ;
|
|
||||||
|
|
||||||
oLink.href = sUri ;
|
|
||||||
SetAttribute( oLink, '_fcksavedurl', sUri ) ;
|
|
||||||
|
|
||||||
// Accesible popups
|
|
||||||
if( GetE('cmbTarget').value == 'popup' )
|
|
||||||
{
|
|
||||||
SetAttribute( oLink, 'onClick_fckprotectedatt', " onClick=\"" + BuildOnClickPopup() + "\"") ;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// Check if the previous onclick was for a popup:
|
|
||||||
// In that case remove the onclick handler.
|
|
||||||
var onclick = oLink.getAttribute( 'onClick_fckprotectedatt' ) ;
|
|
||||||
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 ) ;
|
|
||||||
|
|
||||||
// Advances Attributes
|
|
||||||
SetAttribute( oLink, 'id' , GetE('txtAttId').value ) ;
|
|
||||||
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 link.
|
|
||||||
oEditor.FCKSelection.SelectNode(oLink);
|
|
||||||
|
|
||||||
return true ;
|
|
||||||
}
|
|
||||||
|
|
||||||
function BrowseServer()
|
|
||||||
{
|
|
||||||
OpenFileBrowser( FCKConfig.LinkBrowserURL, FCKConfig.LinkBrowserWindowWidth, FCKConfig.LinkBrowserWindowHeight ) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
function SetUrl( url )
|
|
||||||
{
|
|
||||||
document.getElementById('txtUrl').value = url ;
|
|
||||||
OnUrlChange() ;
|
|
||||||
window.parent.SetSelectedTab( 'Info' ) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
function OnUploadCompleted( errorNumber, fileUrl, fileName, customMsg )
|
|
||||||
{
|
|
||||||
switch ( errorNumber )
|
|
||||||
{
|
|
||||||
case 0 : // No errors
|
|
||||||
alert( 'Your file has been successfully uploaded' ) ;
|
|
||||||
break ;
|
|
||||||
case 1 : // Custom error
|
|
||||||
alert( customMsg ) ;
|
|
||||||
return ;
|
|
||||||
case 101 : // Custom warning
|
|
||||||
alert( customMsg ) ;
|
|
||||||
break ;
|
|
||||||
case 201 :
|
|
||||||
alert( 'A file with the same name is already available. The uploaded file has been renamed to "' + fileName + '"' ) ;
|
|
||||||
break ;
|
|
||||||
case 202 :
|
|
||||||
alert( 'Invalid file type' ) ;
|
|
||||||
return ;
|
|
||||||
case 203 :
|
|
||||||
alert( "Security error. You probably don't have enough permissions to upload. Please check your server." ) ;
|
|
||||||
return ;
|
|
||||||
default :
|
|
||||||
alert( 'Error on file upload. Error number: ' + errorNumber ) ;
|
|
||||||
return ;
|
|
||||||
}
|
|
||||||
|
|
||||||
SetUrl( fileUrl ) ;
|
|
||||||
GetE('frmUpload').reset() ;
|
|
||||||
}
|
|
||||||
|
|
||||||
var oUploadAllowedExtRegex = new RegExp( FCKConfig.LinkUploadAllowedExtensions, 'i' ) ;
|
|
||||||
var oUploadDeniedExtRegex = new RegExp( FCKConfig.LinkUploadDeniedExtensions, 'i' ) ;
|
|
||||||
|
|
||||||
function CheckUpload()
|
|
||||||
{
|
|
||||||
var sFile = GetE('txtUploadFile').value ;
|
|
||||||
|
|
||||||
if ( sFile.length == 0 )
|
|
||||||
{
|
|
||||||
alert( 'Please select a file to upload' ) ;
|
|
||||||
return false ;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( ( FCKConfig.LinkUploadAllowedExtensions.length > 0 && !oUploadAllowedExtRegex.test( sFile ) ) ||
|
|
||||||
( FCKConfig.LinkUploadDeniedExtensions.length > 0 && oUploadDeniedExtRegex.test( sFile ) ) )
|
|
||||||
{
|
|
||||||
OnUploadCompleted( 202 ) ;
|
|
||||||
return false ;
|
|
||||||
}
|
|
||||||
|
|
||||||
return true ;
|
|
||||||
}
|
|
||||||
@@ -1,121 +0,0 @@
|
|||||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
|
|
||||||
<!--
|
|
||||||
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
|
||||||
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
|
||||||
*
|
|
||||||
* == BEGIN LICENSE ==
|
|
||||||
*
|
|
||||||
* Licensed under the terms of any of the following licenses at your
|
|
||||||
* choice:
|
|
||||||
*
|
|
||||||
* - GNU General Public License Version 2 or later (the "GPL")
|
|
||||||
* http://www.gnu.org/licenses/gpl.html
|
|
||||||
*
|
|
||||||
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
|
||||||
* http://www.gnu.org/licenses/lgpl.html
|
|
||||||
*
|
|
||||||
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
|
||||||
* http://www.mozilla.org/MPL/MPL-1.1.html
|
|
||||||
*
|
|
||||||
* == END LICENSE ==
|
|
||||||
*
|
|
||||||
* File Name: fck_listprop.html
|
|
||||||
* Bulleted List dialog window.
|
|
||||||
*
|
|
||||||
* File Authors:
|
|
||||||
* Frederico Caldeira Knabben (www.fckeditor.net)
|
|
||||||
* Marcel J Bennett (start attribute)
|
|
||||||
-->
|
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
||||||
<head>
|
|
||||||
<title></title>
|
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
||||||
<meta content="noindex, nofollow" name="robots" />
|
|
||||||
<script src="common/fck_dialog_common.js" type="text/javascript"></script>
|
|
||||||
<script type="text/javascript">
|
|
||||||
|
|
||||||
var oEditor = window.parent.InnerDialogLoaded() ;
|
|
||||||
|
|
||||||
// Gets the document DOM
|
|
||||||
var oDOM = oEditor.FCK.EditorDocument ;
|
|
||||||
var 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').toLowerCase() ;
|
|
||||||
}
|
|
||||||
|
|
||||||
window.parent.SetOkButton( true ) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
function Ok()
|
|
||||||
{
|
|
||||||
if ( oActiveEl ){
|
|
||||||
SetAttribute( oActiveEl, 'type' , oActiveSel.value ) ;
|
|
||||||
if(oActiveEl.tagName == 'OL')
|
|
||||||
SetAttribute( oActiveEl, 'start', GetE('txtStartPosition').value ) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
return true ;
|
|
||||||
}
|
|
||||||
|
|
||||||
</script>
|
|
||||||
</head>
|
|
||||||
<body style="overflow: hidden">
|
|
||||||
<table width="100%" style="height: 100%">
|
|
||||||
<tr>
|
|
||||||
<td style="text-align:center">
|
|
||||||
<table cellspacing="0" cellpadding="0" border="0" style="margin-left: auto; margin-right: auto;">
|
|
||||||
<tr>
|
|
||||||
<td id="eStart" style="display: none; padding-right: 5px; padding-left: 5px">
|
|
||||||
<span fcklang="DlgLstStart">Start</span><br />
|
|
||||||
<input type="text" id="txtStartPosition" size="5" />
|
|
||||||
</td>
|
|
||||||
<td style="padding-right: 5px; padding-left: 5px">
|
|
||||||
<span fcklang="DlgLstType">List Type</span><br />
|
|
||||||
<select id="selBulleted" style="display: none">
|
|
||||||
<option value="" selected="selected"></option>
|
|
||||||
<option value="circle" fcklang="DlgLstTypeCircle">Circle</option>
|
|
||||||
<option value="disc" fcklang="DlgLstTypeDisc">Disc</option>
|
|
||||||
<option value="square" fcklang="DlgLstTypeSquare">Square</option>
|
|
||||||
</select>
|
|
||||||
<select id="selNumbered" style="display: none">
|
|
||||||
<option value="" selected="selected"></option>
|
|
||||||
<option value="1" fcklang="DlgLstTypeNumbers">Numbers (1, 2, 3)</option>
|
|
||||||
<option value="a" fcklang="DlgLstTypeLCase">Lowercase Letters (a, b, c)</option>
|
|
||||||
<option value="A" fcklang="DlgLstTypeUCase">Uppercase Letters (A, B, C)</option>
|
|
||||||
<option value="i" fcklang="DlgLstTypeSRoman">Small Roman Numerals (i, ii, iii)</option>
|
|
||||||
<option value="I" fcklang="DlgLstTypeLRoman">Large Roman Numerals (I, II, III)</option>
|
|
||||||
</select>
|
|
||||||
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
@@ -1,264 +0,0 @@
|
|||||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
|
||||||
<!--
|
|
||||||
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
|
||||||
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
|
||||||
*
|
|
||||||
* == BEGIN LICENSE ==
|
|
||||||
*
|
|
||||||
* Licensed under the terms of any of the following licenses at your
|
|
||||||
* choice:
|
|
||||||
*
|
|
||||||
* - GNU General Public License Version 2 or later (the "GPL")
|
|
||||||
* http://www.gnu.org/licenses/gpl.html
|
|
||||||
*
|
|
||||||
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
|
||||||
* http://www.gnu.org/licenses/lgpl.html
|
|
||||||
*
|
|
||||||
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
|
||||||
* http://www.mozilla.org/MPL/MPL-1.1.html
|
|
||||||
*
|
|
||||||
* == END LICENSE ==
|
|
||||||
*
|
|
||||||
* File Name: fck_paste.html
|
|
||||||
* This dialog is shown when, for some reason (usually security settings),
|
|
||||||
* the user is not able to paste data from the clipboard to the editor using
|
|
||||||
* the toolbar buttons or the context menu.
|
|
||||||
*
|
|
||||||
* File Authors:
|
|
||||||
* Frederico Caldeira Knabben (www.fckeditor.net)
|
|
||||||
-->
|
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
||||||
<head>
|
|
||||||
<title></title>
|
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
||||||
<meta name="robots" content="noindex, nofollow" />
|
|
||||||
<script type="text/javascript">
|
|
||||||
var oEditor = window.parent.InnerDialogLoaded() ;
|
|
||||||
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) ;
|
|
||||||
|
|
||||||
if ( window.parent.dialogArguments.CustomValue == 'Word' )
|
|
||||||
{
|
|
||||||
var oFrame = document.getElementById('frmData') ;
|
|
||||||
oFrame.style.display = '' ;
|
|
||||||
|
|
||||||
if ( oFrame.contentDocument )
|
|
||||||
oFrame.contentDocument.designMode = 'on' ;
|
|
||||||
else
|
|
||||||
oFrame.contentWindow.document.body.contentEditable = true ;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
document.getElementById('txtData').style.display = '' ;
|
|
||||||
document.getElementById('oWordCommands').style.display = 'none' ;
|
|
||||||
}
|
|
||||||
|
|
||||||
window.parent.SetOkButton( true ) ;
|
|
||||||
window.parent.SetAutoSize( true ) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
function Ok()
|
|
||||||
{
|
|
||||||
var sHtml ;
|
|
||||||
|
|
||||||
if ( window.parent.dialogArguments.CustomValue == 'Word' )
|
|
||||||
{
|
|
||||||
var oFrame = document.getElementById('frmData') ;
|
|
||||||
var oBody ;
|
|
||||||
|
|
||||||
if ( oFrame.contentDocument )
|
|
||||||
oBody = oFrame.contentDocument.body ;
|
|
||||||
else
|
|
||||||
oBody = oFrame.contentWindow.document.body ;
|
|
||||||
|
|
||||||
// If a plugin creates a FCK.CustomCleanWord function it will be called instead of the default one
|
|
||||||
if ( typeof( FCKTools.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 ) ;
|
|
||||||
|
|
||||||
|
|
||||||
// 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 = sHtml.replace( /\n/g, '<BR>' ) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
oEditor.FCK.InsertHtml( sHtml ) ;
|
|
||||||
|
|
||||||
return true ;
|
|
||||||
}
|
|
||||||
|
|
||||||
function CleanUpBox()
|
|
||||||
{
|
|
||||||
var oFrame = document.getElementById('frmData') ;
|
|
||||||
|
|
||||||
if ( oFrame.contentDocument )
|
|
||||||
oFrame.contentDocument.body.innerHTML = '' ;
|
|
||||||
else
|
|
||||||
oFrame.contentWindow.document.body.innerHTML = '' ;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// 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, '' ) ;
|
|
||||||
|
|
||||||
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>
|
|
||||||
<span fcklang="DlgPasteMsg2">Please paste inside the following box using the keyboard
|
|
||||||
(<strong>Ctrl+V</strong>) and hit <strong>OK</strong>.</span>
|
|
||||||
<br />
|
|
||||||
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td valign="top" height="100%" style="border-right: #000000 1px solid; border-top: #000000 1px solid;
|
|
||||||
border-left: #000000 1px solid; border-bottom: #000000 1px solid">
|
|
||||||
<textarea id="txtData" cols="80" rows="5" style="border: #000000 1px; display: none;
|
|
||||||
width: 99%; height: 98%"></textarea>
|
|
||||||
<iframe id="frmData" src="javascript:void(0)" height="98%" width="99%" frameborder="0"
|
|
||||||
style="border-right: #000000 1px; border-top: #000000 1px; display: none; border-left: #000000 1px;
|
|
||||||
border-bottom: #000000 1px; background-color: #ffffff"></iframe>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr id="oWordCommands">
|
|
||||||
<td>
|
|
||||||
<table border="0" cellpadding="0" cellspacing="0" width="100%">
|
|
||||||
<tr>
|
|
||||||
<td nowrap="nowrap">
|
|
||||||
<input id="chkRemoveFont" type="checkbox" checked="checked" />
|
|
||||||
<label for="chkRemoveFont" fcklang="DlgPasteIgnoreFont">
|
|
||||||
Ignore Font Face definitions</label>
|
|
||||||
<br />
|
|
||||||
<input id="chkRemoveStyles" type="checkbox" />
|
|
||||||
<label for="chkRemoveStyles" fcklang="DlgPasteRemoveStyles">
|
|
||||||
Remove Styles definitions</label>
|
|
||||||
</td>
|
|
||||||
<td align="right" valign="top">
|
|
||||||
<input type="button" fcklang="DlgPasteCleanBox" value="Clean Up Box" onclick="CleanUpBox()" />
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
@@ -1,111 +0,0 @@
|
|||||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
|
|
||||||
<!--
|
|
||||||
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
|
||||||
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
|
||||||
*
|
|
||||||
* == BEGIN LICENSE ==
|
|
||||||
*
|
|
||||||
* Licensed under the terms of any of the following licenses at your
|
|
||||||
* choice:
|
|
||||||
*
|
|
||||||
* - GNU General Public License Version 2 or later (the "GPL")
|
|
||||||
* http://www.gnu.org/licenses/gpl.html
|
|
||||||
*
|
|
||||||
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
|
||||||
* http://www.gnu.org/licenses/lgpl.html
|
|
||||||
*
|
|
||||||
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
|
||||||
* http://www.mozilla.org/MPL/MPL-1.1.html
|
|
||||||
*
|
|
||||||
* == END LICENSE ==
|
|
||||||
*
|
|
||||||
* File Name: fck_radiobutton.html
|
|
||||||
* Radio Button dialog window.
|
|
||||||
*
|
|
||||||
* File Authors:
|
|
||||||
* Frederico Caldeira Knabben (www.fckeditor.net)
|
|
||||||
-->
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title>Radio Button Properties</title>
|
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
|
||||||
<meta content="noindex, nofollow" name="robots">
|
|
||||||
<script src="common/fck_dialog_common.js" type="text/javascript"></script>
|
|
||||||
<script type="text/javascript">
|
|
||||||
|
|
||||||
var oEditor = window.parent.InnerDialogLoaded() ;
|
|
||||||
|
|
||||||
// Gets the document DOM
|
|
||||||
var oDOM = oEditor.FCK.EditorDocument ;
|
|
||||||
|
|
||||||
var oActiveEl = oEditor.FCKSelection.GetSelectedElement() ;
|
|
||||||
|
|
||||||
window.onload = function()
|
|
||||||
{
|
|
||||||
// First of all, translate the dialog box texts
|
|
||||||
oEditor.FCKLanguageManager.TranslatePage(document) ;
|
|
||||||
|
|
||||||
if ( oActiveEl && oActiveEl.tagName.toUpperCase() == 'INPUT' && oActiveEl.type == 'radio' )
|
|
||||||
{
|
|
||||||
GetE('txtName').value = oActiveEl.name ;
|
|
||||||
GetE('txtValue').value = oEditor.FCKBrowserInfo.IsIE ? oActiveEl.value : GetAttribute( oActiveEl, 'value' ) ;
|
|
||||||
GetE('txtSelected').checked = oActiveEl.checked ;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
oActiveEl = null ;
|
|
||||||
|
|
||||||
window.parent.SetOkButton( true ) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
function Ok()
|
|
||||||
{
|
|
||||||
if ( !oActiveEl )
|
|
||||||
{
|
|
||||||
oActiveEl = oEditor.FCK.EditorDocument.createElement( 'INPUT' ) ;
|
|
||||||
oActiveEl.type = 'radio' ;
|
|
||||||
oActiveEl = oEditor.FCK.InsertElementAndGetIt( oActiveEl ) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( GetE('txtName').value.length > 0 )
|
|
||||||
oActiveEl.name = GetE('txtName').value ;
|
|
||||||
|
|
||||||
if ( oEditor.FCKBrowserInfo.IsIE )
|
|
||||||
oActiveEl.value = GetE('txtValue').value ;
|
|
||||||
else
|
|
||||||
SetAttribute( oActiveEl, 'value', GetE('txtValue').value ) ;
|
|
||||||
|
|
||||||
var bIsChecked = GetE('txtSelected').checked ;
|
|
||||||
SetAttribute( oActiveEl, 'checked', bIsChecked ? 'checked' : null ) ; // For Firefox
|
|
||||||
oActiveEl.checked = bIsChecked ;
|
|
||||||
|
|
||||||
return true ;
|
|
||||||
}
|
|
||||||
|
|
||||||
</script>
|
|
||||||
</head>
|
|
||||||
<body style="OVERFLOW: hidden" scroll="no">
|
|
||||||
<table height="100%" width="100%">
|
|
||||||
<tr>
|
|
||||||
<td align="center">
|
|
||||||
<table border="0" cellpadding="0" cellspacing="0" width="80%">
|
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
<span fckLang="DlgCheckboxName">Name</span><br>
|
|
||||||
<input type="text" size="20" id="txtName" style="WIDTH: 100%">
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
<span fckLang="DlgCheckboxValue">Value</span><br>
|
|
||||||
<input type="text" size="20" id="txtValue" style="WIDTH: 100%">
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><input type="checkbox" id="txtSelected"><label for="txtSelected" fckLang="DlgCheckboxSelected">Checked</label></td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
@@ -1,161 +0,0 @@
|
|||||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
|
||||||
<!--
|
|
||||||
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
|
||||||
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
|
||||||
*
|
|
||||||
* == BEGIN LICENSE ==
|
|
||||||
*
|
|
||||||
* Licensed under the terms of any of the following licenses at your
|
|
||||||
* choice:
|
|
||||||
*
|
|
||||||
* - GNU General Public License Version 2 or later (the "GPL")
|
|
||||||
* http://www.gnu.org/licenses/gpl.html
|
|
||||||
*
|
|
||||||
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
|
||||||
* http://www.gnu.org/licenses/lgpl.html
|
|
||||||
*
|
|
||||||
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
|
||||||
* http://www.mozilla.org/MPL/MPL-1.1.html
|
|
||||||
*
|
|
||||||
* == END LICENSE ==
|
|
||||||
*
|
|
||||||
* File Name: fck_replace.html
|
|
||||||
* "Replace" dialog box window.
|
|
||||||
*
|
|
||||||
* File Authors:
|
|
||||||
* Frederico Caldeira Knabben (www.fckeditor.net)
|
|
||||||
* Abdul-Aziz A. Al-Oraij (aziz.oraij.com)
|
|
||||||
-->
|
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
||||||
<head>
|
|
||||||
<title></title>
|
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
||||||
<meta content="noindex, nofollow" name="robots" />
|
|
||||||
<script type="text/javascript">
|
|
||||||
|
|
||||||
var oEditor = window.parent.InnerDialogLoaded() ;
|
|
||||||
|
|
||||||
function OnLoad()
|
|
||||||
{
|
|
||||||
// First of all, translate the dialog box texts
|
|
||||||
oEditor.FCKLanguageManager.TranslatePage( document ) ;
|
|
||||||
|
|
||||||
window.parent.SetAutoSize( true ) ;
|
|
||||||
|
|
||||||
oEditor.FCKUndo.SaveUndoStep() ;
|
|
||||||
}
|
|
||||||
|
|
||||||
function btnStat(frm)
|
|
||||||
{
|
|
||||||
document.getElementById('btnReplace').disabled =
|
|
||||||
document.getElementById('btnReplaceAll').disabled =
|
|
||||||
( document.getElementById('txtFind').value.length == 0 ) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
function ReplaceTextNodes( parentNode, regex, replaceValue, replaceAll, hasFound )
|
|
||||||
{
|
|
||||||
for ( var i = 0 ; i < parentNode.childNodes.length ; i++ )
|
|
||||||
{
|
|
||||||
var oNode = parentNode.childNodes[i] ;
|
|
||||||
if ( oNode.nodeType == 3 )
|
|
||||||
{
|
|
||||||
var sReplaced = oNode.nodeValue.replace( regex, replaceValue ) ;
|
|
||||||
if ( oNode.nodeValue != sReplaced )
|
|
||||||
{
|
|
||||||
oNode.nodeValue = sReplaced ;
|
|
||||||
if ( ! replaceAll )
|
|
||||||
return true ;
|
|
||||||
hasFound = true ;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
hasFound = ReplaceTextNodes( oNode, regex, replaceValue, replaceAll, hasFound ) ;
|
|
||||||
if ( ! replaceAll && hasFound )
|
|
||||||
return true ;
|
|
||||||
}
|
|
||||||
|
|
||||||
return hasFound ;
|
|
||||||
}
|
|
||||||
|
|
||||||
function GetRegexExpr()
|
|
||||||
{
|
|
||||||
var sExpr = EscapeRegexString( document.getElementById('txtFind').value ) ;
|
|
||||||
|
|
||||||
if ( document.getElementById('chkWord').checked )
|
|
||||||
sExpr = '\\b' + sExpr + '\\b' ;
|
|
||||||
|
|
||||||
return sExpr ;
|
|
||||||
}
|
|
||||||
|
|
||||||
function GetCase()
|
|
||||||
{
|
|
||||||
return ( document.getElementById('chkCase').checked ? '' : 'i' ) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
function GetReplacement()
|
|
||||||
{
|
|
||||||
return document.getElementById('txtReplace').value.replace( /\$/g, '$$$$' ) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
function EscapeRegexString( str )
|
|
||||||
{
|
|
||||||
return str.replace( /[\\\^\$\*\+\?\{\}\.\(\)\!\|\[\]\-]/g, '\\$&' ) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
function Replace()
|
|
||||||
{
|
|
||||||
var oRegex = new RegExp( GetRegexExpr(), GetCase() ) ;
|
|
||||||
if ( !ReplaceTextNodes( oEditor.FCK.EditorDocument.body, oRegex, GetReplacement(), false, false ) )
|
|
||||||
alert( oEditor.FCKLang.DlgFindNotFoundMsg ) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
function ReplaceAll()
|
|
||||||
{
|
|
||||||
var oRegex = new RegExp( GetRegexExpr(), GetCase() + 'g' ) ;
|
|
||||||
if ( !ReplaceTextNodes( oEditor.FCK.EditorDocument.body, oRegex, GetReplacement(), true, false ) )
|
|
||||||
alert( oEditor.FCKLang.DlgFindNotFoundMsg ) ;
|
|
||||||
window.parent.Cancel() ;
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
</head>
|
|
||||||
<body onload="OnLoad()" style="overflow: hidden">
|
|
||||||
<table cellspacing="3" cellpadding="2" width="100%" border="0">
|
|
||||||
<tr>
|
|
||||||
<td nowrap="nowrap">
|
|
||||||
<label for="txtFind" fcklang="DlgReplaceFindLbl">
|
|
||||||
Find what:</label>
|
|
||||||
</td>
|
|
||||||
<td width="100%">
|
|
||||||
<input id="txtFind" onkeyup="btnStat(this.form)" style="width: 100%" tabindex="1"
|
|
||||||
type="text" />
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<input id="btnReplace" style="width: 100%" disabled="disabled" onclick="Replace();"
|
|
||||||
type="button" value="Replace" fcklang="DlgReplaceReplaceBtn" />
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td valign="top" nowrap="nowrap">
|
|
||||||
<label for="txtReplace" fcklang="DlgReplaceReplaceLbl">
|
|
||||||
Replace with:</label>
|
|
||||||
</td>
|
|
||||||
<td valign="top">
|
|
||||||
<input id="txtReplace" style="width: 100%" tabindex="2" type="text" />
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<input id="btnReplaceAll" disabled="disabled" onclick="ReplaceAll()" type="button"
|
|
||||||
value="Replace All" fcklang="DlgReplaceReplAllBtn" />
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td valign="bottom" colspan="3">
|
|
||||||
<input id="chkCase" tabindex="3" type="checkbox" /><label for="chkCase" fcklang="DlgReplaceCaseChk">Match
|
|
||||||
case</label>
|
|
||||||
<br />
|
|
||||||
<input id="chkWord" tabindex="4" type="checkbox" /><label for="chkWord" fcklang="DlgReplaceWordChk">Match
|
|
||||||
whole word</label>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
@@ -1,180 +0,0 @@
|
|||||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
|
|
||||||
<!--
|
|
||||||
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
|
||||||
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
|
||||||
*
|
|
||||||
* == BEGIN LICENSE ==
|
|
||||||
*
|
|
||||||
* Licensed under the terms of any of the following licenses at your
|
|
||||||
* choice:
|
|
||||||
*
|
|
||||||
* - GNU General Public License Version 2 or later (the "GPL")
|
|
||||||
* http://www.gnu.org/licenses/gpl.html
|
|
||||||
*
|
|
||||||
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
|
||||||
* http://www.gnu.org/licenses/lgpl.html
|
|
||||||
*
|
|
||||||
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
|
||||||
* http://www.mozilla.org/MPL/MPL-1.1.html
|
|
||||||
*
|
|
||||||
* == END LICENSE ==
|
|
||||||
*
|
|
||||||
* File Name: fck_select.html
|
|
||||||
* Select dialog window.
|
|
||||||
*
|
|
||||||
* File Authors:
|
|
||||||
* Frederico Caldeira Knabben (www.fckeditor.net)
|
|
||||||
-->
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title>Select Properties</title>
|
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
|
||||||
<meta content="noindex, nofollow" name="robots">
|
|
||||||
<script src="common/fck_dialog_common.js" type="text/javascript"></script>
|
|
||||||
<script type="text/javascript" src="fck_select/fck_select.js"></script>
|
|
||||||
<script type="text/javascript">
|
|
||||||
|
|
||||||
var oEditor = window.parent.InnerDialogLoaded() ;
|
|
||||||
|
|
||||||
// Gets the document DOM
|
|
||||||
var oDOM = oEditor.FCK.EditorDocument ;
|
|
||||||
|
|
||||||
var oActiveEl = oEditor.FCKSelection.GetSelectedElement() ;
|
|
||||||
|
|
||||||
var oListText ;
|
|
||||||
var oListValue ;
|
|
||||||
|
|
||||||
window.onload = function()
|
|
||||||
{
|
|
||||||
// First of all, translate the dialog box texts
|
|
||||||
oEditor.FCKLanguageManager.TranslatePage(document) ;
|
|
||||||
|
|
||||||
oListText = document.getElementById( 'cmbText' ) ;
|
|
||||||
oListValue = document.getElementById( 'cmbValue' ) ;
|
|
||||||
|
|
||||||
if ( oActiveEl && oActiveEl.tagName == 'SELECT' )
|
|
||||||
{
|
|
||||||
GetE('txtName').value = oActiveEl.name ;
|
|
||||||
GetE('txtSelValue').value = oActiveEl.value ;
|
|
||||||
GetE('txtLines').value = GetAttribute( oActiveEl, 'size' ) ;
|
|
||||||
GetE('chkMultiple').checked = oActiveEl.multiple ;
|
|
||||||
|
|
||||||
// Load the actual options
|
|
||||||
for ( var i = 0 ; i < oActiveEl.options.length ; i++ )
|
|
||||||
{
|
|
||||||
var sText = oActiveEl.options[i].innerHTML ;
|
|
||||||
var sValue = oActiveEl.options[i].value ;
|
|
||||||
|
|
||||||
AddComboOption( oListText, sText, sText ) ;
|
|
||||||
AddComboOption( oListValue, sValue, sValue ) ;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
oActiveEl = null ;
|
|
||||||
|
|
||||||
window.parent.SetOkButton( true ) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
function Ok()
|
|
||||||
{
|
|
||||||
var sSize = GetE('txtLines').value ;
|
|
||||||
if ( sSize == null || isNaN( sSize ) || sSize <= 1 )
|
|
||||||
sSize = '' ;
|
|
||||||
|
|
||||||
if ( !oActiveEl )
|
|
||||||
{
|
|
||||||
oActiveEl = oEditor.FCK.EditorDocument.createElement( 'SELECT' ) ;
|
|
||||||
oActiveEl = oEditor.FCK.InsertElementAndGetIt( oActiveEl ) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
SetAttribute( oActiveEl, 'name' , GetE('txtName').value ) ;
|
|
||||||
SetAttribute( oActiveEl, 'size' , sSize ) ;
|
|
||||||
oActiveEl.multiple = ( sSize.length > 0 && GetE('chkMultiple').checked ) ;
|
|
||||||
|
|
||||||
// Remove all options.
|
|
||||||
while ( oActiveEl.options.length > 0 )
|
|
||||||
oActiveEl.remove(0) ;
|
|
||||||
|
|
||||||
// Add all available options.
|
|
||||||
for ( var i = 0 ; i < oListText.options.length ; i++ )
|
|
||||||
{
|
|
||||||
var sText = oListText.options[i].value ;
|
|
||||||
var sValue = oListValue.options[i].value ;
|
|
||||||
if ( sValue.length == 0 ) sValue = sText ;
|
|
||||||
|
|
||||||
var oOption = AddComboOption( oActiveEl, sText, sValue, oDOM ) ;
|
|
||||||
|
|
||||||
if ( sValue == GetE('txtSelValue').value )
|
|
||||||
{
|
|
||||||
SetAttribute( oOption, 'selected', 'selected' ) ;
|
|
||||||
oOption.selected = true ;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return true ;
|
|
||||||
}
|
|
||||||
|
|
||||||
</script>
|
|
||||||
</head>
|
|
||||||
<body style='OVERFLOW: hidden' scroll='no'>
|
|
||||||
<table width="100%" height="100%">
|
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
<table width="100%">
|
|
||||||
<tr>
|
|
||||||
<td nowrap><span fckLang="DlgSelectName">Name</span> </td>
|
|
||||||
<td width="100%" colSpan="2"><input id="txtName" style="WIDTH: 100%" type="text"></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td nowrap><span fckLang="DlgSelectValue">Value</span> </td>
|
|
||||||
<td width="100%" colSpan="2"><input id="txtSelValue" style="WIDTH: 100%; BACKGROUND-COLOR: buttonface" type="text" readonly></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td nowrap><span fckLang="DlgSelectSize">Size</span> </td>
|
|
||||||
<td nowrap><input id="txtLines" type="text" size="2" value=""> <span fckLang="DlgSelectLines">lines</span></td>
|
|
||||||
<td nowrap align="right"><input id="chkMultiple" name="chkMultiple" type="checkbox"><label for="chkMultiple" fckLang="DlgSelectChkMulti">Allow
|
|
||||||
multiple selections</label></td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
<br>
|
|
||||||
<hr style="POSITION: absolute">
|
|
||||||
<span style="LEFT: 10px; POSITION: relative; TOP: -7px" class="BackColor"> <span fckLang="DlgSelectOpAvail">Available
|
|
||||||
Options</span> </span>
|
|
||||||
<table width="100%">
|
|
||||||
<tr>
|
|
||||||
<td width="50%"><span fckLang="DlgSelectOpText">Text</span><br>
|
|
||||||
<input id="txtText" style="WIDTH: 100%" type="text" name="txtText">
|
|
||||||
</td>
|
|
||||||
<td width="50%"><span fckLang="DlgSelectOpValue">Value</span><br>
|
|
||||||
<input id="txtValue" style="WIDTH: 100%" type="text" name="txtValue">
|
|
||||||
</td>
|
|
||||||
<td vAlign="bottom"><input onclick="Add();" type="button" fckLang="DlgSelectBtnAdd" value="Add"></td>
|
|
||||||
<td vAlign="bottom"><input onclick="Modify();" type="button" fckLang="DlgSelectBtnModify" value="Modify"></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td rowSpan="2"><select id="cmbText" style="WIDTH: 100%" onchange="GetE('cmbValue').selectedIndex = this.selectedIndex;Select(this);"
|
|
||||||
size="5" name="cmbText"></select>
|
|
||||||
</td>
|
|
||||||
<td rowSpan="2"><select id="cmbValue" style="WIDTH: 100%" onchange="GetE('cmbText').selectedIndex = this.selectedIndex;Select(this);"
|
|
||||||
size="5" name="cmbValue"></select>
|
|
||||||
</td>
|
|
||||||
<td vAlign="top" colSpan="2">
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td vAlign="bottom" colSpan="2"><input style="WIDTH: 100%" onclick="Move(-1);" type="button" fckLang="DlgSelectBtnUp" value="Up">
|
|
||||||
<br>
|
|
||||||
<input style="WIDTH: 100%" onclick="Move(1);" type="button" fckLang="DlgSelectBtnDown"
|
|
||||||
value="Down">
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<TR>
|
|
||||||
<TD vAlign="bottom" colSpan="4"><INPUT onclick="SetSelectedValue();" type="button" fckLang="DlgSelectBtnSetValue" value="Set as selected value">
|
|
||||||
<input onclick="Delete();" type="button" fckLang="DlgSelectBtnDelete" value="Delete"></TD>
|
|
||||||
</TR>
|
|
||||||
</table>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
@@ -1,173 +0,0 @@
|
|||||||
/*
|
|
||||||
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
|
||||||
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
|
||||||
*
|
|
||||||
* == BEGIN LICENSE ==
|
|
||||||
*
|
|
||||||
* Licensed under the terms of any of the following licenses at your
|
|
||||||
* choice:
|
|
||||||
*
|
|
||||||
* - GNU General Public License Version 2 or later (the "GPL")
|
|
||||||
* http://www.gnu.org/licenses/gpl.html
|
|
||||||
*
|
|
||||||
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
|
||||||
* http://www.gnu.org/licenses/lgpl.html
|
|
||||||
*
|
|
||||||
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
|
||||||
* http://www.mozilla.org/MPL/MPL-1.1.html
|
|
||||||
*
|
|
||||||
* == END LICENSE ==
|
|
||||||
*
|
|
||||||
* File Name: fck_select.js
|
|
||||||
* Scripts for the fck_select.html page.
|
|
||||||
*
|
|
||||||
* File Authors:
|
|
||||||
* Frederico Caldeira Knabben (www.fckeditor.net)
|
|
||||||
*/
|
|
||||||
|
|
||||||
function Select( combo )
|
|
||||||
{
|
|
||||||
var iIndex = combo.selectedIndex ;
|
|
||||||
|
|
||||||
oListText.selectedIndex = iIndex ;
|
|
||||||
oListValue.selectedIndex = iIndex ;
|
|
||||||
|
|
||||||
var oTxtText = document.getElementById( "txtText" ) ;
|
|
||||||
var oTxtValue = document.getElementById( "txtValue" ) ;
|
|
||||||
|
|
||||||
oTxtText.value = oListText.value ;
|
|
||||||
oTxtValue.value = oListValue.value ;
|
|
||||||
}
|
|
||||||
|
|
||||||
function Add()
|
|
||||||
{
|
|
||||||
var oTxtText = document.getElementById( "txtText" ) ;
|
|
||||||
var oTxtValue = document.getElementById( "txtValue" ) ;
|
|
||||||
|
|
||||||
AddComboOption( oListText, oTxtText.value, oTxtText.value ) ;
|
|
||||||
AddComboOption( oListValue, oTxtValue.value, oTxtValue.value ) ;
|
|
||||||
|
|
||||||
oListText.selectedIndex = oListText.options.length - 1 ;
|
|
||||||
oListValue.selectedIndex = oListValue.options.length - 1 ;
|
|
||||||
|
|
||||||
oTxtText.value = '' ;
|
|
||||||
oTxtValue.value = '' ;
|
|
||||||
|
|
||||||
oTxtText.focus() ;
|
|
||||||
}
|
|
||||||
|
|
||||||
function Modify()
|
|
||||||
{
|
|
||||||
var iIndex = oListText.selectedIndex ;
|
|
||||||
|
|
||||||
if ( iIndex < 0 ) return ;
|
|
||||||
|
|
||||||
var oTxtText = document.getElementById( "txtText" ) ;
|
|
||||||
var oTxtValue = document.getElementById( "txtValue" ) ;
|
|
||||||
|
|
||||||
oListText.options[ iIndex ].innerHTML = oTxtText.value ;
|
|
||||||
oListText.options[ iIndex ].value = oTxtText.value ;
|
|
||||||
|
|
||||||
oListValue.options[ iIndex ].innerHTML = oTxtValue.value ;
|
|
||||||
oListValue.options[ iIndex ].value = oTxtValue.value ;
|
|
||||||
|
|
||||||
oTxtText.value = '' ;
|
|
||||||
oTxtValue.value = '' ;
|
|
||||||
|
|
||||||
oTxtText.focus() ;
|
|
||||||
}
|
|
||||||
|
|
||||||
function Move( steps )
|
|
||||||
{
|
|
||||||
ChangeOptionPosition( oListText, steps ) ;
|
|
||||||
ChangeOptionPosition( oListValue, steps ) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
function Delete()
|
|
||||||
{
|
|
||||||
RemoveSelectedOptions( oListText ) ;
|
|
||||||
RemoveSelectedOptions( oListValue ) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
function SetSelectedValue()
|
|
||||||
{
|
|
||||||
var iIndex = oListValue.selectedIndex ;
|
|
||||||
if ( iIndex < 0 ) return ;
|
|
||||||
|
|
||||||
var oTxtValue = document.getElementById( "txtSelValue" ) ;
|
|
||||||
|
|
||||||
oTxtValue.value = oListValue.options[ iIndex ].value ;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Moves the selected option by a number of steps (also negative)
|
|
||||||
function ChangeOptionPosition( combo, steps )
|
|
||||||
{
|
|
||||||
var iActualIndex = combo.selectedIndex ;
|
|
||||||
|
|
||||||
if ( iActualIndex < 0 )
|
|
||||||
return ;
|
|
||||||
|
|
||||||
var iFinalIndex = iActualIndex + steps ;
|
|
||||||
|
|
||||||
if ( iFinalIndex < 0 )
|
|
||||||
iFinalIndex = 0 ;
|
|
||||||
|
|
||||||
if ( iFinalIndex > ( combo.options.length - 1 ) )
|
|
||||||
iFinalIndex = combo.options.length - 1 ;
|
|
||||||
|
|
||||||
if ( iActualIndex == iFinalIndex )
|
|
||||||
return ;
|
|
||||||
|
|
||||||
var oOption = combo.options[ iActualIndex ] ;
|
|
||||||
var sText = oOption.innerHTML ;
|
|
||||||
var sValue = oOption.value ;
|
|
||||||
|
|
||||||
combo.remove( iActualIndex ) ;
|
|
||||||
|
|
||||||
oOption = AddComboOption( combo, sText, sValue, null, iFinalIndex ) ;
|
|
||||||
|
|
||||||
oOption.selected = true ;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Remove all selected options from a SELECT object
|
|
||||||
function RemoveSelectedOptions(combo)
|
|
||||||
{
|
|
||||||
// Save the selected index
|
|
||||||
var iSelectedIndex = combo.selectedIndex ;
|
|
||||||
|
|
||||||
var oOptions = combo.options ;
|
|
||||||
|
|
||||||
// Remove all selected options
|
|
||||||
for ( var i = oOptions.length - 1 ; i >= 0 ; i-- )
|
|
||||||
{
|
|
||||||
if (oOptions[i].selected) combo.remove(i) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Reset the selection based on the original selected index
|
|
||||||
if ( combo.options.length > 0 )
|
|
||||||
{
|
|
||||||
if ( iSelectedIndex >= combo.options.length ) iSelectedIndex = combo.options.length - 1 ;
|
|
||||||
combo.selectedIndex = iSelectedIndex ;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Add a new option to a SELECT object (combo or list)
|
|
||||||
function AddComboOption( combo, optionText, optionValue, documentObject, index )
|
|
||||||
{
|
|
||||||
var oOption ;
|
|
||||||
|
|
||||||
if ( documentObject )
|
|
||||||
oOption = documentObject.createElement("OPTION") ;
|
|
||||||
else
|
|
||||||
oOption = document.createElement("OPTION") ;
|
|
||||||
|
|
||||||
if ( index != null )
|
|
||||||
combo.options.add( oOption, index ) ;
|
|
||||||
else
|
|
||||||
combo.options.add( oOption ) ;
|
|
||||||
|
|
||||||
oOption.innerHTML = optionText.length > 0 ? optionText : ' ' ;
|
|
||||||
oOption.value = optionValue ;
|
|
||||||
|
|
||||||
return oOption ;
|
|
||||||
}
|
|
||||||
@@ -1,109 +0,0 @@
|
|||||||
<!--
|
|
||||||
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
|
||||||
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
|
||||||
*
|
|
||||||
* == BEGIN LICENSE ==
|
|
||||||
*
|
|
||||||
* Licensed under the terms of any of the following licenses at your
|
|
||||||
* choice:
|
|
||||||
*
|
|
||||||
* - GNU General Public License Version 2 or later (the "GPL")
|
|
||||||
* http://www.gnu.org/licenses/gpl.html
|
|
||||||
*
|
|
||||||
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
|
||||||
* http://www.gnu.org/licenses/lgpl.html
|
|
||||||
*
|
|
||||||
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
|
||||||
* http://www.mozilla.org/MPL/MPL-1.1.html
|
|
||||||
*
|
|
||||||
* == END LICENSE ==
|
|
||||||
*
|
|
||||||
* File Name: fck_smiley.html
|
|
||||||
* Smileys (emoticons) dialog window.
|
|
||||||
*
|
|
||||||
* File Authors:
|
|
||||||
* Frederico Caldeira Knabben (www.fckeditor.net)
|
|
||||||
-->
|
|
||||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
|
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
||||||
<head>
|
|
||||||
<title></title>
|
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
||||||
<meta name="robots" content="noindex, nofollow" />
|
|
||||||
<style type="text/css">
|
|
||||||
.Hand
|
|
||||||
{
|
|
||||||
cursor: pointer;
|
|
||||||
cursor: hand;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
<script type="text/javascript">
|
|
||||||
|
|
||||||
var oEditor = window.parent.InnerDialogLoaded() ;
|
|
||||||
|
|
||||||
window.onload = function ()
|
|
||||||
{
|
|
||||||
// First of all, translate the dialog box texts
|
|
||||||
oEditor.FCKLanguageManager.TranslatePage(document) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
function InsertSmiley( url )
|
|
||||||
{
|
|
||||||
var oImg = oEditor.FCK.CreateElement( 'IMG' ) ;
|
|
||||||
oImg.src = url ;
|
|
||||||
oImg.setAttribute( '_fcksavedurl', url ) ;
|
|
||||||
|
|
||||||
// For long smileys list, it seams that IE continues loading the images in
|
|
||||||
// the background when you quickly select one image. so, let's clear
|
|
||||||
// everything before closing.
|
|
||||||
document.body.innerHTML = '' ;
|
|
||||||
|
|
||||||
window.parent.Cancel() ;
|
|
||||||
}
|
|
||||||
|
|
||||||
function over(td)
|
|
||||||
{
|
|
||||||
td.className = 'LightBackground Hand' ;
|
|
||||||
}
|
|
||||||
|
|
||||||
function out(td)
|
|
||||||
{
|
|
||||||
td.className = 'DarkBackground Hand' ;
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
</head>
|
|
||||||
<body scroll="no">
|
|
||||||
<table cellpadding="2" cellspacing="2" align="center" border="0" width="100%" height="100%">
|
|
||||||
<script type="text/javascript">
|
|
||||||
|
|
||||||
var FCKConfig = oEditor.FCKConfig ;
|
|
||||||
|
|
||||||
var sBasePath = FCKConfig.SmileyPath ;
|
|
||||||
var aImages = FCKConfig.SmileyImages ;
|
|
||||||
var iCols = FCKConfig.SmileyColumns ;
|
|
||||||
var iColWidth = parseInt( 100 / iCols, 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>
|
|
||||||
@@ -1,69 +0,0 @@
|
|||||||
<!--
|
|
||||||
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
|
||||||
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
|
||||||
*
|
|
||||||
* == BEGIN LICENSE ==
|
|
||||||
*
|
|
||||||
* Licensed under the terms of any of the following licenses at your
|
|
||||||
* choice:
|
|
||||||
*
|
|
||||||
* - GNU General Public License Version 2 or later (the "GPL")
|
|
||||||
* http://www.gnu.org/licenses/gpl.html
|
|
||||||
*
|
|
||||||
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
|
||||||
* http://www.gnu.org/licenses/lgpl.html
|
|
||||||
*
|
|
||||||
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
|
||||||
* http://www.mozilla.org/MPL/MPL-1.1.html
|
|
||||||
*
|
|
||||||
* == END LICENSE ==
|
|
||||||
*
|
|
||||||
* File Name: fck_source.html
|
|
||||||
* Source editor dialog window.
|
|
||||||
*
|
|
||||||
* File Authors:
|
|
||||||
* Frederico Caldeira Knabben (www.fckeditor.net)
|
|
||||||
-->
|
|
||||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title>Source</title>
|
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
|
||||||
<meta name="robots" content="noindex, nofollow">
|
|
||||||
<link href="common/fck_dialog_common.css" rel="stylesheet" type="text/css" />
|
|
||||||
<script language="javascript">
|
|
||||||
|
|
||||||
var oEditor = window.parent.InnerDialogLoaded() ;
|
|
||||||
var FCK = oEditor.FCK ;
|
|
||||||
var FCKConfig = oEditor.FCKConfig ;
|
|
||||||
|
|
||||||
window.onload = function()
|
|
||||||
{
|
|
||||||
// EnableXHTML and EnableSourceXHTML has been deprecated
|
|
||||||
// document.getElementById('txtSource').value = ( FCKConfig.EnableXHTML && FCKConfig.EnableSourceXHTML ? FCK.GetXHTML( FCKConfig.FormatSource ) : FCK.GetHTML( FCKConfig.FormatSource ) ) ;
|
|
||||||
document.getElementById('txtSource').value = FCK.GetXHTML( FCKConfig.FormatSource ) ;
|
|
||||||
|
|
||||||
// Activate the "OK" button.
|
|
||||||
window.parent.SetOkButton( true ) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
//#### The OK button was hit.
|
|
||||||
function Ok()
|
|
||||||
{
|
|
||||||
if ( oEditor.FCKBrowserInfo.IsIE )
|
|
||||||
oEditor.FCKUndo.SaveUndoStep() ;
|
|
||||||
|
|
||||||
FCK.SetHTML( document.getElementById('txtSource').value, false ) ;
|
|
||||||
|
|
||||||
return true ;
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
</head>
|
|
||||||
<body scroll="no" style="OVERFLOW: hidden">
|
|
||||||
<table width="100%" height="100%">
|
|
||||||
<tr>
|
|
||||||
<td height="100%"><textarea id="txtSource" dir="ltr" style="PADDING-RIGHT: 5px; PADDING-LEFT: 5px; FONT-SIZE: 14px; PADDING-BOTTOM: 5px; WIDTH: 100%; PADDING-TOP: 5px; FONT-FAMILY: Monospace; HEIGHT: 100%">Loading. Please wait...</textarea></td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
@@ -1,117 +0,0 @@
|
|||||||
<!--
|
|
||||||
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
|
||||||
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
|
||||||
*
|
|
||||||
* == BEGIN LICENSE ==
|
|
||||||
*
|
|
||||||
* Licensed under the terms of any of the following licenses at your
|
|
||||||
* choice:
|
|
||||||
*
|
|
||||||
* - GNU General Public License Version 2 or later (the "GPL")
|
|
||||||
* http://www.gnu.org/licenses/gpl.html
|
|
||||||
*
|
|
||||||
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
|
||||||
* http://www.gnu.org/licenses/lgpl.html
|
|
||||||
*
|
|
||||||
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
|
||||||
* http://www.mozilla.org/MPL/MPL-1.1.html
|
|
||||||
*
|
|
||||||
* == END LICENSE ==
|
|
||||||
*
|
|
||||||
* File Name: fck_specialchar.html
|
|
||||||
* Special Chars Selector dialog window.
|
|
||||||
*
|
|
||||||
* File Authors:
|
|
||||||
* Frederico Caldeira Knabben (www.fckeditor.net)
|
|
||||||
-->
|
|
||||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<meta name="robots" content="noindex, nofollow">
|
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
|
||||||
<style type="text/css">
|
|
||||||
.Hand
|
|
||||||
{
|
|
||||||
cursor: pointer ;
|
|
||||||
cursor: hand ;
|
|
||||||
}
|
|
||||||
.Sample { font-size: 24px; }
|
|
||||||
</style>
|
|
||||||
<script type="text/javascript">
|
|
||||||
|
|
||||||
var oEditor = window.parent.InnerDialogLoaded() ;
|
|
||||||
|
|
||||||
var oSample ;
|
|
||||||
|
|
||||||
function insertChar(charValue)
|
|
||||||
{
|
|
||||||
oEditor.FCK.InsertHtml( charValue || "" ) ;
|
|
||||||
window.parent.Cancel() ;
|
|
||||||
}
|
|
||||||
|
|
||||||
function over(td)
|
|
||||||
{
|
|
||||||
oSample.innerHTML = td.innerHTML ;
|
|
||||||
td.className = 'LightBackground SpecialCharsOver Hand' ;
|
|
||||||
}
|
|
||||||
|
|
||||||
function out(td)
|
|
||||||
{
|
|
||||||
oSample.innerHTML = " " ;
|
|
||||||
td.className = 'DarkBackground SpecialCharsOut Hand' ;
|
|
||||||
}
|
|
||||||
|
|
||||||
function setDefaults()
|
|
||||||
{
|
|
||||||
// Gets the sample placeholder.
|
|
||||||
oSample = document.getElementById("SampleTD") ;
|
|
||||||
|
|
||||||
// First of all, translates the dialog box texts.
|
|
||||||
oEditor.FCKLanguageManager.TranslatePage(document) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
</script>
|
|
||||||
</HEAD>
|
|
||||||
<BODY onload="setDefaults()" scroll="no">
|
|
||||||
<table cellpadding="0" cellspacing="0" width="100%" height="100%">
|
|
||||||
<tr>
|
|
||||||
<td width="100%">
|
|
||||||
<table cellpadding="1" cellspacing="1" align="center" border="0" width="100%" height="100%">
|
|
||||||
<script type="text/javascript">
|
|
||||||
var aChars = ["!",""","#","$","%","&","\\'","(",")","*","+","-",".","/","0","1","2","3","4","5","6","7","8","9",":",";","<","=",">","?","@","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","[","]","^","_","`","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","{","|","}","~","€","‘","’","’","“","”","–","—","¡","¢","£","¤","¥","¦","§","¨","©","ª","«","¬","®","¯","°","±","²","³","´","µ","¶","·","¸","¹","º","»","¼","½","¾","¿","À","Á","Â","Ã","Ä","Å","Æ","Ç","È","É","Ê","Ë","Ì","Í","Î","Ï","Ð","Ñ","Ò","Ó","Ô","Õ","Ö","×","Ø","Ù","Ú","Û","Ü","Ý","Þ","ß","à","á","â","ã","ä","å","æ","ç","è","é","ê","ë","ì","í","î","ï","ð","ñ","ò","ó","ô","õ","ö","÷","ø","ù","ú","û","ü","ü","ý","þ","ÿ","Œ","œ","‚","‛","„","…","™","►","•","→","⇒","⇔","♦","≈"] ;
|
|
||||||
|
|
||||||
var cols = 20 ;
|
|
||||||
|
|
||||||
var i = 0 ;
|
|
||||||
while (i < aChars.length)
|
|
||||||
{
|
|
||||||
document.write("<TR>") ;
|
|
||||||
for(var j = 0 ; j < cols ; j++)
|
|
||||||
{
|
|
||||||
if (aChars[i])
|
|
||||||
{
|
|
||||||
document.write('<TD width="1%" class="DarkBackground SpecialCharsOut Hand" align="center" onclick="insertChar(\'' + aChars[i].replace(/&/g, "&") + '\')" onmouseover="over(this)" onmouseout="out(this)">') ;
|
|
||||||
document.write(aChars[i]) ;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
document.write("<TD class='DarkBackground SpecialCharsOut'> ") ;
|
|
||||||
document.write("<\/TD>") ;
|
|
||||||
i++ ;
|
|
||||||
}
|
|
||||||
document.write("<\/TR>") ;
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
</table>
|
|
||||||
</td>
|
|
||||||
<td nowrap> </td>
|
|
||||||
<td valign="top">
|
|
||||||
<table width="40" cellpadding="0" cellspacing="0" border="0">
|
|
||||||
<tr>
|
|
||||||
<td id="SampleTD" width="40" height="40" align="center" class="DarkBackground SpecialCharsOut Sample"> </td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</BODY>
|
|
||||||
</HTML>
|
|
||||||
@@ -1,68 +0,0 @@
|
|||||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
|
|
||||||
<!--
|
|
||||||
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
|
||||||
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
|
||||||
*
|
|
||||||
* == BEGIN LICENSE ==
|
|
||||||
*
|
|
||||||
* Licensed under the terms of any of the following licenses at your
|
|
||||||
* choice:
|
|
||||||
*
|
|
||||||
* - GNU General Public License Version 2 or later (the "GPL")
|
|
||||||
* http://www.gnu.org/licenses/gpl.html
|
|
||||||
*
|
|
||||||
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
|
||||||
* http://www.gnu.org/licenses/lgpl.html
|
|
||||||
*
|
|
||||||
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
|
||||||
* http://www.mozilla.org/MPL/MPL-1.1.html
|
|
||||||
*
|
|
||||||
* == END LICENSE ==
|
|
||||||
*
|
|
||||||
* File Name: fck_spellerpages.html
|
|
||||||
* Spell Check dialog window.
|
|
||||||
*
|
|
||||||
* File Authors:
|
|
||||||
* Frederico Caldeira Knabben (www.fckeditor.net)
|
|
||||||
-->
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title>Spell Check</title>
|
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
|
||||||
<meta content="noindex, nofollow" name="robots">
|
|
||||||
<script src="fck_spellerpages/spellerpages/spellChecker.js"></script>
|
|
||||||
<script type="text/javascript">
|
|
||||||
|
|
||||||
var oEditor = window.parent.InnerDialogLoaded() ;
|
|
||||||
var FCKLang = oEditor.FCKLang ;
|
|
||||||
|
|
||||||
window.onload = function()
|
|
||||||
{
|
|
||||||
document.getElementById('txtHtml').value = oEditor.FCK.EditorDocument.body.innerHTML ;
|
|
||||||
|
|
||||||
var oSpeller = new spellChecker( document.getElementById('txtHtml') ) ;
|
|
||||||
oSpeller.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.SetHTML( document.getElementById('txtHtml').value ) ;
|
|
||||||
window.parent.Cancel() ;
|
|
||||||
}
|
|
||||||
|
|
||||||
</script>
|
|
||||||
</head>
|
|
||||||
<body style="OVERFLOW: hidden" scroll="no" style="padding:0px;">
|
|
||||||
<input type="hidden" id="txtHtml" value="">
|
|
||||||
<iframe id="frmSpell" src="javascript:void(0)" name="spellchecker" width="100%" height="100%" frameborder="0"></iframe>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
@@ -1,87 +0,0 @@
|
|||||||
////////////////////////////////////////////////////
|
|
||||||
// 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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,153 +0,0 @@
|
|||||||
<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>
|
|
||||||
@@ -1,174 +0,0 @@
|
|||||||
<cfsilent>
|
|
||||||
<!---
|
|
||||||
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 needs.
|
|
||||||
--->
|
|
||||||
<cfset apsell_dir = "c:\aspell\bin">
|
|
||||||
|
|
||||||
<cfset lang = "en_US">
|
|
||||||
<cfset aspell_opts = "-a --lang=#lang# --encoding=utf-8 -H">
|
|
||||||
|
|
||||||
<!--- Be sure the temporary folder exists --->
|
|
||||||
<cfset tempFolder = "c:\aspell\temp">
|
|
||||||
<cfset tempfile = "spell_#randrange(1,10000)#">
|
|
||||||
|
|
||||||
<cfset spellercss = "../spellerStyle.css">
|
|
||||||
<cfset word_win_src = "../wordWindow.js">
|
|
||||||
|
|
||||||
<cfset form.checktext = form["textinputs[]"]>
|
|
||||||
|
|
||||||
<cfscript>
|
|
||||||
function LastIndexOf(subs, str)
|
|
||||||
{
|
|
||||||
return Len(str) - Find(subs, Reverse(str)) + 1;
|
|
||||||
}
|
|
||||||
</cfscript>
|
|
||||||
|
|
||||||
<!--- Takes care of those pesky smart quotes from MS apps, replaces them with regular quotes --->
|
|
||||||
<cfparam name="url.checktext" default="">
|
|
||||||
<cfparam name="form.checktext" default="#url.checktext#">
|
|
||||||
<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>
|
|
||||||
<cfset field = URLDecode(field)>
|
|
||||||
<cfloop list="#field#" index="line" delimiters="#crlf#">
|
|
||||||
<!--- <cfset submitted_text = replace(submitted_text,"'","\'","All")>
|
|
||||||
<cfset submitted_text = replace(submitted_text,"""","\""","All")> --->
|
|
||||||
<cfset text = text & "^" & Trim(JSStringFormat(line)) & "#crlf#">
|
|
||||||
</cfloop>
|
|
||||||
</cfloop>
|
|
||||||
|
|
||||||
|
|
||||||
<!--- need to escape special javascript characters such as ' --->
|
|
||||||
<cfset unaltered_text = submitted_text>
|
|
||||||
|
|
||||||
<!--- create temp file from the submitted text, this will be passed to aspell to be check for misspelled words --->
|
|
||||||
<cffile action="write" file="#tempFolder#\#tempfile#.txt" output="#text#" charset="utf-8">
|
|
||||||
|
|
||||||
<!--- cfsavecontent is used to set the variable that will be returned with the results from aspell.
|
|
||||||
If your using the new version of mx 6.1 you can use the following cfexecute tag instead:
|
|
||||||
<cfexecute name="C:\WINDOWS\SYSTEM32\cmd.exe" arguments="/c type c:\test\#tempfile#.txt | c:\aspell\bin\aspell #aspell_opts#" timeout="100" variable="results"></cfexecute> --->
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<cfsavecontent variable="food">
|
|
||||||
<cfexecute name="C:\WINDOWS\SYSTEM32\cmd.exe" arguments="/c type #tempFolder#\#tempfile#.txt | #apsell_dir#\aspell #aspell_opts#" timeout="100"></cfexecute>
|
|
||||||
</cfsavecontent>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<!--- remove temp file --->
|
|
||||||
<cffile action="delete" file="#tempFolder#\#tempfile#.txt">
|
|
||||||
|
|
||||||
<cfset texts = StructNew()>
|
|
||||||
<cfset texts.textinputs = "">
|
|
||||||
<cfset texts.words = "">
|
|
||||||
<cfset texts.abort = "">
|
|
||||||
|
|
||||||
<!--- Generate Text Inputs --->
|
|
||||||
|
|
||||||
<cfset i = "0">
|
|
||||||
<cfloop index="text" list="#form.checktext#">
|
|
||||||
<cfset texts.textinputs = ListAppend(texts.textinputs, 'textinputs[#i#] = decodeURIComponent("#text#");', '#Chr(13)##Chr(10)#')>
|
|
||||||
<cfset i = i + "1">
|
|
||||||
</cfloop>
|
|
||||||
|
|
||||||
<!--- Generate Words Lists --->
|
|
||||||
|
|
||||||
<cfset cnt = "1">
|
|
||||||
<cfset word_cnt = "0">
|
|
||||||
<cfset input_cnt = "-1">
|
|
||||||
<cfloop list="#food#" index="list" delimiters="#chr(10)##chr(13)#">
|
|
||||||
<!--- removes the first line of the aspell output "@(#) International Ispell Version 3.1.20 (but really Aspell 0.50.3)" --->
|
|
||||||
<cfif NOT cnt IS "1">
|
|
||||||
<cfif Find("&", list) OR Find("##", list)>
|
|
||||||
<!--- word that misspelled --->
|
|
||||||
<cfset bad_word = listGetAt(list, "2", " ")>
|
|
||||||
<!--- sugestions --->
|
|
||||||
<cfset wrdList = mid(list,(LastIndexOf(':', list) + 2),(len(list) - (LastIndexOf(':', list) + 2)))>
|
|
||||||
<cfset wrdsList = "">
|
|
||||||
<cfloop list="#wrdList#" index="idx">
|
|
||||||
<cfset wrdsList = ListAppend(wrdsList, " '" & trim(replace(idx,"'","\'","All")) & "'", ", ")>
|
|
||||||
</cfloop>
|
|
||||||
<cfset wrdsList = Right(wrdsList, Len(wrdsList) - 1)>
|
|
||||||
<!--- javascript --->
|
|
||||||
<cfset texts.words = ListAppend(texts.words, "words[#input_cnt#][#word_cnt#] = '#trim(replace(bad_word,"'","\'","All"))#';", "#Chr(13)##Chr(10)#")>
|
|
||||||
<cfset texts.words = ListAppend(texts.words, "suggs[#input_cnt#][#word_cnt#] = [#trim(wrdsList)#];", "#Chr(13)##Chr(10)#")>
|
|
||||||
<cfset word_cnt = word_cnt + 1>
|
|
||||||
<cfelseif find("*", list)>
|
|
||||||
<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#")>
|
|
||||||
</cfif>
|
|
||||||
</cfif>
|
|
||||||
<cfset cnt = cnt + 1>
|
|
||||||
</cfloop>
|
|
||||||
|
|
||||||
<cfif texts.words IS "">
|
|
||||||
<cfset texts.abort = "alert('Spell check complete.\n\nNo misspellings found.');#chrlf#top.window.close();">
|
|
||||||
</cfif>
|
|
||||||
|
|
||||||
</cfsilent><cfoutput><cfcontent type="text/html"><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##Chr(13)##Chr(10)#
|
|
||||||
#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>
|
|
||||||
@@ -1,196 +0,0 @@
|
|||||||
<?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"; // 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>
|
|
||||||
|
|
||||||
@@ -1,180 +0,0 @@
|
|||||||
#!/usr/bin/perl
|
|
||||||
|
|
||||||
use CGI qw/ :standard /;
|
|
||||||
use File::Temp qw/ tempfile tempdir /;
|
|
||||||
|
|
||||||
# my $spellercss = '/speller/spellerStyle.css'; # by FredCK
|
|
||||||
my $spellercss = '../spellerStyle.css'; # by FredCK
|
|
||||||
# my $wordWindowSrc = '/speller/wordWindow.js'; # by FredCK
|
|
||||||
my $wordWindowSrc = '../wordWindow.js'; # by FredCK
|
|
||||||
my @textinputs = param( 'textinputs[]' ); # array
|
|
||||||
# my $aspell_cmd = 'aspell'; # by FredCK (for Linux)
|
|
||||||
my $aspell_cmd = '"C:\Program Files\Aspell\bin\aspell.exe"'; # by FredCK (for Windows)
|
|
||||||
my $lang = 'en_US';
|
|
||||||
# my $aspell_opts = "-a --lang=$lang --encoding=utf-8"; # by FredCK
|
|
||||||
my $aspell_opts = "-a --lang=$lang --encoding=utf-8 -H"; # by FredCK
|
|
||||||
my $input_separator = "A";
|
|
||||||
|
|
||||||
# set the 'wordtext' JavaScript variable to the submitted text.
|
|
||||||
sub printTextVar {
|
|
||||||
for( my $i = 0; $i <= $#textinputs; $i++ ) {
|
|
||||||
print "textinputs[$i] = decodeURIComponent('" . escapeQuote( $textinputs[$i] ) . "')\n";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
sub printTextIdxDecl {
|
|
||||||
my $idx = shift;
|
|
||||||
print "words[$idx] = [];\n";
|
|
||||||
print "suggs[$idx] = [];\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
sub printWordsElem {
|
|
||||||
my( $textIdx, $wordIdx, $word ) = @_;
|
|
||||||
print "words[$textIdx][$wordIdx] = '" . escapeQuote( $word ) . "';\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
sub printSuggsElem {
|
|
||||||
my( $textIdx, $wordIdx, @suggs ) = @_;
|
|
||||||
print "suggs[$textIdx][$wordIdx] = [";
|
|
||||||
for my $i ( 0..$#suggs ) {
|
|
||||||
print "'" . escapeQuote( $suggs[$i] ) . "'";
|
|
||||||
if( $i < $#suggs ) {
|
|
||||||
print ", ";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
print "];\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
sub printCheckerResults {
|
|
||||||
my $textInputIdx = -1;
|
|
||||||
my $wordIdx = 0;
|
|
||||||
my $unhandledText;
|
|
||||||
# create temp file
|
|
||||||
my $dir = tempdir( CLEANUP => 1 );
|
|
||||||
my( $fh, $tmpfilename ) = tempfile( DIR => $dir );
|
|
||||||
|
|
||||||
# temp file was created properly?
|
|
||||||
|
|
||||||
# open temp file, add the submitted text.
|
|
||||||
for( my $i = 0; $i <= $#textinputs; $i++ ) {
|
|
||||||
$text = url_decode( $textinputs[$i] );
|
|
||||||
@lines = split( /\n/, $text );
|
|
||||||
print $fh "\%\n"; # exit terse mode
|
|
||||||
print $fh "^$input_separator\n";
|
|
||||||
print $fh "!\n"; # enter terse mode
|
|
||||||
for my $line ( @lines ) {
|
|
||||||
# use carat on each line to escape possible aspell commands
|
|
||||||
print $fh "^$line\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
# exec aspell command
|
|
||||||
my $cmd = "$aspell_cmd $aspell_opts < $tmpfilename 2>&1";
|
|
||||||
open ASPELL, "$cmd |" or handleError( "Could not execute `$cmd`\\n$!" ) and return;
|
|
||||||
# parse each line of aspell return
|
|
||||||
for my $ret ( <ASPELL> ) {
|
|
||||||
chomp( $ret );
|
|
||||||
# if '&', then not in dictionary but has suggestions
|
|
||||||
# if '#', then not in dictionary and no suggestions
|
|
||||||
# if '*', then it is a delimiter between text inputs
|
|
||||||
if( $ret =~ /^\*/ ) {
|
|
||||||
$textInputIdx++;
|
|
||||||
printTextIdxDecl( $textInputIdx );
|
|
||||||
$wordIdx = 0;
|
|
||||||
|
|
||||||
} elsif( $ret =~ /^(&|#)/ ) {
|
|
||||||
my @tokens = split( " ", $ret, 5 );
|
|
||||||
printWordsElem( $textInputIdx, $wordIdx, $tokens[1] );
|
|
||||||
my @suggs = ();
|
|
||||||
if( $tokens[4] ) {
|
|
||||||
@suggs = split( ", ", $tokens[4] );
|
|
||||||
}
|
|
||||||
printSuggsElem( $textInputIdx, $wordIdx, @suggs );
|
|
||||||
$wordIdx++;
|
|
||||||
} else {
|
|
||||||
$unhandledText .= $ret;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
close ASPELL or handleError( "Error executing `$cmd`\\n$unhandledText" ) and return;
|
|
||||||
}
|
|
||||||
|
|
||||||
sub escapeQuote {
|
|
||||||
my $str = shift;
|
|
||||||
$str =~ s/'/\\'/g;
|
|
||||||
return $str;
|
|
||||||
}
|
|
||||||
|
|
||||||
sub handleError {
|
|
||||||
my $err = shift;
|
|
||||||
print "error = '" . escapeQuote( $err ) . "';\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
sub url_decode {
|
|
||||||
local $_ = @_ ? shift : $_;
|
|
||||||
defined or return;
|
|
||||||
# change + signs to spaces
|
|
||||||
tr/+/ /;
|
|
||||||
# change hex escapes to the proper characters
|
|
||||||
s/%([a-fA-F0-9]{2})/pack "H2", $1/eg;
|
|
||||||
return $_;
|
|
||||||
}
|
|
||||||
|
|
||||||
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
|
|
||||||
# Display HTML
|
|
||||||
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
|
|
||||||
|
|
||||||
print <<EOF;
|
|
||||||
Content-type: text/html; charset=utf-8
|
|
||||||
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
|
||||||
<link rel="stylesheet" type="text/css" href="$spellercss"/>
|
|
||||||
<script src="$wordWindowSrc"></script>
|
|
||||||
<script type="text/javascript">
|
|
||||||
var suggs = new Array();
|
|
||||||
var words = new Array();
|
|
||||||
var textinputs = new Array();
|
|
||||||
var error;
|
|
||||||
EOF
|
|
||||||
|
|
||||||
printTextVar();
|
|
||||||
|
|
||||||
printCheckerResults();
|
|
||||||
|
|
||||||
print <<EOF;
|
|
||||||
var wordWindowObj = new wordWindow();
|
|
||||||
wordWindowObj.originalSpellings = words;
|
|
||||||
wordWindowObj.suggestions = suggs;
|
|
||||||
wordWindowObj.textInputs = textinputs;
|
|
||||||
|
|
||||||
|
|
||||||
function init_spell() {
|
|
||||||
// check if any error occured during server-side processing
|
|
||||||
if( error ) {
|
|
||||||
alert( error );
|
|
||||||
} else {
|
|
||||||
// call the init_spell() function in the parent frameset
|
|
||||||
if (parent.frames.length) {
|
|
||||||
parent.init_spell( wordWindowObj );
|
|
||||||
} else {
|
|
||||||
error = "This page was loaded outside of a frameset. ";
|
|
||||||
error += "It might not display properly";
|
|
||||||
alert( error );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
</script>
|
|
||||||
|
|
||||||
</head>
|
|
||||||
<body onLoad="init_spell();">
|
|
||||||
|
|
||||||
<script type="text/javascript">
|
|
||||||
wordWindowObj.writeBody();
|
|
||||||
</script>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
EOF
|
|
||||||
|
|
||||||
@@ -1,462 +0,0 @@
|
|||||||
////////////////////////////////////////////////////
|
|
||||||
// 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;
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1,71 +0,0 @@
|
|||||||
|
|
||||||
<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>
|
|
||||||
@@ -1,49 +0,0 @@
|
|||||||
.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;
|
|
||||||
}
|
|
||||||
@@ -1,272 +0,0 @@
|
|||||||
////////////////////////////////////////////////////
|
|
||||||
// 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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,290 +0,0 @@
|
|||||||
<!--
|
|
||||||
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
|
||||||
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
|
||||||
*
|
|
||||||
* == BEGIN LICENSE ==
|
|
||||||
*
|
|
||||||
* Licensed under the terms of any of the following licenses at your
|
|
||||||
* choice:
|
|
||||||
*
|
|
||||||
* - GNU General Public License Version 2 or later (the "GPL")
|
|
||||||
* http://www.gnu.org/licenses/gpl.html
|
|
||||||
*
|
|
||||||
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
|
||||||
* http://www.gnu.org/licenses/lgpl.html
|
|
||||||
*
|
|
||||||
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
|
||||||
* http://www.mozilla.org/MPL/MPL-1.1.html
|
|
||||||
*
|
|
||||||
* == END LICENSE ==
|
|
||||||
*
|
|
||||||
* File Name: fck_table.html
|
|
||||||
* Table dialog window.
|
|
||||||
*
|
|
||||||
* File Authors:
|
|
||||||
* Frederico Caldeira Knabben (www.fckeditor.net)
|
|
||||||
-->
|
|
||||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
|
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
||||||
<head>
|
|
||||||
<title>Table Properties</title>
|
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
||||||
<meta name="robots" content="noindex, nofollow" />
|
|
||||||
<script 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 ;
|
|
||||||
|
|
||||||
if (table.caption) document.getElementById('txtCaption').value = table.caption.innerHTML ;
|
|
||||||
|
|
||||||
document.getElementById('txtRows').disabled = true ;
|
|
||||||
document.getElementById('txtColumns').disabled = true ;
|
|
||||||
}
|
|
||||||
|
|
||||||
window.parent.SetOkButton( true ) ;
|
|
||||||
window.parent.SetAutoSize( true ) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Fired when the user press the OK button
|
|
||||||
function Ok()
|
|
||||||
{
|
|
||||||
var bExists = ( table != null ) ;
|
|
||||||
|
|
||||||
if ( ! bExists )
|
|
||||||
table = oEditor.FCK.EditorDocument.createElement( "TABLE" ) ;
|
|
||||||
|
|
||||||
// Removes the Width and Height styles
|
|
||||||
if ( bExists && table.style.width ) table.style.width = null ; //.removeAttribute("width") ;
|
|
||||||
if ( bExists && table.style.height ) table.style.height = null ; //.removeAttribute("height") ;
|
|
||||||
|
|
||||||
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 )
|
|
||||||
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 )
|
|
||||||
oCell.innerHTML = GECKO_BOGUS ;
|
|
||||||
//oCell.innerHTML = " " ;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
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>
|
|
||||||
@@ -1,259 +0,0 @@
|
|||||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
|
|
||||||
<!--
|
|
||||||
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
|
||||||
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
|
||||||
*
|
|
||||||
* == BEGIN LICENSE ==
|
|
||||||
*
|
|
||||||
* Licensed under the terms of any of the following licenses at your
|
|
||||||
* choice:
|
|
||||||
*
|
|
||||||
* - GNU General Public License Version 2 or later (the "GPL")
|
|
||||||
* http://www.gnu.org/licenses/gpl.html
|
|
||||||
*
|
|
||||||
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
|
||||||
* http://www.gnu.org/licenses/lgpl.html
|
|
||||||
*
|
|
||||||
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
|
||||||
* http://www.mozilla.org/MPL/MPL-1.1.html
|
|
||||||
*
|
|
||||||
* == END LICENSE ==
|
|
||||||
*
|
|
||||||
* File Name: fck_tablecell.html
|
|
||||||
* Cell properties dialog window.
|
|
||||||
*
|
|
||||||
* File Authors:
|
|
||||||
* Frederico Caldeira Knabben (www.fckeditor.net)
|
|
||||||
-->
|
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
||||||
<head>
|
|
||||||
<title>Table Cell Properties</title>
|
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
||||||
<meta name="robots" content="noindex, nofollow" />
|
|
||||||
<script src="common/fck_dialog_common.js" type="text/javascript"></script>
|
|
||||||
<script type="text/javascript">
|
|
||||||
|
|
||||||
var oEditor = window.parent.InnerDialogLoaded() ;
|
|
||||||
|
|
||||||
// Gets the document DOM
|
|
||||||
var oDOM = oEditor.FCK.EditorDocument ;
|
|
||||||
|
|
||||||
// Array of selected Cells
|
|
||||||
var aCells = oEditor.FCKTableHandler.GetSelectedCells() ;
|
|
||||||
|
|
||||||
window.onload = function()
|
|
||||||
{
|
|
||||||
// First of all, translate the dialog box texts
|
|
||||||
oEditor.FCKLanguageManager.TranslatePage( document ) ;
|
|
||||||
|
|
||||||
SetStartupValue() ;
|
|
||||||
|
|
||||||
window.parent.SetOkButton( true ) ;
|
|
||||||
window.parent.SetAutoSize( true ) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
function SetStartupValue()
|
|
||||||
{
|
|
||||||
if ( aCells.length > 0 )
|
|
||||||
{
|
|
||||||
var oCell = aCells[0] ;
|
|
||||||
var iWidth = GetAttribute( oCell, 'width' ) ;
|
|
||||||
|
|
||||||
if ( iWidth.indexOf && iWidth.indexOf( '%' ) >= 0 )
|
|
||||||
{
|
|
||||||
iWidth = iWidth.substr( 0, iWidth.length - 1 ) ;
|
|
||||||
GetE('selWidthType').value = 'percent' ;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( oCell.attributes['noWrap'] != null && oCell.attributes['noWrap'].specified )
|
|
||||||
GetE('selWordWrap').value = !oCell.noWrap ;
|
|
||||||
|
|
||||||
GetE('txtWidth').value = iWidth ;
|
|
||||||
GetE('txtHeight').value = GetAttribute( oCell, 'height' ) ;
|
|
||||||
GetE('selHAlign').value = GetAttribute( oCell, 'align' ) ;
|
|
||||||
GetE('selVAlign').value = GetAttribute( oCell, 'vAlign' ) ;
|
|
||||||
GetE('txtRowSpan').value = GetAttribute( oCell, 'rowSpan' ) ;
|
|
||||||
GetE('txtCollSpan').value = GetAttribute( oCell, 'colSpan' ) ;
|
|
||||||
GetE('txtBackColor').value = GetAttribute( oCell, 'bgColor' ) ;
|
|
||||||
GetE('txtBorderColor').value = GetAttribute( oCell, 'borderColor' ) ;
|
|
||||||
// GetE('cmbFontStyle').value = oCell.className ;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Fired when the user press the OK button
|
|
||||||
function Ok()
|
|
||||||
{
|
|
||||||
for( i = 0 ; i < aCells.length ; i++ )
|
|
||||||
{
|
|
||||||
if ( GetE('txtWidth').value.length > 0 )
|
|
||||||
aCells[i].width = GetE('txtWidth').value + ( GetE('selWidthType').value == 'percent' ? '%' : '') ;
|
|
||||||
else
|
|
||||||
aCells[i].removeAttribute( 'width', 0 ) ;
|
|
||||||
|
|
||||||
if ( GetE('selWordWrap').value == 'false' )
|
|
||||||
aCells[i].noWrap = true ;
|
|
||||||
else
|
|
||||||
aCells[i].removeAttribute( 'noWrap' ) ;
|
|
||||||
|
|
||||||
SetAttribute( aCells[i], 'height' , GetE('txtHeight').value ) ;
|
|
||||||
SetAttribute( aCells[i], 'align' , GetE('selHAlign').value ) ;
|
|
||||||
SetAttribute( aCells[i], 'vAlign' , GetE('selVAlign').value ) ;
|
|
||||||
SetAttribute( aCells[i], 'rowSpan' , GetE('txtRowSpan').value ) ;
|
|
||||||
SetAttribute( aCells[i], 'colSpan' , GetE('txtCollSpan').value ) ;
|
|
||||||
SetAttribute( aCells[i], 'bgColor' , GetE('txtBackColor').value ) ;
|
|
||||||
SetAttribute( aCells[i], 'borderColor' , GetE('txtBorderColor').value ) ;
|
|
||||||
// SetAttribute( aCells[i], 'className' , GetE('cmbFontStyle').value ) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
return true ;
|
|
||||||
}
|
|
||||||
|
|
||||||
function SelectBackColor( color )
|
|
||||||
{
|
|
||||||
if ( color && color.length > 0 )
|
|
||||||
GetE('txtBackColor').value = color ;
|
|
||||||
}
|
|
||||||
|
|
||||||
function SelectBorderColor( color )
|
|
||||||
{
|
|
||||||
if ( color && color.length > 0 )
|
|
||||||
GetE('txtBorderColor').value = color ;
|
|
||||||
}
|
|
||||||
|
|
||||||
function SelectColor( wich )
|
|
||||||
{
|
|
||||||
oEditor.FCKDialog.OpenDialog( 'FCKDialog_Color', oEditor.FCKLang.DlgColorTitle, 'dialog/fck_colorselector.html', 400, 330, wich == 'Back' ? SelectBackColor : SelectBorderColor, window ) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
</script>
|
|
||||||
</head>
|
|
||||||
<body scroll="no" style="overflow: hidden">
|
|
||||||
<table cellspacing="0" cellpadding="0" width="100%" border="0" height="100%">
|
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
<table cellspacing="1" cellpadding="1" width="100%" border="0">
|
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
<table cellspacing="0" cellpadding="0" border="0">
|
|
||||||
<tr>
|
|
||||||
<td nowrap="nowrap">
|
|
||||||
<span fcklang="DlgCellWidth">Width</span>:</td>
|
|
||||||
<td>
|
|
||||||
<input onkeypress="return IsDigit(event);" id="txtWidth" type="text" maxlength="4"
|
|
||||||
size="3" name="txtWidth" /> <select id="selWidthType" name="selWidthType">
|
|
||||||
<option fcklang="DlgCellWidthPx" value="pixels" selected="selected">pixels</option>
|
|
||||||
<option fcklang="DlgCellWidthPc" value="percent">percent</option>
|
|
||||||
</select></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td nowrap="nowrap">
|
|
||||||
<span fcklang="DlgCellHeight">Height</span>:</td>
|
|
||||||
<td>
|
|
||||||
<input id="txtHeight" type="text" maxlength="4" size="3" name="txtHeight" onkeypress="return IsDigit(event);" /> <span
|
|
||||||
fcklang="DlgCellWidthPx">pixels</span></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td nowrap="nowrap">
|
|
||||||
<span fcklang="DlgCellWordWrap">Word Wrap</span>:</td>
|
|
||||||
<td>
|
|
||||||
<select id="selWordWrap" name="selAlignment">
|
|
||||||
<option fcklang="DlgCellWordWrapYes" value="true" selected="selected">Yes</option>
|
|
||||||
<option fcklang="DlgCellWordWrapNo" value="false">No</option>
|
|
||||||
</select></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td nowrap="nowrap">
|
|
||||||
<span fcklang="DlgCellHorAlign">Horizontal Alignment</span>:</td>
|
|
||||||
<td>
|
|
||||||
<select id="selHAlign" name="selAlignment">
|
|
||||||
<option fcklang="DlgCellHorAlignNotSet" value="" selected><Not set></option>
|
|
||||||
<option fcklang="DlgCellHorAlignLeft" value="left">Left</option>
|
|
||||||
<option fcklang="DlgCellHorAlignCenter" value="center">Center</option>
|
|
||||||
<option fcklang="DlgCellHorAlignRight" value="right">Right</option>
|
|
||||||
</select></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td nowrap="nowrap">
|
|
||||||
<span fcklang="DlgCellVerAlign">Vertical Alignment</span>:</td>
|
|
||||||
<td>
|
|
||||||
<select id="selVAlign" name="selAlignment">
|
|
||||||
<option fcklang="DlgCellVerAlignNotSet" value="" selected><Not set></option>
|
|
||||||
<option fcklang="DlgCellVerAlignTop" value="top">Top</option>
|
|
||||||
<option fcklang="DlgCellVerAlignMiddle" value="middle">Middle</option>
|
|
||||||
<option fcklang="DlgCellVerAlignBottom" value="bottom">Bottom</option>
|
|
||||||
<option fcklang="DlgCellVerAlignBaseline" value="baseline">Baseline</option>
|
|
||||||
</select></td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
</td>
|
|
||||||
<td align="right">
|
|
||||||
<table cellspacing="0" cellpadding="0" border="0">
|
|
||||||
<tr>
|
|
||||||
<td nowrap="nowrap">
|
|
||||||
<span fcklang="DlgCellRowSpan">Rows Span</span>:</td>
|
|
||||||
<td>
|
|
||||||
|
|
||||||
<input onkeypress="return IsDigit(event);" id="txtRowSpan" type="text" maxlength="3" size="2"
|
|
||||||
name="txtRows"></td>
|
|
||||||
<td>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td nowrap="nowrap">
|
|
||||||
<span fcklang="DlgCellCollSpan">Columns Span</span>:</td>
|
|
||||||
<td>
|
|
||||||
|
|
||||||
<input onkeypress="return IsDigit(event);" id="txtCollSpan" type="text" maxlength="2"
|
|
||||||
size="2" name="txtColumns"></td>
|
|
||||||
<td>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td nowrap="nowrap">
|
|
||||||
<span fcklang="DlgCellBackColor">Background Color</span>:</td>
|
|
||||||
<td>
|
|
||||||
<input id="txtBackColor" type="text" size="8" name="txtCellSpacing"></td>
|
|
||||||
<td>
|
|
||||||
|
|
||||||
<input type="button" fcklang="DlgCellBtnSelect" value="Select..." onclick="SelectColor( 'Back' )"></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td nowrap="nowrap">
|
|
||||||
<span fcklang="DlgCellBorderColor">Border Color</span>:</td>
|
|
||||||
<td>
|
|
||||||
<input id="txtBorderColor" type="text" size="8" name="txtCellPadding" /></td>
|
|
||||||
<td>
|
|
||||||
|
|
||||||
<input type="button" fcklang="DlgCellBtnSelect" value="Select..." onclick="SelectColor( 'Border' )" /></td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
@@ -1,246 +0,0 @@
|
|||||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
|
||||||
<!--
|
|
||||||
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
|
||||||
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
|
||||||
*
|
|
||||||
* == BEGIN LICENSE ==
|
|
||||||
*
|
|
||||||
* Licensed under the terms of any of the following licenses at your
|
|
||||||
* choice:
|
|
||||||
*
|
|
||||||
* - GNU General Public License Version 2 or later (the "GPL")
|
|
||||||
* http://www.gnu.org/licenses/gpl.html
|
|
||||||
*
|
|
||||||
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
|
||||||
* http://www.gnu.org/licenses/lgpl.html
|
|
||||||
*
|
|
||||||
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
|
||||||
* http://www.mozilla.org/MPL/MPL-1.1.html
|
|
||||||
*
|
|
||||||
* == END LICENSE ==
|
|
||||||
*
|
|
||||||
* File Name: fck_template.html
|
|
||||||
* Template selection dialog window.
|
|
||||||
*
|
|
||||||
* File Authors:
|
|
||||||
* Frederico Caldeira Knabben (www.fckeditor.net)
|
|
||||||
-->
|
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
||||||
<head>
|
|
||||||
<title></title>
|
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
||||||
<meta name="robots" content="noindex, nofollow" />
|
|
||||||
<style type="text/css">
|
|
||||||
.TplList
|
|
||||||
{
|
|
||||||
border: #dcdcdc 2px solid;
|
|
||||||
background-color: #ffffff;
|
|
||||||
overflow: auto;
|
|
||||||
width: 90%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.TplItem
|
|
||||||
{
|
|
||||||
margin: 5px;
|
|
||||||
padding: 7px;
|
|
||||||
border: #eeeeee 1px solid;
|
|
||||||
}
|
|
||||||
|
|
||||||
.TplItem TABLE
|
|
||||||
{
|
|
||||||
display: inline;
|
|
||||||
}
|
|
||||||
|
|
||||||
.TplTitle
|
|
||||||
{
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
<script src="common/fck_dialog_common.js" type="text/javascript"></script>
|
|
||||||
<script type="text/javascript">
|
|
||||||
|
|
||||||
var oEditor = window.parent.InnerDialogLoaded() ;
|
|
||||||
var FCK = oEditor.FCK ;
|
|
||||||
var FCKLang = oEditor.FCKLang ;
|
|
||||||
var FCKConfig = oEditor.FCKConfig ;
|
|
||||||
|
|
||||||
window.onload = function()
|
|
||||||
{
|
|
||||||
// Set the right box height (browser dependent).
|
|
||||||
GetE('eList').style.height = document.all ? '100%' : '295px' ;
|
|
||||||
|
|
||||||
// Translate the dialog box texts.
|
|
||||||
oEditor.FCKLanguageManager.TranslatePage(document) ;
|
|
||||||
|
|
||||||
GetE('xChkReplaceAll').checked = ( FCKConfig.TemplateReplaceAll !== false ) ;
|
|
||||||
|
|
||||||
if ( FCKConfig.TemplateReplaceCheckbox !== false )
|
|
||||||
GetE('xReplaceBlock').style.display = '' ;
|
|
||||||
|
|
||||||
window.parent.SetAutoSize( true ) ;
|
|
||||||
|
|
||||||
LoadTemplatesXml() ;
|
|
||||||
}
|
|
||||||
|
|
||||||
function LoadTemplatesXml()
|
|
||||||
{
|
|
||||||
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.SetHTML( FCK._Templates[index].Html ) ;
|
|
||||||
else
|
|
||||||
FCK.InsertHtml( FCK._Templates[index].Html ) ;
|
|
||||||
|
|
||||||
window.parent.Cancel( true ) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
</script>
|
|
||||||
</head>
|
|
||||||
<body style="overflow: hidden">
|
|
||||||
<table width="100%" style="height: 100%">
|
|
||||||
<tr>
|
|
||||||
<td align="center">
|
|
||||||
<span fcklang="DlgTemplatesSelMsg">Please select the template to open in the editor<br />
|
|
||||||
(the actual contents will be lost):</span>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td height="100%" align="center">
|
|
||||||
<div id="eList" align="left" class="TplList">
|
|
||||||
<div id="eLoading" align="center" style="display: none">
|
|
||||||
<br />
|
|
||||||
<span fcklang="DlgTemplatesLoading">Loading templates list. Please wait...</span>
|
|
||||||
</div>
|
|
||||||
<div id="eEmpty" align="center" style="display: none">
|
|
||||||
<br />
|
|
||||||
<span fcklang="DlgTemplatesNoTpl">(No templates defined)</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr id="xReplaceBlock" style="display: none">
|
|
||||||
<td>
|
|
||||||
<table cellpadding="0" cellspacing="0">
|
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
<input id="xChkReplaceAll" type="checkbox" /></td>
|
|
||||||
<td>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<label for="xChkReplaceAll" fcklang="DlgTemplatesReplace">
|
|
||||||
Replace actual contents</label></td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
Before Width: | Height: | Size: 375 B |
|
Before Width: | Height: | Size: 333 B |
|
Before Width: | Height: | Size: 422 B |
@@ -1,98 +0,0 @@
|
|||||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
|
|
||||||
<!--
|
|
||||||
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
|
||||||
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
|
||||||
*
|
|
||||||
* == BEGIN LICENSE ==
|
|
||||||
*
|
|
||||||
* Licensed under the terms of any of the following licenses at your
|
|
||||||
* choice:
|
|
||||||
*
|
|
||||||
* - GNU General Public License Version 2 or later (the "GPL")
|
|
||||||
* http://www.gnu.org/licenses/gpl.html
|
|
||||||
*
|
|
||||||
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
|
||||||
* http://www.gnu.org/licenses/lgpl.html
|
|
||||||
*
|
|
||||||
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
|
||||||
* http://www.mozilla.org/MPL/MPL-1.1.html
|
|
||||||
*
|
|
||||||
* == END LICENSE ==
|
|
||||||
*
|
|
||||||
* File Name: fck_textarea.html
|
|
||||||
* Text Area dialog window.
|
|
||||||
*
|
|
||||||
* File Authors:
|
|
||||||
* Frederico Caldeira Knabben (www.fckeditor.net)
|
|
||||||
-->
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title>Text Area Properties</title>
|
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
|
||||||
<meta content="noindex, nofollow" name="robots">
|
|
||||||
<script src="common/fck_dialog_common.js" type="text/javascript"></script>
|
|
||||||
<script type="text/javascript">
|
|
||||||
|
|
||||||
var oEditor = window.parent.InnerDialogLoaded() ;
|
|
||||||
|
|
||||||
// Gets the document DOM
|
|
||||||
var oDOM = oEditor.FCK.EditorDocument ;
|
|
||||||
|
|
||||||
var oActiveEl = oEditor.FCKSelection.GetSelectedElement() ;
|
|
||||||
|
|
||||||
window.onload = function()
|
|
||||||
{
|
|
||||||
// First of all, translate the dialog box texts
|
|
||||||
oEditor.FCKLanguageManager.TranslatePage(document) ;
|
|
||||||
|
|
||||||
if ( oActiveEl && oActiveEl.tagName == 'TEXTAREA' )
|
|
||||||
{
|
|
||||||
GetE('txtName').value = oActiveEl.name ;
|
|
||||||
GetE('txtCols').value = GetAttribute( oActiveEl, 'cols' ) ;
|
|
||||||
GetE('txtRows').value = GetAttribute( oActiveEl, 'rows' ) ;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
oActiveEl = null ;
|
|
||||||
|
|
||||||
window.parent.SetOkButton( true ) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
function Ok()
|
|
||||||
{
|
|
||||||
if ( !oActiveEl )
|
|
||||||
{
|
|
||||||
oActiveEl = oEditor.FCK.EditorDocument.createElement( 'TEXTAREA' ) ;
|
|
||||||
oActiveEl = oEditor.FCK.InsertElementAndGetIt( oActiveEl ) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
oActiveEl.name = GetE('txtName').value ;
|
|
||||||
SetAttribute( oActiveEl, 'cols', GetE('txtCols').value ) ;
|
|
||||||
SetAttribute( oActiveEl, 'rows', GetE('txtRows').value ) ;
|
|
||||||
|
|
||||||
return true ;
|
|
||||||
}
|
|
||||||
|
|
||||||
</script>
|
|
||||||
</head>
|
|
||||||
<body style='OVERFLOW: hidden' scroll='no'>
|
|
||||||
<table height="100%" width="100%">
|
|
||||||
<tr>
|
|
||||||
<td align="center">
|
|
||||||
<table border="0" cellpadding="0" cellspacing="0" width="80%">
|
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
<span fckLang="DlgTextareaName">Name</span><br>
|
|
||||||
<input type="text" id="txtName" style="WIDTH: 100%">
|
|
||||||
<span fckLang="DlgTextareaCols">Collumns</span><br>
|
|
||||||
<input id="txtCols" type="text" size="5">
|
|
||||||
<br>
|
|
||||||
<span fckLang="DlgTextareaRows">Rows</span><br>
|
|
||||||
<input id="txtRows" type="text" size="5">
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
@@ -1,143 +0,0 @@
|
|||||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
|
|
||||||
<!--
|
|
||||||
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
|
||||||
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
|
||||||
*
|
|
||||||
* == BEGIN LICENSE ==
|
|
||||||
*
|
|
||||||
* Licensed under the terms of any of the following licenses at your
|
|
||||||
* choice:
|
|
||||||
*
|
|
||||||
* - GNU General Public License Version 2 or later (the "GPL")
|
|
||||||
* http://www.gnu.org/licenses/gpl.html
|
|
||||||
*
|
|
||||||
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
|
||||||
* http://www.gnu.org/licenses/lgpl.html
|
|
||||||
*
|
|
||||||
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
|
||||||
* http://www.mozilla.org/MPL/MPL-1.1.html
|
|
||||||
*
|
|
||||||
* == END LICENSE ==
|
|
||||||
*
|
|
||||||
* File Name: fck_textfield.html
|
|
||||||
* Text field dialog window.
|
|
||||||
*
|
|
||||||
* File Authors:
|
|
||||||
* Frederico Caldeira Knabben (www.fckeditor.net)
|
|
||||||
-->
|
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
||||||
<head>
|
|
||||||
<title></title>
|
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
||||||
<meta content="noindex, nofollow" name="robots" />
|
|
||||||
<script src="common/fck_dialog_common.js" type="text/javascript"></script>
|
|
||||||
<script type="text/javascript">
|
|
||||||
|
|
||||||
var oEditor = window.parent.InnerDialogLoaded() ;
|
|
||||||
|
|
||||||
// Gets the document DOM
|
|
||||||
var oDOM = oEditor.FCK.EditorDocument ;
|
|
||||||
|
|
||||||
var oActiveEl = oEditor.FCKSelection.GetSelectedElement() ;
|
|
||||||
|
|
||||||
window.onload = function()
|
|
||||||
{
|
|
||||||
// First of all, translate the dialog box texts
|
|
||||||
oEditor.FCKLanguageManager.TranslatePage(document) ;
|
|
||||||
|
|
||||||
if ( oActiveEl && oActiveEl.tagName == 'INPUT' && ( oActiveEl.type == 'text' || oActiveEl.type == 'password' ) )
|
|
||||||
{
|
|
||||||
GetE('txtName').value = oActiveEl.name ;
|
|
||||||
GetE('txtValue').value = oActiveEl.value ;
|
|
||||||
GetE('txtSize').value = GetAttribute( oActiveEl, 'size' ) ;
|
|
||||||
GetE('txtMax').value = GetAttribute( oActiveEl, 'maxLength' ) ;
|
|
||||||
GetE('txtType').value = oActiveEl.type ;
|
|
||||||
|
|
||||||
GetE('txtType').disabled = true ;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
oActiveEl = null ;
|
|
||||||
|
|
||||||
window.parent.SetOkButton( true ) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
function Ok()
|
|
||||||
{
|
|
||||||
if ( isNaN( GetE('txtMax').value ) || GetE('txtMax').value < 0 )
|
|
||||||
{
|
|
||||||
alert( "Maximum characters must be a positive number." ) ;
|
|
||||||
GetE('txtMax').focus() ;
|
|
||||||
return false ;
|
|
||||||
}
|
|
||||||
else if( isNaN( GetE('txtSize').value ) || GetE('txtSize').value < 0 )
|
|
||||||
{
|
|
||||||
alert( "Width must be a positive number." ) ;
|
|
||||||
GetE('txtSize').focus() ;
|
|
||||||
return false ;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( !oActiveEl )
|
|
||||||
{
|
|
||||||
oActiveEl = oEditor.FCK.EditorDocument.createElement( 'INPUT' ) ;
|
|
||||||
oActiveEl.type = GetE('txtType').value ;
|
|
||||||
oActiveEl = oEditor.FCK.InsertElementAndGetIt( oActiveEl ) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
oActiveEl.name = GetE('txtName').value ;
|
|
||||||
SetAttribute( oActiveEl, 'value' , GetE('txtValue').value ) ;
|
|
||||||
SetAttribute( oActiveEl, 'size' , GetE('txtSize').value ) ;
|
|
||||||
SetAttribute( oActiveEl, 'maxlength', GetE('txtMax').value ) ;
|
|
||||||
|
|
||||||
return true ;
|
|
||||||
}
|
|
||||||
|
|
||||||
</script>
|
|
||||||
</head>
|
|
||||||
<body style="overflow: hidden">
|
|
||||||
<table width="100%" style="height: 100%">
|
|
||||||
<tr>
|
|
||||||
<td align="center">
|
|
||||||
<table cellspacing="0" cellpadding="0" border="0">
|
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
<span fcklang="DlgTextName">Name</span><br />
|
|
||||||
<input id="txtName" type="text" size="20" />
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<span fcklang="DlgTextValue">Value</span><br />
|
|
||||||
<input id="txtValue" type="text" size="25" />
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
<span fcklang="DlgTextCharWidth">Character Width</span><br />
|
|
||||||
<input id="txtSize" type="text" size="5" />
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<span fcklang="DlgTextMaxChars">Maximum Characters</span><br />
|
|
||||||
<input id="txtMax" type="text" size="5" />
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
<span fcklang="DlgTextType">Type</span><br />
|
|
||||||
<select id="txtType">
|
|
||||||
<option value="text" selected="selected" fcklang="DlgTextTypeText">Text</option>
|
|
||||||
<option value="password" fcklang="DlgTextTypePass">Password</option>
|
|
||||||
</select>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
@@ -1,92 +0,0 @@
|
|||||||
/*
|
|
||||||
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
|
||||||
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
|
||||||
*
|
|
||||||
* == BEGIN LICENSE ==
|
|
||||||
*
|
|
||||||
* Licensed under the terms of any of the following licenses at your
|
|
||||||
* choice:
|
|
||||||
*
|
|
||||||
* - GNU General Public License Version 2 or later (the "GPL")
|
|
||||||
* http://www.gnu.org/licenses/gpl.html
|
|
||||||
*
|
|
||||||
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
|
||||||
* http://www.gnu.org/licenses/lgpl.html
|
|
||||||
*
|
|
||||||
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
|
||||||
* http://www.mozilla.org/MPL/MPL-1.1.html
|
|
||||||
*
|
|
||||||
* == END LICENSE ==
|
|
||||||
*
|
|
||||||
* File Name: browser.css
|
|
||||||
* CSS styles used by all pages that compose the File Browser.
|
|
||||||
*
|
|
||||||
* File Authors:
|
|
||||||
* Frederico Caldeira Knabben (www.fckeditor.net)
|
|
||||||
*/
|
|
||||||
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
|
|
||||||
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);
|
|
||||||
}
|
|
||||||
@@ -1,158 +0,0 @@
|
|||||||
<!--
|
|
||||||
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
|
||||||
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
|
||||||
*
|
|
||||||
* == BEGIN LICENSE ==
|
|
||||||
*
|
|
||||||
* Licensed under the terms of any of the following licenses at your
|
|
||||||
* choice:
|
|
||||||
*
|
|
||||||
* - GNU General Public License Version 2 or later (the "GPL")
|
|
||||||
* http://www.gnu.org/licenses/gpl.html
|
|
||||||
*
|
|
||||||
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
|
||||||
* http://www.gnu.org/licenses/lgpl.html
|
|
||||||
*
|
|
||||||
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
|
||||||
* http://www.mozilla.org/MPL/MPL-1.1.html
|
|
||||||
*
|
|
||||||
* == END LICENSE ==
|
|
||||||
*
|
|
||||||
* File Name: browser.html
|
|
||||||
* This page compose the File Browser dialog frameset.
|
|
||||||
*
|
|
||||||
* File Authors:
|
|
||||||
* Frederico Caldeira Knabben (www.fckeditor.net)
|
|
||||||
-->
|
|
||||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
|
||||||
<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 ;
|
|
||||||
|
|
||||||
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','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' ;
|
|
||||||
}
|
|
||||||
</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>
|
|
||||||
@@ -1,66 +0,0 @@
|
|||||||
<!--
|
|
||||||
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
|
||||||
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
|
||||||
*
|
|
||||||
* == BEGIN LICENSE ==
|
|
||||||
*
|
|
||||||
* Licensed under the terms of any of the following licenses at your
|
|
||||||
* choice:
|
|
||||||
*
|
|
||||||
* - GNU General Public License Version 2 or later (the "GPL")
|
|
||||||
* http://www.gnu.org/licenses/gpl.html
|
|
||||||
*
|
|
||||||
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
|
||||||
* http://www.gnu.org/licenses/lgpl.html
|
|
||||||
*
|
|
||||||
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
|
||||||
* http://www.mozilla.org/MPL/MPL-1.1.html
|
|
||||||
*
|
|
||||||
* == END LICENSE ==
|
|
||||||
*
|
|
||||||
* File Name: basexml.asp
|
|
||||||
* This file include the functions that create the base XML output.
|
|
||||||
*
|
|
||||||
* File Authors:
|
|
||||||
* Frederico Caldeira Knabben (www.fckeditor.net)
|
|
||||||
-->
|
|
||||||
<%
|
|
||||||
|
|
||||||
Sub SetXmlHeaders()
|
|
||||||
' Cleans the response buffer.
|
|
||||||
Response.Clear()
|
|
||||||
|
|
||||||
' Prevent the browser from caching the result.
|
|
||||||
Response.CacheControl = "no-cache"
|
|
||||||
|
|
||||||
' Set the response format.
|
|
||||||
Response.CharSet = "UTF-8"
|
|
||||||
Response.ContentType = "text/xml"
|
|
||||||
End Sub
|
|
||||||
|
|
||||||
Sub CreateXmlHeader( command, resourceType, currentFolder )
|
|
||||||
' Create the XML document header.
|
|
||||||
Response.Write "<?xml version=""1.0"" encoding=""utf-8"" ?>"
|
|
||||||
|
|
||||||
' Create the main "Connector" node.
|
|
||||||
Response.Write "<Connector command=""" & command & """ resourceType=""" & resourceType & """>"
|
|
||||||
|
|
||||||
' Add the current folder node.
|
|
||||||
Response.Write "<CurrentFolder path=""" & ConvertToXmlAttribute( currentFolder ) & """ url=""" & ConvertToXmlAttribute( GetUrlFromPath( resourceType, currentFolder) ) & """ />"
|
|
||||||
End Sub
|
|
||||||
|
|
||||||
Sub CreateXmlFooter()
|
|
||||||
Response.Write "</Connector>"
|
|
||||||
End Sub
|
|
||||||
|
|
||||||
Sub SendError( number, text )
|
|
||||||
SetXmlHeaders
|
|
||||||
|
|
||||||
' Create the XML document header.
|
|
||||||
Response.Write "<?xml version=""1.0"" encoding=""utf-8"" ?>"
|
|
||||||
|
|
||||||
Response.Write "<Connector><Error number=""" & number & """ text=""" & Server.HTMLEncode( text ) & """ /></Connector>"
|
|
||||||
|
|
||||||
Response.End
|
|
||||||
End Sub
|
|
||||||
%>
|
|
||||||
@@ -1,238 +0,0 @@
|
|||||||
<!--
|
|
||||||
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
|
||||||
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
|
||||||
*
|
|
||||||
* == BEGIN LICENSE ==
|
|
||||||
*
|
|
||||||
* Licensed under the terms of any of the following licenses at your
|
|
||||||
* choice:
|
|
||||||
*
|
|
||||||
* - GNU General Public License Version 2 or later (the "GPL")
|
|
||||||
* http://www.gnu.org/licenses/gpl.html
|
|
||||||
*
|
|
||||||
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
|
||||||
* http://www.gnu.org/licenses/lgpl.html
|
|
||||||
*
|
|
||||||
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
|
||||||
* http://www.mozilla.org/MPL/MPL-1.1.html
|
|
||||||
*
|
|
||||||
* == END LICENSE ==
|
|
||||||
*
|
|
||||||
* File Name: class_upload.asp
|
|
||||||
* These are the classes used to handle ASP upload without using third
|
|
||||||
* part components (OCX/DLL).
|
|
||||||
*
|
|
||||||
* File Authors:
|
|
||||||
* NetRube (netrube@126.com)
|
|
||||||
-->
|
|
||||||
<%
|
|
||||||
'**********************************************
|
|
||||||
' File: NetRube_Upload.asp
|
|
||||||
' Version: NetRube Upload Class Version 2.1 Build 20050228
|
|
||||||
' Author: NetRube
|
|
||||||
' Email: NetRube@126.com
|
|
||||||
' Date: 02/28/2005
|
|
||||||
' Comments: The code for the Upload.
|
|
||||||
' This can free usage, but please
|
|
||||||
' not to delete this copyright information.
|
|
||||||
' If you have a modification version,
|
|
||||||
' Please send out a duplicate to me.
|
|
||||||
'**********************************************
|
|
||||||
' 文件名: NetRube_Upload.asp
|
|
||||||
' 版本: NetRube Upload Class Version 2.1 Build 20050228
|
|
||||||
' 作者: NetRube(网络乡巴佬)
|
|
||||||
' 电子邮件: NetRube@126.com
|
|
||||||
' 日期: 2005年02月28日
|
|
||||||
' 声明: 文件上传类
|
|
||||||
' 本上传类可以自由使用,但请保留此版权声明信息
|
|
||||||
' 如果您对本上传类进行修改增强,
|
|
||||||
' 请发送一份给俺。
|
|
||||||
'**********************************************
|
|
||||||
|
|
||||||
Class NetRube_Upload
|
|
||||||
|
|
||||||
Public File, Form
|
|
||||||
Private oSourceData
|
|
||||||
Private nMaxSize, nErr, sAllowed, sDenied
|
|
||||||
|
|
||||||
Private Sub Class_Initialize
|
|
||||||
nErr = 0
|
|
||||||
nMaxSize = 1048576
|
|
||||||
|
|
||||||
Set File = Server.CreateObject("Scripting.Dictionary")
|
|
||||||
File.CompareMode = 1
|
|
||||||
Set Form = Server.CreateObject("Scripting.Dictionary")
|
|
||||||
Form.CompareMode = 1
|
|
||||||
|
|
||||||
Set oSourceData = Server.CreateObject("ADODB.Stream")
|
|
||||||
oSourceData.Type = 1
|
|
||||||
oSourceData.Mode = 3
|
|
||||||
oSourceData.Open
|
|
||||||
End Sub
|
|
||||||
|
|
||||||
Private Sub Class_Terminate
|
|
||||||
Form.RemoveAll
|
|
||||||
Set Form = Nothing
|
|
||||||
File.RemoveAll
|
|
||||||
Set File = Nothing
|
|
||||||
|
|
||||||
oSourceData.Close
|
|
||||||
Set oSourceData = Nothing
|
|
||||||
End Sub
|
|
||||||
|
|
||||||
Public Property Get Version
|
|
||||||
Version = "NetRube Upload Class Version 1.0 Build 20041218"
|
|
||||||
End Property
|
|
||||||
|
|
||||||
Public Property Get ErrNum
|
|
||||||
ErrNum = nErr
|
|
||||||
End Property
|
|
||||||
|
|
||||||
Public Property Let MaxSize(nSize)
|
|
||||||
nMaxSize = nSize
|
|
||||||
End Property
|
|
||||||
|
|
||||||
Public Property Let Allowed(sExt)
|
|
||||||
sAllowed = sExt
|
|
||||||
End Property
|
|
||||||
|
|
||||||
Public Property Let Denied(sExt)
|
|
||||||
sDenied = sExt
|
|
||||||
End Property
|
|
||||||
|
|
||||||
Public Sub GetData
|
|
||||||
Dim aCType
|
|
||||||
aCType = Split(Request.ServerVariables("HTTP_CONTENT_TYPE"), ";")
|
|
||||||
If aCType(0) <> "multipart/form-data" Then
|
|
||||||
nErr = 1
|
|
||||||
Exit Sub
|
|
||||||
End If
|
|
||||||
|
|
||||||
Dim nTotalSize
|
|
||||||
nTotalSize = Request.TotalBytes
|
|
||||||
If nTotalSize < 1 Then
|
|
||||||
nErr = 2
|
|
||||||
Exit Sub
|
|
||||||
End If
|
|
||||||
If nMaxSize > 0 And nTotalSize > nMaxSize Then
|
|
||||||
nErr = 3
|
|
||||||
Exit Sub
|
|
||||||
End If
|
|
||||||
|
|
||||||
oSourceData.Write Request.BinaryRead(nTotalSize)
|
|
||||||
oSourceData.Position = 0
|
|
||||||
|
|
||||||
Dim oTotalData, oFormStream, sFormHeader, sFormName, bCrLf, nBoundLen, nFormStart, nFormEnd, nPosStart, nPosEnd, sBoundary
|
|
||||||
|
|
||||||
oTotalData = oSourceData.Read
|
|
||||||
bCrLf = ChrB(13) & ChrB(10)
|
|
||||||
sBoundary = MidB(oTotalData, 1, InStrB(1, oTotalData, bCrLf) - 1)
|
|
||||||
nBoundLen = LenB(sBoundary) + 2
|
|
||||||
nFormStart = nBoundLen
|
|
||||||
|
|
||||||
Set oFormStream = Server.CreateObject("ADODB.Stream")
|
|
||||||
|
|
||||||
Do While (nFormStart + 2) < nTotalSize
|
|
||||||
nFormEnd = InStrB(nFormStart, oTotalData, bCrLf & bCrLf) + 3
|
|
||||||
|
|
||||||
With oFormStream
|
|
||||||
.Type = 1
|
|
||||||
.Mode = 3
|
|
||||||
.Open
|
|
||||||
oSourceData.Position = nFormStart
|
|
||||||
oSourceData.CopyTo oFormStream, nFormEnd - nFormStart
|
|
||||||
.Position = 0
|
|
||||||
.Type = 2
|
|
||||||
.CharSet = "UTF-8"
|
|
||||||
sFormHeader = .ReadText
|
|
||||||
.Close
|
|
||||||
End With
|
|
||||||
|
|
||||||
nFormStart = InStrB(nFormEnd, oTotalData, sBoundary) - 1
|
|
||||||
nPosStart = InStr(22, sFormHeader, " name=", 1) + 7
|
|
||||||
nPosEnd = InStr(nPosStart, sFormHeader, """")
|
|
||||||
sFormName = Mid(sFormHeader, nPosStart, nPosEnd - nPosStart)
|
|
||||||
|
|
||||||
If InStr(45, sFormHeader, " filename=", 1) > 0 Then
|
|
||||||
Set File(sFormName) = New NetRube_FileInfo
|
|
||||||
File(sFormName).FormName = sFormName
|
|
||||||
File(sFormName).Start = nFormEnd
|
|
||||||
File(sFormName).Size = nFormStart - nFormEnd - 2
|
|
||||||
nPosStart = InStr(nPosEnd, sFormHeader, " filename=", 1) + 11
|
|
||||||
nPosEnd = InStr(nPosStart, sFormHeader, """")
|
|
||||||
File(sFormName).ClientPath = Mid(sFormHeader, nPosStart, nPosEnd - nPosStart)
|
|
||||||
File(sFormName).Name = Mid(File(sFormName).ClientPath, InStrRev(File(sFormName).ClientPath, "\") + 1)
|
|
||||||
File(sFormName).Ext = LCase(Mid(File(sFormName).Name, InStrRev(File(sFormName).Name, ".") + 1))
|
|
||||||
nPosStart = InStr(nPosEnd, sFormHeader, "Content-Type: ", 1) + 14
|
|
||||||
nPosEnd = InStr(nPosStart, sFormHeader, vbCr)
|
|
||||||
File(sFormName).MIME = Mid(sFormHeader, nPosStart, nPosEnd - nPosStart)
|
|
||||||
Else
|
|
||||||
With oFormStream
|
|
||||||
.Type = 1
|
|
||||||
.Mode = 3
|
|
||||||
.Open
|
|
||||||
oSourceData.Position = nPosEnd
|
|
||||||
oSourceData.CopyTo oFormStream, nFormStart - nFormEnd - 2
|
|
||||||
.Position = 0
|
|
||||||
.Type = 2
|
|
||||||
.CharSet = "UTF-8"
|
|
||||||
Form(sFormName) = .ReadText
|
|
||||||
.Close
|
|
||||||
End With
|
|
||||||
End If
|
|
||||||
|
|
||||||
nFormStart = nFormStart + nBoundLen
|
|
||||||
Loop
|
|
||||||
|
|
||||||
oTotalData = ""
|
|
||||||
Set oFormStream = Nothing
|
|
||||||
End Sub
|
|
||||||
|
|
||||||
Public Sub SaveAs(sItem, sFileName)
|
|
||||||
If File(sItem).Size < 1 Then
|
|
||||||
nErr = 2
|
|
||||||
Exit Sub
|
|
||||||
End If
|
|
||||||
|
|
||||||
If Not IsAllowed(File(sItem).Ext) Then
|
|
||||||
nErr = 4
|
|
||||||
Exit Sub
|
|
||||||
End If
|
|
||||||
|
|
||||||
Dim oFileStream
|
|
||||||
Set oFileStream = Server.CreateObject("ADODB.Stream")
|
|
||||||
With oFileStream
|
|
||||||
.Type = 1
|
|
||||||
.Mode = 3
|
|
||||||
.Open
|
|
||||||
oSourceData.Position = File(sItem).Start
|
|
||||||
oSourceData.CopyTo oFileStream, File(sItem).Size
|
|
||||||
.Position = 0
|
|
||||||
.SaveToFile sFileName, 2
|
|
||||||
.Close
|
|
||||||
End With
|
|
||||||
Set oFileStream = Nothing
|
|
||||||
End Sub
|
|
||||||
|
|
||||||
Private Function IsAllowed(sExt)
|
|
||||||
Dim oRE
|
|
||||||
Set oRE = New RegExp
|
|
||||||
oRE.IgnoreCase = True
|
|
||||||
oRE.Global = True
|
|
||||||
|
|
||||||
If sDenied = "" Then
|
|
||||||
oRE.Pattern = sAllowed
|
|
||||||
IsAllowed = (sAllowed = "") Or oRE.Test(sExt)
|
|
||||||
Else
|
|
||||||
oRE.Pattern = sDenied
|
|
||||||
IsAllowed = Not oRE.Test(sExt)
|
|
||||||
End If
|
|
||||||
|
|
||||||
Set oRE = Nothing
|
|
||||||
End Function
|
|
||||||
End Class
|
|
||||||
|
|
||||||
Class NetRube_FileInfo
|
|
||||||
Dim FormName, ClientPath, Path, Name, Ext, Content, Size, MIME, Start
|
|
||||||
End Class
|
|
||||||
%>
|
|
||||||
@@ -1,187 +0,0 @@
|
|||||||
<!--
|
|
||||||
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
|
||||||
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
|
||||||
*
|
|
||||||
* == BEGIN LICENSE ==
|
|
||||||
*
|
|
||||||
* Licensed under the terms of any of the following licenses at your
|
|
||||||
* choice:
|
|
||||||
*
|
|
||||||
* - GNU General Public License Version 2 or later (the "GPL")
|
|
||||||
* http://www.gnu.org/licenses/gpl.html
|
|
||||||
*
|
|
||||||
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
|
||||||
* http://www.gnu.org/licenses/lgpl.html
|
|
||||||
*
|
|
||||||
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
|
||||||
* http://www.mozilla.org/MPL/MPL-1.1.html
|
|
||||||
*
|
|
||||||
* == END LICENSE ==
|
|
||||||
*
|
|
||||||
* File Name: commands.asp
|
|
||||||
* This file include the functions that handle the Command requests
|
|
||||||
* in the ASP Connector.
|
|
||||||
*
|
|
||||||
* File Authors:
|
|
||||||
* Frederico Caldeira Knabben (www.fckeditor.net)
|
|
||||||
-->
|
|
||||||
<%
|
|
||||||
Sub GetFolders( resourceType, currentFolder )
|
|
||||||
' Map the virtual path to the local server path.
|
|
||||||
Dim sServerDir
|
|
||||||
sServerDir = ServerMapFolder( resourceType, currentFolder )
|
|
||||||
|
|
||||||
' Open the "Folders" node.
|
|
||||||
Response.Write "<Folders>"
|
|
||||||
|
|
||||||
Dim oFSO, oCurrentFolder, oFolders, oFolder
|
|
||||||
Set oFSO = Server.CreateObject( "Scripting.FileSystemObject" )
|
|
||||||
Set oCurrentFolder = oFSO.GetFolder( sServerDir )
|
|
||||||
Set oFolders = oCurrentFolder.SubFolders
|
|
||||||
|
|
||||||
For Each oFolder in oFolders
|
|
||||||
Response.Write "<Folder name=""" & ConvertToXmlAttribute( oFolder.name ) & """ />"
|
|
||||||
Next
|
|
||||||
|
|
||||||
Set oFSO = Nothing
|
|
||||||
|
|
||||||
' Close the "Folders" node.
|
|
||||||
Response.Write "</Folders>"
|
|
||||||
End Sub
|
|
||||||
|
|
||||||
Sub GetFoldersAndFiles( resourceType, currentFolder )
|
|
||||||
' Map the virtual path to the local server path.
|
|
||||||
Dim sServerDir
|
|
||||||
sServerDir = ServerMapFolder( resourceType, currentFolder )
|
|
||||||
|
|
||||||
Dim oFSO, oCurrentFolder, oFolders, oFolder, oFiles, oFile
|
|
||||||
Set oFSO = Server.CreateObject( "Scripting.FileSystemObject" )
|
|
||||||
Set oCurrentFolder = oFSO.GetFolder( sServerDir )
|
|
||||||
Set oFolders = oCurrentFolder.SubFolders
|
|
||||||
Set oFiles = oCurrentFolder.Files
|
|
||||||
|
|
||||||
' Open the "Folders" node.
|
|
||||||
Response.Write "<Folders>"
|
|
||||||
|
|
||||||
For Each oFolder in oFolders
|
|
||||||
Response.Write "<Folder name=""" & ConvertToXmlAttribute( oFolder.name ) & """ />"
|
|
||||||
Next
|
|
||||||
|
|
||||||
' Close the "Folders" node.
|
|
||||||
Response.Write "</Folders>"
|
|
||||||
|
|
||||||
' Open the "Files" node.
|
|
||||||
Response.Write "<Files>"
|
|
||||||
|
|
||||||
For Each oFile in oFiles
|
|
||||||
Dim iFileSize
|
|
||||||
iFileSize = Round( oFile.size / 1024 )
|
|
||||||
If ( iFileSize < 1 AND oFile.size <> 0 ) Then iFileSize = 1
|
|
||||||
|
|
||||||
Response.Write "<File name=""" & ConvertToXmlAttribute( oFile.name ) & """ size=""" & iFileSize & """ />"
|
|
||||||
Next
|
|
||||||
|
|
||||||
' Close the "Files" node.
|
|
||||||
Response.Write "</Files>"
|
|
||||||
End Sub
|
|
||||||
|
|
||||||
Sub CreateFolder( resourceType, currentFolder )
|
|
||||||
Dim sErrorNumber
|
|
||||||
|
|
||||||
Dim sNewFolderName
|
|
||||||
sNewFolderName = Request.QueryString( "NewFolderName" )
|
|
||||||
|
|
||||||
If ( sNewFolderName = "" OR InStr( 1, sNewFolderName, ".." ) > 0 ) Then
|
|
||||||
sErrorNumber = "102"
|
|
||||||
Else
|
|
||||||
' Map the virtual path to the local server path of the current folder.
|
|
||||||
Dim sServerDir
|
|
||||||
sServerDir = ServerMapFolder( resourceType, currentFolder & "/" & sNewFolderName )
|
|
||||||
|
|
||||||
On Error Resume Next
|
|
||||||
|
|
||||||
CreateServerFolder sServerDir
|
|
||||||
|
|
||||||
Dim iErrNumber, sErrDescription
|
|
||||||
iErrNumber = err.number
|
|
||||||
sErrDescription = err.Description
|
|
||||||
|
|
||||||
On Error Goto 0
|
|
||||||
|
|
||||||
Select Case iErrNumber
|
|
||||||
Case 0
|
|
||||||
sErrorNumber = "0"
|
|
||||||
Case 52
|
|
||||||
sErrorNumber = "102" ' Invalid Folder Name.
|
|
||||||
Case 70
|
|
||||||
sErrorNumber = "103" ' Security Error.
|
|
||||||
Case 76
|
|
||||||
sErrorNumber = "102" ' Path too long.
|
|
||||||
Case Else
|
|
||||||
sErrorNumber = "110"
|
|
||||||
End Select
|
|
||||||
End If
|
|
||||||
|
|
||||||
' Create the "Error" node.
|
|
||||||
Response.Write "<Error number=""" & sErrorNumber & """ originalNumber=""" & iErrNumber & """ originalDescription=""" & ConvertToXmlAttribute( sErrDescription ) & """ />"
|
|
||||||
End Sub
|
|
||||||
|
|
||||||
Sub FileUpload( resourceType, currentFolder )
|
|
||||||
Dim oUploader
|
|
||||||
Set oUploader = New NetRube_Upload
|
|
||||||
oUploader.MaxSize = 0
|
|
||||||
oUploader.Allowed = ConfigAllowedExtensions.Item( resourceType )
|
|
||||||
oUploader.Denied = ConfigDeniedExtensions.Item( resourceType )
|
|
||||||
oUploader.GetData
|
|
||||||
|
|
||||||
Dim sErrorNumber
|
|
||||||
sErrorNumber = "0"
|
|
||||||
|
|
||||||
Dim sFileName, sOriginalFileName, sExtension
|
|
||||||
sFileName = ""
|
|
||||||
|
|
||||||
If oUploader.ErrNum > 1 Then
|
|
||||||
sErrorNumber = "202"
|
|
||||||
Else
|
|
||||||
' Map the virtual path to the local server path.
|
|
||||||
Dim sServerDir
|
|
||||||
sServerDir = ServerMapFolder( resourceType, currentFolder )
|
|
||||||
|
|
||||||
Dim oFSO
|
|
||||||
Set oFSO = Server.CreateObject( "Scripting.FileSystemObject" )
|
|
||||||
|
|
||||||
' Get the uploaded file name.
|
|
||||||
sFileName = oUploader.File( "NewFile" ).Name
|
|
||||||
sExtension = oUploader.File( "NewFile" ).Ext
|
|
||||||
sOriginalFileName = sFileName
|
|
||||||
|
|
||||||
Dim iCounter
|
|
||||||
iCounter = 0
|
|
||||||
|
|
||||||
Do While ( True )
|
|
||||||
Dim sFilePath
|
|
||||||
sFilePath = sServerDir & sFileName
|
|
||||||
|
|
||||||
If ( oFSO.FileExists( sFilePath ) ) Then
|
|
||||||
iCounter = iCounter + 1
|
|
||||||
sFileName = RemoveExtension( sOriginalFileName ) & "(" & iCounter & ")." & sExtension
|
|
||||||
sErrorNumber = "201"
|
|
||||||
Else
|
|
||||||
oUploader.SaveAs "NewFile", sFilePath
|
|
||||||
If oUploader.ErrNum > 0 Then sErrorNumber = "202"
|
|
||||||
Exit Do
|
|
||||||
End If
|
|
||||||
Loop
|
|
||||||
End If
|
|
||||||
|
|
||||||
Set oUploader = Nothing
|
|
||||||
|
|
||||||
Response.Clear
|
|
||||||
|
|
||||||
Response.Write "<script type=""text/javascript"">"
|
|
||||||
Response.Write "window.parent.frames['frmUpload'].OnUploadCompleted(" & sErrorNumber & ",'" & Replace( sFileName, "'", "\'" ) & "') ;"
|
|
||||||
Response.Write "</script>"
|
|
||||||
|
|
||||||
Response.End
|
|
||||||
End Sub
|
|
||||||
%>
|
|
||||||
@@ -1,53 +0,0 @@
|
|||||||
<!--
|
|
||||||
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
|
||||||
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
|
||||||
*
|
|
||||||
* == BEGIN LICENSE ==
|
|
||||||
*
|
|
||||||
* Licensed under the terms of any of the following licenses at your
|
|
||||||
* choice:
|
|
||||||
*
|
|
||||||
* - GNU General Public License Version 2 or later (the "GPL")
|
|
||||||
* http://www.gnu.org/licenses/gpl.html
|
|
||||||
*
|
|
||||||
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
|
||||||
* http://www.gnu.org/licenses/lgpl.html
|
|
||||||
*
|
|
||||||
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
|
||||||
* http://www.mozilla.org/MPL/MPL-1.1.html
|
|
||||||
*
|
|
||||||
* == END LICENSE ==
|
|
||||||
*
|
|
||||||
* File Name: config.asp
|
|
||||||
* Configuration file for the File Manager Connector for ASP.
|
|
||||||
*
|
|
||||||
* File Authors:
|
|
||||||
* Frederico Caldeira Knabben (www.fckeditor.net)
|
|
||||||
-->
|
|
||||||
<%
|
|
||||||
|
|
||||||
' SECURITY: You must explicitelly enable this "connector" (set it to "True").
|
|
||||||
Dim ConfigIsEnabled
|
|
||||||
ConfigIsEnabled = False
|
|
||||||
|
|
||||||
' Path to user files relative to the document root.
|
|
||||||
Dim ConfigUserFilesPath
|
|
||||||
ConfigUserFilesPath = "/userfiles/"
|
|
||||||
|
|
||||||
Dim ConfigAllowedExtensions, ConfigDeniedExtensions
|
|
||||||
Set ConfigAllowedExtensions = CreateObject( "Scripting.Dictionary" )
|
|
||||||
Set ConfigDeniedExtensions = CreateObject( "Scripting.Dictionary" )
|
|
||||||
|
|
||||||
ConfigAllowedExtensions.Add "File", ""
|
|
||||||
ConfigDeniedExtensions.Add "File", "html|htm|php|php2|php3|php4|php5|phtml|pwml|inc|asp|aspx|ascx|jsp|cfm|cfc|pl|bat|exe|com|dll|vbs|js|reg|cgi|htaccess|asis"
|
|
||||||
|
|
||||||
ConfigAllowedExtensions.Add "Image", "jpg|gif|jpeg|png|bmp"
|
|
||||||
ConfigDeniedExtensions.Add "Image", ""
|
|
||||||
|
|
||||||
ConfigAllowedExtensions.Add "Flash", "swf|fla"
|
|
||||||
ConfigDeniedExtensions.Add "Flash", ""
|
|
||||||
|
|
||||||
ConfigAllowedExtensions.Add "Media", "swf|fla|jpg|gif|jpeg|png|avi|mpg|mpeg|mp(1-4)|wma|wmv|wav|mid|midi|rmi|rm|ram|rmvb|mov|qt"
|
|
||||||
ConfigDeniedExtensions.Add "Media", ""
|
|
||||||
|
|
||||||
%>
|
|
||||||
@@ -1,128 +0,0 @@
|
|||||||
<%@ CodePage=65001 Language="VBScript"%>
|
|
||||||
<%
|
|
||||||
Option Explicit
|
|
||||||
Response.Buffer = True
|
|
||||||
%>
|
|
||||||
<!--
|
|
||||||
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
|
||||||
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
|
||||||
*
|
|
||||||
* == BEGIN LICENSE ==
|
|
||||||
*
|
|
||||||
* Licensed under the terms of any of the following licenses at your
|
|
||||||
* choice:
|
|
||||||
*
|
|
||||||
* - GNU General Public License Version 2 or later (the "GPL")
|
|
||||||
* http://www.gnu.org/licenses/gpl.html
|
|
||||||
*
|
|
||||||
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
|
||||||
* http://www.gnu.org/licenses/lgpl.html
|
|
||||||
*
|
|
||||||
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
|
||||||
* http://www.mozilla.org/MPL/MPL-1.1.html
|
|
||||||
*
|
|
||||||
* == END LICENSE ==
|
|
||||||
*
|
|
||||||
* File Name: connector.asp
|
|
||||||
* This is the File Manager Connector for ASP.
|
|
||||||
*
|
|
||||||
* File Authors:
|
|
||||||
* Frederico Caldeira Knabben (www.fckeditor.net)
|
|
||||||
-->
|
|
||||||
<!--#include file="config.asp"-->
|
|
||||||
<!--#include file="util.asp"-->
|
|
||||||
<!--#include file="io.asp"-->
|
|
||||||
<!--#include file="basexml.asp"-->
|
|
||||||
<!--#include file="commands.asp"-->
|
|
||||||
<!--#include file="class_upload.asp"-->
|
|
||||||
<%
|
|
||||||
|
|
||||||
If ( ConfigIsEnabled = False ) Then
|
|
||||||
SendError 1, "This connector is disabled. Please check the ""editor/filemanager/browser/default/connectors/asp/config.asp"" file"
|
|
||||||
End If
|
|
||||||
|
|
||||||
' Get the "UserFiles" path.
|
|
||||||
Dim sUserFilesPath
|
|
||||||
|
|
||||||
If ( Not IsEmpty( ConfigUserFilesPath ) ) Then
|
|
||||||
sUserFilesPath = ConfigUserFilesPath
|
|
||||||
|
|
||||||
If ( Right( sUserFilesPath, 1 ) <> "/" ) Then
|
|
||||||
sUserFilesPath = sUserFilesPath & "/"
|
|
||||||
End If
|
|
||||||
Else
|
|
||||||
sUserFilesPath = "/userfiles/"
|
|
||||||
End If
|
|
||||||
|
|
||||||
' Map the "UserFiles" path to a local directory.
|
|
||||||
Dim sUserFilesDirectory
|
|
||||||
sUserFilesDirectory = Server.MapPath( sUserFilesPath )
|
|
||||||
|
|
||||||
If ( Right( sUserFilesDirectory, 1 ) <> "\" ) Then
|
|
||||||
sUserFilesDirectory = sUserFilesDirectory & "\"
|
|
||||||
End If
|
|
||||||
|
|
||||||
DoResponse
|
|
||||||
|
|
||||||
Sub DoResponse()
|
|
||||||
Dim sCommand, sResourceType, sCurrentFolder
|
|
||||||
|
|
||||||
' Get the main request information.
|
|
||||||
sCommand = Request.QueryString("Command")
|
|
||||||
If ( sCommand = "" ) Then Exit Sub
|
|
||||||
|
|
||||||
sResourceType = Request.QueryString("Type")
|
|
||||||
If ( sResourceType = "" ) Then Exit Sub
|
|
||||||
|
|
||||||
sCurrentFolder = Request.QueryString("CurrentFolder")
|
|
||||||
If ( sCurrentFolder = "" ) Then Exit Sub
|
|
||||||
|
|
||||||
' Check if it is an allower resource type.
|
|
||||||
if ( Not IsAllowedType( sResourceType ) ) Then Exit Sub
|
|
||||||
|
|
||||||
' Check the current folder syntax (must begin and start with a slash).
|
|
||||||
If ( Right( sCurrentFolder, 1 ) <> "/" ) Then sCurrentFolder = sCurrentFolder & "/"
|
|
||||||
If ( Left( sCurrentFolder, 1 ) <> "/" ) Then sCurrentFolder = "/" & sCurrentFolder
|
|
||||||
|
|
||||||
' Check for invalid folder paths (..)
|
|
||||||
If ( InStr( 1, sCurrentFolder, ".." ) <> 0 OR InStr( 1, sResourceType, ".." ) <> 0 ) Then
|
|
||||||
SendError 102, ""
|
|
||||||
End If
|
|
||||||
|
|
||||||
' File Upload doesn't have to Return XML, so it must be intercepted before anything.
|
|
||||||
If ( sCommand = "FileUpload" ) Then
|
|
||||||
FileUpload sResourceType, sCurrentFolder
|
|
||||||
Exit Sub
|
|
||||||
End If
|
|
||||||
|
|
||||||
SetXmlHeaders
|
|
||||||
|
|
||||||
CreateXmlHeader sCommand, sResourceType, sCurrentFolder
|
|
||||||
|
|
||||||
' Execute the required command.
|
|
||||||
Select Case sCommand
|
|
||||||
Case "GetFolders"
|
|
||||||
GetFolders sResourceType, sCurrentFolder
|
|
||||||
Case "GetFoldersAndFiles"
|
|
||||||
GetFoldersAndFiles sResourceType, sCurrentFolder
|
|
||||||
Case "CreateFolder"
|
|
||||||
CreateFolder sResourceType, sCurrentFolder
|
|
||||||
End Select
|
|
||||||
|
|
||||||
CreateXmlFooter
|
|
||||||
|
|
||||||
Response.End
|
|
||||||
End Sub
|
|
||||||
|
|
||||||
Function IsAllowedType( resourceType )
|
|
||||||
Dim oRE
|
|
||||||
Set oRE = New RegExp
|
|
||||||
oRE.IgnoreCase = True
|
|
||||||
oRE.Global = True
|
|
||||||
oRE.Pattern = "^(File|Image|Flash|Media)$"
|
|
||||||
|
|
||||||
IsAllowedType = oRE.Test( resourceType )
|
|
||||||
|
|
||||||
Set oRE = Nothing
|
|
||||||
End Function
|
|
||||||
%>
|
|
||||||
@@ -1,93 +0,0 @@
|
|||||||
<!--
|
|
||||||
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
|
||||||
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
|
||||||
*
|
|
||||||
* == BEGIN LICENSE ==
|
|
||||||
*
|
|
||||||
* Licensed under the terms of any of the following licenses at your
|
|
||||||
* choice:
|
|
||||||
*
|
|
||||||
* - GNU General Public License Version 2 or later (the "GPL")
|
|
||||||
* http://www.gnu.org/licenses/gpl.html
|
|
||||||
*
|
|
||||||
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
|
||||||
* http://www.gnu.org/licenses/lgpl.html
|
|
||||||
*
|
|
||||||
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
|
||||||
* http://www.mozilla.org/MPL/MPL-1.1.html
|
|
||||||
*
|
|
||||||
* == END LICENSE ==
|
|
||||||
*
|
|
||||||
* File Name: io.asp
|
|
||||||
* This file include IO specific functions used by the ASP Connector.
|
|
||||||
*
|
|
||||||
* File Authors:
|
|
||||||
* Frederico Caldeira Knabben (www.fckeditor.net)
|
|
||||||
-->
|
|
||||||
<%
|
|
||||||
Function GetUrlFromPath( resourceType, folderPath )
|
|
||||||
If resourceType = "" Then
|
|
||||||
GetUrlFromPath = RemoveFromEnd( sUserFilesPath, "/" ) & folderPath
|
|
||||||
Else
|
|
||||||
GetUrlFromPath = sUserFilesPath & LCase( resourceType ) & folderPath
|
|
||||||
End If
|
|
||||||
End Function
|
|
||||||
|
|
||||||
Function RemoveExtension( fileName )
|
|
||||||
RemoveExtension = Left( fileName, InStrRev( fileName, "." ) - 1 )
|
|
||||||
End Function
|
|
||||||
|
|
||||||
Function ServerMapFolder( resourceType, folderPath )
|
|
||||||
' Get the resource type directory.
|
|
||||||
Dim sResourceTypePath
|
|
||||||
sResourceTypePath = sUserFilesDirectory & LCase( resourceType ) & "\"
|
|
||||||
|
|
||||||
' Ensure that the directory exists.
|
|
||||||
CreateServerFolder sResourceTypePath
|
|
||||||
|
|
||||||
' Return the resource type directory combined with the required path.
|
|
||||||
ServerMapFolder = sResourceTypePath & RemoveFromStart( folderPath, "/" )
|
|
||||||
End Function
|
|
||||||
|
|
||||||
Sub CreateServerFolder( folderPath )
|
|
||||||
Dim oFSO
|
|
||||||
Set oFSO = Server.CreateObject( "Scripting.FileSystemObject" )
|
|
||||||
|
|
||||||
Dim sParent
|
|
||||||
sParent = oFSO.GetParentFolderName( folderPath )
|
|
||||||
|
|
||||||
' Check if the parent exists, or create it.
|
|
||||||
If ( NOT oFSO.FolderExists( sParent ) ) Then CreateServerFolder( sParent )
|
|
||||||
|
|
||||||
If ( oFSO.FolderExists( folderPath ) = False ) Then
|
|
||||||
oFSO.CreateFolder( folderPath )
|
|
||||||
End If
|
|
||||||
|
|
||||||
Set oFSO = Nothing
|
|
||||||
End Sub
|
|
||||||
|
|
||||||
Function IsAllowedExt( extension, resourceType )
|
|
||||||
Dim oRE
|
|
||||||
Set oRE = New RegExp
|
|
||||||
oRE.IgnoreCase = True
|
|
||||||
oRE.Global = True
|
|
||||||
|
|
||||||
Dim sAllowed, sDenied
|
|
||||||
sAllowed = ConfigAllowedExtensions.Item( resourceType )
|
|
||||||
sDenied = ConfigDeniedExtensions.Item( resourceType )
|
|
||||||
|
|
||||||
IsAllowedExt = True
|
|
||||||
|
|
||||||
If sDenied <> "" Then
|
|
||||||
oRE.Pattern = sDenied
|
|
||||||
IsAllowedExt = Not oRE.Test( extension )
|
|
||||||
End If
|
|
||||||
|
|
||||||
If IsAllowedExt And sAllowed <> "" Then
|
|
||||||
oRE.Pattern = sAllowed
|
|
||||||
IsAllowedExt = oRE.Test( extension )
|
|
||||||
End If
|
|
||||||
|
|
||||||
Set oRE = Nothing
|
|
||||||
End Function
|
|
||||||
%>
|
|
||||||
@@ -1,59 +0,0 @@
|
|||||||
<!--
|
|
||||||
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
|
||||||
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
|
||||||
*
|
|
||||||
* == BEGIN LICENSE ==
|
|
||||||
*
|
|
||||||
* Licensed under the terms of any of the following licenses at your
|
|
||||||
* choice:
|
|
||||||
*
|
|
||||||
* - GNU General Public License Version 2 or later (the "GPL")
|
|
||||||
* http://www.gnu.org/licenses/gpl.html
|
|
||||||
*
|
|
||||||
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
|
||||||
* http://www.gnu.org/licenses/lgpl.html
|
|
||||||
*
|
|
||||||
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
|
||||||
* http://www.mozilla.org/MPL/MPL-1.1.html
|
|
||||||
*
|
|
||||||
* == END LICENSE ==
|
|
||||||
*
|
|
||||||
* File Name: util.asp
|
|
||||||
* This file include generic functions used by the ASP Connector.
|
|
||||||
*
|
|
||||||
* File Authors:
|
|
||||||
* Frederico Caldeira Knabben (www.fckeditor.net)
|
|
||||||
-->
|
|
||||||
<%
|
|
||||||
Function RemoveFromStart( sourceString, charToRemove )
|
|
||||||
Dim oRegex
|
|
||||||
Set oRegex = New RegExp
|
|
||||||
oRegex.Pattern = "^" & charToRemove & "+"
|
|
||||||
|
|
||||||
RemoveFromStart = oRegex.Replace( sourceString, "" )
|
|
||||||
End Function
|
|
||||||
|
|
||||||
Function RemoveFromEnd( sourceString, charToRemove )
|
|
||||||
Dim oRegex
|
|
||||||
Set oRegex = New RegExp
|
|
||||||
oRegex.Pattern = charToRemove & "+$"
|
|
||||||
|
|
||||||
RemoveFromEnd = oRegex.Replace( sourceString, "" )
|
|
||||||
End Function
|
|
||||||
|
|
||||||
Function ConvertToXmlAttribute( value )
|
|
||||||
ConvertToXmlAttribute = Replace( value, "&", "&" )
|
|
||||||
End Function
|
|
||||||
|
|
||||||
Function InArray( value, sourceArray )
|
|
||||||
Dim i
|
|
||||||
For i = 0 to UBound( sourceArray )
|
|
||||||
If sourceArray(i) = value Then
|
|
||||||
InArray = True
|
|
||||||
Exit Function
|
|
||||||
End If
|
|
||||||
Next
|
|
||||||
InArray = False
|
|
||||||
End Function
|
|
||||||
|
|
||||||
%>
|
|
||||||
@@ -1,34 +0,0 @@
|
|||||||
<%@ Page language="c#" Inherits="FredCK.FCKeditorV2.FileBrowserConnector" AutoEventWireup="false" %>
|
|
||||||
<%--
|
|
||||||
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
|
||||||
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
|
||||||
*
|
|
||||||
* == BEGIN LICENSE ==
|
|
||||||
*
|
|
||||||
* Licensed under the terms of any of the following licenses at your
|
|
||||||
* choice:
|
|
||||||
*
|
|
||||||
* - GNU General Public License Version 2 or later (the "GPL")
|
|
||||||
* http://www.gnu.org/licenses/gpl.html
|
|
||||||
*
|
|
||||||
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
|
||||||
* http://www.gnu.org/licenses/lgpl.html
|
|
||||||
*
|
|
||||||
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
|
||||||
* http://www.mozilla.org/MPL/MPL-1.1.html
|
|
||||||
*
|
|
||||||
* == END LICENSE ==
|
|
||||||
*
|
|
||||||
* File Name: connector.aspx
|
|
||||||
* This is the File Browser Connector for ASP.NET.
|
|
||||||
*
|
|
||||||
* The code of this page if included in the FCKeditor.Net package,
|
|
||||||
* in the FredCK.FCKeditorV2.dll assemblyfile. So to use it you must
|
|
||||||
* include that DLL in your "bin" directory.
|
|
||||||
*
|
|
||||||
* To download the FCKeditor.Net package, go to our official web site:
|
|
||||||
* http://www.fckeditor.net
|
|
||||||
*
|
|
||||||
* File Authors:
|
|
||||||
* Frederico Caldeira Knabben (www.fckeditor.net)
|
|
||||||
--%>
|
|
||||||
@@ -1,80 +0,0 @@
|
|||||||
<cfsetting enablecfoutputonly="Yes">
|
|
||||||
|
|
||||||
<cfscript>
|
|
||||||
config = structNew();
|
|
||||||
|
|
||||||
// SECURITY: You must explicitly enable this "connector". (Set enabled to "true")
|
|
||||||
config.enabled = false;
|
|
||||||
|
|
||||||
config.userFilesPath = "/userfiles/";
|
|
||||||
|
|
||||||
config.serverPath = ""; // use this to force the server path if FCKeditor is not running directly off the root of the application or the FCKeditor directory in the URL is a virtual directory or a symbolic link / junction
|
|
||||||
|
|
||||||
config.allowedExtensions = structNew();
|
|
||||||
config.deniedExtensions = structNew();
|
|
||||||
|
|
||||||
// config.allowedExtensions["File"] = "doc,rtf,pdf,ppt,pps,xls,csv,vnd,zip";
|
|
||||||
config.allowedExtensions["File"] = "";
|
|
||||||
config.deniedExtensions["File"] = "html,htm,php,php2,php3,php4,php5,phtml,pwml,inc,asp,aspx,ascx,jsp,cfm,cfc,pl,bat,exe,com,dll,vbs,js,reg,cgi,htaccess,asis";
|
|
||||||
|
|
||||||
config.allowedExtensions["Image"] = "png,gif,jpg,jpeg,bmp";
|
|
||||||
config.deniedExtensions["Image"] = "";
|
|
||||||
|
|
||||||
config.allowedExtensions["Flash"] = "swf,fla";
|
|
||||||
config.deniedExtensions["Flash"] = "";
|
|
||||||
|
|
||||||
config.allowedExtensions["Media"] = "swf,fla,jpg,gif,jpeg,png,avi,mpg,mpeg,mp3,mp4,m4a,wma,wmv,wav,mid,midi,rmi,rm,ram,rmvb,mov,qt";
|
|
||||||
config.deniedExtensions["Media"] = "";
|
|
||||||
</cfscript>
|
|
||||||
|
|
||||||
<!--- code to maintain backwards compatibility with previous version of cfm connector --->
|
|
||||||
<cfif isDefined("application.userFilesPath")>
|
|
||||||
|
|
||||||
<cflock scope="application" type="readonly" timeout="5">
|
|
||||||
<cfset config.userFilesPath = application.userFilesPath>
|
|
||||||
</cflock>
|
|
||||||
|
|
||||||
<cfelseif isDefined("server.userFilesPath")>
|
|
||||||
|
|
||||||
<cflock scope="server" type="readonly" timeout="5">
|
|
||||||
<cfset config.userFilesPath = server.userFilesPath>
|
|
||||||
</cflock>
|
|
||||||
|
|
||||||
</cfif>
|
|
||||||
|
|
||||||
<!--- look for config struct in request, application and server scopes --->
|
|
||||||
<cfif isDefined("request.FCKeditor") and isStruct(request.FCKeditor)>
|
|
||||||
|
|
||||||
<cfset variables.FCKeditor = request.FCKeditor>
|
|
||||||
|
|
||||||
<cfelseif isDefined("application.FCKeditor") and isStruct(application.FCKeditor)>
|
|
||||||
|
|
||||||
<cflock scope="application" type="readonly" timeout="5">
|
|
||||||
<cfset variables.FCKeditor = duplicate(application.FCKeditor)>
|
|
||||||
</cflock>
|
|
||||||
|
|
||||||
<cfelseif isDefined("server.FCKeditor") and isStruct(server.FCKeditor)>
|
|
||||||
|
|
||||||
<cflock scope="server" type="readonly" timeout="5">
|
|
||||||
<cfset variables.FCKeditor = duplicate(server.FCKeditor)>
|
|
||||||
</cflock>
|
|
||||||
|
|
||||||
</cfif>
|
|
||||||
|
|
||||||
<cfif isDefined("FCKeditor")>
|
|
||||||
|
|
||||||
<!--- copy key values from external to local config (i.e. override default config as required) --->
|
|
||||||
<cfscript>
|
|
||||||
function structCopyKeys(stFrom, stTo) {
|
|
||||||
for ( key in stFrom ) {
|
|
||||||
if ( isStruct(stFrom[key]) ) {
|
|
||||||
structCopyKeys(stFrom[key],stTo[key]);
|
|
||||||
} else {
|
|
||||||
stTo[key] = stFrom[key];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
structCopyKeys(FCKeditor, config);
|
|
||||||
</cfscript>
|
|
||||||
|
|
||||||
</cfif>
|
|
||||||
@@ -1,372 +0,0 @@
|
|||||||
<cfsetting enablecfoutputonly="yes" showdebugoutput="no">
|
|
||||||
<!---
|
|
||||||
* 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 ==
|
|
||||||
*
|
|
||||||
* File Name: connector.cfm
|
|
||||||
* File Browser connector for ColdFusion.
|
|
||||||
* (based on the original CF connector by Hendrik Kramer - hk@lwd.de)
|
|
||||||
*
|
|
||||||
* Note:
|
|
||||||
* FCKeditor requires that the connector responds with UTF-8 encoded XML.
|
|
||||||
* As ColdFusion 5 does not fully support UTF-8 encoding, we force ASCII
|
|
||||||
* file and folder names in this connector to allow CF5 send a UTF-8
|
|
||||||
* encoded response - code points under 127 in UTF-8 are stored using a
|
|
||||||
* single byte, using the same encoding as ASCII, which is damn handy.
|
|
||||||
* This is all grand for the English speakers, like meself, but I dunno
|
|
||||||
* how others are gonna take to it. Well, the previous version of this
|
|
||||||
* connector already did this with file names and nobody seemed to mind,
|
|
||||||
* so fingers-crossed nobody will mind their folder names being munged too.
|
|
||||||
*
|
|
||||||
*
|
|
||||||
* File Authors:
|
|
||||||
* Mark Woods (mark@thickpaddy.com)
|
|
||||||
* Wim Lemmens (didgiman@gmail.com)
|
|
||||||
--->
|
|
||||||
|
|
||||||
<cfparam name="url.command">
|
|
||||||
<cfparam name="url.type">
|
|
||||||
<cfparam name="url.currentFolder">
|
|
||||||
<!--- note: no serverPath url parameter - see config.cfm if you need to set the serverPath manually --->
|
|
||||||
|
|
||||||
<cfinclude template="config.cfm">
|
|
||||||
|
|
||||||
<cfscript>
|
|
||||||
userFilesPath = config.userFilesPath;
|
|
||||||
lAllowedExtensions = config.allowedExtensions[url.type];
|
|
||||||
lDeniedExtensions = config.deniedExtensions[url.type];
|
|
||||||
|
|
||||||
// make sure the user files path is correctly formatted
|
|
||||||
userFilesPath = replace(userFilesPath, "\", "/", "ALL");
|
|
||||||
userFilesPath = replace(userFilesPath, '//', '/', 'ALL');
|
|
||||||
if ( right(userFilesPath,1) neq "/" ) {
|
|
||||||
userFilesPath = userFilesPath & "/";
|
|
||||||
}
|
|
||||||
if ( left(userFilesPath,1) neq "/" ) {
|
|
||||||
userFilesPath = "/" & userFilesPath;
|
|
||||||
}
|
|
||||||
|
|
||||||
// make sure the current folder is correctly formatted
|
|
||||||
url.currentFolder = replace(url.currentFolder, "\", "/", "ALL");
|
|
||||||
url.currentFolder = replace(url.currentFolder, '//', '/', 'ALL');
|
|
||||||
if ( right(url.currentFolder,1) neq "/" ) {
|
|
||||||
url.currentFolder = url.currentFolder & "/";
|
|
||||||
}
|
|
||||||
if ( left(url.currentFolder,1) neq "/" ) {
|
|
||||||
url.currentFolder = "/" & url.currentFolder;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( find("/",getBaseTemplatePath()) neq 0 ) {
|
|
||||||
fs = "/";
|
|
||||||
} else {
|
|
||||||
fs = "\";
|
|
||||||
}
|
|
||||||
|
|
||||||
// Get the base physical path to the web root for this application. The code to determine the path automatically assumes that
|
|
||||||
// the "FCKeditor" directory in the http request path is directly off the web root for the application and that it's not a
|
|
||||||
// virtual directory or a symbolic link / junction. Use the serverPath config setting to force a physical path if necessary.
|
|
||||||
if ( len(config.serverPath) ) {
|
|
||||||
serverPath = config.serverPath;
|
|
||||||
} else {
|
|
||||||
serverPath = replaceNoCase(getBaseTemplatePath(),replace(cgi.script_name,"/",fs,"all"),"");
|
|
||||||
}
|
|
||||||
|
|
||||||
// map the user files path to a physical directory
|
|
||||||
userFilesServerPath = serverPath & replace(userFilesPath,"/",fs,"all");
|
|
||||||
|
|
||||||
xmlContent = ""; // append to this string to build content
|
|
||||||
</cfscript>
|
|
||||||
|
|
||||||
<cfif not config.enabled>
|
|
||||||
|
|
||||||
<cfset xmlContent = "<Error number=""1"" text=""This connector is disabled. Please check the 'editor/filemanager/browser/default/connectors/cfm/config.cfm' file"" />">
|
|
||||||
|
|
||||||
<cfelseif find("..",url.currentFolder)>
|
|
||||||
|
|
||||||
<cfset xmlContent = "<Error number=""102"" />">
|
|
||||||
|
|
||||||
</cfif>
|
|
||||||
|
|
||||||
<cfif not len(xmlContent)>
|
|
||||||
|
|
||||||
<!--- create directories in physical path if they don't already exist --->
|
|
||||||
<cfset currentPath = serverPath>
|
|
||||||
<cftry>
|
|
||||||
|
|
||||||
<cfloop list="#userFilesPath#" index="name" delimiters="/">
|
|
||||||
|
|
||||||
<cfif not directoryExists(currentPath & fs & name)>
|
|
||||||
<cfdirectory action="create" directory="#currentPath##fs##name#" mode="755">
|
|
||||||
</cfif>
|
|
||||||
|
|
||||||
<cfset currentPath = currentPath & fs & name>
|
|
||||||
|
|
||||||
</cfloop>
|
|
||||||
|
|
||||||
<!--- create sub-directory for file type if it doesn't already exist --->
|
|
||||||
<cfif not directoryExists(userFilesServerPath & url.type)>
|
|
||||||
<cfdirectory action="create" directory="#userFilesServerPath##url.type#" mode="755">
|
|
||||||
</cfif>
|
|
||||||
|
|
||||||
<cfcatch>
|
|
||||||
|
|
||||||
<!--- this should only occur as a result of a permissions problem --->
|
|
||||||
<cfset xmlContent = "<Error number=""103"" />">
|
|
||||||
|
|
||||||
</cfcatch>
|
|
||||||
</cftry>
|
|
||||||
|
|
||||||
</cfif>
|
|
||||||
|
|
||||||
<cfif not len(xmlContent)>
|
|
||||||
|
|
||||||
<!--- no errors thus far - run command --->
|
|
||||||
|
|
||||||
<!--- we need to know the physical path to the current folder for all commands --->
|
|
||||||
<cfset currentFolderPath = userFilesServerPath & url.type & replace(url.currentFolder,"/",fs,"all")>
|
|
||||||
|
|
||||||
<cfswitch expression="#url.command#">
|
|
||||||
|
|
||||||
|
|
||||||
<cfcase value="FileUpload">
|
|
||||||
|
|
||||||
<cfset fileName = "">
|
|
||||||
<cfset fileExt = "">
|
|
||||||
|
|
||||||
<cftry>
|
|
||||||
|
|
||||||
<!--- TODO: upload to a temp directory and move file if extension is allowed --->
|
|
||||||
|
|
||||||
<!--- first upload the file with an unique filename --->
|
|
||||||
<cffile action="upload"
|
|
||||||
fileField="NewFile"
|
|
||||||
destination="#currentFolderPath#"
|
|
||||||
nameConflict="makeunique"
|
|
||||||
mode="644"
|
|
||||||
attributes="normal">
|
|
||||||
|
|
||||||
<cfif cffile.fileSize EQ 0>
|
|
||||||
<cfthrow>
|
|
||||||
</cfif>
|
|
||||||
|
|
||||||
<cfif ( len(lAllowedExtensions) and not listFindNoCase(lAllowedExtensions,cffile.ServerFileExt) )
|
|
||||||
or ( len(lDeniedExtensions) and listFindNoCase(lDeniedExtensions,cffile.ServerFileExt) )>
|
|
||||||
|
|
||||||
<cfset errorNumber = "202">
|
|
||||||
<cffile action="delete" file="#cffile.ServerDirectory##fs##cffile.ServerFile#">
|
|
||||||
|
|
||||||
<cfelse>
|
|
||||||
|
|
||||||
<cfscript>
|
|
||||||
errorNumber = 0;
|
|
||||||
fileName = cffile.ClientFileName;
|
|
||||||
fileExt = cffile.ServerFileExt;
|
|
||||||
|
|
||||||
// munge filename for html download. Only a-z, 0-9, _, - and . are allowed
|
|
||||||
if( reFind("[^A-Za-z0-9_\-\.]", fileName) ) {
|
|
||||||
fileName = reReplace(fileName, "[^A-Za-z0-9\-\.]", "_", "ALL");
|
|
||||||
fileName = reReplace(fileName, "_{2,}", "_", "ALL");
|
|
||||||
fileName = reReplace(fileName, "([^_]+)_+$", "\1", "ALL");
|
|
||||||
fileName = reReplace(fileName, "$_([^_]+)$", "\1", "ALL");
|
|
||||||
}
|
|
||||||
|
|
||||||
// When the original filename already exists, add numbers (0), (1), (2), ... at the end of the filename.
|
|
||||||
if( compare( cffile.ServerFileName, fileName ) ) {
|
|
||||||
counter = 0;
|
|
||||||
tmpFileName = fileName;
|
|
||||||
while( fileExists("#currentFolderPath##fileName#.#fileExt#") ) {
|
|
||||||
counter = counter + 1;
|
|
||||||
fileName = tmpFileName & '(#counter#)';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</cfscript>
|
|
||||||
|
|
||||||
<!--- Rename the uploaded file, if neccessary --->
|
|
||||||
<cfif compare(cffile.ServerFileName,fileName)>
|
|
||||||
|
|
||||||
<cfset errorNumber = "201">
|
|
||||||
<cffile
|
|
||||||
action="rename"
|
|
||||||
source="#currentFolderPath##cffile.ServerFileName#.#cffile.ServerFileExt#"
|
|
||||||
destination="#currentFolderPath##fileName#.#fileExt#"
|
|
||||||
mode="644"
|
|
||||||
attributes="normal">
|
|
||||||
|
|
||||||
</cfif>
|
|
||||||
|
|
||||||
</cfif>
|
|
||||||
|
|
||||||
<cfcatch type="Any">
|
|
||||||
|
|
||||||
<cfset errorNumber = "202">
|
|
||||||
|
|
||||||
</cfcatch>
|
|
||||||
|
|
||||||
</cftry>
|
|
||||||
|
|
||||||
|
|
||||||
<cfif errorNumber eq 201>
|
|
||||||
|
|
||||||
<!--- file was changed (201), submit the new filename --->
|
|
||||||
<cfoutput>
|
|
||||||
<script type="text/javascript">
|
|
||||||
window.parent.frames['frmUpload'].OnUploadCompleted(#errorNumber#,'#replace( fileName & "." & fileExt, "'", "\'", "ALL")#');
|
|
||||||
</script>
|
|
||||||
</cfoutput>
|
|
||||||
|
|
||||||
<cfelse>
|
|
||||||
|
|
||||||
<!--- file was uploaded succesfully(0) or an error occured(202). Submit only the error code. --->
|
|
||||||
<cfoutput>
|
|
||||||
<script type="text/javascript">
|
|
||||||
window.parent.frames['frmUpload'].OnUploadCompleted(#errorNumber#);
|
|
||||||
</script>
|
|
||||||
</cfoutput>
|
|
||||||
|
|
||||||
</cfif>
|
|
||||||
|
|
||||||
<cfabort>
|
|
||||||
|
|
||||||
</cfcase>
|
|
||||||
|
|
||||||
|
|
||||||
<cfcase value="GetFolders">
|
|
||||||
|
|
||||||
<!--- Sort directories first, name ascending --->
|
|
||||||
<cfdirectory
|
|
||||||
action="list"
|
|
||||||
directory="#currentFolderPath#"
|
|
||||||
name="qDir"
|
|
||||||
sort="type,name">
|
|
||||||
|
|
||||||
<cfscript>
|
|
||||||
i=1;
|
|
||||||
folders = "";
|
|
||||||
while( i lte qDir.recordCount ) {
|
|
||||||
if( not compareNoCase( qDir.type[i], "FILE" ))
|
|
||||||
break;
|
|
||||||
if( not listFind(".,..", qDir.name[i]) )
|
|
||||||
folders = folders & '<Folder name="#qDir.name[i]#" />';
|
|
||||||
i=i+1;
|
|
||||||
}
|
|
||||||
|
|
||||||
xmlContent = xmlContent & '<Folders>' & folders & '</Folders>';
|
|
||||||
</cfscript>
|
|
||||||
|
|
||||||
</cfcase>
|
|
||||||
|
|
||||||
|
|
||||||
<cfcase value="GetFoldersAndFiles">
|
|
||||||
|
|
||||||
<!--- Sort directories first, name ascending --->
|
|
||||||
<cfdirectory
|
|
||||||
action="list"
|
|
||||||
directory="#currentFolderPath#"
|
|
||||||
name="qDir"
|
|
||||||
sort="type,name">
|
|
||||||
|
|
||||||
<cfscript>
|
|
||||||
i=1;
|
|
||||||
folders = "";
|
|
||||||
files = "";
|
|
||||||
while( i lte qDir.recordCount ) {
|
|
||||||
if( not compareNoCase( qDir.type[i], "DIR" ) and not listFind(".,..", qDir.name[i]) ) {
|
|
||||||
folders = folders & '<Folder name="#qDir.name[i]#" />';
|
|
||||||
} else if( not compareNoCase( qDir.type[i], "FILE" ) ) {
|
|
||||||
fileSizeKB = round(qDir.size[i] / 1024);
|
|
||||||
files = files & '<File name="#qDir.name[i]#" size="#IIf( fileSizeKB GT 0, DE( fileSizeKB ), 1)#" />';
|
|
||||||
}
|
|
||||||
i=i+1;
|
|
||||||
}
|
|
||||||
|
|
||||||
xmlContent = xmlContent & '<Folders>' & folders & '</Folders>';
|
|
||||||
xmlContent = xmlContent & '<Files>' & files & '</Files>';
|
|
||||||
</cfscript>
|
|
||||||
|
|
||||||
</cfcase>
|
|
||||||
|
|
||||||
|
|
||||||
<cfcase value="CreateFolder">
|
|
||||||
|
|
||||||
<cfparam name="url.newFolderName" default="">
|
|
||||||
|
|
||||||
<cfscript>
|
|
||||||
newFolderName = url.newFolderName;
|
|
||||||
if( reFind("[^A-Za-z0-9_\-\.]", newFolderName) ) {
|
|
||||||
// Munge folder name same way as we do the filename
|
|
||||||
// This means folder names are always US-ASCII so we don't have to worry about CF5 and UTF-8
|
|
||||||
newFolderName = reReplace(newFolderName, "[^A-Za-z0-9\-\.]", "_", "all");
|
|
||||||
newFolderName = reReplace(newFolderName, "_{2,}", "_", "all");
|
|
||||||
newFolderName = reReplace(newFolderName, "([^_]+)_+$", "\1", "all");
|
|
||||||
newFolderName = reReplace(newFolderName, "$_([^_]+)$", "\1", "all");
|
|
||||||
}
|
|
||||||
</cfscript>
|
|
||||||
|
|
||||||
<cfif not len(newFolderName) or len(newFolderName) gt 255>
|
|
||||||
<cfset errorNumber = 102>
|
|
||||||
<cfelseif directoryExists(currentFolderPath & newFolderName)>
|
|
||||||
<cfset errorNumber = 101>
|
|
||||||
<cfelseif reFind("^\.\.",newFolderName)>
|
|
||||||
<cfset errorNumber = 103>
|
|
||||||
<cfelse>
|
|
||||||
<cfset errorNumber = 0>
|
|
||||||
|
|
||||||
<cftry>
|
|
||||||
<cfdirectory
|
|
||||||
action="create"
|
|
||||||
directory="#currentFolderPath##newFolderName#"
|
|
||||||
mode="755">
|
|
||||||
<cfcatch>
|
|
||||||
<!---
|
|
||||||
un-resolvable error numbers in ColdFusion:
|
|
||||||
* 102 : Invalid folder name.
|
|
||||||
* 103 : You have no permissions to create the folder.
|
|
||||||
--->
|
|
||||||
<cfset errorNumber = 110>
|
|
||||||
</cfcatch>
|
|
||||||
</cftry>
|
|
||||||
</cfif>
|
|
||||||
|
|
||||||
<cfset xmlContent = xmlContent & '<Error number="#errorNumber#" />'>
|
|
||||||
|
|
||||||
</cfcase>
|
|
||||||
|
|
||||||
|
|
||||||
<cfdefaultcase>
|
|
||||||
|
|
||||||
<cfthrow type="fckeditor.connector" message="Illegal command: #url.command#">
|
|
||||||
|
|
||||||
</cfdefaultcase>
|
|
||||||
|
|
||||||
|
|
||||||
</cfswitch>
|
|
||||||
|
|
||||||
</cfif>
|
|
||||||
|
|
||||||
<cfscript>
|
|
||||||
xmlHeader = '<?xml version="1.0" encoding="utf-8" ?><Connector command="#url.command#" resourceType="#url.type#">';
|
|
||||||
xmlHeader = xmlHeader & '<CurrentFolder path="#url.currentFolder#" url="#userFilesPath##url.type##url.currentFolder#" />';
|
|
||||||
xmlFooter = '</Connector>';
|
|
||||||
</cfscript>
|
|
||||||
|
|
||||||
<cfheader name="Expires" value="#GetHttpTimeString(Now())#">
|
|
||||||
<cfheader name="Pragma" value="no-cache">
|
|
||||||
<cfheader name="Cache-Control" value="no-cache, no-store, must-revalidate">
|
|
||||||
<cfcontent reset="true" type="text/xml; charset=UTF-8">
|
|
||||||
<cfoutput>#xmlHeader##xmlContent##xmlFooter#</cfoutput>
|
|
||||||
@@ -1,69 +0,0 @@
|
|||||||
[//lasso
|
|
||||||
/*
|
|
||||||
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
|
||||||
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
|
||||||
*
|
|
||||||
* == BEGIN LICENSE ==
|
|
||||||
*
|
|
||||||
* Licensed under the terms of any of the following licenses at your
|
|
||||||
* choice:
|
|
||||||
*
|
|
||||||
* - GNU General Public License Version 2 or later (the "GPL")
|
|
||||||
* http://www.gnu.org/licenses/gpl.html
|
|
||||||
*
|
|
||||||
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
|
||||||
* http://www.gnu.org/licenses/lgpl.html
|
|
||||||
*
|
|
||||||
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
|
||||||
* http://www.mozilla.org/MPL/MPL-1.1.html
|
|
||||||
*
|
|
||||||
* == END LICENSE ==
|
|
||||||
*
|
|
||||||
* File Name: config.lasso
|
|
||||||
* Configuration file for the File Manager Connector for Lasso.
|
|
||||||
*
|
|
||||||
* File Authors:
|
|
||||||
* Jason Huck (jason.huck@corefive.com)
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*.....................................................................
|
|
||||||
The connector uses the file tags, which require authentication. Enter a
|
|
||||||
valid username and password from Lasso admin for a group with file tags
|
|
||||||
permissions for uploads and the path you define in UserFilesPath below.
|
|
||||||
*/
|
|
||||||
|
|
||||||
var('connection') = array(
|
|
||||||
-username='xxxxxxxx',
|
|
||||||
-password='xxxxxxxx'
|
|
||||||
);
|
|
||||||
|
|
||||||
|
|
||||||
/*.....................................................................
|
|
||||||
Set the base path for files that users can upload and browse (relative
|
|
||||||
to server root).
|
|
||||||
|
|
||||||
Set which file extensions are allowed and/or denied for each file type.
|
|
||||||
*/
|
|
||||||
var('config') = map(
|
|
||||||
'Enabled' = true,
|
|
||||||
'UserFilesPath' = '/userfiles/',
|
|
||||||
'Subdirectories' = map(
|
|
||||||
'File' = 'File/',
|
|
||||||
'Image' = 'Image/',
|
|
||||||
'Flash' = 'Flash/',
|
|
||||||
'Media' = 'Media/'
|
|
||||||
),
|
|
||||||
'AllowedExtensions' = map(
|
|
||||||
'File' = array(),
|
|
||||||
'Image' = array('jpg','gif','jpeg','png'),
|
|
||||||
'Flash' = array('swf','fla'),
|
|
||||||
'Media' = array('swf','fla','jpg','gif','jpeg','png','avi','mpg','mpeg')
|
|
||||||
),
|
|
||||||
'DeniedExtensions' = map(
|
|
||||||
'File' = array('html','htm','php','php2','php3','php4','php5','phtml','pwml','inc','asp','aspx','ascx','jsp','cfm','cfc','pl','bat','exe','com','dll','vbs','js','reg','cgi','lasso','lassoapp','htaccess','asis'),
|
|
||||||
'Image' = array(),
|
|
||||||
'Flash' = array(),
|
|
||||||
'Media' = array()
|
|
||||||
)
|
|
||||||
);
|
|
||||||
]
|
|
||||||
@@ -1,253 +0,0 @@
|
|||||||
[//lasso
|
|
||||||
/*
|
|
||||||
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
|
||||||
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
|
||||||
*
|
|
||||||
* == BEGIN LICENSE ==
|
|
||||||
*
|
|
||||||
* Licensed under the terms of any of the following licenses at your
|
|
||||||
* choice:
|
|
||||||
*
|
|
||||||
* - GNU General Public License Version 2 or later (the "GPL")
|
|
||||||
* http://www.gnu.org/licenses/gpl.html
|
|
||||||
*
|
|
||||||
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
|
||||||
* http://www.gnu.org/licenses/lgpl.html
|
|
||||||
*
|
|
||||||
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
|
||||||
* http://www.mozilla.org/MPL/MPL-1.1.html
|
|
||||||
*
|
|
||||||
* == END LICENSE ==
|
|
||||||
*
|
|
||||||
* File Name: connector.lasso
|
|
||||||
* This is the File Manager Connector for Lasso.
|
|
||||||
*
|
|
||||||
* File Authors:
|
|
||||||
* Jason Huck (jason.huck@corefive.com)
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*.....................................................................
|
|
||||||
Include global configuration. See config.lasso for details.
|
|
||||||
*/
|
|
||||||
include('config.lasso');
|
|
||||||
|
|
||||||
|
|
||||||
/*.....................................................................
|
|
||||||
Translate current date/time to GMT for custom header.
|
|
||||||
*/
|
|
||||||
var('headerDate') = date_localtogmt(date)->format('%a, %d %b %Y %T GMT');
|
|
||||||
|
|
||||||
|
|
||||||
/*.....................................................................
|
|
||||||
Convert query string parameters to variables and initialize output.
|
|
||||||
*/
|
|
||||||
var(
|
|
||||||
'Command' = action_param('Command'),
|
|
||||||
'Type' = action_param('Type'),
|
|
||||||
'CurrentFolder' = action_param('CurrentFolder'),
|
|
||||||
'ServerPath' = action_param('ServerPath'),
|
|
||||||
'NewFolderName' = action_param('NewFolderName'),
|
|
||||||
'NewFile' = null,
|
|
||||||
'NewFileName' = string,
|
|
||||||
'OrigFilePath' = string,
|
|
||||||
'NewFilePath' = string,
|
|
||||||
'commandData' = string,
|
|
||||||
'folders' = '\t<Folders>\n',
|
|
||||||
'files' = '\t<Files>\n',
|
|
||||||
'errorNumber' = integer,
|
|
||||||
'responseType' = 'xml',
|
|
||||||
'uploadResult' = '0'
|
|
||||||
);
|
|
||||||
|
|
||||||
|
|
||||||
/*.....................................................................
|
|
||||||
Calculate the path to the current folder.
|
|
||||||
*/
|
|
||||||
$ServerPath == '' ? $ServerPath = $config->find('UserFilesPath');
|
|
||||||
|
|
||||||
var('currentFolderURL' = $ServerPath
|
|
||||||
+ $config->find('Subdirectories')->find(action_param('Type'))
|
|
||||||
+ action_param('CurrentFolder')
|
|
||||||
);
|
|
||||||
|
|
||||||
|
|
||||||
/*.....................................................................
|
|
||||||
Build the appropriate response per the 'Command' parameter. Wrap the
|
|
||||||
entire process in an inline for file tag permissions.
|
|
||||||
*/
|
|
||||||
inline($connection);
|
|
||||||
select($Command);
|
|
||||||
/*.............................................................
|
|
||||||
List all subdirectories in the 'Current Folder' directory.
|
|
||||||
*/
|
|
||||||
case('GetFolders');
|
|
||||||
$commandData += '\t<Folders>\n';
|
|
||||||
|
|
||||||
iterate(file_listdirectory($currentFolderURL), local('this'));
|
|
||||||
#this->endswith('/') ? $commandData += '\t\t<Folder name="' + #this->removetrailing('/')& + '" />\n';
|
|
||||||
/iterate;
|
|
||||||
|
|
||||||
$commandData += '\t</Folders>\n';
|
|
||||||
|
|
||||||
|
|
||||||
/*.............................................................
|
|
||||||
List both files and folders in the 'Current Folder' directory.
|
|
||||||
Include the file sizes in kilobytes.
|
|
||||||
*/
|
|
||||||
case('GetFoldersAndFiles');
|
|
||||||
iterate(file_listdirectory($currentFolderURL), local('this'));
|
|
||||||
if(#this->endswith('/'));
|
|
||||||
$folders += '\t\t<Folder name="' + #this->removetrailing('/')& + '" />\n';
|
|
||||||
else;
|
|
||||||
local('size') = file_getsize($currentFolderURL + #this) / 1024;
|
|
||||||
$files += '\t\t<File name="' + #this + '" size="' + #size + '" />\n';
|
|
||||||
/if;
|
|
||||||
/iterate;
|
|
||||||
|
|
||||||
$folders += '\t</Folders>\n';
|
|
||||||
$files += '\t</Files>\n';
|
|
||||||
|
|
||||||
$commandData += $folders + $files;
|
|
||||||
|
|
||||||
|
|
||||||
/*.............................................................
|
|
||||||
Create a directory 'NewFolderName' within the 'Current Folder.'
|
|
||||||
*/
|
|
||||||
case('CreateFolder');
|
|
||||||
var('newFolder' = $currentFolderURL + $NewFolderName + '/');
|
|
||||||
file_create($newFolder);
|
|
||||||
|
|
||||||
|
|
||||||
/*.........................................................
|
|
||||||
Map Lasso's file error codes to FCKEditor's error codes.
|
|
||||||
*/
|
|
||||||
select(file_currenterror( -errorcode));
|
|
||||||
case(0);
|
|
||||||
$errorNumber = 0;
|
|
||||||
case( -9983);
|
|
||||||
$errorNumber = 101;
|
|
||||||
case( -9976);
|
|
||||||
$errorNumber = 102;
|
|
||||||
case( -9977);
|
|
||||||
$errorNumber = 102;
|
|
||||||
case( -9961);
|
|
||||||
$errorNumber = 103;
|
|
||||||
case;
|
|
||||||
$errorNumber = 110;
|
|
||||||
/select;
|
|
||||||
|
|
||||||
$commandData += '<Error number="' + $errorNumber + '" />\n';
|
|
||||||
|
|
||||||
|
|
||||||
/*.............................................................
|
|
||||||
Process an uploaded file.
|
|
||||||
*/
|
|
||||||
case('FileUpload');
|
|
||||||
/*.........................................................
|
|
||||||
This is the only command that returns an HTML response.
|
|
||||||
*/
|
|
||||||
$responseType = 'html';
|
|
||||||
|
|
||||||
|
|
||||||
/*.........................................................
|
|
||||||
Was a file actually uploaded?
|
|
||||||
*/
|
|
||||||
file_uploads->size ? $NewFile = file_uploads->get(1) | $uploadResult = '202';
|
|
||||||
|
|
||||||
if($uploadResult == '0');
|
|
||||||
/*.....................................................
|
|
||||||
Split the file's extension from the filename in order
|
|
||||||
to follow the API's naming convention for duplicate
|
|
||||||
files. (Test.txt, Test(1).txt, Test(2).txt, etc.)
|
|
||||||
*/
|
|
||||||
$NewFileName = $NewFile->find('OrigName');
|
|
||||||
$OrigFilePath = $currentFolderURL + $NewFileName;
|
|
||||||
$NewFilePath = $OrigFilePath;
|
|
||||||
local('fileExtension') = '.' + $NewFile->find('OrigExtension');
|
|
||||||
local('shortFileName') = $NewFileName->removetrailing(#fileExtension)&;
|
|
||||||
|
|
||||||
|
|
||||||
/*.....................................................
|
|
||||||
Make sure the file extension is allowed.
|
|
||||||
*/
|
|
||||||
if($config->find('DeniedExtensions')->find($Type) >> $NewFile->find('OrigExtension'));
|
|
||||||
$uploadResult = '202';
|
|
||||||
else;
|
|
||||||
/*.................................................
|
|
||||||
Rename the target path until it is unique.
|
|
||||||
*/
|
|
||||||
while(file_exists($NewFilePath));
|
|
||||||
$NewFilePath = $currentFolderURL + #shortFileName + '(' + loop_count + ')' + #fileExtension;
|
|
||||||
/while;
|
|
||||||
|
|
||||||
|
|
||||||
/*.................................................
|
|
||||||
Copy the uploaded file to its final location.
|
|
||||||
*/
|
|
||||||
file_copy($NewFile->find('path'), $NewFilePath);
|
|
||||||
|
|
||||||
|
|
||||||
/*.................................................
|
|
||||||
Set the error code for the response. Note whether
|
|
||||||
the file had to be renamed.
|
|
||||||
*/
|
|
||||||
select(file_currenterror( -errorcode));
|
|
||||||
case(0);
|
|
||||||
$OrigFilePath != $NewFilePath ? $uploadResult = '201, \'' + $NewFilePath->split('/')->last + '\'';
|
|
||||||
case;
|
|
||||||
$uploadResult = '202';
|
|
||||||
/select;
|
|
||||||
/if;
|
|
||||||
/if;
|
|
||||||
|
|
||||||
|
|
||||||
/*.........................................................
|
|
||||||
Set the HTML response.
|
|
||||||
*/
|
|
||||||
$__html_reply__ = '\
|
|
||||||
<script type="text/javascript">
|
|
||||||
window.parent.frames[\'frmUpload\'].OnUploadCompleted(' + $uploadResult + ');
|
|
||||||
</script>
|
|
||||||
';
|
|
||||||
/select;
|
|
||||||
/inline;
|
|
||||||
|
|
||||||
|
|
||||||
/*.....................................................................
|
|
||||||
Send a custom header for xml responses.
|
|
||||||
*/
|
|
||||||
if($responseType == 'xml');
|
|
||||||
header;
|
|
||||||
]
|
|
||||||
HTTP/1.0 200 OK
|
|
||||||
Date: [$headerDate]
|
|
||||||
Server: Lasso Professional [lasso_version( -lassoversion)]
|
|
||||||
Expires: Mon, 26 Jul 1997 05:00:00 GMT
|
|
||||||
Last-Modified: [$headerDate]
|
|
||||||
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
|
|
||||||
Pragma: no-cache
|
|
||||||
Keep-Alive: timeout=15, max=98
|
|
||||||
Connection: Keep-Alive
|
|
||||||
Content-Type: text/xml; charset=utf-8
|
|
||||||
[//lasso
|
|
||||||
/header;
|
|
||||||
|
|
||||||
|
|
||||||
/*.................................................................
|
|
||||||
Set the content type encoding for Lasso.
|
|
||||||
*/
|
|
||||||
content_type('text/xml; charset=utf-8');
|
|
||||||
|
|
||||||
|
|
||||||
/*.................................................................
|
|
||||||
Wrap the response as XML and output.
|
|
||||||
*/
|
|
||||||
$__html_reply__ = '\
|
|
||||||
<?xml version="1.0" encoding="utf-8" ?>
|
|
||||||
<Connector command="' + $Command + '" resourceType="' + $Type + '">
|
|
||||||
<CurrentFolder path="' + $CurrentFolder + '" url="' + $currentFolderURL + '" />
|
|
||||||
' + $commandData + '
|
|
||||||
</Connector>
|
|
||||||
';
|
|
||||||
/if;
|
|
||||||
]
|
|
||||||
@@ -1,67 +0,0 @@
|
|||||||
#####
|
|
||||||
# FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
|
||||||
# Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
|
||||||
#
|
|
||||||
# == BEGIN LICENSE ==
|
|
||||||
#
|
|
||||||
# Licensed under the terms of any of the following licenses at your
|
|
||||||
# choice:
|
|
||||||
#
|
|
||||||
# - GNU General Public License Version 2 or later (the "GPL")
|
|
||||||
# http://www.gnu.org/licenses/gpl.html
|
|
||||||
#
|
|
||||||
# - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
|
||||||
# http://www.gnu.org/licenses/lgpl.html
|
|
||||||
#
|
|
||||||
# - Mozilla Public License Version 1.1 or later (the "MPL")
|
|
||||||
# http://www.mozilla.org/MPL/MPL-1.1.html
|
|
||||||
#
|
|
||||||
# == END LICENSE ==
|
|
||||||
#
|
|
||||||
# File Name: basexml.pl
|
|
||||||
# This is the File Manager Connector for Perl.
|
|
||||||
#
|
|
||||||
# File Authors:
|
|
||||||
# Takashi Yamaguchi (jack@omakase.net)
|
|
||||||
#####
|
|
||||||
|
|
||||||
sub CreateXmlHeader
|
|
||||||
{
|
|
||||||
local($command,$resourceType,$currentFolder) = @_;
|
|
||||||
|
|
||||||
# Create the XML document header.
|
|
||||||
print '<?xml version="1.0" encoding="utf-8" ?>';
|
|
||||||
|
|
||||||
# Create the main "Connector" node.
|
|
||||||
print '<Connector command="' . $command . '" resourceType="' . $resourceType . '">';
|
|
||||||
|
|
||||||
# Add the current folder node.
|
|
||||||
print '<CurrentFolder path="' . ConvertToXmlAttribute($currentFolder) . '" url="' . ConvertToXmlAttribute(GetUrlFromPath($resourceType,$currentFolder)) . '" />';
|
|
||||||
}
|
|
||||||
|
|
||||||
sub CreateXmlFooter
|
|
||||||
{
|
|
||||||
print '</Connector>';
|
|
||||||
}
|
|
||||||
|
|
||||||
sub SendError
|
|
||||||
{
|
|
||||||
local( $number, $text ) = @_;
|
|
||||||
|
|
||||||
print << "_HTML_HEAD_";
|
|
||||||
Content-Type:text/xml; charset=utf-8
|
|
||||||
Pragma: no-cache
|
|
||||||
Cache-Control: no-cache
|
|
||||||
Expires: Thu, 01 Dec 1994 16:00:00 GMT
|
|
||||||
|
|
||||||
_HTML_HEAD_
|
|
||||||
|
|
||||||
# Create the XML document header
|
|
||||||
print '<?xml version="1.0" encoding="utf-8" ?>' ;
|
|
||||||
|
|
||||||
print '<Connector><Error number="' . $number . '" text="' . &specialchar_cnv( $text ) . '" /></Connector>' ;
|
|
||||||
|
|
||||||
exit ;
|
|
||||||
}
|
|
||||||
|
|
||||||
1;
|
|
||||||
@@ -1,162 +0,0 @@
|
|||||||
#####
|
|
||||||
# FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
|
||||||
# Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
|
||||||
#
|
|
||||||
# == BEGIN LICENSE ==
|
|
||||||
#
|
|
||||||
# Licensed under the terms of any of the following licenses at your
|
|
||||||
# choice:
|
|
||||||
#
|
|
||||||
# - GNU General Public License Version 2 or later (the "GPL")
|
|
||||||
# http://www.gnu.org/licenses/gpl.html
|
|
||||||
#
|
|
||||||
# - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
|
||||||
# http://www.gnu.org/licenses/lgpl.html
|
|
||||||
#
|
|
||||||
# - Mozilla Public License Version 1.1 or later (the "MPL")
|
|
||||||
# http://www.mozilla.org/MPL/MPL-1.1.html
|
|
||||||
#
|
|
||||||
# == END LICENSE ==
|
|
||||||
#
|
|
||||||
# File Name: commands.pl
|
|
||||||
# This is the File Manager Connector for Perl.
|
|
||||||
#
|
|
||||||
# File Authors:
|
|
||||||
# Takashi Yamaguchi (jack@omakase.net)
|
|
||||||
#####
|
|
||||||
|
|
||||||
sub GetFolders
|
|
||||||
{
|
|
||||||
|
|
||||||
local($resourceType, $currentFolder) = @_;
|
|
||||||
|
|
||||||
# Map the virtual path to the local server path.
|
|
||||||
$sServerDir = &ServerMapFolder($resourceType, $currentFolder);
|
|
||||||
print "<Folders>"; # Open the "Folders" node.
|
|
||||||
|
|
||||||
opendir(DIR,"$sServerDir");
|
|
||||||
@files = grep(!/^\.\.?$/,readdir(DIR));
|
|
||||||
closedir(DIR);
|
|
||||||
|
|
||||||
foreach $sFile (@files) {
|
|
||||||
if($sFile != '.' && $sFile != '..' && (-d "$sServerDir$sFile")) {
|
|
||||||
$cnv_filename = &ConvertToXmlAttribute($sFile);
|
|
||||||
print '<Folder name="' . $cnv_filename . '" />';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
print "</Folders>"; # Close the "Folders" node.
|
|
||||||
}
|
|
||||||
|
|
||||||
sub GetFoldersAndFiles
|
|
||||||
{
|
|
||||||
|
|
||||||
local($resourceType, $currentFolder) = @_;
|
|
||||||
# Map the virtual path to the local server path.
|
|
||||||
$sServerDir = &ServerMapFolder($resourceType,$currentFolder);
|
|
||||||
|
|
||||||
# Initialize the output buffers for "Folders" and "Files".
|
|
||||||
$sFolders = '<Folders>';
|
|
||||||
$sFiles = '<Files>';
|
|
||||||
|
|
||||||
opendir(DIR,"$sServerDir");
|
|
||||||
@files = grep(!/^\.\.?$/,readdir(DIR));
|
|
||||||
closedir(DIR);
|
|
||||||
|
|
||||||
foreach $sFile (@files) {
|
|
||||||
if($sFile ne '.' && $sFile ne '..') {
|
|
||||||
if(-d "$sServerDir$sFile") {
|
|
||||||
$cnv_filename = &ConvertToXmlAttribute($sFile);
|
|
||||||
$sFolders .= '<Folder name="' . $cnv_filename . '" />' ;
|
|
||||||
} else {
|
|
||||||
($iFileSize,$refdate,$filedate,$fileperm) = (stat("$sServerDir$sFile"))[7,8,9,2];
|
|
||||||
if($iFileSize > 0) {
|
|
||||||
$iFileSize = int($iFileSize / 1024);
|
|
||||||
if($iFileSize < 1) {
|
|
||||||
$iFileSize = 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$cnv_filename = &ConvertToXmlAttribute($sFile);
|
|
||||||
$sFiles .= '<File name="' . $cnv_filename . '" size="' . $iFileSize . '" />' ;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
print $sFolders ;
|
|
||||||
print '</Folders>'; # Close the "Folders" node.
|
|
||||||
print $sFiles ;
|
|
||||||
print '</Files>'; # Close the "Files" node.
|
|
||||||
}
|
|
||||||
|
|
||||||
sub CreateFolder
|
|
||||||
{
|
|
||||||
|
|
||||||
local($resourceType, $currentFolder) = @_;
|
|
||||||
$sErrorNumber = '0' ;
|
|
||||||
$sErrorMsg = '' ;
|
|
||||||
|
|
||||||
if($FORM{'NewFolderName'} ne "") {
|
|
||||||
$sNewFolderName = $FORM{'NewFolderName'};
|
|
||||||
# Map the virtual path to the local server path of the current folder.
|
|
||||||
$sServerDir = &ServerMapFolder($resourceType, $currentFolder);
|
|
||||||
if(-w $sServerDir) {
|
|
||||||
$sServerDir .= $sNewFolderName;
|
|
||||||
$sErrorMsg = &CreateServerFolder($sServerDir);
|
|
||||||
if($sErrorMsg == 0) {
|
|
||||||
$sErrorNumber = '0';
|
|
||||||
} elsif($sErrorMsg eq 'Invalid argument' || $sErrorMsg eq 'No such file or directory') {
|
|
||||||
$sErrorNumber = '102'; #// Path too long.
|
|
||||||
} else {
|
|
||||||
$sErrorNumber = '110';
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
$sErrorNumber = '103';
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
$sErrorNumber = '102' ;
|
|
||||||
}
|
|
||||||
# Create the "Error" node.
|
|
||||||
$cnv_errmsg = &ConvertToXmlAttribute($sErrorMsg);
|
|
||||||
print '<Error number="' . $sErrorNumber . '" originalDescription="' . $cnv_errmsg . '" />';
|
|
||||||
}
|
|
||||||
|
|
||||||
sub FileUpload
|
|
||||||
{
|
|
||||||
eval("use File::Copy;");
|
|
||||||
|
|
||||||
local($resourceType, $currentFolder) = @_;
|
|
||||||
|
|
||||||
$sErrorNumber = '0' ;
|
|
||||||
$sFileName = '' ;
|
|
||||||
if($new_fname) {
|
|
||||||
# Map the virtual path to the local server path.
|
|
||||||
$sServerDir = &ServerMapFolder($resourceType,$currentFolder);
|
|
||||||
|
|
||||||
# Get the uploaded file name.
|
|
||||||
$sFileName = $new_fname;
|
|
||||||
$sOriginalFileName = $sFileName;
|
|
||||||
|
|
||||||
$iCounter = 0;
|
|
||||||
while(1) {
|
|
||||||
$sFilePath = $sServerDir . $sFileName;
|
|
||||||
if(-e $sFilePath) {
|
|
||||||
$iCounter++ ;
|
|
||||||
($path,$BaseName,$ext) = &RemoveExtension($sOriginalFileName);
|
|
||||||
$sFileName = $BaseName . '(' . $iCounter . ').' . $ext;
|
|
||||||
$sErrorNumber = '201';
|
|
||||||
} else {
|
|
||||||
copy("$img_dir/$new_fname","$sFilePath");
|
|
||||||
chmod(0777,$sFilePath);
|
|
||||||
unlink("$img_dir/$new_fname");
|
|
||||||
last;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
$sErrorNumber = '202' ;
|
|
||||||
}
|
|
||||||
$sFileName =~ s/"/\\"/g;
|
|
||||||
print "Content-type: text/html\n\n";
|
|
||||||
print '<script type="text/javascript">';
|
|
||||||
print 'window.parent.frames["frmUpload"].OnUploadCompleted(' . $sErrorNumber . ',"' . $sFileName . '") ;';
|
|
||||||
print '</script>';
|
|
||||||
exit ;
|
|
||||||
}
|
|
||||||
1;
|
|
||||||
@@ -1,142 +0,0 @@
|
|||||||
#!/usr/bin/env perl
|
|
||||||
|
|
||||||
#####
|
|
||||||
# FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
|
||||||
# Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
|
||||||
#
|
|
||||||
# == BEGIN LICENSE ==
|
|
||||||
#
|
|
||||||
# Licensed under the terms of any of the following licenses at your
|
|
||||||
# choice:
|
|
||||||
#
|
|
||||||
# - GNU General Public License Version 2 or later (the "GPL")
|
|
||||||
# http://www.gnu.org/licenses/gpl.html
|
|
||||||
#
|
|
||||||
# - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
|
||||||
# http://www.gnu.org/licenses/lgpl.html
|
|
||||||
#
|
|
||||||
# - Mozilla Public License Version 1.1 or later (the "MPL")
|
|
||||||
# http://www.mozilla.org/MPL/MPL-1.1.html
|
|
||||||
#
|
|
||||||
# == END LICENSE ==
|
|
||||||
#
|
|
||||||
# File Name: connector.cgi
|
|
||||||
# This is the File Manager Connector for Perl.
|
|
||||||
#
|
|
||||||
# File Authors:
|
|
||||||
# Takashi Yamaguchi (jack@omakase.net)
|
|
||||||
# Frederico Caldeira Knabben (www.fckeditor.net)
|
|
||||||
#####
|
|
||||||
|
|
||||||
##
|
|
||||||
# ATTENTION: To enable this connector, look for the "SECURITY" comment in this file.
|
|
||||||
##
|
|
||||||
|
|
||||||
## START: Hack for Windows (Not important to understand the editor code... Perl specific).
|
|
||||||
if(Windows_check()) {
|
|
||||||
chdir(GetScriptPath($0));
|
|
||||||
}
|
|
||||||
|
|
||||||
sub Windows_check
|
|
||||||
{
|
|
||||||
# IIS,PWS(NT/95)
|
|
||||||
$www_server_os = $^O;
|
|
||||||
# Win98 & NT(SP4)
|
|
||||||
if($www_server_os eq "") { $www_server_os= $ENV{'OS'}; }
|
|
||||||
# AnHTTPd/Omni/IIS
|
|
||||||
if($ENV{'SERVER_SOFTWARE'} =~ /AnWeb|Omni|IIS\//i) { $www_server_os= 'win'; }
|
|
||||||
# Win Apache
|
|
||||||
if($ENV{'WINDIR'} ne "") { $www_server_os= 'win'; }
|
|
||||||
if($www_server_os=~ /win/i) { return(1); }
|
|
||||||
return(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
sub GetScriptPath {
|
|
||||||
local($path) = @_;
|
|
||||||
if($path =~ /[\:\/\\]/) { $path =~ s/(.*?)[\/\\][^\/\\]+$/$1/; } else { $path = '.'; }
|
|
||||||
$path;
|
|
||||||
}
|
|
||||||
## END: Hack for IIS
|
|
||||||
|
|
||||||
require 'util.pl';
|
|
||||||
require 'io.pl';
|
|
||||||
require 'basexml.pl';
|
|
||||||
require 'commands.pl';
|
|
||||||
require 'upload_fck.pl';
|
|
||||||
|
|
||||||
##
|
|
||||||
# SECURITY: REMOVE/COMMENT THE FOLLOWING LINE TO ENABLE THIS CONNECTOR.
|
|
||||||
##
|
|
||||||
&SendError( 1, 'This connector is disabled. Please check the "editor/filemanager/browser/default/connectors/perl/connector.cgi" file' ) ;
|
|
||||||
|
|
||||||
&read_input();
|
|
||||||
|
|
||||||
if($FORM{'ServerPath'} ne "") {
|
|
||||||
$GLOBALS{'UserFilesPath'} = $FORM{'ServerPath'};
|
|
||||||
if(!($GLOBALS{'UserFilesPath'} =~ /\/$/)) {
|
|
||||||
$GLOBALS{'UserFilesPath'} .= '/' ;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
$GLOBALS{'UserFilesPath'} = '/userfiles/';
|
|
||||||
}
|
|
||||||
|
|
||||||
# Map the "UserFiles" path to a local directory.
|
|
||||||
$rootpath = &GetRootPath();
|
|
||||||
$GLOBALS{'UserFilesDirectory'} = $rootpath . $GLOBALS{'UserFilesPath'};
|
|
||||||
|
|
||||||
&DoResponse();
|
|
||||||
|
|
||||||
sub DoResponse
|
|
||||||
{
|
|
||||||
|
|
||||||
if($FORM{'Command'} eq "" || $FORM{'Type'} eq "" || $FORM{'CurrentFolder'} eq "") {
|
|
||||||
return ;
|
|
||||||
}
|
|
||||||
# Get the main request informaiton.
|
|
||||||
$sCommand = $FORM{'Command'};
|
|
||||||
$sResourceType = $FORM{'Type'};
|
|
||||||
$sCurrentFolder = $FORM{'CurrentFolder'};
|
|
||||||
|
|
||||||
# Check the current folder syntax (must begin and start with a slash).
|
|
||||||
if(!($sCurrentFolder =~ /\/$/)) {
|
|
||||||
$sCurrentFolder .= '/';
|
|
||||||
}
|
|
||||||
if(!($sCurrentFolder =~ /^\//)) {
|
|
||||||
$sCurrentFolder = '/' . $sCurrentFolder;
|
|
||||||
}
|
|
||||||
|
|
||||||
# Check for invalid folder paths (..)
|
|
||||||
if ( $sCurrentFolder =~ /\.\./ ) {
|
|
||||||
SendError( 102, "" ) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
# File Upload doesn't have to Return XML, so it must be intercepted before anything.
|
|
||||||
if($sCommand eq 'FileUpload') {
|
|
||||||
FileUpload($sResourceType,$sCurrentFolder);
|
|
||||||
return ;
|
|
||||||
}
|
|
||||||
|
|
||||||
print << "_HTML_HEAD_";
|
|
||||||
Content-Type:text/xml; charset=utf-8
|
|
||||||
Pragma: no-cache
|
|
||||||
Cache-Control: no-cache
|
|
||||||
Expires: Thu, 01 Dec 1994 16:00:00 GMT
|
|
||||||
|
|
||||||
_HTML_HEAD_
|
|
||||||
|
|
||||||
&CreateXmlHeader($sCommand,$sResourceType,$sCurrentFolder);
|
|
||||||
|
|
||||||
# Execute the required command.
|
|
||||||
if($sCommand eq 'GetFolders') {
|
|
||||||
&GetFolders($sResourceType,$sCurrentFolder);
|
|
||||||
} elsif($sCommand eq 'GetFoldersAndFiles') {
|
|
||||||
&GetFoldersAndFiles($sResourceType,$sCurrentFolder);
|
|
||||||
} elsif($sCommand eq 'CreateFolder') {
|
|
||||||
&CreateFolder($sResourceType,$sCurrentFolder);
|
|
||||||
}
|
|
||||||
|
|
||||||
&CreateXmlFooter();
|
|
||||||
|
|
||||||
exit ;
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1,135 +0,0 @@
|
|||||||
#####
|
|
||||||
# FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
|
||||||
# Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
|
||||||
#
|
|
||||||
# == BEGIN LICENSE ==
|
|
||||||
#
|
|
||||||
# Licensed under the terms of any of the following licenses at your
|
|
||||||
# choice:
|
|
||||||
#
|
|
||||||
# - GNU General Public License Version 2 or later (the "GPL")
|
|
||||||
# http://www.gnu.org/licenses/gpl.html
|
|
||||||
#
|
|
||||||
# - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
|
||||||
# http://www.gnu.org/licenses/lgpl.html
|
|
||||||
#
|
|
||||||
# - Mozilla Public License Version 1.1 or later (the "MPL")
|
|
||||||
# http://www.mozilla.org/MPL/MPL-1.1.html
|
|
||||||
#
|
|
||||||
# == END LICENSE ==
|
|
||||||
#
|
|
||||||
# File Name: io.pl
|
|
||||||
# This is the File Manager Connector for Perl.
|
|
||||||
#
|
|
||||||
# File Authors:
|
|
||||||
# Takashi Yamaguchi (jack@omakase.net)
|
|
||||||
#####
|
|
||||||
|
|
||||||
sub GetUrlFromPath
|
|
||||||
{
|
|
||||||
local($resourceType, $folderPath) = @_;
|
|
||||||
|
|
||||||
if($resourceType eq '') {
|
|
||||||
$rmpath = &RemoveFromEnd($GLOBALS{'UserFilesPath'},'/');
|
|
||||||
return("$rmpath$folderPath");
|
|
||||||
} else {
|
|
||||||
return("$GLOBALS{'UserFilesPath'}$resourceType$folderPath");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
sub RemoveExtension
|
|
||||||
{
|
|
||||||
local($fileName) = @_;
|
|
||||||
local($path, $base, $ext);
|
|
||||||
if($fileName !~ /\./) {
|
|
||||||
$fileName .= '.';
|
|
||||||
}
|
|
||||||
if($fileName =~ /([^\\\/]*)\.(.*)$/) {
|
|
||||||
$base = $1;
|
|
||||||
$ext = $2;
|
|
||||||
if($fileName =~ /(.*)$base\.$ext$/) {
|
|
||||||
$path = $1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return($path,$base,$ext);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
sub ServerMapFolder
|
|
||||||
{
|
|
||||||
local($resourceType,$folderPath) = @_;
|
|
||||||
|
|
||||||
# Get the resource type directory.
|
|
||||||
$sResourceTypePath = $GLOBALS{'UserFilesDirectory'} . $resourceType . '/';
|
|
||||||
|
|
||||||
# Ensure that the directory exists.
|
|
||||||
&CreateServerFolder($sResourceTypePath);
|
|
||||||
|
|
||||||
# Return the resource type directory combined with the required path.
|
|
||||||
$rmpath = &RemoveFromStart($folderPath,'/');
|
|
||||||
return("$sResourceTypePath$rmpath");
|
|
||||||
}
|
|
||||||
|
|
||||||
sub GetParentFolder
|
|
||||||
{
|
|
||||||
local($folderPath) = @_;
|
|
||||||
|
|
||||||
$folderPath =~ s/[\/][^\/]+[\/]?$//g;
|
|
||||||
return $folderPath;
|
|
||||||
}
|
|
||||||
|
|
||||||
sub CreateServerFolder
|
|
||||||
{
|
|
||||||
local($folderPath) = @_;
|
|
||||||
|
|
||||||
$sParent = &GetParentFolder($folderPath);
|
|
||||||
# Check if the parent exists, or create it.
|
|
||||||
if(!(-e $sParent)) {
|
|
||||||
$sErrorMsg = &CreateServerFolder($sParent);
|
|
||||||
if($sErrorMsg == 1) {
|
|
||||||
return(1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(!(-e $folderPath)) {
|
|
||||||
umask(000);
|
|
||||||
mkdir("$folderPath",0777);
|
|
||||||
chmod(0777,"$folderPath");
|
|
||||||
return(0);
|
|
||||||
} else {
|
|
||||||
return(1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
sub GetRootPath
|
|
||||||
{
|
|
||||||
#use Cwd;
|
|
||||||
|
|
||||||
# my $dir = getcwd;
|
|
||||||
# print $dir;
|
|
||||||
# $dir =~ s/$ENV{'DOCUMENT_ROOT'}//g;
|
|
||||||
# print $dir;
|
|
||||||
# return($dir);
|
|
||||||
|
|
||||||
# $wk = $0;
|
|
||||||
# $wk =~ s/\/connector\.cgi//g;
|
|
||||||
# if($wk) {
|
|
||||||
# $current_dir = $wk;
|
|
||||||
# } else {
|
|
||||||
# $current_dir = `pwd`;
|
|
||||||
# }
|
|
||||||
# return($current_dir);
|
|
||||||
use Cwd;
|
|
||||||
|
|
||||||
if($ENV{'DOCUMENT_ROOT'}) {
|
|
||||||
$dir = $ENV{'DOCUMENT_ROOT'};
|
|
||||||
} else {
|
|
||||||
my $dir = getcwd;
|
|
||||||
$workdir =~ s/\/connector\.cgi//g;
|
|
||||||
$dir =~ s/$workdir//g;
|
|
||||||
}
|
|
||||||
return($dir);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
1;
|
|
||||||
@@ -1,671 +0,0 @@
|
|||||||
#####
|
|
||||||
# FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
|
||||||
# Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
|
||||||
#
|
|
||||||
# == BEGIN LICENSE ==
|
|
||||||
#
|
|
||||||
# Licensed under the terms of any of the following licenses at your
|
|
||||||
# choice:
|
|
||||||
#
|
|
||||||
# - GNU General Public License Version 2 or later (the "GPL")
|
|
||||||
# http://www.gnu.org/licenses/gpl.html
|
|
||||||
#
|
|
||||||
# - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
|
||||||
# http://www.gnu.org/licenses/lgpl.html
|
|
||||||
#
|
|
||||||
# - Mozilla Public License Version 1.1 or later (the "MPL")
|
|
||||||
# http://www.mozilla.org/MPL/MPL-1.1.html
|
|
||||||
#
|
|
||||||
# == END LICENSE ==
|
|
||||||
#
|
|
||||||
# File Name: upload_fck.pl
|
|
||||||
# This is the File Manager Connector for Perl.
|
|
||||||
#
|
|
||||||
# File Authors:
|
|
||||||
# Takashi Yamaguchi (jack@omakase.net)
|
|
||||||
#####
|
|
||||||
|
|
||||||
# image data save dir
|
|
||||||
$img_dir = './temp/';
|
|
||||||
|
|
||||||
|
|
||||||
# File size max(unit KB)
|
|
||||||
$MAX_CONTENT_SIZE = 30000;
|
|
||||||
|
|
||||||
# Filelock (1=use,0=not use)
|
|
||||||
$PM{'flock'} = '1';
|
|
||||||
|
|
||||||
|
|
||||||
# upload Content-Type list
|
|
||||||
my %UPLOAD_CONTENT_TYPE_LIST = (
|
|
||||||
'image/(x-)?png' => 'png', # PNG image
|
|
||||||
'image/p?jpe?g' => 'jpg', # JPEG image
|
|
||||||
'image/gif' => 'gif', # GIF image
|
|
||||||
'image/x-xbitmap' => 'xbm', # XBM image
|
|
||||||
|
|
||||||
'image/(x-(MS-)?)?bmp' => 'bmp', # Windows BMP image
|
|
||||||
'image/pict' => 'pict', # Macintosh PICT image
|
|
||||||
'image/tiff' => 'tif', # TIFF image
|
|
||||||
'application/pdf' => 'pdf', # PDF image
|
|
||||||
'application/x-shockwave-flash' => 'swf', # Shockwave Flash
|
|
||||||
|
|
||||||
'video/(x-)?msvideo' => 'avi', # Microsoft Video
|
|
||||||
'video/quicktime' => 'mov', # QuickTime Video
|
|
||||||
'video/mpeg' => 'mpeg', # MPEG Video
|
|
||||||
'video/x-mpeg2' => 'mpv2', # MPEG2 Video
|
|
||||||
|
|
||||||
'audio/(x-)?midi?' => 'mid', # MIDI Audio
|
|
||||||
'audio/(x-)?wav' => 'wav', # WAV Audio
|
|
||||||
'audio/basic' => 'au', # ULAW Audio
|
|
||||||
'audio/mpeg' => 'mpga', # MPEG Audio
|
|
||||||
|
|
||||||
'application/(x-)?zip(-compressed)?' => 'zip', # ZIP Compress
|
|
||||||
|
|
||||||
'text/html' => 'html', # HTML
|
|
||||||
'text/plain' => 'txt', # TEXT
|
|
||||||
'(?:application|text)/(?:rtf|richtext)' => 'rtf', # RichText
|
|
||||||
|
|
||||||
'application/msword' => 'doc', # Microsoft Word
|
|
||||||
'application/vnd.ms-excel' => 'xls', # Microsoft Excel
|
|
||||||
|
|
||||||
''
|
|
||||||
);
|
|
||||||
|
|
||||||
# Upload is permitted.
|
|
||||||
# A regular expression is possible.
|
|
||||||
my %UPLOAD_EXT_LIST = (
|
|
||||||
'png' => 'PNG image',
|
|
||||||
'p?jpe?g|jpe|jfif|pjp' => 'JPEG image',
|
|
||||||
'gif' => 'GIF image',
|
|
||||||
'xbm' => 'XBM image',
|
|
||||||
|
|
||||||
'bmp|dib|rle' => 'Windows BMP image',
|
|
||||||
'pi?ct' => 'Macintosh PICT image',
|
|
||||||
'tiff?' => 'TIFF image',
|
|
||||||
'pdf' => 'PDF image',
|
|
||||||
'swf' => 'Shockwave Flash',
|
|
||||||
|
|
||||||
'avi' => 'Microsoft Video',
|
|
||||||
'moo?v|qt' => 'QuickTime Video',
|
|
||||||
'm(p(e?gv?|e|v)|1v)' => 'MPEG Video',
|
|
||||||
'mp(v2|2v)' => 'MPEG2 Video',
|
|
||||||
|
|
||||||
'midi?|kar|smf|rmi|mff' => 'MIDI Audio',
|
|
||||||
'wav' => 'WAVE Audio',
|
|
||||||
'au|snd' => 'ULAW Audio',
|
|
||||||
'mp(e?ga|2|a|3)|abs' => 'MPEG Audio',
|
|
||||||
|
|
||||||
'zip' => 'ZIP Compress',
|
|
||||||
'lzh' => 'LZH Compress',
|
|
||||||
'cab' => 'CAB Compress',
|
|
||||||
|
|
||||||
'd?html?' => 'HTML',
|
|
||||||
'rtf|rtx' => 'RichText',
|
|
||||||
'txt|text' => 'Text',
|
|
||||||
|
|
||||||
''
|
|
||||||
);
|
|
||||||
|
|
||||||
|
|
||||||
# sjis or euc
|
|
||||||
my $CHARCODE = 'sjis';
|
|
||||||
|
|
||||||
$TRANS_2BYTE_CODE = 0;
|
|
||||||
|
|
||||||
##############################################################################
|
|
||||||
# Summary
|
|
||||||
#
|
|
||||||
# Form Read input
|
|
||||||
#
|
|
||||||
# Parameters
|
|
||||||
# Returns
|
|
||||||
# Memo
|
|
||||||
##############################################################################
|
|
||||||
sub read_input
|
|
||||||
{
|
|
||||||
eval("use File::Copy;");
|
|
||||||
eval("use File::Path;");
|
|
||||||
|
|
||||||
my ($FORM) = @_;
|
|
||||||
|
|
||||||
|
|
||||||
mkdir($img_dir,0777);
|
|
||||||
chmod(0777,$img_dir);
|
|
||||||
|
|
||||||
undef $img_data_exists;
|
|
||||||
undef @NEWFNAMES;
|
|
||||||
undef @NEWFNAME_DATA;
|
|
||||||
|
|
||||||
if($ENV{'CONTENT_LENGTH'} > 10000000 || $ENV{'CONTENT_LENGTH'} > $MAX_CONTENT_SIZE * 1024) {
|
|
||||||
&upload_error(
|
|
||||||
'Size Error',
|
|
||||||
sprintf(
|
|
||||||
"Transmitting size is too large.MAX <strong>%d KB</strong> Now Size <strong>%d KB</strong>(<strong>%d bytes</strong> Over)",
|
|
||||||
$MAX_CONTENT_SIZE,
|
|
||||||
int($ENV{'CONTENT_LENGTH'} / 1024),
|
|
||||||
$ENV{'CONTENT_LENGTH'} - $MAX_CONTENT_SIZE * 1024
|
|
||||||
)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
my $Buffer;
|
|
||||||
if($ENV{'CONTENT_TYPE'} =~ /multipart\/form-data/) {
|
|
||||||
# METHOD POST only
|
|
||||||
return unless($ENV{'CONTENT_LENGTH'});
|
|
||||||
|
|
||||||
binmode(STDIN);
|
|
||||||
# STDIN A pause character is detected.'(MacIE3.0 boundary of $ENV{'CONTENT_TYPE'} cannot be trusted.)
|
|
||||||
my $Boundary = <STDIN>;
|
|
||||||
$Boundary =~ s/\x0D\x0A//;
|
|
||||||
$Boundary = quotemeta($Boundary);
|
|
||||||
while(<STDIN>) {
|
|
||||||
if(/^\s*Content-Disposition:/i) {
|
|
||||||
my($name,$ContentType,$FileName);
|
|
||||||
# form data get
|
|
||||||
if(/\bname="([^"]+)"/i || /\bname=([^\s:;]+)/i) {
|
|
||||||
$name = $1;
|
|
||||||
$name =~ tr/+/ /;
|
|
||||||
$name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
|
|
||||||
&Encode(\$name);
|
|
||||||
}
|
|
||||||
if(/\bfilename="([^"]*)"/i || /\bfilename=([^\s:;]*)/i) {
|
|
||||||
$FileName = $1 || 'unknown';
|
|
||||||
}
|
|
||||||
# head read
|
|
||||||
while(<STDIN>) {
|
|
||||||
last if(! /\w/);
|
|
||||||
if(/^\s*Content-Type:\s*"([^"]+)"/i || /^\s*Content-Type:\s*([^\s:;]+)/i) {
|
|
||||||
$ContentType = $1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
# body read
|
|
||||||
$value = "";
|
|
||||||
while(<STDIN>) {
|
|
||||||
last if(/^$Boundary/o);
|
|
||||||
$value .= $_;
|
|
||||||
};
|
|
||||||
$lastline = $_;
|
|
||||||
$value =~s /\x0D\x0A$//;
|
|
||||||
if($value ne '') {
|
|
||||||
if($FileName || $ContentType) {
|
|
||||||
$img_data_exists = 1;
|
|
||||||
(
|
|
||||||
$FileName, #
|
|
||||||
$Ext, #
|
|
||||||
$Length, #
|
|
||||||
$ImageWidth, #
|
|
||||||
$ImageHeight, #
|
|
||||||
$ContentName #
|
|
||||||
) = &CheckContentType(\$value,$FileName,$ContentType);
|
|
||||||
|
|
||||||
$FORM{$name} = $FileName;
|
|
||||||
$new_fname = $FileName;
|
|
||||||
push(@NEWFNAME_DATA,"$FileName\t$Ext\t$Length\t$ImageWidth\t$ImageHeight\t$ContentName");
|
|
||||||
|
|
||||||
# Multi-upload correspondence
|
|
||||||
push(@NEWFNAMES,$new_fname);
|
|
||||||
open(OUT,">$img_dir/$new_fname");
|
|
||||||
binmode(OUT);
|
|
||||||
eval "flock(OUT,2);" if($PM{'flock'} == 1);
|
|
||||||
print OUT $value;
|
|
||||||
eval "flock(OUT,8);" if($PM{'flock'} == 1);
|
|
||||||
close(OUT);
|
|
||||||
|
|
||||||
} elsif($name) {
|
|
||||||
$value =~ tr/+/ /;
|
|
||||||
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
|
|
||||||
&Encode(\$value,'trans');
|
|
||||||
$FORM{$name} .= "\0" if(defined($FORM{$name}));
|
|
||||||
$FORM{$name} .= $value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
last if($lastline =~ /^$Boundary\-\-/o);
|
|
||||||
}
|
|
||||||
} elsif($ENV{'CONTENT_LENGTH'}) {
|
|
||||||
read(STDIN,$Buffer,$ENV{'CONTENT_LENGTH'});
|
|
||||||
}
|
|
||||||
foreach(split(/&/,$Buffer),split(/&/,$ENV{'QUERY_STRING'})) {
|
|
||||||
my($name, $value) = split(/=/);
|
|
||||||
$name =~ tr/+/ /;
|
|
||||||
$name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
|
|
||||||
$value =~ tr/+/ /;
|
|
||||||
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
|
|
||||||
|
|
||||||
&Encode(\$name);
|
|
||||||
&Encode(\$value,'trans');
|
|
||||||
$FORM{$name} .= "\0" if(defined($FORM{$name}));
|
|
||||||
$FORM{$name} .= $value;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
##############################################################################
|
|
||||||
# Summary
|
|
||||||
#
|
|
||||||
# CheckContentType
|
|
||||||
#
|
|
||||||
# Parameters
|
|
||||||
# Returns
|
|
||||||
# Memo
|
|
||||||
##############################################################################
|
|
||||||
sub CheckContentType
|
|
||||||
{
|
|
||||||
|
|
||||||
my($DATA,$FileName,$ContentType) = @_;
|
|
||||||
my($Ext,$ImageWidth,$ImageHeight,$ContentName,$Infomation);
|
|
||||||
my $DataLength = length($$DATA);
|
|
||||||
|
|
||||||
# An unknown file type
|
|
||||||
|
|
||||||
$_ = $ContentType;
|
|
||||||
my $UnknownType = (
|
|
||||||
!$_
|
|
||||||
|| /^application\/(x-)?macbinary$/i
|
|
||||||
|| /^application\/applefile$/i
|
|
||||||
|| /^application\/octet-stream$/i
|
|
||||||
|| /^text\/plane$/i
|
|
||||||
|| /^x-unknown-content-type/i
|
|
||||||
);
|
|
||||||
|
|
||||||
# MacBinary(Mac Unnecessary data are deleted.)
|
|
||||||
if($UnknownType || $ENV{'HTTP_USER_AGENT'} =~ /Macintosh|Mac_/) {
|
|
||||||
if($DataLength > 128 && !unpack("C",substr($$DATA,0,1)) && !unpack("C",substr($$DATA,74,1)) && !unpack("C",substr($$DATA,82,1)) ) {
|
|
||||||
my $MacBinary_ForkLength = unpack("N", substr($$DATA, 83, 4)); # ForkLength Get
|
|
||||||
my $MacBinary_FileName = quotemeta(substr($$DATA, 2, unpack("C",substr($$DATA, 1, 1))));
|
|
||||||
if($MacBinary_FileName && $MacBinary_ForkLength && $DataLength >= $MacBinary_ForkLength + 128
|
|
||||||
&& ($FileName =~ /$MacBinary_FileName/i || substr($$DATA,102,4) eq 'mBIN')) { # DATA TOP 128byte MacBinary!!
|
|
||||||
$$DATA = substr($$DATA,128,$MacBinary_ForkLength);
|
|
||||||
my $ResourceLength = $DataLength - $MacBinary_ForkLength - 128;
|
|
||||||
$DataLength = $MacBinary_ForkLength;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
# A file name is changed into EUC.
|
|
||||||
# &jcode::convert(\$FileName,'euc',$FormCodeDefault);
|
|
||||||
# &jcode::h2z_euc(\$FileName);
|
|
||||||
$FileName =~ s/^.*\\//; # Windows, Mac
|
|
||||||
$FileName =~ s/^.*\///; # UNIX
|
|
||||||
$FileName =~ s/&/&/g;
|
|
||||||
$FileName =~ s/"/"/g;
|
|
||||||
$FileName =~ s/</</g;
|
|
||||||
$FileName =~ s/>/>/g;
|
|
||||||
#
|
|
||||||
# if($CHARCODE ne 'euc') {
|
|
||||||
# &jcode::convert(\$FileName,$CHARCODE,'euc');
|
|
||||||
# }
|
|
||||||
|
|
||||||
# An extension is extracted and it changes into a small letter.
|
|
||||||
my $FileExt;
|
|
||||||
if($FileName =~ /\.(\w+)$/) {
|
|
||||||
$FileExt = $1;
|
|
||||||
$FileExt =~ tr/A-Z/a-z/;
|
|
||||||
}
|
|
||||||
|
|
||||||
# Executable file detection (ban on upload)
|
|
||||||
if($$DATA =~ /^MZ/) {
|
|
||||||
$Ext = 'exe';
|
|
||||||
}
|
|
||||||
# text
|
|
||||||
if(!$Ext && ($UnknownType || $ContentType =~ /^text\//i || $ContentType =~ /^application\/(?:rtf|richtext)$/i || $ContentType =~ /^image\/x-xbitmap$/i)
|
|
||||||
&& ! $$DATA =~ /[\000-\006\177\377]/) {
|
|
||||||
# $$DATA =~ s/\x0D\x0A/\n/g;
|
|
||||||
# $$DATA =~ tr/\x0D\x0A/\n\n/;
|
|
||||||
#
|
|
||||||
# if(
|
|
||||||
# $$DATA =~ /<\s*SCRIPT(?:.|\n)*?>/i
|
|
||||||
# || $$DATA =~ /<\s*(?:.|\n)*?\bONLOAD\s*=(?:.|\n)*?>/i
|
|
||||||
# || $$DATA =~ /<\s*(?:.|\n)*?\bONCLICK\s*=(?:.|\n)*?>/i
|
|
||||||
# ) {
|
|
||||||
# $Infomation = '(JavaScript contains)';
|
|
||||||
# }
|
|
||||||
# if($$DATA =~ /<\s*TABLE(?:.|\n)*?>/i
|
|
||||||
# || $$DATA =~ /<\s*BLINK(?:.|\n)*?>/i
|
|
||||||
# || $$DATA =~ /<\s*MARQUEE(?:.|\n)*?>/i
|
|
||||||
# || $$DATA =~ /<\s*OBJECT(?:.|\n)*?>/i
|
|
||||||
# || $$DATA =~ /<\s*EMBED(?:.|\n)*?>/i
|
|
||||||
# || $$DATA =~ /<\s*FRAME(?:.|\n)*?>/i
|
|
||||||
# || $$DATA =~ /<\s*APPLET(?:.|\n)*?>/i
|
|
||||||
# || $$DATA =~ /<\s*FORM(?:.|\n)*?>/i
|
|
||||||
# || $$DATA =~ /<\s*(?:.|\n)*?\bSRC\s*=(?:.|\n)*?>/i
|
|
||||||
# || $$DATA =~ /<\s*(?:.|\n)*?\bDYNSRC\s*=(?:.|\n)*?>/i
|
|
||||||
# ) {
|
|
||||||
# $Infomation = '(the HTML tag which is not safe is included)';
|
|
||||||
# }
|
|
||||||
|
|
||||||
if($FileExt =~ /^txt$/i || $FileExt =~ /^cgi$/i || $FileExt =~ /^pl$/i) { # Text File
|
|
||||||
$Ext = 'txt';
|
|
||||||
} elsif($ContentType =~ /^text\/html$/i || $FileExt =~ /html?/i || $$DATA =~ /<\s*HTML(?:.|\n)*?>/i) { # HTML File
|
|
||||||
$Ext = 'html';
|
|
||||||
} elsif($ContentType =~ /^image\/x-xbitmap$/i || $FileExt =~ /^xbm$/i) { # XBM(x-BitMap) Image
|
|
||||||
my $XbmName = $1;
|
|
||||||
my ($XbmWidth, $XbmHeight);
|
|
||||||
if($$DATA =~ /\#define\s*$XbmName\_width\s*(\d+)/i) {
|
|
||||||
$XbmWidth = $1;
|
|
||||||
}
|
|
||||||
if($$DATA =~ /\#define\s*$XbmName\_height\s*(\d+)/i) {
|
|
||||||
$XbmHeight = $1;
|
|
||||||
}
|
|
||||||
if($XbmWidth && $XbmHeight) {
|
|
||||||
$Ext = 'xbm';
|
|
||||||
$ImageWidth = $XbmWidth;
|
|
||||||
$ImageHeight = $XbmHeight;
|
|
||||||
}
|
|
||||||
} else { #
|
|
||||||
$Ext = 'txt';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
# image
|
|
||||||
if(!$Ext && ($UnknownType || $ContentType =~ /^image\//i)) {
|
|
||||||
# PNG
|
|
||||||
if($$DATA =~ /^\x89PNG\x0D\x0A\x1A\x0A/) {
|
|
||||||
if(substr($$DATA, 12, 4) eq 'IHDR') {
|
|
||||||
$Ext = 'png';
|
|
||||||
($ImageWidth, $ImageHeight) = unpack("N2", substr($$DATA, 16, 8));
|
|
||||||
}
|
|
||||||
} elsif($$DATA =~ /^GIF8(?:9|7)a/) { # GIF89a(modified), GIF89a, GIF87a
|
|
||||||
$Ext = 'gif';
|
|
||||||
($ImageWidth, $ImageHeight) = unpack("v2", substr($$DATA, 6, 4));
|
|
||||||
} elsif($$DATA =~ /^II\x2a\x00\x08\x00\x00\x00/ || $$DATA =~ /^MM\x00\x2a\x00\x00\x00\x08/) { # TIFF
|
|
||||||
$Ext = 'tif';
|
|
||||||
} elsif($$DATA =~ /^BM/) { # BMP
|
|
||||||
$Ext = 'bmp';
|
|
||||||
} elsif($$DATA =~ /^\xFF\xD8\xFF/ || $$DATA =~ /JFIF/) { # JPEG
|
|
||||||
my $HeaderPoint = index($$DATA, "\xFF\xD8\xFF", 0);
|
|
||||||
my $Point = $HeaderPoint + 2;
|
|
||||||
while($Point < $DataLength) {
|
|
||||||
my($Maker, $MakerType, $MakerLength) = unpack("C2n",substr($$DATA,$Point,4));
|
|
||||||
if($Maker != 0xFF || $MakerType == 0xd9 || $MakerType == 0xda) {
|
|
||||||
last;
|
|
||||||
} elsif($MakerType >= 0xC0 && $MakerType <= 0xC3) {
|
|
||||||
$Ext = 'jpg';
|
|
||||||
($ImageHeight, $ImageWidth) = unpack("n2", substr($$DATA, $Point + 5, 4));
|
|
||||||
if($HeaderPoint > 0) {
|
|
||||||
$$DATA = substr($$DATA, $HeaderPoint);
|
|
||||||
$DataLength = length($$DATA);
|
|
||||||
}
|
|
||||||
last;
|
|
||||||
} else {
|
|
||||||
$Point += $MakerLength + 2;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
# audio
|
|
||||||
if(!$Ext && ($UnknownType || $ContentType =~ /^audio\//i)) {
|
|
||||||
# MIDI Audio
|
|
||||||
if($$DATA =~ /^MThd/) {
|
|
||||||
$Ext = 'mid';
|
|
||||||
} elsif($$DATA =~ /^\x2esnd/) { # ULAW Audio
|
|
||||||
$Ext = 'au';
|
|
||||||
} elsif($$DATA =~ /^RIFF/ || $$DATA =~ /^ID3/ && $$DATA =~ /RIFF/) {
|
|
||||||
my $HeaderPoint = index($$DATA, "RIFF", 0);
|
|
||||||
$_ = substr($$DATA, $HeaderPoint + 8, 8);
|
|
||||||
if(/^WAVEfmt $/) {
|
|
||||||
# WAVE
|
|
||||||
if(unpack("V",substr($$DATA, $HeaderPoint + 16, 4)) == 16) {
|
|
||||||
$Ext = 'wav';
|
|
||||||
} else { # RIFF WAVE MP3
|
|
||||||
$Ext = 'mp3';
|
|
||||||
}
|
|
||||||
} elsif(/^RMIDdata$/) { # RIFF MIDI
|
|
||||||
$Ext = 'rmi';
|
|
||||||
} elsif(/^RMP3data$/) { # RIFF MP3
|
|
||||||
$Ext = 'rmp';
|
|
||||||
}
|
|
||||||
if($ContentType =~ /^audio\//i) {
|
|
||||||
$Infomation .= '(RIFF '. substr($$DATA, $HeaderPoint + 8, 4). ')';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
# a binary file
|
|
||||||
unless ($Ext) {
|
|
||||||
# PDF image
|
|
||||||
if($$DATA =~ /^\%PDF/) {
|
|
||||||
# Picture size is not measured.
|
|
||||||
$Ext = 'pdf';
|
|
||||||
} elsif($$DATA =~ /^FWS/) { # Shockwave Flash
|
|
||||||
$Ext = 'swf';
|
|
||||||
} elsif($$DATA =~ /^RIFF/ || $$DATA =~ /^ID3/ && $$DATA =~ /RIFF/) {
|
|
||||||
my $HeaderPoint = index($$DATA, "RIFF", 0);
|
|
||||||
$_ = substr($$DATA,$HeaderPoint + 8, 8);
|
|
||||||
# AVI
|
|
||||||
if(/^AVI LIST$/) {
|
|
||||||
$Ext = 'avi';
|
|
||||||
}
|
|
||||||
if($ContentType =~ /^video\//i) {
|
|
||||||
$Infomation .= '(RIFF '. substr($$DATA, $HeaderPoint + 8, 4). ')';
|
|
||||||
}
|
|
||||||
} elsif($$DATA =~ /^PK/) { # ZIP Compress File
|
|
||||||
$Ext = 'zip';
|
|
||||||
} elsif($$DATA =~ /^MSCF/) { # CAB Compress File
|
|
||||||
$Ext = 'cab';
|
|
||||||
} elsif($$DATA =~ /^Rar\!/) { # RAR Compress File
|
|
||||||
$Ext = 'rar';
|
|
||||||
} elsif(substr($$DATA, 2, 5) =~ /^\-lh(\d+|d)\-$/) { # LHA Compress File
|
|
||||||
$Infomation .= "(lh$1)";
|
|
||||||
$Ext = 'lzh';
|
|
||||||
} elsif(substr($$DATA, 325, 25) eq "Apple Video Media Handler" || substr($$DATA, 325, 30) eq "Apple \x83\x72\x83\x66\x83\x49\x81\x45\x83\x81\x83\x66\x83\x42\x83\x41\x83\x6E\x83\x93\x83\x68\x83\x89") {
|
|
||||||
# QuickTime
|
|
||||||
$Ext = 'mov';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
# Header analysis failure
|
|
||||||
unless ($Ext) {
|
|
||||||
# It will be followed if it applies for the MIME type from the browser.
|
|
||||||
foreach (keys %UPLOAD_CONTENT_TYPE_LIST) {
|
|
||||||
next unless ($_);
|
|
||||||
if($ContentType =~ /^$_$/i) {
|
|
||||||
$Ext = $UPLOAD_CONTENT_TYPE_LIST{$_};
|
|
||||||
$ContentName = &CheckContentExt($Ext);
|
|
||||||
if(
|
|
||||||
grep {$_ eq $Ext;} (
|
|
||||||
'png',
|
|
||||||
'gif',
|
|
||||||
'jpg',
|
|
||||||
'xbm',
|
|
||||||
'tif',
|
|
||||||
'bmp',
|
|
||||||
'pdf',
|
|
||||||
'swf',
|
|
||||||
'mov',
|
|
||||||
'zip',
|
|
||||||
'cab',
|
|
||||||
'lzh',
|
|
||||||
'rar',
|
|
||||||
'mid',
|
|
||||||
'rmi',
|
|
||||||
'au',
|
|
||||||
'wav',
|
|
||||||
'avi',
|
|
||||||
'exe'
|
|
||||||
)
|
|
||||||
) {
|
|
||||||
$Infomation .= ' / Header analysis failure';
|
|
||||||
}
|
|
||||||
if($Ext ne $FileExt && &CheckContentExt($FileExt) eq $ContentName) {
|
|
||||||
$Ext = $FileExt;
|
|
||||||
}
|
|
||||||
last;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
# a MIME type is unknown--It judges from an extension.
|
|
||||||
unless ($Ext) {
|
|
||||||
$ContentName = &CheckContentExt($FileExt);
|
|
||||||
if($ContentName) {
|
|
||||||
$Ext = $FileExt;
|
|
||||||
$Infomation .= ' / MIME type is unknown('. $ContentType. ')';
|
|
||||||
last;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
# $ContentName = &CheckContentExt($Ext) unless($ContentName);
|
|
||||||
# if($Ext && $ContentName) {
|
|
||||||
# $ContentName .= $Infomation;
|
|
||||||
# } else {
|
|
||||||
# &upload_error(
|
|
||||||
# 'Extension Error',
|
|
||||||
# "$FileName A not corresponding extension ($Ext)<BR>The extension which can be responded ". join(',', sort values(%UPLOAD_EXT_LIST))
|
|
||||||
# );
|
|
||||||
# }
|
|
||||||
|
|
||||||
# # SSI Tag Deletion
|
|
||||||
# if($Ext =~ /.?html?/ && $$DATA =~ /<\!/) {
|
|
||||||
# foreach (
|
|
||||||
# 'config',
|
|
||||||
# 'echo',
|
|
||||||
# 'exec',
|
|
||||||
# 'flastmod',
|
|
||||||
# 'fsize',
|
|
||||||
# 'include'
|
|
||||||
# ) {
|
|
||||||
# $$DATA =~ s/\#\s*$_/\&\#35\;$_/ig
|
|
||||||
# }
|
|
||||||
# }
|
|
||||||
|
|
||||||
return (
|
|
||||||
$FileName,
|
|
||||||
$Ext,
|
|
||||||
int($DataLength / 1024 + 1),
|
|
||||||
$ImageWidth,
|
|
||||||
$ImageHeight,
|
|
||||||
$ContentName
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
##############################################################################
|
|
||||||
# Summary
|
|
||||||
#
|
|
||||||
# Extension discernment
|
|
||||||
#
|
|
||||||
# Parameters
|
|
||||||
# Returns
|
|
||||||
# Memo
|
|
||||||
##############################################################################
|
|
||||||
|
|
||||||
sub CheckContentExt
|
|
||||||
{
|
|
||||||
|
|
||||||
my($Ext) = @_;
|
|
||||||
my $ContentName;
|
|
||||||
foreach (keys %UPLOAD_EXT_LIST) {
|
|
||||||
next unless ($_);
|
|
||||||
if($_ && $Ext =~ /^$_$/) {
|
|
||||||
$ContentName = $UPLOAD_EXT_LIST{$_};
|
|
||||||
last;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return $ContentName;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
##############################################################################
|
|
||||||
# Summary
|
|
||||||
#
|
|
||||||
# Form decode
|
|
||||||
#
|
|
||||||
# Parameters
|
|
||||||
# Returns
|
|
||||||
# Memo
|
|
||||||
##############################################################################
|
|
||||||
sub Encode
|
|
||||||
{
|
|
||||||
|
|
||||||
my($value,$Trans) = @_;
|
|
||||||
|
|
||||||
# my $FormCode = &jcode::getcode($value) || $FormCodeDefault;
|
|
||||||
# $FormCodeDefault ||= $FormCode;
|
|
||||||
#
|
|
||||||
# if($Trans && $TRANS_2BYTE_CODE) {
|
|
||||||
# if($FormCode ne 'euc') {
|
|
||||||
# &jcode::convert($value, 'euc', $FormCode);
|
|
||||||
# }
|
|
||||||
# &jcode::tr(
|
|
||||||
# $value,
|
|
||||||
# "\xA3\xB0-\xA3\xB9\xA3\xC1-\xA3\xDA\xA3\xE1-\xA3\xFA",
|
|
||||||
# '0-9A-Za-z'
|
|
||||||
# );
|
|
||||||
# if($CHARCODE ne 'euc') {
|
|
||||||
# &jcode::convert($value,$CHARCODE,'euc');
|
|
||||||
# }
|
|
||||||
# } else {
|
|
||||||
# if($CHARCODE ne $FormCode) {
|
|
||||||
# &jcode::convert($value,$CHARCODE,$FormCode);
|
|
||||||
# }
|
|
||||||
# }
|
|
||||||
# if($CHARCODE eq 'euc') {
|
|
||||||
# &jcode::h2z_euc($value);
|
|
||||||
# } elsif($CHARCODE eq 'sjis') {
|
|
||||||
# &jcode::h2z_sjis($value);
|
|
||||||
# }
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
##############################################################################
|
|
||||||
# Summary
|
|
||||||
#
|
|
||||||
# Error Msg
|
|
||||||
#
|
|
||||||
# Parameters
|
|
||||||
# Returns
|
|
||||||
# Memo
|
|
||||||
##############################################################################
|
|
||||||
|
|
||||||
sub upload_error
|
|
||||||
{
|
|
||||||
|
|
||||||
local($error_message) = $_[0];
|
|
||||||
local($error_message2) = $_[1];
|
|
||||||
|
|
||||||
print "Content-type: text/html\n\n";
|
|
||||||
print<<EOF;
|
|
||||||
<HTML>
|
|
||||||
<HEAD>
|
|
||||||
<TITLE>Error Message</TITLE></HEAD>
|
|
||||||
<BODY>
|
|
||||||
<table border="1" cellspacing="10" cellpadding="10">
|
|
||||||
<TR bgcolor="#0000B0">
|
|
||||||
<TD bgcolor="#0000B0" NOWRAP><font size="-1" color="white"><B>Error Message</B></font></TD>
|
|
||||||
</TR>
|
|
||||||
</table>
|
|
||||||
<UL>
|
|
||||||
<H4> $error_message </H4>
|
|
||||||
$error_message2 <BR>
|
|
||||||
</UL>
|
|
||||||
</BODY>
|
|
||||||
</HTML>
|
|
||||||
EOF
|
|
||||||
&rm_tmp_uploaded_files; # Image Temporary deletion
|
|
||||||
exit;
|
|
||||||
}
|
|
||||||
|
|
||||||
##############################################################################
|
|
||||||
# Summary
|
|
||||||
#
|
|
||||||
# Image Temporary deletion
|
|
||||||
#
|
|
||||||
# Parameters
|
|
||||||
# Returns
|
|
||||||
# Memo
|
|
||||||
##############################################################################
|
|
||||||
|
|
||||||
sub rm_tmp_uploaded_files
|
|
||||||
{
|
|
||||||
if($img_data_exists == 1){
|
|
||||||
sleep 1;
|
|
||||||
foreach $fname_list(@NEWFNAMES) {
|
|
||||||
if(-e "$img_dir/$fname_list") {
|
|
||||||
unlink("$img_dir/$fname_list");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
1;
|
|
||||||
@@ -1,64 +0,0 @@
|
|||||||
#####
|
|
||||||
# FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
|
||||||
# Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
|
||||||
#
|
|
||||||
# == BEGIN LICENSE ==
|
|
||||||
#
|
|
||||||
# Licensed under the terms of any of the following licenses at your
|
|
||||||
# choice:
|
|
||||||
#
|
|
||||||
# - GNU General Public License Version 2 or later (the "GPL")
|
|
||||||
# http://www.gnu.org/licenses/gpl.html
|
|
||||||
#
|
|
||||||
# - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
|
||||||
# http://www.gnu.org/licenses/lgpl.html
|
|
||||||
#
|
|
||||||
# - Mozilla Public License Version 1.1 or later (the "MPL")
|
|
||||||
# http://www.mozilla.org/MPL/MPL-1.1.html
|
|
||||||
#
|
|
||||||
# == END LICENSE ==
|
|
||||||
#
|
|
||||||
# File Name: util.pl
|
|
||||||
# This is the File Manager Connector for Perl.
|
|
||||||
#
|
|
||||||
# File Authors:
|
|
||||||
# Takashi Yamaguchi (jack@omakase.net)
|
|
||||||
#####
|
|
||||||
|
|
||||||
sub RemoveFromStart
|
|
||||||
{
|
|
||||||
local($sourceString, $charToRemove) = @_;
|
|
||||||
$sPattern = '^' . $charToRemove . '+' ;
|
|
||||||
$sourceString =~ s/^$charToRemove+//g;
|
|
||||||
return $sourceString;
|
|
||||||
}
|
|
||||||
|
|
||||||
sub RemoveFromEnd
|
|
||||||
{
|
|
||||||
local($sourceString, $charToRemove) = @_;
|
|
||||||
$sPattern = $charToRemove . '+$' ;
|
|
||||||
$sourceString =~ s/$charToRemove+$//g;
|
|
||||||
return $sourceString;
|
|
||||||
}
|
|
||||||
|
|
||||||
sub ConvertToXmlAttribute
|
|
||||||
{
|
|
||||||
local($value) = @_;
|
|
||||||
return $value;
|
|
||||||
# return utf8_encode(htmlspecialchars($value));
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
sub specialchar_cnv
|
|
||||||
{
|
|
||||||
local($ch) = @_;
|
|
||||||
|
|
||||||
$ch =~ s/&/&/g; # &
|
|
||||||
$ch =~ s/\"/"/g; #"
|
|
||||||
$ch =~ s/\'/'/g; # '
|
|
||||||
$ch =~ s/</</g; # <
|
|
||||||
$ch =~ s/>/>/g; # >
|
|
||||||
return($ch);
|
|
||||||
}
|
|
||||||
|
|
||||||
1;
|
|
||||||
@@ -1,79 +0,0 @@
|
|||||||
<?php
|
|
||||||
/*
|
|
||||||
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
|
||||||
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
|
||||||
*
|
|
||||||
* == BEGIN LICENSE ==
|
|
||||||
*
|
|
||||||
* Licensed under the terms of any of the following licenses at your
|
|
||||||
* choice:
|
|
||||||
*
|
|
||||||
* - GNU General Public License Version 2 or later (the "GPL")
|
|
||||||
* http://www.gnu.org/licenses/gpl.html
|
|
||||||
*
|
|
||||||
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
|
||||||
* http://www.gnu.org/licenses/lgpl.html
|
|
||||||
*
|
|
||||||
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
|
||||||
* http://www.mozilla.org/MPL/MPL-1.1.html
|
|
||||||
*
|
|
||||||
* == END LICENSE ==
|
|
||||||
*
|
|
||||||
* File Name: basexml.php
|
|
||||||
* These functions define the base of the XML response sent by the PHP
|
|
||||||
* connector.
|
|
||||||
*
|
|
||||||
* File Authors:
|
|
||||||
* Frederico Caldeira Knabben (www.fckeditor.net)
|
|
||||||
*/
|
|
||||||
|
|
||||||
function SetXmlHeaders()
|
|
||||||
{
|
|
||||||
ob_end_clean() ;
|
|
||||||
|
|
||||||
// Prevent the browser from caching the result.
|
|
||||||
// Date in the past
|
|
||||||
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT') ;
|
|
||||||
// always modified
|
|
||||||
header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT') ;
|
|
||||||
// HTTP/1.1
|
|
||||||
header('Cache-Control: no-store, no-cache, must-revalidate') ;
|
|
||||||
header('Cache-Control: post-check=0, pre-check=0', false) ;
|
|
||||||
// HTTP/1.0
|
|
||||||
header('Pragma: no-cache') ;
|
|
||||||
|
|
||||||
// Set the response format.
|
|
||||||
header( 'Content-Type:text/xml; charset=utf-8' ) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
function CreateXmlHeader( $command, $resourceType, $currentFolder )
|
|
||||||
{
|
|
||||||
SetXmlHeaders() ;
|
|
||||||
|
|
||||||
// Create the XML document header.
|
|
||||||
echo '<?xml version="1.0" encoding="utf-8" ?>' ;
|
|
||||||
|
|
||||||
// Create the main "Connector" node.
|
|
||||||
echo '<Connector command="' . $command . '" resourceType="' . $resourceType . '">' ;
|
|
||||||
|
|
||||||
// Add the current folder node.
|
|
||||||
echo '<CurrentFolder path="' . ConvertToXmlAttribute( $currentFolder ) . '" url="' . ConvertToXmlAttribute( GetUrlFromPath( $resourceType, $currentFolder ) ) . '" />' ;
|
|
||||||
}
|
|
||||||
|
|
||||||
function CreateXmlFooter()
|
|
||||||
{
|
|
||||||
echo '</Connector>' ;
|
|
||||||
}
|
|
||||||
|
|
||||||
function SendError( $number, $text )
|
|
||||||
{
|
|
||||||
SetXmlHeaders() ;
|
|
||||||
|
|
||||||
// Create the XML document header
|
|
||||||
echo '<?xml version="1.0" encoding="utf-8" ?>' ;
|
|
||||||
|
|
||||||
echo '<Connector><Error number="' . $number . '" text="' . htmlspecialchars( $text ) . '" /></Connector>' ;
|
|
||||||
|
|
||||||
exit ;
|
|
||||||
}
|
|
||||||
?>
|
|
||||||
@@ -1,226 +0,0 @@
|
|||||||
<?php
|
|
||||||
/*
|
|
||||||
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
|
||||||
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
|
||||||
*
|
|
||||||
* == BEGIN LICENSE ==
|
|
||||||
*
|
|
||||||
* Licensed under the terms of any of the following licenses at your
|
|
||||||
* choice:
|
|
||||||
*
|
|
||||||
* - GNU General Public License Version 2 or later (the "GPL")
|
|
||||||
* http://www.gnu.org/licenses/gpl.html
|
|
||||||
*
|
|
||||||
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
|
||||||
* http://www.gnu.org/licenses/lgpl.html
|
|
||||||
*
|
|
||||||
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
|
||||||
* http://www.mozilla.org/MPL/MPL-1.1.html
|
|
||||||
*
|
|
||||||
* == END LICENSE ==
|
|
||||||
*
|
|
||||||
* File Name: commands.php
|
|
||||||
* This is the File Manager Connector for PHP.
|
|
||||||
*
|
|
||||||
* File Authors:
|
|
||||||
* Frederico Caldeira Knabben (www.fckeditor.net)
|
|
||||||
*/
|
|
||||||
|
|
||||||
function GetFolders( $resourceType, $currentFolder )
|
|
||||||
{
|
|
||||||
// Map the virtual path to the local server path.
|
|
||||||
$sServerDir = ServerMapFolder( $resourceType, $currentFolder ) ;
|
|
||||||
|
|
||||||
// Array that will hold the folders names.
|
|
||||||
$aFolders = array() ;
|
|
||||||
|
|
||||||
$oCurrentFolder = opendir( $sServerDir ) ;
|
|
||||||
|
|
||||||
while ( $sFile = readdir( $oCurrentFolder ) )
|
|
||||||
{
|
|
||||||
if ( $sFile != '.' && $sFile != '..' && is_dir( $sServerDir . $sFile ) )
|
|
||||||
$aFolders[] = '<Folder name="' . ConvertToXmlAttribute( $sFile ) . '" />' ;
|
|
||||||
}
|
|
||||||
|
|
||||||
closedir( $oCurrentFolder ) ;
|
|
||||||
|
|
||||||
// Open the "Folders" node.
|
|
||||||
echo "<Folders>" ;
|
|
||||||
|
|
||||||
natcasesort( $aFolders ) ;
|
|
||||||
foreach ( $aFolders as $sFolder )
|
|
||||||
echo $sFolder ;
|
|
||||||
|
|
||||||
// Close the "Folders" node.
|
|
||||||
echo "</Folders>" ;
|
|
||||||
}
|
|
||||||
|
|
||||||
function GetFoldersAndFiles( $resourceType, $currentFolder )
|
|
||||||
{
|
|
||||||
// Map the virtual path to the local server path.
|
|
||||||
$sServerDir = ServerMapFolder( $resourceType, $currentFolder ) ;
|
|
||||||
|
|
||||||
// Arrays that will hold the folders and files names.
|
|
||||||
$aFolders = array() ;
|
|
||||||
$aFiles = array() ;
|
|
||||||
|
|
||||||
$oCurrentFolder = opendir( $sServerDir ) ;
|
|
||||||
|
|
||||||
while ( $sFile = readdir( $oCurrentFolder ) )
|
|
||||||
{
|
|
||||||
if ( $sFile != '.' && $sFile != '..' )
|
|
||||||
{
|
|
||||||
if ( is_dir( $sServerDir . $sFile ) )
|
|
||||||
$aFolders[] = '<Folder name="' . ConvertToXmlAttribute( $sFile ) . '" />' ;
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$iFileSize = filesize( $sServerDir . $sFile ) ;
|
|
||||||
if ( $iFileSize > 0 )
|
|
||||||
{
|
|
||||||
$iFileSize = round( $iFileSize / 1024 ) ;
|
|
||||||
if ( $iFileSize < 1 ) $iFileSize = 1 ;
|
|
||||||
}
|
|
||||||
|
|
||||||
$aFiles[] = '<File name="' . ConvertToXmlAttribute( $sFile ) . '" size="' . $iFileSize . '" />' ;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Send the folders
|
|
||||||
natcasesort( $aFolders ) ;
|
|
||||||
echo '<Folders>' ;
|
|
||||||
|
|
||||||
foreach ( $aFolders as $sFolder )
|
|
||||||
echo $sFolder ;
|
|
||||||
|
|
||||||
echo '</Folders>' ;
|
|
||||||
|
|
||||||
// Send the files
|
|
||||||
natcasesort( $aFiles ) ;
|
|
||||||
echo '<Files>' ;
|
|
||||||
|
|
||||||
foreach ( $aFiles as $sFiles )
|
|
||||||
echo $sFiles ;
|
|
||||||
|
|
||||||
echo '</Files>' ;
|
|
||||||
}
|
|
||||||
|
|
||||||
function CreateFolder( $resourceType, $currentFolder )
|
|
||||||
{
|
|
||||||
$sErrorNumber = '0' ;
|
|
||||||
$sErrorMsg = '' ;
|
|
||||||
|
|
||||||
if ( isset( $_GET['NewFolderName'] ) )
|
|
||||||
{
|
|
||||||
$sNewFolderName = $_GET['NewFolderName'] ;
|
|
||||||
|
|
||||||
if ( strpos( $sNewFolderName, '..' ) !== FALSE )
|
|
||||||
$sErrorNumber = '102' ; // Invalid folder name.
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// Map the virtual path to the local server path of the current folder.
|
|
||||||
$sServerDir = ServerMapFolder( $resourceType, $currentFolder ) ;
|
|
||||||
|
|
||||||
if ( is_writable( $sServerDir ) )
|
|
||||||
{
|
|
||||||
$sServerDir .= $sNewFolderName ;
|
|
||||||
|
|
||||||
$sErrorMsg = CreateServerFolder( $sServerDir ) ;
|
|
||||||
|
|
||||||
switch ( $sErrorMsg )
|
|
||||||
{
|
|
||||||
case '' :
|
|
||||||
$sErrorNumber = '0' ;
|
|
||||||
break ;
|
|
||||||
case 'Invalid argument' :
|
|
||||||
case 'No such file or directory' :
|
|
||||||
$sErrorNumber = '102' ; // Path too long.
|
|
||||||
break ;
|
|
||||||
default :
|
|
||||||
$sErrorNumber = '110' ;
|
|
||||||
break ;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
$sErrorNumber = '103' ;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
$sErrorNumber = '102' ;
|
|
||||||
|
|
||||||
// Create the "Error" node.
|
|
||||||
echo '<Error number="' . $sErrorNumber . '" originalDescription="' . ConvertToXmlAttribute( $sErrorMsg ) . '" />' ;
|
|
||||||
}
|
|
||||||
|
|
||||||
function FileUpload( $resourceType, $currentFolder )
|
|
||||||
{
|
|
||||||
$sErrorNumber = '0' ;
|
|
||||||
$sFileName = '' ;
|
|
||||||
|
|
||||||
if ( isset( $_FILES['NewFile'] ) && !is_null( $_FILES['NewFile']['tmp_name'] ) )
|
|
||||||
{
|
|
||||||
global $Config ;
|
|
||||||
|
|
||||||
$oFile = $_FILES['NewFile'] ;
|
|
||||||
|
|
||||||
// Map the virtual path to the local server path.
|
|
||||||
$sServerDir = ServerMapFolder( $resourceType, $currentFolder ) ;
|
|
||||||
|
|
||||||
// Get the uploaded file name.
|
|
||||||
$sFileName = $oFile['name'] ;
|
|
||||||
|
|
||||||
// Replace dots in the name with underscores (only one dot can be there... security issue).
|
|
||||||
if ( $Config['ForceSingleExtension'] )
|
|
||||||
$sFileName = preg_replace( '/\\.(?![^.]*$)/', '_', $sFileName ) ;
|
|
||||||
|
|
||||||
$sOriginalFileName = $sFileName ;
|
|
||||||
|
|
||||||
// Get the extension.
|
|
||||||
$sExtension = substr( $sFileName, ( strrpos($sFileName, '.') + 1 ) ) ;
|
|
||||||
$sExtension = strtolower( $sExtension ) ;
|
|
||||||
|
|
||||||
$arAllowed = $Config['AllowedExtensions'][$resourceType] ;
|
|
||||||
$arDenied = $Config['DeniedExtensions'][$resourceType] ;
|
|
||||||
|
|
||||||
if ( ( count($arAllowed) == 0 || in_array( $sExtension, $arAllowed ) ) && ( count($arDenied) == 0 || !in_array( $sExtension, $arDenied ) ) )
|
|
||||||
{
|
|
||||||
$iCounter = 0 ;
|
|
||||||
|
|
||||||
while ( true )
|
|
||||||
{
|
|
||||||
$sFilePath = $sServerDir . $sFileName ;
|
|
||||||
|
|
||||||
if ( is_file( $sFilePath ) )
|
|
||||||
{
|
|
||||||
$iCounter++ ;
|
|
||||||
$sFileName = RemoveExtension( $sOriginalFileName ) . '(' . $iCounter . ').' . $sExtension ;
|
|
||||||
$sErrorNumber = '201' ;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
move_uploaded_file( $oFile['tmp_name'], $sFilePath ) ;
|
|
||||||
|
|
||||||
if ( is_file( $sFilePath ) )
|
|
||||||
{
|
|
||||||
$oldumask = umask(0) ;
|
|
||||||
chmod( $sFilePath, 0777 ) ;
|
|
||||||
umask( $oldumask ) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
break ;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
$sErrorNumber = '202' ;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
$sErrorNumber = '202' ;
|
|
||||||
|
|
||||||
echo '<script type="text/javascript">' ;
|
|
||||||
echo 'window.parent.frames["frmUpload"].OnUploadCompleted(' . $sErrorNumber . ',"' . str_replace( '"', '\\"', $sFileName ) . '") ;' ;
|
|
||||||
echo '</script>' ;
|
|
||||||
|
|
||||||
exit ;
|
|
||||||
}
|
|
||||||
?>
|
|
||||||
@@ -1,75 +0,0 @@
|
|||||||
<?php
|
|
||||||
/*
|
|
||||||
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
|
||||||
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
|
|
||||||
*
|
|
||||||
* == BEGIN LICENSE ==
|
|
||||||
*
|
|
||||||
* Licensed under the terms of any of the following licenses at your
|
|
||||||
* choice:
|
|
||||||
*
|
|
||||||
* - GNU General Public License Version 2 or later (the "GPL")
|
|
||||||
* http://www.gnu.org/licenses/gpl.html
|
|
||||||
*
|
|
||||||
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
|
||||||
* http://www.gnu.org/licenses/lgpl.html
|
|
||||||
*
|
|
||||||
* - Mozilla Public License Version 1.1 or later (the "MPL")
|
|
||||||
* http://www.mozilla.org/MPL/MPL-1.1.html
|
|
||||||
*
|
|
||||||
* == END LICENSE ==
|
|
||||||
*
|
|
||||||
* File Name: config.php
|
|
||||||
* Configuration file for the File Manager Connector for PHP.
|
|
||||||
*
|
|
||||||
* File Authors:
|
|
||||||
* Frederico Caldeira Knabben (www.fckeditor.net)
|
|
||||||
*/
|
|
||||||
|
|
||||||
global $Config ;
|
|
||||||
|
|
||||||
//require_once("../../../../../../../../master.inc.php");
|
|
||||||
require_once("../../../../../../../../conf/conf.php"); // ajout<75> car include master.inc.php ne marche pas
|
|
||||||
$uri=eregi_replace('^http(s?)://','',$dolibarr_main_url_root);
|
|
||||||
$pos = strstr ($uri, '/'); // $pos contient alors url sans nom domaine
|
|
||||||
if ($pos == '/') $pos = ''; // si $pos vaut /, on le met a ''
|
|
||||||
define('DOL_URL_ROOT', $pos);
|
|
||||||
|
|
||||||
/*
|
|
||||||
$conf->syslog->enabled=1;
|
|
||||||
define('SYSLOG_FILE','c:/log/dolibarr/dolibarr.log');
|
|
||||||
require_once("../../../../../../../../lib/functions.inc.php");
|
|
||||||
dolibarr_syslog("eee".$conf->fckeditor->dir_output);
|
|
||||||
*/
|
|
||||||
|
|
||||||
// SECURITY: You must explicitelly enable this "connector". (Set it to "true").
|
|
||||||
$Config['Enabled'] = true ;
|
|
||||||
|
|
||||||
// Path to user files relative to the document root.
|
|
||||||
$Config['UserFilesPath'] = DOL_URL_ROOT.'/viewimage.php?modulepart=fckeditor&file=' ;
|
|
||||||
|
|
||||||
// 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
|
|
||||||
// link or alias. Examples: 'C:\\MySite\\UserFiles\\' or '/root/mysite/UserFiles/'.
|
|
||||||
// Attention: The above 'UserFilesPath' must point to the same directory.
|
|
||||||
|
|
||||||
//$Config['UserFilesAbsolutePath'] = $conf->fckeditor->dir_output; // ne fonctionne pas
|
|
||||||
$Config['UserFilesAbsolutePath'] = $dolibarr_main_data_root.'/fckeditor/';
|
|
||||||
|
|
||||||
// Due to security issues with Apache modules, it is reccomended to leave the
|
|
||||||
// following setting enabled.
|
|
||||||
$Config['ForceSingleExtension'] = true ;
|
|
||||||
|
|
||||||
$Config['AllowedExtensions']['File'] = array() ;
|
|
||||||
$Config['DeniedExtensions']['File'] = array('html','htm','php','php2','php3','php4','php5','phtml','pwml','inc','asp','aspx','ascx','jsp','cfm','cfc','pl','bat','exe','com','dll','vbs','js','reg','cgi','htaccess','asis') ;
|
|
||||||
|
|
||||||
$Config['AllowedExtensions']['Image'] = array('jpg','gif','jpeg','png') ;
|
|
||||||
$Config['DeniedExtensions']['Image'] = array() ;
|
|
||||||
|
|
||||||
$Config['AllowedExtensions']['Flash'] = array('swf','fla') ;
|
|
||||||
$Config['DeniedExtensions']['Flash'] = array() ;
|
|
||||||
|
|
||||||
$Config['AllowedExtensions']['Media'] = array('swf','fla','jpg','gif','jpeg','png','avi','mpg','mpeg') ;
|
|
||||||
$Config['DeniedExtensions']['Media'] = array() ;
|
|
||||||
|
|
||||||
?>
|
|
||||||