1. 13 Jan, 2022 1 commit
  2. 12 Jan, 2022 1 commit
    • Christian Kuhn's avatar
      [TASK] Simplify Templating Bootstrap in BE Controllers · 37ac299f
      Christian Kuhn authored
      This patch introduces a new EXT:fluid view class
      "BackendTemplateView" to be used as main view for
      backend-related non-Extbase views.
      
      This class is the base of a new non-Extbase and
      non-request dependent backend view. The class is for
      now marked @internal and experimental since we'll
      probably add a factory to configure backend template
      overrides for any backend view later-on.
      
      A few ViewHelpers are changed to work without
      accessing the request if enough VH arguments are provided.
      
      This is the first patch in a series of patches that will
      switch from StandaloneView usages in backend
      controllers to this new BackendTemplateView.
      
      Basic strategy:
      * $view->getRequest()->setControllerExtensionName('SysNote')
        is removed. This is Extbase-specific and not needed nor
        wanted for common non-Extbase controllers.
      * Instantiate the View (for now with makeInstance, will be
        replaced with a factory later-on)
      * Set the needed paths via ->setTemplateRootPaths() etc.
        For these, we *always* use the main extension's entry
        templating paths, for instance
        'EXT:sys_note/Resources/Private/Templates' or
        'EXT:sys_note/Resources/Private/Partials'.
        We do *not* use sub directories here to clear up path
        logic.
      * ->assign() / ->assignMultiple() whatever is needed.
      * ->render('SubDirectory/TemplateName') the actual
        action / template, no '.html' suffix.
      
      As a demo, EXT:sys_note is adapted accordingly which hands
      over arguments to the above mentioned VH's in a way so
      these don't access the request object anymore. The sys_note
      code gets a couple of additional changes so the hooks can
      prepare request dependent arguments and set them as
      template variables (here: returnUrl).
      
      This patch triggers a hidden gem: Since ViewHelpers no
      longer receive an Extbase request, they also don't trigger
      Extbase magic anymore. The casual victim here is
      f:translate, which has already been prepared to not trigger
      Extbase's frontend TypoScript parsing if there is no
      Extbase request. This often improves backend view performance
      by 25% or more, depending on the amount of frontend
      TypoScript to parse.
      
      Further patches will adapt other core backend routes and will
      relate to this patch for reference.
      
      Change-Id: I4fec3ad690452a00e731c9f6928273048397dd89
      Resolves: #96513
      Related: #96473
      Releases: main
      Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/72966
      
      Reviewed-by: Benni Mack's avatarBenni Mack <benni@typo3.org>
      Reviewed-by: Oliver Bartsch's avatarOliver Bartsch <bo@cedev.de>
      Reviewed-by: Christian Kuhn's avatarChristian Kuhn <lolli@schwarzbu.ch>
      Tested-by: core-ci's avatarcore-ci <typo3@b13.com>
      Tested-by: Benni Mack's avatarBenni Mack <benni@typo3.org>
      Tested-by: Oliver Bartsch's avatarOliver Bartsch <bo@cedev.de>
      Tested-by: Christian Kuhn's avatarChristian Kuhn <lolli@schwarzbu.ch>
      37ac299f
  3. 30 Aug, 2020 1 commit
    • Daniel Windloff's avatar
      [TASK] Migrate RecordListController hooks to an PSR-14 event · ff67726f
      Daniel Windloff authored and Anja Leichsenring's avatar Anja Leichsenring committed
      The following hooks in the RecordListController are used to add
      additional content above or below the main controller content:
      
      *  $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']
         ['recordlist/Modules/Recordlist/index.php']['drawHeaderHook']
      *  $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']
         ['recordlist/Modules/Recordlist/index.php']['drawFooterHook']
      
      As this functionality could be useful, it should be migrated to a
      PSR-14 event. Both hook implementations use a meaningful parameter
      set (the request object) and return the additional content as string.
      As there is no dependency to the parent object (the class instance of
      the class where the hooks are placed), they could be migrated to a
      psr-14 event without a breaking change.
      Therefore, a PSR-14 event has been implemented to replace the hook
      functionality. An event listener has been created to provide a
      compatibility layer for both hooks. This allows a proper deprecation
      without breaking the hooks.
      The event listener (compatibility layer) could be removed in later
      versions without any changes in the controller class.
      
      Releases: master
      Resolves: #92062
      Change-Id: I50e4897bae256ec165861bccd8356db107c78962
      Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/65401
      
      Tested-by: Christian Kuhn's avatarChristian Kuhn <lolli@schwarzbu.ch>
      Tested-by: default avatarTYPO3com <noreply@typo3.com>
      Tested-by: Anja Leichsenring's avatarAnja Leichsenring <aleichsenring@ab-softlab.de>
      Reviewed-by: Christian Kuhn's avatarChristian Kuhn <lolli@schwarzbu.ch>
      Reviewed-by: Anja Leichsenring's avatarAnja Leichsenring <aleichsenring@ab-softlab.de>
      ff67726f