Created
June 18, 2012 05:21
-
-
Save LeonardoCA/2946969 to your computer and use it in GitHub Desktop.
nette.ajax.js Experimental Extension - displays some FireLogger info as flash message
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(function($, undefined) { | |
/** | |
* Shows HTTP Error Statuses and some FireLogger info from Ajax request | |
*/ | |
$.nette.ext('httpStatusToFlash', { | |
start: function (xhr) { | |
xhr.setRequestHeader("X-FireLogger", '1.2'); | |
return xhr; | |
}, | |
error: function (payload) { | |
var flashMessages = $('#snippet--flashMessages'); | |
var html = ""; | |
if (payload.status != 200) { | |
html += '<h4>'+payload.status+' '+payload.statusText+'</h4>'; | |
} | |
var headers = payload.getAllResponseHeaders(); | |
var matches = headers.match(/FireLogger[-a-z0-9]+/); | |
if (matches != null) { | |
for (var i=0;i<matches.length;i++) | |
{ | |
var firelog = jQuery.parseJSON(this.base64decode(payload.getResponseHeader(matches[i]))); | |
//console.log(firelog); | |
firelog = firelog.logs[0]; | |
html += '<p>'+firelog.template+'</p><p>'+this.editorLink(firelog.pathname,firelog.lineno)+'</p>'; | |
} | |
} | |
flashMessages.html('<div class="alert alert-error"><a class="close" data-dismiss="alert">×</a>'+html+'</div>'); | |
} | |
}, { | |
editorLink: function (link,lineno) { | |
return '<b>File:</b> <a title="'+link+':'+lineno+'" href="editor://open/?file='+encodeURIComponent(link)+'&line='+lineno+'">'+link+'</a> <b>Line:</b> '+lineno; | |
}, | |
/* http://www.webtoolkit.info/javascript-base64.html */ | |
_keyStr : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=", | |
// base64 decode | |
base64decode : function (input) { | |
var output = ""; | |
var chr1, chr2, chr3; | |
var enc1, enc2, enc3, enc4; | |
var i = 0; | |
input = input.replace(/[^A-Za-z0-9\+\/\=]/g, ""); | |
while (i < input.length) { | |
enc1 = this._keyStr.indexOf(input.charAt(i++)); | |
enc2 = this._keyStr.indexOf(input.charAt(i++)); | |
enc3 = this._keyStr.indexOf(input.charAt(i++)); | |
enc4 = this._keyStr.indexOf(input.charAt(i++)); | |
chr1 = (enc1 << 2) | (enc2 >> 4); | |
chr2 = ((enc2 & 15) << 4) | (enc3 >> 2); | |
chr3 = ((enc3 & 3) << 6) | enc4; | |
output = output + String.fromCharCode(chr1); | |
if (enc3 != 64) { | |
output = output + String.fromCharCode(chr2); | |
} | |
if (enc4 != 64) { | |
output = output + String.fromCharCode(chr3); | |
} | |
} | |
output = this._utf8_decode(output); | |
return output; | |
}, | |
_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; | |
} | |
}); | |
})(jQuery); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment