]> git.llucax.com Git - software/bife/bife-all.git/commitdiff
HTML_Template_HIT:
authorLeandro Lucarella <llucax@gmail.com>
Fri, 20 Jun 2003 04:18:50 +0000 (04:18 +0000)
committerLeandro Lucarella <llucax@gmail.com>
Fri, 20 Jun 2003 04:18:50 +0000 (04:18 +0000)
    - Added "buffering". You can add parsed templates to a biffer and then
      get all the results.
    - Added "group stacking" to keep the previos group in nested callings.
    - Updated BIFE classes to use new features.
    - Updated example.
BIFE_Link:
    - Added getURL() static method to construct an URL based on BIFE_Link
      attributes.
BIFE_Album:
    - Updated to use BIFE_Link::getURL().
General:
    - Updated ROADMAP.
    - Updated UML diagram.

16 files changed:
doc/ROADMAP
doc/bife.xmi
examples/hit.php
examples/hooks/body.tpl.html [moved from examples/hooks/body.html with 100% similarity]
examples/hooks/cell.tpl.html [moved from examples/hooks/cell.html with 100% similarity]
examples/hooks/row.tpl.html [moved from examples/hooks/row.html with 100% similarity]
src/BIFE/Album.php
src/BIFE/AlbumPhoto.php
src/BIFE/Container.php
src/BIFE/Copy.php
src/BIFE/Generic.php
src/BIFE/Link.php
src/BIFE/Menu.php
src/BIFE/Page.php
src/BIFE/Widget.php
src/HTML/Template/HIT.php

index 5e75e617c65730f3097146753bedfcfd1fd91b2a..1510d2b7069942f48336066fc310f045dffca30d 100644 (file)
@@ -3,19 +3,24 @@ $Id$
 Version 0.9
 ===========
 
-        - Finish HTML_Template_HIT.
-        - Separate Album funtionality function from renderer (BIFE_Album).
-        - Use new hooks libs.
+    - Finish HTML_Template_HIT (done?).
+
 
 Version 0.10
 ============
 
-    Makefile:
-        - Make a way to put all classes in a package together in a single file to
-          avoid overhead in require_once calls.
-        - 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.
+    - Make a way to put all classes in a package together in a single file to
+      avoid overhead in require_once calls.
+    - 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.
+
+
+Version 0.11
+============
+
+    - Separate Album funtionality function from renderer (BIFE_Album).
+    - Use new hooks libs.
 
index 29ba9c063a7ff4a0ac27641fb89b73d4048e7293..bd9743dd7617e9ee96ab06821b3c85346a7fe142 100644 (file)
@@ -9,7 +9,7 @@
   <XMI.metamodel xmi.name="UML" href="UML.xml" xmi.version="1.3" />
  </XMI.header>
  <XMI.content>
-  <docsettings viewid="132" documentation="Parse XML data getting widgets." uniqueid="138" />
+  <docsettings viewid="132" documentation="Parse XML data getting widgets." uniqueid="147" />
   <umlobjects>
    <UML:Class stereotype="" package="BIFE" xmi.id="3" abstract="1" documentation="Base widget class." name="Widget" static="0" scope="200" >
     <UML:Operation stereotype="" package="" xmi.id="126" type="void" abstract="0" documentation="Constructor." name="BIFE_Widget" static="0" scope="200" >
@@ -19,7 +19,7 @@
      <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="4" type="string" abstract="1" documentation="Renders the widget using a template returning a string with the results." name="render" static="0" scope="200" >
-     <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="&amp;HTML_Template_Sigma" abstract="0" documentation="Template object to render the widget." name="template" static="0" scope="200" />
+     <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="&amp;HTML_Template_HIT" abstract="0" documentation="Template object to render the widget." name="template" static="0" scope="200" />
     </UML:Operation>
     <UML:Attribute stereotype="" package="" xmi.id="125" value="array()" type="array" abstract="0" documentation="Attribute list." name="attrs" static="0" scope="202" />
    </UML:Class>
@@ -34,7 +34,7 @@
      <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="&amp;mixed" abstract="0" documentation="Contents to add to the container." name="contents" static="0" scope="200" />
     </UML:Operation>
     <UML:Operation stereotype="" package="" xmi.id="59" type="string" abstract="0" documentation="Renders the widget using a template returning a string with the results." name="render" static="0" scope="200" >
-     <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="&amp;HTML_Template_Sigma" abstract="0" documentation="Template object to render the widget." name="template" static="0" scope="200" />
+     <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="&amp;HTML_Template_HIT" abstract="0" documentation="Template object to render the widget." name="template" static="0" scope="200" />
     </UML:Operation>
     <UML:Attribute stereotype="" package="" xmi.id="47" value="" type="array" abstract="0" documentation="" name="contents" static="0" scope="200" />
    </UML:Class>
@@ -49,7 +49,7 @@
      <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="12" type="string" abstract="0" documentation="Renders the widget." name="render" static="0" scope="200" >
-     <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="&amp;HTML_Template_Sigma" abstract="0" documentation="Template to use to render the widget." name="template" 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" >
@@ -63,7 +63,7 @@
      <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_Sigma" abstract="0" documentation="Template to use to render the widget." name="template" 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" >
@@ -82,7 +82,7 @@
      <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="23" type="string" abstract="0" documentation="Renders the widget." name="render" static="0" scope="200" >
-     <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="&amp;HTML_Template_Sigma" abstract="0" documentation="Template to use to render the widget." name="template" 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:Operation stereotype="" package="" xmi.id="95" type="array" abstract="0" documentation="Gets a list of photos with their descriptions and thumbnails.
 
@@ -162,7 +162,7 @@ Returns an array of associative arrays with this keys:
      <UML:Parameter stereotype="" package="" xmi.id="2" value="" type="array" abstract="0" documentation="Attributes." name="attrs" static="0" scope="200" />
     </UML:Operation>
     <UML:Operation stereotype="" package="" xmi.id="82" type="void" abstract="0" documentation="Renders the widget returning a string with the results." name="render" static="0" scope="200" >
-     <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="&amp;HTML_Template_Sigma" abstract="0" documentation="Template to use to render the widget." name="template" 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="0" documentation="Root container class." name="Root" static="0" scope="200" >
@@ -181,7 +181,7 @@ Returns an array of associative arrays with this keys:
      <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="108" type="string" abstract="0" documentation="Renders the widget using a template returning a string with the results." name="render" static="0" scope="200" >
-     <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="&amp;HTML_Template_Sigma" abstract="0" documentation="Template to use to render the widget." name="template" 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="110" abstract="0" documentation="Link to another page." name="Link" static="0" scope="200" >
@@ -191,6 +191,9 @@ Returns an array of associative arrays with this keys:
     <UML:Operation stereotype="" package="" xmi.id="112" 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="142" type="string" abstract="0" documentation="Gets a URL string based on Link attributes." name="getURL" static="0" scope="200" >
+     <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="array" abstract="0" documentation="Link attributes." name="attrs" static="0" scope="200" />
+    </UML:Operation>
    </UML:Class>
    <UML:Class stereotype="" package="BIFE" xmi.id="115" abstract="0" documentation="Dynamic Menu." name="Menu" static="0" scope="200" >
     <UML:Operation stereotype="" package="" xmi.id="121" type="void" abstract="0" documentation="Constructor." name="BIFE_Menu" static="0" scope="200" >
@@ -200,7 +203,7 @@ Returns an array of associative arrays with this keys:
      <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="117" type="string" abstract="0" documentation="Renders the widget using a template returning a string with the results." name="render" static="0" scope="200" >
-     <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="&amp;HTML_Template_Sigma" abstract="0" documentation="Template to use to render the widget." name="template" 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="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" >
@@ -212,16 +215,35 @@ Returns an array of associative arrays with this keys:
      <UML:Parameter stereotype="" package="" xmi.id="1" value="'.'" type="int" abstract="0" documentation="Root directory where template files are." name="root" static="0" scope="200" />
      <UML:Parameter stereotype="" package="" xmi.id="2" value="''" type="int" abstract="0" documentation="Group of templates to use (a subdirectory in root)." name="group" static="0" scope="200" />
     </UML:Operation>
-    <UML:Operation stereotype="" package="" xmi.id="138" type="void" abstract="0" documentation="Parse a template.
+    <UML:Operation stereotype="" package="" xmi.id="138" type="string" abstract="0" documentation="Parse a template returning the results.
 
 If $vars is an array, the {[keys]} are replaced with [values] ($val is ignored). If is a string, {$vars} is replaced with $val." name="parse" static="0" scope="200" >
      <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="string" abstract="0" documentation="Name of template to parse." name="name" static="0" scope="200" />
      <UML:Parameter stereotype="" package="" xmi.id="2" value="''" type="mixed" abstract="0" documentation="Variables to replace in the template." name="vars" static="0" scope="200" />
      <UML:Parameter stereotype="" package="" xmi.id="3" value="''" type="string" abstract="0" documentation="If $vars is a string, the value to replace for $vars." name="val" static="0" scope="200" />
     </UML:Operation>
+    <UML:Operation stereotype="" package="" xmi.id="144" type="void" abstract="0" documentation="Parse a template buffering the results.
+
+Parse a template appending the results to an internal buffer. If $vars is an array, the {[keys]} are replaced with [values] ($val is ignored). If is a string, {$vars} is replaced with $val." name="parseBuffered" static="0" scope="200" >
+     <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="string" abstract="0" documentation="Name of template to parse." name="name" static="0" scope="200" />
+     <UML:Parameter stereotype="" package="" xmi.id="2" value="''" type="mixed" abstract="0" documentation="Variables to replace in the template." name="vars" static="0" scope="200" />
+     <UML:Parameter stereotype="" package="" xmi.id="3" value="''" type="string" abstract="0" documentation="If $vars is a string, the value to replace for $vars." name="val" static="0" scope="200" />
+    </UML:Operation>
+    <UML:Operation stereotype="" package="" xmi.id="145" type="string" abstract="0" documentation="Gets a parsed buffer." name="getBuffer" static="0" scope="200" >
+     <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="string" abstract="0" documentation="Name of the parsed template to get." name="name" static="0" scope="200" />
+     <UML:Parameter stereotype="" package="" xmi.id="2" value="true" type="bool" abstract="0" documentation="Flush buffer." name="flush" static="0" scope="200" />
+    </UML:Operation>
+    <UML:Operation stereotype="" package="" xmi.id="146" type="void" abstract="0" documentation="Gets a parsed buffer and removes it." name="popBuffer" static="0" scope="200" >
+     <UML:Parameter stereotype="" package="" xmi.id="1" value="''" type="int" abstract="0" documentation="Name of the buffer to flush." name="name" static="0" scope="200" />
+    </UML:Operation>
+    <UML:Operation stereotype="" package="" xmi.id="139" type="void" abstract="0" documentation="Sets the group to use and add it to the groups stack." name="setGroup" static="0" scope="200" >
+     <UML:Parameter stereotype="" package="" xmi.id="1" value="''" type="string" abstract="0" documentation="Group to use." name="group" static="0" scope="200" />
+    </UML:Operation>
+    <UML:Operation stereotype="" package="" xmi.id="140" type="void" abstract="0" documentation="Removes the group from the groups stack and returns to the previous used group." name="unsetGroup" static="0" scope="200" />
     <UML:Attribute stereotype="" package="" xmi.id="133" value="'.'" type="string" abstract="0" documentation="Root directory where template files are." name="root" static="0" scope="200" />
-    <UML:Attribute stereotype="" package="" xmi.id="134" value="''" type="string" abstract="0" documentation="Group of templates to use (a subdirectory in root)." name="group" static="0" scope="200" />
+    <UML:Attribute stereotype="" package="" xmi.id="134" value="''" type="string" abstract="0" documentation="Group of templates to use (a subdirectory in root)." name="group" static="0" scope="202" />
     <UML:Attribute stereotype="" package="" xmi.id="135" value="array()" type="array" abstract="0" documentation="Templates cache." name="cache" static="0" scope="202" />
+    <UML:Attribute stereotype="" package="" xmi.id="147" value="array()" type="array" abstract="0" documentation="" name="buffer" static="0" scope="202" />
    </UML:Class>
   </umlobjects>
   <diagrams>
@@ -268,7 +290,7 @@ If $vars is an array, the {[keys]} are replaced with [values] ($val is ignored).
     <widgets>
      <UML:ConceptWidget usesdiagramfillcolour="0" width="120" showattsigs="601" usesdiagramusefillcolour="0" x="56" linecolour="#ff0000" y="350" showopsigs="600" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="81" 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="1" width="131" showattsigs="601" usesdiagramusefillcolour="1" x="265" linecolour="none" y="180" showopsigs="600" usesdiagramlinecolour="1" fillcolour="none" height="99" 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="120" showattsigs="601" usesdiagramusefillcolour="1" x="345" linecolour="none" y="350" showopsigs="600" usesdiagramlinecolour="1" fillcolour="none" height="63" 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="1" width="120" showattsigs="601" usesdiagramusefillcolour="1" x="345" linecolour="none" y="350" showopsigs="600" usesdiagramlinecolour="1" fillcolour="none" height="81" 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="127" showattsigs="601" usesdiagramusefillcolour="0" x="499" linecolour="#ff0000" y="350" showopsigs="600" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="99" 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="1" width="120" showattsigs="601" usesdiagramusefillcolour="1" x="205" linecolour="none" y="350" showopsigs="600" usesdiagramlinecolour="1" fillcolour="none" height="63" 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="134" showattsigs="601" usesdiagramusefillcolour="0" x="50" linecolour="#ff0000" y="180" showopsigs="600" usesdiagramlinecolour="0" fillcolour="#dcdcdc" height="72" 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" />
@@ -455,7 +477,7 @@ If $vars is an array, the {[keys]} are replaced with [values] ($val is ignored).
    </diagram>
    <diagram snapgrid="1" showattsig="1" fillcolor="#ffffc0" showgrid="1" showopsig="0" usefillcolor="1" snapx="10" snapy="10" showatts="1" xmi.id="132" documentation="" type="402" showops="1" showpackage="1" name="HIT Classes" localid="30000" showstereotype="0" showscope="1" font="Helvetica,9,-1,5,50,0,0,0,0,0" linecolor="#ff0000" >
     <widgets>
-     <UML:ConceptWidget usesdiagramfillcolour="0" width="180" showattsigs="601" usesdiagramusefillcolour="0" x="50" linecolour="#ff0000" y="40" showopsigs="600" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="126" usefillcolor="1" showattributes="1" xmi.id="130" showoperations="1" showpackage="1" showscope="1" showstereotype="0" font="Helvetica,9,-1,5,50,0,0,0,0,0" />
+     <UML:ConceptWidget usesdiagramfillcolour="0" width="181" showattsigs="601" usesdiagramusefillcolour="0" x="50" linecolour="#ff0000" y="40" showopsigs="600" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="234" usefillcolor="1" showattributes="1" xmi.id="130" showoperations="1" showpackage="1" showscope="1" showstereotype="0" font="Helvetica,9,-1,5,50,0,0,0,0,0" />
     </widgets>
     <messages/>
     <associations/>
@@ -499,6 +521,7 @@ If $vars is an array, the {[keys]} are replaced with [values] ($val is ignored).
       <listitem open="0" type="813" id="110" label="Link" >
        <listitem open="0" type="815" id="111" label="BIFE_Link" />
        <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="93" label="addContents" />
@@ -552,13 +575,19 @@ If $vars is an array, the {[keys]} are replaced with [values] ($val is ignored).
       </listitem>
      </listitem>
      <listitem open="1" type="803" id="-1" label="HIT" >
-      <listitem open="1" type="813" id="130" label="HIT" >
+      <listitem open="0" type="813" id="130" label="HIT" >
+       <listitem open="0" type="814" id="147" label="buffer" />
        <listitem open="0" type="814" id="135" label="cache" />
        <listitem open="0" type="815" id="137" label="__construct" />
+       <listitem open="0" type="815" id="145" label="getBuffer" />
        <listitem open="0" type="814" id="134" label="group" />
        <listitem open="0" type="815" id="136" label="HTML_Template_HIT" />
        <listitem open="0" type="815" id="138" label="parse" />
+       <listitem open="0" type="815" id="144" label="parseBuffered" />
+       <listitem open="0" type="815" id="146" label="popBuffer" />
        <listitem open="0" type="814" id="133" label="root" />
+       <listitem open="0" type="815" id="139" label="setGroup" />
+       <listitem open="0" type="815" id="140" label="unsetGroup" />
       </listitem>
       <listitem open="1" type="807" id="132" label="HIT Classes" />
      </listitem>
index 9dae06df75656afbff5a7213d46a22bc879e6bf3..0f7ce4754b6bf7bbce787b178f609ae4514f2cf3 100644 (file)
@@ -37,14 +37,18 @@ require_once 'HTML/Template/HIT.php';
 
 $hit =& new HTML_Template_HIT('hooks');
 
-$rows = '';
 for ($i = 0; $i < 20; $i++) {
-    $cells = '';
     for ($j = 0; $j < 20; $j++) {
-        $cells .= $hit->parse('cell', array('CELL' => "$i,$j"));
+        $hit->parseBuffered('cell', 'CELL', "$i,$j");
     }
-    $rows .= $hit->parse('row', array('ROW' => $cells, 'CACA' => 'fea'));
+    $hit->parseBuffered('row', 'ROW', $hit->popBuffer('cell'));
 }
-echo $hit->parse('body', array('ROWS' => $rows, 'TITLE' => 'HOLA MUNDO!!!'));
+echo $hit->parse(
+    'body',
+    array(
+        'ROWS' => $hit->popBuffer('row'),
+        'TITLE' => 'HOLA MUNDO!!!',
+    )
+);
 
 ?>
index 90333897a6c4143afe5ff38220cb22a092b3a009..9eb1e2ddb8b8efd4c0b5e4ea1923e7e637e571a4 100644 (file)
@@ -91,46 +91,59 @@ class BIFE_Album extends BIFE_Widget {
     /**
      * Renders the widget.
      *
-     * @param  HTML_Template_Sigma &$template Template to use to render the widget.
+     * @param  HTML_Template_HIT &$template Template to use to render the widget.
      *
      * @return string
      * @access public
      */
     function render(&$template) // ~X2C
     {
-        $template->group = 'album';
+        $template->setGroup('album');
         $list = $this->getList();
         $tot  = count($list);
         $rows = ceil($tot / $this->attrs['COLUMNS']);
-        $html_rows = '';
         for ($row = 0; $row < $rows; $row++) {
-            $html_cells = '';
             for ($col = 0; $col < $this->attrs['COLUMNS']; $col++) {
                 $cur = $row * $this->attrs['COLUMNS'] + $col;
                 if ($photo = @$list[$cur]) {
                     if (is_null($photo['THUMB'])) {
                         $photo['THUMB'] = $this->makeThumb($photo['FILE']);
                     }
-                    // FIXME - Si no se pudo crear el thumb, devuelve null
-                    // (ver si se agrega otro template para indicar error
-                    // o algo asi).
-                    $photo['URL'] = $this->attrs['LINK-URL'] .
-                        '?BIFE_ALBUM_FILE=' . urlencode($photo['FILE']);
-                    if ($this->attrs['LINK-BIFE']) {
-                        $photo['URL'] .= '&BIFE=' .
-                            urlencode($this->attrs['LINK-BIFE']);
-                    }
-                    $html_cell = $template->parse('item', $photo);
+                    /* XXX - Con objetos. *
+                    $link =& new BIFE_Link(
+                        array(
+                            'BIFE'                  => $this->attrs['LINK-BIFE'],
+                            'URL'                   => $this->attrs['LINK-URL'],
+                            'DESC'                  => $photo['DESC'],
+                            'DATA-BIFE_ALBUM_FILE'  => $photo['FILE'],
+                        )
+                    );
+                    $link->addContents($template->parse('item', $photo));
+                    $out_cell = $link->render($template);
+                    /**/
+                    /* XXX - Intermedio, obteniendo el URL de Link. */
+                    $photo['URL'] = BIFE_Link::getURL(
+                        array(
+                            'BIFE'                  => $this->attrs['LINK-BIFE'],
+                            'URL'                   => $this->attrs['LINK-URL'],
+                            'DATA-BIFE_ALBUM_FILE'  => $photo['FILE'],
+                        )
+                    );
+                    $cell = $template->parse('item', $photo);
+                    /**/
                 } else {
-                    $html_cell = $template->parse('empty');
+                    $cell = $template->parse('empty');
                 }
-                $html_cells .= $template->parse('cell', 'CONTENTS', $html_cell);
+                $template->parseBuffered('cell', 'CONTENTS', $cell);
             }
-            $html_rows .= $template->parse('row', 'CONTENTS', $html_cells);
+            $template->parseBuffered('row', 'CONTENTS', $template->popBuffer('cell'));
         }
-        return $template->parse(
+        $out = $template->parse(
             'body',
-            array('DESC' => $this->getDescription(), 'CONTENTS' => $html_rows));
+            array('DESC' => $this->getDescription(), 'CONTENTS' => $template->popBuffer('row'))
+        );
+        $template->unsetGroup();
+        return $out;
     }
     // -X2C
 
index 1c63d781c739216d58ea57d58aea68c2e4319487..c0ffa0646000f556aa0cf80cfefc84ae3e22099c 100644 (file)
@@ -75,15 +75,17 @@ class BIFE_AlbumPhoto extends BIFE_Widget {
     /**
      * Renders the widget using a template returning a string with the results.
      *
-     * @param  HTML_Template_Sigma &$template Template to use to render the widget.
+     * @param  HTML_Template_HIT &$template Template to use to render the widget.
      *
      * @return string
      * @access public
      */
     function render(&$template) // ~X2C
     {
-        $template->group = 'album';
-        return $template->parse('photo', $this->attrs);
+        $template->setGroup('album');
+        $out = $template->parse('photo', $this->attrs);
+        $template->unsetGroup();
+        return $out;
     }
     // -X2C
 
index 7c138ac5830b7989c9ec5b5dbdcbe883f2e8af04..a1540b8f2a9a63e7827d5d5635f81ffe5a9b74d1 100644 (file)
@@ -100,7 +100,7 @@ class BIFE_Container extends BIFE_Widget {
     /**
      * Renders the widget using a template returning a string with the results.
      *
-     * @param  HTML_Template_Sigma &$template Template object to render the widget.
+     * @param  HTML_Template_HIT &$template Template object to render the widget.
      *
      * @return string
      * @access public
index c4bbe39886565e9dc9b4bfdb0eaaadd49eb0b8fe..f58dec1cb03e80a84842e0e3bfdab6eaf3a885b6 100644 (file)
@@ -75,7 +75,7 @@ class BIFE_Copy extends BIFE_Fallback {
     /**
      * Renders the widget returning a string with the results.
      *
-     * @param  HTML_Template_Sigma &$template Template to use to render the widget.
+     * @param  HTML_Template_HIT &$template Template to use to render the widget.
      *
      * @return void
      * @access public
index c1a1b6065e2445e26081f7e76106b42993ea152b..bbda5bdc52cc6256ee46461395d6c9182a7a541b 100644 (file)
@@ -94,7 +94,7 @@ class BIFE_Generic extends BIFE_Container {
     /**
      * Renders the widget.
      *
-     * @param  HTML_Template_Sigma &$template Template to use to render the widget.
+     * @param  HTML_Template_HIT &$template Template to use to render the widget.
      *
      * @return string
      * @access public
@@ -102,8 +102,10 @@ class BIFE_Generic extends BIFE_Container {
     function render(&$template) // ~X2C
     {
         $this->attrs['CONTENTS'] = parent::render($template);
-        $template->group = '';
-        return $template->parse(get_class($this), $this->attrs);
+        $template->setGroup();
+        $out = $template->parse(get_class($this), $this->attrs);
+        $template->unsetGroup();
+        return $out;
     }
     // -X2C
 
index 56e401c64ade0740146b63b4fbedf67f222290f0..02a3c80be43e537d8b55e55b2b766f0790f703a1 100644 (file)
@@ -89,6 +89,38 @@ class BIFE_Link extends BIFE_Generic {
     }
     // -X2C
 
+    // +X2C Operation 142
+    /**
+     * Gets a URL string based on Link attributes.
+     *
+     * @param  array $attrs Link attributes.
+     *
+     * @return string
+     * @access public
+     */
+    function getURL($attrs) // ~X2C
+    {
+        $url = @$attrs['URL'];
+        unset($attrs['URL']);
+        if (isset($attrs['BIFE'])) {
+            $attrs['DATA-BIFE']  = $attrs['BIFE'];
+            unset($attrs['BIFE']);
+        }
+        $query = array();
+        foreach($attrs as $name => $value) {
+            if (substr($name, 0, 5) === 'DATA-') {
+                if ($name = substr($name, 5)) {
+                    $query[] = urlencode($name) . '=' . urlencode($value);
+                }
+            }
+        }
+        if ($query) {
+            $url .= '?' . join('&', $query);
+        }
+        return $url;
+    }
+    // -X2C
+
 } // -X2C Class :Link
 
 ?>
\ No newline at end of file
index 49923d2f1a43ee5b54f4a0a196e16fe92a6e3b0c..f7133b8c82e73c19c39bd229775556b51410a292 100644 (file)
@@ -45,7 +45,7 @@ class BIFE_Menu extends BIFE_Widget {
     /**
      * Renders the widget using a template returning a string with the results.
      *
-     * @param  HTML_Template_Sigma &$template Template to use to render the widget.
+     * @param  HTML_Template_HIT &$template Template to use to render the widget.
      *
      * @return string
      * @access public
index 10a63d01343c397b6bcd8190aa7a5f0c47316ef5..0bff2f950508b5d2c94cb9b027ab2d4deae5dc31 100644 (file)
@@ -93,7 +93,7 @@ class BIFE_Page extends BIFE_Root {
     /**
      * Returns the rendered widget as a string.
      *
-     * @param  HTML_Template_Sigma &$template Template to use to render the widget.
+     * @param  HTML_Template_HIT &$template Template to use to render the widget.
      *
      * @return string
      * @access public
@@ -101,8 +101,10 @@ class BIFE_Page extends BIFE_Root {
     function render(&$template) // ~X2C
     {
         $this->attrs['CONTENTS'] = parent::render($template);
-        $template->group = '';
-        return $template->parse('bife_page', $this->attrs);
+        $template->setGroup();
+        $out = $template->parse('bife_page', $this->attrs);
+        $template->unsetGroup();
+        return $out;
     }
     // -X2C
 
index 338cdf6e284f937649ae8258e94c66edc4b82b1f..c000452a7e0cb3bdc4349f0cf66956e9700f39be 100644 (file)
@@ -78,7 +78,7 @@ class BIFE_Widget {
     /**
      * Renders the widget using a template returning a string with the results.
      *
-     * @param  HTML_Template_Sigma &$template Template object to render the widget.
+     * @param  HTML_Template_HIT &$template Template object to render the widget.
      *
      * @return string
      * @access public
index de67d2c5e849fe65c7248bc9cd81dcf1459eace3..6da0b7be5a858b03f9dadaf95a9d160afd536339 100644 (file)
@@ -45,7 +45,7 @@ class HTML_Template_HIT {
      * Group of templates to use (a subdirectory in root).
      *
      * @var    string $group
-     * @access public
+     * @access protected
      */
     var $group = '';
 
@@ -57,6 +57,12 @@ class HTML_Template_HIT {
      */
     var $cache = array();
 
+    /**
+     * @var    array $buffer
+     * @access protected
+     */
+    var $buffer = array();
+
     // ~X2C
 
     // +X2C Operation 136
@@ -87,27 +93,28 @@ class HTML_Template_HIT {
      */
     function __construct($root = '.', $group = '') // ~X2C
     {
-        $this->root  = $root;
-        $this->group = $group;
+        $this->root = $root;
+        $this->setGroup($group);
     }
     // -X2C
 
     // +X2C Operation 138
     /**
-     * Parse a template.
+     * Parse a template returning the results.
 If $vars is an array, the {[keys]} are replaced with [values] ($val is ignored). If is a string, {$vars} is replaced with $val.
      *
      * @param  string $name Name of template to parse.
      * @param  mixed $vars Variables to replace in the template.
      * @param  string $val If $vars is a string, the value to replace for $vars.
      *
-     * @return void
+     * @return string
      * @access public
      */
     function parse($name, $vars = '', $val = '') // ~X2C
     {
-        if ($this->group) {
-            $file = "{$this->root}/{$this->group}/$name.tpl.html";
+        $group = end($this->group);
+        if ($group) {
+            $file = "{$this->root}/$group/$name.tpl.html";
         } else {
             $file = "{$this->root}/$name.tpl.html";
         }
@@ -132,6 +139,89 @@ If $vars is an array, the {[keys]} are replaced with [values] ($val is ignored).
     }
     // -X2C
 
+    // +X2C Operation 144
+    /**
+     * Parse a template buffering the results.
+Parse a template appending the results to an internal buffer. If $vars is an array, the {[keys]} are replaced with [values] ($val is ignored). If is a string, {$vars} is replaced with $val.
+     *
+     * @param  string $name Name of template to parse.
+     * @param  mixed $vars Variables to replace in the template.
+     * @param  string $val If $vars is a string, the value to replace for $vars.
+     *
+     * @return void
+     * @access public
+     */
+    function parseBuffered($name, $vars = '', $val = '') // ~X2C
+    {
+        @$this->buffer["{$this->group}/$name"] .= $this->parse($name, $vars, $val);
+    }
+    // -X2C
+
+    // +X2C Operation 145
+    /**
+     * Gets a parsed buffer.
+     *
+     * @param  string $name Name of the parsed template to get.
+     * @param  bool $flush Flush buffer.
+     *
+     * @return string
+     * @access public
+     */
+    function getBuffer($name, $flush = true) // ~X2C
+    {
+        return @$this->buffer["{$this->group}/$name"];
+    }
+    // -X2C
+
+    // +X2C Operation 146
+    /**
+     * Gets a parsed buffer and removes it.
+     *
+     * @param  int $name Name of the buffer to flush.
+     *
+     * @return void
+     * @access public
+     */
+    function popBuffer($name = '') // ~X2C
+    {
+        $return = @$this->buffer["{$this->group}/$name"];
+        unset($this->buffer["{$this->group}/$name"]);
+        return $return;
+    }
+    // -X2C
+
+    // +X2C Operation 139
+    /**
+     * Sets the group to use and add it to the groups stack.
+     *
+     * @param  string $group Group to use.
+     *
+     * @return void
+     * @access public
+     */
+    function setGroup($group = '') // ~X2C
+    {
+        if ($group) {
+            $this->group[] = $group;
+        } else {
+            $this->group[] = '';
+        }
+    }
+    // -X2C
+
+    // +X2C Operation 140
+    /**
+     * Removes the group from the groups stack and returns to the previous used group.
+     *
+     * @return void
+     * @access public
+     */
+    function unsetGroup() // ~X2C
+    {
+        array_pop($this->group);
+    }
+    // -X2C
+
 } // -X2C Class :HIT
 
-?>
+?>
\ No newline at end of file