«Предъявите паспорт» или пара приемов по работе с профилем пользователя в Xwiki

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!

В прошлой статье про XWiki я обещал не затягивать с публикацией новых материалов, но оказалось, что "не затягивать" это понятие растяжимое" (простите за каламбур, не удержался). В этот раз мы рванем сразу с места в карьер и попробуем расширить профиль пользователя в Xwiki.

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

Как и в моей первой статье цикла про Xwiki мы будем использовать Docker образ с LTS версией Xwiki (на момент публикации 12.10.8), а также установим Demo Flavor.

Оглавление:

  • Введение.

  • Добавляем поле "Position".

  • Делаем перевод для поля "Position".

  • Добавляем возможность назначить тему пользователю.

  • Пишем скрипт вывода пользователей с указанием их Position и colorTheme.

Добавляем поле "Position"

XWiki под капотом имеет множество настроек, благодаря, которым мы можем прокачать нашу вики, почти, как в популярном шоу с участием Xzibit.


Правда некоторые настройки могут быть скрыты от непосвященных глаз, но это легко исправить.


Перво-наперво включите продвинутый режим пользователя (если еще не включили).
Также мы включим отображение скрытых страниц.

Примечание: Отображение скрытых страниц удобно переключать с помощью "горячих клавиш". Просто кликните на пустое поле страницы и последовательно нажмите клавиши: xxxh

Настройки будут выглядеть следующим образом:

Экран настроек пользователя
Экран настроек пользователя

На самом деле можно просто перейти по ссылке вида:
<домен с ХВики>/bin/edit/XWiki/XWikiUsers?editor=class.
В нашем случае, для докера на локальной машине, скорее всего будет следующий адрес:
http://localhost:8080/bin/edit/XWiki/XWikiUsers?editor=class

Если вы открыли страницу через поиск, то перейдите в режим редактирования классов (см. в правой части рисунка), если напрямую по ссылке, то этот шаг можно пропустить.
Добавьте новое поля "Position" с типом "String". Не забудьте нажать кнопку "Добавить"

Теперь у нас есть поле для хранения информации и осталось, только включить его отображение.
Перейдите на старицу User Profile.
Ссылка для localhost: http://localhost:8080/bin/view/XWiki/AdminUserProfileSheet

Добавьте в любой понравившийся раздел Position:Position

Сохраняем и видим результат

Ну вот поле с должностью есть, но что если мы захотим сделать его мультиязычным, как все остальные поля профиля?

Делаем перевод для поля "Position"

На самом деле это совсем не сложно.

Создадим страницу для переводов.
В дальнейшем вы сможете использовать её для перевода любых других пар ключ-значение.
В моем случае я прямо в корне создал страницу "Переводы"
и записал в текст страницы: Position=Должность

Далее в редакторе объектов добавим TranslationDocumentClass и выберем область действия WIKI

Примечание: Подробнее про механизм перевода текстов можно прочитать в официальной документации.

Вернемся обратно в XWikiUsers.
(http://localhost:8080/bin/edit/XWiki/XWikiUsers?editor=class)

Развернем поле Position и добавим в раздел "Pretty name" следующий код:
{{translation key="Position"/}}

Сохраняем и наслаждаемся результатом.

Добавляем возможность назначить тему пользователю

Этот совет я проверял только в XWiki версии 12.X
Необходимо добавить в класс пользователя поле ColorTheme с типом String

Посмотреть названия тем можно в разделе "Глобальное администрирование: Темы".

В профиль пользователя тема добавляется аналогично полю "Position"
Я выбрал тему FlamingoThemes.Superhero.

Как видно выше, новая тема применялась только к администратору, когда я вошел под пользователем "Иван Иванов" у него отображалась тема из глобальных настроек.

Пишем скрипт вывода пользователей с указанием их Position и colorTheme

Напоследок, закрепим результат, решив надуманную задачку по автоматизации.

Представим, что мы хотим вывести список всех участников определенной группы с указанием их имени, фамилии, должности и цветовой схемы.

Для этого я создал группу IT и включил в неё трех человек.

Осталось создать новую страницу или отредактировать старую, добавив в неё Velocity макрос следующего содержания:

## получить данные о группе IT
#set($allGroupsInUserWiki = $services.user.group.getMembers('xwiki:XWiki.IT', false))
## перебрать в цикле всех пользователей
#foreach($user in $allGroupsInUserWiki)
## получить ссылку на страницу пользователя
#set($userPage = $xwiki.getDocument($user))
## получить объект с данными пользователя со страницы
#set ($user =  $userPage.getObject('XWiki.XWikiUsers'))
## вывести необходимые данные на экран
**$user.getValue('first_name') $user.getValue('last_name')** - position: $user.getValue('Position'), ColorTheme: $user.getValue('colorTheme')
#end

Вот такой результат должен получиться:

Спасибо, что дочитали до конца.
P.S. я помню, что в прошлой статье обещал разобрать работу со Swagger и Figma, к ним я постараюсь вернуться позже, когда будет больше свободного времени.

Источник: https://habr.com/ru/post/573626/


Интересные статьи

Интересные статьи

В этой статье мы расскажем, как оптимизировать крупный проект в «Битрикс24» и увеличить его производительность в 3 раза, изменяя настройки MySQL и режим питания CPU. Дано Корпоративн...
Стартап из Беркли Covariant вышел из тени и считает, что его роботы готовы к выходу в мир Летом 2018 года небольшой стартап из Беркли, разрабатывающий роботов, столкнулся с трудным заданием....
Перевод главы 13 Параллелизм из книги ‘Expert Python Programming’, Second Edition Michał Jaworski & Tarek Ziadé, 2016 Асинхронное программирование В последние годы асинхронное прог...
#nginxживи #ЯМыNginx #ЯМыСысоевКоновалов   Астрологи объявили неделю жадных юристов в IT. Количество правообладятлов увеличилось вдвое. Когда они вводили реестр запрещенных сайтов, ...
Перейдем к вычислению логических функций по графу для более широкого класса поведений. Будем рассматривать циклические автономные поведения, не содержащие кратных сигналов (или по другому: не сод...