JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
vanilla ckeditor-3.6.3
[ckeditor.git] / _source / plugins / listblock / plugin.js
index 848cc2a..c505f0e 100644 (file)
@@ -1,5 +1,5 @@
 /*\r
-Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.\r
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.\r
 For licensing, see LICENSE.html or http://ckeditor.com/license\r
 */\r
 \r
@@ -9,9 +9,9 @@ CKEDITOR.plugins.add( 'listblock',
 \r
        onLoad : function()\r
        {\r
-               CKEDITOR.ui.panel.prototype.addListBlock = function( name, definiton )\r
+               CKEDITOR.ui.panel.prototype.addListBlock = function( name, definition )\r
                {\r
-                       return this.addBlock( name, new CKEDITOR.ui.listBlock( this.getHolderElement(), definiton ) );\r
+                       return this.addBlock( name, new CKEDITOR.ui.listBlock( this.getHolderElement(), definition ) );\r
                };\r
 \r
                CKEDITOR.ui.listBlock = CKEDITOR.tools.createClass(\r
@@ -36,7 +36,8 @@ CKEDITOR.plugins.add( 'listblock',
                                        keys[ 9 ]       = 'next';                                       // TAB\r
                                        keys[ 38 ]      = 'prev';                                       // ARROW-UP\r
                                        keys[ CKEDITOR.SHIFT + 9 ]      = 'prev';       // SHIFT + TAB\r
-                                       keys[ 32 ]      = 'click';                                      // SPACE\r
+                                       keys[ 32 ]      = CKEDITOR.env.ie ? 'mouseup' : 'click';                                        // SPACE\r
+                                       CKEDITOR.env.ie && ( keys[ 13 ] = 'mouseup' );          // Manage ENTER, since onclick is blocked in IE (#8041).\r
 \r
                                        this._.pendingHtml = [];\r
                                        this._.items = {};\r
@@ -81,7 +82,7 @@ CKEDITOR.plugins.add( 'listblock',
                                        add : function( value, html, title )\r
                                        {\r
                                                var pendingHtml = this._.pendingHtml,\r
-                                                       id = 'cke_' + CKEDITOR.tools.getNextNumber();\r
+                                                       id = CKEDITOR.tools.getNextId();\r
 \r
                                                if ( !this._.started )\r
                                                {\r
@@ -93,13 +94,13 @@ CKEDITOR.plugins.add( 'listblock',
                                                this._.items[ value ] = id;\r
 \r
                                                pendingHtml.push(\r
-                                                       '<li id=', id, ' class=cke_panel_listItem>' +\r
+                                                       '<li id=', id, ' class=cke_panel_listItem role=presentation>' +\r
                                                                '<a id="', id, '_option" _cke_focus=1 hidefocus=true' +\r
                                                                        ' title="', title || value, '"' +\r
-                                                                       ' href="javascript:void(\'', value, '\')"' +\r
-                                                                       ' onclick="CKEDITOR.tools.callFunction(', this._.getClick(), ',\'', value, '\'); return false;"',\r
-                                                                       ' role="option"' +\r
-                                                                       ' aria-posinset="' + ++this._.size + '">',\r
+                                                                       ' href="javascript:void(\'', value, '\')" ' +\r
+                                                                       ( CKEDITOR.env.ie ? 'onclick="return false;" onmouseup' : 'onclick' ) +         // #188\r
+                                                                               '="CKEDITOR.tools.callFunction(', this._.getClick(), ',\'', value, '\'); return false;"',\r
+                                                                       ' role="option">',\r
                                                                        html || value,\r
                                                                '</a>' +\r
                                                        '</li>' );\r
@@ -109,7 +110,7 @@ CKEDITOR.plugins.add( 'listblock',
                                        {\r
                                                this._.close();\r
 \r
-                                               var id = 'cke_' + CKEDITOR.tools.getNextNumber();\r
+                                               var id = CKEDITOR.tools.getNextId();\r
 \r
                                                this._.groups[ title ] = id;\r
 \r
@@ -120,11 +121,6 @@ CKEDITOR.plugins.add( 'listblock',
                                        {\r
                                                this._.close();\r
                                                this.element.appendHtml( this._.pendingHtml.join( '' ) );\r
-\r
-                                               var items = this._.items,\r
-                                                       doc = this.element.getDocument();\r
-                                               for ( var value in items )\r
-                                                       doc.getById( items[ value ] + '_option' ).setAttribute( 'aria-setsize', this._.size );\r
                                                delete this._.size;\r
 \r
                                                this._.pendingHtml = [];\r
@@ -194,12 +190,19 @@ CKEDITOR.plugins.add( 'listblock',
                                                item.addClass( 'cke_selected' );\r
 \r
                                                this.element.getDocument().getById( itemId + '_option' ).setAttribute( 'aria-selected', true );\r
-                                               this.element.setAttribute( 'aria-activedescendant', itemId + '_option' );\r
+                                               this.onMark && this.onMark( item );\r
                                        },\r
 \r
                                        unmark : function( value )\r
                                        {\r
-                                               this.element.getDocument().getById( this._.items[ value ] ).removeClass( 'cke_selected' );\r
+                                               var doc = this.element.getDocument(),\r
+                                                       itemId = this._.items[ value ],\r
+                                                       item = doc.getById( itemId );\r
+\r
+                                               item.removeClass( 'cke_selected' );\r
+                                               doc.getById( itemId + '_option' ).removeAttribute( 'aria-selected' );\r
+\r
+                                               this.onUnmark && this.onUnmark( item );\r
                                        },\r
 \r
                                        unmarkAll : function()\r
@@ -209,8 +212,13 @@ CKEDITOR.plugins.add( 'listblock',
 \r
                                                for ( var value in items )\r
                                                {\r
-                                                       doc.getById( items[ value ] ).removeClass( 'cke_selected' );\r
+                                                       var itemId = items[ value ];\r
+\r
+                                                       doc.getById( itemId ).removeClass( 'cke_selected' );\r
+                                                       doc.getById( itemId + '_option' ).removeAttribute( 'aria-selected' );\r
                                                }\r
+\r
+                                               this.onUnmark && this.onUnmark();\r
                                        },\r
 \r
                                        isMarked : function( value )\r