Change quotes to be consistent
Fixes Issue#11
This commit is contained in:
parent
a5ca7d227e
commit
5f5049db12
12 changed files with 527 additions and 527 deletions
|
|
@ -10,8 +10,8 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
|
|||
*/
|
||||
|
||||
var RANK = 0;
|
||||
var uname = readCookie('sync_uname');
|
||||
var pw = readCookie('sync_pw');
|
||||
var uname = readCookie("sync_uname");
|
||||
var pw = readCookie("sync_pw");
|
||||
var manageChannel = false;
|
||||
|
||||
var Rank = {
|
||||
|
|
@ -27,44 +27,44 @@ initCallbacks();
|
|||
|
||||
function initCallbacks() {
|
||||
|
||||
socket.on('adm', function(data) {
|
||||
socket.on("adm", function(data) {
|
||||
console.log(data);
|
||||
if(data.cmd == "listchannels")
|
||||
handleChannelList(data);
|
||||
});
|
||||
|
||||
socket.on('login', function(data) {
|
||||
if(data.success && $('#password').val()) {
|
||||
createCookie('sync_uname', uname, 1);
|
||||
createCookie('sync_pw', pw, 1);
|
||||
socket.on("login", function(data) {
|
||||
if(data.success && $("#password").val()) {
|
||||
createCookie("sync_uname", uname, 1);
|
||||
createCookie("sync_pw", pw, 1);
|
||||
}
|
||||
if(data.success) {
|
||||
$('#loggedin').css('display', '');
|
||||
$('#logoutform').css('display', '');
|
||||
$('#loginform').css('display', 'none');
|
||||
$("#loggedin").css("display", "");
|
||||
$("#logoutform").css("display", "");
|
||||
$("#loginform").css("display", "none");
|
||||
}
|
||||
socket.emit('adm', {
|
||||
socket.emit("adm", {
|
||||
cmd: "listchannels"
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function handleChannelList(data) {
|
||||
if($('#chanlist').children.length > 1)
|
||||
$($('#chanlist').children()[1]).remove();
|
||||
if($("#chanlist").children.length > 1)
|
||||
$($("#chanlist").children()[1]).remove();
|
||||
for(var i = 0; i < data.chans.length; i++) {
|
||||
var row = $('<tr/>').appendTo($('#chanlist'));
|
||||
var name = $('<td/>').appendTo(row).text(data.chans[i].name);
|
||||
var usercount = $('<td/>').appendTo(row).text(data.chans[i].usercount);
|
||||
var nowplaying = $('<td/>').appendTo(row).text(data.chans[i].nowplaying);
|
||||
var row = $("<tr/>").appendTo($("#chanlist"));
|
||||
var name = $("<td/>").appendTo(row).text(data.chans[i].name);
|
||||
var usercount = $("<td/>").appendTo(row).text(data.chans[i].usercount);
|
||||
var nowplaying = $("<td/>").appendTo(row).text(data.chans[i].nowplaying);
|
||||
}
|
||||
}
|
||||
|
||||
var params = {};
|
||||
if(window.location.search) {
|
||||
var parameters = window.location.search.substring(1).split('&');
|
||||
var parameters = window.location.search.substring(1).split("&");
|
||||
for(var i = 0; i < parameters.length; i++) {
|
||||
var s = parameters[i].split('=');
|
||||
var s = parameters[i].split("=");
|
||||
if(s.length != 2)
|
||||
continue;
|
||||
params[s[0]] = s[1];
|
||||
|
|
@ -72,37 +72,37 @@ if(window.location.search) {
|
|||
}
|
||||
|
||||
if(uname != null && pw != null && pw != "false") {
|
||||
socket.emit('login', {
|
||||
socket.emit("login", {
|
||||
name: uname,
|
||||
sha256: pw
|
||||
});
|
||||
}
|
||||
|
||||
function loginClick() {
|
||||
uname = $('#username').val();
|
||||
if($('#password').val() == "")
|
||||
uname = $("#username").val();
|
||||
if($("#password").val() == "")
|
||||
pw = "";
|
||||
else
|
||||
pw = SHA256($('#password').val());
|
||||
socket.emit('login', {
|
||||
pw = SHA256($("#password").val());
|
||||
socket.emit("login", {
|
||||
name: uname,
|
||||
sha256: pw
|
||||
});
|
||||
};
|
||||
|
||||
$('#login').click(loginClick);
|
||||
$('#username').keydown(function(ev) {
|
||||
$("#login").click(loginClick);
|
||||
$("#username").keydown(function(ev) {
|
||||
if(ev.key == 13)
|
||||
loginClick();
|
||||
});
|
||||
$('#password').keydown(function(ev) {
|
||||
$("#password").keydown(function(ev) {
|
||||
if(ev.key == 13)
|
||||
loginClick();
|
||||
});
|
||||
|
||||
$('#logout').click(function() {
|
||||
eraseCookie('sync_uname');
|
||||
eraseCookie('sync_pw');
|
||||
$("#logout").click(function() {
|
||||
eraseCookie("sync_uname");
|
||||
eraseCookie("sync_pw");
|
||||
document.location.reload(true);
|
||||
});
|
||||
|
||||
|
|
@ -119,10 +119,10 @@ function createCookie(name,value,days) {
|
|||
|
||||
function readCookie(name) {
|
||||
var nameEQ = name + "=";
|
||||
var ca = document.cookie.split(';');
|
||||
var ca = document.cookie.split(";");
|
||||
for(var i=0;i < ca.length;i++) {
|
||||
var c = ca[i];
|
||||
while (c.charAt(0)==' ') c = c.substring(1,c.length);
|
||||
while (c.charAt(0)==" ") c = c.substring(1,c.length);
|
||||
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
|
||||
}
|
||||
return null;
|
||||
|
|
|
|||
|
|
@ -12,120 +12,120 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
|
|||
// Wrapped in a function so I can ensure that the socket
|
||||
// is defined before these statements are run
|
||||
function initCallbacks() {
|
||||
socket.on('disconnect', function() {
|
||||
$('<div/>').addClass('alert').addClass('alert-error')
|
||||
.insertAfter($('.row')[0])[0]
|
||||
socket.on("disconnect", function() {
|
||||
$("<div/>").addClass("alert").addClass("alert-error")
|
||||
.insertAfter($(".row")[0])[0]
|
||||
.innerHTML = "<h3>Disconnected from server</h3>";
|
||||
});
|
||||
|
||||
socket.on('channelNotRegistered', function() {
|
||||
socket.on("channelNotRegistered", function() {
|
||||
showChannelRegistration();
|
||||
});
|
||||
|
||||
socket.on('announcement', function(data) {
|
||||
socket.on("announcement", function(data) {
|
||||
showAnnouncement(data.title, data.text);
|
||||
});
|
||||
|
||||
socket.on('registerChannel', function(data) {
|
||||
socket.on("registerChannel", function(data) {
|
||||
if(data.success) {
|
||||
$('#chregnotice').remove();
|
||||
$("#chregnotice").remove();
|
||||
}
|
||||
else {
|
||||
alert(data.error);
|
||||
}
|
||||
});
|
||||
|
||||
socket.on('rank', function(data) {
|
||||
socket.on("rank", function(data) {
|
||||
if(data.rank >= Rank.Moderator) {
|
||||
$('#playlist_controls').css("display", "block");
|
||||
$('#playlist_controls button').each(function() {
|
||||
$(this).attr('disabled', false);
|
||||
$("#playlist_controls").css("display", "block");
|
||||
$("#playlist_controls button").each(function() {
|
||||
$(this).attr("disabled", false);
|
||||
});
|
||||
$('#qlockbtn').css("display", "block");
|
||||
var poll = $('#pollcontainer .active');
|
||||
$("#qlockbtn").css("display", "block");
|
||||
var poll = $("#pollcontainer .active");
|
||||
if(poll.length > 0) {
|
||||
$('<button/>').addClass('btn btn-danger pull-right').text('Close Poll')
|
||||
.insertAfter(poll.find('.close'))
|
||||
$("<button/>").addClass("btn btn-danger pull-right").text("Close Poll")
|
||||
.insertAfter(poll.find(".close"))
|
||||
.click(function() {
|
||||
socket.emit('closePoll')
|
||||
socket.emit("closePoll")
|
||||
});
|
||||
}
|
||||
var users = $('#userlist').children();
|
||||
var users = $("#userlist").children();
|
||||
for(var i = 0; i < users.length; i++) {
|
||||
addUserDropdown(users[i], users[i].children[1].innerHTML);
|
||||
}
|
||||
|
||||
$('#modnav').show();
|
||||
$('#chancontrols').show();
|
||||
$("#modnav").show();
|
||||
$("#chancontrols").show();
|
||||
}
|
||||
RANK = data.rank;
|
||||
});
|
||||
|
||||
socket.on('login', function(data) {
|
||||
socket.on("login", function(data) {
|
||||
if(!data.success)
|
||||
alert(data.error);
|
||||
else {
|
||||
$('#welcome')[0].innerHTML = "Welcome, " + uname;
|
||||
$('#loginform').css("display", "none");
|
||||
$('#logoutform').css("display", "");
|
||||
$('#loggedin').css("display", "");
|
||||
$("#welcome")[0].innerHTML = "Welcome, " + uname;
|
||||
$("#loginform").css("display", "none");
|
||||
$("#logoutform").css("display", "");
|
||||
$("#loggedin").css("display", "");
|
||||
if(pw != "") {
|
||||
createCookie('sync_uname', uname, 1);
|
||||
createCookie('sync_pw', pw, 1);
|
||||
createCookie("sync_uname", uname, 1);
|
||||
createCookie("sync_pw", pw, 1);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
socket.on('register', function(data) {
|
||||
socket.on("register", function(data) {
|
||||
if(data.error) {
|
||||
alert(data.error);
|
||||
}
|
||||
});
|
||||
|
||||
socket.on('channelOpts', function(opts) {
|
||||
$('#opt_qopen_allow_qnext').prop('checked', opts.qopen_allow_qnext);
|
||||
$('#opt_qopen_allow_move').prop('checked', opts.qopen_allow_move);
|
||||
$('#opt_qopen_allow_delete').prop('checked', opts.qopen_allow_delete);
|
||||
$('#opt_qopen_allow_playnext').prop('checked', opts.qopen_allow_playnext);
|
||||
$('#opt_pagetitle').attr('placeholder', opts.pagetitle);
|
||||
socket.on("channelOpts", function(opts) {
|
||||
$("#opt_qopen_allow_qnext").prop("checked", opts.qopen_allow_qnext);
|
||||
$("#opt_qopen_allow_move").prop("checked", opts.qopen_allow_move);
|
||||
$("#opt_qopen_allow_delete").prop("checked", opts.qopen_allow_delete);
|
||||
$("#opt_qopen_allow_playnext").prop("checked", opts.qopen_allow_playnext);
|
||||
$("#opt_pagetitle").attr("placeholder", opts.pagetitle);
|
||||
document.title = opts.pagetitle;
|
||||
$('opt_customcss').val(opts.customcss);
|
||||
$('#customCss').remove();
|
||||
$("opt_customcss").val(opts.customcss);
|
||||
$("#customCss").remove();
|
||||
if(opts.customcss != "") {
|
||||
$('<link/>').attr("rel", "stylesheet")
|
||||
$("<link/>").attr("rel", "stylesheet")
|
||||
.attr("href", opts.customcss)
|
||||
.attr("id", "customCss")
|
||||
.insertAfter($('link[href="./assets/css/ytsync.css"]'));
|
||||
.insertAfter($("link[href='./assets/css/ytsync.css']"));
|
||||
}
|
||||
|
||||
CHANNELOPTS = opts;
|
||||
if(opts.qopen_allow_qnext)
|
||||
$('#queue_next').attr('disabled', false);
|
||||
$("#queue_next").attr("disabled", false);
|
||||
if(opts.qopen_allow_playnext)
|
||||
$('#play_next').attr('disabled', false);
|
||||
$("#play_next").attr("disabled", false);
|
||||
rebuildPlaylist();
|
||||
});
|
||||
|
||||
socket.on('banlist', function(data) {
|
||||
socket.on("banlist", function(data) {
|
||||
updateBanlist(data.entries);
|
||||
});
|
||||
|
||||
socket.on('usercount', function(data) {
|
||||
$('#usercount').text(data.count + " connected users");
|
||||
socket.on("usercount", function(data) {
|
||||
$("#usercount").text(data.count + " connected users");
|
||||
});
|
||||
|
||||
socket.on('chatMsg', function(data) {
|
||||
socket.on("chatMsg", function(data) {
|
||||
var div = formatChatMessage(data);
|
||||
$('#messagebuffer')[0].appendChild(div);
|
||||
$("#messagebuffer")[0].appendChild(div);
|
||||
// Cap chatbox at most recent 100 messages
|
||||
if($('#messagebuffer').children().length > 100) {
|
||||
$($('#messagebufer').children()[0]).remove();
|
||||
if($("#messagebuffer").children().length > 100) {
|
||||
$($("#messagebufer").children()[0]).remove();
|
||||
}
|
||||
$('#messagebuffer').scrollTop($('#messagebuffer').prop("scrollHeight"));
|
||||
$("#messagebuffer").scrollTop($("#messagebuffer").prop("scrollHeight"));
|
||||
});
|
||||
|
||||
socket.on('playlist', function(data) {
|
||||
var ul = $('#queue')[0];
|
||||
socket.on("playlist", function(data) {
|
||||
var ul = $("#queue")[0];
|
||||
var n = ul.children.length;
|
||||
for(var i = 0; i < n; i++) {
|
||||
ul.removeChild(ul.children[0]);
|
||||
|
|
@ -138,71 +138,71 @@ function initCallbacks() {
|
|||
}
|
||||
});
|
||||
|
||||
socket.on('queue', function(data) {
|
||||
socket.on("queue", function(data) {
|
||||
var li = makeQueueEntry(data.media);
|
||||
if(RANK >= Rank.Moderator || OPENQUEUE)
|
||||
addQueueButtons(li);
|
||||
$(li).css('display', 'none');
|
||||
$(li).css("display", "none");
|
||||
var idx = data.pos;
|
||||
var ul = $('#queue')[0];
|
||||
var ul = $("#queue")[0];
|
||||
$(li).appendTo(ul);
|
||||
if(idx < ul.children.length - 1)
|
||||
moveVideo(ul.children.length - 1, idx);
|
||||
$(li).show('blind');
|
||||
$(li).show("blind");
|
||||
});
|
||||
|
||||
socket.on('unqueue', function(data) {
|
||||
if(data.pos == POSITION && $('#queue').children().length > POSITION + 1) {
|
||||
$($('#queue').children()[POSITION+1]).addClass("alert alert-info");
|
||||
socket.on("unqueue", function(data) {
|
||||
if(data.pos == POSITION && $("#queue").children().length > POSITION + 1) {
|
||||
$($("#queue").children()[POSITION+1]).addClass("alert alert-info");
|
||||
}
|
||||
var li = $('#queue').children()[data.pos];
|
||||
//$(li).hide('blind', function() {
|
||||
var li = $("#queue").children()[data.pos];
|
||||
//$(li).hide("blind", function() {
|
||||
$(li).remove();
|
||||
//});
|
||||
});
|
||||
|
||||
socket.on('moveVideo', function(data) {
|
||||
socket.on("moveVideo", function(data) {
|
||||
moveVideo(data.src, data.dest);
|
||||
});
|
||||
|
||||
socket.on('queueLock', function(data) {
|
||||
socket.on("queueLock", function(data) {
|
||||
OPENQUEUE = !data.locked;
|
||||
if(OPENQUEUE) {
|
||||
$('#playlist_controls').css('display', '');
|
||||
$("#playlist_controls").css("display", "");
|
||||
if(RANK < Rank.Moderator) {
|
||||
$('#qlockbtn').css('display', 'none');
|
||||
$("#qlockbtn").css("display", "none");
|
||||
rebuildPlaylist();
|
||||
if(!CHANNELOPTS.qopen_allow_qnext)
|
||||
$('#queue_next').attr('disabled', true);
|
||||
$("#queue_next").attr("disabled", true);
|
||||
if(!CHANNELOPTS.qopen_allow_playnext)
|
||||
$('#play_next').attr('disabled', true);
|
||||
$("#play_next").attr("disabled", true);
|
||||
}
|
||||
}
|
||||
else if(RANK < Rank.Moderator) {
|
||||
$('#playlist_controls').css('display', 'none');
|
||||
$("#playlist_controls").css("display", "none");
|
||||
}
|
||||
if(OPENQUEUE) {
|
||||
$('#qlockbtn').removeClass('btn-danger')
|
||||
.addClass('btn-success')
|
||||
.text('Lock Queue');
|
||||
$("#qlockbtn").removeClass("btn-danger")
|
||||
.addClass("btn-success")
|
||||
.text("Lock Queue");
|
||||
}
|
||||
else {
|
||||
$('#qlockbtn').removeClass('btn-success')
|
||||
.addClass('btn-danger')
|
||||
.text('Unlock Queue');
|
||||
$("#qlockbtn").removeClass("btn-success")
|
||||
.addClass("btn-danger")
|
||||
.text("Unlock Queue");
|
||||
}
|
||||
});
|
||||
|
||||
socket.on('updatePlaylistIdx', function(data) {
|
||||
var liold = $('#queue').children()[POSITION];
|
||||
socket.on("updatePlaylistIdx", function(data) {
|
||||
var liold = $("#queue").children()[POSITION];
|
||||
$(liold).removeClass("alert alert-info");
|
||||
var linew = $('#queue').children()[data.idx];
|
||||
var linew = $("#queue").children()[data.idx];
|
||||
$(linew).addClass("alert alert-info");
|
||||
POSITION= data.idx;
|
||||
});
|
||||
|
||||
socket.on('mediaUpdate', function(data) {
|
||||
$('#currenttitle').text("Currently Playing: " + data.title);
|
||||
socket.on("mediaUpdate", function(data) {
|
||||
$("#currenttitle").text("Currently Playing: " + data.title);
|
||||
if(data.type == "yt")
|
||||
updateYT(data);
|
||||
else if(data.type == "tw")
|
||||
|
|
@ -217,24 +217,24 @@ function initCallbacks() {
|
|||
updateDM(data);
|
||||
});
|
||||
|
||||
socket.on('userlist', function(data) {
|
||||
socket.on("userlist", function(data) {
|
||||
for(var i = 0; i < data.length; i++) {
|
||||
addUser(data[i].name, data[i].rank, data[i].leader);
|
||||
}
|
||||
});
|
||||
|
||||
socket.on('addUser', function(data) {
|
||||
socket.on("addUser", function(data) {
|
||||
addUser(data.name, data.rank, data.leader);
|
||||
});
|
||||
|
||||
socket.on('updateUser', function(data) {
|
||||
socket.on("updateUser", function(data) {
|
||||
if(data.name == uname) {
|
||||
LEADER = data.leader;
|
||||
if(LEADER) {
|
||||
// I'm a leader! Set up sync function
|
||||
// I"m a leader! Set up sync function
|
||||
sendVideoUpdate = function() {
|
||||
if(MEDIATYPE == "yt") {
|
||||
socket.emit('mediaUpdate', {
|
||||
socket.emit("mediaUpdate", {
|
||||
id: parseYTURL(PLAYER.getVideoUrl()),
|
||||
seconds: PLAYER.getCurrentTime(),
|
||||
paused: PLAYER.getPlayerState() == YT.PlayerState.PAUSED,
|
||||
|
|
@ -243,7 +243,7 @@ function initCallbacks() {
|
|||
}
|
||||
else if(MEDIATYPE == "sc") {
|
||||
PLAYER.getPosition(function(pos) {
|
||||
socket.emit('mediaUpdate', {
|
||||
socket.emit("mediaUpdate", {
|
||||
id: PLAYER.mediaId,
|
||||
seconds: pos / 1000,
|
||||
paused: false,
|
||||
|
|
@ -252,8 +252,8 @@ function initCallbacks() {
|
|||
});
|
||||
}
|
||||
else if(MEDIATYPE == "vi") {
|
||||
PLAYER.api('getCurrentTime', function(data) {
|
||||
socket.emit('mediaUpdate', {
|
||||
PLAYER.api("getCurrentTime", function(data) {
|
||||
socket.emit("mediaUpdate", {
|
||||
id: PLAYER.videoid,
|
||||
seconds: data,
|
||||
paused: false,
|
||||
|
|
@ -262,7 +262,7 @@ function initCallbacks() {
|
|||
});
|
||||
}
|
||||
else if(MEDIATYPE == "dm") {
|
||||
socket.emit('mediaUpdate', {
|
||||
socket.emit("mediaUpdate", {
|
||||
id: PLAYER.mediaId,
|
||||
seconds: PLAYER.currentTime,
|
||||
paused: PLAYER.paused,
|
||||
|
|
@ -271,16 +271,16 @@ function initCallbacks() {
|
|||
}
|
||||
};
|
||||
}
|
||||
// I'm not a leader. Don't send syncs to the server
|
||||
// I"m not a leader. Don"t send syncs to the server
|
||||
else {
|
||||
sendVideoUpdate = function() { }
|
||||
}
|
||||
|
||||
RANK = data.rank;
|
||||
if(data.rank >= Rank.Moderator)
|
||||
$('#playlist_controls').css("display", "block");
|
||||
$("#playlist_controls").css("display", "block");
|
||||
}
|
||||
var users = $('#userlist').children();
|
||||
var users = $("#userlist").children();
|
||||
for(var i = 0; i < users.length; i++) {
|
||||
var name = users[i].children[1].innerHTML;
|
||||
// Reformat user
|
||||
|
|
@ -290,22 +290,22 @@ function initCallbacks() {
|
|||
}
|
||||
});
|
||||
|
||||
socket.on('userLeave', function(data) {
|
||||
var users = $('#userlist').children();
|
||||
socket.on("userLeave", function(data) {
|
||||
var users = $("#userlist").children();
|
||||
for(var i = 0; i < users.length; i++) {
|
||||
var name = users[i].children[1].innerHTML;
|
||||
if(name == data.name) {
|
||||
$('#userlist')[0].removeChild(users[i]);
|
||||
$("#userlist")[0].removeChild(users[i]);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
socket.on('librarySearchResults', function(data) {
|
||||
var n = $('#library').children().length;
|
||||
socket.on("librarySearchResults", function(data) {
|
||||
var n = $("#library").children().length;
|
||||
for(var i = 0; i < n; i++) {
|
||||
$('#library')[0].removeChild($('#library').children()[0]);
|
||||
$("#library")[0].removeChild($("#library").children()[0]);
|
||||
}
|
||||
var ul = $('#library')[0];
|
||||
var ul = $("#library")[0];
|
||||
for(var i = 0; i < data.results.length; i++) {
|
||||
var li = makeQueueEntry(data.results[i]);
|
||||
if(RANK >= Rank.Moderator || OPENQUEUE)
|
||||
|
|
@ -314,15 +314,15 @@ function initCallbacks() {
|
|||
}
|
||||
});
|
||||
|
||||
socket.on('newPoll', function(data) {
|
||||
socket.on("newPoll", function(data) {
|
||||
addPoll(data);
|
||||
});
|
||||
|
||||
socket.on('updatePoll', function(data) {
|
||||
socket.on("updatePoll", function(data) {
|
||||
updatePoll(data);
|
||||
});
|
||||
|
||||
socket.on('closePoll', function() {
|
||||
socket.on("closePoll", function() {
|
||||
closePoll();
|
||||
});
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,8 +17,8 @@ var POSITION = -1;
|
|||
var RANK = 0;
|
||||
var OPENQUEUE = false;
|
||||
var CHANNELOPTS = {};
|
||||
var uname = readCookie('sync_uname');
|
||||
var pw = readCookie('sync_pw');
|
||||
var uname = readCookie("sync_uname");
|
||||
var pw = readCookie("sync_pw");
|
||||
|
||||
var Rank = {
|
||||
Guest: 0,
|
||||
|
|
@ -33,31 +33,31 @@ initCallbacks();
|
|||
|
||||
var params = {};
|
||||
if(window.location.search) {
|
||||
var parameters = window.location.search.substring(1).split('&');
|
||||
var parameters = window.location.search.substring(1).split("&");
|
||||
for(var i = 0; i < parameters.length; i++) {
|
||||
var s = parameters[i].split('=');
|
||||
var s = parameters[i].split("=");
|
||||
if(s.length != 2)
|
||||
continue;
|
||||
params[s[0]] = s[1];
|
||||
}
|
||||
}
|
||||
|
||||
if(params['novideo'] != undefined) {
|
||||
$('.span7').remove();
|
||||
if(params["novideo"] != undefined) {
|
||||
$(".span7").remove();
|
||||
}
|
||||
|
||||
if(params['channel'] == undefined) {
|
||||
var main = $($('.container')[1]);
|
||||
var container = $('<div/>').addClass('container').insertBefore(main);
|
||||
var row = $('<div/>').addClass('row').appendTo(container);
|
||||
var div = $('<div/>').addClass('span6').appendTo(row);
|
||||
if(params["channel"] == undefined) {
|
||||
var main = $($(".container")[1]);
|
||||
var container = $("<div/>").addClass("container").insertBefore(main);
|
||||
var row = $("<div/>").addClass("row").appendTo(container);
|
||||
var div = $("<div/>").addClass("span6").appendTo(row);
|
||||
main.css("display", "none");
|
||||
var label = $('<label/>').text('Enter Channel:').appendTo(div);
|
||||
var entry = $('<input/>').attr('type', 'text').appendTo(div);
|
||||
var label = $("<label/>").text("Enter Channel:").appendTo(div);
|
||||
var entry = $("<input/>").attr("type", "text").appendTo(div);
|
||||
entry.keydown(function(ev) {
|
||||
if(ev.keyCode == 13) {
|
||||
document.location = document.location + "?channel=" + entry.val();
|
||||
socket.emit('joinChannel', {
|
||||
socket.emit("joinChannel", {
|
||||
name: entry.val()
|
||||
});
|
||||
container.remove();
|
||||
|
|
@ -65,38 +65,38 @@ if(params['channel'] == undefined) {
|
|||
}
|
||||
});
|
||||
}
|
||||
else if(!params['channel'].match(/^[a-zA-Z0-9]+$/)) {
|
||||
$('<div/>').addClass('alert alert-error')
|
||||
.insertAfter($('.row')[0])[0]
|
||||
else if(!params["channel"].match(/^[a-zA-Z0-9]+$/)) {
|
||||
$("<div/>").addClass("alert alert-error")
|
||||
.insertAfter($(".row")[0])[0]
|
||||
.innerHTML = "<h3>Invalid Channel Name</h3><p>Channel names must conain only numbers and letters</p>";
|
||||
|
||||
}
|
||||
else {
|
||||
socket.emit('joinChannel', {
|
||||
name: params['channel']
|
||||
socket.emit("joinChannel", {
|
||||
name: params["channel"]
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
// Load the youtube iframe API
|
||||
var tag = document.createElement('script');
|
||||
var tag = document.createElement("script");
|
||||
tag.src = "http://www.youtube.com/iframe_api";
|
||||
var firstScriptTag = document.getElementsByTagName('script')[0];
|
||||
var firstScriptTag = document.getElementsByTagName("script")[0];
|
||||
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
|
||||
|
||||
// Load the Dailymotion iframe API
|
||||
|
||||
/*
|
||||
var tag = document.createElement('script');
|
||||
var tag = document.createElement("script");
|
||||
tag.src = "http://api.dmcdn.net/all.js";
|
||||
var firstScriptTag = document.getElementsByTagName('script')[0];
|
||||
var firstScriptTag = document.getElementsByTagName("script")[0];
|
||||
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
|
||||
*/
|
||||
|
||||
|
||||
|
||||
if(uname != null && pw != null && pw != "false") {
|
||||
socket.emit('login', {
|
||||
socket.emit("login", {
|
||||
name: uname,
|
||||
sha256: pw
|
||||
});
|
||||
|
|
@ -107,95 +107,95 @@ setInterval(function() {
|
|||
sendVideoUpdate();
|
||||
}, 5000);
|
||||
|
||||
$('#queue_end').click(function() {
|
||||
var parsed = parseVideoURL($('#mediaurl').val());
|
||||
$("#queue_end").click(function() {
|
||||
var parsed = parseVideoURL($("#mediaurl").val());
|
||||
var id = parsed[0];
|
||||
var type = parsed[1];
|
||||
if(id) {
|
||||
$('#mediaurl').val("");
|
||||
$("#mediaurl").val("");
|
||||
}
|
||||
socket.emit('queue', {
|
||||
socket.emit("queue", {
|
||||
id: id,
|
||||
pos: "end",
|
||||
type: type
|
||||
});
|
||||
});
|
||||
|
||||
$('#queue_next').click(function() {
|
||||
var parsed = parseVideoURL($('#mediaurl').val());
|
||||
$("#queue_next").click(function() {
|
||||
var parsed = parseVideoURL($("#mediaurl").val());
|
||||
var id = parsed[0];
|
||||
var type = parsed[1];
|
||||
if(id) {
|
||||
$('#mediaurl').val("");
|
||||
$("#mediaurl").val("");
|
||||
}
|
||||
socket.emit('queue', {
|
||||
socket.emit("queue", {
|
||||
id: id,
|
||||
pos: "next",
|
||||
type: type
|
||||
});
|
||||
});
|
||||
|
||||
$('#play_next').click(function() {
|
||||
socket.emit('playNext');
|
||||
$("#play_next").click(function() {
|
||||
socket.emit("playNext");
|
||||
});
|
||||
|
||||
$('#qlockbtn').click(function() {
|
||||
socket.emit('queueLock', {
|
||||
$("#qlockbtn").click(function() {
|
||||
socket.emit("queueLock", {
|
||||
locked: OPENQUEUE
|
||||
});
|
||||
});
|
||||
|
||||
function loginClick() {
|
||||
uname = $('#username').val();
|
||||
if($('#password').val() == "")
|
||||
uname = $("#username").val();
|
||||
if($("#password").val() == "")
|
||||
pw = "";
|
||||
else
|
||||
pw = SHA256($('#password').val());
|
||||
socket.emit('login', {
|
||||
pw = SHA256($("#password").val());
|
||||
socket.emit("login", {
|
||||
name: uname,
|
||||
sha256: pw
|
||||
});
|
||||
};
|
||||
|
||||
$('#login').click(loginClick);
|
||||
$('#username').keydown(function(ev) {
|
||||
$("#login").click(loginClick);
|
||||
$("#username").keydown(function(ev) {
|
||||
if(ev.key == 13)
|
||||
loginClick();
|
||||
});
|
||||
$('#password').keydown(function(ev) {
|
||||
$("#password").keydown(function(ev) {
|
||||
if(ev.key == 13)
|
||||
loginClick();
|
||||
});
|
||||
|
||||
$('#logout').click(function() {
|
||||
eraseCookie('sync_uname');
|
||||
eraseCookie('sync_pw');
|
||||
$("#logout").click(function() {
|
||||
eraseCookie("sync_uname");
|
||||
eraseCookie("sync_pw");
|
||||
document.location.reload(true);
|
||||
});
|
||||
|
||||
$('#register').click(function() {
|
||||
uname = $('#username').val();
|
||||
if($('#password').val() == "")
|
||||
$("#register").click(function() {
|
||||
uname = $("#username").val();
|
||||
if($("#password").val() == "")
|
||||
pw = "";
|
||||
else
|
||||
pw = SHA256($('#password').val());
|
||||
socket.emit('register', {
|
||||
pw = SHA256($("#password").val());
|
||||
socket.emit("register", {
|
||||
name: uname,
|
||||
sha256: pw
|
||||
});
|
||||
});
|
||||
|
||||
$('#chatline').keydown(function(ev) {
|
||||
if(ev.keyCode == 13 && $('#chatline').val() != '') {
|
||||
socket.emit('chatMsg', {
|
||||
msg: $('#chatline').val()
|
||||
$("#chatline").keydown(function(ev) {
|
||||
if(ev.keyCode == 13 && $("#chatline").val() != "") {
|
||||
socket.emit("chatMsg", {
|
||||
msg: $("#chatline").val()
|
||||
});
|
||||
$('#chatline').val('');
|
||||
$("#chatline").val("");
|
||||
}
|
||||
else if(ev.keyCode == 9) { // Tab completion
|
||||
var words = $('#chatline').val().split(' ');
|
||||
var words = $("#chatline").val().split(" ");
|
||||
var current = words[words.length - 1].toLowerCase();
|
||||
var users = $('#userlist').children();
|
||||
var users = $("#userlist").children();
|
||||
var match = null;
|
||||
for(var i = 0; i < users.length; i++) {
|
||||
var name = users[i].children[1].innerHTML.toLowerCase();
|
||||
|
|
@ -213,79 +213,79 @@ $('#chatline').keydown(function(ev) {
|
|||
words[0] += ": ";
|
||||
else
|
||||
words[words.length - 1] += " ";
|
||||
$('#chatline').val(words.join(' '));
|
||||
$("#chatline").val(words.join(" "));
|
||||
}
|
||||
ev.preventDefault();
|
||||
return false;
|
||||
}
|
||||
});
|
||||
|
||||
$('#opt_submit').click(function() {
|
||||
var ptitle = $('#opt_pagetitle').val();
|
||||
if(ptitle == '')
|
||||
ptitle = $('#opt_pagetitle').attr('placeholder')
|
||||
$("#opt_submit").click(function() {
|
||||
var ptitle = $("#opt_pagetitle").val();
|
||||
if(ptitle == "")
|
||||
ptitle = $("#opt_pagetitle").attr("placeholder")
|
||||
opts = {
|
||||
qopen_allow_qnext: $('#opt_qopen_allow_qnext').prop('checked'),
|
||||
qopen_allow_move: $('#opt_qopen_allow_move').prop('checked'),
|
||||
qopen_allow_delete: $('#opt_qopen_allow_delete').prop('checked'),
|
||||
qopen_allow_playnext: $('#opt_qopen_allow_playnext').prop('checked'),
|
||||
qopen_allow_qnext: $("#opt_qopen_allow_qnext").prop("checked"),
|
||||
qopen_allow_move: $("#opt_qopen_allow_move").prop("checked"),
|
||||
qopen_allow_delete: $("#opt_qopen_allow_delete").prop("checked"),
|
||||
qopen_allow_playnext: $("#opt_qopen_allow_playnext").prop("checked"),
|
||||
pagetitle: ptitle,
|
||||
customcss: $('#opt_customcss').val()
|
||||
customcss: $("#opt_customcss").val()
|
||||
};
|
||||
socket.emit('channelOpts', opts);
|
||||
socket.emit("channelOpts", opts);
|
||||
});
|
||||
|
||||
$('#show_chancontrols').click(function() {
|
||||
$('#show_chancontrols').parent().addClass("active");
|
||||
$('#show_banlist').parent().removeClass("active");
|
||||
$('#banlist').hide();
|
||||
$('#chancontrols').show();
|
||||
$("#show_chancontrols").click(function() {
|
||||
$("#show_chancontrols").parent().addClass("active");
|
||||
$("#show_banlist").parent().removeClass("active");
|
||||
$("#banlist").hide();
|
||||
$("#chancontrols").show();
|
||||
});
|
||||
|
||||
$('#show_banlist').click(function() {
|
||||
$('#show_chancontrols').parent().removeClass("active");
|
||||
$('#show_banlist').parent().addClass("active");
|
||||
$('#banlist').show();
|
||||
$('#chancontrols').hide();
|
||||
$("#show_banlist").click(function() {
|
||||
$("#show_chancontrols").parent().removeClass("active");
|
||||
$("#show_banlist").parent().addClass("active");
|
||||
$("#banlist").show();
|
||||
$("#chancontrols").hide();
|
||||
});
|
||||
|
||||
function searchLibrary() {
|
||||
socket.emit('searchLibrary', {
|
||||
query: $('#library_query').val()
|
||||
socket.emit("searchLibrary", {
|
||||
query: $("#library_query").val()
|
||||
});
|
||||
}
|
||||
$('#library_search').click(searchLibrary);
|
||||
$('#library_query').keydown(function(ev) {
|
||||
$("#library_search").click(searchLibrary);
|
||||
$("#library_query").keydown(function(ev) {
|
||||
if(ev.key == 13)
|
||||
searchLibrary();
|
||||
});
|
||||
|
||||
function onYouTubeIframeAPIReady() {
|
||||
PLAYER = new YT.Player('ytapiplayer', {
|
||||
height: '390',
|
||||
width: '640',
|
||||
videoId: '',
|
||||
PLAYER = new YT.Player("ytapiplayer", {
|
||||
height: "390",
|
||||
width: "640",
|
||||
videoId: "",
|
||||
playerVars: {
|
||||
'autoplay': 0,
|
||||
'controls': 1,
|
||||
"autoplay": 0,
|
||||
"controls": 1,
|
||||
},
|
||||
events: {
|
||||
'onReady': onPlayerReady,
|
||||
'onStateChange': onPlayerStateChange
|
||||
"onReady": onPlayerReady,
|
||||
"onStateChange": onPlayerStateChange
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function onPlayerReady() {
|
||||
socket.emit('playerReady');
|
||||
socket.emit("playerReady");
|
||||
}
|
||||
|
||||
function onPlayerStateChange(state) {
|
||||
if(LEADER && state.data == YT.PlayerState.ENDED) {
|
||||
socket.emit('playNext');
|
||||
socket.emit("playNext");
|
||||
}
|
||||
else if(LEADER && state.data == YT.PlayerState.PAUSED) {
|
||||
socket.emit('mediaUpdate', {
|
||||
socket.emit("mediaUpdate", {
|
||||
id: parseYTURL(PLAYER.getVideoUrl()),
|
||||
seconds: PLAYER.getCurrentTime(),
|
||||
type: "yt",
|
||||
|
|
@ -293,7 +293,7 @@ function onPlayerStateChange(state) {
|
|||
});
|
||||
}
|
||||
if(LEADER && state.data == YT.PlayerState.PLAYING) {
|
||||
socket.emit('mediaUpdate', {
|
||||
socket.emit("mediaUpdate", {
|
||||
id: parseYTURL(PLAYER.getVideoUrl()),
|
||||
seconds: PLAYER.getCurrentTime(),
|
||||
type: "yt",
|
||||
|
|
@ -314,10 +314,10 @@ function createCookie(name,value,days) {
|
|||
|
||||
function readCookie(name) {
|
||||
var nameEQ = name + "=";
|
||||
var ca = document.cookie.split(';');
|
||||
var ca = document.cookie.split(";");
|
||||
for(var i=0;i < ca.length;i++) {
|
||||
var c = ca[i];
|
||||
while (c.charAt(0)==' ') c = c.substring(1,c.length);
|
||||
while (c.charAt(0)==" ") c = c.substring(1,c.length);
|
||||
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
|
||||
}
|
||||
return null;
|
||||
|
|
|
|||
|
|
@ -11,17 +11,17 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
|
|||
|
||||
// Adds a user to the chatbox userlist
|
||||
function addUser(name, rank, leader) {
|
||||
var div = document.createElement('div');
|
||||
var div = document.createElement("div");
|
||||
$(div).attr("class", "userlist_item");
|
||||
var span = document.createElement('span');
|
||||
var flair = document.createElement('span');
|
||||
var span = document.createElement("span");
|
||||
var flair = document.createElement("span");
|
||||
span.innerHTML = name;
|
||||
div.appendChild(flair);
|
||||
div.appendChild(span);
|
||||
fmtUserlistItem(div, rank, leader);
|
||||
if(RANK >= Rank.Moderator)
|
||||
addUserDropdown(div, name);
|
||||
var users = $('#userlist').children();
|
||||
var users = $("#userlist").children();
|
||||
for(var i = 0; i < users.length; i++) {
|
||||
var othername = users[i].children[1].innerHTML;
|
||||
if(othername.toLowerCase() > name.toLowerCase()) {
|
||||
|
|
@ -29,10 +29,10 @@ function addUser(name, rank, leader) {
|
|||
return;
|
||||
}
|
||||
}
|
||||
$('#userlist')[0].appendChild(div);
|
||||
$("#userlist")[0].appendChild(div);
|
||||
}
|
||||
|
||||
// Format a userlist entry based on a person's rank
|
||||
// Format a userlist entry based on a person"s rank
|
||||
function fmtUserlistItem(div, rank, leader) {
|
||||
var span = div.children[1];
|
||||
if(rank >= Rank.Siteadmin)
|
||||
|
|
@ -54,63 +54,63 @@ function fmtUserlistItem(div, rank, leader) {
|
|||
|
||||
// Adds a dropdown with user actions (promote/demote/leader)
|
||||
function addUserDropdown(entry, name) {
|
||||
var div = $('<div />').addClass("dropdown").appendTo(entry);
|
||||
var ul = $('<ul />').addClass("dropdown-menu").appendTo(div);
|
||||
var div = $("<div />").addClass("dropdown").appendTo(entry);
|
||||
var ul = $("<ul />").addClass("dropdown-menu").appendTo(div);
|
||||
ul.attr("role", "menu");
|
||||
ul.attr("aria-labelledby", "dropdownMenu");
|
||||
|
||||
var makeLeader = $('<li />').appendTo(ul);
|
||||
var a = $('<a />').attr("tabindex", "-1").attr("href", "#").appendTo(makeLeader);
|
||||
var makeLeader = $("<li />").appendTo(ul);
|
||||
var a = $("<a />").attr("tabindex", "-1").attr("href", "#").appendTo(makeLeader);
|
||||
a.text("Make Leader");
|
||||
a.click(function() {
|
||||
socket.emit('assignLeader', {
|
||||
socket.emit("assignLeader", {
|
||||
name: name
|
||||
});
|
||||
});
|
||||
|
||||
var takeLeader = $('<li />').appendTo(ul);
|
||||
var a = $('<a />').attr("tabindex", "-1").attr("href", "#").appendTo(takeLeader);
|
||||
var takeLeader = $("<li />").appendTo(ul);
|
||||
var a = $("<a />").attr("tabindex", "-1").attr("href", "#").appendTo(takeLeader);
|
||||
a.text("Take Leader");
|
||||
a.click(function() {
|
||||
socket.emit('assignLeader', {
|
||||
socket.emit("assignLeader", {
|
||||
name: ""
|
||||
});
|
||||
});
|
||||
|
||||
var kick = $('<li />').appendTo(ul);
|
||||
var a = $('<a />').attr("tabindex", "-1").attr("href", "#").appendTo(kick);
|
||||
var kick = $("<li />").appendTo(ul);
|
||||
var a = $("<a />").attr("tabindex", "-1").attr("href", "#").appendTo(kick);
|
||||
a.text("Kick");
|
||||
a.click(function() {
|
||||
socket.emit('chatMsg', {
|
||||
socket.emit("chatMsg", {
|
||||
msg: "/kick " + name
|
||||
});
|
||||
});
|
||||
|
||||
var ban = $('<li />').appendTo(ul);
|
||||
var a = $('<a />').attr("tabindex", "-1").attr("href", "#").appendTo(ban);
|
||||
var ban = $("<li />").appendTo(ul);
|
||||
var a = $("<a />").attr("tabindex", "-1").attr("href", "#").appendTo(ban);
|
||||
a.text("IP Ban");
|
||||
a.click(function() {
|
||||
socket.emit('chatMsg', {
|
||||
socket.emit("chatMsg", {
|
||||
msg: "/ban " + name
|
||||
});
|
||||
});
|
||||
|
||||
$('<li />').addClass("divider").appendTo(ul);
|
||||
$("<li />").addClass("divider").appendTo(ul);
|
||||
|
||||
var promote = $('<li />').appendTo(ul);
|
||||
var a = $('<a />').attr("tabindex", "-1").attr("href", "#").appendTo(promote);
|
||||
var promote = $("<li />").appendTo(ul);
|
||||
var a = $("<a />").attr("tabindex", "-1").attr("href", "#").appendTo(promote);
|
||||
a.text("Promote");
|
||||
a.click(function() {
|
||||
socket.emit('promote', {
|
||||
socket.emit("promote", {
|
||||
name: name
|
||||
});
|
||||
});
|
||||
|
||||
var demote = $('<li />').appendTo(ul);
|
||||
var a = $('<a />').attr("tabindex", "-1").attr("href", "#").appendTo(demote);
|
||||
var demote = $("<li />").appendTo(ul);
|
||||
var a = $("<a />").attr("tabindex", "-1").attr("href", "#").appendTo(demote);
|
||||
a.text("Demote");
|
||||
a.click(function() {
|
||||
socket.emit('demote', {
|
||||
socket.emit("demote", {
|
||||
name: name
|
||||
});
|
||||
});
|
||||
|
|
@ -127,18 +127,18 @@ function addUserDropdown(entry, name) {
|
|||
}
|
||||
|
||||
function formatChatMessage(data) {
|
||||
var div = document.createElement('div');
|
||||
var div = document.createElement("div");
|
||||
if(data.msg.indexOf(uname) != -1)
|
||||
$(div).addClass('nick-highlight');
|
||||
$(div).addClass("nick-highlight");
|
||||
if(data.msgclass == "action") {
|
||||
var message = document.createElement('span');
|
||||
$(message).addClass('action');
|
||||
var message = document.createElement("span");
|
||||
$(message).addClass("action");
|
||||
message.innerHTML = data.username + " " + data.msg;
|
||||
div.appendChild(message);
|
||||
}
|
||||
else {
|
||||
var name = document.createElement('span');
|
||||
var message = document.createElement('span');
|
||||
var name = document.createElement("span");
|
||||
var message = document.createElement("span");
|
||||
name.innerHTML = "<strong><" + data.username + "></strong> ";
|
||||
if(data.msgclass == "shout")
|
||||
$(name).addClass("shout");
|
||||
|
|
@ -152,60 +152,60 @@ function formatChatMessage(data) {
|
|||
|
||||
// Creates and formats a queue entry
|
||||
function makeQueueEntry(video) {
|
||||
var li = $('<li />');
|
||||
var li = $("<li />");
|
||||
li.attr("class", "well");
|
||||
var title = $('<span />').attr("class", "qe_title").appendTo(li);
|
||||
var title = $("<span />").attr("class", "qe_title").appendTo(li);
|
||||
title.text(video.title);
|
||||
var time = $('<span />').attr("class", "qe_time").appendTo(li);
|
||||
var time = $("<span />").attr("class", "qe_time").appendTo(li);
|
||||
time.text(video.duration);
|
||||
var clear = $('<div />').attr("class", "qe_clear").appendTo(li);
|
||||
var clear = $("<div />").attr("class", "qe_clear").appendTo(li);
|
||||
return li;
|
||||
}
|
||||
|
||||
// Add buttons to a queue list entry
|
||||
function addQueueButtons(li) {
|
||||
var btnstrip = $('<div />').attr("class", "btn-group qe_buttons").prependTo(li);
|
||||
var btnstrip = $("<div />").attr("class", "btn-group qe_buttons").prependTo(li);
|
||||
|
||||
var btnRemove = $('<button />').attr("class", "btn btn-danger qe_btn").appendTo(btnstrip);
|
||||
$('<i />').attr("class", "icon-remove").appendTo(btnRemove);
|
||||
var btnRemove = $("<button />").attr("class", "btn btn-danger qe_btn").appendTo(btnstrip);
|
||||
$("<i />").attr("class", "icon-remove").appendTo(btnRemove);
|
||||
|
||||
var btnUp = $('<button />').attr("class", "btn qe_btn").appendTo(btnstrip);
|
||||
$('<i />').attr("class", "icon-arrow-up").appendTo(btnUp);
|
||||
var btnUp = $("<button />").attr("class", "btn qe_btn").appendTo(btnstrip);
|
||||
$("<i />").attr("class", "icon-arrow-up").appendTo(btnUp);
|
||||
|
||||
var btnDown = $('<button />').attr("class", "btn qe_btn").appendTo(btnstrip);
|
||||
$('<i />').attr("class", "icon-arrow-down").appendTo(btnDown);
|
||||
var btnDown = $("<button />").attr("class", "btn qe_btn").appendTo(btnstrip);
|
||||
$("<i />").attr("class", "icon-arrow-down").appendTo(btnDown);
|
||||
|
||||
var btnNext = $('<button />').attr("class", "btn qe_btn").appendTo(btnstrip);
|
||||
//$('<i />').attr("class", "icon-play").appendTo(btnNext);
|
||||
btnNext.text('Next');
|
||||
var btnNext = $("<button />").attr("class", "btn qe_btn").appendTo(btnstrip);
|
||||
//$("<i />").attr("class", "icon-play").appendTo(btnNext);
|
||||
btnNext.text("Next");
|
||||
|
||||
// Callback time
|
||||
$(btnRemove).click(function() {
|
||||
btnstrip.remove();
|
||||
var idx = $('#queue').children().index(li);
|
||||
socket.emit('unqueue', { pos: idx });
|
||||
var idx = $("#queue").children().index(li);
|
||||
socket.emit("unqueue", { pos: idx });
|
||||
});
|
||||
|
||||
$(btnUp).click(function() {
|
||||
var idx = $('#queue').children().index(li);
|
||||
socket.emit('moveMedia', {
|
||||
var idx = $("#queue").children().index(li);
|
||||
socket.emit("moveMedia", {
|
||||
src: idx,
|
||||
dest: idx-1
|
||||
});
|
||||
});
|
||||
|
||||
$(btnDown).click(function() {
|
||||
var idx = $('#queue').children().index(li);
|
||||
socket.emit('moveMedia', {
|
||||
var idx = $("#queue").children().index(li);
|
||||
socket.emit("moveMedia", {
|
||||
src: idx,
|
||||
dest: idx+1
|
||||
});
|
||||
});
|
||||
|
||||
$(btnNext).click(function() {
|
||||
var idx = $('#queue').children().index(li);
|
||||
var idx = $("#queue").children().index(li);
|
||||
var dest = idx < POSITION ? POSITION : POSITION + 1;
|
||||
socket.emit('moveMedia', {
|
||||
socket.emit("moveMedia", {
|
||||
src: idx,
|
||||
dest: dest
|
||||
});
|
||||
|
|
@ -213,19 +213,19 @@ function addQueueButtons(li) {
|
|||
|
||||
if(RANK < Rank.Moderator && !LEADER) {
|
||||
if(!CHANNELOPTS.qopen_allow_delete)
|
||||
$(btnRemove).attr('disabled', true);
|
||||
$(btnRemove).attr("disabled", true);
|
||||
if(!CHANNELOPTS.qopen_allow_move) {
|
||||
$(btnUp).attr('disabled', true);
|
||||
$(btnDown).attr('disabled', true);
|
||||
$(btnUp).attr("disabled", true);
|
||||
$(btnDown).attr("disabled", true);
|
||||
}
|
||||
if(!CHANNELOPTS.qopen_allow_qnext)
|
||||
$(btnNext).attr('disabled', true);
|
||||
$(btnNext).attr("disabled", true);
|
||||
}
|
||||
}
|
||||
|
||||
function rebuildPlaylist() {
|
||||
$('#queue li').each(function() {
|
||||
$(this).find('.btn-group').remove();
|
||||
$("#queue li").each(function() {
|
||||
$(this).find(".btn-group").remove();
|
||||
if(RANK >= Rank.Moderator || LEADER || OPENQUEUE)
|
||||
addQueueButtons(this);
|
||||
});
|
||||
|
|
@ -233,27 +233,27 @@ function rebuildPlaylist() {
|
|||
|
||||
// Add buttons to a list entry for the library search results
|
||||
function addLibraryButtons(li, id) {
|
||||
var btnstrip = $('<div />').attr("class", "btn-group qe_buttons").prependTo(li);
|
||||
var btnstrip = $("<div />").attr("class", "btn-group qe_buttons").prependTo(li);
|
||||
|
||||
|
||||
var btnNext = $('<button />').attr("class", "btn qe_btn").appendTo(btnstrip);
|
||||
//$('<i />').attr("class", "icon-play").appendTo(btnNext);
|
||||
btnNext.text('Next');
|
||||
var btnNext = $("<button />").attr("class", "btn qe_btn").appendTo(btnstrip);
|
||||
//$("<i />").attr("class", "icon-play").appendTo(btnNext);
|
||||
btnNext.text("Next");
|
||||
|
||||
var btnEnd = $('<button />').attr("class", "btn qe_btn").appendTo(btnstrip);
|
||||
//$('<i />').attr("class", "icon-fast-forward").appendTo(btnEnd);
|
||||
btnEnd.text('End');
|
||||
var btnEnd = $("<button />").attr("class", "btn qe_btn").appendTo(btnstrip);
|
||||
//$("<i />").attr("class", "icon-fast-forward").appendTo(btnEnd);
|
||||
btnEnd.text("End");
|
||||
|
||||
// Callback time
|
||||
$(btnNext).click(function() {
|
||||
socket.emit('queue', {
|
||||
socket.emit("queue", {
|
||||
id: id,
|
||||
pos: "next"
|
||||
});
|
||||
});
|
||||
|
||||
$(btnEnd).click(function() {
|
||||
socket.emit('queue', {
|
||||
socket.emit("queue", {
|
||||
id: id,
|
||||
pos: "end"
|
||||
});
|
||||
|
|
@ -262,17 +262,17 @@ function addLibraryButtons(li, id) {
|
|||
|
||||
// Rearranges the queue
|
||||
function moveVideo(src, dest) {
|
||||
var li = $('#queue').children()[src];
|
||||
var ul = $('#queue')[0];
|
||||
$(li).hide('blind', function() {
|
||||
var li = $("#queue").children()[src];
|
||||
var ul = $("#queue")[0];
|
||||
$(li).hide("blind", function() {
|
||||
ul.removeChild(li);
|
||||
if(dest == ul.children.length) {
|
||||
ul.appendChild(li);
|
||||
}
|
||||
else {
|
||||
ul.insertBefore(li, ul.getElementsByTagName('li')[dest]);
|
||||
ul.insertBefore(li, ul.getElementsByTagName("li")[dest]);
|
||||
}
|
||||
$(li).show('blind');
|
||||
$(li).show("blind");
|
||||
});
|
||||
if(src < POSITION && dest >= POSITION)
|
||||
POSITION--;
|
||||
|
|
@ -286,24 +286,24 @@ function updateYT(data) {
|
|||
removeCurrentPlayer();
|
||||
MEDIATYPE = "yt";
|
||||
// Note to Soundcloud/Vimeo API designers:
|
||||
// YouTube's API is actually nice to use
|
||||
PLAYER = new YT.Player('ytapiplayer', {
|
||||
height: '390',
|
||||
width: '640',
|
||||
videoId: '',
|
||||
// YouTube"s API is actually nice to use
|
||||
PLAYER = new YT.Player("ytapiplayer", {
|
||||
height: "390",
|
||||
width: "640",
|
||||
videoId: "",
|
||||
playerVars: {
|
||||
'autoplay': 0,
|
||||
'controls': 1,
|
||||
"autoplay": 0,
|
||||
"controls": 1,
|
||||
},
|
||||
events: {
|
||||
'onReady': onPlayerReady,
|
||||
'onStateChange': onPlayerStateChange
|
||||
"onReady": onPlayerReady,
|
||||
"onStateChange": onPlayerStateChange
|
||||
}
|
||||
});
|
||||
}
|
||||
// Load new video
|
||||
if(PLAYER.getVideoUrl && data.id != parseYTURL(PLAYER.getVideoUrl())) {
|
||||
PLAYER.loadVideoById(data.id, data.currentTime, $('#quality').val());
|
||||
PLAYER.loadVideoById(data.id, data.currentTime, $("#quality").val());
|
||||
if(data.paused)
|
||||
PLAYER.pauseVideo();
|
||||
}
|
||||
|
|
@ -327,7 +327,7 @@ function updateSC(data) {
|
|||
iframe.css("width", "100%").attr("height", "166")
|
||||
.attr("frameborder", "no");
|
||||
|
||||
PLAYER = SC.Widget('ytapiplayer');
|
||||
PLAYER = SC.Widget("ytapiplayer");
|
||||
MEDIATYPE = "sc";
|
||||
}
|
||||
// Server is on a different soundcloud track than client
|
||||
|
|
@ -338,7 +338,7 @@ function updateSC(data) {
|
|||
// Keep track of current ID
|
||||
PLAYER.mediaId = data.id;
|
||||
}
|
||||
// Soundcloud's API is async
|
||||
// Soundcloud"s API is async
|
||||
// Query the playback position and compare that with the sync packet
|
||||
PLAYER.getPosition(function(pos) {
|
||||
if(Math.abs(pos / 1000 - data.currentTime) > SYNC_THRESHOLD) {
|
||||
|
|
@ -380,15 +380,15 @@ function updateVI(data) {
|
|||
if(MEDIATYPE != "vi") {
|
||||
initVI(data);
|
||||
}
|
||||
// Either vimeo's API doesn't support loading a new video
|
||||
// or their terrible documentation doesn't document it
|
||||
// Either vimeo"s API doesn"t support loading a new video
|
||||
// or their terrible documentation doesn"t document it
|
||||
else if(data.id != PLAYER.videoid) {
|
||||
initVI(data);
|
||||
}
|
||||
|
||||
PLAYER.api('getCurrentTime', function(time) {
|
||||
PLAYER.api("getCurrentTime", function(time) {
|
||||
if(Math.abs(time - data.currentTime) > SYNC_THRESHOLD) {
|
||||
PLAYER.api('seekTo', data.currentTime);
|
||||
PLAYER.api("seekTo", data.currentTime);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
@ -398,16 +398,16 @@ function initVI(data) {
|
|||
var currentEmbed = $("#ytapiplayer");
|
||||
var div = currentEmbed.parent();
|
||||
currentEmbed.remove();
|
||||
// Ugly but it's the only way I managed to get the API calls to work
|
||||
div[0].innerHTML += '<iframe id="ytapiplayer" src="http://player.vimeo.com/video/' + data.id + '?api=1&player_id=ytapiplayer" width="640" height="390" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>';
|
||||
// $f() is defined by froogaloop, Vimeo's API wrapper
|
||||
PLAYER = $f($('iframe')[0]);
|
||||
// Ugly but it"s the only way I managed to get the API calls to work
|
||||
div[0].innerHTML += "<iframe id=\"ytapiplayer\" src=\"http://player.vimeo.com/video/" + data.id + "?api=1&player_id=ytapiplayer\" width=\"640\" height=\"390\" frameborder=\"0\" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>";
|
||||
// $f() is defined by froogaloop, Vimeo"s API wrapper
|
||||
PLAYER = $f($("iframe")[0]);
|
||||
// So we can retrieve the ID synchronously instead of waiting for
|
||||
// getVideoId with a callback
|
||||
PLAYER.videoid = data.id;
|
||||
PLAYER.addEvent('ready', function() {
|
||||
PLAYER.addEvent("ready", function() {
|
||||
// Autoplay
|
||||
PLAYER.api('play');
|
||||
PLAYER.api("play");
|
||||
});
|
||||
MEDIATYPE = "vi";
|
||||
}
|
||||
|
|
@ -425,14 +425,14 @@ function loadTwitch(channel) {
|
|||
id: "live_embed_player_flash",
|
||||
flashvars:"hostname=www.twitch.tv&channel="+channel+"&auto_play=true&start_volume=100"
|
||||
};
|
||||
swfobject.embedSWF( url, "ytapiplayer", '640', '390', "8", null, null, params, {} );
|
||||
swfobject.embedSWF( url, "ytapiplayer", "640", "390", "8", null, null, params, {} );
|
||||
}
|
||||
|
||||
function loadLivestream(channel) {
|
||||
MEDIATYPE = "li";
|
||||
removeCurrentPlayer();
|
||||
flashvars = { channel: channel };
|
||||
params = { AllowScriptAccess: 'always' };
|
||||
params = { AllowScriptAccess: "always" };
|
||||
swfobject.embedSWF("http://cdn.livestream.com/chromelessPlayer/v20/playerapi.swf", "ytapiplayer", "640", "390", "9.0.0", "expressInstall.swf", flashvars, params);
|
||||
}
|
||||
|
||||
|
|
@ -519,13 +519,13 @@ function parseDailymotion(url) {
|
|||
}
|
||||
|
||||
function closePoll() {
|
||||
if($('#pollcontainer .active').length != 0) {
|
||||
var poll = $('#pollcontainer .active');
|
||||
if($("#pollcontainer .active").length != 0) {
|
||||
var poll = $("#pollcontainer .active");
|
||||
poll.removeClass("active").addClass("muted");
|
||||
poll.find('.option button').each(function() {
|
||||
$(this).attr('disabled', 'disabled');
|
||||
poll.find(".option button").each(function() {
|
||||
$(this).attr("disabled", "disabled");
|
||||
});
|
||||
poll.find('.btn-danger').each(function() {
|
||||
poll.find(".btn-danger").each(function() {
|
||||
$(this).remove()
|
||||
});
|
||||
}
|
||||
|
|
@ -533,34 +533,34 @@ function closePoll() {
|
|||
|
||||
function addPoll(data) {
|
||||
closePoll();
|
||||
var pollMsg = $('<div/>').addClass('poll-notify')
|
||||
.text(data.initiator + ' opened a poll: "' + data.title + '"')
|
||||
.appendTo($('#messagebuffer'));
|
||||
var poll = $('<div/>').addClass('well active').prependTo($('#pollcontainer'));
|
||||
$('<button/>').addClass('close pull-right').text('×')
|
||||
var pollMsg = $("<div/>").addClass("poll-notify")
|
||||
.text(data.initiator + " opened a poll: \"" + data.title + "\"")
|
||||
.appendTo($("#messagebuffer"));
|
||||
var poll = $("<div/>").addClass("well active").prependTo($("#pollcontainer"));
|
||||
$("<button/>").addClass("close pull-right").text("×")
|
||||
.appendTo(poll)
|
||||
.click(function() { poll.remove(); });
|
||||
if(RANK >= Rank.Moderator) {
|
||||
$('<button/>').addClass('btn btn-danger pull-right').text('Close Poll')
|
||||
$("<button/>").addClass("btn btn-danger pull-right").text("Close Poll")
|
||||
.appendTo(poll)
|
||||
.click(function() {
|
||||
socket.emit('closePoll')
|
||||
socket.emit("closePoll")
|
||||
});
|
||||
}
|
||||
|
||||
$('<h3/>').text(data.title).appendTo(poll);
|
||||
$("<h3/>").text(data.title).appendTo(poll);
|
||||
for(var i = 0; i < data.options.length; i++) {
|
||||
var callback = (function(i) { return function() {
|
||||
console.log(i);
|
||||
socket.emit('vote', {
|
||||
socket.emit("vote", {
|
||||
option: i
|
||||
});
|
||||
poll.find('.option button').each(function() {
|
||||
$(this).attr('disabled', 'disabled');
|
||||
poll.find(".option button").each(function() {
|
||||
$(this).attr("disabled", "disabled");
|
||||
});
|
||||
} })(i);
|
||||
$('<button/>').addClass('btn').text(data.counts[i])
|
||||
.prependTo($('<div/>').addClass('option').text(data.options[i])
|
||||
$("<button/>").addClass("btn").text(data.counts[i])
|
||||
.prependTo($("<div/>").addClass("option").text(data.options[i])
|
||||
.appendTo(poll))
|
||||
.click(callback);
|
||||
|
||||
|
|
@ -568,54 +568,54 @@ function addPoll(data) {
|
|||
}
|
||||
|
||||
function updatePoll(data) {
|
||||
var poll = $('#pollcontainer .active');
|
||||
var poll = $("#pollcontainer .active");
|
||||
var i = 0;
|
||||
poll.find('.option button').each(function() {
|
||||
poll.find(".option button").each(function() {
|
||||
$(this).text(data.counts[i]);
|
||||
i++;
|
||||
});
|
||||
}
|
||||
|
||||
function showChannelRegistration() {
|
||||
var div = $('<div/>').addClass('alert alert-info').attr('id', 'chregnotice')
|
||||
.insertAfter($('.row')[0]);
|
||||
$('<button/>').addClass('close pull-right').text('×')
|
||||
var div = $("<div/>").addClass("alert alert-info").attr("id", "chregnotice")
|
||||
.insertAfter($(".row")[0]);
|
||||
$("<button/>").addClass("close pull-right").text("×")
|
||||
.appendTo(div)
|
||||
.click(function() { div.remove(); });
|
||||
$('<h3/>').text("This channel isn't registered").appendTo(div);
|
||||
$('<button/>').addClass('btn btn-primary').text('Register it')
|
||||
$("<h3/>").text("This channel isn"t registered").appendTo(div);
|
||||
$("<button/>").addClass("btn btn-primary").text("Register it")
|
||||
.appendTo(div)
|
||||
.click(function() {
|
||||
socket.emit('registerChannel');
|
||||
socket.emit("registerChannel");
|
||||
});
|
||||
}
|
||||
|
||||
function showAnnouncement(title, text) {
|
||||
var div = $('<div/>').addClass('alert')
|
||||
.insertAfter($('.row')[0]);
|
||||
$('<button/>').addClass('close pull-right').text('×')
|
||||
var div = $("<div/>").addClass("alert")
|
||||
.insertAfter($(".row")[0]);
|
||||
$("<button/>").addClass("close pull-right").text("×")
|
||||
.appendTo(div)
|
||||
.click(function() { div.remove(); });
|
||||
$('<h3/>').text(title).appendTo(div);
|
||||
$('<p/>').html(text).appendTo(div);
|
||||
$("<h3/>").text(title).appendTo(div);
|
||||
$("<p/>").html(text).appendTo(div);
|
||||
}
|
||||
|
||||
function updateBanlist(entries) {
|
||||
var tbl = $('#banlist table');
|
||||
var tbl = $("#banlist table");
|
||||
if(tbl.children().length > 1) {
|
||||
$(tbl.children()[1]).remove();
|
||||
}
|
||||
for(var i = 0; i < entries.length; i++) {
|
||||
var tr = $('<tr/>').appendTo(tbl);
|
||||
var remove = $('<button/>').addClass("btn btn-mini btn-danger")
|
||||
.appendTo($('<td/>').appendTo(tr));
|
||||
$('<i/>').addClass("icon-remove-circle").appendTo(remove);
|
||||
var ip = $('<td/>').text(entries[i].ip).appendTo(tr);
|
||||
var name = $('<td/>').text(entries[i].name).appendTo(tr);
|
||||
var banner = $('<td/>').text(entries[i].banner).appendTo(tr);
|
||||
var tr = $("<tr/>").appendTo(tbl);
|
||||
var remove = $("<button/>").addClass("btn btn-mini btn-danger")
|
||||
.appendTo($("<td/>").appendTo(tr));
|
||||
$("<i/>").addClass("icon-remove-circle").appendTo(remove);
|
||||
var ip = $("<td/>").text(entries[i].ip).appendTo(tr);
|
||||
var name = $("<td/>").text(entries[i].name).appendTo(tr);
|
||||
var banner = $("<td/>").text(entries[i].banner).appendTo(tr);
|
||||
|
||||
var callback = (function(ip) { return function() {
|
||||
socket.emit('chatMsg', {
|
||||
socket.emit("chatMsg", {
|
||||
msg: "/unban " + ip
|
||||
});
|
||||
} })(entries[i].ip);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue