Work on index page
This commit is contained in:
parent
24fcce3f87
commit
7307c9c82e
|
@ -255,6 +255,49 @@ Server.prototype.unloadChannel = function (chan) {
|
|||
chan.dead = true;
|
||||
};
|
||||
|
||||
Server.prototype.packChannelList = function (publicOnly) {
|
||||
var channels = this.channels.filter(function (c) {
|
||||
if (!publicOnly) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return c.opts.show_public && !c.opts.password;
|
||||
});
|
||||
|
||||
return channels.map(this.packChannel.bind(this));
|
||||
};
|
||||
|
||||
Server.prototype.packChannel = function (c) {
|
||||
var data = {
|
||||
name: c.name,
|
||||
pagetitle: c.opts.pagetitle,
|
||||
mediatitle: c.playlist.current ? c.playlist.current.media.title : "-",
|
||||
usercount: c.users.length,
|
||||
voteskip_eligible: c.calcVoteskipMax(),
|
||||
users: [],
|
||||
chat: Array.prototype.slice.call(c.chatbuffer)
|
||||
};
|
||||
|
||||
for (var i = 0; i < c.users.length; i++) {
|
||||
if (c.users[i].name !== "") {
|
||||
var name = c.users[i].name;
|
||||
var rank = c.users[i].rank;
|
||||
if (rank >= 255) {
|
||||
name = "!" + name;
|
||||
} else if (rank >= 4) {
|
||||
name = "~" + name;
|
||||
} else if (rank >= 3) {
|
||||
name = "&" + name;
|
||||
} else if (rank >= 2) {
|
||||
name = "@" + name;
|
||||
}
|
||||
data.users.push(name);
|
||||
}
|
||||
}
|
||||
|
||||
return data;
|
||||
};
|
||||
|
||||
Server.prototype.logHTTP = function (req, status) {
|
||||
if (status === undefined)
|
||||
status = 200;
|
||||
|
|
|
@ -101,9 +101,11 @@ function handleIndex(req, res) {
|
|||
if (req.cookies.auth) {
|
||||
loginName = req.cookies.auth.split(':')[0];
|
||||
}
|
||||
|
||||
sendJade(res, 'index', {
|
||||
loggedIn: loginName !== false,
|
||||
loginName: loginName
|
||||
loginName: loginName,
|
||||
channels: Server.getServer().packChannelList(true)
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -12,5 +12,30 @@ html(lang="en")
|
|||
ul.nav.navbar-nav
|
||||
mixin navdefaultlinks("/")
|
||||
mixin navloginlogout("/")
|
||||
section#mainpage
|
||||
.container
|
||||
.col-lg-9.col-md-9
|
||||
h3 Public Channels
|
||||
table.table.table-bordered.table-striped
|
||||
thead
|
||||
th Channel
|
||||
th # Connected
|
||||
th Now Playing
|
||||
tbody
|
||||
each chan in channels
|
||||
tr
|
||||
td #{chan.pagetitle} (#{chan.name})
|
||||
td= chan.usercount
|
||||
td= chan.mediatitle
|
||||
.col-lg-3.col-md-3
|
||||
h3 Enter Channel
|
||||
input#channelname.form-control(type="text", placeholder="Channel Name")
|
||||
p.text-muted New channels can be registered from the <a href="/account/channels">My Channels</a> page.
|
||||
include footer
|
||||
mixin footer()
|
||||
script(type="text/javascript").
|
||||
$("#channelname").keydown(function (ev) {
|
||||
if (ev.keyCode === 13) {
|
||||
location.href = "/r/" + $("#channelname").val();
|
||||
}
|
||||
});
|
||||
|
|
Loading…
Reference in a new issue