Exemplo n.º 1
0
 /**
  * @param	string	$file	
  * @param	string	$data
  * @return	string
  */
 public static function composePackage($name, array $data, $isInit = false)
 {
     if (is_string($name)) {
         $name = new PkgName($name);
     } else {
         if (!$name instanceof PkgNameInterface) {
             $err = 'package name must be a string of an object that ';
             $err .= 'implements Appfuel\\Html\\Resource\\PkgNameInterface';
             throw new InvalidArgumentException($err);
         }
     }
     $pkg = ResourceTreeManager::getPkg($name);
     if (!$pkg) {
         $err = "could not compose pkg -({$name->getName()}) not found";
         throw new DomainException($err);
     }
     $vPath = ResourceTreeManager::getVendorPath($name->getVendor());
     $path = "{$vPath}/{$pkg->getMarkupFile()}";
     $finder = self::loadFileFinder();
     $absolute = $finder->getPath($path);
     if (!$finder->fileExists($absolute, false)) {
         $err = "template file not found at -({$absolute})";
         throw new DomainException($err, 404);
     }
     $compositor = self::loadFileCompositor();
     $view = $compositor->compose($absolute, $data);
     if ($pkg->isJsInitFile()) {
         $path = "{$vPath}/{$pkg->getJsInitFile()}";
         $absolute = $finder->getPath($path);
         if (!$finder->fileExists($absolute, false)) {
             $err = "template file not found at -({$absolute})";
             throw new DomainException($err, 404);
         }
         $init = $compositor->compose($absolute, $data);
         return array($view, $init);
     }
     return $view;
 }
Exemplo n.º 2
0
 /**
  * @param	string	$pkg	name of the page view to be configured
  * @param	HtmlPageInterface $page
  * @return	null
  */
 public function applyView($pkg, HtmlPageInterface $page)
 {
     if (!is_string($pkg) || empty($pkg)) {
         $err = "view package must be an non empty string";
         throw new InvalidArgumentException($err);
     }
     $page->setViewPkg($pkg);
     $stack = new FileStack();
     if ($this->isBuild()) {
         $htmlPkg = ResourceTreeManager::resolveBuildPage($pkg, $stack);
     } else {
         $htmlPkg = ResourceTreeManager::resolvePage($pkg, $stack);
     }
     $url = $this->getResourceUrl();
     $js = $stack->get('js', "{$url}/resource");
     foreach ($js as $file) {
         $page->addScript($file);
     }
     $css = $stack->get('css', "{$url}/resource");
     foreach ($css as $file) {
         $page->addCssLink($file);
     }
     $config = $htmlPkg->getHtmlConfig();
     $page->setViewPkgName($htmlPkg->getHtmlDocName());
     $this->apply($config, $page);
 }
Exemplo n.º 3
0
 /**
  * @param	ThemePkgInterface $theme
  * @return	null
  */
 protected function buildTheme(PkgNameInterface $themePkgName, FileReaderInterface $reader, FileWriterInterface $writer, FileStackInterface $pageStack)
 {
     $themeName = $themePkgName->getName();
     $vendorName = $themePkgName->getVendor();
     $vendor = ResourceTreeManager::loadVendor($vendorName);
     $version = $vendor->getVersion();
     $pkgPath = $vendor->getPackagePath();
     $buildDir = "build/{$vendorName}/{$version}";
     $themeDir = "{$buildDir}/theme/{$themeName}/css";
     $pkg = ResourceTreeManager::getPkg($themePkgName);
     $finder = $reader->getFileFinder();
     if (!$finder->isDir($themeDir)) {
         if (!$writer->mkdir($themeDir, 0755, true)) {
             $path = $finder->getPath($themeDir);
             $err = "could not create dir at -({$path})";
             throw new RunTimeException($err);
         }
     }
     if ($pkg->isCssFiles()) {
         $list = $pkg->getCssFiles($pkgPath);
         $result = $this->makeString('css', $list, $reader, $pageStack);
         $writer->putContent($result, "{$themeDir}/{$themeName}.css");
     }
     if ($pkg->isAssetFiles()) {
         $list = $pkg->getAssetFiles();
         $assetBuildDir = "{$buildDir}/{$pkg->getAssetDir()}";
         if (!$finder->isDir($assetBuildDir)) {
             if (!$writer->mkdir($assetBuildDir, 0755, true)) {
                 $path = $finder->getPath($assetBuildDir);
                 $err = "could not create dir at -({$path})";
                 throw new RunTimeException($err);
             }
         }
         foreach ($list as $file) {
             $themeDir = "{$pkgPath}/{$pkg->getPath()}";
             $src = "{$pkgPath}/{$file}";
             $dest = "{$buildDir}/{$file}";
             $result = $writer->copy($src, $dest);
         }
     }
 }