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