comparison mod_http_muc_log/res/http_muc_log.html @ 4182:1890115b2773

mod_http_muc_log: Move template into a directory to ease packaging There's no LuaRocks directive like `copy_directories` for individual files, short of writing a whole custom installation method.
author Kim Alvefur <zash@zash.se>
date Thu, 08 Oct 2020 16:39:19 +0200
parents mod_http_muc_log/http_muc_log.html@f6542e51b741
children 796c0eef888c
comparison
equal deleted inserted replaced
4181:fcc6b92869d4 4182:1890115b2773
1 <!DOCTYPE html>
2 <html lang="en">
3 <head>
4 <meta charset="utf-8">
5 <meta name="viewport" content="width=device-width, initial-scale=1">
6 {date&<meta name="dcterms.date" content="{date}">}
7 <title>{title?{room.name?{jid_node}}{date& - {date}}}</title>
8 <style>
9 :link,:visited{color:#3465a4;text-decoration:none;}
10 :link:hover,:visited:hover{color:#6197df;}
11 body{background-color:#eeeeec;margin:1ex 0;padding-bottom:3em;font-family:Arial,Helvetica,sans-serif;}
12 ul,ol{padding:0;}
13 li{list-style:none;}
14 hr{visibility:hidden;clear:both;}
15 br{clear:both;}
16 header,footer{margin:1ex 1em;}
17 footer{font-size:smaller;color:#babdb6;}
18 nav{font-size:large;margin:1ex 1ex;clear:both;line-height:1.5em;}
19 footer nav .up{display:none;}
20 @media screen and (min-width: 460px) {
21 nav {font-size:x-large;margin:1ex 1em;}
22 }
23 nav a{padding: 1ex;}
24 nav .up{font-size:smaller;display:block;clear:both;}
25 nav .up::before{content:"↑ ";}
26 nav .prev{float:left;}
27 nav .next{float:right;}
28 nav .next::after{content:" →";}
29 nav .prev::before{content:"← ";}
30 nav .last::after{content:" ⇥";}
31 nav :empty::after,nav :empty::before{content:""}
32 table{display:inline-block; margin:1ex 1em;vertical-align:top;}
33 th{font-size:x-small}
34 td{text-align:right;color:#bababa}
35 td > a, td > span{padding:0.4em}
36 .content{background-color:white;padding:1em;list-style-position:inside;}
37 .time{float:right;font-size:small;opacity:0.2;}
38 li:hover .time{opacity:1;}
39 .description{font-size:smaller;}
40 .body{white-space:pre-line;}
41 .body::before,.body::after{content:"";}
42 .presence .verb{font-style:normal;color:#30c030;}
43 .unavailable .verb{color:#c03030;}
44 .button{display:inline-block}
45 .button>a{color:white;background-color:orange;border-radius:4px}
46 form{text-align:right}
47 @media (prefers-color-scheme: dark) {
48 html{color:#eee}
49 body{background-color:#161616}
50 .content{background-color:#1c1c1c}
51 footer{color:#444}
52 td{color:#444}
53 .button>a{background-color:#282828}
54 }
55 </style>
56 </head>
57 <body>
58 <header>
59 <h1 {lang&lang="{lang}"} title="xmpp:{jid?}">{title?{room.name?{jid_node}}{date& - {date}}}</h1>
60 <nav>
61 <ul>
62 {jid_node&
63 <li class="button"><a href="xmpp:{jid?}?join">Join using a client</a></li>
64 }
65 {room.webchat_url&
66 <li class="button"><a href="{room.webchat_url}">Join via web</a></li>
67 }
68 {links#
69 <li><a class="{item.rel?}" href="{item.href}{hide_presence&?p=h}" rel="{item.rel?}">{item.text}</a></li>}
70 </ul>
71 </nav>
72 </header>
73 <hr>
74 <main {lang&lang="{lang}"} class="content">
75 <nav>
76 <dl class="room-list">
77 {rooms#
78 <dt {item.lang&lang="{item.lang}"} class="name"><a href="{item.href}{hide_presence&?p=h}">{item.name}</a></dt>
79 <dd {item.lang&lang="{item.lang}"} class="description">{item.description?}</dd>}
80 </dl>
81 {dates|calendarize#
82 <h2 id="{item.year}">{item.year}</h2>
83 {item.months#
84 <table id="{item.month}-{item.year}">
85 <caption>{item.month}</caption>
86 <thead><tr><th>Mon</th><th>Tue</th><th>Wed</th><th>Thu</th><th>Fri</th><th>Sat</th><th>Sun</th></tr></thead>
87 <tbody>{item.weeks#
88 <tr>{item.days#<td>{item.href&<a href="{item.href}{hide_presence&?p=h}">}<span>{item.day?&nbsp;}</span>{item.href&</a>}</td>}</tr>}
89 </tbody>
90 </table>
91 }
92 }
93 </nav>
94
95 <div>
96 {presence_available&<form>
97 <label>
98 <input name="p" value="h" type="checkbox"{hide_presence& checked}>
99 <span>Hide joins and parts</span>
100 </label>
101 <noscript>
102 <button type="submit">Apply</button>
103 </noscript>
104 </form>}
105 </div>
106
107 <ol class="chat-logs">{lines#
108 <li {item.lang&lang="{item.lang}"} class="{item.st_name} {item.st_type?}" id="{item.key}">
109 <a class="time" href="#{item.key}"><time id="{item.time}" datetime="{item.datetime}">{item.time}</time></a>
110 <b class="nick">{item.nick}</b>
111 <em class="verb">{item.verb?}</em>
112 <q class="body">{item.body?}</q>
113 {item.oob.url&<figure><a rel="nofollow" href="{item.oob.url?}"><img style="max-height:9em;max-width:16em" alt="{item.oob.desc?}" src="{item.oob.url?}"/></a><figcaption>{item.oob.desc?}</figcaption></figure>}
114 </li>}
115 </ol>
116 </main>
117 <hr>
118 <footer>
119 <nav>
120 <ul>{links#
121 <li><a class="{item.rel?}" href="{item.href}{hide_presence&?p=h}" rel="{item.rel?}">{item.text}</a></li>}
122 </ul>
123 </nav>
124 <br>
125 <div class="powered-by">Prosody</div>
126 </footer>
127 <script>
128 /*
129 * Local timestamps
130 */
131 (function () {
132 var timeTags = document.getElementsByTagName("time");
133 var i = 0, tag, date;
134 while(timeTags[i]) {
135 tag = timeTags[i++];
136 if(date = tag.getAttribute("datetime")) {
137 date = new Date(date);
138 tag.textContent = date.toLocaleTimeString(navigator.language);
139 tag.setAttribute("title", date.toString());
140 }
141 }
142 document.forms[0].elements.p.addEventListener("change", function() {
143 document.forms[0].submit();
144 });
145 })();
146 </script>
147 </body>
148 </html>