comparison mod_http_index/mod_http_index.lua @ 1827:9376e870f0e1

mod_http_index: Move template out into a file and make it configurable
author Kim Alvefur <zash@zash.se>
date Fri, 04 Sep 2015 00:23:46 +0200
parents ae2235d6c3f8
children 7953b7dde6e7
comparison
equal deleted inserted replaced
1826:ae2235d6c3f8 1827:9376e870f0e1
1 local url = require"socket.url"; 1 local url = require"socket.url";
2 local render = require"util.interpolation".new("%b{}", require"util.stanza".xml_escape); 2 local render = require"util.interpolation".new("%b{}", require"util.stanza".xml_escape);
3 3
4 module:depends"http"; 4 module:depends"http";
5 5
6 -- TODO Move templates into files 6 local base_template;
7 local base_template = [[ 7 do
8 <!DOCTYPE html> 8 local template_file = module:get_option_string(module.name .. "_template", module.name .. ".html");
9 <html> 9 template_file = assert(module:load_resource(template_file));
10 <head> 10 base_template = template_file:read("*a");
11 <meta charset="utf-8"> 11 template_file:close();
12 <meta name="viewport" content="width=device-width, initial-scale=1"> 12 end
13 <meta name="generator" value="prosody/{prosody_version} mod_{mod_name}">
14 <link rel="canonical" href="{canonical}">
15 <title>{title}</title>
16 <style>
17 body{background-color:#eeeeec;margin:1ex 0;padding-bottom:3em;font-family:Arial,Helvetica,sans-serif;}
18 header,footer{margin:1ex 1em;}
19 footer{font-size:smaller;color:#babdb6;}
20 .content{background-color:white;padding:1em;list-style-position:inside;}
21 nav{font-size:large;margin:1ex 1ex;clear:both;line-height:1.5em;}
22 nav a{padding: 1ex;text-decoration:none;}
23 @media screen and (min-width: 460px) {
24 nav{font-size:x-large;margin:1ex 1em;}
25 }
26 a:link,a:visited{color:#2e3436;text-decoration:none;}
27 a:link:hover,a:visited:hover{color:#3465a4;}
28 ul{padding:0;}
29 li{list-style:none;}
30 hr{visibility:hidden;clear:both;}
31 br{clear:both;}
32 li:hover time{opacity:1;}
33 </style>
34 </head>
35 <body>
36 <header>
37 <h1>{title}</h1>
38 </header>
39 <hr>
40 <div class="content">
41 <nav>
42 <ul>{items#
43 <li><a href="{item.url}" title="{item.module}">{item.name}</a></li>}
44 </ul>
45 </nav>
46 </div>
47 <hr>
48 <footer>
49 <br>
50 <div class="powered-by">Prosody {prosody_version?}</div>
51 </footer>
52 </body>
53 </html>
54 ]];
55 13
56 local canonical = module:http_url(nil, "/"); 14 local canonical = module:http_url(nil, "/");
57 15
58 local function relative(base, link) 16 local function relative(base, link)
59 base = url.parse(base); 17 base = url.parse(base);