This file attempts to document the public API of every object in the 
EnzymeTemplates universe. Good luck.

Base_Ob is a private class. All ET objects are sub-classes of this object.
It provides support for various loading and printing functions which should
not be accesses except by sub-classes.


Printing
--------
The "print" series. These functions are designed to be called directly
on ET objects. Ex: 

// Student is a RootObject subclass
$ob = new Student( 256, "default" );
$ob->printLong();

There are currently three such functions defined for public use:

printPlain() - useful for debugging, this prints out the contents of 
		of the current object and all of its children

printShort() - prints out the "short" version of the current object

printLong() - prints out the "long" version of the current object

Currently, each ET object is assumed to have a "short" form and a "long"
form. These, when combined with an object's "theme" define which template
file to load for a given object. In general, these themes are assumed to
live in a sub-directory called "themes/" on the same path as the calling
PHP file. However, this behavior can be changed by modifying the 
member variable "theme_dir"

Thus, the template file for an object that encapsulates table "TABLE"
in theme "THEME" will be found at:

theme_dir/THEME/TABLE_short.inc
or
theme_dir/THEME/TABLE_long.inc

This behavior is defined in Base_Ob::include_theme() and may be changed

ET Templates
------------
Once you have created a template file, you probably want to show some
data. Template files are just regular PHP files, so you can use HTML
straightaway, and need to use <? ?> for the display code, which looks like
this:

<? $this->c_show( "fieldname" ) ?>
This prints out the contents of the field named "fieldname" in its "short"
version. If this represents another ET object, it will have its printShort()
method called.

<? $this->l_show( "fieldname" ) ?>
This works just like c_show() except that it uses the "long" version and
will call printLong()
(Note that we are working on deprecating the c_show() and l_show() syntax)


Show Functions
--------------
The various show functions have many parameters that control what gets 
printed out. 

As of EnzymeTemplates 0.6.3, you can now use the preferred $this->show()
function, which behaves much like the c_ and l_show functions, except that
it can take an array of parameters.

Usage:
$this->show( "fieldname" ) is equivalent to $this->c_show( "fieldname" )

$this->show( array( "what" => "fieldname",
		    "type" => "short" ) )
is equivaneltn to <? $this->l_show( "fieldname" ) ?>

c_ and l_show take up to four parameters, in this order

c_show( $what, $conj, $pre, $post )

this is now mapped to:

show( array( "what" => $what,
	     "type" => "short",
	     "conj" => $conj ... etc.

As of 0.6.3, you can also specify some additional parameters, which are
only possible when using the show( array() ) syntax.


Function Parameters
-------------------

"what" => the name of the field to be loaded. This is subject to processing
	by the do_alias() function

"type" => currently this must be "short" or "long" as defined by 
	the arr_process() function

"conj" => this only applies to array-type values. This is a string which is
	printed in between each member of the array. Thus, you might do 
	something like: $this->c_show( "Skills", ", " ) to put a comma
	in bewteen each skill. If the skills array is empty, conj is never
	printed

"pre" => this is printed before the data is printed. If there is no data,
	nothing is printed (subject to the constraints of "notlisted" below).

"post" => this is printed after the data is printed. If there is no data,
	nothing is printed (subject to the constraints of "notlisted" below).

"notlisted" => If there is no data, the contents of this var are printed 
	instead. Currently this defaults to "Not Listed"
	However, if you use c_show() or l_show(), and you set "pre" then
	this will default to ""
	"pre" and "post" are NOT printed before or after this text

"limit" => this value only applies to array values. It limits the number
	of elements to evaluate. Useful if you have an array that users
	can populate arbitrarily, but you don't want all your screen
	real-estate to be consumed.



Additional Functions
--------------------

makeLink() - you really should override this method yourself, but you can
	see how Catalyst creates our URLs from within templates with this
	function. See the orig-demo for usage.

printCount() - this only applies to MultiRelation objects, but it's useful if
	you want to print out the number of items. See the orig-demo's 
	student_long.inc for a good example of this in use.
