pagelib

pagelib is the PHP library I use to mark up all of my web pages on the cs-people.bu.edu web server. It is in the process of evolving from a simple markup helper to a full-on web site toolkit, albeit very slowly; it's not like this project can turn into my doctoral thesis or anything.

Revision History

5.0
More evolutionary than revolutionary. Re-factored the sidebar stuff to be more event-driven than output-driven, re-styled (CSS) everything, added lots of editorial and versioning control black magic. Plus, it actually works on the feature-poor PHP install on cs-people, which is more than could be said for the 4.X architectures.
4.1

Cutting-edge, slicker-than-snot version. Uses an XML-driven declarative control structure for building pages instead of the old imperative approach. Incorporates JavaScript and CSS more aggressively for XHTML-capable clients while supporting page recoding/rewriting to an HTML/3.2-like style for older clients.

Ditched.

4.0

False start at a new architecture, built around local DBM files, an object-centric XML core, and pluggable output subsystems to support XHTML, HTML/3.2, and others as they arose (plaintext, WML...). Quickly became too cumbersome to work with.

Never saw the light of day, thank goodness.

3.1

Added some cookie and JavaScript magic to deal with Microsoft's broken handling of valid XHTML documents with explicit HTTP content types of text/html.

3.0

Complete code re-organization

Output is largely compliant with XHTML/1.0 and XML/1.0, syntactically anyway. (There are some problems using XML/1.1 with XHTML/1.0 on some browsers.)

Added cookie-driven "cell folding" feature

2.0

Cleaner internal interfaces

More active use of CSS1 style sheet

Output mostly conforms to HTML/4.01 (exceptions included the Intellicast "weather" cell)

1.0

Initial version.

Essentially built to help manage my weblog, which was (at the time) my front page.

Not much functionality, produced (arguably) passable HTML/3.2.

Future Plans

At the moment, I'm mulling over how I want to build pagelib/4.0. After all these iterations on the initial code base, I feel like it's time to start over with the lessons learned in mind. A few features I want to incorporate are:

  • Aggressive use of CSS2, with a table-driven fallback rendering engine for older clients
  • Taking more advantage of the XML dimension of XHTML to embed truly structured data in pages
  • Adapt markup strategy per client's "Accept" values (text/html vs. application/xhtml+xml)
  • Include basic support for multiple charsets via iconv or recode
  • Engine for using a backing database to resolve resource names and store resource logic
  • Inform the whole process using my research