From 72f1301388c208b42ed01826cf08632b69203cf6 Mon Sep 17 00:00:00 2001 From: LouisGac Date: Wed, 28 Jun 2017 13:10:41 +0200 Subject: [PATCH] Dev: quick fix on convertion to baseUrl for packages --- application/core/LSYii_ClientScript.php | 45 ++++++++++++++++--------- 1 file changed, 30 insertions(+), 15 deletions(-) diff --git a/application/core/LSYii_ClientScript.php b/application/core/LSYii_ClientScript.php index 3895ee8711e..96030562a80 100644 --- a/application/core/LSYii_ClientScript.php +++ b/application/core/LSYii_ClientScript.php @@ -108,28 +108,23 @@ public function registerCssFile($url,$media='') parent::registerCssFile($url,$media); // We publish the script } + /** + * The method will first check if a devbaseUrl parameter is provided, + * so when debug mode is on, it doens't use the asset manager + */ public function registerPackage($name) { if(!YII_DEBUG || Yii::app()->getConfig('use_asset_manager')){ parent::registerPackage( $name ); }else{ - $aDepends = $this->getRecursiveDependencies($name); - // CONVERT ALL PACKAGE IN $aDepend to BASE URL instead of PATH - foreach($aDepends as $package){ + // We first convert the current package to devBaseUrl + $this->convertDevBaseUrl($name); - $aOldPackageDefinition = Yii::app()->clientScript->packages[$package]; - - // This will overwrite the package definition using a base url instead of a base path - // The package must have a devBaseUrl, else it will remain unchanged (for core/external package) - if( array_key_exists('devBaseUrl', $aOldPackageDefinition ) ){ - Yii::app()->clientScript->addPackage( $package, array( - 'baseUrl' => $aOldPackageDefinition['devBaseUrl'], // Don't use asset manager - 'css' => array_key_exists('css', $aOldPackageDefinition)?$aOldPackageDefinition['css']:array(), - 'js' => array_key_exists('js', $aOldPackageDefinition)?$aOldPackageDefinition['js']:array(), - 'depends' => array_key_exists('depends', $aOldPackageDefinition)?$aOldPackageDefinition['depends']:array(), - ) ); - } + // Then we do the same for all its dependencies + $aDepends = $this->getRecursiveDependencies($name); + foreach($aDepends as $package){ + $this->convertDevBaseUrl($package); } parent::registerPackage( $name ); @@ -159,6 +154,26 @@ public function getRecursiveDependencies($sPackageName) return array(); } + + /** + * Convert one package to baseUrl + */ + private function convertDevBaseUrl($package) + { + $aOldPackageDefinition = Yii::app()->clientScript->packages[$package]; + + // This will overwrite the package definition using a base url instead of a base path + // The package must have a devBaseUrl, else it will remain unchanged (for core/external package) + if( array_key_exists('devBaseUrl', $aOldPackageDefinition ) ){ + Yii::app()->clientScript->addPackage( $package, array( + 'baseUrl' => $aOldPackageDefinition['devBaseUrl'], // Don't use asset manager + 'css' => array_key_exists('css', $aOldPackageDefinition)?$aOldPackageDefinition['css']:array(), + 'js' => array_key_exists('js', $aOldPackageDefinition)?$aOldPackageDefinition['js']:array(), + 'depends' => array_key_exists('depends', $aOldPackageDefinition)?$aOldPackageDefinition['depends']:array(), + ) ); + } + } + /** * This function will analyze the url of a file (css/js) to register * It will check if it can be published via the asset manager and if so will retreive its path