Проблематика

На момент начала проекта у клиента была традиционная система управления содержимым (CMS) сайта, где редактирование страниц происходило в административной панели в виде форм, а каждое поле соответствовало какому-то блоку на странице. Для пользователей данный подход был совершенно не интуитивным и затруднял управление сайтом. Помимо этого, для более сложных элементов сайта (таблицы тарифов, формы, и т.д.) клиент пользовался услугами компании, которая разрабатывала/внедряла используемую на тот момент систему. Это приводило к тому, что любые изменения на сайте, помимо текстовых, занимали очень много времени и оказывались дорогостоящими. Поэтому клиентом было принято решение разработать свою собственную CMS с интуитивным WYSIWYG управлением содержимым, с которым мог бы легко взаимодействовать даже не технический персонал.

Решение

Разработан механизм формирования содержимого (контента), используя настраиваемые перетаскиваемые визуальные компоненты (widgets), которые служат строительными блоками страниц сайта. В кооперации с клиентом был сформирован список из требуемых компонентов, таких как: конструктор форм, конструктор таблиц и тарифов, компонент с картой, со слайдером, с паралаксом, с галереей и другими визуальными элементами и их комбинациями. По мере использования системы список компонентов постоянно пополняется, тем самым расширяя возможности редакторов сайта.

Помимо механизма формирования содержимого была разработана панель управления CMS, в которую включены следующие функции:

  • Управление различными типами страниц: редактирование, метаданные, публикация;
  • Управление языками: языковые контексты, языковые константы, переводы страниц;
  • Управление пользователями и их правами;
  • Управление файлами: структура папок, загрузка/удаление, метаданные;
  • Управление меню: структура, уровни вложенности.

Техническое описание

Архитектурно система состоит из трёх частей:

  • серверная часть, написанная на .NET, которая отвечает за отображение страниц, маршрутизацию, безопасность, обработку форм, отправку e-mail’ов, интеграции с другими системами, API администрирования и т.д.
  • конструктор страниц – это AngularJS приложение, которое позволяет пользователям собирать страницу в WYSIWYG режиме, используя настраиваемые перетаскиваемые визуальные компоненты (widgets).
  • панель управления – это бэкофис сайта, написанный на AngularJS. Через него осуществляется настройка и управление сайтом в целом.

Для реализации проекта был выбрана стандартная версия .NET Framework, так как на момент начала проекта .NET Core был ещё в стадии Beta-тестирования, а для проекта надёжность и стабильность была важнее наличия кроссплатформенности и нововведения .NET Core не были столь актуальны.