JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
vanilla ckeditor-3.0
[ckeditor.git] / _source / skins / kama / skin.js
diff --git a/_source/skins/kama/skin.js b/_source/skins/kama/skin.js
new file mode 100644 (file)
index 0000000..b06443a
--- /dev/null
@@ -0,0 +1,291 @@
+/*\r
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.\r
+For licensing, see LICENSE.html or http://ckeditor.com/license\r
+*/\r
+\r
+CKEDITOR.skins.add( 'kama', (function()\r
+{\r
+       var preload = [];\r
+\r
+       if ( CKEDITOR.env.ie && CKEDITOR.env.version < 7 )\r
+       {\r
+               // For IE6, we need to preload some images, otherwhise they will be\r
+               // downloaded several times (CSS background bug).\r
+               preload.push( 'icons.png', 'images/sprites_ie6.png', 'images/dialog_sides.gif' );\r
+       }\r
+\r
+       return {\r
+               preload         : preload,\r
+               editor          : { css : [ 'editor.css' ] },\r
+               dialog          : { css : [ 'dialog.css' ] },\r
+               templates       : { css : [ 'templates.css' ] },\r
+               margins         : [ 0, 0, 0, 0 ],\r
+               init : function( editor )\r
+               {\r
+                       if ( editor.config.width && !isNaN( editor.config.width ) )\r
+                               editor.config.width -= 12;\r
+\r
+                       var menuHead;\r
+                       function menuSetUiColor( color )\r
+                       {\r
+                               if ( !menuHead )\r
+                                       return null;\r
+\r
+                               var uiStyle = menuHead.append('style');\r
+\r
+                               var cssSrc = "/* UI Color Support */\\r
+.cke_skin_kama .cke_menuitem .cke_icon_wrapper\\r
+{\\r
+       background-color: $color !important;\\r
+       border-color: $color !important;\\r
+}\\r
+\\r
+.cke_skin_kama .cke_menuitem a:hover .cke_icon_wrapper,\\r
+.cke_skin_kama .cke_menuitem a:focus .cke_icon_wrapper,\\r
+.cke_skin_kama .cke_menuitem a:active .cke_icon_wrapper\\r
+{\\r
+       background-color: $color !important;\\r
+       border-color: $color !important;\\r
+}\\r
+\\r
+.cke_skin_kama .cke_menuitem a:hover .cke_label,\\r
+.cke_skin_kama .cke_menuitem a:focus .cke_label,\\r
+.cke_skin_kama .cke_menuitem a:active .cke_label\\r
+{\\r
+       background-color: $color !important;\\r
+}\\r
+\\r
+.cke_skin_kama .cke_menuitem a.cke_disabled:hover .cke_label,\\r
+.cke_skin_kama .cke_menuitem a.cke_disabled:focus .cke_label,\\r
+.cke_skin_kama .cke_menuitem a.cke_disabled:active .cke_label\\r
+{\\r
+       background-color: transparent !important;\\r
+}\\r
+\\r
+.cke_skin_kama .cke_menuitem a.cke_disabled:hover .cke_icon_wrapper,\\r
+.cke_skin_kama .cke_menuitem a.cke_disabled:focus .cke_icon_wrapper,\\r
+.cke_skin_kama .cke_menuitem a.cke_disabled:active .cke_icon_wrapper\\r
+{\\r
+       background-color: $color !important;\\r
+       border-color: $color !important;\\r
+}\\r
+\\r
+.cke_skin_kama .cke_menuitem a.cke_disabled .cke_icon_wrapper\\r
+{\\r
+       background-color: $color !important;\\r
+       border-color: $color !important;\\r
+}\\r
+\\r
+.cke_skin_kama .cke_menuseparator\\r
+{\\r
+       background-color: $color !important;\\r
+}\\r
+\\r
+.cke_skin_kama .cke_menuitem a:hover,\\r
+.cke_skin_kama .cke_menuitem a:focus,\\r
+.cke_skin_kama .cke_menuitem a:active\\r
+{\\r
+       background-color: $color !important;\\r
+}";\r
+\r
+                               uiStyle.setAttribute( "type", "text/css" );\r
+                               var regex = /\$color/g;\r
+\r
+                               // We have to split CSS declarations for webkit.\r
+                               if ( CKEDITOR.env.webkit )\r
+                               {\r
+                                       cssSrc = cssSrc.split( '}' ).slice( 0, -1 );\r
+                                       for ( var i in cssSrc )\r
+                                                       cssSrc[ i ] = cssSrc[ i ].split( '{' );\r
+                               }\r
+\r
+                               return ( menuSetUiColor =\r
+                                       function( color )\r
+                                       {\r
+                                               if ( CKEDITOR.env.webkit )\r
+                                               {\r
+                                                       for ( var i in cssSrc )\r
+                                                               uiStyle.$.sheet.addRule(\r
+                                                                       cssSrc[ i ][ 0 ], cssSrc[ i ][ 1 ].replace( regex, color )\r
+                                                               );\r
+                                               }\r
+                                               else\r
+                                               {\r
+                                                       var css = cssSrc.replace( regex, color );\r
+\r
+                                                       if ( CKEDITOR.env.ie )\r
+                                                               uiStyle.$.styleSheet.cssText = css;\r
+                                                       else\r
+                                                               uiStyle.setHtml( css );\r
+                                               }\r
+                                       })( color );\r
+                       }\r
+\r
+                       CKEDITOR.tools.extend( editor,\r
+                       {\r
+                               uiColor: null,\r
+\r
+                               getUiColor : function()\r
+                               {\r
+                                       return this.uiColor;\r
+                               },\r
+\r
+                               setUiColor : function( color )\r
+                               {\r
+                                       var uiStyle = CKEDITOR.document.getHead().append('style'),\r
+                                               cssId = '#cke_' + editor.name.replace('.', '\\.');\r
+\r
+                                       var cssSelectors =\r
+                                               [\r
+                                                       cssId + " .cke_wrapper",\r
+                                                       cssId + "_dialog .cke_dialog_contents",\r
+                                                       cssId + "_dialog a.cke_dialog_tab",\r
+                                                       cssId + "_dialog .cke_dialog_footer"\r
+                                               ].join( ',' );\r
+                                       var cssProperties = "background-color: $color !important;";\r
+\r
+                                       uiStyle.setAttribute("type", "text/css");\r
+\r
+                                       return ( this.setUiColor =\r
+                                               function( color )\r
+                                               {\r
+                                                       var css = cssProperties.replace( '$color', color );\r
+                                                       editor.uiColor = color;\r
+\r
+                                                       if ( CKEDITOR.env.ie )\r
+                                                               uiStyle.$.styleSheet.cssText = cssSelectors + '{' + css + '}';\r
+                                                       else if ( CKEDITOR.env.webkit )\r
+                                                               uiStyle.$.sheet.addRule( cssSelectors, css );\r
+                                                       else\r
+                                                               uiStyle.setHtml( cssSelectors + '{' + css + '}' );\r
+\r
+                                                       menuSetUiColor( color );\r
+                                               })( color );\r
+                               }\r
+                       });\r
+\r
+                       // If the "menu" plugin is loaded, register the listeners.\r
+                       if ( CKEDITOR.menu )\r
+                       {\r
+                               var old = CKEDITOR.menu.prototype.show;\r
+\r
+                               CKEDITOR.menu.prototype.show = function()\r
+                               {\r
+                                       old.apply( this, arguments );\r
+\r
+                                       if ( !menuHead && editor == this.editor )\r
+                                       {\r
+                                               // Save reference.\r
+                                               menuHead = this._.element.getDocument().getHead();\r
+                                               menuSetUiColor( editor.getUiColor() );\r
+                                       }\r
+                               };\r
+                       }\r
+\r
+                       // Apply UI color if specified in config.\r
+                       if ( editor.config.uiColor )\r
+                               editor.setUiColor( editor.config.uiColor );\r
+\r
+                       // Fix editor's width. HPadding and 100% width iframe issue.\r
+//                     if ( CKEDITOR.env.ie && CKEDITOR.env.quirks )\r
+//                     {\r
+//                             editor.on( 'mode', function( event )\r
+//                             {\r
+//                                     var container = editor.getResizable();\r
+//                                     editor.resize( container.$.offsetWidth-10, container.$.offsetHeight );\r
+//                                     event.removeListener();\r
+//                             });\r
+//                     }\r
+\r
+//                     if ( CKEDITOR.env.ie && ( CKEDITOR.env.quirks || CKEDITOR.env.version < 7 ) )\r
+//                     {\r
+//                             editor.on( 'themeLoaded', function( event )\r
+//                             {\r
+//                                     var toolbars = editor.container.getChild( [0, 0, 0, 0, 0, 0, 0] ).getChildren();\r
+//                                     for ( var i = 0 ; i < toolbars.count() ; i++ )\r
+//                                     {\r
+//                                             var toolbar = toolbars.getItem( i );\r
+\r
+//                                             var last = toolbar.getLast();\r
+//                                             if ( !last || !last.getPrevious().hasClass( 'cke_rcombo' ) )\r
+//                                                     continue;\r
+//\r
+//                                             last.addClass( 'cke_toolbar_end_last' );\r
+//                                     }\r
+//                             });\r
+//                     }\r
+               }\r
+       };\r
+})() );\r
+\r
+if ( CKEDITOR.dialog )\r
+{\r
+       CKEDITOR.dialog.on( 'resize', function( evt )\r
+               {\r
+                       var data = evt.data,\r
+                               width = data.width,\r
+                               height = data.height,\r
+                               dialog = data.dialog,\r
+                               contents = dialog.parts.contents,\r
+                               standardsMode = !CKEDITOR.env.quirks;\r
+\r
+                       if ( data.skin != 'kama' )\r
+                               return;\r
+\r
+                       contents.setStyles(\r
+                               ( CKEDITOR.env.ie || ( CKEDITOR.env.gecko && CKEDITOR.env.version < 10900 ) ) ?         // IE && FF2\r
+                                       {\r
+                                               width : width + 'px',\r
+                                               height : height + 'px'\r
+                                       }\r
+                               :\r
+                                       {\r
+                                               // To avoid having scrollbars in the dialogs, we're\r
+                                               // (for now) using the "min-xxx" properties, for\r
+                                               // browsers which well support it (#3878).\r
+                                               'min-width' : width + 'px',\r
+                                               'min-height' : height + 'px'\r
+                                       });\r
+\r
+                       if ( !CKEDITOR.env.ie )\r
+                               return;\r
+\r
+                       // Fix the size of the elements which have flexible lengths.\r
+                       setTimeout( function()\r
+                               {\r
+                                       var body = contents.getParent(),\r
+                                               innerDialog = body.getParent();\r
+\r
+                                       // tc\r
+                                       var el = innerDialog.getChild( 2 );\r
+                                       el.setStyle( 'width', ( body.$.offsetWidth ) + 'px' );\r
+\r
+                                       // bc\r
+                                       el = innerDialog.getChild( 7 );\r
+                                       el.setStyle( 'width', ( body.$.offsetWidth - 28 ) + 'px' );\r
+\r
+                                       // ml\r
+                                       el = innerDialog.getChild( 4 );\r
+                                       el.setStyle( 'height', ( body.$.offsetHeight - 31 - 14 ) + 'px' );\r
+\r
+                                       // mr\r
+                                       el = innerDialog.getChild( 5 );\r
+                                       el.setStyle( 'height', ( body.$.offsetHeight - 31 - 14 ) + 'px' );\r
+                               },\r
+                               100 );\r
+               });\r
+}\r
+\r
+/**\r
+ * The base user interface color to be used by the editor. Not all skins are\r
+ * compatible with this setting.\r
+ * @name CKEDITOR.config.uiColor\r
+ * @type String\r
+ * @default '' (empty)\r
+ * @example\r
+ * // Using a color code.\r
+ * config.uiColor = '#AADC6E';\r
+ * @example\r
+ * // Using an HTML color name.\r
+ * config.uiColor = 'Gold';\r
+ */\r