Index: lams_tool_wiki/web/includes/javascript/wikiCommon.js =================================================================== diff -u -re2a2945972679063c5f47f665e029aa88be6b6bd -r03aad5c6d9e089f1894d912b47140c6a4ccdc420 --- lams_tool_wiki/web/includes/javascript/wikiCommon.js (.../wikiCommon.js) (revision e2a2945972679063c5f47f665e029aa88be6b6bd) +++ lams_tool_wiki/web/includes/javascript/wikiCommon.js (.../wikiCommon.js) (revision 03aad5c6d9e089f1894d912b47140c6a4ccdc420) @@ -89,15 +89,28 @@ } } -// LDEV-2824 Replace "javascript" with another word before posting so browser does not detect it as XSS attack -function replaceJavascriptToken() -{ +//LDEV-2824 Replace "javascript" with another word before posting so browser does not detect it as XSS attack +function replaceJavascriptTokenAndSubmit(formName) { + // updating CKEditor instance is asynchronous, but we need to make sure it's completed + // before submitting the form, thus sophisticated synchronization :/ + var instanceUpdateStarted = 0; + var instanceUpdateCompleted = 0; + for (var instanceId in CKEDITOR.instances){ var instance = CKEDITOR.instances[instanceId]; var data = instance.getData(); var encodedData = data.replace(/javascript/g,"JAVASCRIPTREPLACE"); + instanceUpdateStarted++; instance.setData(encodedData, function() { instance.updateElement(); + instanceUpdateCompleted++; }); } + + var synchro = setInterval(function() { + if (instanceUpdateCompleted >= instanceUpdateStarted){ + clearInterval(synchro); + document.getElementById(formName).submit(); + } + }, 500); } Index: lams_tool_wiki/web/pages/authoring/basic.jsp =================================================================== diff -u -r31d297d14df060ae066a55e125b5025ed713d681 -r03aad5c6d9e089f1894d912b47140c6a4ccdc420 --- lams_tool_wiki/web/pages/authoring/basic.jsp (.../basic.jsp) (revision 31d297d14df060ae066a55e125b5025ed713d681) +++ lams_tool_wiki/web/pages/authoring/basic.jsp (.../basic.jsp) (revision 03aad5c6d9e089f1894d912b47140c6a4ccdc420) @@ -269,8 +269,7 @@ function submitWiki(dispatch) { document.getElementById("dispatch").value=dispatch; - replaceJavascriptToken(); - document.getElementById("authoringForm").submit(); + replaceJavascriptTokenAndSubmit("authoringForm"); } CKEDITOR.on('instanceCreated', function(editorInstance) Index: lams_tool_wiki/web/pages/learning/wiki.jsp =================================================================== diff -u -r31d297d14df060ae066a55e125b5025ed713d681 -r03aad5c6d9e089f1894d912b47140c6a4ccdc420 --- lams_tool_wiki/web/pages/learning/wiki.jsp (.../wiki.jsp) (revision 31d297d14df060ae066a55e125b5025ed713d681) +++ lams_tool_wiki/web/pages/learning/wiki.jsp (.../wiki.jsp) (revision 03aad5c6d9e089f1894d912b47140c6a4ccdc420) @@ -463,8 +463,7 @@ function submitWiki(dispatch) { document.getElementById("dispatch").value=dispatch; - replaceJavascriptToken(); - document.getElementById("learningForm").submit(); + replaceJavascriptTokenAndSubmit("learningForm"); } Index: lams_tool_wiki/web/pages/monitoring/wikiDisplay.jsp =================================================================== diff -u -r31d297d14df060ae066a55e125b5025ed713d681 -r03aad5c6d9e089f1894d912b47140c6a4ccdc420 --- lams_tool_wiki/web/pages/monitoring/wikiDisplay.jsp (.../wikiDisplay.jsp) (revision 31d297d14df060ae066a55e125b5025ed713d681) +++ lams_tool_wiki/web/pages/monitoring/wikiDisplay.jsp (.../wikiDisplay.jsp) (revision 03aad5c6d9e089f1894d912b47140c6a4ccdc420) @@ -363,8 +363,7 @@ function submitWiki(dispatch) { document.getElementById("dispatch").value=dispatch; - replaceJavascriptToken(); - document.getElementById("monitoringForm").submit(); + replaceJavascriptTokenAndSubmit("monitoringForm"); } CKEDITOR.on('instanceCreated',function (editorInstance)