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);
}
}
},
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',
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" });
});
// the homepage is the first item of the 'top_menu' site setting
var homepage = Discourse.SiteSettings.top_menu.split("|")[0].split(",")[0];
// homepage
var homepage = Discourse.User.current() ?
Discourse.User.currentProp("homepage") :
Discourse.Utilities.defaultHomepage();
this.route(homepage, { path: '/' });
// categories page

View File

@ -133,6 +133,11 @@ test("avatarImg", function() {
"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", {
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");
});
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() {
expect(3);