source: branches/1.2/workflow/js/fckeditor/editor/_source/classes/fckstyledef_gecko.js @ 1349

Revision 1349, 2.7 KB checked in by niltonneto, 15 years ago (diff)

Ticket #561 - Inclusão do módulo Workflow faltante nessa versão.

  • Property svn:executable set to *
Line 
1/*
2 * FCKeditor - The text editor for Internet - http://www.fckeditor.net
3 * Copyright (C) 2003-2007 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 * FCKStyleDef Class: represents a single stylke definition. (Gecko specific)
22 */
23
24FCKStyleDef.prototype.ApplyToSelection = function()
25{
26        if ( FCKSelection.GetType() == 'Text' && !this.IsObjectElement )
27        {
28                var oSelection = FCK.ToolbarSet.CurrentInstance.EditorWindow.getSelection() ;
29
30                // Create the main element.
31                var e = FCK.ToolbarSet.CurrentInstance.EditorDocument.createElement( this.Element ) ;
32
33                for ( var i = 0 ; i < oSelection.rangeCount ; i++ )
34                {
35                        e.appendChild( oSelection.getRangeAt(i).extractContents() ) ;
36                }
37
38                // Set the attributes.
39                this._AddAttributes( e ) ;
40
41                // Remove the duplicated elements.
42                this._RemoveDuplicates( e ) ;
43
44                var oRange = oSelection.getRangeAt(0) ;
45                oRange.insertNode( e ) ;
46        }
47        else
48        {
49                var oControl = FCK.ToolbarSet.CurrentInstance.Selection.GetSelectedElement() ;
50                if ( oControl.tagName == this.Element )
51                        this._AddAttributes( oControl ) ;
52        }
53}
54
55FCKStyleDef.prototype._AddAttributes = function( targetElement )
56{
57        for ( var a in this.Attributes )
58        {
59                switch ( a.toLowerCase() )
60                {
61                        case 'src' :
62                                targetElement.setAttribute( '_fcksavedurl', this.Attributes[a], 0 ) ;
63                        default :
64                                targetElement.setAttribute( a, this.Attributes[a], 0 ) ;
65                }
66        }
67}
68
69FCKStyleDef.prototype._RemoveDuplicates = function( parent )
70{
71        for ( var i = 0 ; i < parent.childNodes.length ; i++ )
72        {
73                var oChild = parent.childNodes[i] ;
74
75                if ( oChild.nodeType != 1 )
76                        continue ;
77
78                this._RemoveDuplicates( oChild ) ;
79
80                if ( this.IsEqual( oChild ) )
81                        FCKTools.RemoveOuterTags( oChild ) ;
82        }
83}
84
85FCKStyleDef.prototype.IsEqual = function( e )
86{
87        if ( e.tagName != this.Element )
88                return false ;
89
90        for ( var a in this.Attributes )
91        {
92                if ( e.getAttribute( a ) != this.Attributes[a] )
93                        return false ;
94        }
95
96        return true ;
97}
98
99FCKStyleDef.prototype._RemoveMe = function( elementToCheck )
100{
101        if ( ! elementToCheck )
102                return ;
103
104        var oParent = elementToCheck.parentNode ;
105
106        if ( elementToCheck.nodeType == 1 && this.IsEqual( elementToCheck ) )
107        {
108                if ( this.IsObjectElement )
109                {
110                        for ( var a in this.Attributes )
111                                elementToCheck.removeAttribute( a, 0 ) ;
112                        return ;
113                }
114                else
115                        FCKTools.RemoveOuterTags( elementToCheck ) ;
116        }
117
118        this._RemoveMe( oParent ) ;
119}
Note: See TracBrowser for help on using the repository browser.