diff --git a/app/assets/javascripts/discourse/controllers/edit_topic_auto_close_controller.js b/app/assets/javascripts/discourse/controllers/edit_topic_auto_close_controller.js index 9371c873364..425a75d62be 100644 --- a/app/assets/javascripts/discourse/controllers/edit_topic_auto_close_controller.js +++ b/app/assets/javascripts/discourse/controllers/edit_topic_auto_close_controller.js @@ -33,7 +33,7 @@ Discourse.EditTopicAutoCloseController = Discourse.ObjectController.extend(Disco Discourse.ajax({ url: '/t/' + this.get('id') + '/autoclose', type: 'PUT', - dataType: 'json', + dataType: 'html', // no custom errors, jquery 1.9 enforces json data: { auto_close_days: days > 0 ? days : null } }).then(function(){ editTopicAutoCloseController.set('auto_close_at', moment().add('days', days).format()); diff --git a/app/assets/javascripts/discourse/views/topic_closing_view.js b/app/assets/javascripts/discourse/views/topic_closing_view.js index 9113a32d00c..cf396464dd3 100644 --- a/app/assets/javascripts/discourse/views/topic_closing_view.js +++ b/app/assets/javascripts/discourse/views/topic_closing_view.js @@ -18,40 +18,43 @@ Discourse.TopicClosingView = Discourse.View.extend({ render: function(buffer) { if (!this.present('topic.auto_close_at')) return; - var autoCloseAt = new Date(this.get('topic.auto_close_at')); + var autoCloseAt = moment(this.get('topic.auto_close_at')); - if (autoCloseAt.isPast()) return; + if (autoCloseAt < new Date()) return; - var timeLeftString, reRenderDelay, minutesLeft = autoCloseAt.minutesSince(); + var duration = moment.duration(autoCloseAt - moment()); - if (minutesLeft > 1440) { - timeLeftString = Em.String.i18n('in_n_days', {count: autoCloseAt.daysSince()}); + var timeLeftString, rerenderDelay, minutesLeft = duration.asMinutes(); + + if (minutesLeft > 1410) { + timeLeftString = Em.String.i18n('in_n_days', {count: Math.round(duration.asDays())}); if( minutesLeft > 2160 ) { - reRenderDelay = 12 * 60 * 60000; + rerenderDelay = 12 * 60 * 60000; } else { - reRenderDelay = 60 * 60000; + rerenderDelay = 60 * 60000; } } else if (minutesLeft > 90) { - timeLeftString = Em.String.i18n('in_n_hours', {count: autoCloseAt.hoursSince()}); - reRenderDelay = 30 * 60000; + timeLeftString = Em.String.i18n('in_n_hours', {count: Math.round(duration.asHours())}); + rerenderDelay = 30 * 60000; } else if (minutesLeft > 2) { - timeLeftString = Em.String.i18n('in_n_minutes', {count: autoCloseAt.minutesSince()}); - reRenderDelay = 60000; + timeLeftString = Em.String.i18n('in_n_minutes', {count: Math.round(duration.asMinutes())}); + rerenderDelay = 60000; } else { - timeLeftString = Em.String.i18n('in_n_seconds', {count: autoCloseAt.secondsSince()}); - reRenderDelay = 1000; + timeLeftString = Em.String.i18n('in_n_seconds', {count: Math.round(duration.asSeconds())}); + rerenderDelay = 1000; } buffer.push('