mirror of https://github.com/calzoneman/sync.git
Add configurable voteskip ratio, show # voteskips to mods
This commit is contained in:
parent
6e6f6217b0
commit
40ad039a06
25
channel.js
25
channel.js
|
@ -43,6 +43,7 @@ var Channel = function(name) {
|
||||||
qopen_allow_playnext: false,
|
qopen_allow_playnext: false,
|
||||||
qopen_allow_delete: false,
|
qopen_allow_delete: false,
|
||||||
allow_voteskip: true,
|
allow_voteskip: true,
|
||||||
|
voteskip_ratio: 0.5,
|
||||||
pagetitle: this.name,
|
pagetitle: this.name,
|
||||||
customcss: "",
|
customcss: "",
|
||||||
customjs: ""
|
customjs: ""
|
||||||
|
@ -292,6 +293,7 @@ Channel.prototype.userJoin = function(user) {
|
||||||
user.socket.emit("channelNotRegistered");
|
user.socket.emit("channelNotRegistered");
|
||||||
}
|
}
|
||||||
this.users.push(user);
|
this.users.push(user);
|
||||||
|
this.broadcastVoteskipUpdate();
|
||||||
if(user.name != "") {
|
if(user.name != "") {
|
||||||
this.broadcastNewUser(user);
|
this.broadcastNewUser(user);
|
||||||
}
|
}
|
||||||
|
@ -342,6 +344,7 @@ Channel.prototype.userLeave = function(user) {
|
||||||
var idx = this.users.indexOf(user);
|
var idx = this.users.indexOf(user);
|
||||||
if(idx >= 0 && idx < this.users.length)
|
if(idx >= 0 && idx < this.users.length)
|
||||||
this.users.splice(idx, 1);
|
this.users.splice(idx, 1);
|
||||||
|
this.broadcastVoteskipUpdate();
|
||||||
this.broadcastUsercount();
|
this.broadcastUsercount();
|
||||||
if(user.name != "") {
|
if(user.name != "") {
|
||||||
this.sendAll("userLeave", {
|
this.sendAll("userLeave", {
|
||||||
|
@ -407,7 +410,8 @@ Channel.prototype.sendUserlist = function(user) {
|
||||||
users.push({
|
users.push({
|
||||||
name: this.users[i].name,
|
name: this.users[i].name,
|
||||||
rank: this.users[i].rank,
|
rank: this.users[i].rank,
|
||||||
leader: this.users[i] == this.leader
|
leader: this.users[i] == this.leader,
|
||||||
|
meta: this.users[i].meta
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -499,6 +503,20 @@ Channel.prototype.broadcastChatFilters = function() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Channel.prototype.broadcastVoteskipUpdate = function() {
|
||||||
|
var amt = this.voteskip ? this.voteskip.counts[0] : 0;
|
||||||
|
var need = this.voteskip ? this.users.length * this.opts.voteskip_ratio + 1 : 0;
|
||||||
|
for(var i = 0; i < this.users.length; i++) {
|
||||||
|
if(Rank.hasPermission(this.users[i], "seeVoteskip") ||
|
||||||
|
this.leader == this.users[i]) {
|
||||||
|
this.users[i].socket.emit("voteskip", {
|
||||||
|
count: amt,
|
||||||
|
need: need
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Channel.prototype.broadcastMotd = function() {
|
Channel.prototype.broadcastMotd = function() {
|
||||||
this.sendAll("updateMotd", this.motd);
|
this.sendAll("updateMotd", this.motd);
|
||||||
}
|
}
|
||||||
|
@ -662,6 +680,7 @@ Channel.prototype.playNext = function() {
|
||||||
|
|
||||||
// Reset voteskip
|
// Reset voteskip
|
||||||
this.voteskip = false;
|
this.voteskip = false;
|
||||||
|
this.broadcastVoteskipUpdate();
|
||||||
this.drinks = 0;
|
this.drinks = 0;
|
||||||
this.broadcastDrinks();
|
this.broadcastDrinks();
|
||||||
|
|
||||||
|
@ -708,6 +727,7 @@ Channel.prototype.jumpTo = function(pos) {
|
||||||
|
|
||||||
// Reset voteskip
|
// Reset voteskip
|
||||||
this.voteskip = false;
|
this.voteskip = false;
|
||||||
|
this.broadcastVoteskipUpdate();
|
||||||
this.drinks = 0;
|
this.drinks = 0;
|
||||||
this.broadcastDrinks();
|
this.broadcastDrinks();
|
||||||
|
|
||||||
|
@ -866,7 +886,8 @@ Channel.prototype.tryVoteskip = function(user) {
|
||||||
this.voteskip = new Poll("voteskip", "voteskip", ["yes"]);
|
this.voteskip = new Poll("voteskip", "voteskip", ["yes"]);
|
||||||
}
|
}
|
||||||
this.voteskip.vote(user.ip, 0);
|
this.voteskip.vote(user.ip, 0);
|
||||||
if(this.voteskip.counts[0] > this.users.length / 2) {
|
this.broadcastVoteskipUpdate();
|
||||||
|
if(this.voteskip.counts[0] > this.users.length * this.opts.voteskip_ratio) {
|
||||||
this.playNext();
|
this.playNext();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
1
rank.js
1
rank.js
|
@ -32,6 +32,7 @@ var permissions = {
|
||||||
chatFilter : exports.Moderator,
|
chatFilter : exports.Moderator,
|
||||||
updateMotd : exports.Moderator,
|
updateMotd : exports.Moderator,
|
||||||
drink : exports.Moderator,
|
drink : exports.Moderator,
|
||||||
|
seeVoteskip : exports.Moderator,
|
||||||
search : exports.Guest,
|
search : exports.Guest,
|
||||||
chat : exports.Guest,
|
chat : exports.Guest,
|
||||||
};
|
};
|
||||||
|
|
|
@ -75,6 +75,7 @@ function initCallbacks() {
|
||||||
.insertAfter($("link[href='./assets/css/ytsync.css']"));
|
.insertAfter($("link[href='./assets/css/ytsync.css']"));
|
||||||
}
|
}
|
||||||
$("#opt_allow_voteskip").prop("checked", opts.allow_voteskip);
|
$("#opt_allow_voteskip").prop("checked", opts.allow_voteskip);
|
||||||
|
$("#opt_voteskip_ratio").val(opts.voteskip_ratio);
|
||||||
if(opts.customjs.trim() != "") {
|
if(opts.customjs.trim() != "") {
|
||||||
$.getScript(opts.customjs);
|
$.getScript(opts.customjs);
|
||||||
}
|
}
|
||||||
|
@ -100,6 +101,15 @@ function initCallbacks() {
|
||||||
updateBanlist(data.entries);
|
updateBanlist(data.entries);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
socket.on("voteskip", function(data) {
|
||||||
|
if(data.count > 0) {
|
||||||
|
$("#voteskip").text("Voteskip ("+data.count+"/"+data.need+")");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$("#voteskip").text("Voteskip");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
/* REGION Rank Stuff */
|
/* REGION Rank Stuff */
|
||||||
|
|
||||||
socket.on("rank", function(data) {
|
socket.on("rank", function(data) {
|
||||||
|
|
|
@ -359,12 +359,14 @@ $("#opt_submit").click(function() {
|
||||||
if(ptitle == "")
|
if(ptitle == "")
|
||||||
ptitle = $("#opt_pagetitle").attr("placeholder")
|
ptitle = $("#opt_pagetitle").attr("placeholder")
|
||||||
var css = $("#opt_customcss").val();
|
var css = $("#opt_customcss").val();
|
||||||
|
var ratio = +$("#opt_voteskip_ratio").val() || 0.5;
|
||||||
opts = {
|
opts = {
|
||||||
qopen_allow_qnext: $("#opt_qopen_allow_qnext").prop("checked"),
|
qopen_allow_qnext: $("#opt_qopen_allow_qnext").prop("checked"),
|
||||||
qopen_allow_move: $("#opt_qopen_allow_move").prop("checked"),
|
qopen_allow_move: $("#opt_qopen_allow_move").prop("checked"),
|
||||||
qopen_allow_delete: $("#opt_qopen_allow_delete").prop("checked"),
|
qopen_allow_delete: $("#opt_qopen_allow_delete").prop("checked"),
|
||||||
qopen_allow_playnext: $("#opt_qopen_allow_playnext").prop("checked"),
|
qopen_allow_playnext: $("#opt_qopen_allow_playnext").prop("checked"),
|
||||||
allow_voteskip: $("#opt_allow_voteskip").prop("checked"),
|
allow_voteskip: $("#opt_allow_voteskip").prop("checked"),
|
||||||
|
voteskip_ratio: ratio,
|
||||||
pagetitle: ptitle,
|
pagetitle: ptitle,
|
||||||
customcss: css,
|
customcss: css,
|
||||||
customjs: $("#opt_customjs").val()
|
customjs: $("#opt_customjs").val()
|
||||||
|
|
|
@ -22,10 +22,10 @@
|
||||||
<div class="navbar navbar-inverse navbar-fixed-top">
|
<div class="navbar navbar-inverse navbar-fixed-top">
|
||||||
<div class="navbar-inner">
|
<div class="navbar-inner">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<a class="brand" href="#">CyTube</a>
|
<a class="brand" href="index.html">CyTube</a>
|
||||||
<div class="">
|
<div class="">
|
||||||
<ul class="nav">
|
<ul class="nav">
|
||||||
<li class="active"><a href="#">Home</a></li>
|
<li class="active"><a href="index.html">Home</a></li>
|
||||||
<li><a href="help.html">Help</a></li>
|
<li><a href="help.html">Help</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
<div class="navbar-form pull-right" id="loginform">
|
<div class="navbar-form pull-right" id="loginform">
|
||||||
|
@ -120,7 +120,6 @@
|
||||||
<div class="span10 offset1">
|
<div class="span10 offset1">
|
||||||
<form action="javascript:void(0)">
|
<form action="javascript:void(0)">
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend>Channel Options</legend>
|
|
||||||
<div class="span4">
|
<div class="span4">
|
||||||
<label>When the queue is open:</label>
|
<label>When the queue is open:</label>
|
||||||
<label class="checkbox">
|
<label class="checkbox">
|
||||||
|
@ -157,6 +156,10 @@
|
||||||
<input type="checkbox" id="opt_allow_voteskip">
|
<input type="checkbox" id="opt_allow_voteskip">
|
||||||
Allow voteskip
|
Allow voteskip
|
||||||
</label>
|
</label>
|
||||||
|
<br>
|
||||||
|
<label>Voteskip Ratio
|
||||||
|
<input type="text" id="opt_voteskip_ratio" class="pull-right">
|
||||||
|
</label>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="span10">
|
<div class="span10">
|
||||||
|
|
Loading…
Reference in New Issue