add cms preview templates
Shawn Erquhart
committed Aug 30, 2018
commit 5efd2f4faec9cd71e16d0577a1a1f65b3d39fb41
Showing 3
changed files with
102 additions
and 1 deletions
source/admin/config.yml
+0
-1
| @@ | @@ -1,6 +1,5 @@ |
| backend: | |
| name: git-gateway | |
| - | branch: master |
| media_folder: source/images/uploads | |
| public_folder: /images/uploads | |
source/admin/index.html
+7
-0
| @@ | @@ -9,5 +9,12 @@ |
| </head> | |
| <body> | |
| <script script src="https://unpkg.com/netlify-cms@^2.0.6/dist/netlify-cms.js" type="text/javascript"></script> | |
| + | <script src="https://unpkg.com/react@16/umd/react.development.js"></script> |
| + | <script src="https://unpkg.com/dayjs@^1.7.5/dayjs.min.js"></script> |
| + | <script src="https://unpkg.com/@babel/standalone/babel.min.js"></script> |
| + | <script src="previews.js" type="text/babel"></script> |
| + | <script> |
| + | CMS.registerPreviewStyle('/stylesheets/all.css'); |
| + | </script> |
| </body> | |
| </html> | |
source/admin/previews.js
+95
-0
| @@ | @@ -0,0 +1,95 @@ |
| + | const BlogPreview = ({ entry, widgetFor }) => { |
| + | const data = entry.get('data').toJS() |
| + | const date = dayjs(data.date).format('DD-MM-YY') |
| + | return ( |
| + | <div className="news-detail"> |
| + | <div className="container"> |
| + | <div className="row"> |
| + | <div className="title"> |
| + | <span className="date">{date}</span> |
| + | <h1>{data.title}</h1> |
| + | </div> |
| + | </div> |
| + | <div className="row"> |
| + | <div className="image"> |
| + | <img src={data.image}/> |
| + | </div> |
| + | </div> |
| + | <div className="row content">{widgetFor('body')}</div> |
| + | </div> |
| + | </div> |
| + | ) |
| + | } |
| + | |
| + | const ProductPreview = ({ entry, widgetFor }) => { |
| + | const data = entry.get('data').toJS() |
| + | return ( |
| + | <div className="product-detail"> |
| + | <div className="image" style={{ backgroundImage: `url('${data.image}')` }}></div> |
| + | <div className="content"> |
| + | <div className="meta"> |
| + | <h1>{data.title}</h1> |
| + | <div className="weight"> |
| + | <span>{`${data.weight}kg`}</span> |
| + | </div> |
| + | <div className="price"> |
| + | <span>{`€${data.price}`}</span> |
| + | </div> |
| + | </div> |
| + | <div className="body">{widgetFor('body')}</div> |
| + | </div> |
| + | </div> |
| + | ) |
| + | } |
| + | |
| + | const HomePreview = ({ entry, widgetFor }) => { |
| + | const data = entry.get('data').toJS() |
| + | return ( |
| + | <div> |
| + | <section className="hero" style={{ backgroundImage: `url('${data.hero.image}')` }}> |
| + | <div className="caption"> |
| + | <div className="row"> |
| + | <h1>{data.hero.title}</h1> |
| + | </div> |
| + | </div> |
| + | </section> |
| + | <section className="homepage-story"> |
| + | <div className="container"> |
| + | <div className="row"> |
| + | <div className="story-content">{widgetFor('story')}</div> |
| + | </div> |
| + | </div> |
| + | </section> |
| + | </div> |
| + | ) |
| + | } |
| + | |
| + | const NavigationPreview = ({ entry }) => { |
| + | const data = entry.get('data').toJS() |
| + | return ( |
| + | <header className="header-primary"> |
| + | <div className="logo"> |
| + | <a href="/"> |
| + | <img src="/images/logo.svg" alt="Kaldi"/> |
| + | </a> |
| + | </div> |
| + | <a className="nav-button"> |
| + | <img src="/images/nav-open.svg" className="open"/> |
| + | </a> |
| + | <nav className="navigation" style={{ paddingRight: '40px' }}> |
| + | <ul> |
| + | {!data.nav_items ? null : data.nav_items.map((item, idx) => ( |
| + | <li key={idx}> |
| + | <a href={item.path}>{item.label}</a> |
| + | </li> |
| + | ))} |
| + | </ul> |
| + | </nav> |
| + | </header> |
| + | ) |
| + | } |
| + | |
| + | CMS.registerPreviewTemplate('blog', BlogPreview) |
| + | CMS.registerPreviewTemplate('product', ProductPreview) |
| + | CMS.registerPreviewTemplate('home', HomePreview) |
| + | CMS.registerPreviewTemplate('navigation', NavigationPreview) |