Al fine di rendere una scatola di suggerimento, si dovrà fare il vostro plugin personalizzato da utilizzare menu contestuale come cassetta dei suggerimenti, si prega di consultare il link per la conoscenza di base di fare plug ckeditor da qui a link
Aggiungere questo ai vostri config.js, dove completamento automatico è il nome del plugin
config.extraPlugins = 'autocomplete';
quindi creare una struttura di directory seguente/file nella cartella ckeditor
ckeditor->plugins->autocomplete->plugin.js
Inserire il seguente contenuto dei tuoi file di plugin.js
CKEDITOR.plugins.add('autocomplete',
{
init : function(editor) {
var autocompleteCommand = editor.addCommand('autocomplete', {
exec : function(editor) {
Avremo bisogno di creare un arco fittizio nel documento per calcolare la posizione corrente del menu mostrato
var dummyElement = editor.document
.createElement('span');
editor.insertElement(dummyElement);
var x = 0;
var y = 0;
var obj = dummyElement.$;
while (obj.offsetParent) {
x += obj.offsetLeft;
y += obj.offsetTop;
obj = obj.offsetParent;
}
x += obj.offsetLeft;
y += obj.offsetTop;
dummyElement.remove();
Dopo il calcolo la posizione, rimuoviamo l'elemento e chiamiamo il metodo per mostrare i suggerimenti (inseriti nel menu contestuale, che sono configurati nella prossima funzione)
editor.contextMenu.show(editor.document
.getBody(), null, x, y);
}
});
},
Ecco il binding listener sull'editor per verificare se la chiave corrente è # o no, CKEDITOR.SHIFT + 51 è la combinazione di tasti per #
afterInit : function(editor) {
editor.on('key', function(evt) {
if (evt.data.keyCode == CKEDITOR.SHIFT + 51) {
editor.execCommand('autocomplete');
}
});
reloadSuggetionBox comando sarà chiamato dal jquery esterna per generare il menu subito dopo il ckeditor è pronto
var firstExecution = true;
var dataElement = {};
editor.addCommand('reloadSuggetionBox', {
exec : function(editor) {
if (editor.contextMenu) {
dataElement = {};
editor.addMenuGroup('suggestionBoxGroup');
$.each(Suggestions,function(i, suggestion)
{
var suggestionBoxItem = "suggestionBoxItem"+ i;
dataElement[suggestionBoxItem] = CKEDITOR.TRISTATE_OFF;
editor.addMenuItem(suggestionBoxItem,
{
id : suggestion.id,
label : suggestion.label,
group : 'suggestionBoxGroup',
icon : null,
onClick : function() {
var data = editor.getData();
var selection = editor.getSelection();
var element = selection.getStartElement();
var ranges = selection.getRanges();
ranges[0].setStart(element.getFirst(), 0);
ranges[0].setEnd(element.getFirst(),0);
editor.insertHtml(this.id + ' ');
},
});
});
if(firstExecution == true)
{
editor.contextMenu.addListener(function(element) {
return dataElement;
});
firstExecution = false;
}
}
}
});
delete editor._.menuItems.paste;
},
});
Qui "Suggerimenti" è la variabile presente da qualche parte sulla tua pagina contiene un elenco di oggetti con un 'id' e 'etichetta' da mostrare nel suggerimento.
Ora, al fine di configurare questi suggerimenti, si prega di eseguire il seguente codice jQuery, dopo questo, ogni volta che si preme '#', suggerimenti saranno mostrati
$('textarea').ckeditor();
CKEDITOR.on('instanceReady', function(evt) {
CKEDITOR.instances.contractData.execCommand('reloadSuggetionBox');
});
Questo caricherà la CKEditor (contractData è il nome di il mio esempio CKEditor) e configurare il plugin per mostrare suggerimenti attualmente presenti int i "suggerimenti" variabile, in qualsiasi momento è necessario aggiornare/modificare i suggerimenti hai solo bisogno di chiamare questa funzione dopo aver ricaricato "suggerimenti" variabile
CKEDITOR.instances.contractData.execCommand('reloadSuggetionBox');
Fammi sapere se si verificano problemi durante il funzionamento.
Trova il plugin scaricabile al mio repo a
http://navalgandhi1989.github.io/ckeditor-autocomplete-suggestions-plugin/
che sto supponendo che si è tentato di utilizzare '$ ('elemento'). Completamento automatico()' già? Voglio dire, sembra che ci sia un input, puoi semplicemente chiamare 'autocomplete()' su quell'elemento, indipendentemente dal genitore. – Ohgodwhy
Possibile duplicato (risposta): [Elenchi di completamento automatico in CKEditor] (http://stackoverflow.com/questions/28377886) – ruffin