add github repositories sidebar plugin

if you specify

github_user:

in you _config.yml and once you add asides/github.html to your sidebar
items, this plugin will fetch the specified users github repositories
and order them so the last pushed ones are shown first. Then it'll list
them in the side-bar, including a link and the repository description

The plugin will only list your own repositories, not forks, though this
might need to be configurable later
This commit is contained in:
Philip Hofstetter 2011-08-04 20:59:29 +02:00
parent 140198b87a
commit f955919348
3 changed files with 62 additions and 0 deletions

View File

@ -0,0 +1,21 @@
{% if site.github_user %}
<section>
<h1>Github Repos</h1>
<ul id="gh_repos">
<li class="loading">Status updating...</li>
</ul>
<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('{{site.github_user}}', '#gh_repos');
});
</script>
<script src="{{ root_url }}/javascripts/github.js" type="text/javascript"> </script>
</section>
{% endif %}

View File

@ -0,0 +1,38 @@
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(user, target){
var feed = new jXHR();
feed.onerror = function (msg,url) {
$(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 (!data.repositories[i].fork)
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;
})
render(target, repos)
}
};
feed.open("GET","http://github.com/api/v2/json/repos/show/"+user+"?callback=?");
feed.send();
}
};
})();

View File

@ -55,6 +55,9 @@ twitter_follow_button: true
twitter_show_follower_count: false twitter_show_follower_count: false
twitter_tweet_button: true twitter_tweet_button: true
# github repositories
github_user:
# Google Plus # Google Plus
google_plus_one: true google_plus_one: true
google_plus_one_size: medium google_plus_one_size: medium