+++ /dev/null
-/*\r
-Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved.\r
-For licensing, see LICENSE.html or http://ckeditor.com/license\r
-*/\r
-\r
-/**\r
- * @fileOverview The "show border" plugin. The command display visible outline\r
- * border line around all table elements if table doesn't have a none-zero 'border' attribute specified.\r
- */\r
-\r
-(function()\r
-{\r
- var showBorderClassName = 'cke_show_border',\r
- cssStyleText,\r
- cssTemplate =\r
- // TODO: For IE6, we don't have child selector support,\r
- // where nested table cells could be incorrect.\r
- ( CKEDITOR.env.ie6Compat ?\r
- [\r
- '.%1 table.%2,',\r
- '.%1 table.%2 td, .%1 table.%2 th',\r
- '{',\r
- 'border : #d3d3d3 1px dotted',\r
- '}'\r
- ] :\r
- [\r
- '.%1 table.%2,',\r
- '.%1 table.%2 > tr > td, .%1 table.%2 > tr > th,',\r
- '.%1 table.%2 > tbody > tr > td, .%1 table.%2 > tbody > tr > th,',\r
- '.%1 table.%2 > thead > tr > td, .%1 table.%2 > thead > tr > th,',\r
- '.%1 table.%2 > tfoot > tr > td, .%1 table.%2 > tfoot > tr > th',\r
- '{',\r
- 'border : #d3d3d3 1px dotted',\r
- '}'\r
- ] ).join( '' );\r
-\r
- cssStyleText = cssTemplate.replace( /%2/g, showBorderClassName ).replace( /%1/g, 'cke_show_borders ' );\r
-\r
- var commandDefinition =\r
- {\r
- preserveState : true,\r
- editorFocus : false,\r
- readOnly: 1,\r
-\r
- exec : function ( editor )\r
- {\r
- this.toggleState();\r
- this.refresh( editor );\r
- },\r
-\r
- refresh : function( editor )\r
- {\r
- if ( editor.document )\r
- {\r
- var funcName = ( this.state == CKEDITOR.TRISTATE_ON ) ? 'addClass' : 'removeClass';\r
- editor.document.getBody()[ funcName ]( 'cke_show_borders' );\r
- }\r
- }\r
- };\r
-\r
- CKEDITOR.plugins.add( 'showborders',\r
- {\r
- requires : [ 'wysiwygarea' ],\r
- modes : { 'wysiwyg' : 1 },\r
-\r
- init : function( editor )\r
- {\r
-\r
- var command = editor.addCommand( 'showborders', commandDefinition );\r
- command.canUndo = false;\r
-\r
- if ( editor.config.startupShowBorders !== false )\r
- command.setState( CKEDITOR.TRISTATE_ON );\r
-\r
- editor.addCss( cssStyleText );\r
-\r
- // Refresh the command on setData.\r
- editor.on( 'mode', function()\r
- {\r
- if ( command.state != CKEDITOR.TRISTATE_DISABLED )\r
- command.refresh( editor );\r
- }, null, null, 100 );\r
-\r
- // Refresh the command on wysiwyg frame reloads.\r
- editor.on( 'contentDom', function()\r
- {\r
- if ( command.state != CKEDITOR.TRISTATE_DISABLED )\r
- command.refresh( editor );\r
- });\r
-\r
- editor.on( 'removeFormatCleanup', function( evt )\r
- {\r
- var element = evt.data;\r
- if ( editor.getCommand( 'showborders' ).state == CKEDITOR.TRISTATE_ON &&\r
- element.is( 'table' ) && ( !element.hasAttribute( 'border' ) || parseInt( element.getAttribute( 'border' ), 10 ) <= 0 ) )\r
- element.addClass( showBorderClassName );\r
- });\r
- },\r
-\r
- afterInit : function( editor )\r
- {\r
- var dataProcessor = editor.dataProcessor,\r
- dataFilter = dataProcessor && dataProcessor.dataFilter,\r
- htmlFilter = dataProcessor && dataProcessor.htmlFilter;\r
-\r
- if ( dataFilter )\r
- {\r
- dataFilter.addRules(\r
- {\r
- elements :\r
- {\r
- 'table' : function( element )\r
- {\r
- var attributes = element.attributes,\r
- cssClass = attributes[ 'class' ],\r
- border = parseInt( attributes.border, 10 );\r
-\r
- if ( ( !border || border <= 0 ) && ( !cssClass || cssClass.indexOf( showBorderClassName ) == -1 ) )\r
- attributes[ 'class' ] = ( cssClass || '' ) + ' ' + showBorderClassName;\r
- }\r
- }\r
- } );\r
- }\r
-\r
- if ( htmlFilter )\r
- {\r
- htmlFilter.addRules(\r
- {\r
- elements :\r
- {\r
- 'table' : function( table )\r
- {\r
- var attributes = table.attributes,\r
- cssClass = attributes[ 'class' ];\r
-\r
- cssClass && ( attributes[ 'class' ] =\r
- cssClass.replace( showBorderClassName, '' )\r
- .replace( /\s{2}/, ' ' )\r
- .replace( /^\s+|\s+$/, '' ) );\r
- }\r
- }\r
- } );\r
- }\r
- }\r
- });\r
-\r
- // Table dialog must be aware of it.\r
- CKEDITOR.on( 'dialogDefinition', function( ev )\r
- {\r
- var dialogName = ev.data.name;\r
-\r
- if ( dialogName == 'table' || dialogName == 'tableProperties' )\r
- {\r
- var dialogDefinition = ev.data.definition,\r
- infoTab = dialogDefinition.getContents( 'info' ),\r
- borderField = infoTab.get( 'txtBorder' ),\r
- originalCommit = borderField.commit;\r
-\r
- borderField.commit = CKEDITOR.tools.override( originalCommit, function( org )\r
- {\r
- return function( data, selectedTable )\r
- {\r
- org.apply( this, arguments );\r
- var value = parseInt( this.getValue(), 10 );\r
- selectedTable[ ( !value || value <= 0 ) ? 'addClass' : 'removeClass' ]( showBorderClassName );\r
- };\r
- } );\r
-\r
- var advTab = dialogDefinition.getContents( 'advanced' ),\r
- classField = advTab && advTab.get( 'advCSSClasses' );\r
-\r
- if ( classField )\r
- {\r
- classField.setup = CKEDITOR.tools.override( classField.setup, function( originalSetup )\r
- {\r
- return function()\r
- {\r
- originalSetup.apply( this, arguments );\r
- this.setValue( this.getValue().replace( /cke_show_border/, '' ) );\r
- };\r
- });\r
-\r
- classField.commit = CKEDITOR.tools.override( classField.commit, function( originalCommit )\r
- {\r
- return function( data, element )\r
- {\r
- originalCommit.apply( this, arguments );\r
-\r
- if ( !parseInt( element.getAttribute( 'border' ), 10 ) )\r
- element.addClass( 'cke_show_border' );\r
- };\r
- });\r
- }\r
- }\r
- });\r
-\r
-} )();\r
-\r
-/**\r
- * Whether to automatically enable the "show borders" command when the editor loads.\r
- * (ShowBorders in FCKeditor)\r
- * @name CKEDITOR.config.startupShowBorders\r
- * @type Boolean\r
- * @default true\r
- * @example\r
- * config.startupShowBorders = false;\r
- */\r