[CKEditor] iframes & Flash do not (and never will) work with the current setup.

[CKEditor] iframes & Flash do not (and never will) work with the current setup.

  
Forge Component
(13)
Published on 19 Feb by Carlos Henriques
13 votes
Published on 19 Feb by Carlos Henriques

With the current conversion of CK for OS, we're saving the contents of the text box you work inside.

Unfortunately, the contents of that textbox contains CKeditor stylized code for the Iframe to allow a "in frame" preview in the text editor area (it's a red picture with "IFRAME" in it, the exact size and shape and location of where you want the iframe.


When you save the contents of the textbox, it saves the code with the IFRAME picture instead of the HTML markup for the iframe. Even if you hit source to view the source code, then save the code, the contents of the text box are actually the non-preview code, de-rendered by the java.


To make this work we would actually have to reach into the CKEditor javascript and pull out the 

saveEditor(editor.getData());



To recreate issue:

Go to demo page, put in an iframe. You can see in the demo that the iframe doesn't render in the preview area. If you look at the source of the HTML for the preview area, you can see that it's injecting the code for the picture, not the HTML source code.


I'm not a java or javascript guy so I can't implement the fix hinted at by http://stackoverflow.com/questions/30216668/ckeditor-4-inline-editing-with-iframe-code-is-not-being-written-properly


Which would have to be converted and set to some sort of output variable in an OutSystems button to be usable by consumers of the application.


Flash has the exact same problem with the exact same reasons as the iframe.


Solution

Hello Braxton.

I've been checking your post and the link regarding the iframe inside FCKEditor and you can find in attachment a new version of the CKEditor.oml

In this new version, in the webblock's javascript, the line:

osjs('#'+inputId).val(osjs(editor.document.getBody().$).html());
                    

was replaced by:

osjs('#'+inputId).val(editor.getData());


This will solve the problem with the iframe. Please mind that I haven't made any more tests to assure that everything else still works.

In the attachments you can find a new version of the CKEditor and also an OML with a demo page to see this working.

Please let me know if this helps you,


Bruno


Solution

Bruno,


Thanks for the quick response! Looks like the fix worked!

I appreciate your help very much!



Thanks,
Braxton