Содержание
Руководство по плагину репозитория
Репозиторий расширений используется www.dokuwiki.org для организации информации о плагинах и шаблонах.
Источник
Исходный код доступен по адресу https://github.com/dokuwiki/dokuwiki-plugin-pluginrepo
Разработка DokuWiki движется в сторону одинакового отношения к плагинам и шаблонам. В репозитории плагинов шаблоны — это просто плагин типа == 32. Это облегчает совместное использование тегов (пользователи, ищущие боковые панели, должны видеть и плагины, и шаблоны) и «Больше вкладов одного автора».
шаблоны идентифицируются по используемому пространству имен.
Функциональность
Плагин имеет несколько компонентов синтаксиса (см. раздел Syntax ниже):
- Записи для ввода свойств
- плагин
---- plugin ----
- или шаблон
---- template ----
.
- Таблица репозитория
---- pluginrepo ----
в которой перечислены сохраненные плагины или шаблоны. - Информационное поле с некоторыми (случайными) моментами
---- pluginnews -----
- Список результатов заданного запроса, полезный для администраторов вики
---- pluginquery -----
Для использования информации о расширениях во внешних инструментах доступны некоторые API:
- API позволяет запрашивать список доступных расширений DokuWiki. Доступно по адресу
Available at/lib/plugins/pluginrepo/api.php?[parameters]
(см . также api)
- Старая конечная точка
/lib/plugins/pluginrepo/repository.php?[parameters]
(все еще используется, например, translate-tool) (см. также api)
- Creates output in different formats of the usage statistics of DokuWiki
Available at/lib/plugins/pluginrepo/popularity.php?[parameters]
Examples at popularity
(see for parameters details: source)
And maintenance tasks are performed by:
/lib/plugins/pluginrepo/cron.php
- Calculate popularity
- Check for version and base discrepancies and update the badextensions page
Синтаксис
Entry Component
Besides the entry component details it's worth mentioning that the securitywarning
field has some predefined values
- informationleak – 'This plugin expose information that might be valuable to a hacker. It is not recommended in a public installation.'
- allowsscript – 'This plugin will allow execution of scripts. It should only be used when you trust ALL editors, best suited in private personal wikis.'
- requirespatch – 'The plugin requires patching the DokuWiki core. Manual patches may break compatibility with other plugins and make it harder to secure your installation by upgrading to latest version.'
- partlyhidden – 'Hiding parts of a DokuWiki page is not supported by the core. Most attempts to introduce ACL control for parts of a page will leak information through RSS feed, search or other core functionality.'
Of course free text could be used as well.
Pluginrepo (Table) Component
The «table» component comes in two variants, classic and a new more compact version with download buttons etc. An additional navigation feature «Jump to plugins starting with A B C..» is present for both. The new table also shows «tags» for each plugin.
The pluginrepo syntax component accepts parameters if supplied, which overrides parameters in HTTP request.
Available:
- plugintype – [integer] 1, 2, 4, 8, 16, 32=templates, or combination
- plugintag – [string] filter by this tag
- pluginsort – [string] sort by author(a), lastupdate(d), type (t), compatibility (v), popularity (c), plugin (p) otherwise sorted by most recent compatible release. Shortcuts can be used. If results are equal then further sorted by basename.
- showall – [yes] returns plugins regardless of security or obsolete status, normally skipped.
- includetemplates – [yes] returns templates AND plugins, normally only plugins returned. Combine with
plugintype=32
to return templates only. - showscreenshot – [yes] shows screenshot thumbnail column
- showcompatible – [yes] shows latest compatible DokuWiki version column
- cloudmin – [integer] needed number of occurrences for a tag to be included in navigation cloud
Example:
---- pluginrepo ---- cloudmin: 2 ----
News Component
Creates a right float box with one or more featured plugin/templates. Besides the repository API, additional parameters are:
Syntax definition:
---- pluginnews ----- headline: <headline text> style: <sameauthor/DEFAULT> showscreenshot: <yes/NO> random: <YES/no> entries: <number of plugins displayed> link: <internallink id> linktext: <internallink text> -----
Parameters
- style –
sameauthor
will display a list of plugins/templates by same author. Only usable in plugin/template homepages. - headline – [string] headline of the news block
- link – [string] add link at bottom of the news block
- linktext – [string] if combined with
link
, it sets the link text - entries – [int] number of plugins displayed
- random – [yes], set to
no
to disable random picked extensions - showscreenshot – [no], set to
yes
to show screenshot - onlyrecent – [yes], set to
no
to show bundled and older than 2 releases as well
Query Component
A tool tailored for Plugins & templates team to make wiki gardening easier. The query results are displayed as a configurable table looking something like this:
Plugin | Downloadurl | Plugins WHERE author = Håkan Sandell |
---|
∑ 0 plugins matching query
Syntax definition:
---- pluginquery ----- SELECT : <list of field names (optional)> WHERE : <sql where clause> VALUES : <list of values matching ? in where clause (optional)> HEADLINE : <heading used instead of raw query (optional)> -----
Allowed fields: plugin, name, description, author, email, bestcompatible, compatible, lastupdate, type, securityissue, securitywarning, updatemessage, screenshot, downloadurl, bugtracker, sourcerepo, donationurl, tags, popularity
All fields are allowed in WHERE clause together with AND, OR, NOT, NULL, LIKE, %
, <
, >
, =
, (
, )
. All values in where clause should be replaced by ?
.
For values of bestcompatible
four placeholders can be used: @DATEMOSTRECENT@
, @DATESECONDMOSTRECENT@
, @DATETHIRDMOSTRECENT@
and @DATEFOURTHMOSTRECENT@
.
Syntax examples:
---- pluginquery ----- WHERE : downloadurl IS null AND popularity > ? VALUES : 400 -----
---- pluginquery ----- SELECT : author type WHERE : (type & ?) AND (author LIKE ?) VALUES : 3, %Andreas Gohr% -----
---- pluginquery ----- SELECT : compatible WHERE : ? VALUES : 1 HEADLINE : All plugins and templates -----
Configuration
There are some config settings for the dokuwiki.org admin
db_name
– contain the DataSourceName, which consists of the PDO driver name, followed by a colon, followed by the PDO driver-specific connection syntax. See also: http://se2.php.net/manual/en/pdo.construct.php
Example: 'mysql:dbname=testdb;host=127.0.0.1' or 'sqlite:C:\DokuWikiStickNew\dokuwiki\repo.sqlite'
SQLITE2 not supporteddb_user
– database login username (leave blank for sqlite).db_pass
– database login password (leave blank for sqlite).bundled
– comma separated list of plugins that are bundled.releases
– comma separated list of releases (YYYY-MM-DD «<name>») newest MUST be first.
Repository plugin honors allowdebug for SQL debugging.