diff --git a/lms-plugins/mediacms-moodle/filter/mediacms/classes/text_filter.php b/lms-plugins/mediacms-moodle/filter/mediacms/classes/text_filter.php index 7961416e..12aa2186 100644 --- a/lms-plugins/mediacms-moodle/filter/mediacms/classes/text_filter.php +++ b/lms-plugins/mediacms-moodle/filter/mediacms/classes/text_filter.php @@ -208,6 +208,7 @@ class text_filter extends \core_filters\text_filter { $launch_url = new moodle_url('/filter/mediacms/launch.php', [ 'token' => $token, 'courseid' => isset($COURSE->id) ? (int)$COURSE->id : 0, + 'show_media_page' => 'true', ]); if (!self::$textlink_js_added) { diff --git a/lms-plugins/mediacms-moodle/filter/mediacms/launch.php b/lms-plugins/mediacms-moodle/filter/mediacms/launch.php index c731c8fe..a727ed0e 100644 --- a/lms-plugins/mediacms-moodle/filter/mediacms/launch.php +++ b/lms-plugins/mediacms-moodle/filter/mediacms/launch.php @@ -28,6 +28,7 @@ $showRelated = optional_param('showRelated', '', PARAM_TEXT); $showUserAvatar = optional_param('showUserAvatar', '', PARAM_TEXT); $linkTitle = optional_param('linkTitle', '', PARAM_TEXT); $startTime = optional_param('t', '', PARAM_TEXT); +$show_media_page = optional_param('show_media_page', '', PARAM_TEXT); // Get configuration $mediacmsurl = get_config('filter_mediacms', 'mediacmsurl'); @@ -89,6 +90,9 @@ if ($linkTitle !== '') { if ($startTime !== '') { $custom_params[] = "embed_start_time=" . $startTime; } +if ($show_media_page === 'true') { + $custom_params[] = "show_media_page=true"; +} $instance->instructorcustomparameters = implode("\n", $custom_params); $instance->name = 'MediaCMS Video: ' . $mediatoken; @@ -117,6 +121,9 @@ if ($linkTitle !== '') { if ($startTime !== '') { $page_params['t'] = $startTime; } +if ($show_media_page === 'true') { + $page_params['show_media_page'] = 'true'; +} $PAGE->set_url(new moodle_url('/filter/mediacms/launch.php', $page_params)); $PAGE->set_context($context); @@ -149,6 +156,9 @@ if ($linkTitle !== '') { if ($startTime !== '') { $hidden_fields .= ''; } +if ($show_media_page === 'true') { + $hidden_fields .= ''; +} if ($width) { $hidden_fields .= ''; } diff --git a/lti/views.py b/lti/views.py index 62f57965..493dd18c 100644 --- a/lti/views.py +++ b/lti/views.py @@ -90,6 +90,7 @@ class OIDCLoginView(View): embed_start_time = request.GET.get('embed_start_time') or request.POST.get('embed_start_time') embed_width = request.GET.get('embed_width') or request.POST.get('embed_width') embed_height = request.GET.get('embed_height') or request.POST.get('embed_height') + show_media_page = request.GET.get('show_media_page') or request.POST.get('show_media_page') if not all([target_link_uri, iss, client_id]): return JsonResponse({'error': 'Missing required OIDC parameters'}, status=400) @@ -139,6 +140,8 @@ class OIDCLoginView(View): state_data['embed_width'] = embed_width if embed_height: state_data['embed_height'] = embed_height + if show_media_page: + state_data['show_media_page'] = show_media_page # Encode as base64 URL-safe string state = base64.urlsafe_b64encode(json.dumps(state_data).encode()).decode().rstrip('=') @@ -218,6 +221,7 @@ class LaunchView(View): 't': 't', 'width': 'width', 'height': 'height', + 'show_media_page': 'show_media_page', } for key, param_name in param_mapping.items(): @@ -265,7 +269,7 @@ class LaunchView(View): media_token_from_state = state_data.get('media_token') # Extract embed parameters from state - for key in ['embed_show_title', 'embed_show_related', 'embed_show_user_avatar', 'embed_link_title', 'embed_start_time', 'embed_width', 'embed_height']: + for key in ['embed_show_title', 'embed_show_related', 'embed_show_user_avatar', 'embed_link_title', 'embed_start_time', 'embed_width', 'embed_height', 'show_media_page']: if key in state_data: embed_params_from_state[key] = state_data[key] except Exception: @@ -704,6 +708,13 @@ class EmbedMediaLTIView(View): # Build embed URL with parameters from the request embed_params = LaunchView.extract_embed_params_from_dict(request.GET) - embed_url = LaunchView.build_url_with_embed_params(f"/embed?m={friendly_token}", embed_params) + show_media_page = request.GET.get('show_media_page') + + if show_media_page == 'true': + base_path = f"/view?m={friendly_token}" + else: + base_path = f"/embed?m={friendly_token}" + + embed_url = LaunchView.build_url_with_embed_params(base_path, embed_params) return HttpResponseRedirect(embed_url)