I'm wondering if the way I have set up my plugin makes sense. The idea is that the custom plugin is a replacement for the built-in CKEditor link functionality. The new button will insert html from another file (in the dialogs folder) on the page containing the editor, and then launch a javascript function. I am able to take the markup from the other page and do the insert, but I don't seem to be able to call the function. And, if I click the new plugin button a second time, I get the following error: ckeditor is not defined.
If you have any ideas as to why this is happening, or how I can improve the basic design, I'd be glad to hear them.
I've tried to attach the files in case anyone wanted to see them, but I wasn't able to do so regardless of the extension that I gave to the files. I'll paste the contents of the plugin.js file below, in the hopes that it will shed some light on this mess.
If you have any ideas as to why this is happening, or how I can improve the basic design, I'd be glad to hear them.
I've tried to attach the files in case anyone wanted to see them, but I wasn't able to do so regardless of the extension that I gave to the files. I'll paste the contents of the plugin.js file below, in the hopes that it will shed some light on this mess.
var a = { exec:function(editor){ var htmlPage = '../external_javascript/ckeditor/plugins/ase_insertlink/dialogs/insertlink.html'; var pageContent; // if element hasn't already been appended, use Ajax to retrieve div if (parent.document.getElementById('insertLink_Container') == null) { new Ajax.Request(htmlPage, { method: 'get', parameters: {}, onSuccess: function(transport){ pageContent = transport.responseText; var newDiv = parent.document.createElement('div'); newDiv.innerHTML = pageContent; parent.document.body.appendChild(newDiv); alert(parent.document.getElementById('insertLink_Container').innerHTML); parent.showInsertLinkPopUp(this, 'linkPopup'); }, onFailure: function(transport){ var str = transport.responseText.stripTags().trim(); }, onComplete: function(transport) { } }); } else { parent.showInsertLinkPopUp(this, 'linkPopup'); } } } CKEDITOR.plugins.add('ase_insertlink', { init: function(editor) { var pluginName = 'ase_insertlink'; editor.addCommand(pluginName, a); editor.ui.addButton(pluginName, { label: 'Insert Link', icon: CKEDITOR.plugins.getPath(pluginName) + 'images/icon.gif', command: pluginName }); if (editor.addMenuItem) { // Create a new group editor.addMenuGroup('ase_ContextGroup'); // Create a new menu item editor.addMenuItem('contextEditLink', { label: 'Edit ASE Link', command: pluginName, group: 'ase_ContextGroup', icon: CKEDITOR.plugins.getPath(pluginName) + 'images/icon.gif' }); } if (editor.contextMenu) { editor.contextMenu.addListener(function(element, selection) { // Get anchor parent elements var parents = element.getParents("a"); // Verify it is an anchor (if not, don't show menu item) if (parents[0].getName() != "a") return null; // No item // Show menu item return { contextEditLink: CKEDITOR.TRISTATE_ON }; }); } editor.on( 'doubleclick', function(evt) { var element = evt.data.element; if (element.is('a')) { showInsertLinkPopUp(this, 'linkPopup'); } }); } });