/** * Outputs concatenated javascript for the specified view * @param string view | the view - optional * @param boolean skipLayout | skip {view/application.php} - defaults to false */ public function javascript() { $this->setContentType('text/javascript; charset=utf-8;'); $this->setCache(Date::SPAN_MONTH); //set_time_limit(0); require_once Pimple::instance()->getBaseDir() . 'lib/Javascript.php'; $cacheDir = Pimple::instance()->getSiteDir() . 'cache/js/'; Dir::ensure($cacheDir); $templates = array(); if (!Request::get('skipLayout', false)) { $templates[] = 'application'; } $view = Request::get('view', false); if ($view) { $templates[] = $view; } $used = array(); $isDebug = Settings::get(Settings::DEBUG, false); foreach ($templates as $template) { $cacheFile = $cacheDir . $template . '.js'; echo "// {$template}\n"; if (!$isDebug) { Dir::ensure(dirname($cacheFile)); } if ($isDebug) { $view = new View($template); $files = $view->getInternalJsFiles(); echo "/*FILES:\n\t" . implode("\n\t", $files) . '*/' . chr(10); foreach ($files as $file) { if (in_array($file, $used) || String::StartsWith($file, "http://") || String::StartsWith($file, "https://")) { continue; } $used[] = $file; echo "/*FILE:" . basename($file) . '*/' . chr(10) . String::normalize(@file_get_contents($file), false); echo chr(10); } } else { if (!is_file($cacheFile)) { File::truncate($cacheFile); $view = new View($template); $files = $view->getInternalJsFiles(); File::append($cacheFile, "/*FILES:\n\t" . implode("\n\t", $files) . '*/' . chr(10)); foreach ($files as $file) { if (in_array($file, $used) || String::StartsWith($file, "http://") || String::StartsWith($file, "https://")) { continue; } $used[] = $file; File::append($cacheFile, "/*FILE:" . basename($file) . '*/' . chr(10) . String::normalize(@file_get_contents($file), false)); File::append($cacheFile, chr(10)); } } echo file_get_contents($cacheFile); } } Pimple::end(); }