diff options
| author | lsces <lester@lsces.co.uk> | 2013-07-15 14:18:47 +0100 |
|---|---|---|
| committer | lsces <lester@lsces.co.uk> | 2013-07-15 14:18:47 +0100 |
| commit | de6d09676a9527919813a4474cc28af554a35fe1 (patch) | |
| tree | a2b3c2ddf01eca1600e130125733d324b59744bb /plugins/smiley | |
| parent | 1d0d1733baef4dbab3f8cd7d7150a55ef2828464 (diff) | |
| download | ckeditor-de6d09676a9527919813a4474cc28af554a35fe1.tar.gz ckeditor-de6d09676a9527919813a4474cc28af554a35fe1.tar.bz2 ckeditor-de6d09676a9527919813a4474cc28af554a35fe1.zip | |
Upgrade to CKEditor V4
Directory structure changed so many files removed and replace in a new location
This batch is the actuall file changes
Diffstat (limited to 'plugins/smiley')
| -rw-r--r-- | plugins/smiley/dialogs/smiley.js | 197 |
1 files changed, 191 insertions, 6 deletions
diff --git a/plugins/smiley/dialogs/smiley.js b/plugins/smiley/dialogs/smiley.js index a1a1968..7127842 100644 --- a/plugins/smiley/dialogs/smiley.js +++ b/plugins/smiley/dialogs/smiley.js @@ -1,7 +1,192 @@ -/*
-Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
-For licensing, see LICENSE.html or http://ckeditor.com/license
-*/
+/**
+ * @license Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved.
+ * For licensing, see LICENSE.html or http://ckeditor.com/license
+ */
-CKEDITOR.dialog.add('smiley',function(a){var b=a.config,c=a.lang.smiley,d=b.smiley_images,e=b.smiley_columns||8,f,g,h=function(o){var p=o.data.getTarget(),q=p.getName();if(q=='a')p=p.getChild(0);else if(q!='img')return;var r=p.getAttribute('cke_src'),s=p.getAttribute('title'),t=a.document.createElement('img',{attributes:{src:r,'data-cke-saved-src':r,title:s,alt:s,width:p.$.width,height:p.$.height}});a.insertElement(t);g.hide();o.data.preventDefault();},i=CKEDITOR.tools.addFunction(function(o,p){o=new CKEDITOR.dom.event(o);p=new CKEDITOR.dom.element(p);var q,r,s=o.getKeystroke(),t=a.lang.dir=='rtl';switch(s){case 38:if(q=p.getParent().getParent().getPrevious()){r=q.getChild([p.getParent().getIndex(),0]);r.focus();}o.preventDefault();break;case 40:if(q=p.getParent().getParent().getNext()){r=q.getChild([p.getParent().getIndex(),0]);if(r)r.focus();}o.preventDefault();break;case 32:h({data:o});o.preventDefault();break;case t?37:39:case 9:if(q=p.getParent().getNext()){r=q.getChild(0);r.focus();o.preventDefault(true);}else if(q=p.getParent().getParent().getNext()){r=q.getChild([0,0]);if(r)r.focus();o.preventDefault(true);}break;case t?39:37:case CKEDITOR.SHIFT+9:if(q=p.getParent().getPrevious()){r=q.getChild(0);r.focus();o.preventDefault(true);}else if(q=p.getParent().getParent().getPrevious()){r=q.getLast().getChild(0);r.focus();o.preventDefault(true);}break;default:return;}}),j=CKEDITOR.tools.getNextId()+'_smiley_emtions_label',k=['<div><span id="'+j+'" class="cke_voice_label">'+c.options+'</span>','<table role="listbox" aria-labelledby="'+j+'" style="width:100%;height:100%" cellspacing="2" cellpadding="2"',CKEDITOR.env.ie&&CKEDITOR.env.quirks?' style="position:absolute;"':'','><tbody>'],l=d.length;for(f=0;f<l;f++){if(f%e===0)k.push('<tr>');var m='cke_smile_label_'+f+'_'+CKEDITOR.tools.getNextNumber();k.push('<td class="cke_dark_background cke_centered" style="vertical-align: middle;"><a href="javascript:void(0)" role="option"',' aria-posinset="'+(f+1)+'"',' aria-setsize="'+l+'"',' aria-labelledby="'+m+'"',' class="cke_smile cke_hand" tabindex="-1" onkeydown="CKEDITOR.tools.callFunction( ',i,', event, this );">','<img class="cke_hand" title="',b.smiley_descriptions[f],'" cke_src="',CKEDITOR.tools.htmlEncode(b.smiley_path+d[f]),'" alt="',b.smiley_descriptions[f],'"',' src="',CKEDITOR.tools.htmlEncode(b.smiley_path+d[f]),'"',CKEDITOR.env.ie?" onload=\"this.setAttribute('width', 2); this.removeAttribute('width');\" ":'','><span id="'+m+'" class="cke_voice_label">'+b.smiley_descriptions[f]+'</span>'+'</a>','</td>');
-if(f%e==e-1)k.push('</tr>');}if(f<e-1){for(;f<e-1;f++)k.push('<td></td>');k.push('</tr>');}k.push('</tbody></table></div>');var n={type:'html',id:'smileySelector',html:k.join(''),onLoad:function(o){g=o.sender;},focus:function(){var o=this;setTimeout(function(){var p=o.getElement().getElementsByTag('a').getItem(0);p.focus();},0);},onClick:h,style:'width: 100%; border-collapse: separate;'};return{title:a.lang.smiley.title,minWidth:270,minHeight:120,contents:[{id:'tab1',label:'',title:'',expand:true,padding:0,elements:[n]}],buttons:[CKEDITOR.dialog.cancelButton]};});
+CKEDITOR.dialog.add( 'smiley', function( editor ) {
+ var config = editor.config,
+ lang = editor.lang.smiley,
+ images = config.smiley_images,
+ columns = config.smiley_columns || 8,
+ i;
+
+ // Simulate "this" of a dialog for non-dialog events.
+ // @type {CKEDITOR.dialog}
+ var dialog;
+ var onClick = function( evt ) {
+ var target = evt.data.getTarget(),
+ targetName = target.getName();
+
+ if ( targetName == 'a' )
+ target = target.getChild( 0 );
+ else if ( targetName != 'img' )
+ return;
+
+ var src = target.getAttribute( 'cke_src' ),
+ title = target.getAttribute( 'title' );
+
+ var img = editor.document.createElement( 'img', {
+ attributes: {
+ src: src,
+ 'data-cke-saved-src': src,
+ title: title,
+ alt: title,
+ width: target.$.width,
+ height: target.$.height
+ }
+ });
+
+ editor.insertElement( img );
+
+ dialog.hide();
+ evt.data.preventDefault();
+ };
+
+ var onKeydown = CKEDITOR.tools.addFunction( function( ev, element ) {
+ ev = new CKEDITOR.dom.event( ev );
+ element = new CKEDITOR.dom.element( element );
+ var relative, nodeToMove;
+
+ var keystroke = ev.getKeystroke(),
+ rtl = editor.lang.dir == 'rtl';
+ switch ( keystroke ) {
+ // UP-ARROW
+ case 38:
+ // relative is TR
+ if ( ( relative = element.getParent().getParent().getPrevious() ) ) {
+ nodeToMove = relative.getChild( [ element.getParent().getIndex(), 0 ] );
+ nodeToMove.focus();
+ }
+ ev.preventDefault();
+ break;
+ // DOWN-ARROW
+ case 40:
+ // relative is TR
+ if ( ( relative = element.getParent().getParent().getNext() ) ) {
+ nodeToMove = relative.getChild( [ element.getParent().getIndex(), 0 ] );
+ if ( nodeToMove )
+ nodeToMove.focus();
+ }
+ ev.preventDefault();
+ break;
+ // ENTER
+ // SPACE
+ case 32:
+ onClick({ data: ev } );
+ ev.preventDefault();
+ break;
+
+ // RIGHT-ARROW
+ case rtl ? 37:
+ 39 :
+ // relative is TD
+ if ( ( relative = element.getParent().getNext() ) ) {
+ nodeToMove = relative.getChild( 0 );
+ nodeToMove.focus();
+ ev.preventDefault( true );
+ }
+ // relative is TR
+ else if ( ( relative = element.getParent().getParent().getNext() ) ) {
+ nodeToMove = relative.getChild( [ 0, 0 ] );
+ if ( nodeToMove )
+ nodeToMove.focus();
+ ev.preventDefault( true );
+ }
+ break;
+
+ // LEFT-ARROW
+ case rtl ? 39:
+ 37 :
+ // relative is TD
+ if ( ( relative = element.getParent().getPrevious() ) ) {
+ nodeToMove = relative.getChild( 0 );
+ nodeToMove.focus();
+ ev.preventDefault( true );
+ }
+ // relative is TR
+ else if ( ( relative = element.getParent().getParent().getPrevious() ) ) {
+ nodeToMove = relative.getLast().getChild( 0 );
+ nodeToMove.focus();
+ ev.preventDefault( true );
+ }
+ break;
+ default:
+ // Do not stop not handled events.
+ return;
+ }
+ });
+
+ // Build the HTML for the smiley images table.
+ var labelId = CKEDITOR.tools.getNextId() + '_smiley_emtions_label';
+ var html = [
+ '<div>' +
+ '<span id="' + labelId + '" class="cke_voice_label">' + lang.options + '</span>',
+ '<table role="listbox" aria-labelledby="' + labelId + '" style="width:100%;height:100%;border-collapse:separate;" cellspacing="2" cellpadding="2"',
+ CKEDITOR.env.ie && CKEDITOR.env.quirks ? ' style="position:absolute;"' : '',
+ '><tbody>'
+ ];
+
+ var size = images.length;
+ for ( i = 0; i < size; i++ ) {
+ if ( i % columns === 0 )
+ html.push( '<tr role="presentation">' );
+
+ var smileyLabelId = 'cke_smile_label_' + i + '_' + CKEDITOR.tools.getNextNumber();
+ html.push( '<td class="cke_dark_background cke_centered" style="vertical-align: middle;" role="presentation">' +
+ '<a href="javascript:void(0)" role="option"', ' aria-posinset="' + ( i + 1 ) + '"', ' aria-setsize="' + size + '"', ' aria-labelledby="' + smileyLabelId + '"', ' class="cke_smile cke_hand" tabindex="-1" onkeydown="CKEDITOR.tools.callFunction( ', onKeydown, ', event, this );">', '<img class="cke_hand" title="', config.smiley_descriptions[ i ], '"' +
+ ' cke_src="', CKEDITOR.tools.htmlEncode( config.smiley_path + images[ i ] ), '" alt="', config.smiley_descriptions[ i ], '"', ' src="', CKEDITOR.tools.htmlEncode( config.smiley_path + images[ i ] ), '"',
+ // IE BUG: Below is a workaround to an IE image loading bug to ensure the image sizes are correct.
+ ( CKEDITOR.env.ie ? ' onload="this.setAttribute(\'width\', 2); this.removeAttribute(\'width\');" ' : '' ), '>' +
+ '<span id="' + smileyLabelId + '" class="cke_voice_label">' + config.smiley_descriptions[ i ] + '</span>' +
+ '</a>', '</td>' );
+
+ if ( i % columns == columns - 1 )
+ html.push( '</tr>' );
+ }
+
+ if ( i < columns - 1 ) {
+ for ( ; i < columns - 1; i++ )
+ html.push( '<td></td>' );
+ html.push( '</tr>' );
+ }
+
+ html.push( '</tbody></table></div>' );
+
+ var smileySelector = {
+ type: 'html',
+ id: 'smileySelector',
+ html: html.join( '' ),
+ onLoad: function( event ) {
+ dialog = event.sender;
+ },
+ focus: function() {
+ var self = this;
+ // IE need a while to move the focus (#6539).
+ setTimeout( function() {
+ var firstSmile = self.getElement().getElementsByTag( 'a' ).getItem( 0 );
+ firstSmile.focus();
+ }, 0 );
+ },
+ onClick: onClick,
+ style: 'width: 100%; border-collapse: separate;'
+ };
+
+ return {
+ title: editor.lang.smiley.title,
+ minWidth: 270,
+ minHeight: 120,
+ contents: [
+ {
+ id: 'tab1',
+ label: '',
+ title: '',
+ expand: true,
+ padding: 0,
+ elements: [
+ smileySelector
+ ]
+ }
+ ],
+ buttons: [ CKEDITOR.dialog.cancelButton ]
+ };
+});
|
