157 lines
3.1 KiB
JavaScript
157 lines
3.1 KiB
JavaScript
/*
|
|
Copyright (c) 2003-2011, CKSource - Frederico Knabben. All rights reserved.
|
|
For licensing, see LICENSE.html or http://ckeditor.com/license
|
|
*/
|
|
|
|
/**
|
|
* @fileOverview The "showblocks" plugin. Enable it will make all block level
|
|
* elements being decorated with a border and the element name
|
|
* displayed on the left-right corner.
|
|
*/
|
|
|
|
(function()
|
|
{
|
|
var cssTemplate = '.%2 p,'+
|
|
'.%2 div,'+
|
|
'.%2 pre,'+
|
|
'.%2 address,'+
|
|
'.%2 blockquote,'+
|
|
'.%2 h1,'+
|
|
'.%2 h2,'+
|
|
'.%2 h3,'+
|
|
'.%2 h4,'+
|
|
'.%2 h5,'+
|
|
'.%2 h6'+
|
|
'{'+
|
|
'background-repeat: no-repeat;'+
|
|
'background-position: top %3;'+
|
|
'border: 1px dotted gray;'+
|
|
'padding-top: 8px;'+
|
|
'padding-%3: 8px;'+
|
|
'}'+
|
|
|
|
'.%2 p'+
|
|
'{'+
|
|
'%1p.png);'+
|
|
'}'+
|
|
|
|
'.%2 div'+
|
|
'{'+
|
|
'%1div.png);'+
|
|
'}'+
|
|
|
|
'.%2 pre'+
|
|
'{'+
|
|
'%1pre.png);'+
|
|
'}'+
|
|
|
|
'.%2 address'+
|
|
'{'+
|
|
'%1address.png);'+
|
|
'}'+
|
|
|
|
'.%2 blockquote'+
|
|
'{'+
|
|
'%1blockquote.png);'+
|
|
'}'+
|
|
|
|
'.%2 h1'+
|
|
'{'+
|
|
'%1h1.png);'+
|
|
'}'+
|
|
|
|
'.%2 h2'+
|
|
'{'+
|
|
'%1h2.png);'+
|
|
'}'+
|
|
|
|
'.%2 h3'+
|
|
'{'+
|
|
'%1h3.png);'+
|
|
'}'+
|
|
|
|
'.%2 h4'+
|
|
'{'+
|
|
'%1h4.png);'+
|
|
'}'+
|
|
|
|
'.%2 h5'+
|
|
'{'+
|
|
'%1h5.png);'+
|
|
'}'+
|
|
|
|
'.%2 h6'+
|
|
'{'+
|
|
'%1h6.png);'+
|
|
'}';
|
|
|
|
var cssTemplateRegex = /%1/g, cssClassRegex = /%2/g, backgroundPositionRegex = /%3/g;
|
|
|
|
var commandDefinition =
|
|
{
|
|
preserveState : true,
|
|
editorFocus : false,
|
|
|
|
exec : function ( editor )
|
|
{
|
|
this.toggleState();
|
|
this.refresh( editor );
|
|
},
|
|
|
|
refresh : function( editor )
|
|
{
|
|
var funcName = ( this.state == CKEDITOR.TRISTATE_ON ) ? 'addClass' : 'removeClass';
|
|
editor.document.getBody()[ funcName ]( 'cke_show_blocks' );
|
|
}
|
|
};
|
|
|
|
CKEDITOR.plugins.add( 'showblocks',
|
|
{
|
|
requires : [ 'wysiwygarea' ],
|
|
|
|
init : function( editor )
|
|
{
|
|
var command = editor.addCommand( 'showblocks', commandDefinition );
|
|
command.canUndo = false;
|
|
|
|
if ( editor.config.startupOutlineBlocks )
|
|
command.setState( CKEDITOR.TRISTATE_ON );
|
|
|
|
editor.addCss( cssTemplate
|
|
.replace( cssTemplateRegex, 'background-image: url(' + CKEDITOR.getUrl( this.path ) + 'images/block_' )
|
|
.replace( cssClassRegex, 'cke_show_blocks ' )
|
|
.replace( backgroundPositionRegex, editor.lang.dir == 'rtl' ? 'right' : 'left' ) );
|
|
|
|
editor.ui.addButton( 'ShowBlocks',
|
|
{
|
|
label : editor.lang.showBlocks,
|
|
command : 'showblocks'
|
|
});
|
|
|
|
// Refresh the command on setData.
|
|
editor.on( 'mode', function()
|
|
{
|
|
if ( command.state != CKEDITOR.TRISTATE_DISABLED )
|
|
command.refresh( editor );
|
|
});
|
|
|
|
// Refresh the command on setData.
|
|
editor.on( 'contentDom', function()
|
|
{
|
|
if ( command.state != CKEDITOR.TRISTATE_DISABLED )
|
|
command.refresh( editor );
|
|
});
|
|
}
|
|
});
|
|
} )();
|
|
|
|
/**
|
|
* Whether to automaticaly enable the "show block" command when the editor
|
|
* loads. (StartupShowBlocks in FCKeditor)
|
|
* @name CKEDITOR.config.startupOutlineBlocks
|
|
* @type Boolean
|
|
* @default false
|
|
* @example
|
|
* config.startupOutlineBlocks = true;
|
|
*/
|