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_delete: false,
|
||||
allow_voteskip: true,
|
||||
voteskip_ratio: 0.5,
|
||||
pagetitle: this.name,
|
||||
customcss: "",
|
||||
customjs: ""
|
||||
|
@ -292,6 +293,7 @@ Channel.prototype.userJoin = function(user) {
|
|||
user.socket.emit("channelNotRegistered");
|
||||
}
|
||||
this.users.push(user);
|
||||
this.broadcastVoteskipUpdate();
|
||||
if(user.name != "") {
|
||||
this.broadcastNewUser(user);
|
||||
}
|
||||
|
@ -342,6 +344,7 @@ Channel.prototype.userLeave = function(user) {
|
|||
var idx = this.users.indexOf(user);
|
||||
if(idx >= 0 && idx < this.users.length)
|
||||
this.users.splice(idx, 1);
|
||||
this.broadcastVoteskipUpdate();
|
||||
this.broadcastUsercount();
|
||||
if(user.name != "") {
|
||||
this.sendAll("userLeave", {
|
||||
|
@ -407,7 +410,8 @@ Channel.prototype.sendUserlist = function(user) {
|
|||
users.push({
|
||||
name: this.users[i].name,
|
||||
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() {
|
||||
this.sendAll("updateMotd", this.motd);
|
||||
}
|
||||
|
@ -662,6 +680,7 @@ Channel.prototype.playNext = function() {
|
|||
|
||||
// Reset voteskip
|
||||
this.voteskip = false;
|
||||
this.broadcastVoteskipUpdate();
|
||||
this.drinks = 0;
|
||||
this.broadcastDrinks();
|
||||
|
||||
|
@ -708,6 +727,7 @@ Channel.prototype.jumpTo = function(pos) {
|
|||
|
||||
// Reset voteskip
|
||||
this.voteskip = false;
|
||||
this.broadcastVoteskipUpdate();
|
||||
this.drinks = 0;
|
||||
this.broadcastDrinks();
|
||||
|
||||
|
@ -866,7 +886,8 @@ Channel.prototype.tryVoteskip = function(user) {
|
|||
this.voteskip = new Poll("voteskip", "voteskip", ["yes"]);
|
||||
}
|
||||
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();
|
||||
}
|
||||
}
|
||||
|
|
1
rank.js
1
rank.js
|
@ -32,6 +32,7 @@ var permissions = {
|
|||
chatFilter : exports.Moderator,
|
||||
updateMotd : exports.Moderator,
|
||||
drink : exports.Moderator,
|
||||
seeVoteskip : exports.Moderator,
|
||||
search : exports.Guest,
|
||||
chat : exports.Guest,
|
||||
};
|
||||
|
|
|
@ -75,6 +75,7 @@ function initCallbacks() {
|
|||
.insertAfter($("link[href='./assets/css/ytsync.css']"));
|
||||
}
|
||||
$("#opt_allow_voteskip").prop("checked", opts.allow_voteskip);
|
||||
$("#opt_voteskip_ratio").val(opts.voteskip_ratio);
|
||||
if(opts.customjs.trim() != "") {
|
||||
$.getScript(opts.customjs);
|
||||
}
|
||||
|
@ -100,6 +101,15 @@ function initCallbacks() {
|
|||
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 */
|
||||
|
||||
socket.on("rank", function(data) {
|
||||
|
|
|
@ -359,12 +359,14 @@ $("#opt_submit").click(function() {
|
|||
if(ptitle == "")
|
||||
ptitle = $("#opt_pagetitle").attr("placeholder")
|
||||
var css = $("#opt_customcss").val();
|
||||
var ratio = +$("#opt_voteskip_ratio").val() || 0.5;
|
||||
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"),
|
||||
allow_voteskip: $("#opt_allow_voteskip").prop("checked"),
|
||||
voteskip_ratio: ratio,
|
||||
pagetitle: ptitle,
|
||||
customcss: css,
|
||||
customjs: $("#opt_customjs").val()
|
||||
|
|
|
@ -22,10 +22,10 @@
|
|||
<div class="navbar navbar-inverse navbar-fixed-top">
|
||||
<div class="navbar-inner">
|
||||
<div class="container">
|
||||
<a class="brand" href="#">CyTube</a>
|
||||
<a class="brand" href="index.html">CyTube</a>
|
||||
<div class="">
|
||||
<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>
|
||||
</ul>
|
||||
<div class="navbar-form pull-right" id="loginform">
|
||||
|
@ -120,7 +120,6 @@
|
|||
<div class="span10 offset1">
|
||||
<form action="javascript:void(0)">
|
||||
<fieldset>
|
||||
<legend>Channel Options</legend>
|
||||
<div class="span4">
|
||||
<label>When the queue is open:</label>
|
||||
<label class="checkbox">
|
||||
|
@ -157,6 +156,10 @@
|
|||
<input type="checkbox" id="opt_allow_voteskip">
|
||||
Allow voteskip
|
||||
</label>
|
||||
<br>
|
||||
<label>Voteskip Ratio
|
||||
<input type="text" id="opt_voteskip_ratio" class="pull-right">
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div class="span10">
|
||||
|
|
Loading…
Reference in New Issue