docbrown/app/views/articles/_video_player.html.erb
Julianna Tetreault fd9fdebc0b
[deploy] Migrate from Schema.org to JSON-LD (#6956)
* Add JSON-LD in place of schema.org in _video_player.html.erb

* Remove unnecessary tags around JSON-LD to clean up templates

* Fix indenatation and remove extra elements from show.html.erb and _profile_header.html.erb

* Remove empty line from articles/show.html.erb

* Clean up JSON-LD commas across erb templates

* Revert articleBody changes, adjust nesting, and remove extra quote

* Add application/ld+json to allowed_types in .erb-lint.yml

This addition makes it so that the no verify flag is no longer required

* Add additional data for Articles, Users, and Orgs to better SEO

* Add additional data to JSON-LD structures
*Add sameAs data to articles/show.html.erb
*Add sameAs data to users/show.html.erb
*Make adjustments to VideoObject data in _video_player
*Make adjustments to Org in _profile_header
*Add removed erb back to all erb templates

* Refactor code to fix syntax Google syntax errors
* Add missing double quotes to values
* Remove unnecessary meta tags from _video_player.html.erb
* Add additional key-value pairs to data structures
* General code clean up

* Clean up existing data structures
  *Remove useless meta tag and replace with a tag
  *Small refactor to users/show.html.erb data

* Extract user json-ld out of users/show.html.erb
  *Move json-ld logic to stories_controller
  *Use user_json_ld variable in place of entire data structure
  *Set user_json_ld as a before_action in the controller

* Add specs around JSON-LD data in templates
  *Add request spec for users/show.html.erb
  *Add request spec for articles/show.html.erb
  *Add request spec for _video_player.html.erb
  *Add request spec for _profile_header.html.erb
  *WIP: Fix pending specs for all templates

* Remove useless meta tags from users/show and _profile_header.html.erb

* Add additional test coverage to users/show.html.erb
  *Add additional tests to user_show_spec
  *Ensure that all tests pass
  *Small refactor to users/show.html.erb JSON data structure

* Add additional test coverage around JSON-LD data
  *Add more robust tests to template specs
  *Remove unnecessary comments from specs
  *Uncomment pending specs

* Adjust modified date to be more readable in article specs

* Refactor spec to be more readable and update GitHub username test

* Remove meta erb from articles/show.html.erb

* Remove meta data from _video_player.html.erb

* Clean up useless codeand whitespace for final review

* Extract users/show data structure from template into StoriesController
  * Remove JSON-LD object from users/show.html.erb
  * Place JSON-LD for users/show.html.erb in StoriesController
  * Store user_json_ld in set_json_ld method in StoriesController
  * Call user_json_ld variable in script tag in users/show
  * Clean up trailing commas and refactor articles/show.html.erb
  * Remove redundant user/profile_header_spec.rb

* Remove unnecessary code from _profile_header and articles/show
  * Remove Organization from articles/show.html.erb
  * Remove unnecessary comments from _profile_header.html.erb

* Extract user_json_ld into separate methods to fix Code Climate failures

* Rename user_profile_details and user_same_as methods to be more explicit

* Refactored user_json_ld methods to use symbols instead of strings
  * Use symbols to fetch keys from a hash instead of strings
  * Changed user_url in data structure

* Removal of erb tags and general clean up

* Revert schema changes

* Remove unnecessary quotation marks
2020-04-15 15:03:05 -04:00

73 lines
2.5 KiB
Text

<div class="video-player-header">
<% minutes, seconds = article.video_duration_in_minutes.split(":") %>
<div id="video-player-source" data-source="<%= article.video_source_url %>"></div>
<script src="//content.jwplatform.com/libraries/b1zWy2iv.js" async></script>
<div id="video-player-<%= article.id %>" class="video-player"></div>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "VideoObject",
"url": "<%= article.video_source_url %>",
"uploadDate": "<%= article.published_at&.rfc3339 %>",
"name": "<%= article.title %>",
"description": "<%= article.description %>",
"thumbnailUrl": "<%= cloudinary(article.video_thumbnail_url, 880) %>",
"contentUrl": "<%= article.video_source_url %>",
"duration": "<%= format("PT%<minutes>sM%<seconds>sS", minutes: minutes, seconds: seconds) %>"
}
</script>
</div>
<script type="text/javascript" async>
function getParameterByName(name, url) {
if (!url) url = window.location.href;
name = name.replace(/[\[\]]/g, "\\$&");
var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
results = regex.exec(url);
if (!results) return null;
if (!results[2]) return '';
return decodeURIComponent(results[2].replace(/\+/g, " "));
}
function timeToSeconds(hms) {
if (hms.length < 3) {
return hms
} else if (hms.length < 6) {
var a = hms.split(':')
return hms = (+a[0]) * 60 + (+a[1])
} else {
var a = hms.split(':')
return hms = (+a[0]) * 60 * 60 + (+a[1]) * 60 + (+a[2])
}
}
var waitingOnJWP<%= article.id %> = setInterval(function () {
if (typeof jwplayer !== 'undefined') {
clearInterval(waitingOnJWP<%= article.id %>);
var playerInstance = jwplayer("video-player-<%= article.id %>");
playerInstance.setup({
file: "<%= article.video_source_url %>",
mediaid: "<%= article.video_code %>",
autostart: <%= internal_navigation? %>,
image: "<%= cloudinary(article.video_thumbnail_url, 880) %>",
playbackRateControls: true,
tracks: [{
file: "<%= article.video_closed_caption_track_url %>",
label: "English",
kind: "captions",
"default": false
}]
});
var time = getParameterByName('t')
if (time) {
jwplayer().on('ready', function (event) {
jwplayer().play();
});
jwplayer().on('firstFrame', function () {
jwplayer().seek(timeToSeconds(time))
});
}
}
}, 2)
</script>