From ee96b029b7e5edc4ed6ddbfccf9df44b4c9e45e8 Mon Sep 17 00:00:00 2001 From: emkael Date: Fri, 22 Apr 2016 15:59:31 +0200 Subject: * moving rendered scripts from session to cache and distinguishing among various page views for single session --- app/php/components/ClientScriptManager.php | 32 +++++++++++++++++++++++++++--- app/php/layouts/Layout.php | 11 ++++++++++ app/php/layouts/MainLayout.php | 4 +++- app/php/layouts/MainLayout.tpl | 3 +++ 4 files changed, 46 insertions(+), 4 deletions(-) create mode 100644 app/php/layouts/Layout.php (limited to 'app/php') diff --git a/app/php/components/ClientScriptManager.php b/app/php/components/ClientScriptManager.php index ce3446c..cd948a6 100644 --- a/app/php/components/ClientScriptManager.php +++ b/app/php/components/ClientScriptManager.php @@ -1,5 +1,7 @@ _page->Master; + if (!$template instanceof Layout) { + throw new TNotSupportedException( + 'Compiled assets may only be used within Layout master class controls' + ); + } + return 'RenderedScripts.' . $template->generateViewID(); + } + + private function _getCache() { + $cache = $this->Application->Cache; + if (!$cache) { + throw new TNotSupportedException( + 'Compiled assets require cache to be configured' + ); + } + return $cache; + } + private function _getRenderedScripts() { + $sessionKey = $this->_getRenderedScriptsStoreKey(); if ($this->_page->IsCallBack || $this->_renderedScriptsInitialized) { - return $this->Session->itemAt('RenderedScripts') ?: []; + return $this->_getCache()->get($sessionKey) ?: []; } else { - $this->Session->remove('RenderedScripts'); + $this->_getCache()->delete($sessionKey); $this->_renderedScriptsInitialized = TRUE; return []; } @@ -78,7 +101,10 @@ class ClientScriptManager extends TClientScriptManager { $newScripts ) ); - $this->Session->add('RenderedScripts', $scripts); + $this->_getCache()->set( + $this->_getRenderedScriptsStoreKey(), + $scripts + ); } private function _compileFiles($files) { diff --git a/app/php/layouts/Layout.php b/app/php/layouts/Layout.php new file mode 100644 index 0000000..324c69f --- /dev/null +++ b/app/php/layouts/Layout.php @@ -0,0 +1,11 @@ +ViewID->Value ?: md5(mt_rand()); + } + +} + +?> diff --git a/app/php/layouts/MainLayout.php b/app/php/layouts/MainLayout.php index c0e7e0b..5843952 100644 --- a/app/php/layouts/MainLayout.php +++ b/app/php/layouts/MainLayout.php @@ -1,6 +1,8 @@ + + <%= $this->generateViewID() %> + -- cgit v1.2.3