403Webshell
Server IP : 172.67.159.97  /  Your IP : 216.73.217.154
Web Server : nginx/1.24.0
System : Linux wordpress-sites 6.8.0-134-generic #134-Ubuntu SMP PREEMPT_DYNAMIC Fri Jun 26 18:43:11 UTC 2026 x86_64
User : www-data ( 33)
PHP Version : 8.1.34
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : OFF  |  Perl : OFF  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /var/www/rebeccaone.com/wp-content/plugins/envira-gallery/assets/js/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/rebeccaone.com/wp-content/plugins/envira-gallery/assets/js//gallery-help.js
/**
 * Handles:
 * - Inline Video Help
 *
 * @since 1.5.0
 */

// Setup selectors.
const envira_video_link = 'p.envira-intro a.envira-video',
	envira_close_video_link = 'a.envira-video-close';

jQuery(document).ready(function ($) {
	/**
	 * Display Video Inline on Video Link Click.
	 */
	$(document).on('click', envira_video_link, function (e) {
		// Prevent default action.
		e.preventDefault();

		// Get the video URL.
		const envira_video_url = $(this).attr('href');

		// Destroy any other instances of Envira Video iframes.
		$('div.envira-video-help').remove();

		// Get the intro paragraph.
		const envira_video_paragraph = $(this).closest('p.envira-intro');

		// Load the video below the intro paragraph on the current tab.
		$(envira_video_paragraph).append(
			'<div class="envira-video-help"><iframe src="' +
				envira_video_url +
				'" /><a href="#" class="envira-video-close dashicons dashicons-no"></a></div>'
		);
	});

	/**
	 * Destroy Video when closed.
	 */
	$(document).on('click', envira_close_video_link, function (e) {
		e.preventDefault();

		$(this).closest('.envira-video-help').remove();
	});

	/**
	 * Display envira ai upsell modal.
	 */
	const ai_btn_upsell = $('.envira-tab .button-envira-ai-tab.upsell');
	const ai_upsell_modal = $('#envira-ai-upsell-modal');
	const ai_close_button = $('#close-envira-ai-upsell');

	ai_btn_upsell.on('click', function () {
		ai_upsell_modal.show();
	});

	ai_close_button.on('click', function () {
		ai_upsell_modal.hide();
	});

	/**
	 * Display envira ai create images modal.
	 */
	const ai_btn_create_images = $('.envira-tab .button-envira-ai-tab.create-images');
	const ai_create_images_modal = $('#envira-ai-create-images-modal');
	const ai_close_btn_create_images = $('#close-envira-ai-create-images');

	ai_btn_create_images.on('click', function () {
		ai_create_images_modal.show();
	});

	ai_close_btn_create_images.on('click', function () {
		ai_create_images_modal.hide();
	});

	/**
	 * Attach change event to all checkboxes.
	 */
	let ai_selected_images_indices = [];
	let ai_selected_images_array = [];
	$(document).on('change', '.ai-image-checkbox', function () {
		const image_index = $(this).data('index');
		const add_selected_img_btn_sec = $('.ai-add-selected-images');
		const add_selected_img_btn = $('.add-selected-images-btn');

		if ($(this).is(':checked')) {
			// Add the selected image index to the array (if not already in it).
			if (!ai_selected_images_indices.includes(image_index)) {
				ai_selected_images_indices.push(image_index);
			}
		} else {
			// Remove the unselected image index from the array.
			ai_selected_images_indices = ai_selected_images_indices.filter(function (index) {
				return index !== image_index;
			});
		}

		ai_selected_images_array = ai_selected_images_indices.map(function (index) {
			return $('.ai-image-checkbox[data-index="' + index + '"]').data('url');
		});

		// Check if the ai_selected_images_array array is not empty.
		if (ai_selected_images_array.length > 0) {
			const add_images_text = add_selected_img_btn.attr('data-add-images');
			add_selected_img_btn_sec.show();
			add_selected_img_btn.text(add_images_text);
			$('.form-group.ai-form-field').hide();
		} else {
			add_selected_img_btn_sec.hide();
			$('.form-group.ai-form-field').show();
			$('.envira-ai-response-error-msg').html('').hide();
		}
	});

	/**
	 * Add selected images to wp media.
	 */
	$(document).on('click', '.add-selected-images-btn', function (e) {
		e.preventDefault();
		$('.envira-ai-images-spinner').css('display', 'flex');
		$('.envira-ai-response-error-msg').html('').hide();

		const add_img_btn = $(this);
		const add_btn_text = add_img_btn.attr('data-add-images');
		const adding_text = add_img_btn.attr('data-add-loading');

		// Add images data.
		const imagesData = {
			action: 'envira_gallery_ai_add_selected_images',
			ai_add_image_nonce: envira_gallery_metabox.ai_add_selected_image_nonce,
			selected_images: ai_selected_images_array,
			post_id: envira_gallery_metabox.id,
			nonce: envira_gallery_metabox.insert_nonce
		};

		$.ajax({
			url: envira_gallery_metabox.ajax,
			type: 'POST',
			dataType: 'json',
			data: imagesData,
			beforeSend: function () {
				// Disable button and show spinner.
				add_img_btn.prop('disabled', true).text(adding_text).addClass('disabled');
				$('.envira-ai-images-spinner').css('display', 'flex');
			},
			success: function (response) {
				if (response && response.success) {
					// Set the image grid to the HTML we received
					$('#envira-gallery-output').html(response.success);

					$(document).trigger('enviraInsert');

					// Repopulate the Envira Gallery Image Collection.
					EnviraGalleryImagesUpdate(false);

					$('.ajax-add-success.envira-ai-response-error-msg')
						.html(envira_gallery_metabox.ai_added_success_message)
						.show();
				} else {
					$('.ajax-add-error.envira-ai-response-error-msg')
						.html(response.data.error_message)
						.show();
				}
			},
			error: function (xhr, status, error) {
				$('.ajax-add-error.envira-ai-response-error-msg').html(error).show();
			},
			complete: function () {
				// Re-enable button and hide spinner.
				add_img_btn.text(add_btn_text);
				add_img_btn.prop('disabled', false).removeClass('disabled');
				$('.envira-ai-images-spinner').css('display', 'none');
			}
		});
	});

	/**
	 * Submit the envira ai image creation form via REST API.
	 */
	$('.create-images-submit-btn').on('click', function (e) {
		e.preventDefault();
		let isValid = true;

		// Clear previous error states.
		$('.form-group').removeClass('envira-ai-error');
		$('.ai-error-message').hide();
		$('.envira-ai-response-error-msg').html('').hide();
		$('.generated-ai-images-section').remove();
		$('.button-envira-ai-write-new').hide();
		$('.generate-image-text').show();

		// Validate the prompt textarea.
		const prompt = $('#envira-ai-image-prompt').val().trim();
		if (!prompt) {
			$('#ai-prompt-error').show();
			$('#envira-ai-image-prompt').closest('.form-group').addClass('envira-ai-error');
			isValid = false;
		}

		// Validate the image type select.
		const image_type = $('#envira-ai-image-type').val();
		if (!image_type) {
			$('#ai-type-error').show();
			$('#envira-ai-image-type').closest('.form-group').addClass('envira-ai-error');
			isValid = false;
		}

		// Validate the aspect ratio select.
		const aspect_ratio = $('#envira-ai-image-aspect-ratio').val();
		if (!aspect_ratio) {
			$('#ai-aspect-error').show();
			$('#envira-ai-image-aspect-ratio').closest('.form-group').addClass('envira-ai-error');
			isValid = false;
		}

		// If form is valid, trigger REST API request.
		if (isValid) {
			// Prepare form data.
			const formData = new FormData();
			formData.append('prompt', prompt);
			formData.append('image_type', image_type);
			formData.append('aspect_ratio', aspect_ratio);

			// Update button text and show spinner.
			const create_btn = $(this);
			const creating_text = create_btn.attr('data-loading');
			const create_new_text = create_btn.attr('data-create');
			const button_text = create_btn.attr('data-button');

			create_btn.prop('disabled', true).text(creating_text).addClass('disabled');
			$('.envira-ai-images-spinner').css('display', 'flex');

			// Make the fetch request to the REST API.
			fetch(envira_gallery_metabox.ai_image_crate_rest_url, {
				method: 'POST',
				body: formData,
				headers: {
					'X-WP-Nonce': envira_gallery_metabox.ai_image_rest_nonce // REST API nonce for authorization.
				}
			})
				.then(response => response.json())
				.then(response => {
					if (response.html) {
						// Handle success: Update UI.
						create_btn.text(create_new_text);
						$('.generate-image-text').hide();
						$('.button-envira-ai-write-new').show();
						$('.ajax-create-success.envira-ai-response-error-msg').html('').hide(); // Hide message - no need to display success message.

						$('.create-images-two-columns .right-column').append(response.html);
					} else {
						// Handle errors: Reset button text and show errors.
						create_btn.text(button_text);
						$('.generate-image-text').show();
						if (response.rest_invalid_prompt) {
							$('.prompt-ajax-error.envira-ai-response-error-msg')
								.html(response.rest_invalid_prompt)
								.show();
						}
						if (response.rest_api_error) {
							$('.ajax-create-error.envira-ai-response-error-msg')
								.html(response.rest_api_error)
								.show();
						}
					}
				})
				.catch(error => {
					// Handle fetch error.
					create_btn.text(button_text);
					$('.ajax-create-error.envira-ai-response-error-msg').html(error).show();
				})
				.finally(() => {
					// Re-enable button and hide spinner after request completes.
					create_btn.prop('disabled', false).removeClass('disabled');
					$('.envira-ai-images-spinner').css('display', 'none');
				});
		}
	});

	/**
	 * Clear the form and response messages.
	 */
	$('.button-envira-ai-write-new').on('click', function (e) {
		e.preventDefault();

		ai_selected_images_indices = [];
		ai_selected_images_array = [];

		// Clear the prompt textarea.
		$('#envira-ai-image-prompt').val('');

		// Reset the image type and aspect ratio selects to the default option.
		$('#envira-ai-image-type').val('');
		$('#envira-ai-image-aspect-ratio').val('');

		// Remove error states from form groups.
		$('.form-group').removeClass('envira-ai-error');

		// Hide error messages.
		$('.ai-error-message').hide();
		$('.envira-ai-response-error-msg').html('').hide();

		// Clear generated images if any.
		$('.generated-ai-images-section').remove();

		// Show the default button text.
		const button_text = $('.create-images-submit-btn').attr('data-button');
		$('.create-images-submit-btn')
			.text(button_text)
			.removeClass('disabled')
			.prop('disabled', false);

		// Show default text and hide write new button.
		$('.generate-image-text').show();
		$('.button-envira-ai-write-new').hide();

		// Hide select image button and show form fields.
		$('.ai-add-selected-images').hide();
		$('.form-group.ai-form-field').show();
	});

	/**
	 * Download image from third party URL on click via REST API using fetch.
	 */
	$(document).on('click', '.ai-download-image-link.download-image', function (e) {
		e.preventDefault();
		$('.envira-ai-response-error-msg').html('').hide();

		const aiImageUrl = $(this).data('url');

		// Prepare the data for the fetch request.
		const aiImageData = {
			image_url: aiImageUrl
		};

		// Show spinner.
		$('.envira-ai-images-spinner').css('display', 'flex');

		fetch(envira_gallery_metabox.ai_download_image_rest_url, {
			method: 'POST',
			headers: {
				'Content-Type': 'application/json',
				'X-WP-Nonce': envira_gallery_metabox.ai_image_rest_nonce // REST API nonce for authorization.
			},
			body: JSON.stringify(aiImageData)
		})
			.then(function (response) {
				return response.json();
			})
			.then(function (data) {
				if (data.success) {
					const blob = b64toBlob(data.image, 'image/png');
					const blobUrl = URL.createObjectURL(blob);
					const imageName = 'download-' + Date.now() + '.png';

					// IE Compatibility.
					if (window.navigator.msSaveOrOpenBlob) {
						window.navigator.msSaveOrOpenBlob(blob, imageName);
					} else {
						const a = document.createElement('a');
						a.href = blobUrl;
						a.download = imageName;
						document.body.appendChild(a);
						a.click();
						document.body.removeChild(a);
					}
				} else {
					alert(data.message);
				}
			})
			.catch(function (error) {
				alert('Error: ' + error.message);
			})
			.finally(function () {
				// Hide spinner.
				$('.envira-ai-images-spinner').css('display', 'none');
			});
	});

	// Convert base64 string to a Blob.
	function b64toBlob(b64Data, contentType) {
		const sliceSize = 4096; // Larger chunk for performance.
		const byteCharacters = atob(b64Data);
		const byteArrays = [];

		for (let offset = 0; offset < byteCharacters.length; offset += sliceSize) {
			const slice = byteCharacters.slice(offset, offset + sliceSize);
			const byteNumbers = new Array(slice.length);

			for (let i = 0; i < slice.length; i++) {
				byteNumbers[i] = slice.charCodeAt(i);
			}

			const byteArray = new Uint8Array(byteNumbers);
			byteArrays.push(byteArray);
		}

		return new Blob(byteArrays, {type: contentType});
	}
});

Youez - 2016 - github.com/yon3zu
LinuXploit