Re[2]: [PHPTAL] ajax and phptal

2009-09-21 Thread GRolf


Since I was struggling with this too, I'm very interested in your
view.

I use a different approach:

since a PHP-driven website usually consists of many .php scripts, I
like to keep my templates organised in a
1-template-for-each-php-script (eg. index.php uses index.tpl,
subscribe.php uses subscribe.tpl). Otherwise you're more busy with
opening and closing templates to make changes (and trying to remember
which file you need) than making the changes.


I have 1 file (general.tpl) that holds the general page structure of
every page, and then the 1-template-per-script as described above.


my general.tpl has something like (more complex than the example below
of course)


html metal:define-macro=globalpage
body
div id=header tal:define-slot=header/div
div id=content tal:define-slot=content/div
div id=footer tal:define-slot=footer/div
/body
/html


Every script then calls it's own template file (eg index.tpl)
with

tal:block metal:use-macro=general.tpl/globalpage
tal:block metal:fill-slot=content

Content of page goes here...

/tal:block
/tal:block


If I have a page that needs to show different pages (eg: form +
feedback after submission + error if required), eg register.tpl

tal:block metal:use-macro=general.tpl/globalpage
tal:block metal:fill-slot=content tal:condition=php:
template=='form'

form method=post
username: input type=text name=username/
Pwd: input type=password name=pwd/
input type=submit name=submit value=Register/
/form

/tal:block

tal:block metal:fill-slot=content tal:condition=php:
template=='succeed'

your registration was successfull

/tal:block

tal:block metal:fill-slot=content tal:condition=php:
template=='failed'

your registration was not successfull. please try again.

/tal:block
/tal:block


register.php would then set $phptal-template = 'succeed' etc to show
the correct template...



In these circumstances, using AJAX to retrieve only part of the page
is harder. Do you have any feedback on that? For maintenance and
support, I really really like to keep my templates grouped with the
script. I know I could create a register_form.tpl,
register_succeed.tpl, register_failed.tpl etc but this quickly
becomes a cumbersome operation to open/close all those docs, let alone
if you have a PHP script that runs through multiple, consequetive
forms.






 On 18.09.2009, at 23:34, hosema...@poczta.onet.pl wrote:

 Hi
 I am working on ajax php website. Ajax makes using phptal more  
 complicated.
 My approach is to divide single page to several php files and every  
 time at single page i create new object of $tpl. It means that I  
 have to use several $tpl-execute() at the first page load. I think  
 it is not optimal.
 My question is whether there is most efective way to use phptal and  
 ajax?

 page.xhtml:

 body
 stuff
 tal:block metal:use-macro=widget.xhtml/show_widget /
 stuff
 /body


 widget.xhtml:

 div metal:define-macro=show_widget
 ajax me!
 /div
 tal:block metal:use-macro=show_widget /


 This will let you either execute page.xhtml with all stuff in it, or  
 execute widget.xhtml and just output that single fragment. You can use
 variables in use-macro (e.g. show_${name}), so you're not limited to
 one thing per file.



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


Re: Re[2]: [PHPTAL] ajax and phptal

2009-09-21 Thread Kornel Lesiński

On 21-09-2009 at 08:51:17 GRolf ger...@pictureparking.com wrote:


In these circumstances, using AJAX to retrieve only part of the page
is harder. Do you have any feedback on that? For maintenance and
support, I really really like to keep my templates grouped with the
script. I know I could create a register_form.tpl,
register_succeed.tpl, register_failed.tpl etc but this quickly
becomes a cumbersome operation to open/close all those docs, let alone
if you have a PHP script that runs through multiple, consequetive
forms.


One approach is to make interesting parts available as macros:

tal:block metal:define-macro=foo…/tal:block
tal:block metal:use-macro=foo/

With this pattern you continue to execute whole templates as before, but  
you can also access the macro from another file (e.g. have PHP call  
register_ajax.tpl that calls only macros you want).




If you always want to AJAX entire body of the page, then change:

tal:block metal:use-macro=general.tpl/${templatename}

and set templatename to either 'globalpage' or other minimal template for  
AJAX response.





Or you can show/hide parts of the page depending on variable:

body tal:omit-tag=ajax
  div id=sidebar tal:condition=not:ajax/
  etc.
/body

--
regards, Kornel

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


[PHPTAL] ajax and phptal

2009-09-18 Thread hosemaria
Hi 

I am working on ajax php website. Ajax makes using phptal more complicated.

My approach is to divide single page to several php files and every time at
single page i create new object of $tpl. It means that I have to use several
$tpl-execute() at the first page load. I think it is not optimal.

My question is whether there is most efective way to use phptal and ajax?


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


Re: [PHPTAL] ajax and phptal

2009-09-18 Thread Kornel Lesiński

On 18.09.2009, at 23:34, hosema...@poczta.onet.pl wrote:


Hi
I am working on ajax php website. Ajax makes using phptal more  
complicated.
My approach is to divide single page to several php files and every  
time at single page i create new object of $tpl. It means that I  
have to use several $tpl-execute() at the first page load. I think  
it is not optimal.
My question is whether there is most efective way to use phptal and  
ajax?


page.xhtml:

body
stuff
tal:block metal:use-macro=widget.xhtml/show_widget /
stuff
/body


widget.xhtml:

div metal:define-macro=show_widget
ajax me!
/div
tal:block metal:use-macro=show_widget /


This will let you either execute page.xhtml with all stuff in it, or  
execute widget.xhtml and just output that single fragment. You can use  
variables in use-macro (e.g. show_${name}), so you're not limited to  
one thing per file.


--
regards, Kornel




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