-
Notifications
You must be signed in to change notification settings - Fork 326
Content System Roadmap
Projects in order that they should be done:
Project | Dep | Effort | Effects |
---|---|---|---|
6. Refactor content POST/PUT | Small | Stability | |
1. Routing Auto Integration | Medium | Stability/Architecture/Flexibility | |
7. Repository Refactoring | Medium | Stability/Architecture | |
2. Content Type Refactoring | Large | Stability/API/Performance | |
5. Preview Refactoring | 2. | Medium | API/Stability |
4. View Refactoring | 2. | Medium | Performance/API |
3. Content Routing | 1. | Medium | Performance/API/Architecture |
- Routing Auto Integration
Aim: Integration of the Symfony CMF RoutingAuto component
Benefits:
- Replace ResourceLocator route generation logic
- Configurable URL schemas
- Better management of history URLs
- Content Type Refactoring
[compat removal]
Aim: Refactor content types to be agnostic to storage and plurality.
Benefits:
- Removes a compatibility layer
- Content types will only be concerned with providing output for a given input.
- Plurality (minOccurs, maxOccurs) will be handled at a higher level
- No special logic required for preview.
- Removal of content types from document lifecycle (currently saving a
- Content Routing
Currently the "resource locator" is used to determine the URL of a document in combination with the "resource locator previx" as determined by the request analyzer. This is sub optimal.
It would be much better to have:
{{ path(document) }}
and
$this->router->generate($document); // url to document
Benefits:
- Only generate routes when needed
- Decouple routing from the content layer
- Handle things such as route caching in the router
- View Refactoring
[compat removal]
Currently the view does not take advantage of any lazy loading.
Aim: View to be fully lazy, Secondary: Document should be available within the view.
- Preview Refactoring
[compat removal]
Depends: 2. Content type refactoring Aim:
- Removes a compatibility layer
- Real object state transfer (not just serializing everything to strings).
- Refactor content POST/PUT format from frontend
Aim: Namespace system, content and extension key/value pairs sent from frontend.
Currently there is no namespacing and all the key value pairs sent from the admin UI potentially conflict with eachother.
- Send this data as encoded arrays, e.g.
[structure][content][title]=foo&[structure][body]=bar&[extension][seo][keywords][0]=bar
- Remove the
DataNormalizer
class (the current workaround).
- Repository Refactoring
[compat removal
Aim: Remove node repository and use JMS Serializer instead of string concatenation.
- Remove the NodeRepository
- Replace with targeted repositories (something like PageRepository for example)
- Repositories should not serialize data!
- Use JMS serializer