Всем привет!
Предлагаю для улучшения работы с JS и CSS файлами ввести в коробку класс, о котором я как то говорил в скайпе.
Назначение: Класс является заменой функциям cot_rc_consolidate(), cot_rc_add_embed(), cot_rc_add_file() и т.п. Плюс он добавляет некоторые новые возможности.
- Использование алиясов Алияс в данном случае - это псевдоним для полного имени подключаемого файла. Самые "нужные" алиясы для удобства связаны с константами класса.
Например старый код:
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');
- Групповое подключение. Часто внешние скрипты содержат как 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);
- Контроль двойного подключения.
Скрипт не даст дважды подключить один и тот же файл.
- Анти кеш браузера.
Все сталкивались с такой проблемой. Обновили скрипт, а пользователи получают версию из кеша браузера. Проблема решается пердачей Get параметра вместе с именем файла:
Resources::linkFile('path/to/file.js?no_cache=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...) ))