Пробная версия регистратора библиотеки popper.js

master
parent 029760bd7c
commit 79e2f8d484
  1. 3
      .gitignore
  2. 62
      README.md
  3. 115
      protected/components/PopperJsComponent.php
  4. 1086
      public/js/popper-base.js
  5. 1
      public/js/popper-base.min.js
  6. 1419
      public/js/popper-lite.js
  7. 1
      public/js/popper-lite.min.js
  8. 1991
      public/js/popper.js
  9. 1
      public/js/popper.min.js

3
.gitignore vendored

@ -101,6 +101,9 @@ GitHub.sublime-settings
!.vscode/extensions.json
!.vscode/*.code-snippets
# Workspaces
*.code-workspace
# Local History for Visual Studio Code
.history/

@ -1,3 +1,63 @@
# yii1-component-popper
Простой компонент для yii-1 для регистрации popper. Сама библиотека тоже присутствует. Расположение - рекомендованное для проектов на yii-1.
Простой компонент для yii-1 для регистрации popper.js.
Сама библиотека тоже присутствует.
Расположение - рекомендованное для проектов на yii-1.
## Пример подключения
Выгружаем компонент в protected/extensions/.
В файле config/main.php:
```php
// application components
'components' => array(
...
'popperjs' => array(
'class' => 'ext.yii1-component-popper.protected.components.PopperJsComponent',
/* доступные параметры */
/*
'debug' => false, // bool, вкл-выкл подключение минифицированных версий js
'base' => false, // bool, вкл-выкл подключение базовой версий js
'lite' => false, // bool, вкл-выкл подключение легкой версий js
'cdn' => false, // bool, включает использование cdn (cloudflare)
'position' => CClientScript::POS_END, // int, где разместить скрипт
// - CClientScript::POS_HEAD - после title
// - CClientScript::POS_BEGIN - в начале body
// - CClientScript::POS_END - в конце body
'async' => false, // bool, вкл-выкл асинхронную загрузку
'defer' => false, // bool, вкл-выкл асинхронную загрузку, запустить после разбора страницы
'localUrl' => '/js/',
// string, ссылка на локальные файлы в document_root
'cdnUrl' => 'https://cdnjs.cloudflare.com/ajax/libs/popper.js/{version}/cjs',
// string, ссылка на путь в cdn. по-умолчанию заменяется {version} на версию библиотеки.
'commonJs' => 'popper.js'
// string, название файла библиотеки
'baseJs' => 'popper-base.js'
// string, название файла базовой библиотеки
'liteJs' => 'popper-lite.js'
// string, название файла легкой библиотеки
*/
),
...
),
```
## Пример использования
В коде view:
```php
<?php
Yii::app()->popperjs->register();
?>
```

@ -0,0 +1,115 @@
<?php
/**
* Простой помошник регистрации popper.js
*/
/**
* Вывод скрипта
*/
class PopperJsComponent extends CApplicationComponent
{
const VERSION = '2.11.5';
// Global options
public $debug = null; // null == авто-режим,
// false - использовать .min.js файлы,
// true - использовать несжатые файлы
public $cdn = false; // bool, использовать cdn
public $base = false; // bool, использовать базовую версию библиотеки
public $lite = false; // bool, использовать легкую версию библиотеки
public $position = CClientScript::POS_END; // int, где разместить скрипт
public $async = false; // bool, использовать асинхронную загрузку
public $defer = false; // bool, использовать асинхронную загрузку, запустить после разбора страницы
public $localUrl = 'js/'; // локальная ссылка, относительно публичного каталога document_root
public $cdnUrl = 'https://cdnjs.cloudflare.com/ajax/libs/popper.js/{version}/cjs';
// ссылка на CDN
public $commonJs = 'popper.js'; // название файла
public $baseJs = 'popper-base.js'; // название базового файла
public $liteJs = 'popper-lite.js'; // название файла легкой версии
private $_registered = array();
public function init()
{
$this->cdnUrl = str_replace('{version}', self::VERSION, $this->cdnUrl);
if ($this->debug === null) {
if (defined('YII_DEBUG') && YII_DEBUG === true) {
$this->debug = true;
}
if (defined('YII_ENV') && YII_ENV == 'dev') {
$this->debug = true;
}
if (defined('APPLICATION_ENV') && APPLICATION_ENV == 'dev') {
$this->debug = true;
}
}
if ($this->debug === null) {
$this->debug = false;
}
parent::init();
}
public function powered()
{
return '<a href="https://popper.js.com/">Popper.js</a>';
}
public function getVersion()
{
return self::VERSION;
}
protected function _getUrl($jsFile)
{
if ($this->cdn) {
$url = $this->cdnUrl;
} else {
$url = Yii::app()->getAssetManager()->publish(dirname(dirname(__DIR__)).'/public/'.$this->localUrl, false, -1);
}
if ($this->debug === false) {
if (strpos($jsFile, '.min.js') === false) {
$jsFile = str_replace('.js', '.min.js', $jsFile);
}
}
$url .= '/' . $jsFile;
return $url;
}
public function register()
{
$jsFile = $this->baseJs;
if ($this->base) $jsFile = $this->baseJs;
if ($this->lite) $jsFile = $this->liteJs;
if (empty($this->_registered[$jsFile])) {
$options = array();
if ($this->async) $options['async'] = true;
if ($this->defer) $options['defer'] = true;
$url = $this->_getUrl($jsFile);
$cs = Yii::app()->clientScript;
$cs->registerScriptFile(
$url,
$this->position,
$options
);
$this->_registered[$jsFile] = true;
}
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long
Loading…
Cancel
Save