Re: [PHPTAL] How to disable autoquote ?

2008-10-14 Thread Ernesto Baschny [cron IT]
Kornel Lesiński wrote: on 14.10.2008 10:55:
 prefix the content with the 'structure' keyword, it will use the value
 verbatin.

 script tal:content=structure myJsCode/script
 This may make XHTML ill-formed if there's any  or  in the script.

 script/*![CDATA[*/
 ${structure myJSCode}
 /*]]*//script

 works in both text/html and application/xhtml+xml modes.

It would be cool to have a tal:cdata= boolean value, where one could
switch on generation of CDATA wrapping automatically, so one could write:

script tal:content=structure myJsCode tal:cdata=true/script

And doesn't have to remember all kinds of required CDATA quoting.

Cheers,
Ernesto


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


[PHPTAL] Conditional class-attribute

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

Hi,

I am trying to switch from Smarty to phptal. I am enjoying it a lot in 
the current project and plan to use it on further developments.


One task always hits me where I end up having to mix the presentation 
back to my PHP code. But maybe there is a phptal-based solution.


In loops, I want to set different class attributes at the same time, 
depending on certain criterias, e.g.


ul
liRegular/li
li class=currentCurrently selected item/li
li class=lastLast item/li
/ul

I can have either last set, using:

ul tal:repeat=item items
li
   tal:content=item.content
   tal:attribute=class php:repeat.item.end ? 'last' : ''
   Regular/li
/ul

Or have my current flag set, using:

ul tal:repeat=item items
li
   tal:content=item.content
   tal:attribute=class php:item.isCurrent ? 'current' : ''
   Regular/li
/ul

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:


ul tal:repeat=item items
li
   tal:content=item.content
   tal:attribute=class php:item.isCurrent ? ( repeat.item.end ? 'last 
current' : 'current' ) : (repeat.item.end ? 'last' : '')

   Regular/li
/ul

Any other suggestion on how to acchieve this?

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 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:


   div tal:repeat=session sessions tal:omit-tag=true
   tal:block tal:define=currentClass php:session.isCurrent() 
? 'act' : ''; lastClass php:repeat.session.end ? 'last' : ''
   li tal:attributes=id 
string:tab-session-${session/getId}; class php:trim(currentClass . 
lastClass)a href=# tal:content=session/getNameSession/a/li

   /tal:block
   /div


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

or you can use the ${} syntax:

li class=${php:...} ${php:...}


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 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:


div tal:repeat=session sessions tal:omit-tag=true
tal:block tal:define=currentClass 
php:session.isCurrent() ? 'act' : ''; lastClass 
php:repeat.session.end ? 'last' : ''
li tal:attributes=id 
string:tab-session-${session/getId}; class php:trim(currentClass . 
lastClass)a href=# tal:content=session/getNameSession/a/li

/tal:block
/div


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