Changeset 4908


Ignore:
Timestamp:
01/08/2010 05:06:44 PM (5 years ago)
Author:
garry.yao
Message:

Enable ARIA support for context menu.

Location:
CKEditor/branches/features/aria/_source
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • CKEditor/branches/features/aria/_source/lang/en.js

    r4903 r4908  
    556556        }, 
    557557 
     558        contextMenu : 
     559        { 
     560                panelTitle : 'context menu options', 
     561                panelVoiceLabel: '' 
     562        }, 
     563 
    558564        div : 
    559565        { 
  • CKEditor/branches/features/aria/_source/plugins/contextmenu/plugin.js

    r4858 r4908  
    3636                        }, 
    3737                        this); 
     38 
     39                this._.definiton = 
     40                { 
     41                        panel: 
     42                        { 
     43                                className : editor.skinClass + ' cke_contextmenu', 
     44                                aria : 
     45                                { 
     46                                        'aria-label' : editor.lang.contextMenu.panelTitle, 
     47                                        'aria-describedby' : editor.lang.contextMenu.panelVoiceLabel 
     48                                } 
     49                        } 
     50                }; 
    3851        }, 
    3952 
     
    5265                        else 
    5366                        { 
    54                                 menu = this._.menu = new CKEDITOR.menu( editor ); 
     67                                menu = this._.menu = new CKEDITOR.menu( editor, this._.definiton ); 
    5568                                menu.onClick = CKEDITOR.tools.bind( function( item ) 
    5669                                { 
  • CKEditor/branches/features/aria/_source/plugins/menu/plugin.js

    r4903 r4908  
    5252        CKEDITOR.menu = CKEDITOR.tools.createClass( 
    5353        { 
    54                 $ : function( editor, level ) 
    55                 { 
     54                $ : function( editor, definition ) 
     55                { 
     56                        definition = this._.definition = definition || {}; 
    5657                        this.id = 'cke_' + CKEDITOR.tools.getNextNumber(); 
    5758 
     
    5960                        this.items = []; 
    6061 
    61                         this._.level = level || 1; 
     62                        this._.level = definition.level || 1; 
     63 
     64                        var panelDefinition = CKEDITOR.tools.extend( {}, definition.panel, 
     65                        { 
     66                                css : editor.skin.editor.css, 
     67                                level : this._.level - 1, 
     68                                block : {} 
     69                        } ); 
     70 
     71                        var aria = panelDefinition.block.aria = ( panelDefinition.aria || {} ); 
     72                        // Provide default role of 'menu'. 
     73                        !aria.role && ( aria.role = 'menu' ); 
     74                        this._.panelDefinition = panelDefinition; 
    6275                }, 
    6376 
     
    8497                                else 
    8598                                { 
    86                                         menu = this._.subMenu = new CKEDITOR.menu( this.editor, this._.level + 1 ); 
     99                                        menu = this._.subMenu = new CKEDITOR.menu( this.editor, 
     100                                                                   CKEDITOR.tools.extend( {}, this._.definition, { level : this._.level + 1 }, true ) ); 
    87101                                        menu.parent = this; 
    88102                                        menu.onClick = CKEDITOR.tools.bind( this.onClick, this ); 
     
    136150                                if ( !panel ) 
    137151                                { 
    138                                         panel = this._.panel = new CKEDITOR.ui.floatPanel( this.editor, CKEDITOR.document.getBody(), 
    139                                                 { 
    140                                                         css : editor.skin.editor.css, 
    141                                                         level : this._.level - 1, 
    142                                                         className : editor.skinClass + ' cke_contextmenu' 
    143                                                 }, 
    144                                                 this._.level); 
     152                                        panel = this._.panel = new CKEDITOR.ui.floatPanel( this.editor, 
     153                                                CKEDITOR.document.getBody(), 
     154                                                this._.panelDefinition, 
     155                                                this._.level ); 
    145156 
    146157                                        panel.onEscape = CKEDITOR.tools.bind( function() 
     
    158169 
    159170                                        // Create an autosize block inside the panel. 
    160                                         var block = panel.addBlock( this.id ); 
     171                                        var block = panel.addBlock( this.id, this._.panelDefinition.block ); 
    161172                                        block.autoSize = true; 
    162173 
     
    300311                                classes += ' ' + this.className; 
    301312 
     313                        var hasSubMenu = this.getItems; 
     314 
    302315                        output.push( 
    303316                                '<span class="cke_menuitem">' + 
     
    307320                                        ' tabindex="-1"' + 
    308321                                        '_cke_focus=1' + 
    309                                         ' hidefocus="true"' ); 
     322                                        ' hidefocus="true"' + 
     323                                        ' role="menuitem"' + 
     324                                        ( hasSubMenu ? 'aria-haspopup="true"' : '' ) + 
     325                                        ( state == CKEDITOR.TRISTATE_DISABLED ? 'aria-disabled="true"' : '' ) + 
     326                                        ( state == CKEDITOR.TRISTATE_ON ? 'aria-pressed="true"' : '' ) ); 
    310327 
    311328                        // Some browsers don't cancel key events in the keydown but in the 
     
    339356                                                '<span class="cke_label">' ); 
    340357 
    341                         if ( this.getItems ) 
     358                        if ( hasSubMenu ) 
    342359                        { 
    343360                                output.push( 
Note: See TracChangeset for help on using the changeset viewer.
© 2003 – 2012 CKSource – Frederico Knabben. All rights reserved. | Terms of use | Privacy policy