public function testDependency() { $files = array(new Kwf_Assets_Dependency_File_Js(new Kwf_Assets_Dependency_EmptyProviderList(), 'kwf/Kwf_js/Kwf.js')); $dep = array(); $d = new Kwf_Assets_Dependency_Dependencies(new Kwf_Assets_Dependency_EmptyProviderList(), $files); $this->assertEquals($files, $d->getDependencies(Kwf_Assets_Dependency_Abstract::DEPENDENCY_TYPE_ALL)); $this->assertEquals(null, $d->getContentsPacked()->getFileContents()); }
public function testDependency() { $files = array(new Kwf_Assets_Dependency_File_Js('kwf/Kwf_js/Kwf.js')); $dep = array(); $d = new Kwf_Assets_Dependency_Dependencies($files); $this->assertEquals($files, $d->getDependencies(Kwf_Assets_Dependency_Abstract::DEPENDENCY_TYPE_ALL)); $this->assertEquals(null, $d->getContents('en')); }
public function getDependency($dependencyName) { if ($dependencyName == 'Components') { $ret = array(); $nonDeferDep = array(); $files = Kwf_Component_Abstract_Admin::getComponentFiles($this->_rootComponentClass, array('css' => array('filename' => 'Web', 'ext' => 'css', 'returnClass' => false, 'multiple' => true), 'scss' => array('filename' => 'Web', 'ext' => 'scss', 'returnClass' => false, 'multiple' => true))); foreach ($files as $i) { foreach ($i as $j) { $cwd = str_replace(DIRECTORY_SEPARATOR, '/', getcwd()); if (substr($j, 0, 3) == '../') { $cwd = substr($cwd, 0, strrpos($cwd, '/')); $j = substr($j, 3); } $j = $cwd . '/' . $j; $jj = Kwf_Assets_Dependency_File::getPathWithTypeByFileName($this->_providerList, $j); if (!$jj) { throw new Kwf_Exception("Can't find path type for '{$j}'"); } $nonDeferDep[] = $this->_createDependencyForFile($jj, true); } } if ($nonDeferDep) { $nonDeferDep = new Kwf_Assets_Dependency_Dependencies($this->_providerList, $nonDeferDep, 'Web'); $ret[] = $nonDeferDep; } $componentClassesPackages = $this->_getComponentClassesPackages(); foreach ($componentClassesPackages['Frontend'] as $c) { $packageName = Kwc_Abstract::getFlag($c, 'assetsPackage'); if ($packageName == 'Default') { $packageName = false; } if (!$packageName) { $d = $this->_providerList->findDependency('Component-' . $c); if (!$d) { throw new Kwf_Exception("Didn't get dependency 'Component-{$c}'"); } $ret[] = $d; } } return new Kwf_Assets_Dependency_Dependencies($this->_providerList, $ret, $dependencyName); } else { if (substr($dependencyName, 0, 17) == 'ComponentsPackage') { $ret = array(); $assetsPackageName = substr($dependencyName, 17); $componentClassesPackages = $this->_getComponentClassesPackages(); foreach ($componentClassesPackages[$assetsPackageName] as $c) { $d = $this->_providerList->findDependency('Component-' . $c); if (!$d) { throw new Kwf_Exception("Didn't get dependency 'Component-{$c}'"); } $ret[] = $d; } return new Kwf_Assets_Dependency_Dependencies($this->_providerList, $ret, $dependencyName); } else { if ($dependencyName == 'ComponentsAdmin') { $ret = array(); foreach (Kwc_Abstract::getComponentClasses() as $class) { //dep $ret = array_merge($ret, $this->_getComponentSettingDependenciesDep($class, 'assetsAdmin')); //files $assets = Kwc_Abstract::getSetting($class, 'assetsAdmin'); foreach ($assets['files'] as $file) { if (!isset($this->_fileDependencies[$file])) { $this->_fileDependencies[$file] = Kwf_Assets_Dependency_File::createDependency($file, $this->_providerList); } $ret[] = $this->_fileDependencies[$file]; } } return new Kwf_Assets_Dependency_Dependencies($this->_providerList, $ret, $dependencyName); } else { if ($dependencyName == 'FrontendCore') { $deps = array(); $dep = new Kwf_Assets_Dependency_File_Js($this->_providerList, 'kwf/commonjs/frontend-core.js'); $dep->setIsCommonJsEntry(true); $deps[] = $dep; $dep = new Kwf_Assets_Dependency_File_Js($this->_providerList, 'kwf/commonjs/frontend-core.defer.js'); $dep->setIsCommonJsEntry(true); $dep->setDeferLoad(true); $deps[] = $dep; return new Kwf_Assets_Dependency_Dependencies($this->_providerList, $deps, 'FrontendCore'); } else { if (substr($dependencyName, 0, 10) == 'Component-') { $class = substr($dependencyName, 10); $ret = array(); $deps = $this->_getComponentSettingDependenciesDep($class, 'assetsDefer', true); if ($deps) { $deps = new Kwf_Assets_Dependency_Dependencies($this->_providerList, $deps, $class . '-deps-defer'); $deps->setDeferLoad(true); $ret[] = $deps; } $deps = $this->_getComponentSettingDependenciesDep($class, 'assets', true); if ($deps) { $deps = new Kwf_Assets_Dependency_Dependencies($this->_providerList, $deps, $class . '-deps'); $ret[] = $deps; } $deps = array(); foreach ($this->_getComponentSettingDependenciesFiles($class, 'assets', true) as $dep) { if ($dep instanceof Kwf_Assets_Dependency_File && preg_match('#Master\\.[a-z]+$#', $dep->getFileNameWithType())) { //Master.css/js needs to be part of Kwf_Assets_Components_Dependency_Abstract for .kwcClass to work correctly $deps[] = array('dep' => $dep, 'master' => true, 'defer' => false); } else { //other files are dependencies like dep if ($dep instanceof Kwf_Assets_Dependency_File && preg_match('#Web(\\.defer)?\\.js+$#', $dep->getFileNameWithType())) { $dep->setIsCommonJsEntry(true); } $ret[] = $dep; } } foreach ($this->_getComponentSettingDependenciesFiles($class, 'assetsDefer', true) as $dep) { if ($dep instanceof Kwf_Assets_Dependency_File && preg_match('#Master\\.[a-z\\.]+$#', $dep->getFileNameWithType())) { //Master.css/js needs to be part of Kwf_Assets_Components_Dependency_Abstract for .kwcClass to work correctly $deps[] = array('dep' => $dep, 'master' => true, 'defer' => true); } else { //other files are dependencies like dep if ($dep instanceof Kwf_Assets_Dependency_File && preg_match('#Web(\\.defer)?\\.js+$#', $dep->getFileNameWithType())) { $dep->setIsCommonJsEntry(true); } $dep->setDeferLoad(true); $ret[] = $dep; } } if (Kwc_Abstract::hasSetting($class, 'masterExtends') && Kwc_Abstract::getSetting($class, 'masterExtends')) { //plus masterExtends for inherited styles foreach ($this->_getComponentSettingDependenciesFiles(Kwc_Abstract::getSetting($class, 'masterExtends'), 'assets', true) as $dep) { if ($dep instanceof Kwf_Assets_Dependency_File && preg_match('#Master\\.[a-z]+$#', $dep->getFileNameWithType())) { //Master.css/js needs to be part of Kwf_Assets_Components_Dependency_Abstract for .kwcClass to work correctly $deps[] = array('dep' => $dep, 'master' => true, 'defer' => false); } } foreach ($this->_getComponentSettingDependenciesFiles(Kwc_Abstract::getSetting($class, 'masterExtends'), 'assetsDefer', true) as $dep) { if ($dep instanceof Kwf_Assets_Dependency_File && preg_match('#Master\\.[a-z]+$#', $dep->getFileNameWithType())) { //Master.css/js needs to be part of Kwf_Assets_Components_Dependency_Abstract for .kwcClass to work correctly $deps[] = array('dep' => $dep, 'master' => true, 'defer' => true); } } // d($deps); } //alle dateien der vererbungshierache includieren $files = Kwc_Abstract::getSetting($class, 'componentFiles'); $componentCssFiles = array(); foreach (array_merge($files['css'], $files['js']) as $f) { $componentCssFiles[] = $f; } //reverse damit css von weiter unten in der vererbungshierachie überschreibt $componentCssFiles = array_reverse($componentCssFiles); foreach ($componentCssFiles as $path) { $pathWithType = Kwf_Assets_Dependency_File::getPathWithTypeByFileName($this->_providerList, './' . $path); if (!$pathWithType) { throw new Kwf_Exception("Can't find path type for '{$path}'"); } $dep = $this->_createDependencyForFile($pathWithType, true); if (substr($path, -8) == 'defer.js') { $deps[] = array('dep' => $dep, 'master' => false, 'defer' => true); } else { $deps[] = array('dep' => $dep, 'master' => false, 'defer' => false); } if ($dep instanceof Kwf_Assets_Dependency_File_Scss) { if ($scssConfig = Kwc_Admin::getInstance($class)->getScssConfig()) { $dep->setConfig($scssConfig, Kwc_Admin::getInstance($class)->getScssConfigMasterFiles()); } } } //reverse damit css von weiter unten in der vererbungshierachie überschreibt $componentCssFiles = array_reverse($files['masterCss']); foreach ($componentCssFiles as $path) { $pathWithType = Kwf_Assets_Dependency_File::getPathWithTypeByFileName($this->_providerList, './' . $path); if (!$pathWithType) { throw new Kwf_Exception("Can't find path type for '{$path}'"); } $dep = $this->_createDependencyForFile($pathWithType, true); if (substr($path, -8) == 'defer.js') { $deps[] = array('dep' => $dep, 'master' => true, 'defer' => true); } else { $deps[] = array('dep' => $dep, 'master' => true, 'defer' => false); } } //css, not master $matchingDeps = array(); foreach ($deps as $i) { if ($i['dep']->getMimeType() == 'text/css' && $i['master'] == false) { $matchingDeps[] = $i['dep']; } } if ($matchingDeps) { $ret[] = new Kwf_Assets_Components_Dependency_Css($this->_providerList, $class, $matchingDeps, false, $class . '-css'); } //css, master $matchingDeps = array(); foreach ($deps as $i) { if ($i['dep']->getMimeType() == 'text/css' && $i['master'] == true) { $matchingDeps[] = $i['dep']; } } if ($matchingDeps) { $ret[] = new Kwf_Assets_Components_Dependency_Css($this->_providerList, $class, $matchingDeps, true, $class . '-master-css'); } //js, not master, not defer $matchingDeps = array(); foreach ($deps as $i) { if ($i['dep']->getMimeType() != 'text/css' && $i['master'] == false && $i['defer'] == false) { $matchingDeps[] = $i['dep']; } } if ($matchingDeps) { $ret[] = new Kwf_Assets_Components_Dependency_Js($this->_providerList, $class, $matchingDeps, false, $class . '-js'); } //js, master, not defer $matchingDeps = array(); foreach ($deps as $i) { if ($i['dep']->getMimeType() != 'text/css' && $i['master'] == true && $i['defer'] == false) { $matchingDeps[] = $i['dep']; } } if ($matchingDeps) { $ret[] = new Kwf_Assets_Components_Dependency_Js($this->_providerList, $class, $matchingDeps, true, $class . '-master-js'); } //js, not master, defer $matchingDeps = array(); foreach ($deps as $i) { if ($i['dep']->getMimeType() != 'text/css' && $i['master'] == false && $i['defer'] == true) { $matchingDeps[] = $i['dep']; } } if ($matchingDeps) { $dep = new Kwf_Assets_Components_Dependency_Js($this->_providerList, $class, $matchingDeps, false, $class . '-defer-js'); $dep->setDeferLoad(true); $ret[] = $dep; } //js, master, defer $matchingDeps = array(); foreach ($deps as $i) { if ($i['dep']->getMimeType() != 'text/css' && $i['master'] == true && $i['defer'] == true) { $matchingDeps[] = $i['dep']; } } if ($matchingDeps) { $dep = new Kwf_Assets_Components_Dependency_Js($this->_providerList, $class, $matchingDeps, true, $class . '-master-defer-js'); $dep->setDeferLoad(true); $ret[] = $dep; } return new Kwf_Assets_Dependency_Dependencies($this->_providerList, $ret, $dependencyName); } } } } } return null; }
public function getDependency($dependencyName) { if ($dependencyName == 'Components') { $ret = array(); $nonDeferDep = array(); $files = Kwf_Component_Abstract_Admin::getComponentFiles($this->_rootComponentClass, array('css' => array('filename' => 'Web', 'ext' => 'css', 'returnClass' => false, 'multiple' => true), 'scss' => array('filename' => 'Web', 'ext' => 'scss', 'returnClass' => false, 'multiple' => true))); foreach ($files as $i) { foreach ($i as $j) { $cwd = str_replace(DIRECTORY_SEPARATOR, '/', getcwd()); if (substr($j, 0, 3) == '../') { $cwd = substr($cwd, 0, strrpos($cwd, '/')); $j = substr($j, 3); } $j = $cwd . '/' . $j; $jj = Kwf_Assets_Dependency_File::getPathWithTypeByFileName($j); if (!$jj) { throw new Kwf_Exception("Can't find path type for '{$j}'"); } $nonDeferDep[] = $this->_createDependencyForFile($jj, true); } } if ($nonDeferDep) { $nonDeferDep = new Kwf_Assets_Dependency_Dependencies($nonDeferDep, 'Web'); $ret[] = $nonDeferDep; } $componentClasses = $this->_getRecursiveChildClasses($this->_rootComponentClass); foreach ($componentClasses as $class) { $deps = $this->_getComponentSettingDependenciesDep($class, 'assetsDefer', true); if ($deps) { $deps = new Kwf_Assets_Dependency_Dependencies($deps, $class . '-deps-defer'); $deps->setDeferLoad(true); $ret[] = $deps; } $deps = $this->_getComponentSettingDependenciesDep($class, 'assets', true); if ($deps) { $deps = new Kwf_Assets_Dependency_Dependencies($deps, $class . '-deps'); $ret[] = $deps; } $deps = array(); foreach ($this->_getComponentSettingDependenciesFiles($class, 'assets', true) as $dep) { if ($dep instanceof Kwf_Assets_Dependency_File && preg_match('#Master\\.[a-z]+$#', $dep->getFileNameWithType())) { $deps[] = array('dep' => $dep, 'master' => true, 'defer' => false); } else { $deps[] = array('dep' => $dep, 'master' => false, 'defer' => false); } } foreach ($this->_getComponentSettingDependenciesFiles($class, 'assetsDefer', true) as $dep) { if ($dep instanceof Kwf_Assets_Dependency_File && preg_match('#Master\\.[a-z]+$#', $dep->getFileNameWithType())) { $deps[] = array('dep' => $dep, 'master' => true, 'defer' => true); } else { $deps[] = array('dep' => $dep, 'master' => false, 'defer' => true); } } //alle dateien der vererbungshierache includieren $files = Kwc_Abstract::getSetting($class, 'componentFiles'); $componentCssFiles = array(); foreach (array_merge($files['css'], $files['js']) as $f) { $componentCssFiles[] = $f; } //reverse damit css von weiter unten in der vererbungshierachie überschreibt $componentCssFiles = array_reverse($componentCssFiles); foreach ($componentCssFiles as $i) { $dep = $this->_createDependencyForFile($i, true); if (substr($i, -8) == 'defer.js') { $deps[] = array('dep' => $dep, 'master' => false, 'defer' => true); } else { $deps[] = array('dep' => $dep, 'master' => false, 'defer' => false); } } //reverse damit css von weiter unten in der vererbungshierachie überschreibt $componentCssFiles = array_reverse($files['masterCss']); foreach ($componentCssFiles as $i) { $dep = $this->_createDependencyForFile($i, true); if (substr($i, -8) == 'defer.js') { $deps[] = array('dep' => $dep, 'master' => true, 'defer' => true); } else { $deps[] = array('dep' => $dep, 'master' => true, 'defer' => false); } } //css, not master $matchingDeps = array(); foreach ($deps as $i) { if ($i['dep']->getMimeType() == 'text/css' && $i['master'] == false) { $matchingDeps[] = $i['dep']; } } if ($matchingDeps) { $ret[] = new Kwf_Assets_Components_Dependency_Css($class, $matchingDeps, false); } //css, master $matchingDeps = array(); foreach ($deps as $i) { if ($i['dep']->getMimeType() == 'text/css' && $i['master'] == true) { $matchingDeps[] = $i['dep']; } } if ($matchingDeps) { $ret[] = new Kwf_Assets_Components_Dependency_Css($class, $matchingDeps, true); } //js, not master, not defer $matchingDeps = array(); foreach ($deps as $i) { if ($i['dep']->getMimeType() != 'text/css' && $i['master'] == false && $i['defer'] == false) { $matchingDeps[] = $i['dep']; } } if ($matchingDeps) { $ret[] = new Kwf_Assets_Components_Dependency_Js($class, $matchingDeps, false); } //js, master, not defer $matchingDeps = array(); foreach ($deps as $i) { if ($i['dep']->getMimeType() != 'text/css' && $i['master'] == true && $i['defer'] == false) { $matchingDeps[] = $i['dep']; } } if ($matchingDeps) { $ret[] = new Kwf_Assets_Components_Dependency_Js($class, $matchingDeps, true); } //js, not master, defer $matchingDeps = array(); foreach ($deps as $i) { if ($i['dep']->getMimeType() != 'text/css' && $i['master'] == false && $i['defer'] == true) { $matchingDeps[] = $i['dep']; } } if ($matchingDeps) { $dep = new Kwf_Assets_Components_Dependency_Js($class, $matchingDeps, false); $dep->setDeferLoad(true); $ret[] = $dep; } //js, master, defer $matchingDeps = array(); foreach ($deps as $i) { if ($i['dep']->getMimeType() != 'text/css' && $i['master'] == true && $i['defer'] == true) { $matchingDeps[] = $i['dep']; } } if ($matchingDeps) { $dep = new Kwf_Assets_Components_Dependency_Js($class, $matchingDeps, true); $dep->setDeferLoad(true); $ret[] = $dep; } } return new Kwf_Assets_Dependency_Dependencies($ret, $dependencyName); } else { if ($dependencyName == 'ComponentsAdmin') { $ret = array(); $componentClasses = $this->_getRecursiveChildClasses($this->_rootComponentClass); foreach ($componentClasses as $class) { $ret = array_merge($ret, $this->_getComponentSettingDependencies($class, 'assetsAdmin', false)); } return new Kwf_Assets_Dependency_Dependencies($ret, $dependencyName); } else { if ($dependencyName == 'FrontendCore') { $deps = array(); $dep = new Kwf_Assets_Dependency_File_Js('kwf/commonjs/frontend-core.js'); $dep->setIsCommonJsEntry(true); $deps[] = $dep; $dep = new Kwf_Assets_Dependency_File_Js('kwf/commonjs/frontend-core.defer.js'); $dep->setIsCommonJsEntry(true); $dep->setDeferLoad(true); $deps[] = $dep; return new Kwf_Assets_Dependency_Dependencies($deps, 'FrontendCore'); } } } return null; }
public function getDependency($dependencyName) { $ret = null; if (strtolower($dependencyName) == $this->_path || strtolower($dependencyName) . '.js' == $this->_path) { $type = $this->_path; $dir = VENDOR_PATH . '/bower_components/' . $this->_path; if (file_exists($dir . '/bower.json')) { $ret = new Kwf_Assets_Dependency_Dependencies(array(), $dependencyName); $bower = json_decode(file_get_contents($dir . '/bower.json'), true); if (isset($bower['main'])) { $main = $bower['main']; if (is_string($main)) { $main = array($main); } foreach ($main as $mainFile) { $mainFile = $mainFile; if (substr($mainFile, -3) == '.js') { if (substr($mainFile, -7) == '.min.js' || substr($mainFile, -7) == '-min.js') { //we don't want to use min file $mainFile = substr($mainFile, 0, -7) . '.js'; } if (file_exists($dir . '/' . substr($mainFile, 0, -3) . '.min.js') && file_exists($dir . '/' . substr($mainFile, 0, -3) . '.min.map')) { //use shipped minimied+map file if exists $d = new Kwf_Assets_Dependency_File_JsPreBuilt($type . '/' . $mainFile, $type . '/' . substr($mainFile, 0, -3) . '.min.js', $type . '/' . substr($mainFile, 0, -3) . '.min.map'); } elseif (file_exists($dir . '/' . substr($mainFile, 0, -3) . '-min.js') && file_exists($dir . '/' . substr($mainFile, 0, -3) . '-min.map')) { //use shipped minimied+map file if exists $d = new Kwf_Assets_Dependency_File_JsPreBuilt($type . '/' . $mainFile, $type . '/' . substr($mainFile, 0, -3) . '-min.js', $type . '/' . substr($mainFile, 0, -3) . '-min.map'); } else { $d = new Kwf_Assets_Dependency_File_Js($type . '/' . $mainFile); } $ret->addDependency(Kwf_Assets_Dependency_Abstract::DEPENDENCY_TYPE_REQUIRES, $d); } elseif (substr($mainFile, -4) == '.css') { $d = new Kwf_Assets_Dependency_File_Css($type . '/' . $mainFile); $ret->addDependency(Kwf_Assets_Dependency_Abstract::DEPENDENCY_TYPE_REQUIRES, $d); } } } else { throw new Kwf_Exception("No main property in {$dir}/bower.json"); } if (isset($bower['dependencies'])) { foreach ($bower['dependencies'] as $depName => $version) { $d = $this->_providerList->findDependency($depName); if (!$d) { throw new Kwf_Exception("Can't find dependency '{$depName}'"); } $ret->addDependency(Kwf_Assets_Dependency_Abstract::DEPENDENCY_TYPE_REQUIRES, $d); } } $deps = $ret->getDependencies(Kwf_Assets_Dependency_Abstract::DEPENDENCY_TYPE_ALL); if (count($deps) == 1) { $ret = $deps[0]; } } else { $ret = $this->_guessMainFiles($dependencyName); } } else { if (substr($dependencyName, 0, 8) == 'FontFace' && strlen($dependencyName) > 8) { //eg. FontFaceIcomoon, FontFaceFontAwesome, FontFaceIonicons $bowerName = substr($dependencyName, 8); $bowerName[0] = strtolower($bowerName[0]); if (file_exists('vendor/bower_components/' . $bowerName . '/fonts.css')) { $ret = new Kwf_Assets_Dependency_File_Css($bowerName . '/fonts.css'); } else { if (file_exists('vendor/bower_components/' . $bowerName . '-font/fonts.css')) { $ret = new Kwf_Assets_Dependency_File_Css($bowerName . '-font/fonts.css'); } else { if (file_exists('vendor/bower_components/' . $bowerName . '-fonts/fonts.css')) { $ret = new Kwf_Assets_Dependency_File_Css($bowerName . '-fonts/fonts.css'); } else { if (file_exists('vendor/bower_components/' . $bowerName . '-font/css/' . $bowerName . '-font.css')) { $ret = new Kwf_Assets_Dependency_File_Css($bowerName . '-font/css/' . $bowerName . '-font.css'); } else { if (file_exists('vendor/bower_components/' . $bowerName)) { $ret = new Kwf_Assets_Dependency_FontFace($bowerName, $bowerName); } else { if (file_exists('vendor/bower_components/' . $bowerName . '-font')) { $ret = new Kwf_Assets_Dependency_FontFace($bowerName, $bowerName . '-font'); } else { if (file_exists('vendor/bower_components/' . $bowerName . '-fonts')) { $ret = new Kwf_Assets_Dependency_FontFace($bowerName, $bowerName . '-fonts'); } else { throw new Kwf_Exception("Can't find font dependency for {$dependencyName}"); } } } } } } } } } return $ret; }
public function getDependency($dependencyName) { $ret = null; if ($dependencyName == ucfirst($this->_path)) { $type = $this->_path; if (substr($type, -3) == '.js') { $type = substr($type, 0, -3); } $dir = VENDOR_PATH . '/bower_components/' . $this->_path; if (file_exists($dir . '/bower.json')) { $dependencies = array(); $bower = json_decode(file_get_contents($dir . '/bower.json'), true); if (isset($bower['dependencies'])) { foreach ($bower['dependencies'] as $depName => $version) { $d = $this->_providerList->findDependency($depName); if (!$d) { throw new Kwf_Exception("Can't find dependency '{$depName}'"); } $dependencies[] = $d; } } if (isset($bower['main'])) { $main = $bower['main']; if (is_string($main)) { $main = array($main); } $mainDeps = array('js' => array(), 'css' => array()); foreach ($main as $mainFile) { $mainFile = $mainFile; if (substr($mainFile, -3) == '.js') { if (substr($mainFile, -7) == '.min.js' || substr($mainFile, -7) == '-min.js') { //we don't want to use min file if (file_exists($dir . '/' . substr($mainFile, 0, -7))) { //make sure non-min file exists $mainFile = substr($mainFile, 0, -7) . '.js'; } } if (file_exists($dir . '/' . substr($mainFile, 0, -3) . '.min.js') && file_exists($dir . '/' . substr($mainFile, 0, -3) . '.min.map')) { //use shipped minimied+map file if exists $d = new Kwf_Assets_Dependency_File_JsPreBuilt($this->_providerList, $type . '/' . $mainFile, $type . '/' . substr($mainFile, 0, -3) . '.min.js', $type . '/' . substr($mainFile, 0, -3) . '.min.map'); } elseif (file_exists($dir . '/' . substr($mainFile, 0, -3) . '-min.js') && file_exists($dir . '/' . substr($mainFile, 0, -3) . '-min.map')) { //use shipped minimied+map file if exists $d = new Kwf_Assets_Dependency_File_JsPreBuilt($this->_providerList, $type . '/' . $mainFile, $type . '/' . substr($mainFile, 0, -3) . '-min.js', $type . '/' . substr($mainFile, 0, -3) . '-min.map'); } else { $d = new Kwf_Assets_Dependency_File_Js($this->_providerList, $type . '/' . $mainFile); } $mainDeps['js'][] = $d; } elseif (substr($mainFile, -4) == '.css') { $d = new Kwf_Assets_Dependency_File_Css($this->_providerList, $type . '/' . $mainFile); $mainDeps['css'][] = $d; } } } else { throw new Kwf_Exception("No main property in {$dir}/bower.json"); } if (count($mainDeps['js']) == 1) { //if there is a single js file in main return that and add the other dependencies $ret = $mainDeps['js'][0]; $ret->addDependencies(Kwf_Assets_Dependency_Abstract::DEPENDENCY_TYPE_REQUIRES, $mainDeps['css']); $ret->addDependencies(Kwf_Assets_Dependency_Abstract::DEPENDENCY_TYPE_REQUIRES, $dependencies); } else { $ret = new Kwf_Assets_Dependency_Dependencies($this->_providerList, array(), $dependencyName); $ret->addDependencies(Kwf_Assets_Dependency_Abstract::DEPENDENCY_TYPE_REQUIRES, $mainDeps['js']); $ret->addDependencies(Kwf_Assets_Dependency_Abstract::DEPENDENCY_TYPE_REQUIRES, $mainDeps['css']); $ret->addDependencies(Kwf_Assets_Dependency_Abstract::DEPENDENCY_TYPE_REQUIRES, $dependencies); } } else { $ret = $this->_guessMainFiles($dependencyName); } } else { if (substr($dependencyName, 0, 8) == 'FontFace' && strlen($dependencyName) > 8) { //eg. FontFaceIcomoon, FontFaceFontAwesome, FontFaceIonicons $bowerName = substr($dependencyName, 8); $bowerName[0] = strtolower($bowerName[0]); if (file_exists('vendor/bower_components/' . $bowerName . '/fonts.css')) { $ret = new Kwf_Assets_Dependency_File_Css($this->_providerList, $bowerName . '/fonts.css'); } else { if (file_exists('vendor/bower_components/' . $bowerName . '-font/fonts.css')) { $ret = new Kwf_Assets_Dependency_File_Css($this->_providerList, $bowerName . '-font/fonts.css'); } else { if (file_exists('vendor/bower_components/' . $bowerName . '-fonts/fonts.css')) { $ret = new Kwf_Assets_Dependency_File_Css($this->_providerList, $bowerName . '-fonts/fonts.css'); } else { if (file_exists('vendor/bower_components/' . $bowerName . '-font/css/' . $bowerName . '-font.css')) { $ret = new Kwf_Assets_Dependency_File_Css($this->_providerList, $bowerName . '-font/css/' . $bowerName . '-font.css'); } else { if (file_exists('vendor/bower_components/' . $bowerName)) { $ret = new Kwf_Assets_Dependency_FontFace($this->_providerList, $bowerName, $bowerName); } else { if (file_exists('vendor/bower_components/' . $bowerName . '-font')) { $ret = new Kwf_Assets_Dependency_FontFace($this->_providerList, $bowerName, $bowerName . '-font'); } else { if (file_exists('vendor/bower_components/' . $bowerName . '-fonts')) { $ret = new Kwf_Assets_Dependency_FontFace($this->_providerList, $bowerName, $bowerName . '-fonts'); } else { throw new Kwf_Exception("Can't find font dependency for {$dependencyName}"); } } } } } } } } else { if (substr(strtolower($dependencyName), 0, strlen($this->_path) + 1) == strtolower($this->_path) . '/') { //absolute path to single file path given if (substr($dependencyName, -4) == '.css') { return new Kwf_Assets_Dependency_File_Css($this->_providerList, $dependencyName); } else { return new Kwf_Assets_Dependency_File_Js($this->_providerList, $dependencyName . '.js'); } } } } return $ret; }
public function getDependency($dependencyName) { if ($dependencyName == 'Components') { $ret = array(); $nonDeferDep = array(); $files = Kwf_Component_Abstract_Admin::getComponentFiles($this->_rootComponentClass, array('css' => array('filename' => 'Web', 'ext' => 'css', 'returnClass' => false, 'multiple' => true), 'printcss' => array('filename' => 'Web', 'ext' => 'printcss', 'returnClass' => false, 'multiple' => true), 'scss' => array('filename' => 'Web', 'ext' => 'scss', 'returnClass' => false, 'multiple' => true))); foreach ($files as $i) { foreach ($i as $j) { $cwd = str_replace(DIRECTORY_SEPARATOR, '/', getcwd()); if (substr($j, 0, 3) == '../') { $cwd = substr($cwd, 0, strrpos($cwd, '/')); $j = substr($j, 3); } $j = $cwd . '/' . $j; $jj = Kwf_Assets_Dependency_File::getPathWithTypeByFileName($j); if (!$jj) { throw new Kwf_Exception("Can't find path type for '{$j}'"); } $nonDeferDep[] = $this->_createDependencyForFile($jj); } } if ($nonDeferDep) { $nonDeferDep = new Kwf_Assets_Dependency_Dependencies($nonDeferDep, 'Web'); $ret[] = $nonDeferDep; } $componentClasses = $this->_getRecursiveChildClasses($this->_rootComponentClass); foreach ($componentClasses as $class) { $nonDeferDep = $this->_getComponentSettingDependencies($class, 'assets'); $deferDep = $this->_getComponentSettingDependencies($class, 'assetsDefer'); //alle dateien der vererbungshierache includieren $files = Kwc_Abstract::getSetting($class, 'componentFiles'); $componentCssFiles = array(); foreach (array_merge($files['css'], $files['printcss'], $files['js'], $files['masterCss']) as $f) { $componentCssFiles[] = $f; } //reverse damit css von weiter unten in der vererbungshierachie überschreibt $componentCssFiles = array_reverse($componentCssFiles); foreach ($componentCssFiles as $i) { $i = getcwd() . '/' . $i; $i = Kwf_Assets_Dependency_File::getPathWithTypeByFileName($i); if (!isset($this->_componentFiles[$i])) { $addedFiles[] = $i; $dep = $this->_createDependencyForFile($i); if (substr($i, -8) == 'defer.js') { $deferDep[] = $dep; } else { $nonDeferDep[] = $dep; } } } if ($deferDep) { $deferDep = new Kwf_Assets_Dependency_Dependencies($deferDep, $class . ' defer'); $deferDep->setDeferLoad(true); $ret[] = $deferDep; } if ($nonDeferDep) { $nonDeferDep = new Kwf_Assets_Dependency_Dependencies($nonDeferDep, $class); $ret[] = $nonDeferDep; } } return new Kwf_Assets_Dependency_Dependencies($ret, $dependencyName); } else { if ($dependencyName == 'ComponentsAdmin') { $ret = array(); $componentClasses = $this->_getRecursiveChildClasses($this->_rootComponentClass); foreach ($componentClasses as $class) { $ret = array_merge($ret, $this->_getComponentSettingDependencies($class, 'assetsAdmin')); } return new Kwf_Assets_Dependency_Dependencies($ret, $dependencyName); } } return null; }