[Petal] Neato Tricks That Aren't Documented Anywhere

Warren Smith wsmith at platinumtel.com
Thu Jan 13 18:13:55 GMT 2005


Up until now, if I wanted to use petal to pre-select and item in a
selectbox, I would have to do each item twice, like so:

$VAR1 = [
	{ value => 1, label => 'Option 1', selected => 1 },
	{ value => 2, label => 'Option 2', selected => 0 },
	{ value => 4, label => 'Option 3', selected => 0 },
];


<select>
<div petal:repeat="option options">
<option petal:condition="true: option/selected" petal:attributes="value
option/value" petal:content="option/label" selected="selected">Option
1</option>
<option petal:condition="false: option/selected" petal:attributes="value
option/value" petal:content="option/label">Option 2</option>
</div>
</select>


After reading the Petal source, I found that if you use petal:attributes
to assign an attribute an undefined value, the attribute gets omitted,
thusly:


$VAR1 = [
	{ value => 1, label => 'Option 1', selected => 1 },
	{ value => 2, label => 'Option 2' },
	{ value => 4, label => 'Option 3' },
];

<select>
<option petal:attributes="value option/value; selected option/selected"
petal:content="option/label">Option 1</option>
</select>




Secondly, I developed a decode: modifier that works similar to Oracle's
decode statement. It should be making it into the next release of
Petal::Utils. So, making even/odd rows of a table different classes is
relatively easy.

Example:

<table>
<tr class="decode: repeat/even 1 'even' 'odd'">...</tr>
</table>




Finally, correct me if I'm wrong, but with stock Petal, you cannot
include a file with a variable filename. So Jean-Michel helped me create
an include: modifier that allows you to use variable names as include
files.

Example:

<html>
<head>
<title>My Site!</title>
</head>
<body>
<div petal:replace="structure include: main_content" />
</body>
</html>

This allows me to have a main site layout page, and then just set
main_content to whatever I want the content to be.


Yeah, yeah. I'm going to get a lot of "you didn't know that?" looks, but
I didn't (wasn't documented) and thought somebody else may be having the
same problem.





More information about the Petal mailing list