HowToCreatePlugin.fr - Novik/ruTorrent GitHub Wiki
<wiki:TOC />
== Теория ==
Плагины ruTorrent располагаются внутри директории plugins. Каждому плагину должна соответствовать директория с уникальным именем, в которой, собственно, файлы плагина и лежат. Ряд файлов плагина имеют зарезервированные имена и цели применения. Это
=== plugin.info ===
Файл описания плагина. В отличие от прочих файлов, наличие этого - обязательно. Файл содержит ряд строк с директивами, каждая директива - на новой строке. Директивы имеют формат имя_директивы: значение_директивы
и могут быть следующими:
|| Имя || Значение || Значение по умолчанию || Необходима ||
|| description || Описание плагина. Строка на английском языке, которая будет показана на интерфейсе в закладке "Плагины". || Пустая строка || Нет ||
|| author || Автор плагина. Строка на английском языке, которая будет показана на интерфейсе в закладке "Плагины". || unknown
|| Нет ||
|| version || Версия плагина. Десятичное число с плавающей точкой. Будет показано на интерфейсе в закладке "Плагины", также может использоваться прочими плагинами для проверки. || Отсутствует || Да ||
|| need_rtorrent || 1, если для работы плагина требуется rTorrent, в противном случае 0. || 1
|| Нет ||
|| remote || Директива управляет поведением плагина в случае, если rTorrent находится на другой машине (не на той же, что ruTorrent). Возможные значения: error - плагин не будет загружен, и будет выдано сообщение об ошибке. warning - плагин будет загружен, но на интерфейсе будет показано замечание. ok - плагин будет загружен. || ok
|| Нет ||
|| runlevel || Номер в очереди загрузки, десятичное число с плавающей точкой. Плагины с меньшим номером загружаются раньше, с бОльшим, соответственно, позже. || 10.0
|| Нет ||
=== init.js ===
Содержимое данного файла полностью внедряется в код ruTorrent в момент загрузки пользователем последнего. Т.е. это хорошее место для для замены или добавления логики в скрипт ruTorrent. При внедрении весь наличный код оформляется как javascript заключение, проще говоря, все локальные переменные, объявленные в коде, не будут видны нигде за его пределами.
В коде может использоваться уже созданный экземпляр объекта rPlugin с именем plugin. Если кому-то хочется подробностей относительно его методов - предлагаю обратиться непосредственно к коду, файл ru/torrent/js/plugins.js.
=== init.php ===
Данный файл просто выполняется при загрузке ruTorrent. Обычно он содержит какую-либо инициализацию, требующую проверки состояния rTorrent на данный момент - например, там может проверяться версия rTorrent, выдаваться указания планировщику, частично формироваться внедряемый javascript.
Последнее может быть выполнено путем корректирования двух строковых переменных - $jResult и $jEnd. Первая содержит код, добавляемый к началу скрипта плагина (перед содержимым init.js), второй - код, добавляемый в конец. Обращаю внимание, что данные переменные могут уже содержать некоторые строки скрипта, переписывать их нежелательно, следует использовать конкатенацию.
=== done.php ===
Этот скрипт выполняется, когда пользователь на закладке "Плагины" выбирает в контекстном меню команду "Выгрузить" для конкретного плагина. Как правило, скрипт содержит действия, обратные заданным в файле init.php. Т.е., например, если в init.php Вы добавляли задание в планировщик rTorrent, то здесь Вы должны это задание удалить.
Under construction