diff -ruN typo3_src-4.4.7.orig/typo3/jsfunc.tbe_editor.js typo3_src-4.4.7/typo3/jsfunc.tbe_editor.js --- typo3_src-4.4.7.orig/typo3/jsfunc.tbe_editor.js 2011-03-17 12:59:41.000000000 +0100 +++ typo3_src-4.4.7/typo3/jsfunc.tbe_editor.js 2011-03-17 13:02:29.000000000 +0100 @@ -32,6 +32,84 @@ * @coauthor Oliver Hader */ +/** +* +* URL encode / decode +* http://www.webtoolkit.info/ +* +**/ + +var Url = { + + // public method for url encoding + encode : function (string) { + return escape(this._utf8_encode(string)); + }, + + // public method for url decoding + decode : function (string) { + return this._utf8_decode(unescape(string)); + }, + + // private method for UTF-8 encoding + _utf8_encode : function (string) { + string = string.replace(/\r\n/g,"\n"); + var utftext = ""; + + for (var n = 0; n < string.length; n++) { + + var c = string.charCodeAt(n); + + if (c < 128) { + utftext += String.fromCharCode(c); + } + else if((c > 127) && (c < 2048)) { + utftext += String.fromCharCode((c >> 6) | 192); + utftext += String.fromCharCode((c & 63) | 128); + } + else { + utftext += String.fromCharCode((c >> 12) | 224); + utftext += String.fromCharCode(((c >> 6) & 63) | 128); + utftext += String.fromCharCode((c & 63) | 128); + } + + } + + return utftext; + }, + + // private method for UTF-8 decoding + _utf8_decode : function (utftext) { + var string = ""; + var i = 0; + var c = c1 = c2 = 0; + + while ( i < utftext.length ) { + + c = utftext.charCodeAt(i); + + if (c < 128) { + string += String.fromCharCode(c); + i++; + } + else if((c > 191) && (c < 224)) { + c2 = utftext.charCodeAt(i+1); + string += String.fromCharCode(((c & 31) << 6) | (c2 & 63)); + i += 2; + } + else { + c2 = utftext.charCodeAt(i+1); + c3 = utftext.charCodeAt(i+2); + string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63)); + i += 3; + } + + } + + return string; + } +} + var TBE_EDITOR = { /* Example: @@ -534,7 +612,7 @@ rawurlencode: function(str,maxlen) { var output = str; if (maxlen) output = output.substr(0,200); - output = escape(output); + output = Url.encode(output); output = TBE_EDITOR.str_replace("*","%2A", output); output = TBE_EDITOR.str_replace("+","%2B", output); output = TBE_EDITOR.str_replace("/","%2F", output);