Last modified by Eugen Colesnicov on 2010/09/14 09:22

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