- New "Local Video" hero mode with Joomla Media Manager file picker
- Install script creates images/heroes/ folder on install/update
- Updated showMuteToggle to show for both video and localvideo modes
- All language strings (en-US/en-GB, ini + sys.ini) updated with new
keys: MODE_LOCALVIDEO, LOCAL_VIDEO_LABEL/DESC, CARD_DELAY, MUTE_TOGGLE
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Card fade-in delay: configurable delay (0-5000ms) before the content
card appears with a smooth slide-up animation. Set via cardDelay param.
- Mute toggle: optional button in bottom-right corner to unmute/mute
video audio. Videos always start muted (browser autoplay requirement).
Supports YouTube postMessage API, Vimeo postMessage, and native video.
- New manifest params: cardDelay (number), showMuteToggle (radio)
- Language strings added for both en-US and en-GB
Closes#39, closes#40
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Use IntersectionObserver to pause videos when the hero is not visible
and resume when it scrolls back in. Supports native <video>, YouTube
(postMessage API with enablejsapi=1), and Vimeo embeds.
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Show module title as h2 inside the card/content when showtitle is
enabled, keeping it within the overlay rather than above the hero
- Exclude .btn from card link color override so buttons retain their
own styling
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Add #style/#script suffixes to preset dependencies (Joomla defaults
untyped deps to "preset", causing UnsatisfiedDependencyException)
- Fix asset URIs to use extension_name/file pattern — Joomla's
HTMLHelper auto-inserts the css/js folder
- Split video CSS into <video> (object-fit:cover) and <iframe>
(oversize+centre-crop) rules since object-fit doesn't apply to iframes
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Joomla's addExtensionRegistryFile('mod_foo') resolves to
media/mod_foo/joomla.asset.json, not modules/mod_foo/. Move CSS, JS,
and joomla.asset.json to src/media/ and add <media> tag to manifest.
- src/css/ → src/media/css/
- src/js/ → src/media/js/
- src/joomla.asset.json → src/media/joomla.asset.json
- Manifest: replace <folder>css/js</folder> in <files> with <media> tag
- Entry point: restore addExtensionRegistryFile + usePreset
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
addExtensionRegistryFile fails during countModules() — Joomla renders
modules early during template parsing and the preset registry lookup
fails. Switch to registerAndUseStyle/registerAndUseScript which work
reliably in all contexts.
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
On mobile (<=768px) the video/slideshow is hidden behind the card
and wastes bandwidth. Now:
- Hide video and slide elements via display:none
- Remove fixed height so hero auto-sizes to card content
- Clear overlay background (no need without background media)
- Skip slideshow JS timer on mobile via matchMedia check
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Add heroContent param with Joomla editor field for rich HTML input
- Add showCard toggle to wrap content in a styled card (white bg, shadow, rounded)
- Card CSS: semi-transparent white, 8px radius, centered, max 700px
- Remove old $module->content fallback — content now comes from params
- Language strings for en-GB and en-US (both .ini and .sys.ini)
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Change default from 400px to 60vh (viewport-relative is more responsive)
- Add hint placeholder showing "e.g. 60vh or 400px"
- Update description to explain both px and vh units
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Joomla does not reliably translate language keys in <name> and
<description> manifest elements — the .sys.ini may not be loaded
when these are first read. Hardcode the values instead.
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Joomla's Module Manager loads mod_mokojoomhero.ini (not .sys.ini) when
rendering the configuration form fields. All param labels were only in
.sys.ini, causing raw constants to show in the admin edit screen.
Duplicated all param label/description strings into both .ini and
.sys.ini for en-GB and en-US locales.
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- en-GB: British English (Colour, Centre)
- en-US: American English (Color, Center)
- Both locales declared in manifest <languages> section
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The video field now accepts any URL format and auto-detects the source:
- YouTube: watch, embed, shorts, youtu.be (extracts video ID)
- Vimeo: vimeo.com/ID, player.vimeo.com/video/ID
- Local/direct: relative paths or direct URLs render as <video>
Also fix videoFile filter from url to string to allow local paths.
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The url filter rejects local relative paths like images/video.mp4.
Changed to string filter to support both local paths and YouTube URLs.
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>