

--- Improved documentation:

* Added some comments that help phpDocumentor to divide the classes
  and files into packages and subpackages (@package and @subpackage).

* Improved a little bit some comments of the code.

* Improved a little bit the pages of the UML model.

* Generated code documentation with phpDocumentor and doxygen.

* Fixed some webapp_styles and improved its look.

* Updated sample applications 'app1' and 'app2' and the tutorials 1 and 2.

* Added sample application 'empty-sample'.

* Added sample application 'app3' and tutorial 3 (about webbox-es).


--- Preparing it for being a GNU package:

* .gif images replaced by .png images

* Added copying permission statements of GNU GPL at the top of most
  of the files.

* Converted CRLF to LF for all the files.

* Added COPYING to 'app1', 'app2', 'app3', 'documentation', 'empty-sample'
  as well.

  
--- Small changes and fixes:

* APP_URL is found automatically in the 'webapp.php' of the application,
  so there is no need to modify it in 'config/const.Paths.php'.
  This means that from now on we don't need to change the config of
  an application when we change its location or rename its folder.

* UP_PATH and UP_URL have been defined as well, so that instaed of
  APP_PATH."../web_app/" now we can use UP_PATH."web_app/".

* The folder 'eventhandler/' was removed. The file:

  'eventhandler/on.firstTime.php'   was replaced by 'init.php'
  'eventhandler/on.beforePage.php'  was replaced by 'before_page.php'
  'eventhandler/on.afterPage.php'   was replaced by 'after_page.php'

  The file 'global.php' is added, which is included for each page.


---------------------------------------------------------------

* In order to use DB features of the framework only in a module
  of the application (when the rest of the application doesn't
  need them and USES_DB is false), add at the top of the module
  lines like these:

    <?php
    include_once DB_PATH."class.MySQLCnn.php";
    global $cnn;
    $cnn = new MySQLCnn("db_host", "user", "passwd", "db_name");

    class comments extends WebObject
    {
    }
    ?>

  When the application in general uses DB, however you want
  to use another default connection for a certain module,
  then again you can add lines like in the above example,
  but without the 'include "class.MySQLCnn.php";' line.
  The lines:
    global $cnn;
    $cnn = new MySQLCnn("localhost", "user", "passwd", "db_name");
  change the default connection for the rest of the page.

  In case that you want to use another connection just for a certain 
  query, whithout changing the default connection in general, then
  you can use something like this:

    $new_conn = new MySQLCnn("localhost", "root", "", "hy");
    WebApp::execDBCmd("add_comment", $params, $new_conn);
    $rs = WebApp::openRS("comment_list", $params, $new_conn);
    WebApp::execQuery($query, $new_conn);
    //in case that there are no parameters:
    WebApp::execDBCmd("add_comment", array(), $new_conn);
    WebApp::execDBCmd("add_comment", UNDEFINED, $new_conn);

---------------------------------------------------------------
* class PagedRS extends EditableRS (it was: extends Recordset)

  'PagedRS' does not need to be dynamic, once it is opened, 
  it doesn't need to be opened a second time. On the other hand,
  sometimes it is useful to modify its fields before it rendered 
  on the page.

  ToDo: Merge class StaticRS with Recordset (make Recordset static
  by default) and add another class called DynamicRS to be used for
  dynamic recordsets.
---------------------------------------------------------------
* Free events are handled by the file 'on.eventName.php' which is
  placed in the same folder as 'sourcePage'.  This file now contains
  global code (not the function on_eventName()).

  ToDo: Find another name (terminology) for free events.  E.g. they
  may be called 'independent events' (because the handler is not a
  member function on any webbox), 'global events' (because they are
  handled globally and before any page construction has started),
  'switches' or 'conditionals' (because they usually switch on some
  conditions and decide which page to construct), etc. 
---------------------------------------------------------------

