/** * Boot method, called right before the request route. * * @return array */ public function boot() { if (Settings::get('ajax_flash_message_enabled', false)) { \Event::listen('cms.page.beforeDisplay', function ($controller) { $controller->getTwig()->addExtension(new TwigExtension()); $controller->addJs('/plugins/ebussola/statefull/assets/js/ajax-flash-message.min.js', ['id' => 'ebussola-statefull-ajax-flash-message-script', 'data-domain' => trim(\Config::get('app.url'), '/ '), 'data-wrapper' => Settings::get('ajax_flash_message_element_wrapper', 'body'), 'data-delay' => Settings::get('ajax_flash_message_delay', '4500')]); }); } $this->registerConsoleCommand('statefull:cache:refresh', '\\ebussola\\statefull\\commands\\StatefullCacheRefresh'); $this->registerConsoleCommand('statefull:cache:clean', '\\ebussola\\statefull\\commands\\StatefullCacheClean'); }
public function onRun() { $this->ajaxPageContainer = Settings::get('ajax_page_container', Settings::ajaxPageContainerDefault); }
Route::get('/{route}', function ($route) use($cachePath) { \eBussola\Statefull\Plugin::$routerActive = true; $file = $cachePath . '/' . $route . '.html'; if (file_exists($file)) { return file_get_contents($file); } else { try { /** * For development purpose, you must set the loopbackUrl on config to use a different baseURL for internal php server. * Because it can handle only one request at a time, you need to open 2 servers with different port or hostname. */ $responseRaw = file_get_contents(Config::get('app.loopbackUrl', Config::get('app.url')) . '/' . $route . '?nocache=1'); } catch (ErrorException $e) { if (strstr($e->getMessage(), '404 Not Found')) { $controller = App::make('Cms\\Classes\\Controller'); $response = $controller->run('/404'); $response->setStatusCode(404); return $response; } else { throw $e; } } if (\Ebussola\Statefull\Models\Settings::get('cache_lazy_cache', false)) { (new CacheFileHandler())->saveCacheFile($route, $responseRaw); } return $responseRaw; } })->where('route', '^(?!backend)(?!combine)' . $blacklist . '.*'); } } }
/** * @param $request * @param $responseRaw */ private function tryLazyCache($pagePath, $responseRaw) { if (\Ebussola\Statefull\Models\Settings::get('cache_lazy_cache', false)) { (new CacheFileHandler())->saveCacheFile($pagePath, $responseRaw); } }