From 6fce50343246d98462ac00f289812b082167aa78 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Haso=C5=88?= Date: Mon, 12 Nov 2012 15:23:36 +0100 Subject: [PATCH 1/2] [Templating] Added ability to set a specific version of the asset --- .../TwigBundle/Extension/AssetsExtension.php | 11 +++++----- .../Component/Templating/Asset/Package.php | 20 +++++++++++++------ .../Templating/Asset/PackageInterface.php | 5 +++-- .../Templating/Asset/PathPackage.php | 7 +++++-- .../Component/Templating/Asset/UrlPackage.php | 7 +++++-- src/Symfony/Component/Templating/CHANGELOG.md | 5 +++++ .../Templating/Helper/CoreAssetsHelper.php | 9 +++++---- .../Tests/Helper/AssetsHelperTest.php | 8 ++++++++ 8 files changed, 51 insertions(+), 21 deletions(-) diff --git a/src/Symfony/Bundle/TwigBundle/Extension/AssetsExtension.php b/src/Symfony/Bundle/TwigBundle/Extension/AssetsExtension.php index 9dd6a2b96314a..0bcfd1199433d 100644 --- a/src/Symfony/Bundle/TwigBundle/Extension/AssetsExtension.php +++ b/src/Symfony/Bundle/TwigBundle/Extension/AssetsExtension.php @@ -48,15 +48,16 @@ public function getFunctions() * * Absolute paths (i.e. http://...) are returned unmodified. * - * @param string $path A public path - * @param string $packageName The name of the asset package to use - * @param Boolean $absolute Whether to return an absolute URL or a relative one + * @param string $path A public path + * @param string $packageName The name of the asset package to use + * @param Boolean $absolute Whether to return an absolute URL or a relative one + * @param string|Boolean|null $version A specific version * * @return string A public path which takes into account the base path and URL path */ - public function getAssetUrl($path, $packageName = null, $absolute = false) + public function getAssetUrl($path, $packageName = null, $absolute = false, $version = null) { - $url = $this->container->get('templating.helper.assets')->getUrl($path, $packageName); + $url = $this->container->get('templating.helper.assets')->getUrl($path, $packageName, $version); if (!$absolute) { return $url; diff --git a/src/Symfony/Component/Templating/Asset/Package.php b/src/Symfony/Component/Templating/Asset/Package.php index 58d6ef45c4421..bb7bef23f0c0a 100644 --- a/src/Symfony/Component/Templating/Asset/Package.php +++ b/src/Symfony/Component/Templating/Asset/Package.php @@ -33,34 +33,42 @@ public function __construct($version = null, $format = '') $this->format = $format ?: '%s?%s'; } + /** + * {@inheritdoc} + */ public function getVersion() { return $this->version; } - public function getUrl($path) + /** + * {@inheritdoc} + */ + public function getUrl($path, $version = null) { if (false !== strpos($path, '://') || 0 === strpos($path, '//')) { return $path; } - return $this->applyVersion($path); + return $this->applyVersion($path, $version); } /** * Applies version to the supplied path. * - * @param string $path A path + * @param string $path A path + * @param string|Boolean|null $version A specific version * * @return string The versionized path */ - protected function applyVersion($path) + protected function applyVersion($path, $version = null) { - if (null === $this->version) { + $version = null !== $version ? $version : $this->version; + if (null === $version || false === $version) { return $path; } - $versionized = sprintf($this->format, ltrim($path, '/'), $this->version); + $versionized = sprintf($this->format, ltrim($path, '/'), $version); if ($path && '/' == $path[0]) { $versionized = '/'.$versionized; diff --git a/src/Symfony/Component/Templating/Asset/PackageInterface.php b/src/Symfony/Component/Templating/Asset/PackageInterface.php index a9ec65aecb25d..528101e3ca525 100644 --- a/src/Symfony/Component/Templating/Asset/PackageInterface.php +++ b/src/Symfony/Component/Templating/Asset/PackageInterface.php @@ -28,9 +28,10 @@ public function getVersion(); /** * Returns an absolute or root-relative public path. * - * @param string $path A path + * @param string $path A path + * @prama string|Boolean|null $version A specific version for the path * * @return string The public path */ - public function getUrl($path); + public function getUrl($path, $version = null); } diff --git a/src/Symfony/Component/Templating/Asset/PathPackage.php b/src/Symfony/Component/Templating/Asset/PathPackage.php index 1e02845c3cba8..1806107f6dfca 100644 --- a/src/Symfony/Component/Templating/Asset/PathPackage.php +++ b/src/Symfony/Component/Templating/Asset/PathPackage.php @@ -42,13 +42,16 @@ public function __construct($basePath = null, $version = null, $format = null) } } - public function getUrl($path) + /** + * {@inheritdoc} + */ + public function getUrl($path, $version = null) { if (false !== strpos($path, '://') || 0 === strpos($path, '//')) { return $path; } - $url = $this->applyVersion($path); + $url = $this->applyVersion($path, $version); // apply the base path if ('/' !== substr($url, 0, 1)) { diff --git a/src/Symfony/Component/Templating/Asset/UrlPackage.php b/src/Symfony/Component/Templating/Asset/UrlPackage.php index da5c0830fb4ea..00a21670f4459 100644 --- a/src/Symfony/Component/Templating/Asset/UrlPackage.php +++ b/src/Symfony/Component/Templating/Asset/UrlPackage.php @@ -41,13 +41,16 @@ public function __construct($baseUrls = array(), $version = null, $format = null } } - public function getUrl($path) + /** + * {@inheritdoc} + */ + public function getUrl($path, $version = null) { if (false !== strpos($path, '://') || 0 === strpos($path, '//')) { return $path; } - $url = $this->applyVersion($path); + $url = $this->applyVersion($path, $version); if ($url && '/' != $url[0]) { $url = '/'.$url; diff --git a/src/Symfony/Component/Templating/CHANGELOG.md b/src/Symfony/Component/Templating/CHANGELOG.md index 3d06446d13572..5f805434c2f07 100644 --- a/src/Symfony/Component/Templating/CHANGELOG.md +++ b/src/Symfony/Component/Templating/CHANGELOG.md @@ -1,6 +1,11 @@ CHANGELOG ========= +2.2.0 +----- + + * added ability to set a specific version of the asset + 2.1.0 ----- diff --git a/src/Symfony/Component/Templating/Helper/CoreAssetsHelper.php b/src/Symfony/Component/Templating/Helper/CoreAssetsHelper.php index 73f1455622821..fb4ed5dca074c 100644 --- a/src/Symfony/Component/Templating/Helper/CoreAssetsHelper.php +++ b/src/Symfony/Component/Templating/Helper/CoreAssetsHelper.php @@ -105,14 +105,15 @@ public function getVersion($packageName = null) * * Absolute paths (i.e. http://...) are returned unmodified. * - * @param string $path A public path - * @param string $packageName The name of the asset package to use + * @param string $path A public path + * @param string $packageName The name of the asset package to use + * @param string|Boolean|null $version A specific version * * @return string A public path which takes into account the base path and URL path */ - public function getUrl($path, $packageName = null) + public function getUrl($path, $packageName = null, $version = null) { - return $this->getPackage($packageName)->getUrl($path); + return $this->getPackage($packageName)->getUrl($path, $version); } /** diff --git a/src/Symfony/Component/Templating/Tests/Helper/AssetsHelperTest.php b/src/Symfony/Component/Templating/Tests/Helper/AssetsHelperTest.php index e69fbb27c3b19..c29c6de1a332c 100644 --- a/src/Symfony/Component/Templating/Tests/Helper/AssetsHelperTest.php +++ b/src/Symfony/Component/Templating/Tests/Helper/AssetsHelperTest.php @@ -57,6 +57,14 @@ public function testGetUrl() $this->assertEquals('/', $helper->getUrl(''), '->getUrl() with empty arg returns the prefix alone'); } + public function testGetUrlWithVersion() + { + $helper = new AssetsHelper(null, array(), '12'); + $this->assertEquals('/foo.js?12', $helper->getUrl('foo.js')); + $this->assertEquals('/foo.js?bar', $helper->getUrl('foo.js', null, 'bar')); + $this->assertEquals('/foo.js', $helper->getUrl('foo.js', null, false)); + } + public function testGetUrlLeavesProtocolRelativePathsUntouched() { $helper = new AssetsHelper(null, 'http://foo.com'); From 1642094cfeb032384d76fa85867912d81d3e840b Mon Sep 17 00:00:00 2001 From: Romain Neutron Date: Mon, 31 Mar 2014 15:26:45 +0200 Subject: [PATCH 2/2] [Templating] Update changelog --- src/Symfony/Component/Templating/CHANGELOG.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/Symfony/Component/Templating/CHANGELOG.md b/src/Symfony/Component/Templating/CHANGELOG.md index 5f805434c2f07..c627e669f25d6 100644 --- a/src/Symfony/Component/Templating/CHANGELOG.md +++ b/src/Symfony/Component/Templating/CHANGELOG.md @@ -1,10 +1,11 @@ CHANGELOG ========= -2.2.0 +2.5.0 ----- - * added ability to set a specific version of the asset + * added ability to generate versioned URLs + * added ability to generate absolute URLs 2.1.0 ----- pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy