public function testFileCreateDependency()
 {
     $f = Kwf_Assets_Dependency_File::createDependency('kwf/Kwf_js/Kwf.js', new Kwf_Assets_Dependency_EmptyProviderList());
     $this->assertTrue($f instanceof Kwf_Assets_Dependency_File_Js);
     $this->assertEquals('text/javascript', $f->getMimeType());
     $this->assertContains('Kwf.clone', $f->getContents('en'));
     $this->assertEquals(array(), $f->getDependencies(Kwf_Assets_Dependency_Abstract::DEPENDENCY_TYPE_ALL));
 }
Exemple #2
0
 private function _createDependencyForFile($file)
 {
     if (!isset($this->_componentFiles[$file])) {
         $this->_componentFiles[$file] = Kwf_Assets_Dependency_File::createDependency($file, $this->_providerList);
         $this->_componentFiles[$file]->setIsCommonJsEntry(true);
     }
     return $this->_componentFiles[$file];
 }
Exemple #3
0
 public function getDependency($dependencyName)
 {
     if (substr($dependencyName, 0, 4) != 'Kwf.') {
         return null;
     }
     $d = '/Kwf_js/' . str_replace('.', '/', substr($dependencyName, 4)) . '.js';
     if (file_exists(KWF_PATH . $d)) {
         return Kwf_Assets_Dependency_File::createDependency('kwf' . $d, $this->_providerList);
     }
     return null;
 }
 public function getDependency($dependencyName)
 {
     if ($this->_namespace) {
         if (substr($dependencyName, 0, strlen($this->_namespace) + 1) == $this->_namespace . '.') {
             $dependencyName = substr($dependencyName, strlen($this->_namespace) + 1);
         } else {
             return null;
         }
     }
     $d = $this->_basePath . '/' . str_replace('.', '/', $dependencyName) . '.js';
     if (file_exists($d)) {
         $d = $this->_basePathWithType . '/' . str_replace('.', '/', $dependencyName) . '.js';
         return Kwf_Assets_Dependency_File::createDependency($d, $this->_providerList);
     }
     return null;
 }
 public function getDependency($dependencyName)
 {
     if ($dependencyName == 'ViewsUser') {
         $deps = array();
         foreach (glob(KWF_PATH . '/views/user/*.scss') as $f) {
             $f = 'kwf/' . substr($f, strlen(KWF_PATH) + 1);
             $deps[] = Kwf_Assets_Dependency_File::createDependency($f, $this->_providerList);
         }
         if (file_exists('views/user')) {
             foreach (glob('views/user/*.scss') as $f) {
                 $deps[] = Kwf_Assets_Dependency_File::createDependency('web/' . $f, $this->_providerList);
             }
         }
         return new Kwf_Assets_Dependency_Dependencies($deps, $dependencyName);
     }
     return null;
 }
Exemple #6
0
 public function getDependency($dependencyName)
 {
     if (!isset($this->_config)) {
         $ini = new Kwf_Config_Ini($this->_iniFile, 'dependencies');
         $this->_config = $ini->toArray();
         unset($ini);
     }
     if (substr($dependencyName, -6) == 'IniDep') {
         //ini dep is own dependency as it might be defined in different file than files
         $dep = substr($dependencyName, 0, -6);
         if (!isset($this->_config[$dep]['dep'])) {
             return null;
         }
         $ret = array();
         foreach ($this->_config[$dep]['dep'] as $i) {
             if (!$i) {
                 continue;
             }
             $d = $this->_providerList->findDependency(trim($i));
             if (!$d) {
                 throw new Kwf_Exception("Can't find dependency '{$i}'");
             }
             $ret[] = $d;
         }
     } else {
         if (!isset($this->_config[$dependencyName]['files'])) {
             return null;
         }
         $ret = array();
         //optional
         $dep = $this->_providerList->findDependency($dependencyName . 'IniDep');
         if ($dep) {
             $ret[] = $dep;
         }
         $depFiles = $this->_config[$dependencyName]['files'];
         $files = array();
         foreach ($depFiles as $i) {
             if (!$i) {
                 continue;
             }
             $i = Kwf_Assets_Dependency_File::createDependency(trim($i), $this->_providerList);
             if ($i instanceof Kwf_Assets_Dependency_File && $i->getFileNameWithType()) {
                 $files[$i->getFileNameWithType()] = true;
             } else {
                 if ($i instanceof Kwf_Assets_Dependency_Dependencies) {
                     //filter out dependencies that are already returned as individual files
                     //happens when using *
                     foreach (array(Kwf_Assets_Dependency_Abstract::DEPENDENCY_TYPE_REQUIRES, Kwf_Assets_Dependency_Abstract::DEPENDENCY_TYPE_USES) as $type) {
                         $deps = $i->getDependencies($type);
                         foreach ($deps as $k => $j) {
                             if ($j instanceof Kwf_Assets_Dependency_File && $j->getFileNameWithType()) {
                                 if (isset($files[$j->getFileNameWithType()])) {
                                     unset($deps[$k]);
                                 }
                             }
                         }
                         $i->setDependencies($type, $deps);
                     }
                 }
             }
             $ret[] = $i;
         }
     }
     return new Kwf_Assets_Dependency_Dependencies($ret, $dependencyName);
 }
 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;
 }
 private function _createDependencyForFile($file, $isCommonJsEntry)
 {
     $ret = Kwf_Assets_Dependency_File::createDependency($file, $this->_providerList);
     $ret->setIsCommonJsEntry($isCommonJsEntry);
     return $ret;
 }