/** This route is used for retrieving a topic based on params @class TopicFromParamsRoute @extends Discourse.Route @namespace Discourse @module Discourse **/ Discourse.TopicFromParamsRoute = Discourse.Route.extend({ setupController: function(controller, params) { params = params || {}; params.track_visit = true; var topic = this.modelFor('topic'), postStream = topic.get('postStream'); var topicController = this.controllerFor('topic'), topicProgressController = this.controllerFor('topic-progress'), composerController = this.controllerFor('composer'); // I sincerely hope no topic gets this many posts if (params.nearPost === "last") { params.nearPost = 999999999; } postStream.refresh(params).then(function () { // The post we requested might not exist. Let's find the closest post var closest = postStream.closestPostNumberFor(params.nearPost) || 1; topicController.setProperties({ currentPost: closest, enteredAt: new Date().getTime().toString(), highlightOnInsert: closest }); topicProgressController.setProperties({ progressPosition: closest, expanded: false }); Discourse.TopicView.jumpToPost(closest); if (topic.present('draft')) { composerController.open({ draft: Discourse.Draft.getLocal(topic.get('draft_key'), topic.get('draft')), draftKey: topic.get('draft_key'), draftSequence: topic.get('draft_sequence'), topic: topic, ignoreIfChanged: true }); } }); } }); Discourse.TopicFromParamsNearRoute = Discourse.TopicFromParamsRoute;