sports_db 0.2.6 → 0.2.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1,25 +1,34 @@
|
|
|
1
1
|
var Application = Class.extend({
|
|
2
2
|
initialize: function() {
|
|
3
3
|
|
|
4
|
-
this.views = {};
|
|
5
|
-
this.params = {};
|
|
6
|
-
this.cache = {};
|
|
7
|
-
this.currentView = null;
|
|
8
4
|
this.clientCallbackHandlers = [];
|
|
9
|
-
this.
|
|
10
|
-
this.
|
|
11
|
-
this.
|
|
12
|
-
this.client
|
|
13
|
-
this.
|
|
5
|
+
this.views = {};
|
|
6
|
+
this.params = {};
|
|
7
|
+
this.cache = {};
|
|
8
|
+
this.client = {};
|
|
9
|
+
this.features = {};
|
|
10
|
+
this.currentView = null;
|
|
11
|
+
this.wrapper = $('#view_wrapper');
|
|
12
|
+
this.buffer = $('#tmp');
|
|
13
|
+
this.footer = $('#footer');
|
|
14
|
+
|
|
15
|
+
this.parseClientParams();
|
|
14
16
|
|
|
15
17
|
// Get hash params
|
|
16
18
|
if (window.location.hash) {
|
|
17
|
-
this.params = $.
|
|
19
|
+
this.params = $.deserialize(location.hash.slice(1));
|
|
18
20
|
}
|
|
19
21
|
|
|
20
22
|
this.params = $.extend(window.CONFIG, this.params);
|
|
21
23
|
|
|
22
|
-
|
|
24
|
+
var client = this.client.ios ? 'ios' : 'android';
|
|
25
|
+
|
|
26
|
+
this.features.supportsClose = this.getConfigValue('clientSupportsClose', false);
|
|
27
|
+
this.features.supportsAlert = this.getConfigValue('clientSupportsAlert', false);
|
|
28
|
+
this.features.supportsNudgeNav = this.getConfigValue('clientSupportsNudgeNav', true);
|
|
29
|
+
this.features.hasFooter = this.getConfigValue('hasFooter', !!document.getElementById('footer'));
|
|
30
|
+
|
|
31
|
+
if (!this.features.supportsClose) {
|
|
23
32
|
this.app_is_initializing = true;
|
|
24
33
|
}
|
|
25
34
|
|
|
@@ -28,7 +37,10 @@ var Application = Class.extend({
|
|
|
28
37
|
this.timer = new Timer($.proxy(this._fireTimerEvent, this), this.params.defaultTimer);
|
|
29
38
|
this.timer.start();
|
|
30
39
|
},
|
|
31
|
-
|
|
40
|
+
getConfigValue: function(value, defaultValue) {
|
|
41
|
+
return this.params.hasOwnProperty(value) ? this.params[value] : defaultValue;
|
|
42
|
+
},
|
|
43
|
+
parseClientParams: function() {
|
|
32
44
|
var q = $.deserialize( location.search.slice(1) );
|
|
33
45
|
|
|
34
46
|
$.assert(q.client, '`client` param is required.');
|
|
@@ -68,10 +80,10 @@ var Application = Class.extend({
|
|
|
68
80
|
// view based on this URL change. This is needed in cases where the device goes to
|
|
69
81
|
// sleep, and then reloads upon awakening.
|
|
70
82
|
stashView: function(params) {
|
|
71
|
-
$.assert(!this.
|
|
83
|
+
$.assert(!this.features.supportsClose, "App should not be using Application.stashView method");
|
|
72
84
|
|
|
73
85
|
// TODO kill this method in all apps. Need client support.
|
|
74
|
-
if (!this.
|
|
86
|
+
if (!this.features.supportsClose) {
|
|
75
87
|
console.log('** Application.stashView');
|
|
76
88
|
var local = {};
|
|
77
89
|
local.view = params.view;
|
|
@@ -148,8 +160,7 @@ var Application = Class.extend({
|
|
|
148
160
|
$(document.body).trigger('Application:viewAppended', [this.currentView.params]);
|
|
149
161
|
|
|
150
162
|
// Show the footer
|
|
151
|
-
|
|
152
|
-
if (this.footer) {
|
|
163
|
+
if (this.footer && this.features.hasFooter) {
|
|
153
164
|
this.footer.show();
|
|
154
165
|
}
|
|
155
166
|
|
|
@@ -210,7 +221,7 @@ var Application = Class.extend({
|
|
|
210
221
|
},
|
|
211
222
|
// load a view from cache or the server when we get a hashchange event
|
|
212
223
|
_onHashChange: function(event, memo) {
|
|
213
|
-
if (!this.
|
|
224
|
+
if (!this.features.supportsClose) {
|
|
214
225
|
// If the app is not initializing, and the view is stashed, do not do anything
|
|
215
226
|
if (!this.app_is_initializing && memo.stash) {
|
|
216
227
|
console.log('=> App is not initializing & a view is stashed. RETURN');
|
|
@@ -230,7 +241,7 @@ var Application = Class.extend({
|
|
|
230
241
|
this.showView(memo);
|
|
231
242
|
}
|
|
232
243
|
|
|
233
|
-
if (!this.
|
|
244
|
+
if (!this.features.supportsClose) {
|
|
234
245
|
this.app_is_initializing = false;
|
|
235
246
|
}
|
|
236
247
|
},
|
|
@@ -29,23 +29,27 @@
|
|
|
29
29
|
|
|
30
30
|
window.scrollTo(0,1);
|
|
31
31
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
32
|
+
// Kind of ridiculous.
|
|
33
|
+
// Does the client support the close button?
|
|
34
|
+
var backOrClose = Application.features.supportsClose ? 'Close:' : 'Back:';
|
|
35
|
+
// Does the client support Nudge Nav. Note, on android while nudge nav is
|
|
36
|
+
// "supported", there are not nudge nav buttons in the toolbar (they are in
|
|
37
|
+
// the hardware/software menu button)
|
|
38
|
+
var nudgeOrNot = (Application.features.supportsNudgeNav && $('.summary_link').size() > 1) ? 'NudgeNav' : '';
|
|
39
|
+
var buttons = backOrClose + nudgeOrNot;
|
|
40
|
+
|
|
41
|
+
if (!Application.features.supportsClose) {
|
|
42
|
+
// Makes the back button to work on clients
|
|
43
|
+
// that don't support close.
|
|
40
44
|
Application.stashView(view.params);
|
|
41
|
-
Client.notify({
|
|
42
|
-
"buttons": view.params.should_have_buttons,
|
|
43
|
-
"metric": getMetricPrefix(view) + "/Detail",
|
|
44
|
-
"title": view.getTitle(),
|
|
45
|
-
'refreshAd': true
|
|
46
|
-
});
|
|
47
45
|
}
|
|
48
|
-
|
|
46
|
+
Client.notify({
|
|
47
|
+
'buttons': buttons,
|
|
48
|
+
'metric': getMetricPrefix(view) + '/Detail',
|
|
49
|
+
// I'm not sure if title is reqd here or not. cstuart 2013-07-29
|
|
50
|
+
'title': view.getTitle(),
|
|
51
|
+
'refreshAd': true
|
|
52
|
+
});
|
|
49
53
|
};
|
|
50
54
|
|
|
51
55
|
var handlers = function() {
|
|
@@ -117,7 +121,7 @@
|
|
|
117
121
|
});
|
|
118
122
|
show_article({ 'id': params.digest });
|
|
119
123
|
} else {
|
|
120
|
-
if (Application.
|
|
124
|
+
if (Application.features.supportsAlert) {
|
|
121
125
|
Client.notify({
|
|
122
126
|
'action': 'alert',
|
|
123
127
|
'heading': 'An error occurred',
|
|
@@ -141,12 +145,16 @@
|
|
|
141
145
|
$('.article_wrapper').hide();
|
|
142
146
|
$(document.body).removeClass('displaying_article');
|
|
143
147
|
|
|
148
|
+
if (Application.features.hasFooter) {
|
|
149
|
+
Application.footer.show();
|
|
150
|
+
}
|
|
151
|
+
|
|
144
152
|
handlers();
|
|
145
153
|
|
|
146
154
|
if (opts.params.digest) {
|
|
147
155
|
handle_notifications(opts.params);
|
|
148
156
|
}
|
|
149
|
-
if (!Application.
|
|
157
|
+
if (!Application.features.supportsClose) {
|
|
150
158
|
Application.currentView.params.should_have_buttons = ($('.summary_link').size() < 2) ? "Back:" : "Back:NudgeNav";
|
|
151
159
|
}
|
|
152
160
|
}
|
|
@@ -164,6 +172,10 @@
|
|
|
164
172
|
$('.article_wrapper').hide();
|
|
165
173
|
$(document.body).removeClass('displaying_article');
|
|
166
174
|
|
|
175
|
+
if (Application.features.hasFooter){
|
|
176
|
+
Application.footer.show();
|
|
177
|
+
}
|
|
178
|
+
|
|
167
179
|
window.scrollTo(0, view.params.pageYOffset);
|
|
168
180
|
|
|
169
181
|
Client.notify({
|
|
@@ -30,7 +30,18 @@ body {
|
|
|
30
30
|
font-size: $default_font_size;
|
|
31
31
|
font-family: $default_font;
|
|
32
32
|
margin: 0 auto;
|
|
33
|
+
color: $default_color;
|
|
34
|
+
}
|
|
35
|
+
#app_wrapper {
|
|
36
|
+
position: relative;
|
|
33
37
|
}
|
|
38
|
+
#view_wrapper,
|
|
39
|
+
#footer {
|
|
40
|
+
position: relative;
|
|
41
|
+
padding: 5px;
|
|
42
|
+
}
|
|
43
|
+
#html_params { display: none; }
|
|
44
|
+
|
|
34
45
|
body.ios {
|
|
35
46
|
font-family: helvetica, sans-serif;
|
|
36
47
|
text-rendering: optimizeLegibility;
|
data/app/models/media.rb
CHANGED
|
@@ -2,10 +2,10 @@ require 'digest/md5'
|
|
|
2
2
|
|
|
3
3
|
class Media < ActiveRecord::Base
|
|
4
4
|
|
|
5
|
-
# Create a hash based on publication time and title that should uniquely identify
|
|
5
|
+
# Create a hash based on publication time and title that should uniquely identify
|
|
6
6
|
# this publication of the document.
|
|
7
7
|
before_save :before_save_method
|
|
8
|
-
|
|
8
|
+
|
|
9
9
|
def before_save_method
|
|
10
10
|
if (self["title"].nil?)
|
|
11
11
|
raise "This is an issue.... there's no title"
|
|
@@ -15,19 +15,19 @@ class Media < ActiveRecord::Base
|
|
|
15
15
|
str = (self["published_at"].nil?) ? self["title"] : (self["title"] + self["published_at"].to_s)
|
|
16
16
|
self["digest"] = Digest::SHA1.hexdigest(str)
|
|
17
17
|
end
|
|
18
|
-
|
|
19
|
-
def is_video?
|
|
18
|
+
|
|
19
|
+
def is_video?
|
|
20
20
|
true
|
|
21
21
|
end
|
|
22
22
|
|
|
23
23
|
def is_twitter?
|
|
24
24
|
false
|
|
25
25
|
end
|
|
26
|
-
|
|
26
|
+
|
|
27
27
|
def is_article?
|
|
28
28
|
false
|
|
29
29
|
end
|
|
30
|
-
|
|
30
|
+
|
|
31
31
|
def thumbnail_url
|
|
32
32
|
self.thumb_image_url
|
|
33
33
|
end
|
data/lib/sports_db/version.rb
CHANGED
|
@@ -1,3 +1,13 @@
|
|
|
1
|
+
# == Given a version number MAJOR.MINOR.PATCH, increment the:
|
|
2
|
+
|
|
3
|
+
# - MAJOR version when you make incompatible API changes,
|
|
4
|
+
# - MINOR version when you add functionality in a
|
|
5
|
+
# backwards-compatible manner, and
|
|
6
|
+
# - PATCH version when you make backwards-compatible bug fixes.
|
|
7
|
+
#
|
|
8
|
+
# Additional labels for pre-release and build metadata are
|
|
9
|
+
# available as extensions to the MAJOR.MINOR.PATCH format.
|
|
10
|
+
|
|
1
11
|
module SportsDb
|
|
2
|
-
VERSION = "0.2.
|
|
12
|
+
VERSION = "0.2.7"
|
|
3
13
|
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: sports_db
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.2.
|
|
4
|
+
version: 0.2.7
|
|
5
5
|
prerelease:
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
@@ -9,7 +9,7 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date: 2013-07-
|
|
12
|
+
date: 2013-07-30 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: rails
|