Changelog

Follow up on the latest improvements andΒ updates.

RSS

Added
πŸ“’ Interaction type:
Audio Track
(paid): provides alternative audio tracks
πŸ“’ Interaction type:
Rajab's Game
(free): gamifies learning with levels, collectable badges, and a leaderboard (individual and group).
image
image
  • Event: iv:playerVolumeChange for when the player is muted/unmuted.
Updated
  • RuTube player updates
    :
  1. Update the pause event listener
  2. Controls can now be hidden.
  3. Video quality can now be set.
  • Skip Segment interaction type
    :
The skip segments can now be set as optional, allowing learners to still view the segments and choose to skip them by clicking the skip button. For example, if your video contains a segment where you explain or show the answer keys, you can force skip this segment before completion. After the interactive video is complete, the answer key segment becomes optional, so learners can choose to watch or skip that segment.
image
  • Annotation interaction type
    :
A huge update in version 1.3, adding three new annotation items, including
Video, Audio, and Mute
. Video and audio are synced with the main video. The instructor can add a presenter's video, a sign-language interpreter video, or an alternative video that covers the entirety of the original video. Similarly, they can mute a certain segment of the video and replace it with a different audio. This update also brings a huge performance improvement by reducing DOM manipulation instances.
  • Course Activity interaction type
    (paid):
A small update that allows XP to be awarded partially based on the grade in the reference activity. For example, if the reference activity is a Quiz and the learner receives 75% in that quiz, they will also be awarded 75% of the XP assigned.
  • Improvement on earned XP calculation, especially after the instructor updates XP after the activity is attempted.
  • Minor UI improvements
Fixed
  • Strange behavior in Moodle 5.0.1+ (Build: 20250620) in which the hidden posterimagefile field showed an error when the user created a new activity.

new

improved

Core

Sub-plugin

Free

Pro

Interactive Video 1.4.0

New
πŸ“’ New paid interaction type: Reaction
To enhance social learning on the Interactive Video, Reaction offers learners and instructors various methods to connect and interact, including reactions, public comments, private Q&As, and private notes.
πŸ“’ Ability to set default settings for each interaction type per course level
With this time-saving feature, you can use an existing interaction as a default for the specific interaction type. When you add a new interaction across the course, the default settings will apply automatically.
image
πŸ“’ Ability to align the activity card in the middle of the course page
image
πŸ“’ Subtitle support for DASH and HLS videos
If the video source contains text track data, a selection menu will be displayed, similar to other sources, including YouTube and Vimeo.
Update
  • Performance improvement on the report page.
  • Interactive video course settings and defaults are now backed up and restored when a course backup/restore is performed.

new

improved

fixed

Core

Free

Interactive Video 1.3.1

Add:
  • New appearance setting: Full-width poster image. This option will allow the poster image on the course page to fill up the available space instead of being restricted to 200px.
image
Before
image
After
image
  • Resized popup view: Full-width view is not always the best option. This resized-view option allows the video to be displayed in a narrow view on the course page. It's up to users -- there is no related setting.
image
  • New event: iv:playerPlay for when video plays or resumes. Unlike iv:playerPlaying, which is conditioned by whether the player uses animation frame, iv:playerPlay fires only once.
Update:
  • No longer force aspect ratio to 16:9 on default view
  • No longer change dark-mode value to 0 when distraction-free is unchecked on the activity form. Instead, it will be handled programmatically (i.e., if distraction-free is 0, dark-mode is 0).
  • Improve error handling with Vimeo videos (e.g., displaying the message from Vimeo if the video becomes inaccessible).
  • On the course page, when an activity is used in the restriction condition, the page will be reloaded when the player modal is dismissed with overall completion: completed.
Fixed:
  • Live video sometimes showed a NaN timestamp.
  • Keyboard shortcut E for enlarge/resize player, not L.
  • Keyboard shortcuts did not work when the main control bar was hidden.

new

improved

fixed

Interactive Video 1.3.0

New
  • New interaction type: Course Activity
  • Keyboard shortcuts in both player and editor modes
image
image
Improved
  • Download the update from GitHub rather than BuyMeACoffee
  • Upgrade Bootstrap Icons to 1.13.1
  • Use Moodle's modal in place of Bootstrap modal for better accessibility and better theme support (e.g., snap theme)
  • UI and accessibility improvements
Fixed
  • Incorrect mapping items in define_decode_contents
  • Error when Chapter is not enabled by admin.

new

improved

fixed

Core

Free

Interactive Video 1.2.3

NEW
πŸ“’
Bulk actions: Download and Upload
In previous releases, we introduced two bulk actions: copy and delete. In this release, we are introducing another bulk action feature that allows instructors to export the selected interactions as a package (.ivz) file. The exported package can then be uploaded across sites, allowing more flexibility in re-using/re-purposing the existing interactions.
Also note that when transferring content across sites, some interactions won't be shown if the destination site does not have corresponding interaction types installed. However, their data is saved in the destination site. Once the interaction types are installed later, the corresponding interactions will be shown automatically.
πŸ“’ Bulk actions: Check all
You can now select or deselect all interactions during a bulk action operation.
image
πŸ“’ Confetti for activity completion
Activity completion should be more exciting, so we added confetti fireworks when the completion conditions are fulfilled.
πŸ“’ Others
  • You can use da=1 in the URL to force disable autoplay.
  • When "Hide main video controls" is enabled, a light progress bar is now shown at the bottom of the video. The progress bar isn't clickable.
UPDATE
  • Improve support for BS5.
  • Add 'timeended' column to privacy metadata.
FIX
  • During activity backup, if the contentbank item is deleted, the relevant data becomes null. This caused a failure when the backup file was restored.
NEW
πŸ“’
Activity completion condition "Watch till the end"
You can now set the interactive video as complete when the learner reaches the end of the video.
image
***
image
Note:
This does not guarentee that learners watch the entire video as they can still skip or seek to the end of the video. If you want to track percentage watched or set required segments, check out the paid interaction "Analytics". πŸ˜‰
πŸ“’
Bulk action: "Copy & Paste" across courses
In the previous release, we implemented the first bulk action -- delete. You can select multiple interactions and delete them at once.
In this release, we introduce a new action: copy and paste. What it does is it allows you to copy multiple interactions and paste them anywhere: in the same activity, in the same course or across courses.
image
How?
  • First, enable the bulk action.
  • Select the interactions you want to copy.
  • Click the copy button. This should activate the paste button.
  • Go to the destination activity. You should see that the paste button is activated.
  • Click the paste button to proceed.
πŸ“’
Player method: isMuted()
Use isMuted() to check if the player is muted.
UPDATE
  • Get rid of custom.css introduced in 1.1. Earlier we included the custom styles in custom.css because Moodle's RTL compiler had (still has) serious problems compiling modern CSS (clustering, @container, etc.) in the styles.css file. Importing custom.css into styles.css fixed these problems and we can still use the modern CSS, however, this caused a new issue with Moodle instances with sub-folder installation (e.g., moodle.com/lms). So our current solution is putting all the style codes in the styles.css file, use modern CSS for dir:ltr and fallback styles for dir:rtl.
πŸ“’
Resumable H5P Content State
  • With this new update,
    H5P content state/progress can be saved and resumed
    . This feature is added at the interaction level, meaning it can be turned on or off per interaction as opposed to the course/site level. Look for this option in the advanced section. By default, this option is turned off.
image
  • When this option is enabled, a log is created when each learner interacts with the H5P content. The log is updated with the state data (aka user content data) and saved to the database table when the interaction is dismissed or closed. When the interaction is relaunched, we'll attempt to get the relevant log. If the log exists, we'll show a confirmation dialogue in which the learner can choose to resume or start from the beginning.
image
  • Also comes with the feature is
    the ability to view the learner's response on the report page
    . When the state saving is enabled, teachers can click on the report cell (see below) to launch the content with the submitted response. This response is final and does not change after the learner re-attempts the content.
image
  • Technical Implementation:
    How is this feature implemented?
Most of the standard H5P content types can restore the state/progress, while some do not implement it intentionally. However, it's up to the LMS to implement the saving and resuming process. Unfortunately, Moodle does not implement this in its core H5P. After some research and testing, we learned that state saving can be turned on by modifying the H5PIntegration class. Here are the steps:
  1. First, we check if the specific H5P Content has state saving enabled by the teacher. If so, we're attempting to get the existing state (aka log) from the database.
  2. If the learner chooses to resume the content from the previous state, we're going to keep the log as is; otherwise, we use
    log=''
    .
  3. As soon as the interaction is launched, we use
    requestAnimationFrame()
    to detect the
    H5PIntegration
    class from the iframe. As soon as the class is found (before the
    .h5p-initialized
    CSS class is applied to the DOM), we have to enable state saving by changing
    H5PIntegration.saveFreq
    from
    false
    to
    1
    , meaning we want the state to be saved every second. This does not necessarily mean the state will be saved in the database every second. The state data is updated in
    H5PIntegration.contents[id].contentUserData[0].state
    .
  4. Now we use the log value as the default state.
    H5PIntegration.contents[id].contentUserData[0].state = log
    .
  5. And just like that, the state saving is ready.
  6. When the interaction is closed, dismissed, or refreshed, we check the value from
    H5PIntegration.contents[id].contentUserData[0].state
    and save it to the database.
πŸ“’
Lockable Chapter
  • Chapters can now be locked until a condition is met. The available conditions are:
  1. Until all interactions in the previous chapter are complete
  2. Until all interactions in all previous chapters are complete
  3. Until the interactive video activity is complete (based on the activity completion condition)
  • When a chapter is locked, all interactions within that chapter are temporarily removed.
image
Added
  • Ability to check for the interaction type updates from the settings page. Links to the buy me coffee page for the plugin will be provided.
  • Use options.isCompleted to check if the Interactive Video is completed. This will be used in the future to check if the video is completed or not.
  • New paid interactions: Interactive Transcript and SCORM Content.
Fixed
  • The divider line is not shown correctly.
  • Remove duplicate code blocks.
Note
  • We've been able to trick YouTube into not displaying the related videos when the video is paused. However, it appears that YouTube has changed its behavior, and the trick might not work under some circumstances.

new

improved

fixed

Core

Free

Interactive Video V1.1.2

Added
  • Setting for
    selecting the profile fields
    for the report
  • Ability to
    delete multiple completion records
  • Ability to
    delete completion data
    per interaction per user
  • Ability to
    filter the report data
image
  • Support for
    HLS and DASH
    videos (VOD and Live)
  • Support for
    YouTube live video
Updated
  • Use $DB->get_in_or_equal() to improve security.
Fixed
  • mod_interactivevideo_core_calendar_provide_event_action
  • Deleting an interaction does not clear and rebuild the cache

new

improved

fixed

Core

Sub-plugin

Free

Interactive Video V1.1

Version 1.1
brought several new exciting and super useful features and updates. The main focus is on improving performance and usability, especially when editing the interactive video instance and its interaction items.
πŸ“’ I recently relocated the additional interaction types to my buymeacoffee page. Each interaction type now has its dedicated page/post with a description and how-to video. You can still find and download these interaction types on my GitHub page, although it might be easier for you to get them from buymeacoffee if you're not familiar with GitHub, and it also allows me to keep track of the number of downloads for each interaction type. No payment is required for the free interaction types although you will be required to enter your (valid or fake) name and email address at checkout.
Be warned:
This is going to be a lengthy post!
Added
πŸ†•
New capabilities
  • Two new capabilities:
    mod/interactivevideo:manage
    and
    mod/interactivevideo:editreport
    . (Now, only those with
    mod/interactivevideo:editreport
    can remove the learner's completion data. Those with
    mod/interactivevideo:viewreport
    now have read-only access.)
πŸ†•
Management page
  • Instructors (with
    mod/interactivevideo:manage
    capability) can now
    set up the course-level settings
    for interactive video instances that override the site-level settings on the management page. (Admin must enable this setting in the site administration first). Any new interactive video instance in the course will use these settings. That also includes the instances that are added in bulk using the CSV file as well.
  • Instructors (with
    mod/interactivevideo:manage
    capability) can now
    manage the interactive video instances
    on the management page (e.g. bulk reset the appearance and behavior settings, quick edit the interactive video instance, etc.).
To go to the management page, click the "
More
" menu on the course page. Then choose "
Manage interactive videos
".
image
πŸ†•
Quick actions
  • Ctrl/Cmd + Click
    on the setting link (gear icon) on the navigation bar (in distraction-free mode) to launch
    the quick settings form
    .
image
  • Instructor can quickly
    edit the interactive video
    directly on the course page by
    ctrl/cmd + clicking on the edit icon
    .
  • Instructor can quickly
    view the report
    for the interaction video directly on the course page by
    ctrl/cmd + clicking on the report icon
    .
image
πŸ†•
Dismissible and skippable
  • When adding an interaction to the video, the instructor can uncheck the "dismissible" box to
    prevent learners from dismissing or closing the interaction
    before completing it. A notification will be displayed to warn the learners when they click the close button.
  • Similarly, unchecking the "skippable" box will
    prevent learners from watching the proceeding part of the video
    without completing the interaction first.
image
πŸ†•
Required minimum time
  • Previously, this option was available for the "Mark as complete manually" only. Now, it is also available for the "View" condition as well.
    This means the instructor can set a required time for learners to spend on the interaction before it's considered "viewed"
    . Use cases: read a PDF document for at least 5 minutes, listen to a podcast for at least 3 minutes, etc.
image
πŸ†•
Content Bank Item & H5P Content
  • These two interaction types get new advanced settings. The instructor can
    set the behavior for when the learners receive a failing or passing grade
    . For instance, the instructor can set the video to go to a specific time when the grade is below 50% and/or display a message.
image
πŸ†•
More
  • When a reminder is set in the activity settings, the interactive video
    will be displayed on the timeline block
    on the dashboard.
image
image
  • New site settings:
    Enable course-level settings
    and
    Allow custom theme
image
image
  • Ability for interaction plugins to
    run the
    init
    method on the report page
    . To do this, the interaction plugin must set
    initonreport
    property to
    true
    .
Updated
  • Interaction items are now cached
    using Moodle's cache API (MUC). This reduces the number of database queries and tremendously improves the performance. Cached data is updated only when the instructor makes changes to the interaction items.
  • posterimage
    column will always
    store the original poster image URL
    from the video even when a custom poster image is used. This allows a quick reset when required.
  • Poster images are now lazy-loaded
    .
  • Drawer navigations are now color-coded.
    Green (success) for completed interactions, red (danger) for incomplete interactions, and gray (secondary) for interactions without completion tracking.
image
  • Improve
    time-spent tracking accuracy
    especially when multiple interactions are displayed on the drawer. Time spent is now calculated only when the interaction is active and the video is paused.
  • Change how preview mode and editing mode are detected. Previously, body classes were used, which was not 100% reliable since body classes can be altered.
    Now, preview mode and editing mode are properties in each interaction item based on the URL parameter preview=1 & capability mod/interactivevideo:edit.
Fixed
  • When clicking on the participant's name on the report table, the user profile is shown in the user context as opposed to the desired course context. The profile page is now open in a new tab instead of the current tab.
  • When "Display description on course page" box was checked, and the activity was set to display inline on the course page, the unstyled card was also displayed on the Moodle mobile app. Now, only the description is shown.
  • When the completion condition was set to "Add requirements" (automatic completion) and no requirement was selected, the form was submitted without any validation errors. Now, at least one requirement must be set.
Load More
β†’