-
Notifications
You must be signed in to change notification settings - Fork 669
usage with CKEditor
Filippo Rossi edited this page Aug 8, 2016
·
9 revisions
<script src="http://cdn.ckeditor.com/4.4.4/basic/ckeditor.js"></script>
var at_config = {
at: "@",
data: names,
tpl: "<li data-value='@${name}'>${name} <small>${email}</small></li>"
}
// Bind to every CKEditor instance that'll load in the future
CKEDITOR.on('instanceReady', function(event) {
var editor = event.editor;
// Make sure the textarea's `contentEditable` property is set to `true`
editor.document.getBody().$.contentEditable = true;
// Switching from and to source mode
editor.on('mode', function(e) {
load_atwho(this);
});
// First load
load_atwho(editor);
});
function load_atwho(editor, at_config) {
// WYSIWYG mode when switching from source mode
if (editor.mode != 'source') {
editor.document.getBody().$.contentEditable = true;
$(editor.document.getBody().$)
.atwho('setIframe', editor.window.getFrame().$)
.atwho(at_config);
}
// Source mode when switching from WYSIWYG
else {
$(editor.container.$).find(".cke_source").atwho(at_config);
}
}
var ckeditor = $('#yourSelector').ckeditor({...}).ckeditorGet();
ckeditor.enableEnter = true; //Use this as a flag
ckeditor.on('instanceReady',function(event) {
var at_config = {...};
this.document.getBody().$.contentEditable = true;
$(this.document.getBody().$).atwho(at_config);
$(this.document.getBody().$).on('shown.atwho', function(event){
ckeditor.enableEnter = false;
});
$(this.document.getBody().$).on('hidden.atwho', function(event){
setTimeout(function(){
//console.log("hide! setting to TRUE");
ckeditor.enableEnter = true;
},100); //Give it a small time so that the ENTER key only affects the popup and not the editor
});
});
ckeditor.on( 'key', function( event ) {
if ( event.data.keyCode == 13 && !ckeditor.enableEnter ) {
event.cancel();
}
});