Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

!!!FEATURE: Reform foundation and boot process of the UI #3682

Merged
merged 27 commits into from
Feb 2, 2024

Commits on Jan 22, 2024

  1. TASK: Load head scripts using <script defer/>

    This way, the UI does not need to listen to `DOMContentLoaded` in order
    to discover the `#appContainer` element. This allows a lot of the UI
    boot process to become synchronous.
    grebaldi committed Jan 22, 2024
    Configuration menu
    Copy the full SHA
    72bd767 View commit details
    Browse the repository at this point in the history
  2. TASK: Refactor the UI boot process

    Functionally, it stays the same, but the boot process is no longer a
    Redux Saga. It is instead an asynchronous function that runs when the
    `DOMContentLoaded` event was fired.
    
    Also, the various boot-related sub-processes (initializing plugins,
    loading translations, etc...) have been wrapped in dedicated functions.
    grebaldi committed Jan 22, 2024
    Configuration menu
    Copy the full SHA
    966fe6a View commit details
    Browse the repository at this point in the history
  3. TASK: Remove discover function from utility-helpers package

    As it is no longer needed.
    grebaldi committed Jan 22, 2024
    Configuration menu
    Copy the full SHA
    a7992e2 View commit details
    Browse the repository at this point in the history
  4. TASK: Remove delay function from utility-helpers package

    As it is no longer needed.
    grebaldi committed Jan 22, 2024
    Configuration menu
    Copy the full SHA
    a0e45c2 View commit details
    Browse the repository at this point in the history
  5. TASK: JSON.parse the initial data for the boot process...

    ...rather than inlineing it. `JSON.parse` is somewhat more efficient,
    because for JSON only a subset of ECMAScript has to be parsed.
    grebaldi committed Jan 22, 2024
    Configuration menu
    Copy the full SHA
    fc566d9 View commit details
    Browse the repository at this point in the history
  6. TASK: Refactor fatal initlization error handling

    The error message has been adjusted to the look of the global
    ErrorBoundary, re-using its stylesheet.
    grebaldi committed Jan 22, 2024
    Configuration menu
    Copy the full SHA
    6c8ad06 View commit details
    Browse the repository at this point in the history
  7. Configuration menu
    Copy the full SHA
    6ecf5e6 View commit details
    Browse the repository at this point in the history
  8. Configuration menu
    Copy the full SHA
    a2ec91b View commit details
    Browse the repository at this point in the history
  9. TASK: Remove data-first-tab attribute from #appContainer

    This attributes has no references throughout the entire code base. It
    appears to be a leftover from some abandoned feature-work.
    grebaldi committed Jan 22, 2024
    Configuration menu
    Copy the full SHA
    df20bf0 View commit details
    Browse the repository at this point in the history
  10. Configuration menu
    Copy the full SHA
    7a71ee6 View commit details
    Browse the repository at this point in the history
  11. Configuration menu
    Copy the full SHA
    0e2a69c View commit details
    Browse the repository at this point in the history
  12. Configuration menu
    Copy the full SHA
    05ce39d View commit details
    Browse the repository at this point in the history
  13. Configuration menu
    Copy the full SHA
    d515da3 View commit details
    Browse the repository at this point in the history
  14. FEATURE: Introduce Neos.Neos.Ui:Application prototype

    The `Neos.Neos.Ui:Application` prototype is designed to:
    
    1. Functionally replace the `Backend/Index.html` Fluid template
    2. Act as a basis for future multi-application support
    
    As of this commit, the API of the `Neos.Neos.Ui:Application` is not
    final.
    grebaldi committed Jan 22, 2024
    Configuration menu
    Copy the full SHA
    2525214 View commit details
    Browse the repository at this point in the history
  15. Configuration menu
    Copy the full SHA
    e0590e6 View commit details
    Browse the repository at this point in the history
  16. TASK: Remove the Backend/Index.html Fluid template

    ...as it is no longer needed.
    grebaldi committed Jan 22, 2024
    Configuration menu
    Copy the full SHA
    6286533 View commit details
    Browse the repository at this point in the history
  17. Configuration menu
    Copy the full SHA
    61559f3 View commit details
    Browse the repository at this point in the history
  18. TASK: Refactor controller to not use static fusion path

    The fusion path is now dynamically determined by controller / action
    This enables additional actions with separate templates for that controller.
    daniellienert authored and grebaldi committed Jan 22, 2024
    Configuration menu
    Copy the full SHA
    8875c24 View commit details
    Browse the repository at this point in the history
  19. !!!FEATURE: Introduce ApplicationView to replace Fusion for bootstr…

    …apping the UI
    
    The `ApplicationView` builds the foundational HTML document (via string
    concatenation) for bootstrapping the Neos UI.
    
    Formerly, Fusion was used to retrieve and render the initial data for
    the UI. This task has been delegated to a set of dedicated classes,
    namely:
    
    - `ConfigurationProvider` - retrieves the `nodeTree` and `structureTree`
    segments from `Neos.Neos.userInterface.navigateComponent` settings,
    `allowedTargetWorkspaces` from the ContentRepository's
    `WorkspaceService` as well as the `nodeTypeSchema` and `translations`
    endpoints.
    - `RoutesProviderInterface` - retrieves all other routes/endpoints
    required for communication with the Neos server application
    - `FrontendConfigurationProvider` - reads and preprocesses the
    `Neos.Neos.Ui.frontendConfiguration` settings that are mostly used by
    third-party plugins to share data between server and client
    - `NodeTypeGroupsAndRolesProviderInterface` - retrieves information about
    node type roles and node type groups. Roles are a dedicated UI-concept that
    is meant to distinguish between document, content and collection nodes.
    Groups refer the grouping of node types in the creation dialog.
    - `MenuProvider` - retrieves all data needed to render the main burger
    menu located in the top left corner of the UI.
    - `InitialStateProvider` - reads and preprocesses the
    `Neos.Neos.Ui.initialState` settings that are used to hydrate
    the UI's redux store
    
    The responsibilities of these classes is entirely derived from their
    former Fusion counterparts. All of them have been marked `@internal` to
    allow for later removal. Nonetheless, it remains possible to implement
    their accompanying interfaces and replace their implementations via
    `Objects.yaml`. This enables rare edge cases and unplanned
    extensibility.
    
    The splash screen, formerly a Fluid template, is now hard-coded into the
    `ApplicationView` class, which renders the `Neos.Neos.Ui.splashScreen`
    setting obsolete. It has therefore been removed.
    grebaldi committed Jan 22, 2024
    Configuration menu
    Copy the full SHA
    85259f7 View commit details
    Browse the repository at this point in the history
  20. TASK: Remove all backend-related Fusion code

    With the new `ApplicationView` this code is no longer in use anywhere.
    grebaldi committed Jan 22, 2024
    Configuration menu
    Copy the full SHA
    218a42c View commit details
    Browse the repository at this point in the history
  21. TASK: Remove @neos/neos-ui/System/BOOT redux action + dispatch

    This action used to be fired before all asynchronous operations at the
    beginning of the boot process.
    
    Since there's not a single subscriber within the UI code base that
    listens to that action, it has now been removed.
    grebaldi committed Jan 22, 2024
    Configuration menu
    Copy the full SHA
    e092605 View commit details
    Browse the repository at this point in the history
  22. TASK: Prevent duplication of defer attribute on <script/>-includes

    This also removes handling of the legacy first level 'defer' setting in
    the `Neos.Neos.Ui.resources` settings. If it is set, it will be ignored.
    grebaldi committed Jan 22, 2024
    Configuration menu
    Copy the full SHA
    4325fb0 View commit details
    Browse the repository at this point in the history

Commits on Jan 23, 2024

  1. TASK: terminateDueToFatalInitializationError throw directly if no d…

    …om is initialized yet
    mhsdesign committed Jan 23, 2024
    Configuration menu
    Copy the full SHA
    ae1e7ba View commit details
    Browse the repository at this point in the history
  2. BUGFIX: Avoid rendering unwanted variables in the view by scoping eve…

    …rything into `initialData`
    
    Previously this feature neos/flow-development-collection@b944521 would cause also the rendering of the neos ui `settings`
    mhsdesign committed Jan 23, 2024
    Configuration menu
    Copy the full SHA
    4918ae2 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    148e851 View commit details
    Browse the repository at this point in the history

Commits on Jan 30, 2024

  1. Configuration menu
    Copy the full SHA
    d36a006 View commit details
    Browse the repository at this point in the history

Commits on Feb 2, 2024

  1. Configuration menu
    Copy the full SHA
    ba8cf91 View commit details
    Browse the repository at this point in the history