diff options
author | Philip Hofstetter <phofstetter@sensational.ch> | 2011-08-04 20:59:29 +0200 |
---|---|---|
committer | Philip Hofstetter <phofstetter@sensational.ch> | 2011-08-04 21:01:24 +0200 |
commit | f95591934822064aad21dfa868ccffce34387bf1 (patch) | |
tree | dfa8016b29ef038ba7d1773c6ecdf1a270465451 | |
parent | 140198b87a4c92cc4c86cd3e2380d9c6364c9d63 (diff) | |
download | my_new_personal_website-f95591934822064aad21dfa868ccffce34387bf1.tar.xz my_new_personal_website-f95591934822064aad21dfa868ccffce34387bf1.zip |
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
-rw-r--r-- | .themes/classic/source/_includes/asides/github.html | 21 | ||||
-rw-r--r-- | .themes/classic/source/javascripts/github.js | 38 | ||||
-rw-r--r-- | _config.yml | 3 |
3 files changed, 62 insertions, 0 deletions
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 %} +<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 %} 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 += '<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(); + } + }; +})();
\ No newline at end of file diff --git a/_config.yml b/_config.yml index 9a48c018..30adf81e 100644 --- a/_config.yml +++ b/_config.yml @@ -55,6 +55,9 @@ twitter_follow_button: true twitter_show_follower_count: false twitter_tweet_button: true +# github repositories +github_user: + # Google Plus google_plus_one: true google_plus_one_size: medium |