From 89ce9b6badc3cf92619740594f36ff8684e8a2ef Mon Sep 17 00:00:00 2001 From: CaramelKat <32065563+caramelkat@users.noreply.github.com> Date: Wed, 28 Apr 2021 00:44:46 -0500 Subject: [PATCH] Reworked Wii U navigation to use pjax. Added support for B button to go back --- src/authentication.js | 1 + src/database.js | 16 +- src/services/juxt-web/routes/admin/api.js | 15 + src/services/juxt-web/routes/ctr/userpage.js | 6 +- .../juxt-web/routes/portal/communities.js | 99 ++---- src/services/juxt-web/routes/portal/feed.js | 2 +- .../juxt-web/routes/portal/notifications.js | 18 +- src/services/juxt-web/routes/portal/show.js | 10 +- .../juxt-web/routes/portal/userpage.js | 38 +-- src/services/juxt-web/routes/portal/web.js | 12 + ...ll_communities.ejs => all_communities.ejs} | 20 +- ...al_announcements.ejs => announcements.ejs} | 16 +- ..._notification.ejs => ban_notification.ejs} | 0 ...portal_communities.ejs => communities.ejs} | 28 +- .../{portal_community.ejs => community.ejs} | 64 ++-- ...ommunity_posts.ejs => community_posts.ejs} | 0 src/webfiles/portal/css/juxt.css | 25 +- .../{portal_first_run.ejs => first_run.ejs} | 1 + ...rtal_guest_notice.ejs => guest_notice.ejs} | 1 + src/webfiles/portal/js/juxt.js | 294 +++++++++--------- src/webfiles/portal/js/pjax.min.js | 2 + .../{portal_me_page.ejs => me_page.ejs} | 17 +- src/webfiles/portal/more_posts.ejs | 37 +++ src/webfiles/portal/notifications.ejs | 68 ++-- src/webfiles/portal/notifications_ajax.ejs | 35 --- .../portal/portal_all_communities_ajax.ejs | 29 -- .../portal/portal_announcements_ajax.ejs | 55 ---- .../portal/portal_communities_ajax.ejs | 60 ---- src/webfiles/portal/portal_community_ajax.ejs | 213 ------------- src/webfiles/portal/portal_me_page_ajax.ejs | 201 ------------ .../portal/portal_me_settings_ajax.ejs | 20 -- .../portal/portal_more_posts_ajax.ejs | 38 --- .../portal/portal_post_viewer_ajax.ejs | 65 ---- src/webfiles/portal/portal_user_page_ajax.ejs | 139 --------- .../{portal_user_page.ejs => user_page.ejs} | 21 +- 35 files changed, 428 insertions(+), 1238 deletions(-) rename src/webfiles/portal/{portal_all_communities.ejs => all_communities.ejs} (68%) rename src/webfiles/portal/{portal_announcements.ejs => announcements.ejs} (86%) rename src/webfiles/portal/{portal_ban_notification.ejs => ban_notification.ejs} (100%) rename src/webfiles/portal/{portal_communities.ejs => communities.ejs} (71%) rename src/webfiles/portal/{portal_community.ejs => community.ejs} (83%) rename src/webfiles/portal/{portal_community_posts.ejs => community_posts.ejs} (100%) rename src/webfiles/portal/{portal_first_run.ejs => first_run.ejs} (99%) rename src/webfiles/portal/{portal_guest_notice.ejs => guest_notice.ejs} (99%) create mode 100644 src/webfiles/portal/js/pjax.min.js rename src/webfiles/portal/{portal_me_page.ejs => me_page.ejs} (93%) create mode 100644 src/webfiles/portal/more_posts.ejs delete mode 100644 src/webfiles/portal/notifications_ajax.ejs delete mode 100644 src/webfiles/portal/portal_all_communities_ajax.ejs delete mode 100644 src/webfiles/portal/portal_announcements_ajax.ejs delete mode 100644 src/webfiles/portal/portal_communities_ajax.ejs delete mode 100644 src/webfiles/portal/portal_community_ajax.ejs delete mode 100644 src/webfiles/portal/portal_me_page_ajax.ejs delete mode 100644 src/webfiles/portal/portal_me_settings_ajax.ejs delete mode 100644 src/webfiles/portal/portal_more_posts_ajax.ejs delete mode 100644 src/webfiles/portal/portal_post_viewer_ajax.ejs delete mode 100644 src/webfiles/portal/portal_user_page_ajax.ejs rename src/webfiles/portal/{portal_user_page.ejs => user_page.ejs} (89%) diff --git a/src/authentication.js b/src/authentication.js index 480ab48..a201ec6 100644 --- a/src/authentication.js +++ b/src/authentication.js @@ -22,6 +22,7 @@ database.connect().then(async e => { if(communities[i].title_id !== null) { for(let j = 0; j < communities[i].title_id.length; j++) { communityMap.set(communities[i].title_id[j], communities[i].name); + communityMap.set(communities[i].title_id[j] + '-id', communities[i].community_id); } } } diff --git a/src/database.js b/src/database.js index 34bc496..d57cb5a 100644 --- a/src/database.js +++ b/src/database.js @@ -203,6 +203,18 @@ async function getCommunityPostsAfterTimestamp(post, numberOfPosts) { }).limit(numberOfPosts); } +async function pushNewNotificationByPID(PID, content, link) { + verifyConnected(); + return USER.update( + { pid: PID }, { $push: { notification_list: { content: content, link: link, read: false, created_at: Date() }}}); +} + +async function pushNewNotificationToAll(content, link) { + verifyConnected(); + return USER.updateMany( + {}, { $push: { notification_list: { content: content, link: link, read: false, created_at: Date() }}}); +} + async function getDiscoveryHosts() { verifyConnected(); return ENDPOINT.findOne({ @@ -267,5 +279,7 @@ module.exports = { getUserByUsername, getUserPostsAfterTimestamp, getCommunityPostsAfterTimestamp, - getServerConfig + getServerConfig, + pushNewNotificationByPID, + pushNewNotificationToAll }; \ No newline at end of file diff --git a/src/services/juxt-web/routes/admin/api.js b/src/services/juxt-web/routes/admin/api.js index a1478d4..f1dfa35 100644 --- a/src/services/juxt-web/routes/admin/api.js +++ b/src/services/juxt-web/routes/admin/api.js @@ -431,4 +431,19 @@ router.post('/posts/:postID/delete', function (req, res) { }); }); +router.get('/notifications', function (req, res) { + database.connect().then(async e => { + await database.pushNewNotificationToAll('Testing a system wide notification and linking to a post', '/users/me') + res.sendStatus(200); + }).catch(error => + { + res.statusCode = 400; + let response = { + error_code: 400, + message: error.message + }; + res.send(response); + }); +}); + module.exports = router; \ No newline at end of file diff --git a/src/services/juxt-web/routes/ctr/userpage.js b/src/services/juxt-web/routes/ctr/userpage.js index 5523b92..39ae275 100644 --- a/src/services/juxt-web/routes/ctr/userpage.js +++ b/src/services/juxt-web/routes/ctr/userpage.js @@ -28,7 +28,7 @@ router.get('/me', function (req, res) { }); } else { - res.render('ctr/portal_user_page.ejs', { + res.render('ctr/user_page.ejs', { // EJS variable and server-side variable user: user, newPosts: newPosts, @@ -62,7 +62,7 @@ router.get('/show', function (req, res) { let newPosts = await database.getPostsByUserID(user.pid); let numPosts = await database.getNumberPostsByUserID(user.pid); if(isAJAX) { - res.render('ctr/portal_user_page_ajax.ejs', { + res.render('ctr/user_page_ajax.ejs', { // EJS variable and server-side variable user: user, newPosts: newPosts, @@ -70,7 +70,7 @@ router.get('/show', function (req, res) { }); } else { - res.render('ctr/portal_user_page.ejs', { + res.render('ctr/user_page.ejs', { // EJS variable and server-side variable user: user, newPosts: newPosts, diff --git a/src/services/juxt-web/routes/portal/communities.js b/src/services/juxt-web/routes/portal/communities.js index 8d0fdc5..c416faa 100644 --- a/src/services/juxt-web/routes/portal/communities.js +++ b/src/services/juxt-web/routes/portal/communities.js @@ -9,25 +9,14 @@ var router = express.Router(); router.get('/', function (req, res) { res.header('X-Nintendo-WhiteList','1|http,youtube.com,,2|https,youtube.com,,2|http,.youtube.com,,2|https,.youtube.com,,2|http,.ytimg.com,,2|https,.ytimg.com,,2|http,.googlevideo.com,,2|https,.googlevideo.com,,2|https,youtube.com,/embed/,6|https,youtube.com,/e/,6|https,youtube.com,/v/,6|https,www.youtube.com,/embed/,6|https,www.youtube.com,/e/,6|https,www.youtube.com,/v/,6|https,youtube.googleapis.com,/e/,6|https,youtube.googleapis.com,/v/,6|http,maps.googleapis.com,/maps/api/streetview,2|https,maps.googleapis.com,/maps/api/streetview,2|http,cbk0.google.com,/cbk,2|https,cbk0.google.com,/cbk,2|http,cbk1.google.com,/cbk,2|https,cbk1.google.com,/cbk,2|http,cbk2.google.com,/cbk,2|https,cbk2.google.com,/cbk,2|http,cbk3.google.com,/cbk,2|https,cbk3.google.com,/cbk,2|https,.cloudfront.net,,2|https,www.google-analytics.com,/,2|https,stats.g.doubleclick.net,,2|https,www.google.com,/ads/,2|https,ssl.google-analytics.com,,2|http,fonts.googleapis.com,,2|fonts.googleapis.com,,2|https,www.googletagmanager.com,,2'); - var isAJAX = ((req.query.ajax+'').toLowerCase() === 'true') database.connect().then(async e => { let popularCommunities = await database.getMostPopularCommunities(9); let newCommunities = await database.getNewCommunities(6); - if(isAJAX) { - res.render('portal/portal_communities_ajax.ejs', { - // EJS variable and server-side variable - popularCommunities: popularCommunities, - newCommunities: newCommunities - }); - } - else { - res.render('portal/portal_communities.ejs', { - // EJS variable and server-side variable - popularCommunities: popularCommunities, - newCommunities: newCommunities - }); - } - + res.render('portal/communities.ejs', { + // EJS variable and server-side variable + popularCommunities: popularCommunities, + newCommunities: newCommunities + }); }).catch(error => { res.set("Content-Type", "application/xml"); res.statusCode = 400; @@ -46,20 +35,11 @@ router.get('/', function (req, res) { router.get('/all', function (req, res) { res.header('X-Nintendo-WhiteList','1|http,youtube.com,,2|https,youtube.com,,2|http,.youtube.com,,2|https,.youtube.com,,2|http,.ytimg.com,,2|https,.ytimg.com,,2|http,.googlevideo.com,,2|https,.googlevideo.com,,2|https,youtube.com,/embed/,6|https,youtube.com,/e/,6|https,youtube.com,/v/,6|https,www.youtube.com,/embed/,6|https,www.youtube.com,/e/,6|https,www.youtube.com,/v/,6|https,youtube.googleapis.com,/e/,6|https,youtube.googleapis.com,/v/,6|http,maps.googleapis.com,/maps/api/streetview,2|https,maps.googleapis.com,/maps/api/streetview,2|http,cbk0.google.com,/cbk,2|https,cbk0.google.com,/cbk,2|http,cbk1.google.com,/cbk,2|https,cbk1.google.com,/cbk,2|http,cbk2.google.com,/cbk,2|https,cbk2.google.com,/cbk,2|http,cbk3.google.com,/cbk,2|https,cbk3.google.com,/cbk,2|https,.cloudfront.net,,2|https,www.google-analytics.com,/,2|https,stats.g.doubleclick.net,,2|https,www.google.com,/ads/,2|https,ssl.google-analytics.com,,2|http,fonts.googleapis.com,,2|fonts.googleapis.com,,2|https,www.googletagmanager.com,,2'); - var isAJAX = ((req.query.ajax+'').toLowerCase() === 'true') database.connect().then(async e => { let communities = await database.getCommunities(90); - if(isAJAX) { - res.render('portal/portal_all_communities_ajax.ejs', { - communities: communities, - }); - } - else { - res.render('portal/portal_all_communities.ejs', { - communities: communities, - }); - } - + res.render('portal/all_communities.ejs', { + communities: communities, + }); }).catch(error => { res.set("Content-Type", "application/xml"); res.statusCode = 400; @@ -78,7 +58,6 @@ router.get('/all', function (req, res) { router.get('/announcements', function (req, res) { res.header('X-Nintendo-WhiteList','1|http,youtube.com,,2|https,youtube.com,,2|http,.youtube.com,,2|https,.youtube.com,,2|http,.ytimg.com,,2|https,.ytimg.com,,2|http,.googlevideo.com,,2|https,.googlevideo.com,,2|https,youtube.com,/embed/,6|https,youtube.com,/e/,6|https,youtube.com,/v/,6|https,www.youtube.com,/embed/,6|https,www.youtube.com,/e/,6|https,www.youtube.com,/v/,6|https,youtube.googleapis.com,/e/,6|https,youtube.googleapis.com,/v/,6|http,maps.googleapis.com,/maps/api/streetview,2|https,maps.googleapis.com,/maps/api/streetview,2|http,cbk0.google.com,/cbk,2|https,cbk0.google.com,/cbk,2|http,cbk1.google.com,/cbk,2|https,cbk1.google.com,/cbk,2|http,cbk2.google.com,/cbk,2|https,cbk2.google.com,/cbk,2|http,cbk3.google.com,/cbk,2|https,cbk3.google.com,/cbk,2|https,.cloudfront.net,,2|https,www.google-analytics.com,/,2|https,stats.g.doubleclick.net,,2|https,www.google.com,/ads/,2|https,ssl.google-analytics.com,,2|http,fonts.googleapis.com,,2|fonts.googleapis.com,,2|https,www.googletagmanager.com,,2'); - var isAJAX = ((req.query.ajax+'').toLowerCase() === 'true') database.connect().then(async e => { let pid = util.data.processServiceToken(req.headers["x-nintendo-servicetoken"]); if(pid === null) @@ -87,25 +66,13 @@ router.get('/announcements', function (req, res) { let community = await database.getCommunityByID('announcements'); let newPosts = await database.getNumberNewCommunityPostsByID(community, 25); let totalNumPosts = await database.getTotalPostsByCommunity(community); - - if(isAJAX) { - res.render('portal/portal_announcements_ajax.ejs', { - moment: moment, - community: community, - newPosts: newPosts, - user: user, - totalNumPosts: totalNumPosts - }); - } - else { - res.render('portal/portal_announcements.ejs', { - moment: moment, - community: community, - newPosts: newPosts, - user: user, - totalNumPosts: totalNumPosts - }); - } + res.render('portal/announcements.ejs', { + moment: moment, + community: community, + newPosts: newPosts, + user: user, + totalNumPosts: totalNumPosts + }); }).catch(error => { console.error(error); res.set("Content-Type", "application/xml"); @@ -123,9 +90,8 @@ router.get('/announcements', function (req, res) { }); }); -router.get('/:communityID', function (req, res) { +router.get('/:communityID/:type', function (req, res) { res.header('X-Nintendo-WhiteList','1|http,youtube.com,,2|https,youtube.com,,2|http,.youtube.com,,2|https,.youtube.com,,2|http,.ytimg.com,,2|https,.ytimg.com,,2|http,.googlevideo.com,,2|https,.googlevideo.com,,2|https,youtube.com,/embed/,6|https,youtube.com,/e/,6|https,youtube.com,/v/,6|https,www.youtube.com,/embed/,6|https,www.youtube.com,/e/,6|https,www.youtube.com,/v/,6|https,youtube.googleapis.com,/e/,6|https,youtube.googleapis.com,/v/,6|http,maps.googleapis.com,/maps/api/streetview,2|https,maps.googleapis.com,/maps/api/streetview,2|http,cbk0.google.com,/cbk,2|https,cbk0.google.com,/cbk,2|http,cbk1.google.com,/cbk,2|https,cbk1.google.com,/cbk,2|http,cbk2.google.com,/cbk,2|https,cbk2.google.com,/cbk,2|http,cbk3.google.com,/cbk,2|https,cbk3.google.com,/cbk,2|https,.cloudfront.net,,2|https,www.google-analytics.com,/,2|https,stats.g.doubleclick.net,,2|https,www.google.com,/ads/,2|https,ssl.google-analytics.com,,2|http,fonts.googleapis.com,,2|fonts.googleapis.com,,2|https,www.googletagmanager.com,,2'); - var isAJAX = ((req.query.ajax+'').toLowerCase() === 'true') database.connect().then(async e => { let pid = util.data.processServiceToken(req.headers["x-nintendo-servicetoken"]); if(pid === null) @@ -134,28 +100,15 @@ router.get('/:communityID', function (req, res) { console.log(req.params.communityID) let community = await database.getCommunityByID(req.params.communityID.toString()); let newPosts = await database.getNumberNewCommunityPostsByID(community, 5); - let totalNumPosts = await database.getTotalPostsByCommunity(community); - - if(isAJAX) { - res.render('portal/portal_community_ajax.ejs', { - // EJS variable and server-side variable - moment: moment, - community: community, - newPosts: newPosts, - totalNumPosts: totalNumPosts, - user: user - }); - } - else { - res.render('portal/portal_community.ejs', { - // EJS variable and server-side variable - moment: moment, - community: community, - newPosts: newPosts, - totalNumPosts: totalNumPosts, - user: user - }); - } + let totalNumPosts = await database.getTotalPostsByCommunity(community) + res.render('portal/community.ejs', { + // EJS variable and server-side variable + moment: moment, + community: community, + newPosts: newPosts, + totalNumPosts: totalNumPosts, + user: user + }); }).catch(error => { console.error(error); res.set("Content-Type", "application/xml"); @@ -202,7 +155,7 @@ router.get('/:communityID/:type/loadPosts', function (req, res) { if(posts.length > 0) { - res.render('portal/portal_more_posts_ajax.ejs', { + res.render('portal/more_posts.ejs', { communityMap: communityMap, moment: moment, database: database, diff --git a/src/services/juxt-web/routes/portal/feed.js b/src/services/juxt-web/routes/portal/feed.js index bcad95c..1cf8e4d 100644 --- a/src/services/juxt-web/routes/portal/feed.js +++ b/src/services/juxt-web/routes/portal/feed.js @@ -23,7 +23,7 @@ router.get('/loadPosts', function (req, res) { let communityMap = await util.data.getCommunityHash(); if(newPosts.length > 0) { - res.render('portal/portal_more_posts_ajax.ejs', { + res.render('portal/more_posts_ajax.ejs', { communityMap: communityMap, moment: moment, user: user, diff --git a/src/services/juxt-web/routes/portal/notifications.js b/src/services/juxt-web/routes/portal/notifications.js index 5edd03c..3b6450f 100644 --- a/src/services/juxt-web/routes/portal/notifications.js +++ b/src/services/juxt-web/routes/portal/notifications.js @@ -7,7 +7,6 @@ var router = express.Router(); router.get('/', function (req, res) { res.header('X-Nintendo-WhiteList','1|http,youtube.com,,2|https,youtube.com,,2|http,.youtube.com,,2|https,.youtube.com,,2|http,.ytimg.com,,2|https,.ytimg.com,,2|http,.googlevideo.com,,2|https,.googlevideo.com,,2|https,youtube.com,/embed/,6|https,youtube.com,/e/,6|https,youtube.com,/v/,6|https,www.youtube.com,/embed/,6|https,www.youtube.com,/e/,6|https,www.youtube.com,/v/,6|https,youtube.googleapis.com,/e/,6|https,youtube.googleapis.com,/v/,6|http,maps.googleapis.com,/maps/api/streetview,2|https,maps.googleapis.com,/maps/api/streetview,2|http,cbk0.google.com,/cbk,2|https,cbk0.google.com,/cbk,2|http,cbk1.google.com,/cbk,2|https,cbk1.google.com,/cbk,2|http,cbk2.google.com,/cbk,2|https,cbk2.google.com,/cbk,2|http,cbk3.google.com,/cbk,2|https,cbk3.google.com,/cbk,2|https,.cloudfront.net,,2|https,www.google-analytics.com,/,2|https,stats.g.doubleclick.net,,2|https,www.google.com,/ads/,2|https,ssl.google-analytics.com,,2|http,fonts.googleapis.com,,2||fonts.googleapis.com,,2'); - var isAJAX = ((req.query.ajax+'').toLowerCase() === 'true') database.connect().then(async e => { //let paramPackData = util.data.decodeParamPack(req.headers["x-nintendo-parampack"]); @@ -16,21 +15,14 @@ router.get('/', function (req, res) { if(pid === null) pid = 1000000000; let user = await database.getUserByPID(pid); - if(isAJAX) { - res.render('portal/notifications_ajax.ejs', { - moment: moment, - user: user, - }); - } - else { - res.render('portal/notifications.ejs', { - moment: moment, - user: user, - }); - } + res.render('portal/notifications.ejs', { + moment: moment, + user: user, + }); user.notification_list.filter(noti => noti.read === false).forEach(function(notification) { notification.read = true; }); + user.markModified('notification_list'); user.save(); }).catch(error => { console.log(error); diff --git a/src/services/juxt-web/routes/portal/show.js b/src/services/juxt-web/routes/portal/show.js index f283a63..dc91f17 100644 --- a/src/services/juxt-web/routes/portal/show.js +++ b/src/services/juxt-web/routes/portal/show.js @@ -13,14 +13,14 @@ router.get('/', function (req, res) { let user = null; if(pid === null) { - res.render('portal/portal_guest_notice.ejs', {}); + res.render('portal/guest_notice.ejs', {}); } else { user = await database.getUserByPID(pid); if(user === null) { - res.render('portal/portal_first_run.ejs', {}); + res.render('portal/first_run.ejs', {}); } if(moment(user.ban_lift_date).format('YYYY-MM-DD') <= moment().format('YYYY-MM-DD') && user.account_status !== 3) { user.account_status = 0; @@ -35,7 +35,7 @@ router.get('/', function (req, res) { */ if(user.account_status !== 0) { - res.render('portal/portal_ban_notification.ejs', { + res.render('portal/ban_notification.ejs', { user: user, moment: moment }); @@ -44,7 +44,7 @@ router.get('/', function (req, res) { { let popularCommunities = await database.getMostPopularCommunities(9); let newCommunities = await database.getNewCommunities(6); - res.render('portal/portal_communities.ejs', { + res.render('portal/communities.ejs', { popularCommunities: popularCommunities, newCommunities: newCommunities }); @@ -69,7 +69,7 @@ router.get('/', function (req, res) { router.get('/first', function (req, res) { res.header('X-Nintendo-WhiteList','1|http,youtube.com,,2|https,youtube.com,,2|http,.youtube.com,,2|https,.youtube.com,,2|http,.ytimg.com,,2|https,.ytimg.com,,2|http,.googlevideo.com,,2|https,.googlevideo.com,,2|https,youtube.com,/embed/,6|https,youtube.com,/e/,6|https,youtube.com,/v/,6|https,www.youtube.com,/embed/,6|https,www.youtube.com,/e/,6|https,www.youtube.com,/v/,6|https,youtube.googleapis.com,/e/,6|https,youtube.googleapis.com,/v/,6|http,maps.googleapis.com,/maps/api/streetview,2|https,maps.googleapis.com,/maps/api/streetview,2|http,cbk0.google.com,/cbk,2|https,cbk0.google.com,/cbk,2|http,cbk1.google.com,/cbk,2|https,cbk1.google.com,/cbk,2|http,cbk2.google.com,/cbk,2|https,cbk2.google.com,/cbk,2|http,cbk3.google.com,/cbk,2|https,cbk3.google.com,/cbk,2|https,.cloudfront.net,,2|https,www.google-analytics.com,/,2|https,stats.g.doubleclick.net,,2|https,www.google.com,/ads/,2|https,ssl.google-analytics.com,,2|http,fonts.googleapis.com,,2|fonts.googleapis.com,,2|https,www.googletagmanager.com,,2'); - res.render('portal/portal_first_run.ejs', {}); + res.render('portal/first_run.ejs', {}); }); router.post('/newUser', function (req, res) { diff --git a/src/services/juxt-web/routes/portal/userpage.js b/src/services/juxt-web/routes/portal/userpage.js index c4760f4..b4d0682 100644 --- a/src/services/juxt-web/routes/portal/userpage.js +++ b/src/services/juxt-web/routes/portal/userpage.js @@ -21,7 +21,7 @@ router.get('/me', function (req, res) { let numPosts = await database.getTotalPostsByUserID(pid); let communityMap = await util.data.getCommunityHash(); if(isAJAX) { - res.render('portal/portal_me_page_ajax.ejs', { + res.render('portal/me_page_ajax.ejs', { // EJS variable and server-side variable communityMap: communityMap, moment: moment, @@ -31,7 +31,7 @@ router.get('/me', function (req, res) { }); } else { - res.render('portal/portal_me_page.ejs', { + res.render('portal/me_page.ejs', { // EJS variable and server-side variable communityMap: communityMap, moment: moment, @@ -114,28 +114,15 @@ router.get('/show', function (req, res) { let newPosts = await database.getNumberUserPostsByID(user.pid, 10); let numPosts = await database.getTotalPostsByUserID(user.pid); let communityMap = await util.data.getCommunityHash(); - if(isAJAX) { - res.render('portal/portal_user_page_ajax.ejs', { - // EJS variable and server-side variable - communityMap: communityMap, - moment: moment, - user: user, - newPosts: newPosts, - numPosts: numPosts, - parentUser: parentUser - }); - } - else { - res.render('portal/portal_user_page.ejs', { - // EJS variable and server-side variable - communityMap: communityMap, - moment: moment, - user: user, - newPosts: newPosts, - numPosts: numPosts, - parentUser: parentUser - }); - } + res.render('portal/user_page.ejs', { + // EJS variable and server-side variable + communityMap: communityMap, + moment: moment, + user: user, + newPosts: newPosts, + numPosts: numPosts, + parentUser: parentUser + }); }).catch(error => { console.error(error); res.set("Content-Type", "application/xml"); @@ -165,7 +152,7 @@ router.get('/loadPosts', function (req, res) { let communityMap = await util.data.getCommunityHash(); if(newPosts.length > 0) { - res.render('portal/portal_more_posts_ajax.ejs', { + res.render('portal/more_posts_ajax.ejs', { communityMap: communityMap, moment: moment, user: user, @@ -205,6 +192,7 @@ router.post('/follow', upload.none(), function (req, res) { userToFollow.addToFollowers(user.pid); user.addToUsers(userToFollow.pid); res.sendStatus(200); + await database.pushNewNotificationByPID(userToFollow.pid, user.user_id + ' followed you!', '/users/show?pid=' + user.pid) } else if(req.body.type === 'false' && user !== null && user.followed_users.indexOf(userToFollow.pid) !== -1) { diff --git a/src/services/juxt-web/routes/portal/web.js b/src/services/juxt-web/routes/portal/web.js index 6239f59..fd74e5b 100644 --- a/src/services/juxt-web/routes/portal/web.js +++ b/src/services/juxt-web/routes/portal/web.js @@ -5,26 +5,37 @@ const util = require('../../../../authentication'); var path = require('path'); router.get('/css/juxt.css', function (req, res) { + res.set("Content-Type", "text/css"); res.sendFile('css/juxt.css', {root: path.join(__dirname, '../../../../webfiles/portal/')}); }); router.get('/js/juxt.js', function (req, res) { + res.set("Content-Type", "application/javascript; charset=utf-8"); res.sendFile('js/juxt.js', {root: path.join(__dirname, '../../../../webfiles/portal/')}); }); +router.get('/js/pjax.min.js', function (req, res) { + res.set("Content-Type", "application/javascript; charset=utf-8"); + res.sendFile('js/pjax.min.js', {root: path.join(__dirname, '../../../../webfiles/portal/')}); +}); + router.get('/fonts/Poppins-Light.woff', function (req, res) { + res.set("Content-Type", "font/woff"); res.sendFile('fonts/Poppins-Light.woff', {root: path.join(__dirname, '../../../../webfiles/portal/')}); }); router.get('/fonts/Poppins-Light.ttf', function (req, res) { + res.set("Content-Type", "font/ttf"); res.sendFile('fonts/Poppins-Light.ttf', {root: path.join(__dirname, '../../../../webfiles/portal/')}); }); router.get('/favicon.ico', function (req, res) { + res.set("Content-Type", "image/x-icon"); res.sendFile('css/favicon.ico', {root: path.join(__dirname, '../../../../webfiles/portal/')}); }); router.get('/icons/:image_id.png', function (req, res) { + res.set("Content-Type", "image/png"); database.connect().then(async e => { let community = await database.getCommunityByID(req.params.image_id.toString()); if(community !== null) { @@ -50,6 +61,7 @@ router.get('/icons/:image_id.png', function (req, res) { }); router.get('/banner/:image_id.png', function (req, res) { + res.set("Content-Type", "image/png"); database.connect().then(async e => { let community = await database.getCommunityByID(req.params.image_id.toString()); if(community !== null) diff --git a/src/webfiles/portal/portal_all_communities.ejs b/src/webfiles/portal/all_communities.ejs similarity index 68% rename from src/webfiles/portal/portal_all_communities.ejs rename to src/webfiles/portal/all_communities.ejs index 716e769..35ccb2a 100644 --- a/src/webfiles/portal/portal_all_communities.ejs +++ b/src/webfiles/portal/all_communities.ejs @@ -1,6 +1,7 @@ + @@ -21,13 +22,13 @@ - - - - - - - + + + + + + +

All Communities

@@ -43,7 +44,7 @@ <% for(var i = 0; i < communities.length; i++) {%> -
+

<%= communities[i].name %>

<%= communities[i].followers %> followers

@@ -58,7 +59,8 @@
+
- + \ No newline at end of file diff --git a/src/webfiles/portal/portal_announcements.ejs b/src/webfiles/portal/announcements.ejs similarity index 86% rename from src/webfiles/portal/portal_announcements.ejs rename to src/webfiles/portal/announcements.ejs index a07ad78..913057a 100644 --- a/src/webfiles/portal/portal_announcements.ejs +++ b/src/webfiles/portal/announcements.ejs @@ -1,6 +1,7 @@ + @@ -21,13 +22,13 @@ - - - - - - - + + + + + + +
@@ -83,6 +84,7 @@ <%}%>
+
diff --git a/src/webfiles/portal/portal_ban_notification.ejs b/src/webfiles/portal/ban_notification.ejs similarity index 100% rename from src/webfiles/portal/portal_ban_notification.ejs rename to src/webfiles/portal/ban_notification.ejs diff --git a/src/webfiles/portal/portal_communities.ejs b/src/webfiles/portal/communities.ejs similarity index 71% rename from src/webfiles/portal/portal_communities.ejs rename to src/webfiles/portal/communities.ejs index c2184cb..b92f246 100644 --- a/src/webfiles/portal/portal_communities.ejs +++ b/src/webfiles/portal/communities.ejs @@ -1,6 +1,7 @@ + @@ -21,17 +22,17 @@ - - - - - - - + + + + + + +

Communities

-
+

Click here to view recent announcements!