Even better, add an 'onload' parameter to Kronolith::addInlineScript()
authorMichael J. Rubinsky <mrubinsk@horde.org>
Sun, 18 Jan 2009 15:41:45 +0000 (10:41 -0500)
committerMichael J. Rubinsky <mrubinsk@horde.org>
Sun, 18 Jan 2009 15:41:45 +0000 (10:41 -0500)
like we do in IMP.

kronolith/lib/Imple/ContactAutoCompleter.php
kronolith/lib/Kronolith.php

index 2405b4e..a69cd91 100644 (file)
@@ -53,7 +53,7 @@ class Imple_ContactAutoCompleter extends Imple
 
         $params[] = '{' . implode(',', $js_params) . '}';
 
-        Kronolith::addInlineScript('document.observe(\'dom:loaded\', function () {new Ajax.Autocompleter(' . implode(',', $params) . ')})');
+        Kronolith::addInlineScript('new Ajax.Autocompleter(' . implode(',', $params) . ')', 'dom');
     }
 
     /**
index 27917fd..96064ed 100644 (file)
@@ -162,13 +162,15 @@ class Kronolith {
      *
      * @since Kronolith 2.2
      *
-     * @param mixed $script  The script text to add (can be stored in an
-     *                       array also).
+     * @param mixed $script    The script text to add (can be stored in an
+     *                         array also).
+     * @param string $onload   Load the script after the page has loaded?
+     *                         Either 'dom' (on dom:loaded), 'load'.
      *
      * @return string  The javascript text to output, or empty if the page
      *                 headers have not yet been sent.
      */
-    function addInlineScript($script)
+    function addInlineScript($script, $onload = false)
     {
         if (is_array($script)) {
             $script = implode(';', $script);
@@ -178,6 +180,15 @@ class Kronolith {
         if (empty($script)) {
             return;
         }
+        switch ($onload) {
+        case 'dom':
+            $script = 'document.observe("dom:loaded", function() {' . $script . '});';
+            break;
+
+        case 'load':
+            $script = 'Event.observe(window, "load", function() {' . $script . '});';
+            break;
+        }
 
         if (!isset($GLOBALS['__kronolith_inline_script'])) {
             $GLOBALS['__kronolith_inline_script'] = array();