diff --git a/modules/system/traits/AssetMaker.php b/modules/system/traits/AssetMaker.php
index b21012c60..b05b3cd4e 100644
--- a/modules/system/traits/AssetMaker.php
+++ b/modules/system/traits/AssetMaker.php
@@ -2,6 +2,7 @@
use File;
use Request;
+use HTML;
use System\Classes\SystemException;
/**
@@ -36,18 +37,43 @@ trait AssetMaker
$result = null;
if ($type == null || $type == 'css'){
- foreach ($this->assets['css'] as $file)
- $result .= '' . PHP_EOL;
+ foreach ($this->assets['css'] as $asset) {
+ $attributes = HTML::attributes(array_merge(
+ [
+ 'rel' => 'stylesheet',
+ 'href' => $asset['path']
+ ],
+ $asset['attributes'])
+ );
+ $result .= '' . PHP_EOL;
+ }
}
if ($type == null || $type == 'rss'){
- foreach ($this->assets['rss'] as $file)
- $result .= '' . PHP_EOL;
+ foreach ($this->assets['rss'] as $asset) {
+ $attributes = HTML::attributes(array_merge(
+ [
+ 'rel' => 'alternate',
+ 'href' => $asset['path'],
+ 'title' => 'RSS',
+ 'type' => 'application/rss+xml'
+ ],
+ $asset['attributes'])
+ );
+ $result .= '' . PHP_EOL;
+ }
}
if ($type == null || $type == 'js') {
- foreach ($this->assets['js'] as $file)
- $result .= '' . PHP_EOL;
+ foreach ($this->assets['js'] as $asset) {
+ $attributes = HTML::attributes(array_merge(
+ [
+ 'src' => $asset['path']
+ ],
+ $asset['attributes'])
+ );
+ $result .= '' . PHP_EOL;
+ }
}
return $result;
@@ -57,29 +83,34 @@ trait AssetMaker
* Adds JavaScript asset to the asset list. Call $this->makeAssets() in a view
* to output corresponding markup.
* @param string $name Specifies a path (URL) to the script.
+ * @param array $attributes Adds HTML attributes to the asset link.
* @return void
*/
- public function addJs($name)
+ public function addJs($name, $attributes = [])
{
$jsPath = $this->getAssetPath($name);
if (isset($this->controller))
- $this->controller->addJs($jsPath);
+ $this->controller->addJs($jsPath, $attributes);
if (substr($jsPath, 0, 1) == '/')
$jsPath = Request::getBaseUrl() . $jsPath;
if (!in_array($jsPath, $this->assets['js']))
- $this->assets['js'][] = $jsPath;
+ $this->assets['js'][] = [
+ 'path' => $jsPath,
+ 'attributes' => $attributes
+ ];
}
/**
* Adds StyleSheet asset to the asset list. Call $this->makeAssets() in a view
* to output corresponding markup.
* @param string $name Specifies a path (URL) to the script.
+ * @param array $attributes Adds HTML attributes to the asset link.
* @return void
*/
- public function addCss($name)
+ public function addCss($name, $attributes = [])
{
$cssPath = $this->getAssetPath($name);
@@ -90,16 +121,20 @@ trait AssetMaker
$cssPath = Request::getBaseUrl() . $cssPath;
if (!in_array($cssPath, $this->assets['css']))
- $this->assets['css'][] = $cssPath;
+ $this->assets['css'][] = [
+ 'path' => $cssPath,
+ 'attributes' => $attributes
+ ];
}
/**
* Adds an RSS link asset to the asset list. Call $this->makeAssets() in a view
* to output corresponding markup.
* @param string $name Specifies a path (URL) to the RSS channel
+ * @param array $attributes Adds HTML attributes to the asset link.
* @return void
*/
- public function addRss($name)
+ public function addRss($name, $attributes = [])
{
$rssPath = $this->getAssetPath($name);
@@ -110,7 +145,10 @@ trait AssetMaker
$rssPath = Request::getBaseUrl() . $rssPath;
if (!in_array($rssPath, $this->assets['rss']))
- $this->assets['rss'][] = $rssPath;
+ $this->assets['rss'][] = [
+ 'path' => $rssPath,
+ 'attributes' => $attributes
+ ];
}
/**
@@ -150,4 +188,4 @@ trait AssetMaker
return count($this->assets, COUNT_RECURSIVE) > 3;
}
-}
\ No newline at end of file
+}