Gorazd Editor

Приложение было создано в рамках проекта «ГОРАЗДЪ: Цифровой портал старославянского языка» (проект реализован в рамках программы NAKI II Министерства культуры Чешской Республики, DG16P02H024, 2016-2020). Веб-приложение Gorazd Editor используется для исправления и редактирования словарных статей, хранящихся в виде XML-файлов Gorazd (схема XSD XML-файла Gorazd: http://gorazd.org/sites/default/files/software/gXML.zip) в системе управления Invenio (https: //invenio-software.org), включая вспомогательные файлы MARC XML для управления данными. Для управления доступом к данным пользователи Invenio могут использоваться разные роли (редактор, корректор, администратор и т. д.), на основании которых осуществляется управление данными.

Установка

Для запуска приложения Gorazd Editor необходимо установить Inveniо, следовательно, запустить приложение можно только на оборудовании, на котором установлена данная программа. Gorazd Editor распространяется в виде исходных файлов для загрузки в Invenio версии 1.2.

Требования:

  • PHP 5.x - базовая установка, а также библиотека для работы с XSL и XML
  • MySQL
  • Invenio v. 1.2

Пошаговая инструкция:

1) Копирование исходных файлов в Gorazd Editor в веб-пространство сервера.

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

2) Конфигурация MySQL.

Используя любой инструмент для доступа к MySQL, напр. PhpMyAdmin, Workbench ... подключаемся к MySQL. Создаем новую базу данных с именем, в нашем случае, - «gorazd_editor». В созданную базу данных осуществляем импорт. Во вкладке Import выбираем оба прикрепленных к редактору файла, содержащие структуру необходимых для редактора таблиц. После успешного импорта в новой базе данных должны появиться две таблицы "editor_cache" и "editor_clipboard".

3) Создание пользователя в MySQL с доступом к новой базе данных.

Редактор Gorazd не требует больших прав, чем полное редактирование таблиц editor_cache и editor_clipboard.

4) Собственная конфигурация редактора.

В файле «mysql_config.php» заполните поля «username» (имя нового пользователя редактора), «password» (пароль нового пользователя редактора), «dbname» (имя новой базы данных, в нашем случае – «gorazd_editor»).

Настройка редактора:

При изменении названий папок или файлов необходимо отразить данные изменения в соответствующих файлах:

  1. Папка или файлы из папки „css“ и „js“ – отразить в „index.html“.
  2. Папка или файлы из папки „xsl“ и „xsd“ – отразить в „/js/vars.js“ a „xml_xsl.php“.
  3. Папка или файлы из папки „fonts“, „img“ - отразить в „index.html“ и файлах папки „css“.
  4. Файл „xml_xsl.php - отразить в „/js/var.js“.

Общая структура приложения Gorazd Editor:

| editor.html – главный HTML файл, содержащий полную структуру
| gorazd_status_set.php – файл, позволяющий Inveniо менять состояние копий
| mysql_config.php – файл, содержащий конфигурацию редактора для доступа в MySQL
| xml_xsl.php – файл, обеспечивающий коммуникацию JavaScript с MySQL и Inveniо, проводит преобразования
|
+---css – папка, содержащая все используемые в редакторе стили
| | blocks.css – стили внутренней организации записи, стили блоков
| | fonts.css – определение шрифтов и путей
| | global.css – глобальные стили редактора
| | loader.css – стили загрузки
| | material_icons.css – стили для иконок
| | split_move.css – стили прокрутки
| | virtual_keyboard.css – стили для виртуальной клавиатуры
| |
| \---jquery – папка с видами библиотеки jQuery
| | jquery-ui.css
| |
| \---images
| ui-bg_flat_0_aaaaaa_40x100.png
| ui-bg_flat_75_ffffff_40x100 (1).png
| ui-bg_flat_75_ffffff_40x100.png
| ui-bg_glass_65_ffffff_1x400.png
| ui-bg_glass_75_dadada_1x400.png
| ui-bg_glass_75_e6e6e6_1x400.png
| ui-icons_222222_256x240 (1).png
| ui-icons_222222_256x240.png
| ui-icons_454545_256x240.png
| ui-icons_888888_256x240.png
|
+---fonts – папка, содержащая все шрифты, необходимые для правильного отображения в редакторе
| arial_narrow.ttf
| BukyVede-Bold.ttf
| BukyVede-Italic.ttf
| BukyVede-Regular.ttf
| CB10U.TTF
| FreeSerif.otf
| FreeSerifBold.otf
| FreeSerifBoldItalic.otf
| FreeSerifItalic.otf
| material_icons.woff2
|
+---img – папка, содержащая анимацию для загрузки
| loader_large.gif – анимация загрузки (крупная)
| loader_small.gif – анимация загрузки (мелкая)
|
+---js – папка с файлами JavaScript
| | blocks.js – файл для работы и отображения блоков записей
| | dialogs.js – файл для обслуживания диалогов и связанных с ними функций
| | divs.js – файл с определениями для маркировки тегов
| | events.js – для обслуживания главных событий редактора
| | FileSaver.js
| | history.js – файл для обслуживания перемещений и сохранения истории редактирования
| | key_binding.js – файл, обслуживающий сочетания клавиш и связанные с этим функции
| | loader.js – файл, служащий для отображения и скрытия загрузки анимации
| | main_func.js – файл, содержащий главные функции редактора
| | menu.js – файл, служащий движению исходного меню в Inveniо
| | reqs.js – файл, содержащий все вызовы PHP-файлов и связанные с ними функции
| | selects.js – файл, обслуживающий функциональность всех выпадающих меню
| | select_vars.js – файл, содержащий списки и значения для всех раскрывающихся меню
| | split_move.js – файл, обеспечивающий передвижение и работу полосы прокрутки
| | vars.js – файл с путями и определениями для редактора
| | virtual_keyboard.js – файл, обеспечивающий работу виртуальной клавиатуры
| | virtual_keyboard_keys.js – файл, содержащий все клавиши виртуальной клавиатуры
| | xsl.js – файл для обслуживания преобразований и связанных с ними функций
| | zoom_menu.js – файл для обслуживания приближения/удаления в редакторе
| |
| \---jquery – папка, содержащая JavaScript-файлы библиотеки jQuery
| jquery-1.10.2.js
| jquery-1.11.3.min.js
| jquery-migrate-1.2.1.min.js
| jquery-ui.js
| jquery.hotkeys.js
| jquery.jeditable.mini.js
|
+---xsd – папка, содержащая все XSD-файлы редактора
| gXML.xsd
| gXML_MS.xsd
| gXML_RSI.xsd
| tree.txt
|
\---xsl – папка, содержащая все преобразования, возможные в редакторе
dzarog-part1.xsl
dzarog-part2.xsl
dzarog-part2_RSI.xsl
dzarog-part3.xsl
dzarog-part3_MS.xsl
dzarog-part3_RSI.xsl
gorazd.xsl
gorazd_MARC.xsl
gorazd_MARC_RSI.xsl
gorazd_MS.xsl
gorazd_RSI.xsl
gxmlpreview1.xsl
gxmlpreview2.xsl

Главные файлы редактора:

  • файл „key_binding.js“ – отвечает за сочетания клавиш и их работу в редакторе
  • файл „select_vars.js“ – содержит списки и значения для всех раскрывающихся меню в редакторе
  • файл „virtual_keyboard_keys.js“ – содержит клавиши для виртуальной клавиатуры редактора
  • файл „editor.html“ – главный отображающий файл редактора
  • файл „mysql_config.php“ – конфигурация для доступа редактора к MySQL

Редактирование системы Invenio

Для функции редактора Gorazd Editor необходимо отредактировать и развернуть систему Invenio. Большинство настроек на странице Inveniо представляют собой прямое изменение в коде редактора массовых записей, который поставляется с Inveniо. Основная цель модификаций состоит в том, чтобы сделать возможным использование Inveniо в качестве хранилища данных с контролем версий. Таким образом, каждая запись в Inveniо имеет форму метаданных, которые извлекаются из Gorazd XML с помощью XSL-преобразования. Сам Gorazd XML затем присоединяется к этим метаданным в виде полнотекстового стандарта Invenio. На уровне реализации данная функция обеспечивается сохранением Gorazd XML из запроса POST в подкаталог в каталоге CFG_UPLOAD_DIR, который по умолчанию установлен в / opt / invenio / var / upload. Файл назван с использованием метки времени. Подкаталог также содержит информацию о пользователе, который произвел сохранение, и о сокращении записи Inveniо, в которой хранятся данные. Поскольку Invenio изначально не предназначен для редактирования данных в режиме реального времени, необходимо создавать не только файл MARX XML с тегами FFT для каждого хранилища данных (файл с префиксом gorazdSubmit_fft), который является стандартным способом загрузки полнотекстовых файлов в Invenio, но также два других файла (префиксы gorazdSubmit_marc и gorazdSubmit_fix) со специальными тегами, обеспечивающими согласованность полнотекстовых данных, метаданных в базе данных Invenio и метаданных, представленных пользователю Invenio. Обработка этих четырех файлов Invenio выполняется путем вызова программы bibupload с соответствующими параметрами. Invenio сохранит и создаст версию полнотекстового Gorazd XML в каталоге / opt / invenio / var / data / files, а, также, в соответствии c вашей базой данных и вашей средой представления информации.

Чтобы повысить надежность редактора, был добавлен пользовательский кэш базы данных SQL, который частично обрабатывается самим редактором и частично bibtasklet bst_aip_unlock, вызываемым Inveniо в момент, когда заканчивается обработка записи на странице Inveniо.

gorazdedit_template.py

  • Invenio записывает сам редактор Gorazd, написанный на HTML и Javascript.

gorazdedit_webinterface.py

  • предоставляет права (под ключом rungorazdedit) на запуск редактора Gorazd для пользователя и указывает URL-адрес, присваемый редактору Gorazd.

webaccount.py

  • добавлены права rungorazdedit для суперадмина.

access_control_config.py

  • добавлена возможность назначать права на запуск Gorazd Editor (rungorazdedit).

bibsched_tasklets/bst_aip_unlock.py

  • Bibtasklet (см. документацию Inveniо) для очистки кэш редактированной записи, которая была отменена пользователем. Это разблокирует запись для других пользователей.

gorazdedit_engine.py

  • Основной код, определяющий файлы Javascript, которые будут предоставлены редактору Gorazd и обработка запросов AJAX.

Редактор связывается с Inveniо с помощью запросов AJAX и использует новые добавленные записи в дополнение к стандартному редактору записей:

saveXML

  • Сохраняет переданный файл XML в CFG_UPLOAD_DIR / email / recid / .xml и возвращает JSON в виде {"status": "OK", "filename": }. Если возникает ошибка, {"status": " Chyba pri ukladani: chybi GORAZD XML"}.

submit_gorazdXML

  • Подготавливает три MARC XML, которые будут загружены в очередь bibsched при помощи утилиты bibupload. Первый файл - FFT, загружающий переданный Gorazd XML. Второй MARC, содержащий новые метаданные, полученные из переданного XML-файла Gorazd с помощью соответствующего XSL-преобразования. Третий и последний - FIX, обеспечивающий согласованность метаданных (см. Inveniо, FFT с поддокументацией FIX-MARC). Эта последняя bibupload содержит вызов bst_aip_unlock bibtasklet, который разблокирует кэш в базе данных редактора. Если отправленный запрос содержит переменную «type», установленную в «clone», новый rec_id будет зарезервирован и в дополнение к bibupload трех XML-файлов MARC, bibindex и webcoll будут добавлены в очередь bibsched, чтобы переиндексировать базу данных и заново создать предварительный просмотр HTML.

get_latest_version

  • отсылает к последней версии gorazdXML, прикрепленной к документу с заданным recID в форме JSON {'latest_version': TODO, 'gorazd_paths': full_path}. В случае ошибки {'latest_version': 'ERROR', 'gorazd_path': 'ERROR'}.

getUserInfo

  • отсылает JSON, содержащий информацию о текущем вошедшем в систему пользователе {'userInfo': USER_INFO}.

bibsched_restarter.py

  • Иногда работа Inveniо заканчиваются неопределенной ошибкой, причина которой не может быть установлена. Как правило, достаточно повторно инициализировать задачу, и ошибка больше не повторится. Данный скрипт проверяет наличие ошибок в задачах, и, если они обнаружены, реинициализирует их и ожидает 60 секунд для проведения повторной проверки. Если ошибки возникают повторно, администратору сервера направляется электронное письмо с темой «Отчет о повторном выполнении задачи gorazd.org: ОШИБКИ». Если в задании ошибок нет, тема электронного письма выглядит как «Отчет о повторном выполнении задачи gorazd.org». В письме содержится список задач, которые были (или находятся) в состоянии ошибки.
  • запустить под www-data:
    • watch -n 300 /opt/invenio/bin/bibtask_restarter
    • /opt/invenio/bin/bibsched start

search_engine.py

  • добавлена библиотека icu (URL), используемая для сортировки старославянских слов. Данный код используется поисковыми модулями Inveniо.

bibsort_engine.py

  • добавлен старославянский язык, реализован в search_engine.py.

supervisors_engine.py

  • добавлена библиотека, чтобы помочь контролировать работу пользователей для выбранным супервизорам.

bfe_aip_status.py

  • добавлена библиотека для отображения статуса редактируемой записи.

Запуск

После установки и настройки редактора вы можете начать тестирование и запуск. Для запуска редактора требуется войти в Inveniо. После входа в систему пользователь ищет запись (словарную статью), которую он хочет запустить в редакторе. После нажатия на заголовок в списке результатов поиска в новой вкладке браузера открывается окно с редактором. Редактор выглядит как окно, разделенное на две равные половины. В левой половине представлена статья (если существует), в правой части - редактирование статьи. Если редактор отображается без предупреждений или ошибок, установку и настройку можно считать успешными и можно перейти непосредственно к редакции.

Лицензия

Приложение распространяется на основе открытой лицензией GNU GPL v3. Редактируя исходный код, приложение можно использовать для редактирования статей в других словарях. Авторы приложения будут благодарны за сообщение об использовании исходного кода этого приложения или его частей в других проектах посредством е-мейла на адрес gorazd@slu.cas.cz.

Установочный пакет:

Gorazd Editor 1.0: http://gorazd.org/sites/default/files/software/gorazd_editor-1.zip

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

  • Mgr. Vít Tuček, Ph.D. (программист)
  • Mgr. Olga Čiperová (аналитик развития)
  • Bc. Martin Majer (менеджер по развитию)
  • PhDr. Štefan Pilát, Ph.D. (консультант по развитию)

© 2018, Славянский институт АН ЧР