diff --git a/CHANGELOG.md b/CHANGELOG.md index eb956dec3..4657bfb41 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,20 @@ # Changelog # +## v1.4.0 (September 9, 2025) ## + +- New: Added integration for LifterLMS +- New: Added Ninja Forms and MetForm layer integration +- New: Added GoDAM Recorder Field for Everest Forms and Ninja Forms +- New: Added Engagements for GoDAM Video and Gallery with Views, Likes, and Comments +- New: Implemented Migration Tools for existing videos and Vimeo videos to GoDAM +- New: Added Speech-to-text functionality using AI transcriptions +- New: Added Custom Thumbnail Upload option for videos +- New: Enabled different Hover-Interactions for videos +- Tweak: Improved compatibility with Elementor +- Tweak: Updated Media Library UI +- Fix: Fixed iOS compatibility +- Fix: Resolved re-transcoding ID preservation to maintain video continuity and prevent data loss + ## v1.3.5 (August 26, 2025) ## - Tweak: Set transcoded videos as public by default and add Org support parameters diff --git a/README.md b/README.md index 1d9ece28c..8779ae54e 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ Tested up to: 6.8.1 Requires PHP: 7.4 -Stable tag: 1.3.5 +Stable tag: 1.4.0 License: [GPLv2 or later](http://www.gnu.org/licenses/gpl-2.0.html) @@ -20,7 +20,7 @@ Manage and optimize digital assets with GoDAM – featuring transcoding, adaptiv ## Description [GoDAM](https://godam.io/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=description-link) is a powerful file manager, WordPress Media Library organizer and digital asset management solution designed to provide automatic transcoding, adaptive bitrate streaming, and interactive video layers to enhance viewer engagement. It simplifies the entire video workflow, from upload to optimized playback, ensuring smooth delivery across all devices and network conditions. -With GoDAM, WordPress users can leverage advanced video capabilities without requiring extensive technical expertise. It automates the conversion of uploaded videos into multiple resolutions, enabling seamless playback with adaptive bitrate streaming. The integration of interactive elements such as CTAs, forms, hotspots and ads makes GoDAM an all-in-one solution for content creators, marketers, and eCommerce businesses. +With GoDAM, WordPress users can leverage advanced video capabilities without requiring extensive technical expertise. It automates the conversion of uploaded videos into multiple resolutions, enabling seamless playback with adaptive bitrate streaming. The integration of interactive elements such as CTAs, forms, interactive video hotspots and ads makes GoDAM an all-in-one solution for content creators, marketers, and eCommerce businesses. See Our Official GitHub: [Official GoDAM GitHub](https://github.com/rtCamp/godam) @@ -30,25 +30,24 @@ See Our Official GitHub: [Official GoDAM GitHub](https://github.com/rtCamp/godam πŸ‘‰ Learn More About GoDAM Pro : [All The Features of GoDAM](https://godam.io/features/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=features-link) -πŸ‘‰ Check out our [Chrome Extension](https://chromewebstore.google.com/detail/ojmbobnoagdgblhpbemfamfkcfjdfejl?utm_source=item-share-cb) to easily record and share videos - - ### Free Features #### πŸ“Œ Media Management - The [DAM functionality](https://godam.io/features/wordpress-advanced-media-management/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=dam-feature) streamlines file organization for websites with large libraries of images, videos, documents, and more. -- Organize media assets efficiently with enhanced WordPress Media Library folders and filtering with a smart Media Library Assistant. -- Manage files easily with a built-in folder-based File Manager for drag-and-drop organization. +- Organize media assets efficiently using enhanced WordPress Media Library Manager with pagination and filtering with a smart Media Library Assistant. +- Manage files easily with a built-in folder-based WordPress Media Library Manager for drag-and-drop organization. - Bookmark and Lock folders for improved folder organization #### πŸ“Œ Interactive Video Layers for Engagement - Embed [clickable CTAs](https://godam.io/features/video-overlay/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=video-overlay) to drive actions like sign-ups and purchases. - Enhance your videos with [customizable hotspots](https://godam.io/features/video-hotspot/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=video-hotspot) that deliver additional context, links, and information exactly when and where your viewers need it. -- Add interactive forms using [Gravity Forms](https://godam.io/features/gravity-forms/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=gravity-forms), [WPForms](https://godam.io/features/wp-forms/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=wpforms), [Contact Form 7](https://godam.io/features/contact-form-7/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=contact-form-7), [Jetpack Forms](https://godam.io/features/jetpack-form/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=jetpack-forms), [Forminator Forms](https://godam.io/features/forminator-forms/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=forminator-forms), [Fluent Forms](https://godam.io/features/fluent-forms/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=fluent-forms), [SureForms](https://godam.io/features/sure-forms/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=sure-forms), and [Everest Forms](https://godam.io/features/everest-forms/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=everest-forms) to collect leads. -- Enable video submissions using the GoDAM Record field that supports webcam and screencast inside Gravity Forms. +- Add interactive forms using [Gravity Forms](https://godam.io/integrations/gravity-forms/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=gravity-forms), [WPForms](https://godam.io/integrations/wp-forms/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=wpforms), [Contact Form 7](https://godam.io/integrations/contact-form-7/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=contact-form-7), [Jetpack Forms](https://godam.io/integrations/jetpack-form/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=jetpack-forms), [Forminator Forms](https://godam.io/integrations/forminator-forms/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=forminator-forms), [Fluent Forms](https://godam.io/integrations/fluent-forms/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=fluent-forms), [SureForms](https://godam.io/integrations/sureforms/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=sureforms), [Ninja Forms](https://godam.io/integrations/ninja-forms/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=ninja-forms), [Met Forms](https://godam.io/integrations/metform/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=metform), and [Everest Forms](https://godam.io/integrations/everest-forms/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=everest-forms) to collect leads. +- Enable video submissions with the [GoDAM Form Recorder](https://godam.io/features/form-recorder/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=form-recorder) field, allowing users to record via webcam or screencast, or upload videos directly while filling out a form. - Add interactive Polls to gather viewer opinions during playback. - Customize video player appearance globally with custom CSS through the Video Player settings menu. - Navigate videos easily with chapter markers for better content organization and viewer experience. +- Custom thumbnail support for GoDAM Video blocks with hover effects for enhanced user experience +- Video embed capabilities for seamless integration of GoDAM videos into any page or post. #### πŸ“Œ Elementor Integration - Drag-and-drop GoDAM Video, Gallery, and Audio widgets for seamless content creation. @@ -61,7 +60,7 @@ See Our Official GitHub: [Official GoDAM GitHub](https://github.com/rtCamp/godam - Boost revenue and engagement with clickable ad redirections #### πŸ“Œ Customizable Video Player Experience -- Fully customizable playback controls, branding, and player themes. +- Fully customizable playback controls, branding, and [player themes](https://godam.io/blog/how-to-customize-video-player-on-wordpress/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=player-themes). - Enable video looping, autoplay, and inline play for better user experience. #### πŸ“Œ Video SEO @@ -84,12 +83,17 @@ See Our Official GitHub: [Official GoDAM GitHub](https://github.com/rtCamp/godam - In Free version these video formats are not supported: 3G2, 3GP, AVI, OGV, WMV - Watermarking support to protect video content. - Automatically compress and resize videos on upload to reduce storage and bandwidth. +- Generate up to 10 auto thumbnails with GIF support for enhanced video previews. #### πŸ“Œ GoDAM Central - Unified dashboard for managing all assets in one place. +- Upload and host your videos on powerful GoDAM Central cloud storage powered by global CDN network - Organize videos, images, and documents into folders with search, filters, and sharing options. - Each video gets a dedicated single video page with time-stamped comments and reactions for team collaboration. - Automatically sync uploaded videos with the WordPress Media Library for easy access across your site. +- One single license for unlimited sites +- Team Management and Multiple Organizations for maximum collaboration +- Save time and resources by uploading media once at any connected site or GoDAM Central and reusing it across all other connected sites with the GoDAM Media Tab on WordPress. #### πŸ“Œ Advanced Video Analytics - Monitor viewer behavior and engagement through [detailed metrics and heatmaps](https://godam.io/features/analytics/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=analytics). @@ -100,17 +104,36 @@ See Our Official GitHub: [Official GoDAM GitHub](https://github.com/rtCamp/godam - Rank videos by performance and much more #### πŸ“Œ Automatic Video Transcription -- AI-powered closed captions added automatically on upload for accessibility and engagement. +- [AI-powered closed captions](https://godam.io/features/ai-transcription/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=ai-transcription) added automatically on upload for accessibility and engagement. +- Upload your audio or video, and let our AI-powered engine transcribe spoken words into clean, readable text with accuracy. +- Each transcript includes precise timestamps, making it ideal for interviews, podcasts, and corporate documentation. +- Quickly edit any part of the transcript in the editor for any fixes or additional context. + +#### πŸ“Œ Video Engagement Features +- Logged-in viewers can like and comment on GoDAM videos, while view counts are visible to everyone. Admins can enable or disable these features. +- Build a more engaged audience with social features that encourage participation and feedback. + +#### πŸ“Œ Video Migration Tools +- Import any core video block seamlessly to GoDAM Video blocks. +- Import Vimeo videos seamlessly to GoDAM Central and GoDAM Video blocks. +- Migrate your existing video content without losing quality or functionality. +- Streamline your video management by consolidating all content in one powerful platform. + +#### πŸ“Œ Faster Video Playback +- GoDAM Pro delivers video through a global CDN with 118+ edge locations, ensuring faster video playback, 99.99% uptime, and improved site performance for a seamless user experience. +- Offload media to GoDAM Central cloud storage. ### Primary Benefits: - **_Simplifies_** asset management with automated transcoding and adaptive streaming. - **_Enhances_** viewer engagement with interactive layers like forms, CTAs, and hotspots. - **_Integrates_** seamlessly with WordPress for a familiar and user-friendly experience. +- Simplifies video hosting and embed for WordPress site at a cost effective price ### Secondary Benefits: - **_Cost-efficient_** pricing tailored to your actual usage. - **_Scalable_** features suitable for small businesses, educators, and enterprise-level users. - **_Monetization opportunities_** through ad placement and e-commerce integrations. +- Perfect video marketing solution for your WordPress site to grow your brand ### Use Cases: - **_Education:_** Deliver interactive video lessons with forms for quizzes or feedback. @@ -134,16 +157,19 @@ Get started today and revolutionize the way you manage and deliver video content GoDAM works seamlessly with popular WordPress plugins to enhance interactivity and engagement: -- [Gravity Forms](https://godam.io/features/gravity-forms/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=gravity-forms-integration) – Add forms directly to your videos to collect leads and feedback. -- [WPForms](https://godam.io/features/wp-forms/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=wpforms-integration) – Integrate lightweight forms for surveys, signups, or user inputs. -- [Contact Form 7](https://godam.io/features/contact-form-7/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=contact-form-7-integration) – Use a classic contact form plugin inside your videos for engagement. -- [Jetpack Forms](https://godam.io/features/jetpack-form/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=jetpack-forms-integration) - Block Editor based forms for lead generation and engagement. -- [Forminator Forms](https://godam.io/features/forminator-forms/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=forminator-forms-integration) – Advanced form builder with powerful features for lead capture. -- [Fluent Forms](https://godam.io/features/fluent-forms/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=fluent-forms-integration) – Modern form builder with advanced conditional logic and integrations. -- [SureForms](https://godam.io/features/sure-forms/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=sure-forms-integration) – Professional form solution with advanced features and analytics. -- [Everest Forms](https://godam.io/features/everest-forms/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=everest-forms-integration) – User-friendly form builder with drag-and-drop functionality. -- [WP-Polls](https://wordpress.org/plugins/wp-polls/) – Add live polls to your videos and gather audience opinions in real-time. -- [Elementor](https://wordpress.org/plugins/elementor/) – Drag-and-drop GoDAM widgets for easy content creation. +- [Gravity Forms](https://godam.io/integrations/gravity-forms/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=gravity-forms-integration) – Add forms directly to your videos to collect leads and feedback. +- [WPForms](https://godam.io/integrations/wp-forms/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=wpforms-integration) – Integrate lightweight forms for surveys, signups, or user inputs. +- [Contact Form 7](https://godam.io/integrations/contact-form-7/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=contact-form-7-integration) – Use a classic contact form plugin inside your videos for engagement. +- [Jetpack Forms](https://godam.io/integrations/jetpack-form/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=jetpack-forms-integration) - Block Editor based forms for lead generation and engagement. +- [Forminator Forms](https://godam.io/integrations/forminator-forms/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=forminator-forms-integration) – Advanced form builder with powerful features for lead capture. +- [Fluent Forms](https://godam.io/integrations/fluent-forms/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=fluent-forms-integration) – Modern form builder with advanced conditional logic and integrations. +- [SureForms](https://godam.io/integrations/sureforms/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=sureforms-integration) – Professional form solution with advanced features and analytics. +- [Everest Forms](https://godam.io/integrations/everest-forms/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=everest-forms-integration) – User-friendly form builder with drag-and-drop functionality. +- [Ninja Forms](https://godam.io/integrations/ninja-forms/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=ninja-forms-integration) – Powerful form builder with advanced features and conditional logic. +- [MetForm](https://godam.io/integrations/metform/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=metform-integration) – Modern form builder with drag-and-drop interface and advanced styling options. +- [WP-Polls](https://godam.io/integrations/polls/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=wp-polls-integration) – Add live polls to your videos and gather audience opinions in real-time. +- [Elementor](https://godam.io/integrations/elementor/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=elementor-integration) – Drag-and-drop GoDAM widgets for easy content creation. +- [LifterLMS](https://godam.io/integrations/lifterlms/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=lifterlms-integration) – Integrate GoDAM with LifterLMS for course management and video delivery. ## Installation ### Method 1: WordPress Dashboard @@ -227,6 +253,7 @@ Yes, GoDAM provides robust analytics tools to track video engagement, including 24. Video Player Style Settings 25. Global Ads Settings 26. Chapters Interface +27. Likes and Comments ## External Services diff --git a/admin/class-rtgodam-retranscodemedia.php b/admin/class-rtgodam-retranscodemedia.php index fb2130ff9..7148764ff 100644 --- a/admin/class-rtgodam-retranscodemedia.php +++ b/admin/class-rtgodam-retranscodemedia.php @@ -82,7 +82,6 @@ public function __construct() { } add_action( 'admin_enqueue_scripts', array( $this, 'admin_enqueues' ) ); - add_action( 'wp_ajax_retranscodemedia', array( $this, 'ajax_process_retranscode_request' ) ); add_filter( 'media_row_actions', array( $this, 'add_media_row_action' ), 10, 2 ); add_action( 'admin_head-upload.php', array( $this, 'add_bulk_actions_via_javascript' ) ); add_action( 'admin_action_bulk_retranscode_media', array( $this, 'bulk_action_handler' ) ); // Top drowndown. @@ -546,107 +545,6 @@ public function retranscode_interface() { = $id ) { - wp_send_json_error(); - exit; - } - - $media = get_post( $id ); - - if ( ! $media || 'attachment' !== $media->post_type || - ( - 'audio/' !== substr( $media->post_mime_type, 0, 6 ) && - 'video/' !== substr( $media->post_mime_type, 0, 6 ) && - 'application/pdf' !== $media->post_mime_type - ) - ) { - // translators: Media id of the invalid media type. - die( wp_json_encode( array( 'error' => sprintf( __( 'Sending Failed: %d is an invalid media ID/type.', 'godam' ), intval( $id ) ) ) ) ); - } - - // Safe fallback via filter; PHPCS can't resolve dynamic capability. - // phpcs:ignore WordPress.WP.Capabilities.Undetermined - if ( ! current_user_can( $this->capability ) ) { - $this->die_json_error_msg( $media->ID, __( "Your user account doesn't have permission to transcode", 'godam' ) ); - } - - // Check if transcoding status is failed and clean up if needed. - $transcoding_status = get_post_meta( $media->ID, 'rtgodam_transcoding_status', true ); - if ( 'Failed' === $transcoding_status ) { - // Clean up any existing job ID and status. - delete_post_meta( $media->ID, 'rtgodam_transcoding_job_id' ); - } - - delete_post_meta( $media->ID, 'rtgodam_transcoding_status' ); - delete_post_meta( $media->ID, 'rtgodam_transcoding_error_msg' ); - - // Check if media is already being transcoded. - if ( rtgodam_is_file_being_transcoded( $media->ID ) ) { - $this->die_json_error_msg( $media->ID, sprintf( __( 'The media is already being transcoded', 'godam' ) ) ); - } - - /** - * Check if `rtgodam_transcoding_job_id` meta is present for the media - * if it's present then media won't get sent to the transcoder - * so we need to delete `rtgodam_transcoding_job_id` meta before we send - * media back for the retranscoding - */ - $already_sent = get_post_meta( $media->ID, 'rtgodam_transcoding_job_id', true ); - - if ( ! empty( $already_sent ) ) { - delete_post_meta( $media->ID, 'rtgodam_transcoding_job_id' ); - } - - // Get the transcoder object. - $transcoder = new RTGODAM_Transcoder_Handler( true ); - - $attachment_meta = array( 'mime_type' => $media->post_mime_type ); - - $transcoded_files = get_post_meta( $media->ID, 'rtgodam_media_transcoded_files', true ); - - // No need to ask for the transcoded (mp4) file if we already have it. - // Only asks for the thumbnails. - - if ( ! empty( $transcoded_files ) && is_array( $transcoded_files ) ) { - if ( array_key_exists( 'mp4', $transcoded_files ) && count( $transcoded_files['mp4'] ) > 0 ) { - - /** - * We can ask for the new fresh transcoded file even if it already present. - * Use: add_filter( 'rtgodam_force_trancode_media', '__return_true' ); - * - * @param bool FALSE by default. Pass TRUE if you want to request for new transcoded file - */ - $force_transcode = apply_filters( 'rtgodam_force_trancode_media', false ); - if ( ! $force_transcode ) { - $attachment_meta['mime_type'] = 'video/mp4'; - } - } - } - - // Send media for (Re)transcoding. - $transcoder->wp_media_transcoding( $attachment_meta, $media->ID ); - - $is_sent = get_post_meta( $media->ID, 'rtgodam_transcoding_job_id', true ); - - if ( ! $is_sent ) { - $this->die_json_error_msg( $media->ID, __( 'Unknown failure reason.', 'godam' ) ); - } - - update_post_meta( $media->ID, 'rtgodam_retranscoding_sent', $is_sent ); - - // translators: Media name, Media id and success message for successfull transcode. - die( wp_json_encode( array( 'success' => sprintf( __( '"%1$s" (ID %2$s) was successfully sent in %3$s seconds.', 'godam' ), esc_html( get_the_title( $media->ID ) ), $media->ID, timer_stop() ) ) ) ); - } - /** * Helper to make a JSON error message * diff --git a/admin/class-rtgodam-transcoder-handler.php b/admin/class-rtgodam-transcoder-handler.php index f60d99093..1b1480244 100644 --- a/admin/class-rtgodam-transcoder-handler.php +++ b/admin/class-rtgodam-transcoder-handler.php @@ -179,10 +179,7 @@ public function wp_media_transcoding( $wp_metadata, $attachment_id, $autoformat return $wp_metadata; } - $already_sent = get_post_meta( $attachment_id, 'rtgodam_transcoding_job_id', true ); - if ( ! empty( $already_sent ) ) { - return $wp_metadata; - } + $transcoding_job_id = get_post_meta( $attachment_id, 'rtgodam_transcoding_job_id', true ); $path = get_attached_file( $attachment_id ); $url = wp_get_attachment_url( $attachment_id ); @@ -276,11 +273,12 @@ public function wp_media_transcoding( $wp_metadata, $attachment_id, $autoformat } $args = array( - 'method' => 'POST', + 'method' => empty( $transcoding_job_id ) ? 'POST' : 'PUT', 'sslverify' => false, 'timeout' => 60, // phpcs:ignore WordPressVIPMinimum.Performance.RemoteRequestTimeout.timeout_timeout 'body' => array_merge( array( + 'retranscode' => empty( $transcoding_job_id ) ? 0 : 1, 'api_token' => $this->api_key, 'job_type' => $job_type, 'job_for' => $job_for, @@ -304,7 +302,7 @@ public function wp_media_transcoding( $wp_metadata, $attachment_id, $autoformat ), ); - $transcoding_url = $this->transcoding_api_url . 'resource/Transcoder Job'; + $transcoding_url = $this->transcoding_api_url . 'resource/Transcoder Job' . ( empty( $transcoding_job_id ) ? '' : '/' . $transcoding_job_id ); // Block if blacklisted ip address. $remote_address_key = 'REMOTE_ADDR'; @@ -313,7 +311,7 @@ public function wp_media_transcoding( $wp_metadata, $attachment_id, $autoformat return $metadata; } - $upload_page = wp_remote_post( $transcoding_url, $args ); + $upload_page = wp_remote_request( $transcoding_url, $args ); if ( ! is_wp_error( $upload_page ) && ( @@ -425,6 +423,12 @@ public function is_valid_key( $key ) { public function update_usage( $key ) { $response = rtgodam_verify_api_key( $key ); + + // Check if response is WP_Error before accessing array elements. + if ( is_wp_error( $response ) ) { + return $response; + } + update_option( 'rtgodam-usage', array( $key => (object) $response['data'] ) ); return $response; diff --git a/assets/src/blocks/godam-gallery/edit.js b/assets/src/blocks/godam-gallery/edit.js index 9336bbaf9..b005de0bf 100644 --- a/assets/src/blocks/godam-gallery/edit.js +++ b/assets/src/blocks/godam-gallery/edit.js @@ -207,7 +207,7 @@ export default function Edit( { attributes, setAttributes } ) { ) } setAttributes( { engagements: value } ) } help={ __( 'Engagement will only be visible for transcoded videos', 'godam' ) } diff --git a/assets/src/blocks/godam-player/block.json b/assets/src/blocks/godam-player/block.json index 8c1d8fb69..e00aa4a7b 100644 --- a/assets/src/blocks/godam-player/block.json +++ b/assets/src/blocks/godam-player/block.json @@ -100,7 +100,7 @@ }, "showShareButton": { "type": "boolean", - "default": true + "default": false }, "layout": { "type": "object", diff --git a/assets/src/blocks/godam-player/edit-common-settings.js b/assets/src/blocks/godam-player/edit-common-settings.js index 5a82bf1c5..f05a60561 100644 --- a/assets/src/blocks/godam-player/edit-common-settings.js +++ b/assets/src/blocks/godam-player/edit-common-settings.js @@ -130,7 +130,7 @@ const VideoSettings = ( { setAttributes, attributes, isInsideQueryLoop = false } ) } { + this.closeOtherMenus( menuEl ); menuEl.classList.add( 'vjs-lock-showing' ); } ); menuEl.addEventListener( 'mouseenter', () => { + this.closeOtherMenus( menuEl ); menuEl.classList.add( 'vjs-lock-showing' ); } ); @@ -54,6 +56,17 @@ class MenuButtonHoverManager { } ); } + // Hide other menus when entering a new one + closeOtherMenus( currentMenu ) { + document.querySelectorAll( '.vjs-menu' ) + .forEach( ( menu ) => { + if ( menu !== currentMenu ) { + menu.classList.remove( 'vjs-lock-showing' ); + menu.style.display = ''; + } + } ); + } + hideMenu( menuEl ) { menuEl.style.display = ''; menuEl.classList.remove( 'vjs-lock-showing' ); diff --git a/assets/src/js/godam-player/videoPlayer.js b/assets/src/js/godam-player/videoPlayer.js index 3aa5bc358..4c9cc5fdd 100644 --- a/assets/src/js/godam-player/videoPlayer.js +++ b/assets/src/js/godam-player/videoPlayer.js @@ -65,6 +65,11 @@ export default class GodamVideoPlayer { */ initializePlayer() { this.player = videojs( this.video, this.configManager.videoSetupControls ); + + // Initialize ads manager + this.adsManager = new AdsManager( this.player, this.configManager ); + this.adsManager?.setupAdsIntegration(); + this.setupAspectRatio(); this.setupPlayerReady(); } @@ -135,9 +140,6 @@ export default class GodamVideoPlayer { // Initialize chapters manager this.chaptersManager = new ChaptersManager( this.player, this.video ); - // Initialize ads manager - this.adsManager = new AdsManager( this.player, this.configManager ); - // Initialize hover and share managers (existing) this.hoverManager = new HoverManager( this.player, this.video ); this.shareManager = new ShareManager( this.player, this.video, this.configManager.videoSetupOptions ); @@ -191,7 +193,6 @@ export default class GodamVideoPlayer { setupEventListeners() { this.eventsManager?.setupEventListeners(); this.layersManager?.setupLayers(); - this.adsManager?.setupAdsIntegration(); } /** diff --git a/assets/src/js/lifterlms/block.js b/assets/src/js/lifterlms/block.js index 40ca61fbf..2eb8cc0d0 100644 --- a/assets/src/js/lifterlms/block.js +++ b/assets/src/js/lifterlms/block.js @@ -2,7 +2,7 @@ * Video Completion Handler for WordPress LMS * Manages video completion tracking and lesson progression controls * - * @since n.e.x.t + * @since 1.4.0 */ /** @@ -13,21 +13,21 @@ const GoDAMLifterLMSIntegration = { /** * Configuration settings * - * @since n.e.x.t + * @since 1.4.0 */ config: {}, /** * Storage key prefix for localStorage * - * @since n.e.x.t + * @since 1.4.0 */ storagePrefix: 'godam_llms_video_progress_', /** * Initialize the video completion handler * - * @since n.e.x.t + * @since 1.4.0 */ init() { this.loadConfiguration(); @@ -38,7 +38,7 @@ const GoDAMLifterLMSIntegration = { /** * Load configuration from tracking settings * - * @since n.e.x.t + * @since 1.4.0 */ loadConfiguration() { this.config = {}; @@ -52,7 +52,7 @@ const GoDAMLifterLMSIntegration = { /** * Set up initial state based on video completion requirements * - * @since n.e.x.t + * @since 1.4.0 */ setupInitialState() { if ( this.config.require_video_completion && ! this.config.video_completed ) { @@ -63,7 +63,7 @@ const GoDAMLifterLMSIntegration = { /** * Bind video player events * - * @since n.e.x.t + * @since 1.4.0 */ bindVideoEvents() { const videoContainer = document.querySelector( '.godam-video-wrapper' ); @@ -90,7 +90,7 @@ const GoDAMLifterLMSIntegration = { /** * Get storage key for current post * - * @since n.e.x.t + * @since 1.4.0 * * @param {Object} configuration */ @@ -101,7 +101,7 @@ const GoDAMLifterLMSIntegration = { /** * Store video progress in localStorage * - * @since n.e.x.t + * @since 1.4.0 * * @param {number} currentTime * @param {Object} configuration @@ -124,7 +124,7 @@ const GoDAMLifterLMSIntegration = { /** * Get stored video progress from localStorage * - * @since n.e.x.t + * @since 1.4.0 * * @param {Object} configuration */ @@ -142,7 +142,7 @@ const GoDAMLifterLMSIntegration = { /** * Remove stored video progress from localStorage * - * @since n.e.x.t + * @since 1.4.0 * * @param {Object} configuration */ @@ -159,7 +159,7 @@ const GoDAMLifterLMSIntegration = { /** * Handle video loaded event to restore progress * - * @since n.e.x.t + * @since 1.4.0 * * @param {Event} event * @param {Object} configuration @@ -176,7 +176,7 @@ const GoDAMLifterLMSIntegration = { /** * Prevent default event behavior * - * @since n.e.x.t + * @since 1.4.0 * * @param {Event} event */ @@ -187,7 +187,7 @@ const GoDAMLifterLMSIntegration = { /** * Toggle lesson completion controls and navigation elements * - * @since n.e.x.t + * @since 1.4.0 * * @param {boolean} isEnabled */ @@ -234,7 +234,7 @@ const GoDAMLifterLMSIntegration = { /** * Initialize and run countdown timer * - * @since n.e.x.t + * @since 1.4.0 * * @param {Element} container */ @@ -267,7 +267,7 @@ const GoDAMLifterLMSIntegration = { /** * Handle video progress updates * - * @since n.e.x.t + * @since 1.4.0 * * @param {Event} event * @param {Object} configuration @@ -290,7 +290,7 @@ const GoDAMLifterLMSIntegration = { /** * Handle AJAX request for video completion * - * @since n.e.x.t + * @since 1.4.0 * * @param {Element} container * @param {Object} configuration @@ -352,7 +352,7 @@ const GoDAMLifterLMSIntegration = { /** * Handle video completion event * - * @since n.e.x.t + * @since 1.4.0 * * @param {Event} event * @param {Element} container diff --git a/assets/src/js/lifterlms/embed.js b/assets/src/js/lifterlms/embed.js index 6e7904fda..f8a78d0a5 100644 --- a/assets/src/js/lifterlms/embed.js +++ b/assets/src/js/lifterlms/embed.js @@ -2,7 +2,7 @@ * Video Completion Handler for WordPress LMS * Manages video completion tracking and lesson progression controls * - * @since n.e.x.t + * @since 1.4.0 * * @package */ @@ -25,14 +25,14 @@ const GoDAMLifterLMSEmbedIntegration = { /** * Configuration settings * - * @since n.e.x.t + * @since 1.4.0 */ config: {}, /** * Storage key prefix for localStorage * - * @since n.e.x.t + * @since 1.4.0 */ storagePrefix: 'godam_llms_video_progress_', @@ -41,7 +41,7 @@ const GoDAMLifterLMSEmbedIntegration = { /** * Initialize the video completion handler * - * @since n.e.x.t + * @since 1.4.0 */ init() { const host = new URL( GODAM_API_BASE ).host; @@ -59,7 +59,7 @@ const GoDAMLifterLMSEmbedIntegration = { /** * Load configuration from tracking settings * - * @since n.e.x.t + * @since 1.4.0 */ loadConfiguration() { this.config = {}; @@ -73,7 +73,7 @@ const GoDAMLifterLMSEmbedIntegration = { /** * Set up initial state based on video completion requirements * - * @since n.e.x.t + * @since 1.4.0 */ setupInitialState() { if ( this.config.require_video_completion && ! this.config.video_completed ) { @@ -84,7 +84,7 @@ const GoDAMLifterLMSEmbedIntegration = { /** * Bind video player events * - * @since n.e.x.t + * @since 1.4.0 * * @param {Element} godamIframe */ @@ -123,7 +123,7 @@ const GoDAMLifterLMSEmbedIntegration = { /** * Get storage key for current post * - * @since n.e.x.t + * @since 1.4.0 * * @param {Object} configuration */ @@ -134,7 +134,7 @@ const GoDAMLifterLMSEmbedIntegration = { /** * Store video progress in localStorage * - * @since n.e.x.t + * @since 1.4.0 * * @param {number} currentTime * @param {Object} configuration @@ -157,7 +157,7 @@ const GoDAMLifterLMSEmbedIntegration = { /** * Get stored video progress from localStorage * - * @since n.e.x.t + * @since 1.4.0 * * @param {Object} configuration */ @@ -175,7 +175,7 @@ const GoDAMLifterLMSEmbedIntegration = { /** * Remove stored video progress from localStorage * - * @since n.e.x.t + * @since 1.4.0 * * @param {Object} configuration */ @@ -192,7 +192,7 @@ const GoDAMLifterLMSEmbedIntegration = { /** * Handle video loaded event to restore progress * - * @since n.e.x.t + * @since 1.4.0 * * @param {Event} event * @param {Object} configuration @@ -214,7 +214,7 @@ const GoDAMLifterLMSEmbedIntegration = { /** * Prevent default event behavior * - * @since n.e.x.t + * @since 1.4.0 * * @param {Event} event */ @@ -225,7 +225,7 @@ const GoDAMLifterLMSEmbedIntegration = { /** * Toggle lesson completion controls and navigation elements * - * @since n.e.x.t + * @since 1.4.0 * * @param {boolean} isEnabled */ @@ -272,7 +272,7 @@ const GoDAMLifterLMSEmbedIntegration = { /** * Initialize and run countdown timer * - * @since n.e.x.t + * @since 1.4.0 * * @param {Element} container */ @@ -305,7 +305,7 @@ const GoDAMLifterLMSEmbedIntegration = { /** * Handle video progress updates * - * @since n.e.x.t + * @since 1.4.0 * * @param {Event} event * @param {Object} configuration @@ -327,7 +327,7 @@ const GoDAMLifterLMSEmbedIntegration = { /** * Handle AJAX request for video completion * - * @since n.e.x.t + * @since 1.4.0 * * @param {Element} container * @param {Object} configuration @@ -391,7 +391,7 @@ const GoDAMLifterLMSEmbedIntegration = { /** * Manage countdown timer for video completion * - * @since n.e.x.t + * @since 1.4.0 * * @param {any} countdown */ @@ -408,7 +408,7 @@ const GoDAMLifterLMSEmbedIntegration = { /** * Handle video completion event * - * @since n.e.x.t + * @since 1.4.0 * * @param {Event} event * @param {Element} container diff --git a/assets/src/js/media-library/views/attachment-detail-two-column.js b/assets/src/js/media-library/views/attachment-detail-two-column.js index 4eac4564a..38e331431 100644 --- a/assets/src/js/media-library/views/attachment-detail-two-column.js +++ b/assets/src/js/media-library/views/attachment-detail-two-column.js @@ -329,7 +329,7 @@ export default AttachmentDetailsTwoColumn?.extend( { const { thumbnails, selected, customThumbnails } = data; const attachmentID = this.model.get( 'id' ); - const selector = `.transcoding-status[data-id="${ attachmentID }"]`; + const selector = `.transcoding-status--completed[data-id="${ attachmentID }"]`; const status = document.querySelector( selector ); if ( status ) { @@ -340,6 +340,14 @@ export default AttachmentDetailsTwoColumn?.extend( { } } + const virtual = this.model.get( 'virtual' ); + + // If the attachment is virtual (e.g. a GoDAM proxy video), override default preview. + if ( undefined !== virtual && virtual ) { + const videoPlayer = videojs( 'videojs-player-' + this.model.get( 'id' ) ); + videoPlayer.poster( selected ); + } + setTimeout( () => { // Sometimes helps if .mejs-poster is rendered asynchronously const posterDiv = document.querySelector( '.mejs-poster' ); @@ -448,6 +456,7 @@ export default AttachmentDetailsTwoColumn?.extend( { * @param {number} attachmentID - The ID of the attachment. */ setupThumbnailClickHandler( attachmentID ) { + const model = this.model; document.querySelectorAll( '.attachment-video-thumbnails li' ).forEach( ( li ) => { if ( li.classList.contains( 'upload-thumbnail-tile' ) ) { // Skip the upload tile @@ -475,7 +484,7 @@ export default AttachmentDetailsTwoColumn?.extend( { } } - const selector = `.transcoding-status[data-id="${ attachmentID }"]`; + const selector = `.transcoding-status--completed[data-id="${ attachmentID }"]`; const status = document.querySelector( selector ); if ( status ) { @@ -485,6 +494,15 @@ export default AttachmentDetailsTwoColumn?.extend( { statusImg.src = thumbnailURL; } } + + const virtual = model.get( 'virtual' ); + + // If the attachment is virtual (e.g. a GoDAM proxy video), override default preview. + if ( undefined !== virtual && virtual ) { + const videoPlayer = videojs( 'videojs-player-' + model.get( 'id' ) ); + videoPlayer.poster( thumbnailURL ); + } + /** * Send a POST request to the server to set the selected thumbnail for the video. */ @@ -587,6 +605,7 @@ export default AttachmentDetailsTwoColumn?.extend( { videojs( videoElement, { width: '100%', aspectRatio: '16:9', + poster: this.model.get( 'image' )?.src || '', controlBar: { volumePanel: false, fullscreenToggle: true, diff --git a/godam.php b/godam.php index 48c12a910..63ef58d67 100644 --- a/godam.php +++ b/godam.php @@ -3,7 +3,7 @@ * Plugin Name: GoDAM * Plugin URI: https://godam.io * Description: Seamlessly manage and deliver your media assets directly from the cloud-based media management. Store assets efficiently, stream them via a CDN, and enhance your website's performance and user experience. Featuring adaptive bit rate streaming, adding interactive layers in videos, and taking full advantage of a digital asset management solution within WordPress. - * Version: 1.3.5 + * Version: 1.4.0 * Requires at least: 6.5 * Requires PHP: 7.4 * Text Domain: godam @@ -43,7 +43,7 @@ /** * The version of the plugin */ - define( 'RTGODAM_VERSION', '1.3.5' ); + define( 'RTGODAM_VERSION', '1.4.0' ); } if ( ! defined( 'RTGODAM_API_BASE' ) ) { diff --git a/inc/classes/class-embed.php b/inc/classes/class-embed.php index c9ad57959..77c2c0f9e 100644 --- a/inc/classes/class-embed.php +++ b/inc/classes/class-embed.php @@ -2,7 +2,7 @@ /** * Class to handle GoDAM as oEmbed provider. * - * @since n.e.x.t + * @since 1.4.0 * * @package GoDAM */ @@ -16,7 +16,7 @@ /** * Class Embed * - * @since n.e.x.t + * @since 1.4.0 */ class Embed { @@ -25,7 +25,7 @@ class Embed { /** * Constant LifterLMS Advanced Video autoplay option. * - * @since n.e.x.t + * @since 1.4.0 * * @var string */ @@ -51,7 +51,7 @@ public function setup_hooks() { /** * Register the oEmbed provider for GoDAM videos. * - * @since n.e.x.t + * @since 1.4.0 * * @return void */ @@ -67,7 +67,7 @@ public function register_oembed_provider() { /** * Pre-process the oEmbed result for GoDAM videos. * - * @since n.e.x.t + * @since 1.4.0 * * @param mixed $data data to be filled with oEmbed data. * @param string $url URL to be processed. diff --git a/inc/classes/class-pages.php b/inc/classes/class-pages.php index a65c5cbbb..c046a4354 100644 --- a/inc/classes/class-pages.php +++ b/inc/classes/class-pages.php @@ -272,7 +272,7 @@ public function handle_admin_head() { /** * To render the tools page. * - * @since n.e.x.t + * @since 1.4.0 * * @return void */ diff --git a/inc/classes/class-video-editor-form-layer-handler.php b/inc/classes/class-video-editor-form-layer-handler.php index 7896bf243..e69aad944 100644 --- a/inc/classes/class-video-editor-form-layer-handler.php +++ b/inc/classes/class-video-editor-form-layer-handler.php @@ -2,7 +2,7 @@ /** * Handles the rendering of form layers in the video editor. * - * @since n.e.x.t + * @since 1.4.0 * @package GoDAM */ @@ -15,7 +15,7 @@ /** * Class for handling video editor form layers rendering. * - * @since n.e.x.t + * @since 1.4.0 */ class Video_Editor_Form_Layer_Handler { use Singleton; @@ -23,7 +23,7 @@ class Video_Editor_Form_Layer_Handler { /** * Initialize. * - * @since n.e.x.t + * @since 1.4.0 * * @return void */ @@ -36,7 +36,7 @@ public function init() { /** * Update the template for rendering layers in the video editor. * - * @since n.e.x.t + * @since 1.4.0 * * @param string $template The current template. * @@ -56,7 +56,7 @@ public function update_render_layer_template_for_video_editor( $template ) { /** * Add query vars for render layer in video editor. * - * @since n.e.x.t + * @since 1.4.0 * * @param array $query_vars The existing query vars. * diff --git a/inc/classes/class-video-engagement.php b/inc/classes/class-video-engagement.php index 8896dfcca..c6b39faf4 100644 --- a/inc/classes/class-video-engagement.php +++ b/inc/classes/class-video-engagement.php @@ -35,7 +35,7 @@ protected function __construct() { public function add_engagement_to_video( $attributes, $instance_id ) { $attachment_id = ! empty( $attributes['id'] ) && is_numeric( $attributes['id'] ) ? intval( $attributes['id'] ) : ''; - if ( ! empty( $attachment_id ) && empty( get_post_meta( $attachment_id, 'rtgodam_transcoding_job_id', true ) ) ) { + if ( ! empty( $attachment_id ) && 'Transcoded' !== get_post_meta( $attachment_id, 'rtgodam_transcoding_status', true ) ) { return ''; } diff --git a/inc/classes/class-video-metadata.php b/inc/classes/class-video-metadata.php index 0df49ae88..14b239958 100644 --- a/inc/classes/class-video-metadata.php +++ b/inc/classes/class-video-metadata.php @@ -209,7 +209,7 @@ public function set_media_library_thumbnail( $response, $attachment, $meta ) { / * This filter modifies the attachment URL to return the remote URL * if the video has been migrated from Vimeo. * - * @since n.e.x.t + * @since 1.4.0 */ public function filter_vimeo_migrated_urls(): void { add_filter( diff --git a/inc/classes/everest-forms/class-everest-forms-field-godam-video.php b/inc/classes/everest-forms/class-everest-forms-field-godam-video.php index 1ee014162..1afe64745 100644 --- a/inc/classes/everest-forms/class-everest-forms-field-godam-video.php +++ b/inc/classes/everest-forms/class-everest-forms-field-godam-video.php @@ -2,7 +2,7 @@ /** * Register the Uppy Video field for Everest_Forms. * - * @since n.e.x.t + * @since 1.4.0 * * @package GoDAM */ @@ -15,14 +15,14 @@ /** * Everest_Forms GoDAM Video Field Class * - * @since n.e.x.t + * @since 1.4.0 */ class Everest_Forms_Field_GoDAM_Video extends \EVF_Form_Fields_Upload { /** * Field id. * - * @since n.e.x.t + * @since 1.4.0 * * @var string */ @@ -31,7 +31,7 @@ class Everest_Forms_Field_GoDAM_Video extends \EVF_Form_Fields_Upload { /** * Field data. * - * @since n.e.x.t + * @since 1.4.0 * @var array */ public $field_data; @@ -39,7 +39,7 @@ class Everest_Forms_Field_GoDAM_Video extends \EVF_Form_Fields_Upload { /** * Constructor. * - * @since n.e.x.t + * @since 1.4.0 */ public function __construct() { $this->name = esc_html__( 'GoDAM Record', 'godam' ); @@ -83,7 +83,7 @@ public function __construct() { /** * Register the script to enqueue on entries. * - * @since n.e.x.t + * @since 1.4.0 * * @return void */ @@ -170,7 +170,7 @@ public function render_frontend_player_script() { * @param array $entry_meta Entry meta data. * @param string $context Context in which the meta is being displayed. * - * @since n.e.x.t + * @since 1.4.0 * * @return string */ @@ -240,7 +240,7 @@ public function update_entry_meta_display_godam_recorder( $meta_value, $value, $ /** * Define additional field properties. * - * @since n.e.x.t + * @since 1.4.0 * * @param array $properties Field properties. * @param array $field Field settings. @@ -266,7 +266,7 @@ public function field_properties( $properties, $field, $form_data ) { /** * Field preview inside the builder. * - * @since n.e.x.t + * @since 1.4.0 * * @param array $field Field data. */ @@ -311,7 +311,7 @@ public function field_preview( $field ) { /** * Field display on the form front-end. * - * @since n.e.x.t + * @since 1.4.0 * * @param array $field Field Data. * @param array $field_atts Field attributes. @@ -331,7 +331,7 @@ public function field_display( $field, $field_atts, $form_data ) { /** * Extract and return file selectors from the field. * - * @since n.e.x.t + * @since 1.4.0 * * @param array $field Field data. * @param array $default_file_selectors Default file selectors. @@ -423,7 +423,7 @@ public function file_selector( $video_field ) { * * @param array $video_field Field data. * - * @since n.e.x.t + * @since 1.4.0 * * @return void */ @@ -474,7 +474,7 @@ public function button_text( $video_field ) { /** * Format global files array in more manageable structure. * - * @since n.e.x.t + * @since 1.4.0 * * @param array $files Global files array. * @param int $field_id Field ID. @@ -506,7 +506,7 @@ public function format_global_files_array( $files, $field_id = null ) { /** * Render Everest Forms recorder scripts. * - * @since n.e.x.t + * @since 1.4.0 * * @return void */ @@ -565,7 +565,7 @@ private function render_evf_recorder_scripts() { /** * Function to render Everest Forms editor scripts. * - * @since n.e.x.t + * @since 1.4.0 * * @return void */ diff --git a/inc/classes/everest-forms/class-everest-forms-integration.php b/inc/classes/everest-forms/class-everest-forms-integration.php index c5c1eeb6b..94958161a 100644 --- a/inc/classes/everest-forms/class-everest-forms-integration.php +++ b/inc/classes/everest-forms/class-everest-forms-integration.php @@ -2,7 +2,7 @@ /** * Handles Everest Forms integration class. * - * @since n.e.x.t + * @since 1.4.0 * * @package GoDAM */ @@ -16,7 +16,7 @@ /** * Class Everest_Forms_Integration * - * @since n.e.x.t + * @since 1.4.0 */ class Everest_Forms_Integration { @@ -25,14 +25,14 @@ class Everest_Forms_Integration { /** * Initialize class. * - * @since n.e.x.t + * @since 1.4.0 * * @return void */ public function init() { // Backward compatibility for Everest Forms REST API. // Previously it was registered as RTGODAM\Inc\REST_API\Everest_Forms under rest-api directory. - // TODO: Remove this in future versions. Added in @n.e.x.t version. + // TODO: Remove this in future versions. Added in @1.4.0 version. class_alias( 'RTGODAM\Inc\Everest_Forms\Everest_Forms_Rest_Api', 'RTGODAM\Inc\REST_API\Everest_Forms' ); if ( ! $this->is_evf_active() ) { @@ -47,7 +47,7 @@ class_alias( 'RTGODAM\Inc\Everest_Forms\Everest_Forms_Rest_Api', 'RTGODAM\Inc\RE /** * Setup hooks. * - * @since n.e.x.t + * @since 1.4.0 * * @return void */ @@ -79,7 +79,7 @@ public function setup_hooks() { * @param string $job_for Job for. * @param WP_REST_Request $request Request object. * - * @since n.e.x.t + * @since 1.4.0 * * @return void */ @@ -117,7 +117,7 @@ public function handle_transcoding_callback( $attachment_id, $job_id, $job_for, * * @param array $fields Array of Everest Forms fields. * - * @since n.e.x.t + * @since 1.4.0 * * @return array */ @@ -132,7 +132,7 @@ public function register_fields( $fields ) { * * @param array $form_data Form data. * - * @since n.e.x.t + * @since 1.4.0 * * @return array */ @@ -154,7 +154,7 @@ public function update_field_type_to_file_upload( $form_data ) { * * @param array $fields Fields data. * - * @since n.e.x.t + * @since 1.4.0 * * @return array */ @@ -177,7 +177,7 @@ public function update_field_type_to_godam_record( $fields ) { * @param array $form_data Form data. * @param int $entry_id Entry ID. * - * @since n.e.x.t + * @since 1.4.0 * * @return void */ @@ -206,7 +206,7 @@ public function handle_godam_recorder_submission( $form_fields, $entry, $form_da /** * Return true if Everest Forms is active. * - * @since n.e.x.t + * @since 1.4.0 * * @return boolean */ @@ -229,7 +229,7 @@ public function is_evf_active() { * @param int $entry_id Entry Id. * @param string $file_url File URL. * - * @since n.e.x.t + * @since 1.4.0 * * @return void */ diff --git a/inc/classes/everest-forms/class-everest-forms-rest-api.php b/inc/classes/everest-forms/class-everest-forms-rest-api.php index e69707d63..897c22a17 100644 --- a/inc/classes/everest-forms/class-everest-forms-rest-api.php +++ b/inc/classes/everest-forms/class-everest-forms-rest-api.php @@ -4,7 +4,7 @@ * * Get a single WPForm. * - * @since n.e.x.t + * @since 1.4.0 * * @package GoDAM */ @@ -19,14 +19,14 @@ /** * Class LocationAPI * - * @since n.e.x.t + * @since 1.4.0 */ class Everest_Forms_Rest_Api extends Base { /** * Get REST routes. * - * @since n.e.x.t + * @since 1.4.0 */ public function get_rest_routes() { return array( @@ -75,7 +75,7 @@ public function get_rest_routes() { /** * Get all Everest Forms. * - * @since n.e.x.t + * @since 1.4.0 * * @param \WP_REST_Request $request Request Object. * @return \WP_REST_Response @@ -131,7 +131,7 @@ function ( $form ) { /** * Get a single Everest Form. * - * @since n.e.x.t + * @since 1.4.0 * * @param \WP_REST_Request $request Request Object. * @return \WP_REST_Response @@ -160,7 +160,7 @@ public function get_form( $request ) { /** * Return true if either Everest Forms Free or Pro plugin is active. * - * @since n.e.x.t + * @since 1.4.0 * * @return boolean */ diff --git a/inc/classes/everest-forms/everest-forms-field-godam-record-frontend.php b/inc/classes/everest-forms/everest-forms-field-godam-record-frontend.php index e3761a8a1..e9337ba60 100644 --- a/inc/classes/everest-forms/everest-forms-field-godam-record-frontend.php +++ b/inc/classes/everest-forms/everest-forms-field-godam-record-frontend.php @@ -4,7 +4,7 @@ * * @package GoDAM * - * @since n.e.x.t + * @since 1.4.0 */ // Get the primary field data. diff --git a/inc/classes/lifter-lms/class-lifter-lms.php b/inc/classes/lifter-lms/class-lifter-lms.php index 922554e59..88452d314 100644 --- a/inc/classes/lifter-lms/class-lifter-lms.php +++ b/inc/classes/lifter-lms/class-lifter-lms.php @@ -3,7 +3,7 @@ * LifterLMS integration class for GoDAM plugin. * Loads required integration script. * - * @since n.e.x.t + * @since 1.4.0 * * @package GoDAM */ @@ -15,7 +15,7 @@ /** * Class Lifter_LMS * - * @since n.e.x.t + * @since 1.4.0 */ class Lifter_LMS { @@ -24,7 +24,7 @@ class Lifter_LMS { /** * Constant LifterLMS Advanced Video autoplay option. * - * @since n.e.x.t + * @since 1.4.0 * * @var string */ @@ -51,7 +51,7 @@ private function setup_hooks() { /** * Check if LifterLMS plugin is active. * - * @since n.e.x.t + * @since 1.4.0 * * @return bool */ @@ -67,7 +67,7 @@ public function is_lifterlms_active(): bool { /** * Check if LifterLMS Advanced Video plugin is active. * - * @since n.e.x.t + * @since 1.4.0 * * @return bool */ @@ -82,7 +82,7 @@ public function is_lifterlms_advanced_video_active(): bool { /** * Check if the current content is LifterLMS content (lesson, quiz, course). * - * @since n.e.x.t + * @since 1.4.0 * * @return bool */ @@ -97,7 +97,7 @@ public function is_lifterlms_content(): bool { /** * Check if the current post is a LifterLMS lesson. * - * @since n.e.x.t + * @since 1.4.0 * * @return bool */ @@ -112,7 +112,7 @@ public function is_lifterlms_lesson(): bool { /** * Check if the autoplay is enabled. * - * @since n.e.x.t + * @since 1.4.0 * * @return bool */ @@ -123,7 +123,7 @@ public function is_lifterlms_autoplay_on(): bool { /** * Check if the current post has a Godam video block. * - * @since n.e.x.t + * @since 1.4.0 * * @return bool */ @@ -146,7 +146,7 @@ public function has_godam_video_block(): bool { /** * Load LifterLMS integration script. * - * @since n.e.x.t + * @since 1.4.0 * * @return void */ @@ -166,7 +166,7 @@ public function load_lifterlms_integration_script() { * Add autoplay attribute to Godam Player Block attributes, * if LifterLMS is active and on a lesson page with autoplay enabled. * - * @since n.e.x.t + * @since 1.4.0 * * @param mixed $attributes Block attributes. * @@ -183,7 +183,7 @@ public function modify_godam_player_block_attributes( $attributes ) { /** * Add GoDAM integration to LifterLMS available integrations. * - * @since n.e.x.t + * @since 1.4.0 * * @param array $integrations Array of available integrations. * diff --git a/inc/classes/lifter-lms/class-llms-av-integration-godam.php b/inc/classes/lifter-lms/class-llms-av-integration-godam.php index 1b8206ecc..fb1040a50 100644 --- a/inc/classes/lifter-lms/class-llms-av-integration-godam.php +++ b/inc/classes/lifter-lms/class-llms-av-integration-godam.php @@ -2,7 +2,7 @@ /** * LifterLMS Advanced Videos Integration Class for GoDAM * - * @since n.e.x.t + * @since 1.4.0 * * @package GoDAM */ @@ -18,7 +18,7 @@ /** * Class LLMS_AV_Integration_GoDAM * - * @since n.e.x.t + * @since 1.4.0 * * @package GoDAM */ @@ -27,7 +27,7 @@ class LLMS_AV_Integration_GoDAM extends \LLMS_AV_Abstract_Integration { /** * Integration ID. * - * @since n.e.x.t + * @since 1.4.0 * * @var string */ @@ -36,7 +36,7 @@ class LLMS_AV_Integration_GoDAM extends \LLMS_AV_Abstract_Integration { /** * Integration title. * - * @since n.e.x.t + * @since 1.4.0 * * @var string */ @@ -45,7 +45,7 @@ class LLMS_AV_Integration_GoDAM extends \LLMS_AV_Abstract_Integration { /** * Integration Description. * - * @since n.e.x.t + * @since 1.4.0 * * @var string */ @@ -54,7 +54,7 @@ class LLMS_AV_Integration_GoDAM extends \LLMS_AV_Abstract_Integration { /** * Whether or not to load wpColorPicker assets on the settings screen. * - * @since n.e.x.t + * @since 1.4.0 * * @var bool */ @@ -63,7 +63,7 @@ class LLMS_AV_Integration_GoDAM extends \LLMS_AV_Abstract_Integration { /** * Player SDK source. * - * @since n.e.x.t + * @since 1.4.0 * * @var string */ @@ -72,7 +72,7 @@ class LLMS_AV_Integration_GoDAM extends \LLMS_AV_Abstract_Integration { /** * Integration Priority. * - * @since n.e.x.t + * @since 1.4.0 * * @var int */ @@ -81,7 +81,7 @@ class LLMS_AV_Integration_GoDAM extends \LLMS_AV_Abstract_Integration { /** * Regex to identify videos from the provider. * - * @since n.e.x.t + * @since 1.4.0 * * @var string */ @@ -90,7 +90,7 @@ class LLMS_AV_Integration_GoDAM extends \LLMS_AV_Abstract_Integration { /** * Regex to identify a URL that's parseable oEmbed URL for the provider. * - * @since n.e.x.t + * @since 1.4.0 * * @var string */ @@ -99,7 +99,7 @@ class LLMS_AV_Integration_GoDAM extends \LLMS_AV_Abstract_Integration { /** * Integration Constructor. * - * @since n.e.x.t + * @since 1.4.0 */ protected function configure() { @@ -111,7 +111,7 @@ protected function configure() { /** * Set the integration title and description. * - * @since n.e.x.t + * @since 1.4.0 */ public function set_title_and_description() { $this->title = __( 'Videos: GoDAM', 'godam' ); @@ -123,7 +123,7 @@ public function set_title_and_description() { * * @param int $lesson_id WP_Post ID of a lesson. * - * @since n.e.x.t + * @since 1.4.0 * * @return bool */ @@ -139,7 +139,7 @@ protected function are_player_controls_hidden( $lesson_id ) { * This should return an array of settings that will be converted to query string variables * which can be interpreted by the player's JS API when added to the player's iframe embed src. * - * @since n.e.x.t + * @since 1.4.0 * * @param int $object_id WP_Post ID. * @@ -153,7 +153,7 @@ protected function get_player_settings( $object_id = null ) { * Retrieves the player theme color for the given lesson video. * Parent class had abstract method, so this is required. * - * @since n.e.x.t + * @since 1.4.0 * * @param int $lesson_id WP_Post ID of a lesson. * diff --git a/inc/classes/metform/class-metform-integration.php b/inc/classes/metform/class-metform-integration.php index cd381f4a4..51c9cc5ac 100644 --- a/inc/classes/metform/class-metform-integration.php +++ b/inc/classes/metform/class-metform-integration.php @@ -2,7 +2,7 @@ /** * Handles Metform integration class. * - * @since n.e.x.t + * @since 1.4.0 * * @package GoDAM */ @@ -16,7 +16,7 @@ /** * Class Metform_Integration * - * @since n.e.x.t + * @since 1.4.0 */ class Metform_Integration { @@ -25,7 +25,7 @@ class Metform_Integration { /** * Initialize class. * - * @since n.e.x.t + * @since 1.4.0 * * @return void */ @@ -40,7 +40,7 @@ public function init() { /** * Setup hooks. * - * @since n.e.x.t + * @since 1.4.0 * * @return void */ @@ -55,7 +55,7 @@ public function setup_hooks() { /** * Add additional css for video editor. * - * @since n.e.x.t + * @since 1.4.0 * * @return void */ @@ -80,7 +80,7 @@ public function add_additional_css_for_video_editor() { /** * Add additional css for godam player. * - * @since n.e.x.t + * @since 1.4.0 * * @return void */ @@ -97,7 +97,7 @@ public function add_additional_css_for_godam_player() { /** * Add css for the layer inside iframe. * - * @since n.e.x.t + * @since 1.4.0 * * @param string $layer Layer name. * @param string $layer_id Layer ID. @@ -125,7 +125,7 @@ public function add_css_for_the_layer_inside_iframe( $layer, $layer_id ) { /** * Render metform for video editor. * - * @since n.e.x.t + * @since 1.4.0 * * @param string $layer Layer name. * @param string $layer_id Layer ID. diff --git a/inc/classes/metform/class-metform-rest-api.php b/inc/classes/metform/class-metform-rest-api.php index 38fbfef1f..6dfd9a84c 100644 --- a/inc/classes/metform/class-metform-rest-api.php +++ b/inc/classes/metform/class-metform-rest-api.php @@ -4,7 +4,7 @@ * * Get a single Metform. * - * @since n.e.x.t + * @since 1.4.0 * * @package GoDAM */ @@ -19,14 +19,14 @@ /** * Class Metform_Rest_Api * - * @since n.e.x.t + * @since 1.4.0 */ class Metform_Rest_Api extends Base { /** * Get REST routes. * - * @since n.e.x.t + * @since 1.4.0 */ public function get_rest_routes() { return array( @@ -70,7 +70,7 @@ public function get_rest_routes() { /** * Get all Metforms. * - * @since n.e.x.t + * @since 1.4.0 * * @param \WP_REST_Request $request Request Object. * @return \WP_REST_Response|\WP_Error @@ -124,7 +124,7 @@ public function get_metforms( $request ) { /** * Get a single Metform. * - * @since n.e.x.t + * @since 1.4.0 * * @param \WP_REST_Request $request Request Object. * @return \WP_REST_Response|\WP_Error diff --git a/inc/classes/ninja-forms/class-ninja-forms-field-godam-recorder.php b/inc/classes/ninja-forms/class-ninja-forms-field-godam-recorder.php index c966bf9d1..82db3a3c6 100644 --- a/inc/classes/ninja-forms/class-ninja-forms-field-godam-recorder.php +++ b/inc/classes/ninja-forms/class-ninja-forms-field-godam-recorder.php @@ -2,7 +2,7 @@ /** * GoDAM Recorder Ninja Forms field. * - * @since n.e.x.t + * @since 1.4.0 * * @package GoDAM */ @@ -16,7 +16,7 @@ /** * Class Ninja_Forms_Godam_Recorder * - * @since n.e.x.t + * @since 1.4.0 */ class Ninja_Forms_Field_Godam_Recorder extends \NF_Abstracts_Field { @@ -25,7 +25,7 @@ class Ninja_Forms_Field_Godam_Recorder extends \NF_Abstracts_Field { /** * Field type. * - * @since n.e.x.t + * @since 1.4.0 * * @var string */ @@ -36,7 +36,7 @@ class Ninja_Forms_Field_Godam_Recorder extends \NF_Abstracts_Field { /** * Field parent type. * - * @since n.e.x.t + * @since 1.4.0 * * @access protected * @@ -47,7 +47,7 @@ class Ninja_Forms_Field_Godam_Recorder extends \NF_Abstracts_Field { /** * Field section. * - * @since n.e.x.t + * @since 1.4.0 * * @access protected * @@ -58,7 +58,7 @@ class Ninja_Forms_Field_Godam_Recorder extends \NF_Abstracts_Field { /** * Field templates. * - * @since n.e.x.t + * @since 1.4.0 * * @access protected * @@ -69,7 +69,7 @@ class Ninja_Forms_Field_Godam_Recorder extends \NF_Abstracts_Field { /** * Field icon. * - * @since n.e.x.t + * @since 1.4.0 * * @access protected * @@ -80,7 +80,7 @@ class Ninja_Forms_Field_Godam_Recorder extends \NF_Abstracts_Field { /** * Field test value. * - * @since n.e.x.t + * @since 1.4.0 * * @access protected * @@ -91,7 +91,7 @@ class Ninja_Forms_Field_Godam_Recorder extends \NF_Abstracts_Field { /** * All settings fields. * - * @since n.e.x.t + * @since 1.4.0 * * @access protected * @@ -112,7 +112,7 @@ class Ninja_Forms_Field_Godam_Recorder extends \NF_Abstracts_Field { /** * Constructor. * - * @since n.e.x.t + * @since 1.4.0 */ public function __construct() { @@ -132,7 +132,7 @@ public function __construct() { /** * Setup hooks. * - * @since n.e.x.t + * @since 1.4.0 * * @return void */ @@ -160,7 +160,7 @@ public function setup_hooks() { * * @param string $file_name File Name to include. * - * @since n.e.x.t + * @since 1.4.0 * * @return mixed */ @@ -173,7 +173,7 @@ private function config( $file_name ) { * * @param string $file_name File Name to include. * - * @since n.e.x.t + * @since 1.4.0 * * @return mixed */ @@ -184,7 +184,7 @@ private function template( $file_name ) { /** * Add Template for the field builder. * - * @since n.e.x.t + * @since 1.4.0 * * @return void */ @@ -198,7 +198,7 @@ public function admin_enqueue_scripts() { * @param array $settings Field settings. * @param object $form Form object. * - * @since n.e.x.t + * @since 1.4.0 * * @return array */ @@ -263,7 +263,7 @@ public function localize_settings( $settings, $form ) { /** * Process the field value. * - * @since n.e.x.t + * @since 1.4.0 * * @param object $field Current field object. * @param array $data Submitted form data. @@ -301,7 +301,7 @@ public function process( $field, $data ) { * * @param array|object $field Field settings or object. * - * @since n.e.x.t + * @since 1.4.0 * * @return array|object $field */ @@ -369,7 +369,7 @@ public function frontend_enqueue_scripts( $field ) { * * @param int $field_id Field ID. * - * @since n.e.x.t + * @since 1.4.0 * * @return array */ @@ -383,7 +383,7 @@ private function create_nonce_field( $field_id ) { /** * Ajax upload handler. * - * @since n.e.x.t + * @since 1.4.0 * * @return void */ @@ -469,7 +469,7 @@ public function ajax_upload() { /** * Update the filename to be unique. * - * @since n.e.x.t + * @since 1.4.0 * * @param string $filename Current filename. * @@ -488,7 +488,7 @@ private function update_filename( $filename ) { /** * Change upload dir to godam directory in uploads. * - * @since n.e.x.t + * @since 1.4.0 * * @param array $dirs upload directory. * @@ -508,7 +508,7 @@ public function change_upload_dir( $dirs ) { * * @param array $form_data Form data. * - * @since n.e.x.t + * @since 1.4.0 * * @return void */ @@ -545,7 +545,7 @@ public function handle_recorder_submission( $form_data ) { /** * Send files to GoDam for transcoding. * - * @since n.e.x.t + * @since 1.4.0 * * @param string $form_title Form Name. * @param int $form_id Form Id. @@ -617,7 +617,7 @@ private function send_data_to_godam( $form_title, $form_id, $entry_id, $file_url * @param string $job_for Job for. * @param WP_REST_Request $request Request object. * - * @since n.e.x.t + * @since 1.4.0 * * @return void */ diff --git a/inc/classes/ninja-forms/class-ninja-forms-integration.php b/inc/classes/ninja-forms/class-ninja-forms-integration.php index 19aaeac5c..00ea61cfb 100644 --- a/inc/classes/ninja-forms/class-ninja-forms-integration.php +++ b/inc/classes/ninja-forms/class-ninja-forms-integration.php @@ -2,7 +2,7 @@ /** * Handles Ninja Forms integration class. * - * @since n.e.x.t + * @since 1.4.0 * * @package GoDAM */ @@ -17,7 +17,7 @@ /** * Class Ninja_Forms_Integration * - * @since n.e.x.t + * @since 1.4.0 */ class Ninja_Forms_Integration { @@ -26,7 +26,7 @@ class Ninja_Forms_Integration { /** * Initialize class. * - * @since n.e.x.t + * @since 1.4.0 * * @return void */ @@ -41,7 +41,7 @@ public function init() { /** * Setup hooks. * - * @since n.e.x.t + * @since 1.4.0 * * @return void */ @@ -59,7 +59,7 @@ public function setup_hooks() { /** * Add additional css for video editor. * - * @since n.e.x.t + * @since 1.4.0 * * @return void */ @@ -85,7 +85,7 @@ public function add_additional_css_for_video_editor() { /** * Add additional css for godam player. * - * @since n.e.x.t + * @since 1.4.0 * * @return void */ @@ -103,7 +103,7 @@ public function add_additional_css_for_godam_player() { /** * Add css for the layer inside iframe. * - * @since n.e.x.t + * @since 1.4.0 * * @param string $layer Layer name. * @param string $layer_id Layer ID. @@ -132,7 +132,7 @@ public function add_css_for_the_layer_inside_iframe( $layer, $layer_id ) { /** * Render ninja form for video editor. * - * @since n.e.x.t + * @since 1.4.0 * * @param string $layer Layer name. * @param string $layer_id Layer ID. @@ -150,7 +150,7 @@ public function render_layer_form_for_video_editor( $layer, $layer_id ) { * * @param array $fields Fields to register. * - * @since n.e.x.t + * @since 1.4.0 * * @return array */ @@ -166,7 +166,7 @@ public function register_field( $fields ) { * * @param array $paths Paths to template files. * - * @since n.e.x.t + * @since 1.4.0 * * @return array */ diff --git a/inc/classes/ninja-forms/class-ninja-forms-rest-api.php b/inc/classes/ninja-forms/class-ninja-forms-rest-api.php index 96a055162..1455e3d33 100644 --- a/inc/classes/ninja-forms/class-ninja-forms-rest-api.php +++ b/inc/classes/ninja-forms/class-ninja-forms-rest-api.php @@ -4,7 +4,7 @@ * * Get a single Ninja Form. * - * @since n.e.x.t + * @since 1.4.0 * * @package GoDAM */ @@ -20,14 +20,14 @@ /** * Class Ninja_Forms_Rest_Api * - * @since n.e.x.t + * @since 1.4.0 */ class Ninja_Forms_Rest_Api extends Base { /** * Get REST routes. * - * @since n.e.x.t + * @since 1.4.0 */ public function get_rest_routes() { return array( @@ -71,7 +71,7 @@ public function get_rest_routes() { /** * Get all Ninja Forms. * - * @since n.e.x.t + * @since 1.4.0 * * @param \WP_REST_Request $request Request Object. * @return \WP_REST_Response @@ -100,7 +100,7 @@ function ( $form ) { /** * Get a single Ninja Form. * - * @since n.e.x.t + * @since 1.4.0 * * @param \WP_REST_Request $request Request Object. * @return \WP_REST_Response diff --git a/inc/classes/ninja-forms/config/field-settings.php b/inc/classes/ninja-forms/config/field-settings.php index 7a9e0cd0e..362ab8acf 100644 --- a/inc/classes/ninja-forms/config/field-settings.php +++ b/inc/classes/ninja-forms/config/field-settings.php @@ -2,7 +2,7 @@ /** * Ninja Forms GoDAM Video Settings. * - * @since n.e.x.t + * @since 1.4.0 * * @package GoDAM */ diff --git a/inc/classes/rest-api/class-media-library.php b/inc/classes/rest-api/class-media-library.php index 8cb0fe44b..e7ac8e8c9 100644 --- a/inc/classes/rest-api/class-media-library.php +++ b/inc/classes/rest-api/class-media-library.php @@ -477,6 +477,67 @@ public function get_video_thumbnails( $request ) { $thumbnail_array = get_post_meta( $attachment_id, 'rtgodam_media_thumbnails', true ); + $godam_original_id = get_post_meta( $attachment_id, '_godam_original_id', true ); + + // Fetch thumbnails from CMM if its a virtual media. + if ( ! empty( $godam_original_id ) && empty( $thumbnail_array ) ) { + $api_key = get_option( 'rtgodam-api-key', '' ); + $api_url = RTGODAM_API_BASE . '/api/method/godam_core.api.file.get_file'; + + $request_url = add_query_arg( + array( + 'file_id' => $godam_original_id, + 'api_key' => $api_key, + ), + $api_url + ); + + $response = wp_remote_get( + $request_url, + array( + 'headers' => array( + 'Content-Type' => 'application/json', + ), + ) + ); + + if ( is_wp_error( $response ) ) { + return new \WP_Error( 'godam_api_error', __( 'Failed to fetch thumbnails from GoDAM.', 'godam' ), array( 'status' => 500 ) ); + } + + $response_code = wp_remote_retrieve_response_code( $response ); + if ( 200 !== $response_code ) { + // translators: %s is the HTTP status code from the GoDAM API response. + return new \WP_Error( 'godam_api_error', sprintf( __( 'GoDAM API returned HTTP status: %s', 'godam' ), $response_code ), array( 'status' => $response_code ) ); + } + + $body = json_decode( wp_remote_retrieve_body( $response ) ); + if ( is_null( $body ) ) { + return new \WP_Error( 'invalid_json', __( 'Invalid JSON response from GoDAM API.', 'godam' ), array( 'status' => 500 ) ); + } + + if ( ! is_object( $body ) || + ! isset( $body->message ) || + ! is_object( $body->message ) || + empty( $body->message->thumbnails ) || + ! is_array( $body->message->thumbnails ) ) { + return new \WP_Error( 'thumbnails_not_found', __( 'No thumbnails found.', 'godam' ), array( 'status' => 204 ) ); + } + + // Extract thumbnail URLs from objects. + $thumbnail_array = array(); + foreach ( $body->message->thumbnails as $thumb_obj ) { + if ( isset( $thumb_obj->thumbnail_url ) ) { + $thumbnail_array[] = $thumb_obj->thumbnail_url; + } + } + + $thumbnail_array = array_values( array_unique( $thumbnail_array ) ); + if ( ! empty( $thumbnail_array ) ) { + update_post_meta( $attachment_id, 'rtgodam_media_thumbnails', $thumbnail_array ); + } + } + $custom_thumbnails = get_post_meta( $attachment_id, 'rtgodam_custom_media_thumbnails', true ); if ( ! is_array( $thumbnail_array ) ) { @@ -527,7 +588,7 @@ public function get_video_thumbnails( $request ) { } elseif ( ! empty( $thumbnail_array ) ) { $selected_thumbnail = reset( $thumbnail_array ); } - + update_post_meta( $attachment_id, 'rtgodam_media_video_thumbnail', $selected_thumbnail ); } diff --git a/inc/classes/rest-api/class-transcoding.php b/inc/classes/rest-api/class-transcoding.php index d8cb4ea5c..e928f8d69 100644 --- a/inc/classes/rest-api/class-transcoding.php +++ b/inc/classes/rest-api/class-transcoding.php @@ -303,7 +303,7 @@ public function verify_status_permission( $request ) { * * @param \WP_REST_Request $request REST request object. * - * @since n.e.x.t + * @since 1.4.0 * * @return WP_REST_Response */ @@ -358,10 +358,10 @@ public function get_media_require_retranscoding( $request ) { /** * Retranscode media. * - * This function is a placeholder for the retranscoding functionality. - * It should be implemented to handle the retranscoding of media files. + * This function handles the retranscoding of media files, but skips virtual media + * and migrated Vimeo videos, showing appropriate messages instead. * - * @since n.e.x.t + * @since 1.4.0 * * @param \WP_REST_Request $request REST request object. */ @@ -377,12 +377,53 @@ public function retranscode_media( \WP_REST_Request $request ) { ); } - // Delete the transcoding job ID from the post meta. - // As we are retranscoding the media, we need to remove the previous transcoding job ID. - delete_post_meta( $attachment_id, 'rtgodam_transcoding_job_id' ); + $title = get_the_title( $attachment_id ); + + // Check if this is virtual media (fetched from Central). + $godam_original_id = get_post_meta( $attachment_id, '_godam_original_id', true ); + if ( ! empty( $godam_original_id ) ) { + $message = sprintf( + // translators: 1: Attachment title, 2: Attachment ID. + __( '%1$s (ID %2$d) is virtual media from GoDAM Central. Please retranscode this video on GoDAM Central.', 'godam' ), + esc_html( $title ), + absint( $attachment_id ) + ); + + return new \WP_REST_Response( + array( + 'message' => $message, + 'skipped' => true, + 'reason' => 'virtual_media', + ), + 200 + ); + } + + // Check if this is migrated Vimeo video. + $is_migrated_vimeo = get_post_meta( $attachment_id, 'rtgodam_is_migrated_vimeo_video', true ); + if ( ! empty( $is_migrated_vimeo ) ) { + $message = sprintf( + // translators: 1: Attachment title, 2: Attachment ID. + __( '%1$s (ID %2$d) is migrated Vimeo video. Please retranscode this video on GoDAM Central.', 'godam' ), + esc_html( $title ), + absint( $attachment_id ) + ); + + return new \WP_REST_Response( + array( + 'message' => $message, + 'skipped' => true, + 'reason' => 'migrated_vimeo', + ), + 200 + ); + } + + // Proceed with normal retranscoding for original media. + delete_post_meta( $attachment_id, 'rtgodam_transcoding_status' ); + delete_post_meta( $attachment_id, 'rtgodam_transcoding_error_msg' ); $mime_type = get_post_mime_type( $attachment_id ); - $title = get_the_title( $attachment_id ); $wp_metadata = array(); $wp_metadata['mime_type'] = $mime_type; @@ -420,7 +461,11 @@ public function retranscode_media( \WP_REST_Request $request ) { ); return new \WP_REST_Response( - array( 'message' => $message ), + array( + 'message' => $message, + 'skipped' => false, + 'sent' => true, + ), 200 ); } diff --git a/inc/classes/rest-api/class-video-migration.php b/inc/classes/rest-api/class-video-migration.php index af77076d6..b74e56df2 100644 --- a/inc/classes/rest-api/class-video-migration.php +++ b/inc/classes/rest-api/class-video-migration.php @@ -4,7 +4,7 @@ * * This class handles the migration of Vimeo videos in Gutenberg blocks. * - * @since n.e.x.t + * @since 1.4.0 * * @package GoDAM */ @@ -18,7 +18,7 @@ /** * Class Video_Migration * - * @since n.e.x.t + * @since 1.4.0 */ class Video_Migration extends Base { @@ -35,7 +35,7 @@ public function __construct() { /** * Get REST routes. * - * @since n.e.x.t + * @since 1.4.0 */ public function get_rest_routes() { return array( @@ -81,7 +81,7 @@ public function get_rest_routes() { * Stops future scheduled actions and resets the stored status to initial state. * Returns a small summary to display in UI. * - * @since n.e.x.t + * @since 1.4.0 * * @param \WP_REST_Request $request Request containing migration type. * @@ -128,7 +128,7 @@ public function abort_video_migration( $request ) { * This function fetches the current Vimeo migration status from GoDAM Central API. * It requires a valid API key stored in WordPress options. * - * @since n.e.x.t + * @since 1.4.0 * * @return array|\WP_Error Migration status or error object on failure. */ @@ -160,7 +160,7 @@ public function get_vimeo_migration_status_from_godam_central() { /** * Permission callback for video migration endpoints. * - * @since n.e.x.t + * @since 1.4.0 * * @return bool True if the user has permission, false otherwise. */ @@ -175,7 +175,7 @@ public function check_video_migration_permission() { * This endpoint initiates the migration process for Vimeo videos in Gutenberg blocks. * It queues a background action to process all posts that need migration. * - * @since n.e.x.t + * @since 1.4.0 * * @param \WP_REST_Request $request The REST request object. * @@ -189,6 +189,7 @@ public function migrate_videos( $request ) { if ( ! in_array( $migration_type, array( 'core', 'vimeo' ), true ) ) { return new \WP_Error( 'invalid_migration_type', __( 'Invalid migration type specified.', 'godam' ), array( 'status' => 400 ) ); } + $wp_option_key = 'godam_' . $migration_type . '_video_migration_status'; if ( 'vimeo' === $migration_type ) { // Check if Vimeo migration is enabled. @@ -200,16 +201,17 @@ public function migrate_videos( $request ) { if ( isset( $godam_migration_status['message']['migration_status'] ) ) { $status = $godam_migration_status['message']['migration_status']; if ( 'Completed' !== $status ) { + // Reset migration status since Central migration is not completed. + delete_option( $wp_option_key ); + return new \WP_REST_Response( $godam_migration_status, - 400, + 200, ); } } } - $wp_option_key = 'godam_' . $migration_type . '_video_migration_status'; - $migration_status = get_option( $wp_option_key, array() ); if ( ! empty( $migration_status ) && 'processing' === $migration_status['status'] ) { @@ -247,7 +249,7 @@ public function migrate_videos( $request ) { * Process the full migration in background. * This runs as a scheduled action and handles finding + migrating all posts. * - * @since n.e.x.t + * @since 1.4.0 * * @param string $migration_type The type of migration to process (e.g., 'core', 'vimeo'). * @@ -296,7 +298,7 @@ public function process_full_video_migration( $migration_type ) { /** * Find all posts that need migration across all post types * - * @since n.e.x.t + * @since 1.4.0 * * @param array $post_types Array of post type names to search for. * @@ -349,7 +351,7 @@ private function find_all_posts_for_migration( $post_types ) { /** * Process all posts in manageable batches. * - * @since n.e.x.t + * @since 1.4.0 * * @param string $migration_type The type of migration being processed (e.g., 'core', 'vimeo'). * @param array $all_post_ids Array of all post IDs to process. @@ -398,7 +400,7 @@ private function process_posts_in_batches( $migration_type, $all_post_ids ) { /** * Handle migration completion when no posts found. * - * @since n.e.x.t + * @since 1.4.0 * * @param string $wp_option_key The WordPress option key to update with the completion status. * @@ -420,7 +422,7 @@ private function complete_migration_with_no_posts( $wp_option_key ) { /** * Update status with error message * - * @since n.e.x.t + * @since 1.4.0 * * @param string $wp_option_key The WordPress option key to update with the error status. * @param string $error_message The error message to log and update in the migration status. @@ -438,7 +440,7 @@ private function update_migration_status_error( $wp_option_key, $error_message ) /** * Enhanced batch processing with better error handling. * - * @since n.e.x.t + * @since 1.4.0 * * @param string $migration_type The type of migration being processed (e.g., 'core', 'vimeo'). * @param array $post_ids Array of post IDs to process in this batch. @@ -560,7 +562,7 @@ public function migrate_post_batch_video_blocks( $migration_type, $post_ids, $ba * * Uses add_option as a mutex. If an existing lock is expired, it will be taken over. * - * @since n.e.x.t + * @since 1.4.0 * * @param string $lock_key Unique option key for the lock. * @param int $timeout_s Lock expiry seconds. @@ -594,7 +596,7 @@ private function acquire_migration_lock( string $lock_key, int $timeout_s = 5, i /** * Release a previously acquired migration lock. * - * @since n.e.x.t + * @since 1.4.0 * * @param string $lock_key Lock option key. * @@ -607,7 +609,7 @@ private function release_migration_lock( string $lock_key ) { /** * Migrate video blocks for a single post. * - * @since n.e.x.t + * @since 1.4.0 * * @param int $post_id The ID of the post to migrate. * @@ -643,7 +645,7 @@ private function migrate_single_post_video_blocks( $post_id ) { * * Handles nested structures like columns, groups, grids, etc. * - * @since n.e.x.t + * @since 1.4.0 * * @param array $blocks Parsed blocks array (passed by reference). * @param bool $changed Whether content changed (by reference). @@ -694,7 +696,7 @@ private function traverse_and_migrate_core_video_blocks_recursive( array &$block /** * Migrate Vimeo video blocks for a single post. * - * @since n.e.x.t + * @since 1.4.0 * * @param int $post_id The ID of the post to migrate. * @@ -735,7 +737,7 @@ private function migrate_single_post_vimeo_blocks( $post_id ) { /** * Recursively traverse blocks to find and migrate Vimeo embeds inside nested structures. * - * @since n.e.x.t + * @since 1.4.0 * * @param array $blocks Parsed Gutenberg blocks (passed by reference). * @param int $post_id Post ID for logging context. @@ -807,7 +809,7 @@ private function traverse_and_migrate_vimeo_blocks_recursive( array &$blocks, in /** * Filter the migration of custom Vimeo blocks. * - * @since n.e.x.t + * @since 1.4.0 * * @param array $args migration arguments. * @param Video_Migration $instance The current instance of the class. @@ -834,7 +836,7 @@ private function traverse_and_migrate_vimeo_blocks_recursive( array &$blocks, in * * This function creates the sources array that matches the format expected by the block editor. * - * @since n.e.x.t + * @since 1.4.0 * * @param int $attachment_id The attachment ID. * @@ -879,7 +881,7 @@ public function build_video_sources_array( int $attachment_id ): array { /** * Build default SEO data for a video attachment to populate block attrs during migration. * - * @since n.e.x.t + * @since 1.4.0 * * @param int $attachment_id Attachment ID. * @param array $attrs Source block attributes (optional). @@ -949,13 +951,139 @@ private function build_default_seo_data( int $attachment_id, array $attrs = arra ); } + /** + * Fetch Vimeo video id from url. + * + * @since 1.4.0 + * + * @param string $vimeo_url The Vimeo video URL to fetch the ID from. + * @return string The Vimeo video ID or same vimeo URL if not found. + */ + private function fetch_vimeo_video_id( string $vimeo_url ) { + if ( preg_match( '/vimeo\.com\/(?:video\/)?(\d+)/', $vimeo_url, $matches ) ) { + return $matches[1]; + } + + // Strip out the query parameters. + $vimeo_url_stripped = strtok( $vimeo_url, '?' ); + + return $vimeo_url_stripped; + } + + /** + * Update video attachment metadata from Vimeo video info. + * + * This function handles setting all video metadata including dimensions, + * thumbnails, file size, duration, and transcoded URLs for both new and + * existing attachments during Vimeo migration. + * + * @since 1.4.0 + * + * @param int $attachment_id The attachment ID to update. + * @param array $video_info The video information from GoDAM Central API. + * @param string|null $job_id The job ID if available. + * + * @return bool True on success, false on failure. + */ + private function update_video_metadata_from_vimeo_info( $attachment_id, $video_info, $job_id = null ) { + if ( empty( $attachment_id ) || empty( $video_info ) ) { + return false; + } + + // Update attachment post data. + $attachment_data = array( + 'ID' => $attachment_id, + 'post_title' => $video_info['title'] ?? $video_info['orignal_file_name'] ?? '', + 'post_content' => $video_info['description'] ?? '', + ); + wp_update_post( $attachment_data ); + + // Update attachment metadata with dimensions. + $metadata = array( + 'width' => empty( $video_info['width'] ) ? 1920 : $video_info['width'], + 'height' => empty( $video_info['height'] ) ? 1080 : $video_info['height'], + 'filesize' => empty( $video_info['file_size'] ) ? 0 : intval( $video_info['file_size'] ), + 'mime_type' => 'video/mp4', + 'length' => empty( $video_info['playtime'] ) ? 0 : intval( $video_info['playtime'] ), + 'length_formatted' => empty( $video_info['playtime'] ) ? '00:00' : gmdate( 'i:s', intval( $video_info['playtime'] ) ), + 'fileformat' => 'mp4', + ); + wp_update_attachment_metadata( $attachment_id, $metadata ); + + // Set the attachment thumbnail. + if ( isset( $video_info['thumbnails'] ) && ! empty( $video_info['thumbnails'] ) ) { + $thumbnails = $video_info['thumbnails']; + $thumbnail_urls = array(); + + foreach ( $thumbnails as $thumb ) { + if ( empty( $thumb['thumbnail_url'] ) ) { + continue; + } + + $thumbnail_urls[] = $thumb['thumbnail_url']; + + // Set as primary thumbnail if set to active. + if ( isset( $thumb['is_active'] ) && $thumb['is_active'] ) { + update_post_meta( $attachment_id, 'rtgodam_media_video_thumbnail', $thumb['thumbnail_url'] ); + } + } + + update_post_meta( $attachment_id, 'rtgodam_media_thumbnails', $thumbnail_urls ); + } + + // Set the attachment file size. + if ( ! empty( $video_info['file_size'] ) ) { + update_post_meta( $attachment_id, '_video_file_size', intval( $video_info['file_size'] ) ); + } + + // Set the attachment playtime. + if ( ! empty( $video_info['playtime'] ) ) { + update_post_meta( $attachment_id, '_video_duration', intval( $video_info['playtime'] ) ); + } + + // Set the attachment attached file. + if ( ! empty( $video_info['transcoded_mp4_url'] ) ) { + update_post_meta( $attachment_id, '_wp_attached_file', $video_info['transcoded_mp4_url'] ); + update_post_meta( $attachment_id, 'rtgodam_is_migrated_vimeo_video', true ); + } + + // Set status as transcoded. + update_post_meta( $attachment_id, 'rtgodam_transcoding_status', 'Transcoded' ); + + // Save the job ID if available. + if ( ! empty( $job_id ) ) { + update_post_meta( $attachment_id, '_godam_original_id', $job_id ); + update_post_meta( $attachment_id, 'rtgodam_transcoding_job_id', $job_id ); + } + + // Change the guid of the attachment to the transcoded file path. + global $wpdb; + //phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery,WordPress.DB.DirectDatabaseQuery.NoCaching + $wpdb->update( + $wpdb->posts, + array( + 'guid' => ! empty( $video_info['transcoded_mp4_url'] ) ? $video_info['transcoded_mp4_url'] : $video_info['transcoded_file_path'], + ), + array( + 'ID' => $attachment_id, + ) + ); + + // Update attachment metadata. + update_post_meta( $attachment_id, 'rtgodam_transcoded_url', $video_info['transcoded_file_path'] ); + update_post_meta( $attachment_id, 'rtgodam_hls_transcoded_url', $video_info['transcoded_hls_path'] ); + + return true; + } + /** * Create an attachment from a Vimeo video URL. * * Fetches video information from GoDAM Central and creates a WordPress attachment - * with the transcoded video file path. + * with the transcoded video file path. Checks for existing attachment by job ID first. + * If JOB ID is present and attachment exists, replaces all video metadata. * - * @since n.e.x.t + * @since 1.4.0 * * @param string $vimeo_url The Vimeo video URL to create an attachment from. * @@ -966,6 +1094,9 @@ public function create_attachment_from_vimeo_video( $vimeo_url ) { return new \WP_Error( 'missing_url', __( 'Vimeo URL is required.', 'godam' ) ); } + // Fetch vimeo video id from url. + $vimeo_video_id = $this->fetch_vimeo_video_id( $vimeo_url ); + // Get API key from options. $api_key = get_option( 'rtgodam-api-key', '' ); if ( empty( $api_key ) ) { @@ -977,7 +1108,7 @@ public function create_attachment_from_vimeo_video( $vimeo_url ) { $request_url = add_query_arg( array( 'api_key' => $api_key, - 'vimeo_url' => $vimeo_url, + 'vimeo_url' => $vimeo_video_id, ), $request_url ); @@ -1007,72 +1138,42 @@ public function create_attachment_from_vimeo_video( $vimeo_url ) { $video_info = $data['message']; - // Prepare attachment data. + // Check if job ID exists in the response and look for existing attachment. + $job_id = $video_info['name'] ?? null; + + if ( ! empty( $job_id ) ) { + // Check if attachment with this job ID already exists. + if ( class_exists( 'RTGODAM_Transcoder_Handler' ) ) { + $transcoder_handler = new \RTGODAM_Transcoder_Handler(); + if ( method_exists( $transcoder_handler, 'get_post_id_by_meta_key_and_value' ) ) { + $existing_attachment_id = $transcoder_handler->get_post_id_by_meta_key_and_value( 'rtgodam_transcoding_job_id', $job_id ); + + if ( $existing_attachment_id ) { + // Replace all video metadata for existing attachment when JOB ID is present. + $this->update_video_metadata_from_vimeo_info( $existing_attachment_id, $video_info, $job_id ); + return $existing_attachment_id; + } + } + } + } + + // Prepare attachment data for new attachment. $attachment = array( 'post_mime_type' => 'video/mp4', - 'post_title' => $video_info['orignal_file_name'] ?? '', + 'post_title' => $video_info['title'] ?? $video_info['orignal_file_name'] ?? '', + 'post_content' => $video_info['description'] ?? '', 'post_status' => 'inherit', ); // Insert the attachment. $attachment_id = wp_insert_attachment( $attachment ); - // Update attachment metadata with dimensions. - $metadata = array( - 'width' => empty( $video_info['width'] ) ? 1920 : $video_info['width'], - 'height' => empty( $video_info['height'] ) ? 1080 : $video_info['height'], - 'filesize' => empty( $video_info['file_size'] ) ? 0 : intval( $video_info['file_size'] ), - 'mime_type' => 'video/mp4', - 'length' => empty( $video_info['playtime'] ) ? 0 : intval( $video_info['playtime'] ), - 'length_formatted' => empty( $video_info['playtime'] ) ? '00:00' : gmdate( 'i:s', intval( $video_info['playtime'] ) ), - 'fileformat' => 'mp4', - ); - wp_update_attachment_metadata( $attachment_id, $metadata ); - if ( is_wp_error( $attachment_id ) ) { return $attachment_id; } - // Set the attachment thumbnail. - if ( ! empty( $video_info['thumbnail_url'] ) ) { - update_post_meta( $attachment_id, 'rtgodam_media_video_thumbnail', $video_info['thumbnail_url'] ); - } - - // Set the attachment file size. - if ( ! empty( $video_info['file_size'] ) ) { - update_post_meta( $attachment_id, '_video_file_size', intval( $video_info['file_size'] ) ); - } - - // Set the attachment playtime. - if ( ! empty( $video_info['playtime'] ) ) { - update_post_meta( $attachment_id, '_video_duration', intval( $video_info['playtime'] ) ); - } - - // Set the attachment attached file. - if ( ! empty( $video_info['transcoded_mp4_url'] ) ) { - update_post_meta( $attachment_id, '_wp_attached_file', $video_info['transcoded_mp4_url'] ); - update_post_meta( $attachment_id, 'rtgodam_is_migrated_vimeo_video', true ); - } - - // Set status as transcoded. - update_post_meta( $attachment_id, 'rtgodam_transcoding_status', 'Transcoded' ); - - // Change the guid of the attachment to the transcoded file path. - global $wpdb; - //phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery,WordPress.DB.DirectDatabaseQuery.NoCaching - $wpdb->update( - $wpdb->posts, - array( - 'guid' => ! empty( $video_info['transcoded_mp4_url'] ) ? $video_info['transcoded_mp4_url'] : $video_info['transcoded_file_path'], - ), - array( - 'ID' => $attachment_id, - ) - ); - - // Update attachment metadata. - update_post_meta( $attachment_id, 'rtgodam_transcoded_url', $video_info['transcoded_file_path'] ); - update_post_meta( $attachment_id, 'rtgodam_hls_transcoded_url', $video_info['transcoded_hls_path'] ); + // Update video metadata using the new reusable function. + $this->update_video_metadata_from_vimeo_info( $attachment_id, $video_info, $job_id ); return $attachment_id; } @@ -1080,7 +1181,7 @@ public function create_attachment_from_vimeo_video( $vimeo_url ) { /** * Get the current migration status. * - * @since n.e.x.t + * @since 1.4.0 * * @param \WP_REST_Request $request The REST request object. * @@ -1115,7 +1216,7 @@ public function get_migration_status( $request ) { /** * Get all post types that have Gutenberg editor enabled. * - * @since n.e.x.t + * @since 1.4.0 * * @return array List of post type names that support Gutenberg editor. */ diff --git a/inc/helpers/custom-functions.php b/inc/helpers/custom-functions.php index ffab27dfd..8061b1967 100644 --- a/inc/helpers/custom-functions.php +++ b/inc/helpers/custom-functions.php @@ -650,7 +650,16 @@ function godam_get_transcript_path( $job_id ) { RTGODAM_API_BASE . '/api/method/godam_core.api.process.get_transcription' ); - $response = wp_remote_get( $rest_url, array( 'timeout' => 3 ) ); + // Add headers to prevent 417 Expectation Failed error. + $args = array( + 'timeout' => 3, + 'headers' => array( + 'User-Agent' => 'WordPress/' . get_bloginfo( 'version' ) . '; ' . home_url(), + 'Accept' => 'application/json', + ), + ); + + $response = wp_remote_get( $rest_url, $args ); if ( ! is_wp_error( $response ) && 200 === wp_remote_retrieve_response_code( $response ) ) { $body = wp_remote_retrieve_body( $response ); @@ -665,7 +674,7 @@ function godam_get_transcript_path( $job_id ) { // Cache for 12 hours. set_transient( $cache_key, $transcript_path, 12 * HOUR_IN_SECONDS ); } - } + } } return ! empty( $transcript_path ) ? $transcript_path : false; diff --git a/inc/templates/render-video-editor-form-layer.php b/inc/templates/render-video-editor-form-layer.php index f634a48ce..2329840a8 100644 --- a/inc/templates/render-video-editor-form-layer.php +++ b/inc/templates/render-video-editor-form-layer.php @@ -6,7 +6,7 @@ * * Currently, this is mainly used for forms integration. * - * @since n.e.x.t + * @since 1.4.0 * * @package GoDAM */ @@ -35,7 +35,7 @@ /** * Action hook to allow additional content to be added before the layer is rendered. * - * @since n.e.x.t + * @since 1.4.0 * * @param string $layer The type of layer being rendered. * @param string $layer_id The ID of the layer being rendered. @@ -52,7 +52,7 @@ /** * Action hook to allow additional content to be added when the layer is rendered. * - * @since n.e.x.t + * @since 1.4.0 * * @param string $layer The type of layer being rendered. * @param string $layer_id The ID of the layer being rendered. @@ -64,7 +64,7 @@ /** * Action hook to allow additional content to be added after the layer is rendered. * - * @since n.e.x.t + * @since 1.4.0 * * @param string $layer The type of layer being rendered. * @param string $layer_id The ID of the layer being rendered. diff --git a/languages/godam.pot b/languages/godam.pot index f6acdce19..abbf5073d 100644 --- a/languages/godam.pot +++ b/languages/godam.pot @@ -2,14 +2,14 @@ # This file is distributed under the GPLv2 or later. msgid "" msgstr "" -"Project-Id-Version: GoDAM 1.3.5\n" +"Project-Id-Version: GoDAM 1.4.0\n" "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/godam\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"POT-Creation-Date: 2025-08-22T13:23:53+00:00\n" +"POT-Creation-Date: 2025-09-08T14:06:14+00:00\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "X-Generator: WP-CLI 2.12.0\n" "X-Domain: godam\n" @@ -17,8 +17,8 @@ msgstr "" #. Plugin Name of the plugin #: godam.php #: inc/classes/class-elementor-widgets.php:134 -#: inc/classes/class-pages.php:126 -#: inc/classes/class-pages.php:127 +#: inc/classes/class-pages.php:158 +#: inc/classes/class-pages.php:159 #: pages/video-editor/components/forms/CF7.js:24 msgid "GoDAM" msgstr "" @@ -43,311 +43,261 @@ msgstr "" msgid "https://rtcamp.com/?utm_source=dashboard&utm_medium=plugin&utm_campaign=godam" msgstr "" -#: admin/class-rtgodam-retranscodemedia.php:122 -#: admin/class-rtgodam-retranscodemedia.php:123 -msgid "Tools" -msgstr "" - -#: admin/class-rtgodam-retranscodemedia.php:138 +#: admin/class-rtgodam-retranscodemedia.php:118 msgid "GoDAM Tools" msgstr "" -#: admin/class-rtgodam-retranscodemedia.php:155 -#: admin/class-rtgodam-retranscodemedia.php:284 -#: admin/class-rtgodam-retranscodemedia.php:305 +#: admin/class-rtgodam-retranscodemedia.php:135 +#: admin/class-rtgodam-retranscodemedia.php:264 +#: admin/class-rtgodam-retranscodemedia.php:285 #: admin/js/godam-retranscode-media.js:6 +#: pages/tools/App.js:20 +#: pages/tools/components/tabs/RetranscodeTab.jsx:297 msgid "Retranscode Media" msgstr "" -#: admin/class-rtgodam-retranscodemedia.php:182 -#: admin/class-rtgodam-retranscodemedia.php:382 +#: admin/class-rtgodam-retranscodemedia.php:162 +#: admin/class-rtgodam-retranscodemedia.php:362 msgid "Cheatin’ uh?" msgstr "" #. translators: Link to the media page. -#: admin/class-rtgodam-retranscodemedia.php:204 -#: admin/class-rtgodam-retranscodemedia.php:416 +#: admin/class-rtgodam-retranscodemedia.php:184 +#: admin/class-rtgodam-retranscodemedia.php:396 #, php-format msgid "Unable to find any media. Are you sure some exist?" msgstr "" -#: admin/class-rtgodam-retranscodemedia.php:224 +#: admin/class-rtgodam-retranscodemedia.php:204 msgid "Stopping..." msgstr "" #. translators: The URL to go back to the previous page. -#: admin/class-rtgodam-retranscodemedia.php:227 -#: admin/class-rtgodam-retranscodemedia.php:496 +#: admin/class-rtgodam-retranscodemedia.php:207 +#: admin/class-rtgodam-retranscodemedia.php:476 #, php-format msgid "To go back to the previous page, click here." msgstr "" -#: admin/class-rtgodam-retranscodemedia.php:283 +#: admin/class-rtgodam-retranscodemedia.php:263 msgid "Retranscode this single media" msgstr "" -#: admin/class-rtgodam-retranscodemedia.php:438 +#: admin/class-rtgodam-retranscodemedia.php:418 msgid "There are no media available to send for transcoding." msgstr "" -#: admin/class-rtgodam-retranscodemedia.php:448 +#: admin/class-rtgodam-retranscodemedia.php:428 msgid "You do not have sufficient bandwidth remaining to perform the transcoding." msgstr "" -#: admin/class-rtgodam-retranscodemedia.php:449 +#: admin/class-rtgodam-retranscodemedia.php:429 msgid "Your remaining bandwidth is : " msgstr "" -#: admin/class-rtgodam-retranscodemedia.php:450 +#: admin/class-rtgodam-retranscodemedia.php:430 msgid "Required bandwidth is: " msgstr "" -#: admin/class-rtgodam-retranscodemedia.php:454 +#: admin/class-rtgodam-retranscodemedia.php:434 msgid "You can select the files manually and try again." msgstr "" -#: admin/class-rtgodam-retranscodemedia.php:461 -#: admin/class-rtgodam-retranscodemedia.php:475 +#: admin/class-rtgodam-retranscodemedia.php:441 +#: admin/class-rtgodam-retranscodemedia.php:455 msgid "Proceed with retranscoding" msgstr "" -#: admin/class-rtgodam-retranscodemedia.php:489 +#: admin/class-rtgodam-retranscodemedia.php:469 msgid "Your files are being re-transcoded. Do not navigate away from this page until the process is completed, as doing so will prematurely abort the script. Retranscoding can take a while, especially for larger files. You can view the progress below." msgstr "" #. translators: Count of media which were successfully and media which were failed transcoded with the time in seconds and previout page link. -#: admin/class-rtgodam-retranscodemedia.php:499 +#: admin/class-rtgodam-retranscodemedia.php:479 #, php-format msgid "All done! %1$s media file(s) were successfully sent for transcoding in %2$s seconds and there were %3$s failure(s). To try transcoding the failed media again, click here. %5$s" msgstr "" #. translators: Count of media which were successfully transcoded with the time in seconds and previout page link. -#: admin/class-rtgodam-retranscodemedia.php:501 +#: admin/class-rtgodam-retranscodemedia.php:481 #, php-format msgid "All done! %1$s media file(s) were successfully sent for transcoding in %2$s seconds and there were 0 failures. %3$s" msgstr "" -#: admin/class-rtgodam-retranscodemedia.php:504 -#: admin/class-rtgodam-retranscodemedia.php:557 +#: admin/class-rtgodam-retranscodemedia.php:484 +#: admin/class-rtgodam-retranscodemedia.php:537 msgid "You must enable Javascript in order to proceed!" msgstr "" -#: admin/class-rtgodam-retranscodemedia.php:510 +#: admin/class-rtgodam-retranscodemedia.php:490 msgid "Abort the Operation" msgstr "" -#: admin/class-rtgodam-retranscodemedia.php:512 +#: admin/class-rtgodam-retranscodemedia.php:492 msgid "Debugging Information" msgstr "" #. translators: Total count of the media. -#: admin/class-rtgodam-retranscodemedia.php:517 +#: admin/class-rtgodam-retranscodemedia.php:497 #, php-format msgid "Total Media: %s" msgstr "" #. translators: Count of media which were successfully sent to the transcoder server. -#: admin/class-rtgodam-retranscodemedia.php:522 +#: admin/class-rtgodam-retranscodemedia.php:502 #, php-format msgid "Media Sent for Retranscoding: %s" msgstr "" #. translators: Count of media which were failed while sending to the transcoder server. -#: admin/class-rtgodam-retranscodemedia.php:527 +#: admin/class-rtgodam-retranscodemedia.php:507 #, php-format msgid "Failed While Sending: %s" msgstr "" -#: admin/class-rtgodam-retranscodemedia.php:542 +#: admin/class-rtgodam-retranscodemedia.php:522 msgid "This tool will retranscode ALL audio/video media uploaded to your website. This can be handy if you need to transcode media files uploaded in the past." msgstr "" -#: admin/class-rtgodam-retranscodemedia.php:544 +#: admin/class-rtgodam-retranscodemedia.php:524 msgid "Sending your entire media library for retranscoding can consume a lot of your bandwidth allowance, so use this tool with care." msgstr "" #. translators: Placeholder is for admin media section link. -#: admin/class-rtgodam-retranscodemedia.php:549 +#: admin/class-rtgodam-retranscodemedia.php:529 #, php-format msgid "You can retranscode specific media files (rather than ALL media) from the Media page using Bulk Action via drop down or mouse hover a specific media (audio/video) file." msgstr "" -#: admin/class-rtgodam-retranscodemedia.php:553 +#: admin/class-rtgodam-retranscodemedia.php:533 msgid "To begin, just press the button below." msgstr "" -#: admin/class-rtgodam-retranscodemedia.php:555 +#: admin/class-rtgodam-retranscodemedia.php:535 msgid "Retranscode All Media" msgstr "" -#. translators: Media id of the invalid media type. -#: admin/class-rtgodam-retranscodemedia.php:592 -#, php-format -msgid "Sending Failed: %d is an invalid media ID/type." -msgstr "" - -#: admin/class-rtgodam-retranscodemedia.php:598 -msgid "Your user account doesn't have permission to transcode" -msgstr "" - -#: admin/class-rtgodam-retranscodemedia.php:613 -msgid "The media is already being transcoded" -msgstr "" - -#: admin/class-rtgodam-retranscodemedia.php:660 -msgid "Unknown failure reason." -msgstr "" - -#. translators: Media name, Media id and success message for successfull transcode. -#: admin/class-rtgodam-retranscodemedia.php:666 -#, php-format -msgid ""%1$s" (ID %2$s) was successfully sent in %3$s seconds." -msgstr "" - #. translators: Media name, Media ID and message for failed transcode. -#: admin/class-rtgodam-retranscodemedia.php:677 +#: admin/class-rtgodam-retranscodemedia.php:556 #, php-format msgid ""%1$s" (ID %2$s) failed to send. The error message was: %3$s" msgstr "" -#: admin/class-rtgodam-retranscodemedia.php:698 +#: admin/class-rtgodam-retranscodemedia.php:577 msgid "Insufficient bandwidth!" msgstr "" #. translators: %s is the URL to the plugin settings page where the API key can be activated. #: admin/class-rtgodam-transcoder-admin.php:74 #: admin/class-rtgodam-transcoder-admin.php:92 -#: admin/class-rtgodam-transcoder-admin.php:156 -#: admin/class-rtgodam-transcoder-admin.php:171 +#: admin/class-rtgodam-transcoder-admin.php:154 +#: admin/class-rtgodam-transcoder-admin.php:169 #, php-format msgid "Enjoy using our DAM and Video Editor features for free! To unlock transcoding and other features, please activate your api key." msgstr "" -#: admin/class-rtgodam-transcoder-admin.php:193 -#: admin/class-rtgodam-transcoder-admin.php:254 +#. translators: %d: Number of days until trial ends +#: admin/class-rtgodam-transcoder-admin.php:117 +#, php-format +msgid "Your product is under trial. You will be charged after %d days. If you wish to cancel, please visit your subscription settings." +msgstr "" + +#. translators: %d: Number of days until transcoded videos are deleted after subscription ends +#: admin/class-rtgodam-transcoder-admin.php:141 +#, php-format +msgid "Your subscription has ended. No further transcoding can be done. Transcoded videos will be removed after %d days, and advanced video layers will not be accessible. After the 30-day grace period, already transcoded videos will no longer be served from the CDN. Renew your subscription to keep it up and running." +msgstr "" + +#: admin/class-rtgodam-transcoder-admin.php:191 +#: admin/class-rtgodam-transcoder-admin.php:252 msgid "Activate API Key" msgstr "" -#: admin/class-rtgodam-transcoder-admin.php:193 +#: admin/class-rtgodam-transcoder-admin.php:191 msgid "Use Video Editor" msgstr "" -#: admin/class-rtgodam-transcoder-admin.php:204 +#: admin/class-rtgodam-transcoder-admin.php:202 msgid "Welcome to GoDAM! Thank you for using our product." msgstr "" -#: admin/class-rtgodam-transcoder-admin.php:229 -#: admin/class-rtgodam-transcoder-admin.php:257 +#: admin/class-rtgodam-transcoder-admin.php:227 +#: admin/class-rtgodam-transcoder-admin.php:255 msgid "Learn More" msgstr "" -#: admin/class-rtgodam-transcoder-admin.php:248 +#: admin/class-rtgodam-transcoder-admin.php:246 +#: assets/src/js/media-library/views/attachment.js:114 +#: pages/godam/components/GoDAMHeader.jsx:25 msgid "GoDAM Logo" msgstr "" -#: admin/class-rtgodam-transcoder-admin.php:250 +#: admin/class-rtgodam-transcoder-admin.php:248 msgid "Hey, you’re missing out on our advanced features!" msgstr "" -#: admin/class-rtgodam-transcoder-admin.php:251 +#: admin/class-rtgodam-transcoder-admin.php:249 msgid "Unlock high-speed transcoding, advanced analytics, adaptive streaming, and more by activating your API key." msgstr "" -#: admin/class-rtgodam-transcoder-handler.php:446 +#: admin/class-rtgodam-transcoder-handler.php:450 msgid "You have successfully subscribed." msgstr "" -#: admin/class-rtgodam-transcoder-handler.php:468 +#: admin/class-rtgodam-transcoder-handler.php:472 msgid "This API key is invalid." msgstr "" -#: admin/class-rtgodam-transcoder-handler.php:483 +#: admin/class-rtgodam-transcoder-handler.php:487 msgid "Transcoding service can not be activated on the localhost" msgstr "" -#: admin/class-rtgodam-transcoder-handler.php:679 -msgid "Could not read file." -msgstr "" - -#: admin/class-rtgodam-transcoder-handler.php:692 -msgid "Transcoding: Download Failed" -msgstr "" - -#: admin/class-rtgodam-transcoder-handler.php:693 -#: admin/class-rtgodam-transcoder-handler.php:826 -#: admin/class-rtgodam-transcoder-handler.php:829 -msgid "Media" -msgstr "" - -#: admin/class-rtgodam-transcoder-handler.php:693 -msgid " was successfully encoded but there was an error while downloading:" -msgstr "" - -#: admin/class-rtgodam-transcoder-handler.php:693 -msgid "You can " -msgstr "" - -#: admin/class-rtgodam-transcoder-handler.php:693 -msgid "retry the download" -msgstr "" - -#: admin/class-rtgodam-transcoder-handler.php:706 -msgid "Done" -msgstr "" - -#: admin/class-rtgodam-transcoder-handler.php:822 -msgid "Transcoding: Something went wrong." -msgstr "" - -#: admin/class-rtgodam-transcoder-handler.php:825 -msgid " There was unexpected error occurred while transcoding this following media." -msgstr "" - -#: admin/class-rtgodam-transcoder-handler.php:830 -msgid " there was unexpected error occurred while transcoding this media." -msgstr "" - #. translators: Return an error if the value is neither a string nor an array. #: admin/class-rtgodam-transcoder-rest-routes.php:160 #, php-format msgid "%s must be a valid URL or an array of URLs." msgstr "" -#: admin/class-rtgodam-transcoder-rest-routes.php:220 +#: admin/class-rtgodam-transcoder-rest-routes.php:219 msgid "Thumbnail created successfully." msgstr "" -#: admin/class-rtgodam-transcoder-rest-routes.php:251 +#: admin/class-rtgodam-transcoder-rest-routes.php:252 msgid "Media transcoded successfully." msgstr "" -#: admin/class-rtgodam-transcoder-rest-routes.php:360 -#: inc/classes/rest-api/class-transcoding.php:268 +#: admin/class-rtgodam-transcoder-rest-routes.php:361 +#: admin/godam-transcoder-functions.php:388 +#: inc/classes/rest-api/class-transcoding.php:290 msgid "API key is required." msgstr "" -#: admin/class-rtgodam-transcoder-rest-routes.php:364 +#: admin/class-rtgodam-transcoder-rest-routes.php:365 msgid "API key not configured on the site." msgstr "" -#: admin/class-rtgodam-transcoder-rest-routes.php:368 -#: inc/classes/rest-api/class-transcoding.php:274 +#: admin/class-rtgodam-transcoder-rest-routes.php:369 +#: inc/classes/rest-api/class-transcoding.php:296 msgid "Invalid API key." msgstr "" #: admin/godam-transcoder-actions.php:49 +#: assets/src/js/media-library/views/attachment-details.js:134 msgid "Transcoded CDN URL (MPD)" msgstr "" #: admin/godam-transcoder-actions.php:58 +#: assets/src/js/media-library/views/attachment-details.js:136 msgid "The URL of the transcoded file is generated automatically and cannot be edited." msgstr "" #: admin/godam-transcoder-actions.php:64 +#: assets/src/js/media-library/views/attachment-details.js:146 msgid "Transcoded CDN URL (HLS)" msgstr "" #: admin/godam-transcoder-actions.php:73 +#: assets/src/js/media-library/views/attachment-details.js:148 msgid "The HLS URL of the transcoded file is generated automatically and cannot be edited." msgstr "" @@ -373,17 +323,17 @@ msgstr "" msgid "Transcode Status" msgstr "" -#: admin/godam-transcoder-functions.php:283 +#: admin/godam-transcoder-functions.php:284 msgid "Check Status" msgstr "" -#: admin/godam-transcoder-functions.php:300 +#: admin/godam-transcoder-functions.php:315 msgid "File is transcoded." msgstr "" #: assets/build/blocks/godam-audio/render.php:41 #: assets/src/blocks/godam-audio/render.php:41 -#: inc/classes/elementor-widgets/class-godam-audio.php:150 +#: inc/classes/elementor-widgets/class-godam-audio.php:185 msgid "Your browser does not support the audio element." msgstr "" @@ -391,9 +341,14 @@ msgstr "" #: assets/build/blocks/sureforms/blocks/recorder/render.php:24 #: assets/src/blocks/sureforms/blocks/recorder/render.php:20 #: assets/src/blocks/sureforms/blocks/recorder/render.php:24 +#: inc/classes/everest-forms/class-everest-forms-field-godam-video.php:292 +#: inc/classes/everest-forms/class-everest-forms-field-godam-video.php:454 +#: inc/classes/everest-forms/everest-forms-field-godam-record-frontend.php:21 #: inc/classes/fluentforms/fields/class-recorder-field.php:84 #: inc/classes/fluentforms/fields/class-recorder-field.php:379 #: inc/classes/gravity-forms/class-gf-field-godam-video.php:175 +#: inc/classes/ninja-forms/class-ninja-forms-field-godam-recorder.php:221 +#: inc/classes/ninja-forms/config/field-settings.php:18 #: inc/classes/wpforms/class-wpforms-field-godam-video.php:142 #: inc/classes/wpforms/wpforms-field-godam-record-frontend.php:57 msgid "Record Video" @@ -412,35 +367,35 @@ msgstr "" msgid "Maximum allowed on this server: %d MB" msgstr "" -#: godam.php:104 -#: inc/classes/class-pages.php:171 -#: inc/classes/class-pages.php:172 +#: godam.php:103 +#: inc/classes/class-pages.php:216 +#: inc/classes/class-pages.php:217 #: assets/build/blocks/godam-audio/index.js:1 #: assets/build/blocks/godam-player/index.js:3 -#: assets/src/blocks/godam-audio/edit.js:136 -#: assets/src/blocks/godam-player/edit.js:461 +#: assets/src/blocks/godam-audio/edit.js:148 +#: assets/src/blocks/godam-player/edit.js:502 msgid "Settings" msgstr "" -#: inc/classes/class-assets.php:151 +#: inc/classes/class-assets.php:155 msgid "Submitting..." msgstr "" -#: inc/classes/class-assets.php:152 +#: inc/classes/class-assets.php:156 #: inc/classes/rest-api/class-jetpack.php:665 msgid "Success!" msgstr "" -#: inc/classes/class-assets.php:153 +#: inc/classes/class-assets.php:157 #: inc/classes/rest-api/class-jetpack.php:666 msgid "Your message has been sent successfully." msgstr "" -#: inc/classes/class-assets.php:154 +#: inc/classes/class-assets.php:158 msgid "An error occurred. Please try again." msgstr "" -#: inc/classes/class-assets.php:155 +#: inc/classes/class-assets.php:159 msgid "Network error. Please try again." msgstr "" @@ -452,30 +407,30 @@ msgstr "" msgid "Invalid data." msgstr "" -#: inc/classes/class-media-library-ajax.php:404 -#: pages/media-library/App.js:158 +#: inc/classes/class-media-library-ajax.php:405 +#: pages/media-library/App.js:195 msgid "Uncategorized" msgstr "" -#: inc/classes/class-media-library-ajax.php:408 +#: inc/classes/class-media-library-ajax.php:409 msgid "All collections" msgstr "" -#: inc/classes/class-media-library-ajax.php:526 +#: inc/classes/class-media-library-ajax.php:527 msgid "Offer banner dismissed successfully." msgstr "" -#: inc/classes/class-media-library-ajax.php:571 +#: inc/classes/class-media-library-ajax.php:572 #: pages/video-editor/AttachmentPicker.jsx:42 msgid "Pay for 10 months and get 2 months free with our annual plan." msgstr "" -#: inc/classes/class-media-library-ajax.php:572 +#: inc/classes/class-media-library-ajax.php:573 #: pages/video-editor/AttachmentPicker.jsx:45 msgid "Elevate your media management, transcoding, storage, delivery and more." msgstr "" -#: inc/classes/class-media-library-ajax.php:574 +#: inc/classes/class-media-library-ajax.php:575 #: pages/video-editor/AttachmentPicker.jsx:54 #: pages/video-editor/AttachmentPicker.jsx:56 #: pages/video-editor/components/cta/ImageCTA.js:251 @@ -497,38 +452,50 @@ msgstr "" msgid "Please deactivate the %1$s plugin to ensure the %2$s plugin functions correctly." msgstr "" -#: inc/classes/class-pages.php:141 -#: inc/classes/class-pages.php:142 +#: inc/classes/class-pages.php:173 +#: inc/classes/class-pages.php:174 msgid "Dashboard" msgstr "" -#: inc/classes/class-pages.php:151 -#: inc/classes/class-pages.php:152 +#: inc/classes/class-pages.php:183 +#: inc/classes/class-pages.php:184 msgid "Video Editor" msgstr "" -#: inc/classes/class-pages.php:161 -#: inc/classes/class-pages.php:162 +#: inc/classes/class-pages.php:193 +#: inc/classes/class-pages.php:194 msgid "Analytics" msgstr "" -#: inc/classes/class-pages.php:181 -#: inc/classes/class-pages.php:182 +#: inc/classes/class-pages.php:205 +#: inc/classes/class-pages.php:206 +msgid "Tools" +msgstr "" + +#: inc/classes/class-pages.php:226 +#: inc/classes/class-pages.php:227 msgid "Help" msgstr "" -#: inc/classes/class-pages.php:442 -#: inc/classes/class-pages.php:467 +#: inc/classes/class-pages.php:239 +#: inc/classes/class-pages.php:240 +#: pages/dashboard/components/MarketingCarousel.jsx:94 +#: pages/godam/components/GoDAMFooter.jsx:31 +msgid "What's New" +msgstr "" + +#: inc/classes/class-pages.php:543 +#: inc/classes/class-pages.php:568 msgid "Your last request is still being processed. Please wait a while ..." msgstr "" -#: inc/classes/class-pages.php:443 -#: inc/classes/class-pages.php:468 +#: inc/classes/class-pages.php:544 +#: inc/classes/class-pages.php:569 msgid "Please choose a valid poll answer." msgstr "" -#: inc/classes/class-pages.php:444 -#: inc/classes/class-pages.php:469 +#: inc/classes/class-pages.php:545 +#: inc/classes/class-pages.php:570 msgid "Maximum number of choices allowed: " msgstr "" @@ -599,9 +566,9 @@ msgstr "" #: inc/classes/elementor-controls/class-godam-media.php:213 #: inc/classes/wpforms/wpforms-field-godam-record-entry-edit.php:53 #: assets/build/blocks/godam-player/index.js:4 -#: assets/src/blocks/godam-player/edit.js:526 -#: pages/godam/components/tabs/GeneralSettings/BrandImageSelector.jsx:108 -#: pages/godam/components/tabs/VideoPlayer/VideoPlayer.jsx:394 +#: assets/src/blocks/godam-player/edit.js:570 +#: pages/godam/components/tabs/GeneralSettings/BrandImageSelector.jsx:109 +#: pages/godam/components/tabs/VideoPlayer/VideoPlayer.jsx:448 #: pages/video-editor/components/appearance/Appearance.js:451 #: pages/video-editor/components/appearance/Appearance.js:529 #: pages/video-editor/components/appearance/Appearance.js:618 @@ -620,7 +587,7 @@ msgstr "" #: inc/classes/elementor-controls/class-godam-media.php:215 #: inc/classes/elementor-controls/class-godam-media.php:217 #: inc/classes/wpforms/wpforms-field-godam-record-entry-edit.php:48 -#: pages/godam/components/tabs/GeneralSettings/BrandImageSelector.jsx:98 +#: pages/godam/components/tabs/GeneralSettings/BrandImageSelector.jsx:99 #: pages/video-editor/components/appearance/Appearance.js:442 #: pages/video-editor/components/appearance/Appearance.js:520 #: pages/video-editor/components/cta/ImageCTA.js:172 @@ -649,20 +616,20 @@ msgid "Select the audio file" msgstr "" #: inc/classes/elementor-widgets/class-godam-audio.php:60 -#: inc/classes/elementor-widgets/class-godam-video.php:216 +#: inc/classes/elementor-widgets/class-godam-video.php:213 #: assets/build/blocks/godam-audio/index.js:1 #: assets/build/blocks/godam-player/index.js:1 -#: assets/src/blocks/godam-audio/edit.js:139 -#: assets/src/blocks/godam-player/edit-common-settings.js:59 +#: assets/src/blocks/godam-audio/edit.js:151 +#: assets/src/blocks/godam-player/edit-common-settings.js:81 msgid "Autoplay" msgstr "" #: inc/classes/elementor-widgets/class-godam-audio.php:72 -#: inc/classes/elementor-widgets/class-godam-video.php:228 +#: inc/classes/elementor-widgets/class-godam-video.php:225 #: assets/build/blocks/godam-audio/index.js:1 #: assets/build/blocks/godam-player/index.js:1 -#: assets/src/blocks/godam-audio/edit.js:146 -#: assets/src/blocks/godam-player/edit-common-settings.js:73 +#: assets/src/blocks/godam-audio/edit.js:158 +#: assets/src/blocks/godam-player/edit-common-settings.js:95 msgid "Loop" msgstr "" @@ -671,43 +638,43 @@ msgid "Show Caption" msgstr "" #: inc/classes/elementor-widgets/class-godam-audio.php:96 -#: inc/classes/elementor-widgets/class-godam-video.php:264 +#: inc/classes/elementor-widgets/class-godam-video.php:261 #: assets/build/blocks/godam-player/index.js:1 -#: assets/src/blocks/godam-player/edit-common-settings.js:94 +#: assets/src/blocks/godam-player/edit-common-settings.js:124 msgid "Preload" msgstr "" #: inc/classes/elementor-widgets/class-godam-audio.php:100 #: assets/build/blocks/godam-audio/index.js:1 -#: assets/src/blocks/godam-audio/edit.js:162 +#: assets/src/blocks/godam-audio/edit.js:174 msgid "Browser default" msgstr "" #: inc/classes/elementor-widgets/class-godam-audio.php:101 -#: inc/classes/elementor-widgets/class-godam-video.php:268 +#: inc/classes/elementor-widgets/class-godam-video.php:265 #: assets/build/blocks/godam-audio/index.js:1 #: assets/build/blocks/godam-player/index.js:1 -#: assets/src/blocks/godam-audio/edit.js:163 +#: assets/src/blocks/godam-audio/edit.js:175 #: assets/src/blocks/godam-player/edit-common-settings.js:9 msgid "Auto" msgstr "" #: inc/classes/elementor-widgets/class-godam-audio.php:102 #: inc/classes/elementor-widgets/class-godam-video.php:111 -#: inc/classes/elementor-widgets/class-godam-video.php:269 +#: inc/classes/elementor-widgets/class-godam-video.php:266 #: assets/build/blocks/godam-audio/index.js:1 #: assets/build/blocks/godam-player/index.js:1 -#: assets/src/blocks/godam-audio/edit.js:164 +#: assets/src/blocks/godam-audio/edit.js:176 #: assets/src/blocks/godam-player/edit-common-settings.js:10 #: assets/src/blocks/godam-player/track-uploader.js:36 msgid "Metadata" msgstr "" #: inc/classes/elementor-widgets/class-godam-audio.php:103 -#: inc/classes/elementor-widgets/class-godam-video.php:270 +#: inc/classes/elementor-widgets/class-godam-video.php:267 #: assets/build/blocks/godam-audio/index.js:1 #: assets/build/blocks/godam-player/index.js:1 -#: assets/src/blocks/godam-audio/edit.js:167 +#: assets/src/blocks/godam-audio/edit.js:179 #: assets/src/blocks/godam-player/edit-common-settings.js:11 msgctxt "Preload value" msgid "None" @@ -720,49 +687,49 @@ msgstr "" #: inc/classes/elementor-widgets/class-godam-gallery.php:44 #: assets/build/blocks/godam-gallery/index.js:1 -#: assets/src/blocks/godam-gallery/edit.js:193 +#: assets/src/blocks/godam-gallery/edit.js:194 msgid "Gallery Settings" msgstr "" #: inc/classes/elementor-widgets/class-godam-gallery.php:51 #: assets/build/blocks/godam-gallery/index.js:1 -#: assets/src/blocks/godam-gallery/edit.js:195 +#: assets/src/blocks/godam-gallery/edit.js:196 msgid "Enable Infinite Scroll" msgstr "" #: inc/classes/elementor-widgets/class-godam-gallery.php:60 #: assets/build/blocks/godam-gallery/index.js:1 -#: assets/src/blocks/godam-gallery/edit.js:202 +#: assets/src/blocks/godam-gallery/edit.js:203 msgid "Show Video Titles and Dates" msgstr "" #: inc/classes/elementor-widgets/class-godam-gallery.php:72 #: assets/build/blocks/godam-gallery/index.js:1 -#: assets/src/blocks/godam-gallery/edit.js:209 +#: assets/src/blocks/godam-gallery/edit.js:216 msgid "Layout" msgstr "" #: inc/classes/elementor-widgets/class-godam-gallery.php:76 #: assets/build/blocks/godam-gallery/index.js:1 -#: assets/src/blocks/godam-gallery/edit.js:212 +#: assets/src/blocks/godam-gallery/edit.js:219 msgid "Grid" msgstr "" #: inc/classes/elementor-widgets/class-godam-gallery.php:77 #: assets/build/blocks/godam-gallery/index.js:1 -#: assets/src/blocks/godam-gallery/edit.js:213 +#: assets/src/blocks/godam-gallery/edit.js:220 msgid "List" msgstr "" #: inc/classes/elementor-widgets/class-godam-gallery.php:85 #: assets/build/blocks/godam-gallery/index.js:1 -#: assets/src/blocks/godam-gallery/edit.js:233 +#: assets/src/blocks/godam-gallery/edit.js:240 msgid "Number of videos" msgstr "" #: inc/classes/elementor-widgets/class-godam-gallery.php:104 #: assets/build/blocks/godam-gallery/index.js:1 -#: assets/src/blocks/godam-gallery/edit.js:225 +#: assets/src/blocks/godam-gallery/edit.js:232 msgid "Number of columns" msgstr "" @@ -772,21 +739,21 @@ msgstr "" #: inc/classes/elementor-widgets/class-godam-gallery.php:130 #: assets/build/blocks/godam-gallery/index.js:1 -#: assets/src/blocks/godam-gallery/edit.js:243 +#: assets/src/blocks/godam-gallery/edit.js:250 msgid "Date" msgstr "" #: inc/classes/elementor-widgets/class-godam-gallery.php:131 #: assets/build/blocks/godam-gallery/index.js:1 -#: assets/src/blocks/godam-gallery/edit.js:95 -#: assets/src/blocks/godam-gallery/edit.js:244 +#: assets/src/blocks/godam-gallery/edit.js:96 +#: assets/src/blocks/godam-gallery/edit.js:251 msgid "Title" msgstr "" #: inc/classes/elementor-widgets/class-godam-gallery.php:132 #: inc/classes/elementor-widgets/class-godam-video.php:182 #: assets/build/blocks/godam-gallery/index.js:1 -#: assets/src/blocks/godam-gallery/edit.js:245 +#: assets/src/blocks/godam-gallery/edit.js:252 #: pages/analytics/charts.js:98 #: pages/analytics/helper.js:709 msgid "Duration" @@ -794,44 +761,44 @@ msgstr "" #: inc/classes/elementor-widgets/class-godam-gallery.php:133 #: assets/build/blocks/godam-gallery/index.js:1 -#: assets/src/blocks/godam-gallery/edit.js:246 -#: pages/dashboard/Dashboard.js:344 +#: assets/src/blocks/godam-gallery/edit.js:253 +#: pages/dashboard/Dashboard.js:311 msgid "Size" msgstr "" #: inc/classes/elementor-widgets/class-godam-gallery.php:141 #: assets/build/blocks/godam-gallery/index.js:1 -#: assets/src/blocks/godam-gallery/edit.js:251 +#: assets/src/blocks/godam-gallery/edit.js:258 msgid "Order" msgstr "" #: inc/classes/elementor-widgets/class-godam-gallery.php:145 #: assets/build/blocks/godam-gallery/index.js:1 -#: assets/src/blocks/godam-gallery/edit.js:254 +#: assets/src/blocks/godam-gallery/edit.js:261 msgid "Descending" msgstr "" #: inc/classes/elementor-widgets/class-godam-gallery.php:146 #: assets/build/blocks/godam-gallery/index.js:1 -#: assets/src/blocks/godam-gallery/edit.js:255 +#: assets/src/blocks/godam-gallery/edit.js:262 msgid "Ascending" msgstr "" #: inc/classes/elementor-widgets/class-godam-gallery.php:154 #: assets/build/blocks/godam-gallery/index.js:1 -#: assets/src/blocks/godam-gallery/edit.js:263 +#: assets/src/blocks/godam-gallery/edit.js:270 msgid "All Categories" msgstr "" #: inc/classes/elementor-widgets/class-godam-gallery.php:164 #: assets/build/blocks/godam-gallery/index.js:1 -#: assets/src/blocks/godam-gallery/edit.js:260 +#: assets/src/blocks/godam-gallery/edit.js:267 msgid "Category" msgstr "" #: inc/classes/elementor-widgets/class-godam-gallery.php:174 #: assets/build/blocks/godam-gallery/index.js:1 -#: assets/src/blocks/godam-gallery/edit.js:275 +#: assets/src/blocks/godam-gallery/edit.js:282 msgid "All Tags" msgstr "" @@ -845,67 +812,67 @@ msgstr "" #: inc/classes/elementor-widgets/class-godam-gallery.php:204 #: assets/build/blocks/godam-gallery/index.js:1 -#: assets/src/blocks/godam-gallery/edit.js:284 +#: assets/src/blocks/godam-gallery/edit.js:291 msgid "Author" msgstr "" #: inc/classes/elementor-widgets/class-godam-gallery.php:214 #: assets/build/blocks/godam-gallery/index.js:1 -#: assets/src/blocks/godam-gallery/edit.js:296 +#: assets/src/blocks/godam-gallery/edit.js:303 msgid "Date Range" msgstr "" #: inc/classes/elementor-widgets/class-godam-gallery.php:218 #: assets/build/blocks/godam-gallery/index.js:1 -#: assets/src/blocks/godam-gallery/edit.js:299 +#: assets/src/blocks/godam-gallery/edit.js:306 msgid "All Time" msgstr "" #: inc/classes/elementor-widgets/class-godam-gallery.php:219 #: assets/build/blocks/godam-gallery/index.js:1 -#: assets/src/blocks/godam-gallery/edit.js:300 +#: assets/src/blocks/godam-gallery/edit.js:307 msgid "Last 7 Days" msgstr "" #: inc/classes/elementor-widgets/class-godam-gallery.php:220 #: assets/build/blocks/godam-gallery/index.js:1 -#: assets/src/blocks/godam-gallery/edit.js:301 +#: assets/src/blocks/godam-gallery/edit.js:308 msgid "Last 30 Days" msgstr "" #: inc/classes/elementor-widgets/class-godam-gallery.php:221 #: assets/build/blocks/godam-gallery/index.js:1 -#: assets/src/blocks/godam-gallery/edit.js:302 +#: assets/src/blocks/godam-gallery/edit.js:309 msgid "Last 90 Days" msgstr "" #: inc/classes/elementor-widgets/class-godam-gallery.php:222 #: assets/build/blocks/godam-gallery/index.js:1 -#: assets/src/blocks/godam-gallery/edit.js:303 +#: assets/src/blocks/godam-gallery/edit.js:310 msgid "Custom Range" msgstr "" #: inc/classes/elementor-widgets/class-godam-gallery.php:230 #: assets/build/blocks/godam-gallery/index.js:1 -#: assets/src/blocks/godam-gallery/edit.js:319 +#: assets/src/blocks/godam-gallery/edit.js:326 msgid "Start Date" msgstr "" #: inc/classes/elementor-widgets/class-godam-gallery.php:244 #: assets/build/blocks/godam-gallery/index.js:1 -#: assets/src/blocks/godam-gallery/edit.js:346 +#: assets/src/blocks/godam-gallery/edit.js:353 msgid "End Date" msgstr "" #: inc/classes/elementor-widgets/class-godam-gallery.php:258 #: assets/build/blocks/godam-gallery/index.js:1 -#: assets/src/blocks/godam-gallery/edit.js:374 +#: assets/src/blocks/godam-gallery/edit.js:381 msgid "Include Video IDs" msgstr "" #: inc/classes/elementor-widgets/class-godam-gallery.php:260 #: assets/build/blocks/godam-gallery/index.js:1 -#: assets/src/blocks/godam-gallery/edit.js:375 +#: assets/src/blocks/godam-gallery/edit.js:382 msgid "Comma-separated list of video IDs to include" msgstr "" @@ -919,13 +886,13 @@ msgstr "" #: inc/classes/elementor-widgets/class-godam-gallery.php:279 #: assets/build/blocks/godam-gallery/index.js:1 -#: assets/src/blocks/godam-gallery/edit.js:380 +#: assets/src/blocks/godam-gallery/edit.js:387 msgid "Search" msgstr "" #: inc/classes/elementor-widgets/class-godam-gallery.php:282 #: assets/build/blocks/godam-gallery/index.js:1 -#: assets/src/blocks/godam-gallery/edit.js:381 +#: assets/src/blocks/godam-gallery/edit.js:388 msgid "Search in video titles and descriptions" msgstr "" @@ -935,7 +902,7 @@ msgid "GoDAM Video" msgstr "" #: inc/classes/elementor-widgets/class-godam-video.php:43 -#: pages/video-editor/VideoEditor.js:274 +#: pages/video-editor/VideoEditor.js:289 msgid "Player Settings" msgstr "" @@ -1025,14 +992,14 @@ msgstr "" #: inc/classes/elementor-widgets/class-godam-video.php:110 #: assets/build/blocks/godam-player/index.js:1 #: assets/src/blocks/godam-player/track-uploader.js:35 -#: pages/video-editor/VideoEditor.js:280 +#: pages/video-editor/VideoEditor.js:295 msgid "Chapters" msgstr "" #: inc/classes/elementor-widgets/class-godam-video.php:124 #: assets/build/blocks/godam-player/index.js:4 -#: assets/src/blocks/godam-player/edit.js:553 -#: assets/src/blocks/godam-player/edit.js:563 +#: assets/src/blocks/godam-player/edit.js:596 +#: assets/src/blocks/godam-player/edit.js:606 msgid "SEO Settings" msgstr "" @@ -1081,102 +1048,196 @@ msgstr "" msgid "Video Thumbnail URL" msgstr "" -#: inc/classes/elementor-widgets/class-godam-video.php:204 +#: inc/classes/elementor-widgets/class-godam-video.php:201 msgid "Is Family Friendly" msgstr "" -#: inc/classes/elementor-widgets/class-godam-video.php:206 +#: inc/classes/elementor-widgets/class-godam-video.php:203 #: assets/build/blocks/godam-player/index.js:2 #: assets/src/blocks/godam-player/components/VideoSEOModal.js:134 msgid "Is the video suitable for all audiences?" msgstr "" -#: inc/classes/elementor-widgets/class-godam-video.php:240 +#: inc/classes/elementor-widgets/class-godam-video.php:237 #: assets/build/blocks/godam-player/index.js:1 -#: assets/src/blocks/godam-player/edit-common-settings.js:79 +#: assets/src/blocks/godam-player/edit-common-settings.js:101 msgid "Muted" msgstr "" -#: inc/classes/elementor-widgets/class-godam-video.php:252 +#: inc/classes/elementor-widgets/class-godam-video.php:249 #: assets/build/blocks/godam-player/index.js:1 -#: assets/src/blocks/godam-player/edit-common-settings.js:87 +#: assets/src/blocks/godam-player/edit-common-settings.js:109 msgid "Playback controls" msgstr "" -#: inc/classes/elementor-widgets/class-godam-video.php:281 +#: inc/classes/elementor-widgets/class-godam-video.php:278 #: assets/build/blocks/godam-player/index.js:3 -#: assets/src/blocks/godam-player/edit.js:490 +#: assets/src/blocks/godam-player/edit.js:534 +#: assets/src/js/media-library/views/attachment-detail-two-column.js:314 msgid "Video Thumbnail" msgstr "" -#: inc/classes/elementor-widgets/class-godam-video.php:284 +#: inc/classes/elementor-widgets/class-godam-video.php:281 msgid "Select the video thumbnail." msgstr "" -#: inc/classes/elementor-widgets/class-godam-video.php:295 +#: inc/classes/elementor-widgets/class-godam-video.php:292 msgid "Show caption" msgstr "" -#: inc/classes/elementor-widgets/class-godam-video.php:307 +#: inc/classes/elementor-widgets/class-godam-video.php:304 msgid "Caption" msgstr "" -#: inc/classes/fluentforms/class-form-submit.php:61 -#: inc/classes/fluentforms/class-form-submit.php:94 -msgid "Fluentforms" +#: inc/classes/everest-forms/class-everest-forms-field-godam-video.php:45 +#: inc/classes/gravity-forms/class-gf-field-godam-video.php:35 +#: inc/classes/wpforms/class-wpforms-field-godam-video.php:30 +msgid "GoDAM Record" msgstr "" -#: inc/classes/fluentforms/class-form-submit.php:116 -#: inc/classes/gravity-forms/class-init.php:311 -#: inc/classes/sureforms/class-form-submit.php:254 -#: inc/classes/wpforms/class-wpforms-integration.php:175 -msgid "Transcoding data not set" +#: inc/classes/everest-forms/class-everest-forms-field-godam-video.php:213 +#: inc/classes/fluentforms/fields/class-recorder-field.php:869 +#: inc/classes/gravity-forms/class-gf-field-godam-video.php:327 +#: inc/classes/sureforms/class-form-submit.php:341 +#: inc/classes/wpforms/wpforms-field-godam-record-entry-view.php:39 +msgid "Video saved and transcoded successfully on GoDAM" msgstr "" -#: inc/classes/fluentforms/fields/class-recorder-field.php:83 -msgid "Godam Recorder" +#: inc/classes/everest-forms/class-everest-forms-field-godam-video.php:232 +#: inc/classes/fluentforms/fields/class-recorder-field.php:882 +#: inc/classes/gravity-forms/class-gf-field-godam-video.php:307 +#: inc/classes/sureforms/class-form-submit.php:351 +msgid "Click to view" +msgstr "" + +#. translators: %s is the max file size in MB +#: inc/classes/everest-forms/class-everest-forms-field-godam-video.php:304 +#, php-format +msgid "Max file size: %s MB" msgstr "" +#: inc/classes/everest-forms/class-everest-forms-field-godam-video.php:382 #: inc/classes/fluentforms/fields/class-recorder-field.php:274 -#: inc/classes/gravity-forms/class-init.php:173 +#: inc/classes/gravity-forms/class-init.php:174 #: inc/classes/wpforms/class-wpforms-field-godam-video.php:186 #: assets/build/blocks/sureforms/blocks/recorder/index.js:1 #: assets/src/blocks/sureforms/blocks/recorder/edit.js:196 msgid "Choose file selector" msgstr "" -#: inc/classes/fluentforms/fields/class-recorder-field.php:278 -#: inc/classes/gravity-forms/class-init.php:182 -#: assets/build/blocks/sureforms/blocks/recorder/index.js:1 -#: assets/src/blocks/sureforms/blocks/recorder/edit.js:212 -msgid "Local files" +#: inc/classes/everest-forms/class-everest-forms-field-godam-video.php:383 +#: inc/classes/wpforms/class-wpforms-field-godam-video.php:187 +msgid "List of file selectors" +msgstr "" + +#: inc/classes/everest-forms/class-everest-forms-field-godam-video.php:389 +#: inc/classes/ninja-forms/config/field-settings.php:36 +#: inc/classes/wpforms/class-wpforms-field-godam-video.php:193 +msgid "Local Files" msgstr "" +#: inc/classes/everest-forms/class-everest-forms-field-godam-video.php:390 #: inc/classes/fluentforms/fields/class-recorder-field.php:282 -#: inc/classes/gravity-forms/class-init.php:189 +#: inc/classes/gravity-forms/class-init.php:190 +#: inc/classes/ninja-forms/config/field-settings.php:52 #: inc/classes/wpforms/class-wpforms-field-godam-video.php:194 #: assets/build/blocks/sureforms/blocks/recorder/index.js:1 #: assets/src/blocks/sureforms/blocks/recorder/edit.js:218 msgid "Webcam" msgstr "" +#: inc/classes/everest-forms/class-everest-forms-field-godam-video.php:391 #: inc/classes/fluentforms/fields/class-recorder-field.php:286 -#: inc/classes/gravity-forms/class-init.php:196 +#: inc/classes/gravity-forms/class-init.php:197 #: inc/classes/wpforms/class-wpforms-field-godam-video.php:195 #: assets/build/blocks/sureforms/blocks/recorder/index.js:1 #: assets/src/blocks/sureforms/blocks/recorder/edit.js:224 msgid "Screencast" msgstr "" +#: inc/classes/everest-forms/class-everest-forms-field-godam-video.php:440 +msgid "Record Button Text" +msgstr "" + +#: inc/classes/everest-forms/class-everest-forms-field-godam-video.php:441 +#: inc/classes/everest-forms/class-everest-forms-field-godam-video.php:456 +msgid "Text for the record video button" +msgstr "" + +#: inc/classes/everest-forms/class-everest-forms-field-godam-video.php:455 +msgid "Button Text" +msgstr "" + +#: inc/classes/everest-forms/class-everest-forms-integration.php:195 +#: inc/classes/everest-forms/class-everest-forms-integration.php:243 +#: pages/video-editor/components/LayerSelector.jsx:126 +#: pages/video-editor/components/LayerSelector.jsx:135 +#: pages/video-editor/components/SidebarLayers.js:93 +msgid "Everest Forms" +msgstr "" + +#: inc/classes/everest-forms/class-everest-forms-integration.php:256 +#: inc/classes/fluentforms/class-form-submit.php:116 +#: inc/classes/gravity-forms/class-init.php:312 +#: inc/classes/ninja-forms/class-ninja-forms-field-godam-recorder.php:589 +#: inc/classes/sureforms/class-form-submit.php:254 +#: inc/classes/wpforms/class-wpforms-integration.php:175 +msgid "Transcoding data not set" +msgstr "" + +#: inc/classes/everest-forms/class-everest-forms-rest-api.php:57 +msgid "The ID of the Everest Forms Form." +msgstr "" + +#: inc/classes/everest-forms/class-everest-forms-rest-api.php:62 +msgid "The theme to be applied to the Everest Forms Form." +msgstr "" + +#: inc/classes/everest-forms/class-everest-forms-rest-api.php:86 +#: inc/classes/everest-forms/class-everest-forms-rest-api.php:142 +msgid "Everest Forms plugin is not active." +msgstr "" + +#: inc/classes/everest-forms/class-everest-forms-rest-api.php:152 +#: inc/classes/metform/class-metform-rest-api.php:145 +#: inc/classes/ninja-forms/class-ninja-forms-rest-api.php:121 +#: inc/classes/rest-api/class-cf7.php:70 +#: inc/classes/rest-api/class-fluent-forms.php:106 +#: inc/classes/rest-api/class-gf.php:116 +#: inc/classes/rest-api/class-jetpack.php:291 +#: inc/classes/rest-api/class-sureforms.php:163 +#: inc/classes/rest-api/class-wpforms.php:139 +msgid "Invalid form ID." +msgstr "" + #. Translators: %s will be replaced with the maximum file upload size allowed on the server (e.g., "300MB"). +#: inc/classes/everest-forms/everest-forms-field-godam-record-frontend.php:72 #: inc/classes/fluentforms/fields/class-recorder-field.php:447 +#: inc/classes/ninja-forms/class-ninja-forms-field-godam-recorder.php:256 #: assets/build/blocks/sureforms/blocks/recorder/index.js:4 #: assets/src/blocks/sureforms/blocks/recorder/edit.js:241 #, php-format,js-format msgid "Maximum allowed on this server: %s MB" msgstr "" +#: inc/classes/fluentforms/class-form-submit.php:61 +#: inc/classes/fluentforms/class-form-submit.php:94 +msgid "Fluentforms" +msgstr "" + +#: inc/classes/fluentforms/fields/class-recorder-field.php:83 +msgid "Godam Recorder" +msgstr "" + +#: inc/classes/fluentforms/fields/class-recorder-field.php:278 +#: inc/classes/gravity-forms/class-init.php:183 +#: assets/build/blocks/sureforms/blocks/recorder/index.js:1 +#: assets/src/blocks/sureforms/blocks/recorder/edit.js:212 +msgid "Local files" +msgstr "" + #: inc/classes/fluentforms/fields/class-recorder-field.php:562 +#: inc/classes/ninja-forms/class-ninja-forms-field-godam-recorder.php:396 msgid "Nonce is not valid" msgstr "" @@ -1192,24 +1253,6 @@ msgstr "" msgid "Error in file." msgstr "" -#: inc/classes/fluentforms/fields/class-recorder-field.php:869 -#: inc/classes/gravity-forms/class-gf-field-godam-video.php:327 -#: inc/classes/sureforms/class-form-submit.php:341 -#: inc/classes/wpforms/wpforms-field-godam-record-entry-view.php:39 -msgid "Video saved and transcoded successfully on GoDAM" -msgstr "" - -#: inc/classes/fluentforms/fields/class-recorder-field.php:882 -#: inc/classes/gravity-forms/class-gf-field-godam-video.php:307 -#: inc/classes/sureforms/class-form-submit.php:351 -msgid "Click to view" -msgstr "" - -#: inc/classes/gravity-forms/class-gf-field-godam-video.php:35 -#: inc/classes/wpforms/class-wpforms-field-godam-video.php:30 -msgid "GoDAM Record" -msgstr "" - #: inc/classes/gravity-forms/class-gf-field-godam-video.php:44 msgid "Allows users to record webcam video" msgstr "" @@ -1247,35 +1290,43 @@ msgctxt "GF entry detail page" msgid "URL" msgstr "" -#: inc/classes/gravity-forms/class-init.php:137 +#: inc/classes/gravity-forms/class-init.php:138 msgid "Video file selector" msgstr "" -#: inc/classes/gravity-forms/class-init.php:137 +#: inc/classes/gravity-forms/class-init.php:138 msgid "Select the file selection options from where user can upload/record video" msgstr "" -#: inc/classes/gravity-forms/class-init.php:138 +#: inc/classes/gravity-forms/class-init.php:139 msgid "Save submitted video on GoDAM storage" msgstr "" -#: inc/classes/gravity-forms/class-init.php:156 +#: inc/classes/gravity-forms/class-init.php:157 msgid "Save submitted video on GoDAM" msgstr "" -#: inc/classes/gravity-forms/class-init.php:164 +#: inc/classes/gravity-forms/class-init.php:165 msgid "Sync video" msgstr "" -#: inc/classes/gravity-forms/class-init.php:168 +#: inc/classes/gravity-forms/class-init.php:169 msgid "You need a GoDAM paid plan to use this feature" msgstr "" -#: inc/classes/gravity-forms/class-init.php:289 +#: inc/classes/gravity-forms/class-init.php:290 #: inc/helpers/custom-functions.php:458 msgid "Gravity forms" msgstr "" +#: inc/classes/lifter-lms/class-llms-av-integration-godam.php:117 +msgid "Videos: GoDAM" +msgstr "" + +#: inc/classes/lifter-lms/class-llms-av-integration-godam.php:118 +msgid "Advanced LifterLMS lesson video features for GoDAM videos." +msgstr "" + #: inc/classes/media-library/class-media-edit-enhancements.php:75 msgid "Your browser does not support the video tag." msgstr "" @@ -1313,33 +1364,124 @@ msgstr "" msgid "Media folder not found." msgstr "" -#: inc/classes/post-types/class-godam-video.php:52 +#: inc/classes/metform/class-metform-rest-api.php:57 +msgid "The ID of the Metform." +msgstr "" + +#: inc/classes/metform/class-metform-rest-api.php:81 +#: inc/classes/metform/class-metform-rest-api.php:137 +msgid "Metform plugin is not active." +msgstr "" + +#: inc/classes/metform/class-metform-rest-api.php:109 +msgid "No MetForm on the site. Please create one" +msgstr "" + +#. translators: %d is the Metform ID +#: inc/classes/metform/class-metform-rest-api.php:152 +#, php-format +msgid "Unable to find the Metform with ID:%d" +msgstr "" + +#: inc/classes/ninja-forms/class-ninja-forms-field-godam-recorder.php:121 +msgid "GoDAM Recorder" +msgstr "" + +#: inc/classes/ninja-forms/class-ninja-forms-field-godam-recorder.php:359 +msgid "File exceeds maximum file size. File must be under %nMB." +msgstr "" + +#: inc/classes/ninja-forms/class-ninja-forms-field-godam-recorder.php:402 +msgid "Ninja Forms is not active" +msgstr "" + +#: inc/classes/ninja-forms/class-ninja-forms-field-godam-recorder.php:408 +msgid "Field not found" +msgstr "" + +#: inc/classes/ninja-forms/class-ninja-forms-field-godam-recorder.php:414 +msgid "No files uploaded" +msgstr "" + +#. Translators: %s: Maximum allowed file size in MB. +#: inc/classes/ninja-forms/class-ninja-forms-field-godam-recorder.php:428 +#, php-format +msgid "File exceeds maximum file size. File must be under %sMB." +msgstr "" + +#: inc/classes/ninja-forms/class-ninja-forms-field-godam-recorder.php:526 +#: inc/classes/ninja-forms/class-ninja-forms-field-godam-recorder.php:567 +#: pages/video-editor/components/LayerSelector.jsx:139 +#: pages/video-editor/components/LayerSelector.jsx:148 +#: pages/video-editor/components/SidebarLayers.js:99 +msgid "Ninja Forms" +msgstr "" + +#: inc/classes/ninja-forms/class-ninja-forms-rest-api.php:58 +msgid "The ID of the Ninja Form." +msgstr "" + +#: inc/classes/ninja-forms/class-ninja-forms-rest-api.php:82 +#: inc/classes/ninja-forms/class-ninja-forms-rest-api.php:113 +msgid "Ninja Forms plugin is not active." +msgstr "" + +#. translators: %d is the Ninja Form ID +#: inc/classes/ninja-forms/class-ninja-forms-rest-api.php:130 +#, php-format +msgid "Unable to find the Ninja Form with ID:%d" +msgstr "" + +#: inc/classes/ninja-forms/config/field-settings.php:19 +msgid "Record Video Button Text" +msgstr "" + +#: inc/classes/ninja-forms/config/field-settings.php:22 +msgid "Button text for recording video." +msgstr "" + +#: inc/classes/ninja-forms/config/field-settings.php:27 +msgid "Maximum File Size (MB)" +msgstr "" + +#: inc/classes/ninja-forms/config/field-settings.php:31 +msgid "Maximum size of a file that can be uploaded." +msgstr "" + +#: inc/classes/ninja-forms/config/field-settings.php:44 +msgid "Screen Capture" +msgstr "" + +#: inc/classes/post-types/class-godam-video.php:153 msgctxt "Post Type General Name" msgid "GoDAM Videos" msgstr "" -#: inc/classes/post-types/class-godam-video.php:53 +#: inc/classes/post-types/class-godam-video.php:154 msgctxt "Post Type Singular Name" msgid "GoDAM Video" msgstr "" -#: inc/classes/post-types/class-godam-video.php:54 +#: inc/classes/post-types/class-godam-video.php:155 msgid "Video Archives" msgstr "" -#: inc/classes/post-types/class-godam-video.php:77 +#: inc/classes/post-types/class-godam-video.php:178 #: assets/build/blocks/godam-gallery/index.js:1 -#: assets/src/blocks/godam-gallery/edit.js:90 -#: assets/src/blocks/godam-gallery/edit.js:110 +#: assets/build/blocks/godam-player/index.js:6 +#: assets/src/blocks/godam-gallery/edit.js:91 +#: assets/src/blocks/godam-gallery/edit.js:111 +#: assets/src/blocks/godam-player/edit.js:687 +#: assets/src/js/godam-player/engagement.js:1064 msgid "GoDAM Video" msgstr "" -#: inc/classes/post-types/class-godam-video.php:78 +#: inc/classes/post-types/class-godam-video.php:179 msgid "GoDAM Video posts for theme template support" msgstr "" -#: inc/classes/post-types/class-godam-video.php:177 -#: inc/classes/post-types/class-godam-video.php:309 +#: inc/classes/post-types/class-godam-video.php:263 +#: inc/classes/post-types/class-godam-video.php:378 msgid "Untitled Video" msgstr "" @@ -1348,11 +1490,15 @@ msgid "The Video ID for fetching analytics data." msgstr "" #: inc/classes/rest-api/class-analytics.php:55 +#: inc/classes/rest-api/class-engagement.php:60 +#: inc/classes/rest-api/class-engagement.php:94 +#: inc/classes/rest-api/class-engagement.php:137 msgid "The Site URL associated with the video." msgstr "" #: inc/classes/rest-api/class-analytics.php:176 #: inc/classes/rest-api/class-analytics.php:378 +#: inc/classes/rest-api/class-engagement.php:365 msgid "Missing API key." msgstr "" @@ -1390,73 +1536,135 @@ msgstr "" msgid "Contact Form 7 plugin is not active." msgstr "" -#: inc/classes/rest-api/class-cf7.php:70 -#: inc/classes/rest-api/class-everest-forms.php:151 -#: inc/classes/rest-api/class-fluent-forms.php:106 -#: inc/classes/rest-api/class-gf.php:116 -#: inc/classes/rest-api/class-jetpack.php:291 -#: inc/classes/rest-api/class-sureforms.php:163 -#: inc/classes/rest-api/class-wpforms.php:139 -msgid "Invalid form ID." +#: inc/classes/rest-api/class-engagement.php:48 +#: inc/classes/rest-api/class-engagement.php:82 +#: inc/classes/rest-api/class-engagement.php:125 +#: inc/classes/rest-api/class-engagement.php:188 +msgid "The ID of the video." msgstr "" -#: inc/classes/rest-api/class-everest-forms.php:56 -msgid "The ID of the Everest Forms Form." +#: inc/classes/rest-api/class-engagement.php:104 +msgid "The like status (like or unlike)." msgstr "" -#: inc/classes/rest-api/class-everest-forms.php:61 -msgid "The theme to be applied to the Everest Forms Form." +#: inc/classes/rest-api/class-engagement.php:145 +#: inc/classes/rest-api/class-engagement.php:198 +msgid "The ID of the parent comment." msgstr "" -#: inc/classes/rest-api/class-everest-forms.php:85 -#: inc/classes/rest-api/class-everest-forms.php:141 -msgid "Everest Forms plugin is not active." +#: inc/classes/rest-api/class-engagement.php:157 +msgid "The comment text" msgstr "" -#: inc/classes/rest-api/class-fluent-forms.php:48 -msgid "The ID of the Fluent Form." +#: inc/classes/rest-api/class-engagement.php:167 +msgid "The comment type if it is new OR edit" msgstr "" -#: inc/classes/rest-api/class-fluent-forms.php:69 -#: inc/classes/rest-api/class-fluent-forms.php:99 -msgid "Fluent Forms plugin is not active." +#: inc/classes/rest-api/class-engagement.php:208 +msgid "The type of deletion (soft or hard)." msgstr "" -#: inc/classes/rest-api/class-forminator-forms.php:82 -msgid "The ID of the Forminator Form." +#: inc/classes/rest-api/class-engagement.php:233 +msgid "The guest user email" msgstr "" -#: inc/classes/rest-api/class-forminator-forms.php:106 -#: inc/classes/rest-api/class-forminator-forms.php:155 -msgid "Forminator plugin is not active." +#: inc/classes/rest-api/class-engagement.php:312 +msgid "Unable to reach server." msgstr "" -#: inc/classes/rest-api/class-forminator-forms.php:139 -msgid "Error retrieving Forminator Forms." +#: inc/classes/rest-api/class-engagement.php:322 +msgid "Unexpected error from server." msgstr "" -#: inc/classes/rest-api/class-forminator-forms.php:160 -msgid "Invalid Forminator Form ID." +#: inc/classes/rest-api/class-engagement.php:481 +msgid "Failed to update likes." msgstr "" -#: inc/classes/rest-api/class-forminator-forms.php:165 -msgid "Error retrieving Forminator Form." +#: inc/classes/rest-api/class-engagement.php:591 +#: inc/classes/rest-api/class-engagement.php:685 +msgid "Failed to update comment." msgstr "" -#: inc/classes/rest-api/class-gf.php:48 -msgid "The ID of the Gravity Form." +#: inc/classes/rest-api/class-engagement.php:835 +msgid "Today" msgstr "" -#: inc/classes/rest-api/class-gf.php:54 -msgid "The theme to be applied to the Gravity Form." +#: inc/classes/rest-api/class-engagement.php:837 +msgid "Yesterday" msgstr "" -#: inc/classes/rest-api/class-gf.php:76 -#: inc/classes/rest-api/class-gf.php:108 -msgid "Gravity Forms plugin is not active." +#: inc/classes/rest-api/class-engagement.php:839 +msgid " days ago" msgstr "" -#: inc/classes/rest-api/class-jetpack.php:91 +#: inc/classes/rest-api/class-engagement.php:867 +msgid "Invalid guest user email." +msgstr "" + +#: inc/classes/rest-api/class-engagement.php:879 +msgid "Guest" +msgstr "" + +#: inc/classes/rest-api/class-engagement.php:886 +msgid "Guest user email saved successfully." +msgstr "" + +#. translators: 1: Parameter. +#: inc/classes/rest-api/class-engagement.php:943 +#, php-format +msgid "%1$s is invalid." +msgstr "" + +#. translators: 1: Parameter. +#: inc/classes/rest-api/class-engagement.php:953 +#, php-format +msgid "%1$s is empty." +msgstr "" + +#: inc/classes/rest-api/class-fluent-forms.php:48 +msgid "The ID of the Fluent Form." +msgstr "" + +#: inc/classes/rest-api/class-fluent-forms.php:69 +#: inc/classes/rest-api/class-fluent-forms.php:99 +msgid "Fluent Forms plugin is not active." +msgstr "" + +#: inc/classes/rest-api/class-forminator-forms.php:82 +msgid "The ID of the Forminator Form." +msgstr "" + +#: inc/classes/rest-api/class-forminator-forms.php:106 +#: inc/classes/rest-api/class-forminator-forms.php:155 +msgid "Forminator plugin is not active." +msgstr "" + +#: inc/classes/rest-api/class-forminator-forms.php:139 +msgid "Error retrieving Forminator Forms." +msgstr "" + +#: inc/classes/rest-api/class-forminator-forms.php:160 +msgid "Invalid Forminator Form ID." +msgstr "" + +#: inc/classes/rest-api/class-forminator-forms.php:165 +msgid "Error retrieving Forminator Form." +msgstr "" + +#: inc/classes/rest-api/class-gf.php:48 +msgid "The ID of the Gravity Form." +msgstr "" + +#: inc/classes/rest-api/class-gf.php:54 +msgid "The theme to be applied to the Gravity Form." +msgstr "" + +#: inc/classes/rest-api/class-gf.php:76 +#: inc/classes/rest-api/class-gf.php:108 +msgid "Gravity Forms plugin is not active." +msgstr "" + +#: inc/classes/rest-api/class-jetpack.php:91 msgid "The ID of the Jetpack Form." msgstr "" @@ -1555,239 +1763,282 @@ msgid "Attachment URL to set as the thumbnail." msgstr "" #: inc/classes/rest-api/class-media-library.php:114 +#: inc/classes/rest-api/class-media-library.php:132 +#: inc/classes/rest-api/class-media-library.php:155 msgid "Attachment ID to get video thumbnail for." msgstr "" -#: inc/classes/rest-api/class-media-library.php:132 +#: inc/classes/rest-api/class-media-library.php:137 +msgid "URL of custom thumbnail." +msgstr "" + +#: inc/classes/rest-api/class-media-library.php:160 +msgid "Attachment URL of custom thumbnail." +msgstr "" + +#: inc/classes/rest-api/class-media-library.php:178 msgid "ID of the folder to create a ZIP file for." msgstr "" -#: inc/classes/rest-api/class-media-library.php:151 +#: inc/classes/rest-api/class-media-library.php:197 msgid "Array of folder IDs to delete." msgstr "" -#: inc/classes/rest-api/class-media-library.php:170 +#: inc/classes/rest-api/class-media-library.php:216 msgid "Array of folder IDs to update lock status for." msgstr "" -#: inc/classes/rest-api/class-media-library.php:175 +#: inc/classes/rest-api/class-media-library.php:221 msgid "The desired lock status (true for locked, false for unlocked)." msgstr "" -#: inc/classes/rest-api/class-media-library.php:194 +#: inc/classes/rest-api/class-media-library.php:240 msgid "Array of folder IDs to update bookmark status for." msgstr "" -#: inc/classes/rest-api/class-media-library.php:199 +#: inc/classes/rest-api/class-media-library.php:245 msgid "The desired bookmark status (true for bookmarked, false for unbookmarked)." msgstr "" -#: inc/classes/rest-api/class-media-library.php:280 +#: inc/classes/rest-api/class-media-library.php:326 msgid "Failed to remove folder from the attachments." msgstr "" -#: inc/classes/rest-api/class-media-library.php:287 +#: inc/classes/rest-api/class-media-library.php:333 msgid "Attachments successfully removed from the folder." msgstr "" -#: inc/classes/rest-api/class-media-library.php:295 -#: inc/classes/rest-api/class-media-library.php:546 +#: inc/classes/rest-api/class-media-library.php:341 +#: inc/classes/rest-api/class-media-library.php:795 msgid "Invalid folder term ID." msgstr "" -#: inc/classes/rest-api/class-media-library.php:300 +#: inc/classes/rest-api/class-media-library.php:346 msgid "Invalid attachment ID." msgstr "" -#: inc/classes/rest-api/class-media-library.php:306 +#: inc/classes/rest-api/class-media-library.php:352 msgid "Failed to associate attachments with the folder." msgstr "" -#: inc/classes/rest-api/class-media-library.php:313 +#: inc/classes/rest-api/class-media-library.php:359 msgid "Attachments successfully associated with the folder." msgstr "" -#: inc/classes/rest-api/class-media-library.php:328 +#: inc/classes/rest-api/class-media-library.php:374 msgid "Invalid taxonomy." msgstr "" -#: inc/classes/rest-api/class-media-library.php:356 +#: inc/classes/rest-api/class-media-library.php:402 msgid "Image file not found." msgstr "" -#: inc/classes/rest-api/class-media-library.php:363 +#: inc/classes/rest-api/class-media-library.php:409 msgid "No EXIF data found." msgstr "" -#: inc/classes/rest-api/class-media-library.php:429 -#: inc/classes/rest-api/class-media-library.php:506 +#: inc/classes/rest-api/class-media-library.php:475 +#: inc/classes/rest-api/class-media-library.php:640 +#: inc/classes/rest-api/class-media-library.php:698 +#: inc/classes/rest-api/class-media-library.php:755 msgid "Attachment is not a video." msgstr "" -#: inc/classes/rest-api/class-media-library.php:435 -msgid "No thumbnails found." +#: inc/classes/rest-api/class-media-library.php:505 +msgid "Failed to fetch thumbnails from GoDAM." msgstr "" +#. translators: %s is the HTTP status code from the GoDAM API response. #: inc/classes/rest-api/class-media-library.php:511 +#: inc/classes/rest-api/class-media-library.php:1155 +#, php-format +msgid "GoDAM API returned HTTP status: %s" +msgstr "" + +#: inc/classes/rest-api/class-media-library.php:516 +msgid "Invalid JSON response from GoDAM API." +msgstr "" + +#: inc/classes/rest-api/class-media-library.php:524 +#: inc/classes/rest-api/class-media-library.php:544 +msgid "No thumbnails found." +msgstr "" + +#: inc/classes/rest-api/class-media-library.php:654 +msgid "Only 3 custom thumbnails are allowed per video." +msgstr "" + +#: inc/classes/rest-api/class-media-library.php:705 +msgid "Custom thumbnail not found." +msgstr "" + +#: inc/classes/rest-api/class-media-library.php:717 +#: inc/classes/rest-api/class-media-library.php:734 +msgid "Custom video thumbnail removed successfully." +msgstr "" + +#: inc/classes/rest-api/class-media-library.php:760 msgid "Invalid thumbnail URL." msgstr "" -#: inc/classes/rest-api/class-media-library.php:520 +#: inc/classes/rest-api/class-media-library.php:769 msgid "Video thumbnail successfully set." msgstr "" -#: inc/classes/rest-api/class-media-library.php:539 +#: inc/classes/rest-api/class-media-library.php:788 msgid "Invalid folder ID." msgstr "" -#: inc/classes/rest-api/class-media-library.php:558 +#: inc/classes/rest-api/class-media-library.php:807 msgid "ZIP file created successfully." msgstr "" -#: inc/classes/rest-api/class-media-library.php:576 -#: inc/classes/rest-api/class-media-library.php:695 -#: inc/classes/rest-api/class-media-library.php:753 +#: inc/classes/rest-api/class-media-library.php:827 +msgid "You do not have permission to delete folders." +msgstr "" + +#: inc/classes/rest-api/class-media-library.php:833 +#: inc/classes/rest-api/class-media-library.php:960 +#: inc/classes/rest-api/class-media-library.php:1018 msgid "No folder IDs provided or invalid format." msgstr "" #. translators: %s is the invalid folder ID. -#: inc/classes/rest-api/class-media-library.php:585 -#: inc/classes/rest-api/class-media-library.php:654 +#: inc/classes/rest-api/class-media-library.php:842 +#: inc/classes/rest-api/class-media-library.php:911 #, php-format msgid "Invalid folder ID: %s" msgstr "" #. translators: %s is the invalid folder ID. -#: inc/classes/rest-api/class-media-library.php:593 -#: inc/classes/rest-api/class-media-library.php:662 +#: inc/classes/rest-api/class-media-library.php:850 +#: inc/classes/rest-api/class-media-library.php:919 #, php-format msgid "Folder ID %s not found or invalid." msgstr "" #. translators: %s is the invalid folder ID where delete failed. -#: inc/classes/rest-api/class-media-library.php:601 +#: inc/classes/rest-api/class-media-library.php:858 #, php-format msgid "Failed to delete folder %s" msgstr "" #. translators: %s is the ID of folder not found. -#: inc/classes/rest-api/class-media-library.php:604 +#: inc/classes/rest-api/class-media-library.php:861 #, php-format msgid "Folder ID %s not found during deletion attempt." msgstr "" #. translators: %s is the invalid folder ID. -#: inc/classes/rest-api/class-media-library.php:607 +#: inc/classes/rest-api/class-media-library.php:864 #, php-format msgid "Folder ID %s cannot be deleted (possibly uncategorized or default term)." msgstr "" #. translators: %d is the number of folders deleted. -#: inc/classes/rest-api/class-media-library.php:618 +#: inc/classes/rest-api/class-media-library.php:875 #, php-format msgid "%d folder(s) deleted successfully." msgstr "" #. translators: %1$d is the number of folders deleted, %2$s are the errors. -#: inc/classes/rest-api/class-media-library.php:626 +#: inc/classes/rest-api/class-media-library.php:883 #, php-format msgid "Error deleting some folders. Deleted: %1$d. Errors: %2$s" msgstr "" -#: inc/classes/rest-api/class-media-library.php:633 +#: inc/classes/rest-api/class-media-library.php:890 msgid "No folders were deleted." msgstr "" +#: inc/classes/rest-api/class-media-library.php:953 +msgid "You do not have permission to lock or unlock folders." +msgstr "" + #. translators: %d number of folders. -#: inc/classes/rest-api/class-media-library.php:707 +#: inc/classes/rest-api/class-media-library.php:972 #, php-format msgid "%d folder(s) locked successfully." msgstr "" #. translators: %d number of folders. -#: inc/classes/rest-api/class-media-library.php:709 +#: inc/classes/rest-api/class-media-library.php:974 #, php-format msgid "%d folder(s) unlocked successfully." msgstr "" #. translators: %d number of folders. -#: inc/classes/rest-api/class-media-library.php:723 +#: inc/classes/rest-api/class-media-library.php:988 #, php-format msgid "Some folders locked, but issues occurred with others. Locked: %d." msgstr "" #. translators: %d number of folders. -#: inc/classes/rest-api/class-media-library.php:725 +#: inc/classes/rest-api/class-media-library.php:990 #, php-format msgid "Some folders unlocked, but issues occurred with others. Unlocked: %d." msgstr "" -#: inc/classes/rest-api/class-media-library.php:736 +#: inc/classes/rest-api/class-media-library.php:1001 msgid "No folders were updated for lock status." msgstr "" #. translators: %d number of folders. -#: inc/classes/rest-api/class-media-library.php:765 +#: inc/classes/rest-api/class-media-library.php:1030 #, php-format msgid "%d folder(s) bookmarked successfully." msgstr "" #. translators: %d number of folders. -#: inc/classes/rest-api/class-media-library.php:767 +#: inc/classes/rest-api/class-media-library.php:1032 #, php-format msgid "%d folder(s) unbookmarked successfully." msgstr "" #. translators: %d number of folders. -#: inc/classes/rest-api/class-media-library.php:781 +#: inc/classes/rest-api/class-media-library.php:1046 #, php-format msgid "Some folders bookmarked, but issues occurred with others. Bookmarked: %d." msgstr "" #. translators: %d number of folders. -#: inc/classes/rest-api/class-media-library.php:783 +#: inc/classes/rest-api/class-media-library.php:1048 #, php-format msgid "Some folders unbookmarked, but issues occurred with others. Unbookmarked: %d." msgstr "" -#: inc/classes/rest-api/class-media-library.php:794 +#: inc/classes/rest-api/class-media-library.php:1059 msgid "No folders were updated for bookmark status." msgstr "" #. translators: %s is the error message from the GoDAM API request. -#: inc/classes/rest-api/class-media-library.php:875 +#: inc/classes/rest-api/class-media-library.php:1140 #, php-format msgid "GoDAM API request failed: %s" msgstr "" -#. translators: %s is the HTTP status code from the GoDAM API response. -#: inc/classes/rest-api/class-media-library.php:890 -#, php-format -msgid "GoDAM API returned HTTP status: %s" -msgstr "" - -#: inc/classes/rest-api/class-media-library.php:903 +#: inc/classes/rest-api/class-media-library.php:1168 msgid "Unexpected API response format or no files found." msgstr "" -#: inc/classes/rest-api/class-media-library.php:932 +#: inc/classes/rest-api/class-media-library.php:1197 msgid "Filtered GoDAM files by MIME type." msgstr "" -#: inc/classes/rest-api/class-media-library.php:959 +#: inc/classes/rest-api/class-media-library.php:1224 msgid "Required fields are missing." msgstr "" -#: inc/classes/rest-api/class-media-library.php:973 -#: inc/classes/rest-api/class-media-library.php:999 +#: inc/classes/rest-api/class-media-library.php:1238 +#: inc/classes/rest-api/class-media-library.php:1264 msgid "Attachment already exists" msgstr "" -#: inc/classes/rest-api/class-media-library.php:1043 +#: inc/classes/rest-api/class-media-library.php:1310 msgid "Attachment created" msgstr "" -#: inc/classes/rest-api/class-media-library.php:1107 +#: inc/classes/rest-api/class-media-library.php:1374 msgid "A Folder ID is required" msgstr "" @@ -1861,50 +2112,164 @@ msgstr "" msgid "The array of attachment IDs." msgstr "" -#: inc/classes/rest-api/class-transcoding.php:117 +#: inc/classes/rest-api/class-transcoding.php:139 msgid "Attachment not found." msgstr "" -#: inc/classes/rest-api/class-transcoding.php:135 +#: inc/classes/rest-api/class-transcoding.php:157 msgid "Transcoding status updated successfully." msgstr "" -#: inc/classes/rest-api/class-transcoding.php:176 +#: inc/classes/rest-api/class-transcoding.php:198 msgid "Video has not been transcoded." msgstr "" -#: inc/classes/rest-api/class-transcoding.php:186 +#: inc/classes/rest-api/class-transcoding.php:208 msgid "Transcoding has not started." msgstr "" -#: inc/classes/rest-api/class-transcoding.php:207 +#: inc/classes/rest-api/class-transcoding.php:229 msgid "Media is queued for transcoding." msgstr "" -#: inc/classes/rest-api/class-transcoding.php:208 +#: inc/classes/rest-api/class-transcoding.php:230 msgid "Media is downloading for transcoding." msgstr "" -#: inc/classes/rest-api/class-transcoding.php:209 +#: inc/classes/rest-api/class-transcoding.php:231 msgid "Media is downloaded for transcoding." msgstr "" -#: inc/classes/rest-api/class-transcoding.php:210 +#: inc/classes/rest-api/class-transcoding.php:232 msgid "Media is transcoding." msgstr "" -#: inc/classes/rest-api/class-transcoding.php:211 +#: inc/classes/rest-api/class-transcoding.php:233 msgid "Media is transcoded." msgstr "" -#: inc/classes/rest-api/class-transcoding.php:215 +#: inc/classes/rest-api/class-transcoding.php:237 msgid "Unknown transcoding status." msgstr "" -#: inc/classes/rest-api/class-transcoding.php:271 +#: inc/classes/rest-api/class-transcoding.php:293 msgid "API key not configured." msgstr "" +#: inc/classes/rest-api/class-transcoding.php:374 +msgid "Attachment ID not provided" +msgstr "" + +#. translators: 1: Attachment title, 2: Attachment ID. +#: inc/classes/rest-api/class-transcoding.php:387 +#, php-format +msgid "%1$s (ID %2$d) is virtual media from GoDAM Central. Please retranscode this video on GoDAM Central." +msgstr "" + +#. translators: 1: Attachment title, 2: Attachment ID. +#: inc/classes/rest-api/class-transcoding.php:407 +#, php-format +msgid "%1$s (ID %2$d) is migrated Vimeo video. Please retranscode this video on GoDAM Central." +msgstr "" + +#. translators: 1: Attachment title, 2: Attachment ID. +#: inc/classes/rest-api/class-transcoding.php:442 +#, php-format +msgid "%1$s (ID %2$d) transcoding request failed. Unknown error" +msgstr "" + +#. translators: 1: Attachment title, 2: Attachment ID. +#: inc/classes/rest-api/class-transcoding.php:458 +#, php-format +msgid "%1$s (ID %2$d) transcoding request was sent successfully" +msgstr "" + +#: inc/classes/rest-api/class-video-migration.php:94 +#: inc/classes/rest-api/class-video-migration.php:190 +#: inc/classes/rest-api/class-video-migration.php:1196 +msgid "Invalid migration type specified." +msgstr "" + +#: inc/classes/rest-api/class-video-migration.php:112 +msgid "Core Video Migration" +msgstr "" + +#: inc/classes/rest-api/class-video-migration.php:112 +msgid "Vimeo Video Migration" +msgstr "" + +#. translators: %1$d is the number of posts processed, %2$d is the total number of posts to process and %3$d is the migration name +#: inc/classes/rest-api/class-video-migration.php:119 +#, php-format +msgid "Processed %1$d of %2$d posts. %3$s aborted." +msgstr "" + +#: inc/classes/rest-api/class-video-migration.php:140 +msgid "GoDAM API key is required to access this endpoint." +msgstr "" + +#: inc/classes/rest-api/class-video-migration.php:150 +msgid "Error fetching migration status from GoDAM Central." +msgstr "" + +#: inc/classes/rest-api/class-video-migration.php:228 +msgid "Migration queued for processing" +msgstr "" + +#: inc/classes/rest-api/class-video-migration.php:269 +msgid "Finding all posts to migrate" +msgstr "" + +#: inc/classes/rest-api/class-video-migration.php:276 +msgid "No post types with Gutenberg support found" +msgstr "" + +#. translators: %d is the number of batches scheduled for processing +#: inc/classes/rest-api/class-video-migration.php:394 +#, php-format +msgid "Scheduled %d batches for processing" +msgstr "" + +#: inc/classes/rest-api/class-video-migration.php:416 +msgid "No posts found that need migration" +msgstr "" + +#. translators: %1$d is the number of posts processed, %2$d is the total number of posts, %3$d is the progress percentage +#: inc/classes/rest-api/class-video-migration.php:521 +#, php-format +msgid "Processed %1$d/%2$d posts (%3$d%% complete)" +msgstr "" + +#. translators: 1: total posts processed, 2: migrated Vimeo embeds, 3: total Vimeo embeds found +#: inc/classes/rest-api/class-video-migration.php:534 +#, php-format +msgid "Migration completed! Processed %1$d posts. Migrated %2$d out of %3$d Vimeo Embed Blocks found." +msgstr "" + +#. translators: %d is the total number of posts processed +#: inc/classes/rest-api/class-video-migration.php:542 +#, php-format +msgid "Migration completed! Processed %d posts." +msgstr "" + +#: inc/classes/rest-api/class-video-migration.php:1094 +msgid "Vimeo URL is required." +msgstr "" + +#: inc/classes/rest-api/class-video-migration.php:1103 +msgid "GoDAM API key is required." +msgstr "" + +#. translators: %s: error message +#: inc/classes/rest-api/class-video-migration.php:1123 +#, php-format +msgid "Error fetching video info: %s" +msgstr "" + +#: inc/classes/rest-api/class-video-migration.php:1135 +msgid "Invalid response from GoDAM Central." +msgstr "" + #: inc/classes/rest-api/class-wpforms.php:50 msgid "The ID of the WPForms Form." msgstr "" @@ -1918,14 +2283,14 @@ msgstr "" msgid "WPForms plugin is not active." msgstr "" -#: inc/classes/shortcodes/class-godam-video-gallery.php:297 -#: pages/media-library/components/folder-tree/FolderTree.jsx:421 +#: inc/classes/shortcodes/class-godam-video-gallery.php:299 +#: pages/media-library/components/folder-tree/FolderTree.jsx:417 #: pages/media-library/components/search-bar/SearchBar.jsx:213 msgid "Load More" msgstr "" -#: inc/classes/shortcodes/class-godam-video-gallery.php:319 -#: pages/dashboard/Dashboard.js:417 +#: inc/classes/shortcodes/class-godam-video-gallery.php:321 +#: pages/dashboard/Dashboard.js:384 msgid "No videos found." msgstr "" @@ -1991,14 +2356,6 @@ msgstr "" msgid "godam, video" msgstr "" -#: inc/classes/wpforms/class-wpforms-field-godam-video.php:187 -msgid "List of file selectors" -msgstr "" - -#: inc/classes/wpforms/class-wpforms-field-godam-video.php:193 -msgid "Local Files" -msgstr "" - #: inc/classes/wpforms/class-wpforms-field-godam-video.php:239 msgid "Maximum File Size(MB)" msgstr "" @@ -2080,6 +2437,16 @@ msgstr "" msgid "Transcoding failed | entry Id: %s" msgstr "" +#: inc/helpers/custom-functions.php:530 +msgid "s" +msgstr "" + +#: inc/helpers/custom-functions.php:564 +#: assets/src/js/godam-player/engagement.js:820 +#: assets/src/js/godam-player/engagement.js:827 +msgid "Anonymous" +msgstr "" + #: inc/templates/video-preview.php:20 #: inc/templates/video-preview.php:28 msgid "Video Preview" @@ -2100,90 +2467,114 @@ msgstr "" #: assets/build/blocks/godam-audio/index.js:1 #: assets/build/blocks/godam-player/index.js:2 -#: assets/src/blocks/godam-audio/caption.js:24 -#: assets/src/blocks/godam-audio/caption.js:30 -#: assets/src/blocks/godam-player/caption.js:24 -#: assets/src/blocks/godam-player/caption.js:30 +#: assets/src/blocks/godam-audio/caption.js:46 +#: assets/src/blocks/godam-audio/caption.js:52 +#: assets/src/blocks/godam-player/caption.js:50 +#: assets/src/blocks/godam-player/caption.js:56 msgid "Add caption" msgstr "" #: assets/build/blocks/godam-audio/index.js:1 #: assets/build/blocks/godam-player/index.js:2 -#: assets/src/blocks/godam-audio/caption.js:25 -#: assets/src/blocks/godam-player/caption.js:25 +#: assets/src/blocks/godam-audio/caption.js:47 +#: assets/src/blocks/godam-player/caption.js:51 msgid "Caption text" msgstr "" #: assets/build/blocks/godam-audio/index.js:1 #: assets/build/blocks/godam-player/index.js:2 -#: assets/src/blocks/godam-audio/caption.js:31 -#: assets/src/blocks/godam-player/caption.js:31 +#: assets/src/blocks/godam-audio/caption.js:53 +#: assets/src/blocks/godam-player/caption.js:57 msgid "Remove caption" msgstr "" #: assets/build/blocks/godam-audio/index.js:1 #: assets/build/blocks/godam-player/index.js:1 -#: assets/src/blocks/godam-audio/edit.js:62 -#: assets/src/blocks/godam-player/edit-common-settings.js:21 +#: assets/src/blocks/godam-audio/edit.js:74 +#: assets/src/blocks/godam-player/edit-common-settings.js:33 msgid "Autoplay may cause usability issues for some users." msgstr "" #: assets/build/blocks/godam-audio/index.js:1 -#: assets/src/blocks/godam-audio/edit.js:153 +#: assets/src/blocks/godam-audio/edit.js:165 msgctxt "noun; Audio block parameter" msgid "Preload" msgstr "" #: assets/build/blocks/godam-audio/index.js:1 -#: assets/src/blocks/godam-audio/edit.js:188 +#: assets/src/blocks/godam-audio/edit.js:200 msgid "Audio caption text" msgstr "" #: assets/build/blocks/godam-audio/index.js:1 -#: assets/src/blocks/godam-audio/edit.js:114 +#: assets/src/blocks/godam-audio/edit.js:126 msgid "GoDAM Audio" msgstr "" #: assets/build/blocks/godam-gallery/index.js:1 -#: assets/src/blocks/godam-gallery/edit.js:175 +#: assets/src/blocks/godam-gallery/edit.js:176 msgid "Start date cannot be later than end date" msgstr "" #: assets/build/blocks/godam-gallery/index.js:1 -#: assets/src/blocks/godam-gallery/edit.js:179 +#: assets/src/blocks/godam-gallery/edit.js:180 msgid "End date cannot be earlier than start date" msgstr "" #: assets/build/blocks/godam-gallery/index.js:1 -#: assets/src/blocks/godam-gallery/edit.js:240 +#: assets/build/blocks/godam-player/index.js:1 +#: assets/src/blocks/godam-gallery/edit.js:210 +#: assets/src/blocks/godam-player/edit-common-settings.js:133 +msgid "Enable Likes & Comments" +msgstr "" + +#: assets/build/blocks/godam-gallery/index.js:1 +#: assets/build/blocks/godam-player/index.js:1 +#: assets/src/blocks/godam-gallery/edit.js:213 +#: assets/src/blocks/godam-player/edit-common-settings.js:136 +msgid "Engagement will only be visible for transcoded videos" +msgstr "" + +#: assets/build/blocks/godam-gallery/index.js:1 +#: assets/src/blocks/godam-gallery/edit.js:247 msgid "Order by" msgstr "" #: assets/build/blocks/godam-gallery/index.js:1 -#: assets/src/blocks/godam-gallery/edit.js:272 +#: assets/src/blocks/godam-gallery/edit.js:279 msgid "Tag" msgstr "" #: assets/build/blocks/godam-gallery/index.js:1 -#: assets/src/blocks/godam-gallery/edit.js:287 +#: assets/src/blocks/godam-gallery/edit.js:294 msgid "All Authors" msgstr "" #: assets/build/blocks/godam-gallery/index.js:1 -#: assets/src/blocks/godam-gallery/edit.js:326 +#: assets/src/blocks/godam-gallery/edit.js:333 msgid "Select Start Date" msgstr "" #: assets/build/blocks/godam-gallery/index.js:1 -#: assets/src/blocks/godam-gallery/edit.js:353 +#: assets/src/blocks/godam-gallery/edit.js:360 msgid "Select End Date" msgstr "" #: assets/build/blocks/godam-player/index.js:1 -#: assets/src/blocks/godam-player/edit-common-settings.js:30 +#: assets/src/blocks/godam-player/edit-common-settings.js:42 msgid "Muted because of Autoplay." msgstr "" +#: assets/build/blocks/godam-player/index.js:1 +#: assets/src/blocks/godam-player/edit-common-settings.js:50 +msgid "Removes the share button from the video player." +msgstr "" + +#: assets/build/blocks/godam-player/index.js:1 +#: assets/src/blocks/godam-player/edit-common-settings.js:115 +msgid "Share Button" +msgstr "" + #. translators: %s: Label of the video text track e.g: "French subtitles". #: assets/build/blocks/godam-player/index.js:2 #: assets/src/blocks/godam-player/track-uploader.js:53 @@ -2194,6 +2585,7 @@ msgstr "" #: assets/build/blocks/godam-player/index.js:2 #: assets/src/blocks/godam-player/track-uploader.js:57 +#: assets/src/js/godam-player/engagement.js:867 msgid "Edit" msgstr "" @@ -2256,195 +2648,298 @@ msgstr "" #: assets/build/blocks/godam-player/index.js:2 #: assets/src/blocks/godam-player/components/VideoSEOModal.js:139 #: assets/src/js/deactivation-feedback.js:36 -#: pages/media-library/App.js:124 +#: assets/src/js/godam-player/engagement.js:663 +#: pages/media-library/App.js:160 #: pages/media-library/components/modal/DeleteModal.jsx:121 -#: pages/media-library/components/modal/FolderCreationModal.jsx:122 +#: pages/media-library/components/modal/FolderCreationModal.jsx:131 #: pages/media-library/components/modal/RenameModal.jsx:104 #: pages/video-editor/components/layers/LayersHeader.js:151 -#: pages/video-editor/components/LayerSelector.jsx:379 +#: pages/video-editor/components/LayerSelector.jsx:406 msgid "Cancel" msgstr "" #: assets/build/blocks/godam-player/index.js:2 #: assets/src/blocks/godam-player/components/VideoSEOModal.js:142 +#: assets/src/js/godam-player/engagement.js:1036 #: pages/godam/components/tabs/AdsSettings/AdsSettings.jsx:129 #: pages/godam/components/tabs/GeneralSettings/GeneralSettings.jsx:114 -#: pages/godam/components/tabs/VideoPlayer/VideoPlayer.jsx:442 +#: pages/godam/components/tabs/VideoPlayer/VideoPlayer.jsx:496 #: pages/godam/components/tabs/VideoSettings/VideoSettings.jsx:140 -#: pages/video-editor/VideoEditor.js:352 +#: pages/video-editor/VideoEditor.js:367 msgid "Save" msgstr "" #: assets/build/blocks/godam-player/index.js:2 -#: assets/src/blocks/godam-player/edit.js:76 +#: assets/src/blocks/godam-player/edit.js:77 msgid "Add a heading…" msgstr "" #. translators: %s: Label of the video text track e.g: "French subtitles". #: assets/build/blocks/godam-player/index.js:3 -#: assets/src/blocks/godam-player/edit.js:371 +#: assets/src/blocks/godam-player/edit.js:412 msgid "GoDAM video" msgstr "" #: assets/build/blocks/godam-player/index.js:3 -#: assets/src/blocks/godam-player/edit.js:372 +#: assets/src/blocks/godam-player/edit.js:413 msgid "Drag and drop a video, upload, or choose from your library." msgstr "" #: assets/build/blocks/godam-player/index.js:3 -#: assets/src/blocks/godam-player/edit.js:473 +#: assets/src/blocks/godam-player/edit.js:423 +msgid "Select Video" +msgstr "" + +#: assets/build/blocks/godam-player/index.js:3 +#: assets/src/blocks/godam-player/edit.js:517 msgid "Hover Option" msgstr "" #: assets/build/blocks/godam-player/index.js:3 -#: assets/src/blocks/godam-player/edit.js:474 +#: assets/src/blocks/godam-player/edit.js:518 msgid "Choose the action to perform on video hover." msgstr "" #: assets/build/blocks/godam-player/index.js:3 -#: assets/src/blocks/godam-player/edit.js:479 +#: assets/src/blocks/godam-player/edit.js:523 msgid "None" msgstr "" #: assets/build/blocks/godam-player/index.js:3 -#: assets/src/blocks/godam-player/edit.js:480 +#: assets/src/blocks/godam-player/edit.js:524 msgid "Show Player Controls" msgstr "" #: assets/build/blocks/godam-player/index.js:3 -#: assets/src/blocks/godam-player/edit.js:481 +#: assets/src/blocks/godam-player/edit.js:525 msgid "Start Preview" msgstr "" #: assets/build/blocks/godam-player/index.js:3 -#: assets/src/blocks/godam-player/edit.js:482 +#: assets/src/blocks/godam-player/edit.js:526 msgid "Shadow Overlay" msgstr "" #: assets/build/blocks/godam-player/index.js:3 -#: assets/src/blocks/godam-player/edit.js:496 +#: assets/src/blocks/godam-player/edit.js:540 msgid "Select Video Thumbnail" msgstr "" #: assets/build/blocks/godam-player/index.js:3 -#: assets/src/blocks/godam-player/edit.js:507 -#: pages/godam/components/tabs/GeneralSettings/BrandImageSelector.jsx:98 +#: assets/src/blocks/godam-player/edit.js:551 +#: pages/godam/components/tabs/GeneralSettings/BrandImageSelector.jsx:99 #: pages/video-editor/components/appearance/Appearance.js:442 #: pages/video-editor/components/appearance/Appearance.js:520 msgid "Replace" msgstr "" #: assets/build/blocks/godam-player/index.js:3 -#: assets/src/blocks/godam-player/edit.js:507 +#: assets/src/blocks/godam-player/edit.js:551 msgid "Select" msgstr "" #. translators: %s: poster image URL. #: assets/build/blocks/godam-player/index.js:4 -#: assets/src/blocks/godam-player/edit.js:515 +#: assets/src/blocks/godam-player/edit.js:559 #, js-format msgid "The current poster image url is %s" msgstr "" #: assets/build/blocks/godam-player/index.js:4 -#: assets/src/blocks/godam-player/edit.js:518 +#: assets/src/blocks/godam-player/edit.js:562 msgid "There is no poster image currently selected" msgstr "" #: assets/build/blocks/godam-player/index.js:4 -#: assets/src/blocks/godam-player/edit.js:535 +#: assets/src/blocks/godam-player/edit.js:579 msgid "Customise Video" msgstr "" #: assets/build/blocks/godam-player/index.js:4 -#: assets/src/blocks/godam-player/edit.js:547 +#: assets/src/blocks/godam-player/edit.js:590 msgid "Customise" msgstr "" #: assets/build/blocks/godam-player/index.js:4 -#: assets/src/blocks/godam-player/edit.js:569 +#: assets/src/blocks/godam-player/edit.js:612 msgid "Aspect Ratio" msgstr "" #: assets/build/blocks/godam-player/index.js:4 -#: assets/src/blocks/godam-player/edit.js:575 +#: assets/src/blocks/godam-player/edit.js:618 msgid "16:9 (Standard)" msgstr "" #: assets/build/blocks/godam-player/index.js:4 -#: assets/src/blocks/godam-player/edit.js:576 +#: assets/src/blocks/godam-player/edit.js:619 msgid "Responsive" msgstr "" #: assets/build/blocks/godam-player/index.js:4 -#: assets/src/blocks/godam-player/edit.js:579 +#: assets/src/blocks/godam-player/edit.js:622 msgid "Choose the aspect ratio for the video player." msgstr "" #: assets/build/blocks/godam-player/index.js:4 -#: assets/src/blocks/godam-player/edit.js:585 +#: assets/src/blocks/godam-player/edit.js:632 msgid "Overlay Blocks" msgstr "" #: assets/build/blocks/godam-player/index.js:4 -#: assets/src/blocks/godam-player/edit.js:587 +#: assets/src/blocks/godam-player/edit.js:634 msgid "Show overlay blocks" msgstr "" #: assets/build/blocks/godam-player/index.js:4 -#: assets/src/blocks/godam-player/edit.js:590 +#: assets/src/blocks/godam-player/edit.js:637 msgid "Display blocks on top of the video player." msgstr "" #: assets/build/blocks/godam-player/index.js:4 -#: assets/src/blocks/godam-player/edit.js:596 +#: assets/src/blocks/godam-player/edit.js:643 msgid "Vertical alignment" msgstr "" #: assets/build/blocks/godam-player/index.js:4 -#: assets/src/blocks/godam-player/edit.js:599 +#: assets/src/blocks/godam-player/edit.js:646 msgid "Top" msgstr "" #: assets/build/blocks/godam-player/index.js:4 -#: assets/src/blocks/godam-player/edit.js:600 +#: assets/src/blocks/godam-player/edit.js:647 msgid "Center" msgstr "" #: assets/build/blocks/godam-player/index.js:4 -#: assets/src/blocks/godam-player/edit.js:601 +#: assets/src/blocks/godam-player/edit.js:648 msgid "Bottom" msgstr "" #: assets/build/blocks/godam-player/index.js:4 -#: assets/src/blocks/godam-player/edit.js:604 +#: assets/src/blocks/godam-player/edit.js:651 msgid "Choose where to position the overlay blocks vertically." msgstr "" #: assets/build/blocks/godam-player/index.js:4 -#: assets/src/blocks/godam-player/edit.js:608 +#: assets/src/blocks/godam-player/edit.js:655 msgid "Time range" msgstr "" #. translators: %s: formatted time #: assets/build/blocks/godam-player/index.js:5 -#: assets/src/blocks/godam-player/edit.js:616 +#: assets/src/blocks/godam-player/edit.js:663 #, js-format msgid "Overlay will be visible for %s from the start of the video." msgstr "" #. translators: %s: formatted time #: assets/build/blocks/godam-player/index.js:6 -#: assets/src/blocks/godam-player/edit.js:625 +#: assets/src/blocks/godam-player/edit.js:672 #, js-format msgid "Video duration: %s" msgstr "" #: assets/build/blocks/godam-player/index.js:6 -#: assets/src/blocks/godam-player/edit.js:668 +#: assets/src/blocks/godam-player/edit.js:726 msgid "Video caption text" msgstr "" +#: assets/build/blocks/godam-video-duration/index.js:1 +#: assets/src/blocks/godam-video-duration/edit.js:33 +msgid "Default (HH:MM:SS)" +msgstr "" + +#: assets/build/blocks/godam-video-duration/index.js:1 +#: assets/src/blocks/godam-video-duration/edit.js:34 +#: assets/src/blocks/godam-video-duration/edit.js:63 +msgid "00:00:00" +msgstr "" + +#: assets/build/blocks/godam-video-duration/index.js:1 +#: assets/src/blocks/godam-video-duration/edit.js:38 +msgid "Minutes only (MM:SS)" +msgstr "" + +#: assets/build/blocks/godam-video-duration/index.js:1 +#: assets/src/blocks/godam-video-duration/edit.js:39 +msgid "00:00" +msgstr "" + +#: assets/build/blocks/godam-video-duration/index.js:1 +#: assets/src/blocks/godam-video-duration/edit.js:43 +msgid "Total Seconds" +msgstr "" + +#: assets/build/blocks/godam-video-duration/index.js:1 +#: assets/src/blocks/godam-video-duration/edit.js:44 +msgid "0s" +msgstr "" + +#: assets/build/blocks/godam-video-duration/index.js:1 +#: assets/src/blocks/godam-video-duration/edit.js:51 +msgid "Duration Settings" +msgstr "" + +#: assets/build/blocks/godam-video-duration/index.js:1 +#: assets/src/blocks/godam-video-duration/edit.js:53 +msgid "Duration Format" +msgstr "" + +#: assets/build/blocks/godam-video-thumbnail/index.js:1 +#: assets/src/blocks/godam-video-thumbnail/edit.js:39 +msgid "Thumbnail Settings" +msgstr "" + +#: assets/build/blocks/godam-video-thumbnail/index.js:1 +#: assets/src/blocks/godam-video-thumbnail/edit.js:41 +msgid "Show play button overlay" +msgstr "" + +#: assets/build/blocks/godam-video-thumbnail/index.js:1 +#: assets/src/blocks/godam-video-thumbnail/edit.js:45 +msgid "Play button will be displayed." +msgstr "" + +#: assets/build/blocks/godam-video-thumbnail/index.js:1 +#: assets/src/blocks/godam-video-thumbnail/edit.js:46 +msgid "No play button will be displayed." +msgstr "" + +#: assets/build/blocks/godam-video-thumbnail/index.js:1 +#: assets/src/blocks/godam-video-thumbnail/edit.js:50 +msgid "Link to post" +msgstr "" + +#: assets/build/blocks/godam-video-thumbnail/index.js:1 +#: assets/src/blocks/godam-video-thumbnail/edit.js:54 +msgid "Thumbnail will link to the video page." +msgstr "" + +#: assets/build/blocks/godam-video-thumbnail/index.js:1 +#: assets/src/blocks/godam-video-thumbnail/edit.js:55 +msgid "Thumbnail will not be linked." +msgstr "" + +#: assets/build/blocks/godam-video-thumbnail/index.js:1 +#: assets/src/blocks/godam-video-thumbnail/edit.js:60 +msgid "Open in new tab" +msgstr "" + +#: assets/build/blocks/godam-video-thumbnail/index.js:1 +#: assets/src/blocks/godam-video-thumbnail/edit.js:64 +msgid "Link will open in a new tab." +msgstr "" + +#: assets/build/blocks/godam-video-thumbnail/index.js:1 +#: assets/src/blocks/godam-video-thumbnail/edit.js:65 +msgid "Link will open in the same tab." +msgstr "" + +#: assets/build/blocks/godam-video-thumbnail/index.js:1 +#: assets/src/blocks/godam-video-thumbnail/edit.js:76 +msgid "GoDAM Video Thumbnail" +msgstr "" + #: assets/build/blocks/sureforms/blocks/recorder/index.js:1 #: assets/src/blocks/sureforms/blocks/recorder/edit.js:165 msgid "Enter label" @@ -2508,106 +3003,284 @@ msgstr "" msgid "Maximum allowed size: %s MB" msgstr "" -#: assets/src/js/deactivation-feedback.js:22 -msgid "Select a reason" +#: assets/src/js/deactivation-feedback.js:22 +msgid "Select a reason" +msgstr "" + +#: assets/src/js/deactivation-feedback.js:23 +msgid "I found a better plugin" +msgstr "" + +#: assets/src/js/deactivation-feedback.js:24 +msgid "The plugin is not working as expected" +msgstr "" + +#: assets/src/js/deactivation-feedback.js:25 +msgid "I was just testing" +msgstr "" + +#: assets/src/js/deactivation-feedback.js:26 +msgid "Other" +msgstr "" + +#: assets/src/js/deactivation-feedback.js:28 +msgid "Additional details…" +msgstr "" + +#: assets/src/js/deactivation-feedback.js:32 +msgid "Skip & Deactivate" +msgstr "" + +#: assets/src/js/deactivation-feedback.js:37 +msgid "Submit & Deactivate" +msgstr "" + +#. translators: %d: Maximum allowed file size in MB. +#: assets/src/js/everestforms/index.js:61 +#, js-format +msgid "File size exceeds the maximum limit of %d MB." +msgstr "" + +#: assets/src/js/everestforms/index.js:231 +#: assets/src/js/fluentforms/index.js:245 +#: assets/src/js/ninja-forms/index.js:216 +msgid "File upload in progress…" +msgstr "" + +#: assets/src/js/godam-player/engagement.js:650 +msgid "Add timestamp" +msgstr "" + +#: assets/src/js/godam-player/engagement.js:658 +#: assets/src/js/godam-player/engagement.js:849 +#: assets/src/js/godam-player/engagement.js:889 +msgid "Reply" +msgstr "" + +#: assets/src/js/godam-player/engagement.js:658 +msgid "Comment" +msgstr "" + +#: assets/src/js/godam-player/engagement.js:836 +msgid "This comment has been deleted" +msgstr "" + +#: assets/src/js/godam-player/engagement.js:859 +#: pages/media-library/components/context-menu/ContextMenu.jsx:465 +#: pages/media-library/components/modal/DeleteModal.jsx:114 +msgid "Delete" +msgstr "" + +#: assets/src/js/godam-player/engagement.js:889 +msgid "Replies" +msgstr "" + +#: assets/src/js/godam-player/engagement.js:941 +msgid "No comments yet. Be the first to comment!" +msgstr "" + +#: assets/src/js/godam-player/engagement.js:1002 +msgid "Register" +msgstr "" + +#: assets/src/js/godam-player/engagement.js:1002 +msgid "Login" +msgstr "" + +#: assets/src/js/godam-player/engagement.js:1002 +msgid " to comment" +msgstr "" + +#: assets/src/js/godam-player/engagement.js:1009 +msgid "Email" +msgstr "" + +#: assets/src/js/godam-player/engagement.js:1013 +msgid "Enter your email" +msgstr "" + +#: assets/src/js/godam-player/engagement.js:1026 +msgid "Back" +msgstr "" + +#: assets/src/js/godam-player/engagement.js:1036 +msgid "Continue as Guest" +msgstr "" + +#: assets/src/js/godam-player/engagement.js:1145 +msgid "Comments" +msgstr "" + +#: assets/src/js/godam-player/managers/chaptersManager.js:71 +msgid "Chapter" +msgstr "" + +#: assets/src/js/godam-player/managers/controlsManager.js:84 +msgid "Custom Fullscreen" +msgstr "" + +#: assets/src/js/godam-player/managers/controlsManager.js:130 +msgid "Exit Fullscreen" +msgstr "" + +#: assets/src/js/godam-player/managers/controlsManager.js:235 +#: pages/video-editor/components/appearance/Appearance.js:216 +#: pages/video-editor/components/appearance/Appearance.js:513 +#: pages/video-editor/VideoJSPlayer.js:284 +msgid "Custom Play Button" +msgstr "" + +#: assets/src/js/godam-player/managers/controlsManager.js:278 +#: assets/src/js/godam-player/managers/controlsManager.js:295 +msgid "Branding" +msgstr "" + +#: assets/src/js/godam-player/managers/layers/formLayerManager.js:66 +msgid "Skip Form" +msgstr "" + +#: assets/src/js/godam-player/managers/layers/formLayerManager.js:67 +#: assets/src/js/godam-player/managers/layers/formLayerManager.js:71 +#: pages/video-editor/components/forms/CF7.js:126 +#: pages/video-editor/components/forms/EverestForm.js:113 +#: pages/video-editor/components/forms/FluentForm.js:115 +#: pages/video-editor/components/forms/forminatorForms.js:107 +#: pages/video-editor/components/forms/GravityForm.js:124 +#: pages/video-editor/components/forms/JetpackForm.js:266 +#: pages/video-editor/components/forms/MetForm.js:118 +#: pages/video-editor/components/forms/NinjaForm.js:120 +#: pages/video-editor/components/forms/Sureform.js:107 +#: pages/video-editor/components/forms/WPForm.js:107 +#: pages/video-editor/components/layers/CTALayer.js:238 +#: pages/video-editor/components/layers/PollLayer.js:119 +msgid "Skip" +msgstr "" + +#: assets/src/js/godam-player/managers/layers/formLayerManager.js:68 +msgid "Skip Poll" +msgstr "" + +#: assets/src/js/godam-player/managers/layers/formLayerManager.js:123 +msgid "Continue" +msgstr "" + +#. translators: %d: hotspot number +#. translators: %d is the hotspot index +#: assets/src/js/godam-player/managers/layers/hotspotLayerManager.js:226 +#: assets/src/js/godam-player/managers/layers/hotspotLayerManager.js:233 +#: pages/video-editor/components/layers/HotspotLayer.js:180 +#, js-format +msgid "Hotspot %d" +msgstr "" + +#. translators: %d: number of seconds to seek backward +#. translators: %s: number of seconds to seek forward +#: assets/src/js/godam-player/managers/playerManager.js:214 +#: assets/src/js/godam-player/managers/playerManager.js:229 +#, js-format +msgid "%ds" msgstr "" -#: assets/src/js/deactivation-feedback.js:23 -msgid "I found a better plugin" +#: assets/src/js/godam-player/managers/shareManager.js:268 +msgid "Check out this video!" msgstr "" -#: assets/src/js/deactivation-feedback.js:24 -msgid "The plugin is not working as expected" +#: assets/src/js/godam-player/managers/shareManager.js:296 +msgid "Share Media" msgstr "" -#: assets/src/js/deactivation-feedback.js:25 -msgid "I was just testing" +#: assets/src/js/godam-player/managers/shareManager.js:305 +msgid "Page Link" msgstr "" -#: assets/src/js/deactivation-feedback.js:26 -msgid "Other" +#: assets/src/js/godam-player/managers/shareManager.js:306 +msgid "Embed" msgstr "" -#: assets/src/js/deactivation-feedback.js:28 -msgid "Additional details…" +#: assets/src/js/godam-player/managers/shareManager.js:315 +msgid "Start at" msgstr "" -#: assets/src/js/deactivation-feedback.js:32 -msgid "Skip & Deactivate" +#: assets/src/js/godam-player/managers/shareManager.js:319 +msgid "mm:ss" msgstr "" -#: assets/src/js/deactivation-feedback.js:37 -msgid "Submit & Deactivate" +#: assets/src/js/godam-player/managers/shareManager.js:561 +msgid "copy icon" msgstr "" -#: assets/src/js/fluentforms/index.js:245 -msgid "File upload in progress…" +#: assets/src/js/godam-player/masterSettings.js:225 +msgid "Invalid item" msgstr "" -#: assets/src/js/godam-player/frontend.js:187 -msgid "Chapter" +#: assets/src/js/media-library/index.js:49 +msgid "Search Media" msgstr "" -#: assets/src/js/godam-player/frontend.js:541 -msgid "Check out this video!" +#: assets/src/js/media-library/transcoding-status/list-view-transcoding-status.js:180 +msgid "Transcoding failed, please try again." msgstr "" -#: assets/src/js/godam-player/frontend.js:548 -msgid "Facebook icon" +#: assets/src/js/media-library/transcoding-status/list-view-transcoding-status.js:199 +msgid "Not started" msgstr "" -#: assets/src/js/godam-player/frontend.js:554 -msgid "Twitter icon" +#: assets/src/js/media-library/transcoding-status/list-view-transcoding-status.js:219 +msgid "Transcoding completed" msgstr "" -#: assets/src/js/godam-player/frontend.js:560 -msgid "LinkedIn icon" +#: assets/src/js/media-library/transcoding-status/list-view-transcoding-status.js:236 +msgid "Transcoding…" msgstr "" -#: assets/src/js/godam-player/frontend.js:566 -msgid "Reddit icon" +#: assets/src/js/media-library/utility.js:68 +msgid "Premium Feature" msgstr "" -#: assets/src/js/godam-player/frontend.js:572 -msgid "WhatsApp icon" +#: assets/src/js/media-library/utility.js:77 +#: pages/godam/components/GoDAMHeader.jsx:59 +msgid "Manage Media" msgstr "" -#: assets/src/js/godam-player/frontend.js:578 -msgid "Telegram icon" +#: assets/src/js/media-library/views/attachment-detail-two-column.js:52 +msgid "No thumbnails found" msgstr "" -#: assets/src/js/godam-player/frontend.js:585 -msgid "Share Media" +#: assets/src/js/media-library/views/attachment-detail-two-column.js:195 +msgid "Select Custom Thumbnail" msgstr "" -#: assets/src/js/godam-player/frontend.js:597 -msgid "Page Link" +#: assets/src/js/media-library/views/attachment-detail-two-column.js:196 +msgid "Use this image" msgstr "" -#: assets/src/js/godam-player/frontend.js:601 -#: assets/src/js/godam-player/frontend.js:611 -msgid "copy icon" +#: assets/src/js/media-library/views/attachment-detail-two-column.js:224 +msgid "Only 3 custom thumbnails allowed" msgstr "" -#: assets/src/js/godam-player/frontend.js:607 -msgid "Embed" +#: assets/src/js/media-library/views/attachment-detail-two-column.js:225 +msgid "Upload Custom Thumbnail" msgstr "" -#: assets/src/js/godam-player/masterSettings.js:225 -msgid "Invalid item" +#: assets/src/js/media-library/views/attachment-detail-two-column.js:272 +msgid "Custom Video Thumbnail" msgstr "" -#: assets/src/js/media-library/index.js:48 -msgid "Search Media" +#: assets/src/js/media-library/views/attachment-detail-two-column.js:279 +#: assets/src/js/media-library/views/attachment-detail-two-column.js:283 +#: pages/video-editor/components/cta/ImageCTA.js:189 +msgid "Remove Image" msgstr "" -#: assets/src/js/media-library/utility.js:68 -msgid "Premium Feature" +#: assets/src/js/media-library/views/attachment-detail-two-column.js:395 +#: assets/src/js/media-library/views/attachment-detail-two-column.js:664 +#: pages/godam/components/tabs/VideoSettings/VideoCompressQuality.jsx:25 +#: pages/godam/components/tabs/VideoSettings/VideoThumbnails.jsx:26 +msgid "Video Thumbnails" msgstr "" -#: assets/src/js/media-library/utility.js:77 -#: pages/godam/components/GoDAMHeader.jsx:50 -msgid "Manage Media" +#: assets/src/js/ninja-forms/index.js:280 +msgid "Upload failed. Please try again." msgstr "" #: assets/src/js/wpforms-godam-recorder-editor.js:15 @@ -2635,32 +3308,31 @@ msgid "Go to Dashboard" msgstr "" #: pages/analytics/Analytics.js:361 -#: pages/dashboard/Dashboard.js:224 +#: pages/dashboard/Dashboard.js:197 msgid "Upgrade to unlock the media performance report." msgstr "" #: pages/analytics/Analytics.js:366 -#: pages/dashboard/Dashboard.js:229 +#: pages/dashboard/Dashboard.js:202 msgid "Buy Plan" msgstr "" #: pages/analytics/Analytics.js:372 -#: pages/dashboard/Dashboard.js:235 +#: pages/dashboard/Dashboard.js:208 msgid "API in the settings" msgstr "" #: pages/analytics/Analytics.js:378 -#: pages/dashboard/Dashboard.js:241 +#: pages/dashboard/Dashboard.js:214 msgid "An unknown error occurred. Please check your plugin settings." msgstr "" #: pages/analytics/Analytics.js:384 -#: pages/dashboard/Dashboard.js:247 +#: pages/dashboard/Dashboard.js:220 msgid "Go to plugin settings" msgstr "" #: pages/analytics/Analytics.js:393 -#: pages/dashboard/Dashboard.js:256 msgid "You need to use desktop to access this feature. " msgstr "" @@ -2678,7 +3350,7 @@ msgstr "" #: pages/analytics/Analytics.js:421 #: pages/analytics/Analytics.js:668 -#: pages/dashboard/Dashboard.js:348 +#: pages/dashboard/Dashboard.js:315 msgid "Average Engagement" msgstr "" @@ -2688,13 +3360,13 @@ msgstr "" #: pages/analytics/Analytics.js:432 #: pages/analytics/Analytics.js:673 -#: pages/dashboard/Dashboard.js:281 -#: pages/dashboard/Dashboard.js:346 +#: pages/dashboard/Dashboard.js:248 +#: pages/dashboard/Dashboard.js:313 msgid "Total Plays" msgstr "" #: pages/analytics/Analytics.js:433 -#: pages/dashboard/Dashboard.js:282 +#: pages/dashboard/Dashboard.js:249 msgid "Plays represent the total number of times the video has been viewed" msgstr "" @@ -2702,25 +3374,25 @@ msgstr "" #: pages/analytics/Analytics.js:680 #: pages/analytics/helper.js:104 #: pages/analytics/PlaybackPerformance.js:403 -#: pages/analytics/PlaybackPerformance.js:523 -#: pages/dashboard/Dashboard.js:293 -#: pages/dashboard/Dashboard.js:345 +#: pages/analytics/PlaybackPerformance.js:542 +#: pages/dashboard/Dashboard.js:260 +#: pages/dashboard/Dashboard.js:312 msgid "Play Rate" msgstr "" #: pages/analytics/Analytics.js:444 -#: pages/dashboard/Dashboard.js:294 +#: pages/dashboard/Dashboard.js:261 msgid "Play rate is the percentage of page visitors who clicked play. Play Rate = Total plays / Page loads" msgstr "" #: pages/analytics/Analytics.js:454 #: pages/analytics/helper.js:110 -#: pages/dashboard/Dashboard.js:305 +#: pages/dashboard/Dashboard.js:272 msgid "Watch Time" msgstr "" #: pages/analytics/Analytics.js:455 -#: pages/dashboard/Dashboard.js:306 +#: pages/dashboard/Dashboard.js:273 msgid "Total time the video has been watched, aggregated across all plays" msgstr "" @@ -2784,7 +3456,7 @@ msgstr "" #: pages/analytics/helper.js:98 #: pages/analytics/PlaybackPerformance.js:396 -#: pages/analytics/PlaybackPerformance.js:492 +#: pages/analytics/PlaybackPerformance.js:511 msgid "Engagement Rate" msgstr "" @@ -2805,7 +3477,7 @@ msgid "Select video" msgstr "" #: pages/analytics/index.js:37 -#: pages/video-editor/components/media-grid/MediaItem.jsx:109 +#: pages/video-editor/components/media-grid/MediaItem.jsx:117 msgid "View analytics" msgstr "" @@ -2821,31 +3493,31 @@ msgstr "" msgid "Performance" msgstr "" -#: pages/analytics/PlaybackPerformance.js:460 +#: pages/analytics/PlaybackPerformance.js:479 msgid "Playback Performance" msgstr "" -#: pages/analytics/PlaybackPerformance.js:532 +#: pages/analytics/PlaybackPerformance.js:551 msgctxt "All time period" msgid "All" msgstr "" -#: pages/analytics/PlaybackPerformance.js:538 +#: pages/analytics/PlaybackPerformance.js:557 msgctxt "7 days period" msgid "7D" msgstr "" -#: pages/analytics/PlaybackPerformance.js:544 +#: pages/analytics/PlaybackPerformance.js:563 msgctxt "1 month period" msgid "1M" msgstr "" -#: pages/analytics/PlaybackPerformance.js:550 +#: pages/analytics/PlaybackPerformance.js:569 msgctxt "6 months period" msgid "6M" msgstr "" -#: pages/analytics/PlaybackPerformance.js:556 +#: pages/analytics/PlaybackPerformance.js:575 msgctxt "1 year period" msgid "1Y" msgstr "" @@ -2854,10 +3526,6 @@ msgstr "" msgid "Last 7 days" msgstr "" -#: pages/dashboard/components/MarketingCarousel.jsx:94 -msgid "What's New" -msgstr "" - #: pages/dashboard/components/MarketingCarousel.jsx:101 msgid "Read More" msgstr "" @@ -2866,46 +3534,46 @@ msgstr "" msgid "Feature Screenshot" msgstr "" -#: pages/dashboard/Dashboard.js:267 +#: pages/dashboard/Dashboard.js:234 msgid "Active Videos" msgstr "" -#: pages/dashboard/Dashboard.js:268 +#: pages/dashboard/Dashboard.js:235 msgid "Number of unique videos that received user interactions each day, such as views or plays." msgstr "" -#: pages/dashboard/Dashboard.js:333 +#: pages/dashboard/Dashboard.js:300 msgid "Top Videos" msgstr "" -#: pages/dashboard/Dashboard.js:336 +#: pages/dashboard/Dashboard.js:303 msgid "Export" msgstr "" -#: pages/dashboard/Dashboard.js:343 +#: pages/dashboard/Dashboard.js:310 msgid "Name" msgstr "" -#: pages/dashboard/Dashboard.js:347 +#: pages/dashboard/Dashboard.js:314 msgid "Total Watch Time" msgstr "" -#: pages/dashboard/Dashboard.js:370 -#: pages/dashboard/Dashboard.js:384 +#: pages/dashboard/Dashboard.js:337 +#: pages/dashboard/Dashboard.js:351 msgid "Video thumbnail" msgstr "" #. translators: %1$d is the current page number, %2$d is the total number of pages -#: pages/dashboard/Dashboard.js:429 +#: pages/dashboard/Dashboard.js:396 #, js-format msgid "Page %1$d of %2$d" msgstr "" -#: pages/dashboard/Dashboard.js:443 +#: pages/dashboard/Dashboard.js:410 msgid "Previous" msgstr "" -#: pages/dashboard/Dashboard.js:450 +#: pages/dashboard/Dashboard.js:417 msgid "Next" msgstr "" @@ -2940,61 +3608,65 @@ msgstr "" msgid "Newsletter" msgstr "" -#: pages/godam/components/GoDAMFooter.jsx:34 +#: pages/godam/components/GoDAMFooter.jsx:39 msgid "Twitter X" msgstr "" -#: pages/godam/components/GoDAMFooter.jsx:39 +#: pages/godam/components/GoDAMFooter.jsx:44 msgid "Facebook" msgstr "" -#: pages/godam/components/GoDAMFooter.jsx:44 +#: pages/godam/components/GoDAMFooter.jsx:49 msgid "Linkedin" msgstr "" -#: pages/godam/components/GoDAMFooter.jsx:49 +#: pages/godam/components/GoDAMFooter.jsx:54 msgid "Instagram" msgstr "" -#: pages/godam/components/GoDAMFooter.jsx:54 +#: pages/godam/components/GoDAMFooter.jsx:59 msgid "Youtube" msgstr "" -#: pages/godam/components/GoDAMFooter.jsx:59 +#: pages/godam/components/GoDAMFooter.jsx:64 msgid "WordPress.org" msgstr "" -#: pages/godam/components/GoDAMFooter.jsx:62 +#: pages/godam/components/GoDAMFooter.jsx:67 msgid "Rate us on WordPress.org" msgstr "" -#: pages/godam/components/GoDAMFooter.jsx:72 +#: pages/godam/components/GoDAMFooter.jsx:77 msgid "Made with β™₯ by the GoDAM Team" msgstr "" -#: pages/godam/components/GoDAMHeader.jsx:39 +#: pages/godam/components/GoDAMHeader.jsx:41 msgid "Need help?" msgstr "" -#: pages/godam/components/GoDAMHeader.jsx:62 +#: pages/godam/components/GoDAMHeader.jsx:49 +msgid "Install GoDAM Screen Recorder" +msgstr "" + +#: pages/godam/components/GoDAMHeader.jsx:71 msgid "Premium feature" msgstr "" -#: pages/godam/components/GoDAMHeader.jsx:62 +#: pages/godam/components/GoDAMHeader.jsx:71 msgid "GoDAM Central" msgstr "" -#: pages/godam/components/GoDAMHeader.jsx:74 +#: pages/godam/components/GoDAMHeader.jsx:85 msgid "Upgrade plan" msgstr "" -#: pages/godam/components/GoDAMHeader.jsx:85 +#: pages/godam/components/GoDAMHeader.jsx:98 msgid "Get GoDAM" msgstr "" #: pages/godam/components/tabs/AdsSettings/AdsSettings.jsx:59 #: pages/godam/components/tabs/GeneralSettings/GeneralSettings.jsx:58 -#: pages/godam/components/tabs/VideoPlayer/VideoPlayer.jsx:60 +#: pages/godam/components/tabs/VideoPlayer/VideoPlayer.jsx:90 #: pages/godam/components/tabs/VideoSettings/VideoSettings.jsx:66 msgid "Settings saved successfully." msgstr "" @@ -3003,8 +3675,8 @@ msgstr "" #: pages/godam/components/tabs/AdsSettings/AdsSettings.jsx:65 #: pages/godam/components/tabs/GeneralSettings/GeneralSettings.jsx:61 #: pages/godam/components/tabs/GeneralSettings/GeneralSettings.jsx:64 -#: pages/godam/components/tabs/VideoPlayer/VideoPlayer.jsx:63 -#: pages/godam/components/tabs/VideoPlayer/VideoPlayer.jsx:66 +#: pages/godam/components/tabs/VideoPlayer/VideoPlayer.jsx:93 +#: pages/godam/components/tabs/VideoPlayer/VideoPlayer.jsx:96 #: pages/godam/components/tabs/VideoSettings/VideoSettings.jsx:69 #: pages/godam/components/tabs/VideoSettings/VideoSettings.jsx:72 msgid "Failed to save settings." @@ -3012,9 +3684,9 @@ msgstr "" #: pages/godam/components/tabs/AdsSettings/AdsSettings.jsx:74 #: pages/godam/components/tabs/GeneralSettings/GeneralSettings.jsx:73 -#: pages/godam/components/tabs/VideoPlayer/VideoPlayer.jsx:316 +#: pages/godam/components/tabs/VideoPlayer/VideoPlayer.jsx:370 #: pages/godam/components/tabs/VideoSettings/VideoSettings.jsx:81 -#: pages/video-editor/VideoEditor.js:66 +#: pages/video-editor/VideoEditor.js:69 msgid "You have unsaved changes. Are you sure you want to leave?" msgstr "" @@ -3046,10 +3718,10 @@ msgstr "" #: pages/godam/components/tabs/AdsSettings/AdsSettings.jsx:129 #: pages/godam/components/tabs/GeneralSettings/GeneralSettings.jsx:114 -#: pages/godam/components/tabs/VideoPlayer/VideoPlayer.jsx:442 +#: pages/godam/components/tabs/VideoPlayer/VideoPlayer.jsx:496 #: pages/godam/components/tabs/VideoSettings/APISettings.jsx:99 #: pages/godam/components/tabs/VideoSettings/VideoSettings.jsx:140 -#: pages/video-editor/VideoEditor.js:352 +#: pages/video-editor/VideoEditor.js:367 msgid "Saving…" msgstr "" @@ -3075,16 +3747,16 @@ msgstr "" msgid "Custom brand logo" msgstr "" -#: pages/godam/components/tabs/GeneralSettings/BrandImageSelector.jsx:115 +#: pages/godam/components/tabs/GeneralSettings/BrandImageSelector.jsx:118 #: pages/video-editor/components/cta/ImageCTA.js:182 msgid "Selected custom brand" msgstr "" -#: pages/godam/components/tabs/GeneralSettings/BrandImageSelector.jsx:135 +#: pages/godam/components/tabs/GeneralSettings/BrandImageSelector.jsx:138 msgid "The brand logo will not be applied to the player skin." msgstr "" -#: pages/godam/components/tabs/GeneralSettings/BrandImageSelector.jsx:141 +#: pages/godam/components/tabs/GeneralSettings/BrandImageSelector.jsx:144 msgid "Upload a custom brand logo to display beside the player controls when selected. This can be overridden for individual videos" msgstr "" @@ -3096,31 +3768,31 @@ msgstr "" msgid "Keep this option enabled to organize media into folders within the media library. Disabling it will remove folder organization." msgstr "" -#: pages/godam/components/tabs/VideoPlayer/CustomVideoPlayerCSS.jsx:42 -#: pages/godam/components/tabs/VideoPlayer/VideoPlayer.jsx:427 -#: pages/video-editor/components/layers/FormLayer.js:168 +#: pages/godam/components/tabs/VideoPlayer/CustomVideoPlayerCSS.jsx:50 +#: pages/godam/components/tabs/VideoPlayer/VideoPlayer.jsx:481 +#: pages/video-editor/components/layers/FormLayer.js:182 #: pages/video-editor/components/layers/PollLayer.js:84 msgid "Custom CSS" msgstr "" -#: pages/godam/components/tabs/VideoPlayer/VideoPlayer.jsx:343 +#: pages/godam/components/tabs/VideoPlayer/VideoPlayer.jsx:397 msgid "Player Skin" msgstr "" -#: pages/godam/components/tabs/VideoPlayer/VideoPlayer.jsx:379 -#: pages/godam/components/tabs/VideoPlayer/VideoPlayer.jsx:383 +#: pages/godam/components/tabs/VideoPlayer/VideoPlayer.jsx:433 +#: pages/godam/components/tabs/VideoPlayer/VideoPlayer.jsx:437 msgid "Brand color" msgstr "" -#: pages/godam/components/tabs/VideoPlayer/VideoPlayer.jsx:406 +#: pages/godam/components/tabs/VideoPlayer/VideoPlayer.jsx:460 msgid "The brand color will not be applied to the player skin." msgstr "" -#: pages/godam/components/tabs/VideoPlayer/VideoPlayer.jsx:412 +#: pages/godam/components/tabs/VideoPlayer/VideoPlayer.jsx:466 msgid "Select a brand color to apply to the video block. This can be overridden for individual videos by the video editor" msgstr "" -#: pages/godam/components/tabs/VideoPlayer/VideoPlayer.jsx:430 +#: pages/godam/components/tabs/VideoPlayer/VideoPlayer.jsx:484 msgid "Any custom CSS you add will be applied to all player skins. It’s global and not tied to a specific skin style." msgstr "" @@ -3226,11 +3898,6 @@ msgstr "" msgid "Lowest compression" msgstr "" -#: pages/godam/components/tabs/VideoSettings/VideoCompressQuality.jsx:25 -#: pages/godam/components/tabs/VideoSettings/VideoThumbnails.jsx:26 -msgid "Video Thumbnails" -msgstr "" - #: pages/godam/components/tabs/VideoSettings/VideoCompressQuality.jsx:36 msgid "Video compression quality" msgstr "" @@ -3348,7 +4015,7 @@ msgid "Hotspots" msgstr "" #: pages/help/App.js:53 -#: pages/video-editor/components/SidebarLayers.js:43 +#: pages/video-editor/components/SidebarLayers.js:45 msgid "Forms" msgstr "" @@ -3381,120 +4048,115 @@ msgstr "" msgid "Search using keywords" msgstr "" -#: pages/media-library/App.js:105 +#: pages/media-library/App.js:149 msgid "New Folder" msgstr "" -#: pages/media-library/App.js:124 +#: pages/media-library/App.js:160 msgid "Bulk Select" msgstr "" -#: pages/media-library/App.js:131 +#: pages/media-library/App.js:167 msgid "By Name (A-Z)" msgstr "" -#: pages/media-library/App.js:132 +#: pages/media-library/App.js:168 msgid "By Name (Z-A)" msgstr "" -#: pages/media-library/App.js:146 +#: pages/media-library/App.js:183 msgid "All Media" msgstr "" -#: pages/media-library/components/context-menu/ContextMenu.jsx:156 +#: pages/media-library/components/context-menu/ContextMenu.jsx:202 msgid "Folder ID is missing for download." msgstr "" -#: pages/media-library/components/context-menu/ContextMenu.jsx:165 +#: pages/media-library/components/context-menu/ContextMenu.jsx:211 msgid "Preparing ZIP file…" msgstr "" -#: pages/media-library/components/context-menu/ContextMenu.jsx:173 +#: pages/media-library/components/context-menu/ContextMenu.jsx:219 msgid "Failed to create ZIP file" msgstr "" -#: pages/media-library/components/context-menu/ContextMenu.jsx:179 +#: pages/media-library/components/context-menu/ContextMenu.jsx:225 msgid "Invalid response: missing ZIP URL" msgstr "" -#: pages/media-library/components/context-menu/ContextMenu.jsx:197 +#: pages/media-library/components/context-menu/ContextMenu.jsx:243 msgid "Failed to download folder" msgstr "" -#: pages/media-library/components/context-menu/ContextMenu.jsx:222 +#: pages/media-library/components/context-menu/ContextMenu.jsx:268 msgid "Invalid folder for bookmark." msgstr "" -#: pages/media-library/components/context-menu/ContextMenu.jsx:245 +#: pages/media-library/components/context-menu/ContextMenu.jsx:291 msgid "Bookmark removed successfully" msgstr "" -#: pages/media-library/components/context-menu/ContextMenu.jsx:246 +#: pages/media-library/components/context-menu/ContextMenu.jsx:292 msgid "Bookmark added successfully" msgstr "" -#: pages/media-library/components/context-menu/ContextMenu.jsx:256 +#: pages/media-library/components/context-menu/ContextMenu.jsx:302 msgid "Bookmarks added successfully" msgstr "" -#: pages/media-library/components/context-menu/ContextMenu.jsx:262 +#: pages/media-library/components/context-menu/ContextMenu.jsx:308 msgid "Failed to update bookmark status" msgstr "" -#: pages/media-library/components/context-menu/ContextMenu.jsx:278 +#: pages/media-library/components/context-menu/ContextMenu.jsx:324 msgid "Invalid folder to lock." msgstr "" -#: pages/media-library/components/context-menu/ContextMenu.jsx:302 +#: pages/media-library/components/context-menu/ContextMenu.jsx:340 msgid "Folder unlocked successfully" msgstr "" -#: pages/media-library/components/context-menu/ContextMenu.jsx:303 +#: pages/media-library/components/context-menu/ContextMenu.jsx:341 msgid "Folder locked successfully" msgstr "" -#: pages/media-library/components/context-menu/ContextMenu.jsx:314 +#: pages/media-library/components/context-menu/ContextMenu.jsx:363 msgid "Folders locked successfully" msgstr "" -#: pages/media-library/components/context-menu/ContextMenu.jsx:321 +#: pages/media-library/components/context-menu/ContextMenu.jsx:370 msgid "Failed to update folder lock status" msgstr "" -#: pages/media-library/components/context-menu/ContextMenu.jsx:371 +#: pages/media-library/components/context-menu/ContextMenu.jsx:422 msgid "New Sub-folder" msgstr "" -#: pages/media-library/components/context-menu/ContextMenu.jsx:379 +#: pages/media-library/components/context-menu/ContextMenu.jsx:430 #: pages/media-library/components/modal/RenameModal.jsx:98 msgid "Rename" msgstr "" -#: pages/media-library/components/context-menu/ContextMenu.jsx:387 +#: pages/media-library/components/context-menu/ContextMenu.jsx:438 msgid "Lock Folder" msgstr "" -#: pages/media-library/components/context-menu/ContextMenu.jsx:387 +#: pages/media-library/components/context-menu/ContextMenu.jsx:438 msgid "Unlock Folder" msgstr "" -#: pages/media-library/components/context-menu/ContextMenu.jsx:395 +#: pages/media-library/components/context-menu/ContextMenu.jsx:446 msgid "Add Bookmark" msgstr "" -#: pages/media-library/components/context-menu/ContextMenu.jsx:395 +#: pages/media-library/components/context-menu/ContextMenu.jsx:446 msgid "Remove Bookmark" msgstr "" -#: pages/media-library/components/context-menu/ContextMenu.jsx:403 +#: pages/media-library/components/context-menu/ContextMenu.jsx:456 msgid "Download Zip" msgstr "" -#: pages/media-library/components/context-menu/ContextMenu.jsx:411 -#: pages/media-library/components/modal/DeleteModal.jsx:114 -msgid "Delete" -msgstr "" - #: pages/media-library/components/folder-tree/BookmarkTab.jsx:43 #: pages/media-library/components/folder-tree/BookmarkTab.jsx:63 msgid "Bookmarks" @@ -3504,38 +4166,38 @@ msgstr "" msgid "No bookmarks yet" msgstr "" -#: pages/media-library/components/folder-tree/FolderTree.jsx:119 +#: pages/media-library/components/folder-tree/FolderTree.jsx:112 msgid "The parent folder is locked, so this folder cannot be moved." msgstr "" -#: pages/media-library/components/folder-tree/FolderTree.jsx:149 +#: pages/media-library/components/folder-tree/FolderTree.jsx:142 msgid "The destination folder is locked and cannot be modified" msgstr "" -#: pages/media-library/components/folder-tree/FolderTree.jsx:252 +#: pages/media-library/components/folder-tree/FolderTree.jsx:247 msgid "Currently opened folder is locked and cannot be modified" msgstr "" -#: pages/media-library/components/folder-tree/FolderTree.jsx:263 +#: pages/media-library/components/folder-tree/FolderTree.jsx:258 msgid "This folder is locked and cannot be modified" msgstr "" -#: pages/media-library/components/folder-tree/FolderTree.jsx:277 +#: pages/media-library/components/folder-tree/FolderTree.jsx:272 msgid "Items assigned successfully" msgstr "" -#: pages/media-library/components/folder-tree/FolderTree.jsx:297 +#: pages/media-library/components/folder-tree/FolderTree.jsx:292 msgid "Failed to assign items" msgstr "" -#: pages/media-library/components/folder-tree/FolderTree.jsx:379 -#: pages/media-library/components/folder-tree/FolderTree.jsx:421 +#: pages/media-library/components/folder-tree/FolderTree.jsx:374 +#: pages/media-library/components/folder-tree/FolderTree.jsx:417 #: pages/video-editor/components/media-grid/MediaGrid.jsx:139 msgid "Loading…" msgstr "" #. translators: %s is the error message -#: pages/media-library/components/folder-tree/FolderTree.jsx:384 +#: pages/media-library/components/folder-tree/FolderTree.jsx:379 #, js-format msgid "Error: %s" msgstr "" @@ -3549,11 +4211,11 @@ msgstr "" msgid "No locked folders yet" msgstr "" -#: pages/media-library/components/folder-tree/TreeItem.jsx:92 +#: pages/media-library/components/folder-tree/TreeItem.jsx:97 msgid "Collapse folder" msgstr "" -#: pages/media-library/components/folder-tree/TreeItem.jsx:92 +#: pages/media-library/components/folder-tree/TreeItem.jsx:97 msgid "Expand folder" msgstr "" @@ -3609,28 +4271,28 @@ msgstr "" msgid "Are you sure you want to proceed? This action cannot be undone." msgstr "" -#: pages/media-library/components/modal/FolderCreationModal.jsx:62 +#: pages/media-library/components/modal/FolderCreationModal.jsx:71 msgid "Folder created successfully" msgstr "" -#: pages/media-library/components/modal/FolderCreationModal.jsx:74 +#: pages/media-library/components/modal/FolderCreationModal.jsx:83 msgid "Folder with that name already exists." msgstr "" -#: pages/media-library/components/modal/FolderCreationModal.jsx:81 +#: pages/media-library/components/modal/FolderCreationModal.jsx:90 msgid "Failed to create folder" msgstr "" -#: pages/media-library/components/modal/FolderCreationModal.jsx:101 +#: pages/media-library/components/modal/FolderCreationModal.jsx:110 msgid "Create a new folder" msgstr "" -#: pages/media-library/components/modal/FolderCreationModal.jsx:108 +#: pages/media-library/components/modal/FolderCreationModal.jsx:117 #: pages/media-library/components/modal/RenameModal.jsx:88 msgid "Folder Name" msgstr "" -#: pages/media-library/components/modal/FolderCreationModal.jsx:116 +#: pages/media-library/components/modal/FolderCreationModal.jsx:125 msgid "Create" msgstr "" @@ -3666,6 +4328,198 @@ msgstr "" msgid "Error fetching results." msgstr "" +#: pages/tools/App.js:26 +msgid "Video Migration" +msgstr "" + +#: pages/tools/components/tabs/Migration/CoreVideoMigration.jsx:36 +#: pages/tools/components/tabs/Migration/VimeoVideoMigration.jsx:40 +msgid "Starting…" +msgstr "" + +#: pages/tools/components/tabs/Migration/CoreVideoMigration.jsx:54 +#: pages/tools/components/tabs/Migration/VimeoVideoMigration.jsx:69 +msgid "Something went wrong while starting migration." +msgstr "" + +#: pages/tools/components/tabs/Migration/CoreVideoMigration.jsx:130 +msgid "WordPress core video migration completed successfully πŸŽ‰" +msgstr "" + +#: pages/tools/components/tabs/Migration/CoreVideoMigration.jsx:133 +msgid "WordPress core video migration failed. Please try again." +msgstr "" + +#: pages/tools/components/tabs/Migration/CoreVideoMigration.jsx:165 +msgid "Core video Migration" +msgstr "" + +#: pages/tools/components/tabs/Migration/CoreVideoMigration.jsx:167 +msgid "This tool replaces WordPress core video blocks with GoDAM video blocks. It does not replace videos added in the WordPress Classic Editor." +msgstr "" + +#: pages/tools/components/tabs/Migration/CoreVideoMigration.jsx:186 +#: pages/tools/components/tabs/Migration/VimeoVideoMigration.jsx:222 +msgid "Abort" +msgstr "" + +#: pages/tools/components/tabs/Migration/CoreVideoMigration.jsx:195 +#: pages/tools/components/tabs/Migration/VimeoVideoMigration.jsx:231 +msgid "Restart Migration" +msgstr "" + +#: pages/tools/components/tabs/Migration/CoreVideoMigration.jsx:195 +#: pages/tools/components/tabs/Migration/VimeoVideoMigration.jsx:231 +msgid "Start Migration" +msgstr "" + +#: pages/tools/components/tabs/Migration/VimeoVideoMigration.jsx:141 +msgid "Vimeo Video Migration has been successfully completed for all posts and pages πŸŽ‰" +msgstr "" + +#: pages/tools/components/tabs/Migration/VimeoVideoMigration.jsx:144 +msgid "Vimeo Video Migration failed. Please try again." +msgstr "" + +#: pages/tools/components/tabs/Migration/VimeoVideoMigration.jsx:176 +msgid "Vimeo video Migration" +msgstr "" + +#: pages/tools/components/tabs/Migration/VimeoVideoMigration.jsx:178 +msgid "This tool replaces WordPress Vimeo Embed blocks with GoDAM Video blocks. It does not replace Vimeo videos added in the WordPress Classic Editor." +msgstr "" + +#: pages/tools/components/tabs/Migration/VimeoVideoMigration.jsx:183 +msgid "This migrator will only migrate Vimeo videos that are already fetched on GoDAM Central." +msgstr "" + +#: pages/tools/components/tabs/Migration/VimeoVideoMigration.jsx:184 +msgid "Open" +msgstr "" + +#: pages/tools/components/tabs/Migration/VimeoVideoMigration.jsx:199 +msgid "Vimeo video migration in WordPress can only begin after all Vimeo videos have been successfully migrated to GoDAM Central, " +msgstr "" + +#: pages/tools/components/tabs/Migration/VimeoVideoMigration.jsx:201 +msgid "Check here!" +msgstr "" + +#: pages/tools/components/tabs/Migration/VimeoVideoMigration.jsx:210 +msgid "Migration is in progress. Please wait…" +msgstr "" + +#: pages/tools/components/tabs/RetranscodeTab.jsx:55 +msgid "The requested operation is not allowed. The nonce provided in the URL is invalid or expired." +msgstr "" + +#. translators: %d is the number of selected media files. +#: pages/tools/components/tabs/RetranscodeTab.jsx:67 +#, js-format +msgid "You are retranscoding %d selected media file(s) from the Media Library." +msgstr "" + +#: pages/tools/components/tabs/RetranscodeTab.jsx:97 +msgid "No media files found for retranscoding. Please ensure you have media files that require retranscoding." +msgstr "" + +#. translators: %s is the error message. +#: pages/tools/components/tabs/RetranscodeTab.jsx:104 +#, js-format +msgid "Failed to fetch media for retranscoding: %s" +msgstr "" + +#: pages/tools/components/tabs/RetranscodeTab.jsx:121 +msgid "Aborting operation to send media for retranscoding." +msgstr "" + +#. translators: %d is the number of virtual media files found. +#: pages/tools/components/tabs/RetranscodeTab.jsx:230 +#, js-format +msgid "%d virtual media file(s) found, which need to be retranscoded on GoDAM Central." +msgstr "" + +#. translators: %d is the number of media files retranscoded. +#: pages/tools/components/tabs/RetranscodeTab.jsx:239 +#, js-format +msgid "Successfully sent %d media file(s) for retranscoding." +msgstr "" + +#. translators: %d is the number of media files that failed to retranscode. +#: pages/tools/components/tabs/RetranscodeTab.jsx:254 +#, js-format +msgid "Failed to send %d media file(s) for retranscoding." +msgstr "" + +#: pages/tools/components/tabs/RetranscodeTab.jsx:267 +msgid "Operation completed without any media files to retranscode." +msgstr "" + +#: pages/tools/components/tabs/RetranscodeTab.jsx:300 +msgid "This tool allows you to retranscode your media files. You can either retranscode specific files selected from the Media Library, or only those that are not yet transcoded." +msgstr "" + +#: pages/tools/components/tabs/RetranscodeTab.jsx:307 +msgid "Checking the \"Force retranscode\" option will retranscode all media files regardless of their current state." +msgstr "" + +#: pages/tools/components/tabs/RetranscodeTab.jsx:312 +msgid "Note: Retranscoding will use your bandwidth allowance. Use the force retranscode option carefully." +msgstr "" + +#: pages/tools/components/tabs/RetranscodeTab.jsx:332 +msgid "Force retranscode (even if already transcoded)" +msgstr "" + +#: pages/tools/components/tabs/RetranscodeTab.jsx:348 +msgid "Fetching media that require retranscoding…" +msgstr "" + +#. translators: %d is the number of selected media files. +#: pages/tools/components/tabs/RetranscodeTab.jsx:359 +#, js-format +msgid "%d selected media file(s) will be retranscoded." +msgstr "" + +#. translators: %d is the number of media files that require retranscoding. +#: pages/tools/components/tabs/RetranscodeTab.jsx:363 +#, js-format +msgid "%1$d/%2$d media file(s) require retranscoding." +msgstr "" + +#. translators: %d is the number of media files that will be retranscoded. +#: pages/tools/components/tabs/RetranscodeTab.jsx:369 +#, js-format +msgid "%1$d/%1$d media file(s) will be retranscoded regardless of their current state." +msgstr "" + +#. translators: %d is the number of media files sent for retranscoding. +#: pages/tools/components/tabs/RetranscodeTab.jsx:382 +#, js-format +msgid "%1$d/%2$d media files sent for retranscoding…" +msgstr "" + +#: pages/tools/components/tabs/RetranscodeTab.jsx:421 +msgid "Fetch Media" +msgstr "" + +#: pages/tools/components/tabs/RetranscodeTab.jsx:423 +msgid "Start Retranscoding" +msgstr "" + +#: pages/tools/components/tabs/RetranscodeTab.jsx:425 +msgid "Restart Retranscoding" +msgstr "" + +#: pages/tools/components/tabs/RetranscodeTab.jsx:439 +msgid "Abort Operation" +msgstr "" + +#: pages/tools/components/tabs/RetranscodeTab.jsx:451 +#: pages/video-editor/components/hotspot/FontAwesomeIconPicker.js:154 +msgid "Reset" +msgstr "" + #: pages/video-editor/AttachmentPicker.jsx:65 msgid "Dismiss banner" msgstr "" @@ -3687,7 +4541,7 @@ msgid "Add video" msgstr "" #: pages/video-editor/components/ads/CustomAdSettings.js:93 -#: pages/video-editor/components/SidebarLayers.js:110 +#: pages/video-editor/components/SidebarLayers.js:124 msgid "This ad will be overriden by Ad server's ads" msgstr "" @@ -3695,9 +4549,11 @@ msgstr "" #: pages/video-editor/components/forms/EverestForm.js:91 #: pages/video-editor/components/forms/FluentForm.js:93 #: pages/video-editor/components/forms/forminatorForms.js:85 +#: pages/video-editor/components/forms/MetForm.js:96 +#: pages/video-editor/components/forms/NinjaForm.js:98 #: pages/video-editor/components/forms/Sureform.js:85 #: pages/video-editor/components/forms/WPForm.js:85 -#: pages/video-editor/components/layers/FormLayer.js:131 +#: pages/video-editor/components/layers/FormLayer.js:145 #: pages/video-editor/components/layers/HotspotLayer.js:130 msgid "This features is available in premium version" msgstr "" @@ -3754,12 +4610,6 @@ msgstr "" msgid "Use this Image" msgstr "" -#: pages/video-editor/components/appearance/Appearance.js:216 -#: pages/video-editor/components/appearance/Appearance.js:513 -#: pages/video-editor/VideoJSPlayer.js:284 -msgid "Custom Play Button" -msgstr "" - #: pages/video-editor/components/appearance/Appearance.js:400 msgid "Display Settings" msgstr "" @@ -3884,10 +4734,6 @@ msgstr "" msgid "Replace Image" msgstr "" -#: pages/video-editor/components/cta/ImageCTA.js:189 -msgid "Remove Image" -msgstr "" - #: pages/video-editor/components/cta/ImageCTA.js:210 #: pages/video-editor/components/layers/CTALayer.js:59 msgid "Text" @@ -3956,6 +4802,8 @@ msgstr "" #: pages/video-editor/components/forms/forminatorForms.js:79 #: pages/video-editor/components/forms/GravityForm.js:101 #: pages/video-editor/components/forms/JetpackForm.js:206 +#: pages/video-editor/components/forms/MetForm.js:89 +#: pages/video-editor/components/forms/NinjaForm.js:91 #: pages/video-editor/components/forms/Sureform.js:79 #: pages/video-editor/components/forms/WPForm.js:79 msgid "Loading form…" @@ -3967,24 +4815,13 @@ msgstr "" #: pages/video-editor/components/forms/forminatorForms.js:96 #: pages/video-editor/components/forms/GravityForm.js:113 #: pages/video-editor/components/forms/JetpackForm.js:232 +#: pages/video-editor/components/forms/MetForm.js:107 +#: pages/video-editor/components/forms/NinjaForm.js:109 #: pages/video-editor/components/forms/Sureform.js:96 #: pages/video-editor/components/forms/WPForm.js:96 msgid "Edit form" msgstr "" -#: pages/video-editor/components/forms/CF7.js:126 -#: pages/video-editor/components/forms/EverestForm.js:113 -#: pages/video-editor/components/forms/FluentForm.js:115 -#: pages/video-editor/components/forms/forminatorForms.js:107 -#: pages/video-editor/components/forms/GravityForm.js:124 -#: pages/video-editor/components/forms/JetpackForm.js:266 -#: pages/video-editor/components/forms/Sureform.js:107 -#: pages/video-editor/components/forms/WPForm.js:107 -#: pages/video-editor/components/layers/CTALayer.js:238 -#: pages/video-editor/components/layers/PollLayer.js:119 -msgid "Skip" -msgstr "" - #: pages/video-editor/components/forms/EverestForm.js:54 msgid "Please activate the Everest Forms plugin to use this feature." msgstr "" @@ -4037,6 +4874,14 @@ msgstr "" msgid " first." msgstr "" +#: pages/video-editor/components/forms/MetForm.js:55 +msgid "Please activate the MetForm plugin to use this feature." +msgstr "" + +#: pages/video-editor/components/forms/NinjaForm.js:55 +msgid "Please activate the Ninja Forms plugin to use this feature." +msgstr "" + #: pages/video-editor/components/forms/Sureform.js:54 msgid "Please activate the SureForms plugin to use this feature." msgstr "" @@ -4057,10 +4902,6 @@ msgstr "" msgid "Search icons…" msgstr "" -#: pages/video-editor/components/hotspot/FontAwesomeIconPicker.js:154 -msgid "Reset" -msgstr "" - #: pages/video-editor/components/layers/AdsLayer.js:33 msgid "Self hosted video Ad" msgstr "" @@ -4086,28 +4927,28 @@ msgid "Advanced" msgstr "" #: pages/video-editor/components/layers/CTALayer.js:192 -#: pages/video-editor/components/layers/FormLayer.js:158 +#: pages/video-editor/components/layers/FormLayer.js:172 #: pages/video-editor/components/layers/PollLayer.js:74 msgid "Color" msgstr "" #: pages/video-editor/components/layers/CTALayer.js:196 -#: pages/video-editor/components/layers/FormLayer.js:162 +#: pages/video-editor/components/layers/FormLayer.js:176 #: pages/video-editor/components/layers/PollLayer.js:79 msgid "Layer background color" msgstr "" -#: pages/video-editor/components/layers/FormLayer.js:142 +#: pages/video-editor/components/layers/FormLayer.js:156 #: pages/video-editor/components/layers/PollLayer.js:54 msgid "Allow user to skip" msgstr "" -#: pages/video-editor/components/layers/FormLayer.js:147 +#: pages/video-editor/components/layers/FormLayer.js:161 #: pages/video-editor/components/layers/PollLayer.js:59 msgid "If enabled, the user will be able to skip the form submission." msgstr "" -#: pages/video-editor/components/layers/FormLayer.js:153 +#: pages/video-editor/components/layers/FormLayer.js:167 #: pages/video-editor/components/layers/PollLayer.js:65 msgid "Advance" msgstr "" @@ -4132,12 +4973,6 @@ msgstr "" msgid "Player will pause the video while the layer is displayed and users hover over the hotspots." msgstr "" -#. translators: %d is the hotspot index -#: pages/video-editor/components/layers/HotspotLayer.js:180 -#, js-format -msgid "Hotspot %d" -msgstr "" - #. translators: %d is the hotspot index #: pages/video-editor/components/layers/HotspotLayer.js:187 #, js-format @@ -4201,174 +5036,184 @@ msgstr "" msgid "Select poll" msgstr "" -#: pages/video-editor/components/LayerSelector.jsx:36 -#: pages/video-editor/components/LayerSelector.jsx:44 -#: pages/video-editor/components/SidebarLayers.js:49 +#: pages/video-editor/components/LayerSelector.jsx:38 +#: pages/video-editor/components/LayerSelector.jsx:46 +#: pages/video-editor/components/SidebarLayers.js:51 #: pages/video-editor/VideoJSPlayer.js:31 msgid "Gravity Forms" msgstr "" -#: pages/video-editor/components/LayerSelector.jsx:37 +#: pages/video-editor/components/LayerSelector.jsx:39 msgid "Collect user input using Gravity Forms" msgstr "" -#: pages/video-editor/components/LayerSelector.jsx:44 -#: pages/video-editor/components/LayerSelector.jsx:56 -#: pages/video-editor/components/LayerSelector.jsx:68 -#: pages/video-editor/components/LayerSelector.jsx:81 -#: pages/video-editor/components/LayerSelector.jsx:94 -#: pages/video-editor/components/LayerSelector.jsx:107 -#: pages/video-editor/components/LayerSelector.jsx:120 -#: pages/video-editor/components/LayerSelector.jsx:133 +#: pages/video-editor/components/LayerSelector.jsx:46 +#: pages/video-editor/components/LayerSelector.jsx:58 +#: pages/video-editor/components/LayerSelector.jsx:70 +#: pages/video-editor/components/LayerSelector.jsx:83 +#: pages/video-editor/components/LayerSelector.jsx:96 +#: pages/video-editor/components/LayerSelector.jsx:109 +#: pages/video-editor/components/LayerSelector.jsx:122 +#: pages/video-editor/components/LayerSelector.jsx:135 +#: pages/video-editor/components/LayerSelector.jsx:148 +#: pages/video-editor/components/LayerSelector.jsx:160 msgid "plugin is required to use Form layer" msgstr "" -#: pages/video-editor/components/LayerSelector.jsx:48 -#: pages/video-editor/components/SidebarLayers.js:55 +#: pages/video-editor/components/LayerSelector.jsx:50 +#: pages/video-editor/components/SidebarLayers.js:57 msgid "WPForms" msgstr "" -#: pages/video-editor/components/LayerSelector.jsx:49 +#: pages/video-editor/components/LayerSelector.jsx:51 msgid "Collect user input using WPForms" msgstr "" -#: pages/video-editor/components/LayerSelector.jsx:56 +#: pages/video-editor/components/LayerSelector.jsx:58 msgid "WP Forms" msgstr "" -#: pages/video-editor/components/LayerSelector.jsx:60 -#: pages/video-editor/components/LayerSelector.jsx:68 -#: pages/video-editor/components/SidebarLayers.js:61 +#: pages/video-editor/components/LayerSelector.jsx:62 +#: pages/video-editor/components/LayerSelector.jsx:70 +#: pages/video-editor/components/SidebarLayers.js:63 msgid "Contact Form 7" msgstr "" -#: pages/video-editor/components/LayerSelector.jsx:61 +#: pages/video-editor/components/LayerSelector.jsx:63 msgid "Collect user input using Contact Form 7" msgstr "" -#: pages/video-editor/components/LayerSelector.jsx:72 -#: pages/video-editor/components/SidebarLayers.js:67 +#: pages/video-editor/components/LayerSelector.jsx:74 +#: pages/video-editor/components/SidebarLayers.js:69 msgid "Jetpack Forms" msgstr "" -#: pages/video-editor/components/LayerSelector.jsx:73 +#: pages/video-editor/components/LayerSelector.jsx:75 msgid "Collect user input using Jetpack Forms" msgstr "" -#: pages/video-editor/components/LayerSelector.jsx:81 +#: pages/video-editor/components/LayerSelector.jsx:83 msgid "Jetpack" msgstr "" -#: pages/video-editor/components/LayerSelector.jsx:85 -#: pages/video-editor/components/LayerSelector.jsx:94 -#: pages/video-editor/components/SidebarLayers.js:73 +#: pages/video-editor/components/LayerSelector.jsx:87 +#: pages/video-editor/components/LayerSelector.jsx:96 +#: pages/video-editor/components/SidebarLayers.js:75 msgid "SureForms" msgstr "" -#: pages/video-editor/components/LayerSelector.jsx:86 +#: pages/video-editor/components/LayerSelector.jsx:88 msgid "Collect user input using SureForms" msgstr "" -#: pages/video-editor/components/LayerSelector.jsx:98 -#: pages/video-editor/components/LayerSelector.jsx:107 -#: pages/video-editor/components/SidebarLayers.js:79 +#: pages/video-editor/components/LayerSelector.jsx:100 +#: pages/video-editor/components/LayerSelector.jsx:109 +#: pages/video-editor/components/SidebarLayers.js:81 msgid "Forminator Forms" msgstr "" -#: pages/video-editor/components/LayerSelector.jsx:99 +#: pages/video-editor/components/LayerSelector.jsx:101 msgid "Collect user input using Forminator Forms" msgstr "" -#: pages/video-editor/components/LayerSelector.jsx:111 -#: pages/video-editor/components/LayerSelector.jsx:120 -#: pages/video-editor/components/SidebarLayers.js:85 +#: pages/video-editor/components/LayerSelector.jsx:113 +#: pages/video-editor/components/LayerSelector.jsx:122 +#: pages/video-editor/components/SidebarLayers.js:87 msgid "Fluent Forms" msgstr "" -#: pages/video-editor/components/LayerSelector.jsx:112 +#: pages/video-editor/components/LayerSelector.jsx:114 msgid "Collect user input using Fluent Forms" msgstr "" -#: pages/video-editor/components/LayerSelector.jsx:124 -#: pages/video-editor/components/LayerSelector.jsx:133 -#: pages/video-editor/components/SidebarLayers.js:91 -msgid "Everest Forms" +#: pages/video-editor/components/LayerSelector.jsx:127 +msgid "Collect user input using Everest Forms" msgstr "" -#: pages/video-editor/components/LayerSelector.jsx:125 -msgid "Collect user input using Everest Forms" +#: pages/video-editor/components/LayerSelector.jsx:140 +msgid "Collect user input using Ninja Forms" +msgstr "" + +#: pages/video-editor/components/LayerSelector.jsx:152 +#: pages/video-editor/components/LayerSelector.jsx:160 +#: pages/video-editor/components/SidebarLayers.js:105 +msgid "MetForm" +msgstr "" + +#: pages/video-editor/components/LayerSelector.jsx:153 +msgid "Collect user input using MetForm" msgstr "" -#: pages/video-editor/components/LayerSelector.jsx:137 -#: pages/video-editor/components/SidebarLayers.js:36 -#: pages/video-editor/components/SidebarLayers.js:39 +#: pages/video-editor/components/LayerSelector.jsx:164 +#: pages/video-editor/components/SidebarLayers.js:38 +#: pages/video-editor/components/SidebarLayers.js:41 #: pages/video-editor/VideoJSPlayer.js:36 msgid "CTA" msgstr "" -#: pages/video-editor/components/LayerSelector.jsx:138 +#: pages/video-editor/components/LayerSelector.jsx:165 msgid "Guide users toward a specific action" msgstr "" -#: pages/video-editor/components/LayerSelector.jsx:144 -#: pages/video-editor/components/SidebarLayers.js:99 -#: pages/video-editor/components/SidebarLayers.js:102 +#: pages/video-editor/components/LayerSelector.jsx:171 +#: pages/video-editor/components/SidebarLayers.js:113 +#: pages/video-editor/components/SidebarLayers.js:116 #: pages/video-editor/VideoJSPlayer.js:41 msgid "Hotspot" msgstr "" -#: pages/video-editor/components/LayerSelector.jsx:145 +#: pages/video-editor/components/LayerSelector.jsx:172 msgid "Highlighting key areas with focus" msgstr "" -#: pages/video-editor/components/LayerSelector.jsx:151 -#: pages/video-editor/components/SidebarLayers.js:106 -#: pages/video-editor/components/SidebarLayers.js:109 +#: pages/video-editor/components/LayerSelector.jsx:178 +#: pages/video-editor/components/SidebarLayers.js:120 +#: pages/video-editor/components/SidebarLayers.js:123 #: pages/video-editor/VideoJSPlayer.js:46 msgid "Ad" msgstr "" -#: pages/video-editor/components/LayerSelector.jsx:152 +#: pages/video-editor/components/LayerSelector.jsx:179 msgid "Redirect user to custom advertisement" msgstr "" -#: pages/video-editor/components/LayerSelector.jsx:158 -#: pages/video-editor/components/SidebarLayers.js:114 -#: pages/video-editor/components/SidebarLayers.js:117 +#: pages/video-editor/components/LayerSelector.jsx:185 +#: pages/video-editor/components/SidebarLayers.js:128 +#: pages/video-editor/components/SidebarLayers.js:131 #: pages/video-editor/VideoJSPlayer.js:51 msgid "Poll" msgstr "" -#: pages/video-editor/components/LayerSelector.jsx:159 +#: pages/video-editor/components/LayerSelector.jsx:186 msgid "Gather opinions through interactive voting" msgstr "" -#: pages/video-editor/components/LayerSelector.jsx:164 +#: pages/video-editor/components/LayerSelector.jsx:191 msgid "WP-Polls" msgstr "" -#: pages/video-editor/components/LayerSelector.jsx:164 +#: pages/video-editor/components/LayerSelector.jsx:191 msgid "plugin is required to use Poll layer" msgstr "" -#: pages/video-editor/components/LayerSelector.jsx:206 +#: pages/video-editor/components/LayerSelector.jsx:233 msgid "All" msgstr "" -#: pages/video-editor/components/LayerSelector.jsx:285 -#: pages/video-editor/VideoEditor.js:261 +#: pages/video-editor/components/LayerSelector.jsx:312 +#: pages/video-editor/VideoEditor.js:276 msgid "Layers" msgstr "" -#: pages/video-editor/components/LayerSelector.jsx:314 +#: pages/video-editor/components/LayerSelector.jsx:341 msgid "search layers…" msgstr "" -#: pages/video-editor/components/LayerSelector.jsx:358 +#: pages/video-editor/components/LayerSelector.jsx:385 msgid "Layer" msgstr "" -#: pages/video-editor/components/LayerSelector.jsx:387 +#: pages/video-editor/components/LayerSelector.jsx:414 msgid "Customise Layer" msgstr "" @@ -4388,123 +5233,131 @@ msgstr "" msgid " to use them in Godam." msgstr "" -#: pages/video-editor/components/media-grid/MediaItem.jsx:35 -#: pages/video-editor/VideoEditor.js:246 +#: pages/video-editor/components/media-grid/MediaItem.jsx:41 +#: pages/video-editor/VideoEditor.js:261 msgid "GoDAM Video Block copied to clipboard" msgstr "" -#: pages/video-editor/components/media-grid/MediaItem.jsx:38 -#: pages/video-editor/VideoEditor.js:249 +#: pages/video-editor/components/media-grid/MediaItem.jsx:44 +#: pages/video-editor/VideoEditor.js:264 msgid "Failed to copy GoDAM Video Block" msgstr "" -#: pages/video-editor/components/media-grid/MediaItem.jsx:81 +#: pages/video-editor/components/media-grid/MediaItem.jsx:89 msgid "Preview template" msgstr "" -#: pages/video-editor/components/media-grid/MediaItem.jsx:88 +#: pages/video-editor/components/media-grid/MediaItem.jsx:96 msgid "Preview Video" msgstr "" -#: pages/video-editor/components/media-grid/MediaItem.jsx:95 +#: pages/video-editor/components/media-grid/MediaItem.jsx:103 msgid "Copy Video Block" msgstr "" -#: pages/video-editor/components/media-grid/MediaItem.jsx:102 +#: pages/video-editor/components/media-grid/MediaItem.jsx:110 msgid "Copy video Link" msgstr "" -#: pages/video-editor/components/media-grid/MediaItem.jsx:113 +#: pages/video-editor/components/media-grid/MediaItem.jsx:121 msgid "Quick actions." msgstr "" -#: pages/video-editor/components/SidebarLayers.js:52 +#: pages/video-editor/components/SidebarLayers.js:54 msgid "Gravity Forms plugin is not active" msgstr "" -#: pages/video-editor/components/SidebarLayers.js:58 +#: pages/video-editor/components/SidebarLayers.js:60 msgid "WPForms plugin is not active" msgstr "" -#: pages/video-editor/components/SidebarLayers.js:64 +#: pages/video-editor/components/SidebarLayers.js:66 msgid "Contact Form 7 plugin is not active" msgstr "" -#: pages/video-editor/components/SidebarLayers.js:70 +#: pages/video-editor/components/SidebarLayers.js:72 msgid "Jetpack plugin is not active" msgstr "" -#: pages/video-editor/components/SidebarLayers.js:76 +#: pages/video-editor/components/SidebarLayers.js:78 msgid "SureForms plugin is not active" msgstr "" -#: pages/video-editor/components/SidebarLayers.js:82 +#: pages/video-editor/components/SidebarLayers.js:84 msgid "Forminator Forms plugin is not active" msgstr "" -#: pages/video-editor/components/SidebarLayers.js:88 +#: pages/video-editor/components/SidebarLayers.js:90 msgid "Fluent Forms plugin is not active" msgstr "" -#: pages/video-editor/components/SidebarLayers.js:94 +#: pages/video-editor/components/SidebarLayers.js:96 msgid "Everest Forms plugin is not active" msgstr "" -#: pages/video-editor/components/SidebarLayers.js:119 +#: pages/video-editor/components/SidebarLayers.js:102 +msgid "Ninja Forms plugin is not active" +msgstr "" + +#: pages/video-editor/components/SidebarLayers.js:108 +msgid "MetForm plugin is not active" +msgstr "" + +#: pages/video-editor/components/SidebarLayers.js:133 msgid "Poll plugin is not active" msgstr "" -#: pages/video-editor/components/SidebarLayers.js:127 +#: pages/video-editor/components/SidebarLayers.js:141 msgid "This feature is available in the premium version" msgstr "" -#: pages/video-editor/components/SidebarLayers.js:212 +#: pages/video-editor/components/SidebarLayers.js:226 msgid "Click me!" msgstr "" -#: pages/video-editor/components/SidebarLayers.js:330 +#: pages/video-editor/components/SidebarLayers.js:344 msgid "No layers added" msgstr "" -#: pages/video-editor/components/SidebarLayers.js:361 +#: pages/video-editor/components/SidebarLayers.js:375 msgid "Add layer at " msgstr "" -#: pages/video-editor/components/SidebarLayers.js:365 +#: pages/video-editor/components/SidebarLayers.js:379 msgid "There is already a layer at this timestamp. Please choose a different timestamp." msgstr "" -#: pages/video-editor/components/SidebarLayers.js:371 +#: pages/video-editor/components/SidebarLayers.js:385 msgid "Play video to add layer." msgstr "" -#: pages/video-editor/VideoEditor.js:200 +#: pages/video-editor/VideoEditor.js:215 msgid "Please select a form for the layer at timestamp: " msgid_plural "Please select a form for the layers at timestamps: " msgstr[0] "" msgstr[1] "" -#: pages/video-editor/VideoEditor.js:362 +#: pages/video-editor/VideoEditor.js:377 msgid "Video changes saved successfully" msgstr "" -#: pages/video-editor/VideoEditor.js:379 +#: pages/video-editor/VideoEditor.js:394 msgid "You can copy the block into one of the two options:" msgstr "" -#: pages/video-editor/VideoEditor.js:381 +#: pages/video-editor/VideoEditor.js:396 msgid "1. Insert as a block in the Block editor." msgstr "" -#: pages/video-editor/VideoEditor.js:383 +#: pages/video-editor/VideoEditor.js:398 msgid "2. Insert as HTML content in the Block editor." msgstr "" -#: pages/video-editor/VideoEditor.js:394 +#: pages/video-editor/VideoEditor.js:409 msgid "Copy Block" msgstr "" -#: pages/video-editor/VideoEditor.js:404 +#: pages/video-editor/VideoEditor.js:419 msgid "Preview" msgstr "" @@ -4557,39 +5410,85 @@ msgid "Display a grid of GoDAM videos." msgstr "" #: assets/build/blocks/godam-gallery/block.json +#: assets/build/blocks/godam-video-duration/block.json +#: assets/build/blocks/godam-video-thumbnail/block.json #: assets/src/blocks/godam-gallery/block.json +#: assets/src/blocks/godam-video-duration/block.json +#: assets/src/blocks/godam-video-thumbnail/block.json msgctxt "block keyword" msgid "video" msgstr "" #: assets/build/blocks/godam-gallery/block.json +#: assets/build/blocks/godam-video-duration/block.json +#: assets/build/blocks/godam-video-thumbnail/block.json #: assets/src/blocks/godam-gallery/block.json +#: assets/src/blocks/godam-video-duration/block.json +#: assets/src/blocks/godam-video-thumbnail/block.json msgctxt "block keyword" msgid "gallery" msgstr "" #: assets/build/blocks/godam-gallery/block.json +#: assets/build/blocks/godam-video-duration/block.json +#: assets/build/blocks/godam-video-thumbnail/block.json #: assets/src/blocks/godam-gallery/block.json +#: assets/src/blocks/godam-video-duration/block.json +#: assets/src/blocks/godam-video-thumbnail/block.json msgctxt "block keyword" msgid "grid" msgstr "" #: assets/build/blocks/godam-gallery/block.json +#: assets/build/blocks/godam-video-duration/block.json +#: assets/build/blocks/godam-video-thumbnail/block.json #: assets/src/blocks/godam-gallery/block.json +#: assets/src/blocks/godam-video-duration/block.json +#: assets/src/blocks/godam-video-thumbnail/block.json msgctxt "block keyword" msgid "videos" msgstr "" +#: assets/build/blocks/godam-video-duration/block.json +#: assets/src/blocks/godam-video-duration/block.json +msgctxt "block title" +msgid "GoDAM Video Duration" +msgstr "" + +#: assets/build/blocks/godam-video-duration/block.json +#: assets/src/blocks/godam-video-duration/block.json +msgctxt "block description" +msgid "Display GoDAM video's duration" +msgstr "" + +#: assets/build/blocks/godam-video-thumbnail/block.json +#: assets/src/blocks/godam-video-thumbnail/block.json +msgctxt "block title" +msgid "GoDAM Video Thumbnail" +msgstr "" + +#: assets/build/blocks/godam-video-thumbnail/block.json +#: assets/src/blocks/godam-video-thumbnail/block.json +msgctxt "block description" +msgid "Display GoDAM video thumbnail" +msgstr "" + +#: assets/build/blocks/godam-video-thumbnail/block.json +#: assets/src/blocks/godam-video-thumbnail/block.json +msgctxt "block keyword" +msgid "thumbnail" +msgstr "" + #: assets/build/blocks/sureforms/blocks/recorder/block.json #: assets/src/blocks/sureforms/blocks/recorder/block.json msgctxt "block title" -msgid "Godam Recorder" +msgid "GoDAM Recorder" msgstr "" #: assets/build/blocks/sureforms/blocks/recorder/block.json #: assets/src/blocks/sureforms/blocks/recorder/block.json msgctxt "block description" -msgid "Recorder field for sureforms" +msgid "Enable video submissions inside forms using the GoDAM Recorder field that supports webcam and screencast" msgstr "" #: assets/build/blocks/sureforms/blocks/recorder/block.json diff --git a/package.json b/package.json index 052ba3f44..2029c3624 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "godam", - "version": "1.3.5", + "version": "1.4.0", "description": "A WordPress plugin to manage digital assets", "private": true, "author": "rtCamp", diff --git a/pages/analytics/index.scss b/pages/analytics/index.scss index e2c100feb..156702946 100644 --- a/pages/analytics/index.scss +++ b/pages/analytics/index.scss @@ -13,6 +13,7 @@ } #root-video-analytics { + .godam-settings-header-content { padding: 0 2.5rem; } @@ -401,7 +402,7 @@ justify-content: space-between; position: relative; border-bottom: 1px solid #ddd; - margin: 0 0 0 40px; + margin: 0 40px; padding-bottom: 8px; } diff --git a/pages/dashboard/components/ChartsDashboard.js b/pages/dashboard/components/ChartsDashboard.js index 2e62ed571..9627bf48b 100644 --- a/pages/dashboard/components/ChartsDashboard.js +++ b/pages/dashboard/components/ChartsDashboard.js @@ -116,7 +116,7 @@ export function generateUsageDonutChart( selector, usedRaw, totalRaw, type = 'ba .attr( 'dy', '-0.25em' ) .style( 'font-size', '14px' ) .style( 'font-weight', 'bold' ) - .text( total === 0 ? '0%' : `${ percent.toFixed( 1 ) }%` ); + .text( total === 0 ? '0%' : `${ percent?.toFixed( 1 ) }%` ); svg .append( 'text' ) @@ -187,7 +187,7 @@ function main() { const watchTimeEl = document.getElementById( 'watch-time' ); if ( watchTimeEl ) { - watchTimeEl.innerText = `${ formatWatchTime( playTime.toFixed( 2 ) ) }`; + watchTimeEl.innerText = `${ formatWatchTime( playTime?.toFixed( 2 ) ) }`; } const analyticsContainer = document.getElementById( 'video-analytics-container' ); diff --git a/pages/media-library/components/folder-tree/BookmarkTab.jsx b/pages/media-library/components/folder-tree/BookmarkTab.jsx index 7eaa5f567..3dc13522e 100644 --- a/pages/media-library/components/folder-tree/BookmarkTab.jsx +++ b/pages/media-library/components/folder-tree/BookmarkTab.jsx @@ -41,7 +41,7 @@ const BookmarkTab = ( { handleContextMenu } ) => { { bookmarkCount } { __( 'Bookmarks', 'godam' ) } } - initialOpen={ true } + initialOpen={ false } icon={ starFilled } >
@@ -61,7 +61,7 @@ const BookmarkTab = ( { handleContextMenu } ) => { { bookmarkCount } { __( 'Bookmarks', 'godam' ) } } - initialOpen={ true } + initialOpen={ false } icon={ starFilled } >
diff --git a/pages/media-library/components/folder-tree/LockedTab.jsx b/pages/media-library/components/folder-tree/LockedTab.jsx index f21d509a5..1339d339a 100644 --- a/pages/media-library/components/folder-tree/LockedTab.jsx +++ b/pages/media-library/components/folder-tree/LockedTab.jsx @@ -50,7 +50,7 @@ const LockedTab = ( { handleContextMenu } ) => { { lockedCount } { __( 'Locked', 'godam' ) } } - initialOpen={ true } + initialOpen={ false } icon={ lock } >
@@ -70,7 +70,7 @@ const LockedTab = ( { handleContextMenu } ) => { { lockedCount } { __( 'Locked', 'godam' ) } } - initialOpen={ true } + initialOpen={ false } icon={ lock } >
diff --git a/pages/media-library/components/folder-tree/css/tree.scss b/pages/media-library/components/folder-tree/css/tree.scss index 3ea8ffca0..859939a98 100644 --- a/pages/media-library/components/folder-tree/css/tree.scss +++ b/pages/media-library/components/folder-tree/css/tree.scss @@ -16,6 +16,11 @@ font-size: 0.875rem; padding: 0.25rem 0.5rem; transition: color 0.2s ease, text-decoration-color 0.2s ease; + margin-bottom: 1rem; + + @media (max-width: 900px) { + margin-bottom: 1.5rem; + } &:hover { color: #333; @@ -24,4 +29,3 @@ } } } - diff --git a/pages/tools/components/tabs/Migration/CoreVideoMigration.jsx b/pages/tools/components/tabs/Migration/CoreVideoMigration.jsx index 0ae97f950..d8e54f394 100644 --- a/pages/tools/components/tabs/Migration/CoreVideoMigration.jsx +++ b/pages/tools/components/tabs/Migration/CoreVideoMigration.jsx @@ -114,9 +114,6 @@ const CoreVideoMigration = ( { migrationStatus, setMigrationStatus, showNotice } // Start polling every 5 seconds intervalRef.current = setInterval( fetchMigrationStatus, 5000 ); - // Kick off an immediate fetch to avoid initial delay - fetchMigrationStatus(); - // Reset notice flags for a new run noticeShownRef.current = { completed: false, failed: false }; } @@ -167,7 +164,7 @@ const CoreVideoMigration = ( { migrationStatus, setMigrationStatus, showNotice }

- { __( 'This tool is used to replace WordPress core video blocks with GoDAM video block.', 'godam' ) } + { __( 'This tool replaces WordPress core video blocks with GoDAM video blocks. It does not replace videos added in the WordPress Classic Editor.', 'godam' ) }

{ /* Progressbar indicating video migration progress */ } diff --git a/pages/tools/components/tabs/Migration/VimeoVideoMigration.jsx b/pages/tools/components/tabs/Migration/VimeoVideoMigration.jsx index fb7eafb6f..848b8f27d 100644 --- a/pages/tools/components/tabs/Migration/VimeoVideoMigration.jsx +++ b/pages/tools/components/tabs/Migration/VimeoVideoMigration.jsx @@ -50,7 +50,14 @@ const VimeoVideoMigration = ( { migrationStatus, setMigrationStatus, showNotice }, } ) .then( ( response ) => { - setMigrationStatus( response.data ); + // Check the status in the response data + if ( response.data?.message?.migration_status && response.data.message.migration_status !== 'Completed' ) { + setGodamMigrationCompleted( false ); + setMigrationStatus( { total: 0, done: 0, started: null, completed: null, status: 'pending', message: '' } ); + } else { + // Proceed with migration + setMigrationStatus( response.data ); + } } ) .catch( ( err ) => { // Check if status is 400, set godamMigrationStatus @@ -59,7 +66,7 @@ const VimeoVideoMigration = ( { migrationStatus, setMigrationStatus, showNotice } // Reset UI as request failed; show an error notice for clarity. setMigrationStatus( { total: 0, done: 0, started: null, completed: null, status: 'pending', message: '' } ); - const apiMessage = err?.response?.data?.message || err?.message || __( 'Something went wrong while starting migration.', 'godam' ); + const apiMessage = __( 'Something went wrong while starting migration.', 'godam' ); showNotice( apiMessage, 'error' ); } ); }; @@ -118,9 +125,6 @@ const VimeoVideoMigration = ( { migrationStatus, setMigrationStatus, showNotice // Start polling every 5 seconds intervalRef.current = setInterval( fetchMigrationStatus, 5000 ); - // Kick off an immediate fetch to avoid initial delay - fetchMigrationStatus(); - // Reset notice flags for a new run noticeShownRef.current = { completed: false, failed: false }; } @@ -171,7 +175,7 @@ const VimeoVideoMigration = ( { migrationStatus, setMigrationStatus, showNotice

- { __( 'This tool is used to replace WordPress Vimeo Embed blocks with GoDAM Video block.', 'godam' ) } + { __( 'This tool replaces WordPress Vimeo Embed blocks with GoDAM Video blocks. It does not replace Vimeo videos added in the WordPress Classic Editor.', 'godam' ) }

diff --git a/pages/tools/components/tabs/RetranscodeTab.jsx b/pages/tools/components/tabs/RetranscodeTab.jsx index 178a7ecd1..a30050b98 100644 --- a/pages/tools/components/tabs/RetranscodeTab.jsx +++ b/pages/tools/components/tabs/RetranscodeTab.jsx @@ -32,6 +32,7 @@ const RetranscodeTab = () => { const [ selectedIds, setSelectedIds ] = useState( null ); const [ successCount, setSuccessCount ] = useState( 0 ); const [ failureCount, setFailureCount ] = useState( 0 ); + const [ virtualMediaCount, setVirtualMediaCount ] = useState( 0 ); const [ totalMediaCount, setTotalMediaCount ] = useState( 0 ); const [ notice, setNotice ] = useState( { message: '', status: 'success', isVisible: false } ); @@ -130,6 +131,7 @@ const RetranscodeTab = () => { abortRef.current = false; setSuccessCount( 0 ); setFailureCount( 0 ); + setVirtualMediaCount( 0 ); for ( let i = 0; i < attachments.length; i++ ) { // Check if abort was requested. @@ -154,14 +156,22 @@ const RetranscodeTab = () => { const data = res.data; if ( data?.message ) { - // Log the success message + // Log the message setLogs( ( prevLogs ) => [ ...prevLogs, data.message ] ); - setSuccessCount( ( prevCount ) => prevCount + 1 ); + + // Handle different response types + if ( data.skipped === true ) { + if ( data.reason === 'virtual_media' || data.reason === 'migrated_vimeo' ) { + setVirtualMediaCount( ( prevCount ) => prevCount + 1 ); + } + } else if ( data.skipped === false && data.sent === true ) { + setSuccessCount( ( prevCount ) => prevCount + 1 ); + } } } catch ( err ) { const data = err.response.data; if ( data?.message ) { - // Log the success message + // Log the error message setLogs( ( prevLogs ) => [ ...prevLogs, data.message ] ); } setFailureCount( ( prevCount ) => prevCount + 1 ); @@ -189,6 +199,7 @@ const RetranscodeTab = () => { setDone( false ); setForceRetranscode( false ); setSelectedIds( null ); + setVirtualMediaCount( 0 ); abortRef.current = false; // Reset the URL to remove media_ids, goback and nonce @@ -210,33 +221,64 @@ const RetranscodeTab = () => { // Show notice if retranscoding is done or aborted with counts if ( done || aborted ) { let message = ''; + let noticeType = 'success'; + + // Handle virtual media warning first + if ( virtualMediaCount > 0 ) { + message = sprintf( + // translators: %d is the number of virtual media files found. + __( '%d virtual media file(s) found, which need to be retranscoded on GoDAM Central.', 'godam' ), + virtualMediaCount, + ); + } + + // Add success message if there were actual retranscoding requests if ( successCount > 0 ) { - message += sprintf( + const successMessage = sprintf( // translators: %d is the number of media files retranscoded. __( 'Successfully sent %d media file(s) for retranscoding.', 'godam' ), successCount, ); - } - if ( failureCount > 0 ) { + if ( message ) { - message += ' '; + message += ' ' + successMessage; + } else { + message = successMessage; } - message += sprintf( + } + + // Add failure message if there were failures + if ( failureCount > 0 ) { + const failureMessage = sprintf( // translators: %d is the number of media files that failed to retranscode. __( 'Failed to send %d media file(s) for retranscoding.', 'godam' ), failureCount, ); + + if ( message ) { + message += ' ' + failureMessage; + } else { + message = failureMessage; + } } + // If no specific messages, show default if ( ! message ) { message = __( 'Operation completed without any media files to retranscode.', 'godam' ); } - const noticeType = successCount > 0 && failureCount === 0 ? 'success' : 'error'; + // Determine notice type based on what happened + if ( virtualMediaCount > 0 && failureCount === 0 ) { + noticeType = 'warning'; + } else if ( successCount > 0 && failureCount === 0 ) { + noticeType = 'success'; + } else if ( failureCount > 0 ) { + noticeType = 'error'; + } showNotice( message, noticeType ); } - }, [ done, aborted, successCount, failureCount ] ); + }, [ done, aborted, successCount, failureCount, virtualMediaCount ] ); return ( <> diff --git a/pages/video-editor/redux/slice/videoSlice.js b/pages/video-editor/redux/slice/videoSlice.js index 1c194898b..42f0c0cfb 100644 --- a/pages/video-editor/redux/slice/videoSlice.js +++ b/pages/video-editor/redux/slice/videoSlice.js @@ -30,7 +30,7 @@ const slice = createSlice( { backward: 10, }, //custom controls - brandingIcon: false, + brandingIcon: true, appearanceColor: godamSettings?.brandColor ? godamSettings?.brandColor : '#2b333fb3', hoverColor: '#fff', zoomLevel: 0, diff --git a/readme.txt b/readme.txt index 4c28d4398..bec308f50 100644 --- a/readme.txt +++ b/readme.txt @@ -4,7 +4,7 @@ Tags: transcoder, video, media library, folders, file manager Requires at least: 6.5 Tested up to: 6.8.1 Requires PHP: 7.4 -Stable tag: 1.3.5 +Stable tag: 1.4.0 License: GPLv2 or later License URI: http://www.gnu.org/licenses/gpl-2.0.html @@ -13,7 +13,7 @@ Manage and optimize digital assets with GoDAM – featuring transcoding, adaptiv == Description == [GoDAM](https://godam.io/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=description-link) is a powerful file manager, WordPress Media Library organizer and digital asset management solution designed to provide automatic transcoding, adaptive bitrate streaming, and interactive video layers to enhance viewer engagement. It simplifies the entire video workflow, from upload to optimized playback, ensuring smooth delivery across all devices and network conditions. -With GoDAM, WordPress users can leverage advanced video capabilities without requiring extensive technical expertise. It automates the conversion of uploaded videos into multiple resolutions, enabling seamless playback with adaptive bitrate streaming. The integration of interactive elements such as CTAs, forms, hotspots and ads makes GoDAM an all-in-one solution for content creators, marketers, and eCommerce businesses. +With GoDAM, WordPress users can leverage advanced video capabilities without requiring extensive technical expertise. It automates the conversion of uploaded videos into multiple resolutions, enabling seamless playback with adaptive bitrate streaming. The integration of interactive elements such as CTAs, forms, interactive video hotspots and ads makes GoDAM an all-in-one solution for content creators, marketers, and eCommerce businesses. Check out our source code and contribute to the plugin on GitHub: [Official GoDAM GitHub](https://github.com/rtCamp/godam). @@ -23,8 +23,6 @@ Check out our source code and contribute to the plugin on GitHub: [Official GoDA πŸ‘‰ Learn More About GoDAM Pro : [All The Features of GoDAM](https://godam.io/features/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=features-link) -πŸ‘‰ Check out our [Chrome Extension](https://chromewebstore.google.com/detail/ojmbobnoagdgblhpbemfamfkcfjdfejl?utm_source=item-share-cb) to easily record and share videos - [youtube https://www.youtube.com/watch?v=UGmKa6aLSgU] @@ -32,18 +30,21 @@ Check out our source code and contribute to the plugin on GitHub: [Official GoDA πŸ“Œ **Media Management** βœ“ The [DAM functionality](https://godam.io/features/wordpress-advanced-media-management/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=dam-feature) streamlines file organization for websites with large libraries of images, videos, documents, and more. -βœ“ Organize media assets efficiently with enhanced WordPress Media Library folders and filtering with a smart Media Library Assistant. -βœ“ Manage files easily with a built-in folder-based File Manager for drag-and-drop organization. +βœ“ Organize media assets efficiently using enhanced WordPress Media Library folders with pagination and filtering with a smart Media Library Assistant. +βœ“ Manage files easily with a built-in folder-based WordPress Media Library Manager for drag-and-drop organization. βœ“ Bookmark and Lock folders for improved folder organization πŸ“Œ **Interactive Video Layers for Engagement** βœ“ Embed [clickable CTAs](https://godam.io/features/video-overlay/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=video-overlay) to drive actions like sign-ups and purchases. βœ“ Enhance your videos with [customizable hotspots](https://godam.io/features/video-hotspot/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=video-hotspot) that deliver additional context, links, and information exactly when and where your viewers need it. -βœ“ Add interactive forms using [Gravity Forms](https://godam.io/features/gravity-forms/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=gravity-forms), [WPForms](https://godam.io/features/wp-forms/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=wpforms), [Contact Form 7](https://godam.io/features/contact-form-7/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=contact-form-7), [Jetpack Forms](https://godam.io/features/jetpack-form/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=jetpack-forms), [Forminator Forms](https://godam.io/features/forminator-forms/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=forminator-forms), [Fluent Forms](https://godam.io/features/fluent-forms/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=fluent-forms), [SureForms](https://godam.io/features/sure-forms/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=sure-forms), and [Everest Forms](https://godam.io/features/everest-forms/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=everest-forms) to collect leads. -βœ“ Enable video submissions using the GoDAM Record field that supports webcam and screencast inside Gravity Forms. +βœ“ Add interactive forms using [Gravity Forms](https://godam.io/integrations/gravity-forms/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=gravity-forms), [WPForms](https://godam.io/integrations/wp-forms/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=wpforms), [Contact Form 7](https://godam.io/integrations/contact-form-7/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=contact-form-7), [Jetpack Forms](https://godam.io/integrations/jetpack-form/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=jetpack-forms), [Forminator Forms](https://godam.io/integrations/forminator-forms/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=forminator-forms), [Fluent Forms](https://godam.io/integrations/fluent-forms/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=fluent-forms), [SureForms](https://godam.io/integrations/sureforms/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=sureforms), [Ninja Forms](https://godam.io/integrations/ninja-forms/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=ninja-forms), [MetForm](https://godam.io/integrations/metform/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=metform), and [Everest Forms](https://godam.io/integrations/everest-forms/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=everest-forms) to collect leads. +βœ“ Enable video submissions with the [GoDAM Form Recorder](https://godam.io/features/form-recorder/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=form-recorder) field, allowing users to record via webcam or screencast, or upload videos directly while filling out a form. βœ“ Add interactive Polls to gather viewer opinions during playback. βœ“ Customize video player appearance globally with custom CSS through the Video Player settings menu. βœ“ Navigate videos easily with chapter markers for better content organization and viewer experience. +βœ“ Custom thumbnail support for GoDAM Video blocks with hover effects for enhanced user experience +βœ“ Video embed capabilities for seamless integration of GoDAM videos into any page or post. + πŸ“Œ **Elementor Integration** βœ“ Drag-and-drop GoDAM Video, Gallery, and Audio widgets for seamless content creation. @@ -56,7 +57,7 @@ Check out our source code and contribute to the plugin on GitHub: [Official GoDA βœ“ Boost revenue and engagement with clickable ad redirections πŸ“Œ **Customizable Video Player Experience** -βœ“ Fully customizable playback controls, branding, and player themes. +βœ“ Fully customizable playback controls, branding, and [player themes](https://godam.io/blog/how-to-customize-video-player-on-wordpress/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=player-themes). βœ“ Enable video looping, autoplay, and inline play for better user experience. πŸ“Œ **Video SEO** @@ -79,14 +80,19 @@ Check out our source code and contribute to the plugin on GitHub: [Official GoDA βœ“ In Free version these video formats are not supported: 3G2, 3GP, AVI, OGV, WMV βœ“ Watermarking support to protect video content. βœ“ Automatically compress and resize videos on upload to reduce storage and bandwidth. +βœ“ Generate up to 10 auto thumbnails with GIF support for enhanced video previews. -[youtube https://www.youtube.com/watch?v=ZTdH530k1Xk] +[youtube https://www.youtube.com/watch?v=JUlusFfbHQA] πŸ“Œ **GoDAM Central** βœ“ Unified dashboard for managing all assets in one place. +βœ“ Upload and host your videos on powerful GoDAM Central cloud storage powered by global CDN network βœ“ Organize videos, images, and documents into folders with search, filters, and sharing options. βœ“ Each video gets a dedicated single video page with time-stamped comments and reactions for team collaboration. βœ“ Automatically sync uploaded videos with the WordPress Media Library for easy access across your site. +βœ“ One single license for unlimited sites +βœ“ Team Management & Multiple Organization for maximum collaboration +βœ“ Save time and resources by uploading media once at any connected site or GoDAM Central and reusing it across all other connected sites with the GoDAM Media Tab on WordPress. [youtube https://www.youtube.com/watch?v=X4NPuLDHS-U] @@ -99,19 +105,38 @@ Check out our source code and contribute to the plugin on GitHub: [Official GoDA βœ“ Rank videos by performance and much more πŸ“Œ **Automatic Video Transcription** -βœ“ AI-powered closed captions added automatically on upload for accessibility and engagement. - -### Primary Benefits: +βœ“ [AI-powered closed captions](https://godam.io/features/ai-transcription/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=ai-transcription) added automatically on upload for accessibility and engagement. +βœ“ Upload your audio or video, and let our AI-powered engine transcribe spoken words into clean, readable text with accuracy. +βœ“ Each transcript includes precise timestamps, making it ideal for interviews, podcasts, and corporate documentation. +βœ“ Quickly edit any part of the transcript in the editor for any fixes or additional context. + +πŸ“Œ **Video Engagement Features** +βœ“ Logged-in viewers can like and comment on GoDAM videos, while view counts are visible to everyone. Admins can enable or disable these features. +βœ“ Build a more engaged audience with social features that encourage participation and feedback. + +πŸ“Œ **Video Migration Tools** +βœ“ Import any core video block seamlessly to GoDAM Video blocks. +βœ“ Import Vimeo videos seamlessly to GoDAM Central and GoDAM Video blocks. +βœ“ Migrate your existing video content without losing quality or functionality. +βœ“ Streamline your video management by consolidating all content in one powerful platform. + +πŸ“Œ **Faster Video Playback** +βœ“ GoDAM Pro delivers video through a global CDN with 118+ edge locations, ensuring faster video playback, 99.99% uptime, and improved site performance for a seamless user experience. +βœ“ Offload media to GoDAM Central cloud storage. + += Primary Benefits = βœ“ Simplifies asset management with automated transcoding and adaptive streaming. βœ“ Enhances viewer engagement with interactive layers like forms, CTAs, and hotspots. βœ“ Integrates seamlessly with WordPress for a familiar and user-friendly experience. +βœ“ Simplifies video hosting and embed for WordPress site at a cost effective price -### Secondary Benefits: += Secondary Benefits = βœ“ Cost-efficient pricing tailored to your actual usage. βœ“ Scalable features suitable for small businesses, educators, and enterprise-level users. βœ“ Monetization opportunities through ad placement and e-commerce integrations. +βœ“ Perfect video marketing solution for your WordPress site to grow your brand -Use Cases: += Use Cases = βœ“ Education: Deliver interactive video lessons with forms for quizzes or feedback. βœ“ E-commerce: Use video hotspots to enable in-video product purchases. βœ“ Marketing: Engage viewers with CTAs and lead capture forms. @@ -133,16 +158,19 @@ Get started today and revolutionize the way you manage and deliver video content GoDAM works seamlessly with popular WordPress plugins to enhance interactivity and engagement: -- [Gravity Forms](https://godam.io/features/gravity-forms/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=gravity-forms-integration) – Add forms directly to your videos to collect leads and feedback. -- [WPForms](https://godam.io/features/wp-forms/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=wpforms-integration) – Integrate lightweight forms for surveys, signups, or user inputs. -- [Contact Form 7](https://godam.io/features/contact-form-7/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=contact-form-7-integration) – Use a classic contact form plugin inside your videos for engagement. -- [Jetpack Forms](https://godam.io/features/jetpack-form/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=jetpack-forms-integration) - Block Editor based forms for lead generation and engagement. -- [Forminator Forms](https://godam.io/features/forminator-forms/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=forminator-forms-integration) – Advanced form builder with powerful features for lead capture. -- [Fluent Forms](https://godam.io/features/fluent-forms/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=fluent-forms-integration) – Modern form builder with advanced conditional logic and integrations. -- [SureForms](https://godam.io/features/sure-forms/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=sure-forms-integration) – Professional form solution with advanced features and analytics. -- [Everest Forms](https://godam.io/features/everest-forms/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=everest-forms-integration) – User-friendly form builder with drag-and-drop functionality. -- [WP-Polls](https://wordpress.org/plugins/wp-polls/) – Add live polls to your videos and gather audience opinions in real-time. -- [Elementor](https://wordpress.org/plugins/elementor/) – Drag-and-drop GoDAM widgets for easy content creation. +- [Gravity Forms](https://godam.io/integrations/gravity-forms/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=gravity-forms-integration) – Add forms directly to your videos to collect leads and feedback. +- [WPForms](https://godam.io/integrations/wp-forms/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=wpforms-integration) – Integrate lightweight forms for surveys, signups, or user inputs. +- [Contact Form 7](https://godam.io/integrations/contact-form-7/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=contact-form-7-integration) – Use a classic contact form plugin inside your videos for engagement. +- [Jetpack Forms](https://godam.io/integrations/jetpack-form/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=jetpack-forms-integration) - Block Editor based forms for lead generation and engagement. +- [Forminator Forms](https://godam.io/integrations/forminator-forms/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=forminator-forms-integration) – Advanced form builder with powerful features for lead capture. +- [Fluent Forms](https://godam.io/integrations/fluent-forms/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=fluent-forms-integration) – Modern form builder with advanced conditional logic and integrations. +- [SureForms](https://godam.io/integrations/sureforms/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=sureforms-integration) – Professional form solution with advanced features and analytics. +- [Everest Forms](https://godam.io/integrations/everest-forms/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=everest-forms-integration) – User-friendly form builder with drag-and-drop functionality. +- [Ninja Forms](https://godam.io/integrations/ninja-forms/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=ninja-forms-integration) – Powerful form builder with advanced features and conditional logic. +- [MetForm](https://godam.io/integrations/metform/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=metform-integration) – Modern form builder with drag-and-drop interface and advanced styling options. +- [WP-Polls](https://godam.io/integrations/polls/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=wp-polls-integration) – Add live polls to your videos and gather audience opinions in real-time. +- [Elementor](https://godam.io/integrations/elementor/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=elementor-integration) – Drag-and-drop GoDAM widgets for easy content creation. +- [LifterLMS](https://godam.io/integrations/lifterlms/?utm_campaign=plugin-readme&utm_source=wordpress-org&utm_medium=plugin&utm_content=lifterlms-integration) – Integrate GoDAM with LifterLMS for course management and video delivery. == Installation == Method 1: WordPress Dashboard @@ -159,12 +187,12 @@ The GoDAM menu should appear on your admin dashboard! == Frequently Asked Questions == = What is GoDAM, and how does it work? = -A. GoDAM is a media management service that seamlessly integrates with your WordPress site to optimize and enhance your audio and video content. It automatically converts uploaded audio files to MP3 and video files to MPD formats. Additionally, GoDAM offers a suite of powerful features, including thumbnail generation, shortcode support, customizable video layers (like Gravity Forms, text/image CTAs, video hotspots, and ads), adaptive bitrate streaming for smooth playback, and advanced asset management tools. +A. GoDAM is a media management service that seamlessly integrates with your WordPress site to optimize and enhance your audio and video content. It automatically converts uploaded audio files to MP3 and video files to MPD format. Additionally, GoDAM offers a suite of powerful features, including thumbnail generation, shortcode support, customizable video layers (like Gravity Forms, text/image CTAs, video hotspots, and ads), adaptive bitrate streaming for smooth playback, and advanced asset management tools. To get started, you just need to install the GoDAM plugin on your WordPress website and subscribe to a plan. Once set up, GoDAM helps you manage, edit, and deliver media content more efficiently, making it a perfect solution for creators, educators, and businesses. = Which file types are supported? = -A. GoDAM converts all supported audio files to MP3 format and video files to MP4 format. +A. GoDAM converts all supported audio files to MP3 format and video files to MPD format. Supported input formats: βœ“ Audio: MP3, M4A, WAV, OGG βœ“ Video: 3G2, 3GP, AVI, FLV, M4V, MOV (QDM2 only), MP4, OGV, WEBM, WMV @@ -214,9 +242,25 @@ A. Yes, GoDAM provides robust analytics tools to track video engagement, includi 24. Video Player Style Settings 25. Global Ads Settings 26. Chapters Interface +27. Likes and Comments == Changelog == += v1.4.0 (September 9, 2025) = + +- New: Added integration for LifterLMS +- New: Added Ninja Forms and MetForm layer integration +- New: Added GoDAM Recorder Field for Everest Forms and Ninja Forms +- New: Added Engagements for GoDAM Video and Gallery with Views, Likes, and Comments +- New: Implemented Migration Tools for existing videos and Vimeo videos to GoDAM +- New: Added Speech-to-text functionality using AI transcriptions +- New: Added Custom Thumbnail Upload option for videos +- New: Enabled different Hover-Interactions for videos +- Tweak: Improved compatibility with Elementor +- Tweak: Updated Media Library UI +- Fix: Fixed iOS compatibility +- Fix: Resolved re-transcoding ID preservation to maintain video continuity and prevent data loss + = v1.3.5 (August 26, 2025) = - Tweak: Set transcoded videos as public by default and add Org support parameters @@ -226,12 +270,6 @@ A. Yes, GoDAM provides robust analytics tools to track video engagement, includi - Fix: Video Editor UI issues -= v1.3.3 (August 11, 2025) = - -- Tweak: Improved video player controls and HLS URL handling -- Tweak: Added Video SEO support and duplicate prevention for GoDAM Tab videos -- Tweak: Player-specific video speed and quality settings -- Fix: Resolved share button and JavaScript registration issues [CHECK THE FULL CHANGELOG](https://github.com/rtCamp/godam/blob/main/CHANGELOG.md) diff --git a/wp-assets/screenshot-27.png b/wp-assets/screenshot-27.png new file mode 100644 index 000000000..bdf980482 Binary files /dev/null and b/wp-assets/screenshot-27.png differ