You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
77 lines
2.7 KiB
77 lines
2.7 KiB
<?php |
|
/** |
|
* Created by Error202 |
|
* Date: 03.10.2017 |
|
*/ |
|
|
|
namespace core\widgets; |
|
|
|
use yii\base\Widget; |
|
use yii\helpers\Url; |
|
use Yii; |
|
|
|
class FaviconWidget extends Widget |
|
{ |
|
public $iconsPath; |
|
public $iconsUrl; |
|
|
|
public function run() |
|
{ |
|
/** @var \yii\web\View $View */ |
|
$View = \Yii::$app->get('view'); |
|
|
|
$this->iconsPath = Yii::getAlias('@staticRoot') . '/cache/favicon'; |
|
$this->iconsUrl = Yii::getAlias('@static') . '/cache/favicon'; |
|
|
|
foreach ([16, 32, 96, 194] as $s) { |
|
$filename = sprintf('favicon-%sx%s.png', $s, $s); |
|
$filepath = $this->iconsPath . '/' . $filename; |
|
if (!empty($filepath) && file_exists($filepath)) { |
|
$View->registerLinkTag([ |
|
'rel' => 'icon', |
|
'type' => 'image/png', |
|
'href' => Url::to(sprintf('%s/%s', $this->iconsUrl, $filename)), |
|
'sizes' => sprintf('%sx%s', $s, $s), |
|
], basename($filepath)); |
|
} |
|
} |
|
|
|
$filepath = $this->iconsPath . '/' . 'android-chrome-192x192.png'; |
|
if (!empty($filepath) && file_exists($filepath)) { |
|
$View->registerLinkTag([ |
|
'rel' => 'icon', |
|
'type' => 'image/png', |
|
'href' => Url::to(sprintf('%s/android-chrome-192x192.png', $this->iconsUrl)), |
|
'sizes' => sprintf('%sx%s', 192, 192), |
|
], basename($filepath)); |
|
} |
|
|
|
foreach ([57, 60, 72, 76, 114, 120, 144, 152, 180] as $s) { |
|
$filename = sprintf('apple-touch-icon-%sx%s.png', $s, $s); |
|
$filepath = $this->iconsPath . '/' . $filename; |
|
if (!empty($filepath) && file_exists($filepath)) { |
|
$View->registerLinkTag([ |
|
'rel' => 'apple-touch-icon', |
|
'type' => 'image/png', |
|
'href' => Url::to(sprintf('%s/%s', $this->iconsUrl, $filename)), |
|
'sizes' => sprintf('%sx%s', $s, $s), |
|
], basename($filepath)); |
|
} |
|
} |
|
$filepath = $this->iconsPath . 'mstile-144x144.png'; |
|
if (!empty($filepath) && file_exists($filepath)) { |
|
$View->registerMetaTag([ |
|
'name' => 'msapplication-TileImage', |
|
'content' => Url::to(sprintf('%s/mstile-144x144.png', $this->iconsUrl)), |
|
], basename($filepath)); |
|
} |
|
|
|
$filepath = Yii::getAlias('@webroot') . '/' . 'manifest.json'; |
|
if (!empty($filepath) && file_exists($filepath)) { |
|
$View->registerLinkTag([ |
|
'rel' => 'manifest', |
|
'href' => Url::to(sprintf('%s/manifest.json', Yii::getAlias('@web'))), |
|
], basename($filepath)); |
|
} |
|
} |
|
}
|
|
|