| @@ -59,10 +59,16 @@ | ||
| 59 | 59 | ]; |
| 60 | 60 | |
| 61 | 61 | case 'options': |
| 62 | 62 | $translations = [ |
| 63 | - 'getFilesTree' => imagify_can_optimize_custom_folders() ? get_imagify_admin_url( 'get-files-tree' ) : false, | |
| 64 | - 'labels' => [ | |
| 63 | + 'getFilesTree' => imagify_can_optimize_custom_folders() ? get_imagify_admin_url( 'get-files-tree' ) : false, | |
| 64 | + 'resetInternalState' => [ | |
| 65 | + 'action' => 'imagify_reset_internal_state', | |
| 66 | + 'confirm' => __( 'Are you sure you want to reset the Imagify internal state? This will clear optimization locks and cancel any pending jobs.', 'imagify' ), | |
| 67 | + 'success' => __( 'Imagify internal state has been reset successfully.', 'imagify' ), | |
| 68 | + 'error' => __( 'An error occurred while resetting the internal state. Please try again.', 'imagify' ), | |
| 69 | + ], | |
| 70 | + 'labels' => [ | |
| 65 | 71 | 'ValidApiKeyText' => __( 'Your API key is valid.', 'imagify' ), |
| 66 | 72 | 'waitApiKeyCheckText' => __( 'Check in progress...', 'imagify' ), |
| 67 | 73 | 'ApiKeyCheckSuccessTitle' => __( 'Congratulations!', 'imagify' ), |
| 68 | 74 | 'ApiKeyCheckSuccessText' => __( 'Your API key is valid. You can now configure the Imagify settings to optimize your images.', 'imagify' ), |
| @@ -235,8 +241,9 @@ | ||
| 235 | 241 | ], |
| 236 | 242 | 'waitImageUrl' => IMAGIFY_ASSETS_IMG_URL . 'popin-loader.svg', |
| 237 | 243 | 'ajaxActions' => [ |
| 238 | 244 | 'bulkProcess' => 'imagify_bulk_optimize', |
| 245 | + 'bulkStop' => 'imagify_bulk_stop', | |
| 239 | 246 | 'getFolderData' => 'imagify_get_folder_type_data', |
| 240 | 247 | 'bulkInfoSeen' => 'imagify_bulk_info_seen', |
| 241 | 248 | ], |
| 242 | 249 | 'ajaxNonce' => wp_create_nonce( 'imagify-bulk-optimize' ), |
| @@ -286,8 +293,17 @@ | ||
| 286 | 293 | /* translators: %s is a formatted number, dont use %d. */ |
| 287 | 294 | 'imagesErrorText' => __( '%s Error(s)', 'imagify' ), |
| 288 | 295 | 'bulkInfoTitle' => __( 'Information', 'imagify' ), |
| 289 | 296 | 'confirmBulk' => __( 'Start the optimization', 'imagify' ), |
| 297 | + 'stopTitle' => __( 'Stop the optimization?', 'imagify' ), | |
| 298 | + 'stopText' => __( 'Media files still waiting in the queue will not be optimized. The media file currently being processed cannot be interrupted. You can restart the optimization at any time.', 'imagify' ), | |
| 299 | + 'confirmStop' => __( 'Stop the optimization', 'imagify' ), | |
| 300 | + 'cancelStop' => __( 'Continue the optimization', 'imagify' ), | |
| 301 | + 'stoppedTitle' => __( 'Optimization stopped', 'imagify' ), | |
| 302 | + /* translators: %s is a number. Don't use %d. */ | |
| 303 | + 'stoppedText' => __( '%s media file(s) were removed from the queue.', 'imagify' ), | |
| 304 | + 'stoppedNothingQueuedText' => __( 'The optimization was stopped. No media file was left in the queue.', 'imagify' ), | |
| 305 | + 'stopErrorText' => __( 'The optimization could not be stopped. Please reload the page and try again.', 'imagify' ), | |
| 290 | 306 | ], |
| 291 | 307 | ]; |
| 292 | 308 | |
| 293 | 309 | if ( get_transient( 'imagify_large_library' ) ) { |