Is your feature request related to a problem? Please describe.
This is an issue to flesh out the discussion in #1407. It aims to describe how the discussed solution would be implemented. The goals are:
slug field.uuid placeholder that is replaced by a UUID.default field.Proposed Solution
uuid field to the placeholder tokens supported by the slug formatter. uuidv1().default value resolution.default field.defaultValue.There are some further questions, but I don't think they necessarily need to be resolved now and could be added later to keep this feature small and focussed:
uuid prop as the value for valueField?Note: I have a little time over the next week and should be able to get this done if the above is acceptable.
Describe alternatives you've considered
There is the alternative described in #1407 which involves creating a widget to dynamically supply a UID. However I think a more low-level solution is preferable. Relations should not be being declared based on properties that can be edited by a user. This solution allows a stable field to be created at creation time and set as a hidden widget to prevent user-editing.
@Undistraction what do you think about this as a potential solution: https://github.com/netlify/netlify-cms/issues/1409#issuecomment-458781037
Any progress on this feature? It's really needed for relations. CMS use cases like predefined taxonomies, separate author bios to be linked from posts, series collections with previous/last all need a relationship identifier that can survive editing the relationship target.
Hey @dopry - totally agree on priority, but no one has dug into it yet.
Tom mentioned this issue in gitter chat & I'd like to share my custom id widget here for those who needs to solve this issue right now: https://github.com/d4rekanguok/netlify-cms-widgets
Please note that this is an implementation of an alternative that @Undistraction has already mentioned above:
There is the alternative described in #1407 which involves creating a widget to dynamically supply a UID. However I think a more low-level solution is preferable. Relations should not be being declared based on properties that can be edited by a user. This solution allows a stable field to be created at creation time and set as a hidden widget to prevent user-editing.
A bit lack of doc (sorry), but the usage for the id widget is fairly simple. Here's an example:
In cms.js
// Register the widget
import cms from 'netlify-cms-app'
import { Widget as IdWidget } from '@ncwidgets/id'
cms.registerWidget(IdWidget)
cms.init()
In config.yml
collections:
- label: "Posts"
name: "posts"
folder: "_posts"
create: true
fields:
- label: ID
name: id
widget: ncw-id
prefix: post # will generate post-124hfkjas
timestamp: true # will generate 1245119112-post-124hfkjas
hint: This widget generate an unique read-only id
You can view a demo at https://custom-widgets.netlify.com/
Feedback & contribution is much, much appreciated.
Thanks so much for sharing @d4rekanguok!
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.
Not stale
This should really be integrated in the core netlify cms. I had a lot of headaches with relations...
Most helpful comment
Tom mentioned this issue in gitter chat & I'd like to share my custom id widget here for those who needs to solve this issue right now: https://github.com/d4rekanguok/netlify-cms-widgets
Please note that this is an implementation of an alternative that @Undistraction has already mentioned above:
A bit lack of doc (sorry), but the usage for the id widget is fairly simple. Here's an example:
In cms.js
In config.yml
You can view a demo at https://custom-widgets.netlify.com/
Feedback & contribution is much, much appreciated.