Wiki source code of Установка и настройка XWiki
Last modified by Eugen Colesnicov on 2011/02/21 21:13
Show last authors
author | version | line-number | content |
---|---|---|---|
1 | {{warning}} | ||
2 | **Это старый вариант инструкции, который сейчас уже не обновляется. [[Новый вариант доступен здесь>>UNA.XWikiInstalation]]** | ||
3 | {{/warning}} | ||
4 | |||
5 | {{box cssClass="floatinginfobox" title="**Содержание**"}} | ||
6 | {{toc start="2"/}} | ||
7 | {{/box}} | ||
8 | |||
9 | == ПО, необходимое для загрузки == | ||
10 | |||
11 | === С сайта [[XWiki>>http://www.xwiki.org/xwiki/bin/view/Main/Download]] === | ||
12 | |||
13 | * Базовый продукт [[XWiki Enterprise>>http://www.xwiki.org/xwiki/bin/view/Main/Download#HXWikiEnterprise]]: | ||
14 | ** берем war-файл - собственно само приложение, | ||
15 | ** и также xar-файл - содержит начальные настройки и базовые страницы wiki. | ||
16 | |||
17 | * Для установки "поверх" XWiki Enterprise Manager (обеспечит режим multiwiki): | ||
18 | ** нужен [[Application Manager plugin>>http://code.xwiki.org/xwiki/bin/view/Plugins/ApplicationManagerPluginDownloads]] и [[Application Manager application>>http://code.xwiki.org/xwiki/bin/view/Applications/ApplicationManagerApplicationDownloads]] | ||
19 | ** а также [[Wiki Manager plugin>>http://code.xwiki.org/xwiki/bin/view/Plugins/WikiManagerPluginDownloads]] и [[Wiki Manager application>>http://code.xwiki.org/xwiki/bin/view/Applications/WikiManagerApplicationDownloads]] | ||
20 | ** еще может понадобиться [[xar-файл от XEM application>>http://www.xwiki.org/xwiki/bin/view/Main/Download#HXWikiEnterpriseManager]] (необязательно) - содержит начальные настройки и домашнюю страницу. Брать следует xar-файл, специально предназначенный для установки поверх существующей XWiki Enterprise. | ||
21 | |||
22 | * Также доступны для скачивания множественные дополнительные плагины и приложения, которые будут рассмотрены отдельно. | ||
23 | |||
24 | === Другое ПО === | ||
25 | |||
26 | * Вам нужен Application Server / Servlet Container и адекватная версия Java к нему. Имеются разные варианты, в т.ч.: | ||
27 | ** [[Jetty>>http://docs.codehaus.org/display/JETTY/Downloading+Jetty]]. И для Jetty достаточно [[Java JRE>>http://www.java.com/ru/download/manual.jsp]] | ||
28 | ** [[GlassFish>>http://docs.codehaus.org/display/JETTY/Downloading+Jetty]] Для GlassFish нужен вариант [[Java JDK>>http://java.sun.com/javase/downloads/widget/jdk6.jsp]], который включает в себя JRE. | ||
29 | |||
30 | * Вам нужны [[Oracle 10g JDBC Drivers>>http://www.oracle.com/technology/software/tech/java/sqlj_jdbc/index.html]], версию брать в зависимости от версии Oracle и проблем с nls (о проблемах с nls - см. ниже). Для Oracle 10G предлагается //ojdbc14.jar//, а для Oracle 11G - //ojdbc5.jar//, или //ojdbc6.jar//. Эти файлы бывают разных версий в зависимости от редакций Oracle. В реальности ojdbc6.jar работает и с Oracle 10G. | ||
31 | \\//Примечание. В некоторых случаях версия jdbc-драйвера может быть актуальна. Например, с OracleXE есть проблема связанная с тем, что JDBC Drivers от текущей версии XE 10.2.0.1 не совсем подходят - в них имеются проблемы с nls (языковыми настройками). С XE 10.2.0.1 корректно работают jdbc-драйвера от 10.1.0.2 (почему-то). Ситуация возникала с XWiki 2.0 M3 - с учетом, что это был предварительный релиз 2.0 - возможно проблема именно в этом.// | ||
32 | |||
33 | * Для работы приложения "импорт офисных документов" требуется: | ||
34 | ** [[OpenOffice>>http://download.openoffice.org/index.html]] | ||
35 | ** [[windows server 2003 resource kit>>http://go.microsoft.com/fwlink/?LinkId=4544]] | ||
36 | |||
37 | * В случае, если СУБД Oracle будет устанавливаться локально, то Вам нужна база данных Oracle, например [[10g Express Edition>>http://www.oracle.com/technology/software/products/database/xe/index.html]]. | ||
38 | |||
39 | * В процессе настройки LDAP идентификации, Вам могут потребоваться программы-утилиты: | ||
40 | ** [[LDAP Explorer Tool>>http://ldaptool.sourceforge.net/]] - этой утилиты в принципе может быть достаточно | ||
41 | ** [[LDAP Browser/Editor>>http://www.novell.com/coolsolutions/tools/13765.html]] | ||
42 | ** [[Windows Server 2003 Administration Tools>>http://www.microsoft.com/downloads/details.aspx?familyid=86B71A4F-4122-44AF-BE79-3F101E533D95&displaylang=en]] - набор средств, для администрирования Active Directory. Бывает разных версий, в зависимости от версии Service Pack для Windows 2003 (без SP, SP1, SP2). На компьютерах с Win2003 этот набор имеется в ##C:\Windows\System32\adminpak.msi##. Для установки в Windows XP также может потребоваться [[соответствующий патч>>http://www.microsoft.com/downloads/details.aspx?familyid=6E5DA79C-5C38-4445-B039-E3F3AA5E5B25&displaylang=en]]. | ||
43 | ** [[Softerra LDAP Browser 2.6>>http://www.ldapadministrator.com/download.htm]] - имеет смысл юзать при возникновении проблем | ||
44 | ** [[Wireshark>>http://www.wireshark.org/download.html]] - можно брать portable-вариант, имеет смысл юзать при возникновении проблем | ||
45 | |||
46 | == Установка XWiki Enterprise == | ||
47 | |||
48 | * Сначала устанавливаем Java (JRE или JDK). Запускаем installer и дальше все автоматически. | ||
49 | |||
50 | * Далее устанавливаем Application Server / Servlet Container: | ||
51 | ** Для Jetty просто распаковываем zip файл с jetty в ##C:\Jetty##. | ||
52 | ** Для GlassFish - запускаем installer и отвечаем на вопросы (Java DB можно не ставить, Update Tool - надо ставить). | ||
53 | |||
54 | * Теперь надо установить XWiki в Application Server: | ||
55 | ** Для Jetty - распаковываем war-файл Xwiki в ##C:\Jetty\Webapps\Xwiki## (winrar-ом например). | ||
56 | ** Для GlassFish все чуток сложнее: | ||
57 | *** запускаем GlassFish командой ##C:\glassfishv3\bin\asadmin start-domain## (останавливать - командой ##stop-domain##). | ||
58 | *** В браузере набираем http://localhost:4848 и заходим в админ-консоль (имя и пароль задаются при инсталляции, удобнее всего как в XWiki - Admin, admin). | ||
59 | *** Выбираем в дереве слева ##Applications## а в правой части - ##Deploy##. | ||
60 | *** Открываем с диска war-файл XWiki. | ||
61 | *** Устанавливаем: ##Type = Web Application, Context Root = xwiki, Application name = xwiki##. Остальные параметры можно не менять. | ||
62 | |||
63 | * Копируем файл JDBC-драйвера (##ojdbc14.jar / ojdbc5.jar / ojdbc6.jar##) в ##\xwiki\WEB-INF\lib##. | ||
64 | |||
65 | * В случае необходимости (если будем использовать локальную БД), следует установить OracleXE: | ||
66 | ** Собственно инсталляция Oracle через setup. | ||
67 | ** После установки заходим через web-доступ в консоль управления Oracle. Если не зайти хотя-бы один раз то база потом почему-то будет недоступна через другие средства (toad), возможно это глюк версии XE 10.2.0.1. | ||
68 | ** Меняем порт для HTTP-доступа Oracle на 8088 (т.к. 8080 стоит по умолчанию на web-консоли XE и совпадает с портом у Jetty / GlassFish). Для этого надо: | ||
69 | *** подключиться к Oracle под юзером DBA System: ##connect system;## | ||
70 | *** выполнить команду ##EXEC DBMS_XDB.SETHTTPPORT(8088);## Делать надо через sqlplus или Toad, т.к. встроенная web-консоль не допускает выполнение этой команды. | ||
71 | *** Для Glassgish возможен обратный вариант, когда устанавливаем порт для Glassfish, например в 80. Причем если OracleXE установлен и запущен, Glassfish автоматически определит это прямо при инсталляции и предложит другой порт. | ||
72 | |||
73 | * Следующий шаг - создание БД: | ||
74 | ** подключаемся к Oracle dba-юзером | ||
75 | ** и создаем схему ##create user xwiki identified by xwiki;## | ||
76 | ** Назначаем привелегии ##grant all privileges to xwiki;## | ||
77 | \\//Примечание. Можно не назначать полные привелегии, а оставить "по умолчанию". Полные привелегии могут потребоваться для режима multi-wiki (пока в точности не известно).// | ||
78 | |||
79 | * Далее занимаемся редактированием файла конфигурации соединения с БД ##\Xwiki\WEB-INF\hibernate.cfg##. В данном файле приведены варианты настройки соединений под основные распространенные СУБД. Следует: | ||
80 | ** Закомментировать строки не относящиеся к Oracle. | ||
81 | ** Разкомментировать ту часть, где касается Oracle. | ||
82 | ** Указываем параметры коннекта к базе (SID и host). | ||
83 | \\//Примечание. Причем если база стоит локально, можно оставить localhost.// | ||
84 | |||
85 | * Пробуем запускать Jetty / GlassFish (и XWiki соответственно): | ||
86 | ** Запуск Jetty: | ||
87 | *** Это можно сделать вручную из командной строки. Для этого запускаем dos-консоль в папке с jetty и выполняем: ##java -jar start.jar etc/jetty.xml## | ||
88 | *** Через какое-то время можно протестить в браузере: ##{{{http://localhost:8080}}}##. Должна открыться тестовая страничка jetty. Для остановки выполнения из командной строки следует использовать ##ctrl+c##. | ||
89 | *** Лучше установить jetty как сервис windows. Для этого следует в папке ##C:\Jetty\Bin## выполнить команду: ##{{{Jetty-Service.exe --install jetty-service.conf}}}## - в списке виндовых сервисов появиться jetty. Дальше запускаем и останавливаем через консоль управления сервисами windows. Для деинсталяции выполнить: ##{{{Jetty-Service.exe --remove jetty-service.conf}}}##. | ||
90 | ** GlassFish запустился сразу выполнения команды ##start-domain##, а XWiki также стартовала, при операции Deploy. | ||
91 | *** Соответственно, сейчас требуется просто сделать ##Restart## XWiki в админ-консоли GlassFish. | ||
92 | *** Если устанавливать GlassFish как windows-service, то следует остановить GlassFish командой asadmin stop-domain, а потом установить сервис командой asadmin create-service. Помимо windows-оснастки, управление сервисом можно осуществлять из командной строки, следующими командами: | ||
93 | |||
94 | {{code language="none"}} | ||
95 | Start Command: C:\glassfishv3\glassfish\domains\domain1\bin\domain1Service.exe start | ||
96 | Stop Command: C:\glassfishv3\glassfish\domains\domain1\bin\domain1Service.exe stop | ||
97 | Uninstall Command: C:\glassfishv3\glassfish\domains\domain1\bin\domain1Service.exe uninstall | ||
98 | Install Command: C:\glassfishv3\glassfish\domains\domain1\bin\domain1Service.exe install | ||
99 | {{/code}} | ||
100 | |||
101 | * Теперь пробуем открыть xwiki: ##{{{http://localhost:8080/xwiki}}}##. Если все нормально, то откроется начальная страница xwiki. | ||
102 | |||
103 | * Далее следует установить начальные настройки xwiki (xar-файл). Для этого на начальной странице xwiki находим и выбираем ##Administration##. Откроется страничка, на которой будет возможность выбора файла с диска. Выбираем с диска xar-файл от xwiki. После выбора нажимаем ##attach this file## (левая нижняя кнопка из имеющихся). | ||
104 | |||
105 | * После "аттача" в списке чуть выше появится строка таблицы с указанием xar-файла. Кликаем на нее. Через несколько секунд ниже или справа строки таблицы появится список всех обектов xwiki, предназначенных для импорта с возможностью отключения/включения каждого (галочками). По умолчанию все включено. Внизу списка есть отдельная невыбранная опция ##with history## - ее не надо выбирать (так по умолчанию и есть). Чуть ниже кнопка ##Import## - нажимаем. Через некоторое время откроется начальная страница xwiki для логина. Значит процесс успешно завершен, база успешно создана и настройки xwiki по умолчанию загружены. | ||
106 | |||
107 | * Первоначально логиниться следует под пользователем ##Admin##, а пароль ##admin##. Все администрирование осуществляется через Administration раздел (кнопка в правом верхнем углу). | ||
108 | |||
109 | == Настройка многоязычной поддержки == | ||
110 | |||
111 | //Многоязычная поддержка обеспечивается тем, требуется все базовые элементы, которые так или иначе используются настроить на UTF-8. Это касается собственно XWiki, Jetty, Oracle и OS. После настройки следует включить многоязычность в XWiki и указать доступные языки.// | ||
112 | |||
113 | === Включение поддержки UTF-8 === | ||
114 | |||
115 | * Для самой XWiki, версии более 1.9 - не требуется! | ||
116 | |||
117 | * Включение UTF-8 для Jetty. | ||
118 | ** Если jetty запускаем из командной строки, то следует создать bat-файл ##start_jetty.bat## со следующим содержанием: | ||
119 | |||
120 | {{code language="none"}} | ||
121 | echo off | ||
122 | rem set LANG=fr_FR.ISO8859-1 | ||
123 | set LANG=en_US.UTF-8 | ||
124 | set JETTY_PORT=8080 | ||
125 | set JETTY_HOME=. | ||
126 | java %JAVA_OPTS% -Djetty.port=%JETTY_PORT% -Djetty.home=%JETTY_HOME% -Dfile.encoding=UTF-8 -jar %JETTY_HOME%/start.jar | ||
127 | {{/code}} | ||
128 | |||
129 | * | ||
130 | ** Если же используется запуск Jetty через windows-сервис, то в файл ##C:\jetty\bin\jetty-service.conf## после строки ##wrapper.java.additional.2## следует добавить строку: | ||
131 | |||
132 | {{code language="none"}} | ||
133 | wrapper.java.additional.3=-Dfile.encoding=UTF-8## после строки ##wrapper.java.additional.2 | ||
134 | {{/code}} | ||
135 | |||
136 | * Включение UTF-8 для Oracle | ||
137 | ** Следует добавить в файл ##C:\jetty\webapps\xwiki\WEB-INF\hibernate.cfg.xml## перед строкой ##<mapping resource="xwiki.oracle.hbm.xml"/>## 2 строки: | ||
138 | |||
139 | {{code language="none"}} | ||
140 | <property name="connection.useUnicode">true</property> | ||
141 | <property name="connection.characterEncoding">UTF-8</property> | ||
142 | {{/code}} | ||
143 | |||
144 | * | ||
145 | ** //Также в документации сказано, что следует устанавливать Oracle в варианте UTF-8. Однако в реальности пробовалась работа с уже установленным и сконфигурированным Oracle, где при инсталляции выбиралось Win1251 - и ни каких проблем не было - и русские символы и румынские сохранялись и отображались правильно. На самом деле это не всегда так в отношении румынских символов (с русскими проблем нет). Румынские символы вроде бы сохраняются, потом странички показываются с диакритикой, но в какой-то момент они все корректно заменяются аналогичные символы без диакритики. Таки по всей видимости следует использовать Oracle ТОЛЬКО в варианте UTF-8 (задавать при инсталяции).// | ||
146 | |||
147 | * Для включения UTF-8 для Windows В переменные окружения ОС следует добавить переменную ##LANG## со значением ##en_US.UTF-8##. | ||
148 | |||
149 | === Многоязычность в XWiki === | ||
150 | |||
151 | * Поддержка нескольких языков в XWiki включается в web-конфигураторе Xwiki, в разделе General. Следует включить режим многоязычности и перечислить, через запятую, языки, которые будут доступны пользователям. Переключатель языков появляется в правом верхнем углу XWiki. | ||
152 | |||
153 | * В текущих версиях XWiki невозможно настроить язык интерфейса системы отдельно от языка пользовательской страницы. Соответственно, чтобы появилась возможность переключения языков, следует перевести содержимое страницы на заданные в настройках языки. При включенном режиме поддержки нескольких языков, в режиме редактирования страницы, появляется специальное меню, позволяющее добавлять переводы к данной странице. | ||
154 | |||
155 | == Установка Сервера OpenOffice == | ||
156 | |||
157 | //Установка сервера OpenOffice необходима для обеспечения функциональности импорта и вставки из буфера обмена офисных документов.// | ||
158 | |||
159 | * Устанавливаем OpenOffice. | ||
160 | |||
161 | * Запускаем его один раз, чтобы выполнился мастер регистрации. | ||
162 | |||
163 | * Устанавливаем Windows Server 2003 Resource Kit - это необходимо, т.к. в составе Resource Kit имеется утилита для создания сервиса из обычного exe-файла. | ||
164 | |||
165 | * Выполняем в командной строке для добавления сервиса команду: | ||
166 | |||
167 | {{code language="none"}} | ||
168 | "C:\Program Files\Windows Resource Kits\Tools\INSTSRV.EXE" OpenOfficeUnoServer "C:\Program Files\Windows Resource Kits\Tools\SRVANY.EXE" | ||
169 | {{/code}} | ||
170 | |||
171 | * Запускаем из Run ##Regedit##, находим раздел ##[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\OpenOfficeUnoServer## и встаем на него | ||
172 | |||
173 | * Добавляем подраздел (key) ##Parameters## и встаем на него. | ||
174 | |||
175 | * Добавляем строковый параметр (string value) ##Application## со значением ##C:\Program Files\OpenOffice.org 3\program\soffice.exe##. | ||
176 | |||
177 | * Добавляем строковый параметр (string value) ##AppParameters## со значением ##-headless -accept=socket,port=8100;urp;## | ||
178 | |||
179 | * Открываем файл ##C:\Program Files\OpenOffice.org 3\Basis\share\registry\data\org\openoffice\Setup.xcu##. Находим в нем текст: | ||
180 | |||
181 | {{code language="none"}} | ||
182 | <prop oor:name="ooSetupInstCompleted"> | ||
183 | <value>false</value> | ||
184 | </prop> | ||
185 | <prop oor:name="ooSetupShowIntro"> | ||
186 | <value>true</value> | ||
187 | </prop> | ||
188 | {{/code}} | ||
189 | |||
190 | и заменяем его на: | ||
191 | |||
192 | {{code language="none"}} | ||
193 | <prop oor:name="ooSetupInstCompleted" oor:type="xs:boolean"> | ||
194 | <value>true</value> | ||
195 | </prop> | ||
196 | <prop oor:name="LicenseAcceptDate" oor:type="xs:string"> | ||
197 | <value>2006-07-25T17:34:04</value> | ||
198 | </prop> | ||
199 | <prop oor:name="FirstStartWizardCompleted" oor:type="xs:boolean"> | ||
200 | <value>true</value> | ||
201 | </prop> | ||
202 | {{/code}} | ||
203 | |||
204 | при этом дату и время указываем свое, больше даты установки OpenOffice. | ||
205 | |||
206 | * Идем в оснаску ##Services## и запускаем сервис ##OpenOfficeUnoServer##. | ||
207 | |||
208 | * Открываем файл ##\xwiki\WEB-INF\xwiki.properties##, разкоментируем и меняем в нем следующие стринги: | ||
209 | ** ##openoffice.serverType=1## (для версии выше 1.9) | ||
210 | ** и ##openoffice.autoStart=true## (для версии выше 1.9) | ||
211 | ** и еще ##openoffice.homePath=C:/Program Files/OpenOffice.org 3## | ||
212 | ** а также ##openoffice.profilePath=C:/Documents and Settings/LocalService/Application Data/OpenOffice.org/3## | ||
213 | |||
214 | * Перезапускаем jetty или glassfish, открываем xwiki, идем в Administration, OpenOffice Server - поле Status должно показывать "running" если все нормально. | ||
215 | |||
216 | == Решение проблем и тюннинг == | ||
217 | |||
218 | * Для решения **проблемы с аттачами в Jetty** (атачи не прикладываются или же при добавлнении или удалении аттача выдается ошибка) следует увеличить память выделяемую для java. | ||
219 | ** В случае если запуск jetty осуществляется через bat-файл, то в основной строке вызова следует стринг ##%JAVA_OPTS%## заменить на ##-Xmx1024m##. | ||
220 | ** Если вызов происходит через windows-сервис, то в файле ##C:\jetty\bin\jetty-service.conf## для параметра ##wrapper.java.maxmemory## следует установить значение ##1024##. | ||
221 | |||
222 | * Для версий XWiki ниже 2.0 имеет смысл **переключить синтакс по умолчанию**. Для этого надо открыть ##C:\jetty\webapps\xwiki\WEB-INF\xwiki.properties## и в соответствующем месте указать ##core.defaultDocumentSyntax = xwiki/2.0##. | ||
223 | |||
224 | * При использовании Jetty, если **при вставке большого объема текста в вики-страничку происходит при сохранении ошибка: Form too large,** то следует в настройках jetty добавить: | ||
225 | ** В случае, если вызов идет через bat-файл, то добавляем в него ##-Dorg.mortbay.jetty.maxFormContentSize=1000000## | ||
226 | ** Если вызов jetty происходит через windows-сервис, то следует добавить строку: ##wrapper.java.additional.4=-Dorg.mortbay.jetty.Request.maxFormContentSize=1000000## | ||
227 | |||
228 | * Если требуется чтобы **имена прикрепленных файлов показывались полностью** (по умолчанию показывается только 1-ые 25 символов), следует в attachmentsinline.vm в папке templates добавить первую строку ###set($maxnamelength = 256)## | ||
229 | |||
230 | * **Проблемы windows-сервиса jetty**. | ||
231 | ** Иногда windows-сервис jetty не запускается. В таком случае его следует запустить через bat-файл start_jetty.bat или из командной строки. Обычно потом (после остановки командной строки) windows-сервис уже запускается. | ||
232 | ** Еще один способ чтобы победить упрямый windows-сервис jetty, который частенько не хочет стартовать. В настройках сервиса есть специальная закладка, где можно настроить действия в случае неуспешного старта сервиса. Как вариант, можно поставить: 1) для первого раза - перезапустить 2) для 2-го раза - вместо сервиса запустить батник ##start_jetty.bat##. | ||
233 | |||
234 | * Для того, **чтобы в Print preview показывалось только собственно содержимое страницы** и ничего более следует открыть файл ##print.css## в папке с используемым скином и в раздел ##/* Hide unneeded stuff */##, после строки ###globallinks, #footerglobal,## добавить строку: | ||
235 | |||
236 | {{code language="none"}} | ||
237 | #headerglobal, #hierarchy, #document-title, #document-info, #xdocFooter, #docextrapanes, | ||
238 | {{/code}} | ||
239 | |||
240 | * Для того, **чтобы вывести все иконки на тулбар в wysiwyg-редакторе** необходимо: | ||
241 | ** открываем ##templates\macros.vm## | ||
242 | ** находим строку ##plugins: '$xwiki.getXWikiPreference("wysiwyg.plugins",## - в этой строке указываются те плагины, которые будут подгружаться, но сам вид тулбаров настраивается ниже. | ||
243 | ** в найденную строку добавляем через пробелы (место не имеет значения) - ##color font justify## - только этих трех плагинов нету в варианте по умолчанию. | ||
244 | ** Теперь в строке ##toolbar: '$xwiki.getXWikiPreference("wysiwyg.toolbar"## добавляем сами иконки. Вот полный вариант: | ||
245 | |||
246 | {{code language="none"}} | ||
247 | bold italic underline strikethrough teletype | subscript superscript | justifyleft justifycenter justifyright justifyfull | unorderedlist orderedlist | | ||
248 | outdent indent | undo redo | format | fontname fontsize forecolor backcolor | hr removeformat symbol | paste | ||
249 | {{/code}} | ||
250 | |||
251 | - символ "|" означает строчный разделитель, символ "/" - разбивает тулбар на несколько строк. | ||
252 | |||
253 | * Для того, **чтобы обеспечить сортировку прикрепленных файлов по дате изменения**, следует в файле attachmentsinline.vm в папке templates после строки ###set($attachments = $doc.attachmentList)## (и соответственно перед ##<div id="attachmentscontent" class="xwikiintracontent">##) добавить: | ||
254 | |||
255 | {{code language="none"}} | ||
256 | #set($attachmentsMap = $util.hashMap) | ||
257 | #foreach($a in $attachments) | ||
258 | #if(!$attachmentsMap.containsKey($a.date)) | ||
259 | #set($discard = $attachmentsMap.put($a.date, $util.arrayList)) | ||
260 | #end | ||
261 | #set($discard = $attachmentsMap.get($a.date).add($a)) | ||
262 | #end | ||
263 | #set($dates = $util.arrayList) | ||
264 | #foreach($date in $attachmentsMap.keySet()) | ||
265 | #set($discard = $dates.add($date)) | ||
266 | #end | ||
267 | #set($dates = $util.sort($dates)) | ||
268 | #set($dates = $util.reverseList($dates)) | ||
269 | #set($attachments = $util.arrayList) | ||
270 | #foreach($date in $dates) | ||
271 | #set($discard = $attachments.addAll($attachmentsMap.get($date))) | ||
272 | #end | ||
273 | {{/code}} | ||
274 | |||
275 | * В некоторых случаях, некорректная работа appache приводит к тому, что функция getURL возвращает полный путь к ресурсу, и как следствие, часть функционала портится. Например, такая ситуация наблюдается для XWiki, установленной на ресурсе UNA.MD, в частности нарушается визуальное отображение страницы ##Main.Spaces##. При этом, если открывать эту страницу из локальной сети - то все в порядке. Проблема имеет место только в случае адресации через внешний сайт UNA.MD (т.е. внешний appache). Проблема именно в appache, однако путем переписывания кода страницы можно исправить ситуацию (следует исключить getURL). См. исправленный код страницы ##Main.Spaces##: | ||
276 | |||
277 | {{spoiler title="Кликните здесь, чтобы просмотреть полный текст"}} | ||
278 | |||
279 | {{code language="none"}} | ||
280 | {{velocity}} | ||
281 | ## | ||
282 | ## List spaces within the wiki. | ||
283 | ## | ||
284 | $xwiki.ssx.use("Main.Spaces")## | ||
285 | ## | ||
286 | ## List of spaces in this wiki. | ||
287 | ## This page allow to display spaces within this wiki and to delete any space. | ||
288 | ## Only wiki administrators are allowed to delete spaces. | ||
289 | ## | ||
290 | ## Optional HTTP parameter : | ||
291 | ## deleteSpace name of a space to delete. | ||
292 | ## | ||
293 | ## Delete space if requested. | ||
294 | ## | ||
295 | #set($spaceToDelete = "$!request.getParameter('deleteSpace')") | ||
296 | #if("$!spaceToDelete" != '' && $xwiki.hasAdminRights()) | ||
297 | #foreach ($page in $xwiki.getSpaceDocsName($spaceToDelete)) | ||
298 | #set($discard = $xwiki.getDocument("${spaceToDelete}.${page}").delete()) | ||
299 | #end | ||
300 | {{info}}Space ”${spaceToDelete}“ deleted.{{/info}} | ||
301 | #set($xredirect = "$!request.getParameter('xredirect')") | ||
302 | ## Redirect to the previous page if requested. | ||
303 | #if("$!xredirect" != '') | ||
304 | $response.sendRedirect($xredirect) | ||
305 | #end | ||
306 | #end | ||
307 | #set($spaceList = $xwiki.getSpaces()) | ||
308 | ## Get this very doc, useful when it is included from another one. | ||
309 | #set($spaceListDoc = $xwiki.getDocument('Main.Spaces')) | ||
310 | {{html wiki="false"}} | ||
311 | <ul class="xlist"> | ||
312 | ## | ||
313 | ## List spaces. | ||
314 | ## | ||
315 | #foreach($space in $spaceList) | ||
316 | ## Display space only if the user has view right on space home and if the space is not blacklisted. | ||
317 | ## $blacklistedSpaces is set in xwikivars.vm | ||
318 | #if($xwiki.hasAccessLevel('view', "${space}.WebHome") && !$blacklistedSpaces.contains($space)) | ||
319 | #set($whurl=$xwiki.getURL("${space}.WebHome")) | ||
320 | <li class="xitem xunderline xhighlight space"> | ||
321 | <div class="xitemcontainer"> | ||
322 | <div class="spSpaceName"> | ||
323 | <a href="${whurl}">${space} | ||
324 | </a> | ||
325 | </div> | ||
326 | #set($sps = "space=${space}") | ||
327 | #set($msiurl = $xwiki.getURL('Main.SpaceIndex', 'view', "$sps")) | ||
328 | #set($msi2 = '~') | ||
329 | #set($tit = "$msg.get('xe.spaces.action.index')") | ||
330 | #set($skif = "$xwiki.getSkinFile('icons/silk/book_open.gif')") | ||
331 | <div class="xshowonhover spSpaceActions"> | ||
332 | ## Link to the space index. | ||
333 | <a href="${msiurl}" title="{$tit}"> | ||
334 | <img src="${skif}" alt="{Space index icon}"> | ||
335 | </img> | ||
336 | </a> | ||
337 | ## If the user has admin right on the space display links to administration and delete. | ||
338 | #if($xwiki.hasAccessLevel('admin', "${space}.XWikiPreferences")) | ||
339 | <a href="$xwiki.getURL("${space}.WebPreferences", 'admin')" title="$msg.get('xe.spaces.action.admin')"> | ||
340 | <img src="$xwiki.getSkinFile('icons/silk/cog.gif')" alt="Administrate space icon"> | ||
341 | </img> | ||
342 | </a> | ||
343 | ## <a href="#" onclick="confirm('ALL THE PAGES WITHIN THE SPACE “${space}” WILL BE DELETED, are you sure that you want to continue ?'); this.href='$spaceListDoc.getURL('view', "deleteSpace=${space}&xredirect=$doc.getExternalURL()")'" title="$msg.get('xe.spaces.action.delete')"> | ||
344 | ## <img src="$xwiki.getSkinFile('icons/silk/cross.gif')" alt="Delete space icon"> | ||
345 | ## </img> | ||
346 | ##</a> | ||
347 | #end | ||
348 | </div> | ||
349 | <div class="xspacer"> </div> | ||
350 | </div> | ||
351 | </li> | ||
352 | #end | ||
353 | #end | ||
354 | ## | ||
355 | ## Space creation. | ||
356 | ## | ||
357 | #if($xwiki.hasAdminRights()) | ||
358 | <li id="spSpaceCreateItem" class="xitem space"> | ||
359 | <div class="xitemcontainer"> | ||
360 | <div id="spSpaceCreateLabel" class="spSpaceName"><a href="$xwiki.getURL('XWiki.CreatePage', 'view', 'tocreate=space')" onclick="toggleClass($('spSpaceCreateForm'), 'hidden'); return false;">$msg.get('xe.spaces.createspace')</a></div> | ||
361 | <div class="spacer"> </div> | ||
362 | <div id="spSpaceCreateForm" class="hidden"> | ||
363 | <form method="post" action="$doc.getURL('view', 'xpage=create')"> | ||
364 | <div> | ||
365 | <input name="tocreate" type="hidden" value="space" /> | ||
366 | #set($newSpaceName = $msg.get('xe.spaces.createspace.defaultname')) | ||
367 | <label class="hidden" for="spSpaceCreateTextInput">$newSpaceName</label> | ||
368 | <input id="spSpaceCreateTextInput" type="text" name="title" value="$newSpaceName" class="panelinput" onfocus="if(this.value=='$newSpaceName') this.value=''" onblur="if(this.value=='') this.value='$newSpaceName'" /> | ||
369 | <input type="submit" value="$msg.get('xe.spaces.createspace.submit')" /> | ||
370 | </div> | ||
371 | </form> | ||
372 | </div> | ||
373 | <div class="spacer"> </div> | ||
374 | </div> | ||
375 | </li> | ||
376 | #end | ||
377 | </ul> | ||
378 | {{/html}} | ||
379 | {{/velocity}} | ||
380 | {{/code}} | ||
381 | |||
382 | {{/spoiler}} | ||
383 | |||
384 | * **Для решения проблемы (oracle-related) с показом аттачей в Document Index (страница Main.AllDocs)** на закладке files (Файлы) следует на странице ##XWiki.AllAttachmentsResults## поменять: | ||
385 | #else #set($sql = "and lower(doc.fullName) <> ’’ ") #end | ||
386 | на | ||
387 | #else #set($sql = "and lower(doc.fullName) is not NULL") #end | ||
388 | |||
389 | * **Аттачи-файлы MS Office 2007 и OpenOffice в IE сохраняются как zip-архивы (с расширением zip).** Проблема имеет место только в IE. Решение такое - в файл web.xml, который лежит в папке WEB-INF приложения добавить в соответствующем месте (поискать по ##mime##): | ||
390 | |||
391 | {{spoiler title="Кликните здесь, чтобы просмотреть полный текст"}} | ||
392 | {{code language="none"}} | ||
393 | <!-- Added mime-types for MS Office 2007 and OpenOffice formats because IE have bug and without these additional params saves files as zip --> | ||
394 | |||
395 | <mime-mapping> | ||
396 | <extension>docm</extension> | ||
397 | <mime-type>application/vnd.ms-word.document.macroEnabled.12</mime-type> | ||
398 | </mime-mapping> | ||
399 | |||
400 | <mime-mapping> | ||
401 | <extension>docx</extension> | ||
402 | <mime-type>application/vnd.openxmlformats-officedocument.wordprocessingml.document</mime-type> | ||
403 | </mime-mapping> | ||
404 | |||
405 | <mime-mapping> | ||
406 | <extension>dotm</extension> | ||
407 | <mime-type>application/vnd.ms-word.template.macroEnabled.12</mime-type> | ||
408 | </mime-mapping> | ||
409 | |||
410 | <mime-mapping> | ||
411 | <extension>dotx</extension> | ||
412 | <mime-type>application/vnd.openxmlformats-officedocument.wordprocessingml.template</mime-type> | ||
413 | </mime-mapping> | ||
414 | |||
415 | <mime-mapping> | ||
416 | <extension>ppsm</extension> | ||
417 | <mime-type>application/vnd.ms-powerpoint.slideshow.macroEnabled.12</mime-type> | ||
418 | </mime-mapping> | ||
419 | |||
420 | |||
421 | <mime-mapping> | ||
422 | <extension>ppsx</extension> | ||
423 | <mime-type>application/vnd.openxmlformats-officedocument.presentationml.slideshow</mime-type> | ||
424 | </mime-mapping> | ||
425 | |||
426 | |||
427 | <mime-mapping> | ||
428 | <extension>pptm</extension> | ||
429 | <mime-type>application/vnd.ms-powerpoint.presentation.macroEnabled.12</mime-type> | ||
430 | </mime-mapping> | ||
431 | |||
432 | |||
433 | <mime-mapping> | ||
434 | <extension>pptx</extension> | ||
435 | <mime-type>application/vnd.openxmlformats-officedocument.presentationml.presentation</mime-type> | ||
436 | </mime-mapping> | ||
437 | |||
438 | |||
439 | <mime-mapping> | ||
440 | <extension>xlsb</extension> | ||
441 | <mime-type>application/vnd.ms-excel.sheet.binary.macroEnabled.12</mime-type> | ||
442 | </mime-mapping> | ||
443 | |||
444 | |||
445 | <mime-mapping> | ||
446 | <extension>xlsm</extension> | ||
447 | <mime-type>application/vnd.ms-excel.sheet.macroEnabled.12</mime-type> | ||
448 | </mime-mapping> | ||
449 | |||
450 | |||
451 | <mime-mapping> | ||
452 | <extension>xlsx</extension> | ||
453 | <mime-type>application/vnd.openxmlformats-officedocument.spreadsheetml.sheet</mime-type> | ||
454 | </mime-mapping> | ||
455 | |||
456 | |||
457 | <mime-mapping> | ||
458 | <extension>xps</extension> | ||
459 | <mime-type>application/vnd.ms-xpsdocument</mime-type> | ||
460 | </mime-mapping> | ||
461 | |||
462 | |||
463 | <mime-mapping> | ||
464 | <extension>odt</extension> | ||
465 | <mime-type>application/vnd.oasis.opendocument.text</mime-type> | ||
466 | </mime-mapping> | ||
467 | |||
468 | |||
469 | <mime-mapping> | ||
470 | <extension>ott</extension> | ||
471 | <mime-type>application/vnd.oasis.opendocument.text-template</mime-type> | ||
472 | </mime-mapping> | ||
473 | |||
474 | |||
475 | <mime-mapping> | ||
476 | <extension>odg</extension> | ||
477 | <mime-type>application/vnd.oasis.opendocument.graphics</mime-type> | ||
478 | </mime-mapping> | ||
479 | |||
480 | |||
481 | <mime-mapping> | ||
482 | <extension>otg</extension> | ||
483 | <mime-type>application/vnd.oasis.opendocument.graphics-template</mime-type> | ||
484 | </mime-mapping> | ||
485 | |||
486 | |||
487 | <mime-mapping> | ||
488 | <extension>odp</extension> | ||
489 | <mime-type>application/vnd.oasis.opendocument.presentation</mime-type> | ||
490 | </mime-mapping> | ||
491 | |||
492 | |||
493 | <mime-mapping> | ||
494 | <extension>otp</extension> | ||
495 | <mime-type>application/vnd.oasis.opendocument.presentation-template</mime-type> | ||
496 | </mime-mapping> | ||
497 | |||
498 | |||
499 | <mime-mapping> | ||
500 | <extension>ods</extension> | ||
501 | <mime-type>application/vnd.oasis.opendocument.spreadsheet</mime-type> | ||
502 | </mime-mapping> | ||
503 | |||
504 | |||
505 | <mime-mapping> | ||
506 | <extension>ots</extension> | ||
507 | <mime-type>application/vnd.oasis.opendocument.spreadsheet-template</mime-type> | ||
508 | </mime-mapping> | ||
509 | |||
510 | |||
511 | <mime-mapping> | ||
512 | <extension>odc</extension> | ||
513 | <mime-type>application/vnd.oasis.opendocument.chart</mime-type> | ||
514 | </mime-mapping> | ||
515 | |||
516 | |||
517 | <mime-mapping> | ||
518 | <extension>otc</extension> | ||
519 | <mime-type>application/vnd.oasis.opendocument.chart-template</mime-type> | ||
520 | </mime-mapping> | ||
521 | |||
522 | |||
523 | <mime-mapping> | ||
524 | <extension>odi</extension> | ||
525 | <mime-type>application/vnd.oasis.opendocument.image</mime-type> | ||
526 | </mime-mapping> | ||
527 | |||
528 | |||
529 | <mime-mapping> | ||
530 | <extension>oti</extension> | ||
531 | <mime-type>application/vnd.oasis.opendocument.image-template</mime-type> | ||
532 | </mime-mapping> | ||
533 | |||
534 | |||
535 | <mime-mapping> | ||
536 | <extension>odf</extension> | ||
537 | <mime-type>application/vnd.oasis.opendocument.formula</mime-type> | ||
538 | </mime-mapping> | ||
539 | |||
540 | |||
541 | <mime-mapping> | ||
542 | <extension>otf</extension> | ||
543 | <mime-type>application/vnd.oasis.opendocument.formula-template</mime-type> | ||
544 | </mime-mapping> | ||
545 | |||
546 | |||
547 | <mime-mapping> | ||
548 | <extension>odm</extension> | ||
549 | <mime-type>application/vnd.oasis.opendocument.text-master</mime-type> | ||
550 | </mime-mapping> | ||
551 | |||
552 | <mime-mapping> | ||
553 | <extension>oth</extension> | ||
554 | <mime-type>application/vnd.oasis.opendocument.text-web</mime-type> | ||
555 | </mime-mapping> | ||
556 | {{/code}} | ||
557 | {{/spoiler}} | ||
558 | |||
559 | * **Проблемы с импортом xar-файлов, проявляющиеся на версиях XWiki 2.3, 2.4 на Glassfish v.3** (выдается ошибка: //number 0 in 11: Uncaught exception Wrapped Exception: org.apache.commons.codec.binary.Base64)//, связаны с тем, что Glassfish и XWiki имеют разные версии одной и той же библиотеки. Для решения проблемы следует скопировать файл ##commons-codec-1.4.jar## из ##\xwiki\WEB-INF\lib## в папку ##\glassfishv3\glassfish\modules## а оттуда удалить ##commons-codec-repackaged.jar##. //Вроде бы данная проблема будет решена в XWiki 2.5 и замены библиотеки не потребуется.// | ||
560 | |||
561 | * **Ограничение в 10MB для upload-а**. В XWiki имеется ограничение на upload. Для его регулирования следует: | ||
562 | ** edit the XWiki.XWikiPreferences class and add a NumberProperty field of type long, named upload_maxsize; if the field already exists, you can skip this step | ||
563 | ** edit the XWiki.XWikiPreferences object and specify the desired maximum attachment size (in bytes) | ||
564 | |||
565 | == Настройка LDAP-идентификации == | ||
566 | |||
567 | //Включение LDAP-идентификации в XWIki обеспечивает идентификацию пользователей через внешние системы идентификации, например Windows Active Directory. В данном примере рассмотрен самый простой случай, когда все пользователи домена получают возможность стать пользователями XWiki. В процессе настройки требуются дополнительные LDAP-утилиты, а сама же настройка выполняется путем редактирования параметров ##xwiki.cfg##.// | ||
568 | |||
569 | === LDAP-утилиты === | ||
570 | |||
571 | * **LDAP Explorer Tool** - этой утилиты в принципе будет достаточно. | ||
572 | ** Утилита, устанавливаемая в Windows стандартным образом. После инсталляции запускаем иконку приложения. Откроется окно программы. Для использования - необходимо выполнить настройку подключения к серверу LDAP. | ||
573 | ** Для этого открываем меню ##File## и дальше ##Configurations##, ##New##. | ||
574 | ** На закладке ##Configuration## даем какое-нибудь имя данной конфигурации, т.к. программа позволяет хранить несколько конфигураций подключения. | ||
575 | ** На следующей закладке ##Server##, в поле ##Server Name## указываем имя домен-контроллера Active Directory. Параметры ##Server port##, ##Server SSL port## и ##Version## оставляем без изменений. Нажимаем ##Test## для проверки. | ||
576 | ** Далее переходим на закладку ##Connection##. Т.к. у Active Directory запрещен анонимный доступ, то ввводим ##User DN## - это может быть обычный domain user. Нажимаем галочку ##Store password## и в поле ##Password## вносим пароль этого пользователя. Параметры ##Use SSL port## и ##Use TLS## - не меняем. Ключевое поле - Base DN. Сюда следует заполнить полное имя вашего домена в транскрипции LDAP. Там есть кнопка ##Guess value##, которая пытается сама заполнить это поле, но делает это направильно. Пример правильной записи: для домена ##internal.moldtelecom.md## - ##DC=internal,DC=moldtelecom,DC=md##. После заполнения этого поля жмем Test Connection. На этом создание новой конфигурации закончено - остальные закладки трогать не требуется. В отдельном окне выбора конфигураций выбираем из списка созданную нами конфигурацию и жмем ##Open##. Утилита готова к работе. | ||
577 | //Плюс утилиты в простоте, минус в том, что значения из нее не копируются в буфер обмена.// | ||
578 | |||
579 | * **LDAP Browser/Editor** - утилита примерно по функциональности соответствует LDAP Explorer Tool, однако это java-аплет, соответственно установки нет - просто распаковываем. Необходимо также откорректировать bat-файл, указав точный путь к JAVA_HOME (куда установлена java). Запускать через этот-же bat-файл. | ||
580 | //Утилита более сложна, больше настроек, они более напонятны. Зато возможен не только просмотр LDAP но и редактирование (если соответствующие права есть), а также выгрузка информации в файлы и в буфер обмена.// | ||
581 | |||
582 | * **Windows Server 2003 Administration Tools** - предоставляет ряд административных windows-аплетов для работы с Active Directory. LDAP-структуру (т.е. структуру Active Directory) можно просматривать через ##Active Directory Users and Computers##. | ||
583 | //Красиво все видно, но не показывает имена узлов LDAP-directory в полной транскрипции. С этой точки зрения безполезна.// | ||
584 | |||
585 | * **Softerra LDAP Browser 2.6** - приложение, аналогично LDAP Explorer Tool, позволяющее осуществлять коннект, просмотр и выгрузку LDAP-директории. Очень мощный интерфейс (пожалуй самый развитый из всех утилит), удобные возможности по выгрузке информации. | ||
586 | |||
587 | * **Wireshark** - Собственно говоря, не LDAP утилита, а снифер сетевых пакетов. Может понадобиться в случае, если возникли проблемы с коннектом к LDAP из XWiki, позволяет точно отследить, что передается и что получается в ответ (используя фильтр по протоколу LDAP). | ||
588 | |||
589 | === Установка LDAP-параметров === | ||
590 | |||
591 | * Открываем WEB-INF\xwiki.cfg и находим в нем раздел LDAP, в котором сосредоточены все параметры, которые нам требуется заполнить. | ||
592 | |||
593 | * Сначала включаем LDAP-идентификацию: ##xwiki.authentication.ldap=1##. | ||
594 | |||
595 | * Далее фиксируем IP-адрес сервера LDAP и TCP/IP порт. Адрес сервера LDAP узнайте заранее - для Active Directory это адрес Domain Controller и порт по умолчанию - 389. Адрес определяется через параметр ##xwiki.authentication.ldap.server=##, а порт - ##xwiki.authentication.ldap.port=389##. | ||
596 | |||
597 | * Затем нужно записать пользователя и пароль, посредством которого XWiki будет делать запросы к LDAP-серверу, т.к. обычно в Active Directory анонимный доступ закрыт. Имя пользователя определяется через параметр ##xwiki.authentication.ldap.bind_DN=##, а пароль - ##xwiki.authentication.ldap.bind_pass=##. | ||
598 | Однако записывается не просто имя пользователя, а соответствующая полная //транскрипция// имени в рамках LDAP. Поэтому находим этого пользователя в директории LDAP посредством утилиты LDAPExplorerTool (например), встаем в левой части окна на данного пользователя, а в правой части - видим его полное имя в транскрипции LDAP. Должно быть что-то вроде ##CN=Unisim,OU=Users TEMP,DC=internal,DC=moldtelecom,DC=md##. Но вообще правильнее передавать не фиксированное имя (чтобы не писать личный пароль), а передавать логин и пароль текущего пользователя, который пытается войти в систему. Для этого следует записать (замените ##internal## на название вашего домена): | ||
599 | |||
600 | {{code language="none"}} | ||
601 | xwiki.authentication.ldap.bind_DN=internal\\{0} | ||
602 | xwiki.authentication.ldap.bind_pass={1} | ||
603 | {{/code}} | ||
604 | |||
605 | * Необязательно. Для следующего параметра ##xwiki.authentication.ldap.validate_password=## устанавливаем значение ##1##. | ||
606 | |||
607 | * Далее 2 параметра ##xwiki.authentication.ldap.user_group=## и ##xwiki.authentication.ldap.exclude_group=## можно пропустить, т.к. мы не будем устанавливать ограничений по LDAP-группам. | ||
608 | |||
609 | * Затем следует указать базовый домен для поиска. Это устанавливается параметром ##xwiki.authentication.ldap.base_DN=##. Аналогично имени пользователя, имя домена должно быть записано через полную транскрипцию LDAP. Находим это имя в утилите LDAPExplorerTool (например), встав на самый верхний уровень дерева в левой части окна утилиты - в правой части видим полное имя домена. Должно получиться что-то вроде ##DC=internal,DC=moldtelecom,DC=md##. | ||
610 | |||
611 | * Следующий важный параметр ##xwiki.authentication.ldap.UID_attr=##, который означает - какое свойство LDAP-директории будет браться в качестве имени пользователя в XWiki. Обычно это ##CN##, но для Active Directory следует брать свойство ##sAMAccountName##. На этом настройку LDAP в XWiki можно считать завершенной. | ||
612 | |||
613 | //Примечания~:// | ||
614 | |||
615 | * //XWiki поддерживает также множество других интересных и в некоторых случаях нужных опций при работе с LDAP. Например, опция, определяющая какую информацию брать из LDAP (по умолчанию имя, фамилия и e-mail), или опция, позволяющая установить или снять возможность обновления информации о пользователе в xwiki из LDAP и другие. Однако, по умолчанию, данные настройки можно не менять. Все и так работает.// | ||
616 | * //Следует быть внимательными к параметрам пользователя (имени, фамилии, e-mail). Так как теперь эта информация будет браться и обновляться из LDAP (т.е. из Active Directory) надо быть уверенным, что в Active Directory все прописано правильно (особенно актуально для e-mail - а то не будут приходить настроенные уведомления по списку слежения xwiki).// | ||
617 | * //В самой XWiki возможность изменения e-mail через редактирование профиля отсутствует (до версии 2.4). Для того чтобы это все-таки сделать, следует страницу пользователя именно открыть, а не нажимать на ##Edit##, и далее выбрать ##Object Editor##, дальше выбрать объект с типом XWiki.XWikiUsers и уже его редактировать. Откроется страница с перечнем полных параметров пользователя, в т.ч. e-mail.// |