2012-03-15 22:56:51 +01:00
|
|
|
var _playlist_jplayer;
|
|
|
|
var _idToPostionLookUp;
|
2015-07-02 22:07:49 +02:00
|
|
|
var URL_BAR_HEIGHT = 32;
|
2012-03-10 00:47:08 +01:00
|
|
|
|
2012-03-15 22:56:51 +01:00
|
|
|
/**
|
2022-08-10 13:38:19 +02:00
|
|
|
*When the page loads the ready function will get all the data it can from the hidden span elements
|
|
|
|
*and call one of three functions depending on weather the window was open to play an audio file,
|
|
|
|
*or a playlist or a show.
|
|
|
|
*/
|
|
|
|
$(document).ready(function () {
|
|
|
|
$.jPlayer.timeFormat.showHour = true;
|
|
|
|
|
|
|
|
var audioUri = $(".audioUri").text();
|
|
|
|
var audioMime = $(".audioMime").text();
|
|
|
|
var playlistID = $(".playlistID").text();
|
|
|
|
var playlistIndex = $(".playlistIndex").text();
|
|
|
|
var showID = $(".showID").text();
|
|
|
|
var showIndex = $(".showIndex").text();
|
|
|
|
var blockId = $(".blockId").text();
|
|
|
|
var blockIndex = $(".blockIndex").text();
|
|
|
|
|
|
|
|
_playlist_jplayer = new jPlayerPlaylist(
|
|
|
|
{
|
|
|
|
jPlayer: "#jquery_jplayer_1",
|
|
|
|
cssSelectorAncestor: "#jp_container_1",
|
|
|
|
},
|
|
|
|
[], //array of songs will be filled with below's json call
|
2012-03-10 00:47:08 +01:00
|
|
|
{
|
2022-08-10 13:38:19 +02:00
|
|
|
swfPath: baseUrl + "js/jplayer",
|
2025-01-10 16:46:18 +01:00
|
|
|
supplied: "oga, mp3, m4v, m4a, wav, flac",
|
2022-08-10 13:38:19 +02:00
|
|
|
size: {
|
|
|
|
width: "0px",
|
|
|
|
height: "0px",
|
|
|
|
cssClass: "jp-video-270p",
|
|
|
|
},
|
|
|
|
playlistOptions: {
|
|
|
|
autoPlay: false,
|
|
|
|
loopOnPrevious: false,
|
|
|
|
shuffleOnLoop: true,
|
|
|
|
enableRemoveControls: false,
|
|
|
|
displayTime: 0,
|
|
|
|
addTime: 0,
|
|
|
|
removeTime: 0,
|
|
|
|
shuffleTime: 0,
|
|
|
|
},
|
|
|
|
ready: function () {
|
|
|
|
if (playlistID != "" && playlistID !== "") {
|
|
|
|
playAllPlaylist(playlistID, playlistIndex);
|
|
|
|
} else if (audioUri != "") {
|
|
|
|
playOne(audioUri, audioMime);
|
|
|
|
} else if (showID != "") {
|
|
|
|
playAllShow(showID, showIndex);
|
|
|
|
} else if (blockId != "" && blockIndex != "") {
|
|
|
|
playBlock(blockId, blockIndex);
|
2012-04-09 21:28:38 +02:00
|
|
|
}
|
2022-08-10 13:38:19 +02:00
|
|
|
},
|
2023-07-06 21:39:05 +02:00
|
|
|
},
|
2022-08-10 13:38:19 +02:00
|
|
|
);
|
2015-07-02 22:07:49 +02:00
|
|
|
|
2022-08-10 13:38:19 +02:00
|
|
|
$("#jp_container_1").on("mouseenter", "ul.jp-controls li", function (ev) {
|
|
|
|
$(this).addClass("ui-state-hover");
|
|
|
|
});
|
2012-09-19 19:23:06 +02:00
|
|
|
|
2022-08-10 13:38:19 +02:00
|
|
|
$("#jp_container_1").on("mouseleave", "ul.jp-controls li", function (ev) {
|
|
|
|
$(this).removeClass("ui-state-hover");
|
|
|
|
});
|
2012-03-10 00:47:08 +01:00
|
|
|
});
|
|
|
|
|
|
|
|
/**
|
2022-08-10 13:38:19 +02:00
|
|
|
* Sets up the jPlayerPlaylist to play.
|
|
|
|
* - Get the playlist info based on the playlistID give.
|
|
|
|
* - Update the playlistIndex to the position in the pllist to start playing.
|
|
|
|
* - Select the element played from and start playing. If playlist is null then start at index 0.
|
|
|
|
**/
|
2012-03-15 22:56:51 +01:00
|
|
|
function playAllPlaylist(p_playlistID, p_playlistIndex) {
|
2022-08-10 13:38:19 +02:00
|
|
|
var viewsPlaylistID = $(".playlistID").text();
|
2015-07-02 22:07:49 +02:00
|
|
|
|
2022-08-10 13:38:19 +02:00
|
|
|
if (_idToPostionLookUp !== undefined && viewsPlaylistID == p_playlistID) {
|
|
|
|
play(p_playlistIndex);
|
|
|
|
} else {
|
|
|
|
buildplaylist(
|
|
|
|
baseUrl + "audiopreview/get-playlist/playlistID/" + p_playlistID,
|
2023-07-06 21:39:05 +02:00
|
|
|
p_playlistIndex,
|
2022-08-10 13:38:19 +02:00
|
|
|
);
|
|
|
|
}
|
2012-03-15 22:56:51 +01:00
|
|
|
}
|
|
|
|
|
2022-08-10 13:38:19 +02:00
|
|
|
function playBlock(p_blockId, p_blockIndex) {
|
|
|
|
var viewsBlockId = $(".blockId").text();
|
2015-07-02 22:07:49 +02:00
|
|
|
|
2022-08-10 13:38:19 +02:00
|
|
|
if (_idToPostionLookUp !== undefined && viewsBlockId == p_blockId) {
|
|
|
|
play(p_blockIndex);
|
|
|
|
} else {
|
|
|
|
buildplaylist(
|
|
|
|
baseUrl + "audiopreview/get-block/blockId/" + p_blockId,
|
2023-07-06 21:39:05 +02:00
|
|
|
p_blockIndex,
|
2022-08-10 13:38:19 +02:00
|
|
|
);
|
|
|
|
}
|
2012-08-02 22:36:12 +02:00
|
|
|
}
|
|
|
|
|
2012-03-15 22:56:51 +01:00
|
|
|
/**
|
2022-08-10 13:38:19 +02:00
|
|
|
* Sets up the show to play.
|
|
|
|
* checks with the show id given to the show id on the page/view
|
|
|
|
* if the show id and the page or views show id are the same it means the user clicked another
|
|
|
|
* file in the same show, so don't refresh the show content tust play the track from the preloaded show.
|
|
|
|
* if the the ids are different they we'll need to get the show's context so create the uri
|
|
|
|
* and call the controller.
|
|
|
|
**/
|
2012-03-15 22:56:51 +01:00
|
|
|
function playAllShow(p_showID, p_index) {
|
2022-08-10 13:38:19 +02:00
|
|
|
var viewsShowID = $(".showID").text();
|
|
|
|
if (_idToPostionLookUp !== undefined && viewsShowID == p_showID) {
|
|
|
|
play(p_index);
|
|
|
|
} else {
|
|
|
|
buildplaylist(
|
|
|
|
baseUrl + "audiopreview/get-show/showID/" + p_showID,
|
2023-07-06 21:39:05 +02:00
|
|
|
p_index,
|
2022-08-10 13:38:19 +02:00
|
|
|
);
|
|
|
|
}
|
2012-03-15 22:56:51 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
2022-08-10 13:38:19 +02:00
|
|
|
* This function will call the AudiopreviewController to get the contents of
|
|
|
|
* either a show or playlist Looping throught the returned contents and
|
|
|
|
* creating media for each track.
|
|
|
|
*
|
|
|
|
* Then trigger the jplayer to play the list.
|
|
|
|
*/
|
2012-03-15 22:56:51 +01:00
|
|
|
function buildplaylist(p_url, p_playIndex) {
|
2022-08-10 13:38:19 +02:00
|
|
|
_idToPostionLookUp = Array();
|
|
|
|
$.getJSON(p_url, function (data) {
|
|
|
|
// get the JSON array produced by my PHP
|
|
|
|
var myPlaylist = new Array();
|
|
|
|
var media;
|
|
|
|
var index;
|
|
|
|
var total = 0;
|
|
|
|
var skipped = 0;
|
|
|
|
|
|
|
|
for (index in data) {
|
|
|
|
if (data[index]["type"] == 0) {
|
|
|
|
if (data[index]["element_mp3"] != undefined) {
|
|
|
|
media = {
|
|
|
|
title: data[index]["element_title"],
|
|
|
|
artist: data[index]["element_artist"],
|
|
|
|
mp3: data[index]["uri"],
|
|
|
|
};
|
|
|
|
} else if (data[index]["element_oga"] != undefined) {
|
|
|
|
media = {
|
|
|
|
title: data[index]["element_title"],
|
|
|
|
artist: data[index]["element_artist"],
|
|
|
|
oga: data[index]["uri"],
|
|
|
|
};
|
|
|
|
} else if (data[index]["element_m4a"] != undefined) {
|
|
|
|
media = {
|
|
|
|
title: data[index]["element_title"],
|
|
|
|
artist: data[index]["element_artist"],
|
|
|
|
m4a: data[index]["uri"],
|
|
|
|
};
|
|
|
|
} else if (data[index]["element_wav"] != undefined) {
|
|
|
|
media = {
|
|
|
|
title: data[index]["element_title"],
|
|
|
|
artist: data[index]["element_artist"],
|
|
|
|
wav: data[index]["uri"],
|
|
|
|
};
|
2025-01-10 16:46:18 +01:00
|
|
|
} else if (data[index]["element_flac"] != undefined) {
|
|
|
|
media = {
|
|
|
|
title: data[index]["element_title"],
|
|
|
|
artist: data[index]["element_artist"],
|
|
|
|
flac: data[index]["uri"],
|
|
|
|
};
|
2022-08-10 13:38:19 +02:00
|
|
|
} else {
|
|
|
|
// skip this track since it's not supported
|
|
|
|
console.log("continue");
|
|
|
|
skipped++;
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
} else if (data[index]["type"] == 1) {
|
|
|
|
var mime = data[index]["mime"];
|
|
|
|
if (mime.search(/mp3/i) > 0 || mime.search(/mpeg/i) > 0) {
|
|
|
|
key = "mp3";
|
|
|
|
} else if (mime.search(/og(g|a)/i) > 0 || mime.search(/vorbis/i) > 0) {
|
|
|
|
key = "oga";
|
|
|
|
} else if (mime.search(/mp4/i) > 0) {
|
|
|
|
key = "m4a";
|
|
|
|
} else if (mime.search(/wav/i) > 0) {
|
|
|
|
key = "wav";
|
2025-01-10 16:46:18 +01:00
|
|
|
} else if (mime.search(/flac/i) > 0) {
|
|
|
|
key = "flac";
|
2012-03-15 22:56:51 +01:00
|
|
|
}
|
2015-07-02 22:07:49 +02:00
|
|
|
|
2022-08-10 13:38:19 +02:00
|
|
|
if (key) {
|
|
|
|
media = {
|
|
|
|
title: data[index]["element_title"],
|
|
|
|
artist: data[index]["element_artist"],
|
|
|
|
};
|
|
|
|
media[key] = data[index]["uri"];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (media && isAudioSupported(data[index]["mime"])) {
|
|
|
|
// javascript doesn't support associative array with numeric key
|
|
|
|
// so we need to remove the gap if we skip any of tracks due to
|
|
|
|
// browser incompatibility.
|
|
|
|
myPlaylist[index - skipped] = media;
|
|
|
|
}
|
|
|
|
// we should create a map according to the new position in the
|
|
|
|
// player itself total is the index on the player
|
|
|
|
_idToPostionLookUp[data[index]["element_id"]] = total;
|
|
|
|
total++;
|
|
|
|
}
|
|
|
|
_playlist_jplayer.setPlaylist(myPlaylist);
|
|
|
|
_playlist_jplayer.option("autoPlay", true);
|
|
|
|
play(p_playIndex);
|
|
|
|
|
|
|
|
window.scrollbars = false;
|
2015-07-02 22:07:49 +02:00
|
|
|
|
2022-08-10 13:38:19 +02:00
|
|
|
var container = $("#jp_container_1");
|
|
|
|
// Add 2px to account for borders
|
|
|
|
window.resizeTo(
|
|
|
|
container.width() + 2,
|
2023-07-06 21:39:05 +02:00
|
|
|
container.height() + URL_BAR_HEIGHT + 2,
|
2022-08-10 13:38:19 +02:00
|
|
|
);
|
|
|
|
});
|
2012-03-10 00:47:08 +01:00
|
|
|
}
|
|
|
|
|
2012-03-15 22:56:51 +01:00
|
|
|
/**
|
2022-08-10 13:38:19 +02:00
|
|
|
*Function simply plays the given index, for playlists index can be different so need to look up the
|
|
|
|
*right index.
|
|
|
|
*/
|
|
|
|
function play(p_playlistIndex) {
|
|
|
|
playlistIndex = _idToPostionLookUp[p_playlistIndex];
|
|
|
|
if (playlistIndex == undefined) {
|
|
|
|
playlistIndex = 0;
|
|
|
|
}
|
|
|
|
//_playlist_jplayer.select(playlistIndex);
|
|
|
|
_playlist_jplayer.play(playlistIndex);
|
2012-03-10 00:47:08 +01:00
|
|
|
}
|
|
|
|
|
2012-03-15 22:56:51 +01:00
|
|
|
/**
|
2022-08-10 13:38:19 +02:00
|
|
|
* Playing one audio track occurs from the library. This function will create the media, setup
|
|
|
|
* jplayer and play the track.
|
|
|
|
*/
|
2012-08-10 18:40:28 +02:00
|
|
|
function playOne(uri, mime) {
|
2022-08-10 13:38:19 +02:00
|
|
|
var playlist = new Array();
|
2012-09-13 18:30:26 +02:00
|
|
|
|
2022-08-10 13:38:19 +02:00
|
|
|
var media = null;
|
|
|
|
var key = null;
|
|
|
|
if (mime.search(/mp3/i) > 0 || mime.search(/mpeg/i) > 0) {
|
|
|
|
key = "mp3";
|
|
|
|
} else if (mime.search(/og(g|a)/i) > 0 || mime.search(/vorbis/i) > 0) {
|
|
|
|
key = "oga";
|
|
|
|
} else if (mime.search(/mp4/i) > 0) {
|
|
|
|
key = "m4a";
|
|
|
|
} else if (mime.search(/wav/i) > 0) {
|
|
|
|
key = "wav";
|
2025-01-10 16:46:18 +01:00
|
|
|
} else if (mime.search(/flac/i) > 0) {
|
|
|
|
key = "flac";
|
2022-08-10 13:38:19 +02:00
|
|
|
}
|
2012-08-10 18:40:28 +02:00
|
|
|
|
2022-08-10 13:38:19 +02:00
|
|
|
if (key) {
|
|
|
|
media = {
|
|
|
|
title:
|
|
|
|
$(".audioFileTitle").text() != "null"
|
|
|
|
? $(".audioFileTitle").text()
|
|
|
|
: "",
|
|
|
|
artist:
|
|
|
|
$(".audioFileArtist").text() != "null"
|
|
|
|
? $(".audioFileArtist").text()
|
|
|
|
: "",
|
|
|
|
};
|
|
|
|
media[key] = uri;
|
|
|
|
}
|
2015-07-02 22:07:49 +02:00
|
|
|
|
2022-08-10 13:38:19 +02:00
|
|
|
if (media) {
|
|
|
|
_playlist_jplayer.option("autoPlay", true);
|
|
|
|
playlist[0] = media;
|
|
|
|
_playlist_jplayer.setPlaylist(playlist);
|
|
|
|
_playlist_jplayer.play(0);
|
|
|
|
}
|
|
|
|
|
|
|
|
var container = $("#jp_container_1");
|
|
|
|
// Add 2px to account for borders
|
|
|
|
window.resizeTo(
|
|
|
|
container.width() + 2,
|
2023-07-06 21:39:05 +02:00
|
|
|
container.height() + URL_BAR_HEIGHT + 2,
|
2022-08-10 13:38:19 +02:00
|
|
|
);
|
2012-06-12 17:31:10 +02:00
|
|
|
}
|