Main to Develop sync for v1.12.2 release (#1959)#1962
Merged
Conversation
* Fix the virtual media creation for core/gallery block. Resolve virtual attachment id resolution for all core Blocks. (#1944) * Fix the virtual media creation issue for core/gallery block * fix: resolve virtual GoDAM ID for core media blocks and gallery inner blocks Extended withVirtualAttachmentHandler HOC from core/image-only to all single-ID core media blocks (core/video, core/audio, core/file, core/cover, core/media-text), replacing the virtual GoDAM ID with the real WP attachment ID on the godam-virtual-attachment-created event. For core/gallery, inner core/image blocks were not updated because the event fired before React effects on newly inserted inner blocks had registered. Fixed by adding replaceVirtualIdInCoreImageBlocks in godam-media-frame-shared.js, which walks the full block tree synchronously inside processGoDAMItem immediately after the REST API returns the real attachment — no reliance on event listener timing. Also switched ID comparisons to String(x) === String(y) to guard against type mismatches between the numeric block attribute and the string GoDAM ID. * fix: add godam/audio and godam/pdf blocks virtual attachment id assignment * fix: enhance virtual ID replacement in nested core/image blocks for core/gallery block with error handling * fix: improve GoDAM gallery update handling with additional library validation * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: KMchaudhary <kuldipkumar.chaudhary@rtcamp.com> Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * feat: align Elementor video widget with godam/video block and fix player wrapper CSS injection (#1927) * feat: align Elementor video widget with godam/video block and fix player wrapper CSS injection - Replace `preload` control with `performanceMode` (balanced/priority) in the Elementor GoDAM Video widget; preload is now derived from performance mode via `rtgodam_get_video_performance_settings()`, consistent with the block - Add `hoverSelect`, `showShareButton`, `engagements`, `playerHeight` controls to the Elementor widget; `engagements` is gated by `rtgodam_is_engagement_feature_enabled()` - Set `aspectRatio` default to `responsive` in the widget (was empty string) so the template computes ratio from video metadata, matching block behaviour - Add `hls_transcoded_url` to `godam_video` shortcode attributes and remove the legacy `preload` attribute - Fix player wrapper inline CSS not rendering on admin pages and in AJAX/REST contexts (Elementor editor re-renders): hook into `admin_head` on admin pages and output immediately when `wp_doing_ajax()` or `REST_REQUEST` is true Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix: streamline inline CSS output for player wrapper in Elementor context * feat: enhance GoDAM Video widget with thumbnail picker, aspect ratio control, mute, and hover options support * feat: align gallery shortcode and Elementor widget with godam/gallery-v2 block - Extract shared inc/templates/godam-video-gallery.php; block, shortcode, REST endpoint, and Elementor widget all render through it. - Rewrite [godam_video_gallery] to delegate to the template; add mode, item_width, view_ratio, performance_mode, enable_more_items, ids; drop legacy columns/category/tag/search/include/align/css. - Align Elementor Godam_Gallery widget controls 1:1 with the block, add Handpicked mode via a Repeater, gate engagements behind the feature flag. - Skip non-video attachments defensively in the gallery video resolver. - Add Elementor_Gallery_Widget_V1_To_V2 migration to rewrite saved _elementor_data (columns→item_width, layout=list→grid, drop legacy keys). * feat: add Elementor support for GoDAM Gallery widget re-initialization * feat: add editor-side styles for Elementor controls and enhance GoDAM Gallery widget settings * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * fix: correct formatting of query arguments in Dynamic_Gallery class * fix: resolve GoDAM virtual media to real attachment id in Elementor widgets Handle the godam-virtual-attachment-created event inside the shared godam-media control so a virtual GoDAM-tab selection swaps to the real attachment id. Covers GoDAM Video, GoDAM Video Gallery, and Shoppable Video widgets, including individual repeater rows. * fix: update widget icons and titles for GoDAM Audio, Gallery, and Video Elementor widgets --------- Co-authored-by: KMchaudhary <kuldipkumar.chaudhary@rtcamp.com> Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com> Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * Misc bug fixes for GoDAM plugin (#1937) * Fix hotspot overlaping over other hotspot layer popup * fix: add validation for non-video selections in GoDAM Video block * fix: add validation for non-audio selections in GoDAM Audio block * fix: restore vertical spacing for ToggleControl in block inspector across audio, gallery, and player blocks * Fix style and spacing issues for video editor --------- Co-authored-by: KMchaudhary <kuldipkumar.chaudhary@rtcamp.com> * Enhance GoDAM Video, and GoDAM Video Gallery Shortcode and WPBakery Integration (#1954) * Enhance GoDAM Video Gallery Shortcode and WPBakery Integration Added support for handpicked video items in the GoDAM Video Gallery shortcode, allowing users to specify videos directly via a URL-encoded JSON array. - Updated the WPBakery GoDAM Video Gallery element to include new parameters for enhanced video selection, including mode, media folder, author, and date range filters. - Improved the user interface for video and audio selectors by ensuring buttons are of type button to prevent unintended form submissions. - Refactored dropdown options for media folders and authors to provide clearer labeling and improved usability. - Enhanced documentation and comments throughout the code for better maintainability and clarity. * feat: enhance GoDAM Video widget with SEO settings and WPBakery integration * Apply suggestions from code review Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * feat: enhance gallery sorting options by adding duration and size parameters * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * fix: standardize whitespace in shortcode attribute parsing * feat: simplify element names for audio and video components in WPBakery --------- Co-authored-by: KMchaudhary <kuldipkumar.chaudhary@rtcamp.com> Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * Fix the JS build error (#1957) Co-authored-by: KMchaudhary <kuldipkumar.chaudhary@rtcamp.com> * Release: Update version to 1.12.2 and add changelog (#1958) * Release: Update version to 1.12.2 and add changelog * Generate new POT file --------- Co-authored-by: KMchaudhary <kuldipkumar.chaudhary@rtcamp.com> * Update migration version to 1.12.2 and add new migration classes (#1960) Co-authored-by: KMchaudhary <kuldipkumar.chaudhary@rtcamp.com> --------- Co-authored-by: KMchaudhary <kuldipkumar.chaudhary@rtcamp.com> Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com> Co-authored-by: Subodh Rajpopat <subodh.rajpopat@rtcamp.com>
🔍 WordPress Plugin Check Report
📊 Report
❌ Errors (2)📁 lib/class-godam-frappe-dispatch-installer.php (2 errors)
|
| 📍 Line | 🔖 Check | 💬 Message |
|---|---|---|
0 |
missing_composer_json_file | The "/vendor" directory using composer exists, but "composer.json" file is missing. |
📁 readme.txt (2 warnings)
| 📍 Line | 🔖 Check | 💬 Message |
|---|---|---|
0 |
mismatched_plugin_name | Plugin name "GoDAM - Organize WordPress Media Library & File Manager with Unlimited Folders for Images, Videos & more" is different from the name declared in plugin header "GoDAM". |
0 |
trademarked_term | The plugin name includes a restricted term. Your chosen plugin name - "GoDAM - Organize WordPress Media Library & File Manager with Unlimited Folders for Images, Videos & more" - contains the restricted term "wordpress" which cannot be used at all in your plugin name. |
📁 assets/build/blocks/godam-gallery-v2/render.php (2 warnings)
| 📍 Line | 🔖 Check | 💬 Message |
|---|---|---|
15 |
WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedVariableFound | Global variables defined by a theme/plugin should start with the theme/plugin prefix. Found: "$inner_block_video_ids". |
23 |
WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedVariableFound | Global variables defined by a theme/plugin should start with the theme/plugin prefix. Found: "$inner_block_video_ids". |
📁 assets/build/css/main.css (1 warning)
| 📍 Line | 🔖 Check | 💬 Message |
|---|---|---|
0 |
EnqueuedStylesScope | This style is being loaded in all contexts. |
📁 assets/src/libs/analytics.min.js (5 warnings)
| 📍 Line | 🔖 Check | 💬 Message |
|---|---|---|
0 |
EnqueuedScriptsScope | This script is being loaded in all frontend contexts. |
0 |
NonBlockingScripts.NoStrategy | This script on http://localhost:8880 (with handle analytics-library) is loaded in the footer. Consider a defer or async script loading strategy instead. |
0 |
NonBlockingScripts.NoStrategy | This script on http://localhost:8880/2026/06/17/hello-world/ (with handle analytics-library) is loaded in the footer. Consider a defer or async script loading strategy instead. |
0 |
NonBlockingScripts.NoStrategy | This script on http://localhost:8880/demo-page-post/ (with handle analytics-library) is loaded in the footer. Consider a defer or async script loading strategy instead. |
0 |
NonBlockingScripts.NoStrategy | This script on http://localhost:8880/demo-attachment-post/ (with handle analytics-library) is loaded in the footer. Consider a defer or async script loading strategy instead. |
📁 assets/build/js/main.min.js (5 warnings)
| 📍 Line | 🔖 Check | 💬 Message |
|---|---|---|
0 |
EnqueuedScriptsScope | This script is being loaded in all frontend contexts. |
0 |
NonBlockingScripts.NoStrategy | This script on http://localhost:8880 (with handle rtgodam-script) is loaded in the footer. Consider a defer or async script loading strategy instead. |
0 |
NonBlockingScripts.NoStrategy | This script on http://localhost:8880/2026/06/17/hello-world/ (with handle rtgodam-script) is loaded in the footer. Consider a defer or async script loading strategy instead. |
0 |
NonBlockingScripts.NoStrategy | This script on http://localhost:8880/demo-page-post/ (with handle rtgodam-script) is loaded in the footer. Consider a defer or async script loading strategy instead. |
0 |
NonBlockingScripts.NoStrategy | This script on http://localhost:8880/demo-attachment-post/ (with handle rtgodam-script) is loaded in the footer. Consider a defer or async script loading strategy instead. |
🤖 Generated by WordPress Plugin Check Action • Learn more about Plugin Check
Contributor
There was a problem hiding this comment.
Pull request overview
This PR syncs develop into main for the v1.12.2 release, combining multiple fixes/features across Gutenberg blocks, media-library virtual attachment handling, Elementor/WPBakery integrations, and release metadata.
Changes:
- Bump plugin/version metadata to
1.12.2and addv1.12.2changelog entries. - Align GoDAM Video Gallery rendering across block/shortcode/REST/Elementor/WPBakery via a shared PHP template + updated REST pagination.
- Improve editor UX and reliability (virtual ID replacement for core blocks/gallery, Elementor widget re-init + thumbnail picker, hotspot hover/stacking fixes, toggle spacing fixes).
Reviewed changes
Copilot reviewed 43 out of 45 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
| readme.txt | Stable tag bump + changelog updates for 1.12.2. |
| README.md | Stable tag bump to 1.12.2. |
| pages/video-editor/components/layers/HotspotLayer.js | UI spacing tweak for hotspot tooltip field. |
| pages/video-editor/components/appearance/Appearance.js | Switch skip-duration control to SelectControl. |
| package.json | Version bump to 1.12.2. |
| package-lock.json | Version bump to 1.12.2. |
| inc/templates/godam-video-gallery.php | New shared gallery-v2 render template + helper functions. |
| inc/templates/godam-player.php | Inline wrapper CSS output behavior adjusted for more render contexts. |
| inc/classes/wpbakery-elements/class-wpb-godam-video.php | WPBakery GoDAM video element control alignment (performance_mode, hover, etc.). |
| inc/classes/wpbakery-elements/class-wpb-godam-video-gallery.php | WPBakery gallery element aligned to gallery-v2 (mode, handpicked/query, etc.). |
| inc/classes/wpbakery-elements/class-wpb-godam-params.php | Make selector buttons type="button" to avoid form submits. |
| inc/classes/wpbakery-elements/class-wpb-godam-audio.php | Rename WPBakery element title to “Audio”. |
| inc/classes/shortcodes/class-godam-video-gallery.php | Shortcode refactor to delegate to shared template + align attributes. |
| inc/classes/shortcodes/class-godam-player.php | Add new shortcode attrs (e.g., hls_transcoded_url, playerHeight mapping). |
| inc/classes/rest-api/class-dynamic-gallery.php | REST pagination updated to render gallery-v2 compatible item markup. |
| inc/classes/migrations/class-wpbakery-gallery-shortcode-v1-to-v2.php | New migration rewriting V1 [godam_video_gallery] shortcodes in post_content. |
| inc/classes/migrations/class-runner.php | Register new migrations under version key 1.12.2. |
| inc/classes/migrations/class-elementor-gallery-widget-v1-to-v2.php | New migration for Elementor widget settings V1 → V2. |
| inc/classes/elementor-widgets/class-godam-video.php | Elementor video widget parity updates + new controls. |
| inc/classes/elementor-widgets/class-godam-gallery.php | Elementor gallery widget aligned to gallery-v2 (mode, repeater, filters, etc.). |
| inc/classes/elementor-widgets/class-godam-audio.php | Update Elementor audio widget icon class. |
| inc/classes/class-elementor-widgets.php | Enqueue editor-only CSS + inject brand icon CSS for Elementor panel. |
| godam.php | Plugin header + RTGODAM_VERSION bump to 1.12.2. |
| CHANGELOG.md | Add v1.12.2 release notes. |
| assets/src/js/wpbakery/wpbakery-video-selector-param.js | Robust WPBakery selector bindings (namespace + MutationObserver). |
| assets/src/js/media-library/views/godam-media-frame-shared.js | Core/gallery inner-block virtual-ID replacement + selection tracking. |
| assets/src/js/godam-player/managers/layers/hotspotLayerManager.js | Hotspot hover logic updated (pause conditional + z-index fix). |
| assets/src/js/elementor/widgets/godam-gallery.js | Elementor “element_ready” re-init hook for gallery/player. |
| assets/src/js/elementor/frontend.js | Register Elementor gallery widget frontend module. |
| assets/src/js/elementor/editor.js | Elementor editor hydration (thumbnail grid, autoplay locks, REST fetch). |
| assets/src/js/elementor/controls/godam-media.js | Replace virtual IDs with real attachment IDs for Elementor media control. |
| assets/src/css/godam-elementor-editor.scss | New Elementor editor-only polish styles (Select2, etc.). |
| assets/src/css/admin.scss | Elementor thumbnail-picker + autoplay-lock CSS. |
| assets/src/css/_common.scss | Add select styling under .godam-input. |
| assets/src/blocks/godam-player/editor.scss | Restore ToggleControl spacing in inspector for WP 7.0+. |
| assets/src/blocks/godam-player/edit.js | Validate selected media type is video in GoDAM Video block. |
| assets/src/blocks/godam-gallery-v2/view.js | Expose window.GodamGalleryV2.init() for dynamic re-init contexts. |
| assets/src/blocks/godam-gallery-v2/render.php | Make gallery-v2 render a thin wrapper around shared template. |
| assets/src/blocks/godam-gallery-v2/editor.scss | Restore ToggleControl spacing in inspector for WP 7.0+. |
| assets/src/blocks/godam-audio/editor.scss | Restore ToggleControl spacing in inspector for WP 7.0+. |
| assets/src/blocks/godam-audio/edit.js | Validate selected media type is audio in GoDAM Audio block. |
| assets/src/block-extensions/index.js | Switch extension entry to new generalized core-media handler. |
| assets/src/block-extensions/core-media-blocks-extension.js | New generalized virtual-attachment handler for multiple blocks. |
| assets/src/block-extensions/core-image-extension.js | Removed (replaced by generalized handler). |
Comments suppressed due to low confidence (1)
inc/classes/elementor-widgets/class-godam-gallery.php:201
- This widget still uses
get_users( [ 'who' => 'authors' ] ), which is deprecated/removed from the public API in newer WordPress versions and can return incomplete results on modern role setups. Use an explicitfields+orderbyquery instead (same approach used elsewhere in this PR for WPBakery).
$users = get_users( array( 'who' => 'authors' ) );
$user_options = array();
foreach ( $users as $user ) {
$user_options[ strval( $user->ID ) ] = $user->display_name;
}
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Comment on lines
+50
to
+60
| const handleVirtualAttachmentCreated = ( event ) => { | ||
| const { attachment, virtualMediaId } = event.detail || {}; | ||
|
|
||
| // Update id attribute only if it's undefined, null, or matches the virtualMediaId. | ||
| if ( | ||
| attachment && | ||
| ( mediaId === undefined || mediaId === null || String( mediaId ) === String( virtualMediaId ) ) | ||
| ) { | ||
| setAttributes( { [ singleIdAttr ]: attachment.id } ); | ||
| } | ||
| }; |
Comment on lines
+60
to
+66
| 'date_range' => '', | ||
| 'custom_date_start' => '', | ||
| 'custom_date_end' => '', | ||
| 'show_title' => true, | ||
| 'performance_mode' => 'balanced', | ||
| 'engagements' => true, | ||
| ), |
Comment on lines
+71
to
74
| foreach ( array( 'infinite_scroll', 'enable_more_items', 'show_title', 'engagements' ) as $bool_key ) { | ||
| $atts[ $bool_key ] = filter_var( $atts[ $bool_key ], FILTER_VALIDATE_BOOLEAN ); | ||
| } | ||
|
|
Comment on lines
156
to
158
| ob_start(); | ||
|
|
||
| if ( $query->have_posts() ) { | ||
| // Add action before gallery output. | ||
| do_action( 'rtgodam_gallery_before_output', $query, $atts ); | ||
|
|
||
| $godam_figure_attributes = get_block_wrapper_attributes( | ||
| array( | ||
| 'class' => 'godam-video-gallery-wrapper', | ||
| ) | ||
| ); | ||
|
|
||
| // Calculate these values before using them. | ||
| $total_videos = $query->found_posts; | ||
| $shown_videos = count( $query->posts ); | ||
|
|
||
| $alignment_class = ! empty( $atts['align'] ) ? ' align' . $atts['align'] : ''; | ||
| $css_class = ! empty( $atts['css_class'] ) ? ' ' . trim( $atts['css_class'] ) : ''; | ||
|
|
||
| echo '<div ' . wp_kses_data( $godam_figure_attributes ) . '>'; | ||
| echo '<div class="godam-video-gallery layout-' . esc_attr( $atts['layout'] ) . | ||
| ( 'grid' === $atts['layout'] ? ' columns-' . intval( $atts['columns'] ) : '' ) . | ||
| esc_attr( $alignment_class ) . esc_attr( $css_class ) . '" | ||
| data-infinite-scroll="' . esc_attr( $atts['infinite_scroll'] ) . '" | ||
| data-offset="' . esc_attr( $shown_videos ) . '" | ||
| data-columns="' . esc_attr( $atts['columns'] ) . '" | ||
| data-orderby="' . esc_attr( $atts['orderby'] ) . '" | ||
| data-order="' . esc_attr( $atts['order'] ) . '" | ||
| data-total="' . esc_attr( $total_videos ) . '" | ||
| data-show-title="' . ( $atts['show_title'] ? '1' : '0' ) . '" | ||
| data-layout="' . esc_attr( $atts['layout'] ) . '" | ||
| data-search="' . esc_attr( $atts['search'] ) . '" | ||
| data-category="' . esc_attr( $atts['category'] ) . '" | ||
| data-tag="' . esc_attr( $atts['tag'] ) . '" | ||
| data-author="' . esc_attr( $atts['author'] ) . '" | ||
| data-include="' . esc_attr( $atts['include'] ) . '" | ||
| data-date-range="' . esc_attr( $atts['date_range'] ) . '" | ||
| data-custom-date-start="' . esc_attr( $atts['custom_date_start'] ) . '" | ||
| data-custom-date-end="' . esc_attr( $atts['custom_date_end'] ) . '" | ||
| data-engagements="' . esc_attr( rtgodam_is_engagement_feature_enabled() && $atts['engagements'] ? '1' : '0' ) . '" | ||
|
|
||
| >'; | ||
| foreach ( $query->posts as $video ) { | ||
| // Add action before each video item. | ||
| do_action( 'rtgodam_gallery_before_video_item', $video, $atts ); | ||
|
|
||
| $video_id = intval( $video->ID ); | ||
| $video_title = get_the_title( $video_id ); | ||
| $video_slug = get_post_field( 'post_name', $video_id ); | ||
| $video_date = get_the_date( 'F j, Y', $video_id ); | ||
|
|
||
| // Add filter for video title. | ||
| $video_title = apply_filters( 'rtgodam_gallery_video_title', $video_title, $video_id ); | ||
|
|
||
| // Add filter for video date format. | ||
| $video_date = apply_filters( 'rtgodam_gallery_video_date', $video_date, $video_id ); | ||
|
|
||
| $thumbnail_data = rtgodam_get_video_thumbnail_sources( $video_id ); | ||
| $thumbnail = $thumbnail_data['thumbnail']; | ||
| $placeholder_thumbnail = $thumbnail_data['placeholder']; | ||
|
|
||
| // Get video duration using file path. | ||
| $file_path = get_attached_file( $video_id ); | ||
| $duration = null; | ||
|
|
||
| if ( file_exists( $file_path ) ) { | ||
| if ( ! function_exists( 'wp_read_video_metadata' ) ) { | ||
| require_once ABSPATH . 'wp-admin/includes/media.php'; | ||
| } | ||
|
|
||
| $metadata = wp_read_video_metadata( $file_path ); | ||
| if ( ! empty( $metadata['length_formatted'] ) ) { | ||
| $duration = $metadata['length_formatted']; | ||
| } | ||
| } | ||
|
|
||
| // Check if engagements are enabled for the video. | ||
| $engagements_enabled = rtgodam_is_engagement_feature_enabled() && $atts['engagements']; | ||
| $item_engagements_enabled = false; | ||
| if ( $engagements_enabled ) { | ||
| // Check if the video is transcoded when engagements are enabled. | ||
| $transcoded_job_id = get_post_meta( $video_id, 'rtgodam_transcoding_job_id', true ); | ||
| $transcoded_status = get_post_meta( $video_id, 'rtgodam_transcoding_status', true ); | ||
| $item_engagements_enabled = ! empty( $transcoded_job_id ) && 'transcoded' === strtolower( $transcoded_status ); | ||
| } | ||
|
|
||
| // Build the query arguments for the video embed page. | ||
| $query_args = array( | ||
| 'godam_page' => 'video-embed', | ||
| 'id' => $video_id, | ||
| 'godam_gallery' => '1', | ||
| ); | ||
|
|
||
| // Add the engagements query argument if it is enabled. | ||
| if ( $item_engagements_enabled ) { | ||
| $query_args['engagements'] = 'show'; | ||
| } | ||
|
|
||
| $video_url = add_query_arg( $query_args, $cpt_base_url ); | ||
|
|
||
| echo '<div class="godam-video-item">'; | ||
| echo '<div class="godam-video-thumbnail" data-gallery-item-engagements="' . esc_attr( $item_engagements_enabled ? 'true' : 'false' ) . '" data-video-id="' . esc_attr( $video_id ) . '" data-video-url="' . esc_url( $video_url ) . '">'; | ||
| if ( ! empty( $thumbnail ) && ! empty( $placeholder_thumbnail ) ) { | ||
| echo '<div class="godam-gallery-blurred-img" style="background-image: url(\'' . esc_url( $placeholder_thumbnail ) . '\')">'; | ||
| echo '<img src="' . esc_url( $thumbnail ) . '" alt="' . esc_attr( $video_title ) . '" class="godam-gallery-thumbnail-image" />'; | ||
| echo '</div>'; | ||
| } elseif ( ! empty( $thumbnail ) ) { | ||
| echo '<img src="' . esc_url( $thumbnail ) . '" alt="' . esc_attr( $video_title ) . '" class="godam-gallery-thumbnail-image" />'; | ||
| } | ||
| if ( $duration ) { | ||
| echo '<span class="godam-video-duration">' . esc_html( $duration ) . '</span>'; | ||
| } | ||
| echo '</div>'; | ||
| if ( ! empty( $atts['show_title'] ) ) { | ||
| echo '<div class="godam-video-info">'; | ||
| echo '<div class="godam-video-title">' . esc_html( $video_title ) . '</div>'; | ||
| echo '<div class="godam-video-date">' . esc_html( $video_date ) . '</div>'; | ||
| echo '</div>'; | ||
| } | ||
| echo '</div>'; | ||
|
|
||
| // Add action after each video item. | ||
| do_action( 'rtgodam_gallery_after_video_item', $video, $atts ); | ||
| } | ||
| echo '</div>'; | ||
|
|
||
| if ( $shown_videos < $total_videos ) { | ||
| if ( ! $atts['infinite_scroll'] ) { | ||
| echo '<button | ||
| class="godam-load-more wp-element-button" | ||
| data-offset="' . esc_attr( $shown_videos ) . '" | ||
| data-columns="' . esc_attr( $atts['columns'] ) . '" | ||
| data-count="' . esc_attr( $atts['count'] ) . '" | ||
| data-orderby="' . esc_attr( $atts['orderby'] ) . '" | ||
| data-order="' . esc_attr( $atts['order'] ) . '" | ||
| data-total="' . esc_attr( $total_videos ) . '" | ||
| data-engagements="' . esc_attr( $atts['engagements'] ) . '" | ||
| >' . esc_html__( 'Load More', 'godam' ) . '</button>'; | ||
| } | ||
| echo '<div class="godam-spinner-container"><div class="godam-spinner"></div></div>'; | ||
| } | ||
|
|
||
| echo '</div>'; | ||
|
|
||
| echo ' | ||
| <div id="godam-video-modal" class="godam-modal hidden"> | ||
| <div class="godam-modal-overlay"></div> | ||
| <div class="godam-modal-content"> | ||
| <div class="easydam-video-container animate-video-loading"></div> | ||
| <div class="godam-modal-footer"> | ||
| <div class="godam-video-info"> | ||
| <h3 class="godam-video-title"></h3> | ||
| <span class="godam-video-date"></span> | ||
| </div> | ||
| </div> | ||
| </div> | ||
| </div>'; | ||
|
|
||
| // Add action after gallery output. | ||
| do_action( 'rtgodam_gallery_after_output', $query, $atts ); | ||
| } else { | ||
| echo '<p>' . esc_html__( 'No videos found.', 'godam' ) . '</p>'; | ||
| } | ||
|
|
||
| wp_reset_postdata(); | ||
| require RTGODAM_PATH . 'inc/templates/godam-video-gallery.php'; | ||
| return ob_get_clean(); |
Comment on lines
236
to
240
| = v1.12.0 (June 11, 2026) = | ||
|
|
||
| - Feat: Added Layer Analytics feature to track how viewers interact with video layers (CTAs, hotspots, forms, and more), with per-layer engagement and conversion metrics in the analytics dashboard. | ||
|
|
||
| = v1.11.2 (June 8, 2026) = | ||
|
|
||
| - Feat: Added a setting to disable GoDAM's media library features, allowing GoDAM to coexist with another media or DAM plugin without changing the WordPress media library. | ||
|
|
||
| [CHECK THE FULL CHANGELOG](https://github.com/rtCamp/godam/blob/main/CHANGELOG.md) |
subodhr258
approved these changes
Jun 17, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fix the virtual media creation for core/gallery block. Resolve virtual attachment id resolution for all core Blocks. (Fix the virtual media creation for core/gallery block. Resolve virtual attachment id resolution for all core Blocks. #1944)
Fix the virtual media creation issue for core/gallery block
fix: resolve virtual GoDAM ID for core media blocks and gallery inner blocks
Extended withVirtualAttachmentHandler HOC from core/image-only to all single-ID core media blocks (core/video, core/audio, core/file, core/cover, core/media-text), replacing the virtual GoDAM ID with the real WP attachment ID on the godam-virtual-attachment-created event.
For core/gallery, inner core/image blocks were not updated because the event fired before React effects on newly inserted inner blocks had registered. Fixed by adding replaceVirtualIdInCoreImageBlocks in godam-media-frame-shared.js, which walks the full block tree synchronously inside processGoDAMItem immediately after the REST API returns the real attachment — no reliance on event listener timing.
Also switched ID comparisons to String(x) === String(y) to guard against type mismatches between the numeric block attribute and the string GoDAM ID.
fix: add godam/audio and godam/pdf blocks virtual attachment id assignment
fix: enhance virtual ID replacement in nested core/image blocks for core/gallery block with error handling
fix: improve GoDAM gallery update handling with additional library validation
Potential fix for pull request finding
Potential fix for pull request finding
feat: align Elementor video widget with godam/video block and fix player wrapper CSS injection (feat: align Elementor video widget with godam/video block and fix player wrapper CSS injection #1927)
feat: align Elementor video widget with godam/video block and fix player wrapper CSS injection
preloadcontrol withperformanceMode(balanced/priority) in the Elementor GoDAM Video widget; preload is now derived from performance mode viartgodam_get_video_performance_settings(), consistent with the blockhoverSelect,showShareButton,engagements,playerHeightcontrols to the Elementor widget;engagementsis gated byrtgodam_is_engagement_feature_enabled()aspectRatiodefault toresponsivein the widget (was empty string) so the template computes ratio from video metadata, matching block behaviourhls_transcoded_urltogodam_videoshortcode attributes and remove the legacypreloadattributeadmin_headon admin pages and output immediately whenwp_doing_ajax()orREST_REQUESTis truefix: streamline inline CSS output for player wrapper in Elementor context
feat: enhance GoDAM Video widget with thumbnail picker, aspect ratio control, mute, and hover options support
feat: align gallery shortcode and Elementor widget with godam/gallery-v2 block
feat: add Elementor support for GoDAM Gallery widget re-initialization
feat: add editor-side styles for Elementor controls and enhance GoDAM Gallery widget settings
Potential fix for pull request finding
fix: correct formatting of query arguments in Dynamic_Gallery class
fix: resolve GoDAM virtual media to real attachment id in Elementor widgets
Handle the godam-virtual-attachment-created event inside the shared godam-media control so a virtual GoDAM-tab selection swaps to the real attachment id. Covers GoDAM Video, GoDAM Video Gallery, and Shoppable Video widgets, including individual repeater rows.
Misc bug fixes for GoDAM plugin (Misc bug fixes for GoDAM plugin #1937)
Fix hotspot overlaping over other hotspot layer popup
fix: add validation for non-video selections in GoDAM Video block
fix: add validation for non-audio selections in GoDAM Audio block
fix: restore vertical spacing for ToggleControl in block inspector across audio, gallery, and player blocks
Fix style and spacing issues for video editor
Enhance GoDAM Video, and GoDAM Video Gallery Shortcode and WPBakery Integration (Enhance GoDAM Video, and GoDAM Video Gallery Shortcode and WPBakery Integration #1954)
Enhance GoDAM Video Gallery Shortcode and WPBakery Integration
Added support for handpicked video items in the GoDAM Video Gallery shortcode, allowing users to specify videos directly via a URL-encoded JSON array.
feat: enhance GoDAM Video widget with SEO settings and WPBakery integration
Apply suggestions from code review
feat: enhance gallery sorting options by adding duration and size parameters
Potential fix for pull request finding
fix: standardize whitespace in shortcode attribute parsing
feat: simplify element names for audio and video components in WPBakery
Fix the JS build error (Fix the JS build error #1957)
Release: Update version to 1.12.2 and add changelog (Release: Update version to 1.12.2 and add changelog #1958)
Release: Update version to 1.12.2 and add changelog
Generate new POT file