Haifux Logo

Valid HTML 4.01!

Valid CSS!

About Haifa Linux Club's site

The site is statically created using several scripts, which are based on an outline file, source files (which are html excerpts), and directories of lecture files. Each lecture file contains an html table row. The lectures are then gathered to lecture collections by creating symbolic links from the main lectures directory to other directories.

The Lectures Data

For each lecture, a file is created, containing a table row which describes the lecture. Past lectures are kept in directory lectures, and future lectures in future. When a lecture is given, it is moved from the future directory to the lectures directory.

The Lecture Sorting

The lectures are sorted according to topics. Each topic has a directory, which contains symbolic links to files in the lectures directory. For example, directories kernel, programming, network, security, util, and advocate. Each such directory has a matching file, which containes the heading of the lectures page, for example util.1.

future and lectures differ from those collections: lectures is the actual data base of all the lectures (no symbolic links!). future is itself a symbolic link to lectures/future, and it also holds real files, and not symbolic links. So beware, you who wishes to delete those!

The Scripts

make_site.pl
Takes as arguments names of files ending with htm, and combines them in a given an outline. It creates matching *.html files, in a sub directory called gen (which stands for generated files). The script sets the title of the page according to the heading of the *.htm file. The usual usage of the script is ./make_site.pl *.htm
combine_external.pl
Combine lecture lists from external sources using means such as RSS feeds. Done using Gabor Szabo's script: read.pl.
combine_lectures.pl
Takes as arguments names of directories containing lectures, with matching heading stubs, and combines them to a *.htm source file, using the following combination (given for a collection of lectures called "collection"):
  • A heading stub, called collection.1.
  • A standard stub, table_open which opens the table of lectures
  • The lecture table rows, as listed in directory collection.
  • An ending stub, lectures_lists, which contains the links to other lecture collections, as well as closes the table
The collection.htm file (which of course uses as a stub later on for the make_site.pl script) is created in the current directory.
gen_index.pl
is used to create a listing of the source directories. This is done to bypass the http server blocking directory listing. Thus, anyone can see how this site is built.
make_friendly
Simply verify all webmasters can edit all the lecture file.

The Outline

The outline.html file contains a table, whose left cell is the menu, and its right cell contains the page, coming from a stub. The outline contains various reserved strings, which are replaced by parts of the stub:
  • InsertTitleHere is replaced by the name of the project, hard-coded in the make_site.pl script, combined the heading of the stub.
  • InsertHeadHere is replaced by the heading of the stub
  • InsertTextHere is replaced by the rest of the stub.

The outline uses the haifux.css style.

The outline includes a button to check the html validity of the page, using the great service w3 validator provides.

The Stubs

Each of the stubs, for example index.htm, must contain in its first line a < h1> heading. This will be transformed into a title (without any tags it may contain), and into a heading (withthose tags). the rest of the stub needs to be an html ecerpt, namely standard html, as should appear within the body of the document.

Combining it all together

In order not to forget anything, the whole procedure is glued together using the make_everything shell script.
Contact webmaster at haifux.org regarding this website.