From 07a89cd953d81514532b26a211afb4b609029a44 Mon Sep 17 00:00:00 2001 From: ADmad Date: Tue, 22 Sep 2009 02:30:52 +0530 Subject: [PATCH] Updated Html and Javascript helpers to suffix asset urls with timestamp even when the app is run off a subfolder on the domain Signed-off-by: Mark Story --- cake/libs/view/helpers/html.php | 14 +++++++------- cake/libs/view/helpers/javascript.php | 16 ++++++---------- cake/tests/cases/libs/view/helpers/html.test.php | 14 ++++++++++++-- .../cases/libs/view/helpers/javascript.test.php | 6 +++--- 4 files changed, 28 insertions(+), 22 deletions(-) diff --git a/cake/libs/view/helpers/html.php b/cake/libs/view/helpers/html.php index cb9408998..016ea799f 100644 --- a/cake/libs/view/helpers/html.php +++ b/cake/libs/view/helpers/html.php @@ -349,9 +349,7 @@ class HtmlHelper extends AppHelper { } } - $path = $this->webroot($path); - - $url = $path; + $url = $this->webroot($path); if (strpos($path, '?') === false && ((Configure::read('Asset.timestamp') === true && Configure::read() > 0) || Configure::read('Asset.timestamp') === 'force')) { $url .= '?' . @filemtime(WWW_ROOT . str_replace('/', DS, $path)); } @@ -434,13 +432,15 @@ class HtmlHelper extends AppHelper { function image($path, $options = array()) { if (is_array($path)) { $path = $this->url($path); - } elseif ($path[0] === '/') { - $path = $this->webroot($path); } elseif (strpos($path, '://') === false) { - $path = $this->webroot(IMAGES_URL . $path); + if ($path[0] !== '/') { + $path = IMAGES_URL . $path; + } if ((Configure::read('Asset.timestamp') == true && Configure::read() > 0) || Configure::read('Asset.timestamp') === 'force') { - $path .= '?' . @filemtime(str_replace('/', DS, WWW_ROOT . $path)); + $path = $this->webroot($path) . '?' . @filemtime(WWW_ROOT . str_replace('/', DS, $path)); + } else { + $path = $this->webroot($path); } } diff --git a/cake/libs/view/helpers/javascript.php b/cake/libs/view/helpers/javascript.php index 9756d62ed..8fd735f6f 100644 --- a/cake/libs/view/helpers/javascript.php +++ b/cake/libs/view/helpers/javascript.php @@ -214,11 +214,11 @@ class JavascriptHelper extends AppHelper { $options = $this->_blockOptions; $this->_blockOptions = array(); $this->inBlock = false; - + if (empty($script)) { return null; } - + return $this->codeBlock($script, $options); } /** @@ -254,14 +254,10 @@ class JavascriptHelper extends AppHelper { } } - $url = $this->webroot($url); - $timestampEnabled = ( - (Configure::read('Asset.timestamp') === true && Configure::read() > 0) || - Configure::read('Asset.timestamp') === 'force' - ); - - if (strpos($url, '?') === false && $timestampEnabled) { - $url .= '?' . @filemtime(WWW_ROOT . str_replace('/', DS, $url)); + if (strpos($url, '?') === false && ((Configure::read('Asset.timestamp') === true && Configure::read() > 0) || Configure::read('Asset.timestamp') === 'force')) { + $url = $this->webroot($url) . '?' . @filemtime(WWW_ROOT . str_replace('/', DS, $url)); + } else { + $url = $this->webroot($url); } if (Configure::read('Asset.filter.js')) { diff --git a/cake/tests/cases/libs/view/helpers/html.test.php b/cake/tests/cases/libs/view/helpers/html.test.php index 52dd5cbaf..3b41dd1bc 100644 --- a/cake/tests/cases/libs/view/helpers/html.test.php +++ b/cake/tests/cases/libs/view/helpers/html.test.php @@ -307,6 +307,16 @@ class HtmlHelperTest extends CakeTestCase { 'src' => 'preg:/themed\/default\/img\/cake\.power\.gif\?\d+/', 'alt' => '' ))); + + $webroot = $this->Html->webroot; + $this->Html->webroot = '/testing/'; + $result = $this->Html->image('cake.power.gif'); + $this->assertTags($result, array( + 'img' => array( + 'src' => 'preg:/\/testing\/themed\/default\/img\/cake\.power\.gif\?\d+/', + 'alt' => '' + ))); + $this->Html->webroot = $webroot; } /** * testStyle method @@ -391,14 +401,14 @@ class HtmlHelperTest extends CakeTestCase { $webroot = $this->Html->webroot; $this->Html->webroot = '/testing/'; $result = $this->Html->css('cake.generic'); - $expected['link']['href'] = 'preg:/\/testing\/css\/cake\.generic\.css\?/'; + $expected['link']['href'] = 'preg:/\/testing\/css\/cake\.generic\.css\?[0-9]+/'; $this->assertTags($result, $expected); $this->Html->webroot = $webroot; $webroot = $this->Html->webroot; $this->Html->webroot = '/testing/longer/'; $result = $this->Html->css('cake.generic'); - $expected['link']['href'] = 'preg:/\/testing\/longer\/css\/cake\.generic\.css\?/'; + $expected['link']['href'] = 'preg:/\/testing\/longer\/css\/cake\.generic\.css\?[0-9]+/'; $this->assertTags($result, $expected); $this->Html->webroot = $webroot; } diff --git a/cake/tests/cases/libs/view/helpers/javascript.test.php b/cake/tests/cases/libs/view/helpers/javascript.test.php index 7ebad00eb..1fdfccf21 100644 --- a/cake/tests/cases/libs/view/helpers/javascript.test.php +++ b/cake/tests/cases/libs/view/helpers/javascript.test.php @@ -262,11 +262,11 @@ class JavascriptTest extends CakeTestCase { $this->Javascript->webroot = '/testing/'; $result = $this->Javascript->link('__cake_js_test'); - $this->assertPattern('/^]+src="\/testing\/js\/__cake_js_test\.js\?"[^<>]*>/', $result); + $this->assertPattern('/^]+src="\/testing\/js\/__cake_js_test\.js\?\d+"[^<>]*>/', $result); $this->Javascript->webroot = '/testing/longer/'; $result = $this->Javascript->link('__cake_js_test'); - $this->assertPattern('/^]+src="\/testing\/longer\/js\/__cake_js_test\.js\?"[^<>]*>/', $result); + $this->assertPattern('/^]+src="\/testing\/longer\/js\/__cake_js_test\.js\?\d+"[^<>]*>/', $result); $this->Javascript->webroot = $webroot; Configure::write('debug', $debug); @@ -826,7 +826,7 @@ class JavascriptTest extends CakeTestCase { ob_start(); $this->Javascript->afterRender(); $result = ob_get_clean(); - + $expected = array( 'script' => array('type' => 'text/javascript'), $this->cDataStart,