Continue work on clientside
This commit is contained in:
parent
5c40a72d47
commit
afff414aad
|
|
@ -181,5 +181,6 @@ html(lang="en")
|
||||||
// $('#channeloptions a[href="#cs-miscoptions"]').tab('show');
|
// $('#channeloptions a[href="#cs-miscoptions"]').tab('show');
|
||||||
script(src="/assets/js/data.js")
|
script(src="/assets/js/data.js")
|
||||||
script(src="/assets/js/util.js")
|
script(src="/assets/js/util.js")
|
||||||
|
script(src="/assets/js/paginator.js")
|
||||||
script(src="/assets/js/ui.js")
|
script(src="/assets/js/ui.js")
|
||||||
script(src="/assets/js/callbacks.js")
|
script(src="/assets/js/callbacks.js")
|
||||||
|
|
|
||||||
|
|
@ -619,6 +619,10 @@ Callbacks = {
|
||||||
/* REGION Rank Stuff */
|
/* REGION Rank Stuff */
|
||||||
|
|
||||||
rank: function(r) {
|
rank: function(r) {
|
||||||
|
if (r > -1) {
|
||||||
|
$("#guestlogin").hide();
|
||||||
|
$("#chatline").show();
|
||||||
|
}
|
||||||
if(r >= 255)
|
if(r >= 255)
|
||||||
SUPERADMIN = true;
|
SUPERADMIN = true;
|
||||||
CLIENT.rank = r;
|
CLIENT.rank = r;
|
||||||
|
|
@ -657,13 +661,6 @@ Callbacks = {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
/* should not be relevant since registration is on account.html */
|
|
||||||
register: function(data) {
|
|
||||||
if(data.error) {
|
|
||||||
alert(data.error);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
login: function(data) {
|
login: function(data) {
|
||||||
if(!data.success) {
|
if(!data.success) {
|
||||||
if(data.error != "Session expired") {
|
if(data.error != "Session expired") {
|
||||||
|
|
@ -671,17 +668,8 @@ Callbacks = {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$("#welcome").text("Logged in as " + data.name);
|
|
||||||
$("#loginform").css("display", "none");
|
|
||||||
$("#logoutform").css("display", "");
|
|
||||||
$("#loggedin").css("display", "");
|
|
||||||
SESSION = data.session || "";
|
|
||||||
CLIENT.name = data.name;
|
CLIENT.name = data.name;
|
||||||
CLIENT.logged_in = true;
|
CLIENT.logged_in = true;
|
||||||
if(SESSION) {
|
|
||||||
createCookie("cytube_uname", CLIENT.name, 7);
|
|
||||||
createCookie("cytube_session", SESSION, 7);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
@ -709,7 +697,7 @@ Callbacks = {
|
||||||
},
|
},
|
||||||
|
|
||||||
userlist: function(data) {
|
userlist: function(data) {
|
||||||
$(".userlist_item").each(function() { $(this).remove(); });
|
$(".userlist_item").remove();
|
||||||
for(var i = 0; i < data.length; i++) {
|
for(var i = 0; i < data.length; i++) {
|
||||||
Callbacks.addUser(data[i]);
|
Callbacks.addUser(data[i]);
|
||||||
}
|
}
|
||||||
|
|
@ -722,11 +710,11 @@ Callbacks = {
|
||||||
user.remove();
|
user.remove();
|
||||||
var div = $("<div/>")
|
var div = $("<div/>")
|
||||||
.addClass("userlist_item");
|
.addClass("userlist_item");
|
||||||
var flair = $("<span/>").appendTo(div);
|
var icon = $("<span/>").appendTo(div);
|
||||||
var nametag = $("<span/>").text(data.name).appendTo(div);
|
var nametag = $("<span/>").text(data.name).appendTo(div);
|
||||||
div.data("name", data.name);
|
div.data("name", data.name);
|
||||||
div.data("rank", data.rank);
|
div.data("rank", data.rank);
|
||||||
div.data("leader", false);
|
div.data("leader", Boolean(data.leader));
|
||||||
div.data("profile", data.profile);
|
div.data("profile", data.profile);
|
||||||
div.data("icon", data.meta.icon);
|
div.data("icon", data.meta.icon);
|
||||||
div.data("afk", data.meta.afk);
|
div.data("afk", data.meta.afk);
|
||||||
|
|
@ -746,7 +734,7 @@ Callbacks = {
|
||||||
|
|
||||||
setLeader: function (name) {
|
setLeader: function (name) {
|
||||||
$(".userlist_item").each(function () {
|
$(".userlist_item").each(function () {
|
||||||
$(this).find(".icon-star-empty").remove();
|
$(this).find(".glyphicon-star-empty").remove();
|
||||||
if ($(this).data("leader")) {
|
if ($(this).data("leader")) {
|
||||||
$(this).data("leader", false);
|
$(this).data("leader", false);
|
||||||
addUserDropdown($(this));
|
addUserDropdown($(this));
|
||||||
|
|
@ -808,43 +796,6 @@ Callbacks = {
|
||||||
formatUserlistItem(user);
|
formatUserlistItem(user);
|
||||||
},
|
},
|
||||||
|
|
||||||
/* DEPRECATED
|
|
||||||
SEE:
|
|
||||||
- setUserIcon
|
|
||||||
- setAFK
|
|
||||||
- setLeader
|
|
||||||
- setUserProfile
|
|
||||||
- setUserRank
|
|
||||||
*/
|
|
||||||
updateUser: function(data) {
|
|
||||||
if(data.name == CLIENT.name) {
|
|
||||||
CLIENT.leader = data.leader;
|
|
||||||
CLIENT.rank = data.rank;
|
|
||||||
handlePermissionChange();
|
|
||||||
if(CLIENT.leader) {
|
|
||||||
// I'm a leader! Set up sync function
|
|
||||||
if(LEADTMR)
|
|
||||||
clearInterval(LEADTMR);
|
|
||||||
LEADTMR = setInterval(sendVideoUpdate, 5000);
|
|
||||||
}
|
|
||||||
// I'm not a leader. Don't send syncs to the server
|
|
||||||
else {
|
|
||||||
if(LEADTMR)
|
|
||||||
clearInterval(LEADTMR);
|
|
||||||
LEADTMR = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
var user = findUserlistItem(data.name);
|
|
||||||
if(user !== null) {
|
|
||||||
user.data("rank", data.rank);
|
|
||||||
formatUserlistItem(user, data);
|
|
||||||
addUserDropdown(user, data);
|
|
||||||
if(USEROPTS.sort_rank)
|
|
||||||
sortUserlist();
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
setAFK: function (data) {
|
setAFK: function (data) {
|
||||||
var user = findUserlistItem(data.name);
|
var user = findUserlistItem(data.name);
|
||||||
if(user === null)
|
if(user === null)
|
||||||
|
|
@ -940,7 +891,7 @@ Callbacks = {
|
||||||
},
|
},
|
||||||
|
|
||||||
queueFail: function (data) {
|
queueFail: function (data) {
|
||||||
queueMessage(data, "alert-error");
|
queueMessage(data, "alert-danger");
|
||||||
},
|
},
|
||||||
|
|
||||||
setTemp: function(data) {
|
setTemp: function(data) {
|
||||||
|
|
@ -1038,16 +989,16 @@ Callbacks = {
|
||||||
.addClass("btn-success")
|
.addClass("btn-success")
|
||||||
.attr("title", "Playlist Unlocked");
|
.attr("title", "Playlist Unlocked");
|
||||||
$("#qlockbtn").find("i")
|
$("#qlockbtn").find("i")
|
||||||
.removeClass("icon-lock")
|
.removeClass("glyphicon-lock")
|
||||||
.addClass("icon-ok");
|
.addClass("glyphicon-ok");
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$("#qlockbtn").removeClass("btn-success")
|
$("#qlockbtn").removeClass("btn-success")
|
||||||
.addClass("btn-danger")
|
.addClass("btn-danger")
|
||||||
.attr("title", "Playlist Locked");
|
.attr("title", "Playlist Locked");
|
||||||
$("#qlockbtn").find("i")
|
$("#qlockbtn").find("i")
|
||||||
.removeClass("icon-ok")
|
.removeClass("glyphicon-ok")
|
||||||
.addClass("icon-lock");
|
.addClass("glyphicon-lock");
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
@ -1055,8 +1006,7 @@ Callbacks = {
|
||||||
$("#search_clear").remove();
|
$("#search_clear").remove();
|
||||||
clearSearchResults();
|
clearSearchResults();
|
||||||
$("#library").data("entries", data.results);
|
$("#library").data("entries", data.results);
|
||||||
$("<button/>").addClass("btn btn-block")
|
$("<button/>").addClass("btn btn-default btn-sm btn-block")
|
||||||
.addClass("span12")
|
|
||||||
.css("margin-left", "0")
|
.css("margin-left", "0")
|
||||||
.attr("id", "search_clear")
|
.attr("id", "search_clear")
|
||||||
.text("Clear Results")
|
.text("Clear Results")
|
||||||
|
|
@ -1102,7 +1052,7 @@ Callbacks = {
|
||||||
.appendTo(poll)
|
.appendTo(poll)
|
||||||
.click(function() { poll.remove(); });
|
.click(function() { poll.remove(); });
|
||||||
if(hasPermission("pollctl")) {
|
if(hasPermission("pollctl")) {
|
||||||
$("<button/>").addClass("btn btn-danger pull-right").text("End Poll")
|
$("<button/>").addClass("btn btn-danger btn-sm pull-right").text("End Poll")
|
||||||
.appendTo(poll)
|
.appendTo(poll)
|
||||||
.click(function() {
|
.click(function() {
|
||||||
socket.emit("closePoll")
|
socket.emit("closePoll")
|
||||||
|
|
@ -1121,7 +1071,7 @@ Callbacks = {
|
||||||
});
|
});
|
||||||
$(this).parent().addClass("option-selected");
|
$(this).parent().addClass("option-selected");
|
||||||
}
|
}
|
||||||
$("<button/>").addClass("btn").text(data.counts[i])
|
$("<button/>").addClass("btn btn-default btn-sm").text(data.counts[i])
|
||||||
.prependTo($("<div/>").addClass("option").html(data.options[i])
|
.prependTo($("<div/>").addClass("option").html(data.options[i])
|
||||||
.appendTo(poll))
|
.appendTo(poll))
|
||||||
.click(callback);
|
.click(callback);
|
||||||
|
|
@ -1159,7 +1109,7 @@ Callbacks = {
|
||||||
makeAlert("Success", "Playlist saved.", "alert-success");
|
makeAlert("Success", "Playlist saved.", "alert-success");
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
makeAlert("Error", data.error, "alert-error")
|
makeAlert("Error", data.error, "alert-danger")
|
||||||
.addClass("span12")
|
.addClass("span12")
|
||||||
.insertBefore($("#userpl_list"));
|
.insertBefore($("#userpl_list"));
|
||||||
}
|
}
|
||||||
|
|
@ -1167,8 +1117,7 @@ Callbacks = {
|
||||||
|
|
||||||
listPlaylists: function(data) {
|
listPlaylists: function(data) {
|
||||||
if(data.error) {
|
if(data.error) {
|
||||||
makeAlert("Error", data.error, "alert-error")
|
makeAlert("Error", data.error, "alert-danger")
|
||||||
.addClass("span12")
|
|
||||||
.insertBefore($("#userpl_list"));
|
.insertBefore($("#userpl_list"));
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|
@ -1200,9 +1149,9 @@ Callbacks = {
|
||||||
.css("float", "left")
|
.css("float", "left")
|
||||||
.prependTo(li);
|
.prependTo(li);
|
||||||
var del = $("<button/>")
|
var del = $("<button/>")
|
||||||
.addClass("btn btn-mini btn-danger")
|
.addClass("btn btn-xs btn-danger")
|
||||||
.prependTo(bg);
|
.prependTo(bg);
|
||||||
$("<i/>").addClass("icon-trash").appendTo(del);
|
$("<span/>").addClass("glyphicon glyphicon-trash").appendTo(del);
|
||||||
(function(li) {
|
(function(li) {
|
||||||
del.click(function() {
|
del.click(function() {
|
||||||
var go = confirm("Are you sure you want to delete playlist '" + li.data("pl-name") + "'?");
|
var go = confirm("Are you sure you want to delete playlist '" + li.data("pl-name") + "'?");
|
||||||
|
|
@ -1215,7 +1164,7 @@ Callbacks = {
|
||||||
})(li);
|
})(li);
|
||||||
if(hasPermission("playlistaddlist")) {
|
if(hasPermission("playlistaddlist")) {
|
||||||
(function(li) {
|
(function(li) {
|
||||||
$("<button/>").addClass("btn btn-mini")
|
$("<button/>").addClass("btn btn-xs btn-default")
|
||||||
.text("End")
|
.text("End")
|
||||||
.prependTo(bg)
|
.prependTo(bg)
|
||||||
.click(function() {
|
.click(function() {
|
||||||
|
|
@ -1228,7 +1177,7 @@ Callbacks = {
|
||||||
|
|
||||||
if(hasPermission("playlistnext")) {
|
if(hasPermission("playlistnext")) {
|
||||||
(function(li) {
|
(function(li) {
|
||||||
$("<button/>").addClass("btn btn-mini")
|
$("<button/>").addClass("btn btn-xs btn-default")
|
||||||
.text("Next")
|
.text("Next")
|
||||||
.prependTo(bg)
|
.prependTo(bg)
|
||||||
.click(function() {
|
.click(function() {
|
||||||
|
|
|
||||||
|
|
@ -53,6 +53,8 @@ function formatURL(data) {
|
||||||
return "http://imgur.com/a/" + data.id;
|
return "http://imgur.com/a/" + data.id;
|
||||||
case "us":
|
case "us":
|
||||||
return "http://ustream.tv/" + data.id;
|
return "http://ustream.tv/" + data.id;
|
||||||
|
case "gd":
|
||||||
|
return data.id;
|
||||||
default:
|
default:
|
||||||
return "#";
|
return "#";
|
||||||
}
|
}
|
||||||
|
|
@ -117,18 +119,18 @@ function formatUserlistItem(div) {
|
||||||
name.mouseleave(function() {
|
name.mouseleave(function() {
|
||||||
profile.remove();
|
profile.remove();
|
||||||
});
|
});
|
||||||
var flair = div.children()[0];
|
var icon = div.children()[0];
|
||||||
flair.innerHTML = "";
|
icon.innerHTML = "";
|
||||||
// denote current leader with a star
|
// denote current leader with a star
|
||||||
if(data.leader) {
|
if(data.leader) {
|
||||||
$("<i/>").addClass("icon-star-empty").appendTo(flair);
|
$("<span/>").addClass("glyphicon glyphicon-star-empty").appendTo(icon);
|
||||||
}
|
}
|
||||||
if(data.afk) {
|
if(data.afk) {
|
||||||
name.css("font-style", "italic");
|
name.css("font-style", "italic");
|
||||||
$("<i/>").addClass("icon-time").appendTo(flair);
|
$("<span/>").addClass("glyphicon glyphicon-time").appendTo(icon);
|
||||||
}
|
}
|
||||||
if (data.icon) {
|
if (data.icon) {
|
||||||
$("<i/>").addClass(data.icon).prependTo(flair);
|
$("<span/>").addClass(data.icon).prependTo(icon);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -165,7 +167,7 @@ function addUserDropdown(entry) {
|
||||||
*/
|
*/
|
||||||
if(CLIENT.rank >= 3 && CLIENT.rank > rank && rank > 0 && rank != 1.5) {
|
if(CLIENT.rank >= 3 && CLIENT.rank > rank && rank > 0 && rank != 1.5) {
|
||||||
var sel = $("<select/>")
|
var sel = $("<select/>")
|
||||||
.addClass("input-block-level")
|
.addClass("form-control")
|
||||||
.appendTo(menu);
|
.appendTo(menu);
|
||||||
$("<option/>").attr("value", "1").text("Regular User")
|
$("<option/>").attr("value", "1").text("Regular User")
|
||||||
.appendTo(sel);
|
.appendTo(sel);
|
||||||
|
|
@ -190,7 +192,7 @@ function addUserDropdown(entry) {
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ignore button */
|
/* ignore button */
|
||||||
var ignore = $("<button/>").addClass("btn btn-mini btn-block")
|
var ignore = $("<button/>").addClass("btn btn-xs btn-default btn-block")
|
||||||
.appendTo(menu)
|
.appendTo(menu)
|
||||||
.click(function () {
|
.click(function () {
|
||||||
if(IGNORED.indexOf(name) == -1) {
|
if(IGNORED.indexOf(name) == -1) {
|
||||||
|
|
@ -209,7 +211,7 @@ function addUserDropdown(entry) {
|
||||||
|
|
||||||
/* gib/remove leader (moderator+ only) */
|
/* gib/remove leader (moderator+ only) */
|
||||||
if(CLIENT.rank >= 2) {
|
if(CLIENT.rank >= 2) {
|
||||||
var ldr = $("<button/>").addClass("btn btn-mini btn-block")
|
var ldr = $("<button/>").addClass("btn btn-xs btn-default btn-block")
|
||||||
.appendTo(menu);
|
.appendTo(menu);
|
||||||
if(leader) {
|
if(leader) {
|
||||||
ldr.text("Remove Leader");
|
ldr.text("Remove Leader");
|
||||||
|
|
@ -230,7 +232,7 @@ function addUserDropdown(entry) {
|
||||||
|
|
||||||
/* kick button */
|
/* kick button */
|
||||||
if(hasPermission("kick")) {
|
if(hasPermission("kick")) {
|
||||||
$("<button/>").addClass("btn btn-mini btn-block")
|
$("<button/>").addClass("btn btn-xs btn-default btn-block")
|
||||||
.text("Kick")
|
.text("Kick")
|
||||||
.click(function () {
|
.click(function () {
|
||||||
socket.emit("chatMsg", {
|
socket.emit("chatMsg", {
|
||||||
|
|
@ -242,7 +244,7 @@ function addUserDropdown(entry) {
|
||||||
|
|
||||||
/* ban buttons */
|
/* ban buttons */
|
||||||
if(hasPermission("ban")) {
|
if(hasPermission("ban")) {
|
||||||
$("<button/>").addClass("btn btn-mini btn-block")
|
$("<button/>").addClass("btn btn-xs btn-default btn-block")
|
||||||
.text("Name Ban")
|
.text("Name Ban")
|
||||||
.click(function () {
|
.click(function () {
|
||||||
socket.emit("chatMsg", {
|
socket.emit("chatMsg", {
|
||||||
|
|
@ -250,7 +252,7 @@ function addUserDropdown(entry) {
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
.appendTo(menu);
|
.appendTo(menu);
|
||||||
$("<button/>").addClass("btn btn-mini btn-block")
|
$("<button/>").addClass("btn btn-xs btn-default btn-block")
|
||||||
.text("IP Ban")
|
.text("IP Ban")
|
||||||
.click(function () {
|
.click(function () {
|
||||||
socket.emit("chatMsg", {
|
socket.emit("chatMsg", {
|
||||||
|
|
@ -323,8 +325,8 @@ function sortUserlist() {
|
||||||
list.sort(function (a, b) {
|
list.sort(function (a, b) {
|
||||||
var r1 = $(a).data("rank");
|
var r1 = $(a).data("rank");
|
||||||
var r2 = $(b).data("rank");
|
var r2 = $(b).data("rank");
|
||||||
var afk1 = $(a).find(".icon-time").length > 0;
|
var afk1 = $(a).find(".glyphicon-time").length > 0;
|
||||||
var afk2 = $(b).find(".icon-time").length > 0;
|
var afk2 = $(b).find(".glyphicon-time").length > 0;
|
||||||
var name1 = a.children[1].innerHTML.toLowerCase();
|
var name1 = a.children[1].innerHTML.toLowerCase();
|
||||||
var name2 = b.children[1].innerHTML.toLowerCase();
|
var name2 = b.children[1].innerHTML.toLowerCase();
|
||||||
|
|
||||||
|
|
@ -422,8 +424,8 @@ function addQueueButtons(li) {
|
||||||
var menu = $("<div/>").addClass("btn-group").appendTo(li);
|
var menu = $("<div/>").addClass("btn-group").appendTo(li);
|
||||||
// Play
|
// Play
|
||||||
if(hasPermission("playlistjump")) {
|
if(hasPermission("playlistjump")) {
|
||||||
$("<button/>").addClass("btn btn-mini qbtn-play")
|
$("<button/>").addClass("btn btn-xs btn-default qbtn-play")
|
||||||
.html("<i class='icon-play'></i>Play")
|
.html("<span class='glyphicon glyphicon-play'></i>Play")
|
||||||
.click(function() {
|
.click(function() {
|
||||||
socket.emit("jumpTo", li.data("uid"));
|
socket.emit("jumpTo", li.data("uid"));
|
||||||
})
|
})
|
||||||
|
|
@ -431,8 +433,8 @@ function addQueueButtons(li) {
|
||||||
}
|
}
|
||||||
// Queue next
|
// Queue next
|
||||||
if(hasPermission("playlistmove")) {
|
if(hasPermission("playlistmove")) {
|
||||||
$("<button/>").addClass("btn btn-mini qbtn-next")
|
$("<button/>").addClass("btn btn-xs btn-default qbtn-next")
|
||||||
.html("<i class='icon-share-alt'></i>Queue Next")
|
.html("<span class='glyphicon glyphicon-share-alt'></i>Queue Next")
|
||||||
.click(function() {
|
.click(function() {
|
||||||
socket.emit("moveMedia", {
|
socket.emit("moveMedia", {
|
||||||
from: li.data("uid"),
|
from: li.data("uid"),
|
||||||
|
|
@ -444,8 +446,8 @@ function addQueueButtons(li) {
|
||||||
// Temp/Untemp
|
// Temp/Untemp
|
||||||
if(hasPermission("settemp")) {
|
if(hasPermission("settemp")) {
|
||||||
var tempstr = li.data("temp")?"Make Permanent":"Make Temporary";
|
var tempstr = li.data("temp")?"Make Permanent":"Make Temporary";
|
||||||
$("<button/>").addClass("btn btn-mini qbtn-tmp")
|
$("<button/>").addClass("btn btn-xs btn-default qbtn-tmp")
|
||||||
.html("<i class='icon-flag'></i>" + tempstr)
|
.html("<span class='glyphicon glyphicon-flag'></i>" + tempstr)
|
||||||
.click(function() {
|
.click(function() {
|
||||||
socket.emit("setTemp", {
|
socket.emit("setTemp", {
|
||||||
uid: li.data("uid"),
|
uid: li.data("uid"),
|
||||||
|
|
@ -456,8 +458,8 @@ function addQueueButtons(li) {
|
||||||
}
|
}
|
||||||
// Delete
|
// Delete
|
||||||
if(hasPermission("playlistdelete")) {
|
if(hasPermission("playlistdelete")) {
|
||||||
$("<button/>").addClass("btn btn-mini qbtn-delete")
|
$("<button/>").addClass("btn btn-xs btn-default qbtn-delete")
|
||||||
.html("<i class='icon-trash'></i>Delete")
|
.html("<span class='glyphicon glyphicon-trash'></i>Delete")
|
||||||
.click(function() {
|
.click(function() {
|
||||||
socket.emit("delete", li.data("uid"));
|
socket.emit("delete", li.data("uid"));
|
||||||
})
|
})
|
||||||
|
|
@ -522,6 +524,7 @@ function rebuildPlaylist() {
|
||||||
/* menus */
|
/* menus */
|
||||||
|
|
||||||
/* user settings menu */
|
/* user settings menu */
|
||||||
|
// TODO fix this
|
||||||
function showOptionsMenu() {
|
function showOptionsMenu() {
|
||||||
hidePlayer();
|
hidePlayer();
|
||||||
var modal = $("<div/>").addClass("modal hide fade")
|
var modal = $("<div/>").addClass("modal hide fade")
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue