History log of /dokuwiki/lib/plugins/ (Results 1 – 25 of 2909)
Revision Date Author Comments
(<<< Hide modified files)
(Show modified files >>>)
fe58309e16-Jul-2026 Andreas Gohr <gohr@cosmocode.de>

extension: don't crash on malformed conflict/dependency ids

The conflicts and depends fields in the repository metadata are free
form text entered by extension authors and may contain values that ar

extension: don't crash on malformed conflict/dependency ids

The conflicts and depends fields in the repository metadata are free
form text entered by extension authors and may contain values that are
not valid extension ids, such as "sprintdoc template". Since 9af82229f
routed every Extension construction through the strict setBase()
validation, such a value made Extension::createFromId() throw an
uncaught RuntimeException while building the notices, taking down the
whole extension manager.

Skip entries that cannot be parsed into an extension id when checking
for missing dependencies and conflicts.

As an immeadiate fix this will also be fixed in the repository API to
avoid sending invalid extension IDs to the extension manager.

Fixes #4691

show more ...


/dokuwiki/.gitattributes
/dokuwiki/.github/workflows/autoFix.yml
/dokuwiki/.github/workflows/deletedFiles.yml
/dokuwiki/.github/workflows/phpCS.yml
/dokuwiki/.github/workflows/release-build.yml
/dokuwiki/.github/workflows/release-preparation.yml
/dokuwiki/.github/workflows/testLinux.yml
/dokuwiki/.github/workflows/testWindows.yml
/dokuwiki/.github/workflows/todoChecker.yml
/dokuwiki/AI_POLICY.md
/dokuwiki/CONTRIBUTING.md
/dokuwiki/_test/tests/Parsing/Lexer/LexerTest.php
/dokuwiki/_test/tests/Parsing/ParserMode/FormattingTest.php
/dokuwiki/_test/tests/Parsing/ParserMode/GfmDeletedTest.php
/dokuwiki/_test/tests/Parsing/ParserMode/GfmEmphasisStrongTest.php
/dokuwiki/_test/tests/Parsing/ParserMode/GfmEmphasisStrongUnderscoreTest.php
/dokuwiki/_test/tests/Parsing/ParserMode/GfmEmphasisTest.php
/dokuwiki/_test/tests/Parsing/ParserMode/GfmEmphasisUnderscoreTest.php
/dokuwiki/_test/tests/Parsing/ParserMode/GfmStrongUnderscoreTest.php
/dokuwiki/inc/ChangeLog/ChangeLog.php
/dokuwiki/inc/MailUtils.php
/dokuwiki/inc/Parsing/Lexer/CloserPattern.php
/dokuwiki/inc/Parsing/Lexer/Lexer.php
/dokuwiki/inc/Parsing/Lexer/ParallelRegex.php
/dokuwiki/inc/Parsing/Lexer/StateStack.php
/dokuwiki/inc/Parsing/ParserMode/AbstractFormatting.php
/dokuwiki/inc/Parsing/ParserMode/AbstractMode.php
/dokuwiki/inc/Parsing/ParserMode/Deleted.php
/dokuwiki/inc/Parsing/ParserMode/Emphasis.php
/dokuwiki/inc/Parsing/ParserMode/Footnote.php
/dokuwiki/inc/Parsing/ParserMode/GfmBacktickDouble.php
/dokuwiki/inc/Parsing/ParserMode/GfmBacktickSingle.php
/dokuwiki/inc/Parsing/ParserMode/GfmCode.php
/dokuwiki/inc/Parsing/ParserMode/GfmDeleted.php
/dokuwiki/inc/Parsing/ParserMode/GfmEmphasis.php
/dokuwiki/inc/Parsing/ParserMode/GfmEmphasisStrong.php
/dokuwiki/inc/Parsing/ParserMode/GfmEmphasisStrongUnderscore.php
/dokuwiki/inc/Parsing/ParserMode/GfmEmphasisUnderscore.php
/dokuwiki/inc/Parsing/ParserMode/GfmLink.php
/dokuwiki/inc/Parsing/ParserMode/GfmQuote.php
/dokuwiki/inc/Parsing/ParserMode/GfmStrongUnderscore.php
/dokuwiki/inc/Parsing/ParserMode/Media.php
/dokuwiki/inc/Parsing/ParserMode/Monospace.php
/dokuwiki/inc/Parsing/ParserMode/Strong.php
/dokuwiki/inc/Parsing/ParserMode/Subscript.php
/dokuwiki/inc/Parsing/ParserMode/Superscript.php
/dokuwiki/inc/Parsing/ParserMode/Underline.php
/dokuwiki/inc/Parsing/ParserMode/Windowssharelink.php
/dokuwiki/inc/parser/xhtml.php
extension/Notice.php
extension/_test/NoticeTest.php
/dokuwiki/lib/scripts/locktimer.js
1ed5d39808-Jul-2026 splitbrain <86426+splitbrain@users.noreply.github.com>

�� Rector and PHPCS fixes

2d05a06d08-Jul-2026 Andreas Gohr <gohr@cosmocode.de>

fix(info): read parser modes from the registry, not the deprecated global

The info plugin's ~~INFO:syntaxtypes~~ read the $PARSER_MODES global
directly. Since the mode taxonomy moved into ModeRegist

fix(info): read parser modes from the registry, not the deprecated global

The info plugin's ~~INFO:syntaxtypes~~ read the $PARSER_MODES global
directly. Since the mode taxonomy moved into ModeRegistry (c8dd1b9d2),
that global is only populated as a side effect of a parse, so on a warm
instruction cache with no parse in the request it is unset and the
syntax-types table renders empty. ~~INFO:syntaxmodes~~ used the
deprecated p_get_parsermodes(), logging a deprecation on every render.

Both now build a ModeRegistry and read the categories and modes from it
directly, independent of parse or cache state.

show more ...

6a8e48ed07-Jul-2026 Andreas Gohr <gohr@cosmocode.de>

fix(extension): skip invalid directories when listing extensions

A leftover directory whose name is not a valid extension base (e.g.
"myplugin (copy)") made Extension::setBase() throw, which propaga

fix(extension): skip invalid directories when listing extensions

A leftover directory whose name is not a valid extension base (e.g.
"myplugin (copy)") made Extension::setBase() throw, which propagated
out of the unguarded getPlugins()/getTemplates() calls and fataled the
whole Extension Manager page and the extension list CLI.

Catch the exception per-directory in readExtensionsFromDirectory() so a
single stray directory is skipped and logged instead of breaking every
caller. The throw is kept for the install path.

show more ...


/dokuwiki/.github/workflows/testLinux.yml
/dokuwiki/.github/workflows/testWindows.yml
/dokuwiki/_test/rector.php
/dokuwiki/_test/tests/Feed/FeedParserTest.php
/dokuwiki/_test/tests/File/MediaFileTest.php
/dokuwiki/_test/tests/Parsing/ParserMode/AbstractModeTest.php
/dokuwiki/_test/tests/Parsing/ParserMode/PreformattedTest.php
/dokuwiki/_test/tests/Search/Collection/CollectionSearchTest.php
/dokuwiki/_test/tests/Search/Collection/DirectCollectionTest.php
/dokuwiki/_test/tests/Search/Collection/FrequencyCollectionTest.php
/dokuwiki/_test/tests/Search/Collection/LookupCollectionTest.php
/dokuwiki/_test/tests/Search/Index/LockTest.php
/dokuwiki/_test/tests/Search/Index/MemoryIndexTest.php
/dokuwiki/_test/tests/Search/Index/TupleOpsTest.php
/dokuwiki/_test/tests/Search/Query/QueryEvaluatorTest.php
/dokuwiki/_test/tests/Search/Query/QueryParserTest.php
/dokuwiki/_test/tests/Ui/Media/DisplayTest.php
/dokuwiki/_test/tests/inc/media_resize.test.php
/dokuwiki/composer.json
/dokuwiki/composer.lock
/dokuwiki/inc/Cache/CacheImageMod.php
/dokuwiki/inc/Cache/CacheParser.php
/dokuwiki/inc/Cache/CacheRenderer.php
/dokuwiki/inc/Feed/FeedParserFile.php
/dokuwiki/inc/File/MediaFile.php
/dokuwiki/inc/JpegMeta.php
/dokuwiki/inc/Parsing/Handler.php
/dokuwiki/inc/Parsing/Lexer/Lexer.php
/dokuwiki/inc/Parsing/Parser.php
/dokuwiki/inc/Parsing/ParserMode/AbstractMode.php
/dokuwiki/inc/Parsing/ParserMode/GfmQuote.php
/dokuwiki/inc/Parsing/ParserMode/Preformatted.php
/dokuwiki/inc/Search/Collection/AbstractCollection.php
/dokuwiki/inc/Search/Collection/DirectCollection.php
/dokuwiki/inc/Search/Index/AbstractIndex.php
/dokuwiki/inc/Search/Index/Lock.php
/dokuwiki/inc/Search/Index/TupleOps.php
/dokuwiki/inc/Search/LegacyIndexer.php
/dokuwiki/inc/Search/Query/QueryEvaluator.php
/dokuwiki/inc/Search/Tokenizer.php
/dokuwiki/inc/Subscriptions/BulkSubscriptionSender.php
/dokuwiki/inc/Ui/Admin.php
/dokuwiki/inc/Ui/Media/Display.php
/dokuwiki/inc/Ui/MediaDiff.php
/dokuwiki/inc/legacy.php
/dokuwiki/inc/media.php
/dokuwiki/inc/parser/metadata.php
/dokuwiki/inc/template.php
/dokuwiki/lib/exe/css.php
/dokuwiki/lib/exe/fetch.php
/dokuwiki/lib/exe/js.php
extension/Local.php
extension/_test/LocalTest.php
/dokuwiki/lib/scripts/media.js
/dokuwiki/vendor/composer/installed.json
/dokuwiki/vendor/composer/installed.php
/dokuwiki/vendor/splitbrain/slika/README.md
/dokuwiki/vendor/splitbrain/slika/src/Adapter.php
/dokuwiki/vendor/splitbrain/slika/src/GdAdapter.php
/dokuwiki/vendor/splitbrain/slika/src/ImageInfo.php
/dokuwiki/vendor/splitbrain/slika/src/ImageMagickAdapter.php
aa331cf229-Jun-2026 Martin Růžička <martinr@post.cz>

Translation update (cs)

946266a326-Jun-2026 Schplurtz le Déboulonné <Schplurtz@laposte.net>

Translation update (fr)

2848662b25-Jun-2026 splitbrain <86426+splitbrain@users.noreply.github.com>

�� Rector and PHPCS fixes

9af8222925-Jun-2026 Andreas Gohr <gohr@cosmocode.de>

extension: validate base name to prevent path traversal on install

The extension base name flowed unsanitized from an uploaded archive's
plugin.info.txt (or an extension id) into getInstallDir(), wh

extension: validate base name to prevent path traversal on install

The extension base name flowed unsanitized from an uploaded archive's
plugin.info.txt (or an extension id) into getInstallDir(), where
fullpath() collapses '..' segments. A crafted base such as
'../../../../evil' therefore resolved outside lib/plugins/, letting
dircopy() write the archive contents to an arbitrary web-writable path.

Route every base assignment through a new setBase() that rejects
anything other than a bare extension name.

Note: this is not really a security concern since plugins can execute
arbitrary code by design. The is mostly to make sure, plugin code is not
installed accidentally at the wrong location.

show more ...

195a3a7f25-Jun-2026 Andreas Gohr <gohr@cosmocode.de>

make getUserData() fail safely on non-string input

When removing multiple users at once, plugins listening on the
AUTH_USER_CHANGE event may pass the array of user names (params[0]
for 'delete') to

make getUserData() fail safely on non-string input

When removing multiple users at once, plugins listening on the
AUTH_USER_CHANGE event may pass the array of user names (params[0]
for 'delete') to getUserData(), which crashed authplain with an
"Array to string conversion" / illegal offset error.

Guard the bundled auth backends so a non-string user fails safely
by returning false, and document that AUTH_USER_CHANGE params[0] is
a string for create/modify but a string[] for delete.

Fixes #4567

show more ...

6436b0ab25-Jun-2026 Schplurtz le Déboulonné <Schplurtz@laposte.net>

Translation update (fr)

75364f1325-Jun-2026 Marek Adamski <fevbew@wp.pl>

Translation update (pl)

5d71952d16-Jun-2026 Andreas Gohr <andi@splitbrain.org>

Translation update (de)

17acbd0f06-Jun-2026 Andreas Gohr <andi@splitbrain.org>

Cast the ACL permission to an integer when saving the rule table

The bulk update path pulled the permission map straight from input and
wrote each value verbatim into a tab-separated ACL line, while

Cast the ACL permission to an integer when saving the rule table

The bulk update path pulled the permission map straight from input and
wrote each value verbatim into a tab-separated ACL line, while the
single-rule path already read it through an integer filter. A non-integer
value could carry a newline or tab and inject extra rules into the file.
Cast to int so the value can only ever be a single permission number.

This was not exploitable: the rule table is reachable only through the
ACL admin plugin, which is superuser-only and CSRF-protected, and a
superuser can already edit the ACL file directly. The cast is hardening
for consistency with the single-rule path.

show more ...

fa03edf306-Jun-2026 Andreas Gohr <andi@splitbrain.org>

(security) Enforce per-page edit permission in the revert plugin

The revert manager is accessible to managers, not just admins. Its
reversion loop called saveWikiText() for every submitted page id w

(security) Enforce per-page edit permission in the revert plugin

The revert manager is accessible to managers, not just admins. Its
reversion loop called saveWikiText() for every submitted page id without
checking the per-page ACL, relying only on the manager role. A manager
denied edit on a namespace could therefore revert those pages to an
older revision or blank them entirely (low severity).

The page listing already hid unreadable pages, but offered every
readable page for reversion, including ones the manager could not edit.
A hand-crafted POST could also target arbitrary ids regardless of what
the listing showed.

Each id is now cleaned and checked for edit permission before it is
reverted; ids that fail the check are silently skipped. The listing
additionally only offers pages the manager actually has edit permission
on, so the form and the action agree.

show more ...

aabc478206-Jun-2026 Andreas Gohr <andi@splitbrain.org>

(security) Add CSRF protection and use Form class in popularity plugin

The plugin is accessible to managers, not just admins, and had two
separate issues.

1. Missing CSRF token (low severity)
Th

(security) Add CSRF protection and use Form class in popularity plugin

The plugin is accessible to managers, not just admins, and had two
separate issues.

1. Missing CSRF token (low severity)
The handler accepted the posted data and toggled autosubmit without
checking a security token. A cross-site forged POST against a logged-in
manager could enable autosubmit and trigger a submission of the wiki's
data to the popularity server.
2. Reflected XSS (low severity)
When a submission failed, the posted data was reflected back into a
readonly textarea without escaping. A value closing the textarea early
(eg. </textarea><script>...) could inject script into the manager's
browser.
To exploit this, not only a CSRF attack against an authenticated
manager was needed, also the connection to the DokuWiki popularity
server needed to fail.

The popularity plugin now verifies the security token before it sends
data or toggles the autosubmit option.

The form is now built via the the Form API so the textarea value is
escaped automatically. The security token is emitted automatically.
The fallback browser-submission form posts to an external server and is
built without the security token.

show more ...

3e42782802-Jun-2026 Wizzard <wizzardsk@gmail.com>

Translation update (sk)

1dbc46ac27-May-2026 Tzipirigu <tzipirigu.radu25683@gmail.com>

Translation update (ro)

08b5f5eb14-May-2026 Andreas Gohr <andi@splitbrain.org>

fix(authad): avoid warning when initAdLdap is called before opts is populated

$this->opts is initialized as an empty array, so the is_array() guard in
initAdLdap() passed even when no domain had bee

fix(authad): avoid warning when initAdLdap is called before opts is populated

$this->opts is initialized as an empty array, so the is_array() guard in
initAdLdap() passed even when no domain had been loaded yet, producing an
"Undefined array key 'domain'" warning on PHP 8 (e.g. from getUserCount()
called by the Popularity admin page).

Fixes #4501

show more ...

73dc0a8906-May-2026 Andreas Gohr <andi@splitbrain.org>

fix(mail): keep '&' intact in mailto links with multiple query params

Move the email-handling helpers (obfuscate, mail_isvalid,
mail_quotedprintable_encode, mail_setup) out of the procedural
inc/mai

fix(mail): keep '&' intact in mailto links with multiple query params

Move the email-handling helpers (obfuscate, mail_isvalid,
mail_quotedprintable_encode, mail_setup) out of the procedural
inc/mail.php into a namespaced dokuwiki\MailUtils class plus a new
Mailer::configInit(), and add a separate MailUtils::obfuscateUrl() for
the mailto-href context.

The xhtml renderer and PluginTrait now build the link label and the
href separately: the address half is run through the mailguard
obfuscation, the query string is preserved verbatim with only HTML
escaping applied. This fixes #1690 — in 'visible' mode the previous
code rawurlencoded the entire address+query, turning '?' into '%3F' and
breaking multi-parameter mailto links; in all modes the query string is
no longer mangled by the [at]/[dot] substitution.

Core call sites (Mailer, auth, LegacyApiCore, common, the xhtml
renderer, the parser, the bundled config/styling/usermanager plugins)
are migrated to MailUtils directly. The old top-level functions and
PREG_PATTERN_VALID_EMAIL constant remain as deprecated shims with
rector mappings.

Tests for obfuscate / mail_isvalid / mail_quotedprintable_encode are
consolidated into a single _test/tests/MailUtilsTest.php and extended
with regression coverage for the multi-parameter, double-escape and
URL-shape cases.

Closes #1690
Replaces #1964

show more ...

8788dbbd06-May-2026 splitbrain <86426+splitbrain@users.noreply.github.com>

�� Rector and PHPCS fixes

560c606106-May-2026 Andreas Gohr <andi@splitbrain.org>

use new ModeRegistry constant in info plugin

Basically all syntax plugins could now return the constants instead of
plain string, but the info plugin is the only syntax plugin we have
directly in co

use new ModeRegistry constant in info plugin

Basically all syntax plugins could now return the constants instead of
plain string, but the info plugin is the only syntax plugin we have
directly in core.

show more ...


/dokuwiki/_test/bootstrap.php
/dokuwiki/_test/phpcs.xml
/dokuwiki/_test/rector.php
/dokuwiki/_test/tests/Parsing/HandlerTest.php
/dokuwiki/_test/tests/Parsing/Lexer/LexerTest.php
/dokuwiki/_test/tests/Parsing/Lexer/ParallelRegexTest.php
/dokuwiki/_test/tests/Parsing/Lexer/RecordingHandler.php
/dokuwiki/_test/tests/Parsing/Lexer/StateStackTest.php
/dokuwiki/_test/tests/Parsing/ModeRegistryTest.php
/dokuwiki/_test/tests/Parsing/ParserMode/CodeTest.php
/dokuwiki/_test/tests/Parsing/ParserMode/EolTest.php
/dokuwiki/_test/tests/Parsing/ParserMode/FileTest.php
/dokuwiki/_test/tests/Parsing/ParserMode/FootnoteTest.php
/dokuwiki/_test/tests/Parsing/ParserMode/FormattingTest.php
/dokuwiki/_test/tests/Parsing/ParserMode/HeadersTest.php
/dokuwiki/_test/tests/Parsing/ParserMode/I18nTest.php
/dokuwiki/_test/tests/Parsing/ParserMode/LinksTest.php
/dokuwiki/_test/tests/Parsing/ParserMode/ListsTest.php
/dokuwiki/_test/tests/Parsing/ParserMode/MediaTest.php
/dokuwiki/_test/tests/Parsing/ParserMode/NocacheTest.php
/dokuwiki/_test/tests/Parsing/ParserMode/NotocTest.php
/dokuwiki/_test/tests/Parsing/ParserMode/ParserTestBase.php
/dokuwiki/_test/tests/Parsing/ParserMode/PreformattedTest.php
/dokuwiki/_test/tests/Parsing/ParserMode/QuoteTest.php
/dokuwiki/_test/tests/Parsing/ParserMode/QuotesTest.php
/dokuwiki/_test/tests/Parsing/ParserMode/ReplacementsTest.php
/dokuwiki/_test/tests/Parsing/ParserMode/RssTest.php
/dokuwiki/_test/tests/Parsing/ParserMode/TableTest.php
/dokuwiki/_test/tests/Parsing/ParserMode/UnformattedTest.php
/dokuwiki/inc/Cache/CacheParser.php
/dokuwiki/inc/Extension/SyntaxPlugin.php
/dokuwiki/inc/Parsing/Handler.php
/dokuwiki/inc/Parsing/Handler/AbstractRewriter.php
/dokuwiki/inc/Parsing/Handler/CallWriter.php
/dokuwiki/inc/Parsing/Handler/Lists.php
/dokuwiki/inc/Parsing/Handler/Nest.php
/dokuwiki/inc/Parsing/Handler/Preformatted.php
/dokuwiki/inc/Parsing/Handler/Quote.php
/dokuwiki/inc/Parsing/Handler/Table.php
/dokuwiki/inc/Parsing/Lexer/Lexer.php
/dokuwiki/inc/Parsing/Lexer/ParallelRegex.php
/dokuwiki/inc/Parsing/ModeRegistry.php
/dokuwiki/inc/Parsing/Parser.php
/dokuwiki/inc/Parsing/ParserMode/AbstractFormatting.php
/dokuwiki/inc/Parsing/ParserMode/Acronym.php
/dokuwiki/inc/Parsing/ParserMode/Base.php
/dokuwiki/inc/Parsing/ParserMode/Camelcaselink.php
/dokuwiki/inc/Parsing/ParserMode/Code.php
/dokuwiki/inc/Parsing/ParserMode/Deleted.php
/dokuwiki/inc/Parsing/ParserMode/Emaillink.php
/dokuwiki/inc/Parsing/ParserMode/Emphasis.php
/dokuwiki/inc/Parsing/ParserMode/Entity.php
/dokuwiki/inc/Parsing/ParserMode/Eol.php
/dokuwiki/inc/Parsing/ParserMode/Externallink.php
/dokuwiki/inc/Parsing/ParserMode/File.php
/dokuwiki/inc/Parsing/ParserMode/Filelink.php
/dokuwiki/inc/Parsing/ParserMode/Footnote.php
/dokuwiki/inc/Parsing/ParserMode/Header.php
/dokuwiki/inc/Parsing/ParserMode/Hr.php
/dokuwiki/inc/Parsing/ParserMode/Internallink.php
/dokuwiki/inc/Parsing/ParserMode/Linebreak.php
/dokuwiki/inc/Parsing/ParserMode/Listblock.php
/dokuwiki/inc/Parsing/ParserMode/Media.php
/dokuwiki/inc/Parsing/ParserMode/ModeInterface.php
/dokuwiki/inc/Parsing/ParserMode/Monospace.php
/dokuwiki/inc/Parsing/ParserMode/Multiplyentity.php
/dokuwiki/inc/Parsing/ParserMode/Nocache.php
/dokuwiki/inc/Parsing/ParserMode/Notoc.php
/dokuwiki/inc/Parsing/ParserMode/Preformatted.php
/dokuwiki/inc/Parsing/ParserMode/Quote.php
/dokuwiki/inc/Parsing/ParserMode/Quotes.php
/dokuwiki/inc/Parsing/ParserMode/Rss.php
/dokuwiki/inc/Parsing/ParserMode/Smiley.php
/dokuwiki/inc/Parsing/ParserMode/Strong.php
/dokuwiki/inc/Parsing/ParserMode/Subscript.php
/dokuwiki/inc/Parsing/ParserMode/Superscript.php
/dokuwiki/inc/Parsing/ParserMode/Table.php
/dokuwiki/inc/Parsing/ParserMode/Underline.php
/dokuwiki/inc/Parsing/ParserMode/Unformatted.php
/dokuwiki/inc/Parsing/ParserMode/Windowssharelink.php
/dokuwiki/inc/Parsing/ParserMode/Wordblock.php
/dokuwiki/inc/deprecated.php
/dokuwiki/inc/legacy.php
/dokuwiki/inc/load.php
/dokuwiki/inc/parserutils.php
info/syntax.php
13a62f8104-May-2026 Andreas Gohr <andi@splitbrain.org>

rename syntax flavors 'dokuwiki' / 'markdown' to 'dw' / 'md'

Symmetry with the existing 'dw+md' / 'md+dw' setting values.


/dokuwiki/_test/tests/Parsing/HandlerTest.php
/dokuwiki/_test/tests/Parsing/Helpers/CodeTest.php
/dokuwiki/_test/tests/Parsing/Helpers/EscapeTest.php
/dokuwiki/_test/tests/Parsing/Helpers/LinkTest.php
/dokuwiki/_test/tests/Parsing/Helpers/MediaTest.php
/dokuwiki/_test/tests/Parsing/Lexer/LexerTest.php
/dokuwiki/_test/tests/Parsing/Lexer/ParallelRegexTest.php
/dokuwiki/_test/tests/Parsing/Markdown/GfmSpecTest.php
/dokuwiki/_test/tests/Parsing/Markdown/SpecCompatRenderer.php
/dokuwiki/_test/tests/Parsing/Markdown/SpecReader.php
/dokuwiki/_test/tests/Parsing/Markdown/SpecReaderTest.php
/dokuwiki/_test/tests/Parsing/Markdown/gfm-spec/LICENSE
/dokuwiki/_test/tests/Parsing/Markdown/gfm-spec/README.md
/dokuwiki/_test/tests/Parsing/Markdown/gfm-spec/skip.php
/dokuwiki/_test/tests/Parsing/Markdown/gfm-spec/spec.txt
/dokuwiki/_test/tests/Parsing/ModeRegistryTest.php
/dokuwiki/_test/tests/Parsing/ParserMode/CodeTest.php
/dokuwiki/_test/tests/Parsing/ParserMode/FootnoteTest.php
/dokuwiki/_test/tests/Parsing/ParserMode/FormattingTest.php
/dokuwiki/_test/tests/Parsing/ParserMode/GfmBacktickDoubleTest.php
/dokuwiki/_test/tests/Parsing/ParserMode/GfmBacktickSingleTest.php
/dokuwiki/_test/tests/Parsing/ParserMode/GfmCodeTest.php
/dokuwiki/_test/tests/Parsing/ParserMode/GfmDeletedTest.php
/dokuwiki/_test/tests/Parsing/ParserMode/GfmEmphasisStrongTest.php
/dokuwiki/_test/tests/Parsing/ParserMode/GfmEmphasisStrongUnderscoreTest.php
/dokuwiki/_test/tests/Parsing/ParserMode/GfmEmphasisTest.php
/dokuwiki/_test/tests/Parsing/ParserMode/GfmEmphasisUnderscoreTest.php
/dokuwiki/_test/tests/Parsing/ParserMode/GfmEscapeTest.php
/dokuwiki/_test/tests/Parsing/ParserMode/GfmFileTest.php
/dokuwiki/_test/tests/Parsing/ParserMode/GfmHeaderTest.php
/dokuwiki/_test/tests/Parsing/ParserMode/GfmHrTest.php
/dokuwiki/_test/tests/Parsing/ParserMode/GfmLinebreakTest.php
/dokuwiki/_test/tests/Parsing/ParserMode/GfmLinkTest.php
/dokuwiki/_test/tests/Parsing/ParserMode/GfmListblockTest.php
/dokuwiki/_test/tests/Parsing/ParserMode/GfmMediaTest.php
/dokuwiki/_test/tests/Parsing/ParserMode/GfmQuoteTest.php
/dokuwiki/_test/tests/Parsing/ParserMode/GfmStrongUnderscoreTest.php
/dokuwiki/_test/tests/Parsing/ParserMode/GfmTableTest.php
/dokuwiki/_test/tests/Parsing/ParserMode/ListsTest.php
/dokuwiki/_test/tests/Parsing/ParserMode/MediaTest.php
/dokuwiki/_test/tests/Parsing/ParserMode/PreformattedTest.php
/dokuwiki/_test/tests/Parsing/ParserMode/ReplacementsTest.php
/dokuwiki/conf/dokuwiki.php
/dokuwiki/inc/Parsing/Handler.php
/dokuwiki/inc/Parsing/Handler/AbstractListsRewriter.php
/dokuwiki/inc/Parsing/Handler/Block.php
/dokuwiki/inc/Parsing/Handler/GfmLists.php
/dokuwiki/inc/Parsing/Handler/GfmTable.php
/dokuwiki/inc/Parsing/Handler/Lists.php
/dokuwiki/inc/Parsing/Helpers/Code.php
/dokuwiki/inc/Parsing/Helpers/Escape.php
/dokuwiki/inc/Parsing/Helpers/Link.php
/dokuwiki/inc/Parsing/Helpers/Media.php
/dokuwiki/inc/Parsing/Lexer/Lexer.php
/dokuwiki/inc/Parsing/Lexer/ParallelRegex.php
/dokuwiki/inc/Parsing/ModeRegistry.php
/dokuwiki/inc/Parsing/Parser.php
/dokuwiki/inc/Parsing/ParserMode/AbstractFormatting.php
/dokuwiki/inc/Parsing/ParserMode/AbstractMode.php
/dokuwiki/inc/Parsing/ParserMode/Code.php
/dokuwiki/inc/Parsing/ParserMode/Deleted.php
/dokuwiki/inc/Parsing/ParserMode/Emphasis.php
/dokuwiki/inc/Parsing/ParserMode/GfmBacktickDouble.php
/dokuwiki/inc/Parsing/ParserMode/GfmBacktickSingle.php
/dokuwiki/inc/Parsing/ParserMode/GfmCode.php
/dokuwiki/inc/Parsing/ParserMode/GfmDeleted.php
/dokuwiki/inc/Parsing/ParserMode/GfmEmphasis.php
/dokuwiki/inc/Parsing/ParserMode/GfmEmphasisStrong.php
/dokuwiki/inc/Parsing/ParserMode/GfmEmphasisStrongUnderscore.php
/dokuwiki/inc/Parsing/ParserMode/GfmEmphasisUnderscore.php
/dokuwiki/inc/Parsing/ParserMode/GfmEscape.php
/dokuwiki/inc/Parsing/ParserMode/GfmFile.php
/dokuwiki/inc/Parsing/ParserMode/GfmHeader.php
/dokuwiki/inc/Parsing/ParserMode/GfmHr.php
/dokuwiki/inc/Parsing/ParserMode/GfmLinebreak.php
/dokuwiki/inc/Parsing/ParserMode/GfmLink.php
/dokuwiki/inc/Parsing/ParserMode/GfmListblock.php
/dokuwiki/inc/Parsing/ParserMode/GfmMedia.php
/dokuwiki/inc/Parsing/ParserMode/GfmQuote.php
/dokuwiki/inc/Parsing/ParserMode/GfmStrongUnderscore.php
/dokuwiki/inc/Parsing/ParserMode/GfmTable.php
/dokuwiki/inc/Parsing/ParserMode/Internallink.php
/dokuwiki/inc/Parsing/ParserMode/Listblock.php
/dokuwiki/inc/Parsing/ParserMode/Media.php
/dokuwiki/inc/Parsing/ParserMode/Monospace.php
/dokuwiki/inc/Parsing/ParserMode/Preformatted.php
/dokuwiki/inc/Parsing/ParserMode/Strong.php
/dokuwiki/inc/Parsing/ParserMode/Subscript.php
/dokuwiki/inc/Parsing/ParserMode/Superscript.php
/dokuwiki/inc/Parsing/ParserMode/Underline.php
/dokuwiki/inc/parser/renderer.php
/dokuwiki/inc/parser/xhtml.php
config/lang/en/lang.php
config/settings/config.metadata.php
5976824702-May-2026 Kerem ATA <contact@zoda-service.web.tr>

Translation update (tr)

50ca5d0629-Apr-2026 Schplurtz le Déboulonné <Schplurtz@laposte.net>

Translation update (fr)

17c6179b20-Apr-2026 Andreas Gohr <gohr@cosmocode.de>

add $conf['syntax'] setting and conditional mode loading in ModeRegistry

Introduce a new 'syntax' configuration setting (dokuwiki, markdown, dw+md, md+dw)
that controls which parser modes are loaded

add $conf['syntax'] setting and conditional mode loading in ModeRegistry

Introduce a new 'syntax' configuration setting (dokuwiki, markdown, dw+md, md+dw)
that controls which parser modes are loaded. Built-in modes are split into
always-loaded (no Markdown equivalent), DW-only, and MD-only groups.
Refactor getModes() into focused sub-methods for each group.

No Gfm mode classes exist yet, so only 'dokuwiki' is functional.
The change is a strict no-op for existing behavior.

show more ...


/dokuwiki/_test/bootstrap.php
/dokuwiki/_test/phpcs.xml
/dokuwiki/_test/rector.php
/dokuwiki/_test/tests/Parsing/HandlerTest.php
/dokuwiki/_test/tests/Parsing/Lexer/LexerTest.php
/dokuwiki/_test/tests/Parsing/Lexer/ParallelRegexTest.php
/dokuwiki/_test/tests/Parsing/Lexer/RecordingHandler.php
/dokuwiki/_test/tests/Parsing/Lexer/StateStackTest.php
/dokuwiki/_test/tests/Parsing/ModeRegistryTest.php
/dokuwiki/_test/tests/Parsing/ParserMode/CodeTest.php
/dokuwiki/_test/tests/Parsing/ParserMode/EolTest.php
/dokuwiki/_test/tests/Parsing/ParserMode/FileTest.php
/dokuwiki/_test/tests/Parsing/ParserMode/FootnoteTest.php
/dokuwiki/_test/tests/Parsing/ParserMode/FormattingTest.php
/dokuwiki/_test/tests/Parsing/ParserMode/HeadersTest.php
/dokuwiki/_test/tests/Parsing/ParserMode/I18nTest.php
/dokuwiki/_test/tests/Parsing/ParserMode/LinksTest.php
/dokuwiki/_test/tests/Parsing/ParserMode/ListsTest.php
/dokuwiki/_test/tests/Parsing/ParserMode/MediaTest.php
/dokuwiki/_test/tests/Parsing/ParserMode/NocacheTest.php
/dokuwiki/_test/tests/Parsing/ParserMode/NotocTest.php
/dokuwiki/_test/tests/Parsing/ParserMode/ParserTestBase.php
/dokuwiki/_test/tests/Parsing/ParserMode/PreformattedTest.php
/dokuwiki/_test/tests/Parsing/ParserMode/QuoteTest.php
/dokuwiki/_test/tests/Parsing/ParserMode/QuotesTest.php
/dokuwiki/_test/tests/Parsing/ParserMode/ReplacementsTest.php
/dokuwiki/_test/tests/Parsing/ParserMode/RssTest.php
/dokuwiki/_test/tests/Parsing/ParserMode/TableTest.php
/dokuwiki/_test/tests/Parsing/ParserMode/UnformattedTest.php
/dokuwiki/conf/dokuwiki.php
/dokuwiki/inc/Cache/CacheParser.php
/dokuwiki/inc/Extension/SyntaxPlugin.php
/dokuwiki/inc/Parsing/Handler.php
/dokuwiki/inc/Parsing/Handler/AbstractRewriter.php
/dokuwiki/inc/Parsing/Handler/CallWriter.php
/dokuwiki/inc/Parsing/Handler/Lists.php
/dokuwiki/inc/Parsing/Handler/Nest.php
/dokuwiki/inc/Parsing/Handler/Preformatted.php
/dokuwiki/inc/Parsing/Handler/Quote.php
/dokuwiki/inc/Parsing/Handler/Table.php
/dokuwiki/inc/Parsing/Lexer/Lexer.php
/dokuwiki/inc/Parsing/Lexer/ParallelRegex.php
/dokuwiki/inc/Parsing/ModeRegistry.php
/dokuwiki/inc/Parsing/Parser.php
/dokuwiki/inc/Parsing/ParserMode/AbstractFormatting.php
/dokuwiki/inc/Parsing/ParserMode/Acronym.php
/dokuwiki/inc/Parsing/ParserMode/Base.php
/dokuwiki/inc/Parsing/ParserMode/Camelcaselink.php
/dokuwiki/inc/Parsing/ParserMode/Code.php
/dokuwiki/inc/Parsing/ParserMode/Deleted.php
/dokuwiki/inc/Parsing/ParserMode/Emaillink.php
/dokuwiki/inc/Parsing/ParserMode/Emphasis.php
/dokuwiki/inc/Parsing/ParserMode/Entity.php
/dokuwiki/inc/Parsing/ParserMode/Eol.php
/dokuwiki/inc/Parsing/ParserMode/Externallink.php
/dokuwiki/inc/Parsing/ParserMode/File.php
/dokuwiki/inc/Parsing/ParserMode/Filelink.php
/dokuwiki/inc/Parsing/ParserMode/Footnote.php
/dokuwiki/inc/Parsing/ParserMode/Header.php
/dokuwiki/inc/Parsing/ParserMode/Hr.php
/dokuwiki/inc/Parsing/ParserMode/Internallink.php
/dokuwiki/inc/Parsing/ParserMode/Linebreak.php
/dokuwiki/inc/Parsing/ParserMode/Listblock.php
/dokuwiki/inc/Parsing/ParserMode/Media.php
/dokuwiki/inc/Parsing/ParserMode/ModeInterface.php
/dokuwiki/inc/Parsing/ParserMode/Monospace.php
/dokuwiki/inc/Parsing/ParserMode/Multiplyentity.php
/dokuwiki/inc/Parsing/ParserMode/Nocache.php
/dokuwiki/inc/Parsing/ParserMode/Notoc.php
/dokuwiki/inc/Parsing/ParserMode/Preformatted.php
/dokuwiki/inc/Parsing/ParserMode/Quote.php
/dokuwiki/inc/Parsing/ParserMode/Quotes.php
/dokuwiki/inc/Parsing/ParserMode/Rss.php
/dokuwiki/inc/Parsing/ParserMode/Smiley.php
/dokuwiki/inc/Parsing/ParserMode/Strong.php
/dokuwiki/inc/Parsing/ParserMode/Subscript.php
/dokuwiki/inc/Parsing/ParserMode/Superscript.php
/dokuwiki/inc/Parsing/ParserMode/Table.php
/dokuwiki/inc/Parsing/ParserMode/Underline.php
/dokuwiki/inc/Parsing/ParserMode/Unformatted.php
/dokuwiki/inc/Parsing/ParserMode/Windowssharelink.php
/dokuwiki/inc/Parsing/ParserMode/Wordblock.php
/dokuwiki/inc/deprecated.php
/dokuwiki/inc/legacy.php
/dokuwiki/inc/load.php
/dokuwiki/inc/parserutils.php
config/lang/en/lang.php
config/settings/config.metadata.php

12345678910>>...117