1
1
/*
2
- * jQuery Github - v0.2.6
2
+ * jQuery Github - v0.2.7
3
3
* A jQuery plugin to display your Github Repositories.
4
4
* https://github.com/zenorocha/jquery-github/
5
-
5
+ *
6
6
* Copyright (c) 2013
7
7
* MIT License
8
8
*/
9
-
10
- ; ( function ( $ , window , undefined ) {
11
- var pluginName = 'github' ,
12
- document = window . document ,
13
- defaults = {
14
- propertyName : "value"
15
- } ;
16
-
17
- function Plugin ( element , options ) {
18
- var self = this ;
19
-
20
- self . element = element ;
21
- self . $container = $ ( element ) ;
22
- self . repo = self . $container . attr ( "data-repo" ) ;
23
-
24
- self . options = $ . extend ( { } , defaults , options ) ;
25
-
26
- self . _defaults = defaults ;
27
- self . _name = pluginName ;
28
-
29
- self . init ( ) ;
30
- }
31
-
32
- /**
33
- * Initializer
34
- *
35
- */
36
- Plugin . prototype . init = function ( ) {
37
- var self = this ,
38
- cached = self . getCache ( ) ;
39
-
40
- if ( cached !== null ) {
41
- self . applyTemplate ( JSON . parse ( cached ) ) ;
42
- }
43
- else {
44
- self . requestData ( self . repo ) ;
45
- }
46
- } ;
47
-
48
- /**
49
- * Apply results to HTML template
50
- *
51
- */
52
- Plugin . prototype . applyTemplate = function ( repo ) {
53
- var self = this ,
54
- $widget = self . parseTemplate ( repo ) ;
55
-
56
- $widget . appendTo ( self . $container ) ;
57
- } ;
58
-
59
- /**
60
- * Stores repostories in sessionStorage if available
61
- *
62
- */
63
- Plugin . prototype . cacheResults = function ( result_data ) {
64
- var self = this ;
65
-
66
- // Cache data
67
- if ( window . sessionStorage ) {
68
- sessionStorage . setItem ( 'gh-repos:' + self . repo , JSON . stringify ( result_data ) ) ;
69
- }
70
- } ;
71
-
72
- /**
73
- * Grab cached results
74
- *
75
- */
76
- Plugin . prototype . getCache = function ( ) {
77
- var self = this ;
78
-
79
- if ( window . sessionStorage ) {
80
- return sessionStorage . getItem ( 'gh-repos:' + self . repo ) ;
81
- }
82
- else {
83
- return false ;
84
- }
85
- } ;
86
-
87
- /**
88
- * Handle Errors requests
89
- *
90
- */
91
- Plugin . prototype . handlerErrorRequests = function ( result_data ) {
92
- var self = this ;
93
-
94
- console . warn ( result_data . message ) ;
95
- return ;
96
- } ;
97
-
98
- /**
99
- * Handle Successful request
100
- *
101
- */
102
- Plugin . prototype . handlerSuccessfulRequest = function ( result_data ) {
103
- var self = this ;
104
-
105
- self . applyTemplate ( result_data ) ;
106
- self . cacheResults ( result_data ) ;
107
- } ;
108
-
109
- /**
110
- * Parses Pushed date with date format
111
- *
112
- */
113
- Plugin . prototype . parsePushedDate = function ( pushed_at ) {
114
- var self = this ,
115
- date = new Date ( pushed_at ) ;
116
-
117
- return date . getDate ( ) + '/' + ( date . getMonth ( ) + 1 ) + '/' + date . getFullYear ( )
118
- } ;
119
-
120
- /**
121
- * Parses repository URL to be friendly
122
- *
123
- */
124
- Plugin . prototype . parseRepositoryURL = function ( url ) {
125
- var self = this ;
126
-
127
- return url . replace ( 'api.' , '' ) . replace ( 'repos/' , '' ) ;
128
- } ;
129
-
130
- /**
131
- * Parses HTML template
132
- *
133
- */
134
- Plugin . prototype . parseTemplate = function ( repo ) {
135
- var self = this ,
136
- pushed_at = self . parsePushedDate ( repo . pushed_at ) ,
137
- repo_url = self . parseRepositoryURL ( repo . url ) ;
138
-
139
- return $ ( $ . parseHTML ( ' \
140
- <div class="github-box"> \
141
- <div class="github-box-header"> \
142
- <h3> \
143
- <a href="' + repo_url + '">' + repo . name + '</a> \
144
- </h3> \
145
- <div class="github-stats"> \
146
- <a class="repo-watchers" href="' + repo_url + '/watchers">' + repo . watchers + '</a> \
147
- <a class="repo-forks" href="' + repo_url + '/forks">' + repo . forks + '</a> \
148
- </div> \
149
- </div> \
150
- <div class="github-box-content"> \
151
- <p>' + repo . description + ' — <a href="' + repo_url + '#readme">Read More</a></p> \
152
- </div> \
153
- <div class="github-box-download"> \
154
- <p class="repo-update">Latest commit to <strong>master</strong> on ' + pushed_at + '</p> \
155
- <a class="repo-download" href="' + repo_url + '/zipball/master">Download as zip</a> \
156
- </div> \
157
- </div> \
158
- ' ) ) ;
159
- } ;
160
-
161
- /**
162
- * Request repositories from Github
163
- *
164
- */
165
- Plugin . prototype . requestData = function ( repo ) {
166
- var self = this ;
167
-
168
- $ . ajax ( {
169
- url : 'https://api.github.com/repos/' + repo ,
170
- dataType : 'jsonp' ,
171
- success : function ( results ) {
172
- var result_data = results . data ;
173
-
174
- // Handle API failures
175
- if ( results . meta . status >= 400 && result_data . message ) {
176
- self . handlerErrorRequest ( ) ;
177
- }
178
- else {
179
- self . handlerSuccessfulRequest ( result_data ) ;
180
- }
181
- }
182
- } ) ;
183
- } ;
184
-
185
- $ . fn [ pluginName ] = function ( options ) {
186
- return this . each ( function ( ) {
187
- if ( ! $ . data ( this , 'plugin_' + pluginName ) ) {
188
- $ . data ( this , 'plugin_' + pluginName , new Plugin ( this , options ) ) ;
189
- }
190
- } ) ;
191
- } ;
192
- } ( jQuery , window ) ) ;
9
+ ; ( function ( $ , window , undefined ) {
10
+
11
+ var pluginName = "github" ,
12
+ document = window . document ,
13
+ defaults = {
14
+ propertyName : "value"
15
+ } ;
16
+
17
+ function Plugin ( element , options ) {
18
+ var self = this ;
19
+
20
+ self . element = element ;
21
+ self . $container = $ ( element ) ;
22
+ self . repo = self . $container . attr ( "data-repo" ) ;
23
+
24
+ self . options = $ . extend ( { } , defaults , options ) ;
25
+
26
+ self . _defaults = defaults ;
27
+ self . _name = pluginName ;
28
+
29
+ self . init ( ) ;
30
+ }
31
+
32
+ // Initializer
33
+ Plugin . prototype . init = function ( ) {
34
+ var self = this ,
35
+ cached = self . getCache ( ) ;
36
+
37
+ if ( cached !== null ) {
38
+ self . applyTemplate ( JSON . parse ( cached ) ) ;
39
+ }
40
+ else {
41
+ self . requestData ( self . repo ) ;
42
+ }
43
+ } ;
44
+
45
+ // Apply results to HTML template
46
+ Plugin . prototype . applyTemplate = function ( repo ) {
47
+ var self = this ,
48
+ $widget = self . parseTemplate ( repo ) ;
49
+
50
+ $widget . appendTo ( self . $container ) ;
51
+ } ;
52
+
53
+ // Stores repostories in sessionStorage if available
54
+ Plugin . prototype . cacheResults = function ( result_data ) {
55
+ var self = this ;
56
+
57
+ // Cache data
58
+ if ( window . sessionStorage ) {
59
+ window . sessionStorage . setItem ( "gh-repos:" + self . repo , JSON . stringify ( result_data ) ) ;
60
+ }
61
+ } ;
62
+
63
+ // Grab cached results
64
+ Plugin . prototype . getCache = function ( ) {
65
+ var self = this ;
66
+
67
+ if ( window . sessionStorage ) {
68
+ return window . sessionStorage . getItem ( "gh-repos:" + self . repo ) ;
69
+ }
70
+ else {
71
+ return false ;
72
+ }
73
+ } ;
74
+
75
+ // Handle Errors requests
76
+ Plugin . prototype . handlerErrorRequests = function ( result_data ) {
77
+ var self = this ;
78
+
79
+ console . warn ( result_data . message ) ;
80
+ return ;
81
+ } ;
82
+
83
+ // Handle Successful request
84
+ Plugin . prototype . handlerSuccessfulRequest = function ( result_data ) {
85
+ var self = this ;
86
+
87
+ self . applyTemplate ( result_data ) ;
88
+ self . cacheResults ( result_data ) ;
89
+ } ;
90
+
91
+ // Parses Pushed date with date format
92
+ Plugin . prototype . parsePushedDate = function ( pushed_at ) {
93
+ var self = this ,
94
+ date = new Date ( pushed_at ) ;
95
+
96
+ return date . getDate ( ) + "/" + ( date . getMonth ( ) + 1 ) + "/" + date . getFullYear ( ) ;
97
+ } ;
98
+
99
+ // Parses repository URL to be friendly
100
+ Plugin . prototype . parseRepositoryURL = function ( url ) {
101
+ var self = this ;
102
+
103
+ return url . replace ( "api." , "" ) . replace ( "repos/" , "" ) ;
104
+ } ;
105
+
106
+ // Parses HTML template
107
+ Plugin . prototype . parseTemplate = function ( repo ) {
108
+ var self = this ,
109
+ pushed_at = self . parsePushedDate ( repo . pushed_at ) ,
110
+ repo_url = self . parseRepositoryURL ( repo . url ) ;
111
+
112
+ return $ ( $ . parseHTML ( " \
113
+ <div class='github-box'> \
114
+ <div class='github-box-header'> \
115
+ <h3> \
116
+ <a href='" + repo_url + "'>" + repo . name + "</a> \
117
+ </h3> \
118
+ <div class='github-stats'> \
119
+ <a class='repo-watchers' href='" + repo_url + "'/watchers'>" + repo . watchers + "</a> \
120
+ <a class='repo-forks' href='" + repo_url + "'/forks'>" + repo . forks + "</a> \
121
+ </div> \
122
+ </div> \
123
+ <div class='github-box-content'> \
124
+ <p>" + repo . description + " — <a href='" + repo_url + "'#readme'>Read More</a></p> \
125
+ </div> \
126
+ <div class='github-box-download'> \
127
+ <p class='repo-update'>Latest commit to <strong>master</strong> on " + pushed_at + "</p> \
128
+ <a class='repo-download' href='" + repo_url + "'/zipball/master'>Download as zip</a> \
129
+ </div> \
130
+ </div> \
131
+ " ) ) ;
132
+ } ;
133
+
134
+ // Request repositories from Github
135
+ Plugin . prototype . requestData = function ( repo ) {
136
+ var self = this ;
137
+
138
+ $ . ajax ( {
139
+ url : "https://api.github.com/repos/" + repo ,
140
+ dataType : "jsonp" ,
141
+ success : function ( results ) {
142
+ var result_data = results . data ;
143
+
144
+ // Handle API failures
145
+ if ( results . meta . status >= 400 && result_data . message ) {
146
+ self . handlerErrorRequest ( ) ;
147
+ }
148
+ else {
149
+ self . handlerSuccessfulRequest ( result_data ) ;
150
+ }
151
+ }
152
+ } ) ;
153
+ } ;
154
+
155
+ $ . fn [ pluginName ] = function ( options ) {
156
+ return this . each ( function ( ) {
157
+ if ( ! $ . data ( this , "plugin_" + pluginName ) ) {
158
+ $ . data ( this , "plugin_" + pluginName , new Plugin ( this , options ) ) ;
159
+ }
160
+ } ) ;
161
+ } ;
162
+
163
+ } ( jQuery , window ) ) ;
0 commit comments