236 lines
6.2 KiB
JavaScript
236 lines
6.2 KiB
JavaScript
/*
|
|
Copyright (c) 2003-2011, CKSource - Frederico Knabben. All rights reserved.
|
|
For licensing, see LICENSE.html or http://ckeditor.com/license
|
|
*/
|
|
|
|
CKEDITOR.skins.add( 'kama', (function()
|
|
{
|
|
var uiColorStylesheetId = 'cke_ui_color';
|
|
|
|
return {
|
|
editor : { css : [ 'editor.css' ] },
|
|
dialog : { css : [ 'dialog.css' ] },
|
|
templates : { css : [ 'templates.css' ] },
|
|
margins : [ 0, 0, 0, 0 ],
|
|
init : function( editor )
|
|
{
|
|
if ( editor.config.width && !isNaN( editor.config.width ) )
|
|
editor.config.width -= 12;
|
|
|
|
var uiColorMenus = [];
|
|
var uiColorRegex = /\$color/g;
|
|
var uiColorMenuCss = "/* UI Color Support */\
|
|
.cke_skin_kama .cke_menuitem .cke_icon_wrapper\
|
|
{\
|
|
background-color: $color !important;\
|
|
border-color: $color !important;\
|
|
}\
|
|
\
|
|
.cke_skin_kama .cke_menuitem a:hover .cke_icon_wrapper,\
|
|
.cke_skin_kama .cke_menuitem a:focus .cke_icon_wrapper,\
|
|
.cke_skin_kama .cke_menuitem a:active .cke_icon_wrapper\
|
|
{\
|
|
background-color: $color !important;\
|
|
border-color: $color !important;\
|
|
}\
|
|
\
|
|
.cke_skin_kama .cke_menuitem a:hover .cke_label,\
|
|
.cke_skin_kama .cke_menuitem a:focus .cke_label,\
|
|
.cke_skin_kama .cke_menuitem a:active .cke_label\
|
|
{\
|
|
background-color: $color !important;\
|
|
}\
|
|
\
|
|
.cke_skin_kama .cke_menuitem a.cke_disabled:hover .cke_label,\
|
|
.cke_skin_kama .cke_menuitem a.cke_disabled:focus .cke_label,\
|
|
.cke_skin_kama .cke_menuitem a.cke_disabled:active .cke_label\
|
|
{\
|
|
background-color: transparent !important;\
|
|
}\
|
|
\
|
|
.cke_skin_kama .cke_menuitem a.cke_disabled:hover .cke_icon_wrapper,\
|
|
.cke_skin_kama .cke_menuitem a.cke_disabled:focus .cke_icon_wrapper,\
|
|
.cke_skin_kama .cke_menuitem a.cke_disabled:active .cke_icon_wrapper\
|
|
{\
|
|
background-color: $color !important;\
|
|
border-color: $color !important;\
|
|
}\
|
|
\
|
|
.cke_skin_kama .cke_menuitem a.cke_disabled .cke_icon_wrapper\
|
|
{\
|
|
background-color: $color !important;\
|
|
border-color: $color !important;\
|
|
}\
|
|
\
|
|
.cke_skin_kama .cke_menuseparator\
|
|
{\
|
|
background-color: $color !important;\
|
|
}\
|
|
\
|
|
.cke_skin_kama .cke_menuitem a:hover,\
|
|
.cke_skin_kama .cke_menuitem a:focus,\
|
|
.cke_skin_kama .cke_menuitem a:active\
|
|
{\
|
|
background-color: $color !important;\
|
|
}";
|
|
// We have to split CSS declarations for webkit.
|
|
if ( CKEDITOR.env.webkit )
|
|
{
|
|
uiColorMenuCss = uiColorMenuCss.split( '}' ).slice( 0, -1 );
|
|
for ( var i = 0 ; i < uiColorMenuCss.length ; i++ )
|
|
uiColorMenuCss[ i ] = uiColorMenuCss[ i ].split( '{' );
|
|
}
|
|
|
|
function getStylesheet( document )
|
|
{
|
|
var node = document.getById( uiColorStylesheetId );
|
|
if ( !node )
|
|
{
|
|
node = document.getHead().append( 'style' );
|
|
node.setAttribute( "id", uiColorStylesheetId );
|
|
node.setAttribute( "type", "text/css" );
|
|
}
|
|
return node;
|
|
}
|
|
|
|
function updateStylesheets( styleNodes, styleContent, replace )
|
|
{
|
|
var r, i, content;
|
|
for ( var id = 0 ; id < styleNodes.length ; id++ )
|
|
{
|
|
if ( CKEDITOR.env.webkit )
|
|
{
|
|
for ( i = 0 ; i < styleContent.length ; i++ )
|
|
{
|
|
content = styleContent[ i ][ 1 ];
|
|
for ( r = 0 ; r < replace.length ; r++ )
|
|
content = content.replace( replace[ r ][ 0 ], replace[ r ][ 1 ] );
|
|
|
|
styleNodes[ id ].$.sheet.addRule( styleContent[ i ][ 0 ], content );
|
|
}
|
|
}
|
|
else
|
|
{
|
|
content = styleContent;
|
|
for ( r = 0 ; r < replace.length ; r++ )
|
|
content = content.replace( replace[ r ][ 0 ], replace[ r ][ 1 ] );
|
|
|
|
if ( CKEDITOR.env.ie )
|
|
styleNodes[ id ].$.styleSheet.cssText += content;
|
|
else
|
|
styleNodes[ id ].$.innerHTML += content;
|
|
}
|
|
}
|
|
}
|
|
|
|
var uiColorRegexp = /\$color/g;
|
|
|
|
CKEDITOR.tools.extend( editor,
|
|
{
|
|
uiColor: null,
|
|
|
|
getUiColor : function()
|
|
{
|
|
return this.uiColor;
|
|
},
|
|
|
|
setUiColor : function( color )
|
|
{
|
|
var cssContent,
|
|
uiStyle = getStylesheet( CKEDITOR.document ),
|
|
cssId = '.' + editor.id;
|
|
|
|
var cssSelectors =
|
|
[
|
|
cssId + " .cke_wrapper",
|
|
cssId + "_dialog .cke_dialog_contents",
|
|
cssId + "_dialog a.cke_dialog_tab",
|
|
cssId + "_dialog .cke_dialog_footer"
|
|
].join( ',' );
|
|
var cssProperties = "background-color: $color !important;";
|
|
|
|
if ( CKEDITOR.env.webkit )
|
|
cssContent = [ [ cssSelectors, cssProperties ] ];
|
|
else
|
|
cssContent = cssSelectors + '{' + cssProperties + '}';
|
|
|
|
return ( this.setUiColor =
|
|
function( color )
|
|
{
|
|
var replace = [ [ uiColorRegexp, color ] ];
|
|
editor.uiColor = color;
|
|
|
|
// Update general style.
|
|
updateStylesheets( [ uiStyle ], cssContent, replace );
|
|
|
|
// Update menu styles.
|
|
updateStylesheets( uiColorMenus, uiColorMenuCss, replace );
|
|
})( color );
|
|
}
|
|
});
|
|
|
|
editor.on( 'menuShow', function( event )
|
|
{
|
|
var panel = event.data[ 0 ];
|
|
var iframe = panel.element.getElementsByTag( 'iframe' ).getItem( 0 ).getFrameDocument();
|
|
|
|
// Add stylesheet if missing.
|
|
if ( !iframe.getById( 'cke_ui_color' ) )
|
|
{
|
|
var node = getStylesheet( iframe );
|
|
uiColorMenus.push( node );
|
|
|
|
var color = editor.getUiColor();
|
|
// Set uiColor for new menu.
|
|
if ( color )
|
|
updateStylesheets( [ node ], uiColorMenuCss, [ [ uiColorRegexp, color ] ] );
|
|
}
|
|
});
|
|
|
|
// Apply UI color if specified in config.
|
|
if ( editor.config.uiColor )
|
|
editor.setUiColor( editor.config.uiColor );
|
|
}
|
|
};
|
|
})() );
|
|
|
|
(function()
|
|
{
|
|
CKEDITOR.dialog ? dialogSetup() : CKEDITOR.on( 'dialogPluginReady', dialogSetup );
|
|
|
|
function dialogSetup()
|
|
{
|
|
CKEDITOR.dialog.on( 'resize', function( evt )
|
|
{
|
|
var data = evt.data,
|
|
width = data.width,
|
|
height = data.height,
|
|
dialog = data.dialog,
|
|
contents = dialog.parts.contents;
|
|
|
|
if ( data.skin != 'kama' )
|
|
return;
|
|
|
|
contents.setStyles(
|
|
{
|
|
width : width + 'px',
|
|
height : height + 'px'
|
|
});
|
|
});
|
|
}
|
|
})();
|
|
|
|
/**
|
|
* The base user interface color to be used by the editor. Not all skins are
|
|
* compatible with this setting.
|
|
* @name CKEDITOR.config.uiColor
|
|
* @type String
|
|
* @default '' (empty)
|
|
* @example
|
|
* // Using a color code.
|
|
* config.uiColor = '#AADC6E';
|
|
* @example
|
|
* // Using an HTML color name.
|
|
* config.uiColor = 'Gold';
|
|
*/
|