Инструменты пользователя

Инструменты сайта


wiki:devel:plugin_development_link

Это старая версия документа!


Пример разработки плагина ссылки

Суть нашего плагина будет во вставке часто используемых шаблонов описания ссылок, например: Ссылка на оригинальную статью, См. также и Читать далее…. Статья затронет добавление кнопки нашего плагина на панель инструментов редактора (toolbar), описание процесса разработки и закончим переводом нашего плагина на другие языки.

Подготовка папок и файлов

В папке lib/plugins создадим папку нашего плагина (например link или mylink). Я использую название mylink, т.к. более простые могут быть заняты. В нашей папке создадим файлы:

  • plugin.info.txt
  • README.md
  • script.js

и папку:

  • images

Файл plugin.info.txt

Каждый плагин должен предоставить некоторую базовую информацию о себе. Это делается через файл с именем, plugin.info.txt расположенный в каталоге плагина .

Вот пример того, как должен выглядеть такой файл.

plugin.info.txt
base   mylink 
author VladPolskiy 
email  polskiyvn@gmail.com 
date   2025-01-09 
name   mylink syntax plugin 
desc   Inserts frequently used link descriptions into Dokuwiki. 
url    https://www.dokuwiki.org/plugin:mylink 
Параметр Описание
base Техническое имя плагина. Менеджер расширений установит его в этот каталог.
author Полное имя автора плагина
email Электронная почта для связи с автором плагина по поводу этого плагина
date Дата последнего обновления этого плагина в формате ГГГГ-ММ-ДД. Не забудьте обновить это, когда будете обновлять свой плагин! 1)
name Удобочитаемое имя плагина
desc Описание того, что делает плагин
url URL-адрес , по которому можно получить более подробную информацию о плагине
minphp Минимальная версия PHP, требуемая для этого плагина. Пусто для того же, что и DokuWiki. Только Major.Minor версия, например 8.2, не 8.2.3 может быть указана!
maxphp Максимальная версия PHP, поддерживаемая этим плагином. Пусто для того же, что и DokuWiki. Только Major.Minor версия, например 8.2, не 8.2.3может быть указана!

Примечание: plugin.info.txt заменяет старый вызов getInfo() в ваших компонентах плагина для DokuWiki 2009-12-25 «Lemming» и более поздних версий. getInfo() теперь реализован в базовом классе и будет считывать всю информацию из этого файла. Его больше не нужно реализовывать в ваших подклассах.

Файл README.md

README.md служит первым документом для пользователей и разработчиков, которые хотят понять назначение, настройку и использование проекта.

README.md
# плагин моих ссылок
 
Это плагин для [dokuwiki](https://www.dokuwiki.org/start)..
 
См. [домашнюю страницу](https://www.dokuwiki.org/plugin:mylink) для получения подробной документации. Здесь мы приводим краткое описание требуемого синтаксиса:
 
```
{magnifier-lefticon}См. так-же [[:example|]]
{blue-document--arrowicon}[[http://example.com| Ссылка на оригинальную статью]]
```
 
- Квадратные скобки обозначают ссылку.

Файл script.js

JavaScript файл с рабочим кодом нашего плагина (подключения кнопки и вывод описания нашей ссылки в тело редактируемой страницы. Поскольку пользовательские и плагинные скрипты загружаться при всех запросах, а панель инструментов инициализируется только при редактировании, нам нужно сначала убедиться, что массив панелей инструментов существует. Проверим это, window.toolbar определен ли он. Если определен, вы можете добавить свою кнопку в конец массива.

script.js
/* JavaScript function to create mylink toolbar in Dokuwiki */
/* see http://www.dokuwiki.org/plugin:mylink for more info */
 
/* Путь к папке с иконками для кнопок панели */
mylink_icobase = "../../plugins/mylink/images/";
 
if(window.toolbar != undefined) {       // Проверка наличия массива панели инструментов
  toolbar[toolbar.length] = {           // Кнопка верхнего уровня панели инструментов
    "type":"picker",                    // тип действия кнопки: picker⇒ меню выбора
    "title":"My links",                 // название кнопки, отображаемое при наведении курсора
    "icon":mylink_icobase+"toolbar_icon.png",  //значок, используемый для кнопки
    "list":[{ //список выпадающего меню кнопок
      "type":"format", // 1я кнопка в выпадающем окне. тип действия кнопки: format⇒ вики-разметка
      "title":"Link to the original article", // название кнопки, отображаемое при наведении курсора
      "icon":mylink_icobase+"blog.png",  //путь к иконке, используемой для кнопки
      "open":"[[",
	  "sample":"http://example.com|Link to the original article",
      "close":"]]"
    }, {
      "type":"format", // 2я кнопка в выпадающем окне. тип действия кнопки: format⇒ вики-разметка
      "title":"See also",   // название кнопки, отображаемое при наведении курсора
      "icon":mylink_icobase+"magnifier-medium-left.png", //путь к иконке, используемой для кнопки
      "open":"See also: [[",   //открывающий тег вики-разметки для вставки
	  "sample":"http://example.com|",
	  "close":"]]"         //закрывающий тег вики-разметки для вставки
    }
	]
  };
}

в данном случае у нас

      "open":"See also: [[",   //открывающий тег вики-разметки для вставки
	  "sample":"http://example.com|",
	  "close":"]]"         //закрывающий тег вики-разметки для вставки
представляют собою разрезанный код для вывода:
See also: [[   http://example.com|    ]]

Link to the original article
See also: http://example.com

1)
Эта дата должна быть равна дате «Последнее обновление» на странице плагинов в репозитории. Это необходимо для автоматической маркировки обновлений, используемой Extension Manager, представленной в релизе Ponder Stibbons
Только авторизованные участники могут оставлять комментарии.
wiki/devel/plugin_development_link.1736456432.txt.gz · Последнее изменение: 2025/01/10 00:00 — vladpolskiy