Skip to content

Commit

Permalink
Dev: added LSYii_ClientScript::registerPackage()
Browse files Browse the repository at this point in the history
  • Loading branch information
LouisGac committed May 23, 2017
1 parent d365c6b commit 5eb4f2c
Showing 1 changed file with 49 additions and 0 deletions.
49 changes: 49 additions & 0 deletions application/core/LSYii_ClientScript.php
Expand Up @@ -94,6 +94,55 @@ public function registerCssFile($url,$media='')
parent::registerCssFile($url,$media); // We publish the script
}

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){

$aOldPackageDefinition = Yii::app()->clientScript->packages[$package];

// This will overwrite the package definition using a base url instead of a base path
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(),
) );
}
}

parent::registerPackage( $name );
}
}

/**
* Return a list of all the recursive dependencies of a packages
* eg: If a package A depends on B, and B depends on C, getRecursiveDependencies('A') will return {B,C}
*/
public function getRecursiveDependencies($sPackageName)
{
$aPackages = Yii::app()->clientScript->packages;
if ( array_key_exists('depends', $aPackages[$sPackageName]) ){
$aDependencies = $aPackages[$sPackageName]['depends'];

foreach ($aDependencies as $sDpackageName){
if($aPackages[$sPackageName]['depends']){
$aRDependencies = $this->getRecursiveDependencies($sDpackageName); // Recursive call
if (is_array($aRDependencies)){
$aDependencies = array_unique(array_merge($aDependencies, $aRDependencies));
}
}
}
return $aDependencies;
}
return array();
}

/**
* This function will analyze the url of a file (css/js) to register
Expand Down

0 comments on commit 5eb4f2c

Please sign in to comment.