FEATURE: the top tab is the default for new users

This commit is contained in:
Régis Hanol
2013-12-30 18:46:18 +01:00
parent 7e984e369a
commit 8685e4079f
5 changed files with 53 additions and 4 deletions

View File

@ -342,6 +342,11 @@ Discourse.Utilities = {
return (arg === '' ? null : arg); return (arg === '' ? null : arg);
} }
} }
},
defaultHomepage: function() {
// the homepage is the first item of the 'top_menu' site setting
return Discourse.SiteSettings.top_menu.split("|")[0].split(",")[0];
} }
}; };

View File

@ -328,7 +328,22 @@ Discourse.User = Discourse.Model.extend({
type: 'POST', type: 'POST',
data: {email: email} data: {email: email}
}); });
} },
/**
Homepage of the user
@property homepage
@type {String}
**/
homepage: function() {
// top is the default for new users
if (Discourse.SiteSettings.top_menu.indexOf("top") >= 0 &&
this.get("trust_level") === 0) {
return "top";
}
return Discourse.Utilities.defaultHomepage();
}.property("trust_level")
}); });

View File

@ -32,8 +32,10 @@ Discourse.Route.buildRoutes(function() {
router.route(filter + "Category", { path: "/category/:parentSlug/:slug/l/" + filter + "/more" }); router.route(filter + "Category", { path: "/category/:parentSlug/:slug/l/" + filter + "/more" });
}); });
// the homepage is the first item of the 'top_menu' site setting // homepage
var homepage = Discourse.SiteSettings.top_menu.split("|")[0].split(",")[0]; var homepage = Discourse.User.current() ?
Discourse.User.currentProp("homepage") :
Discourse.Utilities.defaultHomepage();
this.route(homepage, { path: '/' }); this.route(homepage, { path: '/' });
// categories page // categories page

View File

@ -133,6 +133,11 @@ test("avatarImg", function() {
"it doesn't render avatars for invalid avatar template"); "it doesn't render avatars for invalid avatar template");
}); });
test("defaultHomepage", function() {
Discourse.SiteSettings.top_menu = "latest|top|hot";
equal(Discourse.Utilities.defaultHomepage(), "latest", "default homepage is the first item in the top_menu site setting");
});
module("Discourse.Utilities.cropAvatar with animated avatars", { module("Discourse.Utilities.cropAvatar with animated avatars", {
setup: function() { Discourse.SiteSettings.allow_animated_avatars = true; } setup: function() { Discourse.SiteSettings.allow_animated_avatars = true; }
}); });

View File

@ -26,6 +26,28 @@ test("isAllowedToUploadAFile", function() {
ok(user.isAllowedToUploadAFile("image"), "moderator can always upload a file"); ok(user.isAllowedToUploadAFile("image"), "moderator can always upload a file");
}); });
test("homepage when top is disabled", function() {
var newUser = Discourse.User.create({ trust_level: 0 }),
oldUser = Discourse.User.create({ trust_level: 1 }),
defaultHomepage = Discourse.Utilities.defaultHomepage();
Discourse.SiteSettings.top_menu = "latest";
ok(newUser.get("homepage") === defaultHomepage, "new user's homepage is default when top is disabled");
ok(oldUser.get("homepage") === defaultHomepage, "old user's homepage is default when top is disabled");
});
test("homepage when top is enabled", function() {
var newUser = Discourse.User.create({ trust_level: 0 }),
oldUser = Discourse.User.create({ trust_level: 1 }),
defaultHomepage = Discourse.Utilities.defaultHomepage();
Discourse.SiteSettings.top_menu = "latest|top";
ok(newUser.get("homepage") === "top", "new user's homepage is top when top is enabled");
ok(oldUser.get("homepage") === defaultHomepage, "old user's homepage is default when top is enabled");
});
asyncTestDiscourse("findByUsername", function() { asyncTestDiscourse("findByUsername", function() {
expect(3); expect(3);