# 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 & -> &amp; 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