This is source code I've made available for download. Stricly for educational purposes, provided without warranty, use at your own discretion, yadda yadda yadda.
Blosxom 3 advertises itself as alpha quality code. It's actually in
pretty good shape (my weblog is running with it) but it has one
serious problem. It's designed as a series of handlers that you can
override with your own code, but a bug in the code doesn't allow you
to override half of them (the flow handlers.) There are also several
other small fixes in the patch, including a fix that strips comments
off the end of handler name, which seems to be Rael's intention. Edit
Blosxom using the code in this source file in order to get a version
of Blosxom 3 that allows you to override flow handlers.
Paginate is a plugin that displays successive page of entries. You
access older and newer pages of entries by clicking on links. This
module contains the logic that determines where pages of entries start
and end. It also contains code that creates links to the next older
and next newer page of entries.
DumpContent is a Blosxom plugin that helps you debug your Blosxom
code. If you place it in the handlers.flow file, the normal output of
Blosxom will be replaced by the contents of the $state variable at the
point where it is placed.
StopTheFuture is a Blosxom plugin that prevents files with dates in
the future from being displayed by Blosxom. This allows you to post
files today and change their modification date with the touch command
so they will not be visible until the date you gave in the touch
The Summarize plugin produces an excerpt from the beginning N
characters of a post that has all html removed. I wrote this plugin to
get my RSS feed to validate. If I left html markup in the feed there
was too great a chance that incorrect markup would invalidate the RSS
feed and cause it not to display in some newsreaders.
The DynamicTemplate plugin is a replacement for the Interpolate
method in Blosxom 3. It is an upwardly compatible extension that adds
if, include, and set commands and others to Interpolate. Commands are
places on their own line and start with a sharp (#) character. Further
documentation on what the plugin can do are included in the
documentation inside the file.
One of the features of the DynamicTemplate module is the ability to
write filters, which are subroutines which process portions of a
template after variables have been interpolated. I've written an
example of filter called encode. It replaces a section of text with
intended to hide email addresses from spam harvesters.
The companion to DynamicTemplate is StaticTemplate. It's designed
to keep a consistent appearance between all pages on a web site, both
static and those generated by Blosxom. It uses a template file that
contains the common html code used by all pages on the site. It's
intended for web sites that contain a combination of static web pages
and pages generaated by several cgi scripts. It requires the
HtmlBlocks package mentioned below.
The Boger Card Repertory is a small CGI the demonstrates how a
homeopathic repertory works. Cyrus Boger was a homeopathic doctor who
practiced in West Virginia in the first third of of the twentienth
century. He is probably best known for translating Boenninghausen's
repertory into English. The card repertory is a distillation of
Boenninghausen's method. A working version of the
script can be found on the Baltimore Homeopathic Study Group web
site. The script is bundled with its data file, html templates, and Perl
modules it uses.
HtmlBlocks forms the back end of a simple templating
system. Regions of an html template are delimeted by special
comments. The substitute subroutine replaces thes regions with the
corresponding values in a hash. The extract subroutine will create a
hash from an existing html file. By combining the two subroutines, you
can merge the content of one page with another.
Comment blocks in the template are wrapped in html comments that look like
<!-- begin name --> <!-- end name -->
where name is any identifier string.
Yeti stands for "yet another interpolator." It is intended for use
in cgi script, but its use is not limited to them, and can be used for
other tasks. The code is quite short compared to other templating
libraries, yet provides all the capabilites I've found necessary for
Textdb implements a simple text database and is intended for use
with cgi scripts. Fields can span several lines. The file format is
designed to be easy to create and update with a text editor. There is
nothing unique or wonderful about this module, but it's served me well
in a number of cgi scripts.
Followme is a script that uses
HtmlBlocks. It produces a new html file from a template and an old html
file. The purpose if this script is to keep html files in synch with a
template. One changes the template and then runs this script to
propogate the changes in the template to the other html files.
Webwatcher gets the web page and computes a checksum. It compares the checksum to the previous run to see if the page has changed. If any page has changed, it sends a mail message with the changed pages. This script is meant to be run as a cron job on your ISP.
I've revised my Tibetan calendar script so that it properly computes the Tibetan date in the Phukluk and Tsurluk calendar systems over the decade from 2000 to 2009. I was able to do this thanks to the calendars at Ed Henning's Kalachakra site. To use the script on a web page, add the following line to the html header section.
Then add the following lines at the point where you want the current Tibetan date to appear.
The "p" that is passed as an argument to getTibetanDate tells the
script to use the Phukluk calendar. This is the most commonly used
Tibetan calendar. If you would rather use the Tsurluk calendar, used
in the Karma Kagyu tradition, replace the "p" with a "t".
Kate McDonnell has translated this script into French. You can download the French version from her site.
The script onlique.js displays a random card from Brian Eno's Oblique Strategies.
The Oblique Startegies are a set of cards written y electronic musician
Brian Eno that give open ended advice to stimulate the creative process.
The scripts random_37.js and sequential_37.js display verses from
the text The 37 Practices of a Bodhisattva. In the former case the
verse is chosen at random. In the latter case. it displays each verse
in order, one day at a time.
The script random_instruction.js displays a random quote from the
mind training instructions of the Seven Points of Mind Training. Along
with the instruction, it displays a link to Thrangu Rinpoche's
commentary on that instruction. The script sequential_instruction.js
displays a new mind training instruction each day. The scripts plus
Thrangu Rinpoche's commentary are contained in a zipped folder.