eXeLearning
Omeka S module for eXeLearning content management. Upload, view and edit eXeLearning .elpx files directly within Omeka S.
ℹ️ The eXeLearning editor is fetched from the shared release and unpacked into the module when the playground boots, so the first load may take a few extra seconds. ELPX upload, viewer and preview work normally.
Features
- ELPX File Support: Upload and manage eXeLearning
.elpxfiles through Omeka S - Automatic Extraction: ELPX files are automatically extracted and ready to display
- Embedded Editor: Edit eXeLearning content directly from Omeka S without leaving the browser
- Automatic Thumbnails: Generates visual thumbnails from the content's first page
- Secure Content Delivery: All content served through a secure proxy with CSP headers and iframe sandboxing
Installation
From Releases (Recommended)
- Download the latest release from the GitHub Releases page.
- Extract to your Omeka S
modulesdirectory asExeLearning. - Log in to the admin panel, go to Modules and click Install.
Server Configuration (nginx)
Add these rules to your nginx configuration:
# Block direct access to extracted files
location ^~ /files/exelearning/ {
return 403;
}
# Route content proxy to PHP
location ^~ /exelearning/content/ {
try_files $uri /index.php$is_args$args;
}
Apache is supported automatically via the included .htaccess file.
From Source (Development)
git clone https://github.com/exelearning/omeka-s-exelearning.git
cd omeka-s-exelearning
make build-editor
By default, make build-editor fetches https://github.com/exelearning/exelearning from main using a shallow checkout. You can override source/ref at runtime:
EXELEARNING_EDITOR_REF=vX.Y.Z EXELEARNING_EDITOR_REF_TYPE=tag make build-editor
Important: For production use, always install an official release from Releases: release packages include the embedded editor pre-built under
dist/static/, and that bundle is the only editor the module ever uses. The module never downloads editor code at runtime, and administrators cannot update the editor independently of the module — updating the editor means updating the module (a new module release is published automatically for every editor release). Source checkouts do not containdist/static/; build it withmake build-editoras shown above. See ADR-28-01.
Usage
Uploading ELPX Files
- Navigate to an Item in Omeka S
- Click Add media and select your
.elpxfile - Save the item — the content will be displayed in the media viewer
Editing Content
- Go to the media page (Admin > Items > [Your Item] > [Media])
- Click Edit in eXeLearning
- Make your changes and click Save to Omeka
Development
make up # Start Docker environment (http://localhost:8080)
make down # Stop containers
make lint # Check code style + validate the architecture records
make fix # Auto-fix code style
make test # Run the unit tests
make test-coverage # Tests + coverage gate (what CI runs)
make package VERSION=1.2.3 # Build a .zip release
Default credentials: admin@example.com / PLEASE_CHANGEME
make test-coverage is the blocking verification gate: it fails on any failing
test and on line coverage below MIN_COVERAGE (90%), and writes its reports to
artifacts/coverage/. Coverage is published to
Codecov, which annotates
pull requests but does not block them — see
ADR-32-01.
Architecture documentation
Architecture Decision Records (ADRs) and change documents live under
docs/architecture/. Use them for significant
design, security, storage, content-proxy, embedded-editor, or compatibility
changes.
Records are identified by the GitHub tracking number of the change that produced
them — here always a pull-request number, since issues are tracked upstream in
exelearning/exelearning.
There is no committed index:
make architecture-records # print the ADR and change indexes
make architecture-check # validate identifiers, metadata, cross-references
Requirements
- Omeka S 3.0 or higher
- PHP 7.4 or higher with ZipArchive extension
Issues and Support
Issue tracking for this module is centralized in the main
exelearning/exelearning repository.
Please open new issues there,
and browse existing omeka-s-labeled issues
before reporting a bug or requesting a feature.
License
This module is licensed under the AGPL v3 or later.