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..6bacaf228 --- /dev/null +++ b/modules/islandora_videojs/islandora_videojs.module @@ -0,0 +1,107 @@ +' . 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'; +} + + +/** +* videojs theme override +*/ +function islandora_videojs_theme($existing, $type, $theme, $path) { + $transcript_urls = get_transcript_urls(); + return array( + 'videojs' => array( + 'variables' => array('items' => NULL, 'player_attributes' => NULL, 'mimes' => NULL, 'transcript_urls' => $transcript_urls), + 'base hook' => 'videojs' + ), + ); +} + +/** +* returns the urls of the transcript of a repository item +*/ +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 new file mode 100644 index 000000000..57abbbda1 --- /dev/null +++ b/modules/islandora_videojs/templates/videojs.html.twig @@ -0,0 +1,26 @@ +{# +/** + * @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 + */ +#} +