Эта статья о том, как мы искали идеальное решение для административных задач веб-приложений. Для кого статья: для инженеров-программистов, находящихся "в поиске"; администраторов интернет-магазинов; руководителей, планирующих создать какой-либо сервис с доступом из веб. для тех, у кого есть идея и ей предстоит выбрать платформу, достаточную для быстрого старта.
Наши поиски завершились отрицательно. Идеальной платформы под каждого вашего сотрудника / менеджера не существует. Такое заключение основано на опыте внедрения административных систем October CMS и Laravel Administrator.
Типовые задачи админки, CRUD
Когда ты маленький, ничего не умеющий инженер-программист, перед тобой стоит задача выбрать платформу, на которой cделать решение для бизнеса своего босса. Первый и зачастую неразумный вариант – начать писать "свое" решение, "с нуля". Ты участвуешь в создании чего-то нового и значимого - на таких началах можно написать много когда, который 50/50 будет работать. Но без должного опыта, умения использовать готовые инструменты, а так-же в отсутствии таланта писать работающий код – самопис рискует стать проблемой. Это затормозит дальнейшую работу, в то время, когда ваша команда разработчиков наберется опыта и вы начнете искать подходящие платформы для типовых задач администрирования - CRUD «Список (табличный листинг) / добавление / редактирование».
October CMS
Поиск идеальной платформы для создания административного интерфейса берет начало с понимания того, что есть код, написанный талантливыми программистами, протестированный уже много раз и поддерживаемый сообществом. Разговор пойдет о автоматической системе создания админки с помощью плагинов для October CMS. Сейчас нас не интересует создание сайта на CMS или использование возможностей этой системы управления сайтом.
Кроме того, что October CMS – молодая "замена WordPress", в ней есть возможность формировать административный интерфейс на основе конфигов yaml и моделей Eloquent от laravel.
1 Модели Eloquent это PHP-классы, определяющие некую сущность в системе, например "Дом". Каждая модель связана с таблицей в базе данных (MySQL, PostgreSQL, SQLite). Свойства объекта (площадь дома, площадь участка) – определяются в конфигурации полей с помощью синтаксиса YAML.
2 В административном интерфейсе October CMS не реализована возможность сохранять фильтры. По части фильтров могут помочь "скопы". Подробнее о скопах можно прочитать в официальной документации Laravel: Scopes
3 Плагина meta-box для WordPress предоставляет дополнительные типы полей, которых нет в October CMS. У meta-box нет dropdown-списков основанных на реляциях БД. Зато в нем есть поля "адрес" с поиском по карте google и multi-add текстовые поле.
4 Контроль прав доступа реализован в настройках системы October. При кодинге разработчик обозначает права доступа в конфигурационном файле плагина. Поддерживаются группы прав для пользователей. Права на доступ к определенным полям объекта, к сожалению, не поддерживаются "из коробки", однако можно сделать это и многое другое, используя события моделей Eloquent.
Orchestra Platform, Pyro CMS, Zurmo
Когда существует как минимум 2 разных технологии, решающих схожие задачи, необходимо выбрать, какую технологию использовать. Мы уже знаем "слабые стороны" тех решений, которые мы используем сейчас и хотим найти такой продукт, в котором реализовано все то, что мы уже знаем, а так-же учтены и новые требования На деле выходит так, что каждая платформа решает свои задачи. Мы искали подтверждение тому, что не только у October CMS есть развитая система автоматического построения админки, но и другие решения предоставляют не меньше функций. Попытавшись определить одно из этих решений, способных "из коробки" дать столько же функций для построения административного интерфейса, мы не нашли. Просматривали Orchestra Platform, Pyro CMS, пробовали работать с открытым исходным кодом CRM-системы, написанной на PHP и RedBean Model – Zurmo.
Laravel Administrator
Следующим опробованным ПО, для решения задач заказчика, стал пакет Laravel Administrator. По-сравнению с October CMS, LA не тянул за собой CMS, тем самым обещал стабильность работы и легкость интеграции в любое окружение. Можно задать набор полей для редактирования, список колонок при табличном листиге и определить фильтры для поиска записей.
Интерфейс Laravel Administrator основан на javascript-фреймворке Knockout. Бекенд системы функционален в меру. В нем нашлись и "слабые" стороны.
1 Внешний вид списка записей в административном интерфейсе играет важную роль. Можно сказать это лицо продукта, то с чем предстоит работать пользователям веб-приложения. В October CMS не позаботились о компактности табличного листинга. Это в свою очередь делает не удобным вывод таблиц с большим количеством колонок. В этом плане, Laravel Administrator не отличается особой находчивостью, так как не позволяет легко кастомизировать свои внутренние шаблоны для построения UI.
2 Окно редактирования / добавления записи "выезжает" сбоку, занимает мало места. Возможность изменить размер окна по-умолчанию отсутствует. При большом количестве полей для редактирования – окно редактирования выглядит не эргономично.
Резюме
Опыт работы с системами для построения административных интерфейсов, показал идеального решения не нашлось. Во всех случаях не хватает тех или иных функций или интерфейс не отвечает требованиям отдельных пользователей системы. В каждом отдельном случае нужно сделать выбор, имея опыт работы с админками WordPress, October CMS и Laravel Administrator, подобрать подходящее решение.