206 lines
3.9 KiB
JavaScript
206 lines
3.9 KiB
JavaScript
|
/*
|
|||
|
Copyright (c) 2003-2011, CKSource - Frederico Knabben. All rights reserved.
|
|||
|
For licensing, see LICENSE.html or http://ckeditor.com/license
|
|||
|
*/
|
|||
|
|
|||
|
(function()
|
|||
|
{
|
|||
|
|
|||
|
function setupAdvParams( element )
|
|||
|
{
|
|||
|
var attrName = this.att;
|
|||
|
|
|||
|
var value = element && element.hasAttribute( attrName ) && element.getAttribute( attrName ) || '';
|
|||
|
|
|||
|
if ( value !== undefined )
|
|||
|
this.setValue( value );
|
|||
|
}
|
|||
|
|
|||
|
function commitAdvParams()
|
|||
|
{
|
|||
|
// Dialogs may use different parameters in the commit list, so, by
|
|||
|
// definition, we take the first CKEDITOR.dom.element available.
|
|||
|
var element;
|
|||
|
|
|||
|
for ( var i = 0 ; i < arguments.length ; i++ )
|
|||
|
{
|
|||
|
if ( arguments[ i ] instanceof CKEDITOR.dom.element )
|
|||
|
{
|
|||
|
element = arguments[ i ];
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
if ( element )
|
|||
|
{
|
|||
|
var attrName = this.att,
|
|||
|
value = this.getValue();
|
|||
|
|
|||
|
if ( value )
|
|||
|
element.setAttribute( attrName, value );
|
|||
|
else
|
|||
|
element.removeAttribute( attrName, value );
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
CKEDITOR.plugins.add( 'dialogadvtab',
|
|||
|
{
|
|||
|
/**
|
|||
|
*
|
|||
|
* @param tabConfig
|
|||
|
* id, dir, classes, styles
|
|||
|
*/
|
|||
|
createAdvancedTab : function( editor, tabConfig )
|
|||
|
{
|
|||
|
if ( !tabConfig )
|
|||
|
tabConfig = { id:1, dir:1, classes:1, styles:1 };
|
|||
|
|
|||
|
var lang = editor.lang.common;
|
|||
|
|
|||
|
var result =
|
|||
|
{
|
|||
|
id : 'advanced',
|
|||
|
label : lang.advancedTab,
|
|||
|
title : lang.advancedTab,
|
|||
|
elements :
|
|||
|
[
|
|||
|
{
|
|||
|
type : 'vbox',
|
|||
|
padding : 1,
|
|||
|
children : []
|
|||
|
}
|
|||
|
]
|
|||
|
};
|
|||
|
|
|||
|
var contents = [];
|
|||
|
|
|||
|
if ( tabConfig.id || tabConfig.dir )
|
|||
|
{
|
|||
|
if ( tabConfig.id )
|
|||
|
{
|
|||
|
contents.push(
|
|||
|
{
|
|||
|
id : 'advId',
|
|||
|
att : 'id',
|
|||
|
type : 'text',
|
|||
|
label : lang.id,
|
|||
|
setup : setupAdvParams,
|
|||
|
commit : commitAdvParams
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
if ( tabConfig.dir )
|
|||
|
{
|
|||
|
contents.push(
|
|||
|
{
|
|||
|
id : 'advLangDir',
|
|||
|
att : 'dir',
|
|||
|
type : 'select',
|
|||
|
label : lang.langDir,
|
|||
|
'default' : '',
|
|||
|
style : 'width:100%',
|
|||
|
items :
|
|||
|
[
|
|||
|
[ lang.notSet, '' ],
|
|||
|
[ lang.langDirLTR, 'ltr' ],
|
|||
|
[ lang.langDirRTL, 'rtl' ]
|
|||
|
],
|
|||
|
setup : setupAdvParams,
|
|||
|
commit : commitAdvParams
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
result.elements[ 0 ].children.push(
|
|||
|
{
|
|||
|
type : 'hbox',
|
|||
|
widths : [ '50%', '50%' ],
|
|||
|
children : [].concat( contents )
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
if ( tabConfig.styles || tabConfig.classes )
|
|||
|
{
|
|||
|
contents = [];
|
|||
|
|
|||
|
if ( tabConfig.styles )
|
|||
|
{
|
|||
|
contents.push(
|
|||
|
{
|
|||
|
id : 'advStyles',
|
|||
|
att : 'style',
|
|||
|
type : 'text',
|
|||
|
label : lang.styles,
|
|||
|
'default' : '',
|
|||
|
|
|||
|
getStyle : function( name, defaultValue )
|
|||
|
{
|
|||
|
var match = this.getValue().match( new RegExp( name + '\\s*:\s*([^;]*)', 'i') );
|
|||
|
return match ? match[ 1 ] : defaultValue;
|
|||
|
},
|
|||
|
|
|||
|
updateStyle : function( name, value )
|
|||
|
{
|
|||
|
var styles = this.getValue();
|
|||
|
|
|||
|
// Remove the current value.
|
|||
|
if ( styles )
|
|||
|
{
|
|||
|
styles = styles
|
|||
|
.replace( new RegExp( '\\s*' + name + '\s*:[^;]*(?:$|;\s*)', 'i' ), '' )
|
|||
|
.replace( /^[;\s]+/, '' )
|
|||
|
.replace( /\s+$/, '' );
|
|||
|
}
|
|||
|
|
|||
|
if ( value )
|
|||
|
{
|
|||
|
styles && !(/;\s*$/).test( styles ) && ( styles += '; ' );
|
|||
|
styles += name + ': ' + value;
|
|||
|
}
|
|||
|
|
|||
|
this.setValue( styles, 1 );
|
|||
|
|
|||
|
},
|
|||
|
|
|||
|
setup : setupAdvParams,
|
|||
|
|
|||
|
commit : commitAdvParams
|
|||
|
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
if ( tabConfig.classes )
|
|||
|
{
|
|||
|
contents.push(
|
|||
|
{
|
|||
|
type : 'hbox',
|
|||
|
widths : [ '45%', '55%' ],
|
|||
|
children :
|
|||
|
[
|
|||
|
{
|
|||
|
id : 'advCSSClasses',
|
|||
|
att : 'class',
|
|||
|
type : 'text',
|
|||
|
label : lang.cssClasses,
|
|||
|
'default' : '',
|
|||
|
setup : setupAdvParams,
|
|||
|
commit : commitAdvParams
|
|||
|
|
|||
|
}
|
|||
|
]
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
result.elements[ 0 ].children.push(
|
|||
|
{
|
|||
|
type : 'hbox',
|
|||
|
widths : [ '50%', '50%' ],
|
|||
|
children : [].concat( contents )
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
return result;
|
|||
|
}
|
|||
|
});
|
|||
|
|
|||
|
})();
|