HEX
Server: Apache
System: Linux elegant-goodall 5.15.0-107-generic #117-Ubuntu SMP Fri Apr 26 12:26:49 UTC 2024 x86_64
User: allende-losmares.com_h71qfkqzx8k (10002)
PHP: 8.0.30
Disabled: opcache_get_status
Upload Files
File: /var/www/vhosts/allende-losmares.com/httpdocs/wp-content/plugins/patreon-connect/assets/js/admin.js
;(function() {

	jQuery( function( $ ) {

		jQuery(document).on( 'click', '.patreon-wordpress .notice-dismiss', function(e) {

			jQuery.ajax({
				url: ajaxurl,
				type:"POST",
				dataType : 'html',
				data: {
					action: 'patreon_wordpress_dismiss_admin_notice',
					notice_id: jQuery( this ).parent().attr( "id" ),
				}
			});
		});	
		
		// Doing the below via jQuery because we have to submit some POST info inside another form. Avoided using a link inside button to account for older devices
		
		jQuery(document).on( 'click', '#patreon_wordpress_disconnect_from_patreon', function(e) {
			e.preventDefault();
			var target = jQuery(this).attr( 'target' );
			window.location.replace( target );
		});
		
		// Doing the below via jQuery because we have to submit some POST info inside another form. Avoided using a link inside button to account for older devices
		
		jQuery(document).on( 'click', '#patreon_wordpress_reconnect_to_patreon', function(e) {
			e.preventDefault();
			var target = jQuery(this).attr( 'target' );
			window.location.replace( target );
		});
		
		jQuery(document).on( 'click', '#patreon_wordpress_disconnect_reconnect_to_patreon', function(e) {
			e.preventDefault();
			var target = jQuery(this).attr( 'target' );
			window.location.replace( target );
		});
		
		jQuery(document).on( 'click', '.patreon-wordpress-admin-toggle', function(e) {
			
			e.preventDefault();
			
			var toggle_id = jQuery( this ).attr( 'toggle' );
			var toggle_target = document.getElementById( toggle_id );
			var patreon_wordpress_advanced_options_toggle_nonce = jQuery( this ).attr( 'patreon_wordpress_advanced_options_toggle_nonce' );

			jQuery( toggle_target ).slideToggle();
			
			if( jQuery( this ).attr( 'togglestatus' ) == 'off' ) {
				
				jQuery( this ).html( jQuery( this ).attr( 'ontext' ) );
				jQuery( this ).attr( 'togglestatus', 'on' );
				
			}
			else if( jQuery( this ).attr( 'togglestatus' ) == 'on' ) {
				
				jQuery( this ).html( jQuery( this ).attr( 'offtext' ) );
				jQuery( this ).attr( 'togglestatus', 'off' );
				
			}
					
			jQuery.ajax({
				url: ajaxurl,
				type:"POST",
				dataType : 'html',
				data: {
					action: 'patreon_wordpress_toggle_option',
					toggle_id: toggle_id,
					patreon_wordpress_advanced_options_toggle_nonce: patreon_wordpress_advanced_options_toggle_nonce,
				}
			});		
			
		});
		
		jQuery(document).on( 'click', '#patreon_wordpress_start_post_import', function(e) {
			
			e.preventDefault();
			var pw_input_target = jQuery( this ).attr( 'pw_input_target' );
			
			jQuery.ajax({
				url: ajaxurl,
				type:"POST",
				dataType : 'html',
				data: {
					action: 'patreon_wordpress_start_post_import',
				},
				success: function( response ) {
					
					jQuery( '#patreon_wp_post_import_status' ).empty();
					
					if ( response == 'apiv2fail') {
						jQuery( '#patreon_wp_post_import_status' ).html( 'Wrong api version! Please upgrade to v2 using the tutorial <a href="https://www.patreondevelopers.com/t/how-to-upgrade-your-patreon-wordpress-to-use-api-v2/3249" target="_blank">here</a>' );
						jQuery( '#patreon_wp_post_import_status' ).css( 'color', '#f31d00' );
						return;
					}
					
					jQuery( '#patreon_wp_post_import_status' ).html( 'Started a post import' );
					jQuery( '#patreon_wp_post_import_status' ).css( 'color', '#129500' );
					
					// Replace the button with post batch import button
					
					jQuery( '#patreon_post_import_button_container' ).html( '<button id="patreon_wordpress_import_next_batch_of_posts" class="button button-primary button-large" pw_input_target="#patreon_wp_post_import_status" target="">Import next batch</button>' );
					jQuery( '#post_import_status_heading' ).html( 'Ongoing post import' );
					jQuery( '#post_import_info_text' ).html( "Posts will be imported automatically every 5 minutes. If they are not, or you want to do it faster, click to import next batch of posts. This will import the next batch of posts in the queue. You can do this every 10 seconds." );
					
				},
			});		
			
		});
		
		jQuery(document).on( 'click', '#patreon_wordpress_import_next_batch_of_posts', function(e) {
			
			e.preventDefault();
			var pw_input_target = jQuery( this ).attr( 'pw_input_target' );
			
			jQuery.ajax({
				url: ajaxurl,
				type:"POST",
				dataType : 'html',
				data: {
					action: 'patreon_wordpress_import_next_batch_of_posts',
				},
				beforeSend: function(e) {
					jQuery( '#patreon_wp_post_import_status' ).html( 'Importing next batch...' );
					jQuery( '#patreon_wp_post_import_status' ).css( 'color', '#129500' );
				},
				success: function( response ) {
					
					jQuery( '#patreon_wp_post_import_status' ).empty();
					
					if ( response == 'apiv2fail') {
						jQuery( '#patreon_wp_post_import_status' ).html( 'Wrong api version! Please upgrade to v2 using the tutorial <a href="https://www.patreondevelopers.com/t/how-to-upgrade-your-patreon-wordpress-to-use-api-v2/3249" target="_blank">here</a>' );
						jQuery( '#patreon_wp_post_import_status' ).css( 'color', '#f31d00' );
						return;
					}
					
					if ( response == 'time_limit_error') {
						jQuery( '#patreon_wp_post_import_status' ).html( 'You can trigger next batch every 10 seconds. Please wait a few seconds more.' );
						jQuery( '#patreon_wp_post_import_status' ).css( 'color', '#f31d00' );
						return;
					}
					
					if ( response == 'no_ongoing_post_import') {
						jQuery( '#patreon_wp_post_import_status' ).html( 'There is no ongoing post import' );
						jQuery( '#patreon_wp_post_import_status' ).css( 'color', '#f31d00' );
						
						// Replace the post import setting info with original
						jQuery( '#patreon_post_import_button_container' ).html( '<button id="patreon_wordpress_start_post_import" class="button button-primary button-large" pw_input_target="#patreon_wp_post_import_status" target="">Start an import</button>' );
						jQuery( '#post_import_status_heading' ).html( 'Start a post import' );
						jQuery( '#post_import_info_text' ).html( "Start an import of your posts from Patreon if you haven't done it before. After import of existing posts is complete, new posts will automatically be imported and existing posts automatically updated so you don't need to do this again." );
						
						return;
					}
					
					if ( response == 'did_not_import_any_post') {
						jQuery( '#patreon_wp_post_import_status' ).html( 'Failed to import any post...' );
						jQuery( '#patreon_wp_post_import_status' ).css( 'color', '#f31d00' );
						return;
					}

					if ( response == 'expired_or_lost_cursor_deleted') {
						jQuery( '#patreon_wp_post_import_status' ).html( 'Expired or lost page cursor deleted. Post import will restart from scratch...' );
						return;
					}
					
					if ( response == 'throttled_internally') {
						jQuery( '#patreon_wp_post_import_status' ).html( 'Patreon api was contacted too frequently. Please wait a few minutes and try again...' );
						jQuery( '#patreon_wp_post_import_status' ).css( 'color', '#f31d00' );
						return;
					}
					if ( response == 'couldnt_get_posts') {
						jQuery( '#patreon_wp_post_import_status' ).html( 'Failed to get posts from Patreon...' );
						jQuery( '#patreon_wp_post_import_status' ).css( 'color', '#f31d00' );
						return;
					}
					
					if ( response == 'post_import_ended') {
						
						jQuery( '#patreon_wp_post_import_status' ).html( 'Post import ended' );
						jQuery( '#patreon_wp_post_import_status' ).css( 'color', '#129500' );
						
						// Replace the post import setting info with original
						jQuery( '#patreon_post_import_button_container' ).html( '<button id="patreon_wordpress_start_post_import" class="button button-primary button-large" pw_input_target="#patreon_wp_post_import_status" target="">Start an import</button>' );
						jQuery( '#post_import_status_heading' ).html( 'Start a post import' );
						jQuery( '#post_import_info_text' ).html( "Start an import of your posts from Patreon if you haven't done it before. After import of existing posts is complete, new posts will automatically be imported and existing posts automatically updated so you don't need to do this again." );
						
						return;
					}
					
					if ( response == 'imported_posts') {
						jQuery( '#patreon_wp_post_import_status' ).html( 'Imported next batch' );
						jQuery( '#patreon_wp_post_import_status' ).css( 'color', '#129500' );
						return;
					}
					
					jQuery( '#patreon_wp_post_import_status' ).html( 'An unexpected issue occurred' );
					jQuery( '#patreon_wp_post_import_status' ).css( 'color', '#f31d00' );
					
				},
			});		
			
		});
		
		jQuery(document).on( 'click', '#patreon_wordpress_disconnect_patreon_account', function(e) {
			
			e.preventDefault();
			var pw_input_target = jQuery( this ).attr( 'pw_input_target' );
			
			jQuery.ajax({
				url: ajaxurl,
				type:"POST",
				dataType : 'html',
				data: {
					action: 'patreon_wordpress_disconnect_patreon_account',
					patreon_disconnect_user_id: jQuery( this ).attr( 'patreon_disconnect_user_id' ),
				},
				beforeSend: function(e) {
					jQuery( '#patreon_wordpress_user_profile_account_connection_wrapper' ).html( 'A moment...' );
				},
				success: function( response ) {
					jQuery( '#patreon_wordpress_user_profile_account_connection_wrapper' ).html( response );
				},
			});		
			
		});
		
		jQuery(document).on( 'click', '#patreon_wordpress_connect_patreon_account', function(e) {
			
			e.preventDefault();

			var patreon_login_url = jQuery( this ).attr( 'patreon_login_url' );
			window.location.replace( patreon_login_url );
			
		});
		
		jQuery(document).on( 'click', '#patreon_wordpress_connect_patreon_account', function(e) {
			
			// Disconnects a connected Patreon account from local WP account. Does not contact the api
			
			e.preventDefault();
			
			jQuery.ajax({
				url: ajaxurl,
				type:"POST",
				dataType : 'html',
				data: {
					action: 'patreon_wordpress_disconnect_account_from_patreon',
					user_id: jQuery( this ).attr( "patreon_user_id" ),
				},
				success: function( response ) {
					jQuery( '#patreon_wp_post_import_status' ).empty();
					jQuery( '#patreon_wp_post_import_status' ).html( 'Started a post import' );
					jQuery( '#patreon_wp_post_import_status' ).css( 'color', '#129500' );
					
				},
			});		
			
		});
		

		jQuery(document).on( 'click', '#patreon_wordpress_save_post_sync_category', function(e) {
			
			e.preventDefault();
			var pw_input_target = jQuery( this ).attr( 'pw_input_target' );
			var patreon_wordpress_save_post_sync_category_nonce = jQuery( this ).attr( 'patreon_wordpress_save_post_sync_category_nonce' );
			var patreon_sync_post_type = jQuery('#patreon_sync_post_type').val();
			var patreon_sync_post_category = jQuery('#patreon_sync_post_category').val();
			var patreon_sync_post_term = jQuery('#patreon_sync_post_term').val();
			
			jQuery.ajax({
				url: ajaxurl,
				type:"POST",
				dataType : 'html',
				data: {
					action: 'patreon_wordpress_save_post_sync_category',
					patreon_sync_post_type: patreon_sync_post_type,
					patreon_sync_post_category: patreon_sync_post_category,
					patreon_sync_post_term: patreon_sync_post_term,
					patreon_wordpress_save_post_sync_category_nonce: patreon_wordpress_save_post_sync_category_nonce,
				},
				beforeSend: function( xhr ) {
					jQuery( '#patreon_wordpress_post_import_category_status' ).empty();					
				},
				success: function( response ) {
					jQuery( '#patreon_wordpress_post_import_category_status' ).empty();
					jQuery( '#patreon_wordpress_post_import_category_status' ).html( response );
					jQuery( '#patreon_wordpress_post_import_category_status' ).css( 'color', '#129500' );
					
				},
				error: function( response ) {
					jQuery( '#patreon_wordpress_post_import_category_status' ).empty();
					jQuery( '#patreon_wordpress_post_import_category_status' ).html( 'Sorry, encountered an issue' );
					
				},
			});		
			
		});		
		
		jQuery(document).on( 'click', '.patreon_wordpress_interface_toggle', function(e) {
			
			e.preventDefault();
			
			var toggles = jQuery( this ).attr( 'toggle' );
			var toggle_array = toggles.split(" ");
			toggle_array.forEach( function( toggle_id, index, toggle_array ) {
				var toggle_target = document.getElementById( toggle_id );

				jQuery( toggle_target ).slideToggle();
								
			}, jQuery( this ) );
			
		});	
		
		// Sync the exact amount value to select value if select is changed
		jQuery( "#patreon_level_select" ).on( 'change', function() {
			jQuery( "#patreon-level-exact" ).val( this.value );
		});
		
		// Save patreon-update-posts option upon change during post sync wizard screens
		jQuery( "#patreon-update-posts" ).on( 'change', function(e) {
			
			// Just in case
			e.preventDefault();
			var pw_input_target = jQuery( this ).attr( 'pw_input_target' );
			var option_value = jQuery(this).val();
			
			if (  option_value == '' ) {
				// Do nothing if value is empty
				jQuery( pw_input_target ).html('');
				return;
			}
			
			jQuery.ajax({
				url: ajaxurl,
				async: true, // Just to make sure
				type:"POST",
				dataType : 'html',
				data: {
					action: 'patreon_wordpress_set_update_posts_option',
					update_posts_option_value: option_value,
				},
				beforeSend: function( e ) {			
				},
				success: function( response ) {
					jQuery( pw_input_target ).empty();
					jQuery( pw_input_target ).html( 'Saved!' );
					
				},
				error: function( response ) {
					jQuery( pw_input_target ).empty();
					jQuery( pw_input_target ).html( 'Sorry - could not save' );
				},
				statusCode: {
					500: function(error) {
						jQuery( pw_input_target ).empty();
						jQuery( pw_input_target ).html( 'Sorry - error (500)' );
					}
				}
			});	
			
		});
		
		// Save patreon post author option upon change in post sync wizard screens
		jQuery( "#patreon_post_author_for_synced_posts" ).on( 'change', function(e) {
			
			// Just in case
			e.preventDefault();
			var pw_input_target = jQuery( this ).attr( 'pw_input_target' );
			var patreon_wordpress_set_post_author_for_post_sync_nonce = jQuery( this ).attr( 'patreon_wordpress_set_post_author_for_post_sync_nonce' );
			var option_value = jQuery(this).val();
			
			if (  option_value == '' ) {
				// Do nothing if value is empty
				jQuery( pw_input_target ).html('');
				console.log('empty');
				return;
			}
			
			jQuery.ajax({
				url: ajaxurl,
				async: true, // Just to make sure
				type:"POST",
				dataType : 'html',
				data: {
					action: 'patreon_wordpress_set_post_author_for_post_sync',
					patreon_post_author_for_post_sync: option_value,
					patreon_wordpress_set_post_author_for_post_sync_nonce: patreon_wordpress_set_post_author_for_post_sync_nonce,
				},
				beforeSend: function( e ) {			
				},
				success: function( response ) {
					jQuery( pw_input_target ).empty();
					jQuery( pw_input_target ).html( 'Saved!' );
					
				},
				error: function( response ) {
					jQuery( pw_input_target ).empty();
					jQuery( pw_input_target ).html( 'Sorry - could not save' );
				},
				statusCode: {
					500: function(error) {
						jQuery( pw_input_target ).empty();
						jQuery( pw_input_target ).html( 'Sorry - error (500)' );
					}
				}
			});	
			
		});
		
		// Save patreon-remove-deleted-posts option upon change during post sync wizard screens
		jQuery( "#patreon-remove-deleted-posts" ).on( 'change', function(e) {
			
			// Just in case
			e.preventDefault();
			var pw_input_target = jQuery( this ).attr( 'pw_input_target' );
			var option_value = jQuery(this).val();

			if (  option_value == '' ) {
				// Do nothing if value is empty
				jQuery( pw_input_target ).html('');
				return;
			}
			
			jQuery.ajax({
				url: ajaxurl,
				async: true, // Just to make sure
				type:"POST",
				dataType : 'html',
				data: {
					action: 'patreon_wordpress_set_delete_posts_option',
					delete_posts_option_value: option_value,
				},
				beforeSend: function( e ) {			
				},
				success: function( response ) {
					jQuery( pw_input_target ).empty();
					jQuery( pw_input_target ).html( 'Saved!' );
					
				},
				error: function( response ) {
					jQuery( pw_input_target ).empty();
					jQuery( pw_input_target ).html( 'Sorry - could not save' );
				},
				statusCode: {
					500: function(error) {
						jQuery( pw_input_target ).empty();
						jQuery( pw_input_target ).html( 'Sorry - error (500)' );
					}
				}
			});	
			
		});
		
		// Post sync post type selection dropdown action
		jQuery( "#patreon_sync_post_type" ).on( 'change', function(e) {
			
			var patreon_wordpress_post_type = jQuery(this).val();
			var patreon_wordpress_input_target = jQuery('#patreon_sync_post_category');
			var patreon_wordpress_general_error = 'Sorry - could not get the category list for this post type';
			
			e.preventDefault();
					
			jQuery('#patreon_sync_post_category').hide('slow');
			jQuery('#patreon_sync_post_term').hide('slow');

			jQuery.ajax({
				url: ajaxurl,
				type:"POST",
				dataType : 'html',
				cache: false,
				data: {
					action: 'patreon_wordpress_get_taxonomies_for_post_type',
					patreon_wordpress_post_type: patreon_wordpress_post_type,
				},
				success: function( response ) {
					if( response == '' ) {
						response = patreon_wordpress_general_error;
					}
					jQuery(patreon_wordpress_input_target).html('<option selected value="-">Select</option>' + response);
				},
				complete: function( response ) {
					jQuery('#patreon_sync_post_category').show('slow');
				},
				error: function( response ) {
					if( response == '' ) {
						//White page - possibly an issue with the server/site caused an error during updates
						response = patreon_wordpress_general_error;
					}
					jQuery(patreon_wordpress_input_target).html(response);
				},
				statusCode: {
					500: function(error) {
						response = 'Sorry, a program error was encountered on WordPress side. (500 error)';
						jQuery(patreon_wordpress_input_target).html(response);
					}
				}
			});		
		});
		
		// Post sync post - category selection dropdown action
		jQuery( "#patreon_sync_post_category" ).on( 'change', function(e) {
			
			var patreon_sync_post_category = jQuery(this).val();
			var patreon_wordpress_input_target = jQuery('#patreon_sync_post_term');
			var patreon_wordpress_general_error = 'Sorry - could not get the category list for this post type';
			
			e.preventDefault();
					
			jQuery('#patreon_sync_post_term').hide('slow');

			jQuery.ajax({
				url: ajaxurl,
				type:"POST",
				dataType : 'html',
				cache: false,
				data: {
					action: 'patreon_wordpress_get_terms_for_taxonomy',
					patreon_sync_post_category: patreon_sync_post_category,
				},
				success: function( response ) {
					if( response == '' ) {
						response = patreon_wordpress_general_error;
					}
					jQuery(patreon_wordpress_input_target).html('<option selected value="-">Select</option>' + response);
				},
				complete: function( response ) {
					jQuery('#patreon_sync_post_term').show('slow');
				},
				error: function( response ) {
					if( response == '' ) {
						//White page - possibly an issue with the server/site caused an error during updates
						response = patreon_wordpress_general_error;
					}
					jQuery(patreon_wordpress_input_target).html(response);
				},
				statusCode: {
					500: function(error) {
						response = 'Sorry, a program error was encountered on WordPress side. (500 error)';
						jQuery(patreon_wordpress_input_target).html(response);
					}
				}
			});		
		});
		
		jQuery( ".patreon_toggle_admin_sections" ).on( 'click', function (e) {
			
			if ( jQuery( e.target ).hasClass( 'patreon_setting_section_help_icon' ) ) { 
				return 
			};
			
			jQuery( '#footer-thankyou' ).remove();
			var patreon_target = jQuery( this ).parent('.patreon_admin_health_content_box').find( jQuery( this ).attr( 'target' ) );
			e.preventDefault();
			if ( jQuery( this ).find( 'span:first' ).hasClass( 'dashicons-arrow-down-alt2' ) ) {
				jQuery( this ).find( 'span:first' ).removeClass( 'dashicons-arrow-down-alt2' );
				jQuery( this ).find( 'span:first' ).addClass( 'dashicons-arrow-up-alt2' );
			}
			else if ( jQuery( this ).find( 'span:first' ).hasClass( 'dashicons-arrow-up-alt2' ) ) {
				jQuery( this ).find( 'span:first' ).removeClass( 'dashicons-arrow-up-alt2' );
				jQuery( this ).find( 'span:first' ).addClass( 'dashicons-arrow-down-alt2' );
			}
			jQuery( patreon_target ).toggle( 'slow' );
		});
		
		jQuery( '#patreon_copy_health_check_output' ).on( 'click', function (e) {
			e.preventDefault();
			// Some of below is from stack https://stackoverflow.com/questions/23048550/how-to-copy-a-divs-content-to-clipboard-without-flash
			var textarea = document.createElement( 'textarea' );
			  textarea.id = 'patreon_temp_element'
			  // Optional step to make less noise on the page, if any!
			  textarea.style.height = 0
			  // Now append it to your page somewhere, I chose <body>
			  document.body.appendChild( textarea )
			  // Give our textarea a value of whatever inside the div of id=containerid
			  textarea.value = jQuery( '#patreon_health_check_output_for_support' ).text();
			  // Now copy whatever inside the textarea to clipboard
			  var selector = document.querySelector( '#patreon_temp_element' );
			  selector.select();
			  document.execCommand('copy');
			  // Remove the textarea
			  document.body.removeChild(textarea);
			jQuery( "#patreon_copied" ).text( "Copied!" ).show().fadeOut( 1000 );
		});

		jQuery( '#patreon_patron_pro_upsell' ).on( 'click', function (e) {
			e.preventDefault();
			target_url = jQuery(this).attr('go_to_url')
			window.location.replace(target_url)
			
		});

		// Only trigger if the select dropdown is actually present
		
		jQuery(document).on( 'click', '#patreon_level_refresh', function(e) {
			
			var pw_input_target = jQuery( "#patreon_level_select" );
			var pw_post_id = pw_input_target.attr( 'pw_post_id' );
			
			jQuery.ajax({
				url: ajaxurl,
				async: true, // Just to make sure
				type:"POST",
				dataType : 'html',
				data: {
					action: 'patreon_wordpress_populate_patreon_level_select',
					pw_post_id: pw_post_id,
				},
				beforeSend: function( e ) {
					jQuery( pw_input_target ).html( '<option value="">Loading...</option>' );				
				},
				success: function( response ) {
					jQuery( pw_input_target ).empty();
					jQuery( pw_input_target ).html( response );
					
				},
				error: function( response ) {
					jQuery( pw_input_target ).empty();
					jQuery( pw_input_target ).html( response );
				},
				statusCode: {
					500: function(error) {
						jQuery( pw_input_target ).empty();
						jQuery( pw_input_target ).html( 'Sorry - error (500)' );
					}
				}
			});	
			
		});
		
		jQuery.fn.pw_screen_center = function () {
			this.css( "position", "absolute" );
			this.css( "top", Math.max(0, ((jQuery(window).height() - $(this).outerHeight()) / 2) + jQuery(window).scrollTop()) + "px");
			this.css( "left", Math.max(0, ((jQuery(window).width() - $(this).outerWidth()) / 2) + jQuery(window).scrollLeft()) + "px");
			return this;
		}	
		
	});
	
})()