BUGFIX: clicking the logo when the homepage was /categories or /top would fail

This commit is contained in:
Régis Hanol 2014-01-23 17:08:52 +01:00
parent 7b20079d85
commit ae06ea6323
5 changed files with 36 additions and 11 deletions

View File

@ -12,6 +12,15 @@ Discourse.DiscoveryCategoriesController = Discourse.DiscoveryController.extend({
actions: { actions: {
toggleOrdering: function(){ toggleOrdering: function(){
this.set("ordering",!this.get("ordering")); this.set("ordering",!this.get("ordering"));
},
refresh: function() {
var self = this;
this.send('loading');
Discourse.CategoryList.list('categories').then(function(list) {
self.set('model', list);
self.send('loadingComplete');
});
} }
}, },

View File

@ -7,6 +7,18 @@
@module Discourse @module Discourse
**/ **/
Discourse.DiscoveryTopController = Discourse.DiscoveryController.extend({ Discourse.DiscoveryTopController = Discourse.DiscoveryController.extend({
actions: {
refresh: function() {
var self = this;
this.send('loading');
Discourse.TopList.find().then(function(top_lists) {
self.set('model', top_lists);
self.send('loadingComplete');
});
}
},
redirectedToTopPageReason: function() { redirectedToTopPageReason: function() {
// no need for a reason if the default homepage is 'top' // no need for a reason if the default homepage is 'top'
if (Discourse.Utilities.defaultHomepage() === 'top') { return null; } if (Discourse.Utilities.defaultHomepage() === 'top') { return null; }

View File

@ -188,11 +188,15 @@ Discourse.URL = Em.Object.createWithMixins({
@param {String} path the path we're navigating to @param {String} path the path we're navigating to
**/ **/
navigatedToHome: function(oldPath, path) { navigatedToHome: function(oldPath, path) {
var defaultFilter = "/" + Discourse.Site.currentProp('filters')[0]; var homepage = Discourse.User.current() ? Discourse.User.currentProp('homepage') : Discourse.Utilities.defaultHomepage();
if (path === "/" && (oldPath === "/" || oldPath === defaultFilter)) { if (path === "/" && (oldPath === "/" || oldPath === "/" + homepage)) {
// Refresh our list // refresh the list
this.controllerFor('discoveryTopics').send('refresh'); switch (homepage) {
case "top" : { this.controllerFor('discoveryTop').send('refresh'); break; }
case "categories": { this.controllerFor('discoveryCategories').send('refresh'); break; }
default: { this.controllerFor('discoveryTopics').send('refresh'); break; }
}
return true; return true;
} }

View File

@ -16,15 +16,15 @@ test("isInternal with a HTTPS url", function() {
}); });
test("navigatedToHome", function() { test("navigatedToHome", function() {
var fakeListController = { send: function() { return true; } }; var fakeDiscoveryController = { send: function() { return true; } };
var mock = sinon.mock(fakeListController); var mock = sinon.mock(fakeDiscoveryController);
this.stub(Discourse.URL, "controllerFor").returns(fakeListController); this.stub(Discourse.URL, "controllerFor").returns(fakeDiscoveryController);
mock.expects("send").withArgs('refresh').twice(); mock.expects("send").withArgs('refresh').twice();
ok(Discourse.URL.navigatedToHome("/", "/")); ok(Discourse.URL.navigatedToHome("/", "/"));
var defaultFilter = "/" + Discourse.Site.currentProp('filters')[0]; var homepage = "/" + Discourse.Utilities.defaultHomepage();
ok(Discourse.URL.navigatedToHome(defaultFilter, "/")); ok(Discourse.URL.navigatedToHome(homepage, "/"));
ok(!Discourse.URL.navigatedToHome("/old", "/new")); ok(!Discourse.URL.navigatedToHome("/old", "/new"));