Skip to content

Commit

Permalink
Initial import
Browse files Browse the repository at this point in the history
  • Loading branch information
hbraune committed Oct 25, 2016
0 parents commit 05d436d
Show file tree
Hide file tree
Showing 6 changed files with 5,740 additions and 0 deletions.
17 changes: 17 additions & 0 deletions bower.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{
"name": "ckeditor-emojione",
"main": [
"plugin.js"
],
"dependencies": {
"emojione": ">=2.0.0"
},
"license": "MIT",
"keywords": [
"ckeditor-emojione",
"emojione"
],
"ignore": [
"package.json"
]
}
186 changes: 186 additions & 0 deletions dialogs/emojione.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,186 @@
CKEDITOR.dialog.add( 'emojioneDialog', function( editor ) {
var config = editor.config, columns = 8, i;
var dialog;
var onClick = function( evt ) {
var target = evt.data.getTarget();
editor.insertText(emojione.convert(target.getAttribute('data-unicode')));
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">Test</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 list = {};
var i = 0;
emojione.imageType = 'svg'; // or svg
emojione.sprites = true;
emojione.imagePathSVGSprites = '/vendor/emojione/assets/sprites/emojione.sprites.svg';

for (var shortcode in emojione.emojioneList) {

if (!emojione.emojioneList.hasOwnProperty(shortcode)) continue;
var obj = emojione.emojioneList[shortcode];
for (var prop in obj) {
if(!obj.hasOwnProperty(prop)) continue;
if (typeof config.emojis == 'undefined') {
list[shortcode] = obj;
} else {
if (config.emojis.indexOf(shortcode) != -1) {
list[shortcode] = obj;
}
}

}

}

for (var shortcode in list) {

if ( i % columns === 0 )
html.push( '<tr role="presentation">' );

if (!list.hasOwnProperty(shortcode)) continue;

var obj = list[shortcode];
for (var prop in obj) {
if(!obj.hasOwnProperty(prop)) continue;
}

html.push(
'<td class="cke_centered" style="vertical-align: middle;width: 20px;" role="presentation">' +
'<a data-unicode="' + obj.unicode[0] + '" data-shortcode="' + shortcode + '" href="javascript:void(0)" role="option"', ' aria-posinset="' + ( i + 1 ) + '"', ' aria-setsize=""', ' aria-labelledby=""',
' class="cke_smile cke_hand" tabindex="-1" onkeydown="CKEDITOR.tools.callFunction( ', onKeydown, ', event, this );">',
emojione.shortnameToUnicode(shortcode) +
'</a>', '</td>'
);

if ( i % columns == columns - 1 )
html.push( '</tr>' );
i++;
}


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: 'emojiSelector',
html: html.join( '' ),
onLoad: function( event ) {
dialog = event.sender;
},
focus: function() {
var self = this;
setTimeout( function() {
var firstSmile = self.getElement().getElementsByTag( 'a' ).getItem( 0 );
firstSmile.focus();
}, 0 );
},
onClick: onClick,
style: 'width: 100%; border-collapse: separate;'
};

return {
title: 'Emojis',
minWidth: 400,
minHeight: 200,
contents: [
{
id: 'tab-basic',
label: 'Basic Settings',
elements: [
smileySelector
]
}
],
onShow: function() {

}
};
});
Binary file added icons/emojione.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
20 changes: 20 additions & 0 deletions plugin.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
CKEDITOR.plugins.add( 'emojione', {
icons: 'emojione',
requires: 'dialog',
init: function( editor ) {
editor.addCommand( 'emojione', new CKEDITOR.dialogCommand( 'emojioneDialog' ) );
editor.ui.addButton( 'Emojione', {
label: 'Insert emoji',
command: 'emojione',
toolbar: 'insert'
});
var pluginDirectory = this.path;
editor.addContentsCss( pluginDirectory + 'styles/emojione.css' );
CKEDITOR.dialog.add( 'emojioneDialog', this.path + 'dialogs/emojione.js' );
}
});

/**
CKEDITOR.config.emojis = [
':smile:', ':grinning:', ':nerd_face:', ':sunglasses:'
];*/
Loading

0 comments on commit 05d436d

Please sign in to comment.