I've created a custom plugin that adds (or removes) a comment into the editor. The purpose of this is so the user can specify where they'd like an excerpt to go. It works exactly the same as the Wordpress "more" http://codex.wordpress.org/Customizing_the_Read_More#More_about_.24more.
My problem is I can't seem to figure out how to create a visual queue to show the user where they have inserted the excerpt tag. There is no documentation on this so any help from the community would be much appreciated.
Here's what I have so far. It basically inserts <!--excerpt--> into the editor, or, if it already exists, removes it.
(function(){ var inserted = false; CKEDITOR.plugins.add( 'excerpt', { init: function( editor ) { editor.addCommand( 'insertExcerpt', { exec : function( editor ) { if(!inserted){ editor.insertHtml( '<!--excerpt-->' ); inserted = true; }else{ var removed = editor.getData().replace('<!--excerpt-->','', 'gm'); editor.setData(removed); inserted = false; } } }); editor.ui.addButton( 'Excerpt', { label: 'Insert excerpt', command: 'insertExcerpt', icon: this.path + 'images/icn_excerpt.png' }); }, }); function createFakeElement( editor, realElement ) { return editor.createFakeParserElement( realElement, null, 'comment', true ); } })();
Re: How to createFakeElement
I figured it out by looking form hiddenfield.
\ckeditor\_source\plugins\forms
Notice you need requires : [ 'image', 'fakeobjects' ] in plugins definition.