Теперь ONLYOFFICE может всё: добавляем плагины в редакторы документов
Подробности далее.
Итак, мы решили дать разработчикам возможность добавлять нужную (но не относящуюся напрямую к форматам OOXML) функциональность в редакторы ONLYOFFICE.
Всё началось с одной компании, в которой очень хотели написать собственную кнопку, чтобы генерить контент и вставлять получившиеся данные в редактор. Окей, подумали мы, в этом есть смысл. Есть функциональность, которая нужна только определенным людям и больше никому. Мы не можем сделать всё для всех, но мы можем дать возможность подрубить всё, что нужно. Поэтому вот вам API для работы с редактором, первая версия.
Так и появились плагины.
В них можно использовать код, который мы сами не сможем брать из-за лицензионных ограничений. Мы делаем коммерческий продукт и продаем его, нельзя просто взять и (*в этом моменте автор текста прерывается, чтобы отмахнуться от всплывшего из глубин подсознания призрака Шона Бина) нельзя просто взять и использовать любой код из интернета. То есть, нам нельзя. А вам можно. Те вещи, которые мы по объективным причинам не можем, наши пользователи могут.
Типы плагиновМы делим их на три типа:
Визуальные. Когда мы пользуемся таким расширением редактора, у нас открывается окно и рисуется определенный интерфейс. Например, Главред, который просили наши пиарщики.
Визуальный плагин может менять что-то в самом документе, а может и ничего не менять. Главред ничего не меняет — он лишь подсвечивает определенную часть текста (штампы, лишние слова и пр).
Можно написать плагин, который ищет по Google.Картинкам и вставляет понравившуюся в текст. Этот плагин меняет документ.
Невизуальные. Например, простая кнопка, при нажатии которой производятся манипуляции с документом. Простейший пример такого плагина: расширение, которое при нажатии кнопки добавляет в ваш документ слова Hello World!
(function (window, undefined) {
window.Asc.plugin.init = function () {
var sScript = 'var oDocument = Api.GetDocument();';
sScript += 'var oParagraph = Api.CreateParagraph();';
sScript += 'oParagraph.AddText(\'Hello world!\');';
sScript += 'oDocument.InsertContent([oParagraph]);';
window.Asc.plugin.info.recalculate = true;
this.executeCommand("close", sScript);
};
window.Asc.plugin.button = function (id) {
};
})(window, undefined);
Вы также можете добавить в свой документ, например, свою собственную кнопку Bold. Или кнопку, при нажатии которой генерится отчет.
OLE-объекты. Это наши любимые плагины. И единственный способ для стороннего разработчика «влезать» в форматную часть документа, т.е. записывать свою информацию не только во время работы редактора, но и непосредственно в файл. Это, например, наши шахматы.
К какому решению подключаются плагины и как это делается?На самом деле, к любому.
Для серверной версии.
Плагины нужно прописать в конфиги редакторов — они автоматически появятся у всех пользователей портала.
Для десктопа.
Архивируем плагины, меняем расширение файла на .plugin и бросаем на главную страницу. Они сразу подхватятся, обещаем. Кроме того, если вы подключите приложение к порталу с включенными плагинами, они автоматически будут работать и в десктопе.
Для веб-версии.
В ближайшее время мы запилим что-то вроде магазина или галереи, куда будут добавляться (после модерации) плагины от пользователей.
Пока «магазина» нет, плагины можно добавлять через расширение в браузере. Этот путь пока работает только для Chrome. У нас на GitHub’e есть папка c говорящим названием chrome_extension_example: это и есть образец, как сделать по нашим плагинам расширение в Chrome.
Здесь, кстати, недлинное видео, о том, что могут наши плагины и как их добавить в существующую инсталляцию (десктоп, сервер).
Здесь мы хотели написать подробную инструкцию, как это сделать. Но вспомнили, что у нас уже есть хорошая и подробная документация, где структура плагина описана во всех необходимых деталях. Так что всё здесь. Вы также можете изучить устройство дополнений, которые мы собственноручно выложили на GitHub.
На этом, пожалуй, всё. И да — мы надеемся со временем увидеть буйство плагинов, созданное сообществом. Во всяком случае, очень любопытно, какие функции допишут наши пользователи.
Комментарии (4)
9 ноября 2016 в 13:41
+3↑
↓
Круто, спасибо, полезная нововведения!9 ноября 2016 в 14:12
0↑
↓
Ребят, а вы писали где-нибудь про то, как архитектурно у вас сделано всё?
9 ноября 2016 в 14:30
+2↑
↓
такого огромного и всеобъемлющего, чтобы про «всё» не было., а что именно вам интересно?9 ноября 2016 в 15:02
0↑
↓
Про облачное решение было бы интересно почитать.
Как построено, как справляетесь с нагрузкой, какие инструменты/технологии используете.
Также было бы интересно какой объём кода и насколько большие команды и как, грубо говоря, боретесь со сложностью разработки.