tiny_zoomclassroom is a Moodle 5+ TinyMCE plugin that adds a Zoom Classroom button to the editor and lets users insert LTI 1.3 deep-linked Zoom Classroom content into Moodle text areas.
It is designed for Moodle administrators who want to:
- install a customer-ready plugin ZIP into Moodle
- register Zoom Classroom through the plugin's dynamic registration flow
- let teachers and students insert Zoom Classroom content from TinyMCE
- render that content later through a normal authenticated LTI 1.3 launch
- Adds a TinyMCE toolbar button and Insert menu item
- Starts Zoom Classroom deep linking from Moodle text areas
- Uses a plugin-owned dynamic registration flow to create or update the Moodle external tool
- Reuses Moodle's LTI platform identity, signing helpers, token endpoint, and JWKS endpoint
- Stores selected launch metadata server-side in the plugin database
- Stores only an opaque embed reference in saved Moodle HTML
- Renders embedded content later without creating duplicate visible
mod_ltiactivities
You will need:
- a Moodle site with the TinyMCE editor enabled
- Moodle administrator access
- a Zoom Classroom dynamic registration URL
- a Moodle site URL that Zoom Classroom can reach during registration and launch
This plugin supports:
- Moodle 5+
- LTI 1.3 deep linking only
This plugin does not support:
- LTI 1.1
If you are installing this from GitHub, the normal path is:
- Download the latest plugin ZIP from the latest GitHub release.
- In Moodle, go to Site administration → Plugins → Install plugins.
- Upload
tiny_zoomclassroom.zip. - Complete the Moodle installation and upgrade flow.
- Open Site administration → Plugins → Text editors → TinyMCE editor → Zoom Classroom.
- Copy the dynamic registration URL from Zoom Classroom.
- Paste that URL into the plugin configuration page and start registration.
- Complete the Zoom Classroom registration flow.
- Return to the plugin page and confirm the configured Moodle tool is shown.
- Validate the button in a real course TinyMCE field.
If you only read one section of this README, read this one.
-
Download the latest
tiny_zoomclassroom.zipartifact from GitHub Releases. -
Sign in to Moodle as an administrator.
-
Open:
Site administration → Plugins → Install plugins
-
Upload:
tiny_zoomclassroom.zip -
Continue through Moodle's plugin installation screens.
-
Open Site administration → Notifications if Moodle prompts for upgrade completion.
-
Finish the upgrade.
-
Confirm the plugin appears in:
Site administration → Plugins → Text editors → TinyMCE editor → Zoom Classroom
-
Open:
Site administration → Plugins → Text editors → TinyMCE editor → Zoom Classroom
-
In Zoom Classroom, copy the dynamic registration URL for the Moodle integration.
-
Paste the URL into the plugin configuration page.
-
Start dynamic registration.
-
Complete the tool-side registration flow.
-
Return to the plugin page.
-
Confirm the configured Moodle tool is shown.
-
If needed, use the plugin page to:
- update the registration with a new URL
- select an existing eligible Moodle LTI 1.3 tool
- clear the configured tool
- delete the configured Moodle tool
-
Optionally adjust:
- popup width
- popup height
- allowed launch domains
After configuration, verify the full flow:
- Open a real Moodle course.
- Edit a resource, activity, submission, or other field that uses TinyMCE.
- Confirm the Zoom Classroom button appears.
- Click the button.
- Confirm the popup opens.
- Confirm Zoom Classroom content selection loads.
- Select a piece of content.
- Confirm the popup closes and the content appears in the editor.
- Save the Moodle item.
- Re-open the content in view mode and confirm the embedded item renders correctly.
Recommended extra checks:
- teacher-author insert flow
- student online-text submission flow
- teacher grading / review view for student-authored content
At a high level, the plugin:
- opens Moodle's deep-link selection flow from TinyMCE
- receives the selected Zoom Classroom resource
- validates and normalizes the launch configuration
- stores that launch configuration server-side
- writes only an opaque embed ID into saved HTML
- performs the final LTI 1.3 launch later through plugin-owned
view.phpandauth.php
This avoids creating duplicate visible Moodle external-tool activities for each embedded asset.
For detailed design and review material, see:
docs/architecture-and-technical-deep-dive.mddocs/admin-installation-guide.mddocs/teacher-student-guide.md
The plugin stores selected embed launch metadata in its own database table, including:
- tool ID
- course ID
- title
- normalized launch configuration
- timestamps
Saved TinyMCE HTML stores only:
- an opaque embed ID in
data-embed-id - a placeholder image URL pointing to plugin
placeholder.php
Saved HTML does not store:
- raw launch metadata
- client secrets
- private signing keys
- The Moodle administrator decides which external tool registration to trust
- Moodle remains the LTI platform identity for issuer, token, and JWKS
- The plugin owns the TinyMCE-specific OpenID configuration, registration, and authorization endpoints
- Launch URLs must use
httpsand match an administrator-managed allowlist - Runtime rendering still requires Moodle authentication and course access
- The final
view.php→auth.phplaunch handoff uses short-lived server-side session state
This repository contains the Moodle TinyMCE plugin only.
It does not include:
- the Zoom Classroom LTI tool implementation
- Moodle itself
- institutional deployment or browser policy management
To build the customer-installable plugin ZIP locally:
./ci/build.shThis creates:
dist/tiny_zoomclassroom.zip
The generated ZIP includes installable plugin content only, such as:
- PHP plugin files
classes/db/lang/pix/- compiled JavaScript in
amd/build/ LICENSEREADME.md
It excludes repository-only content such as:
.git/docs/- source files in
amd/src/ ci/- pre-existing
dist/contents
dist/is a generated release artifact and should not be committed- This repository does not require Node.js or Composer to package the release ZIP
- Use
./ci/build.shto generate the installable artifact for release distribution