Browse Source

Переделал подключение css

- минификация/отладка
- cdn
- вывод версии, ссылки на скачивание
master v5.15.4-r2
parent
commit
26aff3a005
  1. 25
      README.md
  2. 121
      protected/components/FontAwesome5Component.php

25
README.md

@ -16,7 +16,26 @@
...
'fa' => array(
'class' => 'FontAwesome5Component'
'class' => 'FontAwesome5Component',
/* доступные параметры */
/*
'debug' => false, // bool, вкл-выкл подключение минифицированных версий css
'cdn' => false, // bool, включает использование cdn (cloudflare)
'localUrl' => '/css/fontawesome,
// string, ссылка на локальные файлы в document_root
'cdnUrl' => 'https://cdnjs.cloudflare.com/ajax/libs/font-awesome',
// string, ссылка на путь в cdn. по-умолчанию добавляется /{version}/css.
// если указать свою - то не добавляется
'tag' => 'i', // string, название тега для вывода иконки
'baseCss' => 'fontawesome.css'
// string, название файла базовых стилей
'solidCss' => 'solid.css'
// string, название файла стилей solid
'regilarCss' => 'regular.css'
// string, название файла стилей regular
'brandsCss' => 'brands.css'
// string, название файла стилей brands
*/
),
...
@ -33,4 +52,8 @@
echo Yii::app()->fa->circle();
?>
<?php
echo Yii::app()->fa->icon('check-square', ['class' => 'text-success'], 'regular');
?>
```

121
protected/components/FontAwesome5Component.php

@ -1,7 +1,7 @@
<?php
/**
* Очень простой помошник вывода иконок FontAwesome 5 Free
* Простой помошник вывода иконок FontAwesome 5 Free
*/
/**
@ -16,10 +16,43 @@ class FontAwesome5Component extends CApplicationComponent
const MODE_LIGHT = 'light';
const MODE_BRANDS = 'brands';
public $baseCssUrl = '/css/fontawesome/fontawesome.min.css';
public $solidCssUrl = '/css/fontawesome/solid.min.css';
public $regularCssUrl = '/css/fontawesome/regular.min.css';
public $brandsCssUrl = '/css/fontawesome/brands.min.css';
const VERSION = '5.15.4';
// Global options
public $debug = false;
public $cdn = false;
public $localUrl = '/css/fontawesome';
public $cdnUrl = 'https://cdnjs.cloudflare.com/ajax/libs/font-awesome';
public $baseCss = 'fontawesome.css';
public $solidCss = 'solid.css';
public $regularCss = 'regular.css';
public $brandsCss = 'brands.css';
public $tag = 'i';
public function init()
{
$this->cdnUrl .= '/' . self::VERSION . '/css';
parent::init();
}
public function powered()
{
return '<a href="https://fontawesome.com/download">FontAwesome</a>';
}
public function getVersion()
{
return self::VERSION;
}
/**
* Нарисовать иконку Font Awesome в теге <i>
@ -27,29 +60,49 @@ class FontAwesome5Component extends CApplicationComponent
*/
public function icon($code, $options = [], $mode=self::MODE_DEFAULT)
{
Yii::app()->clientScript->registerCssFile($this->baseCssUrl);
Yii::app()->clientScript->registerCssFile($this->_getAwesomeUrl($this->baseCss));
$class = '';
if (!$mode) $mode = self::MODE_DEFAULT;
if ($mode == self::MODE_DEFAULT) $class = 'fa';
if ($mode == self::MODE_SOLID) {
$class = 'fas';
Yii::app()->clientScript->registerCssFile($this->solidCssUrl);
Yii::app()->clientScript->registerCssFile($this->_getAwesomeUrl($this->solidCss));
}
if ($mode == self::MODE_REGULAR) {
$class = 'far';
Yii::app()->clientScript->registerCssFile($this->regularCssUrl);
Yii::app()->clientScript->registerCssFile($this->_getAwesomeUrl($this->regularCss));
}
if ($mode == self::MODE_LIGHT) $class = 'fal';
if ($mode == self::MODE_BRANDS) {
$class = 'fab';
Yii::app()->clientScript->registerCssFile($this->brandsCssUrl);
Yii::app()->clientScript->registerCssFile($this->_getAwesomeUrl($this->brandsCss));
}
$options['class'] = $class . ' fa-' . $code . (!empty($options['class']) ? " " . $options['class'] : "");
CHtml::$closeSingleTags = false;
return (string) CHtml::tag('i', $options, '', true);
return (string) CHtml::tag($this->tag, $options, '', true);
}
protected function _getAwesomeUrl($cssFile)
{
if ($this->cdn) {
$url = $this->cdnUrl;
} else {
$url = $this->localUrl;
}
if (!$this->debug) {
if (strpos($cssFile, '.min.css') === false) {
$cssFile = str_replace('.css', '.min.css', $cssFile);
}
}
$url .= '/' . $cssFile;
return $url;
}
/** Простые alias для иконок */
public function git($addclass='')
@ -217,6 +270,47 @@ class FontAwesome5Component extends CApplicationComponent
return $this->icon('ban', ['class' => $addclass], self::MODE_SOLID);
}
public function cancel($addclass='')
{
return $this->icon('ban', ['class' => $addclass], self::MODE_SOLID);
}
public function close($addclass='')
{
return $this->icon('times', ['class' => $addclass], self::MODE_SOLID);
}
public function plus($addclass='')
{
return $this->icon('plus', ['class' => $addclass], self::MODE_SOLID);
}
public function bug($addclass='')
{
return $this->icon('bug', ['class' => $addclass], self::MODE_SOLID);
}
public function scroll($addclass='')
{
return $this->icon('scroll', ['class' => $addclass], self::MODE_SOLID);
}
public function database($addclass='')
{
return $this->icon('database', ['class' => $addclass], self::MODE_SOLID);
}
public function arrowUp($addclass='')
{
return $this->icon('arrow-up', ['class' => $addclass], self::MODE_SOLID);
}
public function arrowDown($addclass='')
{
return $this->icon('arrow-down', ['class' => $addclass], self::MODE_SOLID);
}
/* ---- BRANDS ---- */
public function composer($addclass='')
{
@ -225,7 +319,7 @@ class FontAwesome5Component extends CApplicationComponent
public function nodejs($addclass='')
{
return $this->icon('nodejs', ['class' => $addclass], self::MODE_BRANDS);
return $this->icon('node-js', ['class' => $addclass], self::MODE_BRANDS);
}
public function joomla($addclass='')
@ -248,4 +342,9 @@ class FontAwesome5Component extends CApplicationComponent
return $this->icon('opencart', ['class' => $addclass], self::MODE_BRANDS);
}
public function drupal($addclass='')
{
return $this->icon('drupal', ['class' => $addclass], self::MODE_BRANDS);
}
}

Loading…
Cancel
Save