From 8057987d739bbbc6a3c0333c03015ffc592f9a8a Mon Sep 17 00:00:00 2001 From: Natkeeran Date: Fri, 1 Nov 2019 14:49:53 -0400 Subject: [PATCH 1/3] videojs --- .../islandora_videojs.info.yml | 7 +++ .../islandora_videojs.module | 56 +++++++++++++++++++ .../templates/videojs.html.twig | 23 ++++++++ 3 files changed, 86 insertions(+) create mode 100644 modules/islandora_videojs/islandora_videojs.info.yml create mode 100644 modules/islandora_videojs/islandora_videojs.module create mode 100644 modules/islandora_videojs/templates/videojs.html.twig diff --git a/modules/islandora_videojs/islandora_videojs.info.yml b/modules/islandora_videojs/islandora_videojs.info.yml new file mode 100644 index 000000000..f5f41547a --- /dev/null +++ b/modules/islandora_videojs/islandora_videojs.info.yml @@ -0,0 +1,7 @@ +name: 'Islandora Videojs' +description: 'Islandora Videojs overrides' +type: module +package: Islandora +core: 8.x +dependencies: + - islandora diff --git a/modules/islandora_videojs/islandora_videojs.module b/modules/islandora_videojs/islandora_videojs.module new file mode 100644 index 000000000..6e6a40d75 --- /dev/null +++ b/modules/islandora_videojs/islandora_videojs.module @@ -0,0 +1,56 @@ +' . t('About') . ''; + $output .= '

' . t('Islandora Videojs overrides.') . '

'; + $output .= '

' . t('Customizes videojs.') . '

'; + return $output; + + default: + } +} + + +function islandora_videojs_theme_registry_alter(&$theme_registry) { + $module_path = drupal_get_path('module', 'islandora_videojs'); + + // Use the templates in my module's template folder. + $theme_registry['videojs'] = $theme_registry['videojs']; + $theme_registry['videojs']['path'] = $module_path . '/templates'; + $theme_registry['videojs']['template'] = 'videojs'; +} + + +function islandora_videojs_theme($existing, $type, $theme, $path) { + return array( + 'videojs' => array( + 'variables' => array('items' => NULL, 'player_attributes' => NULL, 'testvar' => 'testvalue'), + 'base hook' => 'videojs' + ), + ); +} + + + + diff --git a/modules/islandora_videojs/templates/videojs.html.twig b/modules/islandora_videojs/templates/videojs.html.twig new file mode 100644 index 000000000..0c9b03758 --- /dev/null +++ b/modules/islandora_videojs/templates/videojs.html.twig @@ -0,0 +1,23 @@ +{# +/** + * @file + * Default theme implementation to display a formatted video field. + * + * Available variables: + * - items: A collection of videos. + * - player_attributes: Player options including the following: + * - width: The width of the video (if known). + * - height: The height of the video (if known). + * - autoplay: Autoplay on or off + * + * @ingroup themeable + */ +#} +

Videojs Test {{ testvar }}

+ From c34d0601dae5fe0699efb5bdfd9ff049e7e7da91 Mon Sep 17 00:00:00 2001 From: Natkeeran Date: Mon, 4 Nov 2019 16:50:48 -0500 Subject: [PATCH 2/3] support vtts --- .../islandora_videojs.module | 50 ++++++++++++++++++- .../templates/videojs.html.twig | 9 ++-- 2 files changed, 54 insertions(+), 5 deletions(-) diff --git a/modules/islandora_videojs/islandora_videojs.module b/modules/islandora_videojs/islandora_videojs.module index 6e6a40d75..10736c751 100644 --- a/modules/islandora_videojs/islandora_videojs.module +++ b/modules/islandora_videojs/islandora_videojs.module @@ -31,7 +31,6 @@ function islandora_videojs_help($route_name, RouteMatchInterface $route_match) { } } - function islandora_videojs_theme_registry_alter(&$theme_registry) { $module_path = drupal_get_path('module', 'islandora_videojs'); @@ -43,14 +42,61 @@ function islandora_videojs_theme_registry_alter(&$theme_registry) { function islandora_videojs_theme($existing, $type, $theme, $path) { + $transcript_urls = get_transcript_urls(); return array( 'videojs' => array( - 'variables' => array('items' => NULL, 'player_attributes' => NULL, 'testvar' => 'testvalue'), + 'variables' => array('items' => NULL, 'player_attributes' => NULL, 'mimes' => NULL, 'transcript_urls' => $transcript_urls), 'base hook' => 'videojs' ), ); } +function get_transcript_urls() { + // Get the nid + $node = \Drupal::routeMatch()->getParameter('node'); + $nid = NULL; + if ($node instanceof \Drupal\node\NodeInterface) { + $nid = $node->id(); + } + + $transcript_urls = array(); + + if ($nid != NULL) { + // media url + global $base_url; + $media_url = $base_url. '/node/' . $nid . '/media'; + + try { + $media_client = new \GuzzleHttp\Client(); + $media_response = $media_client->request('GET', $media_url, [ + 'http_errors' => false, + 'auth' => ['admin', 'islandora'], + 'query' => ['_format' => 'json'] + ]); + $code = $media_response->getStatusCode(); + + if ($code = 200) { + + // Loop through media to find the transcripts + $media_list = (string) $media_response->getBody(); + $media_list = json_decode($media_list, true); + foreach ($media_list as $media) { + if ($media['field_media_use'][0]['url'] == "/taxonomy/term/20") { + $file_url = $media['field_media_file'][0]['url']; + $transcript_urls[] = $file_url; + } + } + } + } + catch (\Exception $e) { + \Drupal::logger('islandora_videojs')->notice("Error in getting transcripts: " . $e->getMessage()); + } + + } + + return $transcript_urls; +} + diff --git a/modules/islandora_videojs/templates/videojs.html.twig b/modules/islandora_videojs/templates/videojs.html.twig index 0c9b03758..57abbbda1 100644 --- a/modules/islandora_videojs/templates/videojs.html.twig +++ b/modules/islandora_videojs/templates/videojs.html.twig @@ -13,11 +13,14 @@ * @ingroup themeable */ #} -

Videojs Test {{ testvar }}

+

Videojs Test

From ddc18ff6b28fba465310e93fe999efc9484b77da Mon Sep 17 00:00:00 2001 From: Natkeeran Date: Wed, 6 Nov 2019 11:55:53 -0500 Subject: [PATCH 3/3] add some comments --- modules/islandora_videojs/islandora_videojs.module | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/modules/islandora_videojs/islandora_videojs.module b/modules/islandora_videojs/islandora_videojs.module index 10736c751..6bacaf228 100644 --- a/modules/islandora_videojs/islandora_videojs.module +++ b/modules/islandora_videojs/islandora_videojs.module @@ -41,6 +41,9 @@ function islandora_videojs_theme_registry_alter(&$theme_registry) { } +/** +* videojs theme override +*/ function islandora_videojs_theme($existing, $type, $theme, $path) { $transcript_urls = get_transcript_urls(); return array( @@ -51,7 +54,9 @@ function islandora_videojs_theme($existing, $type, $theme, $path) { ); } - +/** +* returns the urls of the transcript of a repository item +*/ function get_transcript_urls() { // Get the nid $node = \Drupal::routeMatch()->getParameter('node');