public function preDispatch()
 {
     $this->getHelper('viewRenderer')->setNoController(true);
     $this->getHelper('viewRenderer')->setViewScriptPathNoControllerSpec('user/:action.:suffix');
     if (!$this->_getParam('user') && $this->getRequest()->getActionName() != 'error') {
         $code = $this->_getParam('code');
         if (!preg_match('#^(.*)-(\\w*)$#', $code, $m)) {
             $this->getRequest()->setParam('errorMessage', trlKwf("Activation code is invalid. Maybe the URL wasn't copied completely?"));
             $this->forward('error');
         } else {
             $userId = $m[1];
             $code = $m[2];
             $userModel = Kwf_Registry::get('userModel');
             $user = $userModel->getRow($userId);
             $this->getRequest()->setParam('user', $user);
             if (!$user) {
                 $this->getRequest()->setParam('errorMessage', trlKwf("Activation code is invalid. Maybe the URL wasn't copied completely?"));
                 $this->forward('error');
             } else {
                 if (!$user->validateActivationToken($code) && $user->isActivated()) {
                     $this->getRequest()->setParam('errorMessage', trlKwf("This account has already been activated."));
                     $this->forward('error');
                 } else {
                     if (!$user->validateActivationToken($code)) {
                         $this->getRequest()->setParam('errorMessage', trlKwf("Activation code is invalid. Maybe your account has already been activated, the URL was not copied completely, or the password has already been set?"));
                         $this->forward('error');
                     }
                 }
             }
         }
     }
     $this->view->dep = Kwf_Assets_Package_Default::getAdminMainInstance();
     parent::preDispatch();
 }
예제 #2
0
 public function getTemplateVars()
 {
     $ret = parent::getTemplateVars();
     $ret['language'] = $this->getData()->getLanguage();
     $ret['assetsPackage'] = Kwf_Assets_Package_Default::getInstance('Frontend');
     return $ret;
 }
예제 #3
0
 public static function getDefaultProviderList()
 {
     if (!isset(self::$_defaultProviderList)) {
         self::$_defaultProviderList = new Kwf_Assets_ProviderList_Default();
     }
     return self::$_defaultProviderList;
 }
 public function getPackageUrls($mimeType, $language)
 {
     $ret = parent::getPackageUrls($mimeType, $language);
     if ($mimeType == 'text/javascript; ie8') {
         $ret[] = '/assets/es5-shim/es5-shim.js';
     }
     return $ret;
 }
예제 #5
0
 protected function _build($options)
 {
     $package = Kwf_Assets_Package_Default::getInstance('Frontend');
     $ret = array();
     foreach ($package->getDependency()->getFilteredUniqueDependencies('text/css') as $dep) {
         $ret = array_merge($ret, Kwc_Basic_Text_StylesModel::parseMasterStyles($dep->getContentsSourceString()));
     }
     $fileName = 'build/assets/rte-styles';
     file_put_contents($fileName, json_encode($ret));
 }
 public function preDispatch()
 {
     if ($this->getRequest()->getActionName() == 'success') {
         if (!$this->getRequest()->getParam('row') instanceof Kwf_Model_Row_Interface) {
             //don't allow call to successAction directly, allow only forward from indexAction
             throw new Kwf_Exception_AccessDenied();
         }
     }
     $this->view->dep = Kwf_Assets_Package_Default::getAdminMainInstance();
     parent::preDispatch();
 }
 public function __construct($packageName, $loadedPackage)
 {
     if ($packageName == 'Default') {
         throw new Kwf_Exception("Default component assets package is ment to be included in Frontend package");
     }
     if (!$packageName) {
         throw new Kwf_Exception("Required packageName");
     }
     $this->_packageName = $packageName;
     $this->_loadedPackage = $loadedPackage;
     parent::__construct(Kwf_Assets_Package_Default::getDefaultProviderList(), 'ComponentsPackage' . $packageName);
 }
예제 #8
0
 public function ext($class, $config = array(), $viewport = null)
 {
     //das ist nötig weil wenn $config ein leeres Array ist, kommt sonst []
     //raus aber {} wird benötigt (array als config ist ungültig)
     $config = (object) $config;
     $vars = get_object_vars($this);
     foreach ($vars as $key => $value) {
         if ('_' != substr($key, 0, 1)) {
             $config->{$key} = $value;
         }
     }
     // View einrichten
     $ext['class'] = $class;
     if (!isset($config->id)) {
         $config->id = 'mainPanel';
     }
     if (!isset($config->region)) {
         $config->region = 'center';
     }
     if (isset($config->assetsPackage)) {
         $ext['assetsPackage'] = $config->assetsPackage;
         unset($config->assetsPackage);
     } else {
         $ext['assetsPackage'] = Kwf_Assets_Package_Default::getAdminMainInstance();
     }
     $ext['config'] = $config;
     if (!$viewport) {
         if (isset($config->viewport)) {
             $viewport = $config->viewport;
         } else {
             $viewport = Zend_Registry::get('config')->ext->defaultViewport;
         }
     }
     $ext['viewport'] = $viewport;
     $ext['userRole'] = 'guest';
     if (Zend_Registry::get('userModel')) {
         $ext['userRole'] = Zend_Registry::get('userModel')->getAuthedUserRole();
         $user = Zend_Registry::get('userModel')->getAuthedUser();
         if ($user) {
             $ext['user'] = "******";
         }
     }
     $this->ext = $ext;
     $this->extTemplate = 'ext.tpl';
     if (Kwf_Util_SessionToken::getSessionToken()) {
         $this->sessionToken = Kwf_Util_SessionToken::getSessionToken();
     }
     $this->applicationName = Zend_Registry::get('config')->application->name;
     $this->favicon = self::getFavicon();
     $this->uniquePrefix = Kwf_Config::getValue('application.uniquePrefix');
 }
예제 #9
0
 public static function getMasterStyles()
 {
     $cacheId = 'textMasterSyles';
     $ret = Kwf_Cache_SimpleStatic::fetch($cacheId);
     if ($ret !== false) {
         return $ret;
     }
     $package = Kwf_Assets_Package_Default::getInstance('Frontend');
     $ret = array();
     foreach ($package->getDependency()->getFilteredUniqueDependencies('text/css') as $dep) {
         $ret = array_merge($ret, self::parseMasterStyles($dep->getContentsSourceString()));
     }
     Kwf_Cache_SimpleStatic::add($cacheId, $ret);
     return $ret;
 }
예제 #10
0
 protected function _init($componentClass)
 {
     Kwf_Component_Data_Root::setComponentClass($componentClass);
     Zend_Session::$_unitTestEnabled = true;
     $this->_root = Kwf_Component_Data_Root::getInstance();
     $this->_root->setFilename('kwf/kwctest/' . $componentClass);
     if (function_exists('apc_clear_cache')) {
         apc_clear_cache('user');
     }
     Kwf_Component_Cache_Memory::getInstance()->_clean();
     Kwf_Cache_Simple::resetZendCache();
     Kwc_FulltextSearch_MetaModel::setInstance(new Kwf_Model_FnF(array('primaryKey' => 'page_id')));
     Kwf_Assets_Package_Default::clearInstances();
     Kwf_Component_LogDuplicateModel::setInstance(new Kwf_Model_FnF(array()));
     Kwf_Media_MemoryCache::getInstance()->clean();
     return $this->_root;
 }
예제 #11
0
 public function showFrontendAssetSizesAction()
 {
     $packages = array(Kwf_Assets_Package_Default::getInstance('Frontend'));
     $mimeTypes = array('text/javascript', 'text/javascript; defer', 'text/css', 'text/css; defer');
     foreach ($packages as $p) {
         foreach ($mimeTypes as $mimeType) {
             $sizes = array();
             echo "\n" . $p->getDependencyName() . " {$mimeType}\n";
             foreach ($p->getFilteredUniqueDependencies($mimeType) as $i) {
                 $sizes[(string) $i] = strlen(gzencode($i->getContentsPacked('en')->getFileContents(), 9, FORCE_GZIP));
             }
             arsort($sizes);
             $sumSize = array_sum($sizes);
             $topSizes = array_slice($sizes, 0, 10);
             foreach ($topSizes as $name => $size) {
                 echo "" . str_pad(number_format(round($size / $sumSize * 100, 1), 1) . '%', 5) . ' ' . str_pad(Kwf_View_Helper_FileSize::fileSize($size), 10) . " {$name}\n";
             }
         }
     }
 }
예제 #12
0
 protected function _getFilteredUniqueDependencies($mimeType)
 {
     $ret = parent::_getFilteredUniqueDependencies($mimeType);
     $loadedDeps = array();
     foreach ($this->_loadedDependencies as $d) {
         if ($this->_providerList === Kwf_Assets_Package_Default::getDefaultProviderList()) {
             $pkg = Kwf_Assets_Package_Default::getInstance($d);
         } else {
             $pkg = new Kwf_Assets_Package($this->_providerList, $d);
         }
         $loadedDeps = array_merge($loadedDeps, $pkg->_getFilteredUniqueDependencies($mimeType));
     }
     foreach ($ret as $k => $i) {
         if (in_array($i, $loadedDeps, true)) {
             unset($ret[$k]);
         }
     }
     $ret = array_values($ret);
     return $ret;
 }
예제 #13
0
 public function __construct($name, $class, $id = null)
 {
     $this->setModel(Kwc_Basic_Text_Component::createOwnModel($class));
     parent::__construct($name, $class, $id);
     $field = new Kwf_Form_Field_HtmlEditor('content', trlKwf('Text'));
     $field->setData(new Kwf_Data_Kwc_ComponentIds('content'));
     $field->setHideLabel(true);
     $ignoreSettings = array('tablename', 'componentName', 'default', 'assets', 'assetsAdmin', 'placeholder', 'plugins');
     $c = strpos($class, '.') ? substr($class, 0, strpos($class, '.')) : $class;
     foreach (call_user_func(array($c, 'getSettings')) as $key => $val) {
         if (!in_array($key, $ignoreSettings)) {
             $method = 'set' . ucfirst($key);
             $field->{$method}($val);
         }
     }
     $generators = Kwc_Abstract::getSetting($this->getClass(), 'generators');
     $classes = $generators['child']['component'];
     if ($classes['link']) {
         $cfg = new Kwf_Component_Abstract_ExtConfig_Form($classes['link']);
         $c = $cfg->getConfig(Kwf_Component_Abstract_ExtConfig_Abstract::TYPE_DEFAULT);
         $field->setLinkComponentConfig($c['form']);
     }
     if ($classes['image']) {
         $c = Kwc_Admin::getInstance($classes['image'])->getExtConfig();
         $field->setImageComponentConfig($c['form']);
     }
     if ($classes['download']) {
         $c = Kwc_Admin::getInstance($classes['download'])->getExtConfig();
         $field->setDownloadComponentConfig($c['form']);
     }
     if (Kwc_Abstract::getSetting($this->getClass(), 'enableStylesEditor')) {
         $admin = Kwc_Admin::getInstance($class);
         $field->setStylesEditorConfig(array('xtype' => 'kwc.basic.text.styleseditor', 'blockStyleUrl' => $admin->getControllerUrl('BlockStyle'), 'inlineStyleUrl' => $admin->getControllerUrl('InlineStyle'), 'masterStyleUrl' => $admin->getControllerUrl('MasterStyle')));
     }
     $t = Kwf_Model_Abstract::getInstance(Kwc_Abstract::getSetting($class, 'stylesModel'));
     $field->setStyles($t->getStyles());
     $field->setComponentClass($class);
     $field->setControllerUrl(Kwc_Admin::getInstance($class)->getControllerUrl());
     $this->fields->add($field);
     $this->setAssetsPackage(Kwf_Assets_Package_Default::getInstance('Frontend'));
 }
 public function errorAction()
 {
     $this->getHelper('viewRenderer')->setNoController(true);
     $this->getHelper('viewRenderer')->setViewScriptPathNoControllerSpec('user/:action.:suffix');
     $this->view->dep = Kwf_Assets_Package_Default::getInstance('Admin');
     $this->view->contentScript = $this->getHelper('viewRenderer')->getViewScript('login-error');
     $this->view->errorMessage = $this->_getParam('errorMessage');
     $redirect = $this->_getParam('redirect');
     if ($redirect == 'jsCallback') {
         $redirect = 'javascript:window.close();';
     }
     $this->view->redirect = $redirect;
 }
 public function showAssetPackageSizesAction()
 {
     $a = new Kwf_Util_Build_Types_Assets();
     $packages = $a->getAllPackages();
     $langs = $a->getAllLanguages();
     $exts = array('js', 'defer.js', 'css');
     foreach ($packages as $p) {
         $depName = $p->getDependencyName();
         $language = $langs[0];
         foreach ($exts as $extension) {
             $cacheId = Kwf_Assets_Dispatcher::getInstance()->getCacheIdByPackage($p, $extension, $language);
             $cacheContents = Kwf_Assets_BuildCache::getInstance()->load($cacheId);
             echo "{$depName} ";
             $h = new Kwf_View_Helper_FileSize();
             echo "{$extension} size: " . $h->fileSize(strlen(gzencode($cacheContents['contents'], 9, FORCE_GZIP)));
             echo "\n";
         }
     }
     $d = Kwf_Assets_Package_Default::getDefaultProviderList()->findDependency('Frontend');
     foreach ($d->getFilteredUniqueDependencies('text/javascript') as $i) {
         if ($i instanceof Kwf_Assets_Dependency_File && $i->getType() == 'ext2') {
             echo "\n[WARNING] Frontend text/javascript contains ext2\n";
             echo "To improve frontend performance all ext2 dependencies should be moved to defer\n\n";
             break;
         }
     }
     exit;
 }
예제 #16
0
 public static function getInstance()
 {
     return Kwf_Assets_Package_Default::getDefaultProviderList();
 }
예제 #17
0
 public function includeCode($position)
 {
     $data = $this->_getView()->component;
     $ret = '';
     if ($position == 'header') {
         $helper = new Kwf_View_Helper_DebugData();
         $ret .= $helper->debugData();
     }
     $flag = $position == 'header' ? 'hasHeaderIncludeCode' : 'hasFooterIncludeCode';
     $cmps = $data->getPage()->getRecursiveChildComponents(array('flags' => array($flag => true)));
     if (Kwc_Abstract::getFlag($data->componentClass, $flag)) {
         $cmps[] = $data;
     }
     $statisticsBoxUsed = false;
     $assetsBoxUsed = false;
     foreach ($cmps as $c) {
         $includeCode = $c->getComponent()->getIncludeCode($position);
         if (is_string($includeCode)) {
             $ret .= $includeCode;
         } else {
             if (is_object($includeCode) && $includeCode instanceof Kwf_Component_Data) {
                 $componentHelper = new Kwf_Component_View_Helper_Component();
                 $componentHelper->setRenderer($this->_getRenderer());
                 $componentHelper->setView($this->_getView());
                 $ret .= $componentHelper->component($includeCode);
                 if (is_instance_of($includeCode->componentClass, 'Kwc_Statistics_Analytics_Component') || is_instance_of($includeCode->componentClass, 'Kwc_Statistics_Piwik_Component')) {
                     $statisticsBoxUsed = true;
                 }
                 if (is_instance_of($includeCode->componentClass, 'Kwc_Box_Assets_Component')) {
                     $assetsBoxUsed = true;
                 }
             } else {
                 if (is_null($includeCode)) {
                 } else {
                     throw new Kwf_Exception("invalid getIncludeCode return type");
                 }
             }
         }
     }
     if ($position == 'header') {
         if ($v = Kwf_Config::getValue('kwc.favicon')) {
             $ret .= "<link rel=\"shortcut icon\" href=\"{$v}\" />\n";
         }
         if (!$assetsBoxUsed) {
             //add default assets if there was no box
             $a = new Kwf_View_Helper_Assets();
             $ret .= $a->assets(Kwf_Assets_Package_Default::getInstance('Frontend'), null);
         }
         $helper = new Kwf_Component_View_Helper_Dynamic();
         $helper->setRenderer($this->_getRenderer());
         $helper->setView($this->_getView());
         $ret .= $helper->dynamic('SessionToken');
     } else {
         if ($position == 'footer') {
             if (!$statisticsBoxUsed) {
                 //if there was no statistics box output default code
                 //box is required for eg. multidomains
                 $cfg = Kwf_Config::getValueArray('statistics');
                 if (isset($cfg['analytics']['code']) && $cfg['analytics']['code']) {
                     throw new Kwf_Exception('To support analytics add Kwc_Statistics_Analytics_Component as a box.');
                 }
                 if (isset($cfg['piwik']['id']) && $cfg['piwik']['id']) {
                     throw new Kwf_Exception('To support piwik add Kwc_Statistics_Piwik_Component as a box.');
                 }
             }
             //see http://nexxar.wordpress.com/2010/10/07/speeding-up-jquery-ready-on-ie/
             $ret .= "\n";
             $ret .= "<!--[if lt IE 9]>\n";
             $ret .= "<script type=\"text/javascript\">\n";
             $ret .= "    jQuery.ready();\n";
             $ret .= "</script>\n";
             $ret .= "<![endif]-->\n";
         }
     }
     return $ret;
 }
예제 #18
0
 protected function _build($options)
 {
     if (!file_exists('build/assets')) {
         mkdir('build/assets');
     }
     Kwf_Assets_BuildCache::getInstance()->building = true;
     Kwf_Assets_BuildCache::getInstance()->clean();
     Kwf_Assets_BuildCache::getInstance()->save(time(), 'assetsVersion');
     $langs = $this->_getAllLanguages();
     $packages = $this->_getAllPackages();
     $exts = array('js', 'defer.js', 'css', 'printcss');
     echo "\ncalculating dependencies...\n";
     $steps = count($packages) * count($exts);
     $c = new Zend_ProgressBar_Adapter_Console();
     $c->setElements(array(Zend_ProgressBar_Adapter_Console::ELEMENT_PERCENT, Zend_ProgressBar_Adapter_Console::ELEMENT_BAR, Zend_ProgressBar_Adapter_Console::ELEMENT_TEXT));
     $c->setTextWidth(50);
     $progress = new Zend_ProgressBar($c, 0, $steps);
     $countDependencies = 0;
     foreach ($packages as $p) {
         $depName = $p->getDependencyName();
         foreach ($exts as $extension) {
             $progress->next(1, "{$depName} {$extension}");
             $countDependencies += count($p->getFilteredUniqueDependencies(self::$_mimeTypeByExtension[$extension]));
             $cacheId = $p->getMaxMTimeCacheId(self::$_mimeTypeByExtension[$extension]);
             if (!$cacheId) {
                 throw new Kwf_Exception("Didn't get cacheId for " . get_class($p));
             }
             $maxMTime = $p->getMaxMTime(self::$_mimeTypeByExtension[$extension]);
             Kwf_Assets_BuildCache::getInstance()->save($maxMTime, $cacheId);
             //save generated caches for clear-cache-watcher
             $fileName = 'build/assets/package-max-mtime-' . $extension;
             if (!file_exists($fileName) || strpos(file_get_contents($fileName), $cacheId . "\n") === false) {
                 file_put_contents($fileName, $cacheId . "\n", FILE_APPEND);
             }
         }
     }
     $progress->finish();
     echo "compiling assets...\n";
     $c = new Zend_ProgressBar_Adapter_Console();
     $c->setElements(array(Zend_ProgressBar_Adapter_Console::ELEMENT_PERCENT, Zend_ProgressBar_Adapter_Console::ELEMENT_BAR, Zend_ProgressBar_Adapter_Console::ELEMENT_TEXT));
     $c->setTextWidth(50);
     $progress = new Zend_ProgressBar($c, 0, $countDependencies);
     foreach ($packages as $p) {
         foreach ($exts as $extension) {
             foreach ($p->getFilteredUniqueDependencies(self::$_mimeTypeByExtension[$extension]) as $dep) {
                 $progress->next(1, "{$dep}");
                 $dep->warmupCaches();
             }
         }
     }
     $progress->finish();
     echo "generating packages...\n";
     $steps = count($packages) * count($langs) * count($exts) * 4;
     $c = new Zend_ProgressBar_Adapter_Console();
     $c->setElements(array(Zend_ProgressBar_Adapter_Console::ELEMENT_PERCENT, Zend_ProgressBar_Adapter_Console::ELEMENT_BAR, Zend_ProgressBar_Adapter_Console::ELEMENT_TEXT));
     $c->setTextWidth(50);
     $progress = new Zend_ProgressBar($c, 0, $steps);
     foreach ($packages as $p) {
         $depName = $p->getDependencyName();
         foreach ($langs as $language) {
             foreach ($exts as $extension) {
                 $packageContents = $p->getPackageContents(self::$_mimeTypeByExtension[$extension], $language);
                 $maxMTime = $p->getMaxMTime(self::$_mimeTypeByExtension[$extension]);
                 $progress->next(1, "{$depName} {$extension} {$language}");
                 $progress->next(1, "{$depName} {$extension} {$language} source");
                 $this->_buildPackageContents($packageContents, $maxMTime, $p, $extension, $language);
                 $progress->next(1, "{$depName} {$extension} {$language} map");
                 $this->_buildPackageSourceMap($packageContents, $maxMTime, $p, $extension, $language);
                 $progress->next(1, "{$depName} {$extension} {$language} url");
                 $urls = $p->getPackageUrls(self::$_mimeTypeByExtension[$extension], $language);
                 if (Kwf_Setup::getBaseUrl()) {
                     foreach ($urls as $k => $i) {
                         $urls[$k] = substr($i, strlen(Kwf_Setup::getBaseUrl()));
                     }
                 }
                 $cacheId = $p->getPackageUrlsCacheId(self::$_mimeTypeByExtension[$extension], $language);
                 Kwf_Assets_BuildCache::getInstance()->save($urls, $cacheId);
             }
         }
     }
     Kwf_Assets_Cache::getInstance()->clean();
     Kwf_Assets_BuildCache::getInstance()->building = false;
     $exts = array('js', 'defer.js', 'css');
     foreach ($packages as $p) {
         $depName = $p->getDependencyName();
         $language = $langs[0];
         foreach ($exts as $extension) {
             $cacheId = Kwf_Assets_Dispatcher::getCacheIdByPackage($p, $extension, $language);
             $cacheContents = Kwf_Assets_BuildCache::getInstance()->load($cacheId);
             echo "{$depName} ";
             $h = new Kwf_View_Helper_FileSize();
             echo "{$extension} size: " . $h->fileSize(strlen(gzencode($cacheContents['contents'], 9, FORCE_GZIP)));
             echo "\n";
         }
     }
     $d = Kwf_Assets_Package_Default::getDefaultProviderList()->findDependency('Frontend');
     foreach ($d->getFilteredUniqueDependencies('text/javascript') as $i) {
         if ($i instanceof Kwf_Assets_Dependency_File && $i->getType() == 'ext2') {
             echo "\n[WARNING] Frontend text/javascript contains ext2\n";
             echo "To improve frontend performance all ext2 dependencies should be moved to defer\n\n";
             break;
         }
     }
 }
예제 #19
0
 public function includeCode($position)
 {
     $data = $this->_getView()->component;
     $ret = '';
     if ($position == 'header') {
         if (Kwf_Config::getValue('application.kwf.name') == 'Koala Framework') {
             $ret .= "<!--\n";
             $ret .= "    This website is powered by Koala Web Framework CMS Version " . Kwf_Config::getValue('application.kwf.version') . ".\n";
             $ret .= "    Koala Framework is a free open source Content Management Framework licensed under BSD.\n";
             $ret .= "    http://www.koala-framework.org\n";
             $ret .= "-->\n";
         }
         $helper = new Kwf_View_Helper_DebugData();
         $ret .= $helper->debugData();
     }
     $flag = $position == 'header' ? 'hasHeaderIncludeCode' : 'hasFooterIncludeCode';
     $cmps = $data->getPage()->getRecursiveChildComponents(array('flags' => array($flag => true)));
     if (Kwc_Abstract::getFlag($data->componentClass, $flag)) {
         $cmps[] = $data;
     }
     $statisticsBoxUsed = false;
     $assetsBoxUsed = false;
     foreach ($cmps as $c) {
         $includeCode = $c->getComponent()->getIncludeCode($position);
         if (is_string($includeCode)) {
             $ret .= $includeCode;
         } else {
             if (is_object($includeCode) && $includeCode instanceof Kwf_Component_Data) {
                 $componentHelper = new Kwf_Component_View_Helper_Component();
                 $componentHelper->setRenderer($this->_getRenderer());
                 $componentHelper->setView($this->_getView());
                 $ret .= $componentHelper->component($includeCode);
                 if (is_instance_of($includeCode->componentClass, 'Kwc_Statistics_Analytics_Component') || is_instance_of($includeCode->componentClass, 'Kwc_Statistics_Piwik_Component')) {
                     $statisticsBoxUsed = true;
                 }
                 if (is_instance_of($includeCode->componentClass, 'Kwc_Box_Assets_Component')) {
                     $assetsBoxUsed = true;
                 }
             } else {
                 if (is_null($includeCode)) {
                 } else {
                     throw new Kwf_Exception("invalid getIncludeCode return type");
                 }
             }
         }
     }
     if ($position == 'header') {
         if ($v = Kwf_Config::getValue('kwc.favicon')) {
             $v = Kwf_Setup::getBaseUrl() . $v;
             $ret .= "<link rel=\"shortcut icon\" href=\"{$v}\" />\n";
         }
         if (!$assetsBoxUsed) {
             //add default assets if there was no box
             $a = new Kwf_View_Helper_Assets();
             $ret .= $a->assets(Kwf_Assets_Package_Default::getInstance('Frontend'), null);
         }
         $helper = new Kwf_Component_View_Helper_Dynamic();
         $helper->setRenderer($this->_getRenderer());
         $helper->setView($this->_getView());
         $ret .= $helper->dynamic('SessionToken');
     } else {
         if ($position == 'footer') {
             if (!$statisticsBoxUsed) {
                 //if there was no statistics box output default code
                 //box is required for eg. multidomains
                 $cfg = Kwf_Config::getValueArray('statistics');
                 if (isset($cfg['analytics']['code']) && $cfg['analytics']['code']) {
                     throw new Kwf_Exception('To support analytics add Kwc_Statistics_Analytics_Component as a box.');
                 }
                 if (isset($cfg['piwik']['id']) && $cfg['piwik']['id']) {
                     throw new Kwf_Exception('To support piwik add Kwc_Statistics_Piwik_Component as a box.');
                 }
             }
         }
     }
     return $ret;
 }
 public function getPackageContents($mimeType, $language, $includeSourceMapComment = true)
 {
     $ret = parent::getPackageContents($mimeType, $language, $includeSourceMapComment);
     if ($mimeType == 'text/javascript; defer') {
         $ret = Kwf_Assets_Package_Filter_LoadDeferred::filter($ret);
     }
     return $ret;
 }