В первой части статьи я рассказывал о том как сделать стандартный интерфейс более комфортным, однако с тех пор утекло достаточно воды, что бы вышли как новые версии xWiki-движка, так и поменялся интерфейс в сторону улучшения юзабилити. По этому в новой статье я предлагаю обсудить тюнинг и более тонкую настройку xWiki для портативного клиента (на базе связки Jetty и HSQLDB). Оговорюсь сразу, я не считаю это лучшей реализацией из возможных, но учитывая удобство развертывания портативной версии (скопировал в нужную паку и запустил), считаю что для индивидуальной работы или работы небольшого коллектива в спартанских условиях — это лучший вариант.
Добро пожаловать под Cut
Экспозиция
Сперва несколько замечаний:
1. Для того что бы xWiki запустилась необходимо что бы на ПК используемого в качестве хоста была установлена Java
2. Портативная версия, о настройке которой пойдет речь, запускается как на ПК под управлением Windows, так и Linux, однако в паре моментов, о которых будет оговорено отдельно, тюнинг будет отличаться.
3. На взгляд автора, исходя из его эмпирического опыта, для комфортной работы отдельно выделенному хосту желательно иметь отдельно выделенный двух-ядерный процессор семейства Intel/AMD и оперативной памяти не менее 3-4Гб, или аналогично настроенную виртуальную машину). В случае если хост это ПК/ноутбук для офисной работы, то рекомендую оперативную память проапгрейдить минимум до 4Гб, а так же поставить процессор i3 (или его аналог) или выше.
4. Для корректного внесения изменения в файлы конфигураций wiki-движка использовать Notepad++ или аналогичный.
5. После каждого изменения рекомендую делать промежуточный бэкап версий, на всякий случай.
6. Программа настраивалась под себя, для удобства структурирования результатов работы инженером ПТО/сметчиком.
Завязка
Скачать последнюю, на момент написания статьи, версию XWiki можно по следующей ссылке:
enterprise.xwiki.org/xwiki/bin/view/Main/Download
Для начала работ по настройке и тюнингу необходимо распаковать файлы из архива ZIP в корень диска (также рекомендуется переименовать папку до более короткого пути, например так: «D:\xwiki»).
DIR data_____________Данные и БД
DIR jetty_____________Jetti
DIR META-INF_________Лицензия и замечания по ПО
DIR webapps__________движок xWiki
start_xwiki.bat
start_xwiki.sh
start_xwiki_debug.bat
start_xwiki_debug.sh
stop_xwiki.bat
stop_xwiki.sh
Запуск осуществляется файлом start_xwiki.bat для Windows (start_xwiki.sh для Linux через терминал), в котором уже прописаны все необходимые настройки. Окно консоли при этом рекомендуется свернуть. Теперь нам необходимо открыть окно web-браузера (окно консоли при этом закрывать категорически не рекомендуется), и ввести указанный URL из консоли (терминала), вида: http://localhost:8080/xwiki/bin/view/Main/
Теперь можно работать
Логин и пароль администратора по умолчанию:
Login: Admin
Password: admin
Развитие
Первым делом мы меняем расположение хранение вложенных файлов с БД на файловую систему, для этого необходимо внести изменения в xwiki.cfg (..\webapps\xwiki\WEB-INF\) (Последовательность символов #-# и # в файлах конфигурации означает комментарий)
xwiki.store.attachment.hint = file
xwiki.store.attachment.versioning.hint = file
xwiki.store.attachment.recyclebin.hint = file
Первая переменная здесь означает что вложения будут писаться на жесткий диск. Вторая означает, что версии вложений так же будут хранится на жестком диске, третья означает что корзина с удаленными файлами так же будет хранится на жестком диске. Минус данного решения состоит в нагрузке на путь к файлам, которые ложатся на файловую систему
Так же в документации на сайте следует замечание, что руками в этой структуре файлов ковыряться не надо, иначе произойдет рассогласование между данными и ссылками, а так же можно получить ошибку.
One of the options to avoid mess with attachments in the filesystem until this bug would be fixed, just turn off recycle bin for attachments at all.
примерный перевод
Существует ошибка в XWiki, которая мешает восстановить удаленные вложения из корзины через пользовательский интерфейс: вы найдете пустой LiveTable. Действие по удалению вложения сбивает счетчик версии документа, поэтому, правильный путь, чтобы восстановить вложение — это откат до нужной версии. Если удалить документ с приложением, а затем нажмите кнопку еще раз, чтобы удалить навсегда удалялись документ из истории, вложенный файл будет удален из системы вместе. Один из вариантов, чтобы избежать путаницы с вложениями в файловой системе, пока эта ошибка не будет исправлена, просто отключить корзины для всех удаленных вложений
Т.к. в пользовательском интерфейсе в корзине удаленные вложения не значатся (к удаляемым страницам это не относится) я рекомендую отключить корзину для удаленных файлов и их версий, пока этот баг не будет исправлен:
storage.attachment.recyclebin=0
xwiki.store.attachment.versioning=0
Для того что бы действие вступило в силу — перезапустить XWiki
Теперь изменяем ограничение в 32Мб на размер вложений, т.к. оно более не актуально, для этого необходимо:
1. Перейти по адресу: http://«yourwiki»/xwiki/bin/edit/XWiki/XWikiPreferences?editor=object
2. Раскрыть список «XWikiPreferences 0»
3. Проскроллировать вниз до пункта «Maximum Upload Size» и изменить его на любое другое значение (в байтах!!!)
4. Проскроллировать вниз до кнопки «Save»
Для того что бы действие вступило в силу — принудительно обновить страницу.
openoffice.autoStart=true
а так же прописать пути к каталогам установленного офисного пакета в следующих переменных:
openoffice.homePath=C:/Users/{user}/AppData/Roaming/openOffice.org/3
openoffice.profilePath=C:/Program Files/OpenOffice.org 3
set XWIKI_OPTS=%XWIKI_OPTS% -Doffice.home=«C:\Program Files\LibreOffice 3.4»
для Linux модифицировать файл start_xwiki.sh
set XWIKI_OPTS=%XWIKI_OPTS% -Doffice.path=/usr/lib/libreoffice/
и перезапустить XWiki.
extensions.xwiki.org/xwiki/bin/view/Main
Установка всех расширений осуществляется из админки. Всего есть 2 способа установит расширение:
1. Зайти в «Administer Wiki» -> «Extension Manager» -> «Add Extensions». Далее вводится в строку для поиска название или часть названия/функционала на латинице и нажимается «Enter», в выведенных результатах, база расширений как и сами расширения находится на сайте XWiki, кликаем «Install», «Continue»
2. Загружаем с сайта файл(ы) с расширением *.xar, заходим в «Administer Wiki» -> «Content» -> «Import», выбираем и загружаем файл, кликаем по нему в окне и следом соглашаемся импортировать.
extensions.xwiki.org/xwiki/bin/view/Extension/Export+All+Attachments
=Export Attachments=
{{info}}
By default, the export is made from the **current database** and from **all spaces**.
{{/info}}
{{velocity}}
{{html}}
; Database:
: />
; Space name:
: />
; Path to directory to write to:
: />
; /> Confirm
: />
{{/html}}
{{/velocity}}
{{groovy}}
import com.xpn.xwiki.*;
import com.xpn.xwiki.api.*;
import com.xpn.xwiki.doc.*;
import org.apache.commons.io.FileUtils;
import java.io.File;
import java.net.URL;
class ExportedAttachments {
static attachmentsNo = 0;
}
// Export attachments
def void exportAttachments(XWikiContext context) {
def dirPath = request.dirpath + "/";
def dir = new File(dirPath);
String hqlDocCount = "select distinct count(doc.name) from XWikiDocument as doc";
String hqlDocList = "select doc.fullName from XWikiDocument as doc";
if(request.spaceName && request.spaceName != ''){
hqlDocCount += " where doc.web='" + request.spaceName + "'";
hqlDocList += " where doc.web='" + request.spaceName + "'";
}
XWiki wiki = context.getWiki();
int total = wiki.getStore().search(hqlDocCount, 0, 0, context).get(0);
println "**" + total + "** documents to search for attachments";
List documentNames = null;
int offset = 0;
while (documentNames == null || documentNames.size() == 100) {
documentNames = wiki.getStore().search(hqlDocList, 100, offset, context);
for (docName in documentNames) {
try {
XWikiDocument doc = context.getWiki().getDocument(docName, context);
exportDocAttachments(doc, dir, context);
} catch (Exception e) {
println "{{error}} Error : " + e + "{{/error}}";
}
}
offset += documentNames.size();
}
println "";
println "((({{info}}Export done.{{/info}})))";
println "**" + ExportedAttachments.attachmentsNo + "** attachments exported.";
}
// Export attachments for the given document
def void exportDocAttachments(XWikiDocument doc, File dir, XWikiContext context) {
if(doc.getAttachmentList().size() > 0){
println "* **" + doc.fullName + "**";
for (XWikiAttachment attach in doc.getAttachmentList()) {
println "** " + attach.filename;
try {
// Create file
File spaceDir = new File(dir, java.net.URLEncoder.encode(doc.web));
File docDir = new File(spaceDir, java.net.URLEncoder.encode(doc.name));
File destinationFile = new File(docDir, java.net.URLEncoder.encode(attach.filename));
def attachmentURL = doc.getExternalAttachmentURL(attach.filename, 'download', context);
// Copy attachment from URL
URL url = new URL(attachmentURL);
FileUtils.copyURLToFile(url, destinationFile);
ExportedAttachments.attachmentsNo++;
}catch(Exception e){
println "{{error}} Error: Could not create file: " + e + "{{/error}}";
}
}
}
}
// Handle request
if(request.confirm && request.dirpath){
// Set database
def currentDatabase = xcontext.getDatabase();
def newDatabase = currentDatabase;
if(request.dbName && request.dbName != ''){
newDatabase = request.dbName
}
xcontext.setDatabase(newDatabase);
println "=Exporting attachments from **" + newDatabase + "** wiki=";
// Export
exportAttachments(xcontext.context);
// Reset database
xcontext.setDatabase(currentDatabase);
}
{{/groovy}}
Удобно для того что бы массово сохранять все вложения в каждой конкретной Wiki/СубWiki. Для этого создается отдельная страница с любым наименованием, затем копируется код, страница сохраняется и в получившейся объекте вручную заполняются поля формы.
Минусы решения — заполнение происходит вручную, из-за того что XWiki работает в кодировке UTF-8 имена файлов на кириллице трансформируются набор букв и цифр, что вызывает неудобства. Как это решить? На текущий момент автор находится в творческом поиске.
Описание на английском доступно по следующей ссылке:
extensions.xwiki.org/xwiki/bin/view/Extension/Lightbox+Macro
Установка и настройка рассматривались в предыдущей статье
Описание на английском доступно по следующей ссылке:
extensions.xwiki.org/xwiki/bin/view/Extension/Task+Manager+Application
Самый что ни наесть менеджер задач. Плюсы в том что бесплатен и, относительно, гибок, минусы упираются в ограничения длины пути для вложенных файлов, из-за чего рекомендуется, если запускать под Windows, имена файлам вложений давать покороче, как и сами названия задач и Project’ов. Так же рекомендуется избегать символа «кавычки», т.к. при редактировании редактор все норовит обрезать имя задачи на конец фразы после первой «кавычки».
Внешнее отображение колонок можно менять, на взгляд автора там несколько больше ненужной для личного пользования информации, а вот важный пункт — "% выполнения" в стандартном отображении отсутствует. Таким образом заходим на страницу Task Manager’а, выбираем Правку страницы обычным редактором, не WYSIWYG и копируем следующий текст:
{{velocity}}
#set ($discard = $services.localization.use('document', 'TaskManager.TaskManagerTranslations'))
#set ($discard = $xwiki.ssfx.use('uicomponents/widgets/userpicker/userPicker.css'))
#set ($columnsProperties = {
'number': {"type":"number","size":10},
'name': {"type":"text","size":10, "link":"view"},
'project': {"type":"list","size":10},
'status': {"type":"list","size":10,"html":true},
'severity': {"type":"list","size":10,"html":true},
'reporter': {"type":"text","size":10,"html":true},
'assignee': {"type":"text","size":10,"html":true},
'duedate': {"type":"text","size":10},
'progress': {"type":"number","size":10, "html":true},
'_actions': {"sortable":false,"filterable":false,"html":true,"actions":["edit","delete"]}
})
#set ($options = {
'className': 'TaskManager.TaskManagerClass',
'resultPage': 'TaskManager.TaskManagerLiveTableResults',
'translationPrefix': 'taskmanager.livetable.',
'tagCloud': true,
'rowCount': 1000,
'maxPages': 100,
'selectedColumn': 'number',
'defaultOrder': 'asc'
})
#set ($columns = ['number', 'name', 'project', 'progress', 'status', 'severity', 'reporter', 'assignee', 'duedate', '_actions'])
#livetable('taskmanager' $columns $columnsProperties $options)
{{/velocity}}
Здесь добавляется поле ‘progress’: ‘progress’: {«type»:«number»,«size»:10, «html»:true},, т.е. прогресс в строке #set ($columns = [‘number’, ‘name’, ‘project’, ‘progress’, ‘status’, ‘severity’, ‘reporter’, ‘assignee’, ‘duedate’, ‘_actions’]) этот параметр добавляется после project, в случае если на Ваш взгляд некоторые колонки лишние, то их отображение можно убрать именно здесь, отредактировав строку.
Чего данный Task Manager не умеет, так это уведомлять о просроченном задании и вообще сигнализировать. Возможно авторы добавят это в следующей версии или выйдет новый Task Manager с улучшенным функционалом. Однако для структурирования информации и общей работы с платформой Wiki — он хорош. Из минусов так же стоит отметить отсутствие WYSIWYG редактора при создании и редактировании задач, однако макросы и код программирования эти страницы выполняют корректно.
Описание на английском доступно по следующей ссылке:
extensions.xwiki.org/xwiki/bin/view/Extension/File+Manager+Application
Вариант для хранения под рукой необходимых файлов — личное/общественное мини-облако. В отличие от Export All Attachments корректно обрабатывает кириллицу при выгрузке файлов на ПК.
Описание на английском доступно по следующей ссылке:
extensions.xwiki.org/xwiki/bin/view/Extension/Diagram+Application
Описание на английском доступно по следующей ссылке:
extensions.xwiki.org/xwiki/bin/view/Extension/Meeting+Application
Планировщик встреч, имеет встроенный графический интерфейс календаря, а так же привязывается картинку из GoogleMaps к месту встречи.
Описание на английском доступно по следующей ссылке:
extensions.xwiki.org/xwiki/bin/view/Extension/MoccaCalendar
Календарь — ежедневник.
extensions.xwiki.org/xwiki/bin/view/Extension/Back+To+Top
При прокрутке текста, занимающего больше одной страницы, в правом нижнем углу окна появляется кнопка «Вверх»
Описание на английском доступно по следующей ссылке:
extensions.xwiki.org/xwiki/bin/view/Extension/Tabs+Macro
Макрос позволяющий добавить в редактируемую страницу вкладки
{{tabs idsToLabels='tabId11=My xwiki-wide tabs, tabId12=My working tabs :)' /}}
(%id="tabId11"%)((({{box cssClass="tabId11div"}}
First tab!
{{/box}}
I can post any content here
)))
(%id="tabId12"%)((({{box cssClass="tabId12div"}}
Second tab!
{{/box}}
And here too
)))
Описание на английском доступно по следующей ссылке:
extensions.xwiki.org/xwiki/bin/view/Extension/Ajax+and+Show+Hide+Macro
Настраиваемый спойлер для текста.
Описание на английском доступно по следующей ссылке:
extensions.xwiki.org/xwiki/bin/view/Extension/Annotations+Application
вместо тысячи слов…
Кульминацияция
XWiki — это вики второго поколения, написанная на на языке Java, лицензия распространения LGPL, функциональность включает в себя блог, инструменты API, комментарии, аутентификацию по LDAP, экспорт страниц в PDF. Используется многими компаниями по всему миру. 25 языков интерфейса, включая русский.
Целью второй статьи является описание настроек для работы в походных условиях, например в командировке. Что необходимо инженеру ПТО? Ноутбук с дисплеем 15", пакет офисных программ, некоторая система для хранения и структурирования информации и, хотя бы на 2-3 часа в день точка доступа в интернет, для приемки и отправки почты. Почему Wiki? Потому что исполнительная документация регулярно правится и переписывается, т.е. требуется версионность, которую легко организовать на жестком средствами ОС, но в то же время комментарии к версиям порой ценнее файлов, а так же необходимо приложение позволяющее вести некоторый дневник событий и микрособытий, что с успехом решают приложения встреч(Calendar) и задач (Task’ов).
Итог работы:
Теперь у нас есть Вики-движок включающий функционал:
— Блога;
— WYSIWIG редактора;
— Галереи изображений;
— Возможности редактирования и создания новых макросов;
— Возможности программирования скриптов (Velocity, Groovy, Python, Ruby and PHP) и поддержки синтаксиса популярных Вики-движков (Confluence, JSPWiki, Creole, MediaWiki, and TWik);
— Календаря и планировщика встреч;
— Менеджера задач;
— Построения диаграмм;
— Интеграцией с Офисными приложений;
— Менеджера файлов.
Спасибо за внимание. 🙂
ссылка на оригинал статьи https://habrahabr.ru/post/279101/
Добавить комментарий