Очередной год подряд Joomla! принимает участие в проекте Google Summer of Code 2013. В этом году было акцептовано восемь различных проектов, и каждый из них имеет шанс быть реализованным в будущих версиях Joomla. Шесть из них относятся непосредственно к Joomla CMS и еще два к Joomla Framework. Ниже вы найдете информацию по каждому их этих проектов.
Joomla CMS
Новый медиа менеджер
Текущий медиа менеджер устарел и сильно ограничен. Необходимо создать новый медиа менеджер с лучшим пользовательским интерфейсом, более продвинутым функционалом и отличной интеграцией с расширениями. Возможные улучшения:
- Хранение медиа информации в базе данных (включая стандартную информацию свойств файла, дату, создателя, права и другие различные мета-данные)
- Возможность переименовывать файлы
- Автоматическое создание превьюшек до расширений, указанных администратором
- Создание контроллеров для возможности манипуляций над медиа, таких как: обрезка, изменение размера, фильтрация и т.п.
- Использование вложения для управления и отображения настроек медиа
- Управление как локальным, так и удаленным медиа
- Поддержка создания коллекции медиа, например, для отображения в карусели в качестве отдельного типа контента
Конвертировать JavaScript из MooTools в jQuery
В Joomla 3 появились Twitter Bootstrap и jQuery. Предыдущие версии CMS использовали MooTools в качестве предпочтительной JavaScript библиотеки. На данный момент обе библиотеки поставляются и используются в CMS, что довольно часто приводит к конфликтам. Необходимо уменьшить зависимость от MooTools, конвертируя весь базовый JavaScript из MooTools в jQuery.
Улучшения в менеджере шаблонов
Шаблоны являются одним из самых важных элементов в Joomla, но кроме добавления стилей шаблонов и копирования, функционал менеджера шаблонов не менялся еще со времен версии 1.5. На данный момент пользователи должны выходить за пределы менеджера шаблонов для добавления CSS, для добавления/модификации файлов переопределения или для управления LESS. Проект позволит работать с шаблонами более дружелюбно.
Возможные улучшения:
- Отображение списка переопределений
- Редактирование переопределений шаблона
- Создание нового переопределения шаблона (в идеале копирование базовых файлов разметки для создания стартовой точки)
- Добавление нового CSS файла в шаблон
- Редактирование и компиляция LESS файлов
- Предоставить метод для простого взаимодействия с веб-шрифтами.
Создание com_services для администрирования веб-сайта с фронтэнда
Необходимо создать компонент, который поможет выполнять основные действия по администрированию веб-сайта с фронтэнда: обновление названия сайта и мета-данных, чистку кэша, установку настроек компонентов, базовые операции по управлению пользователям и т.п. Необходимо создать RESTful сервис и фронтэнд интерфейс для этого сервиса. Сервис должен расширяться для возможности добавления различных задач в будущем. Проект не включает в себя контент, а только задачи по администрированию.
Модернизация модулей
Многие модули не обновлялись годами и не используют преимущества JImage или JQuery, JLayouts или PHP 5. Кроме того, необходимо провести рефакторинг и улучшения функционала loadposition/loadmodule, а также пользовательского интерфейса компонента com_modules. Проект позволит подтянуть модули до уровня остальной CMS. Возможные улучшения:
- Просмотреть все модули и подтянуть до стандарта PHP 5.4
- Внедрить JImage, например, встраивая картинку вступительного текста в модулях материалов
- Внедрить или добавить новые модули, использующие такие возможности JQuery, как карусели
- Добавить новые модули для безусловно упущенных возможностей, например отображение контактной информации
- Использование JLayouts в модулях для стандартизации
- Обновить обработку loadposition.
- Сделать так, чтобы модули выступали в виде контента и трактовались как ассеты (например, предоставить контроль уровней доступа модулей)
Системные тесты для веб-обработки
Автоматизированные тесты позволяют тестировать CMS, автоматически запуская Joomla из браузера, выбирая опции меню и оценивая полученный результат. В настоящее время большинство системных тестов написаны на устаревшей программе Selenium RC. Малое количество тестов на данный момент используют новую технологию Selenium Webdriver и паттерны Page Objects для разделения объектов страниц и объектов тестирования. Проект должен создать основу для Webdriver тестов и расширить тесты на всю CMS. Ожидаемые результаты:
- Создать стратегию и план выпуска системных тестов для Joomla. Включает в себя такие вопросы как организация тестов и покрытие тестами критического функционала как бекэнда так и фронтэнда.
- Написать повторно используемые классы для расширения тестов. Эти классы будут использоваться для создания классов объектов страниц и тестовых классов для различных частей CMS.
- Начать реализацию плана выпуска.
Улучшение семантики и доступности фронтэнда
Проект принесет большие изменения для тех, кто хочет получить семантически правильный веб-сайт с валидным HTML, и для тех, кто хочет получить стандартный и простой путь для генерации конкретной семантики для таких сторонних веб-сайтов как Facebook и Google Rich Snippets.
Этот проект включает в себя значительные исследования веб-стандартов и поддержку валидного HTML. Для реализации проекта планируется внести изменения в различные базовые компоненты (такие как com_content, com_contact) и базовые шаблоны.
Пример:
- Category Blog → Blog scope
- Single Article → Article scope
- Single Contact → Person scope
- Default Template → Webpage scope
Будет создана новая опция во всех расширениях (в настройках мета-данных), которая позволит включать/выключать эти новые возможности. Пример:
Content → Article Manager → Edit → Metadata Options → Microdata semantics (enable/disable)
Возможно, на фронтэнд также будут добавлены некоторые WAI-ARIA роли.
Joomla Framework
Облачные хранилища (Cloud storage)
Необходимо добавить поддержку облачных хранилищ в пакет Filesystem. Проект Molajo предоставил для Фреймворка новый пакет Filesystem, поэтому необходимо для него создать облачные адаптеры. Предложенные API: Amazon S3, Dropbox, Google Cloud Storage и Rackspace Cloudfiles.
Улучшенные поля формы
Необходимо добавить множество новых HTML5 атрибутов и входящих типов для элементов формы (form, input, textarea,...). Если есть какие-то атрибуты, которые не поддерживаются в HTML5, необходимо удалить их.