diff --git a/assets/scripts/app/controllers/account_index.coffee b/assets/scripts/app/controllers/account_index.coffee
index 825d8586..b5dda57a 100644
--- a/assets/scripts/app/controllers/account_index.coffee
+++ b/assets/scripts/app/controllers/account_index.coffee
@@ -5,3 +5,6 @@ Travis.AccountIndexController = Em.Controller.extend
sync: ->
@get('user').sync()
+
+ toggle: (hook) ->
+ hook.toggle()
diff --git a/assets/scripts/app/controllers/profile.coffee b/assets/scripts/app/controllers/profile.coffee
index d121107b..fbac998a 100644
--- a/assets/scripts/app/controllers/profile.coffee
+++ b/assets/scripts/app/controllers/profile.coffee
@@ -23,6 +23,9 @@ Travis.ProfileController = Travis.Controller.extend
sync: ->
@get('user').sync()
+ toggle: (hook) ->
+ hook.toggle()
+
activate: (action, params) ->
@setParams(params || @get('params'))
this["view#{$.camelize(action)}"]()
diff --git a/assets/scripts/app/helpers/helpers.coffee b/assets/scripts/app/helpers/helpers.coffee
index f3decb63..a0f28ec5 100644
--- a/assets/scripts/app/helpers/helpers.coffee
+++ b/assets/scripts/app/helpers/helpers.coffee
@@ -73,7 +73,7 @@ require 'config/emoij'
string
_nowUtc: ->
- @_toUtc new Date()
+ @_toUtc Travis.currentDate()
_toUtc: (date) ->
Date.UTC date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()
diff --git a/assets/scripts/app/store/rest_adapter.coffee b/assets/scripts/app/store/rest_adapter.coffee
index d8a402f4..6b2ac960 100644
--- a/assets/scripts/app/store/rest_adapter.coffee
+++ b/assets/scripts/app/store/rest_adapter.coffee
@@ -102,6 +102,18 @@ Travis.RestAdapter = DS.RESTAdapter.extend
merge: (store, record, serialized) ->
@get('serializer').merge(record, serialized)
+ didSaveRecord: (store, type, record, payload) ->
+ # API sometimes return { result: true } response
+ # which does not play nice with ember-data. For now
+ # let's just change payload to have serialized record
+ # included, but ideally it should be fixed in the API
+ # to be consistent across all the endpoints.
+ if payload?.result == true
+ payload = {}
+ payload[type.singularName()] = record.serialize()
+
+ @_super(store, type, record, payload)
+
Travis.RestAdapter.map 'Travis.Commit', {}
Travis.RestAdapter.map 'Travis.Build', {
diff --git a/assets/scripts/app/templates/profile/tabs/hooks.hbs b/assets/scripts/app/templates/profile/tabs/hooks.hbs
index 05f2e84b..4f41fde5 100644
--- a/assets/scripts/app/templates/profile/tabs/hooks.hbs
+++ b/assets/scripts/app/templates/profile/tabs/hooks.hbs
@@ -24,7 +24,7 @@
-
+
{{#if hook.active}}
ON
{{else}}
diff --git a/assets/scripts/lib/travis/ajax.coffee b/assets/scripts/lib/travis/ajax.coffee
index 40939951..0a694674 100644
--- a/assets/scripts/lib/travis/ajax.coffee
+++ b/assets/scripts/lib/travis/ajax.coffee
@@ -33,13 +33,13 @@ Travis.ajax = Em.Object.create
success = options.success || (->)
options.success = (data) =>
- Travis.lookup('controller:flash').loadFlashes(data.flash) if data.flash
+ Travis.lookup('controller:flash').loadFlashes(data.flash) if data?.flash
delete data.flash if data?
success.apply(this, arguments)
error = options.error || (->)
options.error = (data) =>
- Travis.lookup('controller:flash').pushObject(data.flash) if data.flash
+ Travis.lookup('controller:flash').pushObject(data.flash) if data?.flash
delete data.flash if data?
error.apply(this, arguments)
diff --git a/assets/scripts/spec/spec_helper.coffee b/assets/scripts/spec/spec_helper.coffee
index 03ed3945..de1a3688 100644
--- a/assets/scripts/spec/spec_helper.coffee
+++ b/assets/scripts/spec/spec_helper.coffee
@@ -10,10 +10,10 @@ minispade.require 'app'
url = "/#{url}" unless url.match /^\//
Travis.__container__.lookup('router:main').handleURL(url)
-_Date = Date
-@Date = (date) ->
- new _Date(date || '2012-07-02T00:03:00Z')
-@Date.UTC = _Date.UTC
+
+now = -> new Date('2012-07-02T00:03:00Z')
+$.timeago.settings.nowFunction = -> now().getTime()
+Travis.currentDate = now
# hacks for missing features in webkit
unless Function::bind
diff --git a/assets/scripts/travis.coffee b/assets/scripts/travis.coffee
index 21253131..d2b6ea6e 100644
--- a/assets/scripts/travis.coffee
+++ b/assets/scripts/travis.coffee
@@ -1,6 +1,9 @@
require 'ext/jquery'
require 'ext/ember/namespace'
+window.ENV ||= {}
+window.ENV.RAISE_ON_DEPRECATION = true
+
# TODO: how can I put it in Travis namespace and use immediately?
Storage = Em.Object.extend
init: ->
@@ -77,6 +80,9 @@ window.Travis = Em.Application.extend(Ember.Evented,
location.href = location.href.replace('#!/', '') if location.hash.slice(0, 2) == '#!'
I18n.fallbacks = true
@setLocale 'locale', @get('defaultLocale')
+
+ currentDate: ->
+ new Date()
).create()
Travis.deferReadiness()
diff --git a/assets/scripts/vendor/jquery.timeago.js b/assets/scripts/vendor/jquery.timeago.js
index 9b7c93a5..87076349 100644
--- a/assets/scripts/vendor/jquery.timeago.js
+++ b/assets/scripts/vendor/jquery.timeago.js
@@ -41,8 +41,9 @@
months: '%d months',
year: 'about a year',
years: '%d years',
- numbers: []
- }
+ numbers: [],
+ },
+ nowFunction: function() { return new Date().getTime(); }
},
distanceInWords: function(date) {
if(!date) {
@@ -95,7 +96,7 @@
return (this.now() - date.getTime());
},
now: function() {
- return new Date().getTime();
+ return this.settings.nowFunction.call(this);
},
parse: function(iso8601) {
var s = $.trim(iso8601);