Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Y
yii2
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
PSDI Army
yii2
Commits
fadb528f
Commit
fadb528f
authored
Apr 18, 2013
by
Qiang Xue
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
script WIP
parent
a3d05857
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
64 additions
and
44 deletions
+64
-44
FileHelper.php
framework/helpers/base/FileHelper.php
+1
-1
AssetBundle.php
framework/web/AssetBundle.php
+2
-18
AssetManager.php
framework/web/AssetManager.php
+61
-25
No files found.
framework/helpers/base/FileHelper.php
View file @
fadb528f
...
...
@@ -157,7 +157,7 @@ class FileHelper
if
(
is_file
(
$from
))
{
copy
(
$from
,
$to
);
if
(
isset
(
$options
[
'fileMode'
]))
{
chmod
(
$to
,
$options
[
'fileMode'
]);
@
chmod
(
$to
,
$options
[
'fileMode'
]);
}
}
else
{
static
::
copyDirectory
(
$from
,
$to
,
$options
);
...
...
framework/web/AssetBundle.php
View file @
fadb528f
...
...
@@ -121,7 +121,7 @@ class AssetBundle extends Object
$js
=
is_string
(
$options
)
?
$options
:
$js
;
if
(
strpos
(
$js
,
'/'
)
!==
0
&&
strpos
(
$js
,
'://'
)
===
false
)
{
if
(
isset
(
$this
->
basePath
,
$this
->
baseUrl
))
{
$js
=
$
this
->
processAsset
(
ltrim
(
$js
,
'/'
),
$this
->
basePath
,
$this
->
baseUrl
);
$js
=
$
am
->
processAsset
(
ltrim
(
$js
,
'/'
),
$this
->
basePath
,
$this
->
baseUrl
);
}
else
{
throw
new
InvalidConfigException
(
'Both of the "baseUrl" and "basePath" properties must be set.'
);
}
...
...
@@ -132,7 +132,7 @@ class AssetBundle extends Object
$css
=
is_string
(
$options
)
?
$options
:
$css
;
if
(
strpos
(
$css
,
'//'
)
!==
0
&&
strpos
(
$css
,
'://'
)
===
false
)
{
if
(
isset
(
$this
->
basePath
,
$this
->
baseUrl
))
{
$css
=
$
this
->
processAsset
(
ltrim
(
$css
,
'/'
),
$this
->
basePath
,
$this
->
baseUrl
);
$css
=
$
am
->
processAsset
(
ltrim
(
$css
,
'/'
),
$this
->
basePath
,
$this
->
baseUrl
);
}
else
{
throw
new
InvalidConfigException
(
'Both of the "baseUrl" and "basePath" properties must be set.'
);
}
...
...
@@ -140,19 +140,4 @@ class AssetBundle extends Object
$page
->
registerCssFile
(
$css
,
is_array
(
$options
)
?
$options
:
array
());
}
}
/**
* Processes the given asset file and returns a URL to the processed one.
* This method can be overwritten to support various types of asset files, such as LESS, Sass, TypeScript.
*
* Note that if the asset file is converted into another file, the new file must reside under the same
* directory as the given asset file.
*
* @param string $asset the asset file path to be processed.
* @return string the processed asset file path.
*/
protected
function
processAsset
(
$asset
,
$basePath
,
$baseUrl
)
{
return
$this
->
baseUrl
.
'/'
.
$asset
;
}
}
\ No newline at end of file
framework/web/AssetManager.php
View file @
fadb528f
...
...
@@ -21,12 +21,10 @@ use yii\helpers\FileHelper;
class
AssetManager
extends
Component
{
/**
* @var array list of asset bundles. The keys are the bundle names, and the values are the configuration
* arrays for creating [[AssetBundle]] objects. Besides the bundles listed here, the asset manager
* may look for bundles declared in extensions. For more details, please refer to [[getBundle()]].
* @var array list of available asset bundles. The keys are the bundle names, and the values are the configuration
* arrays for creating the [[AssetBundle]] objects.
*/
public
$bundles
;
public
$bundleClass
;
/**
* @return string the root directory storing the published asset files.
*/
...
...
@@ -54,12 +52,6 @@ class AssetManager extends Component
*/
public
$linkAssets
=
false
;
/**
* @var array list of directories and files which should be excluded from the publishing process.
* Defaults to exclude '.svn' and '.gitignore' files only. This option has no effect if {@link linkAssets} is enabled.
* @since 1.1.6
**/
public
$excludeFiles
=
array
(
'.svn'
,
'.gitignore'
);
/**
* @var integer the permission to be set for newly published asset files.
* This value will be used by PHP chmod() function.
* If not set, the permission will be determined by the current environment.
...
...
@@ -97,9 +89,21 @@ class AssetManager extends Component
}
/**
* @param string $name
* @return AssetBundle
* @throws InvalidParamException
* Returns the named bundle.
* This method will first look for the bundle in [[bundles]]. If not found,
* it will attempt to find the bundle from an installed extension using the following procedure:
*
* 1. Convert the bundle into a path alias;
* 2. Determine the root alias and use it to locate the bundle manifest file "assets.php";
* 3. Look for the bundle in the manifest file.
*
* For example, given the bundle name "foo/button", the method will first convert it
* into the path alias "@foo/button"; since "@foo" is the root alias, it will look
* for the bundle manifest file "@foo/assets.php". The manifest file should declare
* the bundles used by the "foo/button" extension.
*
* @param string $name the bundle name
* @return AssetBundle the loaded bundle object. Null is returned if the bundle does not exist.
*/
public
function
getBundle
(
$name
)
{
...
...
@@ -114,7 +118,7 @@ class AssetManager extends Component
}
}
if
(
!
isset
(
$this
->
bundles
[
$name
]))
{
throw
new
InvalidParamException
(
"Unable to find the asset bundle:
$name
"
)
;
return
null
;
}
}
if
(
is_array
(
$this
->
bundles
[
$name
]))
{
...
...
@@ -129,6 +133,20 @@ class AssetManager extends Component
}
/**
* Processes the given asset file and returns a URL to the processed one.
* This method can be overwritten to support various types of asset files, such as LESS, Sass, TypeScript.
* @param string $asset the asset file path to be processed. The file path is relative
* to $basePath, and it may contain forward slashes to indicate sub-directories (e.g. "js/main.js").
* @param string $basePath the directory that contains the asset file.
* @param string $baseUrl the corresponding URL of $basePath.
* @return string the processed asset file path.
*/
public
function
processAsset
(
$asset
,
$basePath
,
$baseUrl
)
{
return
$baseUrl
.
'/'
.
$asset
;
}
/**
* @var array published assets
*/
private
$_published
=
array
();
...
...
@@ -154,14 +172,26 @@ class AssetManager extends Component
* discussion: http://code.google.com/p/yii/issues/detail?id=2579
*
* @param string $path the asset (file or directory) to be published
* @param boolean $forceCopy whether the asset should ALWAYS be copied even if it is found
* in the target directory. This parameter is mainly useful during the development stage
* when the original assets are being constantly changed. The consequence is that the performance
* is degraded, which is not a concern during development, however.
* @param array $options the options to be applied when publishing a directory.
* The following options are supported:
*
* - beforeCopy: callback, a PHP callback that is called before copying each sub-directory or file.
* This option is used only when publishing a directory. If the callback returns false, the copy
* operation for the sub-directory or file will be cancelled.
* The signature of the callback should be: `function ($from, $to)`, where `$from` is the sub-directory or
* file to be copied from, while `$to` is the copy target.
* - afterCopy: callback, a PHP callback that is called after a sub-directory or file is successfully copied.
* This option is used only when publishing a directory. The signature of the callback is similar to that
* of `beforeCopy`.
* - forceCopy: boolean, whether the directory being published should be copied even if
* it is found in the target directory. This option is used only when publishing a directory.
* You may want to set this to be true during the development stage to make sure the published
* directory is always up-to-date. Do not set this to true on production servers as it will
* significantly degrade the performance.
* @return array the path (directory or file path) and the URL that the asset is published as.
* @throws InvalidParamException if the asset to be published does not exist.
*/
public
function
publish
(
$path
,
$
forceCopy
=
false
)
public
function
publish
(
$path
,
$
options
=
array
()
)
{
if
(
isset
(
$this
->
_published
[
$path
]))
{
return
$this
->
_published
[
$path
];
...
...
@@ -179,15 +209,14 @@ class AssetManager extends Component
$dstFile
=
$dstDir
.
DIRECTORY_SEPARATOR
.
$fileName
;
if
(
!
is_dir
(
$dstDir
))
{
@
mkdir
(
$dstDir
,
$this
->
dirMode
,
true
);
mkdir
(
$dstDir
,
$this
->
dirMode
,
true
);
}
if
(
$this
->
linkAssets
)
{
if
(
!
is_file
(
$dstFile
))
{
symlink
(
$src
,
$dstFile
);
}
}
elseif
(
@
filemtime
(
$dstFile
)
<
@
filemtime
(
$src
)
||
$forceCopy
)
{
}
elseif
(
@
filemtime
(
$dstFile
)
<
@
filemtime
(
$src
))
{
copy
(
$src
,
$dstFile
);
if
(
$this
->
fileMode
!==
null
)
{
@
chmod
(
$dstFile
,
$this
->
fileMode
);
...
...
@@ -202,11 +231,18 @@ class AssetManager extends Component
if
(
!
is_dir
(
$dstDir
))
{
symlink
(
$src
,
$dstDir
);
}
}
elseif
(
!
is_dir
(
$dstDir
)
||
$forceCopy
)
{
FileHelper
::
copyDirectory
(
$src
,
$dstDir
,
array
(
}
elseif
(
!
is_dir
(
$dstDir
)
||
!
empty
(
$options
[
'forceCopy'
])
)
{
$opts
=
array
(
'dirMode'
=>
$this
->
dirMode
,
'fileMode'
=>
$this
->
fileMode
,
));
);
if
(
isset
(
$options
[
'beforeCopy'
]))
{
$opts
[
'beforeCopy'
]
=
$options
[
'beforeCopy'
];
}
if
(
isset
(
$options
[
'afterCopy'
]))
{
$opts
[
'afterCopy'
]
=
$options
[
'afterCopy'
];
}
FileHelper
::
copyDirectory
(
$src
,
$dstDir
,
$opts
);
}
return
$this
->
_published
[
$path
]
=
array
(
$dstDir
,
$this
->
baseUrl
.
'/'
.
$dir
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment