diff --git a/index.html b/index.html index 7518e64..22108d7 100644 --- a/index.html +++ b/index.html @@ -71,7 +71,7 @@ var x = parseInt(Math.random() * 100000); c.innerHTML = [ '<div id="gitstatus_' + x + '"></div>\n', - '<script type="text/javascript" src=""></script>\n', + '<script type="text/javascript" src="http://ryanmcgrath.github.com/gitstatus/js/gitstatus.min.js"></script>\n', '<script type="text/javascript">\n', 'new GitStatus({\n', ' id: "gitstatus_' + x + '",\n', diff --git a/js/gitstatus.js b/js/gitstatus.js index 0a5c7fb..73ba8fc 100644 --- a/js/gitstatus.js +++ b/js/gitstatus.js @@ -204,7 +204,7 @@ * @returns String, parsed/replaced template. */ render: function(template, context) { - for(x in context) template = template.replace(new RegExp('{{' + x + '}}', 'g'), context[x]); + for(x in context) template = template.replace(new RegExp('{{' + x + '}}', 'g'), context[x].replace('<', '<').replace('>', '>')); return template; } }; diff --git a/js/gitstatus.min.js b/js/gitstatus.min.js new file mode 100644 index 0000000..c30751b --- /dev/null +++ b/js/gitstatus.min.js @@ -0,0 +1 @@ +(function(b){if(b!=="undefined"){return}var a=window.GitStatus=function a(c){this.opts=c;if(typeof this.opts.no_of_commits==="undefined"){this.opts.no_of_commits=5}};a.util={DEBUG:false,bind:function(c,d){return function(){return d.apply(c,arguments)}},loadScript:function(e,d){var c=document.createElement("script");c.type="text/javascript";c.setAttribute("src",e);c.setAttribute("async","true");if(c.readyState){c.onreadystatechange=function(){if(/loaded|complete/.test(c.readyState)){c.onreadystatechange=null;if(typeof d!=="undefined"){d()}!a.util.DEBUG&&c&&document.documentElement.firstChild.removeChild(c)}}}else{c.addEventListener("load",function(){if(typeof d!=="undefined"){d()}!a.util.DEBUG&&c&&document.documentElement.firstChild.removeChild(c)},false)}document.documentElement.firstChild.appendChild(c)},jsonp:function(i,c,f,e){var j=typeof f!=="undefined"?a.util.bind(f,c):c,h=typeof e!=="undefined"?e:"GitStatusJSONPCallback_"+parseInt(Math.random()*100000),g=i+(i.indexOf("?")>-1?"&callback=":"?callback=")+h,d=null;d=a.util.bind(this,function(k){j(k);try{delete window[h]}catch(l){window[h]=null}});window[h]=d;a.util.loadScript(g)},createGravatarURL:function(c){return"http://www.gravatar.com/avatar/"+c+"?s=50&d=mm"},render:function(d,c){for(x in c){d=d.replace(new RegExp("{{"+x+"}}","g"),c[x].replace("<","<").replace(">",">"))}return d}};a.prototype={opts:null,node:null,api_base_url:"https://github.com",base_structure:['
','Recent Commits on {{repo_name}}',"
",'
',"{{history}}","
",'"].join(""),commit_structure:['
','','
','','
',"

{{commit_msg}}

","
",'
','By {{login}} on {{date}}',"
","
","
"].join(""),default_style:[".gitstatus_container { -webkit-border-radius: 2px; -moz-border-radius: 2px; border-radius: 2px; }",".gitstatus_container a, .gitstatus_container a:visited { color: #307ace; text-decoration: none; border-bottom: 1px solid dotted #307ace; }",".gitstatus_header { text-align: right; padding: 5px; color: #f9f9f9; background-color: #010101; background-image: -webkit-gradient(linear, left top, left bottom, from(#333), to(#010101)); -moz-border-radius: 2px 2px 0 0; -webkit-border-radius: 2px 2px 0 0; border-radius: 2px 2px 0 0; }",".gitstatus_commit_history { font-size: 11px; border-left: 1px solid #c9c9c9; border-right: 1px solid #c9c9c9; }",".gitstatus_commit_row { padding: 5px 5px 5px 63px; position: relative; background-color: #f5f5f5; border-bottom: 1px solid #c9c9c9; -webkit-box-shadow: inset 2px 2px 2px #e9e9e9; -moz-box-shadow: inset 2px 2px 2px #e9e9e9; box-shadow: inset 2px 2px 2px #e9e9e9;}",".gitstatus_row_even { background-color: #f9f9f9 !important; }",".gitstatus_commit_row_meta { color: #b2b2b2; }",".gitstatus_commit_row_meta a, .gitstatus_commit_row_meta a:visited { color: #a2a2a2 !important; border-color: #a2a2a2 !important; }",".gitstatus_gravatar { -webkit-border-radius: 2px; -moz-border-radius: 2px; border-radius: 2px; position: absolute; top: 7px; left: 5px; }",".gitstatus_footer { font-size: 10px !important; padding: 3px 5px 5px; text-align: right; color: #f9f9f9; background-color: #010101; background-image: -webkit-gradient(linear, left top, left bottom, from(#333), to(#010101)); -moz-border-radius: 0 0 2px 2px; -webkit-border-radius: 0 0 2px 2px; border-radius: 0 0 2px 2px; }"].join(""),show:function(){this.api_base_url+="/"+this.opts.github_username+"/"+this.opts.github_repository+"/";a.util.jsonp(this.api_base_url+"network_meta",this._getRepoNetworkData,this);return this},_getRepoNetworkData:function(e){var d=e.nethash,c=e.focus,f=this.api_base_url+"network_data_chunk?nethash="+d+"&start="+(c-this.opts.no_of_commits)+"&end="+c;a.util.jsonp(f,this._build,this)},_build:function(d){if(this.node===null){this.node=document.getElementById(this.opts.id)}var j=document.createDocumentFragment(),c=document.createElement("div"),g="",h=d.commits,e=h.length;c.className="gitstatus_container";j.appendChild(c);while(e--){g+=a.util.render(this.commit_structure,{even_or_odd:(e%2===0?"gitstatus_row_even":"gitstatus_row_odd"),gravatar:a.util.createGravatarURL(h[e].gravatar),sha_link:"https://github.com/"+this.opts.github_username+"/"+this.opts.github_repository+"/commit/"+h[e].id,sha:"Commit #"+h[e].id.substr(0,7),commit_msg:h[e].message,login:h[e].login,date:h[e].date})}c.innerHTML=a.util.render(this.base_structure,{repo_name:this.opts.github_repository,repo_url:this.api_base_url,history:g});if(typeof this.opts.disable_default_styles==="undefined"){var f=document.createElement("style");f.type="text/css";if(f.styleSheet){f.styleSheet.cssText=this.default_style}else{f.appendChild(document.createTextNode(this.default_style))}document.documentElement.firstChild.appendChild(f)}this.node.appendChild(j)}}})(typeof window.GitStatus); \ No newline at end of file