| 8 | | **Below are some incomplete solutions:** |
| | 8 | Below I have presented some incomplete solutions (**just put code in config.js**). You may ask why Incomplete? [[BR]] |
| | 9 | The below semi-solutions work on initial data or when switching to source and back or when pasting with CRTL+V, but they don’t work with plugins that insert these particular tags. |
| | 10 | |
| | 11 | The new feature here might be some white-list/ black-list or simply list based filter that would: |
| | 12 | * remove tags that are on the black-list |
| | 13 | * remove tags that are on the black-list but depending on some filter configuration setting it would leave or remove tag contents. |
| | 14 | * would change tags that are on black-list to other tags that are on white-list. |
| | 15 | * “Which tags should be changed to which” should be also defined in configuration option (something that user can define), perhaps in form of an object where properties are tag names: |
| | 16 | {{{ |
| | 17 | var myFilterList = { |
| | 18 | a : '', |
| | 19 | strong : 'b', |
| | 20 | img : 'img:span' |
| | 21 | } |
| | 22 | }}} |
| | 23 | * Please note that object used above can tell filter to remove tag (a : ''), change it (strong : 'b'), or wrap it (img : 'img:span'). |
| | 24 | |
| | 25 | |
| | 26 | ---- |
| | 27 | This code wrap images in spans |
| 11 | | 'pluginsLoaded' : function( evt ){ //it must be done before "instanceReady" to make the tag blocking in effect |
| 12 | | evt.editor.dataProcessor.dataFilter.addRules({ |
| 13 | | elements :{ |
| 14 | | span : function( element ) { |
| 15 | | //the rule for img is dumm as it keeps adding span tags the idea is to remove span and let img add it |
| 16 | | if ( element._processed ) |
| 17 | | return; |
| 18 | | if(element.attributes.id == 'cke_image_s_wrapper') |
| 19 | | delete element.name; |
| 20 | | }, |
| 21 | | img : function( element ) |
| 22 | | { |
| 23 | | if ( element._processed ) |
| 24 | | return; |
| 25 | | element._processed = 1; |
| 26 | | element.alt = (!element.attributes.alt ? element.attributes.alt : 'An image'); |
| 27 | | |
| 28 | | var parent = new CKEDITOR.htmlParser.element('span'); |
| 29 | | parent.attributes.style='border:10px solid #f00;display: inline-block;'; |
| 30 | | parent.attributes.id='cke_image_s_wrapper'; |
| 31 | | parent.add(element); |
| 32 | | parent._processed = 1 |
| 33 | | return parent; |
| 34 | | } |
| 35 | | } |
| 36 | | }); |
| 37 | | } |
| | 30 | 'pluginsLoaded' : function( evt ){ //it must be done before "instanceReady" to make the tag blocking in effect |
| | 31 | evt.editor.dataProcessor.dataFilter.addRules({ |
| | 32 | elements :{ |
| | 33 | span : function( element ) { |
| | 34 | //the rule for img is dumm as it keeps adding span tags the idea is to remove span and let img add it |
| | 35 | if ( element._processed ) |
| | 36 | return; |
| | 37 | if(element.attributes.id == 'cke_image_s_wrapper') |
| | 38 | delete element.name; |
| | 39 | }, |
| | 40 | img : function( element ) |
| | 41 | { |
| | 42 | if ( element._processed ) |
| | 43 | return; |
| | 44 | element._processed = 1; |
| | 45 | element.alt = (!element.attributes.alt ? element.attributes.alt : 'An image'); |
| | 46 | var parent = new CKEDITOR.htmlParser.element('span'); |
| | 47 | parent.attributes.style='border:10px solid #f00;display: inline-block;'; |
| | 48 | parent.attributes.id='cke_image_s_wrapper'; |
| | 49 | parent.add(element); |
| | 50 | parent._processed = 1 |
| | 51 | return parent; |