Re: [PHPTAL] Conditional class-attribute

2008-09-08 Thread Ernesto Baschny [cron IT]

Kornel Lesiński wrote: on 08.09.2008 16:02:
On 08-09-2008 at 14:53:10 Ernesto Baschny [cron IT] <[EMAIL PROTECTED]> 
wrote:


I could try some nested "?" expressions, but this turns out to be 
quite ugly, e.g. if I would have more than 2 classes to set


You can concatenate strings in php: expressions - just add spaces 
around ".", i.e.:


tal:attributes="class php:(a?'b':'c') . (d?' e':' f')"


Cool tip! I had already tried the "." concatenation but got no 
results, because of the missing spaces around the ".". Not I got it 
working, current looks like:




Session





The trim() is not neccessary - spaces around "." are just part of 
syntax and are not added to the string.


Currently this code might create "actlast" classs. If that's not what 
you wanted, then change 'last' to ' last' and optionally keep trim() 
(HTML ignores superfluous spaces in class attribute, so it's just 
aesthetical matter).
Yes, that trim() is just for aesthetical reasons. Good catch and your 
solution is what I had here (but on 'act ', with a space-suffix).


Cheers,
Ernesto


___
PHPTAL mailing list
PHPTAL@lists.motion-twin.com
http://lists.motion-twin.com/mailman/listinfo/phptal


Re: [PHPTAL] Conditional class-attribute

2008-09-08 Thread Kornel Lesiński
On 08-09-2008 at 14:53:10 Ernesto Baschny [cron IT] <[EMAIL PROTECTED]>  
wrote:


I could try some nested "?" expressions, but this turns out to be  
quite ugly, e.g. if I would have more than 2 classes to set


You can concatenate strings in php: expressions - just add spaces  
around ".", i.e.:


tal:attributes="class php:(a?'b':'c') . (d?' e':' f')"


Cool tip! I had already tried the "." concatenation but got no results,  
because of the missing spaces around the ".". Not I got it working,  
current looks like:




Session





The trim() is not neccessary - spaces around "." are just part of syntax  
and are not added to the string.


Currently this code might create "actlast" classs. If that's not what you  
wanted, then change 'last' to ' last' and optionally keep trim() (HTML  
ignores superfluous spaces in class attribute, so it's just aesthetical  
matter).


--
regards, Kornel

___
PHPTAL mailing list
PHPTAL@lists.motion-twin.com
http://lists.motion-twin.com/mailman/listinfo/phptal


Re: [PHPTAL] Conditional class-attribute

2008-09-08 Thread Ernesto Baschny [cron IT]

Hi Kornel,

Kornel Lesiński wrote: on 08.09.2008 15:29:
On 08-09-2008 at 12:27:50 Ernesto Baschny [cron IT] <[EMAIL PROTECTED]> 
wrote:


I could try some nested "?" expressions, but this turns out to be 
quite ugly, e.g. if I would have more than 2 classes to set


You can concatenate strings in php: expressions - just add spaces 
around ".", i.e.:


tal:attributes="class php:(a?'b':'c') . (d?' e':' f')"


Cool tip! I had already tried the "." concatenation but got no results, 
because of the missing spaces around the ".". Not I got it working, 
current looks like:


   
   
   Session

   
   


http://phptal.motion-twin.com/manual/en/split/ar05s07.html#tales-php

or you can use the ${} syntax:




That is true, and even looks a lot Smarty-ish. :)

alternatively, if you work with such classes a lot, you can make 
syntax nicer by writing your own expression modifier:


tal:attributes="class my_classes:repeat.item"

and create:

function ($argument,$nothrow)
{
  return 
'php_function_to_execute_when_template_runs('.phptal_tales($argument,$nothrow).')'; 


}

http://phptal.motion-twin.com/manual/en/split/ar06s08.html


Indeed also a good suggestion, will keep that concept in mind when 
developing further.


Thanks a lot for your time and hints! I will keep up following this list.

Cheers,
Ernesto



___
PHPTAL mailing list
PHPTAL@lists.motion-twin.com
http://lists.motion-twin.com/mailman/listinfo/phptal


Re: [PHPTAL] Conditional class-attribute

2008-09-08 Thread Kornel Lesiński
On 08-09-2008 at 12:27:50 Ernesto Baschny [cron IT] <[EMAIL PROTECTED]>  
wrote:


I could try some nested "?" expressions, but this turns out to be quite  
ugly, e.g. if I would have more than 2 classes to set


You can concatenate strings in php: expressions - just add spaces around  
".", i.e.:


tal:attributes="class php:(a?'b':'c') . (d?' e':' f')"

http://phptal.motion-twin.com/manual/en/split/ar05s07.html#tales-php

or you can use the ${} syntax:




alternatively, if you work with such classes a lot, you can make syntax  
nicer by writing your own expression modifier:


tal:attributes="class my_classes:repeat.item"

and create:

function ($argument,$nothrow)
{
  return  
'php_function_to_execute_when_template_runs('.phptal_tales($argument,$nothrow).')';

}

http://phptal.motion-twin.com/manual/en/split/ar06s08.html

--
regards, Kornel

___
PHPTAL mailing list
PHPTAL@lists.motion-twin.com
http://lists.motion-twin.com/mailman/listinfo/phptal