From 66336a469fcf67a56cae4b72793cc2a196f6b9d1 Mon Sep 17 00:00:00 2001 From: Dominic Masters Date: Mon, 26 Nov 2018 21:48:03 +1100 Subject: [PATCH] Setup server to handle article page (untested) --- private/blog/Articles.js | 4 +- .../server/api/methods/blog/GetBlogArticle.js | 52 +++++++++++++ public/api/api.js | 2 +- public/assets/images/photo.jpg | Bin 74911 -> 0 bytes public/blog/Blog.jsx | 46 +++++++++-- public/components/App.jsx | 3 +- public/components/page/Page.scss | 2 +- .../blog/article/FeaturedArticleSection.jsx | 5 +- public/language/en-AU.jsx | 18 +++-- public/pages/blog/BlogPage.jsx | 11 ++- public/pages/blog/BlogPage.scss | 3 + public/pages/blog/article/ArticlePage.jsx | 72 ++++++++++++++++++ public/pages/blog/article/ArticlePage.scss | 43 +++++++++++ public/pages/contact/ContactPage.jsx | 2 +- 14 files changed, 241 insertions(+), 22 deletions(-) create mode 100644 private/server/api/methods/blog/GetBlogArticle.js delete mode 100644 public/assets/images/photo.jpg diff --git a/private/blog/Articles.js b/private/blog/Articles.js index 9fad0f8..e216b9a 100644 --- a/private/blog/Articles.js +++ b/private/blog/Articles.js @@ -36,13 +36,13 @@ module.exports = class Articles extends DatabaseInterface { async getArticleById(id) { return await this.store.getFromDatabase( - `getArticleById_${id}`, `getArticleById`, {id}, 'one' + `getArticleById_${id}`, `getArticleById`, {id}, 'oneOrNone' ); } async getArticleByHandle(handle) { return await this.store.getFromDatabase( - `getArticleByHandle_${handle}`, `getArticleByHandle`, {handle}, 'one' + `getArticleByHandle_${handle}`, `getArticleByHandle`, {handle}, 'oneOrNone' ); } diff --git a/private/server/api/methods/blog/GetBlogArticle.js b/private/server/api/methods/blog/GetBlogArticle.js new file mode 100644 index 0000000..10fbebb --- /dev/null +++ b/private/server/api/methods/blog/GetBlogArticle.js @@ -0,0 +1,52 @@ +// Copyright (c) 2018 Dominic Masters +// +// MIT License +// +// Permission is hereby granted, free of charge, to any person obtaining +// a copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to +// permit persons to whom the Software is furnished to do so, subject to +// the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +const + APIHandler = require('./../../APIHandler'), + sanitizeHtml = require('sanitize-html') +; + +const ERRORS = { + missingHandle: "Missing article handle.", + notFound: "Cannot find that article." +}; + +module.exports = class GetBlogArticle extends APIHandler { + constructor(api) { + super(api, ['GET'], '/blog/article'); + } + + async handle(request) { + if(!request.hasString('article', 128)) return { ok: false, data: ERRORS.missingHandle }; + + let handle = request.getApp().createHandle(request.getString('article', 128)); + let article = await request.getApp().getArticles().getArticleByHandle(handle); + + if(!article) return { ok: false, data: ERRORS.notFound }; + + return { + ok: true, + data: article + }; + } +} diff --git a/public/api/api.js b/public/api/api.js index 42e2f70..fded761 100644 --- a/public/api/api.js +++ b/public/api/api.js @@ -42,7 +42,7 @@ export const get = async (url, params, test) => { if(process.env.NODE_ENV === 'development') { console.log('testing mode'); return await new Promise((resolve,reject) => { - setTimeout(e => resolve(test), 1000); + //setTimeout(e => resolve(test), 1000); }); } diff --git a/public/assets/images/photo.jpg b/public/assets/images/photo.jpg deleted file mode 100644 index 6b05361d61a4aa380278520e9a3969358741c70d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 74911 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 { + article.url = `/blog/article/${article.handle}`; + article.image = require(`@assets/images/${article.image}`); + return article; +}; + +//Template Wrappers export const withBlogTemplate = WrappedComponent => { return class extends React.Component { constructor(props) { @@ -59,12 +67,7 @@ export const withBlogTemplate = WrappedComponent => { this.setState({ pending: true, page, perPage }); get('blog', { page, perPage }, TestBlogs).then(blog => { let { articles, pages } = blog; - - articles.forEach(article => { - article.url = `/blogs/articles/${article.handle}` - article.image = require(`@assets/images/${article.image}`); - }); - + articles.forEach(NormalizeArticle); this.setState({ pending: undefined, error: undefined, articles, pages }); }).catch(e => { console.error(e); @@ -77,3 +80,34 @@ export const withBlogTemplate = WrappedComponent => { } } }; + + +export const withArticleTemplate = WrappedComponent => { + return class extends React.Component { + constructor(props) { + super(props); + + this.state = { + pending: true, + error: undefined, + article: undefined + }; + } + + componentDidMount() { + let { article } = this.props.match.params; + this.setState({ pending: true }); + get('blog/article', { article }, TestBlogArticle(1)).then(article => { + NormalizeArticle(article); + this.setState({ pending: undefined, error: undefined, article }); + }).catch(error => { + console.error(error); + this.setState({ pending: undefined, error }); + }); + } + + render() { + return ; + } + } +} diff --git a/public/components/App.jsx b/public/components/App.jsx index a0a9eb2..cf203b8 100644 --- a/public/components/App.jsx +++ b/public/components/App.jsx @@ -40,7 +40,8 @@ const AppRoutes = (props) => { import ('@pages/contact/ContactPage') } /> import('@pages/legal/privacy/PrivacyPolicyPage') } /> - import('@pages/blog/BlogPage') } /> + import('@pages/blog/BlogPage') } /> + import('@pages/blog/article/ArticlePage') } /> ); }; diff --git a/public/components/page/Page.scss b/public/components/page/Page.scss index a634edc..4dbdef8 100644 --- a/public/components/page/Page.scss +++ b/public/components/page/Page.scss @@ -11,7 +11,7 @@ @import '~@styles/global'; .c-page { - flex-grow: 1; + min-height: 80vh; &.has-background { position: relative; diff --git a/public/components/section/blog/article/FeaturedArticleSection.jsx b/public/components/section/blog/article/FeaturedArticleSection.jsx index f89c87d..1fb3414 100644 --- a/public/components/section/blog/article/FeaturedArticleSection.jsx +++ b/public/components/section/blog/article/FeaturedArticleSection.jsx @@ -44,7 +44,10 @@ export default withLanguage(props => {
- +
diff --git a/public/language/en-AU.jsx b/public/language/en-AU.jsx index 697a8f5..d7cc5d9 100644 --- a/public/language/en-AU.jsx +++ b/public/language/en-AU.jsx @@ -25,10 +25,6 @@ export default { }, "blog": { - "error": { - "title": "Failed to get the blog", - "body": "Failed to get the blogs and articles from the server, please try again later or refresh your browser." - }, "article": { "readMore": "Read More" } @@ -231,7 +227,19 @@ export default { }, "blog": { - "title": "Blog" + "title": "Blog", + "error": { + "title": "Failed to get the blog", + "body": "Failed to get the blogs and articles from the server, please try again later or refresh your browser." + } + }, + + "article": { + "title": "Article", + "error": { + "title": "Failed to get article", + "body": "Failed to get the article from the server, please try again later or refresh your browser." + } } }, diff --git a/public/pages/blog/BlogPage.jsx b/public/pages/blog/BlogPage.jsx index 3f158de..f548928 100644 --- a/public/pages/blog/BlogPage.jsx +++ b/public/pages/blog/BlogPage.jsx @@ -39,9 +39,10 @@ import Styles from './BlogPage.scss'; export default withBlogTemplate(withLanguage(props => { let { lang, articles, page, pages, pending, error } = props; + let l = lang.pages.blog; let children; - if(error) error = ; + if(error) error = ; if(pending) pending = ; if(articles && articles.length) { @@ -49,21 +50,23 @@ export default withBlogTemplate(withLanguage(props => { - + ); } return ( { error } { pending } { children } - ); })); diff --git a/public/pages/blog/BlogPage.scss b/public/pages/blog/BlogPage.scss index 4b01acc..bfaf635 100644 --- a/public/pages/blog/BlogPage.scss +++ b/public/pages/blog/BlogPage.scss @@ -6,4 +6,7 @@ * 1.0.0 - 2018/10/30 */ .p-blog-page { + &__pagination { + padding: 6em 0; + } } diff --git a/public/pages/blog/article/ArticlePage.jsx b/public/pages/blog/article/ArticlePage.jsx index d93ee36..80f6a92 100644 --- a/public/pages/blog/article/ArticlePage.jsx +++ b/public/pages/blog/article/ArticlePage.jsx @@ -22,3 +22,75 @@ // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. import React from 'react'; + +import { withLanguage } from '@public/language/Language'; +import { withArticleTemplate } from '@public/blog/Blog'; + +import Page, { PageBoundary } from '@components/page/Page'; + +import ErrorSection from '@sections/error/ErrorSection'; +import ClearSection from '@sections/layout/ClearSection'; + +import Loader from '@objects/loading/Loader'; +import ContentBox from '@objects/content/box/ContentBox'; +import { Title, Paragraph } from '@objects/typography/typography'; +import Image from '@objects/image/Image'; + +import Styles from './ArticlePage.scss'; + +export default withArticleTemplate(withLanguage(props => { + let { error, pending, article, lang } = props; + let l = lang.pages.article; + + + let children; + if(error) error = ; + if(pending) pending = ; + + if(article) { + children = ( + +
+ {/* Title */} + + + </ContentBox> + + {/* Image */} + <div className="p-article-page__picture"> + <ContentBox box> + <Image + src={ article.image } maxWidth="800" loadable + className="p-article-page__picture-image" + /> + </ContentBox> + </div> + + {/* Description */} + <ContentBox box itemProp="description" className="p-article-page__description"> + <Paragraph> + { article.description || article.shortDescription } + </Paragraph> + </ContentBox> + </article> + </PageBoundary> + ); + } + + return ( + <Page + style="article-page" className="p-article-page" + title={error ? l.error.title : l.title} + background={require('@assets/images/banners/sunset.svg')} + > + <ClearSection /> + { error } + { pending } + { children } + <ClearSection /> + </Page> + ); +})); diff --git a/public/pages/blog/article/ArticlePage.scss b/public/pages/blog/article/ArticlePage.scss index e69de29..b655ba5 100644 --- a/public/pages/blog/article/ArticlePage.scss +++ b/public/pages/blog/article/ArticlePage.scss @@ -0,0 +1,43 @@ +@import '~@styles/global'; + +$p-article-page--spacing: 1.5em; + +.p-article-page { + &__article { + display: flex; + flex-wrap: wrap; + align-content: stretch; + } + + &__header, + &__picture, + &__description + { + width: 100%; + } + + &__picture { + position: relative; + + &-image {width: 100%;} + &-box { + position: sticky; + top:0; + } + } + + @include t-media-query($s-small-up) { + position: relative; + &__header { + margin-bottom: $p-article-page--spacing; + } + &__picture { + width: 40%; + padding-right: $p-article-page--spacing; + } + &__description { + width: 60%; + padding-left: $p-article-page--spacing; + } + } +} diff --git a/public/pages/contact/ContactPage.jsx b/public/pages/contact/ContactPage.jsx index 6fae912..5e35de6 100644 --- a/public/pages/contact/ContactPage.jsx +++ b/public/pages/contact/ContactPage.jsx @@ -111,7 +111,7 @@ class ContactPage extends React.Component { style="contact-page" className="p-contact-page" title={ lang.pages.contact.title } - background={ require('@assets/images/banners/sunset.svg') } + background={ require('@assets/images/banners/hills-night.svg') } > <ClearSection /> <PageBoundary small children={inners} />