feat: Add comprehensive documentation suite and reorganize project structure
- Created complete documentation in docs/ directory - Added PROJECT_OVERVIEW.md with feature highlights and getting started guide - Added ARCHITECTURE.md with system design and technical details - Added SECURITY.md with comprehensive security implementation guide - Added DEVELOPMENT.md with development workflows and best practices - Added DEPLOYMENT.md with production deployment instructions - Added API.md with complete REST API documentation - Added CONTRIBUTING.md with contribution guidelines - Added CHANGELOG.md with version history and migration notes - Reorganized all documentation files into docs/ directory for better organization - Updated README.md with proper documentation links and quick navigation - Enhanced project structure with professional documentation standards
This commit is contained in:
88
f_scripts/shared/videojs/videojs.suggestedVideoEndcap.js
Normal file
88
f_scripts/shared/videojs/videojs.suggestedVideoEndcap.js
Normal file
@@ -0,0 +1,88 @@
|
||||
/**
|
||||
* Video.js Suggested Video Endcap
|
||||
* Created by Justin McCraw for New York Media LLC
|
||||
* License information: https://github.com/jmccraw/videojs-suggestedVideoEndcap/blob/master/LICENSE
|
||||
* Plugin details: https://github.com/jmccraw/videojs-suggestedVideoEndcap
|
||||
*/
|
||||
|
||||
(function(videojs) {
|
||||
'use strict';
|
||||
|
||||
videojs.plugin('suggestedVideoEndcap', function(opts) {
|
||||
opts = opts || {
|
||||
header: 'You may also like…',
|
||||
suggestions: [
|
||||
{
|
||||
title: '',
|
||||
url: '',
|
||||
image: '',
|
||||
alt: '',
|
||||
target: '_self'
|
||||
}
|
||||
]
|
||||
};
|
||||
var player = this;
|
||||
var _sve;
|
||||
|
||||
/**
|
||||
* Generate the DOM elements for the suggested video endcap content
|
||||
* @type {function}
|
||||
*/
|
||||
function constructSuggestedVideoEndcapContent() {
|
||||
var sugs = opts.suggestions;
|
||||
var _frag = document.createDocumentFragment();
|
||||
var _aside = document.createElement('aside');
|
||||
var _div = document.createElement('div');
|
||||
var _header = document.createElement('h5');
|
||||
// can only hold eight suggestions at a time
|
||||
var i = sugs.length - 1 > 7 ? 7 : sugs.length - 1;
|
||||
var _a;
|
||||
var _img;
|
||||
|
||||
_aside.className = 'vjs-suggested-video-endcap';
|
||||
_div.className = 'vjs-suggested-video-endcap-container';
|
||||
|
||||
_header.innerHTML = opts.header;
|
||||
_header.className = 'vjs-suggested-video-endcap-header';
|
||||
|
||||
_aside.appendChild(_header);
|
||||
|
||||
// construct the individual suggested content pieces
|
||||
for (; i >= 0; --i) {
|
||||
_a = document.createElement('a');
|
||||
_a.className = 'vjs-suggested-video-endcap-link';
|
||||
_a.href = sugs[i].url;
|
||||
_a.target = sugs[i].target || '_self';
|
||||
_a.title = sugs[i].title;
|
||||
|
||||
_img = document.createElement('img');
|
||||
_img.className = 'vjs-suggested-video-endcap-img';
|
||||
_img.src = sugs[i].image;
|
||||
_img.alt = sugs[i].alt || sugs[i].title;
|
||||
_a.appendChild(_img);
|
||||
|
||||
_a.innerHTML += sugs[i].title;
|
||||
|
||||
_div.appendChild(_a);
|
||||
}
|
||||
|
||||
_aside.appendChild(_div);
|
||||
_sve = _aside;
|
||||
_frag.appendChild(_aside);
|
||||
player.el().appendChild(_frag);
|
||||
}
|
||||
|
||||
// attach VideoJS event handlers
|
||||
player.on('ended', function() {
|
||||
_sve.classList.add('is-active');
|
||||
}).on('play', function() {
|
||||
_sve.classList.remove('is-active');
|
||||
});
|
||||
|
||||
player.ready(function() {
|
||||
constructSuggestedVideoEndcapContent();
|
||||
});
|
||||
|
||||
|
||||
});
|
||||
}(window.videojs));
|
||||
Reference in New Issue
Block a user