;;;; Programmer: Kevin M. Rosenberg
;;;; Date Started: Aug 2002
;;;;
-;;;; $Id: stdsite.lisp,v 1.1 2003/06/20 04:12:29 kevin Exp $
+;;;; $Id: stdsite.lisp,v 1.6 2003/06/23 23:58:29 kevin Exp $
;;;;
;;;; This file, part of LML2, is Copyright (c) 2002 by Kevin M. Rosenberg
;;;;
;;; A "standard site" is a format for a certain style of web page.
;;; It is based on the LML2 package.
;;; A stdsite page expects to include the following files:
-;;; head.lml_
+;;; header.lml_
;;; banner.lml_
;;; content.lml_
;;; footer.lml_
`(html
(:head
(:title (:princ ,title))
- (lml-load "head.lml_")
+ (lml-load "header.lml_")
,@body)))
(html
((:div :class "lastmod")
(lml-format "Last modified: ~A" (date-string (file-write-date src-file)))))))
- (when (probe-file "footer.lml_")
- (lml-load "footer.lml_")))))
+ (lml-load "footer.lml_"))))
(defmacro std-body (file &body body)
- `(body
- (lml-load "banner.lml_")
- (html
+ `(html
+ (:body
+ (lml-load "banner.lml_")
((:table :class "stdbodytable" :border "0" :cellpadding "3")
(:tbody
((:tr :valign "top")
- ((td :class "stdcontentcell")
+ ((:td :class "stdcontentcell")
(lml-load "contents.lml_"))
((:td :valign "top")
,@body
(std-footer ,file))))))))
-(defmacro print-std-page (file title &body body)
+(defmacro print-std-page (file title format &body body)
`(progn
- (xhtml-prologue)
- (html
- ((:html :xmlns "http://www.w3.org/1999/xhtml")
- (std-head ,title)
- (std-body ,file ,@body)))))
+ (dtd-prologue ,format)
+ (html
+ ((:html :xmlns "http://www.w3.org/1999/xhtml")
+ (std-head ,title)
+ (std-body ,file ,@body)))))
-(defmacro std-page (out-file title &body body)
+(defmacro std-page ((out-file title &key (format :xhtml11))
+ &body body)
`(let ((*indent* 0))
(with-open-file (*html-stream* (lml-file-name ,out-file :output)
:direction :output
:if-exists :supersede)
- (print-std-page (lml-file-name ,out-file :source) ,title ,@body))))
+ (print-std-page (lml-file-name ,out-file :source) ,title ,format ,@body))))
(defmacro titled-pre-section (title &body body)
`(progn