This commit is contained in:
Markos Gogoulos
2026-02-03 19:23:02 +02:00
parent c4d569e7b0
commit e12f361935
89 changed files with 8689 additions and 0 deletions

View File

@@ -0,0 +1,187 @@
# TinyMCE MediaCMS Plugin for Moodle
A TinyMCE editor plugin for Moodle that provides media embedding capabilities with MediaCMS/LTI integration.
## Plugin Information
- **Component:** `tiny_mediacms`
- **Version:** See `version.php`
- **Requires:** Moodle 4.5+ (2024100100)
## Directory Structure
```
mediacms/
├── amd/
│ ├── src/ # JavaScript source files (ES6 modules)
│ │ ├── plugin.js # Main plugin entry point
│ │ ├── commands.js # Editor commands
│ │ ├── configuration.js # Plugin configuration
│ │ ├── iframeembed.js # Iframe embedding logic
│ │ ├── iframemodal.js # Iframe modal UI
│ │ ├── autoconvert.js # URL auto-conversion
│ │ ├── embed.js # Media embedding
│ │ ├── embedmodal.js # Embed modal UI
│ │ ├── image.js # Image handling
│ │ ├── imagemodal.js # Image modal UI
│ │ ├── imageinsert.js # Image insertion
│ │ ├── imagedetails.js # Image details panel
│ │ ├── imagehelpers.js # Image utility functions
│ │ ├── manager.js # File manager
│ │ ├── options.js # Plugin options
│ │ ├── selectors.js # DOM selectors
│ │ ├── common.js # Shared utilities
│ │ └── usedfiles.js # Track used files
│ └── build/ # Compiled/minified files (generated)
├── classes/ # PHP classes
├── lang/ # Language strings
│ └── en/
│ └── tiny_mediacms.php
├── templates/ # Mustache templates
├── styles.css # Plugin styles
├── settings.php # Admin settings
└── version.php # Plugin version
```
## Building JavaScript (AMD Modules)
When you modify JavaScript files in `amd/src/`, you must rebuild the minified files in `amd/build/`.
### Prerequisites
Make sure you have Node.js installed and have run `npm install` in the Moodle root directory:
```bash
cd /path/to/moodle/public
npm install
```
### Build Commands
#### Build all AMD modules (entire Moodle):
```bash
cd /path/to/moodle/public
npx grunt amd
```
#### Build only this plugin's AMD modules:
```bash
cd /path/to/moodle/public
npx grunt amd --root=lib/editor/tiny/plugins/mediacms
```
#### Watch for changes (auto-rebuild):
```bash
cd /path/to/moodle/public
npx grunt watch --root=lib/editor/tiny/plugins/mediacms
```
#### Force build (ignore warnings):
```bash
cd /path/to/moodle/public
npx grunt amd --force --root=lib/editor/tiny/plugins/mediacms
```
### Build Output
After running grunt, the following files are generated in `amd/build/`:
- `*.min.js` - Minified JavaScript files
- `*.min.js.map` - Source maps for debugging
## Development Mode (Skip Building)
For faster development, you can skip building by enabling developer mode in Moodle's `config.php`:
```php
// Add these lines to config.php
$CFG->debugdeveloper = true;
$CFG->cachejs = false;
```
This tells Moodle to load the unminified source files directly from `amd/src/` instead of `amd/build/`.
**Note:** Always build before committing or deploying to production!
## Purging Caches
After making changes, you may need to purge Moodle caches:
### Via CLI (Docker):
```bash
docker compose exec moodle php /var/www/html/public/admin/cli/purge_caches.php
```
### Via CLI (Local):
```bash
php admin/cli/purge_caches.php
```
### Via Web:
Visit: `http://your-moodle-site/admin/purgecaches.php`
## What Needs Cache Purging?
| File Type | Cache Purge Needed? |
|-----------|---------------------|
| `amd/src/*.js` | No (if `$CFG->cachejs = false`) |
| `amd/build/*.min.js` | Yes |
| `lang/en/*.php` | Yes |
| `templates/*.mustache` | Yes |
| `styles.css` | Yes |
| `classes/*.php` | Usually no |
| `settings.php` | Yes |
## Troubleshooting
### Changes not appearing?
1. **JavaScript changes:**
- Rebuild AMD modules: `npx grunt amd --root=lib/editor/tiny/plugins/mediacms`
- Hard refresh browser: `Cmd+Shift+R` (Mac) / `Ctrl+Shift+R` (Windows/Linux)
- Check browser console for errors
2. **Language strings:**
- Purge Moodle caches
3. **Templates:**
- Purge Moodle caches
4. **Styles:**
- Purge Moodle caches
- Hard refresh browser
### Grunt errors?
```bash
# Make sure dependencies are installed
cd /path/to/moodle/public
npm install
# Try with force flag
npx grunt amd --force --root=lib/editor/tiny/plugins/mediacms
```
### ESLint errors?
Fix linting issues or use:
```bash
npx grunt amd --force --root=lib/editor/tiny/plugins/mediacms
```
## Related Documentation
- [AUTOCONVERT.md](./AUTOCONVERT.md) - URL auto-conversion feature documentation
- [LTI_INTEGRATION.md](./LTI_INTEGRATION.md) - LTI integration documentation
## License
GNU GPL v3 or later - http://www.gnu.org/copyleft/gpl.html