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 --- .../classic/source/_includes/asides/github.html | 21 ++++++++++++ .themes/classic/source/javascripts/github.js | 38 ++++++++++++++++++++++ 2 files changed, 59 insertions(+) create mode 100644 .themes/classic/source/_includes/asides/github.html create mode 100644 .themes/classic/source/javascripts/github.js (limited to '.themes/classic/source') diff --git a/.themes/classic/source/_includes/asides/github.html b/.themes/classic/source/_includes/asides/github.html new file mode 100644 index 00000000..07b37aa4 --- /dev/null +++ b/.themes/classic/source/_includes/asides/github.html @@ -0,0 +1,21 @@ +{% if site.github_user %} +
+

Github Repos

+ + + +
+{% endif %} 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