source: trunk/phpgwapi/js/ckeditor/_source/plugins/smiley/dialogs/smiley.js @ 2862

Revision 2862, 5.6 KB checked in by rodsouza, 14 years ago (diff)

Ticket #663 - Atualizando e centralizando o CKEditor (v. 3.2.1)

Line 
1/*
2Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.html or http://ckeditor.com/license
4*/
5
6CKEDITOR.dialog.add( 'smiley', function( editor )
7{
8        var config = editor.config,
9                lang = editor.lang.smiley,
10                images = config.smiley_images,
11                columns = 8,
12                i;
13
14        /**
15         * Simulate "this" of a dialog for non-dialog events.
16         * @type {CKEDITOR.dialog}
17         */
18        var dialog;
19        var onClick = function( evt )
20        {
21                var target = evt.data.getTarget(),
22                        targetName = target.getName();
23
24                if ( targetName == 'td' )
25                        target = target.getChild( [ 0, 0 ] );
26                else if ( targetName == 'a' )
27                        target = target.getChild( 0 );
28                else if ( targetName != 'img' )
29                        return;
30
31                var src = target.getAttribute( 'cke_src' ),
32                        title = target.getAttribute( 'title' );
33
34                var img = editor.document.createElement( 'img',
35                        {
36                                attributes :
37                                {
38                                        src : src,
39                                        _cke_saved_src : src,
40                                        title : title,
41                                        alt : title
42                                }
43                        });
44
45                editor.insertElement( img );
46
47                dialog.hide();
48                evt.data.preventDefault();
49        };
50
51        var onKeydown = CKEDITOR.tools.addFunction( function( ev, element )
52        {
53                ev = new CKEDITOR.dom.event( ev );
54                element = new CKEDITOR.dom.element( element );
55                var relative, nodeToMove;
56
57                var keystroke = ev.getKeystroke();
58                var rtl = editor.lang.dir == 'rtl';
59                switch ( keystroke )
60                {
61                        // UP-ARROW
62                        case 38 :
63                                // relative is TR
64                                if ( ( relative = element.getParent().getParent().getPrevious() ) )
65                                {
66                                        nodeToMove = relative.getChild( [element.getParent().getIndex(), 0] );
67                                        nodeToMove.focus();
68                                }
69                                ev.preventDefault();
70                                break;
71                        // DOWN-ARROW
72                        case 40 :
73                                // relative is TR
74                                if ( ( relative = element.getParent().getParent().getNext() ) )
75                                {
76                                        nodeToMove = relative.getChild( [element.getParent().getIndex(), 0] );
77                                        if ( nodeToMove )
78                                                nodeToMove.focus();
79                                }
80                                ev.preventDefault();
81                                break;
82                        // ENTER
83                        // SPACE
84                        case 32 :
85                                onClick( { data: ev } );
86                                ev.preventDefault();
87                                break;
88
89                        // RIGHT-ARROW
90                        case rtl ? 37 : 39 :
91                        // TAB
92                        case 9 :
93                                // relative is TD
94                                if ( ( relative = element.getParent().getNext() ) )
95                                {
96                                        nodeToMove = relative.getChild( 0 );
97                                        nodeToMove.focus();
98                                        ev.preventDefault(true);
99                                }
100                                // relative is TR
101                                else if ( ( relative = element.getParent().getParent().getNext() ) )
102                                {
103                                        nodeToMove = relative.getChild( [0, 0] );
104                                        if ( nodeToMove )
105                                                nodeToMove.focus();
106                                        ev.preventDefault(true);
107                                }
108                                break;
109
110                        // LEFT-ARROW
111                        case rtl ? 39 : 37 :
112                        // SHIFT + TAB
113                        case CKEDITOR.SHIFT + 9 :
114                                // relative is TD
115                                if ( ( relative = element.getParent().getPrevious() ) )
116                                {
117                                        nodeToMove = relative.getChild( 0 );
118                                        nodeToMove.focus();
119                                        ev.preventDefault(true);
120                                }
121                                // relative is TR
122                                else if ( ( relative = element.getParent().getParent().getPrevious() ) )
123                                {
124                                        nodeToMove = relative.getLast().getChild( 0 );
125                                        nodeToMove.focus();
126                                        ev.preventDefault(true);
127                                }
128                                break;
129                        default :
130                                // Do not stop not handled events.
131                                return;
132                }
133        });
134
135        // Build the HTML for the smiley images table.
136        var html =
137        [
138                '<div>' +
139                '<span id="smiley_emtions_label" class="cke_voice_label">' + lang.options +'</span>',
140                '<table role="listbox" aria-labelledby="smiley_emtions_label" style="width:100%;height:100%" cellspacing="2" cellpadding="2"',
141                CKEDITOR.env.ie && CKEDITOR.env.quirks ? ' style="position:absolute;"' : '',
142                '><tbody>'
143        ];
144
145        var size = images.length;
146        for ( i = 0 ; i < size ; i++ )
147        {
148                if ( i % columns === 0 )
149                        html.push( '<tr>' );
150
151                html.push(
152                        '<td class="cke_dark_background cke_hand cke_centered" style="vertical-align: middle;">' +
153                                '<a href="javascript:void(0)" role="option"',
154                                        ' aria-posinset="' + ( i +1 ) + '"',
155                                        ' aria-setsize="' + size + '"',
156                                        ' aria-labelledby="cke_smile_label_' + i + '"',
157                                        ' class="cke_smile" tabindex="-1" onkeydown="CKEDITOR.tools.callFunction( ', onKeydown, ', event, this );">',
158                                        '<img class="hand" title="', config.smiley_descriptions[i], '"' +
159                                                ' cke_src="', CKEDITOR.tools.htmlEncode( config.smiley_path + images[ i ] ), '" alt="', config.smiley_descriptions[i], '"',
160                                                ' src="', CKEDITOR.tools.htmlEncode( config.smiley_path + images[ i ] ), '"',
161                                                // IE BUG: Below is a workaround to an IE image loading bug to ensure the image sizes are correct.
162                                                ( CKEDITOR.env.ie ? ' onload="this.setAttribute(\'width\', 2); this.removeAttribute(\'width\');" ' : '' ),
163                                        '>' +
164                                        '<span id="cke_smile_label_' + i + '" class="cke_voice_label">' +config.smiley_descriptions[ i ]  + '</span>' +
165                                '</a>',
166                        '</td>' );
167
168                if ( i % columns == columns - 1 )
169                        html.push( '</tr>' );
170        }
171
172        if ( i < columns - 1 )
173        {
174                for ( ; i < columns - 1 ; i++ )
175                        html.push( '<td></td>' );
176                html.push( '</tr>' );
177        }
178
179        html.push( '</tbody></table></div>' );
180
181        var smileySelector =
182        {
183                type : 'html',
184                html : html.join( '' ),
185                onLoad : function( event )
186                {
187                        dialog = event.sender;
188                },
189                focus : function()
190                {
191                        var firstSmile = this.getElement().getElementsByTag( 'a' ).getItem( 0 );
192                        firstSmile.focus();
193                },
194                onClick : onClick,
195                style : 'width: 100%; border-collapse: separate;'
196        };
197
198        return {
199                title : editor.lang.smiley.title,
200                minWidth : 270,
201                minHeight : 120,
202                contents : [
203                        {
204                                id : 'tab1',
205                                label : '',
206                                title : '',
207                                expand : true,
208                                padding : 0,
209                                elements : [
210                                                smileySelector
211                                        ]
212                        }
213                ],
214                buttons : [ CKEDITOR.dialog.cancelButton ]
215        };
216} );
Note: See TracBrowser for help on using the repository browser.