2013-07-19, 05:12:53
(2013-07-19, 04:54:44)shawn_a Wrote: how were you adding it to the cke links ? just curious since I plan on rewriting that entire functionality soon, and have not considered that it could break a plugin.
The whole CKEditor integration is a mess, e.g. it's necessary to copy the whole code to include an editor for a custom field. In this case, some analysis of the Javascript resulted in the following code to change the page list:
Code:
<script type="text/javascript">
//<![CDATA[
// modify existing Link dialog
CKEDITOR.on( 'dialogDefinition', function( ev ) {
if ((ev.editor != editor) || (ev.data.name != 'link')) return;
var definition = ev.data.definition;
var infoTab = definition.getContents('info');
for (var i=0; i<infoTab.elements.length; i++) {
var element = infoTab.elements[i];
if ('id' in element && element.id == 'localPageOptions') {
element.children[0].items = <?php echo json_encode($pages); ?>;
}
}
});
//]]>
</script>
If you change the CKEditor integration, you should create a function addEditor($id), which creates the editor as replacement for the textarea with id $id. Add some hooks to allow plugins to provide an alternative page list, an image selection window, add buttons, etc. - this would make a plugin author's life easier ;-)