From b4383242c16dcda56c0760a9cbdda23e9a1ddde6 Mon Sep 17 00:00:00 2001 From: Michael M Slusarz Date: Sun, 18 Oct 2009 21:33:55 -0600 Subject: [PATCH] Add all script to the same onload block, if possible --- framework/Core/lib/Horde.php | 44 ++++++++++++++++++++++++++++++-------------- 1 file changed, 30 insertions(+), 14 deletions(-) diff --git a/framework/Core/lib/Horde.php b/framework/Core/lib/Horde.php index 701db50cf..6b5114489 100644 --- a/framework/Core/lib/Horde.php +++ b/framework/Core/lib/Horde.php @@ -2127,20 +2127,16 @@ HTML; return; } - switch ($onload) { - case 'dom': - $script = 'document.observe("dom:loaded", function() {' . $script . '});'; - break; - - case 'load': - $script = 'Event.observe(window, "load", function() {' . $script . '});'; - break; + if (is_null($onload)) { + $onload = 'none'; } - if ($top) { - array_unshift(self::$_inlineScript, $script); + $script = trim($script, ';') . ';'; + + if ($top && isset(self::$_inlineScript[$onload])) { + array_unshift(self::$_inlineScript[$onload], $script); } else { - self::$_inlineScript[] = $script; + self::$_inlineScript[$onload][] = $script; } // If headers have already been sent, we need to output a @@ -2155,10 +2151,30 @@ HTML; */ static public function outputInlineScript() { - if (!empty(self::$_inlineScript)) { - echo self::wrapInlineScript(self::$_inlineScript); + if (empty(self::$_inlineScript)) { + return; } + $script = array(); + + foreach (self::$_inlineScript as $key => $val) { + $val = implode('', $val); + + switch ($key) { + case 'dom': + $val = 'document.observe("dom:loaded", function() {' . $val . '});'; + break; + + case 'load': + $val = 'Event.observe(window, "load", function() {' . $val . '});'; + break; + } + + $script[] = $val; + } + + echo self::wrapInlineScript($script); + self::$_inlineScript = array(); } @@ -2173,7 +2189,7 @@ HTML; */ static public function wrapInlineScript($script) { - return '\n"; + return '\n"; } /** -- 2.11.0