예제 #1
0
파일: Queue.php 프로젝트: d-m-/bolt
 /**
  * Add a file asset to the queue.
  *
  * @param FileAssetInterface $asset
  *
  * @throws \InvalidArgumentException
  */
 public function add(FileAssetInterface $asset)
 {
     $fileHasher = $this->fileHasher;
     $cacheHash = $fileHasher($asset->getFileName());
     $asset->setCacheHash($cacheHash);
     if ($asset->getType() === 'javascript') {
         $this->javascript[$cacheHash] = $asset;
     } elseif ($asset->getType() === 'stylesheet') {
         $this->stylesheet[$cacheHash] = $asset;
     } else {
         throw new \InvalidArgumentException(sprintf('Requested asset type %s is not valid.', $asset->getType()));
     }
 }
예제 #2
0
 /**
  * Get the relative path to the asset file.
  *
  * @param FileAssetInterface $asset
  *
  * @return string|null
  */
 private function getAssetPath(FileAssetInterface $asset)
 {
     $fileName = $asset->getFileName();
     if ($fileName === null) {
         throw new \RuntimeException('Extension file assets must have a file name set.');
     }
     $app = $this->getContainer();
     $filesystem = $app['filesystem'];
     if ($filesystem->has(sprintf('extensions://%s/web/%s', $this->getBaseDirectory()->getPath(), $fileName))) {
         return $this->getRelativeUrl() . $fileName;
     } elseif ($filesystem->has(sprintf('theme://%s', $fileName))) {
         return $app['resources']->getUrl('theme') . $fileName;
     }
     $message = sprintf("Couldn't add file asset '%s': File does not exist in either %s or %s directories.", $fileName, $this->getRelativeUrl(), $app['resources']->getUrl('theme'));
     $app['logger.system']->error($message, ['event' => 'extensions']);
     return $fileName;
 }