В XWiki добавлена функция редактирования WYSIWYG в реальном времени (но по умолчанию отключена, поскольку она все еще считается экспериментальной).
Кроме того, в этом выпуске улучшена производительность при большом количестве правок страниц.
В связи с важными изменениями инфраструктуры, XWiki перешла с Restlet на Jersey для своего REST API и с Solr 8 на Solr 9 (включена миграция).
XWiki продвигается по пути к совместимости с WCAG 2.1 AA, и было внесено несколько улучшений.
И исправлены ошибки, как обычно.
Новое и заслуживающее внимания (начиная с XWiki 16.1.0)
Для пользователей
Редактирование на месте в реальном времени
Встроенный режим редактирования WYSIWYG теперь поддерживает совместную работу в режиме реального времени.
Эта функция является экспериментальной, поэтому по умолчанию она отключена.
Если вы хотите попробовать, просто попросите своего администратора включить плагин CKEditor "xwiki-realtime" из раздела администрирования CKEditor.
Включив данную функцию вы сможете редактировать один и тот-же документ одновременно с другими пользователями системы.
Вот как это выглядит:
Разное
В меню администрирования теперь есть метки рядом с названиями разделов, подчеркивающие тот факт, что разделы можно расширять для просмотра подразделов.
Улучшена производительность отображения истории: отображение истории и переключение страниц для документа с большим количеством ревизий должно быть заметно быстрее и занимать меньше памяти.
Для администраторов
В интерфейсе административных прав теперь используются кнопки с актуальными значками вместо скеоморфных изображений.
Для разработчиков
Поддержка JAX-RS 2.1
XWiki теперь поддерживает JAX-RS 2.1. Реализация основана на Джерси 2, который заменяет Restlet, который использовался для JAX-RS 1.
Смотрите раздел обратной совместимости для получения соответствующих критических изменений.
Асинхронные действия с данными в реальном времени
Теперь можно разрешить асинхронные действия с данными в реальном времени. Вместо перехода по ссылке действие будет выполняться в фоновом режиме, а текущие данные будут обновлены в конце процесса.
Кроме того, можно задать подтверждение пользователя перед выполнением действия.
Пример:
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
id="test"
properties="name,_actions"
source="liveTable" sourceParameters="className= пробел.MyClass"
}}{
"meta": {
"actions": [{
"id": "delete",
"async": {
"HttpMethod": "POST",
"loadingMessage": "Загрузка",
"successMessage": "Успешное удаление",
"failureMessage": "Сбой",
"body": "newBacklinkTarget=&updateLinks=false&autoRedirect=false&form_token=${services.csrf.token}&confirm=1&async=true",
"заголовки": {
"Content-Type": "application/x-www-form-urlencoded"
}
}
}]
}
}
{{/LiveData}}
Поставщик безопасных скриптов
Старый инструмент ScriptSafeProvider был перемещен в общедоступный пакет. Значительно упрощается обеспечение безопасности скриптового API за счет упаковки того, что он возвращает, чтобы убедиться, что:
- на самом деле он может использовать только метод, представленный в возвращаемом API
- к методам, вызываемым в возвращаемых объектах, добавлена некоторая защита
- легко сделать сбор этих объектов безопасным
Смотрите Script Module для получения более подробной информации.
Разное
Свойства данных в реальном времени аннотация: У средств отображения данных в реальном времени появилось новое свойство data-livedata-property-id, содержащее идентификатор отображаемого свойства. Это полезно для выбора элемента DOM, соответствующего данному свойству, не полагаясь на структуру данного макета.