User:Most2dot0/common.js

From Angelina Jordan Wiki

Note: After publishing, you may have to bypass your browser's cache to see the changes.

  • Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
  • Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
  • Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5.
//syntax highlighter
mw.loader.load('//www.mediawiki.org/w/index.php?title=MediaWiki:Gadget-DotsSyntaxHighlighter.js&action=raw&ctype=text/javascript');
syntaxHighlighterConfig = { parameterColor: "#FFDD99" }

// embedded YouTube player implementation supporting ad-hoc playlists
function insertYouTubePlayer() {
    var placeholder = document.getElementById('youtube-player-placeholder');
    if (placeholder) {
        // Get the list of video IDs from the data attribute
        var videoList = placeholder.getAttribute('data-videos').split(',');

        // Create a div element to hold the YouTube player
        var playerDiv = document.createElement('div');
        playerDiv.id = 'youtube-player';
        placeholder.appendChild(playerDiv);

        // Load the YouTube IFrame API
        var tag = document.createElement('script');
        tag.src = "https://www.youtube.com/iframe_api";
        var firstScriptTag = document.getElementsByTagName('script')[0];
        firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);

        // Create the YouTube player
        var player;
        var currentVideoIndex = 0;

        function onYouTubeIframeAPIReady() {
            player = new YT.Player('youtube-player', {
                height: '225',
                width: '400',
                videoId: videoList[currentVideoIndex],
                events: {
                    'onStateChange': onPlayerStateChange
                }
            });
        }

        function onPlayerStateChange(event) {
            if (event.data == YT.PlayerState.ENDED) {
                playNextVideo();
            }
        }

        function playNextVideo() {
            currentVideoIndex++;
            if (currentVideoIndex < videoList.length) {
                player.loadVideoById(videoList[currentVideoIndex]);
            } else {
                currentVideoIndex = 0;
                player.loadVideoById(videoList[currentVideoIndex]);
            }
        }

        // Expose the API ready function to the global scope
        window.onYouTubeIframeAPIReady = onYouTubeIframeAPIReady;
    }
}

// Run the function to insert the YouTube player
insertYouTubePlayer();