diff --git a/app/assets/javascripts/app/app.js b/app/assets/javascripts/app/app.js index 150f9258b..abf2f8ff9 100644 --- a/app/assets/javascripts/app/app.js +++ b/app/assets/javascripts/app/app.js @@ -1,6 +1,7 @@ //= require_self //= require_tree ./helpers //= require ./router +//= require ./models //= require ./views //= require_tree ./models //= require_tree ./pages diff --git a/app/assets/javascripts/app/models.js b/app/assets/javascripts/app/models.js new file mode 100644 index 000000000..657618450 --- /dev/null +++ b/app/assets/javascripts/app/models.js @@ -0,0 +1,16 @@ + +// Mixin to provide date formatting and "createdAt" method +// other attributes can be accessed by calling this.timeOf("timestamp-field") +// Requires: +// this = model with "created_at" attribute +app.models.formatDateMixin = { + + timeOf: function(field) { + return app.helpers.dateFormatter.parse(this.get(field)) / 1000; + }, + + createdAt: function() { + return this.timeOf("created_at"); + } + +}; diff --git a/app/assets/javascripts/app/models/photo.js b/app/assets/javascripts/app/models/photo.js index cefbb0e1d..a856faca1 100644 --- a/app/assets/javascripts/app/models/photo.js +++ b/app/assets/javascripts/app/models/photo.js @@ -1,14 +1,6 @@ -app.models.Photo = Backbone.Model.extend({ +app.models.Photo = Backbone.Model.extend(_.extend({}, app.models.formatDateMixin, { urlRoot : "/photos", initialize : function() {}, - createdAt : function() { - return this.timeOf("created_at"); - }, - - timeOf: function(field) { - return app.helpers.dateFormatter.parse(this.get(field)) / 1000; - }, - -}); +})); diff --git a/app/assets/javascripts/app/models/post.js b/app/assets/javascripts/app/models/post.js index e6e4e941b..0d60fd013 100644 --- a/app/assets/javascripts/app/models/post.js +++ b/app/assets/javascripts/app/models/post.js @@ -1,4 +1,4 @@ -app.models.Post = Backbone.Model.extend({ +app.models.Post = Backbone.Model.extend(_.extend({}, app.models.formatDateMixin, { urlRoot : "/posts", initialize : function() { @@ -17,18 +17,10 @@ app.models.Post = Backbone.Model.extend({ this.set({frame_name : templatePicker.getFrameName()}) }, - createdAt : function() { - return this.timeOf("created_at"); - }, - interactedAt : function() { return this.timeOf("interacted_at"); }, - timeOf: function(field) { - return app.helpers.dateFormatter.parse(this.get(field)) / 1000; - }, - createReshareUrl : "/reshares", reshare : function(){ @@ -121,7 +113,7 @@ app.models.Post = Backbone.Model.extend({ , newlineIdx = body.indexOf("\n") return (newlineIdx > 0 ) ? body.substr(newlineIdx+1, body.length) : "" } -}, { +}), { headlineLimit : 118, frameMoods : [