PluginProbe
Wp-Insert / 1.7.2
Wp-Insert v1.7.2
trunk 1.0 1.1 1.2 1.2.1 1.2.2 1.3.0 1.3.1 1.3.3 1.4 1.5.0 1.5.1 1.5.2 1.5.3 1.6.0 1.6.1 1.6.2 1.7 1.7.1 1.7.2 1.7.3 1.7.4 1.7.5 1.7.6 2.0 All 63 releases
wp-insert / fckeditor / editor / _source / classes / fckelementpath.js

fckelementpath.js in Wp-Insert 1.7.2, at fckeditor/editor/_source/classes/fckelementpath.js

90 lines 2.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 /*
2 * FCKeditor - The text editor for Internet - http://www.fckeditor.net
3 * Copyright (C) 2003-2009 Frederico Caldeira Knabben
4 *
5 * == BEGIN LICENSE ==
6 *
7 * Licensed under the terms of any of the following licenses at your
8 * choice:
9 *
10 * - GNU General Public License Version 2 or later (the "GPL")
11 * http://www.gnu.org/licenses/gpl.html
12 *
13 * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
14 * http://www.gnu.org/licenses/lgpl.html
15 *
16 * - Mozilla Public License Version 1.1 or later (the "MPL")
17 * http://www.mozilla.org/MPL/MPL-1.1.html
18 *
19 * == END LICENSE ==
20 *
21 * Manages the DOM ascensors element list of a specific DOM node
22 * (limited to body, inclusive).
23 */
24
25 var FCKElementPath = function( lastNode )
26 {
27 var eBlock = null ;
28 var eBlockLimit = null ;
29
30 var aElements = new Array() ;
31
32 var e = lastNode ;
33 while ( e )
34 {
35 if ( e.nodeType == 1 )
36 {
37 if ( !this.LastElement )
38 this.LastElement = e ;
39
40 var sElementName = e.nodeName.toLowerCase() ;
41 if ( FCKBrowserInfo.IsIE && e.scopeName != 'HTML' )
42 sElementName = e.scopeName.toLowerCase() + ':' + sElementName ;
43
44 if ( !eBlockLimit )
45 {
46 if ( !eBlock && FCKListsLib.PathBlockElements[ sElementName ] != null )
47 eBlock = e ;
48
49 if ( FCKListsLib.PathBlockLimitElements[ sElementName ] != null )
50 {
51 // DIV is considered the Block, if no block is available (#525)
52 // and if it doesn't contain other blocks.
53 if ( !eBlock && sElementName == 'div' && !FCKElementPath._CheckHasBlock( e ) )
54 eBlock = e ;
55 else
56 eBlockLimit = e ;
57 }
58 }
59
60 aElements.push( e ) ;
61
62 if ( sElementName == 'body' )
63 break ;
64 }
65 e = e.parentNode ;
66 }
67
68 this.Block = eBlock ;
69 this.BlockLimit = eBlockLimit ;
70 this.Elements = aElements ;
71 }
72
73 /**
74 * Check if an element contains any block element.
75 */
76 FCKElementPath._CheckHasBlock = function( element )
77 {
78 var childNodes = element.childNodes ;
79
80 for ( var i = 0, count = childNodes.length ; i < count ; i++ )
81 {
82 var child = childNodes[i] ;
83
84 if ( child.nodeType == 1 && FCKListsLib.BlockElements[ child.nodeName.toLowerCase() ] )
85 return true ;
86 }
87
88 return false ;
89 }
90