From d162f83b73fc87229ce9f8cdf5d18dccdefc916c Mon Sep 17 00:00:00 2001 From: rob Date: Wed, 1 Feb 2023 17:35:54 -0500 Subject: [PATCH 1/6] Added the Unified Feed to Newsroom --- app/controllers/newsroom.js | 17 +++++++++++++++++ app/views/newsroom/index.pug | 8 +++++++- app/views/newsroom/unified-feed.pug | 27 +++++++++++++++++++++++++++ 3 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 app/views/newsroom/unified-feed.pug diff --git a/app/controllers/newsroom.js b/app/controllers/newsroom.js index b97d8d3..1b90af0 100644 --- a/app/controllers/newsroom.js +++ b/app/controllers/newsroom.js @@ -28,6 +28,8 @@ class NewsroomController extends SiteController { router.param('feedId', this.populateFeedId.bind(this)); + router.get('/feed', this.getUnifiedFeed.bind(this)); + router.get('/:feedId', limiterService.createMiddleware(limiterService.config.newsroom.getFeedView), this.getFeedView.bind(this), @@ -53,6 +55,21 @@ class NewsroomController extends SiteController { } } + async getUnifiedFeed (req, res) { + const { feed: feedService } = this.dtp.services; + try { + res.locals.pagination = this.getPaginationParameters(req, 20); + res.locals.newsroom = await feedService.getNewsfeed(res.locals.pagination); + res.render('newsroom/unified-feed'); + } catch (error) { + this.log.error('failed to present newsfeed JSON', { error }); + res.status(error.statusCode || 500).json({ + success: false, + message: error.message, + }); + } + } + async getFeedView (req, res, next) { const { feed: feedService } = this.dtp.services; try { diff --git a/app/views/newsroom/index.pug b/app/views/newsroom/index.pug index dc8a8f5..bcdfc08 100644 --- a/app/views/newsroom/index.pug +++ b/app/views/newsroom/index.pug @@ -6,7 +6,13 @@ block content section.uk-section.uk-section-default.uk-section-small .uk-container - h1 #{site.name} Newsroom + .uk-margin + div(uk-grid).uk-flex-middle + .uk-width-expand + h1.uk-margin-remove #{site.name} Newsroom + .uk-width-auto + a(href="/newsroom/feed").uk-button.dtp-button-primary.uk-button-small.uk-border-rounded View All + if Array.isArray(newsroom.feeds) && (newsroom.feeds.length > 0) div(uk-grid).uk-grid-match each feed in newsroom.feeds diff --git a/app/views/newsroom/unified-feed.pug b/app/views/newsroom/unified-feed.pug new file mode 100644 index 0000000..a69f2ef --- /dev/null +++ b/app/views/newsroom/unified-feed.pug @@ -0,0 +1,27 @@ +extends ../layouts/main +block content + + include ../components/pagination-bar + + section.uk-section.uk-section-default + .uk-container + + article.uk-article + .uk-margin + h1.uk-article-title.uk-margin-remove #{site.name} News Feed + .uk-text-bold #{formatCount(newsroom.totalFeedEntryCount)} articles indexed by #{site.name} in one chronological feed. + + .uk-margin + if Array.isArray(newsroom.entries) && (newsroom.entries.length > 0) + ul.uk-list.uk-list-divider + each entry in newsroom.entries + li + .uk-text-large.uk-text-bold.uk-margin-small + a(href= entry.link, target="_blank")= entry.title + .uk-margin-small= entry.description + .uk-text-small source: #[a(href= entry.feed.link, target="_blank")= entry.feed.title] + else + div There are no news feed entries. + + .uk-margin + +renderPaginationBar(`/newsroom/feed`, newsroom.totalFeedEntryCount) \ No newline at end of file From 76b913408d45f2fd5079119d10c634983642dcd6 Mon Sep 17 00:00:00 2001 From: rob Date: Wed, 1 Feb 2023 17:36:10 -0500 Subject: [PATCH 2/6] v0.6.14 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 975d8be..0b2c269 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "dtp-sites", - "version": "0.6.13", + "version": "0.6.14", "description": "Open source blogging engine for the Digital Telepresence Platform.", "main": "dtp-sites.js", "author": "DTP Technologies, LLC", From 817c990c9dc8a69bbfaaf9c8a8f7de9bb33cecae Mon Sep 17 00:00:00 2001 From: rob Date: Wed, 1 Feb 2023 17:45:50 -0500 Subject: [PATCH 3/6] open unified links in the shing_reader window/tab --- app/views/newsroom/unified-feed.pug | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/newsroom/unified-feed.pug b/app/views/newsroom/unified-feed.pug index a69f2ef..263f7b2 100644 --- a/app/views/newsroom/unified-feed.pug +++ b/app/views/newsroom/unified-feed.pug @@ -17,7 +17,7 @@ block content each entry in newsroom.entries li .uk-text-large.uk-text-bold.uk-margin-small - a(href= entry.link, target="_blank")= entry.title + a(href= entry.link, target="shing_reader")= entry.title .uk-margin-small= entry.description .uk-text-small source: #[a(href= entry.feed.link, target="_blank")= entry.feed.title] else From 52604d5435d1db5cdbbcbe8f711e1bbaf6ecaacb Mon Sep 17 00:00:00 2001 From: rob Date: Wed, 1 Feb 2023 17:45:58 -0500 Subject: [PATCH 4/6] v0.6.15 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 0b2c269..feb5668 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "dtp-sites", - "version": "0.6.14", + "version": "0.6.15", "description": "Open source blogging engine for the Digital Telepresence Platform.", "main": "dtp-sites.js", "author": "DTP Technologies, LLC", From 43179e454b302196cf8127566b40b0b824dbc418 Mon Sep 17 00:00:00 2001 From: rob Date: Thu, 16 Feb 2023 08:02:31 -0500 Subject: [PATCH 5/6] add JSON output for newsroom unified feed; User model fixes --- .gitignore | 1 + app/controllers/newsroom.js | 11 ++++++++++- app/models/user.js | 7 +++++-- 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index 00c8845..1616fc5 100644 --- a/.gitignore +++ b/.gitignore @@ -4,5 +4,6 @@ ssl/*crt ssl/*key data/minio +data/minio.old node_modules dist diff --git a/app/controllers/newsroom.js b/app/controllers/newsroom.js index 1b90af0..c2bbfb9 100644 --- a/app/controllers/newsroom.js +++ b/app/controllers/newsroom.js @@ -60,7 +60,16 @@ class NewsroomController extends SiteController { try { res.locals.pagination = this.getPaginationParameters(req, 20); res.locals.newsroom = await feedService.getNewsfeed(res.locals.pagination); - res.render('newsroom/unified-feed'); + + switch (req.query.fmt) { + case 'json': + res.status(200).json(res.locals.newsroom); + break; + + default: + res.render('newsroom/unified-feed'); + break; + } } catch (error) { this.log.error('failed to present newsfeed JSON', { error }); res.status(error.statusCode || 500).json({ diff --git a/app/models/user.js b/app/models/user.js index 63d5d72..5edef6c 100644 --- a/app/models/user.js +++ b/app/models/user.js @@ -45,14 +45,17 @@ const UserSchema = new Schema({ }); UserSchema.virtual('hasAuthorPermissions').get( function ( ) { - return this.permissions.canAuthorPages || this.permissions.canAuthorPosts; + return !!this && !!this.permissions && (this.permissions.canAuthorPages || this.permissions.canAuthorPosts); }); UserSchema.virtual('hasPublishPermissions').get( function ( ) { - return this.permissions.canPublishPages || this.permissions.canPublishPosts; + return !!this && !!this.permissions && (this.permissions.canPublishPages || this.permissions.canPublishPosts); }); UserSchema.virtual('hasAuthorDashboard').get( function ( ) { + if (!this || !this.permissions) { + return false; + } return this.permissions.canAuthorPages || this.permissions.cahAuthorPosts || this.permissions.canPublishPages || From 1631c74a8a2bbc188d4066218c651c9ee4ac30c9 Mon Sep 17 00:00:00 2001 From: rob Date: Thu, 16 Feb 2023 08:02:58 -0500 Subject: [PATCH 6/6] v0.6.16 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index feb5668..d00d174 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "dtp-sites", - "version": "0.6.15", + "version": "0.6.16", "description": "Open source blogging engine for the Digital Telepresence Platform.", "main": "dtp-sites.js", "author": "DTP Technologies, LLC",