diff --git a/.all-contributorsrc b/.all-contributorsrc index 6cc64c34..a547e0f5 100644 --- a/.all-contributorsrc +++ b/.all-contributorsrc @@ -1041,6 +1041,15 @@ "bug", "doc" ] + }, + { + "login": "g-hodges", + "name": "Glendon Hodges", + "avatar_url": "https://avatars1.githubusercontent.com/u/22135379?v=4", + "profile": "https://github.com/g-hodges", + "contributions": [ + "doc" + ] } ], "repoType": "github" diff --git a/README.md b/README.md index 71d697c4..54e81f9e 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ # Netlify CMS -[![All Contributors](https://img.shields.io/badge/all_contributors-117-orange.svg)](#contributors) +[![All Contributors](https://img.shields.io/badge/all_contributors-119-orange.svg)](#contributors) [![Open Source Helpers](https://www.codetriage.com/netlify/netlify-cms/badges/users.svg)](https://www.codetriage.com/netlify/netlify-cms) [![](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/netlify/netlifycms) @@ -78,7 +78,7 @@ These wonderful folks are responsible for developing and maintaining Netlify CMS | [
David Ko](https://github.com/daveyko)
[πŸ’»](https://github.com/netlify/netlify-cms/commits?author=daveyko "Code") | [
IΓ±aki GarcΓ­a](http://www.txorua.com)
[🎨](#design-igarbla "Design") | [
Sam](https://github.com/gazebosx3)
[πŸ’»](https://github.com/netlify/netlify-cms/commits?author=gazebosx3 "Code") | [
Josh Dzielak](https://dzello.com)
[πŸ“–](https://github.com/netlify/netlify-cms/commits?author=dzello "Documentation") | [
Jeremy Bise](http://thosegeeks.com)
[πŸ“–](https://github.com/netlify/netlify-cms/commits?author=jeremybise "Documentation") | [
terrierscript](https://terrierscript.com)
[πŸ’»](https://github.com/netlify/netlify-cms/commits?author=terrierscript "Code") | [
Christopher Geary](https://twitter.com/crgeary)
[πŸ”Œ](#plugin-crgeary "Plugin/utility libraries") | | [
Brian Macdonald](https://github.com/brianlmacdonald)
[πŸ’»](https://github.com/netlify/netlify-cms/commits?author=brianlmacdonald "Code") | [
John Vandenberg](https://jayvdb.github.io/)
[πŸ“–](https://github.com/netlify/netlify-cms/commits?author=jayvdb "Documentation") | [
MarkZither](https://github.com/MarkZither)
[πŸ“–](https://github.com/netlify/netlify-cms/commits?author=MarkZither "Documentation") | [
Rob Phoenix](https://www.robphoenix.com)
[πŸ“–](https://github.com/netlify/netlify-cms/commits?author=robphoenix "Documentation") | [
Steve Lathrop](https://www.SteLa.io)
[πŸ’»](https://github.com/netlify/netlify-cms/commits?author=slathrop "Code") [πŸ“–](https://github.com/netlify/netlify-cms/commits?author=slathrop "Documentation") [πŸ’‘](#example-slathrop "Examples") | [
Maciej Matuszewski](https://github.com/maciejmatu)
[πŸ’»](https://github.com/netlify/netlify-cms/commits?author=maciejmatu "Code") | [
Eko Eryanto](https://github.com/ekoeryanto)
[πŸ”Œ](#plugin-ekoeryanto "Plugin/utility libraries") | | [
Taylor D. Edmiston](http://blog.tedmiston.com/)
[πŸ“–](https://github.com/netlify/netlify-cms/commits?author=tedmiston "Documentation") | [
Daniel Mahon](https://www.mahonstudios.com)
[πŸ’»](https://github.com/netlify/netlify-cms/commits?author=danielmahon "Code") | [
Evan Hennessy](https://www.hennessyevan.com)
[πŸ”Œ](#plugin-hennessyevan "Plugin/utility libraries") | [
Hasan Azizul Haque](https://hasanavi.me)
[πŸ’»](https://github.com/netlify/netlify-cms/commits?author=hasanavi "Code") [πŸ“–](https://github.com/netlify/netlify-cms/commits?author=hasanavi "Documentation") [πŸ€”](#ideas-hasanavi "Ideas, Planning, & Feedback") | [
Robert Karlsson](https://github.com/robertkarlsson)
[πŸ›](https://github.com/netlify/netlify-cms/issues?q=author%3Arobertkarlsson "Bug reports") | [
Gil Greenberg](http://gilgreenberg.com)
[πŸ’»](https://github.com/netlify/netlify-cms/commits?author=gil-- "Code") | [
Tyler Ipson](http://loremipson.com)
[πŸ“–](https://github.com/netlify/netlify-cms/commits?author=loremipson "Documentation") | -| [
Jake Rayson](https://www.growdigital.org/)
[πŸ’»](https://github.com/netlify/netlify-cms/commits?author=growdigital "Code") [πŸ“](#blog-growdigital "Blogposts") [πŸ’‘](#example-growdigital "Examples") | [
Yashu Mittal](https://mittalyashu.now.sh/)
[πŸ“–](https://github.com/netlify/netlify-cms/commits?author=mittalyashu "Documentation") | [
Jake Rayson](https://www.growdigital.org/)
[πŸ’»](https://github.com/netlify/netlify-cms/commits?author=growdigital "Code") [πŸ“](#blog-growdigital "Blogposts") [πŸ’‘](#example-growdigital "Examples") | [
Kurt collins](https://github.com/kurtgcollins)
[πŸ“–](https://github.com/netlify/netlify-cms/commits?author=kurtgcollins "Documentation") | [
Cory Williamson-Cardneau](http://cory.williamson-cardneau.com)
[πŸ“–](https://github.com/netlify/netlify-cms/commits?author=cory-wc "Documentation") | [
Casey Schroeder](https://github.com/cdschroeder)
[πŸ“–](https://github.com/netlify/netlify-cms/commits?author=cdschroeder "Documentation") | [
Mitchell Cash](https://mitchellcash.com)
[πŸ›](https://github.com/netlify/netlify-cms/issues?q=author%3AMitchellCash "Bug reports") [πŸ“–](https://github.com/netlify/netlify-cms/commits?author=MitchellCash "Documentation") | +| [
Jake Rayson](https://www.growdigital.org/)
[πŸ’»](https://github.com/netlify/netlify-cms/commits?author=growdigital "Code") [πŸ“](#blog-growdigital "Blogposts") [πŸ’‘](#example-growdigital "Examples") | [
Yashu Mittal](https://mittalyashu.now.sh/)
[πŸ“–](https://github.com/netlify/netlify-cms/commits?author=mittalyashu "Documentation") | [
Kurt collins](https://github.com/kurtgcollins)
[πŸ“–](https://github.com/netlify/netlify-cms/commits?author=kurtgcollins "Documentation") | [
Cory Williamson-Cardneau](http://cory.williamson-cardneau.com)
[πŸ“–](https://github.com/netlify/netlify-cms/commits?author=cory-wc "Documentation") | [
Casey Schroeder](https://github.com/cdschroeder)
[πŸ“–](https://github.com/netlify/netlify-cms/commits?author=cdschroeder "Documentation") | [
Mitchell Cash](https://mitchellcash.com)
[πŸ›](https://github.com/netlify/netlify-cms/issues?q=author%3AMitchellCash "Bug reports") [πŸ“–](https://github.com/netlify/netlify-cms/commits?author=MitchellCash "Documentation") | [
Glendon Hodges](https://github.com/g-hodges)
[πŸ“–](https://github.com/netlify/netlify-cms/commits?author=g-hodges "Documentation") | This project follows the [all-contributors](https://github.com/kentcdodds/all-contributors) specification. Contributions of any kind welcome! diff --git a/website/content/docs/architecture.md b/website/content/docs/architecture.md index b1fa23f2..801d1097 100755 --- a/website/content/docs/architecture.md +++ b/website/content/docs/architecture.md @@ -6,7 +6,7 @@ group: contributing Netlify CMS is a React application, using Redux for state management with immutable data structures (immutable.js). -The core abstractions for content editing are `collections`, `entries` and `widgets`. +The core abstractions for content editing are `collections`, `entries`, and `widgets`. Each `collection` represents a collection of entries. This can either be a collection of similar entries with the same structure, or a set of entries where each has its own structure. @@ -51,13 +51,13 @@ For either updating an existing entry or creating a new one, the `EntryEditor` i * When mounted, the `EntryPage` container component dispatches the `createDraft` action, setting the `entryDraft` state to a blank state (in case of a new entry) or to a copy of the selected entry (in case of an edit). * The `EntryPage` will also render widgets for each field type in the given entry. -* Widgets are used for editing entry fields. There are different widgets for different field types, and they are always defined in a pair containing a `control` and a `preview` component. The control component is responsible for presenting the user with the appropriate interface for manipulating the current field value, while the preview component is responsible for displaying the value with the appropriate styling. +* Widgets are used for editing entry fields. There are different widgets for different field types, and they are always defined in a pair containing a `control` component and a `preview` component. The control component is responsible for presenting the user with the appropriate interface for manipulating the current field value. The preview component is responsible for displaying the value with the appropriate styling. #### Widget components implementation The control component receives one (1) callback as a prop: `onChange`. * onChange (required): Should be called when the users changes the current value. It will ultimately end up updating the EntryDraft object in the Redux Store, thus updating the preview component. -* onAddAsset & onRemoveAsset (optionals): If the field accepts file uploads for media (images, for example), these callbacks should be invoked with a `AssetProxy` value object. `onAddAsset` will get the current media stored in the Redux state tree while `onRemoveAsset` will remove it. AssetProxy objects are stored in the `Medias` object and referenced in the `EntryDraft` object on the state tree. +* onAddAsset & onRemoveAsset (optionals): Should be invoked with an `AssetProxy` value object if the field accepts file uploads for media (images, for example). `onAddAsset` will get the current media stored in the Redux state tree while `onRemoveAsset` will remove it. AssetProxy objects are stored in the `Medias` object and referenced in the `EntryDraft` object on the state tree. Both control and preview widgets receive a `getAsset` selector via props. Displaying the media (or its URI) for the user should always be done via `getAsset`, as it returns an AssetProxy that can return the correct value for both medias already persisted on the server and cached media not yet uploaded.