allow presentations to run automatically

otacke's picture

There's a proposal for a new feature for the library Course Presentation at

<cite>Also, is there a way to automatically go to the next slide after a certain amount of seconds. This would be a good feature to add if it doesn't exist.</cite>

User stories for this feature might translate into something like...

  1. As a content editor I want to set a time period after which the presentation switches to the next slide automatically so that scenarios such as PechaKucha are possible. As a user I want to start the automatic presentation by a triggering action so that it won't start directly after loading the website.
  2. As a content editor I want to optionally enable looping so that presentations could run indefinitely within websites in "kiosk mode".

For #1 it might be a simple solution to start the automatic presentation at slide 2, so no special triggering function would have to be created. If looping is enabled, the automatic presentation could start right away at slide 2.

Supporter votes Members of the Supporter Network can vote for feature requests. When the supporter network has generated sufficient funding for the top voted feature request it will normally be implemented and released. More about the H5P Supporter Network
thomasmars's picture

Nice and clean specification. I really like the 2nd use case and think it could be used in lots of scenarios together with the active surface mode. Would be great if you could add an issue on github that points to this thread for implementation details.

Edit: Nevermind, there is an issue for this

otacke's picture

...there's a slip at the end. Looping should start right away with at slide 1, of course.

otacke's picture

I created a first draft of that feature on github. It doesn't completely cover the user stories from above (yet). What do you all think?

How is the progress coming on this feature? I really want to use it

otacke's picture

It's basically working with my latest update. If you activate "auto-presentation",

  • you can choose to use individual durations (including infinity) for each slide - useful if you have different content, e.g. video of different length,
  • you can set a global duration for all slides (thus overriding individual slide settings) - useful for simple kiosk sliders,
  • or you can use the global default only if there's no individual duration given - useful for quickly setting up PechaKucha with some "indefinite" start pages before "switching" to automatic mode.

What's left to do, I guess:

  • stop previous autoplay command if you jump to a different slide manually (probably easy)
  • allow to set individual time durations for each slide via the course presentation editor (might be more complicated) - so far you have to modify the h5p files directly 

You can find the code on github, and you can use it right now if it's urgent. Yet, I might still change some things.

Awesome. It isn't urgent but I will need it in a few months from now.

falcon's picture

Don't have the time to try it the code right now, but looking forward to see this in action :)

otacke's picture

Is this what you had in mind? Teaching H5P to present automatically

otacke's picture

Is anyone interested in completing together with me? I taught the Course Presentation to auto-present in but I fail to come up with a proper solution for the Editor to set individual durations for a slide.

I basically tried to copy the way the background is set by copying and adapting the related classes, but I couldn't make it work. I never liked creating GUIs ;-)

thomasmars's picture

The example is awesome, I love it :)

I don't have time to get too much into the code right now, but I would suggest looking at how backgroundSelector is implemented like you have done, it has options for global background and single page background for each slide, similar to how you would have settings for each slide.

Single slide semantics are defined for each slide, and global slide semantics are defined outside of slide context. The single slide semantics must then be squeezed somewhere into the GUI, like you fear ;) The global semantics can be inside or oustide CPEditor widget. A different approach would be to just create a list outside of the widget where you connect index to a duration, though it would probably not be the most elegant solution. GUI design is not my strong side, sorry I couldn't be of more help.


otacke's picture

"Twice I destroyed the light and twice I failed" (Blind Guardian) - And by destroying the light I mean trying to adapt copies of backgroundSelector and slideSelector including semantics in CoursePresentation and the style sheets ;-) I'll find a way eventually...

thomasmars's picture

Good metal will get you there in no time ;) processSemanticsChunk is essential to understand in order to render the semantics inside the CPEditor widget. Unfortunately it is quite vague how it works and not well documented