CHANGELOG

$Id: ric_CHANGELOG.html,v 1.29.2.3 2005/09/02 00:07:35 hemna Exp $

++ Major change or new feature.
+  fairly large change
-  minor change

version 2.5.4 - 09/01/2005
  - fixed a problem with the ADODBDataListSource not doing count() properly.
  - fixed a problem with the MessageBoxWidget::add_button() not working when
    an action contained a .html url
 ++ Got the FormWizard to work.  It should be useable now.  It requires a
    child of the StandardFormContent.
  - Changed FormValidation::is_name() to allow a second parameter to specify
    the max allowable length.
 ++ Added ordering capability to the FEComboListBox
  - Added 3rd parameter to DefaultGUIDataList::action_button() to support extra
    js prior to the submit being called.
  - changed the order in which the content for the head are rendered for
    the HTMLPageClass.  All external links are now built first before the
    inline js and css is added.
  - changed the css class name of the DefaultGUIDataList column header links
    to resolve a conflict with the FERadioGroup text links
  - changed FECheckBox clickable text to use the same css class name as the
    FERadioGroup clickable text.  'form_link'
  + Added a new optional parameter to the FormElement::get_element_name()
    so it can be called statically to discover an element's name that is used
    in the form, based on a string.
  + First pass at a working FormWizard.  It's still combersome a bit.
  + Added an index parameter to FormElement::build_id_name() for building
    consistent ID strings for complex FormElement children.
 ++ Added new FEColorPicker with some used JS code from
    http://www.mattkruse.com/javascript/colorpicker
  + Fixed an issue with the FEComboListBox when manually calling set_value().
    The right hand side data wasn't being merged properly with the left hand data.
 ++ Brian Laird added code to have a list of required selected values for
    the FEComboListBox.
  + added XMLTagClass::get_tag_attribute()
  + Fixed a problem of the DefaultGUIDataList missing the wrapping form tag
    when someone has added an action column.
  - Fixed a minor issue with the FEHidden element with a value of 0 and php5
  - Fixed a small issue with the FormProcessor building a hidden element
    that wasn't W3C compliant.
  - Fixed a potential problem with the FEDate element being used more than
    once in a form.
  + Added https support to the FormValidation::is_url().
  + Added InfoTable::set_title_css()
 ++ Added Daniel I. Robert's PEARDB_DataObjectDataListSource
  - Fixed some validation issues with FEFile

version 2.5.3 - May 11, 2005
  - fixed an issue with the DefaultGUIDataList not honoring
    calls to set_simple_search_modifier();
  - fixed an issue with the FEFILE object not being properly
    initialized during a confirmation.  The pre_confirm() has
    to be called prior to validation being called.
 ++ Added ProgressWidget and ProgressBoxWidget
  - Added DefaultGUIDataList::set_search_strings() to customize
    the search box strings.
  - added DefaultGUIDataList::set_title_enable() to enable/disable
    the showing of the title (TRUE by default)
  + Changed the look of the pagination area for the DefaultGUIDataList
  - allow someone to use uppercase characters in the FormElement label
  - fixed HTMLPageCLass::add_css_link() when passing the media param
    (Carl Blakemore)
  + Allow the DefaultGUIDataList to turn off the search block in
    user_setup()
  + Added FormContent::get_form_name();
  - Fixed a problem with DataList::build_base_url() causing
    double & -> & conversions
  + Added XMLDataListDocument which builds a complete XML document
    from a DataListSource class
  + Added support for Alternating row colors for the DefaultGUIDataList
 ++ Added FormElement::set_readonly(), which is used by the FormContent
    class to show the get_value_text() version of an element instead of
    the get_element().  This creates a simple way to do viewable only forms.
  - changed the FormContent::build_confirm_table() to always use get_value_text()
    since get_value_text() should always return the human readable string of
    the value of the FormElement.
  + Added the id attribute for all hidden form elements created in the FormContent
  - fixed potential issue with FEEmailMany validation with whitespaces
  + Got the DefaultGUIDataList properly showing the no data found message when
    no data was found from the DatListSource
  + Changed the values for FEDays to be only integers.  This makes setting the
    current value much easier, as you don't have to have a preceding 0 for days
    1 through 9.  The labels are unchanged.
  - fixed a bug in FEDate when in readonly/confirmation mode.
  + Added ErrorBoxWidget, and changed the FormContent and StandardFormContent
    error displays to use it.



Version 2.5.2 - January 28, 2005
  - fixed an issue with setting the value for FEComboListBox
    (hanefeldj at ee.nec.de)
  - moved TDtag::set_colspan() TDtag::set_rowspan() to the THtag
    TDtag is now a child of THtag.  (mike_walsh at mindspring.com)
  - added FEComboListButtonsBox
  - Fixed an issue with the FormProcessor not populating elements
    correctly on error.
  - added a sanity check inside of form_select()
  + added 2nd parameter to html_br() for a css class.
  + added new parameter to html_img() which allows getting the
    image width and height dynamically if $height and $width aren't set.
  + added html_img_local() and html_img_remote() as wrappers to the new
    parameter to html_img()
  - fixed minor missing member variable in FENumberInRange
  - moved declaration of TDtag after THtag to fix a bug with Turck-mmcache


Version 2.5.1 - December 7, 2004
  - fixed a small issue with rendering an XML tag with CDATA wrapper.
  - hack fix for ActiveTab for Safari.
  - updated the ArrayDataListSource secondary sorting.
  - Added the ability to change the default value for the flag that tells the
    SQLDataListSource to enable case insensitive sorting

Version 2.5.0 - November 2, 2004
  - small fix for the form name attribute for the DataList object.
  + Added HTMLPageClass::add_css_link() media attribute (Rob)
  - small fix for ADODBDataListSource and PEARDataListSource  count() method.
 ++ Added a new widget TabControlWidget
  - made a small change to DefaultGUIDataList::child_add_row_cell() that
    cuts the memory useage in half for massive lists of data.
  - Fixed a small issue with the DataList::_clean_string()
  - Fixed a bug in FormProcessor::_build_form_tag() not correctly
    building the onsubmit for the form tag in certain boundary cases.
 ++ Added a magic Check All checkbox for the FECheckBoxList
  + added FERadioGroup::set_br_flag()
  + Added the ability to turn off data scrubbing in a data list
  - fixed a problem with FormValidation::is_num()
 ++ Force the DataList to build the column header with respect to the
    default ordering flag.
 ++ Added the support for the ArrayDataListSource secondary sorting
  - Added a flag to FEMail to indicate whether we allow emails in
    the long name format like Foo Bar <email@email.com> (Suren Markosian)
  + Added a 'security' check to the orderby parameters for the DataList
    prior to calling the DataListSource::query() method.
  + Added FENumberInRange::get_range_string()
  + fixed a bug that was causing a double submit when form target is _blank
  + added script that builds a pear package for installations like
    pear install http://example.com/phphtmllib.tgz
  - fixed an issue with complex FormElements that have more then 1 label.
  - allow any characters for an FEPassword.
  - added the ability to enable/disable validation all together are a FormElement.
  + modified  FormElement and FormContent to allow objects in set_required_marker()
  + automatically build and add an id attribute value for
    all FormElement childs.  This is usefull for JS.
  - Added a Reference to the FormProcessor's FormValidation
    object in the FormContent, so manual validation calls
    to FormElements can happen in the FormContent::form_backend_validation()
  + Added FEWeekdaysListBox.
  - made 2nd parameter to FECheckBox optional.
  + Added FEActiveDIVRadioButtonGroup. a Magic FERadioButtonGroup.
  - made a fix to the FERadioButtonGroup to work around a bug in Firefox.
  - made a fix to form_active_checkbox() to work around a bug in Firefox.
  + Added FEHoursListBox, FEMinutesListBox, FESecondsListBox and FEGMTTimeZoneListBox
  + Added FormProcessor::set_form_attribute();
  - fixed a small xml issue with XMLTagClass::set_tag_attribute();
    (ale.pas at tiscali.it)
  - slight change to the filtering of column strings in the DataList.
  + FormProcessor no longer calls validation on disabled elements.
  - Fixed a problem with FECheckBoxList not disabling properly.
  - Fixed a corner case with the DataList::offset() method.
    Make sure the offset isn't > total # of records.
  - Fixed a borked FENumberInRange::get_label()
  - Fixed a minor issue with FEListBox not outputting XHTML
    compliant attributes.
  + Fixed a problem with FEListBoxMaster not generating the
    javascript correctly.
  + Added a fix for a potential place for XSS injection with
    PageWidget permission check error messages.
  + Added a small feature to the FEComboListBox to allow it to
    highglight and mark the Right box as required/error.
  + Added the ability to have all FormElement labels
    appended with a : character.  Sucky feature, but needed
    for my work project.  bleh
  + Fixed an issue with html_option in XHTML mode
    (Olivier Clavel <olivier.clavel at laposte.net>)
  + Fixed disabled not working for FEComboListBox.
  + Fixed disabled not working with FECheckBox.
  + Added FEEuropeanUnion (thanks to norax on the forums)
  + Added set_col_attributes method to the TABLETag class - Culley
  + Fixed a problem with having more then 1 FEDate object in a form.
  + Fixed a problem with DataList::set_save_vars() pounding over
    previous values.
  + Fixed FEDate issue after confirmation.
  - fixed a small issue with errors being displayed in XMLTagClass
    if php is set to show all and ignore @
  + Added html_aname() to build named anchor tags. (Bill Shaw)
  - fixed a minor bug with form_select() that had optgroups.
    (Thanks Shane Voss <Shane.Voss at ed.ac.uk>
  + Added a patch to FormProcessor to allow it to support multiple
    forms on 1 page.  (Thanks to proberts on the forums)
 ++ Finished FEDate.  This element existed in 2.4.1 but was incomplete
  + Added FormContent::get_all_element_vales()
  - Added element_exists() method to FormContent to test if the element
    exists (Suren Markosian)


Version 2.4.1 - April 1, 2004
  + reworked the FormElement::get_element_text() method so that the
    child class can return whatever it wants.
  - Fixed an issue with the FEFile and not getting the value correctly
    when in confirmation and final mode.
  - Fixed an issue with trying to customize the FormElement required field
    marker.  Jacek Rusin <jacek.rusin at kapsch.com.pl>
  - fixed a validation bug with FEFile.
  - fixed a bug with the FERadioGroup's href link on the text that caused the
    click to result in the browser going to the top of the page.
  - fixed a bug with the FormProcessor::_build_form_tag() not building the correct
    onsubmit.  --walt
  - fixed a minor bug in the DefaultGuiDataList with the action arrow
    image paths.  (UweBaumann at onlinehome.de)
  + Created 2 new examples:  example9.php and examples/form3.php
  + Fixed a bug causing problems with PEAR+postgresql in the data list widget.
    --culley
  - Added align parameter to html_img_href() (Denny Reeh <denny.reeh at gmx.de>)
  - Fixed a bug with the displaying of the FormElement label when the FormElement
    had an error.
 ++ Updated ArrayDataListSource to support searching of data.  This removed the
    necessity of the ArrayDataListSource::set_prequery_filter_flag() method, as
    this is determined automatically depending on if a search was done or not.
 ++ Added DataList::set_showall(), which automatically shows EVERY row back from the
    DataListSource.  When this is set the DefaultGUIDataList will not show navigation.
  - Applied a minor cleanup patch to TextCSSNav from Erich Enke <twilit77 at fastmail.fm>
  + Applied a patch to FEFile that adds the ability to set the acceptable file types
    and file size from culley at fastmail.fm
  - Fixed a small issue with the right boarder of the TextCSSNav's first element.
 ++ Added FERegEx and FormValidation::is_regex() to support a generic Regular expression
    based FormElement from Culley Harrelson <culley at fastmail.fm>
  + Added the ability to create a master-slave element relationship in FormElement.
    Added an element FEListBoxMaster that uses this relationship between two listboxes.
  - Fixed a copy & paste bug w/ TD::set_rowspan().
    Thanks Alfonso Cepeda Caballos <cepeda@cartuja.us.es>
 ++ Added the ability to the DefaultGUIDataList to save checked items in a
    checkbox action column between pages.

Version 2.4.0 - Feb 3, 2004
  + Added Container::get_element() - to return the data element, so you can
    modify it post add();
  + Added align attribute parameter to html_img() - Denny Reeh <denny.reeh at gmx.de>
  + Added the ability to set a secondary orderby list for the DataListSource.
  + Added the support for the secondary orderby list in the SQLDataListSource
  - fixed broken css link in examples/widget9.php
  + cleaned up the test directory, and started creating pear PHPUnit tests
  + Added the ability to do a collapsing search title for the DefaultGuiDataList
  - Fixed a problem with the HR tag.  It didn't have the correct flags set.
    (thanks to Mufasa from http://www.firetiger.net/)
  - added another fix to prevent warnings in XMLTagClass::_render_open_tag()
    (thanks to Mufasa from http://www.firetiger.net/)
  - added title parameter to html_area() - Denny Reeh <denny.reeh at gmx.de>
  - added a small fix to the HTMLPageClass::add() method when adding a
    widget that has a get_javascript() method.  This prevents a possible warning.
  - fixed some tab selected bugs with ActiveTab
  - added TABLEtag::set_summary() to set the summary attribute for
    speech-synthesizing/non-visual browsers.
  - added dtd URL for the HTMLPageClass when in HTML 4 rendering mode.
  - added FEUnitedStates form element.
  - added FEZipcode Form element.
  - save the render type in the HTMLPageClass to solve potential issues.
  - changed API for html_optgroup() to include the label as the first param.
  - added support in form_select() to handle a 2 level deep multidimensional array
    for the $options param.  This is usefull for optgroup support in the select tag.
  - fixed a bug with ArrayDataListSource.  It wasn't limiting the number of rows
    to display.  oops.
  - fixed some problems with html_frameset().
  - added 3rd param to html_option to set it as selected or not.
  - fixed an issue w/ DataList defines for sortable/not sortable and
    case insensitive sortable (David Chatenay)
  - added FETextArea length validation and error reporting.
  - added InfoTable::set_show_cellborders() which sets the flag to show internal
    cell borders or not.
  + Added ButtonPanel object.
  + Added DialogWidget.
  + Added StandardDialogWidget.
  + Added MessageBoxWidget.
 ++ Added the ability in the PageWidget to do page level permissions checks.
    This requires the InfoTable css definitions to be loaded in the browser window
    when a permissions error happens.
  + Added FormElement::set_element_name() - allow you manually set the name of
    the form field.
  + Added HTMLPageClass::set_favicon() to set the href and type and enable it.
  - DataList::build_column_item() fix: 0 (integer value) is replaced by a space
    (David Chatenay)
  + Added the ability to disable specific items for the
    FEDataList, FEListBox, FEMultiListBox, FECheckBoxList form elements.
  + Added FENestedListBox
 ++ Added support in the FormProcessor and FormContent to automatically handle
    the special FEFile form element while managing a form that contains a
    confirmation page (StandardFormContent w/ confirmation enabled).
  - fixed an issue with the Copyright character in the FooterNav.  (Ivan Gostev)
  - fixed some w3c validation errors with onClick in some widgets (Ivan Gostev)
  + Added TDtag::set_colspan() and TDtag::set_rowspan() as helpers to
    set_tag_attribute()
  + Added the new FEComboListBox form element.
  - fixed issue with ListAction old api calls.
  - Added a new sorting type for DataList - SORTABLE_NUMERIC, that handles sorting
    of numeric columns without using the natsort algorithm which is broken for negative
    numbers (suren)
 ++ Added new TabWidget and TabList widgets for supporting Tabs and their data.
  - Fixed a potential case insensitive sorting issue w/ the SQLDataListSource
  + Added the ability to change the default value for the flag that tells the
    SQLDataListSource to enable case insensitive sorting.
  + Added FormElement::set_tabindex() to set the tab index.
  + Added FormContent::set_form_tabindex, get_form_tabindex() as a helper to the
    FormElement::set_tabindex() method.
  - fixed an incorrectly spelled variable name in DataListSource (hanefeldj at ee.nec.de)
  - fixed a small js issue with the ActiveTab (mike_walsh at mentor.com

Version 2.3.0 - July 31, 2003
  - pulled a small issue from FormProcessor.  $this->_message never used.
  - changed FormProcessor::set_render_form_after_succes() to accept a flag,
    instead of just setting it to TRUE always.
  - Added some tests in the FormContent element access methods, to help
    developing a form.  It traps for invalid FormElement labels.
  + Added FEFile FormElement from Dave Brondsema <dave at brondsema.net>
  + Started work on the FormWizard
  - cleanup of some warnings for the DataList widgets.
  - Fixed a problem with doing some queries in the PEARSQLDataListSource
  - added HTMLPageClass::set_language() as a request from
    Davide "Design" Muzzarelli.
  - fixed DefaultGUIDataList alignment blowing up.
  - small change to the TABLEtag::add_row method to be cleaner in how
    we check for TR or TD objects
  + Added the ability to check the status of the FormProcessor state
    after the constructor processes the form.  Now you can find out
    if the form was confirmed and action was processed successfully
    so you can do something besides show the form.
  - added the ability to find out what action was taken by the form
    engine with FormProcessor::get_action()
  + Added the ability to automagically set a character limit in the
    FETextArea element
  + Added the ability to not automatically show the errors in the
    FormProcessor.  This allows you to show the errors somewhere else
  + Added the ability to set the FormContent error table title and width
    to something besides the default.
  + Added FormContent::get_error_array() and FormProcessor::get_error_array()

 ++ Changed the parameter list to FETextArea().  the rows, cols attributes
    for a textarea tag are required.
  - changed htmlentities call in HTMLTagClass to htmlspecialchars so we don't
    nuke unicode/multibyte chars.
 ++ Added FormContent::javascript() and FormElement::javascript() that
    automatically get called by the FormProcessor.  This allows you to include
    some raw javascript into a form or a form element, and it will automatically
    get wraped in a script tag and added rendered with the form.
  - fixed a lame error in the exmaple7.php source.
  - fixed a few warnings in example8.php
  - define the HTML_RENDER_TYPE var in SVGDocumentClass so we don't get php warnings.
  + Added the ability to filter rows out of the DataListSource object.
    just define DataListSource::row_filter() and return TRUE to allow the row or FALSE
    to drop the row.
  + Added FEYesNoListBox, and added the ability to change the yes/no values
    for the FEYesNoRadioGroup
  - don't validate FormElements that are disabled.

  + added the ability in the FormContent and FormElement to have more then 1 error
  + added FEConfirmActionButton
  + added FENumber to validate an int
  + added FENumberInRage to validate an int in a range.
  + added FEHostnameWithPort to show a hostname and a Port
  + added FEIPAddressWithPort
  - fixed annoying problem with the form_active_checkbox,form_active_radio and
    FECheckBoxList links causing mozilla to jump to the top of the page when clicked.
  - removed some of the newlines from the generated output for HTMLPageClass.
  + Added HTMLRedirectPage
  - cleaned up the use of a define for HTML_RENDER_TYPE.  It's now a global var,
    so it can be changed on the fly.
  - fixed some small warnings in the examples
    (thanks Pierre)
  - fixed some warnings in the DefaultGUIDataList object.
  + Added a DataList::do_action() method that allows you to do whatever
    prior to get_data_source() being called.  You can pre-massage data in
    do_action().  By default, it does nothing.
  + Added ArrayDataListSource class that pulls data out of an array
  + Added XMLTagClass::set_cdata_flag() to toggle the CDATA wrapper flag
  + Added xml_ctag(), which is the same as xml_tag(), but sets the bit to
    automatically wrap all tag content in the CDATA wrapper.





Version 2.2.4 - April 3, 2003
  - fixed a small documentation issue w/ the DataList::add_header_item()
    method.
  - pulled out missing development files in the form_elements/includes.inc
    D'oh.
  - fixed small warnings from HTMLTagClass

Version 2.2.3 - April 2, 2003
  - fixed a problem with the FormContent errors table width.
  - fixed an error in the form1 example.
  - fixed an error with Form Confirmation pages with the
    FECheckBox Form Element.
  - fixed a minor problem with the TABLEtag object, and adding
    a BaseWidget child class.  It doesn't have a _tag member, so
    folks that have MAX errors on, got a warning.
  - Fixed a potential issue with XML attributes.  There was a chance
    that an XML tag's attribute could be empty, which would build
    an invalid XML tag.  DOCTYPE is now an HTMLTagClass child, because
    it needs attributes w/o values.
  - Changed FormProcessor to use "post" instead of "POST" so that we
    build valid XHTML
  - changed the FormElement rendering of onClick, onChange, etc. to use
    all lowercase, to build valid XHTML.
  - added HTMLPageClass::add_js_link() to replace push_js_link()
  - small fix in the DefuaultGUIDataList::_checkbox_javascript() to
    be more flexible.  Thanks Nils Droge <ndroege at haba-ag.de>
  - made sure the DataList object's form name is set.
  - let the user set the DataList form method to post or POST.
  - Don't do indentation on a PREtag
  - Added FEDataList::set_list_data() method, to allow folks to set the
    list of items at any time.
  + Some cleanup of the FormProcessor attributes, and added some
    easy access methods for setting/getting them.
  - fixed the FormContent::add_image_action() method.  Can't use onclick
    with a input type="image".  bogus.
  + Added the ability to override the FormValidation and FormErrors classes
    used by the FormProcessor, so folks can get their errors and text from
    any method.  This helps folks create their own i18n FormErrors class.

Version 2.2.2 - March 10, 2003
  - Aris Basic <aris.basic at silencesoftware.com> added a new
    PGSQLDataListSource object, to allow folks to use the
    PHP built in PostgreSQL native functions for talking to
    a DB.  This avoids the depenancy on PEAR or ADODB.
  - Added the xhtml_strict_attributes array to the FORMtag
    declaration.  the attributes 'name' and 'target' are not
    allowed while in XHTML STRICT mode
    (thanks to Philipp Morger <morger at dolphins.ch> )
  - fixed a minor issue in the DataList object that Richard Greene
    found.
  - cleaned up the old 'test' scripts in test.
  - made a small fix to the ADODBSQLDataListSource::count() method when
    handling a DB error.  Thanks to Nils Droge <ndroege at haba-ag.de>
  - fixed a problem of not being able to search fo '0' in the DataList
    Thanks to Nils Droge <ndroege at haba-ag.de>.
  - made a small change to the DefaultGUIDataList to make the search area
    text be localizable.
  - Added support to change the encoding type for XHTML pages in the
    HTMLPageClass::set_encoding() method.
  - fixed a PHP NOTICE error output in the XMLTagClass.
  - fixed a problem with XML tags that have no content.  It now
    automatically drops the close tag.
  - fixed a problem with HTML tags with no content.  it no longer
    renders a newline after the open tag.
  - fixed a the DOCTYPE tag attributes for XHTML mode.  It now gives
    the full url path to the DTD's on the W3C site.
    (thanks to Philipp Morger <morger at dolphins.ch> )
  - fixed a small indenting problem with XMLTagClass::render_content()
  - Moved the SVG, WML, XML widgets into their own dirs under widgets.

  + Added new SVG Graphing classes.  You can now graph a line graph
    with SVGXYLineGraph

Version 2.2.1 - February 21, 2003
  - fixed problems with the simple search capability for the
    DefaultGUIDataList object.
  - Fixed the count problem with the ADODBDataListSource object
  - fixed some api calls in the examples/widget8 for form_active_radio
    and form_active_checkbox
  * Thanks to Aris "PhanLord" Basic for the heads up on the bugs.


Version 2.2.0 - February 20, 2003
  - added attributes array as the last parameter to form_select.
    the attributes are for the select tag.
  + Added the new RoundTitleTable widget.  It looks like the
    NavTable widget, but can contain anything.
  - fixed a minor issue with Container::reset_content()  It used to
    accept new content to automagically add.  This has been re-added.
    Thanks to Freddy from Germany. :)
  - fixed another duplicated method in SQLDataListSource.  arg.
  + Added the CSSContainer widget
  + changed all of the themed css building scripts to use the
    new CSSContainer widget.  This is handy for site wide
    themeing.
  - Fixed a minor php notice in XMLTagClass::prepare_flags()
  - Added the ability to set the overall alignment for the
    DefaultGUIDataList object with set_align()
  - added some code to the ActiveTab to enable going to a
    specific tab when coming from another page
  - Added the ability to preselect a specific tab in the ActiveTab
    widget by passing the selected tab's name in the constructor
  - fixed the count issue with the ADODBSQLDataListSource
  - Made the urls in the DataList object W3C happy.  & -> &amp;
  - fixed potential content issues with InfoTable.  Now you can
    call add_row() with a TR or TD tag.

 ++ MAJOR cleanup of all class member variables in ContainerClass,
    XMLTagClass and HTMLTagClass.  I nuked ALL of the flag variables
    and made them all into 1 bitmask.  13 variables -> 1.  This should
    keep the memory footprint to a minimum.  There should be NO
    compatibility issues.

 ++ Added the new Form Processing classes, for easily building complex
    forms and automagic validation, as well as automagic confirmation.

Version 2.1.3 - November 25, 2002
  - fixed a duplicated method in ActiveTab.

Version 2.1.2 - November 23, 2002
  - fixed a problem with html_map(), it was returning a LEGENDtag.
  - added $width to ActiveTab::add_tab() so you can change the width
    of the tab for long titles.
  - Fixed my mistake with the add/push_reference() methods.
    According to the php spec, you have to declare the parameter
    as a reference in the function declaration now, which is
    counter-intuitive (for us C folks)
  - Fixed a problem with the XMLDocumentClass' add_reference() method.

Version 2.1.1 - November 12, 2002
  - Suren Fixed a bad bug in HTMLPageClass::add_head_content()


Version 2.1.0 - November 12, 2002
  - Added the ActiveTab widget
  - fixed a problem with the DefaultGUIDataList object comparing
    the old style tag name of TD.  all tags are now lowercase
  - changed the use of id to class to prevent W3C validation errors
    when using a widget multiple times on a page.
  - added form_active_radio() and form_active_checkbox()
  + Did some major code cleanup in the _render_tag_* functions
    between the XMLTagClass and the HTMLTagClass classes.  Just had
    some legacy code living in the HTMLTagClass methods that was
    now living in the XMLTagClass methods
  - changed DOCTYPEtag to an XMLTag child
  - cleaned up the constructor for the DOCTYPEtag and XMLtag
  + Did some minor tweaks here and there in the base classes
    for performance improvements thanks to the adp profiler tool
    (http://pear.php.net/package-info.php?pacid=118)
  + Added xml_doctype() as a helper function for creating a
    DOCTYPE tag
  + added build_doctype() for the HTMLPageClass, so you can modify
    the DOCTYPE attributes for the document before render() is called.
    This is good for folks that want to tweak the link1 and link2
    attributes to put mozilla/IE into standards compliant mode.
    SEE:
     http://mozilla.org/docs/web-developer/quirks/doctypes.html
     http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/reference/objects/doctype.asp
  + Did a major reworking of the XMLDocumentClass.  Added a lot of features
    to make it easier to output a valid XML document.
  + Added the WMLTagClass (extends XMLTagClass) as the base class for all WML tags.
  + Added the WMLDocumentClass widget to build and render valid WML Documents.
  + Added the SVGDocumentClass widget to build and render valid SVG Documents.
  + Made the BaseWidget a child of the Container to eliminate redunancy in
    the push/add methods.
  - added XMLSTYLESHEETtag
  - updated HTMLPageClass::add_head_content() to allow n params of content
  + Added the ADODBSQLDataListSource object, to support ADODB DB objects.
  - updated examples/widget6.php to show the same list of data from the DB
    coming from 2 different sources.  One source is a PEAR DB object, the
    2nd source is from an ADODB DB Object.
  + Added a CSVFILEDataListSource object, to read data from a CSV formatted file.
  - Added the CDATAtag, which is used for escaping a tag's contents in XML, so
    the xml parser reading the xml doesn't parse the data.
  + added the full set of W3C's 1.0 recommendation of SVG (Scalable Vector
    Graphics) tags.
  + Added the svg_utils.inc which contains the helper functions for constructing
    commonly used SVG tags with some help from Charlie Killian.



Version 2.0.1 - October 18, 2002
  - Fixed a problem with html_small()
  - got the max_rows functionality working in the DataList widget


Version 2.0.0 - October 16, 2002
  - Added the title attribute to both html_img_href() and
    html_img()
  - created a css dir to hold the css files
  - Added some new features to XMLDocumentClass, and brought the API
    up to 2.x standards (add() instead of push() )
  - Added the new DataList object widget set.

Version 2.0.0-RC1 - October 2,2002
  MAJOR CHANGES/FEATURES
  - Completely rewrote the base HTMLTagClass.  It is now
    based off of XMLTagClass which is a child of the
    Container class (formerly known as ContainerWidget )

  - Changed all push_reference() calls to require a reference to
    be passed in.  call time pass by reference is depricated, and
    is going away soon, so this had to get changed.

  - Removed 2nd and 3rd parameter declarations from the
    HTMLTagClass constructor.  It now accepts any number
    of arguments.  The first argument is always an array
    of the tag attributes.

  - Added a lot of missing html_* helper/wrapper functions.
    Some of which have special parameters for most commonly
    used features of the specific tag.

  - changed html_td() parameters.  It now accepts
    function html_td($class="", $align="").  3rd param to
    n is content for the tag.

  - added class as the first param to the html_div() function.

  - Added add() and add_reference() calls.  These replace
    the old style push() and push_reference() calls.
    All push(), push_reference() and push_row() calls are
    depricated.

  - Completely changed the css functionality in the widgets.
    The widgets now contain the css required for the widget

  - HTMLPageClass automatically imports javascript and css
    from a widget, if it is based off of the BaseWidget class

  - Added the ability to tell the PageWidget and HTMLPageClass
    the style of indenting of the html output you want.
    Nice or left justified.


 MINOR CHANGES/FEATURES
  - changed all tag declarations to lower case.  HTML 4.01
    spec recommends using lower case tags.
  - Added set_class(), set_style() and set_id() for the HTMLTagClass.
  - Added 1st param to html_span() to be the class value.
  - added some new functionality to form_select() so it can
    handle multiple selection boxes.
  - Added a bunch of missing html/xhtml tags.
  - Added some new params to html_mailto() to support
    subject, body, cc
  - fixed newline problem with the META tag
  - added html_small() (Suren Markossian)
  - Added set_collapse() to let you collapse a tag and it's
    content on 1 line (no newlines or indenting)
  - Added html_* functions for all the supported Tag Classes.
  - removed the html_nobr(), since this really isn't a valid
    w3c tag. If you HAVE to use it...don't.  It's DEPRICATED.
  - removed SPACERtag.  its not a real tag.
  - cleaned out almost all the comments in the ALLTAGS.inc file
    for a small speed up.
  - Added font_utils.inc which holds various span/div tag
    objects with css classes for fonts, which are defeined in
    css/fonts.css
  - Added title parameter to the NavTable widget->add(), and made
    the target param last.
  - Moved the widget css files to /css




Version 1.1.0 - May 7, 2002
  - Removed <> symbols from the $_tag variables since it is not a part
    of an HTML tag. This should reduce the usage of str_replace() in
    render() functions and make things a little bit faster.
  - Added html_div_small(), which can be used instead of the
    spacer.gif trick.
  - Fixed a bug with form_radio().  Thanks (Tim Moloney)
  - Added container(), a ContainerWidget helper function.
  - Fixed a w3c validation bug with the <HR> tag.  Can't
    have a close tag for it.  Thanks (James Dingwall)
  - Fixed a problem with XHTML_STRICT no rendering the
    <!doctype> attributes correctly. Thanks (Ricardo Pardini)
  - Added HTMLPageClass::get_html_attributes() and
    HTMLPageClass::set_html_attributes(), which lets the user
    of the class get/set the specific attributes to use
    for the <html> tag.

    NOTE:
  - Moved all files from .php to .inc. make sure you change
    you includes to reflect this change.


Version 1.0.3 - April 8, 2002
  - Fixed a potential formatting issue w/ tags that don't
    automatically newline after the opentag.  thanks to the
    Zend debugger.
  - Added misc_utils.php which holds new push_args() function.
  - set newline_after_opentag for OPTIONtag to FALSE by default.
  - Added target to NavTable::push();
  - Changed InfoTable's css to a php file, so we can dynamically
    change the colors.
  - Made the default cellspacing 0 for InfoTable.
  - Fixed a small problem with NavTable widget.  If there was no
    subtitle, it would render an empty table for the title,
    causing old Mozilla's to puke.
  - Changed the size of the TextNav text to 10pt instead of 8pt.
  - Added FRAMEtag, FRAMESETtag, NOFRAMEStag classes.
  - Added support in HTMLPageClass widget for framesets.
  - Added some frame* utility functions.
  - Combined all of the tag_classes files into 1 file to avoid
    lots of repetetive includes.
  - Added the new ContainerWidget, which is nothing but a
    wrapper object that contains tags/widgets, and knows how to
    render the content with the appropriate indentation level.
  - added the feature of automatically trying to collapse a
    tag and its content to 1 line.  This happens if a tag
    only has 1 content entry and its a string w/o a \n in it.
  - Added new html_input() wrapper function which automatically
    will call htmlspecialchars() on the data for the value
    attribute.  This helps prevent problems with
    <input value="foo"">   -> <input value="foo&quot;">
  - Fixed a problem with the form_select() helper function.
    The selected item wasn't working.
  - Added container(), which is a helper function to build
    a ContainerWidget and populate it.



Version 1.0.2 - November 30,2001
  - added 3rd parameter to the HTMLTagClass constructor.  It
    accepts the $newline_after_opentag setting.  This helps
    to keep the nice formatting on certain tags that you want
    to override the default behaviour.

  - fixed HTMLPageClass character encoding bug.  It wasn't
    outputing a proper meta tag.
  - changed doctype for 4.0 to 4.01
  - added target param for the html_a() helper function.
  - changed the default parameters to html_img_href, and
    html_img.  We were forcing the width and height of an image
    to 1x1 if nothing was passed in.  We now don't add them to
    the tags if they aren't set, which is the desired result.

  - Changed the FooterNav class to add the ability to show a
    "webmaster" mailto link.  I also cleaned up the formatting
    of it a bit as well.

  - fixed source formatting issue with html_img_href()
  - changed html_a() to always force no newline after opentag
  - added $target to html_img_href()
  - added html_th() helper function.
  - Changed html_textarea.  Added a new parameter of Value
    so you can prepopulate the text area field with data.
  - Fixed a bug with InfoTable's render() method.  It wasn't
    properly handling the output_debug param.
  - Added TODO file.
  - Added a new feature to automatically htmlentities() for
    tag attribute values if we are rendering in XHTML_STRICT
    mode.  This prevents the w3c validator from complaining
    about the & char.


Version 1.0.1 - August 25, 2001
  - added html_div(), and html_td()
  - added html_div(), and html_td()
  - fixed w3c validation bug for the TextNav class.
    We can't put a background image in a td.  It Has
    to be in a css.
  - Fixed a <TD colspan> issue for a blank entry in the
    NavTable class.
  - reorganized html_utils.php so the functions are in
    alphabetical order.  Should be easier to find them
    as a reference.
  - added usemap attribute support to html_img() and
    html_img_href()
  - updated the online API docs (javadoc output) in the
    doc directory.


Documentation generated on Thu, 1 Sep 2005 17:05:08 -0700 by phpDocumentor 1.3.0RC3