![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/mautic.corals.io/app/assets/libraries/ckeditor/src/ |
import Plugin from '@ckeditor/ckeditor5-core/src/plugin'; import Model from '@ckeditor/ckeditor5-ui/src/model'; import Collection from '@ckeditor/ckeditor5-utils/src/collection'; import { addListToDropdown, createDropdown } from '@ckeditor/ckeditor5-ui/src/dropdown/utils'; export default class TokenPlugin extends Plugin { init() { const editor = this.editor; const tokens = typeof editor.config._config.dynamicToken != undefined ? editor.config._config.dynamicToken : [] ; const tokens_label = typeof editor.config._config.dynamicTokenLabel != undefined ? editor.config._config.dynamicTokenLabel : "Insert Token" ; editor.ui.componentFactory.add('TokenPlugin', (locale) => { const dropdownView = createDropdown(locale); dropdownView.buttonView.set({ withText: true, label: tokens_label, tooltip: true, }); const items = new Collection(); tokens.map((item) => { const itemId = item.id; let tokenName = item.name; let tokenNameArr = tokenName.split(':'); if (tokenNameArr[0] != undefined && tokenNameArr[0] === 'a') { tokenName = tokenNameArr[1]; } if (itemId.match(/dwc=/i)){ const tn = itemId.substr(5, itemId.length - 6); tokenName = tokenName + ' (' + tn + ')'; } else if (itemId.match(/contactfield=company/i) && !tokenName.match(/company/i)){ tokenName = 'Company ' + tokenName; } items.add({ type: 'button', model: new Model({ withText: true, label: tokenName, id: itemId, }), }); }); addListToDropdown(dropdownView, items); dropdownView.on('execute', (eventInfo) => { const {id, label} = eventInfo.source; editor.model.change(writer => { let content = "<span class='atwho-inserted' data-fr-verified='true'>"+id+"</span>"; if (id.match(/assetlink=/i)) { content = '<a title="Asset Link" href="' + id + '">' + label + '</a>'; } else if (id.match(/pagelink=/i)) { content = '<a title="Page Link" href="' + id + '">' + label + '</a>'; } const viewFragment = editor.data.processor.toView( content ); const modelFragment = editor.data.toModel( viewFragment ); editor.model.insertContent( modelFragment ); }); }); return dropdownView; }); } };