Sto utilizzando CKEditor su un sito Web e devo essere in grado di inserire attributi di dati speciali su alcuni collegamenti creati tramite l'editor. L'utente indica che è necessario l'attributo speciale inserito nel collegamento selezionando una casella di controllo nella finestra di dialogo del collegamento. Sono riuscito ad aggiungere una casella di controllo alla finestra di dialogo di collegamento con il seguente codice:Modificare la finestra di dialogo di collegamento CKEditor per aggiungere attributo personalizzato ai collegamenti
CKEDITOR.on('dialogDefinition', function(ev) {
if (ev.data.name == "link") {
var info = dialog.getContents("info");
info.elements.push({
type: "vbox",
id: "urlOptions",
children: [{
type: "hbox",
children: [{
id: "button",
type: "checkbox",
label: "Button",
commit: function(data) {
data.button = this.getValue()
console.log("commit", data.button, data);
},
setup: function(data) {
this.setValue(data.button);
console.log("setup", data.button, data);
}
}]
}]
});
}
});
Ora ho due problemi. Il primo è che nonostante io abbia aggiunto il codice nelle funzioni commit
e setup
che dovrebbe salvare lo stato della casella di controllo, non funziona. È come se lo data
non fosse in grado di contenere nessun altro parametro ma quelli lì per impostazione predefinita.
Il secondo problema è che non so come aggiungere/rimuovere l'attributo di dati sui miei collegamenti. Mi sembra che dovrei farlo nella mia callback onOk
nella finestra di dialogo, tuttavia, la finestra di dialogo di collegamento ha già un callback onOk
, quindi non sono sicuro di come procedere. Io, ovviamente, non voglio modificare direttamente alcun file di CKEditor.
Come posso realizzare queste cose?
Questo è molto buono, ma sono preoccupato per l'aggiornamento di CKEditor e la sovrascrittura di queste modifiche dopo. Sei sicuro che non ci siano modi per modificare il file stesso? –
Non penso che ci sia un altro modo per farlo. Vedo il tuo punto, ma stai apportando solo 3 piccole modifiche a 1 file nel codice sorgente che dovrebbe richiedere 1 minuto per rifare. È sempre possibile eseguire il backup della cartella "link" e trattarla come plug-in. Quindi, se è necessario aggiornare, si decomprime sempre quel file che include le proprie funzionalità. –
@ Xeon06 hai provato questo? Leggendo il codice sorgente di CKEditor, la finestra di dialogo di collegamento non espone queste funzioni alla configurazione principale. La modifica del codice sorgente è l'unica soluzione. –