Merge pull request #2976 from jbivins/legacy-browser-support

Legacy browser support
This commit is contained in:
Maxwell Salzberg 2012-03-09 16:51:34 -08:00
commit 0d5c518630
6 changed files with 73 additions and 4 deletions

View file

@ -12,7 +12,7 @@
.content_creation
= form_for(StatusMessage.new) do |status|
= status.error_messages
%p
%div
%params
#publisher_textarea_wrapper
= link_to( image_tag('deletelabel.png'), "#", :id => "hide_publisher", :title => t('.discard_post'))

View file

@ -0,0 +1,35 @@
(function(){
var dateFormatter = function dateFormatter() {
};
dateFormatter.parse = function(date_string) {
var timestamp = new Date(date_string).getTime();
if (isNaN(timestamp)) {
timestamp = dateFormatter.parseISO8601UTC(date_string);
}
return timestamp;
},
dateFormatter.parseISO8601UTC = function(date_string) {
var iso8601_utc_pattern = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})(.(\d{3}))?Z$/;
var time_components = date_string.match(iso8601_utc_pattern);
var timestamp = 0;
if (time_components != null) {
if (time_components[8] == undefined) {
time_components[8] = 0;
}
timestamp = Date.UTC(time_components[1], time_components[2] - 1, time_components[3],
time_components[4], time_components[5], time_components[6],
time_components[8]);
}
return timestamp;
},
app.helpers.dateFormatter = dateFormatter;
})();

View file

@ -8,7 +8,7 @@ app.models.Photo = Backbone.Model.extend({
},
timeOf: function(field) {
return new Date(this.get(field)) /1000;
return app.helpers.dateFormatter.parse(this.get(field)) / 1000;
},
});

View file

@ -21,7 +21,7 @@ app.models.Post = Backbone.Model.extend({
},
timeOf: function(field) {
return new Date(this.get(field)) /1000;
return app.helpers.dateFormatter.parse(this.get(field)) / 1000;
},
createReshareUrl : "/reshares",

View file

@ -2,6 +2,7 @@ describe("app", function() {
describe("user", function() {
it("sets the user if given one and returns the current user", function() {
expect(app.user()).toBeFalsy()
});
it("sets the user if given one and returns the current user", function() {
expect(app.user().authenticated()).toBeFalsy()

View file

@ -0,0 +1,33 @@
describe("app.helpers.dateFormatter", function(){
beforeEach(function(){
this.statusMessage = factory.post();
this.formatter = app.helpers.dateFormatter;
})
describe("parse", function(){
context("modern web browsers", function(){
it ("supports ISO 8601 UTC dates", function(){
var timestamp = new Date(this.statusMessage.get("created_at")).getTime();
expect(this.formatter.parse(this.statusMessage.get("created_at"))).toEqual(timestamp);
})
})
context("legacy web browsers", function(){
it("supports ISO 8601 UTC dates", function(){
var timestamp = new Date(this.statusMessage.get("created_at")).getTime();
expect(this.formatter.parseISO8601UTC(this.statusMessage.get("created_at"))).toEqual(timestamp);
})
})
context("status messages", function(){
it("uses ISO 8601 UTC dates", function(){
var iso8601_utc_pattern = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})(.(\d{3}))?Z$/;
expect(iso8601_utc_pattern.test(this.statusMessage.get("created_at"))).toBe(true);
})
})
})
})