Что если бы вы могли добавить в редакторы документов любые функции, какие вам хочется? Теперь вы можете: в редакторах ONLYOFFICE появилась возможность подключения плагинов. Несколько примеров мы написали сами — все их можно посмотреть в нашем открытом репозитории на GitHub'e. Теперь ваш ход — напишите то, чего вам не хватало.
Подробности далее.
Итак, мы решили дать разработчикам возможность добавлять нужную (но не относящуюся напрямую к форматам OOXML) функциональность в редакторы ONLYOFFICE.
Всё началось с одной компании, в которой очень хотели написать собственную кнопку, чтобы генерить контент и вставлять получившиеся данные в редактор. Окей, подумали мы, в этом есть смысл. Есть функциональность, которая нужна только определенным людям и больше никому. Мы не можем сделать всё для всех, но мы можем дать возможность подрубить всё, что нужно. Поэтому вот вам API для работы с редактором, первая версия.
Так и появились плагины.
В них можно использовать код, который мы сами не сможем брать из-за лицензионных ограничений. Мы делаем коммерческий продукт и продаем его, нельзя просто взять и (*в этом моменте автор текста прерывается, чтобы отмахнуться от всплывшего из глубин подсознания призрака Шона Бина) нельзя просто взять и использовать любой код из интернета. То есть, нам нельзя. А вам можно. Те вещи, которые мы по объективным причинам не можем, наши пользователи могут.
Мы делим их на три типа:
Визуальные. Когда мы пользуемся таким расширением редактора, у нас открывается окно и рисуется определенный интерфейс. Например, Главред, который просили наши пиарщики.
Визуальный плагин может менять что-то в самом документе, а может и ничего не менять. Главред ничего не меняет — он лишь подсвечивает определенную часть текста (штампы, лишние слова и пр).
Можно написать плагин, который ищет по Google.Картинкам и вставляет понравившуюся в текст. Этот плагин меняет документ.
Невизуальные. Например, простая кнопка, при нажатии которой производятся манипуляции с документом. Простейший пример такого плагина: расширение, которое при нажатии кнопки добавляет в ваш документ слова Hello World!
Вы также можете добавить в свой документ, например, свою собственную кнопку Bold. Или кнопку, при нажатии которой генерится отчет.
OLE-объекты. Это наши любимые плагины. И единственный способ для стороннего разработчика «влезать» в форматную часть документа, т.е. записывать свою информацию не только во время работы редактора, но и непосредственно в файл. Это, например, наши шахматы.
На самом деле, к любому.
Для серверной версии
Плагины нужно прописать в конфиги редакторов — они автоматически появятся у всех пользователей портала.
Для десктопа
Архивируем плагины, меняем расширение файла на .plugin и бросаем на главную страницу. Они сразу подхватятся, обещаем. Кроме того, если вы подключите приложение к порталу с включенными плагинами, они автоматически будут работать и в десктопе.
Для веб-версии
В ближайшее время мы запилим что-то вроде магазина или галереи, куда будут добавляться (после модерации) плагины от пользователей.
Пока «магазина» нет, плагины можно добавлять через расширение в браузере. Этот путь пока работает только для Chrome. У нас на GitHub'e есть папка c говорящим названием chrome_extension_example: это и есть образец, как сделать по нашим плагинам расширение в Chrome.
Здесь, кстати, недлинное видео, о том, что могут наши плагины и как их добавить в существующую инсталляцию (десктоп, сервер).
Здесь мы хотели написать подробную инструкцию, как это сделать. Но вспомнили, что у нас уже есть хорошая и подробная документация, где структура плагина описана во всех необходимых деталях. Так что всё здесь. Вы также можете изучить устройство дополнений, которые мы собственноручно выложили на GitHub.
На этом, пожалуй, всё. И да — мы надеемся со временем увидеть буйство плагинов, созданное сообществом. Во всяком случае, очень любопытно, какие функции допишут наши пользователи.
Подробности далее.
Зачем мы это сделали?
Итак, мы решили дать разработчикам возможность добавлять нужную (но не относящуюся напрямую к форматам 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.
На этом, пожалуй, всё. И да — мы надеемся со временем увидеть буйство плагинов, созданное сообществом. Во всяком случае, очень любопытно, какие функции допишут наши пользователи.