Example #1
0
 /**
  * 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();
 }