source: trunk/admin/inc/FCKeditor/editor/_source/classes/fckstyledef_gecko.js@ 2

Last change on this file since 2 was 2, checked in by root, 15 years ago

importo il progetto

File size: 2.8 KB
Line 
1/*
2 * FCKeditor - The text editor for internet
3 * Copyright (C) 2003-2006 Frederico Caldeira Knabben
4 *
5 * Licensed under the terms of the GNU Lesser General Public License:
6 * http://www.opensource.org/licenses/lgpl-license.php
7 *
8 * For further information visit:
9 * http://www.fckeditor.net/
10 *
11 * "Support Open Source software. What about a donation today?"
12 *
13 * File Name: fckstyledef_gecko.js
14 * FCKStyleDef Class: represents a single stylke definition. (Gecko specific)
15 *
16 * File Authors:
17 * Frederico Caldeira Knabben (fredck@fckeditor.net)
18 */
19
20FCKStyleDef.prototype.ApplyToSelection = function()
21{
22 if ( FCKSelection.GetType() == 'Text' && !this.IsObjectElement )
23 {
24 var oSelection = FCK.ToolbarSet.CurrentInstance.EditorWindow.getSelection() ;
25
26 // Create the main element.
27 var e = FCK.ToolbarSet.CurrentInstance.EditorDocument.createElement( this.Element ) ;
28
29 for ( var i = 0 ; i < oSelection.rangeCount ; i++ )
30 {
31 e.appendChild( oSelection.getRangeAt(i).extractContents() ) ;
32 }
33
34 // Set the attributes.
35 this._AddAttributes( e ) ;
36
37 // Remove the duplicated elements.
38 this._RemoveDuplicates( e ) ;
39
40 var oRange = oSelection.getRangeAt(0) ;
41 oRange.insertNode( e ) ;
42 }
43 else
44 {
45 var oControl = FCK.ToolbarSet.CurrentInstance.Selection.GetSelectedElement() ;
46 if ( oControl.tagName == this.Element )
47 this._AddAttributes( oControl ) ;
48 }
49}
50
51FCKStyleDef.prototype._AddAttributes = function( targetElement )
52{
53 for ( var a in this.Attributes )
54 {
55 switch ( a.toLowerCase() )
56 {
57 case 'src' :
58 targetElement.setAttribute( '_fcksavedurl', this.Attributes[a], 0 ) ;
59
60 default :
61 targetElement.setAttribute( a, this.Attributes[a], 0 ) ;
62 }
63 }
64}
65
66FCKStyleDef.prototype._RemoveDuplicates = function( parent )
67{
68 for ( var i = 0 ; i < parent.childNodes.length ; i++ )
69 {
70 var oChild = parent.childNodes[i] ;
71
72 if ( oChild.nodeType != 1 )
73 continue ;
74
75 this._RemoveDuplicates( oChild ) ;
76
77 if ( this.IsEqual( oChild ) )
78 FCKTools.RemoveOuterTags( oChild ) ;
79 }
80}
81
82FCKStyleDef.prototype.IsEqual = function( e )
83{
84 if ( e.tagName != this.Element )
85 return false ;
86
87 for ( var a in this.Attributes )
88 {
89 if ( e.getAttribute( a ) != this.Attributes[a] )
90 return false ;
91 }
92
93 return true ;
94}
95
96FCKStyleDef.prototype._RemoveMe = function( elementToCheck )
97{
98 if ( ! elementToCheck )
99 return ;
100
101 var oParent = elementToCheck.parentNode ;
102
103 if ( elementToCheck.nodeType == 1 && this.IsEqual( elementToCheck ) )
104 {
105 if ( this.IsObjectElement )
106 {
107 for ( var a in this.Attributes )
108 elementToCheck.removeAttribute( a, 0 ) ;
109 return ;
110 }
111 else
112 FCKTools.RemoveOuterTags( elementToCheck ) ;
113 }
114
115 this._RemoveMe( oParent ) ;
116}
Note: See TracBrowser for help on using the repository browser.