Got questions, comments, patches, etc.?
Contact Jason Woofenden
gitweb
/
wfpl.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (from parent 1:
85a25a3
)
* template.php (tem->merge): only append expansions for show()n templates.
author
Josh Grams
<josh@qualdan.com>
Sun, 23 Aug 2009 23:52:44 +0000
(19:52 -0400)
committer
Josh Grams
<josh@qualdan.com>
Sun, 23 Aug 2009 23:52:44 +0000
(19:52 -0400)
template.php
patch
|
blob
|
history
diff --git
a/template.php
b/template.php
index
5ac7f80
..
6aba82b
100644
(file)
--- a/
template.php
+++ b/
template.php
@@
-234,12
+234,16
@@
function tem_encoded_data($tag, $context)
}
}
+function is_sub_template($piece) {
+ return is_array($piece) and $piece['pieces'];
+}
# Return a hash containing the top-level sub-templates of tem.
# Return a hash containing the top-level sub-templates of tem.
-function top_sub_templates($tem) {
+function top_sub_templates($tem, $is_sub = 'is_sub_template') {
+ function_exists($is_sub) or die("no such function '$is_sub'.");
$subs = array();
foreach($tem['pieces'] as $piece) {
$subs = array();
foreach($tem['pieces'] as $piece) {
- if(is_array($piece) and $piece['pieces']) {
+ if($is_sub($piece)) {
$subs[$piece['name']] = $piece;
}
}
$subs[$piece['name']] = $piece;
}
}
@@
-312,6
+316,14
@@
function tem_auto_evenodd(&$values) {
# Backward Compatibility
# ----------------------
# Backward Compatibility
# ----------------------
+function is_shown($piece) {
+ return $piece['args'][0] == 'hide';
+}
+
+function is_shown_sub_template($piece) {
+ return is_sub_template($piece) and is_shown($piece);
+}
+
# Old-style templates don't show unless explicitly requested.
function tem_auto_hide(&$value, $key, $context) {
unset($context['data'][$key]);
# Old-style templates don't show unless explicitly requested.
function tem_auto_hide(&$value, $key, $context) {
unset($context['data'][$key]);
@@
-322,10
+334,12
@@
function tem_auto_hide(&$value, $key, $context) {
# so hide it and insert a value slot for its expansion(s).
function &tem_is_old_sub($name, &$template) {
foreach($template['pieces'] as $key => &$piece) {
# so hide it and insert a value slot for its expansion(s).
function &tem_is_old_sub($name, &$template) {
foreach($template['pieces'] as $key => &$piece) {
- if(is_array($piece) and $piece['pieces']) {
+ if(is_sub_template($piece)) {
if($piece['name'] == $name) {
if($piece['name'] == $name) {
- if($piece['args'][0] != 'hide') { # if we haven't already
+ if(!is_shown($piece)) {
+ # hide template unless explicitly show()n.
$piece['args'] = array('hide');
$piece['args'] = array('hide');
+ # insert a value slot with the same name (for the expansion).
$var = array('name' => $name, 'args' => array());
array_splice($template['pieces'], $key, 0, array($var));
}
$var = array('name' => $name, 'args' => array());
array_splice($template['pieces'], $key, 0, array($var));
}
@@
-403,7
+417,8
@@
class tem {
# supporting both new and old semantics.
function merge($tem) {
# append expansions to $this->data (old style)
# supporting both new and old semantics.
function merge($tem) {
# append expansions to $this->data (old style)
- $subs = $tem->top_subs();
+
+ $subs = $tem->top_subs('is_shown_sub_template');
if($subs) foreach($subs as $name => $val) {
$this->append($name, $val);
unset($tem->data[$name]); # so array_merge() won't overwrite things
if($subs) foreach($subs as $name => $val) {
$this->append($name, $val);
unset($tem->data[$name]); # so array_merge() won't overwrite things
@@
-414,13
+429,13
@@
class tem {
$this->template = merge_templates($this->template, $tem->template);
}
$this->template = merge_templates($this->template, $tem->template);
}
- function top_sub_names() {
- return array_keys(top_sub_templates($this->template));
+ function top_sub_names($is_sub = 'is_sub_template') {
+ return array_keys(top_sub_templates($this->template, $is_sub));
}
}
- function top_subs() {
+ function top_subs($is_sub = 'is_sub_template') {
$ret = array();
$ret = array();
- $names = $this->top_sub_names();
+ $names = $this->top_sub_names($is_sub);
foreach($names as $name) {
$ret[$name] = $this->get($name);
}
foreach($names as $name) {
$ret[$name] = $this->get($name);
}