X-Git-Url: https://jasonwoof.com/gitweb/?a=blobdiff_plain;f=_source%2Fplugins%2Fspecialchar%2Fdialogs%2Fspecialchar.js;h=cdfa7958f1d4bca4e072e5086329b9138ade3ac8;hb=fb481ba0a7d298e3e7b9034fcb9f2afdc6e8e796;hp=5b6e6225d3b881283c5d8ce99e6100f216a73ab4;hpb=ea7e3453c7b0f023b050aca6d9f83ab372860d91;p=ckeditor.git diff --git a/_source/plugins/specialchar/dialogs/specialchar.js b/_source/plugins/specialchar/dialogs/specialchar.js index 5b6e622..cdfa795 100644 --- a/_source/plugins/specialchar/dialogs/specialchar.js +++ b/_source/plugins/specialchar/dialogs/specialchar.js @@ -1,5 +1,5 @@ /* -Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved. +Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.html or http://ckeditor.com/license */ @@ -9,7 +9,9 @@ CKEDITOR.dialog.add( 'specialchar', function( editor ) * Simulate "this" of a dialog for non-dialog events. * @type {CKEDITOR.dialog} */ - var dialog; + var dialog, + lang = editor.lang.specialChar; + var onChoice = function( evt ) { var target, value; @@ -22,7 +24,11 @@ CKEDITOR.dialog.add( 'specialchar', function( editor ) { target.removeClass( "cke_light_background" ); dialog.hide(); - editor.insertHtml( value ); + + // We must use "insertText" here to keep text styled. + var span = editor.document.createElement( 'span' ); + span.setHtml( value ); + editor.insertText( span.getText() ); } }; @@ -79,37 +85,11 @@ CKEDITOR.dialog.add( 'specialchar', function( editor ) // Get an Anchor element. var element = ev.getTarget(); var relative, nodeToMove; - var keystroke = ev.getKeystroke(); + var keystroke = ev.getKeystroke(), + rtl = editor.lang.dir == 'rtl'; switch ( keystroke ) { - // RIGHT-ARROW - case 39 : - // relative is TD - if ( ( relative = element.getParent().getNext() ) ) - { - nodeToMove = relative.getChild( 0 ); - if ( nodeToMove.type == 1 ) - { - nodeToMove.focus(); - onBlur( null, element ); - onFocus( null, nodeToMove ); - } - } - ev.preventDefault(); - break; - // LEFT-ARROW - case 37 : - // relative is TD - if ( ( relative = element.getParent().getPrevious() ) ) - { - nodeToMove = relative.getChild( 0 ); - nodeToMove.focus(); - onBlur( null, element ); - onFocus( null, nodeToMove ); - } - ev.preventDefault(); - break; // UP-ARROW case 38 : // relative is TR @@ -143,8 +123,9 @@ CKEDITOR.dialog.add( 'specialchar', function( editor ) onChoice( { data: ev } ); ev.preventDefault(); break; - // TAB - case 9 : + + // RIGHT-ARROW + case rtl ? 37 : 39 : // relative is TD if ( ( relative = element.getParent().getNext() ) ) { @@ -174,8 +155,9 @@ CKEDITOR.dialog.add( 'specialchar', function( editor ) onBlur( null, element ); } break; - // SHIFT + TAB - case CKEDITOR.SHIFT + 9 : + + // LEFT-ARROW + case rtl ? 39 : 37 : // relative is TD if ( ( relative = element.getParent().getPrevious() ) ) { @@ -204,66 +186,67 @@ CKEDITOR.dialog.add( 'specialchar', function( editor ) }); return { - title : editor.lang.specialChar.title, + title : lang.title, minWidth : 430, minHeight : 280, buttons : [ CKEDITOR.dialog.cancelButton ], charColumns : 17, - chars : - [ - '!','"','#','$','%','&',"'",'(',')','*','+','-','.','/', - '0','1','2','3','4','5','6','7','8','9',':',';', - '<','=','>','?','@', - 'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O', - 'P','Q','R','S','T','U','V','W','X','Y','Z', - '[',']','^','_','`', - 'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p', - 'q','r','s','t','u','v','w','x','y','z', - '{','|','}','~','€','‘','’','’','“', - '”','–','—','¡','¢','£', - '¤','¥','¦','§','¨','©','ª', - '«','¬','®','¯','°','±','²', - '³','´','µ','¶','·','¸', - '¹','º','»','¼','½','¾', - '¿','À','Á','Â','Ã','Ä', - 'Å','Æ','Ç','È','É','Ê', - 'Ë','Ì','Í','Î','Ï','Ð', - 'Ñ','Ò','Ó','Ô','Õ','Ö', - '×','Ø','Ù','Ú','Û','Ü', - 'Ý','Þ','ß','à','á','â', - 'ã','ä','å','æ','ç','è', - 'é','ê','ë','ì','í','î', - 'ï','ð','ñ','ò','ó','ô', - 'õ','ö','÷','ø','ù','ú', - 'û','ü','ü','ý','þ','ÿ', - 'Œ','œ','Ŵ','Ŷ','ŵ','ŷ','‚', - '‛','„','…','™','►','•', - '→','⇒','⇔','♦','≈' - ], onLoad : function() { var columns = this.definition.charColumns, - chars = this.definition.chars; + extraChars = editor.config.extraSpecialChars, + chars = editor.config.specialChars; + + var charsTableLabel = CKEDITOR.tools.getNextId() + '_specialchar_table_label'; + var html = [ '' ]; - var html = [ '
' ]; + var i = 0, + size = chars.length, + character, + charDesc; - var i = 0 ; - while ( i < chars.length ) + while ( i < size ) { - html.push( '' ) ; + html.push( '' ) ; - for( var j = 0 ; j < columns ; j++, i++ ) + for ( var j = 0 ; j < columns ; j++, i++ ) { - if ( chars[ i ] ) + if ( ( character = chars[ i ] ) ) { + charDesc = ''; + + if ( character instanceof Array ) + { + charDesc = character[ 1 ]; + character = character[ 0 ]; + } + else + { + var _tmpName = character.replace( '&', '' ).replace( ';', '' ).replace( '#', '' ); + + // Use character in case description unavailable. + charDesc = lang[ _tmpName ] || character; + } + + var charLabelId = 'cke_specialchar_label_' + i + '_' + CKEDITOR.tools.getNextNumber(); + html.push( - '' ); } - html.push( '
' + - '' + + '' + '' + - chars[i] + + character + + '' + + '' + + charDesc + ''); } else @@ -274,7 +257,7 @@ CKEDITOR.dialog.add( 'specialchar', function( editor ) html.push( '
' ); + html.push( '', '' + lang.options +'' ); this.getContentElement( 'info', 'charContainer' ).getElement().setHtml( html.join( '' ) ); }, @@ -300,22 +283,21 @@ CKEDITOR.dialog.add( 'specialchar', function( editor ) onMouseout : onBlur, focus : function() { - var firstChar = this.getElement().getChild( [0, 0, 0, 0, 0] ); - setTimeout(function() + var firstChar = this.getElement().getElementsByTag( 'a' ).getItem( 0 ); + setTimeout( function() { firstChar.focus(); onFocus( null, firstChar ); - }); + }, 0 ); }, - // Needed only for webkit. onShow : function() { - var firstChar = this.getElement().getChild( [0, 0, 0, 0, 0] ); - setTimeout(function() - { - firstChar.focus(); - onFocus( null, firstChar ); - }); + var firstChar = this.getElement().getChild( [ 0, 0, 0, 0, 0 ] ); + setTimeout( function() + { + firstChar.focus(); + onFocus( null, firstChar ); + }, 0 ); }, onLoad : function( event ) { @@ -340,13 +322,15 @@ CKEDITOR.dialog.add( 'specialchar', function( editor ) { type : 'html', id : 'charPreview', - style : 'border:1px solid #eeeeee;background-color:#EAEAD1;font-size:28px;height:40px;width:70px;padding-top:9px;font-family:\'Microsoft Sans Serif\',Arial,Helvetica,Verdana;text-align:center;', + className : 'cke_dark_background', + style : 'border:1px solid #eeeeee;font-size:28px;height:40px;width:70px;padding-top:9px;font-family:\'Microsoft Sans Serif\',Arial,Helvetica,Verdana;text-align:center;', html : '
 
' }, { type : 'html', id : 'htmlPreview', - style : 'border:1px solid #eeeeee;background-color:#EAEAD1;font-size:14px;height:20px;width:70px;padding-top:2px;font-family:\'Microsoft Sans Serif\',Arial,Helvetica,Verdana;text-align:center;', + className : 'cke_dark_background', + style : 'border:1px solid #eeeeee;font-size:14px;height:20px;width:70px;padding-top:2px;font-family:\'Microsoft Sans Serif\',Arial,Helvetica,Verdana;text-align:center;', html : '
 
' } ]