X-Git-Url: http://git.kpe.io/?p=lml2.git;a=blobdiff_plain;f=stdsite.lisp;h=bc8fd1f86c017e8774803ee48b6e64b70b71db30;hp=1ee29dbd941c4c10cacc8ada0a26cc8124c28308;hb=374af1ee8a520633dd2dc9a6b004bdbba12e139b;hpb=f00d24b179f303135b6b5ab2bb1fdd24c9a781f4 diff --git a/stdsite.lisp b/stdsite.lisp index 1ee29db..bc8fd1f 100644 --- a/stdsite.lisp +++ b/stdsite.lisp @@ -7,15 +7,14 @@ ;;;; Programmer: Kevin M. Rosenberg ;;;; Date Started: Aug 2002 ;;;; -;;;; $Id: stdsite.lisp,v 1.6 2003/06/23 23:58:29 kevin Exp $ +;;;; $Id$ ;;;; -;;;; This file, part of LML2, is Copyright (c) 2002 by Kevin M. Rosenberg +;;;; This file, part of LML2, is Copyright (c) 2000-2003 by Kevin Rosenberg. +;;;; Rights of modification and redistribution are in the LICENSE file. ;;;; -;;;; LML2 users are granted the rights to distribute and use this software -;;;; as governed by the terms of the GNU General Public License v2 -;;;; (http://www.gnu.org/licenses/gpl.html) ;;;; ************************************************************************* + ;;; 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: @@ -23,12 +22,15 @@ ;;; banner.lml_ ;;; content.lml_ ;;; footer.lml_ +;;; These files are optional +;;; final.lml_ +;;; rightcol.lml_ (in-package #:lml2) (defmacro std-head (title &body body) `(html - (:head + (:head (:title (:princ ,title)) (lml-load "header.lml_") ,@body))) @@ -38,13 +40,13 @@ (html ((:div :class "disclaimsec") (let ((src-file (make-pathname - :defaults *sources-dir* - :type "lml" - :name (pathname-name file)))) + :defaults *sources-dir* + :type "lml" + :name (pathname-name file)))) (when (probe-file src-file) - (html - ((:div :class "lastmod") - (lml-format "Last modified: ~A" (date-string (file-write-date src-file))))))) + (html + ((:div :class "lastmod") + (lml-format "Last modified: ~A" (date-string (file-write-date src-file))))))) (lml-load "footer.lml_")))) @@ -53,30 +55,33 @@ (:body (lml-load "banner.lml_") ((:table :class "stdbodytable" :border "0" :cellpadding "3") - (:tbody + (:tbody ((:tr :valign "top") - ((:td :class "stdcontentcell") - (lml-load "contents.lml_")) - ((:td :valign "top") - ,@body - (std-footer ,file)))))))) - + ((:td :class "stdcontentcell") + (lml-load "contents.lml_")) + ((:td :valign "top") + ,@body + (std-footer ,file)) + ((:td :valign "top") + (lml-load "rightcol.lml_" :optional t))))) + (lml-load "final.lml_" :optional t)))) + -(defmacro print-std-page (file title format &body body) +(defmacro print-std-page (file title format encoding &body body) `(progn - (dtd-prologue ,format) + (dtd-prologue ,format ,encoding) (html ((:html :xmlns "http://www.w3.org/1999/xhtml") (std-head ,title) (std-body ,file ,@body))))) -(defmacro std-page ((out-file title &key (format :xhtml11)) - &body body) +(defmacro std-page ((out-file title &key (format :xhtml10-strict) (encoding :utf-8)) + &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 ,format ,@body)))) + (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 ,format ,encoding ,@body)))) (defmacro titled-pre-section (title &body body) `(progn @@ -84,6 +89,3 @@ (:h1 ,title) ((:pre "style" "padding-left:30pt;") ,@body)))) - - -