JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
vanilla ckeditor-3.4.2
[ckeditor.git] / _source / plugins / div / dialogs / div.js
index e3b39c3..4b67ed2 100644 (file)
                        var containedBlocks = [], block;\r
 \r
                        // Get all ranges from the selection.\r
-                       var selection = editor.document.getSelection();\r
-                       var ranges = selection.getRanges();\r
+                       var selection = editor.document.getSelection(),\r
+                               ranges = selection.getRanges();\r
                        var bookmarks = selection.createBookmarks();\r
                        var i, iterator;\r
 \r
                                                                {\r
                                                                        var styleName;\r
                                                                        if ( ( styleName = this.getValue() ) )\r
-                                                                               styles[ styleName ].applyToObject( element );\r
+                                                                       {\r
+                                                                               var style = styles[ styleName ];\r
+                                                                               var customData = element.getCustomData( 'elementStyle' ) || '';\r
+\r
+                                                                               style.applyToObject( element );\r
+                                                                               element.setCustomData( 'elementStyle', customData + style._.definition.attributes.style );\r
+                                                                       }\r
                                                                }\r
                                                        },\r
                                                        {\r
                                                                                        commit : function( element )\r
                                                                                        {\r
                                                                                                // Merge with 'elementStyle', which is of higher priority.\r
-                                                                                               var value = this.getValue(),\r
-                                                                                                               merged = [ value, element.getAttribute( 'style' ) ].join( ';' );\r
-                                                                                               value && element.setAttribute( 'style', merged );\r
+                                                                                               var merged = this.getValue() + ( element.getCustomData( 'elementStyle' ) || '' );\r
+                                                                                               element.setAttribute( 'style', merged );\r
                                                                                        }\r
                                                                                }\r
                                                                ]\r
                        ],\r
                        onLoad : function()\r
                        {\r
-                               setupFields.call(this);\r
+                               setupFields.call( this );\r
 \r
                                // Preparing for the 'elementStyle' field.\r
                                var dialog = this,\r
-                                        stylesField = this.getContentElement( 'info', 'elementStyle' ),\r
-                                        // Reuse the 'stylescombo' plugin's styles definition.\r
-                                        customStylesConfig =  editor.config.stylesCombo_stylesSet,\r
-                                        stylesSetName = customStylesConfig && customStylesConfig.split( ':' )[ 0 ];\r
+                                        stylesField = this.getContentElement( 'info', 'elementStyle' );\r
 \r
-                               if ( stylesSetName )\r
+                                // Reuse the 'stylescombo' plugin's styles definition.\r
+                               editor.getStylesSet( function( stylesDefinitions )\r
                                {\r
-                                       CKEDITOR.stylesSet.load( stylesSetName,\r
-                                               function( stylesSet )\r
-                                               {\r
-                                                       var stylesDefinitions = stylesSet[ stylesSetName ],\r
-                                                               styleName;\r
+                                       var styleName;\r
 \r
-                                                       if ( stylesDefinitions )\r
+                                       if ( stylesDefinitions )\r
+                                       {\r
+                                               // Digg only those styles that apply to 'div'.\r
+                                               for ( var i = 0 ; i < stylesDefinitions.length ; i++ )\r
+                                               {\r
+                                                       var styleDefinition = stylesDefinitions[ i ];\r
+                                                       if ( styleDefinition.element && styleDefinition.element == 'div' )\r
                                                        {\r
-                                                               // Digg only those styles that apply to 'div'.\r
-                                                               for ( var i = 0 ; i < stylesDefinitions.length ; i++ )\r
-                                                               {\r
-                                                                       var styleDefinition = stylesDefinitions[ i ];\r
-                                                                       if ( styleDefinition.element && styleDefinition.element == 'div' )\r
-                                                                       {\r
-                                                                               styleName = styleDefinition.name;\r
-                                                                               styles[ styleName ] = new CKEDITOR.style( styleDefinition );\r
+                                                               styleName = styleDefinition.name;\r
+                                                               styles[ styleName ] = new CKEDITOR.style( styleDefinition );\r
 \r
-                                                                               // Populate the styles field options with style name.\r
-                                                                               stylesField.items.push( [ styleName, styleName ] );\r
-                                                                               stylesField.add( styleName, styleName );\r
-                                                                       }\r
-                                                               }\r
+                                                               // Populate the styles field options with style name.\r
+                                                               stylesField.items.push( [ styleName, styleName ] );\r
+                                                               stylesField.add( styleName, styleName );\r
                                                        }\r
+                                               }\r
+                                       }\r
 \r
+                                       // We should disable the content element\r
+                                       // it if no options are available at all.\r
+                                       stylesField[ stylesField.items.length > 1 ? 'enable' : 'disable' ]();\r
 \r
-                                                       // We should disable the content element\r
-                                                       // it if no options are available at all.\r
-                                                       stylesField[ stylesField.items.length > 1 ? 'enable' : 'disable' ]();\r
-\r
-                                                       // Now setup the field value manually.\r
-                                                       setTimeout( function() { stylesField.setup( dialog._element ); }, 0 );\r
-                                               } );\r
-                               }\r
+                                       // Now setup the field value manually.\r
+                                       setTimeout( function() { stylesField.setup( dialog._element ); }, 0 );\r
+                               } );\r
                        },\r
                        onShow : function()\r
                        {\r
                        },\r
                        onHide : function()\r
                        {\r
+                               // Remove style only when editing existing DIV. (#6315)\r
+                               if ( command == 'editdiv' )\r
+                                       this._element.removeCustomData( 'elementStyle' );\r
                                delete this._element;\r
                        }\r
                };\r