Project

General

Profile

« Previous | Next » 

Revision 852

Added by doc over 16 years ago

Updated to latest FCKEditor version 2.6.2

View differences:

trunk/CHANGELOG
10 10
# = Bugfix
11 11
! = Update/Change
12 12

  
13
------------------------------------- 2.7.1 -------------------------------------
14
01-Jul-2008 Thomas Hornik
15
# page-names with doubled (or more) points can not be handled if php runs as cgi. Thanks to forum member hgi2001.
13
------------------------------------- 2.7.1 -------------------------------------
14
02-Jul-2008 Christian Sommer
15
!	updated to latest FCKEditor version 2.6.2
16
01-Jul-2008 Thomas Hornik
17
#	page-names with doubled (or more) points can not be handled if php runs as cgi. Thanks to forum member hgi2001.
16 18
29-June-2008 Christian Sommer
17 19
!	applied additional mail check to forgot login form
18 20
28-June-2008 Christian Sommer
trunk/wb/modules/fckeditor/info.php
26 26
  Authors: P. Widlund, S. Braunewell, M. Gallas (ruebenwurzel), Wouldlouper, C. Sommer (doc)
27 27
	Started to track applied changes in info.php from 27.03.2007 onwards (cs)
28 28
 -----------------------------------------------------------------------------------------------------------
29
	v2.86 (doc.. Christian Sommer; Jul 2, 2008)
30
		+	update to FCKEditor release v2.62
31

  
29 32
	v2.85 (doc.. Christian Sommer; Apr 10, 2008)
30 33
		+	fixed WB-Link Plugin to work with WB versions below 2.7 ($admin->page_is_visible() only available in WB 2.7)
31 34

  
......
108 111
$module_directory		= 'fckeditor';
109 112
$module_name				= 'FCKeditor';
110 113
$module_function		= 'WYSIWYG';
111
$module_version			= '2.85';
114
$module_version			= '2.86';
112 115
$module_platform		= '2.6.x';
113 116
$module_author 			= 'Christian Sommer, P. Widlund, S. Braunewell, M. Gallas, Wouldlouper';
114 117
$module_license 		= 'GNU General Public License';
115
$module_description 	= 'This module allows you to edit the contents of a page using <a href="http://www.fckeditor.net/" target="_blank">FCKeditor v2.6</a>.';
118
$module_description 	= 'This module allows you to edit the contents of a page using <a href="http://www.fckeditor.net/" target="_blank">FCKeditor v2.6.2</a>.';
116 119

  
117 120
?>
trunk/wb/modules/fckeditor/languages/DE.php
27 27
*/
28 28

  
29 29
// Deutsche Modulbeschreibung
30
$module_description 	= 'Dieses Modul erlaubt das bearbeiten von Seiteninhalten mit dem <a href="http://www.fckeditor.net/" target="_blank">FCKeditor v2.6</a>.';
30
$module_description 	= 'Dieses Modul erlaubt das bearbeiten von Seiteninhalten mit dem <a href="http://www.fckeditor.net/" target="_blank">FCKeditor v2.6.2</a>.';
31 31

  
32 32
?>
trunk/wb/modules/fckeditor/fckeditor/fckeditor.php
25 25
 * strict error messages with PHP 5).
26 26
 */
27 27

  
28
/**
29
 * Check if browser is compatible with FCKeditor.
30
 * Return true if is compatible.
31
 *
32
 * @return boolean
33
 */
34
function FCKeditor_IsCompatibleBrowser()
35
{
36
	if ( isset( $_SERVER ) ) {
37
		$sAgent = $_SERVER['HTTP_USER_AGENT'] ;
38
	}
39
	else {
40
		global $HTTP_SERVER_VARS ;
41
		if ( isset( $HTTP_SERVER_VARS ) ) {
42
			$sAgent = $HTTP_SERVER_VARS['HTTP_USER_AGENT'] ;
43
		}
44
		else {
45
			global $HTTP_USER_AGENT ;
46
			$sAgent = $HTTP_USER_AGENT ;
47
		}
48
	}
49

  
50
	if ( strpos($sAgent, 'MSIE') !== false && strpos($sAgent, 'mac') === false && strpos($sAgent, 'Opera') === false )
51
	{
52
		$iVersion = (float)substr($sAgent, strpos($sAgent, 'MSIE') + 5, 3) ;
53
		return ($iVersion >= 5.5) ;
54
	}
55
	else if ( strpos($sAgent, 'Gecko/') !== false )
56
	{
57
		$iVersion = (int)substr($sAgent, strpos($sAgent, 'Gecko/') + 6, 8) ;
58
		return ($iVersion >= 20030210) ;
59
	}
60
	else if ( strpos($sAgent, 'Opera/') !== false )
61
	{
62
		$fVersion = (float)substr($sAgent, strpos($sAgent, 'Opera/') + 6, 4) ;
63
		return ($fVersion >= 9.5) ;
64
	}
65
	else if ( preg_match( "|AppleWebKit/(\d+)|i", $sAgent, $matches ) )
66
	{
67
		$iVersion = $matches[1] ;
68
		return ( $matches[1] >= 522 ) ;
69
	}
70
	else
71
		return false ;
72
}
73

  
74 28
if ( !function_exists('version_compare') || version_compare( phpversion(), '5', '<' ) )
75 29
	include_once( 'fckeditor_php4.php' ) ;
76 30
else
trunk/wb/modules/fckeditor/fckeditor/fckpackager.xml
77 77
		<File path="editor/_source/internals/fck.js" />
78 78
		<File path="editor/_source/internals/fck_ie.js" />
79 79
		<File path="editor/_source/internals/fckconfig.js" />
80
		<File path="editor/_source/internals/fckdebug.js" />
80
		<File path="editor/_source/internals/fckdebug_empty.js" />
81 81
		<File path="editor/_source/internals/fckdomtools.js" />
82 82
		<File path="editor/_source/internals/fcktools.js" />
83 83
		<File path="editor/_source/internals/fcktools_ie.js" />
......
173 173
		<File path="editor/_source/internals/fck.js" />
174 174
		<File path="editor/_source/internals/fck_gecko.js" />
175 175
		<File path="editor/_source/internals/fckconfig.js" />
176
		<File path="editor/_source/internals/fckdebug.js" />
176
		<File path="editor/_source/internals/fckdebug_empty.js" />
177 177
		<File path="editor/_source/internals/fckdomtools.js" />
178 178
		<File path="editor/_source/internals/fcktools.js" />
179 179
		<File path="editor/_source/internals/fcktools_gecko.js" />
trunk/wb/modules/fckeditor/fckeditor/fckconfig.js
21 21
 * Editor configuration settings.
22 22
 *
23 23
 * Follow this link for more information:
24
 * http://wiki.fckeditor.net/Developer%27s_Guide/Configuration/Configurations_Settings
24
 * http://docs.fckeditor.net/FCKeditor_2.x/Developers_Guide/Configuration/Configuration_Options
25 25
 */
26 26

  
27 27
FCKConfig.CustomConfigurationsPath = '' ;
......
87 87
FCKConfig.ToolbarStartExpanded	= true ;
88 88
FCKConfig.ToolbarCanCollapse	= true ;
89 89
FCKConfig.IgnoreEmptyParagraphValue = true ;
90
FCKConfig.PreserveSessionOnFileBrowser = false ;
91 90
FCKConfig.FloatingPanelsZIndex = 10000 ;
92 91
FCKConfig.HtmlEncodeOutput = false ;
93 92

  
......
128 127
	[ CTRL + 84 /*T*/, true ],
129 128
	[ CTRL + 88 /*X*/, true ],
130 129
	[ CTRL + 86 /*V*/, 'Paste' ],
130
	[ CTRL + 45 /*INS*/, true ],
131 131
	[ SHIFT + 45 /*INS*/, 'Paste' ],
132 132
	[ CTRL + 88 /*X*/, 'Cut' ],
133 133
	[ SHIFT + 46 /*DEL*/, 'Cut' ],
......
314 314

  
315 315
FCKConfig.BackgroundBlockerColor = '#ffffff' ;
316 316
FCKConfig.BackgroundBlockerOpacity = 0.50 ;
317

  
318
FCKConfig.MsWebBrowserControlCompat = false ;
trunk/wb/modules/fckeditor/fckeditor/fckeditor.js
59 59
 */
60 60
FCKeditor.MinWidth = 750 ;
61 61

  
62
FCKeditor.prototype.Version			= '2.6' ;
63
FCKeditor.prototype.VersionBuild	= '18638' ;
62
FCKeditor.prototype.Version			= '2.6.2' ;
63
FCKeditor.prototype.VersionBuild	= '19417' ;
64 64

  
65 65
FCKeditor.prototype.Create = function()
66 66
{
......
88 88
	{
89 89
		var sWidth  = this.Width.toString().indexOf('%')  > 0 ? this.Width  : this.Width  + 'px' ;
90 90
		var sHeight = this.Height.toString().indexOf('%') > 0 ? this.Height : this.Height + 'px' ;
91
		sHtml += '<textarea name="' + this.InstanceName + '" rows="4" cols="40" style="width:' + sWidth + ';height:' + sHeight + '">' + this._HTMLEncode( this.Value ) + '<\/textarea>' ;
91

  
92
		sHtml += '<textarea name="' + this.InstanceName +
93
			'" rows="4" cols="40" style="width:' + sWidth +
94
			';height:' + sHeight ;
95

  
96
		if ( this.TabIndex )
97
			sHtml += '" tabindex="' + this.TabIndex ;
98

  
99
		sHtml += '">' +
100
			this._HTMLEncode( this.Value ) +
101
			'<\/textarea>' ;
92 102
	}
93 103

  
94 104
	return sHtml ;
......
116 126
		}
117 127

  
118 128
		oTextarea.style.display = 'none' ;
129

  
130
		if ( oTextarea.tabIndex )
131
			this.TabIndex = oTextarea.tabIndex ;
132

  
119 133
		this._InsertHtmlBefore( this._GetConfigHtml(), oTextarea ) ;
120 134
		this._InsertHtmlBefore( this._GetIFrameHtml(), oTextarea ) ;
121 135
	}
......
158 172
	catch (e) { /* Ignore it. Much probably we are inside a FRAME where the "top" is in another domain (security error). */ }
159 173

  
160 174
	var sLink = this.BasePath + 'editor/' + sFile + '?InstanceName=' + encodeURIComponent( this.InstanceName ) ;
161
	if (this.ToolbarSet) sLink += '&amp;Toolbar=' + this.ToolbarSet ;
175
	if (this.ToolbarSet)
176
		sLink += '&amp;Toolbar=' + this.ToolbarSet ;
162 177

  
163
	return '<iframe id="' + this.InstanceName + '___Frame" src="' + sLink + '" width="' + this.Width + '" height="' + this.Height + '" frameborder="0" scrolling="no"></iframe>' ;
178
	html = '<iframe id="' + this.InstanceName +
179
		'___Frame" src="' + sLink +
180
		'" width="' + this.Width +
181
		'" height="' + this.Height ;
182

  
183
	if ( this.TabIndex )
184
		html += '" tabindex="' + this.TabIndex ;
185

  
186
	html += '" frameborder="0" scrolling="no"></iframe>' ;
187

  
188
	return html ;
164 189
}
165 190

  
166 191
FCKeditor.prototype._IsCompatibleBrowser = function()
trunk/wb/modules/fckeditor/fckeditor/editor/dialog/fck_flash/fck_flash.js
236 236

  
237 237
function OnUploadCompleted( errorNumber, fileUrl, fileName, customMsg )
238 238
{
239
	// Remove animation
240
	window.parent.Throbber.Hide() ;
241
	GetE( 'divUpload' ).style.display  = '' ;
242

  
239 243
	switch ( errorNumber )
240 244
	{
241 245
		case 0 :	// No errors
......
288 292
		return false ;
289 293
	}
290 294

  
295
	// Show animation
296
	window.parent.Throbber.Show( 100 ) ;
297
	GetE( 'divUpload' ).style.display  = 'none' ;
298

  
291 299
	return true ;
292 300
}
trunk/wb/modules/fckeditor/fckeditor/editor/dialog/fck_link.html
108 108
				<input id="txtUploadFile" style="WIDTH: 100%" type="file" size="40" name="NewFile" /><br />
109 109
				<br />
110 110
				<input id="btnUpload" type="submit" value="Send it to the Server" fckLang="DlgLnkBtnUpload" />
111
				<iframe name="UploadWindow" style="DISPLAY: none" src="javascript:void(0)"></iframe>
111
				<script type="text/javascript">
112
					document.write( '<iframe name="UploadWindow" style="display: none" src="' + FCKTools.GetVoidUrl() + '"><\/iframe>' ) ;
113
				</script>
112 114
			</form>
113 115
		</div>
114 116
		<div id="divTarget" style="DISPLAY: none">
trunk/wb/modules/fckeditor/fckeditor/editor/dialog/fck_about.html
78 78
								border-left: #000000 1px solid; border-bottom: #000000 1px solid">
79 79
								<span fcklang="DlgAboutVersion">version</span>
80 80
								<br />
81
								<b>2.6</b><br />
82
								Build 18638</td>
81
								<b>2.6.2</b><br />
82
								Build 19417</td>
83 83
						</tr>
84 84
					</table>
85 85
				</td>
trunk/wb/modules/fckeditor/fckeditor/editor/dialog/fck_replace.html
34 34
var dialogArguments = dialog.Args() ;
35 35

  
36 36
var FCKLang = oEditor.FCKLang ;
37
var FCKDomTools = oEditor.FCKDomTools ;
38
var FCKDomRange = oEditor.FCKDomRange ;
39
var FCKListsLib = oEditor.FCKListsLib ;
40
var FCKTools = oEditor.FCKTools ;
41
var EditorDocument = oEditor.FCK.EditorDocument ;
42
var HighlightStyle = oEditor.FCKStyles.GetStyle( '_FCK_SelectionHighlight' )  ;
37 43

  
38 44
dialog.AddTab( 'Find', FCKLang.DlgFindTitle ) ;
39 45
dialog.AddTab( 'Replace', FCKLang.DlgReplaceTitle ) ;
......
51 57
		dialog.SetAutoSize( true ) ;
52 58
}
53 59

  
54
// Place a range at the start of document.
55
// This will be the starting point of our search.
56
var GlobalRange = new oEditor.FCKDomRange( oEditor.FCK.EditorWindow ) ;
57

  
58
function ResetGlobalRange()
60
GetNextNonEmptyTextNode = function( node, stopNode )
59 61
{
60
	GlobalRange.SetStart( oEditor.FCK.EditorDocument.body, 1 ) ;
61
	GlobalRange.SetEnd( oEditor.FCK.EditorDocument.body, 1 ) ;
62
	GlobalRange.Collapse( true ) ;
62
	while ( ( node = FCKDomTools.GetNextSourceNode( node, false, 3, stopNode ) ) && node && node.length < 1 )
63
		1 ;
64
	return node ;
63 65
}
64
ResetGlobalRange() ;
65 66

  
66
var HighlightRange = null ;
67
function Highlight()
67
CharacterCursor = function( arg )
68 68
{
69
	if ( HighlightRange )
70
		ClearHighlight() ;
71
	var cloneRange = GlobalRange.Clone() ;
72
	oEditor.FCKStyles.GetStyle( '_FCK_SelectionHighlight' ).ApplyToRange( cloneRange, false, true ) ;
73
	HighlightRange = cloneRange ;
74
	GlobalRange = HighlightRange.Clone() ;
75
}
76

  
77
function ClearHighlight()
78
{
79
	if ( HighlightRange )
69
	if ( arg.nodeType && arg.nodeType == 9 )
80 70
	{
81
		oEditor.FCKStyles.GetStyle( '_FCK_SelectionHighlight' ).RemoveFromRange( HighlightRange, false, true ) ;
82
		HighlightRange = null ;
71
		this._textNode = GetNextNonEmptyTextNode( arg.body, arg.documentElement ) ;
72
		this._offset = 0 ;
73
		this._doc = arg ;
83 74
	}
75
	else
76
	{
77
		this._textNode = arguments[0] ;
78
		this._offset = arguments[1] ;
79
		this._doc = FCKTools.GetElementDocument( arguments[0] ) ;
80
	}
84 81
}
85

  
86
function OnLoad()
82
CharacterCursor.prototype =
87 83
{
88
	// First of all, translate the dialog box texts.
89
	oEditor.FCKLanguageManager.TranslatePage( document ) ;
84
	GetCharacter : function()
85
	{
86
		return ( this._textNode && this._textNode.nodeValue.charAt( this._offset ) ) || null ;
87
	},
90 88

  
91
	// Show the appropriate tab at startup.
92
	if ( dialogArguments.CustomValue == 'Find' )
89
	// Non-normalized.
90
	GetTextNode : function()
93 91
	{
94
		dialog.SetSelectedTab( 'Find' ) ;
95
		dialog.SetAutoSize( true ) ;
96
	}
97
	else
98
		dialog.SetSelectedTab( 'Replace' ) ;
92
		return this._textNode ;
93
	},
99 94

  
100
	SelectField( 'txtFind' + dialogArguments.CustomValue ) ;
101
}
95
	// Non-normalized.
96
	GetIndex : function()
97
	{
98
		return this._offset ;
99
	},
102 100

  
103
function btnStat()
104
{
105
	GetE('btnReplace').disabled =
106
		GetE('btnReplaceAll').disabled =
107
			GetE('btnFind').disabled =
108
				( GetE(idMap["FindText"]).value.length == 0 ) ;
109
}
101
	// Return value means whehther we've crossed a line break or a paragraph boundary.
102
	MoveNext : function()
103
	{
104
		if ( this._offset < this._textNode.length - 1 )
105
		{
106
			this._offset++ ;
107
			return false ;
108
		}
110 109

  
111
function btnStatDelayed()
112
{
113
	setTimeout( btnStat, 1 ) ;
114
}
110
		var crossed = false ;
111
		var curNode = this._textNode ;
112
		while ( ( curNode = FCKDomTools.GetNextSourceNode( curNode ) )
113
				&& curNode && ( curNode.nodeType != 3 || curNode.length < 1 ) )
114
		{
115
			var tag = curNode.nodeName.toLowerCase() ;
116
			if ( FCKListsLib.BlockElements[tag] || tag == 'br' )
117
				crossed = true ;
118
		}
115 119

  
116
function GetSearchString()
117
{
118
	return GetE(idMap['FindText']).value ;
119
}
120
		this._textNode = curNode ;
121
		this._offset = 0 ;
122
		return crossed ;
123
	},
120 124

  
121
function GetReplaceString()
122
{
123
	return GetE("txtReplace").value ;
124
}
125
	// Return value means whehther we've crossed a line break or a paragraph boundary.
126
	MoveBack : function()
127
	{
128
		if ( this._offset > 0 && this._textNode.length > 0 )
129
		{
130
			this._offset = Math.min( this._offset - 1, this._textNode.length - 1 ) ;
131
			return false ;
132
		}
125 133

  
126
function GetCheckCase()
127
{
128
	return !! ( GetE(idMap['CheckCase']).checked ) ;
129
}
134
		var crossed = false ;
135
		var curNode = this._textNode ;
136
		while ( ( curNode = FCKDomTools.GetPreviousSourceNode( curNode ) )
137
				&& curNode && ( curNode.nodeType != 3 || curNode.length < 1 ) )
138
		{
139
			var tag = curNode.nodeName.toLowerCase() ;
140
			if ( FCKListsLib.BlockElements[tag] || tag == 'br' )
141
				crossed = true ;
142
		}
130 143

  
131
function GetMatchWord()
144
		this._textNode = curNode ;
145
		this._offset = curNode.length - 1 ;
146
		return crossed ;
147
	},
148

  
149
	Clone : function()
150
	{
151
		return new CharacterCursor( this._textNode, this._offset ) ;
152
	}
153
} ;
154

  
155
CharacterRange = function( initCursor, maxLength )
132 156
{
133
	return !! ( GetE(idMap['CheckWord']).checked ) ;
157
	this._cursors = initCursor.push ? initCursor : [initCursor] ;
158
	this._maxLength = maxLength ;
159
	this._highlightRange = null ;
134 160
}
135

  
136
// Get the data pointed to by a bookmark.
137
function GetData( bookmark )
161
CharacterRange.prototype =
138 162
{
139
	var cursor = oEditor.FCK.EditorDocument.documentElement ;
140
	for ( var i = 0 ; i < bookmark.length ; i++ )
163
	ToDomRange : function()
141 164
	{
142
		var target = bookmark[i] ;
143
		var currentIndex = -1 ;
144
		if ( cursor.nodeType != 3 )
165
		var firstCursor = this._cursors[0] ;
166
		var lastCursor = this._cursors[ this._cursors.length - 1 ] ;
167
		var domRange = new FCKDomRange( FCKTools.GetElementWindow( firstCursor.GetTextNode() ) ) ;
168
		var w3cRange = domRange._Range = domRange.CreateRange() ;
169
		w3cRange.setStart( firstCursor.GetTextNode(), firstCursor.GetIndex() ) ;
170
		w3cRange.setEnd( lastCursor.GetTextNode(), lastCursor.GetIndex() + 1 ) ;
171
		domRange._UpdateElementInfo() ;
172
		return domRange ;
173
	},
174

  
175
	Highlight : function()
176
	{
177
		if ( this._cursors.length < 1 )
178
			return ;
179

  
180
		var domRange = this.ToDomRange() ;
181
		HighlightStyle.ApplyToRange( domRange, false, true ) ;
182
		this._highlightRange = domRange ;
183

  
184
		var charRange = CharacterRange.CreateFromDomRange( domRange ) ;
185
		var focusNode = domRange.StartNode ;
186
		if ( focusNode.nodeType != 1 )
187
			focusNode = focusNode.parentNode ;
188
		focusNode.scrollIntoView( false ) ;
189
		this._cursors = charRange._cursors ;
190
	},
191

  
192
	RemoveHighlight : function()
193
	{
194
		if ( this._highlightRange )
145 195
		{
146
			for (var j = 0 ; j < cursor.childNodes.length ; j++ )
147
			{
148
				var candidate = cursor.childNodes[j] ;
149
				if ( candidate.nodeType == 3 &&
150
						candidate.previousSibling &&
151
						candidate.previousSibling.nodeType == 3 )
152
					continue ;
153
				currentIndex++ ;
154
				if ( currentIndex == target )
155
				{
156
					cursor = candidate ;
157
					break ;
158
				}
159
			}
160
			if ( currentIndex < target )
161
				return null ;
196
			HighlightStyle.RemoveFromRange( this._highlightRange, false, true ) ;
197
			var charRange = CharacterRange.CreateFromDomRange( this._highlightRange ) ;
198
			this._cursors = charRange._cursors ;
199
			this._highlightRange = null ;
162 200
		}
163
		else
164
		{
165
			if ( i != bookmark.length - 1 )
166
				return null ;
167
			while ( target >= cursor.length && cursor.nextSibling && cursor.nextSibling.nodeType == 3 )
168
			{
169
				target -= cursor.length ;
170
				cursor = cursor.nextSibling ;
171
			}
172
			cursor = cursor.nodeValue.charAt( target ) ;
173
			if ( cursor == "" )
174
				cursor = null ;
175
		}
201
	},
202

  
203
	GetHighlightDomRange : function()
204
	{
205
		return this._highlightRange;
206
	},
207

  
208
	MoveNext : function()
209
	{
210
		var next = this._cursors[ this._cursors.length - 1 ].Clone() ;
211
		var retval = next.MoveNext() ;
212
		if ( retval )
213
			this._cursors = [] ;
214
		this._cursors.push( next ) ;
215
		if ( this._cursors.length > this._maxLength )
216
			this._cursors.shift() ;
217
		return retval ;
218
	},
219

  
220
	MoveBack : function()
221
	{
222
		var prev = this._cursors[0].Clone() ;
223
		var retval = prev.MoveBack() ;
224
		if ( retval )
225
			this._cursors = [] ;
226
		this._cursors.unshift( prev ) ;
227
		if ( this._cursors.length > this._maxLength )
228
			this._cursors.pop() ;
229
		return retval ;
230
	},
231

  
232
	GetEndCharacter : function()
233
	{
234
		if ( this._cursors.length < 1 )
235
			return null ;
236
		var retval = this._cursors[ this._cursors.length - 1 ].GetCharacter() ;
237
		return retval ;
238
	},
239

  
240
	GetNextRange : function( len )
241
	{
242
		if ( this._cursors.length == 0 )
243
			return null ;
244
		var cur = this._cursors[ this._cursors.length - 1 ].Clone() ;
245
		cur.MoveNext() ;
246
		return new CharacterRange( cur, len ) ;
247
	},
248

  
249
	GetCursors : function()
250
	{
251
		return this._cursors ;
176 252
	}
177
	return cursor ;
178
}
253
} ;
179 254

  
180
// With this function, we can treat the bookmark as an iterator for DFS.
181
function NextPosition( bookmark )
255
CharacterRange.CreateFromDomRange = function( domRange )
182 256
{
183
	// See if there's anything further down the tree.
184
	var next = bookmark.concat( [0] ) ;
185
	if ( GetData( next ) != null )
186
		return next ;
257
	var w3cRange = domRange._Range ;
258
	var startContainer = w3cRange.startContainer ;
259
	var endContainer = w3cRange.endContainer ;
260
	var startTextNode, startIndex, endTextNode, endIndex ;
187 261

  
188
	// Nothing down there? See if there's anything next to me.
189
	var next = bookmark.slice( 0, bookmark.length - 1 ).concat( [ bookmark[ bookmark.length - 1 ] + 1 ] ) ;
190
	if ( GetData( next ) != null )
191
		return next ;
262
	if ( startContainer.nodeType == 3 )
263
	{
264
		startTextNode = startContainer ;
265
		startIndex = w3cRange.startOffset ;
266
	}
267
	else if ( domRange.StartNode.nodeType == 3 )
268
	{
269
		startTextNode = domRange.StartNode ;
270
		startIndex = 0 ;
271
	}
272
	else
273
	{
274
		startTextNode = GetNextNonEmptyTextNode( domRange.StartNode, domRange.StartNode.parentNode ) ;
275
		if ( !startTextNode )
276
			return null ;
277
		startIndex = 0 ;
278
	}
192 279

  
193
	// Nothing even next to me? See if there's anything next to my ancestors.
194
	for ( var i = bookmark.length - 1 ; i > 0 ; i-- )
280
	if ( endContainer.nodeType == 3 && w3cRange.endOffset > 0 )
195 281
	{
196
		var next = bookmark.slice( 0, i - 1 ).concat( [ bookmark[ i - 1 ] + 1 ] ) ;
197
		if ( GetData( next ) != null )
198
			return next ;
282
		endTextNode = endContainer ;
283
		endIndex = w3cRange.endOffset - 1 ;
199 284
	}
285
	else
286
	{
287
		endTextNode = domRange.EndNode ;
288
		while ( endTextNode.nodeType != 3 )
289
			endTextNode = endTextNode.lastChild ;
290
		endIndex = endTextNode.length - 1 ;
291
	}
200 292

  
201
	// There's absolutely nothing left to walk, return null.
202
	return null ;
203
}
204

  
205
// Is this character a unicode whitespace?
206
// Reference: http://unicode.org/Public/UNIDATA/PropList.txt
207
function CheckIsWhitespace( c )
208
{
209
	var code = c.charCodeAt( 0 );
210
	if ( code >= 9 && code <= 0xd )
211
		return true;
212
	if ( code >= 0x2000 && code <= 0x200a )
213
		return true;
214
	switch ( code )
293
	var cursors = [] ;
294
	var current = new CharacterCursor( startTextNode, startIndex ) ;
295
	cursors.push( current ) ;
296
	if ( !( current.GetTextNode() == endTextNode && current.GetIndex() == endIndex ) && !domRange.CheckIsEmpty() )
215 297
	{
216
		case 0x20:
217
		case 0x85:
218
		case 0xa0:
219
		case 0x1680:
220
		case 0x180e:
221
		case 0x2028:
222
		case 0x2029:
223
		case 0x202f:
224
		case 0x205f:
225
		case 0x3000:
226
			return true;
227
		default:
228
			return false;
298
		do
299
		{
300
			current = current.Clone() ;
301
			current.MoveNext() ;
302
			cursors.push( current ) ;
303
		}
304
		while ( !( current.GetTextNode() == endTextNode && current.GetIndex() == endIndex ) ) ;
229 305
	}
306

  
307
	return new CharacterRange( cursors, cursors.length ) ;
230 308
}
231 309

  
232 310
// Knuth-Morris-Pratt Algorithm for stream input
233 311
KMP_NOMATCH = 0 ;
234 312
KMP_ADVANCED = 1 ;
235 313
KMP_MATCHED = 2 ;
236
function KmpMatch( pattern, ignoreCase )
314
KmpMatch = function( pattern, ignoreCase )
237 315
{
238 316
	var overlap = [ -1 ] ;
239 317
	for ( var i = 0 ; i < pattern.length ; i++ )
......
251 329
		this.Pattern = pattern ;
252 330
}
253 331
KmpMatch.prototype = {
254
	"FeedCharacter" : function( c )
332
	FeedCharacter : function( c )
255 333
	{
256 334
		if ( this._IgnoreCase )
257 335
			c = c.toLowerCase();
......
277 355

  
278 356
		return null ;
279 357
	},
280
	"Reset" : function()
358

  
359
	Reset : function()
281 360
	{
282 361
		this._State = 0 ;
283 362
	}
284 363
};
285 364

  
286
function _Find()
365
// Place a range at the start of document.
366
function OnLoad()
287 367
{
288
	// Start from the end of the current selection.
289
	var matcher = new KmpMatch( GetSearchString(), ! GetCheckCase() ) ;
290
	var cursor = GlobalRange.CreateBookmark2().End ;
291
	var matchState = KMP_NOMATCH ;
292
	var matchBookmark = null ;
293
	var matchBookmarkStart = [] ;
368
	// First of all, translate the dialog box texts.
369
	oEditor.FCKLanguageManager.TranslatePage( document ) ;
294 370

  
295
	// Match finding.
296
	while ( true )
371
	// Show the appropriate tab at startup.
372
	if ( dialogArguments.CustomValue == 'Find' )
297 373
	{
298
		// Perform KMP stream matching.
299
		//	- Reset KMP matcher if we encountered a block element.
300
		var data = GetData( cursor ) ;
301
		if ( data )
302
		{
303
			if ( data.tagName )
304
			{
305
				if ( oEditor.FCKListsLib.BlockElements[ data.tagName.toLowerCase() ] )
306
				{
307
					matcher.Reset();
308
					matchBookmarkStart = [] ;
309
				}
310
			}
311
			else if ( data.charAt != undefined )
312
			{
313
				matchState = matcher.FeedCharacter(data) ;
374
		dialog.SetSelectedTab( 'Find' ) ;
375
		dialog.SetAutoSize( true ) ;
376
	}
377
	else
378
		dialog.SetSelectedTab( 'Replace' ) ;
314 379

  
315
				// No possible match of any useful substring in the pattern for the currently scanned character.
316
				// So delete any positional information.
317
				if ( matchState == KMP_NOMATCH )
318
					matchBookmarkStart = [] ;
319
				// We've matched something, but it's not a complete match, so let's just mark down the position for backtracking later.
320
				else if ( matchState == KMP_ADVANCED )
321
				{
322
					matchBookmarkStart.push( cursor.concat( [] ) ) ;
323
					if ( matchBookmarkStart.length > matcher._State )
324
						matchBookmarkStart.shift() ;
325
				}
326
				// Found a complete match! Mark down the ending position as well.
327
				else if ( matchState == KMP_MATCHED )
328
				{
329
					// It is possible to get a KMP_MATCHED without KMP_ADVANCED when the match pattern is only 1 character.
330
					// So need to check and mark down the starting position as well.
331
					if ( matchBookmarkStart.length == 0 )
332
						matchBookmarkStart = [cursor.concat( [] )] ;
380
	SelectField( 'txtFind' + dialogArguments.CustomValue ) ;
381
}
333 382

  
334
					matchBookmark = { 'Start' : matchBookmarkStart.shift(), 'End' : cursor.concat( [] ) } ;
335
					matchBookmark.End[ matchBookmark.End.length - 1 ]++;
383
function btnStat()
384
{
385
	GetE('btnReplace').disabled =
386
		GetE('btnReplaceAll').disabled =
387
			GetE('btnFind').disabled =
388
				( GetE(idMap["FindText"]).value.length == 0 ) ;
389
}
336 390

  
337
					// Wait, do we have to match a whole word?
338
					// If yes, carry out additional checks on what we've got.
339
					if ( GetMatchWord() )
340
					{
341
						var startOk = false ;
342
						var endOk = false ;
343
						var start = matchBookmark.Start ;
344
						var end = matchBookmark.End ;
345
						if ( start[ start.length - 1 ] == 0 )
346
							startOk = true ;
347
						else
348
						{
349
							var cursorBeforeStart = start.slice( 0, start.length - 1 ) ;
350
							cursorBeforeStart.push( start[ start.length - 1 ] - 1 ) ;
351
							var dataBeforeStart = GetData( cursorBeforeStart ) ;
352
							if ( dataBeforeStart == null || dataBeforeStart.charAt == undefined )
353
								startOk = true ;
354
							else if ( CheckIsWhitespace( dataBeforeStart ) )
355
								startOk = true ;
356
						}
391
function btnStatDelayed()
392
{
393
	setTimeout( btnStat, 1 ) ;
394
}
357 395

  
358
						// this is already one character beyond the last char, no need to move
359
						var cursorAfterEnd = end ;
360
						var dataAfterEnd = GetData( cursorAfterEnd );
361
						if ( dataAfterEnd == null || dataAfterEnd.charAt == undefined )
362
							endOk = true ;
363
						else if ( CheckIsWhitespace( dataAfterEnd ) )
364
							endOk = true ;
396
function GetSearchString()
397
{
398
	return GetE(idMap['FindText']).value ;
399
}
365 400

  
366
						if ( startOk && endOk )
367
							break ;
368
						else
369
							matcher.Reset() ;
370
					}
371
					else
372
						break ;
373
				}
374
			}
375
		}
401
function GetReplaceString()
402
{
403
	return GetE("txtReplace").value ;
404
}
376 405

  
377
		// Perform DFS across the document, until we've reached the end.
378
		cursor = NextPosition( cursor ) ;
379
		if ( cursor == null )
380
			break;
406
function GetCheckCase()
407
{
408
	return !! ( GetE(idMap['CheckCase']).checked ) ;
409
}
410

  
411
function GetMatchWord()
412
{
413
	return !! ( GetE(idMap['CheckWord']).checked ) ;
414
}
415

  
416
/* Is this character a unicode whitespace or a punctuation mark?
417
 * References:
418
 * http://unicode.org/Public/UNIDATA/PropList.txt (whitespaces)
419
 * http://php.chinaunix.net/manual/tw/ref.regex.php (punctuation marks)
420
 */
421
function CheckIsWordSeparator( c )
422
{
423
	var code = c.charCodeAt( 0 );
424
	if ( code >= 9 && code <= 0xd )
425
		return true;
426
	if ( code >= 0x2000 && code <= 0x200a )
427
		return true;
428
	switch ( code )
429
	{
430
		case 0x20:
431
		case 0x85:
432
		case 0xa0:
433
		case 0x1680:
434
		case 0x180e:
435
		case 0x2028:
436
		case 0x2029:
437
		case 0x202f:
438
		case 0x205f:
439
		case 0x3000:
440
			return true;
441
		default:
381 442
	}
443
	return /[.,"'?!;:]/.test( c ) ;
444
}
382 445

  
383
	// If we've found a match, highlight the match.
384
	if ( matchState == KMP_MATCHED )
446
FindRange = null ;
447
function _Find()
448
{
449
	var searchString = GetSearchString() ;
450
	if ( !FindRange )
451
		FindRange = new CharacterRange( new CharacterCursor( EditorDocument ), searchString.length ) ;
452
	else
385 453
	{
386
		GlobalRange.MoveToBookmark2( matchBookmark ) ;
387
		Highlight() ;
388
		var focus = GlobalRange._Range.endContainer ;
389
		while ( focus && focus.nodeType != 1 )
390
			focus = focus.parentNode ;
454
		FindRange.RemoveHighlight() ;
455
		FindRange = FindRange.GetNextRange( searchString.length ) ;
456
	}
457
	var matcher = new KmpMatch( searchString, ! GetCheckCase() ) ;
458
	var matchState = KMP_NOMATCH ;
459
	var character = '%' ;
391 460

  
392
		if ( focus )
461
	while ( character != null )
462
	{
463
		while ( ( character = FindRange.GetEndCharacter() ) )
393 464
		{
394
			if ( oEditor.FCKBrowserInfo.IsSafari )
395
				oEditor.FCKDomTools.ScrollIntoView( focus, false ) ;
396
			else
397
				focus.scrollIntoView( false ) ;
465
			matchState = matcher.FeedCharacter( character ) ;
466
			if ( matchState == KMP_MATCHED )
467
				break ;
468
			if ( FindRange.MoveNext() )
469
				matcher.Reset() ;
398 470
		}
399 471

  
400
		return true ;
472
		if ( matchState == KMP_MATCHED )
473
		{
474
			if ( GetMatchWord() )
475
			{
476
				var cursors = FindRange.GetCursors() ;
477
				var head = cursors[ cursors.length - 1 ].Clone() ;
478
				var tail = cursors[0].Clone() ;
479
				if ( !head.MoveNext() && !CheckIsWordSeparator( head.GetCharacter() ) )
480
					continue ;
481
				if ( !tail.MoveBack() && !CheckIsWordSeparator( tail.GetCharacter() ) )
482
					continue ;
483
			}
484

  
485
			FindRange.Highlight() ;
486
			return true ;
487
		}
401 488
	}
402
	else
403
	{
404
		ResetGlobalRange() ;
405
		return false ;
406
	}
489

  
490
	FindRange = null ;
491
	return false ;
407 492
}
408 493

  
409 494
function Find()
410 495
{
411 496
	if ( ! _Find() )
412
	{
413
		ClearHighlight() ;
414 497
		alert( FCKLang.DlgFindNotFoundMsg ) ;
415
	}
416 498
}
417 499

  
418 500
function Replace()
419 501
{
420
	if ( GlobalRange.CheckIsCollapsed() )
502
	var saveUndoStep = function( selectRange )
421 503
	{
422
		if (! _Find() )
504
		var ieRange ;
505
		if ( oEditor.FCKBrowserInfo.IsIE )
506
			ieRange = document.selection.createRange() ;
507

  
508
		selectRange.Select() ;
509
		oEditor.FCKUndo.SaveUndoStep() ;
510
		var cloneRange = selectRange.Clone() ;
511
		cloneRange.Collapse( false ) ;
512
		cloneRange.Select() ;
513

  
514
		if ( ieRange )
515
			setTimeout( function(){ ieRange.select() ; }, 1 ) ;
516
	}
517

  
518
	if ( FindRange && FindRange.GetHighlightDomRange() )
519
	{
520
		var range = FindRange.GetHighlightDomRange() ;
521
		var bookmark = range.CreateBookmark() ;
522
		FindRange.RemoveHighlight() ;
523
		range.MoveToBookmark( bookmark ) ;
524

  
525
		saveUndoStep( range ) ;
526
		range.DeleteContents() ;
527
		range.InsertNode( EditorDocument.createTextNode( GetReplaceString() ) ) ;
528
		range._UpdateElementInfo() ;
529

  
530
		FindRange = CharacterRange.CreateFromDomRange( range ) ;
531
	}
532
	else
533
	{
534
		if ( ! _Find() )
423 535
		{
424
			ClearHighlight() ;
536
			FindRange && FindRange.RemoveHighlight() ;
425 537
			alert( FCKLang.DlgFindNotFoundMsg ) ;
426 538
		}
427 539
	}
428
	else
429
	{
430
		oEditor.FCKUndo.SaveUndoStep() ;
431
		GlobalRange.DeleteContents() ;
432
		GlobalRange.InsertNode( oEditor.FCK.EditorDocument.createTextNode( GetReplaceString() ) ) ;
433
		GlobalRange.Collapse( false ) ;
434
	}
435 540
}
436 541

  
437 542
function ReplaceAll()
......
441 546

  
442 547
	while ( _Find() )
443 548
	{
444
		dialog.Selection.EnsureSelection() ;
445
		GlobalRange.DeleteContents() ;
446
		GlobalRange.InsertNode( oEditor.FCK.EditorDocument.createTextNode( GetReplaceString() ) ) ;
447
		GlobalRange.Collapse( false ) ;
549
		var range = FindRange.GetHighlightDomRange() ;
550
		var bookmark = range.CreateBookmark() ;
551
		FindRange.RemoveHighlight() ;
552
		range.MoveToBookmark( bookmark) ;
553

  
554
		range.DeleteContents() ;
555
		range.InsertNode( EditorDocument.createTextNode( GetReplaceString() ) ) ;
556
		range._UpdateElementInfo() ;
557

  
558
		FindRange = CharacterRange.CreateFromDomRange( range ) ;
448 559
		replaceCount++ ;
449 560
	}
450 561
	if ( replaceCount == 0 )
451 562
	{
452
		ClearHighlight() ;
563
		FindRange && FindRange.RemoveHighlight() ;
453 564
		alert( FCKLang.DlgFindNotFoundMsg ) ;
454 565
	}
455 566
	dialog.Cancel() ;
456 567
}
457 568

  
458
window.onunload = function(){ ClearHighlight() ; }
569
window.onunload = function()
570
{
571
	if ( FindRange )
572
	{
573
		FindRange.RemoveHighlight() ;
574
		FindRange.ToDomRange().Select() ;
575
	}
576
}
459 577
	</script>
460 578
</head>
461 579
<body onload="OnLoad()" style="overflow: hidden">
trunk/wb/modules/fckeditor/fckeditor/editor/dialog/fck_image/fck_image.js
447 447

  
448 448
function OnUploadCompleted( errorNumber, fileUrl, fileName, customMsg )
449 449
{
450
	// Remove animation
451
	window.parent.Throbber.Hide() ;
452
	GetE( 'divUpload' ).style.display  = '' ;
453

  
450 454
	switch ( errorNumber )
451 455
	{
452 456
		case 0 :	// No errors
......
500 504
		return false ;
501 505
	}
502 506

  
507
	// Show animation
508
	window.parent.Throbber.Show( 100 ) ;
509
	GetE( 'divUpload' ).style.display  = 'none' ;
510

  
503 511
	return true ;
504 512
}
trunk/wb/modules/fckeditor/fckeditor/editor/dialog/fck_image/fck_image_preview.html
34 34
var FCKTools	= window.parent.FCKTools ;
35 35
var FCKConfig	= window.parent.FCKConfig ;
36 36

  
37
// Sets the Skin CSS
38
document.write( FCKTools.GetStyleHtml( FCKConfig.SkinDialogCSS ) ) ;
39
document.write( FCKTools.GetStyleHtml( GetCommonDialogCss( '../' ) ) ) ;
37
// Set the preview CSS
38
document.write( FCKTools.GetStyleHtml( FCKConfig.EditorAreaCSS ) ) ;
39
document.write( FCKTools.GetStyleHtml( FCKConfig.EditorAreaStyles ) ) ;
40 40

  
41 41
if ( window.parent.FCKConfig.BaseHref.length > 0 )
42 42
	document.write( '<base href="' + window.parent.FCKConfig.BaseHref + '">' ) ;
......
50 50

  
51 51
	</script>
52 52
</head>
53
<body style="color: #000000; background-color: #ffffff">
53
<body>
54 54
	<div>
55 55
		<a id="lnkPreview" onclick="return false;" style="cursor: default">
56 56
			<img id="imgPreview" onload="window.parent.UpdateOriginal();"
trunk/wb/modules/fckeditor/fckeditor/editor/dialog/fck_image.html
165 165
			<br />
166 166
			<input id="btnUpload" type="submit" value="Send it to the Server" fcklang="DlgLnkBtnUpload" />
167 167
			<script type="text/javascript">
168
				document.write( '<iframe name="UploadWindow" style="display: none" src="' + FCKTools.GetVoidUrl() + '"></iframe>' ) ;
168
				document.write( '<iframe name="UploadWindow" style="display: none" src="' + FCKTools.GetVoidUrl() + '"><\/iframe>' ) ;
169 169
			</script>
170 170
		</form>
171 171
	</div>
trunk/wb/modules/fckeditor/fckeditor/editor/dialog/fck_link/fck_link.js
650 650

  
651 651
function SetUrl( url )
652 652
{
653
	document.getElementById('txtUrl').value = url ;
653
	GetE('txtUrl').value = url ;
654 654
	OnUrlChange() ;
655 655
	dialog.SetSelectedTab( 'Info' ) ;
656 656
}
657 657

  
658 658
function OnUploadCompleted( errorNumber, fileUrl, fileName, customMsg )
659 659
{
660
	// Remove animation
661
	window.parent.Throbber.Hide() ;
662
	GetE( 'divUpload' ).style.display  = '' ;
663

  
660 664
	switch ( errorNumber )
661 665
	{
662 666
		case 0 :	// No errors
......
709 713
		return false ;
710 714
	}
711 715

  
716
	// Show animation
717
	window.parent.Throbber.Show( 100 ) ;
718
	GetE( 'divUpload' ).style.display  = 'none' ;
719

  
712 720
	return true ;
713 721
}
714 722

  
trunk/wb/modules/fckeditor/fckeditor/editor/dialog/fck_flash.html
97 97
				<br />
98 98
				<input id="btnUpload" type="submit" value="Send it to the Server" fckLang="DlgLnkBtnUpload" />
99 99
				<script type="text/javascript">
100
					document.write( '<iframe name="UploadWindow" style="DISPLAY: none" src="' + FCKTools.GetVoidUrl() + '"></iframe>' ) ;
100
					document.write( '<iframe name="UploadWindow" style="DISPLAY: none" src="' + FCKTools.GetVoidUrl() + '"><\/iframe>' ) ;
101 101
				</script>
102 102
			</form>
103 103
		</div>
trunk/wb/modules/fckeditor/fckeditor/editor/dialog/common/fck_dialog_common.js
57 57
// Attention: FCKConfig must be available in the page.
58 58
function GetCommonDialogCss( prefix )
59 59
{
60
	// CSS minified by http://iceyboard.no-ip.org/projects/css_compressor
60
	// CSS minified by http://iceyboard.no-ip.org/projects/css_compressor (see _dev/css_compression.txt).
61 61
	return FCKConfig.BasePath + 'dialog/common/' + '|.ImagePreviewArea{border:#000 1px solid;overflow:auto;width:100%;height:170px;background-color:#fff}.FlashPreviewArea{border:#000 1px solid;padding:5px;overflow:auto;width:100%;height:170px;background-color:#fff}.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}' ;
62 62
}
63 63

  
......
187 187
	sOptions += ",left=" + iLeft ;
188 188
	sOptions += ",top=" + iTop ;
189 189

  
190
	// The "PreserveSessionOnFileBrowser" because the above code could be
191
	// blocked by popup blockers.
192
	if ( oEditor.FCKConfig.PreserveSessionOnFileBrowser && oEditor.FCKBrowserInfo.IsIE )
193
	{
194
		// The following change has been made otherwise IE will open the file
195
		// browser on a different server session (on some cases):
196
		// http://support.microsoft.com/default.aspx?scid=kb;en-us;831678
197
		// by Simone Chiaretta.
198
		var oWindow = oEditor.window.open( url, 'FCKBrowseWindow', sOptions ) ;
199

  
200
		if ( oWindow )
201
		{
202
			// Detect Yahoo popup blocker.
203
			try
204
			{
205
				var sTest = oWindow.name ; // Yahoo returns "something", but we can't access it, so detect that and avoid strange errors for the user.
206
				oWindow.opener = window ;
207
			}
208
			catch(e)
209
			{
210
				alert( oEditor.FCKLang.BrowseServerBlocked ) ;
211
			}
212
		}
213
		else
214
			alert( oEditor.FCKLang.BrowseServerBlocked ) ;
215
    }
216
    else
217
		window.open( url, 'FCKBrowseWindow', sOptions ) ;
190
	window.open( url, 'FCKBrowseWindow', sOptions ) ;
218 191
}
219 192

  
220 193
/**
trunk/wb/modules/fckeditor/fckeditor/editor/dialog/fck_listprop.html
67 67
	dialog.SetOkButton( true ) ;
68 68
	dialog.SetAutoSize( true ) ;
69 69

  
70
	SelectField( 'txtStartPosition' ) ;
70
	SelectField( sListType == 'OL' ? 'txtStartPosition' : 'selBulleted' ) ;
71 71
}
72 72

  
73 73
function Ok()
trunk/wb/modules/fckeditor/fckeditor/editor/fckeditor.original.html
103 103
LoadScript( '_source/internals/fck_' + sSuffix + '.js' ) ;
104 104
LoadScript( '_source/internals/fckconfig.js' ) ;
105 105

  
106
LoadScript( '_source/internals/fckdebug.js' ) ;
106
LoadScript( '_source/internals/fckdebug_empty.js' ) ;
107 107
LoadScript( '_source/internals/fckdomtools.js' ) ;
108 108
LoadScript( '_source/internals/fcktools.js' ) ;
109 109
LoadScript( '_source/internals/fcktools_' + sSuffix + '.js' ) ;
......
237 237

  
238 238
FCKConfig_PreProcess() ;
239 239

  
240
var FCK_InternalCSS			= FCKConfig.FullBasePath + 'css/fck_internal.css' ;					// @Packager.RemoveLine
241
var FCK_ShowTableBordersCSS	= FCKConfig.FullBasePath + 'css/fck_showtableborders_gecko.css' ;	// @Packager.RemoveLine
240
// Load the full debug script.
241
if ( FCKConfig.Debug )
242
	LoadScript( '_source/internals/fckdebug.js' ) ;
243

  
244
	</script>
245
	<script type="text/javascript">
246

  
247
var FCK_InternalCSS			= FCKConfig.BasePath + 'css/fck_internal.css' ;					// @Packager.RemoveLine
248
var FCK_ShowTableBordersCSS	= FCKConfig.BasePath + 'css/fck_showtableborders_gecko.css' ;	// @Packager.RemoveLine
242 249
/* @Packager.RemoveLine
243
// CSS minified by http://iceyboard.no-ip.org/projects/css_compressor
244
var FCK_InternalCSS			= FCKTools.FixCssUrls( FCKConfig.FullBasePath + 'css/', 'html{min-height:100%}table.FCK__ShowTableBorders,table.FCK__ShowTableBorders td,table.FCK__ShowTableBorders th{border:#d3d3d3 1px solid}form{border:1px dotted #F00;padding:2px}.FCK__Flash{border:#a9a9a9 1px solid;background-position:center center;background-image:url(images/fck_flashlogo.gif);background-repeat:no-repeat;width:80px;height:80px}.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}.FCK__AnchorC{border:1px dotted #00F;background-position:1px center;background-image:url(images/fck_anchor.gif);background-repeat:no-repeat;padding-left:18px}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:#999 1px dotted;border-bottom:#999 1px dotted;border-right:0;border-left:0;height:5px}.FCK__InputHidden{width:19px;height:18px;background-image:url(images/fck_hiddenfield.gif);background-repeat:no-repeat;vertical-align:text-bottom;background-position:center center}.FCK__ShowBlocks p,.FCK__ShowBlocks div,.FCK__ShowBlocks pre,.FCK__ShowBlocks address,.FCK__ShowBlocks blockquote,.FCK__ShowBlocks h1,.FCK__ShowBlocks h2,.FCK__ShowBlocks h3,.FCK__ShowBlocks h4,.FCK__ShowBlocks h5,.FCK__ShowBlocks h6{background-repeat:no-repeat;border:1px dotted gray;padding-top:8px;padding-left:8px}.FCK__ShowBlocks p{background-image:url(images/block_p.png)}.FCK__ShowBlocks div{background-image:url(images/block_div.png)}.FCK__ShowBlocks pre{background-image:url(images/block_pre.png)}.FCK__ShowBlocks address{background-image:url(images/block_address.png)}.FCK__ShowBlocks blockquote{background-image:url(images/block_blockquote.png)}.FCK__ShowBlocks h1{background-image:url(images/block_h1.png)}.FCK__ShowBlocks h2{background-image:url(images/block_h2.png)}.FCK__ShowBlocks h3{background-image:url(images/block_h3.png)}.FCK__ShowBlocks h4{background-image:url(images/block_h4.png)}.FCK__ShowBlocks h5{background-image:url(images/block_h5.png)}.FCK__ShowBlocks h6{background-image:url(images/block_h6.png)}' ) ;
245
var FCK_ShowTableBordersCSS	= FCKTools.FixCssUrls( FCKConfig.FullBasePath + 'css/', '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,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}' ) ;
250
// CSS minified by http://iceyboard.no-ip.org/projects/css_compressor (see _dev/css_compression.txt).
251
var FCK_InternalCSS			= FCKTools.FixCssUrls( FCKConfig.BasePath + 'css/', 'html{min-height:100%}table.FCK__ShowTableBorders,table.FCK__ShowTableBorders td,table.FCK__ShowTableBorders th{border:#d3d3d3 1px solid}form{border:1px dotted #F00;padding:2px}.FCK__Flash{border:#a9a9a9 1px solid;background-position:center center;background-image:url(images/fck_flashlogo.gif);background-repeat:no-repeat;width:80px;height:80px}.FCK__UnknownObject{border:#a9a9a9 1px solid;background-position:center center;background-image:url(images/fck_plugin.gif);background-repeat:no-repeat;width:80px;height:80px}.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}.FCK__AnchorC{border:1px dotted #00F;background-position:1px center;background-image:url(images/fck_anchor.gif);background-repeat:no-repeat;padding-left:18px}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:#999 1px dotted;border-bottom:#999 1px dotted;border-right:0;border-left:0;height:5px}.FCK__InputHidden{width:19px;height:18px;background-image:url(images/fck_hiddenfield.gif);background-repeat:no-repeat;vertical-align:text-bottom;background-position:center center}.FCK__ShowBlocks p,.FCK__ShowBlocks div,.FCK__ShowBlocks pre,.FCK__ShowBlocks address,.FCK__ShowBlocks blockquote,.FCK__ShowBlocks h1,.FCK__ShowBlocks h2,.FCK__ShowBlocks h3,.FCK__ShowBlocks h4,.FCK__ShowBlocks h5,.FCK__ShowBlocks h6{background-repeat:no-repeat;border:1px dotted gray;padding-top:8px;padding-left:8px}.FCK__ShowBlocks p{background-image:url(images/block_p.png)}.FCK__ShowBlocks div{background-image:url(images/block_div.png)}.FCK__ShowBlocks pre{background-image:url(images/block_pre.png)}.FCK__ShowBlocks address{background-image:url(images/block_address.png)}.FCK__ShowBlocks blockquote{background-image:url(images/block_blockquote.png)}.FCK__ShowBlocks h1{background-image:url(images/block_h1.png)}.FCK__ShowBlocks h2{background-image:url(images/block_h2.png)}.FCK__ShowBlocks h3{background-image:url(images/block_h3.png)}.FCK__ShowBlocks h4{background-image:url(images/block_h4.png)}.FCK__ShowBlocks h5{background-image:url(images/block_h5.png)}.FCK__ShowBlocks h6{background-image:url(images/block_h6.png)}' ) ;
252
var FCK_ShowTableBordersCSS	= FCKTools.FixCssUrls( FCKConfig.BasePath + 'css/', '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,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}' ) ;
246 253
@Packager.RemoveLine */
247 254

  
248 255
// Popup the debug window if debug mode is set to true. It guarantees that the
trunk/wb/modules/fckeditor/fckeditor/editor/lang/_translationstatus.txt
44 44
fr-ca.js   Found: 411   Missing: 0
45 45
fr.js      Found: 411   Missing: 0
46 46
gl.js      Found: 381   Missing: 30
47
gu.js      Found: 411   Missing: 0
47 48
he.js      Found: 411   Missing: 0
48 49
hi.js      Found: 411   Missing: 0
49 50
hr.js      Found: 411   Missing: 0
50 51
hu.js      Found: 411   Missing: 0
51
it.js      Found: 396   Missing: 15
52
it.js      Found: 410   Missing: 1
52 53
ja.js      Found: 411   Missing: 0
53 54
km.js      Found: 370   Missing: 41
54 55
ko.js      Found: 390   Missing: 21
trunk/wb/modules/fckeditor/fckeditor/editor/lang/it.js
45 45
InsertLink			: "Inserisci/Modifica collegamento",
46 46
RemoveLink			: "Elimina collegamento",
47 47
Anchor				: "Inserisci/Modifica Ancora",
48
AnchorDelete		: "Remove Anchor",	//MISSING
48
AnchorDelete		: "Rimuovi Ancora",
49 49
InsertImageLbl		: "Immagine",
50 50
InsertImage			: "Inserisci/Modifica immagine",
51 51
InsertFlashLbl		: "Oggetto Flash",
......
105 105
ImageButton		: "Bottone immagine",
106 106

  
107 107
FitWindow		: "Massimizza l'area dell'editor",
108
ShowBlocks		: "Show Blocks",	//MISSING
108
ShowBlocks		: "Visualizza Blocchi",
109 109

  
110 110
// Context Menu
111 111
EditLink			: "Modifica collegamento",
112 112
CellCM				: "Cella",
113 113
RowCM				: "Riga",
114 114
ColumnCM			: "Colonna",
115
InsertRowAfter		: "Insert Row After",	//MISSING
116
InsertRowBefore		: "Insert Row Before",	//MISSING
115
InsertRowAfter		: "Inserisci Riga Dopo",
116
InsertRowBefore		: "Inserisci Riga Prima",
117 117
DeleteRows			: "Elimina righe",
118
InsertColumnAfter	: "Insert Column After",	//MISSING
119
InsertColumnBefore	: "Insert Column Before",	//MISSING
118
InsertColumnAfter	: "Inserisci Colonna Dopo",
119
InsertColumnBefore	: "Inserisci Colonna Prima",
120 120
DeleteColumns		: "Elimina colonne",
121
InsertCellAfter		: "Insert Cell After",	//MISSING
122
InsertCellBefore	: "Insert Cell Before",	//MISSING
121
InsertCellAfter		: "Inserisci Cella Dopo",
122
InsertCellBefore	: "Inserisci Cella Prima",
123 123
DeleteCells			: "Elimina celle",
124 124
MergeCells			: "Unisce celle",
125
MergeRight			: "Merge Right",	//MISSING
126
MergeDown			: "Merge Down",	//MISSING
127
HorizontalSplitCell	: "Split Cell Horizontally",	//MISSING
128
VerticalSplitCell	: "Split Cell Vertically",	//MISSING
125
MergeRight			: "Unisci a Destra",
126
MergeDown			: "Unisci in Basso",
127
HorizontalSplitCell	: "Dividi Cella Orizzontalmente",
128
VerticalSplitCell	: "Dividi Cella Verticalmente",
129 129
TableDelete			: "Cancella Tabella",
130 130
CellProperties		: "Proprietà cella",
131 131
TableProperties		: "Proprietà tabella",
......
332 332
DlgCellBtnSelect	: "Scegli...",
333 333

  
334 334
// Find and Replace Dialog
335
DlgFindAndReplaceTitle	: "Find and Replace",	//MISSING
335
DlgFindAndReplaceTitle	: "Cerca e Sostituisci",
336 336

  
337 337
// Find Dialog
338 338
DlgFindTitle		: "Trova",
......
356 356
PasteFromWord	: "Incolla da Word",
357 357

  
358 358
DlgPasteMsg2	: "Incolla il testo all'interno dell'area sottostante usando la scorciatoia di tastiere (<STRONG>Ctrl+V</STRONG>) e premi <STRONG>OK</STRONG>.",
359
DlgPasteSec		: "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.",	//MISSING
359
DlgPasteSec		: "A causa delle impostazioni di sicurezza del browser,l'editor non è in grado di accedere direttamente agli appunti. E' pertanto necessario incollarli di nuovo in questa finestra.",
360 360
DlgPasteIgnoreFont		: "Ignora le definizioni di Font",
361 361
DlgPasteRemoveStyles	: "Rimuovi le definizioni di Stile",
362 362

  
trunk/wb/modules/fckeditor/fckeditor/editor/plugins/dragresizetable/fckplugin.js
88 88
	},
89 89
	"_ResizeBarMouseDownListener" : function( evt )
90 90
	{
91
		if ( ! evt )
92
			evt = window.event ;
93 91
		if ( FCKDragTableHandler._LeftCell )
94 92
			FCKDragTableHandler._MouseMoveMode = 1 ;
95 93
		if ( FCKBrowserInfo.IsIE )
......
121 119
		FCKDragTableHandler._MinimumX = minX + offset.x ;
122 120
		FCKDragTableHandler._MaximumX = maxX + offset.x ;
123 121
		FCKDragTableHandler._LastX = null ;
122

  
123
		if (evt.preventDefault)
124
			evt.preventDefault();
125
		else
126
			evt.returnValue = false;
124 127
	},
125 128
	"_ResizeBarMouseUpListener" : function( evt )
126 129
	{
127
		if ( ! evt )
128
			evt = window.event ;
129 130
		FCKDragTableHandler._MouseMoveMode = 0 ;
130 131
		FCKDragTableHandler._HideResizeBar() ;
131 132

  
......
218 219
	},
219 220
	"_ResizeBarMouseMoveListener" : function( evt )
220 221
	{
221
		if ( ! evt )
222
			evt = window.event ;
223 222
		if ( FCKDragTableHandler._MouseMoveMode == 0 )
224 223
			return FCKDragTableHandler._MouseFindHandler( FCK, evt ) ;
225 224
		else
......
421 420
			// Disable drag and drop, and selection for the filler image.
422 421
			var disabledListener = function( evt )
423 422
			{
424
				if ( ! evt )
425
					evt = window.event ;
426 423
				if ( evt.preventDefault )
427 424
					evt.preventDefault() ;
428 425
				else
trunk/wb/modules/fckeditor/fckeditor/editor/fckdialog.html
27 27
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
28 28
		<meta name="robots" content="noindex, nofollow" />
29 29
		<script type="text/javascript">
30
// <![CDATA[
31

  
30 32
// Domain relaxation logic.
31 33
(function()
32 34
{
......
190 192
		}
191 193
	}
192 194

  
195
	/**
196
	 * IE6 has a similar bug where it sometimes thinks $('contents') has an
197
	 * offsetHeight of 0 (#2114).
198
	 */
199
	if ( FCKBrowserInfo.IsIE && !FCKBrowserInfo.IsIE7 )
200
	{
201
		var originalRefreshContainerSize = retval.RefreshContainerSize ;
202
		retval.RefreshContainerSize = function()
203
		{
204
			FCKTools.SetTimeout( originalRefreshContainerSize, 1, retval ) ;
205
		}
206
	}
207

  
193 208
	window.onresize = function()
194 209
	{
195 210
		retval.RefreshContainerSize() ;
......
232 247

  
233 248
			var throbberParent = $( 'throbberBlock' ) ;
234 249

  
235
			// Create the throbber blocks.
236
			var classIds = [ 1,2,3,4,5,4,3,2 ] ;
237
			while ( classIds.length > 0 )
238
				throbberParent.appendChild( document.createElement( 'div' ) ).className = ' throbber_' + classIds.shift() ;
250
			if (throbberParent.childNodes.length == 0)
251
			{
252
				// Create the throbber blocks.
253
				var classIds = [ 1,2,3,4,5,4,3,2 ] ;
254
				while ( classIds.length > 0 )
255
					throbberParent.appendChild( document.createElement( 'div' ) ).className = ' throbber_' + classIds.shift() ;
256
			}
239 257

  
240 258
			// Center the throbber.
241 259
			var frm = $( 'contents' ) ;
......
248 266
			// Show it.
249 267
			throbberParent.style.visibility = ''  ;
250 268

  
269
			// Hide tabs and buttons:
270
			$( 'Tabs' ).style.visibility = 'hidden' ;
271
			$( 'PopupButtons' ).style.visibility = 'hidden' ;
272

  
251 273
			// Setup the animation interval.
252 274
			timer = setInterval( updateThrobber, 100 ) ;
253 275
		},
......
260 282
				timer = null ;
261 283
			}
262 284

  
263
			var throbberParent = document.getElementById( 'throbberBlock' ) ;
264
			if ( throbberParent )
265
				FCKDomTools.RemoveNode( throbberParent ) ;
285
			$( 'throbberBlock' ).style.visibility = 'hidden' ;
286

  
287
			// Show tabs and buttons:
288
			$( 'Tabs' ).style.visibility = '' ;
289
			$( 'PopupButtons' ).style.visibility = '' ;
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff