Prettier
This commit is contained in:
1 parent
ec1f6d699c
commit
47375e6400
12 files changed
+170
-139
No files matched your search
+14
-14
@@ -1,4 +1,4 @@
|
||||
const { neufNormalizer } = require('./src/wordpress')
|
||||
const { neufNormalizer } = require('./src/wordpress')
|
||||
|
||||
module.exports = {
|
||||
siteMetadata: {
|
||||
@@ -22,21 +22,21 @@ module.exports = {
|
||||
// Set to true to debug endpoints on 'gatsby build'
|
||||
verboseOutput: true,
|
||||
includedRoutes: [
|
||||
"**/*/*/categories",
|
||||
"**/*/*/events",
|
||||
"**/*/*/event_types",
|
||||
"**/*/*/posts",
|
||||
"**/*/*/pages",
|
||||
"**/*/*/media",
|
||||
"**/*/*/tags",
|
||||
"**/*/*/taxonomies",
|
||||
"**/*/*/users",
|
||||
'**/*/*/categories',
|
||||
'**/*/*/events',
|
||||
'**/*/*/event_types',
|
||||
'**/*/*/posts',
|
||||
'**/*/*/pages',
|
||||
'**/*/*/media',
|
||||
'**/*/*/tags',
|
||||
'**/*/*/taxonomies',
|
||||
'**/*/*/users',
|
||||
],
|
||||
excludedRoutes: [
|
||||
"/yoast/**",
|
||||
"**/*/*/comments",
|
||||
"**/*/*/settings",
|
||||
"**/*/*/users/me",
|
||||
'/yoast/**',
|
||||
'**/*/*/comments',
|
||||
'**/*/*/settings',
|
||||
'**/*/*/users/me',
|
||||
],
|
||||
normalizer: neufNormalizer,
|
||||
},
|
||||
|
||||
+18
-13
@@ -184,16 +184,19 @@ exports.createPages = ({ actions, graphql }) => {
|
||||
|
||||
const eventTypeTemplate = path.resolve(`./src/templates/event-type.js`)
|
||||
|
||||
_.each(result.data.allWordpressWpEventTypes.edges, ({ node: event_type }) => {
|
||||
createPage({
|
||||
path: event_type.fields.link,
|
||||
component: eventTypeTemplate,
|
||||
context: {
|
||||
name: event_type.name,
|
||||
slug: event_type.slug,
|
||||
},
|
||||
})
|
||||
})
|
||||
_.each(
|
||||
result.data.allWordpressWpEventTypes.edges,
|
||||
({ node: event_type }) => {
|
||||
createPage({
|
||||
path: event_type.fields.link,
|
||||
component: eventTypeTemplate,
|
||||
context: {
|
||||
name: event_type.name,
|
||||
slug: event_type.slug,
|
||||
},
|
||||
})
|
||||
}
|
||||
)
|
||||
})
|
||||
.then(() => {
|
||||
return graphql(`
|
||||
@@ -312,9 +315,11 @@ exports.onCreateNode = ({ node, actions, getNode }) => {
|
||||
})
|
||||
}
|
||||
|
||||
if ((node.internal.type === 'wordpress__POST') ||
|
||||
(node.internal.type === 'wordpress__wp_events') ||
|
||||
(node.internal.type === 'wordpress__wp_event_types')) {
|
||||
if (
|
||||
node.internal.type === 'wordpress__POST' ||
|
||||
node.internal.type === 'wordpress__wp_events' ||
|
||||
node.internal.type === 'wordpress__wp_event_types'
|
||||
) {
|
||||
const link = new URL(node.link).pathname
|
||||
createNodeField({
|
||||
node,
|
||||
|
||||
+28
-25
@@ -3,38 +3,43 @@ import PropTypes from 'prop-types'
|
||||
import { Link, graphql } from 'gatsby'
|
||||
import Img from 'gatsby-image'
|
||||
|
||||
import moment from 'moment';
|
||||
import moment from 'moment'
|
||||
import 'moment/locale/nb'
|
||||
moment.locale('nb')
|
||||
|
||||
export default class EventList extends React.Component {
|
||||
render_event(event) {
|
||||
return (
|
||||
<Link
|
||||
to={event.fields.link}
|
||||
className="event"
|
||||
key={event.id}
|
||||
>
|
||||
<Link to={event.fields.link} className="event" key={event.id}>
|
||||
<div className="event-image">
|
||||
{event.featured_media && event.featured_media.localFile &&
|
||||
<Img fluid={event.featured_media.localFile.childImageSharp.fluid} />}
|
||||
{event.featured_media && event.featured_media.localFile && (
|
||||
<Img fluid={event.featured_media.localFile.childImageSharp.fluid} />
|
||||
)}
|
||||
</div>
|
||||
<header className="event-header">
|
||||
<h2 className="event-title">
|
||||
{event.title}
|
||||
</h2>
|
||||
<h2 className="event-title">{event.title}</h2>
|
||||
<div className="event-meta">
|
||||
<span className="event-start">{moment(event.start_time).format('HH:mm')}</span>
|
||||
<span className="event-date">
|
||||
<span className="event-date-weekday">{moment(event.start_time).format('dddd')} </span>
|
||||
<span className="event-date-day">{moment(event.start_time).format('D.')} </span>
|
||||
<span className="event-date-month">{moment(event.start_time).format('MMMM')} </span>
|
||||
{/* Only specify year if different. */}
|
||||
{!moment(event.start_time).isSame(new Date(), 'year') &&
|
||||
<span className="event-date-year">{moment(event.start_time).format('YYYY')} </span>
|
||||
}
|
||||
<span className="event-start">
|
||||
{moment(event.start_time).format('HH:mm')}
|
||||
</span>
|
||||
{event.event_types && event.event_types.length &&
|
||||
<span className="event-date">
|
||||
<span className="event-date-weekday">
|
||||
{moment(event.start_time).format('dddd')}{' '}
|
||||
</span>
|
||||
<span className="event-date-day">
|
||||
{moment(event.start_time).format('D.')}{' '}
|
||||
</span>
|
||||
<span className="event-date-month">
|
||||
{moment(event.start_time).format('MMMM')}{' '}
|
||||
</span>
|
||||
{/* Only specify year if different. */}
|
||||
{!moment(event.start_time).isSame(new Date(), 'year') && (
|
||||
<span className="event-date-year">
|
||||
{moment(event.start_time).format('YYYY')}{' '}
|
||||
</span>
|
||||
)}
|
||||
</span>
|
||||
{event.event_types && event.event_types.length && (
|
||||
<div className="event-types">
|
||||
<ul className="event-types-list">
|
||||
{event.event_types.map(type => (
|
||||
@@ -49,7 +54,7 @@ export default class EventList extends React.Component {
|
||||
))}
|
||||
</ul>
|
||||
</div>
|
||||
}
|
||||
)}
|
||||
</div>
|
||||
</header>
|
||||
</Link>
|
||||
@@ -63,9 +68,7 @@ export default class EventList extends React.Component {
|
||||
<section className="events">
|
||||
<h1 className="section-title">{title}</h1>
|
||||
<div className="event-list">
|
||||
{events.map(({ node: event }) => (
|
||||
this.render_event(event)
|
||||
))}
|
||||
{events.map(({ node: event }) => this.render_event(event))}
|
||||
</div>
|
||||
</section>
|
||||
)
|
||||
|
||||
@@ -3,8 +3,17 @@ import { Link, graphql } from 'gatsby'
|
||||
|
||||
const Footer = () => (
|
||||
<footer>
|
||||
<p>Studentene i Oslo har sitt naturlige tilholdssted på Det Norske Studentersamfund, i hyggelige lokaler på Chateau Neuf øverst på Majorstuen. Her er det åpent alle dager unntatt søndag, og enten man ønsker en tur i baren, på kafé, på debatt, på konsert, teater eller kino, har man muligheten på Det Norske Studentersamfund.</p>
|
||||
<p>Chateau Neuf – Det Norske Studentersamfund | Slemdalsveien 15, 0369 Oslo | Ansvarlig redaktør: Stein-Olav Moe Fause | <a href="#">Logg inn</a></p>
|
||||
<p>
|
||||
Studentene i Oslo har sitt naturlige tilholdssted på Det Norske
|
||||
Studentersamfund, i hyggelige lokaler på Chateau Neuf øverst på
|
||||
Majorstuen. Her er det åpent alle dager unntatt søndag, og enten man
|
||||
ønsker en tur i baren, på kafé, på debatt, på konsert, teater eller kino,
|
||||
har man muligheten på Det Norske Studentersamfund.
|
||||
</p>
|
||||
<p>
|
||||
Chateau Neuf – Det Norske Studentersamfund | Slemdalsveien 15, 0369 Oslo |
|
||||
Ansvarlig redaktør: Stein-Olav Moe Fause | <a href="#">Logg inn</a>
|
||||
</p>
|
||||
</footer>
|
||||
)
|
||||
|
||||
|
||||
@@ -11,17 +11,14 @@ export default class IndexPage extends React.Component {
|
||||
<h1 className="section-title">{title}</h1>
|
||||
<div className="post-list">
|
||||
{posts.map(({ node: post }) => (
|
||||
<Link
|
||||
to={post.fields.link}
|
||||
className="post"
|
||||
key={post.id}
|
||||
>
|
||||
<img className="post-image" src="https://studentersamfundet.no/wp-content/uploads/2018/10/Fjor%C3%A5rets-festival_Fotograf-Karin-Kaczykowski-i-Studentenes-Fotoklubb-1280x720.jpg" />
|
||||
<Link to={post.fields.link} className="post" key={post.id}>
|
||||
<img
|
||||
className="post-image"
|
||||
src="https://studentersamfundet.no/wp-content/uploads/2018/10/Fjor%C3%A5rets-festival_Fotograf-Karin-Kaczykowski-i-Studentenes-Fotoklubb-1280x720.jpg"
|
||||
/>
|
||||
<div className="post-text">
|
||||
<header className="post-header">
|
||||
<h2 className="post-title">
|
||||
{post.title}
|
||||
</h2>
|
||||
<h2 className="post-title">{post.title}</h2>
|
||||
{/*<div className="post-meta">{post.date}</div>*/}
|
||||
</header>
|
||||
<div className="post-body">
|
||||
|
||||
@@ -14,9 +14,12 @@ const Author = props => {
|
||||
|
||||
// The `authored_wordpress__POST` returns a simple array instead of an array
|
||||
// of edges / nodes. We therefore need to convert the array here.
|
||||
const posts = (totalCount === 0) ? [] : authored_wordpress__POST.map(post => ({
|
||||
node: post,
|
||||
}))
|
||||
const posts =
|
||||
totalCount === 0
|
||||
? []
|
||||
: authored_wordpress__POST.map(post => ({
|
||||
node: post,
|
||||
}))
|
||||
|
||||
return (
|
||||
<Layout>
|
||||
|
||||
@@ -30,7 +30,9 @@ export const pageQuery = graphql`
|
||||
title
|
||||
}
|
||||
}
|
||||
allWordpressPost(filter: { categories: { elemMatch: { slug: { eq: $slug } } } }) {
|
||||
allWordpressPost(
|
||||
filter: { categories: { elemMatch: { slug: { eq: $slug } } } }
|
||||
) {
|
||||
totalCount
|
||||
edges {
|
||||
node {
|
||||
|
||||
@@ -27,9 +27,7 @@ EventProgram.propTypes = {
|
||||
|
||||
export const pageQuery = graphql`
|
||||
query {
|
||||
allWordpressWpEvents(
|
||||
sort: { fields: date, order: DESC }
|
||||
) {
|
||||
allWordpressWpEvents(sort: { fields: date, order: DESC }) {
|
||||
edges {
|
||||
node {
|
||||
...EventListFields
|
||||
|
||||
@@ -34,7 +34,7 @@ export const pageQuery = graphql`
|
||||
}
|
||||
}
|
||||
allWordpressWpEvents(
|
||||
filter: { event_types: { elemMatch: { slug: { eq: $slug } } } },
|
||||
filter: { event_types: { elemMatch: { slug: { eq: $slug } } } }
|
||||
sort: { fields: date, order: DESC }
|
||||
) {
|
||||
totalCount
|
||||
|
||||
+35
-29
@@ -9,7 +9,7 @@ import moment from 'moment'
|
||||
import 'moment/locale/nb'
|
||||
moment.locale('nb')
|
||||
|
||||
const formatPrices = (regular, student) => {
|
||||
const formatPrices = (regular, student) => {
|
||||
let cc = ''
|
||||
if (regular && regular != 0) {
|
||||
cc += regular
|
||||
@@ -31,61 +31,67 @@ export const EventTemplate = ({
|
||||
ticketUrl,
|
||||
priceStudent,
|
||||
priceRegular,
|
||||
eventTypes
|
||||
eventTypes,
|
||||
}) => {
|
||||
return (
|
||||
<section className="event-page">
|
||||
<div className="event-hero">
|
||||
<div className="event-hero_text">
|
||||
<h1>
|
||||
{title}
|
||||
</h1>
|
||||
<h1>{title}</h1>
|
||||
<div className="event-meta">
|
||||
<div className="venue">
|
||||
i {venue}
|
||||
</div>
|
||||
<div className="venue">i {venue}</div>
|
||||
<div className="event-date">
|
||||
Dag:{' '}
|
||||
<span className="event-date-weekday">{moment(startTime).format('dddd')} </span>
|
||||
<span className="event-date-day">{moment(startTime).format('D.')} </span>
|
||||
<span className="event-date-month">{moment(startTime).format('MMMM')} </span>
|
||||
<span className="event-date-weekday">
|
||||
{moment(startTime).format('dddd')}{' '}
|
||||
</span>
|
||||
<span className="event-date-day">
|
||||
{moment(startTime).format('D.')}{' '}
|
||||
</span>
|
||||
<span className="event-date-month">
|
||||
{moment(startTime).format('MMMM')}{' '}
|
||||
</span>
|
||||
{/* Only specify year if different. */}
|
||||
{!moment(startTime).isSame(new Date(), 'year') &&
|
||||
<span className="event-date-year">{moment(startTime).format('YYYY')} </span>
|
||||
}
|
||||
{!moment(startTime).isSame(new Date(), 'year') && (
|
||||
<span className="event-date-year">
|
||||
{moment(startTime).format('YYYY')}{' '}
|
||||
</span>
|
||||
)}
|
||||
</div>
|
||||
<div className="event-time-start">
|
||||
Start: {moment(startTime).format('HH:mm')}
|
||||
Start: {moment(startTime).format('HH:mm')}
|
||||
</div>
|
||||
{/* TODO: make the API stop assuming event duration is 2 hours when unspecified? */}
|
||||
{endTime &&
|
||||
{endTime && (
|
||||
<div className="event-time-end">
|
||||
Slutt: {moment(endTime).format('HH:mm')}
|
||||
</div>
|
||||
}
|
||||
)}
|
||||
<div className="price">
|
||||
Pris: {formatPrices(priceRegular, priceStudent)}
|
||||
Pris: {formatPrices(priceRegular, priceStudent)}
|
||||
</div>
|
||||
{ticketUrl &&
|
||||
<a className="ticket-url" href={ticketUrl}>Kjøp billetter</a>
|
||||
}
|
||||
{facebookUrl &&
|
||||
<a className="facebook-url" href={facebookUrl}>Se Facebook-event</a>
|
||||
}
|
||||
{eventTypes && eventTypes.length &&
|
||||
{ticketUrl && (
|
||||
<a className="ticket-url" href={ticketUrl}>
|
||||
Kjøp billetter
|
||||
</a>
|
||||
)}
|
||||
{facebookUrl && (
|
||||
<a className="facebook-url" href={facebookUrl}>
|
||||
Se Facebook-event
|
||||
</a>
|
||||
)}
|
||||
{eventTypes && eventTypes.length && (
|
||||
<div>
|
||||
<h4>Konsept</h4>
|
||||
<ul className="event-types">
|
||||
{eventTypes.map(type => (
|
||||
<li key={`${type.slug}`}>
|
||||
<Link to={type.fields.link}>
|
||||
{type.name}
|
||||
</Link>
|
||||
<Link to={type.fields.link}>{type.name}</Link>
|
||||
</li>
|
||||
))}
|
||||
</ul>
|
||||
</div>
|
||||
}
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
<div className="event-hero_image">
|
||||
|
||||
+41
-34
@@ -16,49 +16,56 @@ export const BlogPostTemplate = ({
|
||||
featuredMedia,
|
||||
}) => {
|
||||
return (
|
||||
<section className={`post-page ${hasFeaturedMedia ? 'has-featured-media' : 'no-featured-media'}`}>
|
||||
<section
|
||||
className={`post-page ${
|
||||
hasFeaturedMedia ? 'has-featured-media' : 'no-featured-media'
|
||||
}`}
|
||||
>
|
||||
<div className="post-hero">
|
||||
<div className="post-hero_text">
|
||||
<h1>
|
||||
{title}
|
||||
</h1>
|
||||
<h1>{title}</h1>
|
||||
<div className="post-meta">
|
||||
<p>
|
||||
{date} av <Link to={`/author/${author.slug}`}>{author.name}</Link>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
{hasFeaturedMedia && <div className="post-hero_image">
|
||||
<Img fluid={featuredMedia.localFile.childImageSharp.fluid} />
|
||||
</div>}
|
||||
{hasFeaturedMedia && (
|
||||
<div className="post-hero_image">
|
||||
<Img fluid={featuredMedia.localFile.childImageSharp.fluid} />
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
<div className="post-content" dangerouslySetInnerHTML={{ __html: content }} />
|
||||
{categories && categories.length ? (
|
||||
<div>
|
||||
<h4>Categories</h4>
|
||||
<ul className="taglist">
|
||||
{categories.map(category => (
|
||||
<li key={`${category.slug}cat`}>
|
||||
<Link to={`/categories/${category.slug}/`}>
|
||||
{category.name}
|
||||
</Link>
|
||||
</li>
|
||||
))}
|
||||
</ul>
|
||||
</div>
|
||||
) : null}
|
||||
{tags && tags.length ? (
|
||||
<div>
|
||||
<h4>Tags</h4>
|
||||
<ul className="taglist">
|
||||
{tags.map(tag => (
|
||||
<li key={`${tag.slug}tag`}>
|
||||
<Link to={`/tags/${tag.slug}/`}>{tag.name}</Link>
|
||||
</li>
|
||||
))}
|
||||
</ul>
|
||||
</div>
|
||||
) : null}
|
||||
<div
|
||||
className="post-content"
|
||||
dangerouslySetInnerHTML={{ __html: content }}
|
||||
/>
|
||||
{categories && categories.length ? (
|
||||
<div>
|
||||
<h4>Categories</h4>
|
||||
<ul className="taglist">
|
||||
{categories.map(category => (
|
||||
<li key={`${category.slug}cat`}>
|
||||
<Link to={`/categories/${category.slug}/`}>
|
||||
{category.name}
|
||||
</Link>
|
||||
</li>
|
||||
))}
|
||||
</ul>
|
||||
</div>
|
||||
) : null}
|
||||
{tags && tags.length ? (
|
||||
<div>
|
||||
<h4>Tags</h4>
|
||||
<ul className="taglist">
|
||||
{tags.map(tag => (
|
||||
<li key={`${tag.slug}tag`}>
|
||||
<Link to={`/tags/${tag.slug}/`}>{tag.name}</Link>
|
||||
</li>
|
||||
))}
|
||||
</ul>
|
||||
</div>
|
||||
) : null}
|
||||
</section>
|
||||
)
|
||||
}
|
||||
|
||||
+6
-5
@@ -1,6 +1,6 @@
|
||||
const Entities = require('html-entities').AllHtmlEntities;
|
||||
const Entities = require('html-entities').AllHtmlEntities
|
||||
|
||||
const htmlEntities = new Entities();
|
||||
const htmlEntities = new Entities()
|
||||
|
||||
const neufNormalizer = ({ entities }) => {
|
||||
entities = decodeTitles(entities)
|
||||
@@ -9,7 +9,7 @@ const neufNormalizer = ({ entities }) => {
|
||||
}
|
||||
|
||||
exports.neufNormalizer = neufNormalizer
|
||||
|
||||
|
||||
const decodeTitles = entities => {
|
||||
return entities.map(e => {
|
||||
if (e.title) {
|
||||
@@ -20,12 +20,13 @@ const decodeTitles = entities => {
|
||||
}
|
||||
|
||||
const mapEventsToEventTypes = entities => {
|
||||
const eventTaxonomies = [`wordpress__wp_event_types`, ]
|
||||
const eventTaxonomies = [`wordpress__wp_event_types`]
|
||||
const eventTypes = entities.filter(e => eventTaxonomies.includes(e.__type))
|
||||
|
||||
return entities.map(e => {
|
||||
// Replace event types with links to their nodes.
|
||||
let eventHasType = e.event_types && Array.isArray(e.event_types) && e.event_types.length
|
||||
let eventHasType =
|
||||
e.event_types && Array.isArray(e.event_types) && e.event_types.length
|
||||
if (eventTypes.length && eventHasType) {
|
||||
e.event_types___NODE = e.event_types.map(
|
||||
t =>
|
||||
|
||||
Reference in new issue
Block a user