Changeset 3296862
- Timestamp:
- 05/19/2025 10:16:43 PM (10 months ago)
- Location:
- alt-text-imagerr-ai
- Files:
-
- 12 edited
- 1 copied
-
tags/1.1.2 (copied) (copied from alt-text-imagerr-ai/trunk)
-
tags/1.1.2/assets/imagerr-attachment.js (modified) (3 diffs)
-
tags/1.1.2/imagerr.php (modified) (9 diffs)
-
tags/1.1.2/languages/alt-text-imagerr-ai-en_US.mo (modified) (previous)
-
tags/1.1.2/languages/alt-text-imagerr-ai-en_US.po (modified) (6 diffs)
-
tags/1.1.2/languages/alt-text-imagerr-ai.pot (modified) (6 diffs)
-
tags/1.1.2/readme.txt (modified) (2 diffs)
-
trunk/assets/imagerr-attachment.js (modified) (3 diffs)
-
trunk/imagerr.php (modified) (9 diffs)
-
trunk/languages/alt-text-imagerr-ai-en_US.mo (modified) (previous)
-
trunk/languages/alt-text-imagerr-ai-en_US.po (modified) (6 diffs)
-
trunk/languages/alt-text-imagerr-ai.pot (modified) (6 diffs)
-
trunk/readme.txt (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
alt-text-imagerr-ai/tags/1.1.2/assets/imagerr-attachment.js
r3249550 r3296862 1 1 jQuery(document).ready(function($) { 2 const isAttachmentPost = window.location.href.includes('post.php') && $('body').hasClass('post-type-attachment'); 3 const isUploadPage = window.location.href.includes('upload.php'); 4 2 5 function generateMetaButtonHtml(attachmentId) { 3 return '<div id="imagerr-generate-metadata-wrapper" class="setting description"><button class="button-primary imagerr-generate-metadata" data-id="' + attachmentId + '">' + imagerr_vars.i18n.update_with_imagerr + '</button><div class="imagerr-error" style="display: none; color: red;"></div>< /div>';6 return '<div id="imagerr-generate-metadata-wrapper" class="setting description"><button class="button-primary imagerr-generate-metadata" data-id="' + attachmentId + '">' + imagerr_vars.i18n.update_with_imagerr + '</button><div class="imagerr-error" style="display: none; color: red;"></div><div class="imagerr-success" style="display: none; color: green;">' + imagerr_vars.i18n.image_updated + '</div></div>'; 4 7 } 5 8 6 var counter = 0; 7 var interval = setInterval(function() { 8 counter++; 9 if (counter > 20) { 10 clearInterval(interval); 11 return; 12 } 13 if ($('#imagerr-generate-metadata-wrapper').length > 0) { 14 clearInterval(interval); 15 return; 16 } 17 if ($('.attachment-info').length > 0) { 18 clearInterval(interval); 19 var attachment_id = imagerr_vars.item_id; 9 if (isAttachmentPost) { 10 var attachment_id = imagerr_vars.item_id; 11 $('.attachment-alt-text').after(generateMetaButtonHtml(attachment_id)); 12 } else if (isUploadPage) { 13 var counter = 0; 14 var interval = setInterval(function() { 15 counter++; 16 if (counter > 20) { 17 clearInterval(interval); 18 return; 19 } 20 if ($('#imagerr-generate-metadata-wrapper').length > 0) { 21 clearInterval(interval); 22 return; 23 } 24 if ($('.attachment-info').length > 0) { 25 clearInterval(interval); 26 var attachment_id = imagerr_vars.item_id; 27 $('.attachment-info .setting.alt-text').after(generateMetaButtonHtml(attachment_id)); 28 } 29 }, 500); 30 31 $(document).on('click', 'li.attachment', function() { 32 var attachment_id = $(this).attr('data-id'); 33 $('#imagerr-generate-metadata-wrapper').remove(); 20 34 $('.attachment-info .setting.alt-text').after(generateMetaButtonHtml(attachment_id)); 21 } 22 }, 500); 23 24 $(document).on('click', 'li.attachment', function() { 25 var attachment_id = $(this).attr('data-id'); 26 $('#imagerr-generate-metadata-wrapper').remove(); 27 $('.attachment-info .setting.alt-text').after(generateMetaButtonHtml(attachment_id)); 28 }); 35 }); 36 37 $(document).on('click', function(e) { 38 if( !e.target.matches('.media-modal .right, .media-modal .left') ) { 39 return; 40 } 41 setTimeout(function() { 42 if ($('#imagerr-generate-metadata-wrapper').length > 0) { 43 return; 44 } 45 const urlParams = new URLSearchParams(window.location.search); 46 const attachmentId = urlParams.get('item'); 47 $('.attachment-info .setting.alt-text').after(generateMetaButtonHtml(attachmentId)); 48 }, 100); 49 }); 50 } 29 51 30 52 $(document).on('click', '.imagerr-generate-metadata', function() { … … 43 65 success: function(response) { 44 66 // Update the meta fields 45 var attachment_wrapper = $this.closest('.attachment-info'); 46 $('[data-setting="alt"] textarea', attachment_wrapper).val(response.alt_text); 47 $('[data-setting="title"] input[type="text"]', attachment_wrapper).val(response.title); 48 $('[data-setting="caption"] textarea', attachment_wrapper).val(response.caption); 49 $('[data-setting="description"] textarea', attachment_wrapper).val(response.description); 67 if (isAttachmentPost) { 68 window.location.reload(); 69 } else { 70 var attachment_wrapper = $this.closest('.attachment-info'); 71 $('[data-setting="alt"] textarea', attachment_wrapper).val(response.alt_text); 72 $('[data-setting="title"] input[type="text"]', attachment_wrapper).val(response.title); 73 $('[data-setting="caption"] textarea', attachment_wrapper).val(response.caption); 74 $('[data-setting="description"] textarea', attachment_wrapper).val(response.description); 75 } 76 77 $this.closest('.imagerr-generate-metadata-wrapper').find('.imagerr-success').show().html(imagerr_vars.i18n.image_updated); 78 setTimeout(function() { 79 $this.closest('.imagerr-generate-metadata-wrapper').find('.imagerr-success').hide(); 80 }, 3000); 50 81 51 82 $this.prop('disabled', false).html(imagerr_vars.i18n.update_with_imagerr); … … 54 85 // Enable button and show error message 55 86 $this.prop('disabled', false).html(imagerr_vars.i18n.update_with_imagerr); 56 $ ('.imagerr-error').show().html(error.responseJSON);87 $this.closest('.imagerr-generate-metadata-wrapper').find('.imagerr-error').show().html(error.responseJSON); 57 88 } 58 89 }); -
alt-text-imagerr-ai/tags/1.1.2/imagerr.php
r3279851 r3296862 1 1 <?php 2 2 /** 3 * Plugin Name: A lt TextImagerr AI4 * Description: Generate s alt text, titles, descriptions, and captions for your images automatically with AI. Improve your accessibility & SEO.5 * Version: 1.1. 13 * Plugin Name: AI Image Alt Text Generator for WordPress – Imagerr AI 4 * Description: Generate alt text, titles, descriptions, and captions for your images automatically with AI 5 * Version: 1.1.2 6 6 * Text Domain: alt-text-imagerr-ai 7 7 * Domain Path: /languages … … 27 27 28 28 // PHP Constant for plugin version. 29 define( 'IMAGERR_VERSION', '1.1. 1' );29 define( 'IMAGERR_VERSION', '1.1.2' ); 30 30 31 31 // Delete dismissed notice option on plugin activation … … 73 73 add_action('admin_notices', array( $this, 'admin_notice' ) ); 74 74 add_action('wp_ajax_imagerr_dismiss_notice', array( $this, 'dismiss_notice' ) ); 75 add_action( 'plugins_loaded', array( $this, 'load_plugin_textdomain' ) ); 75 76 // Add action to generate metadata on upload. 76 77 if ( get_option( 'imagerr_auto_generate_on_upload' ) ) { … … 78 79 add_filter( 'wp_generate_attachment_metadata', array( $this, 'generate_meta_after_upload' ), 10, 2 ); 79 80 } 81 82 // Add Imagerr column to media library 83 add_filter( 'manage_media_columns', array( $this, 'add_imagerr_column' ) ); 84 add_action( 'manage_media_custom_column', array( $this, 'add_imagerr_column_content' ), 10, 2 ); 80 85 } 81 86 … … 86 91 $this->meta_async = new MetaAsync(); 87 92 $this->meta_bulk_async = new MetaBulkAsync(); 93 } 94 95 /** 96 * Load plugin text domain 97 */ 98 public function load_plugin_textdomain() { 99 load_plugin_textdomain( 100 'alt-text-imagerr-ai', 101 false, 102 dirname( plugin_basename( __FILE__ ) ) . '/languages/' 103 ); 88 104 } 89 105 … … 279 295 'status_generating' => esc_html__( '🏃♂️➡️ Generating...', 'alt-text-imagerr-ai' ), 280 296 'status_stopping_generation' => esc_html__( '🚫 Stopping generation...', 'alt-text-imagerr-ai' ), 297 'image_updated' => esc_html__( '✅ Image updated', 'alt-text-imagerr-ai' ), 281 298 ), 282 299 ) … … 285 302 286 303 // Attachment page. 287 if ( 'upload.php' === $hook ) {304 if ( 'upload.php' === $hook || 'post.php' === $hook ) { 288 305 wp_enqueue_script( 'imagerr-attachment-script', plugin_dir_url( __FILE__ ) . 'assets/imagerr-attachment.js', array( 'jquery' ), IMAGERR_VERSION, true ); 289 306 … … 291 308 if ( isset( $_GET['item'] ) ) { 292 309 $item_id = absint( $_GET['item'] ); 310 } 311 312 if ( isset( $_GET['post'] ) ) { 313 $item_id = absint( $_GET['post'] ); 293 314 } 294 315 … … 717 738 return $metadata; 718 739 } 740 741 /** 742 * Add Imagerr column to media library 743 * 744 * @param array $columns Array of columns. 745 * @return array Modified array of columns. 746 */ 747 public function add_imagerr_column( $columns ) { 748 $columns['imagerr'] = __( 'Imagerr', 'alt-text-imagerr-ai' ); 749 return $columns; 750 } 751 752 /** 753 * Add content to Imagerr column 754 * 755 * @param string $column_name Name of the column. 756 * @param int $post_id Post ID. 757 */ 758 public function add_imagerr_column_content( $column_name, $post_id ) { 759 if ( 'imagerr' !== $column_name ) { 760 return; 761 } 762 763 // Only show for images 764 if ( ! wp_attachment_is_image( $post_id ) ) { 765 return; 766 } 767 768 // Add the button HTML 769 ?> 770 <div class="imagerr-generate-metadata-wrapper"> 771 <button class="button-primary imagerr-generate-metadata" data-id="<?php echo esc_attr( $post_id ); ?>"> 772 <?php esc_html_e( 'Update with Imagerr', 'alt-text-imagerr-ai' ); ?> 773 </button> 774 <div class="imagerr-error" style="display: none; color: red;"></div> 775 <div class="imagerr-success" style="display: none; color: green;"> 776 <?php esc_html_e( '✅ Image updated', 'alt-text-imagerr-ai' ); ?> 777 </div> 778 </div> 779 <?php 780 } 719 781 } 720 782 -
alt-text-imagerr-ai/tags/1.1.2/languages/alt-text-imagerr-ai-en_US.po
r3271433 r3296862 3 3 msgstr "" 4 4 "Project-Id-Version: Alt Text Imagerr AI\n" 5 "POT-Creation-Date: 2025-0 4-10 15:55+0100\n"6 "PO-Revision-Date: 2025-0 4-10 15:56+0100\n"5 "POT-Creation-Date: 2025-05-19 18:02+0100\n" 6 "PO-Revision-Date: 2025-05-19 18:03+0100\n" 7 7 "Last-Translator: \n" 8 8 "Language-Team: \n" … … 22 22 "X-Poedit-SearchPathExcluded-0: *.min.js\n" 23 23 24 #: imagerr.php:9 5 imagerr.php:9624 #: imagerr.php:99 imagerr.php:100 25 25 msgid "Imagerr AI" 26 26 msgstr "" 27 27 28 #: imagerr.php:1 06 imagerr.php:10728 #: imagerr.php:110 imagerr.php:111 29 29 msgid "Settings" 30 30 msgstr "" 31 31 32 #: imagerr.php:11 5 imagerr.php:116templates/generate.php:632 #: imagerr.php:119 imagerr.php:120 templates/generate.php:6 33 33 msgid "Bulk Generator" 34 34 msgstr "" 35 35 36 #: imagerr.php:13 536 #: imagerr.php:139 37 37 msgid "" 38 38 "Imagerr AI plugin has been installed. To claim your free trial register on" 39 39 msgstr "" 40 40 41 #: imagerr.php:1 3741 #: imagerr.php:141 42 42 msgid "You can also check the" 43 43 msgstr "" 44 44 45 #: imagerr.php:1 3845 #: imagerr.php:142 46 46 msgid "plugin documentation" 47 47 msgstr "" 48 48 49 #: imagerr.php:2 75templates/generate.php:3149 #: imagerr.php:280 templates/generate.php:31 50 50 msgid "Update Meta" 51 51 msgstr "" 52 52 53 #: imagerr.php:2 7653 #: imagerr.php:281 54 54 msgid "✅ Completed" 55 55 msgstr "" 56 56 57 #: imagerr.php:2 7757 #: imagerr.php:282 58 58 msgid "Generating metadata..." 59 59 msgstr "" 60 60 61 #: imagerr.php:2 78templates/generate.php:2261 #: imagerr.php:283 templates/generate.php:22 62 62 msgid "🏃♂️➡️ Generating..." 63 63 msgstr "" 64 64 65 #: imagerr.php:2 7965 #: imagerr.php:284 66 66 msgid "🚫 Stopping generation..." 67 67 msgstr "" 68 68 69 #: imagerr.php:304 69 #: imagerr.php:285 imagerr.php:764 70 msgid "✅ Image updated" 71 msgstr "" 72 73 #: imagerr.php:313 imagerr.php:760 70 74 msgid "Update with Imagerr" 71 75 msgstr "" 72 76 73 #: imagerr.php:3 0577 #: imagerr.php:314 74 78 msgid "Generating..." 75 79 msgstr "" 76 80 77 81 #. translators: %s: URL to Imagerr account page 78 #: imagerr.php: 375 imagerr.php:41882 #: imagerr.php:426 imagerr.php:469 79 83 #, php-format 80 84 msgid "" … … 83 87 msgstr "" 84 88 85 #: imagerr.php: 384 imagerr.php:42789 #: imagerr.php:435 imagerr.php:478 86 90 msgid "" 87 91 "Sorry, you do not have enough credits to generate metadata. Please add more " … … 89 93 msgstr "" 90 94 91 #: imagerr.php: 49995 #: imagerr.php:550 92 96 msgid "Bulk metadata generation started" 93 97 msgstr "" 94 98 95 #: imagerr.php:5 2499 #: imagerr.php:575 96 100 msgid "Stopping generation..." 101 msgstr "" 102 103 #: imagerr.php:736 104 msgid "Imagerr" 97 105 msgstr "" 98 106 … … 135 143 msgstr "" 136 144 145 #: templates/generate.php:45 146 msgid "Images not processed" 147 msgstr "" 148 149 #: templates/generate.php:50 150 msgid "Image ID" 151 msgstr "" 152 153 #: templates/generate.php:51 154 msgid "Error Message" 155 msgstr "" 156 137 157 #: templates/settings.php:12 138 158 msgid "Imagerr Settings" … … 206 226 207 227 #. Plugin Name of the plugin/theme 208 msgid "A lt TextImagerr AI"228 msgid "AI Image Alt Text Generator for WordPress – Imagerr AI" 209 229 msgstr "" 210 230 211 231 #. Description of the plugin/theme 212 232 msgid "" 213 "Generate salt text, titles, descriptions, and captions for your images "214 "automatically with AI . Improve your accessibility & SEO."233 "Generate alt text, titles, descriptions, and captions for your images " 234 "automatically with AI" 215 235 msgstr "" 216 236 -
alt-text-imagerr-ai/tags/1.1.2/languages/alt-text-imagerr-ai.pot
r3271433 r3296862 3 3 msgstr "" 4 4 "Project-Id-Version: Alt Text Imagerr AI\n" 5 "POT-Creation-Date: 2025-0 4-10 15:55+0100\n"5 "POT-Creation-Date: 2025-05-19 18:02+0100\n" 6 6 "PO-Revision-Date: 2025-02-22 09:33+0000\n" 7 7 "Last-Translator: \n" … … 22 22 "X-Poedit-SearchPathExcluded-0: *.min.js\n" 23 23 24 #: imagerr.php:9 5 imagerr.php:9624 #: imagerr.php:99 imagerr.php:100 25 25 msgid "Imagerr AI" 26 26 msgstr "" 27 27 28 #: imagerr.php:1 06 imagerr.php:10728 #: imagerr.php:110 imagerr.php:111 29 29 msgid "Settings" 30 30 msgstr "" 31 31 32 #: imagerr.php:11 5 imagerr.php:116templates/generate.php:632 #: imagerr.php:119 imagerr.php:120 templates/generate.php:6 33 33 msgid "Bulk Generator" 34 34 msgstr "" 35 35 36 #: imagerr.php:13 536 #: imagerr.php:139 37 37 msgid "" 38 38 "Imagerr AI plugin has been installed. To claim your free trial register on" 39 39 msgstr "" 40 40 41 #: imagerr.php:1 3741 #: imagerr.php:141 42 42 msgid "You can also check the" 43 43 msgstr "" 44 44 45 #: imagerr.php:1 3845 #: imagerr.php:142 46 46 msgid "plugin documentation" 47 47 msgstr "" 48 48 49 #: imagerr.php:2 75templates/generate.php:3149 #: imagerr.php:280 templates/generate.php:31 50 50 msgid "Update Meta" 51 51 msgstr "" 52 52 53 #: imagerr.php:2 7653 #: imagerr.php:281 54 54 msgid "✅ Completed" 55 55 msgstr "" 56 56 57 #: imagerr.php:2 7757 #: imagerr.php:282 58 58 msgid "Generating metadata..." 59 59 msgstr "" 60 60 61 #: imagerr.php:2 78templates/generate.php:2261 #: imagerr.php:283 templates/generate.php:22 62 62 msgid "🏃♂️➡️ Generating..." 63 63 msgstr "" 64 64 65 #: imagerr.php:2 7965 #: imagerr.php:284 66 66 msgid "🚫 Stopping generation..." 67 67 msgstr "" 68 68 69 #: imagerr.php:304 69 #: imagerr.php:285 imagerr.php:764 70 msgid "✅ Image updated" 71 msgstr "" 72 73 #: imagerr.php:313 imagerr.php:760 70 74 msgid "Update with Imagerr" 71 75 msgstr "" 72 76 73 #: imagerr.php:3 0577 #: imagerr.php:314 74 78 msgid "Generating..." 75 79 msgstr "" 76 80 77 81 #. translators: %s: URL to Imagerr account page 78 #: imagerr.php: 375 imagerr.php:41882 #: imagerr.php:426 imagerr.php:469 79 83 #, php-format 80 84 msgid "" … … 83 87 msgstr "" 84 88 85 #: imagerr.php: 384 imagerr.php:42789 #: imagerr.php:435 imagerr.php:478 86 90 msgid "" 87 91 "Sorry, you do not have enough credits to generate metadata. Please add more " … … 89 93 msgstr "" 90 94 91 #: imagerr.php: 49995 #: imagerr.php:550 92 96 msgid "Bulk metadata generation started" 93 97 msgstr "" 94 98 95 #: imagerr.php:5 2499 #: imagerr.php:575 96 100 msgid "Stopping generation..." 101 msgstr "" 102 103 #: imagerr.php:736 104 msgid "Imagerr" 97 105 msgstr "" 98 106 … … 135 143 msgstr "" 136 144 145 #: templates/generate.php:45 146 msgid "Images not processed" 147 msgstr "" 148 149 #: templates/generate.php:50 150 msgid "Image ID" 151 msgstr "" 152 153 #: templates/generate.php:51 154 msgid "Error Message" 155 msgstr "" 156 137 157 #: templates/settings.php:12 138 158 msgid "Imagerr Settings" … … 206 226 207 227 #. Plugin Name of the plugin/theme 208 msgid "A lt TextImagerr AI"228 msgid "AI Image Alt Text Generator for WordPress – Imagerr AI" 209 229 msgstr "" 210 230 211 231 #. Description of the plugin/theme 212 232 msgid "" 213 "Generate salt text, titles, descriptions, and captions for your images "214 "automatically with AI . Improve your accessibility & SEO."233 "Generate alt text, titles, descriptions, and captions for your images " 234 "automatically with AI" 215 235 msgstr "" 216 236 -
alt-text-imagerr-ai/tags/1.1.2/readme.txt
r3279851 r3296862 1 === AI Image Alt Text Generator -Imagerr AI ===1 === AI Image Alt Text Generator for WordPress – Imagerr AI === 2 2 Contributors: andrejdivi, dbeja 3 3 Donate link: https://www.paypal.com/paypalme/dbkode 4 4 Tags: ai, image, alt, text, generator 5 5 Requires PHP: 5.2 6 Requires at least: 3.07 Stable tag: 1.1. 16 Requires at least: 4.6 7 Stable tag: 1.1.2 8 8 Tested up to: 6.8 9 9 License: GPLv2 or later 10 10 License URI: http://www.gnu.org/licenses/gpl-2.0.html 11 11 12 Generate alt text, titles, descriptions, and captions for your images automatically with AI — now with full post content updates and support for Divi & Elementor.12 Generate alt text, titles, descriptions, and captions for your images automatically with AI 13 13 14 14 == Description == … … 69 69 == Changelog == 70 70 71 = 1.1.2 = 72 * Fixed issue where the "Update with Imagerr" button didn't work after navigating between images in the media modal 73 * Added "Update with Imagerr" button to the Edit Attachment page for easier access 74 * Added "Update with Imagerr" button to the Media Library list view (images table) 75 * Minor UI tweaks and performance improvements 76 71 77 = 1.1.1 = 72 78 * Improved bulk generation process with automatic retries for failed images -
alt-text-imagerr-ai/trunk/assets/imagerr-attachment.js
r3249550 r3296862 1 1 jQuery(document).ready(function($) { 2 const isAttachmentPost = window.location.href.includes('post.php') && $('body').hasClass('post-type-attachment'); 3 const isUploadPage = window.location.href.includes('upload.php'); 4 2 5 function generateMetaButtonHtml(attachmentId) { 3 return '<div id="imagerr-generate-metadata-wrapper" class="setting description"><button class="button-primary imagerr-generate-metadata" data-id="' + attachmentId + '">' + imagerr_vars.i18n.update_with_imagerr + '</button><div class="imagerr-error" style="display: none; color: red;"></div>< /div>';6 return '<div id="imagerr-generate-metadata-wrapper" class="setting description"><button class="button-primary imagerr-generate-metadata" data-id="' + attachmentId + '">' + imagerr_vars.i18n.update_with_imagerr + '</button><div class="imagerr-error" style="display: none; color: red;"></div><div class="imagerr-success" style="display: none; color: green;">' + imagerr_vars.i18n.image_updated + '</div></div>'; 4 7 } 5 8 6 var counter = 0; 7 var interval = setInterval(function() { 8 counter++; 9 if (counter > 20) { 10 clearInterval(interval); 11 return; 12 } 13 if ($('#imagerr-generate-metadata-wrapper').length > 0) { 14 clearInterval(interval); 15 return; 16 } 17 if ($('.attachment-info').length > 0) { 18 clearInterval(interval); 19 var attachment_id = imagerr_vars.item_id; 9 if (isAttachmentPost) { 10 var attachment_id = imagerr_vars.item_id; 11 $('.attachment-alt-text').after(generateMetaButtonHtml(attachment_id)); 12 } else if (isUploadPage) { 13 var counter = 0; 14 var interval = setInterval(function() { 15 counter++; 16 if (counter > 20) { 17 clearInterval(interval); 18 return; 19 } 20 if ($('#imagerr-generate-metadata-wrapper').length > 0) { 21 clearInterval(interval); 22 return; 23 } 24 if ($('.attachment-info').length > 0) { 25 clearInterval(interval); 26 var attachment_id = imagerr_vars.item_id; 27 $('.attachment-info .setting.alt-text').after(generateMetaButtonHtml(attachment_id)); 28 } 29 }, 500); 30 31 $(document).on('click', 'li.attachment', function() { 32 var attachment_id = $(this).attr('data-id'); 33 $('#imagerr-generate-metadata-wrapper').remove(); 20 34 $('.attachment-info .setting.alt-text').after(generateMetaButtonHtml(attachment_id)); 21 } 22 }, 500); 23 24 $(document).on('click', 'li.attachment', function() { 25 var attachment_id = $(this).attr('data-id'); 26 $('#imagerr-generate-metadata-wrapper').remove(); 27 $('.attachment-info .setting.alt-text').after(generateMetaButtonHtml(attachment_id)); 28 }); 35 }); 36 37 $(document).on('click', function(e) { 38 if( !e.target.matches('.media-modal .right, .media-modal .left') ) { 39 return; 40 } 41 setTimeout(function() { 42 if ($('#imagerr-generate-metadata-wrapper').length > 0) { 43 return; 44 } 45 const urlParams = new URLSearchParams(window.location.search); 46 const attachmentId = urlParams.get('item'); 47 $('.attachment-info .setting.alt-text').after(generateMetaButtonHtml(attachmentId)); 48 }, 100); 49 }); 50 } 29 51 30 52 $(document).on('click', '.imagerr-generate-metadata', function() { … … 43 65 success: function(response) { 44 66 // Update the meta fields 45 var attachment_wrapper = $this.closest('.attachment-info'); 46 $('[data-setting="alt"] textarea', attachment_wrapper).val(response.alt_text); 47 $('[data-setting="title"] input[type="text"]', attachment_wrapper).val(response.title); 48 $('[data-setting="caption"] textarea', attachment_wrapper).val(response.caption); 49 $('[data-setting="description"] textarea', attachment_wrapper).val(response.description); 67 if (isAttachmentPost) { 68 window.location.reload(); 69 } else { 70 var attachment_wrapper = $this.closest('.attachment-info'); 71 $('[data-setting="alt"] textarea', attachment_wrapper).val(response.alt_text); 72 $('[data-setting="title"] input[type="text"]', attachment_wrapper).val(response.title); 73 $('[data-setting="caption"] textarea', attachment_wrapper).val(response.caption); 74 $('[data-setting="description"] textarea', attachment_wrapper).val(response.description); 75 } 76 77 $this.closest('.imagerr-generate-metadata-wrapper').find('.imagerr-success').show().html(imagerr_vars.i18n.image_updated); 78 setTimeout(function() { 79 $this.closest('.imagerr-generate-metadata-wrapper').find('.imagerr-success').hide(); 80 }, 3000); 50 81 51 82 $this.prop('disabled', false).html(imagerr_vars.i18n.update_with_imagerr); … … 54 85 // Enable button and show error message 55 86 $this.prop('disabled', false).html(imagerr_vars.i18n.update_with_imagerr); 56 $ ('.imagerr-error').show().html(error.responseJSON);87 $this.closest('.imagerr-generate-metadata-wrapper').find('.imagerr-error').show().html(error.responseJSON); 57 88 } 58 89 }); -
alt-text-imagerr-ai/trunk/imagerr.php
r3279851 r3296862 1 1 <?php 2 2 /** 3 * Plugin Name: A lt TextImagerr AI4 * Description: Generate s alt text, titles, descriptions, and captions for your images automatically with AI. Improve your accessibility & SEO.5 * Version: 1.1. 13 * Plugin Name: AI Image Alt Text Generator for WordPress – Imagerr AI 4 * Description: Generate alt text, titles, descriptions, and captions for your images automatically with AI 5 * Version: 1.1.2 6 6 * Text Domain: alt-text-imagerr-ai 7 7 * Domain Path: /languages … … 27 27 28 28 // PHP Constant for plugin version. 29 define( 'IMAGERR_VERSION', '1.1. 1' );29 define( 'IMAGERR_VERSION', '1.1.2' ); 30 30 31 31 // Delete dismissed notice option on plugin activation … … 73 73 add_action('admin_notices', array( $this, 'admin_notice' ) ); 74 74 add_action('wp_ajax_imagerr_dismiss_notice', array( $this, 'dismiss_notice' ) ); 75 add_action( 'plugins_loaded', array( $this, 'load_plugin_textdomain' ) ); 75 76 // Add action to generate metadata on upload. 76 77 if ( get_option( 'imagerr_auto_generate_on_upload' ) ) { … … 78 79 add_filter( 'wp_generate_attachment_metadata', array( $this, 'generate_meta_after_upload' ), 10, 2 ); 79 80 } 81 82 // Add Imagerr column to media library 83 add_filter( 'manage_media_columns', array( $this, 'add_imagerr_column' ) ); 84 add_action( 'manage_media_custom_column', array( $this, 'add_imagerr_column_content' ), 10, 2 ); 80 85 } 81 86 … … 86 91 $this->meta_async = new MetaAsync(); 87 92 $this->meta_bulk_async = new MetaBulkAsync(); 93 } 94 95 /** 96 * Load plugin text domain 97 */ 98 public function load_plugin_textdomain() { 99 load_plugin_textdomain( 100 'alt-text-imagerr-ai', 101 false, 102 dirname( plugin_basename( __FILE__ ) ) . '/languages/' 103 ); 88 104 } 89 105 … … 279 295 'status_generating' => esc_html__( '🏃♂️➡️ Generating...', 'alt-text-imagerr-ai' ), 280 296 'status_stopping_generation' => esc_html__( '🚫 Stopping generation...', 'alt-text-imagerr-ai' ), 297 'image_updated' => esc_html__( '✅ Image updated', 'alt-text-imagerr-ai' ), 281 298 ), 282 299 ) … … 285 302 286 303 // Attachment page. 287 if ( 'upload.php' === $hook ) {304 if ( 'upload.php' === $hook || 'post.php' === $hook ) { 288 305 wp_enqueue_script( 'imagerr-attachment-script', plugin_dir_url( __FILE__ ) . 'assets/imagerr-attachment.js', array( 'jquery' ), IMAGERR_VERSION, true ); 289 306 … … 291 308 if ( isset( $_GET['item'] ) ) { 292 309 $item_id = absint( $_GET['item'] ); 310 } 311 312 if ( isset( $_GET['post'] ) ) { 313 $item_id = absint( $_GET['post'] ); 293 314 } 294 315 … … 717 738 return $metadata; 718 739 } 740 741 /** 742 * Add Imagerr column to media library 743 * 744 * @param array $columns Array of columns. 745 * @return array Modified array of columns. 746 */ 747 public function add_imagerr_column( $columns ) { 748 $columns['imagerr'] = __( 'Imagerr', 'alt-text-imagerr-ai' ); 749 return $columns; 750 } 751 752 /** 753 * Add content to Imagerr column 754 * 755 * @param string $column_name Name of the column. 756 * @param int $post_id Post ID. 757 */ 758 public function add_imagerr_column_content( $column_name, $post_id ) { 759 if ( 'imagerr' !== $column_name ) { 760 return; 761 } 762 763 // Only show for images 764 if ( ! wp_attachment_is_image( $post_id ) ) { 765 return; 766 } 767 768 // Add the button HTML 769 ?> 770 <div class="imagerr-generate-metadata-wrapper"> 771 <button class="button-primary imagerr-generate-metadata" data-id="<?php echo esc_attr( $post_id ); ?>"> 772 <?php esc_html_e( 'Update with Imagerr', 'alt-text-imagerr-ai' ); ?> 773 </button> 774 <div class="imagerr-error" style="display: none; color: red;"></div> 775 <div class="imagerr-success" style="display: none; color: green;"> 776 <?php esc_html_e( '✅ Image updated', 'alt-text-imagerr-ai' ); ?> 777 </div> 778 </div> 779 <?php 780 } 719 781 } 720 782 -
alt-text-imagerr-ai/trunk/languages/alt-text-imagerr-ai-en_US.po
r3271433 r3296862 3 3 msgstr "" 4 4 "Project-Id-Version: Alt Text Imagerr AI\n" 5 "POT-Creation-Date: 2025-0 4-10 15:55+0100\n"6 "PO-Revision-Date: 2025-0 4-10 15:56+0100\n"5 "POT-Creation-Date: 2025-05-19 18:02+0100\n" 6 "PO-Revision-Date: 2025-05-19 18:03+0100\n" 7 7 "Last-Translator: \n" 8 8 "Language-Team: \n" … … 22 22 "X-Poedit-SearchPathExcluded-0: *.min.js\n" 23 23 24 #: imagerr.php:9 5 imagerr.php:9624 #: imagerr.php:99 imagerr.php:100 25 25 msgid "Imagerr AI" 26 26 msgstr "" 27 27 28 #: imagerr.php:1 06 imagerr.php:10728 #: imagerr.php:110 imagerr.php:111 29 29 msgid "Settings" 30 30 msgstr "" 31 31 32 #: imagerr.php:11 5 imagerr.php:116templates/generate.php:632 #: imagerr.php:119 imagerr.php:120 templates/generate.php:6 33 33 msgid "Bulk Generator" 34 34 msgstr "" 35 35 36 #: imagerr.php:13 536 #: imagerr.php:139 37 37 msgid "" 38 38 "Imagerr AI plugin has been installed. To claim your free trial register on" 39 39 msgstr "" 40 40 41 #: imagerr.php:1 3741 #: imagerr.php:141 42 42 msgid "You can also check the" 43 43 msgstr "" 44 44 45 #: imagerr.php:1 3845 #: imagerr.php:142 46 46 msgid "plugin documentation" 47 47 msgstr "" 48 48 49 #: imagerr.php:2 75templates/generate.php:3149 #: imagerr.php:280 templates/generate.php:31 50 50 msgid "Update Meta" 51 51 msgstr "" 52 52 53 #: imagerr.php:2 7653 #: imagerr.php:281 54 54 msgid "✅ Completed" 55 55 msgstr "" 56 56 57 #: imagerr.php:2 7757 #: imagerr.php:282 58 58 msgid "Generating metadata..." 59 59 msgstr "" 60 60 61 #: imagerr.php:2 78templates/generate.php:2261 #: imagerr.php:283 templates/generate.php:22 62 62 msgid "🏃♂️➡️ Generating..." 63 63 msgstr "" 64 64 65 #: imagerr.php:2 7965 #: imagerr.php:284 66 66 msgid "🚫 Stopping generation..." 67 67 msgstr "" 68 68 69 #: imagerr.php:304 69 #: imagerr.php:285 imagerr.php:764 70 msgid "✅ Image updated" 71 msgstr "" 72 73 #: imagerr.php:313 imagerr.php:760 70 74 msgid "Update with Imagerr" 71 75 msgstr "" 72 76 73 #: imagerr.php:3 0577 #: imagerr.php:314 74 78 msgid "Generating..." 75 79 msgstr "" 76 80 77 81 #. translators: %s: URL to Imagerr account page 78 #: imagerr.php: 375 imagerr.php:41882 #: imagerr.php:426 imagerr.php:469 79 83 #, php-format 80 84 msgid "" … … 83 87 msgstr "" 84 88 85 #: imagerr.php: 384 imagerr.php:42789 #: imagerr.php:435 imagerr.php:478 86 90 msgid "" 87 91 "Sorry, you do not have enough credits to generate metadata. Please add more " … … 89 93 msgstr "" 90 94 91 #: imagerr.php: 49995 #: imagerr.php:550 92 96 msgid "Bulk metadata generation started" 93 97 msgstr "" 94 98 95 #: imagerr.php:5 2499 #: imagerr.php:575 96 100 msgid "Stopping generation..." 101 msgstr "" 102 103 #: imagerr.php:736 104 msgid "Imagerr" 97 105 msgstr "" 98 106 … … 135 143 msgstr "" 136 144 145 #: templates/generate.php:45 146 msgid "Images not processed" 147 msgstr "" 148 149 #: templates/generate.php:50 150 msgid "Image ID" 151 msgstr "" 152 153 #: templates/generate.php:51 154 msgid "Error Message" 155 msgstr "" 156 137 157 #: templates/settings.php:12 138 158 msgid "Imagerr Settings" … … 206 226 207 227 #. Plugin Name of the plugin/theme 208 msgid "A lt TextImagerr AI"228 msgid "AI Image Alt Text Generator for WordPress – Imagerr AI" 209 229 msgstr "" 210 230 211 231 #. Description of the plugin/theme 212 232 msgid "" 213 "Generate salt text, titles, descriptions, and captions for your images "214 "automatically with AI . Improve your accessibility & SEO."233 "Generate alt text, titles, descriptions, and captions for your images " 234 "automatically with AI" 215 235 msgstr "" 216 236 -
alt-text-imagerr-ai/trunk/languages/alt-text-imagerr-ai.pot
r3271433 r3296862 3 3 msgstr "" 4 4 "Project-Id-Version: Alt Text Imagerr AI\n" 5 "POT-Creation-Date: 2025-0 4-10 15:55+0100\n"5 "POT-Creation-Date: 2025-05-19 18:02+0100\n" 6 6 "PO-Revision-Date: 2025-02-22 09:33+0000\n" 7 7 "Last-Translator: \n" … … 22 22 "X-Poedit-SearchPathExcluded-0: *.min.js\n" 23 23 24 #: imagerr.php:9 5 imagerr.php:9624 #: imagerr.php:99 imagerr.php:100 25 25 msgid "Imagerr AI" 26 26 msgstr "" 27 27 28 #: imagerr.php:1 06 imagerr.php:10728 #: imagerr.php:110 imagerr.php:111 29 29 msgid "Settings" 30 30 msgstr "" 31 31 32 #: imagerr.php:11 5 imagerr.php:116templates/generate.php:632 #: imagerr.php:119 imagerr.php:120 templates/generate.php:6 33 33 msgid "Bulk Generator" 34 34 msgstr "" 35 35 36 #: imagerr.php:13 536 #: imagerr.php:139 37 37 msgid "" 38 38 "Imagerr AI plugin has been installed. To claim your free trial register on" 39 39 msgstr "" 40 40 41 #: imagerr.php:1 3741 #: imagerr.php:141 42 42 msgid "You can also check the" 43 43 msgstr "" 44 44 45 #: imagerr.php:1 3845 #: imagerr.php:142 46 46 msgid "plugin documentation" 47 47 msgstr "" 48 48 49 #: imagerr.php:2 75templates/generate.php:3149 #: imagerr.php:280 templates/generate.php:31 50 50 msgid "Update Meta" 51 51 msgstr "" 52 52 53 #: imagerr.php:2 7653 #: imagerr.php:281 54 54 msgid "✅ Completed" 55 55 msgstr "" 56 56 57 #: imagerr.php:2 7757 #: imagerr.php:282 58 58 msgid "Generating metadata..." 59 59 msgstr "" 60 60 61 #: imagerr.php:2 78templates/generate.php:2261 #: imagerr.php:283 templates/generate.php:22 62 62 msgid "🏃♂️➡️ Generating..." 63 63 msgstr "" 64 64 65 #: imagerr.php:2 7965 #: imagerr.php:284 66 66 msgid "🚫 Stopping generation..." 67 67 msgstr "" 68 68 69 #: imagerr.php:304 69 #: imagerr.php:285 imagerr.php:764 70 msgid "✅ Image updated" 71 msgstr "" 72 73 #: imagerr.php:313 imagerr.php:760 70 74 msgid "Update with Imagerr" 71 75 msgstr "" 72 76 73 #: imagerr.php:3 0577 #: imagerr.php:314 74 78 msgid "Generating..." 75 79 msgstr "" 76 80 77 81 #. translators: %s: URL to Imagerr account page 78 #: imagerr.php: 375 imagerr.php:41882 #: imagerr.php:426 imagerr.php:469 79 83 #, php-format 80 84 msgid "" … … 83 87 msgstr "" 84 88 85 #: imagerr.php: 384 imagerr.php:42789 #: imagerr.php:435 imagerr.php:478 86 90 msgid "" 87 91 "Sorry, you do not have enough credits to generate metadata. Please add more " … … 89 93 msgstr "" 90 94 91 #: imagerr.php: 49995 #: imagerr.php:550 92 96 msgid "Bulk metadata generation started" 93 97 msgstr "" 94 98 95 #: imagerr.php:5 2499 #: imagerr.php:575 96 100 msgid "Stopping generation..." 101 msgstr "" 102 103 #: imagerr.php:736 104 msgid "Imagerr" 97 105 msgstr "" 98 106 … … 135 143 msgstr "" 136 144 145 #: templates/generate.php:45 146 msgid "Images not processed" 147 msgstr "" 148 149 #: templates/generate.php:50 150 msgid "Image ID" 151 msgstr "" 152 153 #: templates/generate.php:51 154 msgid "Error Message" 155 msgstr "" 156 137 157 #: templates/settings.php:12 138 158 msgid "Imagerr Settings" … … 206 226 207 227 #. Plugin Name of the plugin/theme 208 msgid "A lt TextImagerr AI"228 msgid "AI Image Alt Text Generator for WordPress – Imagerr AI" 209 229 msgstr "" 210 230 211 231 #. Description of the plugin/theme 212 232 msgid "" 213 "Generate salt text, titles, descriptions, and captions for your images "214 "automatically with AI . Improve your accessibility & SEO."233 "Generate alt text, titles, descriptions, and captions for your images " 234 "automatically with AI" 215 235 msgstr "" 216 236 -
alt-text-imagerr-ai/trunk/readme.txt
r3279851 r3296862 1 === AI Image Alt Text Generator -Imagerr AI ===1 === AI Image Alt Text Generator for WordPress – Imagerr AI === 2 2 Contributors: andrejdivi, dbeja 3 3 Donate link: https://www.paypal.com/paypalme/dbkode 4 4 Tags: ai, image, alt, text, generator 5 5 Requires PHP: 5.2 6 Requires at least: 3.07 Stable tag: 1.1. 16 Requires at least: 4.6 7 Stable tag: 1.1.2 8 8 Tested up to: 6.8 9 9 License: GPLv2 or later 10 10 License URI: http://www.gnu.org/licenses/gpl-2.0.html 11 11 12 Generate alt text, titles, descriptions, and captions for your images automatically with AI — now with full post content updates and support for Divi & Elementor.12 Generate alt text, titles, descriptions, and captions for your images automatically with AI 13 13 14 14 == Description == … … 69 69 == Changelog == 70 70 71 = 1.1.2 = 72 * Fixed issue where the "Update with Imagerr" button didn't work after navigating between images in the media modal 73 * Added "Update with Imagerr" button to the Edit Attachment page for easier access 74 * Added "Update with Imagerr" button to the Media Library list view (images table) 75 * Minor UI tweaks and performance improvements 76 71 77 = 1.1.1 = 72 78 * Improved bulk generation process with automatic retries for failed images
Note: See TracChangeset
for help on using the changeset viewer.