Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/eddiewebb/hugo-resume.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEddie Webb <ollitech@gmail.com>2020-02-06 18:02:26 +0300
committerGitHub <noreply@github.com>2020-02-06 18:02:26 +0300
commitddac4d5c721bc10799a0ac6664a9ac4ba268acd4 (patch)
tree6282465a19346011633c561e3ea68678213910ff
parent65d23b4e4f0c17b78866bbce997c3c9afd0cb5df (diff)
Add CMS support (#47)
* cms:blog and settings * working out kinks in config paths * Update Settings “general” * full config * fix tests * Update Settings “general” * support creations * Update Projects “_index” * Update Projects “_index” * Update Publications “_index” * Update Contributions “_index” * Create Contributions “cvxc” * see if cms will render toml instead. * Update deploy-triggers.md * Delete cvxc.md * added contributions and publications, corrected sample content. * Upload “/exampleSite/static/img/schema-org.png” * Update Contributions “schema-org” * Update Contributions “shields-docker” * move CMS to exampleSite, not theme * update cnfig guide * add cms info to readme * add cms example image to readme * update theme info * fix image path in readme
-rw-r--r--.circleci/config.yml1
-rw-r--r--README.md93
-rw-r--r--exampleSite/config.toml75
-rw-r--r--exampleSite/content/projects/_index.md7
-rw-r--r--exampleSite/content/projects/contributions/_index.md21
-rw-r--r--exampleSite/content/projects/contributions/deploy-triggers.md23
-rw-r--r--exampleSite/content/projects/contributions/schema-org.md28
-rw-r--r--exampleSite/content/projects/contributions/shields-docker.md31
-rw-r--r--exampleSite/content/projects/creations/_index.md19
-rw-r--r--exampleSite/content/publications/_index.md16
-rw-r--r--exampleSite/static/admin/README.md13
-rw-r--r--exampleSite/static/admin/cms.js8
-rw-r--r--exampleSite/static/admin/config.yml137
-rw-r--r--exampleSite/static/admin/index.html13
-rw-r--r--exampleSite/static/admin/templates/about.js97
-rw-r--r--exampleSite/static/img/schema-org.pngbin0 -> 56831 bytes
-rw-r--r--images/cms.pngbin0 -> 447603 bytes
-rw-r--r--theme.toml8
18 files changed, 442 insertions, 148 deletions
diff --git a/.circleci/config.yml b/.circleci/config.yml
index 101cc1a..2d5d9eb 100644
--- a/.circleci/config.yml
+++ b/.circleci/config.yml
@@ -44,7 +44,6 @@ jobs:
curl -s -o /tmp/index http://localhost:1313
#just some keywords that confirm content was read into template..
grep 'Rochester' /tmp/index
- grep 'fab fa-stack-overflow' /tmp/index
grep 'Eddie Webb' /tmp/index
grep 'BOSH (Bosh Outer SHell)' /tmp/index
diff --git a/README.md b/README.md
index db277c6..4015891 100644
--- a/README.md
+++ b/README.md
@@ -3,22 +3,25 @@
Created from [Start Bootstrap - Resume](https://startbootstrap.com/template-overviews/resume/).
-This is basically a single-page website with auto-scrolling based on left-hand nav. Dedicated project/publications pages allow more detail. Includes a client-side search powered by fuse.js at '/search' but currently theme does not link to that anywhere.
+This is basically a single-page website with auto-scrolling based on left-hand nav. Dedicated project/publications pages allow more detail. Includes a client-side search powered by fuse.js at '/search' but currently theme does not link to that anywhere. Includes an `/admin` endpoint that can allow authorized users to use a WYSIWYG editor and commit files back to markdown, but with a Wordpress/CMS like experience.
-<!-- TOC depthFrom:1 depthTo:6 withLinks:1 updateOnSave:1 orderedList:0 -->
+<!-- MarkdownTOC autolink="true" -->
-- [hugo Resume](#hugo-resume)
- - [Examples](#examples)
- - [Setup & Use](#setup-use)
- - [Summary](#summary)
- - [Data files](#data-files)
- - [Projects](#projects)
- - [Publications](#publications)
- - [Template params](#template-params)
- - [Credits](#credits)
- - [Start Bootstrap Resume](#start-bootstrap-resume)
+- [Examples](#examples)
+- [Setup & Use](#setup--use)
+ - [Summary](#summary)
+ - [Data files](#data-files)
+ - [Projects](#projects)
+ - [Publications](#publications)
+ - [Blog / Posts](#blog--posts)
+ - [Template params](#template-params)
+- [CMS Editor with Netlify CMS](#cms-editor-with-netlify-cms)
+- [Credits](#credits)
+ - [Contributions](#contributions)
+ - [Start Bootstrap Resume](#start-bootstrap-resume)
+
+<!-- /MarkdownTOC -->
-<!-- /TOC -->
## Examples
@@ -64,61 +67,15 @@ Similar to posts, create them under `blog`. Include any thoughts, musiings, etc.
### Template params
-All personal information outside the above details is captured by params in [`config.toml`](https://github.com/eddiewebb/hugo-resume/blob/master/exampleSite/config.toml)
-
-```
-[params]
- firstName = "Eddie"
- lastName = "Webb"
- address = "Rollinsford, NH"
- phone = "1-555-555-1234"
- contactNote = "Dev Tools Engineer" #used in QR code only
- profileImage = "img/me.png"
- email = "email@domain.com"
- description = "Software Platform Engineer with experience leveraging agile, DevOps, and CI/CD to manage large scale distributed platforms both on prem and in public cloud."
- favicon = "images/favicon.ico"
-
- # what sections to display. Setting to false disables navigation and section.
- showSkills = true
- showProjects = true
- showOpenSource = true
- showPublications = true
- showExperience = true
- showEducation = true
- showQr = true
-
- # do you want to show git hash on page footer and link to repo? Add commit URl for repo here.
- gitCommitPrefix = "https://github.com/YOURNAME/REPONAME/commit/"
-
-
-[[params.handles]]
- name = "LinkedIn"
- link = "https://www.linkedin.com/in/edwardwebb/"
-
-[[params.handles]]
- name = "GitHub"
- link = "https://github.com/eddiewebb/"
-
-[[params.handles]]
- name = "Bitbucket"
- link = "https://bitbucket.org/eddiewebb/"
-
-[[params.handles]]
- name = "Stack Overflow"
- link = "https://stackoverflow.com/users/story/82880"
- icon = "stack-overflow" #optional icon attribute used for Font Awesome icons, otherwise the name is lowercased.
-
-[[params.handles]]
- name = "Keybase"
- link = "https://keybase.io/edwardawebb"
- icon = "key" #optional icon attribute used for Font Awesome icons, otherwise the name is lowercased.
-
-[params.google.analytics]
- trackerID = "XX-123446-01"
-
-[outputs] #only required for search
- home = ["HTML", "JSON"]
-```
+All personal information outside the above details is captured by params in [`config.toml`](https://github.com/eddiewebb/hugo-resume/blob/master/exampleSite/config.toml), or can be edited in the "Settings" collection if using CMS.
+
+## CMS Editor with Netlify CMS
+**Does not require deployment to Netlify!**
+
+[Netlify CMS](https://www.netlifycms.org/) is an open source project that enables CMS like experience for static site generation tools like Hugo. This theme includes a fully working integration and guide in [exampleSite/static/admin](https://github.com/eddiewebb/hugo-resume/blob/master/exampleSite/static/admin)
+
+![CMS integration](/images/cms.png)
+
## Credits
diff --git a/exampleSite/config.toml b/exampleSite/config.toml
index b506925..a4e98b2 100644
--- a/exampleSite/config.toml
+++ b/exampleSite/config.toml
@@ -1,50 +1,55 @@
-baseURL = "https://example.com/"
-languageCode = "en-us"
title = "Eddie Webb"
+baseURL = "https://example.com/"
theme = "hugo-resume"
+languageCode = "en-us"
+PygmentsCodeFences = true
+PygmentsCodeFencesGuessSyntax = true
+PygmentsStyle = "monokai"
+enableGitInfo = false
[params]
- firstName = "Eddie"
- lastName = "Webb"
- address = "Rollinsford, NH"
- phone = "1-555-555-1234"
- contactNote = "Dev Tools Engineer"
- profileImage = "img/TechChat.png"
- email = "email@domain.com"
- description = "Software Platform Engineer with experience leveraging agile, DevOps, and CI/CD to manage large scale distributed platforms both on prem and in public cloud."
- favicon = "/favicon.ico"
- # what sections
- showSkills = true
- showProjects = true
- showOpenSource = true
- showPublications = true
- showExperience = true
- showEducation = true
-
- showQr = true
+address = "Rollinsford, NH"
+email = "email@domain.com"
+favicon = "/favicon.ico"
+firstName = "Eddie"
+lastName = "Webb"
+phone = "1-555-555-1234"
+profileImage = "img/TechChat.png"
+showEducation = true
+showExperience = true
+showOpenSource = true
+showProjects = true
+showPublications = true
+showQr = true
+showSkills = true
+
+[params.google]
-[[params.handles]]
- name = "LinkedIn"
- link = "https://www.linkedin.com/in/edwardwebb/"
+[params.google.analytics]
+trackerID = "XX-123446-01"
+[[params.handles]]
+link = "https://www.linkedin.com/in/edwardwebb/"
+name = "LinkedIn"
[[params.handles]]
- name = "GitHub"
- link = "https://github.com/eddiewebb/"
+link = "https://github.com/eddiewebb/"
+name = "GitHub"
[[params.handles]]
- name = "Bitbucket"
- link = "https://bitbucket.org/eddiewebb/"
+link = "https://bitbucket.org/eddiewebb/"
+name = "Bitbucket"
[[params.handles]]
- name = "Stack Overflow"
- link = "https://stackoverflow.com/users/story/82880"
- icon = "stack-overflow"
+link = "https://stackoverflow.com/users/story/82880"
+name = "Stack Overflow"
[[params.handles]]
- name = "Keybase"
- link = "https://keybase.io/edwardawebb"
- icon = "keybase"
+link = "https://keybase.io/edwardawebb"
+name = "Keybase"
-[params.google.analytics]
- trackerID = "XX-123446-01"
+[outputs]
+home = ["HTML", "JSON"]
+
+[taxonomies]
+tag = "tags" \ No newline at end of file
diff --git a/exampleSite/content/projects/_index.md b/exampleSite/content/projects/_index.md
index 9f18b31..c240a82 100644
--- a/exampleSite/content/projects/_index.md
+++ b/exampleSite/content/projects/_index.md
@@ -3,4 +3,11 @@ title: "Projects"
sitemap:
priority : 0.9
---
+<!--
+
+This page represents the landing page for "projects" section. It is also shown under the homepage header for "projects". It should be therefore relatively short and sweet.
+
+IN the dfault theme, "projects" is divided among "Creations" you authored and "contributions" made to others projects.
+
+-->
<p>This section contains projects <a href="/projects/creations">created</a> and <a href="/projects/contributions">contributed</a> to by Eddie. Everything listed is an open source effort, the distinction is only my role as owner or contributor.</p>
diff --git a/exampleSite/content/projects/contributions/_index.md b/exampleSite/content/projects/contributions/_index.md
index b1fbbc1..c319b5d 100644
--- a/exampleSite/content/projects/contributions/_index.md
+++ b/exampleSite/content/projects/contributions/_index.md
@@ -1,7 +1,22 @@
---
-title: "Open Source Contributions"
-sitemap:
- priority : 0.5
+title: Open Source Contributions
+date: 2020-01-07T16:49:15.046Z
+link: NA
+image: /img/marketplace-summary.png
+description: NA
+tags:
+ - ''
weight: 20
+sitemap:
+ priority: 0.5
+ weight: 0.5
---
+<!--
+
+This page represents the landing page for "contributions" section. It is also shown under the homepage header for "contributions". It should be therefore relatively short and sweet.
+
+-->
+
+
+
<p>A collection of efforts to which I contributed, but did not create. Contributing back to Open Source projects is a strong passion of mine, and requires a considerate approach to learn norms, standards and approach for each community for a successful merge!</p>
diff --git a/exampleSite/content/projects/contributions/deploy-triggers.md b/exampleSite/content/projects/contributions/deploy-triggers.md
index 4b5d4f9..65fd8c6 100644
--- a/exampleSite/content/projects/contributions/deploy-triggers.md
+++ b/exampleSite/content/projects/contributions/deploy-triggers.md
@@ -1,13 +1,14 @@
-{
- "title":"Atlassian Deployment Triggers",
- "link":"https://bitbucket.org/atlassianlabs/bamboo-after-deployment-trigger/pull-requests/2/fixes-issue-2-eliminate/diff",
- "image":"/img/deploysonly.gif",
- "description":"Uses Async call to lucene index for super fast autocompletion to address performance issue loading config.",
- "featured":true,
- "tags":["Java","jQuery","REST APIs","Bamboo","JSON"],
- "fact":"Reduce page load time from minutes to instantaneous.",
- "weight":"100",
- "sitemap": {"priority" : "0.8"}
-}
+---
+title: "Atlassian Deployment Triggers"
+link: "https://bitbucket.org/atlassianlabs/bamboo-after-deployment-trigger/pull-requests/2/fixes-issue-2-eliminate/diff"
+image: "/img/deploysonly.gif"
+description: "Uses Async call to lucene index for super fast autocompletion to address performance issue loading config."
+featured: true
+tags: ["Java","jQuery","REST APIs","Bamboo","JSON"]
+fact: "Reduce page load time from minutes to instantaneous."
+weight: 100
+sitemap:
+ priority : 0.8
+---
Addressed pretty significant page load performance issue founde in larger deployments. Eliminates uses of intensive backend query, replacing it with an asynchronous API call against a lucene index. This change reduces page load from from 2+ minutes to nearly instant, with an incredibly responsive UI.
diff --git a/exampleSite/content/projects/contributions/schema-org.md b/exampleSite/content/projects/contributions/schema-org.md
index adc16a7..62a6e32 100644
--- a/exampleSite/content/projects/contributions/schema-org.md
+++ b/exampleSite/content/projects/contributions/schema-org.md
@@ -1,12 +1,20 @@
-{
- "title":"Schema.org Structured Data documentation fixes",
- "link":"https://github.com/schemaorg/schemaorg/pull/1120",
- "image":"",
- "description":"Not all pull requests are glorious code, documentation is really important too! This commit fixed some invalid JSON found in some example specs.",
- "tags":["JSON"],
- "fact":"Schema.org provides a common specification for Structured Data on the internet.",
- "weight":"999",
- "sitemap": {"priority" : "0.8"}
-}
+---
+title: Schema.org Structured Data documentation fixes
+date: 2020-01-07T17:08:21.433Z
+link: 'https://github.com/schemaorg/schemaorg/pull/1120'
+image: /img/schema-org.png
+description: >-
+ Not all pull requests are glorious code, documentation is really important
+ too! This commit fixed some invalid JSON found in some example specs.
+tags:
+ - JSON
+fact: >-
+ Schema.org provides a common specification for Structured Data on the
+ internet.
+weight: 999
+sitemap:
+ priority: 0.8
+ weight: 0.1
+---
While adding *Structured Data* to a client's website I found some example JSON that was invalid. Simple contribution to cleanup the user documentation providing syntactically valid JSON documents.
diff --git a/exampleSite/content/projects/contributions/shields-docker.md b/exampleSite/content/projects/contributions/shields-docker.md
index 3481e56..b3c5287 100644
--- a/exampleSite/content/projects/contributions/shields-docker.md
+++ b/exampleSite/content/projects/contributions/shields-docker.md
@@ -1,13 +1,22 @@
-{
- "title":"Added Docker Build Status Badge to shields.io",
- "link":"https://github.com/badges/shields/pull/856",
- "image":"https://img.shields.io/docker/build/eddiewebb/bitbucket-pipelines-marketplace.svg?style=plastic",
- "description":"Added a shield for Docker Hub builds indicating state of last build",
- "tags":["Docker","Rest APIs","JavaScript","node.js","JSON"],
- "fact":"",
- "featured":true,
- "weight":"500",
- "sitemap": {"priority" : "0.8"}
-}
+---
+title: Added Docker Build Status Badge to shields.io
+date: 2020-01-07T17:09:26.037Z
+featured: true
+link: 'https://github.com/badges/shields/pull/856'
+image: >-
+ https://img.shields.io/docker/build/eddiewebb/bitbucket-pipelines-marketplace.svg?style=plastic
+description: Added a shield for Docker Hub builds indicating state of last build
+tags:
+ - Docker
+ - Rest APIs
+ - JavaScript
+ - node.js
+ - JSON
+fact: ''
+weight: 500
+sitemap:
+ priority: 0.8
+ weight: 0.4
+---
Shields.io is a massive library of badges that can be inserted into project README's or websites displaying various statuses (code coverage, health, version, etc).  Support for docker was missing the current build health, and was a pretty trivial addition.
diff --git a/exampleSite/content/projects/creations/_index.md b/exampleSite/content/projects/creations/_index.md
index 839c5d9..9eedfbc 100644
--- a/exampleSite/content/projects/creations/_index.md
+++ b/exampleSite/content/projects/creations/_index.md
@@ -1,7 +1,20 @@
---
-title: "Creations"
-sitemap:
- priority : 0.5
+title: Creations
+date: 2020-01-07T15:00:28.528Z
+link: Not applicable
+image: /img/marketplace-summary.png
+description: Not applicable
weight: 10
+sitemap:
+ priority: 0.5
+ weight: 0.8
---
+<!--
+
+This page represents the landing page for "creations" section. It is also shown under the homepage header for "creations". It should be therefore relatively short and sweet.
+
+\-->
+
+
+
<p>A collection of projects authored by Eddie, and likely shared out with the community as an open source project.</p>
diff --git a/exampleSite/content/publications/_index.md b/exampleSite/content/publications/_index.md
index 515c26a..1869d96 100644
--- a/exampleSite/content/publications/_index.md
+++ b/exampleSite/content/publications/_index.md
@@ -1,6 +1,18 @@
---
-title: "Publications"
+title: Publications
+date: 2020-01-07T16:47:30.077Z
+link: NA
+image: /img/organicdevops.png
+description: NA
+weight: 10
sitemap:
- priority : 0.6
+ priority: 0.6
+ weight: 0.5
---
+<!--
+
+This page represents the landing page for "publications" section. It is also shown under the homepage header for "publications". It should be therefore relatively short and sweet.
+
+\-->
+
A collection of articles, presentations or talks, most likely on Culture and DevOps, because let's admit it, they are one in the same ;)
diff --git a/exampleSite/static/admin/README.md b/exampleSite/static/admin/README.md
new file mode 100644
index 0000000..b0097dc
--- /dev/null
+++ b/exampleSite/static/admin/README.md
@@ -0,0 +1,13 @@
+# Netlify CMS Support
+
+This folder exposes an `/admin` page in your website that allows a CMS editor experience.
+
+All changes are pushed to the GitHub repository (right to master, or via PR is configurable)
+
+## Using on your site
+
+1) Copy the full admin folder (this folder) from exampleSite within theme to the 'static' folder of you hugo site.
+`cp -a PROJECT_DIRECTORY/themes/hugo-resume/admin PROJECT_DIRECTORY/static`
+2) Edit `config.yml` (which includes hints) to reflect any changes you made to content structure, and also
+ - Github Repository Path
+ - Paths to images and content folders \ No newline at end of file
diff --git a/exampleSite/static/admin/cms.js b/exampleSite/static/admin/cms.js
new file mode 100644
index 0000000..d125425
--- /dev/null
+++ b/exampleSite/static/admin/cms.js
@@ -0,0 +1,8 @@
+
+import AboutPreview from "./templates/about.js";
+
+CMS.registerPreviewStyle("/css/resume.css");
+CMS.registerPreviewStyle("/css/tweaks.css");
+
+CMS.registerPreviewTemplate("about", AboutPreview);
+CMS.init();
diff --git a/exampleSite/static/admin/config.yml b/exampleSite/static/admin/config.yml
new file mode 100644
index 0000000..2ce56c7
--- /dev/null
+++ b/exampleSite/static/admin/config.yml
@@ -0,0 +1,137 @@
+#
+#. This config file adds support for Netlify CMS, exposed at /admin on the running site.
+# In order to use this on your site,
+#. 1) replace instances of "exampleSite/......" with the appropriate paths, relative from repository root.
+#. 2) replace repo path in `backend` settings, and set branch to master.
+# 3) Optionally enable the [editor workflow](https://www.netlifycms.org/docs/configuration-options/#publish-mode) which uses PRs for content changes
+# 4) Optionally enable [open authoring](https://www.netlifycms.org/docs/open-authoring/) for community sites, which requires #3
+#
+#
+
+
+
+backend:
+ name: github
+ repo: eddiewebb/hugo-resume
+ branch: cms
+
+
+media_folder: "exampleSite/static/img" # Folder where user uploaded files should go
+public_folder: "img"
+
+collections: # A list of collections the CMS should be able to edit
+ - name: "Blog" # Used in routes, ie.: /admin/collections/:slug/edit
+ label: "Blog" # Used in the UI, ie.: "New Post"
+ folder: "exampleSite/content/blog" # The path to the folder where the documents are stored
+ create: true # Allow users to create new documents in this collection
+ fields: # The fields each document in this collection have
+ - {label: "Title", name: "title", widget: "string"}
+ - {label: "Publish Date", name: "date", widget: "datetime"}
+ - {label: "Tags", name: "tags", widget: "list", required: false}
+ - {label: "Body", name: "body", widget: "markdown"}
+
+ - name: "Projects" # Used in routes, ie.: /admin/collections/:slug/edit
+ label: "Projects" # Used in the UI, ie.: "New Post"
+ folder: "exampleSite/content/projects/creations" # The path to the folder where the documents are stored
+ create: true # Allow users to create new documents in this collection
+ fields: # The fields each document in this collection have
+ - {label: "Title", name: "title", widget: "string"}
+ - {label: "Publish Date", name: "date", widget: "datetime"}
+ - {label: "featured", name: "featured", widget: "boolean", required: false}
+ - {label: "link to project repo or site", name: "link", widget: "string"}
+ - {label: "Project Image", name: image, widget: 'image' }
+ - {label: "Brief description", name: "description", widget: "string"}
+ - {label: "Tags", name: "tags", widget: "list", required: false}
+ - {label: "Fun Fact or Stat", name: "fact", widget: "string", default: "used by 20% of Fortune 500 companies!", required: false}
+ - {label: "weight (lower get more visibility)", name: "weight", widget: "number", valueType: float, step: 10, min: 0, max: 1000}
+ - {label: "Sitemap", name: "sitemap", widget: "object", field: {label: weight, name: weight, widget: "number", valueType: float, step: 0.1, min: 0.0, max: 1.0}}
+ - {label: "Body", name: "body", widget: "markdown"}
+
+ - name: "Contributions" # Used in routes, ie.: /admin/collections/:slug/edit
+ label: "Contributions" # Used in the UI, ie.: "New Post"
+ folder: "exampleSite/content/projects/contributions" # The path to the folder where the documents are stored
+ create: true # Allow users to create new documents in this collection
+ fields: # The fields each document in this collection have
+ - {label: "Title", name: "title", widget: "string"}
+ - {label: "Publish Date", name: "date", widget: "datetime"}
+ - {label: "featured", name: "featured", widget: "boolean", required: false}
+ - {label: "link to project repo or site", name: "link", widget: "string"}
+ - {label: "Project Image", name: image, widget: 'image' }
+ - {label: "Brief description", name: "description", widget: "string"}
+ - {label: "Tags", name: "tags", widget: "list", required: false}
+ - {label: "Fun Fact or Stat", name: "fact", widget: "string", default: "used by 20% of Fortune 500 companies!", required: false}
+ - {label: "weight (lower get more visibility)", name: "weight", widget: "number", valueType: float, step: 10, min: 0, max: 1000}
+ - {label: "Sitemap", name: "sitemap", widget: "object", field: {label: weight, name: weight, widget: "number", valueType: float, step: 0.1, min: 0.0, max: 1.0}}
+ - {label: "Body", name: "body", widget: "markdown"}
+
+ - name: "Publications" # Used in routes, ie.: /admin/collections/:slug/edit
+ label: "Publications" # Used in the UI, ie.: "New Post"
+ folder: "exampleSite/content/publications" # The path to the folder where the documents are stored
+ create: true # Allow users to create new documents in this collection
+ fields: # The fields each document in this collection have
+ - {label: "Title", name: "title", widget: "string"}
+ - {label: "Publish Date", name: "date", widget: "datetime"}
+ - {label: "featured", name: "featured", widget: "boolean", required: false}
+ - {label: "link to project repo or site", name: "link", widget: "string"}
+ - {label: "Project Image", name: image, widget: 'image' }
+ - {label: "Brief description", name: "description", widget: "string"}
+ - {label: "Tags", name: "tags", widget: "list", required: false}
+ - {label: "Fun Fact or Stat", name: "fact", widget: "string", default: "used by 20% of Fortune 500 companies!", required: false}
+ - {label: "weight (lower get more visibility)", name: "weight", widget: "number", valueType: float, step: 10, min: 0, max: 1000}
+ - {label: "Sitemap", name: "sitemap", widget: "object", field: {label: weight, name: weight, widget: "number", valueType: float, step: 0.1, min: 0.0, max: 1.0}}
+ - {label: "Body", name: "body", widget: "markdown"}
+
+ - name: 'settings'
+ label: 'Settings'
+ delete: false # Prevent users from deleting documents in this collection
+ editor:
+ preview: false
+ files:
+ - name: 'general'
+ label: 'Site Settings'
+ file: 'exampleSite/config.toml'
+ extension: toml
+ description: 'General Site Settings'
+ fields:
+ - { label: 'Global title', name: 'title', widget: 'string' }
+ - { label: 'Site Url', name: 'baseURL', widget: 'string' }
+ - { label: 'Theme', name: 'theme', widget: 'hidden', default: "hugo-resume" }
+ - { label: 'Language Code', name: 'languageCode', widget: 'hidden', default: "en-us" }
+ - { label: 'PygmentCodeFences', name: 'PygmentsCodeFences', widget: 'boolean', required: false }
+ - { label: 'PygmentCodeFencesGuessSyntax', name: 'PygmentsCodeFencesGuessSyntax', widget: 'boolean', required: false }
+ - { label: 'PygmentCodeFencesGuessSyntax', name: 'PygmentsStyle', widget: 'string' }
+ - label: 'Params'
+ name: 'params'
+ widget: 'object'
+ fields:
+ - { label: 'First Name', name: 'firstName', widget: 'string' }
+ - { label: 'Last Name', name: 'lastName', widget: 'string' }
+ - { label: address, name: address, widget: 'string' }
+ - { label: profileImage, name: profileImage, widget: 'image' }
+ - { label: 'phone', name: 'phone', widget: 'string' }
+ - { label: 'email', name: 'email', widget: 'string' }
+ - label: 'Social Handles'
+ name: 'handles'
+ widget: 'list'
+ fields:
+ - { label: 'Name', name: 'name', widget: 'string' }
+ - { label: 'Link', name: 'link', widget: 'string' }
+
+ - { label: 'showSkills', name: 'showSkills', widget: 'boolean', required: false }
+ - { label: 'showProjects', name: 'showProjects', widget: 'boolean', required: false }
+ - { label: 'showOpenSource', name: 'showOpenSource', widget: 'boolean', required: false }
+ - { label: 'showPublications', name: 'showPublications', widget: 'boolean', required: false }
+ - { label: 'showExperience', name: 'showExperience', widget: 'boolean', required: false }
+ - { label: 'showEducation', name: 'showEducation', widget: 'boolean', required: false }
+ - { label: 'showQr', name: 'showQr', widget: 'boolean', required: false }
+ - { label: 'favicon', name: 'favicon', widget: 'image' }
+ - label: 'Google'
+ name: 'google'
+ widget: 'object'
+ fields:
+ - { label: 'analytics', name: 'analytics', widget: 'object',fields: [{ label: 'Tracker ID', name: 'trackerID', widget: 'string' }] }
+
+ - { label: 'Show Git Commit INfo', name: 'enableGitInfo', widget: 'boolean', required: false }
+ - { label: 'outputs', name: 'outputs', widget: 'object', field:{name: 'home', label: 'home' , widget: list, default: ['HTML','JSON'] }}
+ - { label: 'taxonomies', name: 'taxonomies', widget: 'hidden', default:{name: 'home', label: 'home' , widget: string, default: ['tags'] }}
+ \ No newline at end of file
diff --git a/exampleSite/static/admin/index.html b/exampleSite/static/admin/index.html
new file mode 100644
index 0000000..06c02c9
--- /dev/null
+++ b/exampleSite/static/admin/index.html
@@ -0,0 +1,13 @@
+<!doctype html>
+<html>
+<head>
+ <meta charset="utf-8" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ <title>Content Manager</title>
+</head>
+<body>
+ <!-- Include the script that builds the page and powers Netlify CMS -->
+ <script src="https://unpkg.com/netlify-cms@^2.0.0/dist/netlify-cms.js"></script>
+ <script type="module" src="/admin/cms.js"></script>
+</body>
+</html> \ No newline at end of file
diff --git a/exampleSite/static/admin/templates/about.js b/exampleSite/static/admin/templates/about.js
new file mode 100644
index 0000000..2177b44
--- /dev/null
+++ b/exampleSite/static/admin/templates/about.js
@@ -0,0 +1,97 @@
+
+
+var AboutPreview = createClass({
+ // Object fields are simpler than lists - instead of `widgetsFor` returning
+ // an array of objects, it returns a single object. Accessing the shape of
+ // that object is the same as the shape of objects returned for list fields:
+ //
+ // {
+ // data: { front_limit: 0, author: 'Chris' },
+ // widgets: { front_limit: (<WidgetComponent>), author: (WidgetComponent>)}
+ // }
+ render: function() {
+ var entry = this.props.entry;
+ var intro = entry.getIn(['data', 'intro']);
+ var about = entry.getIn(['data', 'about']);
+ var classes = entry.getIn(['data', 'classes']);
+ var contact = entry.getIn(['data', 'contact']);
+ var bg = this.props.widgetsFor('intro').getIn(['widgets', 'background']).props.value;
+
+ return h('div',{},
+ // Intro Section
+ h('header', { "class":"masthead",
+ "style":{
+ backgroundImage: "url(" + bg + ")",
+ backgroundPosition: 'center',
+ backgroundSize: 'cover',
+ backgroundRepeat: 'no-repeat'
+ }
+ },
+ h('div',{'class':'intro-body'},
+ h('div',{'class':'container'},
+ h('div',{'class':'row'},
+ h('div',{'class':'col-lg-8 mx-auto'},
+ h('div',{'class':'improve-contrast-box'},
+ h('h1',{'class':'brand-heading'},
+ this.props.widgetsFor('intro').getIn(['widgets', 'header'])
+ ),
+ h('p',{'class':'intro-text'},
+ this.props.widgetsFor('intro').getIn(['widgets', 'text'])
+ )
+ )
+ )
+ )
+ )
+ )
+
+
+ ) ,
+ // About Section
+ h('section',{"id":"about","class":"content-section text-center"},
+ h('div',{"class":"container"},
+ h('div',{"class":"row"},
+ h('div',{"class":"col-lg-8 mx-auto"},
+ h('h2',{},
+ this.props.widgetsFor('about').getIn(['widgets', 'header'])
+ ),
+ h('p',{},
+ this.props.widgetsFor('about').getIn(['widgets', 'text'])
+ )
+ )
+ )
+ )
+ ),
+ // Contact Section
+ h('section',{"id":"contact","class":"content-section text-center"},
+ h('div',{"class":"container"},
+ h('div',{"class":"row"},
+ h('div',{"class":"col-lg-8 mx-auto"},
+ h('h2',{},
+ this.props.widgetsFor('contact').getIn(['widgets', 'header'])
+ ),
+ h('p',{},
+ this.props.widgetsFor('contact').getIn(['widgets', 'text'])
+ )
+ )
+ )
+ )
+ )
+
+ )
+
+
+
+ return h('div', {},
+ h('h1', {}, title),
+ h('dl', {},
+ h('dt', {}, 'Posts on Frontpage'),
+ h('dd', {}, this.props.widgetsFor('posts').getIn(['widgets', 'front_limit']) || 0),
+
+ h('dt', {}, 'Default Author'),
+ h('dd', {}, this.props.widgetsFor('posts').getIn(['data', 'author']) || 'None'),
+ )
+ );
+ }
+});
+
+export default AboutPreview; \ No newline at end of file
diff --git a/exampleSite/static/img/schema-org.png b/exampleSite/static/img/schema-org.png
new file mode 100644
index 0000000..3868dde
--- /dev/null
+++ b/exampleSite/static/img/schema-org.png
Binary files differ
diff --git a/images/cms.png b/images/cms.png
new file mode 100644
index 0000000..a191886
--- /dev/null
+++ b/images/cms.png
Binary files differ
diff --git a/theme.toml b/theme.toml
index 33660bc..8dfd6d5 100644
--- a/theme.toml
+++ b/theme.toml
@@ -4,11 +4,11 @@
name = "Resume"
license = "MIT"
licenselink = "https://github.com/eddiewebb/hugo-resume/blob/master/LICENSE.md"
-description = "Personal resume with social handles, skills inventory, work history and portfolio. Ported from StartBootstrap 'Resume' theme"
+description = "Personal resume with social handles, skills inventory, work history and portfolio. Includes native CMS editor experience with Netlify CMS. Ported from StartBootstrap 'Resume' theme"
homepage = "https://edwardwebb.com/"
-tags = ["portfolio","resume","responsive"]
-features = ["social","mobile","projects","responsive","qr-code"]
-min_version = "0.1"
+tags = ["portfolio","resume","responsive", "cms"]
+features = ["social","mobile","projects","responsive","qr-code","cms"]
+min_version = "0.62"
[author]
name = "Eddie Webb"