]>
git.immae.eu Git - perso/Immae/Projets/packagist/connexionswing-ckeditor-component.git/blob - sources/plugins/smiley/dialogs/smiley.js
4d9a2723cc6ca256738e9851d5053d53fae91f70
2 * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license
6 CKEDITOR
.dialog
.add( 'smiley', function( editor
) {
7 var config
= editor
.config
,
8 lang
= editor
.lang
.smiley
,
9 images
= config
.smiley_images
,
10 columns
= config
.smiley_columns
|| 8,
13 // Simulate "this" of a dialog for non-dialog events.
14 // @type {CKEDITOR.dialog}
16 var onClick = function( evt
) {
17 var target
= evt
.data
.getTarget(),
18 targetName
= target
.getName();
20 if ( targetName
== 'a' )
21 target
= target
.getChild( 0 );
22 else if ( targetName
!= 'img' )
25 var src
= target
.getAttribute( 'cke_src' ),
26 title
= target
.getAttribute( 'title' );
28 var img
= editor
.document
.createElement( 'img', {
31 'data-cke-saved-src': src
,
34 width: target
.$.width
,
35 height: target
.$.height
39 editor
.insertElement( img
);
42 evt
.data
.preventDefault();
45 var onKeydown
= CKEDITOR
.tools
.addFunction( function( ev
, element
) {
46 ev
= new CKEDITOR
.dom
.event( ev
);
47 element
= new CKEDITOR
.dom
.element( element
);
48 var relative
, nodeToMove
;
50 var keystroke
= ev
.getKeystroke(),
51 rtl
= editor
.lang
.dir
== 'rtl';
52 switch ( keystroke
) {
56 if ( ( relative
= element
.getParent().getParent().getPrevious() ) ) {
57 nodeToMove
= relative
.getChild( [ element
.getParent().getIndex(), 0 ] );
65 if ( ( relative
= element
.getParent().getParent().getNext() ) ) {
66 nodeToMove
= relative
.getChild( [ element
.getParent().getIndex(), 0 ] );
75 onClick( { data: ev
} );
82 if ( ( relative
= element
.getParent().getNext() ) ) {
83 nodeToMove
= relative
.getChild( 0 );
85 ev
.preventDefault( true );
88 else if ( ( relative
= element
.getParent().getParent().getNext() ) ) {
89 nodeToMove
= relative
.getChild( [ 0, 0 ] );
92 ev
.preventDefault( true );
99 if ( ( relative
= element
.getParent().getPrevious() ) ) {
100 nodeToMove
= relative
.getChild( 0 );
102 ev
.preventDefault( true );
105 else if ( ( relative
= element
.getParent().getParent().getPrevious() ) ) {
106 nodeToMove
= relative
.getLast().getChild( 0 );
108 ev
.preventDefault( true );
112 // Do not stop not handled events.
117 // Build the HTML for the smiley images table.
118 var labelId
= CKEDITOR
.tools
.getNextId() + '_smiley_emtions_label';
121 '<span id="' + labelId
+ '" class="cke_voice_label">' + lang
.options
+ '</span>',
122 '<table role="listbox" aria-labelledby="' + labelId
+ '" style="width:100%;height:100%;border-collapse:separate;" cellspacing="2" cellpadding="2"',
123 CKEDITOR
.env
.ie
&& CKEDITOR
.env
.quirks
? ' style="position:absolute;"' : '',
127 var size
= images
.length
;
128 for ( i
= 0; i
< size
; i
++ ) {
129 if ( i
% columns
=== 0 )
130 html
.push( '<tr role="presentation">' );
132 var smileyLabelId
= 'cke_smile_label_' + i
+ '_' + CKEDITOR
.tools
.getNextNumber();
134 '<td class="cke_dark_background cke_centered" style="vertical-align: middle;" role="presentation">' +
135 '<a href="javascript:void(0)" role="option"', ' aria-posinset="' + ( i
+ 1 ) + '"', ' aria-setsize="' + size
+ '"', ' aria-labelledby="' + smileyLabelId
+ '"',
136 ' class="cke_smile cke_hand" tabindex="-1" onkeydown="CKEDITOR.tools.callFunction( ', onKeydown
, ', event, this );">',
137 '<img class="cke_hand" title="', config
.smiley_descriptions
[ i
], '"' +
138 ' cke_src="', CKEDITOR
.tools
.htmlEncode( config
.smiley_path
+ images
[ i
] ), '" alt="', config
.smiley_descriptions
[ i
], '"',
139 ' src="', CKEDITOR
.tools
.htmlEncode( config
.smiley_path
+ images
[ i
] ), '"',
140 // IE BUG: Below is a workaround to an IE image loading bug to ensure the image sizes are correct.
141 ( CKEDITOR
.env
.ie
? ' onload="this.setAttribute(\'width\', 2); this.removeAttribute(\'width\');" ' : '' ), '>' +
142 '<span id="' + smileyLabelId
+ '" class="cke_voice_label">' + config
.smiley_descriptions
[ i
] + '</span>' +
146 if ( i
% columns
== columns
- 1 )
147 html
.push( '</tr>' );
150 if ( i
< columns
- 1 ) {
151 for ( ; i
< columns
- 1; i
++ )
152 html
.push( '<td></td>' );
153 html
.push( '</tr>' );
156 html
.push( '</tbody></table></div>' );
158 var smileySelector
= {
160 id: 'smileySelector',
161 html: html
.join( '' ),
162 onLoad: function( event
) {
163 dialog
= event
.sender
;
167 // IE need a while to move the focus (#6539).
168 setTimeout( function() {
169 var firstSmile
= self
.getElement().getElementsByTag( 'a' ).getItem( 0 );
174 style: 'width: 100%; border-collapse: separate;'
178 title: editor
.lang
.smiley
.title
,
191 buttons: [ CKEDITOR
.dialog
.cancelButton
]