diff --git a/lib/channel-new.js b/lib/channel-new.js index 695a7807..c6977846 100644 --- a/lib/channel-new.js +++ b/lib/channel-new.js @@ -11,6 +11,7 @@ var ChatCommand = require("./chatcommand"); var fs = require("fs"); var path = require("path"); +var url = require("url"); var DEFAULT_FILTERS = [ new Filter("monospace", "`(.+?)`", "g", "$1"), @@ -889,8 +890,6 @@ Channel.prototype.sendBanlist = function (users) { return; } - console.log(banlist); - for (var i = 0; i < banlist.length; i++) { bans.push({ id: banlist[i].id, @@ -1496,6 +1495,10 @@ Channel.prototype.addMedia = function (data, callback) { media.pos = data.pos; media.queueby = data.queueby; media.temp = data.temp; + if (data.title && media.type === "cu") { + media.title = data.title; + } + var res = self.playlist.addMedia(media); if (res.error) { callback(res.error, null); @@ -1701,7 +1704,9 @@ Channel.prototype.handleQueuePlaylist = function (user, data) { * Handles a user message to delete a playlist item */ Channel.prototype.handleDelete = function (user, data) { - if (!this.hasPermission(user, "playlistdelete")) { + var self = this; + + if (!self.hasPermission(user, "playlistdelete")) { return; } @@ -1709,9 +1714,11 @@ Channel.prototype.handleDelete = function (user, data) { return; } - this.deleteMedia(data, function (err) { - if (!err) { - this.logger.log("### " + user.name + " deleted " + plitem.media.title); + var plitem = self.playlist.items.find(data); + + self.deleteMedia(data, function (err) { + if (!err && plitem && plitem.media) { + self.logger.log("### " + user.name + " deleted " + plitem.media.title); } }); }; diff --git a/lib/user.js b/lib/user.js index 7d2d4cda..d09fa97a 100644 --- a/lib/user.js +++ b/lib/user.js @@ -265,6 +265,7 @@ User.prototype.initChannelCallbacks = function () { }); wrapTypecheck("queue", function (data) { + console.log("queue", data); self.channel.handleQueue(self, data); }); @@ -276,7 +277,7 @@ User.prototype.initChannelCallbacks = function () { self.channel.handleMove(self, data); }); - wrapTypecheck("delete", function (data) { + wrap("delete", function (data) { self.channel.handleDelete(self, data); }); @@ -284,8 +285,8 @@ User.prototype.initChannelCallbacks = function () { self.channel.handleUncache(self, data); }); - wrapTypecheck("jumpto", function (data) { - self.channel.handleJump(self, data); + wrap("jumpTo", function (data) { + self.channel.handleJumpTo(self, data); }); wrap("playNext", function () { diff --git a/templates/channel.jade b/templates/channel.jade index 29dfff1e..b8dfaeb3 100644 --- a/templates/channel.jade +++ b/templates/channel.jade @@ -119,14 +119,16 @@ html(lang="en") #customembed.collapse.plcontrol-collapse.col-lg-12.col-md-12 .vertical-spacer .input-group - input#customembed_title.form-control(type="text", placeholder="Title (optional)") + input#customembed-title.form-control(type="text", placeholder="Title (optional)") span.input-group-btn button#ce_queue_next.btn.btn-default Next span.input-group-btn button#ce_queue_end.btn.btn-default At End | Paste the embed code below and click Next or At End. | Acceptable embed codes are <iframe> and <object> tags. - textarea#customembed_code.input-block-level.form-control(rows="3") + textarea#customembed-content.input-block-level.form-control(rows="3") + #queuefail.col-lg-12.col-md-12 + .vertical-spacer .col-lg-12.col-md-12 #queue.videolist #plmeta diff --git a/www/assets/js/callbacks.js b/www/assets/js/callbacks.js index 20f1bb76..ad5005cc 100644 --- a/www/assets/js/callbacks.js +++ b/www/assets/js/callbacks.js @@ -796,12 +796,12 @@ Callbacks = { : "Added by: Unknown"); if (data.after === "prepend") { li.prependTo(q); - li.show("blind", function () { + li.show("fade", function () { plq.release(); }); } else if (data.after === "append") { li.appendTo(q); - li.show("blind", function () { + li.show("fade", function () { plq.release(); }); } else { @@ -811,7 +811,7 @@ Callbacks = { return; } li.insertAfter(liafter); - li.show("blind", function () { + li.show("fade", function () { plq.release(); }); } @@ -854,7 +854,7 @@ Callbacks = { PL_ACTION_QUEUE.queue(function (plq) { PL_WAIT_SCROLL = true; var li = $(".pluid-" + data.uid); - li.hide("blind", function() { + li.hide("fade", function() { li.remove(); plq.release(); PL_WAIT_SCROLL = false; diff --git a/www/assets/js/ui.js b/www/assets/js/ui.js index 808de193..6f3ff4f3 100644 --- a/www/assets/js/ui.js +++ b/www/assets/js/ui.js @@ -270,65 +270,56 @@ $("#queue").sortable({ }); $("#queue").disableSelection(); -// TODO no more comma separated queueing. -function queue(pos) { - if($("#customembed_code").val()) { - var title = false; - if($("#customembed_title").val()) { - title = $("#customembed_title").val(); - } - socket.emit("queue", { - id: $("#customembed_code").val(), - title: title, - type: "cu", - pos: pos - }); - $("#customembed_code").val(""); - $("#customembed_title").val(""); - return; +function queue(pos, src) { + if (!src) { + src = "url"; } - var links = $("#mediaurl").val().split(","); - var parsed = []; - links.forEach(function(link) { - var data = parseMediaLink(link); - if(data.id === null || data.type === null) { - makeAlert("Error", "Invalid link. Please double check it and remove extraneous information", "alert-danger") - .insertBefore($("#extended_controls")); - } - else { - $("#mediaurl").val(""); - } - parsed.push({ - id: data.id, - type: data.type - }); - }); - if(parsed.length > 1) { + if (src === "customembed") { + var title = $("#customembed-title").val(); + if (!title) { + title = false; + } + var content = $("#customembed-content").val(); + socket.emit("queue", { - id: false, - list: parsed, - type: "list", - pos: pos + id: content, + title: title, + pos: pos, + type: "cu" }); - } - else { - parsed[0].pos = pos; - socket.emit("queue", parsed[0]); + } else { + var link = $("#mediaurl").val(); + var data = parseMediaLink(link); + if (data.id == null || data.type == null) { + makeAlert("Error", "Failed to parse link. Please check that it is correct", + "alert-danger") + .insertAfter($("#addfromurl")); + } else { + $("#mediaurl").val(""); + socket.emit("queue", { + id: data.id, + type: data.type, + pos: pos + }); + } } } -$("#queue_next").click(function() { - queue("next"); -}); - -$("#queue_end").click(function() { - queue("end"); -}); +$("#queue_next").click(queue.bind(this, "next", "url")); +$("#queue_end").click(queue.bind(this, "end", "url")); +$("#ce_queue_next").click(queue.bind(this, "next", "customembed")); +$("#ce_queue_end").click(queue.bind(this, "end", "customembed")); $("#mediaurl").keydown(function(ev) { - if(ev.keyCode == 13) { - queue("end"); + if (ev.keyCode === 13) { + queue("end", "url"); + } +}); + +$("#customembed-content").keydown(function(ev) { + if (ev.keyCode === 13) { + queue("end", "customembed"); } }); @@ -341,13 +332,6 @@ $("#voteskip").click(function() { $("#voteskip").attr("disabled", true); }); -$("#customembed_btn").click(function () { - if($("#customembed_entry").css("display") == "none") - $("#customembed_entry").show("blind"); - else - $("#customembed_entry").hide("blind"); -}); - $("#getplaylist").click(function() { var callback = function(data) { hidePlayer(); diff --git a/www/assets/js/util.js b/www/assets/js/util.js index 4999e0b2..30f968ae 100644 --- a/www/assets/js/util.js +++ b/www/assets/js/util.js @@ -21,7 +21,7 @@ function makeAlert(title, text, klass) { $("").text(title).prependTo(al); $("