Аналитические статьи

Что нас ждёт в Grav 1.1

Grav
Что нас ждёт в Grav 1.1

Релизы Grav 1.0 и Админ-плагина состоялись более 4 месяцев назад, и за это время уже вышло десять баг-фикс релизов. После выхода 1.0 был определён роудмап, и в Grav 1.1 будут закрыты некоторые его задачи.

Релиз Grav 1.1 запланирован на конец апреля 2016 года, а 1.1.0-beta.1 уже доступна для тестирования. Давайте посмотрим, что будет реализовано в этой версии Grav.

Grav 1.1

Улучшения blueprint

Главные улучшения в Grav будут сделаны в области функциональности blueprint. Blueprints являются важной составляющей в работе Grav, которая позволяет задавать настраиваемые поля. Это позволяет создавать определение поля формы, которое может быть отображено в плагине админ-панели, а также позволяет вводить, валидировать и хранить значения в различных конфигурационных файлах и файлах страниц.

Ниже приведены ключевые новинки функциональности blueprint в Grav 1.1:

Расширение blueprints

В Grav 1.0 мы могли расширять формы, но сейчас можно будет использовать новый синтаксис extends@: default, а не строку @extends, которая должны быть экранирована в YAML. Этот новый формат также позволяет задавать context, который определяет, где искать базовый blueprint. Другой новой фичей будет возможность расширяться от множества blueprints.

Встраивание/импорт blueprints

Одной из фич, которая была запрошена, это возможность встраивать или импортировать blueprint в другой blueprint, что позволит совместно использовать поля или суб-формы между разными формами. Это делается с помощью синтаксиса import@.

Удаление существующих полей и свойств

Ещё одной новой фичей будет возможность полностью удалить существующие поля и свойства из расширяемого blueprint. Это даёт больше возможностей при создании новых кастомных полей через простое указание синтаксиса unset@: true. Для удаления свойства поля можно будет использовать unset-<property>@: true в расширенном определении поля, например: unset-options@: true.

Замена существующих полей и свойств

По аналогии с удалением, можно будет заменять существующие поля и свойства, используя синтаксис replace@: true для всего поля, и replace-<property>@: true для конкретного свойства.

Порядок полей

Возможно наиболее востребованная функциональность blueprint, которая будет добавлена в Grav 1.1. Представьте, что вы расширяете blueprint дефолтной страницы, но добавляете новую вкладку. Раньше эта вкладка была бы добавлена в конец формы, но сейчас вы сможете определять, где именно должна располагаться вкладка. Это также работает и для полей, так что вы можете расширить blueprint и добавить свои кастомные поля куда угодно! Это достигается с помощью нового синтаксиса ordering@: и указанием либо существующего свойства, либо числового значения.

Свойства конфигурации

Ещё одной полезной фичей будет возможность напрямую получать доступ к конфигурации Gravв blueprints через синтаксис config-<property>@. Например, вы сможете установить дефолтное значение для поля через config-default@: site.author.name, которое использует значение author.name из site.yaml как default значение для этого поля.

Вызовы функции

В Grav 1.1 были улучшена возможность вызывать PHP функции. Теперь они стали ещё более мощными. Вы сможете использовать синтаксис data-<property>@ для вызова статических методов и получения значений. Например, data-default@: '\Grav\Plugin\Admin::route'. Вы также сможете передавать параметры в функции.

Правила валидации

Вы сможете устанавливать кастомное правило валидации на уровне blueprint и назначать его полю формы.

Кастомные типы полей формы

Эта новая функциональность позволит создавать кастомный тип поля через новое событие плагина getFormFieldTypes().

Документация по blueprints будет обновлена после релиза Grav 1.1, и будет включать в себя описания всех новых возможностей с реальными примерами, чтобы вы могли увидеть преимущества их использования.

Версионность GPM

В управление пакетами GPM будет добавлена возможность контролировать зависимости с помощью версий. Был выбран синтаксис, очень похожий на тот, который используется в Composer. С ним знакомо большинство PHP разработчиков.

Новая система версионности позволит определять конкретную минимально необходимую версию для зависимостей в Grav. Это должно разрешить проблемы, когда один пакет требовал конкретную минимальную версию другого пакета. Например, админ-плагин при обновлении может затребовать конкретную версию Grav.

Другие улучшения

В Grav 1.1. будет целый ряд минорных обновлений, включающий возможность предоставлять blueprints через плагин (раньше это ограничивалось темами). Также идёт работа по рефакторингу жёстко зашитых путей в PHP Streams, что позволит файл установки конфигурировать, где в файловой системе расположены те или иные части Grav. Это позволит Grav оставаться гибкой и открывает больше возможностей для настройки многосайтовости.

Админ-плагин Grav

Переписка JavaScript

Во время разработки Grav 1.1 были внесены некоторые большие архитектурные изменения в админ-плагин. Самым большим изменением является полная переписка JavaScript с нуля. Изначально JS плагина был мешаниной нескольких существующих скриптов, а новый код написан на ES6 (ES2015), скомпилирован с помощью babel и построен при помощи webpack и gulp.

Это изменение позволило лучше организовать код и сделать его модульным. Все зависимости JS теперь используют экосистему NPM.

Во время этих изменений были выявлены проблемы и ошибки, которые остались незамеченными. Новый код также сделал многие существующие возможности более мощными и расширяемыми. Ниже список основных улучшений JavaScript:

  • Списки теперь всегда вложены и 'fancyfields' (такие как, editor, datetimepicker, selectize) инициализируются автоматически, так что они всегда доступны, независимо от того, добавляете ли вы их или удаляете из списков.
  • Редактор стал более гибким. По факту вы можете передать любую настройку CodeMirror через blueprint, используя атрибут codemirror:. Кнопки тоже получили новый API, которые позволяет добавлять или игнорировать поведения в панели инструментов (смотрите grav-plugin-editor-buttons). Также были добавлены кнопки заголовков (H1-H6) и кнопки Undo / Redo.
  • Был переработан Datetimepicker, вы увидите новый освежённый UIс лучшей поддержкой переводов
  • Появилось новое поле colorpicker. Теперь вы можете добавлять больше цветов в ваши админ-плагины.
  • Вкладки (tabs) теперь постоянны. Например, в таких разделах как редактирование страницы, после переключения вкладки, сохранение или обновление приводит к сбросу вкладки на исходную.
  • Страницы теперь более постоянны. Они будут запоминать состояния фильтров и слайды (expanded/collapsed).
  • При редактировании в режиме Expert, frontmatter редактор теперь более дружественен. Теперь у вас будут номера строк, undo/redo и YAML

Переписка темы

Дефолтная тема Grav была улучшена и переписана практически с нуля, чтобы добиться большей гибкости. Главной причиной этому послужила совместимость с ожидаемым плагином Admin Pro, но ключевой выгодой является значительное улучшение совместимости с мобильными устройствами.

Поддержка версионности в GPM

Вместе с добавлением поддержки версионности в ядро Grav, админ-плагин также стал поддерживать эту версионность при установке своих зависимостей.

Оригинальная статья:
Dmitry Rekun
Работаю в банковской сфере, а с веб-разработкой (непосредственно с Joomla) столкнулся в 2007 году. Теперь это моё хобби и время от времени вторая работа. Какое-то время вёл свой блог, но решил попробовать работать в команде. И вот c 2012 года я здесь :)
timeweb

Заработок в сети

  • Sape - биржа ссылок