diff --git a/lms-plugins/mediacms-moodle/README.md b/lms-plugins/mediacms-moodle/README.md
index 943a59d7..0097ae50 100644
--- a/lms-plugins/mediacms-moodle/README.md
+++ b/lms-plugins/mediacms-moodle/README.md
@@ -1,14 +1,20 @@
# MediaCMS for Moodle
-This package provides the integration between MediaCMS and Moodle (versions 4.x and 5.x).
-It consists of two separate plugins that work together to provide a seamless video experience:
+**Version:** 1.0.0 | **Release Date:** 2026-02-12 | **Moodle:** 4.5+
+
+This package provides complete MediaCMS integration for Moodle, consisting of two plugins that work together with **unified settings**:
1. **Filter Plugin (filter_mediacms):**
- * **Purpose:** Handles the display of videos using secure LTI 1.3 launches and provides "Auto-convert" to turn URLs into players.
+ * Handles LTI 1.3 authentication and secure video launches
+ * Auto-converts MediaCMS URLs to embedded players
+ * **Provides core settings** (MediaCMS URL, LTI Tool ID) used by both plugins
* **Location:** `filter/mediacms`
2. **Editor Plugin (tiny_mediacms):**
- * **Purpose:** Adds a "Insert MediaCMS Media" button to the TinyMCE editor, allowing users to select videos from the MediaCMS library or paste URLs.
+ * Adds MediaCMS button to TinyMCE editor
+ * Browse authenticated video library via LTI Deep Linking
+ * Configure embed options (dimensions, display, start time)
+ * **Reads core settings** from filter plugin
* **Location:** `lib/editor/tiny/plugins/mediacms`
## Installation
@@ -42,21 +48,32 @@ chmod -R 755 /var/www/moodle/public/lib/editor/tiny/plugins/mediacms
## Configuration
-You must configure both plugins to fully enable the integration.
+### Step 1: Core Settings (Required) - Configure Once
-### Filter Configuration
-1. Go to **Site administration > Plugins > Filters > Manage filters**.
-2. Enable **MediaCMS** (set it to "On").
-3. Click **Settings** next to MediaCMS.
-4. **MediaCMS URL:** Enter the base URL of your MediaCMS instance (e.g., `https://lti.mediacms.io`).
-5. **LTI Tool:** Select the External Tool configuration that corresponds to MediaCMS.
- * *Note:* You must first create an LTI 1.3 External Tool in *Site administration > Plugins > Activity modules > External tool > Manage tools*.
-6. **Auto-convert:** Check "Enable auto-convert" if you want plain text URLs (e.g., `https://video.example.com/view?m=xyz`) to automatically become video players.
+Go to **Site administration > Plugins > Filters > MediaCMS** (Settings)
-### Editor Configuration (TinyMCE)
-1. Go to **Site administration > Plugins > Text editors > TinyMCE editor > MediaCMS settings**.
-2. **LTI Tool:** Select the same Tool configured for the Filter to enable the "Video Library" picker button.
-3. **Auto-convert:** (Implicitly enabled) Pasting MediaCMS URLs into the editor will automatically convert them to placeholders.
+* **MediaCMS URL:** Enter your MediaCMS instance URL (e.g., `https://lti.mediacms.io`)
+* **LTI Tool:** Select the External Tool configuration for MediaCMS
+ * *First create an LTI 1.3 tool at: Site administration > Plugins > Activity modules > External tool > Manage tools*
+
+> **✨ Note:** These core settings are automatically used by **both** the filter and TinyMCE editor plugin.
+
+### Step 2: Enable Filter
+
+1. Go to **Site administration > Plugins > Filters > Manage filters**
+2. Set **MediaCMS** to "On"
+
+### Step 3: Configure Auto-convert Defaults (Optional)
+
+Go to **Site administration > Plugins > Text editors > TinyMCE editor > MediaCMS settings**
+
+Configure default display options for auto-converted URLs:
+* Show video title
+* Link video title
+* Show related videos
+* Show user avatar
+
+> **Note:** The core settings (URL, LTI Tool) are managed in the filter plugin settings.
## Usage
diff --git a/lms-plugins/mediacms-moodle/filter/mediacms/lang/en/filter_mediacms.php b/lms-plugins/mediacms-moodle/filter/mediacms/lang/en/filter_mediacms.php
index 350950f0..becadf09 100644
--- a/lms-plugins/mediacms-moodle/filter/mediacms/lang/en/filter_mediacms.php
+++ b/lms-plugins/mediacms-moodle/filter/mediacms/lang/en/filter_mediacms.php
@@ -3,10 +3,12 @@ defined('MOODLE_INTERNAL') || die();
$string['filtername'] = 'MediaCMS';
$string['pluginname'] = 'MediaCMS';
+$string['coresettings'] = 'Core MediaCMS Settings';
+$string['coresettings_desc'] = 'These settings are shared with the TinyMCE MediaCMS editor plugin.';
$string['mediacmsurl'] = 'MediaCMS URL';
-$string['mediacmsurl_desc'] = 'The base URL of your MediaCMS instance (e.g., https://lti.mediacms.io).';
+$string['mediacmsurl_desc'] = 'The base URL of your MediaCMS instance (e.g., https://lti.mediacms.io). This setting is used by both the filter and the TinyMCE editor plugin.';
$string['ltitoolid'] = 'LTI Tool';
-$string['ltitoolid_desc'] = 'Select the External Tool configuration for MediaCMS. If "Auto-detect" is selected, the plugin will try to find a tool matching the MediaCMS URL.';
+$string['ltitoolid_desc'] = 'Select the External Tool configuration for MediaCMS. This enables the video library in the TinyMCE editor and LTI authentication. To set up an LTI tool, go to Site Administration > Plugins > Activity modules > External tool > Manage tools.';
$string['noltitoolsfound'] = 'No LTI tools found';
$string['iframewidth'] = 'Default Width';
$string['iframewidth_desc'] = 'Default width for embedded videos (pixels).';
diff --git a/lms-plugins/mediacms-moodle/filter/mediacms/settings.php b/lms-plugins/mediacms-moodle/filter/mediacms/settings.php
index a117e412..c3a169af 100644
--- a/lms-plugins/mediacms-moodle/filter/mediacms/settings.php
+++ b/lms-plugins/mediacms-moodle/filter/mediacms/settings.php
@@ -2,6 +2,13 @@
defined('MOODLE_INTERNAL') || die;
if ($ADMIN->fulltree) {
+ // Info heading
+ $settings->add(new admin_setting_heading(
+ 'filter_mediacms/coresettings',
+ get_string('coresettings', 'filter_mediacms'),
+ get_string('coresettings_desc', 'filter_mediacms')
+ ));
+
// MediaCMS URL
$settings->add(new admin_setting_configtext(
'filter_mediacms/mediacmsurl',
diff --git a/lms-plugins/mediacms-moodle/filter/mediacms/version.php b/lms-plugins/mediacms-moodle/filter/mediacms/version.php
index b408b6ac..02d7cadd 100644
--- a/lms-plugins/mediacms-moodle/filter/mediacms/version.php
+++ b/lms-plugins/mediacms-moodle/filter/mediacms/version.php
@@ -1,7 +1,7 @@
version = 2026020100;
+$plugin->version = 2026021200; // 2026-02-12
$plugin->requires = 2024100700; // Requires Moodle 4.5+
$plugin->component = 'filter_mediacms';
$plugin->maturity = MATURITY_STABLE;
diff --git a/lms-plugins/mediacms-moodle/tiny/mediacms/classes/plugininfo.php b/lms-plugins/mediacms-moodle/tiny/mediacms/classes/plugininfo.php
index 32c6c9df..d948f284 100755
--- a/lms-plugins/mediacms-moodle/tiny/mediacms/classes/plugininfo.php
+++ b/lms-plugins/mediacms-moodle/tiny/mediacms/classes/plugininfo.php
@@ -109,7 +109,8 @@ class plugininfo extends plugin implements plugin_with_buttons, plugin_with_menu
* @return array Auto-convert configuration data
*/
protected static function get_autoconvert_configuration(): array {
- $baseurl = get_config('tiny_mediacms', 'autoconvert_baseurl');
+ // Read MediaCMS base URL from filter settings (unified)
+ $baseurl = get_config('filter_mediacms', 'mediacmsurl');
// Helper function to get config with default value of true.
$getboolconfig = function($name) {
@@ -142,8 +143,8 @@ class plugininfo extends plugin implements plugin_with_buttons, plugin_with_menu
protected static function get_lti_configuration(context $context): array {
global $COURSE;
- // Get the configured LTI tool ID from plugin settings.
- $ltitoolid = get_config('tiny_mediacms', 'ltitoolid');
+ // Read LTI tool ID from filter settings (unified)
+ $ltitoolid = get_config('filter_mediacms', 'ltitoolid');
// Determine the course ID from context.
$courseid = 0;
diff --git a/lms-plugins/mediacms-moodle/tiny/mediacms/lang/en/tiny_mediacms.php b/lms-plugins/mediacms-moodle/tiny/mediacms/lang/en/tiny_mediacms.php
index d3529616..93b8328c 100755
--- a/lms-plugins/mediacms-moodle/tiny/mediacms/lang/en/tiny_mediacms.php
+++ b/lms-plugins/mediacms-moodle/tiny/mediacms/lang/en/tiny_mediacms.php
@@ -159,12 +159,9 @@ $string['libraryselect'] = 'Select';
$string['librarypage'] = 'Page {$a->current} of {$a->total}';
$string['libraryvideoselected'] = 'Video selected. Configure embed options below.';
-// LTI settings strings.
-$string['ltitoolid'] = 'LTI Tool';
-$string['ltitoolid_desc'] = 'Select the External Tool configuration for MediaCMS. This enables the authenticated video library in the editor.';
-$string['noltitoolsfound'] = 'No LTI tools found';
-$string['choose'] = 'Choose...';
-$string['ltitoolid_help'] = 'To find the LTI tool ID, go to Site administration > Plugins > Activity modules > External tool > Manage tools. The ID is shown in the URL when editing a tool (e.g., id=2).';
+// Core settings (configured in filter plugin).
+$string['coresettingsheading'] = 'Core MediaCMS Settings';
+$string['coresettingsheading_desc'] = 'Note: MediaCMS URL and LTI Tool configuration are managed in the filter plugin. Go to: Site Administration > Plugins > Filters > Manage filters, then click "Settings" next to MediaCMS.';
// Iframe library from LTI strings.
$string['iframelibraryloading'] = 'Loading MediaCMS video library...';
diff --git a/lms-plugins/mediacms-moodle/tiny/mediacms/settings.php b/lms-plugins/mediacms-moodle/tiny/mediacms/settings.php
index 5eb78f5b..d746eb2a 100755
--- a/lms-plugins/mediacms-moodle/tiny/mediacms/settings.php
+++ b/lms-plugins/mediacms-moodle/tiny/mediacms/settings.php
@@ -25,42 +25,15 @@
defined('MOODLE_INTERNAL') || die();
if ($ADMIN->fulltree) {
- global $DB;
+ // Note: Core MediaCMS settings (URL, LTI Tool) are configured in the filter plugin
+ // Go to: Site Administration > Plugins > Filters > MediaCMS
+ $settings->add(new admin_setting_heading(
+ 'tiny_mediacms/coresettingsheading',
+ new lang_string('coresettingsheading', 'tiny_mediacms'),
+ new lang_string('coresettingsheading_desc', 'tiny_mediacms')
+ ));
- // LTI Tool ID setting (Dropdown).
- $ltioptions = [0 => get_string('noltitoolsfound', 'tiny_mediacms')];
- try {
- $tools = $DB->get_records('lti_types', null, 'name ASC', 'id, name, baseurl');
- if (!empty($tools)) {
- $ltioptions = [0 => get_string('choose', 'tiny_mediacms')];
- foreach ($tools as $tool) {
- $ltioptions[$tool->id] = $tool->name . ' (' . $tool->baseurl . ')';
- }
- }
- } catch (Exception $e) {
- // Database might not be ready during install
- }
-
- $setting = new admin_setting_configselect(
- 'tiny_mediacms/ltitoolid',
- new lang_string('ltitoolid', 'tiny_mediacms'),
- new lang_string('ltitoolid_desc', 'tiny_mediacms'),
- 0,
- $ltioptions
- );
- $settings->add($setting);
-
- // Auto-convert is enabled by default in plugininfo.php (data.autoConvertEnabled = true).
-
- // MediaCMS base URL for auto-convert.
- $setting = new admin_setting_configtext(
- 'tiny_mediacms/autoconvert_baseurl',
- new lang_string('autoconvert_baseurl', 'tiny_mediacms'),
- new lang_string('autoconvert_baseurl_desc', 'tiny_mediacms'),
- 'https://lti.mediacms.io', // Default matching filter
- PARAM_URL
- );
- $settings->add($setting);
+ // Editor-specific settings: Auto-convert default options
// Auto-convert embed options.
$setting = new admin_setting_configcheckbox(
diff --git a/lms-plugins/mediacms-moodle/tiny/mediacms/version.php b/lms-plugins/mediacms-moodle/tiny/mediacms/version.php
index e2eae3ca..c59b49af 100755
--- a/lms-plugins/mediacms-moodle/tiny/mediacms/version.php
+++ b/lms-plugins/mediacms-moodle/tiny/mediacms/version.php
@@ -24,7 +24,9 @@
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2026020200; // Updated 2026-02-02
-$plugin->requires = 2024100100;
+$plugin->version = 2026021200; // 2026-02-12 - Unified settings release
+$plugin->requires = 2024100700; // Requires Moodle 4.5+
$plugin->component = 'tiny_mediacms';
-$plugin->dependencies = ['filter_mediacms' => 2026020100]; // Keep dependency on our filter
+$plugin->maturity = MATURITY_STABLE;
+$plugin->release = 'v1.0.0';
+$plugin->dependencies = ['filter_mediacms' => 2026021200]; // Requires filter plugin for shared settings