Skip to content
Snippets Groups Projects
  1. Sep 05, 2024
  2. Sep 04, 2024
  3. Sep 03, 2024
    • Simon Praetorius's avatar
      [TASK] Update Fluid to 2.15 · 51a0329c
      Simon Praetorius authored
      This release contains important pre-patches for the upgrade to
      Fluid v4 in the next step. Apart from soft deprecations of code that
      will log deprecation level errors with Fluid v4, it backports a
      feature from Fluid v4 to Fluid v2 to deliver a smoother migration
      path from Fluid v2 to v4 in 3rd party code. The necessary changes
      to TYPO3's ViewHelpers will be applied in a follow-up patch.
      
      Similarly to the previous update to 2.14.0, this patch adds RST
      files that describe both new features and deprecations
      that were introduced in this version.
      
      Noteworthy changes:
      
      * The functionality of `CompileWithContentArgumentAndRenderStatic`
      has been integrated into `AbstractViewHelper` and can thus be used
      with non-static ViewHelpers from now on.
      * `renderStatic()` and both associated traits
      `CompileWithContentArgumentAndRenderStatic` and
      `CompileWithRenderStatic` are deprecated
      * Methods deprecated with the introduction of the
      ViewFactoryInterface in #104773 have been deprecated in Fluid
      as well
      * `true`, `false` and `null` can no longer be used as variable names,
      as these will become proper language keywords in Fluid v4
      
      Executed composer commands:
      
      > composer req typo3fluid/fluid
      > composer req -d typo3/sysext/adminpanel --no-update typo3fluid/fluid
      > composer req -d typo3/sysext/core --no-update typo3fluid/fluid
      > composer req -d typo3/sysext/fluid --no-update typo3fluid/fluid
      > composer req -d typo3/sysext/redirects --no-update typo3fluid/fluid
      
      Resolves: #104789
      Related: #104463
      Related: #104773
      Releases: main
      Change-Id: I32a465e327cf84975c45e86580c54d060d688cd6
      Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/85837
      
      
      Tested-by: default avatarJochen Roth <rothjochen@gmail.com>
      Reviewed-by: default avatarSimon Praetorius <simon@praetorius.me>
      Tested-by: default avatarGarvin Hicking <gh@faktor-e.de>
      Tested-by: default avatarcore-ci <typo3@b13.com>
      Reviewed-by: default avatarJochen Roth <rothjochen@gmail.com>
      Tested-by: default avatarSimon Praetorius <simon@praetorius.me>
      Reviewed-by: default avatarGarvin Hicking <gh@faktor-e.de>
      51a0329c
  4. Sep 02, 2024
  5. Sep 01, 2024
  6. Aug 31, 2024
  7. Aug 30, 2024
    • Jasmina Ließmann's avatar
      [TASK] Remove orphaned language keys in EXT:info · 8cc084c7
      Jasmina Ließmann authored
      Resolves: #104779
      Releases: main
      Change-Id: If64ade32e87152dc0abe6a5b31ec2190e7dfeb46
      Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/85825
      
      
      Tested-by: default avatarChris Müller <typo3@brotkrueml.dev>
      Tested-by: default avatarcore-ci <typo3@b13.com>
      Reviewed-by: default avatarBenni Mack <benni@typo3.org>
      Tested-by: default avatarBenni Mack <benni@typo3.org>
      Reviewed-by: default avatarChris Müller <typo3@brotkrueml.dev>
      Tested-by: default avatarJasmina Ließmann <minapokhalo+typo3@gmail.com>
      Reviewed-by: default avatarJasmina Ließmann <minapokhalo+typo3@gmail.com>
      8cc084c7
    • Nikita Hovratov's avatar
      [TASK] Deprecate instantiation of IconRegistry in ext_localconf.php · 2b5a88a3
      Nikita Hovratov authored
      Nowadays, it is not needed anymore to manually call IconRegistry
      to register icons. Since TYPO3 v11 we have the Configuration/Icons.php
      file, which should be enough for most use cases.
      
      This deprecation gives extension authors incentive to clean their
      ext_localconf.php files.
      
      Some background: This has become problematic with Content Blocks, as
      it uses service provider extension method to dynamically register icons.
      However, when other extensions instantiate IconRegistry in
      ext_localconf.php the WHOLE Content Blocks compiling is triggered at an
      early stage of bootstrapping, when TCA is not even available yet. This
      does not work and forces us to use a less clean method by listening to
      the BootstrapComplete event.
      
      Resolves: #104778
      Related: #94692
      Releases: main
      Change-Id: I8ee6d80e8979f506cd076236c577302e323af77a
      Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/85662
      
      
      Reviewed-by: default avatarStefan Bürk <stefan@buerk.tech>
      Reviewed-by: default avatarSimon Praetorius <simon@praetorius.me>
      Tested-by: default avatarStefan Bürk <stefan@buerk.tech>
      Tested-by: default avatarSimon Praetorius <simon@praetorius.me>
      Reviewed-by: default avatarTorben Hansen <derhansen@gmail.com>
      Tested-by: default avatarcore-ci <typo3@b13.com>
      Tested-by: default avatarTorben Hansen <derhansen@gmail.com>
      2b5a88a3
    • Simon Praetorius's avatar
      [TASK] Prepare TemplatePaths for new Fluid version · 4d1aaebf
      Simon Praetorius authored
      Some type hints in TYPO3's TemplatePaths implementation need to
      be adjusted due to changes in the parent class. Also,
      `ensureAbsolutePath()` now only handles `string` as input, as the
      parent class is the only position the method is called and only strings
      are valid in that context.
      
      Resolves: #104783
      Releases: main
      Change-Id: I89fddd085a2a5fde11df769964eb9d129587b569
      Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/85830
      
      
      Tested-by: default avatarGarvin Hicking <gh@faktor-e.de>
      Reviewed-by: default avatarStefan Bürk <stefan@buerk.tech>
      Tested-by: default avatarSimon Praetorius <simon@praetorius.me>
      Reviewed-by: default avatarSimon Praetorius <simon@praetorius.me>
      Reviewed-by: default avatarGarvin Hicking <gh@faktor-e.de>
      Tested-by: default avatarcore-ci <typo3@b13.com>
      Tested-by: default avatarStefan Bürk <stefan@buerk.tech>
      4d1aaebf
    • Simon Praetorius's avatar
      [DOC] Add backwards-compatible example for getRequest() · f7a15096
      Simon Praetorius authored
      Because the API has been introduced with Fluid v2, but hasn't been
      used by TYPO3 < 13.3, a few extra checks are necessary.
      
      Resolves: #104777
      Releases: main
      Change-Id: If4bb29dc9b6b5b0e87ec73307a2a0bca285c4318
      Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/85824
      
      
      Reviewed-by: default avatarBenni Mack <benni@typo3.org>
      Tested-by: default avatarBenni Mack <benni@typo3.org>
      Reviewed-by: default avatarSimon Praetorius <simon@praetorius.me>
      Tested-by: default avatarSimon Praetorius <simon@praetorius.me>
      Tested-by: default avatarcore-ci <typo3@b13.com>
      Tested-by: default avatarGarvin Hicking <gh@faktor-e.de>
      Reviewed-by: default avatarGarvin Hicking <gh@faktor-e.de>
      f7a15096
    • Torben Hansen's avatar
      [BUGFIX] Allow Extbase HashService retrieval via GeneralUtility::makeInstance() · 47912f72
      Torben Hansen authored
      With the deprecation of extbase `HashService`, the new core
      `HashService` was injected to extbase `HashService` using constructor
      DI. Instantiation of extbase `HashService` however does not work,
      because the service is defined by a service provider and the
      required constructor argument is missing.
      
      This change makes the extbase `HashService` injectable by DI
      again by removing it from the service provider definition and
      by defining it as public using `Autoconfigure` attribute.
      
      Resolves: #104780
      Related: #102763
      Releases: main
      Change-Id: Ife766b2306eff9ef263ba42c78dd58b1d1add27f
      Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/85827
      
      
      Tested-by: default avatarcore-ci <typo3@b13.com>
      Reviewed-by: default avatarMathias Brodala <mbrodala@pagemachine.de>
      Reviewed-by: default avatarChristian Kuhn <lolli@schwarzbu.ch>
      Tested-by: default avatarChristian Kuhn <lolli@schwarzbu.ch>
      47912f72
    • Christian Kuhn's avatar
      [FEATURE] Implement and use a core ViewFactoryInterface · c22b72cd
      Christian Kuhn authored
      After a long list of preparation and side patches, this
      change introduces a central ext:core ViewFactoryInterface
      plus a default implementation for fluid, and rolls it out.
      
      We established a sub section of a generic view for backend
      modules with ext:backend BackendViewFactory in TYPO3 v12
      already. This worked out well. The patch picks this up
      with a global factory interface for all other use
      cases that need to deal with views.
      
      This ultimately allows instances to change any view rendered
      by any component by configuring the instance to inject a
      different ViewFactoryInterface implementation to some
      controller and let it return an ext:core ViewInterface that
      uses some different view implemenation like Twig or whatever
      floats your boat. This is also very helpful for headless
      implementations to transparently substitute casual html
      rendering with for instance a json result.
      
      The patch decouples fluid much better and obsoletes the custom
      fluid view implementations ext:fluid StandaloneView, ext:fluid
      TemplateView and their abstract ext:fluid AbstractTemplateView.
      The previous ViewResolverInterface of extbase is obsoleted as
      well.
      
      The following architectural decisions have been taken:
      
      * ext:core ViewFactoryInterface has the single create() method
        that takes a ViewFactoryData data object to create an ext:core
        ViewInterface based on it.
      * ext:core ViewFactoryInterface should be *injected* whenever
        possible to allow instances reconfiguring the injection. Core
        has only a couple of places where this is not possible yet due
        to technical debt. An example is #104724.
      * The default injection of ViewFactoryInterface is ext:core
        FluidViewFactory. This returns an instance of the already
        established FluidViewAdapter, which acts as a facade to
        fluid standalone TemplateView. FluidViewAdapter implements
        all the specialities from the now deprecated custom ext:fluid
        view classes, so switching to this implementation within core
        is not considered breaking. Most of those compatibility
        methods are declared deprecated, though. Some are kept
        non-deprecated, due to technical debt in some consumers.
      * ext:core ViewFactoryData is a straight data object that is
        supposed to be set up by view consumers. It is about handing
        over the template paths entry points to the factory, requesting
        a preferred format if desired, and handing over PSR-7 request
        if possible.
      * The request is actively hand over in ViewFactoryData whenever
        possible within core usages, since it may help custom
        ViewFactoryInterface implementations to take decisions based on
        it: "If that's a ext:news controller action and if request type
        is json, then create my json view, otherwise fall back to default
        fluid view using FluidViewFactory".
      * The signature of ext:core ViewFactoryData is still kinda
        tailored towards fluid with the almighty template/layout/partial
        tuple, but it allows the core to go ahead in this area with TYPO3
        v14, to potentially establish a better solution regarding
        template entry points in general.
      * Best use of the ViewFactoryData paths entry points tuple are the
        "extension template entry points", namely arrays of
        "EXT:myExt/Resources/Private/Templates",
        "EXT:myExt/Resources/Private/Layouts" and
        "EXT:myExt/Resources/Private/Partials".
        Only ext:form violates this once, which should be ruled out.
      * Single view rendering is best called using
        render('path/within/templateRootPath'): This has been established
        with BackendViewFactory for backend modules already, and gives
        the core a good place to kick in automatic path overlay
        handling later. Only extbase and TEMPLATEVIEW violate this at the
        moment, and we will see on how to continue on this.
      * In ViewFactoryData, "templatePathAndFilename" is the ugly kid
        in the block, we'll want to get rid of this when a general
        path lookup and overlay solution is established.
      
      The patch essentially adds the ViewFactoryInterface API, adds
      the default FluidViewFactory implementation, and changes all
      places that instantiated custom fluid view towards the new API.
      
      Notable specialities:
      
      * ext:adminpanel suffers from an architectual flaw that cripples
        DI on sub modules. GU::makeInstance(ViewFactoryInterface::class)
        solves this for now, but a solution should be handled with
        #104724 to allow injection of ViewFactoryInterface.
      * ext:backend LoginController follows a weird logic for extensions
        that take over login rendering to have own login fields. This
        needs a bigger overhaul that is out of scope of this patch.
        Since the existing API hard coded type hints for ext:fluid
        StandaloneView, there is currently no other way than mitigating
        this by introducing a new API method and triggering deprecations
        for extension that don't follow.
      * The patch reveals architecural flaws when creating emails via the
        FluidEmail construct where 'composition over inheritance' went
        wrong. This needs a redesign, the implementation is currently
        bound to fluid and throws an exception if the view is not an
        instance of FluidViewAdapter
      * Similar with FLUIDTEMPLATE content object: This implementation is
        heavily tailored towards fluid. This is ok'ish: When for instance
        a page rendering for 'headless' is called, those FLUIDTEMPLATE
        TypoScript definitions need to be changed to something else using
        TypoScript. The implementation now throws an exception if the view
        factory did not return a FluidViewAdapter view.
      * New v13 PAGEVIEW content object is changed to *not* relax on
        upper/lowercase template filenames for now: While we *do* want
        fluid to handle file and path casings more relaxed, this single
        use case is not the way to go. This needs to be solved on a more
        general level that requires more refactoring, find, and lookup
        magic on a lower level. To stay consistent with current fluid
        strategy, we for now remove the "ignore casing" feature of this
        content object, but it will hopefully see a revamp in v14.
      * extbase is (guess what?) problematic. The patch switches from
        ext:extbase ViewResolverInterface to ext:core ViewFactoryInterface
        and keeps using ViewResolverInterface as deprecated fallback.
        The extbase abstract ActionController "defaultViewObjectName"
        API is ugly, is a bit more restricted now, and will have to fall
        at some point. In v14, single actions should probably create a
        view explicitely when they need some, using a helper method
        provided by the abstract, or similar. The automagic view
        configuration is of course kept for now, but becomes more and
        more questionable.
      
      Resolves: #104773
      Related: #101559
      Related: #104724
      Related: #103504
      Releases: main
      Change-Id: Ic4603b55da1504a5f20b23468850a1a518684967
      Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/85735
      
      
      Reviewed-by: default avatarBenni Mack <benni@typo3.org>
      Tested-by: default avatarcore-ci <typo3@b13.com>
      Tested-by: default avatarBenni Mack <benni@typo3.org>
      Tested-by: default avatarSimon Praetorius <simon@praetorius.me>
      Tested-by: default avatarAnja Leichsenring <aleichsenring@ab-softlab.de>
      Tested-by: default avatarStefan Bürk <stefan@buerk.tech>
      Reviewed-by: default avatarStefan Bürk <stefan@buerk.tech>
      Reviewed-by: default avatarSimon Praetorius <simon@praetorius.me>
      Reviewed-by: default avatarAnja Leichsenring <aleichsenring@ab-softlab.de>
      Reviewed-by: default avatarChristian Kuhn <lolli@schwarzbu.ch>
      Tested-by: default avatarGarvin Hicking <gh@faktor-e.de>
      Reviewed-by: default avatarGarvin Hicking <gh@faktor-e.de>
      Tested-by: default avatarChristian Kuhn <lolli@schwarzbu.ch>
      c22b72cd
    • Daniel Siepmann's avatar
      [BUGFIX] Properly redirect secondary backend module routes · c2d7bdff
      Daniel Siepmann authored
      Users might open URLs to backend modules.
      Those are checked for existence and permissions. But the permission
      check used the route identifier as module identifier.
      
      This is now fixed by resolving the route identifier to module identifier
      which is then used for permission checks.
      
      Resolves: #103938
      Releases: main, 12.4
      Change-Id: Ia2e7948a6073ec45b6b049b5d7040a52a5a0687e
      Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/84432
      
      
      Reviewed-by: default avatarBenjamin Franzke <ben@bnf.dev>
      Tested-by: default avatarcore-ci <typo3@b13.com>
      Tested-by: default avatarBenjamin Franzke <ben@bnf.dev>
      Tested-by: default avatarBenni Mack <benni@typo3.org>
      Reviewed-by: default avatarBenni Mack <benni@typo3.org>
      c2d7bdff
  8. Aug 29, 2024
  9. Aug 28, 2024