JW Tools 2 

Extension key

jwtools2

Package name

jweiland/jwtools2

Version

8.1

Language

en

Author

Stefan Froemken, Hoja Mustaffa Abdul Latheef

License

This document is published under the Creative Commons BY 4.0 license.

Rendered

Wed, 21 Jan 2026 18:58:58 +0000


jwtools2 comes with a huge set of tools for TYPO3. Each feature you want has to be activated first, before using. So, only activate, what you really need.


Table of Contents:

Introduction 

What does it do? 

Solr-Features 

We deliver a task to update all of your configured Solr indexers. There is no need to create one Solr indexer task for each PageTree anymore.

In our jwtools2 backend module you have the possibility to clear individual solr cores by indexer type.

Tasks 

Since version 3.0.0 we have a new task to execute your individual SQL-Query. You can insert multiple queries as long as you divide them by ; + Return.

TYPO3 Settings 

There are some settings for TYPO3 you can activate in ExtensionManager instead of writing PageTSConfig. As an example: One click to show page UID in PageTree.

Commands 

jwtools2:cacheQuery 

Use this command to show all entryIdentifiers of a cache tag or show cache content of a specific cache entry.

jwtools2:convertpasswords 

Use this command to update plain passwords of be_users or fe_users to hashed password using the currently configured hashing method. Be careful: This command does not know, if password in DB is a plain password or a md5 password. The Command loops over all configured Hash Methods of TYPO3. If no Hash Method was found for current password in database, the password will be updated.

Database 

If you make use of ConnectionPool::getQueryBuilderForTable() in backend you will also retrieve deleted records. To prevent that we have created a BackendRestrictionContainer. You can use it on your own or you can use our method JWeiland\Jwtools2\Database::getQueryBuilderForTable()

ViewHelpers 

Format.HtmlViewHelper 

This VH is a modified version of the original Fluid f:format.html VH. We have added a data-attribute where you can assign the data which should be used while processing lib.parseFunc. You should use this VH, if you have added if-conditions or CASE on property field or dataWrap to lib.parseFunc.

Solr.MemoryStatusViewHelper 

With this ViewHelper you will get the used Memory usage and available system RAM for selected Solr Site.

Solr.NextRunViewHelper 

Calculates next run of Solr Indexer in seconds.

SplitFileRefViewHelper 

With version 3.2.0 we have ported functionality of method GeneralUtility::split_fileref into its own ViewHelper. This is very useful, if you want your own preview image for videos for example. See an example here: Add Preview image to your videos

RouteEnhancer 

PersistedTableMapper 

If you do not have values in URL which have a relation to a table like results from an API call you do not have any storage to store the mapping from "Möller Industries" to "moeller-industries" like in realurl times.

This Abstract comes with its own table, where these static values are stored. Further it implements the static mapper interfaces to prevent generation of cHash in URL.

See header of Classes/Routing/Aspect/PersistedTableMapper for a full example.

aspects:
  uid:
    type: PersistedTableMapper
  title:
    type: PersistedTableMapper
Copied!

Installation 

Extension Manager 

Install jwtools2 in TYPO3 legacy installations with the help of Extension Manager:

  1. TYPO3 BE Login

    Login into TYPO3 backend as an administrator or system maintainer.

  2. Visit Extension Manager

    Click Extension Manager from the left side menu.

  3. Get Extension

    Choose Get Extensions from the upper selectbox.

  4. Search

    Use the search mask to search for jwtools2.

  5. Install

    Find jwtools2 in the list and install the extension with the icon on the left.

  6. Wait

    The installation will be confirmed with a blue notification on the upper right.

Composer 

Install jwtools2 in TYPO3 Composer-based installations on the shell:

  1. Shell Login

    Login into shell of your TYPO3 installation.

  2. Change Directory

    Move into the root directory of your TYPO3 installation

  3. Install

    composer req jweiland/jwtools2
    Copied!
  4. Add jwtools2 profile table

    vendor/bin/typo3 extension:setup -e jwtools2
    Copied!
    typo3/sysext/core/bin/typo3 extension:setup -e jwtools2
    Copied!

Next step 

Configure jwtools2 in Extension Settings.

Configuration 

Target group: Developers, Integrators

jwtools2 initially does nothing after installation. Each feature has to be activated manually with Extension Settings.

Extension Settings 

typo3EnableUidInPageTree 

Activate this settings to show page UIDs in front of page title in pagetree. Yes, it's the same settings like:

options.pageTree.showPageIdWithTitle = 1

typo3TransferTypoScriptCurrent 

This is a really special setting. It transports the value of current into its Subproperties. Please have a look to following TypoScript:

tt_content.list.20.avalex_avalex.stdWrap {
  setContentToCurrent = 1
  cObject = CONTENT
  cObject {
    table = tx_drstmplmodule_domain_model_configuration
    select {
      pidInList = {$drs.root}
    }
    renderObj = TEXT
    renderObj {
      current = 1
      replacement {
        10.search = avalexDefaultChurch
        10.replace.data = FIELD:church
        20.search = avalexDefaultResponsible
        20.replace.data = FIELD:responsible
        30.search = avalexDefaultStreet
        30.replace.dataWrap = {FIELD:street} {FIELD:house_number}
        40.search = avalexDefaultZIP
        40.replace.data = FIELD:zip
        50.search = avalexDefaultCity
        50.replace.data = FIELD:city
      }
    }
  }
}
Copied!

After generating the content of plugin Avalex we call stdWrap and set current to the output of the plugin with setContentToCurrent. As each pagetree has its own configuration record assigned, we have to retrieve this configuration record with CONTENT which sends data to renderObj and now we have a problem: We only have the data of configuration record available within renderObj. As we have a completely new ContentObjectRenderer-object here the current property is empty. So all the replacements in example will be done on an empty string.

If you activate typo3TransferTypoScriptCurrent we make use of a hook in TYPO3 and transfer the value of current into child ContentObjects.

This option will only work for cObj types CONTENT and RECORD.

typo3RequiredColumnsForFiles 

Add a comma separated list of column names of table sys_file or sys_file_metadata to set these columns as required. If these columns are not filled for an image it is not selectable in FileBrowser. It can not be inserted into a ContentElement or record.

typo3ExcludeVideoFilesFromFalFilter 

Hidden files are normally hidden in filelist module of TYPO3. Ok, you can activate hidden files in filelist in your User settings, but may be this Checkbox was hidden by an Integrator or Administrator. Or maybe showing all these system files like .htaccess, .htpasswd, .DS_Store is a little bit too much. If your editor creates a new external video TYPO3 stored this video information in a .youtube and/or .vimeo file. If a title could not be created the files name is still ".youtube". On Mac and Linux Operating Systems files starting with a dot are handled as hidden files. So it is not possible for an editor to rename, edit or show this file. Activating this option will still not show hidden files in general, except files with .youtube and .vimeo file ending.

typo3ApplyFixForMoveTranslatedContentElements 

If you move a content element (tt_content) from one col to another (backend_layout) the related translated records will not be moved to new col. This is a problem for over 11 years in TYPO3.

See: https://forge.typo3.org/issues/21161

Activate this option to apply a patch (hook) to solve this problem. We add the missing DB queries to move the related translated records to new colPos, too.

BUT: Currently I haven't found a solution to hook into JavaScript of TYPO3 to move the translated records directly. So after a move of tt_content records you have to reload the right frame on your own. If you have a cool idea how to solve that the nice way feel free to create a PullRequest to jwtools2 ;-)

reduceCategoriesToPageTree 

Activate this settings to reduce all available sys_category records in Categorytrees to categories which are created in current pagetree.

We try to get the current Page UID you're editing and slide up until we find a page which is configured as isSiteRoot. Now we get all sys_category records for this pagetree and remove all disallowed categories from Categorytrees.

enableSqlQueryTask 

Adds a new task to scheduler to execute your individual SQL-Query.

enableContextMenuToUpdateFileMetadata 

Adds a new entry Create/Update file metadata into context menu of filelist module to create a missing file metadata record or to update the existing metadata record (sys_file_metadata).

This entry will read original width/height from file and uses them to create a NEW file (imagemagick) with same dimension, 100% quality and colorspace RGB to update width/height also in EXIF metadata. That's needed for the registered file extractors like OnlineHelper and EXT:tika which may read width/heigth from EXIF instead, which could be wrong in some cases. Because of different image tools (Photoshop, Paint, Gimp) the original file may result in a different image size after process with imagemagick/graphicsmagick.

enableCachingFrameworkLogger 

With help of the Caching Framework Logger you can analyze each cache entry just before it was written to cache.

This feature is helpful to inform you, if a "wrong" cache entry was written.

If you activate that feature you (as administrator) have to create one or more cache expression records on root page (PID: 0). Give it a title and enter an expression. If you just search for a word in a cache entry leave checkbox for regular expression untouched. Internally it will start a PHP:mb_strpos search, so please be aware of case sensitive strings. For more complex search activate checkbox for regular expression. It starts a PHP:preg_match search internally. You don't need to prepend/append a delimiter. It uses "/" internally and escaped values for you automatically.

enableReportProvider 

If EXT:reports is installed and activated this option will add additional information to reports module. These information will also be available in status report mail, if configured in scheduler.

Currently following information will be shown:

  • List of all (not only security related) updatable extensions incl. version number.
  • ...

sendUpdatableExtensionsWithSeverity 

Default: info

Only valid, if option enableReportProvider was activated and you make use of the System Status Update (reports) task.

The information about updatable extensions has a severity of type INFO by default. It does not make sense for us to categorize bugfix extensions as WARNING. But why should YOU decide about that?

There is a checkbox called `Always send notification mail (not only on errors or warnings)`` in ``System Status Update (reports)` task which is deactivated by default. As we categorize updatable extensions as INFO you will not be notified about them in status mail. But if you activate the checkbox in task you will be notified about various system status and of cause updatable extensions with each scheduler run. Yes, this can be a lot of mails and a lot of content to search for the right section. Maybe a frustrating job.

Setting sendUpdatableExtensionsWithSeverity to warning will set severity of updatable extensions to WARNING. Now, you can leave the checkbox in task deactivated and you will only get mails, if there are warnings in your TYPO3 system and/or updatable extensions.

solrEnable 

Activates Solr feature in our jwtools2 Backend module where you can manage your Solr cores and clear individual index types.

solrSchedulerTaskUid 

If you make use of our Solr Scheduler Task after activating solrEnable you must copy and paste the UID of our Scheduler Task into this setting. We need it to show Scheduler Task related information in our Solr backend module.

Known Problems 

There may be a problem with our Solr features. We only have a solution for one EXT:Solr-Version. As we hook into various Solr files, functionality may break if you update to a newer Solr Version.

Administrator manual 

This chapter describes how to manage the extension from a superuser point of view.

Upgrade 

If you upgrade EXT:jwtools2 to a newer version, please read this section carefully!

Upgrade to Version 7.0.0 

Removed Option: typo3UploadFieldsInTopOfEB 

The typo3UploadFieldsInTopOfEB option has been removed from TYPO3 before 6.2 version. This change was necessitated by the introduction of a paginator in File Abstraction Layer (FAL). As a result, it's no longer possible to adjust the position of File upload or create fields above the list without Xclass.

Compatibility Fixes and Updates 

  • Compatibility fix for TYPO3 12
  • Testing Framework migrated to TYPO3 Testing Framework

Deprecated and Obsolete Features 

  • Remove support for TYPO3 11 and lower versions
  • Removed jwtools2:executeExtensionUpdate command line controller as it is obsolete.
  • Removed deprecated functions and usages

Contribute 

Contribution to jwtools2 is very welcome.

If you wish to contribute, please follow these conventions:

Writing Issues 

  • If you find a problem in the extension, please write an issue.
  • If you can fix the problem yourself, please submit a pull request. In this case, it is not necessary to create an issue first.

Submitting a Pull Request 

Please see the general GitHub documentation for more information, for example Creating a pull request

ChangeLog 

Version 8.1.1 

  • [TASK] Simplify access restriction in Backend Module configuration

Version 8.1.0 

  • [BUGFIX] Removed ModifyElementInformationHook patch applied from v7.2

Version 8.0.3 

  • [BUGFIX] Fixed issue with Initialization method where uid is identifier in request

Version 8.0.2 

  • Update testing directory

Version 8.0.1 

  • [BUGFIX] Fixed ext_emconf for updating TYPO3 Version

Version 8.0.0 

  • [TASK] Compatibility fix for TYPO3 13
  • [TASK] Dropped older version compatibility
  • [TASK] Fixed deprecations and removed obsolete API calls
  • [TASK] Replaced removed hooks with PSR-14 Events

Version 7.1.2 

  • [BUGFIX] Correct use statement to QueryGenerator
  • [TASK] Update test environment
  • [DOCS] Switch to new rendering

Version 7.2.0 

  • [BUGFIX] Remove ModifyElementInformationHook as it is native in TYPO3 v12

Version 7.1.1 

  • [BUGFIX] Fixed argument type casting issue when the scheduler is saved with index queue task.

Version 7.1.0 

  • [FEATURE] Throw Exception if cache expression matches to prevend inserting invalid cache entries

Version 7.0.2 

  • [BUGFIX] Get Server request from global TYPO3_REQUEST in CF logger

Version 7.0.1 

  • [PERFORMANCE] Prevent calling getListOfAllowedCategoryUids multiple times

Version 7.0.0 

  • [TASK] Compatibility fix for TYPO3 12
  • [TASK] Testing Framework migrated to TYPO3 Tesing Framework
  • [TASK] Remove support for TYPO3 11 and lower versions
  • [TASK] Removed jwtools2:executeExtensionUpdate command line controller as it is obsolete.
  • [TASK] Removed typo3UploadFieldsInTopOfEB configuration as it is not possible to change upload form without Xclass.
  • [TASK] Removed deprecated functions and usages

Version 6.0.6 

  • [BUGFIX] Do not load FileBrowser JS in case of file or folder mode

Version 6.0.5 

  • [BUGFIX] Repair upload form on top of EB for TYPO3 11

Version 6.0.4 

  • [BUGFIX] Allow switching the folders in FileBrowser. JS error.

Version 6.0.3 

  • Use linkThisScript, if there is no returnUrl in URL params

Version 6.0.2 

  • Overwrite FileBrowser for file and folder requests only

Version 6.0.1 

  • Translate columns in infobox of non-selectable image feature

Version 6.0.0 

  • Add TYPO3 11 compatibility
  • Remove TYPO3 9 compatibility
  • Remove EXT:realurl features
  • Add comma to last entry in array elements
  • Remove interface section from TCA
  • Remove LinkHandler XCLASSes. Override file/folder LinkHandlers of TYPO3 directly

Version 5.10.2 

  • Add FlashMessage for non selectable files to FileBrowser

Version 5.10.1 

  • ModifyElementInformationHook get's lost. Re-add that file

Version 5.10.0 

  • Add option to show "edit" button in element information view.

Version 5.9.0 

  • Add option to define columns of sys_file/sys_file_metadata as required.

Version 5.8.1 

  • Reduce LiveSearch to UID column, if just an INT is given

Version 5.8.0 

  • Add feature to enable performance in LiveSearch for admins

Version 5.7.0 

  • Add Caching Framework analyzer incl. Logging

Version 5.6.1 

  • Better short description for query cache command
  • Use int values for array keys in table formatter for query cache command

Version 5.6.0 

  • Add cache query command

Version 5.5.1 

Version 5.5.0 

Version 5.4.1 

  • Add option to send reports about updatable extensions as INFO or WARNING

Version 5.4.0 

  • Add report to show updatable TYPO3 extensions

Version 5.3.2 

  • Show create/update file metadata item just for images and not SVG, PDF and folders.

Version 5.3.1 

  • Update width/height in EXIF before starting TYPO3s extractor service

Version 5.3.0 

  • Add new context menu item to create/update file metadata incl. width/height

Version 5.2.2 

  • EXT:solr in version 11.0.4 has added some more strict types. To be compatible with new version we have added these strict types in our XClasses, too. But that way we need EXT:solr at least in version 11.0.4.

Version 5.2.1 

  • Remove "exclude" from sys_language_uid of stored_routes table

Version 5.2.0 

  • Allow execution of multiple SQL queries in task

Version 5.1.0 

  • Add PersistedTableMapper Abstract to store static values without cHash
  • Change record-Attribute to data in HtmlFormat VH

Version 5.0.0 

  • Add TYPO3 10.4 compatibility
  • Remove TYPO3 8.7 compatibility
  • Add HtmlViewHelper with additional record attribute

Version 4.3.0 

  • Add new option "typo3ExcludeVideoFilesFromFalFilter"

Version 4.2.2 

  • Implement better icons

Version 4.2.1 

  • Implement new Extension Icon
  • Security: Do not show complete hashed password in debug output

Version 4.2.0 

  • Add new Symfony Command to convert plain user passwords to salted hashes

Version 4.1.0 

  • New option to show upload fields in top of LinkHandler and ElementBrowser

Version 4.0.1 

  • CleanUp
  • Use progress from response in Solr Progressbar

Version 4.0.0 

With this Update we do not support EXT:solr versions less than 9.0.0 anymore.

  • Use of new Site domain model.
  • Removed Solr.IndexStatusViewHelper as this Feature is completely realized with JavaScript now.
  • Removed module "Clear full Index Queue" as there is a JS-Button for that in overview now.
  • Performance: Overview starts much faster now.
  • Add Button to retrieve Solr Progress for all Solr Sites

Version 3.2.0 

  • Added SplitFileRef ViewHelper to split file paths into pieces

Version 3.1.1 

  • Better support for solr from version 3.0 until 9.0

Version 3.1.0 

  • We have fixed two solr patches. Current they are merged for solr version 10, but if you need them for earlier versions, you can activate them as XClasses in EM with option 'solrApplyPatches'. https://github.com/TYPO3-Solr/ext-solr/pull/2323/ https://github.com/TYPO3-Solr/ext-solr/pull/2324/

Version 3.0.1 

  • Add documentation
  • Better description in ext_emconf.php

Version 3.0.0 

  • Add scheduler task to execute SQL-Queries
  • Remove TYPO3 7.6 compatibility
  • Add compatibility for TYPO3 9.5

Sitemap