Brandon Mathis
13 years ago
3 changed files with 80 additions and 1 deletions
@ -0,0 +1,30 @@ |
|||
{% if site.github_user %} |
|||
<section> |
|||
<h1>Github Repos</h1> |
|||
<ul id="gh_repos"> |
|||
<li class="loading">Status updating...</li> |
|||
</ul> |
|||
{% if site.github_show_profile_link %} |
|||
<a href="https://github.com/{{site.github_user}}">@{{site.github_user}}</a> on Github |
|||
{% endif %} |
|||
<script type="text/javascript"> |
|||
$.domReady(function(){ |
|||
if (!window.jXHR){ |
|||
var jxhr = document.createElement('script'); |
|||
jxhr.type = 'text/javascript'; |
|||
jxhr.src = '{{ root_url}}/javascripts/libs/jXHR.js'; |
|||
var s = document.getElementsByTagName('script')[0]; |
|||
s.parentNode.insertBefore(jxhr, s); |
|||
} |
|||
|
|||
github.showRepos({ |
|||
user: '{{site.github_user}}', |
|||
count: {{site.github_repo_count}}, |
|||
skip_forks: {{site.github_skip_forks}}, |
|||
target: '#gh_repos' |
|||
}); |
|||
}); |
|||
</script> |
|||
<script src="{{ root_url }}/javascripts/github.js" type="text/javascript"> </script> |
|||
</section> |
|||
{% endif %} |
@ -0,0 +1,43 @@ |
|||
github = (function(){ |
|||
function render(target, repos){ |
|||
var i = 0, fragment = '', t = $(target)[0]; |
|||
|
|||
for(i = 0; i < repos.length; i++) |
|||
fragment += '<li><a href="'+repos[i].url+'">'+repos[i].name+'</a><p>'+repos[i].description+'</p></li>'; |
|||
|
|||
t.innerHTML = fragment; |
|||
} |
|||
return { |
|||
showRepos: function(options){ |
|||
var feed = new jXHR(); |
|||
feed.onerror = function (msg,url) { |
|||
$(options.target + ' li.loading').addClass('error').text("Error loading feed"); |
|||
} |
|||
feed.onreadystatechange = function(data){ |
|||
if (feed.readyState === 4) { |
|||
var repos = []; |
|||
var i; |
|||
for (i = 0; i < data.repositories.length; i++){ |
|||
if (options.skip_forks && data.repositories[i].fork) |
|||
continue; |
|||
repos.push(data.repositories[i]); |
|||
} |
|||
repos.sort(function(a, b){ |
|||
var a = new Date(a.pushed_at), |
|||
b = new Date(b.pushed_at); |
|||
|
|||
if (a.valueOf() == b.valueOf()) return 0; |
|||
return a.valueOf() > b.valueOf() ? -1 : 1; |
|||
}); |
|||
|
|||
if (options.count) |
|||
repos.splice(options.count); |
|||
|
|||
render(options.target, repos) |
|||
} |
|||
}; |
|||
feed.open("GET","http://github.com/api/v2/json/repos/show/"+options.user+"?callback=?"); |
|||
feed.send(); |
|||
} |
|||
}; |
|||
})(); |
Loading…
Reference in new issue