public function register(Application $app) { $app['asset.packages'] = $app->share(function ($app) { $defaultPackage = new Package($app['asset.version_strategy']('view')); $packages = new Packages($defaultPackage); $packages->addPackage('bolt', $app['asset.package_factory']('view')); $packages->addPackage('extensions', new PathPackage('', $app['asset.version_strategy']('web'), $app['asset.context'])); $packages->addPackage('files', $app['asset.package_factory']('files')); $packages->addPackage('theme', $app['asset.package_factory']('theme')); return $packages; }); $app['asset.package_factory'] = $app->protect(function ($name) use($app) { return new PathPackage($app['resources']->getUrl($name), $app['asset.version_strategy']($name), $app['asset.context']); }); $app['asset.version_strategy'] = $app->protect(function ($name) use($app) { return new Asset\BoltVersionStrategy($app['filesystem']->getFilesystem($name), $app['asset.salt']); }); $app['asset.context'] = $app->share(function () use($app) { return new RequestStackContext($app['request_stack']); }); $app['asset.salt.factory'] = function () use($app) { return $app['randomgenerator']->generateString(10); }; $app['asset.salt'] = $app->share(function ($app) { $file = $app['filesystem']->getFile('cache://.assetsalt'); try { $salt = $file->read(); } catch (FileNotFoundException $e) { $salt = $app['asset.salt.factory']; $file->put($salt); } return $salt; }); $app['asset.injector'] = $app->share(function () { $snippets = new Asset\Injector(); return $snippets; }); $app['asset.queue.file'] = $app->share(function ($app) { $queue = new Asset\File\Queue($app['asset.injector'], $app['asset.packages']); return $queue; }); $app['asset.queue.snippet'] = $app->share(function ($app) { $queue = new Asset\Snippet\Queue($app['asset.injector'], $app['cache'], $app['config'], $app['resources']); return $queue; }); $app['asset.queue.widget'] = $app->share(function ($app) { $queue = new Asset\Widget\Queue($app['asset.injector'], $app['cache'], $app['render']); return $queue; }); $app['asset.queues'] = $app->share(function ($app) { return [$app['asset.queue.file'], $app['asset.queue.snippet'], $app['asset.queue.widget']]; }); }
public function testGetterSetters() { $packages = new Packages(); $packages->setDefaultPackage($default = $this->getMock('Symfony\\Component\\Asset\\PackageInterface')); $packages->addPackage('a', $a = $this->getMock('Symfony\\Component\\Asset\\PackageInterface')); $this->assertEquals($default, $packages->getPackage()); $this->assertEquals($a, $packages->getPackage('a')); $packages = new Packages($default, array('a' => $a)); $this->assertEquals($default, $packages->getPackage()); $this->assertEquals($a, $packages->getPackage('a')); }
/** * @return Packages */ private function getPackages() { $version = $this->config['version']; $versionFormat = $this->config['version_format']; $baseUrl = $this->config['base_urls']; $basePath = $this->config['base_path']; $packages = new Packages(); $defaultPackage = $this->getPackageFactory()->createService($version, $versionFormat, $basePath, $baseUrl); $packages->setDefaultPackage($defaultPackage); foreach ((array) $this->config['packages'] as $name => $packageConfig) { $version = $packageConfig['version']; $versionFormat = $packageConfig['version_format']; $baseUrl = $packageConfig['base_urls']; $basePath = $packageConfig['base_path']; $package = $this->getPackageFactory()->createService($version, $versionFormat, $basePath, $baseUrl); $packages->addPackage($name, $package); } return $packages; }
public function register(Application $app) { $app['asset.packages'] = $app->share(function ($app) { $packages = new Packages(); $packages->addPackage('bolt', $app['asset.package.bolt']); $packages->addPackage('extensions', new PathPackage('', $app['asset.version_strategy']('web'), $app['asset.context'])); $packages->addPackage('files', $app['asset.package_factory']('files')); $packages->addPackage('theme', $app['asset.package_factory']('theme')); $packages->addPackage('themes', $app['asset.package_factory']('themes')); return $packages; }); $app['asset.package.bolt'] = $app->share(function ($app) { /* * This is technically the wrong directory as our composer script handler * copies the assets to the project's web directory. But since this is * just to check the file's last modified time for versioning it will do fine. */ $boltViewDir = $app['filesystem']->getDir('bolt://app/view'); /* * Remove app/view from path as AssetUrl plugin will include it. * This is because "bolt" FS points to bolt's root dir, but * "bolt" asset package points to "bolt_root_dir/app/view". * * This works with composer installs as well. */ return new Asset\UnprefixedPathPackage($boltViewDir->getPath() . '/', $app['resources']->getUrl('view', false), $app['asset.version_strategy']($boltViewDir), $app['asset.context']); }); $app['asset.package_factory'] = $app->protect(function ($name) use($app) { return new PathPackage($app['resources']->getUrl($name, false), $app['asset.version_strategy']($name), $app['asset.context']); }); $app['asset.version_strategy'] = $app->protect(function ($nameOrDir) use($app) { $dir = $nameOrDir instanceof DirectoryInterface ? $nameOrDir : $app['filesystem']->getFilesystem($nameOrDir)->getDir(''); return new Asset\BoltVersionStrategy($dir, $app['asset.salt']); }); $app['asset.context'] = $app->share(function () use($app) { return new RequestStackContext($app['request_stack']); }); $app['asset.salt.factory'] = function () use($app) { return $app['randomgenerator']->generateString(10); }; $app['asset.salt'] = $app->share(function ($app) { $file = $app['filesystem']->getFile('cache://.assetsalt'); try { $salt = $file->read(); } catch (FileNotFoundException $e) { $salt = $app['asset.salt.factory']; $file->put($salt); } return $salt; }); $app['asset.injector'] = $app->share(function () { $snippets = new Asset\Injector(); return $snippets; }); $app['asset.queue.file'] = $app->share(function ($app) { $queue = new Asset\File\Queue($app['asset.injector'], $app['asset.packages']); return $queue; }); $app['asset.queue.snippet'] = $app->share(function ($app) { $queue = new Asset\Snippet\Queue($app['asset.injector'], $app['cache'], $app['config'], $app['resources']); return $queue; }); $app['asset.queue.widget'] = $app->share(function ($app) { $queue = new Asset\Widget\Queue($app['asset.injector'], $app['cache'], $app['twig']); return $queue; }); $app['asset.queues'] = $app->share(function ($app) { return [$app['asset.queue.file'], $app['asset.queue.snippet'], $app['asset.queue.widget']]; }); }