/** * Github activity feed. * * Graeme Sutherland, July 2012. * * Uses .json activity from github to show public commits. * Requires jQuery and underscore.js * */ var GithubActivity = (function($, _) { var self = {}, gh = 'http://github.com/', default_template = '
  • \ <% if (type == "PushEvent") { %> \ pushed \ to "> \ <% print(payload.ref.replace("refs/heads/", "")); %> \ at \ <%= repository.owner %>/<%= repository.name %> \
    <% _.each(payload.shas, function(sha) { %> \
    \ \ <%= sha[0].substring(0,6) %>
    \
    <%= (sha[2].split("\\n"))[0] %>
    <% }); %>
    \ <% } else if (type == "GistEvent") { %> \ <%= payload.action %>d gist: \ <%= payload.desc %> \ <% } else if (type == "CreateEvent") { %> \ created <%= payload.ref_type %> \ <%= payload.ref %> in \ <%= repository.name %> \ <% } else if (type == "PullRequestEvent") { %> \ <%= payload.action %> pull request \ \ #<%= payload.number %> for \ \ <%= repository.owner %>/<%= repository.name %>: \ <%= payload.pull_request.title %> \ <% } else if (type == "IssueCommentEvent") { %> \ commented on issue \ #<% print(url.replace(/.*\\/issues\\/(\\d+)#.*/, "$1")); %> \ in \ <%= repository.owner %>/<%= repository.name %> \ <% } else if (type == "IssuesEvent") { %> \ <%= payload.action %> issue \ #<% print(url.replace(/.*\\/issues\\/(\\d+)/, "$1")); %> \ in \ <%= repository.owner %>/<%= repository.name %> \ <% } else if (type == "ForkEvent") { %> \ forked \ <%= repository.owner %>/<%= repository.name %> \ to \ <%= actor %>/<%= repository.name %> \ <% } else if (type == "GollumEvent") { %> \ <%= payload.pages[0].action %> the \ "<%= payload.pages[0].page_name %>" \ wiki page \ in \ <%= repository.owner %>/<%= repository.name %> \ <% } else if (type == "FollowEvent") { %> \ started following \ <%= payload.target.login %> \ <% } else if (type == "WatchEvent") { %> \ <%= payload.action %> watching \ \ <%= repository.owner %>/<%= repository.name %> \ <% } else { %> \ Unknown event type <% type %> \ <% } %>\
  • '; /** * Fill in activity into selector from public events for username, * with optional template selector tmpl_selector. */ self.show_activity = function (username, selector, tmpl_selector) { var url = 'https://github.com/' + username + '.json?callback=?', template = $(tmpl_selector).html() || default_template, compiled = _.template(template), current_date = '', $current_list; $.getJSON(url, {}, function (data) { $.each(data.slice(0, 6), function(index, commit) { var date = commit.created_at.substring(0, 10); if (date != current_date) { if (current_date) { var $new_item = $('
  • '); $new_item.append('
    ' + current_date + '
    '); var $div = $('
    '); $div.append($current_list); $new_item.append($div); $(selector).append($new_item); } $current_list = $(''); current_date = date; } var $action = $(compiled(commit)); if (index % 2) { $action.addClass('odd') } $current_list.append($action); }); var $new_item = $('
  • '); $new_item.append('
    ' + current_date + '
    '); var $div = $('
    '); $div.append($current_list); $new_item.append($div); $(selector).append($new_item); }); }; return self; }(jQuery, _));