JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
metaform: revamp codegen, fix hidden fields
[wfpl.git] / template.php
index 396819d..cbb9466 100644 (file)
@@ -300,42 +300,49 @@ 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 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
+               return 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
+               return true;  # show once
 }
 
 # 'show' sections will be shown unless the corresponding data
 # value === false
-
 function tem_auto_show(&$value) {
-       if($value === null) $value = array(array());
+       if($value === null) return true;
        return $value;
 }
 
 # 'nonempty' sections will not be shown if the corresponding data
 # value is the empty string
-
 function tem_auto_nonempty(&$value) {
-       if($value === '') $value = null;
+       if($value === '') return null;
        return $value;
 }
 
+# 'not' sections will not be shown if the corresponding data
+# value is not set (opposite of default)
+function tem_auto_unset(&$value) {
+       if($value === null) {
+               return '';
+       } else {
+               return null;
+       }
+}
+
 # 'evenodd' sections are given an 'evenodd' attribute whose value
 # alternates between 'even' and 'odd'.
-
 function tem_auto_evenodd(&$values) {
        $even = true;
        if($values) foreach($values as &$value) {
@@ -397,10 +404,16 @@ class tem {
                $this->data = array();
        }
        
-       function set($key, $value) {
+       function set($key, $value = true) {
                $this->data[$key] = $value;
        }
 
+       function sets($hash) {
+               foreach($hash as $key => $value) {
+                       $this->set($key, $value);
+               }
+       }
+
        function append($key, $value) {
                $this->data[$key] .= $value;
        }
@@ -510,11 +523,16 @@ function tem_prepend($key, $value) {
        $GLOBALS['wfpl_template']->prepend($key, $value);
 }
 
-function tem_set($key, $value) {
+function tem_set($key, $value = true) {
        tem_init();
        $GLOBALS['wfpl_template']->set($key, $value);
 }
 
+function tem_sets($hash) {
+       tem_init();
+       $GLOBALS['wfpl_template']->sets($hash);
+}
+
 function tem_get($key) {
        tem_init();
        return $GLOBALS['wfpl_template']->get($key);