From 853aa37cd235fde52c8035233bd243f6e355f041 Mon Sep 17 00:00:00 2001 From: yariplus Date: Thu, 17 Sep 2015 15:31:05 -0400 Subject: [PATCH] Add user home pages. #3616 --- install/data/defaults.json | 1 + public/src/client/account/settings.js | 13 +++++++++++ src/controllers/accounts.js | 1 - src/controllers/api.js | 1 + src/controllers/index.js | 31 ++++++++++++++++----------- src/user/settings.js | 3 ++- src/views/admin/general/homepage.tpl | 9 +++++++- 7 files changed, 43 insertions(+), 16 deletions(-) diff --git a/install/data/defaults.json b/install/data/defaults.json index 3274c8ec4e..6d81fdbc82 100644 --- a/install/data/defaults.json +++ b/install/data/defaults.json @@ -15,6 +15,7 @@ "allowLocalLogin": 1, "allowAccountDelete": 1, "allowFileUploads": 0, + "allowUserHomePage": 1, "maximumFileSize": 2048, "minimumTitleLength": 3, "maximumTitleLength": 255, diff --git a/public/src/client/account/settings.js b/public/src/client/account/settings.js index bf535d8ec0..840f498259 100644 --- a/public/src/client/account/settings.js +++ b/public/src/client/account/settings.js @@ -68,7 +68,20 @@ define('forum/account/settings', ['forum/account/header'], function(header) { css.attr('href', val); }); + + $('[data-property="homePageRoute"]').on('change', toggleCustomRoute); + + toggleCustomRoute(); }; + function toggleCustomRoute() { + $('[data-property="homePageCustom"]').val(''); + if ($('[data-property="homePageRoute"]').val() === 'custom') { + $('#homePageCustom').show(); + }else{ + $('#homePageCustom').hide(); + } + } + return AccountSettings; }); diff --git a/src/controllers/accounts.js b/src/controllers/accounts.js index 8384b4e9b8..65116b26da 100644 --- a/src/controllers/accounts.js +++ b/src/controllers/accounts.js @@ -11,5 +11,4 @@ var accountsController = { chats: require('./accounts/chats') }; - module.exports = accountsController; diff --git a/src/controllers/api.js b/src/controllers/api.js index 9a6fbee238..5ccedc5aeb 100644 --- a/src/controllers/api.js +++ b/src/controllers/api.js @@ -57,6 +57,7 @@ apiController.getConfig = function(req, res, next) { config.allowProfileImageUploads = parseInt(meta.config.allowProfileImageUploads) === 1; config.allowTopicsThumbnail = parseInt(meta.config.allowTopicsThumbnail, 10) === 1; config.allowAccountDelete = parseInt(meta.config.allowAccountDelete, 10) === 1; + config.allowUserHomePage = parseInt(meta.config.allowUserHomePage, 10) === 1; config.privateUserInfo = parseInt(meta.config.privateUserInfo, 10) === 1; config.privateTagListing = parseInt(meta.config.privateTagListing, 10) === 1; config.usePagination = parseInt(meta.config.usePagination, 10) === 1; diff --git a/src/controllers/index.js b/src/controllers/index.js index ccb8ece26a..4df1455c89 100644 --- a/src/controllers/index.js +++ b/src/controllers/index.js @@ -33,22 +33,27 @@ var Controllers = { Controllers.home = function(req, res, next) { - var route = meta.config.homePageRoute || meta.config.homePageCustom || 'categories', - hook = 'action:homepage.get:' + route; + var route = meta.config.homePageRoute || meta.config.homePageCustom || 'categories'; - if (plugins.hasListeners(hook)) { - plugins.fireHook(hook, {req: req, res: res, next: next}); - } else { - if (route === 'categories' || route === '/') { - Controllers.categories.list(req, res, next); - } else if (route === 'recent') { - Controllers.recent.get(req, res, next); - } else if (route === 'popular') { - Controllers.popular.get(req, res, next); + user.getSettings(req.uid, function(err, settings) { + if (!err) route = settings.homePageRoute || route; + + var hook = 'action:homepage.get:' + route; + + if (plugins.hasListeners(hook)) { + plugins.fireHook(hook, {req: req, res: res, next: next}); } else { - res.redirect(route); + if (route === 'categories' || route === '/') { + Controllers.categories.list(req, res, next); + } else if (route === 'recent') { + Controllers.recent.get(req, res, next); + } else if (route === 'popular') { + Controllers.popular.get(req, res, next); + } else { + res.redirect(route); + } } - } + }); }; Controllers.reset = function(req, res, next) { diff --git a/src/user/settings.js b/src/user/settings.js index 17e524bcb7..a2d83e89eb 100644 --- a/src/user/settings.js +++ b/src/user/settings.js @@ -115,7 +115,8 @@ module.exports = function(User) { sendPostNotifications: data.sendPostNotifications, restrictChat: data.restrictChat, topicSearchEnabled: data.topicSearchEnabled, - groupTitle: data.groupTitle + groupTitle: data.groupTitle, + homePageRoute: data.homePageCustom || data.homePageRoute }; if (data.bootswatchSkin) { diff --git a/src/views/admin/general/homepage.tpl b/src/views/admin/general/homepage.tpl index 5148d79da9..bfdc086b11 100644 --- a/src/views/admin/general/homepage.tpl +++ b/src/views/admin/general/homepage.tpl @@ -12,11 +12,18 @@ -
+
+
+ +