]> git.llucax.com Git - software/bife/bife-all.git/commitdiff
- Removed Root widget (has no sense with the new auto file including).
authorLeandro Lucarella <llucax@gmail.com>
Sat, 28 Jun 2003 22:09:40 +0000 (22:09 +0000)
committerLeandro Lucarella <llucax@gmail.com>
Sat, 28 Jun 2003 22:09:40 +0000 (22:09 +0000)
- Removed constructors of some Generic subclasses (not needed).
- Updated UML diagrams.
- Updated the (mutant :) ROADMAP.
- Global Makefile is broken.

Makefile
core/BIFE/Fallback.php
core/BIFE/Parser.php
core/BIFE/Root.php [deleted file]
core/bife.xmi
doc/ROADMAP
modules/basic/BIFE/Page.php
modules/basic/BIFE/Title.php
modules/basic/basic.xmi

index 2cf53b30ce5931235ed0013d681b7f0540f7c3df..eab6a5ffbcdf7be33ef16197ebae758d7c39b16f 100644 (file)
--- a/Makefile
+++ b/Makefile
 VERSION=0.10
 PHP_FILES=src/BIFE/*.php
 META_FILES=xmi2code.config xmi2code.tpl.php Makefile Doxyfile package.xml
-DOC_FILES=doc/bife.xmi
 APIDOC_FILES=doc/api/* doc/api/*/*
 CORE_FILES=src/BIFE/Widget.php src/BIFE/Container.php src/BIFE/Root.php src/BIFE/Fallback.php src/BIFE/Parser.php
 X2C_TEMPLATE=xmi2code.tpl.php
 
-code: doc/bife.xmi xmi2code.config
-       xmi2code -a
+code: core/bife.xmi core/xmi2code.config
+       cd core && xmi2code -a
 
 all: code doc pear-packages tarball
 
@@ -43,8 +42,8 @@ doc: api
 api: Doxyfile $(PHP_FILES)
        doxygen
 
-clean-code:
-       find src/ -name '*.bak' | xargs rm -vf
+clean-bak:
+       find -name '*.bak' | xargs rm -vf
 
 clean-doc:
        rm -fvR doc/api/html doc/api/rtf doc/api/latex
@@ -53,12 +52,12 @@ clean: clean-doc clean-backup
 
 tarball: bife.tar.gz
 
-bife.tar.gz: $(PHP_FILES) $(DOC_FILES) $(META_FILES)
+bife.tar.gz: $(PHP_FILES) $(META_FILES)
        tar --exclude bife.tar.gz --exclude bife/doxygen.warn --exclude .svn --exclude '*.bak' --exclude '*.swp' --exclude 'bife/doc/api/*' -C .. -cvzf bife.tar.gz bife
 
 pear-packages: BIFE-$(VERSION).tgz
 
-BIFE-$(VERSION).tgz: $(PHP_FILES) $(DOC_FILES) package.xml
+BIFE-$(VERSION).tgz: $(PHP_FILES) package.xml
        pear package
 
 build/BIFE.php: $(CORE_FILES) $(X2C_TEMPLATE)
index 96aef2ff4aa10b7b2d4b19bace3e124933935519..e3098252b869e9c3a7527892b24f781151e941bf 100644 (file)
@@ -40,7 +40,7 @@ require_once 'BIFE/Container.php';
 class BIFE_Fallback extends BIFE_Container {
     /**
      * @var    string $name
-     * @access public
+     * @access private
      */
     var $name;
 
index 83b39a3c4a3619c231fce3a04cfca1f84e0afb6c..76a58459a04e3b57b36a34b826eac71fbad8158e 100644 (file)
@@ -36,7 +36,7 @@ class BIFE_Parser {
     /**
      * Top level widget.
      *
-     * @var    BIFE_Root $root
+     * @var    BIFE_Widget $root
      * @access protected
      */
     var $root = null;
@@ -250,7 +250,7 @@ class BIFE_Parser {
      *
      * @param  string $filename Filename to parse.
      *
-     * @return &BIFE_Root
+     * @return &BIFE_Widget
      * @access public
      */
     function &parseFile($filename) // ~X2C
@@ -290,7 +290,7 @@ class BIFE_Parser {
      *
      * @param  string $data XML data to parse.
      *
-     * @return &BIFE_Root
+     * @return &BIFE_Widget
      * @access public
      */
     function &parseString($data) // ~X2C
@@ -302,4 +302,4 @@ class BIFE_Parser {
 
 } // -X2C Class :Parser
 
-?>
+?>
\ No newline at end of file
diff --git a/core/BIFE/Root.php b/core/BIFE/Root.php
deleted file mode 100644 (file)
index cc4e74d..0000000
+++ /dev/null
@@ -1,105 +0,0 @@
-<?php
-// vim: set expandtab tabstop=4 softtabstop=4 shiftwidth=4:
-// +--------------------------------------------------------------------+
-// |                       BIFE - Buil It FastEr                        |
-// +--------------------------------------------------------------------+
-// | This file is part of BIFE.                                         |
-// |                                                                    |
-// | BIFE is free software; you can redistribute it and/or modify it    |
-// | under the terms of the GNU General Public License as published by  |
-// | the Free Software Foundation; either version 2 of the License, or  |
-// | (at your option) any later version.                                |
-// |                                                                    |
-// | BIFE is distributed in the hope that it will be useful, but        |
-// | WITHOUT ANY WARRANTY; without even the implied warranty of         |
-// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU   |
-// | General Public License for more details.                           |
-// |                                                                    |
-// | You should have received a copy of the GNU General Public License  |
-// | along with Hooks; if not, write to the Free Software Foundation,   |
-// | Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA      |
-// +--------------------------------------------------------------------+
-// | Created: Thu May 22 18:53:36 2003                                  |
-// | Authors: Leandro Lucarella <luca@lugmen.org.ar>                    |
-// +--------------------------------------------------------------------+
-//
-// $Id$
-//
-
-// +X2C includes
-require_once 'BIFE/Container.php';
-// ~X2C
-
-// +X2C Class 85 :Root
-/**
- * Root container class.
- *
- * @access public
- * @abstract
- */
-class BIFE_Root extends BIFE_Container {
-    /**
-     * Root widget's required files.
-     *
-     * @var    array $required
-     * @access protected
-     */
-    var $required = array();
-
-    // ~X2C
-
-    // +X2C Operation 87
-    /**
-     * Constructor.
-     *
-     * @param  string $attrs Attributes.
-     *
-     * @return void
-     * @access public
-     */
-    function BIFE_Root($attrs) // ~X2C
-    {
-        $this->__construct($attrs);
-    }
-    // -X2C
-
-    // +X2C Operation 88
-    /**
-     * Constructor.
-     *
-     * @param  string $attrs Attributes.
-     *
-     * @return void
-     * @access public
-     */
-    function __construct($attrs) // ~X2C
-    {
-        /*
-        if (@$attrs['USE']) {
-            foreach (split(':', $attrs['USE']) as $require) {
-                require_once "BIFE/$require.php";
-                $this->required[] = "BIFE/$require.php";
-            }
-            unset($attrs['USE']);
-        }
-        */
-        parent::__construct($attrs);
-    }
-    // -X2C
-
-    // +X2C Operation 150
-    /**
-     * Gets required files. (FIXME - DEPRECATED)
-     *
-     * @return array
-     * @access public
-     */
-    function getRequiredFiles() // ~X2C
-    {
-        return $this->required;
-    }
-    // -X2C
-
-} // -X2C Class :Root
-
-?>
index d324b80f267737283b766dadace4e9aff63395fb..7dc04890401f9d858a50a6232aee12702e684540 100644 (file)
      <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="string" abstract="0" documentation="XML string to parse." name="data" static="0" scope="200" />
      <UML:Parameter stereotype="" package="" xmi.id="2" value="true" type="bool" abstract="0" documentation="Indicates if is the last string to parse." name="final" static="0" scope="200" />
     </UML:Operation>
-    <UML:Operation stereotype="" package="" xmi.id="37" type="&amp;BIFE_Root" abstract="0" documentation="Parse a XML file with a complete and valid XML document." name="parseFile" static="0" scope="200" >
+    <UML:Operation stereotype="" package="" xmi.id="37" type="&amp;BIFE_Widget" abstract="0" documentation="Parse a XML file with a complete and valid XML document." name="parseFile" static="0" scope="200" >
      <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="string" abstract="0" documentation="Filename to parse." name="filename" static="0" scope="200" />
     </UML:Operation>
-    <UML:Operation stereotype="" package="" xmi.id="74" type="&amp;BIFE_Root" abstract="0" documentation="Parse a XML string with a complete and valid XML document." name="parseString" static="0" scope="200" >
+    <UML:Operation stereotype="" package="" xmi.id="74" type="&amp;BIFE_Widget" abstract="0" documentation="Parse a XML string with a complete and valid XML document." name="parseString" static="0" scope="200" >
      <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="string" abstract="0" documentation="XML data to parse." name="data" static="0" scope="200" />
     </UML:Operation>
-    <UML:Attribute stereotype="" package="" xmi.id="26" value="null" type="BIFE_Root" abstract="0" documentation="Top level widget." name="root" static="0" scope="202" />
+    <UML:Attribute stereotype="" package="" xmi.id="26" value="null" type="BIFE_Widget" abstract="0" documentation="Top level widget." name="root" static="0" scope="202" />
     <UML:Attribute stereotype="" package="" xmi.id="27" value="null" type="resource" abstract="0" documentation="XML parser resource." name="parser" static="0" scope="202" />
     <UML:Attribute stereotype="" package="" xmi.id="29" value="array()" type="array" abstract="0" documentation="BIFE widgets stack." name="stack" static="0" scope="202" />
     <UML:Attribute stereotype="" package="" xmi.id="84" value="''" type="string" abstract="0" documentation="Fallback class to use in case that a widget class is not found." name="fallback" static="0" scope="202" />
      <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="string" abstract="0" documentation="Name of the widget." name="name" static="0" scope="200" />
      <UML:Parameter stereotype="" package="" xmi.id="2" value="" type="array" abstract="0" documentation="Attributes." name="attrs" static="0" scope="200" />
     </UML:Operation>
-    <UML:Attribute stereotype="" package="" xmi.id="129" value="" type="string" abstract="0" documentation="" name="name" static="0" scope="200" />
-   </UML:Class>
-   <UML:Class stereotype="" package="BIFE" xmi.id="85" abstract="1" documentation="Root container class." name="Root" static="0" scope="200" >
-    <UML:Operation stereotype="" package="" xmi.id="87" type="void" abstract="0" documentation="Constructor." name="BIFE_Root" static="0" scope="200" >
-     <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="string" abstract="0" documentation="Attributes." name="attrs" static="0" scope="200" />
-    </UML:Operation>
-    <UML:Operation stereotype="" package="" xmi.id="88" type="void" abstract="0" documentation="Constructor." name="__construct" static="0" scope="200" >
-     <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="string" abstract="0" documentation="Attributes." name="attrs" static="0" scope="200" />
-    </UML:Operation>
-    <UML:Operation stereotype="" package="" xmi.id="150" type="array" abstract="0" documentation="Gets required files. (FIXME - DEPRECATED)" name="getRequiredFiles" static="0" scope="200" />
-    <UML:Attribute stereotype="" package="" xmi.id="149" value="array()" type="array" abstract="0" documentation="Root widget's required files." name="required" static="0" scope="202" />
+    <UML:Attribute stereotype="" package="" xmi.id="129" value="" type="string" abstract="0" documentation="" name="name" static="0" scope="201" />
    </UML:Class>
    <UML:Class stereotype="" package="HTML/Template" xmi.id="130" abstract="0" documentation="Hooks vs. IT (HIT) is a simple template implementation, based on hooks and IT template systems." name="HIT" static="0" scope="200" >
     <UML:Operation stereotype="" package="" xmi.id="136" type="void" abstract="0" documentation="Constructor." name="HTML_Template_HIT" static="0" scope="200" >
@@ -144,9 +134,8 @@ Parse a template appending the results to an internal buffer. If $vars is an arr
     <widgets>
      <UML:ConceptWidget usesdiagramfillcolour="0" width="148" showattsigs="601" usesdiagramusefillcolour="0" x="80" linecolour="#ff0000" y="20" showopsigs="600" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="75" usefillcolor="1" showattributes="1" xmi.id="3" showoperations="1" showpackage="1" showscope="1" showstereotype="0" font="Helvetica,9,-1,5,48,0,0,0,0,0" />
      <UML:ConceptWidget usesdiagramfillcolour="0" width="127" showattsigs="601" usesdiagramusefillcolour="0" x="91" linecolour="#ff0000" y="150" showopsigs="600" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="90" usefillcolor="1" showattributes="1" xmi.id="5" showoperations="1" showpackage="1" showscope="1" showstereotype="0" font="Helvetica,9,-1,5,48,0,0,0,0,0" />
-     <UML:ConceptWidget usesdiagramfillcolour="0" width="118" showattsigs="601" usesdiagramusefillcolour="0" x="31" linecolour="#ff0000" y="319" showopsigs="600" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="60" usefillcolor="1" showattributes="1" xmi.id="61" showoperations="1" showpackage="1" showscope="1" showstereotype="0" font="Helvetica,9,-1,5,48,0,0,0,0,0" />
-     <UML:ConceptWidget usesdiagramfillcolour="0" width="168" showattsigs="601" usesdiagramusefillcolour="0" x="191" linecolour="#ff0000" y="319" showopsigs="600" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="75" usefillcolor="1" showattributes="1" xmi.id="85" showoperations="1" showpackage="1" showscope="1" showstereotype="0" font="Helvetica,9,-1,5,48,0,0,0,0,0" />
-     <UML:ConceptWidget usesdiagramfillcolour="0" width="168" showattsigs="601" usesdiagramusefillcolour="0" x="301" linecolour="#ff0000" y="20" showopsigs="600" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="240" usefillcolor="1" showattributes="1" xmi.id="25" showoperations="1" showpackage="1" showscope="1" showstereotype="0" font="Helvetica,9,-1,5,48,0,0,0,0,0" />
+     <UML:ConceptWidget usesdiagramfillcolour="0" width="118" showattsigs="601" usesdiagramusefillcolour="0" x="95" linecolour="#ff0000" y="295" showopsigs="600" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="60" usefillcolor="1" showattributes="1" xmi.id="61" showoperations="1" showpackage="1" showscope="1" showstereotype="0" font="Helvetica,9,-1,5,48,0,0,0,0,0" />
+     <UML:ConceptWidget usesdiagramfillcolour="0" width="171" showattsigs="601" usesdiagramusefillcolour="0" x="301" linecolour="#ff0000" y="20" showopsigs="600" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="240" usefillcolor="1" showattributes="1" xmi.id="25" showoperations="1" showpackage="1" showscope="1" showstereotype="0" font="Helvetica,9,-1,5,48,0,0,0,0,0" />
     </widgets>
     <messages/>
     <associations>
@@ -156,16 +145,10 @@ Parse a template appending the results to an internal buffer. If $vars is an arr
        <endpoint endx="154" endy="95" />
       </linepath>
      </UML:AssocWidget>
-     <UML:AssocWidget totalcounta="2" indexa="1" totalcountb="3" indexb="1" widgetbid="5" widgetaid="61" documentation="" type="500" >
+     <UML:AssocWidget totalcounta="2" indexa="1" totalcountb="2" indexb="1" widgetbid="5" widgetaid="61" documentation="" type="500" >
       <linepath>
-       <startpoint startx="90" starty="319" />
-       <endpoint endx="133" endy="240" />
-      </linepath>
-     </UML:AssocWidget>
-     <UML:AssocWidget totalcounta="2" indexa="1" totalcountb="3" indexb="2" widgetbid="5" widgetaid="85" documentation="" type="500" >
-      <linepath>
-       <startpoint startx="275" starty="319" />
-       <endpoint endx="175" endy="240" />
+       <startpoint startx="154" starty="295" />
+       <endpoint endx="154" endy="240" />
       </linepath>
      </UML:AssocWidget>
     </associations>
@@ -195,7 +178,7 @@ Parse a template appending the results to an internal buffer. If $vars is an arr
        <listitem open="0" type="815" id="63" label="__construct" />
        <listitem open="0" type="814" id="129" label="name" />
       </listitem>
-      <listitem open="1" type="813" id="25" label="Parser" >
+      <listitem open="0" type="813" id="25" label="Parser" >
        <listitem open="0" type="815" id="30" label="BIFE_Parser" />
        <listitem open="0" type="815" id="31" label="__construct" />
        <listitem open="0" type="815" id="32" label="__destruct" />
@@ -212,12 +195,6 @@ Parse a template appending the results to an internal buffer. If $vars is an arr
        <listitem open="0" type="814" id="29" label="stack" />
        <listitem open="0" type="815" id="33" label="startElement" />
       </listitem>
-      <listitem open="0" type="813" id="85" label="Root" >
-       <listitem open="0" type="815" id="87" label="BIFE_Root" />
-       <listitem open="0" type="815" id="88" label="__construct" />
-       <listitem open="0" type="815" id="150" label="getRequiredFiles" />
-       <listitem open="0" type="814" id="149" label="required" />
-      </listitem>
       <listitem open="0" type="813" id="3" label="Widget" >
        <listitem open="0" type="815" id="126" label="BIFE_Widget" />
        <listitem open="0" type="815" id="127" label="__construct" />
index 8b4ec378abcd2a02d392f7734a34198a19ec69ca..dd911a39b5295e47f1f840cca542f853716a4b5c 100644 (file)
@@ -3,19 +3,31 @@ $Id$
 Version 0.10
 ============
 
-    - Add XML file caching (done!).
-    - Make a way to put all classes in a package together in a single file to
-      avoid overhead in require_once calls (to be reviewed).
-    - Make a Core Package with the core classes (Parser, Widget, Container,
-      Root, Fallback).
-    - Make a Basic (or Generic?) Package with simple implementations of all
-      classes in Core Package (Page, Title, Copy, etc).
-    - Make other more specific Packages (like Album) with other widgets.
+    - Add XML file caching. [done!]
+    - Remove Root widget, is has no sense with the new autoincludin method.
+      [done!]
+    - Make the proyect modular. [done as a first draft]
+    - Make a Core module with the core classes (Parser, Widget, Container,
+      Fallback). [almost done]
+    - Make a Basic (or Generic?) module with simple implementations of all
+      classes in Core module (Page, Title, Copy, etc). [almost done]
+    - Make other more specific modules (like Album) with other widgets.
+      [almost done]
+    - Fix bugs: all classes should done the dynamic work in the render()
+      method or using __sleep() and __wakeup() because of the new cache
+      capabilities.
 
 
 Version 0.11
 ============
 
+    - Start using config file for default widgets attributes.
     - Separate Album funtionality function from renderer (BIFE_Album).
     - Use new hooks libs.
 
+
+Version 0.12
+============
+    - Make a way to put all classes in a package together in a single file to
+      avoid overhead in require_once calls (to be reviewed).
+
index 0bff2f950508b5d2c94cb9b027ab2d4deae5dc31..17b3abb2b50a3a2f849a6cc31df193fa1bf4faa4 100644 (file)
@@ -27,7 +27,7 @@
 //
 
 // +X2C includes
-require_once 'BIFE/Root.php';
+require_once 'BIFE/Generic.php';
 // ~X2C
 
 // +X2C Class 14 :Page
@@ -36,78 +36,9 @@ require_once 'BIFE/Root.php';
  *
  * @access public
  */
-class BIFE_Page extends BIFE_Root {
+class BIFE_Page extends BIFE_Generic {
     // ~X2C
 
-    // +X2C Operation 15
-    /**
-     * Constructor.
-     *
-     * @param  array $attrs Attributes.
-     *
-     * @return void
-     * @access public
-     */
-    function BIFE_Page($attrs) // ~X2C
-    {
-        $this->__construct($attrs);
-    }
-    // -X2C
-
-    // +X2C Operation 53
-    /**
-     * Constructor.
-     *
-     * @param  array $attrs Attributes.
-     *
-     * @return void
-     * @access public
-     */
-    function __construct($attrs) // ~X2C
-    {
-        parent::__construct($attrs);
-    }
-    // -X2C
-
-    // +X2C Operation 93
-    /**
-     * Adds contents to the container.
-     *
-     * @param  mixed &$contents Contents to add.
-     *
-     * @return void
-     * @access public
-     */
-    function addContents(&$contents) // ~X2C
-    {
-        if (is_string($contents)) {
-            $contents = trim($contents);
-        }
-        if ($contents) {
-            parent::addContents($contents);
-        }
-    }
-    // -X2C
-
-    // +X2C Operation 90
-    /**
-     * Returns the rendered widget as a string.
-     *
-     * @param  HTML_Template_HIT &$template Template to use to render the widget.
-     *
-     * @return string
-     * @access public
-     */
-    function render(&$template) // ~X2C
-    {
-        $this->attrs['CONTENTS'] = parent::render($template);
-        $template->setGroup();
-        $out = $template->parse('bife_page', $this->attrs);
-        $template->unsetGroup();
-        return $out;
-    }
-    // -X2C
-
 } // -X2C Class :Page
 
-?>
\ No newline at end of file
+?>
index 6ff15cf2518245846649b815f6f70d02d1d27067..12d6698eaed818e0178cf692f7ffeb5d38f3e110 100644 (file)
@@ -39,36 +39,6 @@ require_once 'BIFE/Generic.php';
 class BIFE_Title extends BIFE_Generic {
     // ~X2C
 
-    // +X2C Operation 18
-    /**
-     * Constructor.
-     *
-     * @param  array $attrs Attributes.
-     *
-     * @return void
-     * @access public
-     */
-    function BIFE_Title($attrs) // ~X2C
-    {
-        $this->__construct($attrs);
-    }
-    // -X2C
-
-    // +X2C Operation 55
-    /**
-     * Constructor.
-     *
-     * @param  array $attrs Attributes.
-     *
-     * @return void
-     * @access public
-     */
-    function __construct($attrs) // ~X2C
-    {
-        parent::__construct($attrs);
-    }
-    // -X2C
-
 } // -X2C Class :Title
 
-?>
\ No newline at end of file
+?>
index b1e52f4462e27c1b0aeac45ac3acd03f6588bf72..7b8943381dec785e3ad90cac17be68f107404916 100644 (file)
@@ -27,28 +27,8 @@ x2c:extern" name="Container" static="0" scope="200" />
      <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="&amp;HTML_Template_HIT" abstract="0" documentation="Template to use to render the widget." name="template" static="0" scope="200" />
     </UML:Operation>
    </UML:Class>
-   <UML:Class stereotype="" package="BIFE" xmi.id="14" abstract="0" documentation="Page widget." name="Page" static="0" scope="200" >
-    <UML:Operation stereotype="" package="" xmi.id="15" type="void" abstract="0" documentation="Constructor." name="BIFE_Page" static="0" scope="200" >
-     <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="array" abstract="0" documentation="Attributes." name="attrs" static="0" scope="200" />
-    </UML:Operation>
-    <UML:Operation stereotype="" package="" xmi.id="53" type="void" abstract="0" documentation="Constructor." name="__construct" static="0" scope="200" >
-     <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="array" abstract="0" documentation="Attributes." name="attrs" static="0" scope="200" />
-    </UML:Operation>
-    <UML:Operation stereotype="" package="" xmi.id="93" type="void" abstract="0" documentation="Adds contents to the container." name="addContents" static="0" scope="200" >
-     <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="&amp;mixed" abstract="0" documentation="Contents to add." name="contents" static="0" scope="200" />
-    </UML:Operation>
-    <UML:Operation stereotype="" package="" xmi.id="90" type="string" abstract="0" documentation="Returns the rendered widget as a string." name="render" static="0" scope="200" >
-     <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="&amp;HTML_Template_HIT" abstract="0" documentation="Template to use to render the widget." name="template" static="0" scope="200" />
-    </UML:Operation>
-   </UML:Class>
-   <UML:Class stereotype="" package="BIFE" xmi.id="17" abstract="0" documentation="Title widget." name="Title" static="0" scope="200" >
-    <UML:Operation stereotype="" package="" xmi.id="18" type="void" abstract="0" documentation="Constructor." name="BIFE_Title" static="0" scope="200" >
-     <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="array" abstract="0" documentation="Attributes." name="attrs" static="0" scope="200" />
-    </UML:Operation>
-    <UML:Operation stereotype="" package="" xmi.id="55" type="void" abstract="0" documentation="Constructor." name="__construct" static="0" scope="200" >
-     <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="array" abstract="0" documentation="Attributes." name="attrs" static="0" scope="200" />
-    </UML:Operation>
-   </UML:Class>
+   <UML:Class stereotype="" package="BIFE" xmi.id="14" abstract="0" documentation="Page widget." name="Page" static="0" scope="200" />
+   <UML:Class stereotype="" package="BIFE" xmi.id="17" abstract="0" documentation="Title widget." name="Title" static="0" scope="200" />
    <UML:Class stereotype="" package="BIFE" xmi.id="61" abstract="1" documentation="Fallback widget to use when no specific widget is implemented.
 x2c:extern" name="Fallback" static="0" scope="200" />
    <UML:Class stereotype="" package="BIFE" xmi.id="76" abstract="0" documentation="Fallback widget that copies the XML." name="Copy" static="0" scope="200" >
@@ -64,8 +44,6 @@ x2c:extern" name="Fallback" static="0" scope="200" />
      <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="&amp;HTML_Template_HIT" abstract="0" documentation="Template to use to render the widget." name="template" static="0" scope="200" />
     </UML:Operation>
    </UML:Class>
-   <UML:Class stereotype="" package="BIFE" xmi.id="85" abstract="1" documentation="Root container class.
-x2c:extern" name="Root" static="0" scope="200" />
    <UML:Class stereotype="" package="BIFE" xmi.id="110" abstract="0" documentation="Link to another page." name="Link" static="0" scope="200" >
     <UML:Operation stereotype="" package="" xmi.id="111" type="void" abstract="0" documentation="Constructor." name="BIFE_Link" static="0" scope="200" >
      <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="array" abstract="0" documentation="Attributes." name="attrs" static="0" scope="200" />
@@ -83,57 +61,50 @@ x2c:extern" name="HIT" static="0" scope="200" />
   <diagrams>
    <diagram snapgrid="0" showattsig="1" fillcolor="#ffffc0" showgrid="1" showopsig="0" usefillcolor="1" snapx="10" snapy="10" showatts="1" xmi.id="113" documentation="Class diagram for the basic classes." type="402" showops="1" showpackage="1" name="Basic Classes" localid="30000" showstereotype="0" showscope="1" font="Helvetica,9,-1,5,48,0,0,0,0,0" linecolor="#ff0000" >
     <widgets>
-     <UML:ConceptWidget usesdiagramfillcolour="0" width="107" showattsigs="601" usesdiagramusefillcolour="0" x="30" linecolour="#ff0000" y="310" showopsigs="600" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="67" usefillcolor="1" showattributes="1" xmi.id="76" showoperations="1" showpackage="1" showscope="1" showstereotype="0" font="Helvetica,9,-1,5,48,0,0,0,0,0" />
-     <UML:ConceptWidget usesdiagramfillcolour="0" width="117" showattsigs="601" usesdiagramusefillcolour="0" x="230" linecolour="#ff0000" y="140" showopsigs="600" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="82" usefillcolor="1" showattributes="1" xmi.id="7" showoperations="1" showpackage="1" showscope="1" showstereotype="0" font="Helvetica,9,-1,5,48,0,0,0,0,0" />
-     <UML:ConceptWidget usesdiagramfillcolour="1" width="107" showattsigs="601" usesdiagramusefillcolour="1" x="310" linecolour="none" y="310" showopsigs="600" usesdiagramlinecolour="1" fillcolour="none" height="67" usefillcolor="1" showattributes="1" xmi.id="110" showoperations="1" showpackage="1" showscope="1" showstereotype="0" font="Helvetica,9,-1,5,48,0,0,0,0,0" />
-     <UML:ConceptWidget usesdiagramfillcolour="0" width="109" showattsigs="601" usesdiagramusefillcolour="0" x="450" linecolour="#ff0000" y="310" showopsigs="600" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="82" usefillcolor="1" showattributes="1" xmi.id="14" showoperations="1" showpackage="1" showscope="1" showstereotype="0" font="Helvetica,9,-1,5,48,0,0,0,0,0" />
-     <UML:ConceptWidget usesdiagramfillcolour="0" width="107" showattsigs="601" usesdiagramusefillcolour="0" x="170" linecolour="#ff0000" y="310" showopsigs="600" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="52" usefillcolor="1" showattributes="1" xmi.id="17" showoperations="1" showpackage="1" showscope="1" showstereotype="0" font="Helvetica,9,-1,5,48,0,0,0,0,0" />
-     <UML:ConceptWidget usesdiagramfillcolour="0" width="97" showattsigs="600" usesdiagramusefillcolour="0" x="90" linecolour="#ff0000" y="140" showopsigs="600" usesdiagramlinecolour="0" fillcolour="#dcdcdc" height="25" usefillcolor="1" showattributes="0" xmi.id="61" showoperations="0" showpackage="1" showscope="1" showstereotype="0" font="Helvetica,9,-1,5,48,0,0,0,0,0" />
-     <UML:ConceptWidget usesdiagramfillcolour="0" width="79" showattsigs="600" usesdiagramusefillcolour="0" x="380" linecolour="#ff0000" y="140" showopsigs="600" usesdiagramlinecolour="0" fillcolour="#dcdcdc" height="25" usefillcolor="1" showattributes="0" xmi.id="85" showoperations="0" showpackage="1" showscope="1" showstereotype="0" font="Helvetica,9,-1,5,48,0,0,0,0,0" />
-     <UML:ConceptWidget usesdiagramfillcolour="0" width="106" showattsigs="600" usesdiagramusefillcolour="0" x="235" linecolour="#ff0000" y="20" showopsigs="600" usesdiagramlinecolour="0" fillcolour="#dcdcdc" height="25" usefillcolor="1" showattributes="0" xmi.id="5" showoperations="0" showpackage="1" showscope="1" showstereotype="0" font="Helvetica,9,-1,5,48,0,0,0,0,0" />
+     <UML:ConceptWidget usesdiagramfillcolour="0" width="107" showattsigs="601" usesdiagramusefillcolour="0" x="55" linecolour="#ff0000" y="330" showopsigs="600" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="67" usefillcolor="1" showattributes="1" xmi.id="76" showoperations="1" showpackage="1" showscope="1" showstereotype="0" font="Helvetica,9,-1,5,48,0,0,0,0,0" />
+     <UML:ConceptWidget usesdiagramfillcolour="0" width="117" showattsigs="601" usesdiagramusefillcolour="0" x="308" linecolour="#ff0000" y="150" showopsigs="600" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="82" usefillcolor="1" showattributes="1" xmi.id="7" showoperations="1" showpackage="1" showscope="1" showstereotype="0" font="Helvetica,9,-1,5,48,0,0,0,0,0" />
+     <UML:ConceptWidget usesdiagramfillcolour="1" width="107" showattsigs="601" usesdiagramusefillcolour="1" x="313" linecolour="none" y="330" showopsigs="600" usesdiagramlinecolour="1" fillcolour="none" height="67" usefillcolor="1" showattributes="1" xmi.id="110" showoperations="1" showpackage="1" showscope="1" showstereotype="0" font="Helvetica,9,-1,5,48,0,0,0,0,0" />
+     <UML:ConceptWidget usesdiagramfillcolour="0" width="79" showattsigs="601" usesdiagramusefillcolour="0" x="447" linecolour="#ff0000" y="330" showopsigs="600" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="29" usefillcolor="1" showattributes="1" xmi.id="14" showoperations="1" showpackage="1" showscope="1" showstereotype="0" font="Helvetica,9,-1,5,48,0,0,0,0,0" />
+     <UML:ConceptWidget usesdiagramfillcolour="0" width="76" showattsigs="601" usesdiagramusefillcolour="0" x="210" linecolour="#ff0000" y="330" showopsigs="600" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="29" usefillcolor="1" showattributes="1" xmi.id="17" showoperations="1" showpackage="1" showscope="1" showstereotype="0" font="Helvetica,9,-1,5,48,0,0,0,0,0" />
+     <UML:ConceptWidget usesdiagramfillcolour="0" width="97" showattsigs="600" usesdiagramusefillcolour="0" x="60" linecolour="#ff0000" y="150" showopsigs="600" usesdiagramlinecolour="0" fillcolour="#dcdcdc" height="25" usefillcolor="1" showattributes="0" xmi.id="61" showoperations="0" showpackage="1" showscope="1" showstereotype="0" font="Helvetica,9,-1,5,48,0,0,0,0,0" />
+     <UML:ConceptWidget usesdiagramfillcolour="0" width="106" showattsigs="600" usesdiagramusefillcolour="0" x="178" linecolour="#ff0000" y="30" showopsigs="600" usesdiagramlinecolour="0" fillcolour="#dcdcdc" height="25" usefillcolor="1" showattributes="0" xmi.id="5" showoperations="0" showpackage="1" showscope="1" showstereotype="0" font="Helvetica,9,-1,5,48,0,0,0,0,0" />
     </widgets>
     <messages/>
     <associations>
-     <UML:AssocWidget totalcounta="2" indexa="1" totalcountb="3" indexb="1" widgetbid="7" widgetaid="17" documentation="" type="500" >
+     <UML:AssocWidget totalcounta="2" indexa="1" totalcountb="4" indexb="1" widgetbid="7" widgetaid="17" documentation="" type="500" >
       <linepath>
-       <startpoint startx="223" starty="310" />
-       <endpoint endx="269" endy="222" />
+       <startpoint startx="248" starty="330" />
+       <endpoint endx="337" endy="232" />
       </linepath>
      </UML:AssocWidget>
-     <UML:AssocWidget totalcounta="2" indexa="1" totalcountb="3" indexb="2" widgetbid="7" widgetaid="110" documentation="" type="500" >
+     <UML:AssocWidget totalcounta="2" indexa="1" totalcountb="4" indexb="2" widgetbid="7" widgetaid="110" documentation="" type="500" >
       <linepath>
-       <startpoint startx="363" starty="310" />
-       <endpoint endx="308" endy="222" />
+       <startpoint startx="366" starty="330" />
+       <endpoint endx="366" endy="232" />
       </linepath>
      </UML:AssocWidget>
      <UML:AssocWidget totalcounta="2" indexa="1" totalcountb="2" indexb="1" widgetbid="61" widgetaid="76" documentation="" type="500" >
       <linepath>
-       <startpoint startx="83" starty="310" />
-       <endpoint endx="138" endy="165" />
+       <startpoint startx="108" starty="330" />
+       <endpoint endx="108" endy="175" />
       </linepath>
      </UML:AssocWidget>
-     <UML:AssocWidget totalcounta="2" indexa="1" totalcountb="2" indexb="1" widgetbid="85" widgetaid="14" documentation="" type="500" >
+     <UML:AssocWidget totalcounta="2" indexa="1" totalcountb="3" indexb="2" widgetbid="5" widgetaid="7" documentation="" type="500" >
       <linepath>
-       <startpoint startx="504" starty="310" />
-       <endpoint endx="419" endy="165" />
+       <startpoint startx="366" starty="150" />
+       <endpoint endx="248" endy="55" />
       </linepath>
      </UML:AssocWidget>
-     <UML:AssocWidget totalcounta="2" indexa="1" totalcountb="4" indexb="2" widgetbid="5" widgetaid="7" documentation="" type="500" >
+     <UML:AssocWidget totalcounta="2" indexa="1" totalcountb="3" indexb="1" widgetbid="5" widgetaid="61" documentation="" type="500" >
       <linepath>
-       <startpoint startx="288" starty="140" />
-       <endpoint endx="288" endy="45" />
+       <startpoint startx="108" starty="150" />
+       <endpoint endx="213" endy="55" />
       </linepath>
      </UML:AssocWidget>
-     <UML:AssocWidget totalcounta="2" indexa="1" totalcountb="4" indexb="3" widgetbid="5" widgetaid="85" documentation="" type="500" >
+     <UML:AssocWidget totalcounta="2" indexa="1" totalcountb="4" indexb="3" widgetbid="7" widgetaid="14" documentation="" type="500" >
       <linepath>
-       <startpoint startx="419" starty="140" />
-       <endpoint endx="314" endy="45" />
-      </linepath>
-     </UML:AssocWidget>
-     <UML:AssocWidget totalcounta="2" indexa="1" totalcountb="4" indexb="1" widgetbid="5" widgetaid="61" documentation="" type="500" >
-      <linepath>
-       <startpoint startx="138" starty="140" />
-       <endpoint endx="261" endy="45" />
+       <startpoint startx="486" starty="330" />
+       <endpoint endx="395" endy="232" />
       </linepath>
      </UML:AssocWidget>
     </associations>
@@ -145,7 +116,6 @@ x2c:extern" name="HIT" static="0" scope="200" />
      <listitem open="1" type="803" id="-1" label="BIFE" >
       <listitem open="0" type="813" id="5" label="Container" />
       <listitem open="0" type="813" id="61" label="Fallback" />
-      <listitem open="0" type="813" id="85" label="Root" />
      </listitem>
      <listitem open="1" type="803" id="-1" label="Basic" >
       <listitem open="0" type="807" id="113" label="Basic Classes" />
@@ -165,16 +135,8 @@ x2c:extern" name="HIT" static="0" scope="200" />
        <listitem open="0" type="815" id="112" label="__construct" />
        <listitem open="0" type="815" id="142" label="getURL" />
       </listitem>
-      <listitem open="0" type="813" id="14" label="Page" >
-       <listitem open="0" type="815" id="15" label="BIFE_Page" />
-       <listitem open="0" type="815" id="53" label="__construct" />
-       <listitem open="0" type="815" id="93" label="addContents" />
-       <listitem open="0" type="815" id="90" label="render" />
-      </listitem>
-      <listitem open="0" type="813" id="17" label="Title" >
-       <listitem open="0" type="815" id="18" label="BIFE_Title" />
-       <listitem open="0" type="815" id="55" label="__construct" />
-      </listitem>
+      <listitem open="0" type="813" id="14" label="Page" />
+      <listitem open="0" type="813" id="17" label="Title" />
      </listitem>
      <listitem open="1" type="803" id="-1" label="HIT" >
       <listitem open="0" type="813" id="130" label="HIT" />