Categories > TinyButStrong general >

ondata func inside a serial block?

The forum is closed. Please use Stack Overflow for submitting new questions. Use tags: tinybutstrong , opentbs
By: TomH
Date: 2009-03-11
Time: 22:44

ondata func inside a serial block?

Hello
I am attempting to display checkboxes using a serial display -- and I need to set some of them them as "checked" depending on the result of a db query
my template
                    <table class="sustain_crit" border=0 cellspacing=0 cellpadding=0 >                                               
                    <tr bgcolor="">
                    <plug>
                <td width="3%" nowrap=nowrap class="td-crit">
                    <!-- [by.val;ondata=checkme;]  -->
                    <input class="check-box" type="checkbox" name="sustainable[]" value="[by_1.val; noerr]"
                    [by.ischecked;noerr] />
                    </td>
                <td width="30%" nowrap=nowrap class="td-crit">
                    <span class="text-mini">[by_1.val; block=td;]</span>
              </td>
                    </plug>
                   
                    <plug>
                <td width="3%" nowrap=nowrap class="td-crit">
                    <input class="check-box" type="checkbox" name="sustainable[]" value="[by_2.val;noerr]" [chk.ischecked;noerr] >
              </td>
                <td width="31%" nowrap=nowrap>
                    <span class="text-mini">[by_2.val;block=td]</span></div>
              </td>
                    </plug>
                   
                    <plug>
                <td width="3%" nowrap=nowrap class="td-crit">
                    <input class="check-box" type="checkbox" name="sustainable[]" value="[by_3.val;noerr]" [chk.ischecked;noerr] >        
                    </td>
                <td width="30%" nowrap=nowrap class="td-crit">
                    <span class="text-mini">[by_3.val;block=td]</span>[by;block=tr;serial]</div>
              </td>
                    </plug>
                   
                  </tr>
   
                  <tr bgcolor="">
                <td valign="middle">&nbsp;</td>
                <td colspan="2" valign="middle" class="text-mini"><font color="#666666">This line is optional</font><font color="#666666">, it enables you to<br>define the empty cell.</font></td>
                <td valign="middle" bgcolor="#E4F1E4"><div align="center"> &#160; <span class="text-mini">[by_0;block=td]</span> [by;block=tr;serial]
              </div>
                    </td>
                  </tr>
                    </table>
For simplicity my php function is just trying to check all boxes to get this working
$setarray = array('Recycled Content','Recylable','Rapidly Renewable','GreenGuard Certified','Cradle to Cradle','FSC Certified','SCS Certified','Low Maintenance','Exceptional Durability');

$TBS->MergeBlock('by',$setarray);
$TBS->Show();

function checkme($BlockName,&$CurrRec,$RecNum){
$CurrRec['ischecked'] = " checked ";
}

Can anyone see what I'm doing wrong???

Thanks a lot
By: Skrol29
Date: 2009-03-12
Time: 10:49

Re: ondata func inside a serial block?

Hi TomH,

Parameter "ondata=checkme" should be placed on the same TBS fields as "block=...", otherwise it is ignored. All block parameter should be placed on the same tag that defines the block.
By: TomH
Date: 2009-03-12
Time: 12:35

Re: ondata func inside a serial block?

Hi Skrol,
this is what worked
<plug>
<td width="3%" nowrap=nowrap class="td-crit">
<input class="check-box" type="checkbox" name="sustainable[]" value="[by_1.val; noerr]" checked="[by_1.ischecked;noerr]" />
</td>
<td width="30%" nowrap=nowrap class="td-crit">
<span class="text-mini">[by_1.val; block=plug;ondata=checkme;]</span>
</td>
</plug>
Normally (my experience) the ondata call needs to be placed before the 'calculated' field in order for it to work. But in this case I had to move it to the last field in the block.
Is that unique to the serial block -or- am I missing something different at work here?
Thanks a lot for your kind help as usual,
TomH
By: TomH
Date: 2009-03-12
Time: 13:14

Re: ondata func inside a serial block?

My error, is not working.
My html syntax was incorrect, by improperly using the checked="[by_1]" the checkbox is checked for any value of by_1 (even null).
<plug>-- this code --
<td width="3%" nowrap=nowrap class="td-crit">
<input class="check-box" type="checkbox" name="sustainable[]" value="[by_1.val; noerr]" checked="[by_1.ischecked;noerr]" />
</td>
<td width="30%" nowrap=nowrap class="td-crit">
<span class="text-mini">[by_1.val; block=plug;ondata=checkme;]</span>
</td>
</plug>
-- should have been --
<plug>
<td width="3%" nowrap=nowrap class="td-crit">
<input class="check-box" type="checkbox" name="sustainable[]" value="[by_1.val; noerr]" [by_1.ischecked;noerr] />
</td>
<td width="30%" nowrap=nowrap class="td-crit">
<span class="text-mini">[by_1.val; block=plug; noerr]</span>
</td>
</plug>
                   
<plug>
<td width="3%" nowrap=nowrap class="td-crit">
<input class="check-box" type="checkbox" name="sustainable[]" value="[by_2.val;noerr]" [by_2.ischecked;noerr]>
</td>
<td width="31%" nowrap=nowrap>
<span class="text-mini">[by_2.val; block=plug;  noerr]</span></div>
</td>
</plug>
                   
<plug>
<td width="3%" nowrap=nowrap class="td-crit">
<input class="check-box" type="checkbox" name="sustainable[]" value="[by_3.val;noerr]" [by_3.ischecked;noerr]>        
</td>
<td width="30%" nowrap=nowrap class="td-crit">
<span class="text-mini">[by_3.val; block=plug; noerr]</span>[by; block=tr; ondata=checkme; serial]</div>
</td>
</plug>
                   
</tr>
Notice that the solution for me was that I wasn't placing the ondata param in just the block definition that contained the 'serial' parameter (I was placing the ondata parameter in the by_1, by_2, and by_3 blocks).
It actually makes sense, duh!.

Thanks,
TomH