1. Introduction

1.1. Henkari?

Henkari is a dynamic extensible server-side website framework with oo-php. Word "henkari" is finnish. It translates as "hanger". Henkari helps you to keep your website nicely in shape a bit like hanger keeps your jacket.

1.2. Motivation

Doing manually something which computer is (when properly tuned up) fully capable of doing by itself is merely stupid. Maintaining even a simple website on flat-file basis without any html generation tools may include loads of that stupid hacking. Things like changing site layout, adding and removing pages and updating toc and navigation links.

1.3. Purpose

Henkari is a server-side website framework. It's purpose is minimize excess work of website maintainer. It provides template hierarchy, dynamic TOC/path/menu, (optional) online editing (security depends on webserver setup), extensibility and configurability.

Example: Adding a new page to your site includes creating it with your favorite html editor and saving it to your web folder. That's all. TOC gets (and also many other things get) updated automagically.

1.4. Terminology

Handler. A module providing some (additional) functionality to henkari. To be accurate, handler is a class inherited from abstractHandler.

TOC. Table of contents -like (not necessarily the table of contents) dynamically folding tree of navigational choises.

Menu. Single step navigational choises on current context. Currently contains all entries on TOC "up" and "down" from viewed entry. Horizontal ("next" and "prev") are to be implemented.

Path. Several meanings. In navigational context path is the path from mainpage to current page.

Entrypoint. is the root address/directory of the webspace handled by henkari. It's the directory where your index.php (so called entrypoint script) or link to it, config.php and lib/ / phplib/ directories (or links to them) reside.

Henkari webroot. Henkari's root directory for website content. May be referred as "webroot" in this document. Default is root/ under entrypoint.

Henkari webtree. Directory tree under henkari webroot. May be referred as "webtree" in this document.

1.5. Features

Templates. Henkari uses phplib to implement template functionality to ease the separation of content and look/feel. Templates are well-formed (x)html files and you can create and modify them with your favorite html editor. Templates apply to the directory where they reside (and all the subdirectories) and can be nested. Nesting is performed by using only body of the template that is to be nested within the current template. To lear more see Section 4.2.

Dynamic navigation. From file/directory structure and user defined exceptions Henkari automatically generates navigational elements: dynamically folding table of contents, menu and path.

Distributed configuration. You can alter just about everything per directory(tree) basis. If you know Apache's .htaccess configuration files, you are already familiar with the consept. There are two separate (both are optional) configuration files. First (.index and _index, both are read) contains additional TOC entry definitions and second (.henkari and _henkari, both are used) is evaluated as php-code. See Section 3.3 to learn more.