Skip to content

Commit

Permalink
Dev: quick fix on convertion to baseUrl for packages
Browse files Browse the repository at this point in the history
  • Loading branch information
LouisGac committed Jun 28, 2017
1 parent 335092f commit 72f1301
Showing 1 changed file with 30 additions and 15 deletions.
45 changes: 30 additions & 15 deletions application/core/LSYii_ClientScript.php
Expand Up @@ -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 );
Expand Down Expand Up @@ -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
Expand Down

0 comments on commit 72f1301

Please sign in to comment.