author | berghofe |
Fri, 28 Apr 2006 15:53:47 +0200 | |
changeset 19493 | d8f252757460 |
parent 19094 | 968e95fdbf8a |
child 19552 | 273d2c9866fd |
permissions | -rw-r--r-- |
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 |
||
17944
f5ff234ce6b3
towards an improved website/makedist integration
haftmann
parents:
17743
diff
changeset
|
104 |
The whole thing should fit neatlessly into the Isabelle distribution and |
f5ff234ce6b3
towards an improved website/makedist integration
haftmann
parents:
17743
diff
changeset
|
105 |
regression framework; this may explain some "features" which seem to be |
f5ff234ce6b3
towards an improved website/makedist integration
haftmann
parents:
17743
diff
changeset
|
106 |
enigmatic. |
17681 | 107 |
|
108 |
||
109 |
(5) the website build bed on sunbroy2 |
|
110 |
===================================== |
|
111 |
||
112 |
For convenience, there is a completely configured |
|
113 |
website build bed on sunbroy2: |
|
114 |
* log in to sunbroy2 |
|
19094 | 115 |
* go to ~isabelle/website_build |
17681 | 116 |
* there do an CVS update if desired |
17743 | 117 |
* do "make perms" to set file owner group (isabelle) and permissions |
118 |
(rw-rw-r--, rwxrwsr-x) |
|
17681 | 119 |
* do your changes |
18214 | 120 |
* just type make - the website is built to the website synchronization cache |
17681 | 121 |
* then do CVS commit |
122 |
* for updating the webpage in Munich, just use Admin/mirror-website |
|
123 |
* if the Isabelle distribution files themselves change, some handwired updating |
|
19094 | 124 |
is necessary; however, for casual content changes the build bed should work |
125 |
properly. |