Skip to content
Snippets Groups Projects

Issue #3334784: Implement Token-Click-Insert for CKEditor 5

1 file
+ 19
0
Compare changes
  • Side-by-side
  • Inline
+ 19
0
@@ -16,6 +16,16 @@
@@ -16,6 +16,16 @@
drupalSettings.tokenFocusedField = this;
drupalSettings.tokenFocusedField = this;
});
});
 
if (Drupal.CKEditor5Instances) {
 
Drupal.CKEditor5Instances.forEach(function (editor) {
 
editor.editing.view.document.on('change:isFocused', (event, data, isFocused) => {
 
if (isFocused) {
 
drupalSettings.tokenFocusedCkeditor5 = editor;
 
}
 
});
 
})
 
}
 
once('token-click-insert', '.token-click-insert .token-key', context).forEach(function (token) {
once('token-click-insert', '.token-click-insert .token-key', context).forEach(function (token) {
var newThis = $('<a href="javascript:void(0);" title="' + Drupal.t('Insert this token into your form') + '">' + $(token).html() + '</a>').click(function () {
var newThis = $('<a href="javascript:void(0);" title="' + Drupal.t('Insert this token into your form') + '">' + $(token).html() + '</a>').click(function () {
var content = this.text;
var content = this.text;
@@ -50,6 +60,15 @@
@@ -50,6 +60,15 @@
else if (drupalSettings.tokenFocusedField) {
else if (drupalSettings.tokenFocusedField) {
insertAtCursor(drupalSettings.tokenFocusedField, content);
insertAtCursor(drupalSettings.tokenFocusedField, content);
}
}
 
else if (drupalSettings.tokenFocusedCkeditor5) {
 
const editor = drupalSettings.tokenFocusedCkeditor5;
 
editor.model.change((writer) => {
 
writer.insertText(
 
content,
 
editor.model.document.selection.getFirstPosition(),
 
);
 
})
 
}
else {
else {
alert(Drupal.t('First click a text field to insert your tokens into.'));
alert(Drupal.t('First click a text field to insert your tokens into.'));
}
}
Loading