').insertAfter("#wrapper"),$(".prev_page").css("display","none"),$(".next_page").css("display","none"),$(".last_page").css("display","none"),$(".first_page").css("display","none"),$(".next_page_hide").css("display","inline-flex"),$(".prev_page_hide").css("display","inline-flex")),m.dynamicContentPage(-10)):(m.empty=!0,$("#wrapper").html("The playlist is empty."),$("#pageButtons").length||$('
').insertAfter("#wrapper"),$(".prev_page").css("display","none"),$(".next_page").css("display","none"),$(".last_page").css("display","none"),$(".first_page").css("display","none"),$(".next_page_hide").css("display","inline-flex"),$(".prev_page_hide").css("display","inline-flex")),h.dynamicContentPage(-10)):(h.empty=!0,$("#wrapper").html("The playlist is empty."),$("#pageButtons").length||$('
");a.find(".extra-add-text").attr("value",t),a.find(".extra-add-text").attr("title",t),$(".not-exported-container").append(a.html())}),$(".not-exported").removeClass("hide"),$(".spotify_export_button").css("display","block")}}})},addToSpotifyPlaylist:function(e,t,a){$.ajax({type:"POST",url:"https://api.spotify.com/v1/users/"+a+"/playlists/"+t+"/tracks",headers:{Authorization:"Bearer "+access_token_data.access_token,"Content-Type":"application/json"},data:JSON.stringify({uris:e}),error:function(i){var n=t,s=e,l=a;setTimeout(function(){h.addToSpotifyPlaylist(s,n,l)},3e3)},success:function(e){o.log("Added songs")}})},exportToYoutube:function(){$(".exported-list-container").removeClass("hide"),$("#playlist_loader_export").removeClass("hide"),$.ajax({type:"POST",url:"https://www.googleapis.com/youtube/v3/playlists?part=snippet",headers:{Authorization:"Bearer "+access_token_data_youtube.access_token,"Content-Type":"application/json"},data:JSON.stringify({snippet:{title:o.upperFirst(P.toLowerCase()),description:"Playlist exported from zoff"}}),success:function(e){var t=e.id;h.addToYoutubePlaylist(t,full_playlist,0,"https://www.googleapis.com/youtube/v3/playlistItems?part=snippet")},error:function(e){o.log(e)}})},addToYoutubePlaylist:function(e,t,a,i){var n=JSON.stringify({snippet:{playlistId:e,resourceId:{kind:"youtube#video",videoId:t[a].id}}});$.ajax({type:"POST",url:i,headers:{Authorization:"Bearer "+access_token_data_youtube.access_token,"Content-Type":"application/json"},data:n,success:function(n){o.log("Added video: "+t[a].id+" to playlist id "+e),a==t.length-1?(o.log("All videoes added!"),o.log("url: https://www.youtube.com/playlist?list="+e),$(".exported-list").append(""+P+""),$("#playlist_loader_export").addClass("hide"),$(".current_number").addClass("hide")):($(".current_number").removeClass("hide"),$(".current_number").text(a+1+" of "+t.length),h.addToYoutubePlaylist(e,t,a+1,i))}})},importOldList:function(e){var t="",a=0;playlist_url="lists/"+e+".json",list=$.parseJSON($.ajax({type:"GET",url:playlist_url,async:!1}).responseText),$.each(list.songs,function(e,i){t+=i.id+",",a>45&&(Search.addVideos(t),t="",a=0),a++}),Search.addVideos(t),document.getElementById("search").value=""},sortList:function(){full_playlist.sort(o.predicate({name:"votes",reverse:!0},{name:"added",reverse:!1},{name:"title",reverse:!1}))},show:function(){o.mobilecheck()||(showToggle?(showToggle=!1,$("#toptitle").empty(),$("#chan").addClass("bigChan"),$("#chan").html("zoff.me/"+P.toLowerCase())):(showToggle=!0,$("#toptitle").html("Zoff"),$("#chan").removeClass("bigChan"),$("#chan").html(P)))},generateSong:function(e,t,a,i,n,s,l){void 0===v&&(v=$("#list-song-html").html());var r,p,d=e.id,c=e.title,g=e.votes,u="background-image:url('//img.youtube.com/vi/"+d+"/mqdefault.jpg');",f=$("
"+v+"
"),m="style";if(t&&(f.find(".list-song").css("transform","translateX(100%)"),f.find(".list-song").addClass("side_away")),f.find(".list-song").css("height",h.element_height),w||f.find(".card-action").removeClass("hide"),1==g&&f.find(".vote-text").text("vote"),a&&(u="//img.youtube.com/vi/"+d+"/mqdefault.jpg",m="data-original"),i){f.find(".list-votes").text(g),f.find("#list-song").attr("data-video-id",d),f.find("#list-song").attr("data-video-type","song"),f.find("#list-song").attr("id",d),f.find(".vote-container").attr("title",c),($("#wrapper").children().length>=h.can_fit&&l||"none"==s)&&f.find(".card").css("display","none"),r=".vote-container",p="delete_button";var y=o.secondsToOther(e.duration);f.find(".card-duration").text(o.pad(y[0])+":"+o.pad(y[1]))}else if(!i){f.find(".suggested_remove").removeClass("hide"),f.find(".vote-text").text(""),f.find(".card-duration").text(o.pad(e.duration[0])+":"+o.pad(e.duration[1]));var _="user";r=".add-suggested",n?p="del_user_suggested":(p="del_suggested",_="system"),f.find(".vote-container").attr("class","clickable add-suggested"),f.find(".add-suggested").attr("title",c),f.find(".delete_button").addClass(p),f.find(r).attr("data-video-title",c),f.find(r).attr("data-video-length",e.length),f.find(r).attr("data-added-by",_),f.find("#list-song").attr("data-video-type","suggested"),f.find("#list-song").attr("data-video-id",d),f.find("#list-song").attr("id","suggested-"+d),f.find(".list-image").attr("class",f.find(".list-image").attr("class").replace("list-image","list-suggested-image"))}return o.mobilecheck()?(f.find(".waves-effect").removeClass("waves-effect"),f.find(".waves-light").removeClass("waves-light"),f.find(".list-song").addClass("mobile-overflow")):f.find(".mobile-delete").remove(),f.find(".list-title").text(c),f.find(".list-title").attr("title",c),f.find(r).attr("data-video-id",d),f.find(".list-image").attr(m,u),f.find(".list-suggested-image").attr(m,u),f.find("."+p).attr("data-video-id",d),f.html()},getIndexOfSong:function(e){try{return indexes=$.map(full_playlist,function(t,a){if(t.id==e)return a}),indexes[0]}catch(e){}},scrollTop:function(){$("#wrapper").scrollTop(0)},scrollBottom:function(){$("#wrapper").scrollTop($("#wrapper")[0].scrollHeight)}},m="",y=!1,_=!1,v=$("#list-song-html").html(),w=!0,x=!1,C=!0,k=100,S="",T=!1,I=!1,M=!1,E=!1,V=!1,B=!1,N=!1,L=window.location.hash.substring(1).split("&"),P=L[0],A=!1,O="#808080",j=!1,z=!1,Y=!1,R={"sync disconnect on unload":!0,secure:!0,"force new connection":!0},q={crypt_pass:function(e){return e}};window.addEventListener("message",e,!1),$(document).ready(function(){L.length>=3&&"autoplay"==L[2]?A=!0:y=!0,L.indexOf("videoonly")>-1&&($("#playlist").addClass("hide"),$("#controls").addClass("hide"),$("#player").addClass("video_only")),$("#locked_channel").modal({dismissible:!1}),O="#"+L[1],add="https://zoff.me",d=io.connect(add+":8080",R),d.on("auth_required",function(){$("#locked_channel").modal("open")}),d.on("get_list",function(){setTimeout(function(){d.emit("list",{channel:P.toLowerCase(),pass:""})},1e3)}),d.on("viewers",function(e){viewers=e,void 0!==m&&l.getTitle(m,viewers)}),a(),i(),n(),window.onYouTubeIframeAPIReady=l.onYouTubeIframeAPIReady,l.loadPlayer(),f.initSlider(),window.setVolume=s,$("#controls").css("background-color",O),$("#playlist").css("background-color",O),L.indexOf("controll")>-1?D.change_enabled(!0):D.change_enabled(!1)}),$(document).on("click","#zoffbutton",function(e){window.open("https://zoff.me/"+P.toLowerCase()+"/","_blank")}),$(document).on("click",".vote-container",function(e){var t=$(this).attr("data-video-id");h.vote(t,"pos")}),$(document).on("click",".prev_page",function(e){e.preventDefault(),h.dynamicContentPage(-1)}),$(document).on("click",".next_page",function(e){e.preventDefault(),h.dynamicContentPage(1)});var D={enabled:!0,old_id:null,host_listener:function(e){null===D.old_id?D.old_id=e:(d.removeAllListeners(e),B=!1,D.old_id=e),C&&window.parentWindow&&window.parentOrigin&&window.parentWindow.postMessage({type:"controller",id:e},window.parentOrigin);var a="https://remote."+window.location.hostname+"/"+e;$("#code-text").text(e),$("#code-qr").attr("src","https://chart.googleapis.com/chart?chs=221x221&cht=qr&choe=UTF-8&chld=L|1&chl="+a),$("#code-link").attr("href",a),B||(B=!0,t(e))},host_on_action:function(e){if(enabled)if("volume"==e.type)$("#volume").slider("value",e.value),l.player.setVolume(e.value),localStorage.setItem("volume",e.value),f.choose_button(e.value,!1);else if("channel"==e.type){d.emit("change_channel"),Admin.beginning=!0,P=e.value.toLowerCase(),$("#chan").html(o.upperFirst(P)),w=!0;var t="";E&&(t=q.getCookie("_uI")+"_"),d.emit("list",{channel:t+P.toLowerCase(),pass:C?"":q.crypt_pass(q.get_userpass(P.toLowerCase()))}),window.history.pushState("object or string","Title","/"+P.toLowerCase())}else"pause"==e.type?l.pauseVideo():"play"==e.type?l.playVideo():"skip"==e.type&&h.skip()},change_enabled:function(e){enabled=e,$(".remote_switch_class").prop("checked",enabled)}}}();
\ No newline at end of file
diff --git a/server/public/assets/js/admin.js b/server/public/assets/js/admin.js
index 7cc18e6e..06b6ee64 100755
--- a/server/public/assets/js/admin.js
+++ b/server/public/assets/js/admin.js
@@ -71,7 +71,7 @@ var Admin = {
$("#playlist_loader_spotify").addClass("hide");
}
$("#import_spotify").removeClass("hide");
- $("#import").removeClass("hide");
+ $("#import").removeClass("hide");
break;
case "noskip":
msg=Helper.rnd(["Only Admins can skip songs, peasant!", "You have to log in to skip songs on this channel", "Try clicking the settings icon and logging in before you skip"]);
diff --git a/server/public/layouts/main.handlebars b/server/public/layouts/main.handlebars
index 594f0aef..64016eb4 100644
--- a/server/public/layouts/main.handlebars
+++ b/server/public/layouts/main.handlebars
@@ -64,6 +64,7 @@