16572
|
1 |
The Isabelle Webpage
|
16233
|
2 |
====================
|
|
3 |
|
16312
|
4 |
(1) philosophy
|
16233
|
5 |
==============
|
|
6 |
|
16952
|
7 |
The webpage sources consist of three different layers:
|
16233
|
8 |
|
|
9 |
a) the presentation layer
|
|
10 |
-------------------------
|
|
11 |
|
|
12 |
This is was the user actually sees; the slogan is
|
|
13 |
|
16312
|
14 |
"structural XHTML plus CSS"
|
16233
|
15 |
|
|
16 |
There are three different groups of end-user agents (browsers)
|
|
17 |
|
|
18 |
1) "practical non-CSS" browsers (lynx, netscape4)
|
16312
|
19 |
These just display plain HTML.
|
16233
|
20 |
2) "more-or-less-w3c-CSS" browsers (KHTML/Konqueror/Safari, Internet Explorer)
|
|
21 |
These are able to display the pages almost as they should be,
|
|
22 |
but perhaps with some minor warts.
|
|
23 |
3) "almost-w3-CSS" browsers (Mozilla/Firefox/Galeone)
|
16312
|
24 |
These are the "reference implementation" for the layout.
|
16233
|
25 |
|
|
26 |
b) the project layer
|
|
27 |
--------------------
|
|
28 |
|
|
29 |
This manages the dependencies between files; the tool of choice
|
|
30 |
is
|
|
31 |
|
|
32 |
"make plus shell scripting"
|
|
33 |
|
|
34 |
Project settings may be configured using a seperate configuration
|
16312
|
35 |
file.
|
16233
|
36 |
|
|
37 |
c) the preprocessing layer
|
|
38 |
--------------------------
|
|
39 |
|
16952
|
40 |
This allows to use things like includes, current date, and so on:
|
16233
|
41 |
|
|
42 |
"XHTML plus processing instructions"
|
|
43 |
|
16312
|
44 |
Note that this is almost not interwoven with b), to keep it as robust
|
16233
|
45 |
and simple as possible.
|
|
46 |
|
|
47 |
The layer itself is implemented by a small tool "pypager", written in python.
|
|
48 |
|
|
49 |
|
|
50 |
(2) writing your own pages
|
|
51 |
==========================
|
|
52 |
|
|
53 |
You may add arbitrary files to the dir structure, but adhere to the following:
|
|
54 |
* use XHTML, not loose HTML
|
16312
|
55 |
* only structural markup; if you need layout effects, use CSS
|
16952
|
56 |
(browse the exiting files to get some inspirations)
|
16233
|
57 |
* any files ending with .html are considered as HTML files and are implicitly
|
|
58 |
processed by the preprocessing layer
|
16312
|
59 |
* for HTML includes, it is most convenient to name them *.include.html to
|
|
60 |
avoid them to be processed stand-alone by the preprocessing layer
|
16572
|
61 |
* whole dirs maybe selected for statically copying them to the
|
|
62 |
target destination by configuring the project layer
|
16249
|
63 |
* for attributes etc. referencing file locations, there is a convenient
|
|
64 |
abbreviation: "//" at the beginning of a path is translated to the root,
|
|
65 |
but expressed relatively to the current location, e. g.
|
|
66 |
|
|
67 |
in abc/def/itsme.html: <a href="//abc/ghi/itsyou.html">
|
|
68 |
becomes: <a href="../def/itsyou.html">
|
|
69 |
|
16952
|
70 |
Further, targets are checked for existance.
|
16572
|
71 |
This is a simple yet powerful thing easing to keep the pages consistent.
|
16312
|
72 |
* for the semantics of the processing instructions, see build/pypager.py
|
|
73 |
source code
|
16233
|
74 |
|
16572
|
75 |
|
16233
|
76 |
(3) using the project layer framework
|
|
77 |
=====================================
|
|
78 |
|
|
79 |
To configure it the first time after checkout, just type
|
|
80 |
> make phase=init
|
|
81 |
|
|
82 |
Then, you may edit the project configuration file conf/localconf.mak.
|
|
83 |
After a correct configuration, the build process may be started by
|
|
84 |
> make
|
|
85 |
|
16952
|
86 |
The project layer tries to be smart about dependencies, but includes,
|
16233
|
87 |
embedded images and so on are not tracked; to built dependencies anew,
|
|
88 |
do
|
|
89 |
> make depends
|
|
90 |
|
|
91 |
After adding or deleting files, an
|
|
92 |
> make depends
|
|
93 |
may also be neccessary. The same after changing something in the configuration.
|
|
94 |
|
|
95 |
If nothing seems to be sensible any more, try
|
|
96 |
> make clean
|
|
97 |
> make depends
|
|
98 |
> make
|
|
99 |
|
|
100 |
|
|
101 |
(4) project-specific remarks
|
|
102 |
============================
|
|
103 |
|
|
104 |
* the site is not monolithic
|
|
105 |
* it must fit neatlessly into the Isabelle distribution and regression framework |