Skip to content

Alex300/cot_resources

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 

Repository files navigation

cot_resources

Всем привет!

Предлагаю для улучшения работы с JS и CSS файлами ввести в коробку класс, о котором я как то говорил в скайпе.

Назначение: Класс является заменой функциям cot_rc_consolidate(), cot_rc_add_embed(), cot_rc_add_file() и т.п. Плюс он добавляет некоторые новые возможности.

  1. Использование алиясов Алияс в данном случае - это псевдоним для полного имени подключаемого файла. Самые "нужные" алиясы для удобства связаны с константами класса.

Например старый код:

cot_rc_add_file($cfg['themes_dir'].'/p30-avto/css/bootstrap.min.css');

привязан к конкретному файлу. Кроме того плагины не могут контролировать был ли подключен скрипт или нет. А если мне в теме нужна другая версия этого файла?

Новый код:

Resources::addFile('@bootstrap');  // Это в общем случае
// Бутсрап часто используется. Константа не позволит ошибиться с подключением.
Resources::addFile(Resources::bootstrap); 

В данном случае скрипт бутсрапа связан с алиясом, который можно переназначить в процессе выполнения скрипта.

В браузер уйдет тот, что назначен поледним (тот, что в Вашей теме). Если переназначения не приводилось, то по-умолчанию

// Переназначение алияса. Так можно делать, например в теме сайта ))
Resources::setAlias('@bootstrap.theme.css', 'lib/bootstrap/css/bootstrap-theme.min.css');
  1. Групповое подключение. Часто внешние скрипты содержат как JS, так и CSS файлы. Самые нужные скрипты имеют возможность загрузить все необходимое одной командой:

Сравните:

cot_rc_add_file($cfg['themes_dir'].'/p30-avto/css/bootstrap.min.css');
cot_rc_add_file($cfg['themes_dir'].'/p30-avto/css/bootstrap-theme.min.css', 'global');
cot_rc_add_file("{$cfg['themes_dir']}/p30-avto/js/bootstrap.min.js", 'global');

и

Resources::addFile(Resources::bootstrap);
  1. Контроль двойного подключения.

Скрипт не даст дважды подключить один и тот же файл.

  1. Анти кеш браузера.

Все сталкивались с такой проблемой. Обновили скрипт, а пользователи получают версию из кеша браузера. Проблема решается пердачей Get параметра вместе с именем файла:

Resources::linkFile('path/to/file.js?no_cache=1')
  1. Защищенность.

Реестр подключенных файлов - это protected свойство класса. Другие плагины не смогут "случайно" испортить его.

Ну а функции cot_rc_consolidate(), cot_rc_add_embed(), cot_rc_add_file() и т.п. предлакаю объявить как @deprecated и в релизе 1.0 отправить их в пакет для обратной совместимости.

Плагинам теперь не надо "нести на борту" bootstrap, jqueryUI. Плагин просто вызывает в своем коде Resources::addFile или Resources::linkFileFooter. А в документации указывается, что нужная библилиотека должна быть установлена.

Если остальным разработчикам идея нравится и они "ЗА", то я доработаю этот класс, оттестирую и перенесу в ядро. Тестовая версия уже есть ))

P.S. Не думайте что он только для бутстрапа. Нет, он для всех рессурсов (jQueryUI, ckeditor...) ))

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages