From ff82234af572371341acb775315ce530fc765a21 Mon Sep 17 00:00:00 2001 From: TamaraGunkel <tamara.nrw@web.de> Date: Thu, 15 Feb 2018 13:01:58 +0100 Subject: [PATCH] Fixes #4 use mustache template for rendering the iframe --- amd/build/form.min.js | 2 +- filter.php | 20 ++++++++-------- renderer.php | 48 +++++++++++++++++++++++++++++++++++++++ templates/player.mustache | 33 +++++++++++++++++++++++++++ version.php | 2 +- 5 files changed, 93 insertions(+), 12 deletions(-) create mode 100644 renderer.php create mode 100644 templates/player.mustache diff --git a/amd/build/form.min.js b/amd/build/form.min.js index e10f1f0..38f38ca 100644 --- a/amd/build/form.min.js +++ b/amd/build/form.min.js @@ -1 +1 @@ -define(["jquery"],function(a){var b={init:function(){a("#ltiLaunchForm").submit(function(b){b.preventDefault(),a.ajax({url:"http://localhost:8080/lti",crossDomain:!0,type:"post",xhrFields:{withCredentials:!0},data:a("#ltiLaunchForm").serialize(),complete:function(){a("iframe").each(function(){a(this).attr("src",a(this).data("framesrc"))})}})}),a("#ltiLaunchForm").submit()}};return b}); \ No newline at end of file +define(["jquery"],function(a){var b={init:function(){a("#ltiLaunchForm").submit(function(b){b.preventDefault();var c=decodeURIComponent(a(this).attr("action"));a.ajax({url:c,crossDomain:!0,type:"post",xhrFields:{withCredentials:!0},data:a("#ltiLaunchForm").serialize(),complete:function(){a(".ocplayer").each(function(){a(this).attr("src",a(this).data("framesrc"))})}})}),a("#ltiLaunchForm").submit()}};return b}); \ No newline at end of file diff --git a/filter.php b/filter.php index cb67b87..fda0c3a 100644 --- a/filter.php +++ b/filter.php @@ -51,6 +51,7 @@ class filter_opencast extends moodle_text_filter { $matches = preg_split('/(<[^>]*>)/i', $text, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE); if ($matches) { + $renderer = $PAGE->get_renderer('filter_opencast'); // Login if user is not logged in yet. $loggedin = true; @@ -84,18 +85,17 @@ class filter_opencast extends moodle_text_filter { $id = substr($match, strpos($match, 'api/') + 4, 36); $src = $CFG->wwwroot . '/filter/opencast/player/core.html?id=' . $id . '&ocurl=' . urlencode($apiurl); - if ($loggedin) { - // Set the source attribute directly. - $player = '<iframe src="' . $src . '" width="95%" height="455px" class="ocplayer"></iframe>'; - } else { - // Set the source attribute after login. - $player = '<iframe data-frameSrc="' . $src . '" width="95%" height="455px" class="ocplayer"></iframe>'; + // Create link to video. + $link = $apiurl . '/engage/theodul/ui/core.html?id=' . $id; - } + // Collect the needed data being submitted to the template. + $mustachedata = new stdClass(); + $mustachedata->loggedin = $loggedin; + $mustachedata->src = $src; + $mustachedata->link = $link; + + $newtext = $renderer->render_player($mustachedata); - $link = $apiurl . '/engage/theodul/ui/core.html?id=' . $id; - // Add link to video. - $newtext = $player . '<a style="display:block;" target="_blank" href="' . $link . '">Zum Video</a>'; // Replace video tag. $text = preg_replace('/<video.*<\/video>/', $newtext, $text, 1); } diff --git a/renderer.php b/renderer.php new file mode 100644 index 0000000..f0d0c59 --- /dev/null +++ b/renderer.php @@ -0,0 +1,48 @@ +<?php +// This file is part of a plugin for Moodle - http://moodle.org/ +// +// Moodle is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// Moodle is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with Moodle. If not, see <http://www.gnu.org/licenses/>. + +/** + * Renderer definition. + * + * @package filter_opencast + * @copyright 2018 Tamara Gunkel + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +defined('MOODLE_INTERNAL') || die(); + +require_once(__DIR__ . '/lib.php'); +require_once($CFG->libdir . '/weblib.php'); + +/** + * Class for rendering opencast videos. + * + * @package filter_opencast + * @copyright 2018 Tamara Gunkel + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +class filter_opencast_renderer extends plugin_renderer_base { + + /** + * Display the player. + * + * @param object $data The prepared variables. + * @return string + */ + public function render_player($data) { + return $this->render_from_template('filter_opencast/player', $data); + } +} \ No newline at end of file diff --git a/templates/player.mustache b/templates/player.mustache new file mode 100644 index 0000000..2e859d0 --- /dev/null +++ b/templates/player.mustache @@ -0,0 +1,33 @@ +{{! + This file is part of Moodle - http://moodle.org/ + + Moodle is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Moodle is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Moodle. If not, see <http://www.gnu.org/licenses/>. +}} +{{! + @template filter_opencast/player + + Opencast player template. + The purpose of this template is to render a opencast video. +}} + +{{! Print the iframe. }} +{{# loggedin}} + <iframe src="{{src}}" width="95%" height="455px" class="ocplayer"></iframe> +{{/ loggedin}} +{{^loggedin}} + <iframe data-frameSrc="{{src}}" width="95%" height="455px" class="ocplayer"></iframe> +{{/loggedin}} +{{! Print the link to the video. }} +<a style="display:block;" target="_blank" href="{{link}}">Zum Video</a> + diff --git a/version.php b/version.php index f781a93..3d007ef 100644 --- a/version.php +++ b/version.php @@ -25,7 +25,7 @@ defined('MOODLE_INTERNAL') || die(); -$plugin->version = 2018021500; // The current plugin version (Date: YYYYMMDDXX). +$plugin->version = 2018021501; // The current plugin version (Date: YYYYMMDDXX). $plugin->requires = 2017050500; // Requires this Moodle version. $plugin->component = 'filter_opencast'; // Full name of the plugin. $plugin->dependencies = array('tool_opencast' => ANY_VERSION); -- GitLab