Necessary to consistent with changes introduced when adding import support so that the top level form key is `design` instead of `template`.
Milestone: patch
Necessary to import an exported (zip file) design. The full implementation is included as a single commit to capture the details of how this works. Here's the breakdown:
* *Import Action*: Creates a new screen template based on the model ID and associated zip file content that is uploaded.
* *Import Partial*: The `_import` partial provides the form within a popover via the index page to collect details from the user. This is also why the `index` template has been updated to link to the popover and also why the index view supplies the models.
In the future, reduce the responsibility of loading the models on the index view and use a import new action instead.
Milestone: minor
Necessary to validate a zip attachment before importing content. This also requires the model ID to be supplied as a starting point since the same template can be used for any model.
Milestone: minor
Necessary to generate attributes for Liquid templates. Will soon be used during extension import of TRMNL Recipes in order to supply device information.
Milestone: minor
We need access to this information via the struct for building Liquid attributes instead of at the view layer. With this change, the part will automatically delegate to the struct instead.
Milestone: patch
Ensures the TRMNL Recipe ID is mapped as an external ID in case we need to reference this information. This also ensures the extension's ID will be dynamically sequenced via PostgreSQL when the record is created instead of letting the TRMNL Recipe ID override this value.
Milestone: patch
Necesssary to explain how these links work but only if a screen is associated with one of them. Will be used to update the show view documentation.
Milestone: minor