new templates are arriving
							parent
							
								
									6aab314f67
								
							
						
					
					
						commit
						27a0fbf338
					
				| 
						 | 
					@ -0,0 +1,44 @@
 | 
				
			||||||
 | 
					===================================
 | 
				
			||||||
 | 
					 Fancy Index module Hacking HOW-TO
 | 
				
			||||||
 | 
					===================================
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.. contents::
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					How to modify templates
 | 
				
			||||||
 | 
					=======================
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Templates are in the ``templates/`` subdirectory of the source distribution.
 | 
				
			||||||
 | 
					They are included both as regular HTML text snippets (files ending in ``.t``)
 | 
				
			||||||
 | 
					and ready for inclusion in a C program (files ending in ``.inc``). Also
 | 
				
			||||||
 | 
					there is a small C program
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Template order
 | 
				
			||||||
 | 
					~~~~~~~~~~~~~~
 | 
				
			||||||
 | 
					01-head1
 | 
				
			||||||
 | 
					  Outputs the HTML header and must end with something like
 | 
				
			||||||
 | 
					  ``<title>Index of``, because the code inserts the path of the URI just
 | 
				
			||||||
 | 
					  after this piece.
 | 
				
			||||||
 | 
					02-head2
 | 
				
			||||||
 | 
					  Outputs the rest of the header, usually will close the ``</title>`` tag
 | 
				
			||||||
 | 
					  opened in the previous template and add further output until the closing
 | 
				
			||||||
 | 
					  ``</head>`` tag.
 | 
				
			||||||
 | 
					03-body1
 | 
				
			||||||
 | 
					  -
 | 
				
			||||||
 | 
					04-body2
 | 
				
			||||||
 | 
					  -
 | 
				
			||||||
 | 
					05-list1
 | 
				
			||||||
 | 
					  -
 | 
				
			||||||
 | 
					06-list2
 | 
				
			||||||
 | 
					  -
 | 
				
			||||||
 | 
					07-body3
 | 
				
			||||||
 | 
					  -
 | 
				
			||||||
 | 
					08-body4
 | 
				
			||||||
 | 
					  -
 | 
				
			||||||
 | 
					09-foot1
 | 
				
			||||||
 | 
					  -
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.. vim: spell spelllang=en expandtab
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,20 @@
 | 
				
			||||||
 | 
					Redistribution and use in source and binary forms, with or without
 | 
				
			||||||
 | 
					modification, are permitted provided that the following conditions
 | 
				
			||||||
 | 
					are met:
 | 
				
			||||||
 | 
					1. Redistributions of source code must retain the above copyright
 | 
				
			||||||
 | 
					   notice, this list of conditions and the following disclaimer.
 | 
				
			||||||
 | 
					2. Redistributions in binary form must reproduce the above copyright
 | 
				
			||||||
 | 
					   notice, this list of conditions and the following disclaimer in the
 | 
				
			||||||
 | 
					   documentation and/or other materials provided with the distribution.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND
 | 
				
			||||||
 | 
					ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 | 
				
			||||||
 | 
					IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 | 
				
			||||||
 | 
					ARE DISCLAIMED.  IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE
 | 
				
			||||||
 | 
					FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 | 
				
			||||||
 | 
					DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 | 
				
			||||||
 | 
					OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 | 
				
			||||||
 | 
					HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 | 
				
			||||||
 | 
					LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 | 
				
			||||||
 | 
					OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 | 
				
			||||||
 | 
					SUCH DAMAGE.
 | 
				
			||||||
| 
						 | 
					@ -1,6 +1,6 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * ngx_http_fancyindex_module.c
 | 
					 * ngx_http_fancyindex_module.c
 | 
				
			||||||
 * Copyright (C) 2007 Adrian Perez <adrianperez@udc.es>
 | 
					 * Copyright © 2007 Adrian Perez <adrianperez@udc.es>
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Module used for fancy indexing of directories. Features and differences
 | 
					 * Module used for fancy indexing of directories. Features and differences
 | 
				
			||||||
 * with the stock nginx autoindex module:
 | 
					 * with the stock nginx autoindex module:
 | 
				
			||||||
| 
						 | 
					@ -13,9 +13,10 @@
 | 
				
			||||||
 *  - Proper HTML is generated: it should validate both as XHTML 1.0 Strict
 | 
					 *  - Proper HTML is generated: it should validate both as XHTML 1.0 Strict
 | 
				
			||||||
 *    and HTML 4.01.
 | 
					 *    and HTML 4.01.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Base functionality heavy based upon the stock nginx autoindex module.
 | 
					 * Base functionality heavy based upon the stock nginx autoindex module,
 | 
				
			||||||
 | 
					 * which in turn was made by Igor Sysoev, like the majority of nginx.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Distributed under terms of the MIT license.
 | 
					 * Distributed under terms of the BSD license.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <ngx_config.h>
 | 
					#include <ngx_config.h>
 | 
				
			||||||
| 
						 | 
					@ -178,22 +179,7 @@ ngx_module_t  ngx_http_fancyindex_module = {
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static u_char title[] =
 | 
					#include "templates/templates.inc"
 | 
				
			||||||
"<html>" CRLF
 | 
					 | 
				
			||||||
"<head><title>Index of "
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static u_char header[] =
 | 
					 | 
				
			||||||
"</title></head>" CRLF
 | 
					 | 
				
			||||||
"<body bgcolor=\"white\">" CRLF
 | 
					 | 
				
			||||||
"<h1>Index of "
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static u_char tail[] =
 | 
					 | 
				
			||||||
"</body>" CRLF
 | 
					 | 
				
			||||||
"</html>" CRLF
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static ngx_int_t
 | 
					static ngx_int_t
 | 
				
			||||||
| 
						 | 
					@ -402,14 +388,12 @@ ngx_http_fancyindex_handler(ngx_http_request_t *r)
 | 
				
			||||||
                      ngx_close_dir_n " \"%s\" failed", &path);
 | 
					                      ngx_close_dir_n " \"%s\" failed", &path);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    len = sizeof(title) - 1
 | 
					    len = NGX_HTTP_FANCYINDEX_TEMPLATE_SIZE
 | 
				
			||||||
          + r->uri.len
 | 
					          + r->uri.len
 | 
				
			||||||
          + sizeof(header) - 1
 | 
					 | 
				
			||||||
          + r->uri.len
 | 
					          + r->uri.len
 | 
				
			||||||
          + sizeof("</h1>") - 1
 | 
					          + sizeof("</h1>") - 1
 | 
				
			||||||
          + sizeof("<hr><pre><a href=\"../\">../</a>" CRLF) - 1
 | 
					          + sizeof("<hr><pre><a href=\"../\">../</a>" CRLF) - 1
 | 
				
			||||||
          + sizeof("</pre><hr>") - 1
 | 
					          + sizeof("</pre><hr>") - 1;
 | 
				
			||||||
          + sizeof(tail) - 1;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    entry = entries.elts;
 | 
					    entry = entries.elts;
 | 
				
			||||||
    for (i = 0; i < entries.nelts; i++) {
 | 
					    for (i = 0; i < entries.nelts; i++) {
 | 
				
			||||||
| 
						 | 
					@ -436,10 +420,13 @@ ngx_http_fancyindex_handler(ngx_http_request_t *r)
 | 
				
			||||||
                  ngx_http_fancyindex_cmp_entries);
 | 
					                  ngx_http_fancyindex_cmp_entries);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    b->last = ngx_cpymem(b->last, title, sizeof(title) - 1);
 | 
					    b->last = ngx_cpymem(b->last, t01_head1, sizeof(t01_head1) - 1);
 | 
				
			||||||
    b->last = ngx_cpymem(b->last, r->uri.data, r->uri.len);
 | 
					    b->last = ngx_cpymem(b->last, r->uri.data, r->uri.len);
 | 
				
			||||||
    b->last = ngx_cpymem(b->last, header, sizeof(header) - 1);
 | 
					    b->last = ngx_cpymem(b->last, t02_head2, sizeof(t02_head2) - 1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    b->last = ngx_cpymem(b->last, t03_body1, sizeof(t03_body1) - 1);
 | 
				
			||||||
    b->last = ngx_cpymem(b->last, r->uri.data, r->uri.len);
 | 
					    b->last = ngx_cpymem(b->last, r->uri.data, r->uri.len);
 | 
				
			||||||
 | 
					    b->last = ngx_cpymem(b->last, t03_body1, sizeof(t03_body1) - 1);
 | 
				
			||||||
    b->last = ngx_cpymem(b->last, "</h1>", sizeof("</h1>") - 1);
 | 
					    b->last = ngx_cpymem(b->last, "</h1>", sizeof("</h1>") - 1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    b->last = ngx_cpymem(b->last, "<hr><pre><a href=\"../\">../</a>" CRLF,
 | 
					    b->last = ngx_cpymem(b->last, "<hr><pre><a href=\"../\">../</a>" CRLF,
 | 
				
			||||||
| 
						 | 
					@ -573,7 +560,7 @@ ngx_http_fancyindex_handler(ngx_http_request_t *r)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    b->last = ngx_cpymem(b->last, "</pre><hr>", sizeof("</pre><hr>") - 1);
 | 
					    b->last = ngx_cpymem(b->last, "</pre><hr>", sizeof("</pre><hr>") - 1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    b->last = ngx_cpymem(b->last, tail, sizeof(tail) - 1);
 | 
					    b->last = ngx_cpymem(b->last, t09_foot1, sizeof(t09_foot1) - 1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (r == r->main) {
 | 
					    if (r == r->main) {
 | 
				
			||||||
        b->last_buf = 1;
 | 
					        b->last_buf = 1;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -3,4 +3,4 @@
 | 
				
			||||||
"99/xhtml\"><head><style type=\"text/css\">body, html {background: #fff;}tr"
 | 
					"99/xhtml\"><head><style type=\"text/css\">body, html {background: #fff;}tr"
 | 
				
			||||||
".o {background: #eee;}th {font-weight: bold;background: #ddd;}</style><"
 | 
					".o {background: #eee;}th {font-weight: bold;background: #ddd;}</style><"
 | 
				
			||||||
"meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\"/><tit"
 | 
					"meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\"/><tit"
 | 
				
			||||||
"le>"
 | 
					"le>Index of "
 | 
				
			||||||
| 
						 | 
					@ -15,4 +15,4 @@
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		</style>
 | 
							</style>
 | 
				
			||||||
		<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
 | 
							<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
 | 
				
			||||||
		<title>
 | 
							<title>Index of 
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1 @@
 | 
				
			||||||
 | 
					"</title></head>"
 | 
				
			||||||
| 
						 | 
					@ -1,4 +1,2 @@
 | 
				
			||||||
		</title>
 | 
							</title>
 | 
				
			||||||
	</head>
 | 
						</head>
 | 
				
			||||||
	<body>
 | 
					 | 
				
			||||||
		<h1>
 | 
					 | 
				
			||||||
| 
						 | 
					@ -0,0 +1 @@
 | 
				
			||||||
 | 
					"<body><h1>"
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,2 @@
 | 
				
			||||||
 | 
						<body>
 | 
				
			||||||
 | 
							<h1>
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1 @@
 | 
				
			||||||
 | 
					"</h1>"
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1 @@
 | 
				
			||||||
 | 
								</h1>
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,4 @@
 | 
				
			||||||
 | 
					"<table><colgroup><col width=\"55%\"/><col width=\"20%\" style=\"text-align:"
 | 
				
			||||||
 | 
					" right\"/><col width=\"25%\"/></colgroup><thead><tr><th>File Name</th><th>"
 | 
				
			||||||
 | 
					"File Size</th><th>Date</th></tr></thead><tbody><tr><td colspan=\"3\"><a h"
 | 
				
			||||||
 | 
					"ref=\"../\">Parent Directory</a></td></tr>"
 | 
				
			||||||
| 
						 | 
					@ -1,4 +1,3 @@
 | 
				
			||||||
</h1>
 | 
					 | 
				
			||||||
<table>
 | 
					<table>
 | 
				
			||||||
	<colgroup>
 | 
						<colgroup>
 | 
				
			||||||
		<col width="55%"/>
 | 
							<col width="55%"/>
 | 
				
			||||||
| 
						 | 
					@ -13,3 +12,6 @@
 | 
				
			||||||
		</tr>
 | 
							</tr>
 | 
				
			||||||
	</thead>
 | 
						</thead>
 | 
				
			||||||
	<tbody>
 | 
						<tbody>
 | 
				
			||||||
 | 
							<tr>
 | 
				
			||||||
 | 
								<td colspan="3"><a href="../">Parent Directory</a></td>
 | 
				
			||||||
 | 
							</tr>
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1 @@
 | 
				
			||||||
 | 
					"</tbody></table>"
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,2 @@
 | 
				
			||||||
 | 
						</tbody>
 | 
				
			||||||
 | 
					</table>
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1 @@
 | 
				
			||||||
 | 
					""
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1 @@
 | 
				
			||||||
 | 
					""
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1 @@
 | 
				
			||||||
 | 
					"</body></html>"
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,2 @@
 | 
				
			||||||
 | 
						</body>
 | 
				
			||||||
 | 
					</html>
 | 
				
			||||||
| 
						 | 
					@ -1 +0,0 @@
 | 
				
			||||||
"</tbody></table></body></html>"
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,4 +0,0 @@
 | 
				
			||||||
			</tbody>
 | 
					 | 
				
			||||||
		</table>
 | 
					 | 
				
			||||||
	</body>
 | 
					 | 
				
			||||||
</html>
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1 +0,0 @@
 | 
				
			||||||
"</title></head><body><h1>"
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,3 +0,0 @@
 | 
				
			||||||
"</h1><table><colgroup><col width=\"55%\"/><col width=\"20%\" style=\"text-a"
 | 
					 | 
				
			||||||
"lign: right\"/><col width=\"25%\"/></colgroup><thead><tr><th>File Name</th"
 | 
					 | 
				
			||||||
"><th>File Size</th><th>Date</th></tr></thead><tbody>"
 | 
					 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,33 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef __templates_inc__
 | 
				
			||||||
 | 
					#define __templates_inc__
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static const u_char t01_head1[] =
 | 
				
			||||||
 | 
					#include "01-head1.inc"
 | 
				
			||||||
 | 
					;
 | 
				
			||||||
 | 
					static const u_char t02_head2[] =
 | 
				
			||||||
 | 
					#include "02-head2.inc"
 | 
				
			||||||
 | 
					;
 | 
				
			||||||
 | 
					static const u_char t03_body1[] =
 | 
				
			||||||
 | 
					#include "03-body1.inc"
 | 
				
			||||||
 | 
					;
 | 
				
			||||||
 | 
					static const u_char t04_body2[] =
 | 
				
			||||||
 | 
					#include "04-body2.inc"
 | 
				
			||||||
 | 
					;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static const u_char t09_foot1[] =
 | 
				
			||||||
 | 
					#include "09-foot1.inc"
 | 
				
			||||||
 | 
					;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define NGX_HTTP_FANCYINDEX_TEMPLATE_SIZE \
 | 
				
			||||||
 | 
					        ( (sizeof(t01_head1) - 1) \
 | 
				
			||||||
 | 
					        + (sizeof(t02_head2) - 1) \
 | 
				
			||||||
 | 
					        + (sizeof(t03_body1) - 1) \
 | 
				
			||||||
 | 
					        + (sizeof(t04_body2) - 1) \
 | 
				
			||||||
 | 
					        \
 | 
				
			||||||
 | 
					        + (sizeof(t09_foot1) - 1) )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /* !__templates_inc__ */
 | 
				
			||||||
 | 
					/* vim:ft=c
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
		Loading…
	
		Reference in New Issue