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; }