Work on chat filters, UI stuff
This commit is contained in:
parent
7b18caa51c
commit
9c989f7ed7
12 changed files with 204 additions and 35 deletions
|
|
@ -47,23 +47,17 @@ Callbacks = {
|
|||
socket.emit("joinChannel", {
|
||||
name: CHANNEL.name
|
||||
});
|
||||
|
||||
if (CHANNEL.opts.password) {
|
||||
socket.emit("channelPassword", CHANNEL.opts.password);
|
||||
}
|
||||
/*
|
||||
if(NAME && SESSION) {
|
||||
socket.emit("login", {
|
||||
name: NAME,
|
||||
session: SESSION
|
||||
});
|
||||
}
|
||||
// Guest auto-relogin
|
||||
else if(CLIENT.name) {
|
||||
|
||||
if (CLIENT.name && CLIENT.guest) {
|
||||
socket.emit("login", {
|
||||
name: CLIENT.name
|
||||
});
|
||||
}
|
||||
*/
|
||||
|
||||
$("<div/>").addClass("server-msg-reconnect")
|
||||
.text("Connected")
|
||||
.appendTo($("#messagebuffer"));
|
||||
|
|
@ -240,6 +234,44 @@ Callbacks = {
|
|||
formatCSChatFilterList();
|
||||
},
|
||||
|
||||
updateChatFilter: function (f) {
|
||||
var entries = $("#cs-chatfilters table").data("entries") || [];
|
||||
var found = false;
|
||||
for (var i = 0; i < entries.length; i++) {
|
||||
if (entries[i].name === f.name) {
|
||||
entries[i] = f;
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!found) {
|
||||
entries.push(f);
|
||||
}
|
||||
|
||||
$("#cs-chatfilters table").data("entries", entries);
|
||||
formatCSChatFilterList();
|
||||
},
|
||||
|
||||
deleteChatFilter: function (f) {
|
||||
var entries = $("#cs-chatfilters table").data("entries") || [];
|
||||
var found = false;
|
||||
for (var i = 0; i < entries.length; i++) {
|
||||
if (entries[i].name === f.name) {
|
||||
entries[i] = f;
|
||||
found = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (found !== false) {
|
||||
entries.splice(found, 1);
|
||||
}
|
||||
|
||||
$("#cs-chatfilters table").data("entries", entries);
|
||||
formatCSChatFilterList();
|
||||
},
|
||||
|
||||
channelOpts: function(opts) {
|
||||
document.title = opts.pagetitle;
|
||||
PAGETITLE = opts.pagetitle;
|
||||
|
|
@ -429,6 +461,7 @@ Callbacks = {
|
|||
}
|
||||
else {
|
||||
CLIENT.name = data.name;
|
||||
CLIENT.guest = data.guest;
|
||||
CLIENT.logged_in = true;
|
||||
}
|
||||
},
|
||||
|
|
@ -478,6 +511,11 @@ Callbacks = {
|
|||
div.data("profile", data.profile);
|
||||
div.data("meta", data.meta);
|
||||
div.data("afk", data.meta.afk);
|
||||
if (data.meta.muted || data.meta.smuted) {
|
||||
div.data("icon", "glyphicon-volume-off");
|
||||
} else {
|
||||
div.data("icon", false);
|
||||
}
|
||||
formatUserlistItem(div, data);
|
||||
addUserDropdown(div, data);
|
||||
div.appendTo($("#userlist"));
|
||||
|
|
|
|||
|
|
@ -36,7 +36,6 @@ var CHANNEL = {
|
|||
};
|
||||
|
||||
var PLAYER = false;
|
||||
var VIDEOQUALITY = false;
|
||||
var FLUIDLAYOUT = false;
|
||||
var VWIDTH;
|
||||
var VHEIGHT;
|
||||
|
|
@ -84,7 +83,7 @@ function setOpt(k, v) {
|
|||
|
||||
function getOrDefault(k, def) {
|
||||
var v = getOpt(k);
|
||||
if(v === null)
|
||||
if(v === null || v === "null")
|
||||
return def;
|
||||
if(v === "true")
|
||||
return true;
|
||||
|
|
@ -118,7 +117,7 @@ var USEROPTS = {
|
|||
ignore_channeljs : getOrDefault("ignore_channeljs", false),
|
||||
sort_rank : getOrDefault("sort_rank", false),
|
||||
sort_afk : getOrDefault("sort_afk", false),
|
||||
default_quality : getOrDefault("default_quality", "#quality_auto"),
|
||||
default_quality : getOrDefault("default_quality", ""),
|
||||
boop : getOrDefault("boop", false),
|
||||
secure_connection : getOrDefault("secure_connection", false)
|
||||
};
|
||||
|
|
|
|||
|
|
@ -67,10 +67,10 @@ var YouTubePlayer = function (data) {
|
|||
self.load = function (data) {
|
||||
if(self.player && self.player.loadVideoById) {
|
||||
self.player.loadVideoById(data.id, data.currentTime);
|
||||
if(VIDEOQUALITY) {
|
||||
self.player.setPlaybackQuality(VIDEOQUALITY);
|
||||
if (USEROPTS.default_quality && USEROPTS.default_quality !== "auto") {
|
||||
self.player.setPlaybackQuality(USEROPTS.default_quality);
|
||||
// What's that? Another stupid hack for the HTML5 player?
|
||||
self.player.setPlaybackQuality(VIDEOQUALITY);
|
||||
self.player.setPlaybackQuality(USEROPTS.default_quality);
|
||||
}
|
||||
self.videoId = data.id;
|
||||
self.videoLength = data.seconds;
|
||||
|
|
|
|||
|
|
@ -539,3 +539,73 @@ $("#cs-jssubmit").click(function () {
|
|||
js: $("#cs-jstext").val()
|
||||
});
|
||||
});
|
||||
|
||||
$("#cs-chatfilters-newsubmit").click(function () {
|
||||
var name = $("#cs-chatfilters-newname").val();
|
||||
var regex = $("#cs-chatfilters-newregex").val();
|
||||
var flags = $("#cs-chatfilters-newflags").val();
|
||||
var replace = $("#cs-chatfilters-newreplace").val();
|
||||
|
||||
try {
|
||||
new RegExp(regex, flags);
|
||||
} catch (e) {
|
||||
alert("Regex error: " + e);
|
||||
return;
|
||||
}
|
||||
|
||||
console.log(name, regex, flags, replace);
|
||||
socket.emit("updateFilter", {
|
||||
name: name,
|
||||
source: regex,
|
||||
flags: flags,
|
||||
replace: replace,
|
||||
active: true
|
||||
});
|
||||
|
||||
$("#cs-chatfilters-newname").val("");
|
||||
$("#cs-chatfilters-newregex").val("");
|
||||
$("#cs-chatfilters-newflags").val("");
|
||||
$("#cs-chatfilters-newreplace").val("");
|
||||
});
|
||||
|
||||
$("#cs-chatfilters-export").click(function () {
|
||||
var callback = function (data) {
|
||||
socket.listeners("chatFilters").splice(
|
||||
socket.listeners("chatFilters").indexOf(callback)
|
||||
);
|
||||
|
||||
$("#cs-chatfilters-exporttext").val(JSON.stringify(data));
|
||||
};
|
||||
|
||||
socket.on("chatFilters", callback);
|
||||
socket.emit("requestChatFilters");
|
||||
});
|
||||
|
||||
$("#cs-chatfilters-import").click(function () {
|
||||
var text = $("#cs-chatfilters-exporttext").val();
|
||||
var choose = confirm("You are about to import filters from the contents of the textbox below the import button. If this is empty, it will clear all of your filters. Are you sure you want to continue?");
|
||||
if (!choose) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (text.trim() === "") {
|
||||
text = "[]";
|
||||
}
|
||||
|
||||
var data;
|
||||
try {
|
||||
data = JSON.parse(text);
|
||||
} catch (e) {
|
||||
alert("Invalid import data: " + e);
|
||||
return;
|
||||
}
|
||||
|
||||
var entries = $("#cs-chatfilters table").data("entries") || [];
|
||||
entries.forEach(function (f) {
|
||||
socket.emit("removeFilter", f);
|
||||
});
|
||||
|
||||
data.forEach(function (f) {
|
||||
socket.emit("updateFilter", f);
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -139,7 +139,7 @@ function formatUserlistItem(div) {
|
|||
$("<span/>").addClass("glyphicon glyphicon-time").appendTo(icon);
|
||||
}
|
||||
if (data.icon) {
|
||||
$("<span/>").addClass(data.icon).prependTo(icon);
|
||||
$("<span/>").addClass("glyphicon " + data.icon).prependTo(icon);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -506,7 +506,8 @@ function rebuildPlaylist() {
|
|||
/* user settings menu */
|
||||
function showUserOptions() {
|
||||
hidePlayer();
|
||||
$("#useroptions").on("hidden", function () {
|
||||
$("#useroptions").on("hidden.bs.modal", function () {
|
||||
console.log("unhiding");
|
||||
unhidePlayer();
|
||||
});
|
||||
|
||||
|
|
@ -528,6 +529,7 @@ function showUserOptions() {
|
|||
$("#us-hidevideo").prop("checked", USEROPTS.hidevid);
|
||||
$("#us-playlistbuttons").prop("checked", USEROPTS.qbtn_hide);
|
||||
$("#us-oldbtns").prop("checked", USEROPTS.qbtn_idontlikechange);
|
||||
$("#us-default-quality").val(USEROPTS.default_quality || "auto");
|
||||
|
||||
$("#us-chat-timestamp").prop("checked", USEROPTS.show_timestamps);
|
||||
$("#us-sort-rank").prop("checked", USEROPTS.sort_rank);
|
||||
|
|
@ -556,6 +558,7 @@ function saveUserOptions() {
|
|||
USEROPTS.hidevid = $("#us-hidevideo").prop("checked");
|
||||
USEROPTS.qbtn_hide = $("#us-playlistbuttons").prop("checked");
|
||||
USEROPTS.qbtn_idontlikechange = $("#us-oldbtns").prop("checked");
|
||||
USEROPTS.default_quality = $("#us-default-quality").val();
|
||||
|
||||
USEROPTS.show_timestamps = $("#us-chat-timestamp").prop("checked");
|
||||
USEROPTS.sort_rank = $("#us-sort-rank").prop("checked");
|
||||
|
|
@ -839,6 +842,14 @@ function handlePermissionChange() {
|
|||
setVisible("#clearplaylist", hasPermission("playlistclear"));
|
||||
setVisible("#shuffleplaylist", hasPermission("playlistshuffle"));
|
||||
|
||||
// Weird things happen to the alignment in chromium when I toggle visibility
|
||||
// of the above buttons
|
||||
// This fixes it?
|
||||
var wtf = $("#rightcontrols .pull-right").removeClass("pull-right")
|
||||
setTimeout(function () {
|
||||
wtf.addClass("pull-right");
|
||||
}, 1);
|
||||
|
||||
setVisible("#newpollbtn", hasPermission("pollctl"));
|
||||
$("#voteskip").attr("disabled", !hasPermission("voteskip") ||
|
||||
!CHANNEL.opts.allow_voteskip);
|
||||
|
|
@ -1444,9 +1455,10 @@ function hidePlayer() {
|
|||
return;
|
||||
|
||||
PLAYER.size = {
|
||||
width: $("#ytapiplayer").attr("width"),
|
||||
height: $("#ytapiplayer").attr("height")
|
||||
width: $("#ytapiplayer").width(),
|
||||
height: $("#ytapiplayer").height()
|
||||
};
|
||||
|
||||
$("#ytapiplayer").attr("width", 1)
|
||||
.attr("height", 1);
|
||||
}
|
||||
|
|
@ -1458,8 +1470,8 @@ function unhidePlayer() {
|
|||
if(!/(chrome|MSIE)/ig.test(navigator.userAgent))
|
||||
return;
|
||||
|
||||
$("#ytapiplayer").attr("width", PLAYER.size.width)
|
||||
.attr("height", PLAYER.size.height);
|
||||
$("#ytapiplayer").width(PLAYER.size.width)
|
||||
.height(PLAYER.size.height);
|
||||
}
|
||||
|
||||
function chatDialog(div) {
|
||||
|
|
@ -1654,7 +1666,7 @@ function makeModal() {
|
|||
.html("×")
|
||||
.appendTo(head);
|
||||
|
||||
wrap.on("hidden", function () {
|
||||
wrap.on("hidden.bs.modal", function () {
|
||||
unhidePlayer();
|
||||
wrap.remove();
|
||||
});
|
||||
|
|
@ -1832,7 +1844,6 @@ function formatCSChatFilterList() {
|
|||
$("<span/>").addClass("glyphicon glyphicon-trash").appendTo(del);
|
||||
del.click(function () {
|
||||
socket.emit("removeFilter", f);
|
||||
socket.emit("requestChatFilters");
|
||||
});
|
||||
var name = $("<code/>").text(f.name).appendTo($("<td/>").appendTo(tr));
|
||||
var activetd = $("<td/>").appendTo(tr);
|
||||
|
|
@ -1903,7 +1914,6 @@ function formatCSChatFilterList() {
|
|||
|
||||
socket.emit("updateFilter", f);
|
||||
reset();
|
||||
socket.emit("requestChatFilters");
|
||||
});
|
||||
|
||||
control.data("editor", tr2);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue