From 6655858dcfaa032936e40667d577a0a4ab6044a6 Mon Sep 17 00:00:00 2001 From: Rishabh Gupta Date: Thu, 14 Aug 2025 19:15:00 +0530 Subject: [PATCH] fix: move privacy notices to standard admin position --- src/js/_enqueues/admin/privacy-tools.js | 119 +++++++++++++----------- 1 file changed, 66 insertions(+), 53 deletions(-) diff --git a/src/js/_enqueues/admin/privacy-tools.js b/src/js/_enqueues/admin/privacy-tools.js index 4e12939be7621..9ef81da34d2f0 100644 --- a/src/js/_enqueues/admin/privacy-tools.js +++ b/src/js/_enqueues/admin/privacy-tools.js @@ -14,46 +14,24 @@ jQuery( function( $ ) { $action.children( '.' + state ).removeClass( 'hidden' ); } - function clearResultsAfterRow( $requestRow ) { - $requestRow.removeClass( 'has-request-results' ); - - if ( $requestRow.next().hasClass( 'request-results' ) ) { - $requestRow.next().remove(); - } + function getUserEmail( $requestRow ) { + var $emailCell = $requestRow.find( '.column-email a[href^="mailto:"]' ); + return $emailCell.length ? $emailCell.text() : ''; } - function appendResultsAfterRow( $requestRow, classes, summaryMessage, additionalMessages ) { - var itemList = '', - resultRowClasses = 'request-results'; - - clearResultsAfterRow( $requestRow ); - - if ( additionalMessages.length ) { - $.each( additionalMessages, function( index, value ) { - itemList = itemList + '
  • ' + value + '
  • '; - }); - itemList = ''; - } + function showAdminNotice( message, type ) { + var $headerEnd = $( '.wp-header-end' ), + $notice = $( '

    ' + message + '

    ' ); - $requestRow.addClass( 'has-request-results' ); - - if ( $requestRow.hasClass( 'status-request-confirmed' ) ) { - resultRowClasses = resultRowClasses + ' status-request-confirmed'; - } + $( '.wrap > .notice' ).remove(); - if ( $requestRow.hasClass( 'status-request-failed' ) ) { - resultRowClasses = resultRowClasses + ' status-request-failed'; + if ( $headerEnd.length ) { + $headerEnd.after( $notice ); + } else { + $( '.wrap' ).find( '> h1' ).after( $notice ); } - $requestRow.after( function() { - return '' + - '' + - '' + - ''; - }); + $( document ).trigger( 'wp-notice-added' ); } $( '.export-personal-data-handle' ).on( 'click', function( event ) { @@ -73,19 +51,27 @@ jQuery( function( $ ) { $rowActions.addClass( 'processing' ); $action.trigger( 'blur' ); - clearResultsAfterRow( $requestRow ); setExportProgress( 0 ); function onExportDoneSuccess( zipUrl ) { - var summaryMessage = __( 'This user’s personal data export link was sent.' ); + var userEmail = getUserEmail( $requestRow ), + summaryMessage; if ( 'undefined' !== typeof zipUrl ) { - summaryMessage = __( 'This user’s personal data export file was downloaded.' ); + summaryMessage = userEmail ? + /* translators: %s: User's email address. */ + wp.i18n.sprintf( __( 'Personal data export file for %s was downloaded.' ), userEmail ) : + __( 'This user’s personal data export file was downloaded.' ); + } else { + summaryMessage = userEmail ? + /* translators: %s: User's email address. */ + wp.i18n.sprintf( __( 'Personal data export link for %s was sent.' ), userEmail ) : + __( 'This user’s personal data export link was sent.' ); } setActionState( $action, 'export-personal-data-success' ); - appendResultsAfterRow( $requestRow, 'notice-success', summaryMessage, [] ); + showAdminNotice( summaryMessage, 'success' ); if ( 'undefined' !== typeof zipUrl ) { window.location = zipUrl; @@ -97,14 +83,20 @@ jQuery( function( $ ) { } function onExportFailure( errorMessage ) { - var summaryMessage = __( 'An error occurred while attempting to export personal data.' ); + var userEmail = getUserEmail( $requestRow ), + summaryMessage = userEmail ? + /* translators: %s: User's email address. */ + wp.i18n.sprintf( __( 'An error occurred while attempting to export personal data for %s.' ), userEmail ) : + __( 'An error occurred while attempting to export personal data.' ); setActionState( $action, 'export-personal-data-failed' ); if ( errorMessage ) { - appendResultsAfterRow( $requestRow, 'notice-error', summaryMessage, [ errorMessage ] ); + summaryMessage += ' ' + errorMessage; } + showAdminNotice( summaryMessage, 'error' ); + setTimeout( function() { $rowActions.removeClass( 'processing' ); }, 500 ); } @@ -178,41 +170,62 @@ jQuery( function( $ ) { $rowActions.addClass( 'processing' ); $action.trigger( 'blur' ); - clearResultsAfterRow( $requestRow ); setErasureProgress( 0 ); function onErasureDoneSuccess() { - var summaryMessage = __( 'No personal data was found for this user.' ), - classes = 'notice-success'; + var userEmail = getUserEmail( $requestRow ), + summaryMessage, + noticeType = 'success'; setActionState( $action, 'remove-personal-data-success' ); if ( false === hasRemoved ) { if ( false === hasRetained ) { - summaryMessage = __( 'No personal data was found for this user.' ); + summaryMessage = userEmail ? + /* translators: %s: User's email address. */ + wp.i18n.sprintf( __( 'No personal data was found for %s.' ), userEmail ) : + __( 'No personal data was found for this user.' ); } else { - summaryMessage = __( 'Personal data was found for this user but was not erased.' ); - classes = 'notice-warning'; + summaryMessage = userEmail ? + /* translators: %s: User's email address. */ + wp.i18n.sprintf( __( 'Personal data was found for %s but was not erased.' ), userEmail ) : + __( 'Personal data was found for this user but was not erased.' ); + noticeType = 'warning'; } } else { if ( false === hasRetained ) { - summaryMessage = __( 'All of the personal data found for this user was erased.' ); + summaryMessage = userEmail ? + /* translators: %s: User's email address. */ + wp.i18n.sprintf( __( 'Personal data erasure for %s completed.' ), userEmail ) : + __( 'All of the personal data found for this user was erased.' ); } else { - summaryMessage = __( 'Personal data was found for this user but some of the personal data found was not erased.' ); - classes = 'notice-warning'; + summaryMessage = userEmail ? + /* translators: %s: User's email address. */ + wp.i18n.sprintf( __( 'Personal data erasure for %s completed, but some data was retained.' ), userEmail ) : + __( 'Personal data was found for this user but some of the personal data found was not erased.' ); + noticeType = 'warning'; } } - appendResultsAfterRow( $requestRow, classes, summaryMessage, messages ); + + if ( messages.length ) { + summaryMessage += ' ' + messages.join( ' ' ); + } + + showAdminNotice( summaryMessage, noticeType ); setTimeout( function() { $rowActions.removeClass( 'processing' ); }, 500 ); } function onErasureFailure() { - var summaryMessage = __( 'An error occurred while attempting to find and erase personal data.' ); + var userEmail = getUserEmail( $requestRow ), + summaryMessage = userEmail ? + /* translators: %s: User's email address. */ + wp.i18n.sprintf( __( 'An error occurred while attempting to find and erase personal data for %s.' ), userEmail ) : + __( 'An error occurred while attempting to find and erase personal data.' ); setActionState( $action, 'remove-personal-data-failed' ); - - appendResultsAfterRow( $requestRow, 'notice-error', summaryMessage, [] ); + + showAdminNotice( summaryMessage, 'error' ); setTimeout( function() { $rowActions.removeClass( 'processing' ); }, 500 ); }