2 Copyright (c) 2003-2011, CKSource - Frederico Knabben. All rights reserved.
\r
3 For licensing, see LICENSE.html or http://ckeditor.com/license
\r
6 CKEDITOR.dialog.add( 'a11yHelp', function( editor )
\r
8 var lang = editor.lang.accessibilityHelp,
\r
9 id = CKEDITOR.tools.getNextId();
\r
11 // CharCode <-> KeyChar.
\r
29 39 : "RIGHT ARROW" ,
\r
33 91 : "LEFT WINDOW KEY" ,
\r
34 92 : "RIGHT WINDOW KEY" ,
\r
49 110 : "DECIMAL POINT" ,
\r
64 145 : "SCROLL LOCK" ,
\r
65 186 : "SEMI-COLON" ,
\r
66 187 : "EQUAL SIGN" ,
\r
70 191 : "FORWARD SLASH" ,
\r
71 192 : "GRAVE ACCENT" ,
\r
72 219 : "OPEN BRACKET" ,
\r
73 220 : "BACK SLASH" ,
\r
74 221 : "CLOSE BRAKET" ,
\r
75 222 : "SINGLE QUOTE"
\r
78 // Modifier keys override.
\r
79 keyMap[ CKEDITOR.ALT ] = 'ALT';
\r
80 keyMap[ CKEDITOR.SHIFT ] = 'SHIFT';
\r
81 keyMap[ CKEDITOR.CTRL ] = 'CTRL';
\r
84 var modifiers = [ CKEDITOR.ALT, CKEDITOR.SHIFT, CKEDITOR.CTRL ];
\r
86 function representKeyStroke( keystroke )
\r
92 for ( var i = 0; i < modifiers.length; i++ )
\r
94 modifier = modifiers[ i ];
\r
95 quotient = keystroke / modifiers[ i ];
\r
96 if ( quotient > 1 && quotient <= 2 )
\r
98 keystroke -= modifier;
\r
99 presentation.push( keyMap[ modifier ] );
\r
103 presentation.push( keyMap[ keystroke ]
\r
104 || String.fromCharCode( keystroke ) );
\r
106 return presentation.join( '+' );
\r
109 var variablesPattern = /\$\{(.*?)\}/g;
\r
110 function replaceVariables( match, name )
\r
112 var keystrokes = editor.config.keystrokes,
\r
114 length = keystrokes.length;
\r
116 for ( var i = 0; i < length; i++ )
\r
118 definition = keystrokes[ i ];
\r
119 if ( definition[ 1 ] == name )
\r
122 return representKeyStroke( definition[ 0 ] );
\r
125 // Create the help list directly from lang file entries.
\r
126 function buildHelpContents()
\r
128 var pageTpl = '<div class="cke_accessibility_legend" role="document" aria-labelledby="' + id + '_arialbl" tabIndex="-1">%1</div>' +
\r
129 '<span id="' + id + '_arialbl" class="cke_voice_label">' + lang.contents + ' </span>',
\r
130 sectionTpl = '<h1>%1</h1><dl>%2</dl>',
\r
131 itemTpl = '<dt>%1</dt><dd>%2</dd>';
\r
134 sections = lang.legend,
\r
135 sectionLength = sections.length;
\r
137 for ( var i = 0; i < sectionLength; i++ )
\r
139 var section = sections[ i ],
\r
141 items = section.items,
\r
142 itemsLength = items.length;
\r
144 for ( var j = 0; j < itemsLength; j++ )
\r
146 var item = items[ j ],
\r
148 itemHtml = itemTpl.replace( '%1', item.name ).
\r
149 replace( '%2', item.legend.replace( variablesPattern, replaceVariables ) );
\r
150 sectionHtml.push( itemHtml );
\r
153 pageHtml.push( sectionTpl.replace( '%1', section.name ).replace( '%2', sectionHtml.join( '' ) ) );
\r
156 return pageTpl.replace( '%1', pageHtml.join( '' ) );
\r
160 title : lang.title,
\r
166 label : editor.lang.common.generalTab,
\r
173 focus : function() {},
\r
174 html : buildHelpContents() +
\r
175 '<style type="text/css">' +
\r
176 '.cke_accessibility_legend' +
\r
180 'padding-right:5px;' +
\r
181 'overflow-y:auto;' +
\r
182 'overflow-x:hidden;' +
\r
184 '.cke_accessibility_legend h1' +
\r
186 'font-size: 20px;' +
\r
187 'border-bottom: 1px solid #AAA;' +
\r
188 'margin: 5px 0px 15px;' +
\r
190 '.cke_accessibility_legend dl' +
\r
192 'margin-left: 5px;' +
\r
194 '.cke_accessibility_legend dt' +
\r
196 'font-size: 13px;' +
\r
197 'font-weight: bold;' +
\r
199 '.cke_accessibility_legend dd' +
\r
201 'white-space:normal;' +
\r
209 buttons : [ CKEDITOR.dialog.cancelButton ]
\r