Первый пробный вариант

update-to-3.6.1
parent 87c28b60ff
commit 2f3978c965
  1. 3
      .gitignore
  2. 57
      README.md
  3. 109
      protected/components/JQueryComponent.php
  4. 10881
      public/js/jquery.js
  5. 2
      public/js/jquery.min.js
  6. 8782
      public/js/jquery.slim.js
  7. 2
      public/js/jquery.slim.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,58 @@
# yii1-component-jquery
Простой компонент для yii-1 для регистрации jQuery. Сама библиотека тоже присутствует. Расположение - рекомендованное для проектов на yii-1.
Простой компонент для yii-1 для регистрации jQuery.
Сама библиотека тоже присутствует.
Расположение - рекомендованное для проектов на yii-1.
## Пример подключения
В файле config/main.php:
```php
// application components
'components' => array(
...
'jquery' => array(
'class' => 'JQueryComponent',
/* доступные параметры */
/*
'debug' => false, // bool, вкл-выкл подключение минифицированных версий js
'slim' => 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/jquery/{version}',
// string, ссылка на путь в cdn. по-умолчанию заменяется {version} на версию библиотеки.
'baseJs' => 'jquery.js'
// string, название файла базовой библотеки
'slimJs' => 'jquery.slim.js'
// string, название файла небольшой библиотеки
*/
),
...
),
```
## Пример использования
В коде view:
```php
<?php
Yii::app()->jquery->register($this);
?>
```

@ -0,0 +1,109 @@
<?php
/**
* Простой помошник регистрации jQuery
*/
/**
* Вывод скрипта
*/
class JQueryComponent extends CApplicationComponent
{
const VERSION = '3.6.0';
// Global options
public $debug = null; // null == авто-режим,
// false - использовать .min.js файлы,
// true - использовать несжатые файлы
public $cdn = false; // bool, использовать cdn
public $slim = 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/jquery/{version}';
// ссылка на CDN
public $baseJs = 'jquery.js'; // название базового файла
public $slimJs = 'jquery.slim.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://jquery.com/download">jQuery</a>';
}
public function getVersion()
{
return self::VERSION;
}
protected function _getUrl($jsFile)
{
if ($this->cdn) {
$url = $this->cdnUrl;
} else {
$url = Yii::app()->getAssetManager()->publish(dirname(__DIR__).'/public/'.$this->localUrl);
}
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->slim) $jsFile = $this->slimJs;
if (empty($this->_registered[$jsFile])) {
$options = array();
if ($this->async) $options['async'] = true;
if ($this->defer) $options['defer'] = true;
Yii::app()->clientScript->registerScriptFile(
$this->_getUrl($jsFile),
$this->position,
$options
);
$this->_registered[$jsFile] = true;
}
}
}

10881
public/js/jquery.js vendored

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