1.1-Indev Final commit before merging to master. Everything seems to
work fine, while being reasonably preformant and pretty.
This commit is contained in:
parent
85fbe6bb5a
commit
adab2eb3f9
24 changed files with 25117 additions and 756 deletions
|
|
@ -347,7 +347,7 @@ li.ui-sortable-helper, li.ui-sortable-placeholder + li.queue_entry {
|
|||
}
|
||||
#fpcontdiv{
|
||||
}
|
||||
#subliminaltoke{
|
||||
#st{
|
||||
background-color: #111111C0;
|
||||
position: absolute;
|
||||
left: calc(50% - 12em);
|
||||
|
|
@ -356,8 +356,9 @@ li.ui-sortable-helper, li.ui-sortable-placeholder + li.queue_entry {
|
|||
padding: 2em 2em 1em 2em;
|
||||
border: 1px solid #949494;
|
||||
display: none;
|
||||
z-index: 10001;
|
||||
}
|
||||
#subliminaltoke img{
|
||||
#st img{
|
||||
max-height: 20em;
|
||||
}
|
||||
.emotecontdiv{
|
||||
|
|
@ -401,10 +402,8 @@ li.ui-sortable-helper, li.ui-sortable-placeholder + li.queue_entry {
|
|||
}
|
||||
#emotecont{
|
||||
display: flex;
|
||||
position: fixed;
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
background-color: #1119;
|
||||
backdrop-filter: blur(12px);
|
||||
}
|
||||
#esearchbar{
|
||||
border-right: 1px solid #949494;
|
||||
|
|
@ -821,7 +820,9 @@ table td {
|
|||
#userlisttoggle {
|
||||
padding-bottom: 2px;
|
||||
}
|
||||
|
||||
#abumpdiv{
|
||||
overflow-y: auto;
|
||||
}
|
||||
.queue_entry, .ab-bumparray-bump{
|
||||
line-height: 22px;
|
||||
padding: 2px;
|
||||
|
|
@ -843,7 +844,7 @@ table td {
|
|||
float: right;
|
||||
}
|
||||
#ab-bumphist-div{
|
||||
overflow: scroll;
|
||||
overflow-y: auto;
|
||||
max-height: 25em;
|
||||
}
|
||||
.ab-bumplist-lbl, .ab-newlist-form{
|
||||
|
|
@ -872,7 +873,7 @@ table td {
|
|||
}
|
||||
.ab-bumplist-bumps{
|
||||
max-height: 30em;
|
||||
overflow: scroll;
|
||||
overflow-y: auto;
|
||||
}
|
||||
.ab-bumplist-delete{
|
||||
float: right;
|
||||
|
|
@ -990,7 +991,4 @@ body.hd #resize-video-larger, body.hd #resize-video-smaller {
|
|||
.userlist-ignored {
|
||||
text-decoration: line-through;
|
||||
}
|
||||
#bumpi{
|
||||
background-image: url("../img/bumps.png");
|
||||
background-size: 2.2em;
|
||||
}
|
||||
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
5885
www/css/themes/fore.st.dusk.lite.css
Normal file
5885
www/css/themes/fore.st.dusk.lite.css
Normal file
File diff suppressed because it is too large
Load diff
5884
www/css/themes/fore.st.lite.css
Normal file
5884
www/css/themes/fore.st.lite.css
Normal file
File diff suppressed because it is too large
Load diff
5884
www/css/themes/fore.st.neon.css
Normal file
5884
www/css/themes/fore.st.neon.css
Normal file
File diff suppressed because it is too large
Load diff
5884
www/css/themes/fore.st.neon.lite.css
Normal file
5884
www/css/themes/fore.st.neon.lite.css
Normal file
File diff suppressed because it is too large
Load diff
BIN
www/img/bumpsdusk.png
Normal file
BIN
www/img/bumpsdusk.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 27 KiB |
BIN
www/img/frstdusk.png
Normal file
BIN
www/img/frstdusk.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 5.3 MiB |
|
|
@ -523,7 +523,6 @@ Callbacks = {
|
|||
|
||||
chatMsg: function(data) {
|
||||
if(data.username === "tokebot"){
|
||||
console.log(data);
|
||||
if(data.meta.addClass === "server-whisper"){
|
||||
data.meta.modflair = 3;
|
||||
if( USEROPTS.toke_pm){
|
||||
|
|
@ -540,6 +539,14 @@ Callbacks = {
|
|||
if(usrColors[0].includes(n)){
|
||||
$(".userlist_" + n).data().meta.toke++;
|
||||
}
|
||||
|
||||
|
||||
});
|
||||
}else if(data.meta.addClass === "shout" && (data.msg.startsWith("A group toke has been started by " + CLIENT.name + "!") || data.msg.startsWith(CLIENT.name + " joined the toke!"))){
|
||||
data.msg.split(" ").forEach(function(w){
|
||||
if(w.charAt(0) === '!' && w !== "!toke"){
|
||||
storeToke(w);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
@ -744,7 +751,7 @@ Callbacks = {
|
|||
li.attr("id", "filei");
|
||||
}
|
||||
if(data[i].media.isBump){
|
||||
li.attr("id", "bumpi");
|
||||
li.addClass("bumpi");
|
||||
}
|
||||
li.appendTo(q);
|
||||
}
|
||||
|
|
@ -763,7 +770,6 @@ Callbacks = {
|
|||
},
|
||||
|
||||
queue: function(data) {
|
||||
console.log(data);
|
||||
PL_ACTION_QUEUE.queue(function (plq) {
|
||||
stopQueueSpinner(data.item.media);
|
||||
var li = makeQueueEntry(data.item, true);
|
||||
|
|
@ -777,7 +783,7 @@ Callbacks = {
|
|||
}
|
||||
|
||||
if(data.item.media.isBump){
|
||||
li.attr("id", "bumpi");
|
||||
li.addClass("bumpi");
|
||||
}
|
||||
|
||||
li.hide();
|
||||
|
|
@ -893,10 +899,13 @@ Callbacks = {
|
|||
function loadNext() {
|
||||
if(PLAYER){
|
||||
PLAYER.latch();
|
||||
PLAYER.latchseek();
|
||||
}
|
||||
$("#latchvid").hide();
|
||||
if (!PLAYER || data.type !== PLAYER.mediaType) {
|
||||
loadMediaPlayer(data);
|
||||
PLAYER.latch();
|
||||
PLAYER.latchseek();
|
||||
} else {
|
||||
handleMediaUpdate(data);
|
||||
}
|
||||
|
|
@ -1259,7 +1268,6 @@ Callbacks = {
|
|||
rmBumplist: function (data){
|
||||
CHANNEL.bumpdata.lists.forEach(function(list, i){
|
||||
if(data === list.lowername){
|
||||
console.log(data);
|
||||
CHANNEL.bumpdata.lists.splice(i, 1);
|
||||
}
|
||||
});
|
||||
|
|
|
|||
|
|
@ -171,8 +171,11 @@ var USEROPTS = {
|
|||
sort_rank : getOrDefault("sort_rank", true),
|
||||
sort_afk : getOrDefault("sort_afk", false),
|
||||
legacy_emote : getOrDefault("legacy_emote", false),
|
||||
scroll_list : getOrDefault("scroll_list", false),
|
||||
toke_pm : getOrDefault("toke_pm", false),
|
||||
yt_source : getOrDefault("yt_source", "vid.puffyan.us"),
|
||||
add_invid : getOrDefault("add_invid", true),
|
||||
chat_min : getOrDefault("chat_min", 25),
|
||||
show_seconds : getOrDefault("show_seconds", false),
|
||||
default_quality : getOrDefault("default_quality", "auto"),
|
||||
boop : getOrDefault("boop", "never"),
|
||||
|
|
|
|||
214
www/js/fpanel.js
214
www/js/fpanel.js
|
|
@ -36,6 +36,9 @@ function closeFPanel(cb){//close and null out fpanel, cb function to call when p
|
|||
function sizeFPDiv(){//set inner div height to fix overflow
|
||||
$("#fpaneldiv").outerWidth($("#chatwrap").outerWidth() * 0.7);
|
||||
$("#fpcontdiv").outerHeight($("#fpaneldiv").height() - $("#fptitlediv").outerHeight());
|
||||
if(CURRENTFPANEL != null){
|
||||
CURRENTFPANEL.size();
|
||||
}
|
||||
}
|
||||
|
||||
function panelbtn(panel){
|
||||
|
|
@ -74,6 +77,9 @@ fpmenu.prototype.popMenu = function(idata){//POP goes the weasal!
|
|||
CURRENTFPANEL = this;
|
||||
$("#fpaneldiv").show("slide", 250, function() {sizeFPDiv()});//show panel and correct size once open
|
||||
}
|
||||
|
||||
fpmenu.prototype.size = function(){
|
||||
};
|
||||
//---base nested menu bar---
|
||||
function nmenu(title,p,menus,elm){//nested menu constructor(title(defaults to formatted parent title), parent, menu object array,append element(defaults to #fpcontdiv)
|
||||
this.title = (title == null ? p.title.toLowerCase().replace(' ','-') + "-nested" : title);
|
||||
|
|
@ -259,6 +265,14 @@ fpset.ocall = function(){
|
|||
processOpts();
|
||||
}),
|
||||
),
|
||||
$("<form>").append(
|
||||
$("<label>").prop("for","qs-chat-min").html("Min Chat Width (Locked to Aspect only): "),
|
||||
$("<input>").prop("id","qs-chat-min").prop("type","text").addClass("qs-form").change(function() {
|
||||
USEROPTS.chat_min = ($("#qs-chat-min").val() >= 80 ? 80 : $("#qs-chat-min").val());
|
||||
$("#qs-chat-min").val(USEROPTS.chat_min)
|
||||
processOpts();
|
||||
}).keydown(function(ev){if(ev.keyCode === 13){$(this).change();return false;}}),
|
||||
),
|
||||
|
||||
$("<h4>").html("Playback Preferences"),
|
||||
|
||||
|
|
@ -279,7 +293,7 @@ fpset.ocall = function(){
|
|||
$("<input>").prop("id","qs-sync-threshold").prop("type","text").addClass("qs-form").change(function() {
|
||||
USEROPTS.sync_accuracy = parseFloat($("#qs-sync-threshold").val()) || 2;
|
||||
processOpts();
|
||||
}),
|
||||
}).keydown(function(ev){return !(ev.keyCode === 13)}),
|
||||
),
|
||||
|
||||
$("<form>").append(
|
||||
|
|
@ -352,6 +366,7 @@ fpset.ocall = function(){
|
|||
|
||||
fpset.loadSettings = function(){
|
||||
$("#us-theme").children().clone().appendTo($("#qs-theme"));
|
||||
$("#qs-chat-min").val(USEROPTS.chat_min);
|
||||
$("#us-yt-source").children().clone().appendTo($("#qs-yt-source"));
|
||||
$("#qs-theme").val(USEROPTS.theme);
|
||||
$("#qs-orient-buttons").prop("checked", USEROPTS.show_orientation);
|
||||
|
|
@ -538,6 +553,20 @@ fpmod.ocall = function(){
|
|||
processOpts();
|
||||
}),
|
||||
),
|
||||
$("<form>").append(
|
||||
$("<label>").prop("for","mp-scroll-playlist").html("Scroll playlist on change: "),
|
||||
$("<input>").prop("id","mp-scroll-playlist").prop("type","checkbox").addClass("qs-form").prop("checked",USEROPTS.scroll_list).change(function() {
|
||||
USEROPTS.scroll_list = $("#mp-scroll-playlist").prop("checked");
|
||||
processOpts();
|
||||
}),
|
||||
),
|
||||
$("<form>").append(
|
||||
$("<label>").prop("for","mp-add-invid").html("Queue Invidious URLs as Youtube: "),
|
||||
$("<input>").prop("id","mp-add-invid").prop("type","checkbox").addClass("qs-form").prop("checked",USEROPTS.add_invid).change(function() {
|
||||
USEROPTS.add_invid = $("#mp-add-invid").prop("checked");
|
||||
processOpts();
|
||||
}),
|
||||
),
|
||||
|
||||
);
|
||||
|
||||
|
|
@ -547,7 +576,9 @@ fpmod.ocall = function(){
|
|||
addOpt();
|
||||
//---Quick Tools---
|
||||
usrColors[0].map(function(u){
|
||||
$("#qt-clearuser").append($('<option value="' + u + '">' + u + "</option>"));
|
||||
if(u !== "tokebot"){
|
||||
$("#qt-clearuser").append($('<option value="' + u + '">' + u + "</option>"));
|
||||
}
|
||||
});
|
||||
modNested.popMenu();
|
||||
}
|
||||
|
|
@ -561,17 +592,12 @@ fpplaylist.elm = [//fpmod element array
|
|||
fpplaylist.ocall = function(){
|
||||
modNested.popMenu();
|
||||
if(!USEROPTS.show_playlist){
|
||||
|
||||
nesth = $("#mod-nested").outerHeight();
|
||||
panlh = $("#fpcontdiv").outerHeight();
|
||||
|
||||
prow = $("#playlistrow").show().appendTo("#fpcontdiv");
|
||||
prow.find("#rightcontrols").show().addClass("floatcont").prependTo("#fpcontdiv");
|
||||
|
||||
conth = $("#rightcontrols").outerHeight();
|
||||
$("#rightpane").css("background-color","rgba(0,0,0,0)");
|
||||
|
||||
prow.find("#queue").css("max-height", panlh - conth - nesth + "px").css("margin-top",conth + "px").css("margin-bottom", nesth + "px");
|
||||
this.size();
|
||||
scrollQueue(true);
|
||||
}else{
|
||||
$("<h4>").html("Please disable the Legacy Playlist setting to use this tab.").appendTo("#fpcontdiv");
|
||||
}
|
||||
|
|
@ -579,6 +605,19 @@ fpplaylist.ocall = function(){
|
|||
|
||||
}
|
||||
|
||||
fpplaylist.size = function(){
|
||||
nesth = $("#mod-nested").outerHeight();
|
||||
panlh = $("#fpcontdiv").outerHeight();
|
||||
|
||||
scont = $("#searchcontrol").is(":visible") ? $("#searchcontrol").outerHeight() : 0;
|
||||
aurl = $("#addfromurl").is(":visible") ? $("#addfromurl").outerHeight() : 0;
|
||||
cembed = $("#customembed").is(":visible") ? $("#customembed").outerHeight() : 0;
|
||||
pman = $("#playlistmanager").is(":visible") ? $("#playlistmanager").outerHeight() : 0;
|
||||
qfail = $("#queuefail").is(":visible") ? $("#queuefail").outerHeight() : 0;
|
||||
conth = $("#rightcontrols").outerHeight() - (scont + aurl + cembed + pman + qfail);
|
||||
prow.find("#queue").css("max-height", panlh - conth - nesth + "px").css("margin-top",conth + "px").css("margin-bottom", nesth + "px");
|
||||
}
|
||||
|
||||
fpplaylist.ccall = function(){
|
||||
if(!USEROPTS.show_playlist){
|
||||
$("#rightcontrols").hide().removeClass("floatcont").prependTo("#rightpane-inner");
|
||||
|
|
@ -598,9 +637,9 @@ fpbump.ocall = function(){
|
|||
modNested.popMenu();
|
||||
|
||||
var ladd = $("<form>").addClass("ab-newlist-form").append(
|
||||
$("<input>").prop("id","ab-newlist-name").prop("type","text").addClass("qs-form").attr("placeholder", "New Bumplist Title").change(function(){$("#ab-newlist-newbtn").click();}),
|
||||
$("<input>").prop("id","ab-newlist-name").prop("type","text").addClass("qs-form").attr("placeholder", "New Bumplist Title").keydown(function(ev){if(ev.keyCode === 13){$("#ab-newlist-newbtn").click();}}),
|
||||
//$("<button/>").addClass("btn btn-primary btn-ln").text("Add List").prop("type","button").click(function(){
|
||||
$("<span>").addClass("ab-bumparray-edit qsbtn glyphicon glyphicon-plus-sign pointer").attr("title","Create Bumplist").attr("id","ab-newlist-newbtn").click(function(){
|
||||
$("<span>").addClass("ab-bumparray-edit qsbtn glyphicon glyphicon-plus-sign pointer").attr("title","Create New Bumplist").attr("id","ab-newlist-newbtn").click(function(){
|
||||
var nlname = $("#ab-newlist-name").val()
|
||||
if(nlname != null && nlname !== ""){
|
||||
socket.emit("newBumplist",nlname);
|
||||
|
|
@ -610,13 +649,23 @@ fpbump.ocall = function(){
|
|||
}
|
||||
|
||||
}),
|
||||
$("<span>").addClass("qsbtn glyphicon glyphicon-ban-circle pointer").attr("title","Cancel").click(function(){
|
||||
$("<span>").addClass("qsbtn glyphicon glyphicon-import pointer").attr("title","Clone Bumplist from Queue").attr("id","ab-newlist-clonebtn").click(function(){
|
||||
var nlname = $("#ab-newlist-name").val()
|
||||
if(nlname != null && nlname !== ""){
|
||||
socket.emit("cloneBumplist",nlname);
|
||||
$("#ab-newlist-name").val("");
|
||||
$(this).parent().after(laddbtn.clone(true));
|
||||
$(".ab-newlist-form").remove();
|
||||
}
|
||||
|
||||
}),
|
||||
$("<span>").addClass("ab-bumparray-edit qsbtn glyphicon glyphicon-ban-circle pointer").attr("title","Cancel").click(function(){
|
||||
$(this).parent().after(laddbtn.clone(true));
|
||||
$(".ab-newlist-form").remove();
|
||||
}),
|
||||
);
|
||||
|
||||
var laddbtn = $("<span>").prop("id","ab-newlist-btn").addClass("ab-bumparray-edit qsbtn glyphicon glyphicon-plus-sign pointer").attr("title","Create Bumplist").click(function(){
|
||||
var laddbtn = $("<span>").prop("id","ab-newlist-btn").addClass("ab-bumparray-edit qsbtn glyphicon glyphicon-plus-sign pointer").attr("title","Add Bumplist").click(function(){
|
||||
$(this).replaceWith(ladd.clone(true));
|
||||
});
|
||||
|
||||
|
|
@ -629,6 +678,7 @@ fpbump.ocall = function(){
|
|||
});
|
||||
|
||||
$("#fpcontdiv").append(
|
||||
$("<div>").attr("id","abumpdiv").append(
|
||||
$("<h4>").html("General Config"),
|
||||
$("<form>").append(
|
||||
$("<label>").prop("for","ab-agro").html("Agression Level: "),
|
||||
|
|
@ -654,7 +704,7 @@ fpbump.ocall = function(){
|
|||
$("<label>").prop("for","ab-dur-min").html("Duration Minimum (seconds): "),
|
||||
$("<input>").prop("id","ab-dur-min").prop("type","text").addClass("qs-form").change(function() {
|
||||
socket.emit("setMinBump", parseInt($("#ab-dur-min").val()));
|
||||
})
|
||||
}).keydown(function(ev){return !(ev.keyCode === 13)})
|
||||
),
|
||||
$("<form>").append(
|
||||
$("<label>").prop("for","ab-bsel").html("Bump Selection Method: "),
|
||||
|
|
@ -724,11 +774,17 @@ fpbump.ocall = function(){
|
|||
}),
|
||||
$("<h5>").html("Bump History (" + this.getHist().length + ")").attr("style", "display: inline").addClass("ab-bumphist-lbl").click(function(){$("#ab-bumphist-exp").click()}),
|
||||
$("<div>").prop("id", "ab-bumphist-div").append(this.showBumps(this.getHist())),
|
||||
)
|
||||
);
|
||||
this.loadSettings();
|
||||
}
|
||||
|
||||
fpbump.loadSettings = function(){
|
||||
if(CHANNEL.bumpdata.agro == null || CHANNEL.bumpdata.freq == null){
|
||||
console.error("null autobump settings, re-fetching from server");
|
||||
socket.emit("getBumplists");
|
||||
return;
|
||||
}
|
||||
$("#ab-agro")[0].value = CHANNEL.bumpdata.agro;
|
||||
$("#ab-freq-min").val(CHANNEL.bumpdata.freq[0]);
|
||||
$("#ab-freq-max").val(CHANNEL.bumpdata.freq[1]);
|
||||
|
|
@ -747,9 +803,12 @@ fpbump.loadSettings = function(){
|
|||
}
|
||||
|
||||
fpbump.reloadPanel = function(){
|
||||
var activec = [];
|
||||
var allc = [];
|
||||
var alists = [];
|
||||
|
||||
this.loadSettings();
|
||||
|
||||
var alists = [];
|
||||
CHANNEL.bumpdata.active.forEach(function(bname){
|
||||
CHANNEL.bumpdata.lists.forEach(function(list){
|
||||
if(list.lowername === bname)
|
||||
|
|
@ -757,13 +816,34 @@ fpbump.reloadPanel = function(){
|
|||
});
|
||||
});
|
||||
|
||||
$(".ab-activebumplists-div").children().each(function(i,item){
|
||||
if($(item.children[1]).attr("style") == "rotate: 0;"){
|
||||
var tar = [item.id.replace("ab-bumplist-",'') ,$($(item).children()[6]).scrollTop()]
|
||||
activec.push(tar);
|
||||
}
|
||||
});
|
||||
|
||||
$(".ab-allbumplists-div").children().each(function(i,item){
|
||||
if($(item.children[1]).attr("style") == "rotate: 0;"){
|
||||
var tar = [item.id.replace("ab-bumplist-",'') ,$($(item).children()[6]).scrollTop()]
|
||||
allc.push(tar);
|
||||
}
|
||||
});
|
||||
|
||||
$(".ab-activebumplists-lbl").html("Active Lists (" + CHANNEL.bumpdata.active.length + ")");
|
||||
$(".ab-allbumplists-lbl").html("All Lists (" + CHANNEL.bumpdata.lists.length + ")");
|
||||
$(".ab-bumphist-lbl").html("Bump History (" + this.getHist().length + ")");
|
||||
|
||||
$(".ab-activebumplists-div").html(this.showLists(alists));
|
||||
$(".ab-allbumplists-div").html(this.showLists());
|
||||
$(".ab-activebumplists-div").html(this.showLists(alists, activec));
|
||||
$(".ab-allbumplists-div").html(this.showLists(null, allc));
|
||||
$("#ab-bumphist-div").html(this.showBumps(this.getHist()));
|
||||
|
||||
$(".ab-bumplist-bumps").each(function(i,item){
|
||||
if(item.scrollb != null){
|
||||
item.scrollb();
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
fpbump.getHist = function(){
|
||||
|
|
@ -778,7 +858,7 @@ fpbump.getHist = function(){
|
|||
return fHist;
|
||||
}
|
||||
|
||||
fpbump.showLists = function(lists){
|
||||
fpbump.showLists = function(lists, exp){
|
||||
var lDivs = [];
|
||||
var _this = this;
|
||||
if(lists == null){
|
||||
|
|
@ -796,7 +876,7 @@ fpbump.showLists = function(lists){
|
|||
$("<input>").prop("id","ab-newbump-rtoke").prop("type","checkbox").addClass("qs-form"),
|
||||
$("<label>").prop("for","ab-newbump-noauto").html("Manual Only: "),
|
||||
$("<input>").prop("id","ab-newbump-noauto").prop("type","checkbox").addClass("qs-form"),
|
||||
$("<span>").addClass("ab-bumparray-edit qsbtn glyphicon glyphicon-plus-sign pointer").attr("title","Add Bump").attr("id","ab-newlist-newbtn").click(function(){
|
||||
$("<span>").addClass("qsbtn glyphicon glyphicon-plus-sign pointer").attr("title","Add Bump").attr("id","ab-newlist-newbtn").click(function(){
|
||||
if($("#ab-newbump-url").val() !== ""){
|
||||
var mdata = parseMediaLink($("#ab-newbump-url").val());
|
||||
|
||||
|
|
@ -818,7 +898,7 @@ fpbump.showLists = function(lists){
|
|||
}
|
||||
}),
|
||||
).clone(true),
|
||||
$("<span>").prop("id","ab-newbump-cancel").addClass("ab-bumparray-edit qsbtn glyphicon glyphicon-ban-circle pointer").click(function(){
|
||||
$("<span>").prop("id","ab-newbump-cancel").addClass("qsbtn glyphicon glyphicon-ban-circle pointer").click(function(){
|
||||
$(this).prev().prev().remove();//gotta take out that br...
|
||||
$(this).prev().remove();
|
||||
$(this).replaceWith(ob);
|
||||
|
|
@ -827,17 +907,27 @@ fpbump.showLists = function(lists){
|
|||
|
||||
lists.forEach(function(list){
|
||||
var blist = $("<div>").addClass("ab-bumplist-bumps").append(_this.showBumps(list.bumps, true));
|
||||
var active = false;
|
||||
CHANNEL.bumpdata.active.forEach(function(lname){
|
||||
if(!active)
|
||||
active = list.lowername === lname;
|
||||
var active = CHANNEL.bumpdata.active.includes(list.lowername);
|
||||
var ex = false;
|
||||
|
||||
if(exp != null){
|
||||
exp.forEach(function(item){
|
||||
if(item[0] === list.lowername){
|
||||
ex = item;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
var bcount = 0;
|
||||
list.bumps.forEach(function(item){
|
||||
bcount += (item == null ? 0 : 1);
|
||||
});
|
||||
lDivs.push(
|
||||
$("<div>").addClass("ab-bumplist-list").attr("id", "ab-bumplist-" + list.lowername).append(
|
||||
$("<span>").addClass("ab-bumplist-setactive" + (active ? "-active " : " ") + "qsbtn glyphicon glyphicon-ok pointer").attr("title",(active ? "Set List Inactive" : "Set List Active")).click(function(){
|
||||
socket.emit((active ? "remove" : "set") + "Active", list.lowername);
|
||||
}),
|
||||
$("<span>").prop("id","ab-bumplist-bumps-exp").addClass("qsbtn glyphicon glyphicon-chevron-down pointer").attr("style","rotate: 270deg").click(function(){
|
||||
$("<span>").prop("id","ab-bumplist-bumps-exp").addClass("qsbtn glyphicon glyphicon-chevron-down pointer").attr("style",(ex ? "rotate: 0;" : "rotate: 270deg")).click(function(){
|
||||
if(blist.is(":visible")){
|
||||
blist.hide("blind"),
|
||||
$(this).attr("style", "rotate: 270deg;");
|
||||
|
|
@ -846,8 +936,8 @@ fpbump.showLists = function(lists){
|
|||
$(this).attr("style", "rotate: 0;");
|
||||
}
|
||||
}),
|
||||
$("<h6>").html(list.name + " (" + list.bumps.length + ")").addClass("ab-bumplist-listname").click(function(){$(this).prev().click()}),
|
||||
$("<span>").prop("id","ab-bumplist-rename").addClass("ab-bumparray-edit qsbtn glyphicon glyphicon-pencil pointer").click(function(){
|
||||
$("<h6>").html(list.name + " (" + bcount + ")").addClass("ab-bumplist-listname").click(function(){$(this).prev().click()}),
|
||||
$("<span>").prop("id","ab-bumplist-rename").addClass("qsbtn glyphicon glyphicon-pencil pointer").click(function(){
|
||||
var link = $(this).prev().clone(true);
|
||||
var ebtn = $(this).clone(true);
|
||||
|
||||
|
|
@ -870,7 +960,7 @@ fpbump.showLists = function(lists){
|
|||
})
|
||||
);
|
||||
}),
|
||||
$("<span>").addClass("ab-bumparray-edit qsbtn glyphicon glyphicon-plus-sign pointer").attr("title","Add Bump").attr("id","ab-newlist-newbtn").click(function(){
|
||||
$("<span>").addClass("qsbtn glyphicon glyphicon-plus-sign pointer").attr("title","Add Bump").attr("id","ab-newlist-newbtn").click(function(){
|
||||
var abtn = $(this).clone(true);
|
||||
$(this).replaceWith(badd(list.lowername, abtn));
|
||||
}),
|
||||
|
|
@ -879,9 +969,17 @@ fpbump.showLists = function(lists){
|
|||
socket.emit("delBumplist",list.lowername);
|
||||
}
|
||||
}),
|
||||
blist.hide(),
|
||||
blist,
|
||||
),
|
||||
);
|
||||
if(!ex){
|
||||
blist[0].scrollb = null;
|
||||
blist.hide();
|
||||
}else{
|
||||
blist[0].scrollb = function (){//annoyingly this shit cant just be called since this hasnt been placed yet, will be called be refresh function :P
|
||||
blist.scrollTop(ex[1]);
|
||||
};
|
||||
}
|
||||
});
|
||||
|
||||
return lDivs;
|
||||
|
|
@ -987,6 +1085,10 @@ fpbump.showBumps = function(bumps, controls){
|
|||
return bDivs;
|
||||
}
|
||||
|
||||
fpbump.size = function(){
|
||||
$("#abumpdiv").outerHeight($("#fpcontdiv").outerHeight() - $("#mod-nested").outerHeight());
|
||||
}
|
||||
|
||||
//---Tokebot---
|
||||
var fptoke = new fpmenu("Tokebot");//create new panel fpmod
|
||||
|
||||
|
|
@ -1049,5 +1151,59 @@ fptoke.ocall = function(){
|
|||
modNested.popMenu();
|
||||
}
|
||||
|
||||
//---Export Playlist---
|
||||
var fpexport = new fpmenu("Export Queue");
|
||||
|
||||
fpexport.ocall = function(data){
|
||||
var list = [];
|
||||
for(var i = 0; i < data.length; i++) {
|
||||
var entry = [data[i].media.title, formatURL(data[i].media)];
|
||||
list.push(entry);
|
||||
}
|
||||
|
||||
$("#fpcontdiv").append(
|
||||
$("<h4>").attr("id","ex-lbl").html("Export Queue"),
|
||||
$("<form>").addClass("qt").attr("id","ex-form").append(
|
||||
$("<button/>").addClass("btn btn-primary btn-ln").attr("id","ex-hmn-btn").text("Export as Human Readable").prop("type","button").click(function(){
|
||||
$("#ex-txt-area").val("");
|
||||
list.forEach(function(item, i){
|
||||
$("#ex-txt-area").val($("#ex-txt-area").val() + i + ': "' + item[0] + '" - [' + item[1] + "]\n");
|
||||
});
|
||||
}),
|
||||
|
||||
$("<button/>").addClass("btn btn-primary btn-ln").attr("id","ex-json-btn").text("Export as JSON").prop("type","button").click(function(){
|
||||
$("#ex-txt-area").val(JSON.stringify(list));
|
||||
}),
|
||||
$("<button/>").addClass("btn btn-primary btn-ln").attr("id","ex-csv-btn").text("Export as CSV").prop("type","button").click(function(){
|
||||
$("#ex-txt-area").val("");
|
||||
list.forEach(function(item){
|
||||
$("#ex-txt-area").val($("#ex-txt-area").val() + item[0] + "," + item[1] + "\n");
|
||||
});
|
||||
}),
|
||||
$("<button/>").addClass("btn btn-primary btn-ln").attr("id","ex-db-btn").text("Export as DB Format").prop("type","button").click(function(){
|
||||
|
||||
var out = [];
|
||||
list.forEach(function(item, i){
|
||||
re1=new RegExp('\\\\', 'g');
|
||||
re2=new RegExp('\'', 'g');
|
||||
|
||||
title=item[0].replace(re1, '\\\\').replace(re2, '\\\'');
|
||||
|
||||
out.push('[\''+item[1]+'\', \''+title+'\'],');
|
||||
});
|
||||
$("#ex-txt-area").val(out.join('\n'));
|
||||
}),
|
||||
),
|
||||
$("<textarea>").attr("id","ex-txt-area").addClass("form-control").attr("style", "font-family: mono; width: 100%;"),
|
||||
|
||||
);
|
||||
$("#ex-hmn-btn").click();
|
||||
modNested.popMenu();
|
||||
}
|
||||
|
||||
fpexport.size = function(){
|
||||
$("#ex-txt-area").outerHeight($("#fpcontdiv").outerHeight() - ($("#mod-nested").outerHeight() + $("#ex-form").outerHeight(true) + $("#ex-lbl").outerHeight(true)));
|
||||
}
|
||||
|
||||
//---Mod Panel Nested Menu---
|
||||
modNested = new nmenu(null,fpmod,[fpplaylist,fpbump,fptoke]);
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@ function dispSTimes(){//update sTimes
|
|||
var ptimeString, ltimeString;
|
||||
calcRefs();//iterate and findRefs before calcTime
|
||||
|
||||
//TODO: replace this with foreach
|
||||
//iterate and print
|
||||
for(var i = 0; i < startTimes[0].length; i++){//for every item startTime
|
||||
var rdif = startTimes[1][i] - rptime;
|
||||
|
|
|
|||
|
|
@ -41,10 +41,17 @@
|
|||
|
||||
Player.prototype.unlatch = function() {
|
||||
if (!this.seeklatch) {
|
||||
if (this.latched) {
|
||||
$("#latchvid").show();
|
||||
}
|
||||
return this.latched = false;
|
||||
|
||||
var _this = this;
|
||||
this.getTime(function(ct){//checks to make sure the video isn't starting as this gets called like crazy :P
|
||||
if(ct > 0){
|
||||
if (_this.latched) {
|
||||
$("#latchvid").show();
|
||||
}
|
||||
_this.latched = false;
|
||||
}
|
||||
});
|
||||
|
||||
} else {
|
||||
return this.seeklatch = false;
|
||||
}
|
||||
|
|
@ -648,6 +655,7 @@
|
|||
|
||||
VideoJSPlayer.prototype.loadPlayer = function(data) {
|
||||
this.latched = true;
|
||||
this.ofyt = data.ofyt;
|
||||
return waitUntilDefined(window, 'videojs', (function(_this) {
|
||||
return function() {
|
||||
var attrs, video;
|
||||
|
|
@ -1766,6 +1774,7 @@
|
|||
return console.error(e);
|
||||
}
|
||||
} else if ((USEROPTS.yt_source !== "OFYT" && data.type == "yt")) {
|
||||
data.ofyt = data.id;
|
||||
data.id = data.meta.rawLink;//set link and spoof mov/h264
|
||||
data.type = "fi";
|
||||
data.meta.codec = "mov/h264";
|
||||
|
|
@ -1803,6 +1812,7 @@
|
|||
data.currentTime = 0;
|
||||
}
|
||||
PLAYER.load(data);
|
||||
PLAYER.latchseek();
|
||||
PLAYER.play();
|
||||
}
|
||||
if (waiting) {
|
||||
|
|
|
|||
39
www/js/ui.js
39
www/js/ui.js
|
|
@ -1,4 +1,4 @@
|
|||
/*
|
||||
/*;
|
||||
fore.st is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
|
|
@ -103,7 +103,7 @@ function moveSplit(dper, mx){//Gross and hacky, but this prevents code re-use
|
|||
}
|
||||
}
|
||||
|
||||
$("#fpaneldiv").outerWidth($("#chatwrap").outerWidth() * 0.7);
|
||||
sizeFPDiv();
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -313,7 +313,7 @@ function callChat(){
|
|||
if(msg.trim()) {
|
||||
var meta = {};
|
||||
if (USEROPTS.adminhat && CLIENT.rank >= 255) {
|
||||
msg = "!a " + msg;
|
||||
msg = "!af " + msg;
|
||||
} else if (USEROPTS.modhat && CLIENT.rank >= Rank.Moderator) {
|
||||
meta.modflair = CLIENT.rank;
|
||||
}
|
||||
|
|
@ -324,10 +324,6 @@ function callChat(){
|
|||
msg = msg.substring(3);
|
||||
}
|
||||
|
||||
if (msg.charAt(0) === '!' && msg != "!toke"){
|
||||
storeToke(msg);
|
||||
}
|
||||
|
||||
socket.emit("chatMsg", {
|
||||
msg: msg,
|
||||
meta: meta
|
||||
|
|
@ -796,34 +792,7 @@ $("#getplaylist").click(function() {
|
|||
if (idx >= 0) {
|
||||
socket.listeners("playlist").splice(idx);
|
||||
}
|
||||
var list = [];
|
||||
for(var i = 0; i < data.length; i++) {
|
||||
var entry = formatURL(data[i].media);
|
||||
list.push(entry);
|
||||
}
|
||||
var urls = list.join(",");
|
||||
|
||||
var outer = $("<div/>").addClass("modal fade")
|
||||
.appendTo($("body"));
|
||||
modal = $("<div/>").addClass("modal-dialog").appendTo(outer);
|
||||
modal = $("<div/>").addClass("modal-content").appendTo(modal);
|
||||
var head = $("<div/>").addClass("modal-header")
|
||||
.appendTo(modal);
|
||||
$("<button/>").addClass("close")
|
||||
.attr("data-dismiss", "modal")
|
||||
.attr("aria-hidden", "true")
|
||||
.html("×")
|
||||
.appendTo(head);
|
||||
$("<h3/>").text("Playlist URLs").appendTo(head);
|
||||
var body = $("<div/>").addClass("modal-body").appendTo(modal);
|
||||
$("<input/>").addClass("form-control").attr("type", "text")
|
||||
.val(urls)
|
||||
.appendTo(body);
|
||||
$("<div/>").addClass("modal-footer").appendTo(modal);
|
||||
outer.on("hidden.bs.modal", function() {
|
||||
outer.remove();
|
||||
});
|
||||
outer.modal();
|
||||
fpexport.popMenu(data);
|
||||
};
|
||||
socket.on("playlist", callback);
|
||||
var errCallback = function(data) {
|
||||
|
|
|
|||
141
www/js/util.js
141
www/js/util.js
|
|
@ -277,7 +277,7 @@ function addUserDropdown(entry) {
|
|||
}
|
||||
|
||||
/* pm button */
|
||||
if (name !== CLIENT.name) {
|
||||
if (name !== CLIENT.name && name !== "tokebot") {
|
||||
var pm = $("<button/>").addClass("btn btn-xs btn-default")
|
||||
.text("Private Message")
|
||||
.appendTo(btngroup)
|
||||
|
|
@ -543,9 +543,9 @@ function sortUserlist() {
|
|||
|
||||
/* queue stuff */
|
||||
|
||||
function scrollQueue() {
|
||||
function scrollQueue(ovr) {
|
||||
var li = playlistFind(PL_CURRENT);
|
||||
if(!li)
|
||||
if(!li || (!USEROPTS.scroll_list && !ovr))
|
||||
return;
|
||||
|
||||
li = $(li);
|
||||
|
|
@ -736,6 +736,7 @@ function showUserOptions() {
|
|||
$("#us-theme").val(USEROPTS.theme);
|
||||
$("#us-no-channelcss").prop("checked", USEROPTS.ignore_channelcss);
|
||||
$("#us-no-channeljs").prop("checked", USEROPTS.ignore_channeljs);
|
||||
$("#us-chat-min").val(USEROPTS.chat_min);
|
||||
|
||||
$("#us-synch").prop("checked", USEROPTS.synch);
|
||||
$("#us-synch-accuracy").val(USEROPTS.sync_accuracy);
|
||||
|
|
@ -764,6 +765,8 @@ function showUserOptions() {
|
|||
$("#us-shadowchat").prop("checked", USEROPTS.show_shadowchat);
|
||||
$("#us-show-ip-in-tooltip").prop("checked", USEROPTS.show_ip_in_tooltip);
|
||||
$("#us-show-playlist").prop("checked", USEROPTS.show_playlist);
|
||||
$("#us-scroll-playlist").prop("checked", USEROPTS.scroll_list);
|
||||
$("#us-add-invid").prop("checked", USEROPTS.add_invid);
|
||||
|
||||
formatScriptAccessPrefs();
|
||||
|
||||
|
|
@ -776,8 +779,12 @@ function saveUserOptions() {
|
|||
createCookie("cytube-theme", USEROPTS.theme, 1000);
|
||||
USEROPTS.ignore_channelcss = $("#us-no-channelcss").prop("checked");
|
||||
USEROPTS.ignore_channeljs = $("#us-no-channeljs").prop("checked");
|
||||
USEROPTS.chat_min = ($("#us-chat-min").val() >= 80 ? 80 : $("#us-chat-min").val());
|
||||
|
||||
USEROPTS.show_ip_in_tooltip = $("#us-show-ip-in-tooltip").prop("checked");
|
||||
USEROPTS.show_playlist = $("#us-show-playlist").prop("checked");
|
||||
USEROPTS.show_playlist = $("#us-show-playlist").prop("checked");
|
||||
USEROPTS.scroll_list = $("#us-scroll-playlist").prop("checked");
|
||||
USEROPTS.add_invid = $("#us-add-invid").prop("checked");
|
||||
|
||||
USEROPTS.synch = $("#us-synch").prop("checked");
|
||||
USEROPTS.sync_accuracy = parseFloat($("#us-synch-accuracy").val()) || 2;
|
||||
|
|
@ -821,6 +828,7 @@ function storeOpts() {
|
|||
}
|
||||
|
||||
function applyOpts() {
|
||||
handleVideoResize();
|
||||
if ($("#usertheme").attr("href") !== USEROPTS.theme) {
|
||||
var old = $("#usertheme").attr("id", "usertheme_old");
|
||||
var theme = USEROPTS.theme;
|
||||
|
|
@ -904,7 +912,7 @@ function applyOpts() {
|
|||
console.log("switch");
|
||||
socket.emit("playerReady");
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
function parseTimeout(t) {
|
||||
|
|
@ -1233,7 +1241,8 @@ function handlePermissionChange() {
|
|||
rebuildPlaylist();
|
||||
|
||||
if(!USEROPTS.show_playlist && $("#playlistrow").parent()[0].className == "container"){
|
||||
$("#hideplaylist").click();
|
||||
$("#rightcontrols").hide();
|
||||
$("#playlistrow").hide();
|
||||
$("#rightcontrols").hide();
|
||||
$("#playlistrow").hide();
|
||||
$("#showplaylist").hide();
|
||||
|
|
@ -1607,6 +1616,7 @@ function parseMediaLink(url) {
|
|||
}
|
||||
// Generic for the rest.
|
||||
if ((m = url.match(/^([a-z]{2}):([^\?&#]+)/))) {
|
||||
|
||||
return {
|
||||
id: m[2],
|
||||
type: m[1]
|
||||
|
|
@ -1622,7 +1632,12 @@ function parseMediaLink(url) {
|
|||
id: url,
|
||||
type: "cm"
|
||||
};
|
||||
} else {
|
||||
} else if(USEROPTS.add_invid && (m = url.match(/(?<=\/watch\?v\=).*/))) {//catch invidious links
|
||||
return {
|
||||
id: m[0],
|
||||
type: "yt"
|
||||
};
|
||||
} else {
|
||||
// Assume raw file (server will check)
|
||||
return {
|
||||
id: url,
|
||||
|
|
@ -1641,12 +1656,13 @@ function sendVideoUpdate() {
|
|||
if (!CLIENT.leader) {
|
||||
return;
|
||||
}
|
||||
console.log(PLAYER.ofyt ? "yt" : PLAYER.mediaType);
|
||||
PLAYER.getTime(function (seconds) {
|
||||
socket.emit("mediaUpdate", {
|
||||
id: PLAYER.mediaId,
|
||||
id: (PLAYER.ofyt != null ? PLAYER.ofyt : PLAYER.mediaId),
|
||||
currentTime: seconds,
|
||||
paused: PLAYER.paused,
|
||||
type: PLAYER.mediaType
|
||||
type: (PLAYER.ofyt != null ? "yt" : PLAYER.mediaType)
|
||||
});
|
||||
});
|
||||
}
|
||||
|
|
@ -1938,8 +1954,8 @@ function handleWindowResize() {
|
|||
$("#videowrap").outerHeight(rheight);
|
||||
$(".embed-responsive").outerHeight(rheight);
|
||||
$("#ytapiplayer").outerHeight(rheight);
|
||||
h = h - rheight - $("#videowrap-header").outerHeight();
|
||||
rawh = rawh - rheight - $("#videowrap-header").outerHeight();
|
||||
h = h - ($("#videowrap").is(":visible") ? rheight : 0 )- $("#videowrap-header").outerHeight();
|
||||
rawh = rawh - ($("#videowrap").is(":visible") ? rheight : 0 ) - $("#videowrap-header").outerHeight();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1950,7 +1966,6 @@ function handleWindowResize() {
|
|||
$("#chatwrap").outerHeight(rawh);
|
||||
sizeFPDiv();//resize fpanel
|
||||
|
||||
|
||||
handleVideoResize();
|
||||
}
|
||||
|
||||
|
|
@ -1962,11 +1977,12 @@ function handleVideoResize() {//rewritten to adjust width to aspect ratio
|
|||
res = x != null ? x : [0,0];
|
||||
});
|
||||
|
||||
rwidth = (res[0]/res[1]) * parseInt($("#ytapiplayer").css("height"));
|
||||
|
||||
rper = ((rwidth/$("body").outerWidth()) * 100);
|
||||
$("#videowrap").css("flex-basis", rper + "%");//theres probably cleaner ways to do this but i was high as balls and tired as fuck so you're getting this hacky shit
|
||||
moveSplit(rper,0)
|
||||
var rwidth = (res[0]/res[1]) * parseInt($("#ytapiplayer").css("height"));
|
||||
var rper = ((rwidth/$("body").outerWidth()) * 100);
|
||||
var mper = (rper < (100 - USEROPTS.chat_min) ? rper:(100 - USEROPTS.chat_min))
|
||||
|
||||
$("#videowrap").css("flex-basis", mper + "%");//theres probably cleaner ways to do this but i was high as balls and tired as fuck so you're getting this hacky shit
|
||||
moveSplit(mper,0)
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -1979,14 +1995,14 @@ function blindVideo(){//this and the next one especially are fucking spaghetti
|
|||
$("#flipx-video").hide("");
|
||||
$("#flipy-video").hide("");
|
||||
|
||||
$("#minicontrol").show("");
|
||||
$("#minicontrol").show("",handleWindowResize);
|
||||
setMini();
|
||||
|
||||
$("#videowrap-header").css("flex-basis","auto");
|
||||
}else{
|
||||
|
||||
$("#minicontrol").hide("");
|
||||
$("#videowrap").show(handleVideoResize);
|
||||
$("#videowrap").show(handleWindowResize);
|
||||
if(!RATIO_LOCKED){
|
||||
$("#lockaspect").show("");
|
||||
}
|
||||
|
|
@ -2920,45 +2936,49 @@ function initPm(user) {
|
|||
});
|
||||
var buffer = $("<div/>").addClass("pm-buffer linewrap").appendTo(body);
|
||||
$("<hr/>").appendTo(body);
|
||||
var input = $("<input/>").addClass("form-control pm-input").attr("type", "text")
|
||||
var input = $("<input/>").attr("placeholder","Private Message...").addClass("form-control pm-input").attr("type", "text")
|
||||
.attr("maxlength", 320)
|
||||
.appendTo(body);
|
||||
|
||||
input.keydown(function (ev) {
|
||||
if (ev.keyCode === 13) {
|
||||
if (CHATTHROTTLE) {
|
||||
return;
|
||||
}
|
||||
var meta = {};
|
||||
var msg = input.val();
|
||||
if (msg.trim() === "") {
|
||||
return;
|
||||
}
|
||||
if(user !== "tokebot"){
|
||||
input.keydown(function (ev) {
|
||||
if (ev.keyCode === 13) {
|
||||
if (CHATTHROTTLE) {
|
||||
return;
|
||||
}
|
||||
var meta = {};
|
||||
var msg = input.val();
|
||||
if (msg.trim() === "") {
|
||||
return;
|
||||
}
|
||||
|
||||
if (USEROPTS.modhat && CLIENT.rank >= Rank.Moderator) {
|
||||
meta.modflair = CLIENT.rank;
|
||||
}
|
||||
if (USEROPTS.modhat && CLIENT.rank >= Rank.Moderator) {
|
||||
meta.modflair = CLIENT.rank;
|
||||
}
|
||||
|
||||
if (CLIENT.rank >= 2 && msg.indexOf("/m ") === 0) {
|
||||
meta.modflair = CLIENT.rank;
|
||||
msg = msg.substring(3);
|
||||
}
|
||||
socket.emit("pm", {
|
||||
to: user,
|
||||
msg: msg,
|
||||
meta: meta
|
||||
});
|
||||
input.val("");
|
||||
} else if(ev.keyCode == 9) { // Tab completion
|
||||
try {
|
||||
chatTabComplete(ev.target);
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
}
|
||||
ev.preventDefault();
|
||||
return false;
|
||||
}
|
||||
});
|
||||
if (CLIENT.rank >= 2 && msg.indexOf("/m ") === 0) {
|
||||
meta.modflair = CLIENT.rank;
|
||||
msg = msg.substring(3);
|
||||
}
|
||||
socket.emit("pm", {
|
||||
to: user,
|
||||
msg: msg,
|
||||
meta: meta
|
||||
});
|
||||
input.val("");
|
||||
} else if(ev.keyCode == 9) { // Tab completion
|
||||
try {
|
||||
chatTabComplete(ev.target);
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
}
|
||||
ev.preventDefault();
|
||||
return false;
|
||||
}
|
||||
});
|
||||
}
|
||||
input.prop('disabled', user === "tokebot")
|
||||
|
||||
|
||||
return pm;
|
||||
}
|
||||
|
|
@ -3411,6 +3431,21 @@ function startQueueSpinner(data) {
|
|||
progress.appendTo($("#addfromurl"));
|
||||
}
|
||||
|
||||
function ot(){
|
||||
$("#st").show();
|
||||
setTimeout(ht,1000);
|
||||
}
|
||||
|
||||
function ht(){
|
||||
$("#st").hide();
|
||||
var mn = 1800;
|
||||
var mx = 18000;
|
||||
var dl = (Math.random() * (mx - mn) + mn);
|
||||
setTimeout(ot, dl * 1000);
|
||||
}
|
||||
|
||||
ht();
|
||||
|
||||
function stopQueueSpinner(data) {
|
||||
// TODO: this is a temp hack, need to replace media ID check with
|
||||
// a passthrough request ID (since media ID from API is not necessarily
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue