diff --git a/filter/mediaplugin/eolas_fix.js b/filter/mediaplugin/eolas_fix.js new file mode 100644 index 0000000000000..e3a223171eabd --- /dev/null +++ b/filter/mediaplugin/eolas_fix.js @@ -0,0 +1,80 @@ +// Documentation & updates available at: +// http://codecentre.eplica.is/js/eolasfix/test.htm + +(function( Eolas_Fixed, + win, doc, + getElementsByTagName, + outerHTML, + parentNode, + tags, + elmsToRemoveOnload, + x, + is_ie, + y,z,elm,childNode,HTML,dummy,eolasfix) +{ + // run only once! + if (win[Eolas_Fixed]) return; + win[Eolas_Fixed] = 1; + + eolasfix = function () + { + // for each tag name specified in Array t + while (tags[++x]) + { + // find all elements of that type in the document + // loop through the elements + y = 0; + while (elm = doc[getElementsByTagName](tags[x])[y++]) + { + if (is_ie) + { + HTML = '>'; + z = 0; + // elements don't show up in innerHTML IE + // so we need to collect their outerHTML. + while (childNode = elm.childNodes[z++]) + HTML += childNode[outerHTML]; + + // create a 'dummy' element + dummy = doc.createElement('i'); + // inject it next to `elm`, + elm[parentNode].insertBefore(dummy, elm); + // and turn it into an `elm` clone + dummy[outerHTML] = elm[outerHTML].replace(/>/, HTML); + // increment y to skip over it + y++; + + // then hide the original elm + elm.style.display = 'none'; + // and save it in 'The List of Elements to Remove Later'. + elmsToRemoveOnload[elmsToRemoveOnload.length] = elm; + } + else + { + elm[outerHTML] = elm[outerHTML]; + } + } + } + }; + + // For IE run the fix straight away (because the defer="defer" + // attribute has delayed execution until the DOM has loaded). + // Then assign a window.onload event to purge the old elements. + is_ie && !eolasfix() && win.attachEvent('onload', function(){ + x=0; + while(elm = elmsToRemoveOnload[x++]) + elm[parentNode].removeChild(elm); + }); + // For Opera set an `DOMContentLoaded` event to run the fix. + win.opera && doc.addEventListener('DOMContentLoaded', eolasfix, 0); + +})( '__Eolas_Fixed', + window, document, + 'getElementsByTagName', + 'outerHTML', + 'parentNode', + ['object','embed','applet'], + [], + -1 /*@cc_on,1 @*/ + ); + diff --git a/filter/mediaplugin/filter.php b/filter/mediaplugin/filter.php index 7ed3b27eda900..c9708acbc2f9e 100644 --- a/filter/mediaplugin/filter.php +++ b/filter/mediaplugin/filter.php @@ -85,6 +85,9 @@ function mediaplugin_filter($courseid, $text) { if (is_null($newtext)) { $newtext = $text; } + + $newtext .= ''; + return $newtext; }