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 12aa2186..cb176e51 100644 --- a/lms-plugins/mediacms-moodle/filter/mediacms/classes/text_filter.php +++ b/lms-plugins/mediacms-moodle/filter/mediacms/classes/text_filter.php @@ -185,7 +185,7 @@ class text_filter extends \core_filters\text_filter { * @return string Transformed HTML (or original if token cannot be extracted) */ private function transform_textlink($anchor_html) { - global $COURSE, $PAGE; + global $COURSE; // Extract href. if (!preg_match('/href=["\']([^"\']+)["\']/', $anchor_html, $href_matches)) { @@ -205,36 +205,15 @@ class text_filter extends \core_filters\text_filter { return $anchor_html; } - $launch_url = new moodle_url('/filter/mediacms/launch.php', [ + $view_url = new moodle_url('/filter/mediacms/my_media.php', [ 'token' => $token, 'courseid' => isset($COURSE->id) ? (int)$COURSE->id : 0, - 'show_media_page' => 'true', ]); - if (!self::$textlink_js_added) { - self::$textlink_js_added = true; - $PAGE->requires->js_init_code( - 'document.addEventListener("click",function(e){' - . 'var a=e.target.closest("a.mediacms-textlink-launch");if(!a)return;' - . 'e.preventDefault();' - . 'var f=document.createElement("iframe");' - . 'f.src=a.dataset.launchUrl;' - . 'f.style.cssText="width:100%;height:480px;border:none;display:block;";' - . 'f.allowFullscreen=true;' - . 'f.setAttribute("allow","autoplay *; fullscreen *; encrypted-media *;");' - . 'a.parentNode.replaceChild(f,a);' - . '});', - false - ); - } - return html_writer::tag('a', $text_matches[1], [ - 'href' => '#', - 'class' => 'mediacms-textlink-launch', - 'data-launch-url' => $launch_url->out(false), + 'href' => $view_url->out(false), + 'target' => '_blank', + 'rel' => 'noopener noreferrer', ]); } - - /** @var bool Whether the inline-iframe JS has already been added to the page. */ - private static $textlink_js_added = false; } diff --git a/lms-plugins/mediacms-moodle/filter/mediacms/my_media.php b/lms-plugins/mediacms-moodle/filter/mediacms/my_media.php index 4638f74b..8cff20d0 100644 --- a/lms-plugins/mediacms-moodle/filter/mediacms/my_media.php +++ b/lms-plugins/mediacms-moodle/filter/mediacms/my_media.php @@ -9,28 +9,45 @@ require_once(__DIR__ . '/../../config.php'); -global $SITE, $PAGE, $OUTPUT, $USER; +global $SITE, $PAGE, $OUTPUT, $USER, $COURSE; require_login(); -$context = context_system::instance(); +$token = optional_param('token', '', PARAM_ALPHANUMEXT); +$courseid = optional_param('courseid', 0, PARAM_INT); +$context = context_system::instance(); $PAGE->set_context($context); -$PAGE->set_url(new moodle_url('/filter/mediacms/my_media.php')); $PAGE->set_course($SITE); $PAGE->set_pagelayout('mydashboard'); -$PAGE->set_title(get_string('mymedia', 'filter_mediacms')); -$PAGE->set_heading(get_string('mymedia', 'filter_mediacms')); + +if ($token) { + $PAGE->set_url(new moodle_url('/filter/mediacms/my_media.php', ['token' => $token])); + $PAGE->set_title('MediaCMS'); + $PAGE->set_heading('MediaCMS'); + + $launch_params = [ + 'token' => $token, + 'courseid' => $courseid ?: ($COURSE->id ?? 0), + 'show_media_page' => 'true', + ]; + $src = (new moodle_url('/filter/mediacms/launch.php', $launch_params))->out(false); +} else { + $PAGE->set_url(new moodle_url('/filter/mediacms/my_media.php')); + $PAGE->set_title(get_string('mymedia', 'filter_mediacms')); + $PAGE->set_heading(get_string('mymedia', 'filter_mediacms')); + + $src = (new moodle_url('/filter/mediacms/lti_launch.php'))->out(false); +} echo $OUTPUT->header(); -$attr = [ +echo html_writer::tag('iframe', '', [ 'id' => 'contentframe', - 'src' => (new moodle_url('/filter/mediacms/lti_launch.php'))->out(false), + 'src' => $src, 'allowfullscreen' => 'true', 'allow' => 'autoplay *; fullscreen *; encrypted-media *; camera *; microphone *;', 'style' => 'border:none;display:block;width:100%;height:calc(100vh - 120px);', -]; -echo html_writer::tag('iframe', '', $attr); +]); echo $OUTPUT->footer();