On Sun, 2007-08-12 at 21:27 -0400, tedd wrote:
> At 1:26 PM -0400 8/11/07, Robert Cummings wrote:
> >On Sat, 2007-08-11 at 12:15 -0400, tedd wrote:
> > > Always (fishing for another apology opportunity) place javascript in
> >> external files and call them in via the header. Keep the code
> >> unobtrusive. There are ways to use javascript without having to mix
> >> it into your html -- look up DOM scripting.
> >
> >I absolutely agree with unobtrusive JavaScript, but I do disagree with
> >you slightly on using external files. Generally speaking i keep large
> >bits of code (Especially libs) in external files, but a few lines of
> >script for a form that appears on one page I'll often be put in the head
> >section. This way the JavaScript is in the same file as the template for
> >which it is associated. My template engine will relocate the JavaScript
> >to the <head> section at compile time.
>
> That's clever. I assume that for production work (i.e., for a
> client), you can isolate the files you need and be totally
> unobtrusive if you want.
>
> I just described my method off-list to another person and it went like this:
>
> I have a system for my site development work such that I simply
> include one header and one footer and no matter where the project
> directory is that I'm currently working on, the process will find the
> one main common header and common footer and will add them to my demo
> automagically.
>
> My code to start, looks like this:
>
> <?php include('../header.php') ?>
> <h1> Hi </h1>
> <?php include('../footer.php') ?>
>
> From there I have a complete page -- from doctype to copyright, it's
> all there and it validates.
>
> If I need a javascript file locally, then I add it to the local
> working directory by naming the file "a.js". Likewise, if I need an
> additional css file, then I name it "a.css" and it's also included in
> the call.
>
> However, if I don't need those files, then none are included in my
> local working directory and attempts to load those files will fail --
> however -- it doesn't matter if an attempt to load fails or not as
> long as the files are not needed.
>
> I think that's kind of clever, but I like Rocky and Bullwinkle as well.
I don't use a script to find my JavaScript files and CSS but I do
something similar to your includes for header and footer. The difference
being that my template engine will pull them in at compile time and not
at run-time. A lot of static content is pulled in this way and relocated
using compile-time accumulators. Then I use run-time accumulators to
flush content at run-time into the appropriate areas if necessary. This
allows me to create a layout that is compiled once at compile time but
with flush hooks for run-time. For instance for simplicity I use the
following tag in the <head> area to set up JavaScript:
<jinn:javaScriptSystem/>
This is the same as doing the following manually:
----------------
<jinn:accumulatorFlush name="javaScriptTags"/>
<jinn:accumulatorFlush name="javaScriptTags" dynamic="true"/>
<jinn:javaScript>
<jinn:accumulatorFlush name="javaScript"/>
<jinn:accumulatorFlush name="javaScript" dynamic="true"/>
function javaScriptOnLoad()
{
<jinn:accumulatorFlush name="javaScriptOnLoad"/>
<jinn:accumulatorFlush name="javaScriptOnLoad" dynamic="true"/>
}
</jinn:javaScript>
-----------------
The body tag will have an onload="javaScriptOnLoad()". Then in a content
file I can add the following:
<jinn:accumulate name="javaScriptOnLoad">
// some javascript code to modify the DOM
</jinn:accumulate>
And it will get relocated at compile time to the location of the static
flush statement: <jinn:accumulatorFlush name="javaScriptOnLoad"/>
Similarly within my code at run-time I can do the following:
$mAcc = &$this->getServiceRef( 'accManager' );
$acc = &$mAcc->getRef( 'javaScriptOnLoad' );
$acc->append
(
' // some javascript to modify the DOM '
)
And it will be get flushed into the content at the location of the
dynamic flush statement:
<jinn:accumulatorFlush name="javaScriptOnLoad" dynamic="true"/>
So all in all, it's very simple for me to put JavaScript (and any
content for that matter) anywhere I please. I often use it for layout
areas (such as left pane, right pane, etc), menus, visitor notices, etc.
BTW if you're wondering why I have a <jinn:javaScript> tag it's because
who wants to remember the following:
---------------------------
<script type="text/javascript"><!--//--><![CDATA[//><!--
//--><!]]></script>
---------------------------
:)
Cheers,
Rob.
--
...........................................................
SwarmBuy.com - http://www.swarmbuy.com
Leveraging the buying power of the masses!
...........................................................
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php