[pmwiki-users] httpvariables / markupexprplus
noskule
noskule at gmx.net
Fri Oct 24 08:19:36 CDT 2008
Dominique Faure schrieb:
> On Thu, Oct 23, 2008 at 20:45, noskule <noskule at gmx.net> wrote:
>
>> hi list
>> I expirienced a problem using httpvariables and markupexprplus.
>>
>> If I include httpvariables bevor markupexpr plus, setting pv's via {(set
>> xx12)} is not working, if I include it after it works.
>>
>> dont work:
>> $EnableExprVarManip = 1;
>> include_once("$FarmD/cookbook/markupexprplus.php");
>> include_once("$FarmD/cookbook/httpvariables.php");
>>
>> work:
>> include_once("$FarmD/cookbook/httpvariables.php");
>> $EnableExprVarManip = 1;
>> include_once("$FarmD/cookbook/markupexprplus.php");
>>
>
> The HttpVariables recipe must appear first in order to be found and
> handled by MarkupExprPlus.
>
>
>> When I try do do the following condition:
>>
>> (:if equal "{$?count}" "":)no count, setting to {(set count 20)}
>> (:else:){(setq count {$?count} )}(:ifend:)
>>
>> setting $count to 20 do not work if the condition is true, see:
>>
>> http://test.netstreams.org/pmwiki/index.php?n=Main.WikiSandbox
>>
>
> This is but the expected behaviour...
> ...and here's why:
>
> The page markup is processed by successive translation passes, each of
> them being dedicated to a particular markup form handling. As the
> Variable/MarkupExprPlus page markup is processed *before* the
> conditional markup itself, the translation saw only two successive
> assignment to the same variable:
>
> Initial:
> (:if equal "{$?count}" "":)no count, setting to {(set count 20)}
> (:else:){(setq count {$?count} )}(:ifend:)
>
> MarkupExprPlus translation pass with ignored text enclosed in brackets:
> [(:if equal "] {$?count} [" "":)no count, setting to ] {(set count 20)}
> [(:else:)] {(setq count {$?count} )} [(:ifend:)]
>
> Resulting in:
> {$?count} => nothing
> {(set count 20)} => {$count} set to 20
> {(setq count {$?count} )} => {(setq count )}
> => {$count} set to nothing
>
> This explains why I added the 'test' and the 'if' function, in order
> to handle conditions during variable evaluations.
> In your case, you should use
>
> {(set count (if (test equal "{$?count}" "") 20 {$?count} ))}
>
> to get the expected result.
>
>
oky I see, many thanks
nos
More information about the pmwiki-users
mailing list