Merge pull request #18 from Bouncey/feat/transitionIntros

Feat Transition Intros
This commit is contained in:
Stuart Taylor
2018-04-17 15:24:17 +01:00
committed by Mrugesh Mohapatra
parent fa68757553
commit 4d9f59f318
12 changed files with 243 additions and 85 deletions

View File

@ -2,30 +2,8 @@ const path = require('path');
const CopyWebpackPlugin = require('copy-webpack-plugin');
const { dasherize } = require('./utils');
const { viewTypes } = require('./utils/challengeTypes');
const { blockNameify } = require('./utils/blockNameify');
const backend = path.resolve(
__dirname,
'./src/templates/Challenges/backend/Show.js'
);
const classic = path.resolve(
__dirname,
'./src/templates/Challenges/classic/Show.js'
);
const intro = path.resolve(__dirname, './src/templates/Introduction/Intro.js');
const project = path.resolve(
__dirname,
'./src/templates/Challenges/project/Show.js'
);
const views = {
backend,
classic,
modern: classic,
project
// quiz: Quiz
};
const { createChallengePages, createIntroPages } = require('./utils/gatsby');
exports.onCreateNode = function onCreateNode({ node, boundActionCreators }) {
const { createNodeField } = boundActionCreators;
@ -60,17 +38,22 @@ exports.createPages = ({ graphql, boundActionCreators }) => {
allChallengeNode(sort: { fields: [superOrder, order, suborder] }) {
edges {
node {
block
challengeType
fields {
slug
}
id
order
required {
link
raw
src
}
suborder
superBlock
superOrder
template
fields {
slug
}
}
}
}
@ -97,46 +80,14 @@ exports.createPages = ({ graphql, boundActionCreators }) => {
}
// Create challenge pages.
result.data.allChallengeNode.edges.forEach((edge, index, thisArray) => {
const {
fields: { slug },
required = [],
template,
challengeType,
id
} = edge.node;
if (challengeType === 7) {
return;
}
const next = thisArray[index + 1];
const nextChallengePath = next ? next.node.fields.slug : '/';
createPage({
path: slug,
component: views[viewTypes[challengeType]],
context: {
challengeMeta: {
challengeType,
template,
required,
nextChallengePath,
id
},
slug
}
});
});
result.data.allChallengeNode.edges.forEach(
createChallengePages(createPage)
);
// Create intro pages
result.data.allMarkdownRemark.edges.forEach(edge => {
const { fields: { slug } } = edge.node;
createPage({
path: slug,
component: intro,
context: {
slug
}
});
});
result.data.allMarkdownRemark.edges.forEach(
createIntroPages(createPage)
);
return;
})