Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

97 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

eXeLearning

CI codecov Omeka S Version PHP Version License: AGPL v3 Downloads Last Commit

Omeka S module for eXeLearning content management. Upload, view and edit eXeLearning .elpx files directly within Omeka S.

Try eXeLearning on Omeka S Playground

ℹ️ 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 .elpx files 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)

  1. Download the latest release from the GitHub Releases page.
  2. Extract to your Omeka S modules directory as ExeLearning.
  3. 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 contain dist/static/; build it with make build-editor as shown above. See ADR-28-01.

Usage

Uploading ELPX Files

  1. Navigate to an Item in Omeka S
  2. Click Add media and select your .elpx file
  3. Save the item — the content will be displayed in the media viewer

Editing Content

  1. Go to the media page (Admin > Items > [Your Item] > [Media])
  2. Click Edit in eXeLearning
  3. 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.