Add support for toggling joins/parts

This wraps all messages in <p> tags, which each have a class depending
on the message type, and also adds a button for filtering out the hide &
join classes specifically
This commit is contained in:
Jonatan Pålsson 2017-05-31 14:58:48 +02:00
parent ec84b9165f
commit e4f5c141ae

View file

@ -93,16 +93,16 @@ DEFAULT_TIMEZONE = 'UTC'
default_format = { default_format = {
"help" : HELP_MESSAGE, "help" : HELP_MESSAGE,
"action" : '<span class="person" style="color:%color%">* %user% %message%</span>', "action" : '<p class="pperson">%time% <span class="person" style="color:%color%">* %user% %message%</span></p>',
"join" : '-!- <span class="join">%user%</span> [%host%] has joined %channel%', "join" : '<p class="pjoin">%time% -!- <span class="join">%user%</span> [%host%] has joined %channel%</p>',
"kick" : '-!- <span class="kick">%user%</span> was kicked from %channel% by %kicker% [%reason%]', "kick" : '<p class="pkick">%time% -!- <span class="kick">%user%</span> was kicked from %channel% by %kicker% [%reason%]</p>',
"mode" : '-!- mode/<span class="mode">%channel%</span> [%modes% %person%] by %giver%', "mode" : '<p class="pmode">%time% -!- mode/<span class="mode">%channel%</span> [%modes% %person%] by %giver%</p>',
"nick" : '<span class="nick">%old%</span> is now known as <span class="nick">%new%</span>', "nick" : '<p class="pnick">%time% <span class="nick">%old%</span> is now known as <span class="nick">%new%</span></p>',
"part" : '-!- <span class="part">%user%</span> [%host%] has parted %channel%', "part" : '<p class="ppart">%time% -!- <span class="part">%user%</span> [%host%] has parted %channel%</p>',
"pubmsg" : '<span class="person" style="color:%color%">&lt;%user%&gt;</span> %message%', "pubmsg" : '<p class="pperson">%time% <span class="person" style="color:%color%">&lt;%user%&gt;</span> %message%</p>',
"pubnotice" : '<span class="notice">-%user%:%channel%-</span> %message%', "pubnotice" : '<p class="pnotice">%time% <span class="notice">-%user%:%channel%-</span> %message%</p>',
"quit" : '-!- <span class="quit">%user%</span> has quit [%message%]', "quit" : '<p class="pquit">%time% -!- <span class="quit">%user%</span> has quit [%message%]</p>',
"topic" : '<span class="topic">%user%</span> changed topic of <span class="topic">%channel%</span> to: %message%', "topic" : '<p class="ptopic">%time% <span class="topic">%user%</span> changed topic of <span class="topic">%channel%</span> to: %message%</p>',
} }
html_header = """<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" html_header = """<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
@ -111,6 +111,23 @@ html_header = """<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
<head> <head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>%title%</title> <title>%title%</title>
<script>
function modClass(c, disp) {
var elems = document.querySelectorAll(c);
for (var i = 0; i < elems.length; i++) {
elems[i].style.display = disp;
}
}
function toggleClass(c) {
var elem = document.querySelectorAll(c)[0];
if (elem.style.display == "none") {
modClass(c, "");
} else {
modClass(c, "none");
}
}
</script>
<style type="text/css"> <style type="text/css">
body { body {
background-color: #F8F8FF; background-color: #F8F8FF;
@ -122,6 +139,10 @@ html_header = """<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
font-size: 24px; font-size: 24px;
text-align: center; text-align: center;
} }
p {
padding: 0;
margin: 0;
}
a, .time { a, .time {
color: #525552; color: #525552;
text-decoration: none; text-decoration: none;
@ -135,7 +156,9 @@ html_header = """<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
</head> </head>
<body> <body>
<h1>%title%</h1> <h1>%title%</h1>
<a href="..">Back</a><br /> <a href="..">Back</a>
<button onclick="toggleClass('.pjoin'); toggleClass('.ppart');">Toggle joins &amp; parts</button>
<br />
</body> </body>
</html> </html>
""" """
@ -145,7 +168,7 @@ html_header = """<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
def append_line(filename, line): def append_line(filename, line):
data = open(filename, "rb").readlines()[:-2] data = open(filename, "rb").readlines()[:-2]
data += [line, "\n<br />", "\n</body>", "\n</html>"] data += [line, "\n", "\n</body>", "\n</html>"]
write_lines(filename, data) write_lines(filename, data)
def write_lines(filename, lines): def write_lines(filename, lines):
@ -342,9 +365,10 @@ class Logbot(SingleServerIRCBot):
append_line("%s/index.html" % chan_path, '<a href="%s.html">%s</a>' % (date, date)) append_line("%s/index.html" % chan_path, '<a href="%s.html">%s</a>' % (date, date))
# Append current message # Append current message
message = "<a href=\"#%s\" name=\"%s\" class=\"time\">[%s]</a> %s" % \ time = "<a href=\"#%s\" name=\"%s\" class=\"time\">[%s]</a>" % \
(time, time, time, msg) (time, time, time)
append_line(log_path, message) msg = msg.replace("%time%", time)
append_line(log_path, msg)
### These are the IRC events ### These are the IRC events