Skip to content

Content System Roadmap

Dion Potkamp edited this page Sep 20, 2019 · 1 revision

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
  1. 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
  1. 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
  1. 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
  1. 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.

  1. Preview Refactoring

[compat removal]

Depends: 2. Content type refactoring Aim:

  • Removes a compatibility layer
  • Real object state transfer (not just serializing everything to strings).
  1. 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).
  1. 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