From f95591934822064aad21dfa868ccffce34387bf1 Mon Sep 17 00:00:00 2001 From: Philip Hofstetter Date: Thu, 4 Aug 2011 20:59:29 +0200 Subject: 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 --- .themes/classic/source/javascripts/github.js | 38 ++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 .themes/classic/source/javascripts/github.js (limited to '.themes/classic/source/javascripts') diff --git a/.themes/classic/source/javascripts/github.js b/.themes/classic/source/javascripts/github.js new file mode 100644 index 00000000..56ebe969 --- /dev/null +++ b/.themes/classic/source/javascripts/github.js @@ -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 += '
  • '+repos[i].name+'

    '+repos[i].description+'

  • '; + + 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(); + } + }; +})(); \ No newline at end of file -- cgit v1.2.1 From 08af7b4e383976858ca5b7dd3246525c17bcb941 Mon Sep 17 00:00:00 2001 From: Philip Hofstetter Date: Thu, 4 Aug 2011 21:15:50 +0200 Subject: allow limiting the amount of repos to display by setting github_repo_count to someething that's not 0, you can limit the amount of repositories to render --- .themes/classic/source/javascripts/github.js | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) (limited to '.themes/classic/source/javascripts') diff --git a/.themes/classic/source/javascripts/github.js b/.themes/classic/source/javascripts/github.js index 56ebe969..8af51486 100644 --- a/.themes/classic/source/javascripts/github.js +++ b/.themes/classic/source/javascripts/github.js @@ -8,10 +8,10 @@ github = (function(){ t.innerHTML = fragment; } return { - showRepos: function(user, target){ + showRepos: function(options){ var feed = new jXHR(); feed.onerror = function (msg,url) { - $(target + ' li.loading').addClass('error').text("Error loading feed"); + $(options.target + ' li.loading').addClass('error').text("Error loading feed"); } feed.onreadystatechange = function(data){ if (feed.readyState === 4) { @@ -27,11 +27,15 @@ github = (function(){ if (a.valueOf() == b.valueOf()) return 0; return a.valueOf() > b.valueOf() ? -1 : 1; - }) - render(target, repos) + }); + + if (options.count) + repos.splice(options.count); + + render(options.target, repos) } }; - feed.open("GET","http://github.com/api/v2/json/repos/show/"+user+"?callback=?"); + feed.open("GET","http://github.com/api/v2/json/repos/show/"+options.user+"?callback=?"); feed.send(); } }; -- cgit v1.2.1 From 16bb7729ec740c1bc5d327aa5ac32bbff7a1afff Mon Sep 17 00:00:00 2001 From: Philip Hofstetter Date: Thu, 4 Aug 2011 21:24:48 +0200 Subject: make listing/not listing of forks configurable some people have more or less taken over projects with their forks, so it probably makes sense to still list them among the repositories --- .themes/classic/source/javascripts/github.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to '.themes/classic/source/javascripts') diff --git a/.themes/classic/source/javascripts/github.js b/.themes/classic/source/javascripts/github.js index 8af51486..79c60d1b 100644 --- a/.themes/classic/source/javascripts/github.js +++ b/.themes/classic/source/javascripts/github.js @@ -18,8 +18,9 @@ github = (function(){ var repos = []; var i; for (i = 0; i < data.repositories.length; i++){ - if (!data.repositories[i].fork) - repos.push(data.repositories[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), -- cgit v1.2.1 From 1860c236329a13e62b8af2f2c41c589fa25177bb Mon Sep 17 00:00:00 2001 From: Philip Hofstetter Date: Thu, 4 Aug 2011 21:49:38 +0200 Subject: corrected fork skipping logic --- .themes/classic/source/javascripts/github.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to '.themes/classic/source/javascripts') diff --git a/.themes/classic/source/javascripts/github.js b/.themes/classic/source/javascripts/github.js index 79c60d1b..623d493f 100644 --- a/.themes/classic/source/javascripts/github.js +++ b/.themes/classic/source/javascripts/github.js @@ -18,7 +18,7 @@ github = (function(){ var repos = []; var i; for (i = 0; i < data.repositories.length; i++){ - if (options.skip_forks && !data.repositories[i].fork) + if (options.skip_forks && data.repositories[i].fork) continue; repos.push(data.repositories[i]); } -- cgit v1.2.1