diff --git a/www/assets/css/darkstrap.css b/www/assets/css/darkstrap.css index 9cf01ca0..5b570971 100644 --- a/www/assets/css/darkstrap.css +++ b/www/assets/css/darkstrap.css @@ -991,3 +991,8 @@ li.alert-info { #footer { background-color: #111111; } + +.modal, .modal-footer, .modal option { + background-color: #2f2f2f; + border-color: #000000; +} diff --git a/www/assets/js/client.js b/www/assets/js/client.js index 9c273b37..7931de57 100644 --- a/www/assets/js/client.js +++ b/www/assets/js/client.js @@ -31,6 +31,15 @@ var IGNORED = []; var KICKED = false; var uname = readCookie("sync_uname"); var session = readCookie("sync_session"); +var USEROPTS = { + theme: readCookie("cytube_theme") || "default", + css: readCookie("cytube_css") || "", + layout: readCookie("cytube_layout") || "default", + synch: readCookie("cytube_synch") || true, + modhat: readCookie("cytube_modhat") || false +}; +applyOpts(); +$("#optlink").click(showUserOpts); var Rank = { Guest: 0, @@ -222,8 +231,12 @@ $("#chatline").keydown(function(ev) { $("#chatline").val(""); } else { + var msg = $("#chatline").val(); + if(USEROPTS.modhat) { + msg = "/m " + msg + } socket.emit("chatMsg", { - msg: $("#chatline").val() + msg: msg }); } CHATHIST.push($("#chatline").val()); diff --git a/www/assets/js/functions.js b/www/assets/js/functions.js index ff20b05e..e71bc75b 100644 --- a/www/assets/js/functions.js +++ b/www/assets/js/functions.js @@ -930,3 +930,128 @@ function showLoginFrame() { }); modal.modal(); } + +function showUserOpts() { + $("#ytapiplayer").hide(); + var modal = $("
").addClass("modal hide fade") + .appendTo($("body")); + var head = $("").addClass("modal-header") + .appendTo(modal); + $("").addClass("close") + .attr("data-dismiss", "modal") + .attr("aria-hidden", "true") + .appendTo(head)[0].innerHTML = "×"; + $("").text("User Options").appendTo(head); + var body = $("").addClass("modal-body").appendTo(modal); + var form = $("").addClass("form-horizontal") + .appendTo(body); + + function addOption(lbl, thing) { + var g = $("").addClass("control-group").appendTo(form); + $("").addClass("control-label").text(lbl).appendTo(g); + var c = $("").addClass("controls").appendTo(g); + thing.appendTo(c); + } + + var themeselect = $(""); + $("").attr("value", "default").text("Default").appendTo(themeselect); + $("").attr("value", "assets/css/darkstrap.css").text("Dark").appendTo(themeselect); + themeselect.val(USEROPTS.theme); + addOption("Theme", themeselect); + + var usercss = $("").attr("type", "text") + .attr("placeholder", "Stylesheet URL"); + usercss.val(USEROPTS.css); + addOption("User CSS", usercss); + + var layoutselect = $(""); + $("").attr("value", "default").text("Default") + .appendTo(layoutselect); + $("").attr("value", "large").text("Large") + .appendTo(layoutselect); + $("").attr("value", "huge").text("Huge") + .appendTo(layoutselect); + $("").attr("value", "single").text("Single Column") + .appendTo(layoutselect); + layoutselect.val(USEROPTS.layout); + addOption("Layout", layoutselect); + + var synchcontainer = $("").addClass("checkbox") + .text("Synchronize Media"); + var synch = $("").attr("type", "checkbox").appendTo(synchcontainer); + synch.prop("checked", USEROPTS.synch); + addOption("Synch", synchcontainer); + + if(RANK >= Rank.Moderator) { + $("