Что нового в версии 6.0: Обзор

02 мая 2017
Streamliner Streamliner

C1 CMS версия 6.0 - Окно О C1 CMS

Наконец-то я собрался описать, что нового в версии 6.0, которая вышла еще 8 февраля.

А нового очень много, помимо нового названия "C1 CMS".

(И не успел я закончить обзор, как вышла уже версия 6.1. Но об этом - в другом сообщении.)

Но обо всем по порядку и начнем с критических изменений в версии 6.0.

Критические изменения в C1 CMS 6.0

Обратите внимание на два критических изменения, из-за которого ваш сайт может перестать работать после обновления до версии 6.0:

Web Sockets и IIS 8

Во-первых, для работы C1 CMS 6.0 вам потребуется IIS версии 8 или выше с включенной поддержкой Web Sockets.

Я лично уже столкнулся с этой проблемой, когда пытался здесь на этом хостинге установить версию 6.0. Здесь Web Sockets не поддерживается, поэтому пришлось ограничиться пока версией 5.5.

IApplicationStartupHandler

Во-вторых, в версии 6.0 изменился интерфейс IApplicationStartupHandler.

Если вы его использовали, то вам нужно обязательно добавить в имплементации интерфейса еще пустой метод ConfigureServices(IServiceCollection serviceCollection).

Что именно изменилось в интерфейсе можно увидеть здесь.

Новое в C1 CMS версии 6.0

Вот список по которому я кратко пройдусь, а когда будет время, может быть, по отдельности рассмотрю каждую новую функцию:

Загрузить скомпилированную версию C1 CMS 6.0 с GitHub

Теперь можно осуществлять поиск страниц, элементов данных и медиа-файлы прямо в административной консоли C1 CMS, причем поиск поддерживается как по встроенным, так и пользовательским типам данных.

Поиск в административной консоли C1 CMS 6.0 - Раздел

На данный момент поиск реализован в качестве пакета расширения, который можно установить из админки.

Для поиска использует Lucene.NET.

Сам пакет еще не вышел в окончательной версии, это только ознакомительная версия.

О поиске и его расширяемости можно почитать в ознакомительном документе CmsSearchAPI.docx (англ.).

Компоненты

Еще одной интересной новинкой являются компоненты.

Компоненты в C1 CMS 6.0 - Окно

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

С их помощью можно также вставлять HTML-блоки или генерить HTML-код на лету во время добавления компонента на страницу.

Некоторые пакеты теперь включают себя компоненты и на последних версиях стартовых сайтах таких как Venus, они тоже включены и используются.

Классы-контейнеры

Когда вы объявляете контент-фрагменты (content placeholders) в шаблонах страниц, к ним (фрагментам) можно привязать классы. Это можно также сделать через типы страниц.

Благодаря этому вы можете:

  • во-первых, задавать свои стили каждому отдельному контент-фрагменту, так как класс будет привязан к канвасу (canvas) "тела" (body) WYSIWYG-редактора;
  • во-вторых, для каждого контент-фрагмента можно отфильтровывать компоненты, в зависимости от того, какие классы-контейнеры указаны как активные и какие фильтры к ним применяются.

Внедрение зависимостей

C1 CMS поддерживает внедрение зависимостей (dependency injection - DI), используя DI-платформу из ASP.NET Core.

Вызвать сервис можно, используя Composite.Core.ServiceLocator. Зарегистрировать сервис можно при запуске системы в классе с аттрибутом ApplicationStartup, в имплементированном методе ConfigureServices, который дает вам доступ к объекту типа IServiceCollection для регистрации сервисов. (

Если у C1-функции есть параметр типа, который предоставляет указатель служб (DI Service Locator), то такой параметр будет скрыт в пользовательском интерфейсе и заполнен экземплярами из указателя служб.

NuGet-канал для сборок

Для C1 CMS теперь есть новый NuGet-канал для ключевых сборок и зависимостей. Благодаря этому пакету ссылки на сборки C1 CMS помечаются как "не копировать локально" ("do not copy local").

WAMP

В C1 CMS теперь также имплементирован WAMP - протокол сообщений веб-приложений (Web Application Messaging Protocol). Для имплементации используется проект с открытым исходным кодом WampSharp.

WAMP обеспечивает объединенную маршрутизацию приложений по протоколу WebSocket - и событий (для PubSub), и вызовов (для RPC) между компонентами приложения по одному протоколу. Благодаря этому, можно создать распределенную систему из компонентов приложения, которые слабо связаны и обмениваются сообщениями в (почти что) реальном времени.

Новый подход к построению админки

И хотя для конечного пользователя эта новая "фича" практически не видна, некоторые механизмы, связанные с админ. консолью претерпели существенные изменения. Это позволит ее модернизировать, используя последние веяния в мире JavaScript.

  • Одно из изменений было упомянуто выше - использование WAMP. На стороне клиента используется легковесная имплементация этого протокола - Wampy.
  • Для управления состоянием клиента теперь используется Redux.
  • Для обработки и отображения контента используется еще один современный стандарт - библиотека ReactJS.
  • Для разработки теперь используется стандарт ECMAScript 2015 ради "промисов" (promises), шаблонных строк (template strings) и, главным образом, модулей. И в этом ключе используются:  JSPM, System.JS and Babel.

Прототипы разделов

Разделы, также известные как "перспективы" (perspectives) - теперь тоже открытый исходный код. Теперь можно полностью контролировать "канвас" раздела и полностью отказаться от традиционного вида раздела (древовидная структура, кнопки, внутренний браузер и т.п.).

Это используется в описанной выше "фиче" поиска в админке.

Фокусировка на элементе дерева

Теперь админ. консоль поддерживает фокусировку на элементе в разделе с помощью идентификатора фрагмента в URL-адресе (URL anchors): 

~/Composite/top.aspx#FocusElement;{сериализированный токен сущности для элемента}

Разное

Ну, и конечно были исправлены некоторые ошибки.


comments powered by Disqus

Web hosting by Somee.com