From: Jason Woofenden Date: Wed, 4 Nov 2009 11:14:09 +0000 (-0500) Subject: added tem_auto_last() and tem_auto_first() X-Git-Url: https://jasonwoof.com/gitweb/?p=wfpl.git;a=commitdiff_plain;h=23c5e0913ba24aa1c689dc75577de581661858e6 added tem_auto_last() and tem_auto_first() --- diff --git a/template.php b/template.php index 44db726..85132c3 100644 --- a/template.php +++ b/template.php @@ -57,7 +57,7 @@ function parse_template_file($filename) { return parse_template(file_get_contents($filename)); } -# We parse the template string into a tree of strings and sub-templates. +# We parse the template string into a tree of strings and sub-templates. # A template is a hash with a name string, a pieces array, and possibly # an args array. @@ -85,7 +85,7 @@ function parse_template($string) { array_pop($args); # drop '}' $cur = $tem['name']; if($name && $name != $cur) { - die("Invalid template: tried to close '$name', but '$cur' is current."); + die("Invalid template: tried to close '$name', but '$cur' is current."); } $tem =& $tem['parent']; } else { # value slot @@ -209,7 +209,7 @@ function &tem_row_data($tem, $context) if(count($tem['args'])) { $auto_func = "tem_auto_" . $tem['args'][0]; function_exists($auto_func) - or die("ERROR: template auto function '$auto_func' not found.
\n"); + or die("ERROR: template auto function '$auto_func' not found.
\n"); } if($auto_func) $value = $auto_func($scope['data'][$key], $key, $scope); else $value = $scope['data'][$key]; @@ -244,7 +244,7 @@ function top_sub_templates($tem, $is_sub = 'is_sub_template') { $subs = array(); foreach($tem['pieces'] as $piece) { if($is_sub($piece)) { - $subs[$piece['name']] = $piece; + $subs[$piece['name']] = $piece; } } return $subs; @@ -286,7 +286,21 @@ function merge_templates($main, $tem) { function tem_auto_sep(&$value, $key, $context) { $rows =& $context['parent']['parent']; if($rows['cur'] != count($rows['rows'])-1) # last row? - return $value = true; # show once + return $value = true; # show once +} + +# auto-show once, only when this is the first row of the parent +function tem_auto_last(&$value, $key, $context) { + $rows =& $context['parent']['parent']; + if($rows['cur'] == count($rows['rows'])-1) # last row? + return $value = true; # show once +} + +# auto-show once, only when this is the last row of the parent +function tem_auto_first(&$value, $key, $context) { + $rows =& $context['parent']['parent']; + if($rows['cur'] == 0) # first row? + return $value = true; # show once } # 'show' sections will be shown unless the corresponding data value @@ -359,7 +373,7 @@ class tem { function tem() { $this->template = array('pieces' => array()); $this->data = array(); - } + } function set($key, $value) { $this->data[$key] = $value;