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 <mark@mark-story.com>
This commit is contained in:
ADmad 2009-09-22 02:30:52 +05:30 committed by mark_story
parent 7116c01642
commit 07a89cd953
4 changed files with 28 additions and 22 deletions

View file

@ -349,9 +349,7 @@ class HtmlHelper extends AppHelper {
} }
} }
$path = $this->webroot($path); $url = $this->webroot($path);
$url = $path;
if (strpos($path, '?') === false && ((Configure::read('Asset.timestamp') === true && Configure::read() > 0) || Configure::read('Asset.timestamp') === 'force')) { 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)); $url .= '?' . @filemtime(WWW_ROOT . str_replace('/', DS, $path));
} }
@ -434,13 +432,15 @@ class HtmlHelper extends AppHelper {
function image($path, $options = array()) { function image($path, $options = array()) {
if (is_array($path)) { if (is_array($path)) {
$path = $this->url($path); $path = $this->url($path);
} elseif ($path[0] === '/') {
$path = $this->webroot($path);
} elseif (strpos($path, '://') === false) { } 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') { 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);
} }
} }

View file

@ -254,14 +254,10 @@ class JavascriptHelper extends AppHelper {
} }
} }
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); $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 (Configure::read('Asset.filter.js')) { if (Configure::read('Asset.filter.js')) {

View file

@ -307,6 +307,16 @@ class HtmlHelperTest extends CakeTestCase {
'src' => 'preg:/themed\/default\/img\/cake\.power\.gif\?\d+/', 'src' => 'preg:/themed\/default\/img\/cake\.power\.gif\?\d+/',
'alt' => '' '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 * testStyle method
@ -391,14 +401,14 @@ class HtmlHelperTest extends CakeTestCase {
$webroot = $this->Html->webroot; $webroot = $this->Html->webroot;
$this->Html->webroot = '/testing/'; $this->Html->webroot = '/testing/';
$result = $this->Html->css('cake.generic'); $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->assertTags($result, $expected);
$this->Html->webroot = $webroot; $this->Html->webroot = $webroot;
$webroot = $this->Html->webroot; $webroot = $this->Html->webroot;
$this->Html->webroot = '/testing/longer/'; $this->Html->webroot = '/testing/longer/';
$result = $this->Html->css('cake.generic'); $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->assertTags($result, $expected);
$this->Html->webroot = $webroot; $this->Html->webroot = $webroot;
} }

View file

@ -262,11 +262,11 @@ class JavascriptTest extends CakeTestCase {
$this->Javascript->webroot = '/testing/'; $this->Javascript->webroot = '/testing/';
$result = $this->Javascript->link('__cake_js_test'); $result = $this->Javascript->link('__cake_js_test');
$this->assertPattern('/^<script[^<>]+src="\/testing\/js\/__cake_js_test\.js\?"[^<>]*>/', $result); $this->assertPattern('/^<script[^<>]+src="\/testing\/js\/__cake_js_test\.js\?\d+"[^<>]*>/', $result);
$this->Javascript->webroot = '/testing/longer/'; $this->Javascript->webroot = '/testing/longer/';
$result = $this->Javascript->link('__cake_js_test'); $result = $this->Javascript->link('__cake_js_test');
$this->assertPattern('/^<script[^<>]+src="\/testing\/longer\/js\/__cake_js_test\.js\?"[^<>]*>/', $result); $this->assertPattern('/^<script[^<>]+src="\/testing\/longer\/js\/__cake_js_test\.js\?\d+"[^<>]*>/', $result);
$this->Javascript->webroot = $webroot; $this->Javascript->webroot = $webroot;
Configure::write('debug', $debug); Configure::write('debug', $debug);