Hi,
I have a first rough implementation of conditional objects in templates.
An object in a template file can have an extra attribute called
'conditional', which holds a condition like 'varname==value'. '==' can
be '!=', or '<=' or any other expression. 'varname' is any $CONFIG variable.
In the example the messagelist is only shown if the mailbox-name is 'INBOX'.
Am I going in the right direction?
Robin
Index: program/include/main.inc
===================================================================
--- program/include/main.inc (revision 369)
+++ program/include/main.inc (working copy)
@@ -1225,7 +1225,18 @@
// execute object handler function
if ($object_handlers[$object] && function_exists($object_handlers[$object]))
- return call_user_func($object_handlers[$object], $attrib);
+ {
+ if (isset($attrib['conditional']) &&
+ preg_match('/^([a-z0-9_]+)([=<>!]+)([a-z0-9_]+)$/', $attrib['conditional'], $condition))
+ {
+ if (eval("return $" . $condition[1] . $condition[2] . "'" . $condition[3] . "'"))
+ return call_user_func($object_handlers[$object], $attrib);
+ else
+ return '';
+ }
+ else
+ return call_user_func($object_handlers[$object], $attrib);
+ }
else if ($object=='productname')
{
Index: skins/default/templates/mail.html
===================================================================
--- skins/default/templates/mail.html (revision 369)
+++ skins/default/templates/mail.html (working copy)
@@ -45,6 +45,7 @@
id="messagelist"
cellspacing="0"
summary="Message list"
+ conditional="mailbox==INBOX"
messageIcon="/images/icons/dot.png"
unreadIcon="/images/icons/unread.png"
deletedIcon="/images/icons/deleted.png"