History log of /dokuwiki/inc/ (Results 1 – 25 of 6641)
Revision Date Author Comments
(<<< Hide modified files)
(Show modified files >>>)
7686f20312-May-2026 Anna Dabrowska <dabrowska@cosmocode.de>

Fix syntax plugin rendering

Reverse the order in which core modes and plugin modes are handled by the \dokuwiki\Parsing\Handler.
Otherwise only the handle() method of the plugin is called, which is

Fix syntax plugin rendering

Reverse the order in which core modes and plugin modes are handled by the \dokuwiki\Parsing\Handler.
Otherwise only the handle() method of the plugin is called, which is fine for core modes. Syntax plugins need to go through plugin() to actually add their own calls.

show more ...

53307a6b09-May-2026 Andreas Gohr <andi@splitbrain.org>

Delete inc/Search/concept.txt

The contents have been added to the wiki


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

�� Rector and PHPCS fixes

56c730b506-May-2026 Andreas Gohr <andi@splitbrain.org>

keep historic typo in value but not in constant

We need to keep the historic typo in the value ("substition"), but there
is no reason to keep it in the constant.

4f29a5b906-May-2026 Andreas Gohr <andi@splitbrain.org>

SearchIndex: fix comment position

single line comment moved to the wrong line on reformatting

27bd777102-May-2026 splitbrain <86426+splitbrain@users.noreply.github.com>

�� Rector and PHPCS fixes

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)

01e8d73925-Apr-2026 Andreas Gohr <andi@splitbrain.org>

refactor(changelog): persist external-edit detection on first read

This addresses the flaky test that makes tests randomly fail (mostly on
windows runners).

The flake in common_saveWikiText_test::t

refactor(changelog): persist external-edit detection on first read

This addresses the flaky test that makes tests randomly fail (mostly on
windows runners).

The flake in common_saveWikiText_test::test_savesequence5 came from
this line in ChangeLog::getCurrentRevisionInfo():

'date' => max($lastRev + 1, time() - 1)

The synthesized "external delete" entry was kept in memory only and
only persisted later, when saveWikiText next called detectExternalEdit.
That meant the formula was evaluated twice on different ChangeLog
instances — once during the test's inspection, and again during the
following saveWikiText — and the two evaluations could pick different
seconds depending on how long the surrounding I/O took. The test
cached the first result in $expectExternal and asserted it against the
on-disk entry written during the second call. On the slower Windows
runner the second call sometimes crossed a second boundary, producing
the off-by-one date mismatch.

The questions I had was, why are we persisting external file deletions
(or edits) only when a page is saved when we are obviously already
detecting it earlier during the changelog read already?

Instead of recording the external delete at the time a new page is
written, it makes sense to record it as soon as we detect it (when the
changelog is requested by a user or a bot). This will make the recoded
timestamp closer to the actual deletion.

This patch refactors the changelog accordingly, but still tries to be
minimal invasive (I think the changelog handling would need much more
refactoring, but that's beyond the scope of this change).

To enable proper locking (when logging an external edit and copying
the attic file), locking had to be moved to the Changelog class,
duplicating some code of io_saveFile.

PageFile::detectExternalEdit() and the deprecated procedural wrapper
detectExternalEdit() in inc/common.php are removed. A codesearch.dokuwiki.org
check confirmed no plugin calls the method directly; the only external
caller of the procedural function is the farmsync plugin, which needs
a parallel update.

show more ...

b9e35b2f25-Apr-2026 Andreas Gohr <andi@splitbrain.org>

fix(infoutils): escape git log arguments for Windows compatibility

Single quotes are not shell quoting on Windows cmd, causing git to
parse '%cd' as an ambiguous revision and emit a fatal error to s

fix(infoutils): escape git log arguments for Windows compatibility

Single quotes are not shell quoting on Windows cmd, causing git to
parse '%cd' as an ambiguous revision and emit a fatal error to stderr.
Pass each argument through escapeshellarg() so quoting works on both
Unix and Windows.

show more ...

daa7635523-Apr-2026 Andreas Gohr <andi@splitbrain.org>

fix(preview): remove deprecated X-XSS-Protection header

The header was added in 2015 to work around Chrome's XSS Auditor
false-positives on preview pages (issue #1182). Chrome removed the
auditor in

fix(preview): remove deprecated X-XSS-Protection header

The header was added in 2015 to work around Chrome's XSS Auditor
false-positives on preview pages (issue #1182). Chrome removed the
auditor in version 78 (2019); no other browser ever shipped it. The
header is non-standard, deprecated, and a no-op today.

Fixes #4578

show more ...

dd9e8e5e23-Apr-2026 Andreas Gohr <andi@splitbrain.org>

fix EXIF-rotated images shown cropped in previews, closes #4482

JPEGs with EXIF orientation 5/6/7/8 were rendered cropped in the
mediamanager detail view, the image diff view and the fullscreen
deta

fix EXIF-rotated images shown cropped in previews, closes #4482

JPEGs with EXIF orientation 5/6/7/8 were rendered cropped in the
mediamanager detail view, the image diff view and the fullscreen
detail page: getimagesize() / JpegMeta report raw (rotation-unaware)
pixel dimensions, and passing both w and h to fetch.php defaults to
center-crop.

- Bump splitbrain/slika to 1.1, which ships ImageInfo: a rotation-
aware, metadata-only dimension simulator mirroring Adapter's
fluent API (autorotate/resize/crop).
- Add fit=1 to fetch.php: when both w and h are given, route to
media_resize_image() (bbox fit) instead of media_crop_image().
Token hashes only (id, w, h) so existing tokens stay valid.
- Add MediaFile::getDisplayDimensions($w, $h, $crop) which delegates
to ImageInfo and returns the dims fetch.php would produce.
- Add Display::getDetailHtml() and retire media_preview() / the old
media_image_preview_size() helper. media_tab_view and MediaDiff
now share the Display-based renderer.
- Rewrite tpl_img() (lib/tpl/*/detail.php) to use MediaFile dims +
fit=1 URL; drops the manual ratio math.
- Tests: MediaFileTest covers the dims math, DisplayTest covers the
detail-view HTML (rotated dims, rev-vs-timestamp URL selection,
structure), fetch_imagetoken gains a fit-token compat test.
Fixture _test/data/media/wiki/exif-orient-6.jpg: 20x30 JPEG with
EXIF orientation 6.

show more ...

0a5c6ce419-Apr-2026 Andreas Gohr <andi@splitbrain.org>

subscriptions: include diff link in plain-text list mails too

Fixes the docblock of lastRevBefore() and extends the diff link added to
the HTML list mail to the plain-text variant as well, so both f

subscriptions: include diff link in plain-text list mails too

Fixes the docblock of lastRevBefore() and extends the diff link added to
the HTML list mail to the plain-text variant as well, so both formats
stay in sync.

show more ...

f0f42d3b18-Apr-2026 Marek Adamski <fevbew@wp.pl>

Translation update (pl)

90c2f6e318-Apr-2026 Andreas Gohr <andi@splitbrain.org>

Clean up stale realip references after client_ip_header rename

Update docblocks in Ip.php and common.php, fix old tests to use
the new config key, remove outdated translations, fix method casing
in

Clean up stale realip references after client_ip_header rename

Update docblocks in Ip.php and common.php, fix old tests to use
the new config key, remove outdated translations, fix method casing
in test, and add example to English config description.

show more ...

04045fea18-Apr-2026 Andreas Gohr <andi@splitbrain.org>

remove unused rewriteBlocks property from Handler

This flag was added in b7c441b9 (2005) for planned wiki syntax
converters but was never set to false anywhere. Remove the dead
conditional and alway

remove unused rewriteBlocks property from Handler

This flag was added in b7c441b9 (2005) for planned wiki syntax
converters but was never set to false anywhere. Remove the dead
conditional and always run Block processing.

show more ...

3ea3771b18-Apr-2026 Andreas Gohr <andi@splitbrain.org>

supress code sniffer warning on deprecation wrapper

Previously the whole file was excluded. We can now be more precise.

259e91d918-Apr-2026 Andreas Gohr <andi@splitbrain.org>

clean up Acronym and Preformatted

- remove stale comment, use closure for array_map, simplify compare
with spaceship operator in Acronym
- clarify misleading comment in Preformatted

71096e4618-Apr-2026 Andreas Gohr <andi@splitbrain.org>

move handler methods into ParserMode classes and rename Handler

Each ParserMode class now implements handle() from ModeInterface,
containing the token handling logic that previously lived as individ

move handler methods into ParserMode classes and rename Handler

Each ParserMode class now implements handle() from ModeInterface,
containing the token handling logic that previously lived as individual
methods on Doku_Handler.

The Handler class (formerly Doku_Handler) is the single dispatch point:
Lexer passes tokens to Handler::handleToken() which routes to mode
objects, plugins, or returns false. The Lexer only tokenizes and
resolves mapHandler aliases.

Key changes:
- Add handle() to ModeInterface, implemented by all mode classes
- Move Doku_Handler to dokuwiki\Parsing\Handler namespace
- File extends Code (shared parsing via $type property)
- Quotes uses mapHandler() + Handler::getModeName() for sub-modes
- Media::parseMedia() replaces Doku_Handler_Parse_Media()
- Code::parseHighlightOptions() replaces parse_highlight_options()
- Per-parse state (footnote, doublequote) stays on Handler
- Deprecated wrappers kept for base/header/internallink/media
- Class alias and rector rules added for backward compatibility

show more ...


/dokuwiki/_test/rector.php
/dokuwiki/_test/tests/Parsing/HandlerTest.php
/dokuwiki/_test/tests/Parsing/ModeRegistryTest.php
/dokuwiki/_test/tests/inc/parser/handler_parse_highlight_options.test.php
/dokuwiki/_test/tests/inc/parser/lexer.test.php
/dokuwiki/_test/tests/inc/parser/parser.inc.php
/dokuwiki/_test/tests/inc/parser/parser_quotes.test.php
Cache/CacheParser.php
Extension/SyntaxPlugin.php
Parsing/Handler.php
Parsing/Handler/CallWriter.php
Parsing/Lexer/Lexer.php
Parsing/Parser.php
Parsing/ParserMode/AbstractFormatting.php
Parsing/ParserMode/Acronym.php
Parsing/ParserMode/Base.php
Parsing/ParserMode/Camelcaselink.php
Parsing/ParserMode/Code.php
Parsing/ParserMode/Deleted.php
Parsing/ParserMode/Emaillink.php
Parsing/ParserMode/Emphasis.php
Parsing/ParserMode/Entity.php
Parsing/ParserMode/Eol.php
Parsing/ParserMode/Externallink.php
Parsing/ParserMode/File.php
Parsing/ParserMode/Filelink.php
Parsing/ParserMode/Footnote.php
Parsing/ParserMode/Header.php
Parsing/ParserMode/Hr.php
Parsing/ParserMode/Internallink.php
Parsing/ParserMode/Linebreak.php
Parsing/ParserMode/Listblock.php
Parsing/ParserMode/Media.php
Parsing/ParserMode/ModeInterface.php
Parsing/ParserMode/Monospace.php
Parsing/ParserMode/Multiplyentity.php
Parsing/ParserMode/Nocache.php
Parsing/ParserMode/Notoc.php
Parsing/ParserMode/Preformatted.php
Parsing/ParserMode/Quote.php
Parsing/ParserMode/Quotes.php
Parsing/ParserMode/Rss.php
Parsing/ParserMode/Smiley.php
Parsing/ParserMode/Strong.php
Parsing/ParserMode/Subscript.php
Parsing/ParserMode/Superscript.php
Parsing/ParserMode/Table.php
Parsing/ParserMode/Underline.php
Parsing/ParserMode/Unformatted.php
Parsing/ParserMode/Windowssharelink.php
Parsing/ParserMode/Wordblock.php
deprecated.php
legacy.php
load.php
parserutils.php
7958e69816-Apr-2026 Andreas Gohr <andi@splitbrain.org>

decouple hardcoded mode names in Eol and Preformatted

Eol.php hardcoded ['listblock', 'table'] as modes to skip, and
Preformatted.php hardcoded [\*\-] as a negative lookahead for list
markers. Both

decouple hardcoded mode names in Eol and Preformatted

Eol.php hardcoded ['listblock', 'table'] as modes to skip, and
Preformatted.php hardcoded [\*\-] as a negative lookahead for list
markers. Both embed knowledge that belongs to the respective block
modes, not to Eol/Preformatted. Adding a new block mode that handles
its own EOL or uses different line start markers would require editing
these unrelated files — a hidden coupling.

Listblock and Table now register themselves on ModeRegistry during
preConnect(). Eol queries getBlockEolModes() and Preformatted queries
getLineStartMarkers() to build its lookahead dynamically. Each mode
owns its own data, and new block modes can participate without touching
unrelated files.

show more ...

1f44347616-Apr-2026 Andreas Gohr <andi@splitbrain.org>

split Formatting into individual classes per formatting type

Introduce AbstractFormatting as a base class and seven concrete
classes (Strong, Emphasis, Underline, Monospace, Subscript,
Superscript,

split Formatting into individual classes per formatting type

Introduce AbstractFormatting as a base class and seven concrete
classes (Strong, Emphasis, Underline, Monospace, Subscript,
Superscript, Deleted) that each define their own patterns and
sort order. Delete the old Formatting class and update tests
to use the new classes directly. ModeRegistry now treats
formatting modes as regular built-in modes.

show more ...

c8dd1b9d16-Apr-2026 Andreas Gohr <andi@splitbrain.org>

introduce ModeRegistry to encapsulate parser mode categories

Replace the global $PARSER_MODES definition in inc/parser/parser.php
with a ModeRegistry singleton that initializes and manages the mode

introduce ModeRegistry to encapsulate parser mode categories

Replace the global $PARSER_MODES definition in inc/parser/parser.php
with a ModeRegistry singleton that initializes and manages the mode
categories. The global array is still populated for backward
compatibility with plugins that access it directly.

Mode constructors now use ModeRegistry::getModesForCategories()
instead of accessing the global directly. p_get_parsermodes() and
p_sort_modes() are moved to inc/deprecated.php as thin wrappers.

show more ...

8c5fa12616-Apr-2026 Andreas Gohr <gohr@cosmocode.de>

deduplicate finalise() across rewriter subclasses

Move the identical finalise() logic into AbstractRewriter with an
abstract getClosingCall() method. Lists, Quote, Table, Preformatted
and Nest each

deduplicate finalise() across rewriter subclasses

Move the identical finalise() logic into AbstractRewriter with an
abstract getClosingCall() method. Lists, Quote, Table, Preformatted
and Nest each provide their closing call name instead of duplicating
the full method.

show more ...

57d6140316-Apr-2026 Andreas Gohr <gohr@cosmocode.de>

remove unused Doku_Handler::fetch() method

Confirmed zero callers in core and plugin ecosystem.

8ab4ec3016-Apr-2026 Andreas Gohr <gohr@cosmocode.de>

remove dead ParallelRegex::apply() method

Remove apply() which was never called from production code. Rewrite
the inherited SimpleTest tests to use split() instead, and add a
test for pre/post-match

remove dead ParallelRegex::apply() method

Remove apply() which was never called from production code. Rewrite
the inherited SimpleTest tests to use split() instead, and add a
test for pre/post-match splitting.

show more ...

12345678910>>...266