PHP 8.1.33
Preview: privacy-tools.js Size: 10.67 KB
/home/jambtst2015/public_html/www.securiskbrokers.com/wp-admin/js/privacy-tools.js

/**
 * Interactions used by the User Privacy tools in WordPress.
 *
 * @output wp-admin/js/privacy-tools.js
 */

// Privacy request action handling.
jQuery( function( $ ) {
	var __ = wp.i18n.__,
		copiedNoticeTimeout;

	function setActionState( $action, state ) {
		$action.children().addClass( 'hidden' );
		$action.children( '.' + state ).removeClass( 'hidden' );
	}

	function clearResultsAfterRow( $requestRow ) {
		$requestRow.removeClass( 'has-request-results' );

		if ( $requestRow.next().hasClass( 'request-results' ) ) {
			$requestRow.next().remove();
		}
	}

	function appendResultsAfterRow( $requestRow, classes, summaryMessage, additionalMessages ) {
		var itemList = '',
			resultRowClasses = 'request-results';

		clearResultsAfterRow( $requestRow );

		if ( additionalMessages.length ) {
			$.each( additionalMessages, function( index, value ) {
				itemList = itemList + '<li>' + value + '</li>';
			});
			itemList = '<ul>' + itemList + '</ul>';
		}

		$requestRow.addClass( 'has-request-results' );

		if ( $requestRow.hasClass( 'status-request-confirmed' ) ) {
			resultRowClasses = resultRowClasses + ' status-request-confirmed';
		}

		if ( $requestRow.hasClass( 'status-request-failed' ) ) {
			resultRowClasses = resultRowClasses + ' status-request-failed';
		}

		$requestRow.after( function() {
			return '<tr class="' + resultRowClasses + '"><th colspan="5">' +
				'<div class="notice inline notice-alt ' + classes + '" role="alert">' +
				'<p>' + summaryMessage + '</p>' +
				itemList +
				'</div>' +
				'</td>' +
				'</tr>';
		});
	}

	$( '.export-personal-data-handle' ).on( 'click', function( event ) {
		var $this          = $( this ),
			$action        = $this.parents( '.export-personal-data' ),
			$requestRow    = $this.parents( 'tr' ),
			$progress      = $requestRow.find( '.export-progress' ),
			$rowActions    = $this.parents( '.row-actions' ),
			requestID      = $action.data( 'request-id' ),
			nonce          = $action.data( 'nonce' ),
			exportersCount = $action.data( 'exporters-count' ),
			sendAsEmail    = $action.data( 'send-as-email' ) ? true : false;

		event.preventDefault();
		event.stopPropagation();

		$rowActions.addClass( 'processing' );

		$action.trigger( 'blur' );
		clearResultsAfterRow( $requestRow );
		setExportProgress( 0 );

		function onExportDoneSuccess( zipUrl ) {
			var summaryMessage = __( 'This user&#8217;s personal data export link was sent.' );

			if ( 'undefined' !== typeof zipUrl ) {
				summaryMessage = __( 'This user&#8217;s personal data export file was downloaded.' );
			}

			setActionState( $action, 'export-personal-data-success' );

			appendResultsAfterRow( $requestRow, 'notice-success', summaryMessage, [] );

			if ( 'undefined' !== typeof zipUrl ) {
				window.location = zipUrl;
			} else if ( ! sendAsEmail ) {
				onExportFailure( __( 'No personal data export file was generated.' ) );
			}

			setTimeout( function() { $rowActions.removeClass( 'processing' ); }, 500 );
		}

		function onExportFailure( errorMessage ) {
			var summaryMessage = __( 'An error occurred while attempting to export personal data.' );

			setActionState( $action, 'export-personal-data-failed' );

			if ( errorMessage ) {
				appendResultsAfterRow( $requestRow, 'notice-error', summaryMessage, [ errorMessage ] );
			}

			setTimeout( function() { $rowActions.removeClass( 'processing' ); }, 500 );
		}

		function setExportProgress( exporterIndex ) {
			var progress       = ( exportersCount > 0 ? exporterIndex / exportersCount : 0 ),
				progressString = Math.round( progress * 100 ).toString() + '%';

			$progress.html( progressString );
		}

		function doNextExport( exporterIndex, pageIndex ) {
			$.ajax(
				{
					url: window.ajaxurl,
					data: {
						action: 'wp-privacy-export-personal-data',
						exporter: exporterIndex,
						id: requestID,
						page: pageIndex,
						security: nonce,
						sendAsEmail: sendAsEmail
					},
					method: 'post'
				}
			).done( function( response ) {
				var responseData = response.data;

				if ( ! response.success ) {
					// e.g. invalid request ID.
					setTimeout( function() { onExportFailure( response.data ); }, 500 );
					return;
				}

				if ( ! responseData.done ) {
					setTimeout( doNextExport( exporterIndex, pageIndex + 1 ) );
				} else {
					setExportProgress( exporterIndex );
					if ( exporterIndex < exportersCount ) {
						setTimeout( doNextExport( exporterIndex + 1, 1 ) );
					} else {
						setTimeout( function() { onExportDoneSuccess( responseData.url ); }, 500 );
					}
				}
			}).fail( function( jqxhr, textStatus, error ) {
				// e.g. Nonce failure.
				setTimeout( function() { onExportFailure( error ); }, 500 );
			});
		}

		// And now, let's begin.
		setActionState( $action, 'export-personal-data-processing' );
		doNextExport( 1, 1 );
	});

	$( '.remove-personal-data-handle' ).on( 'click', function( event ) {
		var $this         = $( this ),
			$action       = $this.parents( '.remove-personal-data' ),
			$requestRow   = $this.parents( 'tr' ),
			$progress     = $requestRow.find( '.erasure-progress' ),
			$rowActions   = $this.parents( '.row-actions' ),
			requestID     = $action.data( 'request-id' ),
			nonce         = $action.data( 'nonce' ),
			erasersCount  = $action.data( 'erasers-count' ),
			hasRemoved    = false,
			hasRetained   = false,
			messages      = [];

		event.preventDefault();
		event.stopPropagation();

		$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';

			setActionState( $action, 'remove-personal-data-success' );

			if ( false === hasRemoved ) {
				if ( false === hasRetained ) {
					summaryMessage = __( 'No personal data was found for this user.' );
				} else {
					summaryMessage = __( 'Personal data was found for this user but was not erased.' );
					classes = 'notice-warning';
				}
			} else {
				if ( false === hasRetained ) {
					summaryMessage = __( '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';
				}
			}
			appendResultsAfterRow( $requestRow, classes, summaryMessage, messages );

			setTimeout( function() { $rowActions.removeClass( 'processing' ); }, 500 );
		}

		function onErasureFailure() {
			var summaryMessage = __( 'An error occurred while attempting to find and erase personal data.' );

			setActionState( $action, 'remove-personal-data-failed' );

			appendResultsAfterRow( $requestRow, 'notice-error', summaryMessage, [] );

			setTimeout( function() { $rowActions.removeClass( 'processing' ); }, 500 );
		}

		function setErasureProgress( eraserIndex ) {
			var progress       = ( erasersCount > 0 ? eraserIndex / erasersCount : 0 ),
				progressString = Math.round( progress * 100 ).toString() + '%';

			$progress.html( progressString );
		}

		function doNextErasure( eraserIndex, pageIndex ) {
			$.ajax({
				url: window.ajaxurl,
				data: {
					action: 'wp-privacy-erase-personal-data',
					eraser: eraserIndex,
					id: requestID,
					page: pageIndex,
					security: nonce
				},
				method: 'post'
			}).done( function( response ) {
				var responseData = response.data;

				if ( ! response.success ) {
					setTimeout( function() { onErasureFailure(); }, 500 );
					return;
				}
				if ( responseData.items_removed ) {
					hasRemoved = hasRemoved || responseData.items_removed;
				}
				if ( responseData.items_retained ) {
					hasRetained = hasRetained || responseData.items_retained;
				}
				if ( responseData.messages ) {
					messages = messages.concat( responseData.messages );
				}
				if ( ! responseData.done ) {
					setTimeout( doNextErasure( eraserIndex, pageIndex + 1 ) );
				} else {
					setErasureProgress( eraserIndex );
					if ( eraserIndex < erasersCount ) {
						setTimeout( doNextErasure( eraserIndex + 1, 1 ) );
					} else {
						setTimeout( function() { onErasureDoneSuccess(); }, 500 );
					}
				}
			}).fail( function() {
				setTimeout( function() { onErasureFailure(); }, 500 );
			});
		}

		// And now, let's begin.
		setActionState( $action, 'remove-personal-data-processing' );

		doNextErasure( 1, 1 );
	});

	// Privacy Policy page, copy action.
	$( document ).on( 'click', function( event ) {
		var $parent,
			range,
			$target = $( event.target ),
			copiedNotice = $target.siblings( '.success' );

		clearTimeout( copiedNoticeTimeout );

		if ( $target.is( 'button.privacy-text-copy' ) ) {
			$parent = $target.closest( '.privacy-settings-accordion-panel' );

			if ( $parent.length ) {
				try {
					var documentPosition = document.documentElement.scrollTop,
						bodyPosition     = document.body.scrollTop;

					// Setup copy.
					window.getSelection().removeAllRanges();

					// Hide tutorial content to remove from copied content.
					range = document.createRange();
					$parent.addClass( 'hide-privacy-policy-tutorial' );

					// Copy action.
					range.selectNodeContents( $parent[0] );
					window.getSelection().addRange( range );
					document.execCommand( 'copy' );

					// Reset section.
					$parent.removeClass( 'hide-privacy-policy-tutorial' );
					window.getSelection().removeAllRanges();

					// Return scroll position - see #49540.
					if ( documentPosition > 0 && documentPosition !== document.documentElement.scrollTop ) {
						document.documentElement.scrollTop = documentPosition;
					} else if ( bodyPosition > 0 && bodyPosition !== document.body.scrollTop ) {
						document.body.scrollTop = bodyPosition;
					}

					// Display and speak notice to indicate action complete.
					copiedNotice.addClass( 'visible' );
					wp.a11y.speak( __( 'The suggested policy text has been copied to your clipboard.' ) );

					// Delay notice dismissal.
					copiedNoticeTimeout = setTimeout( function() {
						copiedNotice.removeClass( 'visible' );
					}, 3000 );
				} catch ( er ) {}
			}
		}
	});

	// Label handling to focus the create page button on Privacy settings page.
	$( 'body.options-privacy-php label[for=create-page]' ).on( 'click', function( e ) {
		e.preventDefault();
		$( 'input#create-page' ).trigger( 'focus' );
	} );

	// Accordion handling in various new Privacy settings pages.
	$( '.privacy-settings-accordion' ).on( 'click', '.privacy-settings-accordion-trigger', function() {
		var isExpanded = ( 'true' === $( this ).attr( 'aria-expanded' ) );

		if ( isExpanded ) {
			$( this ).attr( 'aria-expanded', 'false' );
			$( '#' + $( this ).attr( 'aria-controls' ) ).attr( 'hidden', true );
		} else {
			$( this ).attr( 'aria-expanded', 'true' );
			$( '#' + $( this ).attr( 'aria-controls' ) ).attr( 'hidden', false );
		}
	} );
});

Directory Contents

Dirs: 1 × Files: 97

Name Size Perms Modified Actions
widgets DIR
- drwxr-xr-x 2024-12-09 13:54:39
Edit Download
2.86 KB lrw-r--r-- 2024-10-13 23:09:12
Edit Download
758 B lrw-r--r-- 2024-10-13 23:09:12
Edit Download
6.24 KB lrw-r--r-- 2023-09-18 02:51:24
Edit Download
2.95 KB lrw-r--r-- 2023-09-18 02:51:24
Edit Download
5.66 KB lrw-r--r-- 2021-02-24 00:45:04
Edit Download
2.04 KB lrw-r--r-- 2022-04-09 00:07:18
Edit Download
11.32 KB lrw-r--r-- 2020-07-28 03:35:02
Edit Download
3.01 KB lrw-r--r-- 2024-06-27 16:55:22
Edit Download
9.54 KB lrw-r--r-- 2021-03-18 23:01:04
Edit Download
3.40 KB lrw-r--r-- 2022-04-09 00:07:18
Edit Download
2.85 KB lrw-r--r-- 2024-02-12 00:14:20
Edit Download
1.28 KB lrw-r--r-- 2022-04-09 00:07:18
Edit Download
61.00 KB lrw-r--r-- 2025-02-04 08:26:20
Edit Download
23.03 KB lrw-r--r-- 2025-02-04 08:26:20
Edit Download
3.35 KB lrw-r--r-- 2021-03-18 23:01:04
Edit Download
1.18 KB lrw-r--r-- 2021-03-18 23:01:04
Edit Download
1.98 KB lrw-r--r-- 2021-02-24 00:45:04
Edit Download
287.36 KB lrw-r--r-- 2025-02-04 08:03:16
Edit Download
109.16 KB lrw-r--r-- 2025-02-04 08:03:16
Edit Download
109.90 KB lrw-r--r-- 2025-09-30 21:02:50
Edit Download
46.24 KB lrw-r--r-- 2025-09-30 21:02:50
Edit Download
70.05 KB lrw-r--r-- 2024-06-21 22:17:14
Edit Download
27.41 KB lrw-r--r-- 2024-06-21 22:17:14
Edit Download
26.92 KB lrw-r--r-- 2024-04-12 21:47:14
Edit Download
8.59 KB lrw-r--r-- 2024-06-27 16:55:22
Edit Download
36.67 KB lrw-r--r-- 2024-08-26 02:37:20
Edit Download
15.01 KB lrw-r--r-- 2024-08-26 02:37:20
Edit Download
41.61 KB lrw-r--r-- 2024-04-12 21:47:14
Edit Download
13.14 KB lrw-r--r-- 2024-06-27 16:55:22
Edit Download
43.98 KB lrw-r--r-- 2024-10-07 20:57:16
Edit Download
12.76 KB lrw-r--r-- 2024-10-07 20:57:16
Edit Download
7.67 KB lrw-r--r-- 2023-07-18 02:03:26
Edit Download
5.41 KB lrw-r--r-- 2023-10-10 01:31:28
Edit Download
3.65 KB lrw-r--r-- 2023-10-10 01:31:28
Edit Download
39.98 KB lrw-r--r-- 2024-08-28 20:45:12
Edit Download
15.15 KB lrw-r--r-- 2024-08-28 20:45:12
Edit Download
20.17 KB lrw-r--r-- 2024-09-30 22:24:14
Edit Download
9.41 KB lrw-r--r-- 2024-09-30 22:24:14
Edit Download
7.61 KB lrw-r--r-- 2021-03-18 23:01:04
Edit Download
2.93 KB lrw-r--r-- 2021-03-18 23:01:04
Edit Download
23.09 KB lrw-r--r-- 2021-11-03 23:40:00
Edit Download
890 B lrw-r--r-- 2021-02-24 00:45:04
Edit Download
423 B lrw-r--r-- 2021-02-24 00:45:04
Edit Download
3.89 KB lrw-r--r-- 2021-03-18 23:01:04
Edit Download
1.70 KB lrw-r--r-- 2021-03-18 23:01:04
Edit Download
1.27 KB lrw-r--r-- 2021-02-24 00:45:04
Edit Download
611 B lrw-r--r-- 2022-04-09 00:07:18
Edit Download
3.38 KB lrw-r--r-- 2021-01-22 17:32:04
Edit Download
1.13 KB lrw-r--r-- 2023-02-02 21:36:32
Edit Download
6.61 KB lrw-r--r-- 2024-10-07 06:49:18
Edit Download
2.38 KB lrw-r--r-- 2024-10-07 06:49:18
Edit Download
59.07 KB lrw-r--r-- 2025-09-30 21:02:50
Edit Download
29.29 KB lrw-r--r-- 2025-09-30 21:02:50
Edit Download
4.14 KB lrw-r--r-- 2021-01-22 17:32:04
Edit Download
1.10 KB lrw-r--r-- 2021-01-22 17:32:04
Edit Download
1.31 KB lrw-r--r-- 2023-06-24 03:09:30
Edit Download
847 B lrw-r--r-- 2023-06-24 03:09:30
Edit Download
6.92 KB lrw-r--r-- 2021-03-18 23:01:04
Edit Download
2.35 KB lrw-r--r-- 2023-02-02 21:36:32
Edit Download
38.68 KB lrw-r--r-- 2024-11-28 02:23:16
Edit Download
18.40 KB lrw-r--r-- 2024-11-28 02:23:16
Edit Download
18.40 KB lrw-r--r-- 2023-01-10 14:30:14
Edit Download
6.55 KB lrw-r--r-- 2022-09-23 23:55:30
Edit Download
10.67 KB lrw-r--r-- 2024-06-21 22:17:14
Edit Download
5.03 KB lrw-r--r-- 2024-06-21 22:17:14
Edit Download
33.92 KB lrw-r--r-- 2024-10-14 00:49:14
Edit Download
17.97 KB lrw-r--r-- 2024-10-14 00:49:14
Edit Download
876 B lrw-r--r-- 2020-07-07 22:55:04
Edit Download
620 B lrw-r--r-- 2020-07-07 22:55:04
Edit Download
13.15 KB lrw-r--r-- 2023-12-28 20:27:16
Edit Download
6.13 KB lrw-r--r-- 2023-12-28 20:27:16
Edit Download
6.10 KB lrw-r--r-- 2024-08-24 02:47:16
Edit Download
2.20 KB lrw-r--r-- 2024-08-24 02:47:16
Edit Download
3.20 KB lrw-r--r-- 2024-09-08 02:44:18
Edit Download
1.53 KB lrw-r--r-- 2024-09-08 02:44:18
Edit Download
10.88 KB lrw-r--r-- 2021-03-18 23:01:04
Edit Download
3.00 KB lrw-r--r-- 2023-02-02 21:36:32
Edit Download
5.64 KB lrw-r--r-- 2024-02-19 03:16:14
Edit Download
2.22 KB lrw-r--r-- 2024-02-19 03:16:14
Edit Download
4.77 KB lrw-r--r-- 2022-04-12 23:37:14
Edit Download
1.96 KB lrw-r--r-- 2022-04-12 23:37:14
Edit Download
24.79 KB lrw-r--r-- 2024-04-12 21:47:14
Edit Download
11.46 KB lrw-r--r-- 2024-06-27 16:55:22
Edit Download
54.65 KB lrw-r--r-- 2024-08-19 23:19:18
Edit Download
26.40 KB lrw-r--r-- 2024-08-19 23:19:18
Edit Download
109.29 KB lrw-r--r-- 2024-09-30 22:24:14
Edit Download
47.23 KB lrw-r--r-- 2024-09-30 22:24:14
Edit Download
15.00 KB lrw-r--r-- 2024-09-18 04:14:14
Edit Download
6.70 KB lrw-r--r-- 2024-09-18 04:14:14
Edit Download
2.25 KB lrw-r--r-- 2021-03-18 23:01:04
Edit Download
676 B lrw-r--r-- 2021-03-18 23:01:04
Edit Download
22.56 KB lrw-r--r-- 2021-03-18 23:01:04
Edit Download
12.31 KB lrw-r--r-- 2023-02-02 21:36:32
Edit Download
7.52 KB lrw-r--r-- 2020-07-28 03:35:02
Edit Download
1.49 KB lrw-r--r-- 2023-02-02 21:36:32
Edit Download
740 B lrw-r--r-- 2021-03-18 23:01:04
Edit Download
458 B lrw-r--r-- 2021-03-18 23:01:04
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).