History log of /dokuwiki/lib/ (Results 1 – 25 of 4564)
Revision Date Author Comments
(<<< Hide modified files)
(Show modified files >>>)
5d71952d16-Jun-2026 Andreas Gohr <andi@splitbrain.org>

Translation update (de)

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

Translation update (sk)

7e687fd829-May-2026 Andreas Gohr <andi@splitbrain.org>

fix(auth): scope media ACL checks to the namespace

Media files have no per-file ACLs; permissions must be evaluated against
the namespace they live in. Several call sites passed the raw media ID
to

fix(auth): scope media ACL checks to the namespace

Media files have no per-file ACLs; permissions must be evaluated against
the namespace they live in. Several call sites passed the raw media ID
to auth_quickaclcheck(), so a page-intended exact-ID rule (e.g. on
wiki:secret.png) could silently apply to a media file sharing that ID.

Introduce mediaAclPath() that builds the correct namespace wildcard
path (handling root-namespace media) and route all media-related ACL
checks through it. Also normalize the lone `:X` sentinel variant in
fetch.functions.php to the standard `:*` form.

fixes: #4647

show more ...

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
plugins/info/syntax.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)

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

fix: don't move the editor textarea into the toolbar

addBtnActionSignature() returns the edid (wiki__text) as its "pickerid"
so the signature button gets aria-controls set correctly. Since 7e35897a

fix: don't move the editor textarea into the toolbar

addBtnActionSignature() returns the edid (wiki__text) as its "pickerid"
so the signature button gets aria-controls set correctly. Since 7e35897a
that return value is also used to re-parent the element into the toolbar,
which pulled the textarea out of the edit form. Form submissions then
carried no wikitext, breaking preview and silently deleting the page on
save. Any plugin toolbar button registered after the signature button
(e.g. vshare) also ended up below the textarea instead of in the toolbar.

Skip the append when the returned id matches the editor id.

closes #4623

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 ...

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

fix: avoid picker close/reopen race on toggle button click

When focus was inside the picker and the toolbar toggle button was
clicked, focusout would close the picker before the click handler
toggle

fix: avoid picker close/reopen race on toggle button click

When focus was inside the picker and the toolbar toggle button was
clicked, focusout would close the picker before the click handler
toggled it, causing an immediate reopen. Skip the focusout-triggered
close when focus moves to a picker toggle button.

show more ...

8b6706eb19-Apr-2026 Vyacheslav <bryanskmap@ya.ru>

Translation update (ru)

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

Translation update (pl)

4a909b5418-Apr-2026 Eduardo Mozart de Oliveira <eduardomozart182@gmail.com>

Translation update (pt-br)

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 ...

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

fix code copy button copying its own text, closes #4617

Hide the button before reading innerText so the button label
is not included in the copied text.

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

better whitespace handling in log viewer

b929bbff15-Apr-2026 Vyacheslav <bryanskmap@ya.ru>

Translation update (ru)

fe6048cc14-Apr-2026 Alexander Lehmann <alexlehm@gmail.com>

remove realip option, add default in conf/dokuwiki.php

3f4748e606-Mar-2026 Tobias Bengfort <tobias.bengfort@posteo.de>

close picker on focusout and escape

2322900d06-Mar-2026 Tobias Bengfort <tobias.bengfort@posteo.de>

a11y: rm picker from tab order when hidden

effect on accesskey:

- firefox: works either way
- chrome: does not work either way

8ddf96a806-Mar-2026 Tobias Bengfort <tobias.bengfort@posteo.de>

a11y: tweak picker aria attributes

inspired by https://github.com/twbs/bootstrap/pull/33624

7e35897a06-Mar-2026 Tobias Bengfort <tobias.bengfort@posteo.de>

a11y: move picker after the relevant button

12345678910>>...183