Deprecation: #98168 - Binding context menu item to this 

See forge#98168

Description 

Due to historical reasons, a context menu item is bound to this in its callback action which was used to access the context menu item's dataset. The invocation of assigned callback actions is adapted to pass the dataset as the 3rd argument.

Binding the context menu item to this in the callback is now marked as deprecated.

Impact 

Using this in a context menu item callback will trigger a deprecated log entry in the browser's console.

Affected installations 

All extensions providing custom context menu actions are affected.

Migration 

To access data attributes, use the dataset argument passed as the 3rd argument in the context menu callback action.

// Before
ContextMenuActions.renameFile(table, uid): void {
  const actionUrl = $(this).data('action-url');
  top.TYPO3.Backend.ContentContainer.setUrl(
    actionUrl + '&target=' + encodeURIComponent(uid) + '&returnUrl=' + ContextMenuActions.getReturnUrl()
  );
}

// After
ContextMenuActions.renameFile(table, uid, dataset): void {
  const actionUrl = dataset.actionUrl;
  top.TYPO3.Backend.ContentContainer.setUrl(
    actionUrl + '&target=' + encodeURIComponent(uid) + '&returnUrl=' + ContextMenuActions.getReturnUrl()
  );
}
Copied!