First of all, thanks for reading.
I am hosting my current projects on GitHub. Using GitHub Pages, I ]host my personal blog, you can reach the blog here.
On the blog, I have a page dedicated to all the projects I am currently working on. Basically, I wanted to display the list of all my on-going projects automatically, via querying GitHub.
While Googling a lot, I found that this can be achieved using JavaScript.
I tried it, but it didn’t work as expected. When loading the page, I just get the text message ‘Querying GitHub for repositories’. And nothing seems to happen.
I contacted GitHub maintainers, and they kindly replied that this technique uses an outdated version of the GitHub API.
As I am not experienced in JavaScript, can anyone help me to fix it ?
Regards,
Roland.
Here is the code I used inside the HTML page
<div id="opensource-projects"></div>
<!-- JavaScript to load and display repos from GitHub -->
<script src="http://ajax.microsoft.com/ajax/jquery/jquery-1.4.2.min.js" type="text/javascript"></script>
<script src="/javascripts/git.js" type="text/javascript"></script>
<script type="text/javascript">
$(function() {
$("#opensource-projects").loadRepositories("Yonaba");
});
</script>
Then, inside the file git.js, I have the following:
// http://aboutcode.net/2010/11/11/list-github-projects-using-javascript.html
jQuery.githubUser = function(username, callback) {
jQuery.getJSON("http://github.com/api/v1/json/" + username + "?callback=?", callback);
}
jQuery.fn.loadRepositories = function(username) {
this.html("<span>Querying GitHub for " + username +"'s repositories...</span>");
var target = this;
$.githubUser(username, function(data) {
var repos = data.user.repositories;
sortByNumberOfWatchers(repos);
var list = $('<dl/>');
target.empty().append(list);
$(repos).each(function() {
list.append('<dt><a href="'+ this.url +'">' + this.name + '</a></dt>');
list.append('<dd>' + this.description + '</dd>');
});
});
function sortByNumberOfWatchers(repos) {
repos.sort(function(a,b) {
return b.watchers - a.watchers;
});
}
};
@jcolebrand: Thanks for your kind help, but i didn’t really get what you meant. I tried sending some command to Chrome’s console, too. I guess $ is an alias for jQuery, isn’t it? Well, sending same stuff The console just outputs multiple objects, describing my repos. Awesome!
I think the issue is now parsing them properly and display them. Gee, I need to learn JavaScipt syntax for that…
The script that you posted isn’t working because the URL is for the older API. Change the URL to this and it should work for you.
Note:
callback=<YOUR_CALLBACK>is optional.