Index: lams_tool_wiki/web/includes/javascript/wikiCommon.js =================================================================== RCS file: /usr/local/cvsroot/lams_tool_wiki/web/includes/javascript/wikiCommon.js,v diff -u -r1.8 -r1.9 --- lams_tool_wiki/web/includes/javascript/wikiCommon.js 15 Mar 2012 09:41:43 -0000 1.8 +++ lams_tool_wiki/web/includes/javascript/wikiCommon.js 17 Mar 2012 09:28:59 -0000 1.9 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_tool_wiki/web/pages/authoring/basic.jsp,v diff -u -r1.11 -r1.12 --- lams_tool_wiki/web/pages/authoring/basic.jsp 12 Mar 2012 20:34:38 -0000 1.11 +++ lams_tool_wiki/web/pages/authoring/basic.jsp 17 Mar 2012 09:28:58 -0000 1.12 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_tool_wiki/web/pages/learning/wiki.jsp,v diff -u -r1.20 -r1.21 --- lams_tool_wiki/web/pages/learning/wiki.jsp 12 Mar 2012 20:34:38 -0000 1.20 +++ lams_tool_wiki/web/pages/learning/wiki.jsp 17 Mar 2012 09:28:58 -0000 1.21 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_tool_wiki/web/pages/monitoring/wikiDisplay.jsp,v diff -u -r1.17 -r1.18 --- lams_tool_wiki/web/pages/monitoring/wikiDisplay.jsp 12 Mar 2012 20:34:38 -0000 1.17 +++ lams_tool_wiki/web/pages/monitoring/wikiDisplay.jsp 17 Mar 2012 09:28:58 -0000 1.18 @@ -363,8 +363,7 @@ function submitWiki(dispatch) { document.getElementById("dispatch").value=dispatch; - replaceJavascriptToken(); - document.getElementById("monitoringForm").submit(); + replaceJavascriptTokenAndSubmit("monitoringForm"); } CKEDITOR.on('instanceCreated',function (editorInstance)