mirror of https://github.com/calzoneman/sync.git
parent
9338905519
commit
5350fa2e93
15
channel.js
15
channel.js
|
@ -819,6 +819,21 @@ Channel.prototype.tryMove = function(user, data) {
|
|||
|
||||
/* REGION Polls */
|
||||
|
||||
Channel.prototype.tryOpenPoll = function(user, data) {
|
||||
if(!Rank.hasPermission(user, "poll") && this.leader != user) {
|
||||
return;
|
||||
}
|
||||
|
||||
if(!data.title || !data.opts) {
|
||||
return;
|
||||
}
|
||||
|
||||
var poll = new Poll(user.name, data.title, data.opts);
|
||||
this.poll = poll;
|
||||
this.broadcastPoll();
|
||||
this.logger.log("*** " + user.name + " Opened Poll: '" + poll.title + "'");
|
||||
}
|
||||
|
||||
Channel.prototype.tryClosePoll = function(user) {
|
||||
if(!Rank.hasPermission(user, "poll") && this.leader != user) {
|
||||
return;
|
||||
|
|
6
user.js
6
user.js
|
@ -101,6 +101,12 @@ User.prototype.initCallbacks = function() {
|
|||
}
|
||||
}.bind(this));
|
||||
|
||||
this.socket.on("newPoll", function(data) {
|
||||
if(this.channel != null) {
|
||||
this.channel.tryOpenPoll(this, data);
|
||||
}
|
||||
}.bind(this));
|
||||
|
||||
this.socket.on("playerReady", function() {
|
||||
if(this.channel != null) {
|
||||
this.channel.sendMediaUpdate(this);
|
||||
|
|
|
@ -213,9 +213,15 @@ $("#register").click(function() {
|
|||
|
||||
$("#chatline").keydown(function(ev) {
|
||||
if(ev.keyCode == 13 && $("#chatline").val() != "") {
|
||||
socket.emit("chatMsg", {
|
||||
msg: $("#chatline").val()
|
||||
});
|
||||
if($("#chatline").val().trim() == "/poll") {
|
||||
newPollMenu();
|
||||
$("#chatline").val("");
|
||||
}
|
||||
else {
|
||||
socket.emit("chatMsg", {
|
||||
msg: $("#chatline").val()
|
||||
});
|
||||
}
|
||||
CHATHIST.push($("#chatline").val());
|
||||
if(CHATHIST.length > 10)
|
||||
CHATHIST.shift();
|
||||
|
|
|
@ -730,3 +730,68 @@ function enableBerrymotes() {
|
|||
monkeyPatchChat();
|
||||
});
|
||||
}
|
||||
|
||||
function newPollMenu() {
|
||||
var modal = $("<div/>").addClass("modal hide fade")
|
||||
.appendTo($("body"));
|
||||
var head = $("<div/>").addClass("modal-header")
|
||||
.appendTo(modal);
|
||||
$("<button/>").addClass("close")
|
||||
.attr("data-dismiss", "modal")
|
||||
.attr("aria-hidden", "true")
|
||||
.appendTo(head)[0].innerHTML = "×";
|
||||
$("<h3/>").text("New Poll").appendTo(head);
|
||||
var body = $("<div/>").addClass("modal-body").appendTo(modal);
|
||||
|
||||
var form = $("<form/>").addClass("form-horizontal")
|
||||
.appendTo(body);
|
||||
|
||||
var tgroup = $("<div/>").addClass("control-group").appendTo(form);
|
||||
$("<label/>").text("Title")
|
||||
.addClass("control-label")
|
||||
.attr("for", "polltitle")
|
||||
.appendTo(tgroup);
|
||||
$("<input/>").attr("type", "text")
|
||||
.attr("id", "polltitle")
|
||||
.appendTo($("<div/>").addClass("controls").appendTo(tgroup))
|
||||
|
||||
function addPollOption() {
|
||||
var g = $("<div/>").addClass("control-group").appendTo(form);
|
||||
var c = $("<div/>").addClass("controls").appendTo(g);
|
||||
$("<input/>").attr("type", "text")
|
||||
.appendTo(c);
|
||||
}
|
||||
addPollOption();
|
||||
|
||||
var footer = $("<div/>").addClass("modal-footer").appendTo(modal);
|
||||
$("<button/>").addClass("btn pull-left")
|
||||
.text("Add Poll Option")
|
||||
.appendTo(footer)
|
||||
.click(addPollOption);
|
||||
|
||||
var submit = function() {
|
||||
var all = form.find("input[type=\"text\"]");
|
||||
var title = $(all[0]).val();
|
||||
var opts = new Array(all.length - 1);
|
||||
for(var i = 1; i < all.length; i++) {
|
||||
opts[i - 1] = $(all[i]).val();
|
||||
}
|
||||
|
||||
console.log(title, opts);
|
||||
socket.emit("newPoll", {
|
||||
title: title,
|
||||
opts: opts
|
||||
});
|
||||
}
|
||||
|
||||
$("<button/>").addClass("btn btn-primary")
|
||||
.attr("data-dismiss", "modal")
|
||||
.attr("aria-hidden", "true")
|
||||
.text("Open Poll")
|
||||
.appendTo(footer)
|
||||
.click(submit);
|
||||
modal.on("hidden", function() {
|
||||
modal.remove();
|
||||
});
|
||||
modal.modal();
|
||||
}
|
||||
|
|
|
@ -104,6 +104,11 @@
|
|||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><pre>/poll</pre> (no parameters)</td>
|
||||
<td>Moderators</td>
|
||||
<td>A poll editor is popped up allowing for easy creation of the poll, and allowing commas in the poll title and options</td>
|
||||
</tr>
|
||||
</table>
|
||||
<p>There are also some other chat features. When your name appears in a message, <span class="nick-highlight">the message will be highlighted.</span> If you type the beginning of someone's name in chat, pressing tab will attempt to autocomplete the name.</p>
|
||||
|
||||
|
|
Loading…
Reference in New Issue