From 665598c6d4d16a0cb3ac8a9eecc3a24cc40ca225 Mon Sep 17 00:00:00 2001 From: Benaiah Mischenko Date: Wed, 6 Dec 2017 16:54:28 -0800 Subject: Move Values page into the CMS --- .../cms-preview-templates/components/jumbotron.js | 24 +++++++++++ src/js/cms-preview-templates/products.js | 22 +++-------- src/js/cms-preview-templates/values.js | 46 ++++++++++++++++++++++ src/js/cms.js | 2 + 4 files changed, 77 insertions(+), 17 deletions(-) create mode 100644 src/js/cms-preview-templates/components/jumbotron.js create mode 100644 src/js/cms-preview-templates/values.js (limited to 'src') diff --git a/src/js/cms-preview-templates/components/jumbotron.js b/src/js/cms-preview-templates/components/jumbotron.js new file mode 100644 index 0000000..cb14df9 --- /dev/null +++ b/src/js/cms-preview-templates/components/jumbotron.js @@ -0,0 +1,24 @@ +import React from "react"; + +export default class Jumbotron extends React.Component { + render() { + const {image, title} = this.props; + return
+
+
+
+
+

+ { title } +

+
+
+
+
+
+
+
; + } +} diff --git a/src/js/cms-preview-templates/products.js b/src/js/cms-preview-templates/products.js index 547ff33..4316c7d 100644 --- a/src/js/cms-preview-templates/products.js +++ b/src/js/cms-preview-templates/products.js @@ -1,9 +1,11 @@ import React from "react"; import format from "date-fns/format"; +import Jumbotron from "./components/jumbotron"; + export default class PostPreview extends React.Component { render() { - const {entry, getAsset, widgetFor} = this.props; + const {entry, getAsset} = this.props; let image = getAsset(entry.getIn(["data", "image"])); // Bit of a nasty hack to make relative paths work as expected as a background image here @@ -12,21 +14,7 @@ export default class PostPreview extends React.Component { } return
-
-
-
-
-

- { entry.getIn(["data", "title"]) } -

-
-
-
-
-
-
+
@@ -34,7 +22,7 @@ export default class PostPreview extends React.Component {

{entry.getIn(["data", "intro", "description"])}

- {(entry.getIn(["data","intro", "blurbs"]) || []).map((blurb, index) =>
+ {(entry.getIn(["data", "intro", "blurbs"]) || []).map((blurb, index) =>

{blurb.get("text")}

)} diff --git a/src/js/cms-preview-templates/values.js b/src/js/cms-preview-templates/values.js new file mode 100644 index 0000000..173d0c9 --- /dev/null +++ b/src/js/cms-preview-templates/values.js @@ -0,0 +1,46 @@ +import React from "react"; +import { List } from 'immutable'; + +import Jumbotron from "./components/jumbotron"; + +const MediaBlock = ({heading, text, imageUrl, reverse}) => { + const imageContainerClassName = reverse + ? "ph3-m w-50-m" + : "ph3-m w-50-m order-last-m"; + return
+
+ +
+
+

{heading}

+

{text}

+
+
; +}; + +export default class ValuesPreview extends React.Component { + render() { + const {entry, getAsset} = this.props; + + let image = getAsset(entry.getIn(["data", "image"])); + + // Bit of a nasty hack to make relative paths work as expected as a background image here + if (image && !image.fileObj) { + image = window.parent.location.protocol + "//" + window.parent.location.host + image; + } + + const entryValues = entry.getIn(["data", "values"]); + const values = entryValues ? entryValues.toJS() : []; + + return
+ +
+
+ {values.map(({text, heading, imageUrl}, i) => + + )} +
+
+
; + } +} diff --git a/src/js/cms.js b/src/js/cms.js index 8502ed0..5bc6e65 100644 --- a/src/js/cms.js +++ b/src/js/cms.js @@ -3,6 +3,7 @@ import CMS from "netlify-cms"; import PostPreview from "./cms-preview-templates/post"; import ProductsPreview from "./cms-preview-templates/products"; +import ValuesPreview from "./cms-preview-templates/values"; // Example of creating a custom color widget @@ -20,4 +21,5 @@ class ColorControl extends React.Component { CMS.registerPreviewStyle("/css/main.css"); CMS.registerPreviewTemplate("post", PostPreview); CMS.registerPreviewTemplate("products", ProductsPreview); +CMS.registerPreviewTemplate("values", ValuesPreview); CMS.registerWidget("color", ColorControl); -- cgit v1.3