forked from erikzaadi/jQueryPlugins
-
Notifications
You must be signed in to change notification settings - Fork 0
/
jquery.GitHubBadge.min.js
38 lines (38 loc) · 3.74 KB
/
jquery.GitHubBadge.min.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
/*
* jQuery GitHub Badge 1.0
*
* Copyright (c) 2009 Erik Zaadi
*
* Inspired by http://drnicjavascript.rubyforge.org/github_badge and
* http://mattn.github.com/jquery-github-badge/
*
* Home Page : http://erikzaadi.github.com/jQueryPlugins/jQuery.GitHubBadge
* jQuery Plugin home page : http://plugins.jquery.com/project/GitHubBadge
* Wiki : http://wiki.github.com/erikzaadi/jQueryPlugins/jquerygithubbadge
*
* Dual licensed under the MIT and GPL licenses:
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
*/
;(function($){$.fn.GitHubBadge=function(options){if(typeof(options)=="string"){options={user:options};
}var mainOptions=$.extend({},$.fn.GitHubBadge.defaults,options);return this.each(function(){var opts=$.meta?$.extend({},mainOptions,$this.data()):mainOptions;
_GitHubBadge($(this),opts);});};$.fn.GitHubBadge.defaults={user:"",showErrors:false,showForks:true,validateUser:false};
function _GitHubBadge($gitHubBadgeElement,options){if(options.validateUser){_GitHubBadgeValidateUser($gitHubBadgeElement,options);
}else{_getGitHubBadge($gitHubBadgeElement,options);}}function _GitHubBadgeValidateUser($gitHubBadgeElement,options){$.ajax({url:"http://github.com/api/v2/json/user/search/"+options.user,data:{},success:function(data){if(data&&data.users&&data.users.length>0){_getGitHubBadge($gitHubBadgeElement,options);
}else{_GitHubBadgeError($gitHubBadgeElement,options);}},dataType:"jsonp",error:function(XMLHttpRequest,textStatus,errorThrown){if(console&&console.log){console.log('Error occured while getting the GitHub repositories for : "'+options.user+'"');
console.log(XMLHttpRequest);console.log(textStatus);console.log(errorThrown);}_GitHubBadgeError($gitHubBadgeElement,options);
}});}function _GitHubBadgeError($gitHubBadgeElement,options){if(options.showErrors){$gitHubBadgeElement.html('<div class="GitHubBadgeError">Error occured while getting the GitHub repositories for : <strong>"'+options.user+'"</strong></div>');
}}function _getGitHubBadge($gitHubBadgeElement,options){$.ajax({url:"http://github.com/api/v2/json/repos/show/"+options.user,data:{},success:function(data){var forks=new Array();
var html=new Array();var repositories=data.repositories;html.push('<div class="GithubBadge"><div class="GithubBadgeTitle"><a href="http://github.com/'+options.user+'" target="_blank">My Github Homepage</a></div>');
if(repositories.length>1){html.push('<div class="GithubBadgeTitle">My Repositories</div>');
for(var repo in repositories){var current=repositories[repo];if(typeof(current.description)=="undefined"){continue;
}if(current.fork){forks.push(current);continue;}if($.trim(current.name.toString().toLowerCase())==options.user.toString().toLowerCase()+".github.com"){continue;
}html.push('<div class="GithubBadgeRepo"><a title="'+current.description+'" href="'+current.url+'" target="_blank">'+current.name+"</a></div>");
}if(options.showForks&&forks.length>0){html.push('<div class="GithubBadgeTitle">Forked Repositories</div>');
for(var forkRep in forks){var currentFork=forks[forkRep];if(typeof(currentFork.description)=="undefined"){continue;
}html.push('<div class="GithubBadgeRepo GithubBadgeFork"><a title="'+currentFork.description+'" href="'+currentFork.url+'" target="_blank">'+currentFork.name+"</a></div>");
}}}else{html.push('<div class="GithubBadgeTitle">No repositories found..</div>');
}html.push("</div>");$gitHubBadgeElement.fadeOut("slow",function(){$(this).html(html.join("")).fadeIn("slow");
});},dataType:"jsonp",error:function(XMLHttpRequest,textStatus,errorThrown){if(console&&console.log){console.log('Error occured while getting the GitHub repositories for : "'+options.user+'"');
console.log(XMLHttpRequest);console.log(textStatus);console.log(errorThrown);}_GitHubBadgeError($gitHubBadgeElement,options);
}});}})(jQuery);