77 lines
3.3 KiB
JavaScript
Executable file
77 lines
3.3 KiB
JavaScript
Executable file
import Head from "next/head";
|
|
import Image from "next/image";
|
|
import getConfig from 'next/config'
|
|
import "../../components/main.js"
|
|
import Layout from "../../components/main.js"
|
|
import { getAllGalleryImages, getGalleryImage } from "../../data/external/cms.js";
|
|
import config from "../../data/internal/config"
|
|
|
|
|
|
const galleryImage = ({pagedata, imageDetails, basepath, config} ) => {
|
|
if(!imageDetails) return null
|
|
|
|
let sanitisedDesc = imageDetails.data[0].attributes.Description.replace(/(<([^>]+)>)/gi, "")
|
|
|
|
return (<Layout pagedata={pagedata} imageDetails={imageDetails}>
|
|
<Head>
|
|
<meta name="twitter:card" content="summary_large_image" key="twcard" />
|
|
<meta name="twitter:creator" content="angrybeanie" key="twhandle" />
|
|
<meta name="twitter:site" content="@angrybeanie"></meta>
|
|
<meta name="twitter:title" content={imageDetails.data[0].attributes.Title}></meta>
|
|
<meta name="og:url" content={config.siteURL + "/galleryimages/" + imageDetails.data[0].attributes.Slug}></meta>
|
|
<meta name="og:type" content="article"></meta>
|
|
<meta name="og:title" content={ imageDetails.data[0].attributes.Title } key="title"></meta>
|
|
<meta name="og:description" content={ sanitisedDesc } key="description"></meta>
|
|
<meta name="og:image" content={basepath + imageDetails.data[0].attributes.Image.data.attributes.formats.large.url}></meta>
|
|
<meta name="og:image:alt" content={ sanitisedDesc }></meta>
|
|
</Head>
|
|
<div className="main_content col-sm-12">
|
|
<Image
|
|
src={basepath + imageDetails.data[0].attributes.Image.data.attributes.formats.large.url}
|
|
layout="responsive"
|
|
width={imageDetails.data[0].attributes.Image.data.attributes.formats.large.width}
|
|
height={imageDetails.data[0].attributes.Image.data.attributes.formats.large.height}
|
|
></Image>
|
|
<div className="col-sm-9 article_body">
|
|
<h2>Photo Information</h2>
|
|
<div>
|
|
<p><strong>Title:</strong> {imageDetails.data[0].attributes.Title}</p>
|
|
<p><strong>Gallery:</strong> <a href={"/galleries/" + imageDetails.data[0].attributes.galleries.data[0].attributes.Slug}>{imageDetails.data[0].attributes.galleries.data[0].attributes.Title}</a></p>
|
|
<p dangerouslySetInnerHTML={{ __html: imageDetails.data[0].attributes.Description}}></p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</Layout>)
|
|
}
|
|
|
|
export default galleryImage
|
|
|
|
export async function getStaticPaths() {
|
|
const posts = await getAllGalleryImages()
|
|
const paths = posts.data.map((post) => ({
|
|
params: { galleryImage: post.attributes.Slug },
|
|
}))
|
|
return {
|
|
paths,
|
|
fallback: true // false or 'blocking'
|
|
};
|
|
}
|
|
|
|
export async function getStaticProps (context){
|
|
|
|
const { serverRuntimeConfig } = getConfig()
|
|
|
|
const slug = context.params.galleryImage
|
|
|
|
const galImage = await getGalleryImage(slug)
|
|
|
|
const pagedata = {
|
|
'title': "Angry Beanie - " + galImage.data[0].attributes.Title
|
|
}
|
|
|
|
return {
|
|
props: { pagedata, imageDetails: galImage, basepath: serverRuntimeConfig.media_path, config },
|
|
revalidate: 60
|
|
}
|
|
}
|
|
|