Основной код плагина находится в файле .js, описывающем, какие действия и каким образом должен выполнять плагин. Этот файл размещается в корневой папке плагина вместе с файлами config.json и index.html.
Как это работает?
В коде каждого плагина содержится объект window.Asc.plugin, который, в свою очередь, имеет несколько методов для взаимодействия с редакторами документов, таблиц и презентаций.
Для работы плагина разработчик должен определить два обязательных метода для объекта window.Asc.plugin: window.Asc.plugin.init и window.Asc.plugin.button. После этого используется метод window.Asc.plugin.callCommand для передачи данных в редакторы с помощью встроенных функций API Генератора документов.
Если плагин работает с OLE-объектом, для управления им используется метод window.Asc.plugin.executeCommand.
Рассмотрим, как это сделано в плагине helloworld.js:
(function (window, undefined) { window.Asc.plugin.init = function () { this.callCommand(function() { var oDocument = Api.GetDocument(); var oParagraph = Api.CreateParagraph(); oParagraph.AddText("Hello world!"); oDocument.InsertContent([oParagraph]); }, true); }; window.Asc.plugin.button = function (id) { }; })(window, undefined);
При инициализации плагина (window.Asc.plugin.init = function () {…})редактор формирует абзац с фразой «Hello World», а затем использует API Генератора документов для создания документа с этим текстом (с помощью метода window.Asc.plugin.callCommand — this.callCommand(function() {…})).
Примечание: Пожалуйста, обратите внимание, что функции Генератора документов уже включены в редакторы: это то, как плагины взаимодействуют с редакторами. Отдельная версия Генератора документов потребуется, только если вы хотите создать документ, не используя редакторы.
Единственная кнопка «OK» (window.Asc.plugin.button = function (id) {…}) используется для создания текста и завершения работы с плагином.
Таким же образом можно создать любой другой плагин. В настоящее время плагины поддерживают не только передачу текста или форматированного текста в редакторы, но и встраивание OLE-объектов (например, плагин YouTube, встраивающий видео с YouTube на страницу редактора).