Виджет Rich Text Editor использует два типа бэкенда:
Вы можете задать ссылку на сервис Upload, используя свойство upload:
webix.ui({
type: "space",
cols: [
{
view: "editor",
upload: "path_to_server/images",
},
],
});
Сервис Upload содержит компонент Uploader в режиме apiOnly. Он берет URL для загрузки из конфигурации Rich Text Editor.
После завершения загрузки сервер должен вернуть ссылку на картинку, которая будет использоваться внутри контента Rich Text Editor.
Сервис Backend - это серверная модель, у которой есть методы для запросов на сервер. Ниже вы найдёте полный список методов.
Rich Text Editor позволяет экспортировать контент в форматы .docx, .pdf, .txt и .md и импортировать в форматах .docx, .txt и .md. В зависимости от формата файлов, обрабатывать их можно одним из следующих способов:
Обратите внимание, что парсер формата markdown, используемый в Rich Text Editor, не поддерживает вложенные структуры.
Это означает, что сложные структуры, такие как использование полужирного шрифта внутри текста, выделенного курсивом, или ссылки внутри списка, или многоуровневые списки, не будут работать корректно при вставке, добавлении при помощи метода setValue() (с форматом markdown) или при импорте файла в формате .md.
Для экспорта и импорта файлов можно использовать меню или вызвать методы сервиса Operations:
$$("editor").getService("operations").action("import");
// экспорт
$$("editor").getService("operations").action("pdf"); // "pdf", "docx", "txt", "md"
или методы сервиса Backend:
$$("editor").getService("backend").import();
// экспорт
$$("editor").getService("backend").export("pdf"); // "pdf", "docx", "txt", "md"
Как уже упоминалось выше, форматы .md и .txt обрабатываются на клиенте. В случае работы с форматами .docx и .pdf, все методы, описанные выше, будут
использовать сервер richtext-export, который выполнит обработку и вернет текстовый контент для Rich Text Editor или полученный файл в заданном формате.
Для связи с сервером экспорта Rich Text Editor использует ссылку, которая возвращается методом Backend.getExportImportUrl() (и хранится в Backend.importExportUrl).
getExportImportUrl() {
return "https://docs.webix.com/richtext-export";
}
Если вы не хотите использовать этот дефолтный сервис, здесь вы можете задать ссылку на свой сервис или стороннюю библиотеку.
Логика экспорта и импорта описана ниже:
Backend.import() не требует каких-либо параметров, открывает диалог для загрузки файла. Остальное обрабатывается Webix Uploader. Он отправляет файл в POST-запросе внутри FormData и получает HTML, затем устанавливает его в Rich Text Editor после удаления предыдущего контента. Для файла в формате .docx URL для запроса формируется как Backend.importExportUrl + "/import/docx". Форматы .md и .txt обрабатываются на клиенте.
Backend.export() требует в качестве параметра название типа файла ("pdf" или "docx"), отправляет контент Rich Text Editor в JSON-payload POST-запроса, и ожидает Blob. Этот blob (файл) будет загружен по умолчанию. Форматы .md и .txt обрабатываются на клиенте.
Backend.import() - переопределите этот метод, чтобы изменить URL только для импорта или изменить другие аспекты дефолтной логики, например, добавление поддерживаемых типов файлов для импорта для обработки сторонними библиотеками
Backend.getFileType(mode) - переопределите этот метод, чтобы добавить поддерживаемые типы файлов для uploader
Backend.export() - переопределите этот метод, чтобы изменить URL только для экспорта или другие аспекты дефолтной логики, например, добавление других типов файлов, или изменение способа загрузки файла, и т.д.
Backend.getExportImportUrl() - переопределите этот метод, чтобы изменить ссылку на сервис экспорта/импорта
Переопределите значение локального свойства "Document", чтобы изменить дефолтное имя файла для экспорта.