moodle.git
47 hours agoweekly release 5.0.6+ MOODLE_500_STABLE
Shamim Rezaie [Fri, 10 Apr 2026 07:11:16 +0000 (17:11 +1000)]
weekly release 5.0.6+

47 hours agoNOBUG: Add upgrade notes
Shamim Rezaie [Fri, 10 Apr 2026 07:11:15 +0000 (17:11 +1000)]
NOBUG: Add upgrade notes

3 days agoMDL-86386 qbank_managecategories: Use batches to remove stale questions
Anupama Sarjoshi [Wed, 14 Jan 2026 07:55:11 +0000 (13:25 +0530)]
MDL-86386 qbank_managecategories: Use batches to remove stale questions

Iterate through stale questions in batches using get_records_sql
to better handle large question banks and avoid memory or timeout
issues during processing.

3 days agoMDL-88145 core: Update deprecated function in security helper unit test
Michael Hawkins [Mon, 10 Nov 2025 11:30:17 +0000 (19:30 +0800)]
MDL-88145 core: Update deprecated function in security helper unit test

3 days agoMDL-88145 core: Security helper additional unit test and typo fix
Michael Hawkins [Mon, 10 Nov 2025 11:28:32 +0000 (19:28 +0800)]
MDL-88145 core: Security helper additional unit test and typo fix

Adds unit testing to incorrect call order for get_resolve_info() and
also fixes an incorrect bracket closure on an empty statement.

4 days agoMDL-88390 repository: explicit string cast of file source data.
Paul Holden [Tue, 7 Apr 2026 19:11:45 +0000 (20:11 +0100)]
MDL-88390 repository: explicit string cast of file source data.

4 days agoMDL-87778 tasks: Fix bug with deep linking to log page
Brendan Heywood [Tue, 7 Apr 2026 13:49:04 +0000 (23:49 +1000)]
MDL-87778 tasks: Fix bug with deep linking to log page

5 days agoMDL-80496 filter_codehighlighter: add prism- prefix to CSS classes
Simon Parzer [Sat, 26 Apr 2025 14:32:15 +0000 (16:32 +0200)]
MDL-80496 filter_codehighlighter: add prism- prefix to CSS classes

Add CustomClass plugin to PrismJS
Update behat test

8 days agoMDL-87903 core: Warm local hooks cache from shared cache
Brendan Heywood [Mon, 9 Feb 2026 23:12:07 +0000 (10:12 +1100)]
MDL-87903 core: Warm local hooks cache from shared cache

9 days agoweekly release 5.0.6+
Huong Nguyen [Fri, 3 Apr 2026 02:23:33 +0000 (09:23 +0700)]
weekly release 5.0.6+

9 days agoNOBUG: Add upgrade notes
Huong Nguyen [Fri, 3 Apr 2026 02:23:33 +0000 (09:23 +0700)]
NOBUG: Add upgrade notes

9 days agoNOBUG: Fixed SVG browser compatibility
Huong Nguyen [Fri, 3 Apr 2026 02:23:11 +0000 (09:23 +0700)]
NOBUG: Fixed SVG browser compatibility

9 days agoAutomatically generated installer lang files
AMOS bot [Fri, 3 Apr 2026 00:07:45 +0000 (00:07 +0000)]
Automatically generated installer lang files

9 days agoMDL-88006 ai: normalise line breaks in AI response helper.
Paul Holden [Tue, 3 Mar 2026 13:57:35 +0000 (13:57 +0000)]
MDL-88006 ai: normalise line breaks in AI response helper.

Match multiple instances of either CRLF, LF and/or BR tags, replace
them with double <br/> tags for consistent output.

10 days agoMDL-88092 core_h5p: Fix version conflict
Safat [Wed, 1 Apr 2026 12:02:58 +0000 (23:02 +1100)]
MDL-88092 core_h5p: Fix version conflict

10 days agoAutomatically generated installer lang files
AMOS bot [Thu, 2 Apr 2026 00:08:07 +0000 (00:08 +0000)]
Automatically generated installer lang files

10 days agoMDL-87498 tool_task: Adhoc queue check ignores failed tasks
Brendan Heywood [Thu, 18 Dec 2025 13:18:25 +0000 (00:18 +1100)]
MDL-87498 tool_task: Adhoc queue check ignores failed tasks

Co-authored-by: David Woloszyn <david.woloszyn@moodle.com>
11 days agoMDL-77649 glossary: Add top spacing for fullsearch checkbox
Jun Pataleta [Thu, 15 Jan 2026 13:00:29 +0000 (21:00 +0800)]
MDL-77649 glossary: Add top spacing for fullsearch checkbox

This is to meet WCAG 2.2 AA Target size requirements found by
accessibility Behat tests.

11 days agoMDL-77649 glossary: Query user record only when necessary
Jun Pataleta [Thu, 15 Jan 2026 04:34:28 +0000 (12:34 +0800)]
MDL-77649 glossary: Query user record only when necessary

We should only be querying the user record only when we are displaying
an entry. If there's no entry to be shown, we do not need to query it.

11 days agoMDL-77649 glossary: Use appropriate author lang string
Jun Pataleta [Tue, 23 Dec 2025 08:14:01 +0000 (16:14 +0800)]
MDL-77649 glossary: Use appropriate author lang string

* Create mod_glossary's own `bynameondate` lang string to avoid
violating component communication rules.

11 days agoMDL-77649 glossary: Fix skipped heading levels
Jun Pataleta [Tue, 23 Dec 2025 08:45:45 +0000 (16:45 +0800)]
MDL-77649 glossary: Fix skipped heading levels

* And adjust Behat tests accordingly

11 days agoMDL-77649 glossary: Set presentation role for entry tables
Jun Pataleta [Thu, 15 Jan 2026 05:33:18 +0000 (13:33 +0800)]
MDL-77649 glossary: Set presentation role for entry tables

* And for entry formats that display a user picture, make the user
picture decorative only to avoid duplicate user profile links on
the page.

11 days agoMDL-77649 glossary: Set presentation role for glossary functions
Jun Pataleta [Thu, 15 Jan 2026 05:31:51 +0000 (13:31 +0800)]
MDL-77649 glossary: Set presentation role for glossary functions

* Set the tables rendered by `glossary_print_entry_lower_section()` and
`glossary_print_entry_approval()` as decorative.

11 days agoMDL-77649 glossary: Render category headers without using layout tables
Jun Pataleta [Tue, 23 Dec 2025 01:50:05 +0000 (09:50 +0800)]
MDL-77649 glossary: Render category headers without using layout tables

11 days agoAutomatically generated installer lang files
AMOS bot [Wed, 1 Apr 2026 00:07:46 +0000 (00:07 +0000)]
Automatically generated installer lang files

11 days agoMDL-68335 qbehaviour: read in settings.php files
Marcus Green [Sun, 15 Feb 2026 19:48:04 +0000 (20:48 +0100)]
MDL-68335 qbehaviour: read in settings.php files

12 days agoMDL-88092 core_h5p: Remove the h5plib_v127 plugin
Shamim Rezaie [Mon, 16 Mar 2026 05:33:08 +0000 (16:33 +1100)]
MDL-88092 core_h5p: Remove the h5plib_v127 plugin

The h5plib_v127 plugin can be removed because it has been replaced with
h5plib_v128, which is using the latest versions of the libraries.

12 days agoMDL-88092 core_h5p: Update editor lib with Moodle-specific adjustments
Shamim Rezaie [Mon, 16 Mar 2026 05:27:59 +0000 (16:27 +1100)]
MDL-88092 core_h5p: Update editor lib with Moodle-specific adjustments

12 days agoMDL-88092 core_h5p: Upgrade joubel/editor library to moodle-1.27.2
Shamim Rezaie [Mon, 16 Mar 2026 05:18:39 +0000 (16:18 +1100)]
MDL-88092 core_h5p: Upgrade joubel/editor library to moodle-1.27.2

This commit is upgrading the joubel/editor library to the one tagged as
moodle-1.27.2 (which interestingly has no difference to moodle-1.27.0).

12 days agoMDL-88092 core_h5p: Update core lib with Moodle-specific adjustments
Shamim Rezaie [Mon, 16 Mar 2026 05:09:25 +0000 (16:09 +1100)]
MDL-88092 core_h5p: Update core lib with Moodle-specific adjustments

12 days agoMDL-88092 core_h5p: Upgrade joubel/core library to v1.28.0
Shamim Rezaie [Mon, 16 Mar 2026 04:44:48 +0000 (15:44 +1100)]
MDL-88092 core_h5p: Upgrade joubel/core library to v1.28.0

This commit is upgrading the joubel/core library to the one
tagged as 1.28.0 (which also increases the coreApi minorVersion).
That's why the previous commit was duplicating the existing h5plib_v127.

12 days agoMDL-88092 h5plib: Create first version of h5plib_v128
Shamim Rezaie [Mon, 16 Mar 2026 04:29:04 +0000 (15:29 +1100)]
MDL-88092 h5plib: Create first version of h5plib_v128

AMOS BEGIN
CPY [editor:a11ytitleshowlabel,h5plib_v127],[editor:a11ytitleshowlabel,h5plib_v128]
CPY [editor:a11ytitlehidelabel,h5plib_v127],[editor:a11ytitlehidelabel,h5plib_v128]
CPY [editor:atoz,h5plib_v127],[editor:atoz,h5plib_v128]
CPY [editor:add,h5plib_v127],[editor:add,h5plib_v128]
CPY [editor:addauthor,h5plib_v127],[editor:addauthor,h5plib_v128]
CPY [editor:addentity,h5plib_v127],[editor:addentity,h5plib_v128]
CPY [editor:addfile,h5plib_v127],[editor:addfile,h5plib_v128]
CPY [editor:addnewchange,h5plib_v127],[editor:addnewchange,h5plib_v128]
CPY [editor:addtitle,h5plib_v127],[editor:addtitle,h5plib_v128]
CPY [editor:addvideodescription,h5plib_v127],[editor:addvideodescription,h5plib_v128]
CPY [editor:avtablistlabel,h5plib_v127],[editor:avtablistlabel,h5plib_v128]
CPY [editor:belowmin,h5plib_v127],[editor:belowmin,h5plib_v128]
CPY [editor:cancel,h5plib_v127],[editor:cancel,h5plib_v128]
CPY [editor:cancellabel,h5plib_v127],[editor:cancellabel,h5plib_v128]
CPY [editor:changefile,h5plib_v127],[editor:changefile,h5plib_v128]
CPY [editor:changelanguage,h5plib_v127],[editor:changelanguage,h5plib_v128]
CPY [editor:changelibrary,h5plib_v127],[editor:changelibrary,h5plib_v128]
CPY [editor:changelogdescription,h5plib_v127],[editor:changelogdescription,h5plib_v128]
CPY [editor:close,h5plib_v127],[editor:close,h5plib_v128]
CPY [editor:commonfields,h5plib_v127],[editor:commonfields,h5plib_v128]
CPY [editor:commonfieldsdescription,h5plib_v127],[editor:commonfieldsdescription,h5plib_v128]
CPY [editor:confirmchangelibrary,h5plib_v127],[editor:confirmchangelibrary,h5plib_v128]
CPY [editor:confirmdeletechangelog,h5plib_v127],[editor:confirmdeletechangelog,h5plib_v128]
CPY [editor:confirmimageremoval,h5plib_v127],[editor:confirmimageremoval,h5plib_v128]
CPY [editor:confirmpastebuttontext,h5plib_v127],[editor:confirmpastebuttontext,h5plib_v128]
CPY [editor:confirmpastecontent,h5plib_v127],[editor:confirmpastecontent,h5plib_v128]
CPY [editor:confirmremoval,h5plib_v127],[editor:confirmremoval,h5plib_v128]
CPY [editor:confirmremoveauthor,h5plib_v127],[editor:confirmremoveauthor,h5plib_v128]
CPY [editor:contenttypebackbuttonlabel,h5plib_v127],[editor:contenttypebackbuttonlabel,h5plib_v128]
CPY [editor:contenttypecacheoutdated,h5plib_v127],[editor:contenttypecacheoutdated,h5plib_v128]
CPY [editor:contenttypecacheoutdateddesc,h5plib_v127],[editor:contenttypecacheoutdateddesc,h5plib_v128]
CPY [editor:contenttypedemobuttonlabel,h5plib_v127],[editor:contenttypedemobuttonlabel,h5plib_v128]
CPY [editor:contenttypedetailbuttonlabel,h5plib_v127],[editor:contenttypedetailbuttonlabel,h5plib_v128]
CPY [editor:contenttypegetbuttonlabel,h5plib_v127],[editor:contenttypegetbuttonlabel,h5plib_v128]
CPY [editor:contenttypeiconalttext,h5plib_v127],[editor:contenttypeiconalttext,h5plib_v128]
CPY [editor:contenttypeinstallbuttonlabel,h5plib_v127],[editor:contenttypeinstallbuttonlabel,h5plib_v128]
CPY [editor:contenttypeinstallerror,h5plib_v127],[editor:contenttypeinstallerror,h5plib_v128]
CPY [editor:contenttypeinstallsuccess,h5plib_v127],[editor:contenttypeinstallsuccess,h5plib_v128]
CPY [editor:contenttypeinstallingbuttonlabel,h5plib_v127],[editor:contenttypeinstallingbuttonlabel,h5plib_v128]
CPY [editor:contenttypelicensepaneltitle,h5plib_v127],[editor:contenttypelicensepaneltitle,h5plib_v128]
CPY [editor:contenttypenotinstalled,h5plib_v127],[editor:contenttypenotinstalled,h5plib_v128]
CPY [editor:contenttypenotinstalleddesc,h5plib_v127],[editor:contenttypenotinstalleddesc,h5plib_v128]
CPY [editor:contenttypeowner,h5plib_v127],[editor:contenttypeowner,h5plib_v128]
CPY [editor:contenttyperestricted,h5plib_v127],[editor:contenttyperestricted,h5plib_v128]
CPY [editor:contenttyperestricteddesc,h5plib_v127],[editor:contenttyperestricteddesc,h5plib_v128]
CPY [editor:contenttypesearchfieldplaceholder,h5plib_v127],[editor:contenttypesearchfieldplaceholder,h5plib_v128]
CPY [editor:contenttypesectionall,h5plib_v127],[editor:contenttypesectionall,h5plib_v128]
CPY [editor:contenttypeunsupportedapiversioncontent,h5plib_v127],[editor:contenttypeunsupportedapiversioncontent,h5plib_v128]
CPY [editor:contenttypeunsupportedapiversiontitle,h5plib_v127],[editor:contenttypeunsupportedapiversiontitle,h5plib_v128]
CPY [editor:contenttypeupdateavailable,h5plib_v127],[editor:contenttypeupdateavailable,h5plib_v128]
CPY [editor:contenttypeupdatebuttonlabel,h5plib_v127],[editor:contenttypeupdatebuttonlabel,h5plib_v128]
CPY [editor:contenttypeupdatesuccess,h5plib_v127],[editor:contenttypeupdatesuccess,h5plib_v128]
CPY [editor:contenttypeupdatingbuttonlabel,h5plib_v127],[editor:contenttypeupdatingbuttonlabel,h5plib_v128]
CPY [editor:contenttypeusebuttonlabel,h5plib_v127],[editor:contenttypeusebuttonlabel,h5plib_v128]
CPY [editor:contributetranslations,h5plib_v127],[editor:contributetranslations,h5plib_v128]
CPY [editor:copiedbutton,h5plib_v127],[editor:copiedbutton,h5plib_v128]
CPY [editor:copiedtoclipboard,h5plib_v127],[editor:copiedtoclipboard,h5plib_v128]
CPY [editor:copybutton,h5plib_v127],[editor:copybutton,h5plib_v128]
CPY [editor:copytoclipboard,h5plib_v127],[editor:copytoclipboard,h5plib_v128]
CPY [editor:createcontenttablabel,h5plib_v127],[editor:createcontenttablabel,h5plib_v128]
CPY [editor:currentmenuselected,h5plib_v127],[editor:currentmenuselected,h5plib_v128]
CPY [editor:editcopyright,h5plib_v127],[editor:editcopyright,h5plib_v128]
CPY [editor:editimage,h5plib_v127],[editor:editimage,h5plib_v128]
CPY [editor:editmode,h5plib_v127],[editor:editmode,h5plib_v128]
CPY [editor:enteraudiotitle,h5plib_v127],[editor:enteraudiotitle,h5plib_v128]
CPY [editor:enteraudiourl,h5plib_v127],[editor:enteraudiourl,h5plib_v128]
CPY [editor:enterfullscreenbuttonlabel,h5plib_v127],[editor:enterfullscreenbuttonlabel,h5plib_v128]
CPY [editor:entervideotitle,h5plib_v127],[editor:entervideotitle,h5plib_v128]
CPY [editor:entervideourl,h5plib_v127],[editor:entervideourl,h5plib_v128]
CPY [editor:errorcalculatingmaxscore,h5plib_v127],[editor:errorcalculatingmaxscore,h5plib_v128]
CPY [editor:errorcommunicatinghubcontent,h5plib_v127],[editor:errorcommunicatinghubcontent,h5plib_v128]
CPY [editor:errorcommunicatinghubtitle,h5plib_v127],[editor:errorcommunicatinghubtitle,h5plib_v128]
CPY [editor:errorheader,h5plib_v127],[editor:errorheader,h5plib_v128]
CPY [editor:errornotsupported,h5plib_v127],[editor:errornotsupported,h5plib_v128]
CPY [editor:errorparamsbroken,h5plib_v127],[editor:errorparamsbroken,h5plib_v128]
CPY [editor:errortoohighversion,h5plib_v127],[editor:errortoohighversion,h5plib_v128]
CPY [editor:example,h5plib_v127],[editor:example,h5plib_v128]
CPY [editor:exceedsmax,h5plib_v127],[editor:exceedsmax,h5plib_v128]
CPY [editor:exitfullscreenbuttonlabel,h5plib_v127],[editor:exitfullscreenbuttonlabel,h5plib_v128]
CPY [editor:expandcollapse,h5plib_v127],[editor:expandcollapse,h5plib_v128]
CPY [editor:filetolarge,h5plib_v127],[editor:filetolarge,h5plib_v128]
CPY [editor:fillinthefieldsbelow,h5plib_v127],[editor:fillinthefieldsbelow,h5plib_v128]
CPY [editor:gethelp,h5plib_v127],[editor:gethelp,h5plib_v128]
CPY [editor:h5pfileuploadservererrorcontent,h5plib_v127],[editor:h5pfileuploadservererrorcontent,h5plib_v128]
CPY [editor:h5pfileuploadservererrortitle,h5plib_v127],[editor:h5pfileuploadservererrortitle,h5plib_v128]
CPY [editor:h5pfilevalidationfailedcontent,h5plib_v127],[editor:h5pfilevalidationfailedcontent,h5plib_v128]
CPY [editor:h5pfilevalidationfailedtitle,h5plib_v127],[editor:h5pfilevalidationfailedtitle,h5plib_v128]
CPY [editor:h5pfilewrongextensioncontent,h5plib_v127],[editor:h5pfilewrongextensioncontent,h5plib_v128]
CPY [editor:h5pfilewrongextensiontitle,h5plib_v127],[editor:h5pfilewrongextensiontitle,h5plib_v128]
CPY [editor:height,h5plib_v127],[editor:height,h5plib_v128]
CPY [editor:hide,h5plib_v127],[editor:hide,h5plib_v128]
CPY [editor:hideimportantinstructions,h5plib_v127],[editor:hideimportantinstructions,h5plib_v128]
CPY [editor:hubpanellabel,h5plib_v127],[editor:hubpanellabel,h5plib_v128]
CPY [editor:illegaldecimalnumber,h5plib_v127],[editor:illegaldecimalnumber,h5plib_v128]
CPY [editor:imagelightboxprogress,h5plib_v127],[editor:imagelightboxprogress,h5plib_v128]
CPY [editor:imagelightboxtitle,h5plib_v127],[editor:imagelightboxtitle,h5plib_v128]
CPY [editor:importantinstructions,h5plib_v127],[editor:importantinstructions,h5plib_v128]
CPY [editor:insert,h5plib_v127],[editor:insert,h5plib_v128]
CPY [editor:invalidformat,h5plib_v127],[editor:invalidformat,h5plib_v128]
CPY [editor:language,h5plib_v127],[editor:language,h5plib_v128]
CPY [editor:librarymissing,h5plib_v127],[editor:librarymissing,h5plib_v128]
CPY [editor:licensecandistribute,h5plib_v127],[editor:licensecandistribute,h5plib_v128]
CPY [editor:licensecanholdliable,h5plib_v127],[editor:licensecanholdliable,h5plib_v128]
CPY [editor:licensecanmodify,h5plib_v127],[editor:licensecanmodify,h5plib_v128]
CPY [editor:licensecansublicense,h5plib_v127],[editor:licensecansublicense,h5plib_v128]
CPY [editor:licensecanusecommercially,h5plib_v127],[editor:licensecanusecommercially,h5plib_v128]
CPY [editor:licensecannotholdliable,h5plib_v127],[editor:licensecannotholdliable,h5plib_v128]
CPY [editor:licensedescription,h5plib_v127],[editor:licensedescription,h5plib_v128]
CPY [editor:licensefetchdetailsfailed,h5plib_v127],[editor:licensefetchdetailsfailed,h5plib_v128]
CPY [editor:licensemodalsubtitle,h5plib_v127],[editor:licensemodalsubtitle,h5plib_v128]
CPY [editor:licensemodaltitle,h5plib_v127],[editor:licensemodaltitle,h5plib_v128]
CPY [editor:licensemustincludecopyright,h5plib_v127],[editor:licensemustincludecopyright,h5plib_v128]
CPY [editor:licensemustincludelicense,h5plib_v127],[editor:licensemustincludelicense,h5plib_v128]
CPY [editor:licenseunspecified,h5plib_v127],[editor:licenseunspecified,h5plib_v128]
CPY [editor:listbelowmin,h5plib_v127],[editor:listbelowmin,h5plib_v128]
CPY [editor:listexceedsmax,h5plib_v127],[editor:listexceedsmax,h5plib_v128]
CPY [editor:listlabel,h5plib_v127],[editor:listlabel,h5plib_v128]
CPY [editor:loading,h5plib_v127],[editor:loading,h5plib_v128]
CPY [editor:loadingimageeditor,h5plib_v127],[editor:loadingimageeditor,h5plib_v128]
CPY [editor:logthischange,h5plib_v127],[editor:logthischange,h5plib_v128]
CPY [editor:loggedchanges,h5plib_v127],[editor:loggedchanges,h5plib_v128]
CPY [editor:maxscoresemanticsmissing,h5plib_v127],[editor:maxscoresemanticsmissing,h5plib_v128]
CPY [editor:metadata,h5plib_v127],[editor:metadata,h5plib_v128]
CPY [editor:metadatasharingandlicensinginfo,h5plib_v127],[editor:metadatasharingandlicensinginfo,h5plib_v128]
CPY [editor:missingproperty,h5plib_v127],[editor:missingproperty,h5plib_v128]
CPY [editor:missingtranslation,h5plib_v127],[editor:missingtranslation,h5plib_v128]
CPY [editor:newchangehasbeenlogged,h5plib_v127],[editor:newchangehasbeenlogged,h5plib_v128]
CPY [editor:newestfirst,h5plib_v127],[editor:newestfirst,h5plib_v128]
CPY [editor:nextimage,h5plib_v127],[editor:nextimage,h5plib_v128]
CPY [editor:nochangeshavebeenlogged,h5plib_v127],[editor:nochangeshavebeenlogged,h5plib_v128]
CPY [editor:nocontenttypesavailable,h5plib_v127],[editor:nocontenttypesavailable,h5plib_v128]
CPY [editor:nocontenttypesavailabledesc,h5plib_v127],[editor:nocontenttypesavailabledesc,h5plib_v128]
CPY [editor:nofollow,h5plib_v127],[editor:nofollow,h5plib_v128]
CPY [editor:notimageordimensionsfield,h5plib_v127],[editor:notimageordimensionsfield,h5plib_v128]
CPY [editor:numresults,h5plib_v127],[editor:numresults,h5plib_v128]
CPY [editor:numberfield,h5plib_v127],[editor:numberfield,h5plib_v128]
CPY [editor:ok,h5plib_v127],[editor:ok,h5plib_v128]
CPY [editor:onlynumbers,h5plib_v127],[editor:onlynumbers,h5plib_v128]
CPY [editor:or,h5plib_v127],[editor:or,h5plib_v128]
CPY [editor:orderitemdown,h5plib_v127],[editor:orderitemdown,h5plib_v128]
CPY [editor:orderitemup,h5plib_v127],[editor:orderitemup,h5plib_v128]
CPY [editor:outofstep,h5plib_v127],[editor:outofstep,h5plib_v128]
CPY [editor:pasteandreplacebutton,h5plib_v127],[editor:pasteandreplacebutton,h5plib_v128]
CPY [editor:pasteandreplacefromclipboard,h5plib_v127],[editor:pasteandreplacefromclipboard,h5plib_v128]
CPY [editor:pastebutton,h5plib_v127],[editor:pastebutton,h5plib_v128]
CPY [editor:pastecontent,h5plib_v127],[editor:pastecontent,h5plib_v128]
CPY [editor:pastecontentnotsupported,h5plib_v127],[editor:pastecontentnotsupported,h5plib_v128]
CPY [editor:pastecontentrestricted,h5plib_v127],[editor:pastecontentrestricted,h5plib_v128]
CPY [editor:pasteerror,h5plib_v127],[editor:pasteerror,h5plib_v128]
CPY [editor:pastefromclipboard,h5plib_v127],[editor:pastefromclipboard,h5plib_v128]
CPY [editor:pastenocontent,h5plib_v127],[editor:pastenocontent,h5plib_v128]
CPY [editor:pastetoonew,h5plib_v127],[editor:pastetoonew,h5plib_v128]
CPY [editor:pastetooold,h5plib_v127],[editor:pastetooold,h5plib_v128]
CPY [editor:popularfirst,h5plib_v127],[editor:popularfirst,h5plib_v128]
CPY [editor:previousimage,h5plib_v127],[editor:previousimage,h5plib_v128]
CPY [editor:proceedbuttonlabel,h5plib_v127],[editor:proceedbuttonlabel,h5plib_v128]
CPY [editor:readless,h5plib_v127],[editor:readless,h5plib_v128]
CPY [editor:readmore,h5plib_v127],[editor:readmore,h5plib_v128]
CPY [editor:recentlyusedfirst,h5plib_v127],[editor:recentlyusedfirst,h5plib_v128]
CPY [editor:reloadbuttonlabel,h5plib_v127],[editor:reloadbuttonlabel,h5plib_v128]
CPY [editor:removefile,h5plib_v127],[editor:removefile,h5plib_v128]
CPY [editor:removeimage,h5plib_v127],[editor:removeimage,h5plib_v128]
CPY [editor:removeitem,h5plib_v127],[editor:removeitem,h5plib_v128]
CPY [editor:requiredproperty,h5plib_v127],[editor:requiredproperty,h5plib_v128]
CPY [editor:resettooriginallabel,h5plib_v127],[editor:resettooriginallabel,h5plib_v128]
CPY [editor:savelabel,h5plib_v127],[editor:savelabel,h5plib_v128]
CPY [editor:savemetadata,h5plib_v127],[editor:savemetadata,h5plib_v128]
CPY [editor:screenshots,h5plib_v127],[editor:screenshots,h5plib_v128]
CPY [editor:scriptmissing,h5plib_v127],[editor:scriptmissing,h5plib_v128]
CPY [editor:searchresults,h5plib_v127],[editor:searchresults,h5plib_v128]
CPY [editor:selectfiletoupload,h5plib_v127],[editor:selectfiletoupload,h5plib_v128]
CPY [editor:selectlibrary,h5plib_v127],[editor:selectlibrary,h5plib_v128]
CPY [editor:semanticserror,h5plib_v127],[editor:semanticserror,h5plib_v128]
CPY [editor:show,h5plib_v127],[editor:show,h5plib_v128]
CPY [editor:showimportantinstructions,h5plib_v127],[editor:showimportantinstructions,h5plib_v128]
CPY [editor:tabtitlebasicfileupload,h5plib_v127],[editor:tabtitlebasicfileupload,h5plib_v128]
CPY [editor:tabtitleinputlinkurl,h5plib_v127],[editor:tabtitleinputlinkurl,h5plib_v128]
CPY [editor:textfield,h5plib_v127],[editor:textfield,h5plib_v128]
CPY [editor:thecontenttype,h5plib_v127],[editor:thecontenttype,h5plib_v128]
CPY [editor:thiswillpotentially,h5plib_v127],[editor:thiswillpotentially,h5plib_v128]
CPY [editor:title,h5plib_v127],[editor:title,h5plib_v128]
CPY [editor:toolong,h5plib_v127],[editor:toolong,h5plib_v128]
CPY [editor:tryagain,h5plib_v127],[editor:tryagain,h5plib_v128]
CPY [editor:tutorial,h5plib_v127],[editor:tutorial,h5plib_v128]
CPY [editor:unabletointerpreterror,h5plib_v127],[editor:unabletointerpreterror,h5plib_v128]
CPY [editor:unabletointerpretsolution,h5plib_v127],[editor:unabletointerpretsolution,h5plib_v128]
CPY [editor:unknownfieldpath,h5plib_v127],[editor:unknownfieldpath,h5plib_v128]
CPY [editor:uploadinstructionstitle,h5plib_v127],[editor:uploadinstructionstitle,h5plib_v128]
CPY [editor:uploadplaceholder,h5plib_v127],[editor:uploadplaceholder,h5plib_v128]
CPY [editor:uploadsuccess,h5plib_v127],[editor:uploadsuccess,h5plib_v128]
CPY [editor:uploadtablabel,h5plib_v127],[editor:uploadtablabel,h5plib_v128]
CPY [editor:uploadvideotitle,h5plib_v127],[editor:uploadvideotitle,h5plib_v128]
CPY [editor:uploading,h5plib_v127],[editor:uploading,h5plib_v128]
CPY [editor:uploadingthrobber,h5plib_v127],[editor:uploadingthrobber,h5plib_v128]
CPY [editor:usedforsearchingreportsandcopyrightinformation,h5plib_v127],[editor:usedforsearchingreportsandcopyrightinformation,h5plib_v128]
CPY [editor:videoquality,h5plib_v127],[editor:videoquality,h5plib_v128]
CPY [editor:videoqualitydefaultlabel,h5plib_v127],[editor:videoqualitydefaultlabel,h5plib_v128]
CPY [editor:videoqualitydescription,h5plib_v127],[editor:videoqualitydescription,h5plib_v128]
CPY [editor:warningchangebrowsingtoseeresults,h5plib_v127],[editor:warningchangebrowsingtoseeresults,h5plib_v128]
CPY [editor:warningnocontenttypesinstalled,h5plib_v127],[editor:warningnocontenttypesinstalled,h5plib_v128]
CPY [editor:warningupdateavailablebody,h5plib_v127],[editor:warningupdateavailablebody,h5plib_v128]
CPY [editor:warningupdateavailabletitle,h5plib_v127],[editor:warningupdateavailabletitle,h5plib_v128]
CPY [editor:width,h5plib_v127],[editor:width,h5plib_v128]
AMOS END

12 days agoAutomatically generated installer lang files
AMOS bot [Tue, 31 Mar 2026 00:07:46 +0000 (00:07 +0000)]
Automatically generated installer lang files

2 weeks agoweekly release 5.0.6+
Huong Nguyen [Fri, 27 Mar 2026 08:40:52 +0000 (15:40 +0700)]
weekly release 5.0.6+

2 weeks agoNOBUG: Add upgrade notes
Huong Nguyen [Fri, 27 Mar 2026 08:40:51 +0000 (15:40 +0700)]
NOBUG: Add upgrade notes

2 weeks agoMDL-87632 availability_completion: Fix subsection previous activity
Andi Permana [Fri, 20 Mar 2026 11:17:29 +0000 (18:17 +0700)]
MDL-87632 availability_completion: Fix subsection previous activity

When delegated sections (subsections) use 'Previous activity with completion'
restrictions, the previous activity was incorrectly calculated from the global
course iteration context instead of the subsection's local context.

2 weeks agoMDL-87957 mod_bigbluebuttonbn: Fix meeting events
Shamiso Jaravaza [Tue, 24 Feb 2026 17:15:50 +0000 (10:15 -0700)]
MDL-87957 mod_bigbluebuttonbn: Fix meeting events

2 weeks agoMDL-88285 core_courseformat: Dimmed styling to restricted sections
Laurent David [Wed, 25 Mar 2026 10:12:45 +0000 (11:12 +0100)]
MDL-88285 core_courseformat: Dimmed styling to restricted sections

2 weeks agoMDL-88012 core: Force unique MessageID when sending bulk mail
Christian Abila [Wed, 25 Mar 2026 06:36:42 +0000 (07:36 +0100)]
MDL-88012 core: Force unique MessageID when sending bulk mail

2 weeks agoAutomatically generated installer lang files
AMOS bot [Thu, 26 Mar 2026 00:07:45 +0000 (00:07 +0000)]
Automatically generated installer lang files

2 weeks agoMDL-86298 filepicker: prevent renaming file to disallowed extensions
Hai Nguyen Van [Wed, 3 Dec 2025 10:28:29 +0000 (10:28 +0000)]
MDL-86298 filepicker: prevent renaming file to disallowed extensions

2 weeks agoMDL-87509 mod_bigbluebuttonbn: Fix protected recording link bug
jfedericobn [Wed, 25 Mar 2026 13:56:29 +0000 (13:56 +0000)]
MDL-87509 mod_bigbluebuttonbn: Fix protected recording link bug

2 weeks agoMDL-87471 tiny_autosave: use user context to retrieve draft files.
Paul Holden [Wed, 17 Dec 2025 16:16:00 +0000 (16:16 +0000)]
MDL-87471 tiny_autosave: use user context to retrieve draft files.

2 weeks agoMDL-88039 mathjax: Guard configure() against overwriting
Muhammad Arnaldo [Wed, 25 Mar 2026 09:04:09 +0000 (16:04 +0700)]
MDL-88039 mathjax: Guard configure() against overwriting

2 weeks agoMDL-87822 core_files: Fix breaking changes introduced by MDL-86802
Huong Nguyen [Wed, 25 Feb 2026 02:50:42 +0000 (09:50 +0700)]
MDL-87822 core_files: Fix breaking changes introduced by MDL-86802

2 weeks agoMDL-77558 mod_forum: Mark posts as read in forum grader
David Woloszyn [Wed, 25 Mar 2026 06:38:48 +0000 (17:38 +1100)]
MDL-77558 mod_forum: Mark posts as read in forum grader

2 weeks agoMDL-85544 glossary: Use core_collator for formatted concept sorting
David Kelly [Wed, 21 May 2025 11:28:57 +0000 (12:28 +0100)]
MDL-85544 glossary: Use core_collator for formatted concept sorting

2 weeks agoMDL-87560 assignsubmission_onlinetext: indicate truncated summary.
Paul Holden [Tue, 30 Dec 2025 12:24:07 +0000 (12:24 +0000)]
MDL-87560 assignsubmission_onlinetext: indicate truncated summary.

Only when the submission has been truncated should we show the
"View more" link, otherwise it appears to not do anything for already
short text.

2 weeks agoMDL-86989 tool_lp: remove non-functional edit action as required.
Paul Holden [Thu, 12 Mar 2026 21:29:41 +0000 (21:29 +0000)]
MDL-86989 tool_lp: remove non-functional edit action as required.

2 weeks agoMDL-88279 core_session: fix cluster test retry count assertion
meirzamoodle [Tue, 24 Mar 2026 07:39:44 +0000 (14:39 +0700)]
MDL-88279 core_session: fix cluster test retry count assertion

Update session_redis_cluster_test to expect 3 connection attempts
instead of 5, matching the $maxretries default value in redis.php.

2 weeks agoMDL-87626 core_search: Fix typo in input value check
David Woloszyn [Mon, 23 Mar 2026 02:37:15 +0000 (13:37 +1100)]
MDL-87626 core_search: Fix typo in input value check

Co-authored-by: Uli Wessmann
3 weeks agoAutomatically generated installer lang files
AMOS bot [Sat, 21 Mar 2026 00:07:49 +0000 (00:07 +0000)]
Automatically generated installer lang files

3 weeks agoMDL-87748 assign: format checkbox with Bootstrap classes.
Luca Bösch [Mon, 26 Jan 2026 11:10:42 +0000 (12:10 +0100)]
MDL-87748 assign: format checkbox with Bootstrap classes.

3 weeks agoweekly release 5.0.6+
Shamim Rezaie [Fri, 20 Mar 2026 04:11:21 +0000 (15:11 +1100)]
weekly release 5.0.6+

3 weeks agoNOBUG: Add upgrade notes
Shamim Rezaie [Fri, 20 Mar 2026 04:11:20 +0000 (15:11 +1100)]
NOBUG: Add upgrade notes

3 weeks agoMDL-84780 course: Disabled modules are not allowed
Stefan Hanauska [Sun, 9 Mar 2025 08:47:51 +0000 (09:47 +0100)]
MDL-84780 course: Disabled modules are not allowed

3 weeks agoMDL-87320 forum: Correctly escape group names.
Luca Bösch [Mon, 8 Dec 2025 23:00:20 +0000 (00:00 +0100)]
MDL-87320 forum: Correctly escape group names.

3 weeks agoMDL-87580 task: Fix task output autolinking
Brendan Heywood [Thu, 19 Mar 2026 14:20:01 +0000 (01:20 +1100)]
MDL-87580 task: Fix task output autolinking

3 weeks agoMDL-81241 theme_boost: Accessibility test for the footer region links
Jun Pataleta [Wed, 18 Mar 2026 09:41:19 +0000 (17:41 +0800)]
MDL-81241 theme_boost: Accessibility test for the footer region links

3 weeks agoMDL-81241 theme_boost: Ensure footer links have sufficient spacing
Jun Pataleta [Wed, 18 Mar 2026 09:37:57 +0000 (17:37 +0800)]
MDL-81241 theme_boost: Ensure footer links have sufficient spacing

3 weeks agoMDL-87959 tool_installaddon: Fix behats for activity chooser footer
Safat [Wed, 18 Mar 2026 13:33:17 +0000 (00:33 +1100)]
MDL-87959 tool_installaddon: Fix behats for activity chooser footer

3 weeks agoMDL-83459 mod_assign: change switchids to use cmid
Mark Sharp [Wed, 18 Mar 2026 15:45:07 +0000 (15:45 +0000)]
MDL-83459 mod_assign: change switchids to use cmid

3 weeks agoMDL-87592 auth_email: preserve wantsurl through MFA email confirmation
Andi Permana [Wed, 4 Mar 2026 08:48:18 +0000 (15:48 +0700)]
MDL-87592 auth_email: preserve wantsurl through MFA email confirmation

3 weeks agoMDL-66415 core_message: Improve bulk messaging result handling
Raquel Ortega [Wed, 4 Mar 2026 18:16:16 +0000 (19:16 +0100)]
MDL-66415 core_message: Improve bulk messaging result handling

3 weeks agoMDL-85451 block_timeline: Add accessibility Behat test coverage
Jun Pataleta [Tue, 17 Mar 2026 15:47:00 +0000 (23:47 +0800)]
MDL-85451 block_timeline: Add accessibility Behat test coverage

3 weeks agoMDL-85451 block_timeline: Group the due date filter options
Jun Pataleta [Tue, 17 Mar 2026 15:46:39 +0000 (23:46 +0800)]
MDL-85451 block_timeline: Group the due date filter options

To ensure that the filter options for the day filter menu matches
the menu pattern and pass accessibility checks, we need to:
* Group the due date filter options, labelled by the "Due date"
"heading".
* Set the "Due date" heading with a presentation role to prevent
assistive technologies from announcing it when the user goes through
the menu options.

3 weeks agoMDL-85451 block_timeline: Fix heading levels
Jun Pataleta [Tue, 17 Mar 2026 15:10:15 +0000 (23:10 +0800)]
MDL-85451 block_timeline: Fix heading levels

3 weeks agoMDL-88226 phpunit: Fix fragile tests using adhoc task manager
David Carrillo [Mon, 16 Mar 2026 12:16:32 +0000 (13:16 +0100)]
MDL-88226 phpunit: Fix fragile tests using adhoc task manager

- Reset task manager state when resetting all data
- mod_quiz: Fix fragile adhoc task manager tests
- mod_assign: Fix fragile adhoc task manager tests

3 weeks agoMDL-88076 tool_mfa: improved parsing of redirect exclusions config.
Paul Holden [Tue, 3 Mar 2026 13:06:16 +0000 (13:06 +0000)]
MDL-88076 tool_mfa: improved parsing of redirect exclusions config.

Ensure all permutations of EOL markers are covered/trimmed.

4 weeks agoMDL-87935 aiprovider_ollama: fix incorrect error response handling
yusufwib01 [Fri, 13 Mar 2026 19:12:16 +0000 (02:12 +0700)]
MDL-87935 aiprovider_ollama: fix incorrect error response handling

4 weeks agoMDL-88211 backup: remove redundant usage of task manager from tests.
Paul Holden [Fri, 13 Mar 2026 12:36:27 +0000 (12:36 +0000)]
MDL-88211 backup: remove redundant usage of task manager from tests.

The asynchronouse backup/restore tests are only concerned with testing
the implementation of the accompanying task class directly. When they
try to do so at a distance via the task manager API they introduce
random failures by failing to account for different queued tasks that
come from other components (e.g. Workplace).

4 weeks agoMDL-83096 mod_lti: Register view completion when launching in new window
Daniel Poggenpohl [Wed, 18 Jun 2025 15:51:56 +0000 (17:51 +0200)]
MDL-83096 mod_lti: Register view completion when launching in new window

4 weeks agoMDL-86839 grunt: Make grunt watch respect --force option
Philipp Memmel [Fri, 13 Feb 2026 19:09:28 +0000 (20:09 +0100)]
MDL-86839 grunt: Make grunt watch respect --force option

4 weeks agoMDL-87959 admin: Add marketplace availability in notifications
Safat [Thu, 19 Feb 2026 03:18:19 +0000 (14:18 +1100)]
MDL-87959 admin: Add marketplace availability in notifications

4 weeks agoMDL-87959 tool_installaddon: Add support for marketplace
Safat [Thu, 19 Feb 2026 03:17:40 +0000 (14:17 +1100)]
MDL-87959 tool_installaddon: Add support for marketplace

4 weeks agoMDL-82439 iplookup: catch and handle GeoIp2 exceptions
Jonathon Fowler [Fri, 28 Nov 2025 02:51:31 +0000 (12:51 +1000)]
MDL-82439 iplookup: catch and handle GeoIp2 exceptions

4 weeks agoMDL-87331 course: treat return URL as local when editing course.
Paul Holden [Tue, 16 Dec 2025 11:24:46 +0000 (11:24 +0000)]
MDL-87331 course: treat return URL as local when editing course.

4 weeks agoMDL-87795 message_airnotifier: Handle 404 (unregistered token) responses
Albert Gasset [Thu, 12 Mar 2026 10:08:14 +0000 (11:08 +0100)]
MDL-87795 message_airnotifier: Handle 404 (unregistered token) responses

4 weeks agoMDL-88197 customfield_number: observe required field configuration.
Paul Holden [Thu, 12 Mar 2026 09:16:14 +0000 (09:16 +0000)]
MDL-88197 customfield_number: observe required field configuration.

4 weeks agoMDL-86843 tool_task: style tables correctly.
Huong Nguyen [Fri, 7 Nov 2025 07:48:40 +0000 (14:48 +0700)]
MDL-86843 tool_task: style tables correctly.

4 weeks agoMDL-87548 repository_wikimedia: Handle HTTP 429 rate limiting
Andi Permana [Mon, 9 Mar 2026 04:12:06 +0000 (11:12 +0700)]
MDL-87548 repository_wikimedia: Handle HTTP 429 rate limiting

4 weeks agoMDL-87708 tool_moodlenet: Remove post install task
Huong Nguyen [Thu, 12 Mar 2026 03:47:50 +0000 (10:47 +0700)]
MDL-87708 tool_moodlenet: Remove post install task

4 weeks agoMDL-87708 admin: Improve MoodleNet removal warnings message
Huong Nguyen [Thu, 12 Mar 2026 02:24:22 +0000 (09:24 +0700)]
MDL-87708 admin: Improve MoodleNet removal warnings message

4 weeks agoMDL-87708 tool_moodlenet: Clean up moodle.net configs in stable
Andi Permana [Fri, 6 Feb 2026 07:32:42 +0000 (14:32 +0700)]
MDL-87708 tool_moodlenet: Clean up moodle.net configs in stable

Part of MDL-87351

- Discourage tool_moodlenet unless pointing to custom installation
- Clear activity chooser footer if set to MoodleNet
- Cleanup happens for: moodle.net URL, www.moodle.net, or empty config
- Preserves custom/local MoodleNet installations

4 weeks agoMDL-87516 core_question: update behaviour when update question attempt.
hieuvu [Tue, 23 Dec 2025 08:15:18 +0000 (15:15 +0700)]
MDL-87516 core_question: update behaviour when update question attempt.

4 weeks agoMDL-88122 navigation: omit empty breadcrumb container in output.
Stefan Topfstedt [Thu, 12 Mar 2026 00:40:24 +0000 (17:40 -0700)]
MDL-88122 navigation: omit empty breadcrumb container in output.

4 weeks agoMDL-88109 router: Use unencoded URL for location redirect
Sara Arjona [Mon, 2 Mar 2026 10:44:54 +0000 (11:44 +0100)]
MDL-88109 router: Use unencoded URL for location redirect

4 weeks agoMDL-86616 filepicker: link restrictions to input via aria-describedby
Hai Nguyen Van [Mon, 24 Nov 2025 08:55:52 +0000 (08:55 +0000)]
MDL-86616 filepicker: link restrictions to input via aria-describedby

4 weeks agoMDL-85637 question: Optimize max question version SQL query
Iñigo Zendegi [Mon, 2 Jun 2025 15:38:08 +0000 (17:38 +0200)]
MDL-85637 question: Optimize max question version SQL query

4 weeks agoMDL-74519 badges: Fix date validation in course completion criteria
Anupama Sarjoshi [Tue, 24 Feb 2026 08:36:52 +0000 (14:06 +0530)]
MDL-74519 badges: Fix date validation in course completion criteria

Ensures that badge awarding correctly evaluates the configured by-date
condition in course and course set completion criteria.

Co-authored by: Diego Campos

4 weeks agoAutomatically generated installer lang files
AMOS bot [Wed, 11 Mar 2026 00:09:28 +0000 (00:09 +0000)]
Automatically generated installer lang files

4 weeks agoMDL-81608 quiz: Add `Add` menu spacing to prevent overlap
Jun Pataleta [Mon, 23 Feb 2026 10:22:21 +0000 (18:22 +0800)]
MDL-81608 quiz: Add `Add` menu spacing to prevent overlap

4 weeks agoMDL-81608 quiz: Set more meaningful button labels
Jun Pataleta [Wed, 11 Feb 2026 10:15:31 +0000 (18:15 +0800)]
MDL-81608 quiz: Set more meaningful button labels

* Add/remove page break buttons
* Move question buttons

4 weeks agoMDL-81608 core: Add alt text to the YUI spinner image
Jun Pataleta [Fri, 6 Feb 2026 11:20:29 +0000 (19:20 +0800)]
MDL-81608 core: Add alt text to the YUI spinner image

The accessibility Behat test added to the quiz editing page uncovered
that the loading spinner icon does not have an appropriate alt text.

4 weeks agoMDL-81608 quiz: Adjust size and spacing for the quiz edit page buttons
Jun Pataleta [Fri, 6 Feb 2026 09:39:12 +0000 (17:39 +0800)]
MDL-81608 quiz: Adjust size and spacing for the quiz edit page buttons

* In order to meet WCAG 2.2 criterion for minimum target size and make
it easier for users who have mobility limitations to use the quiz
editing page, we need to use the Bootstrap icon button styles and
increase the size and the spacing for the following buttons:
  * Add/remove page break button
  * Lock/unlock question dependency button
* This commit also makes the icons within the buttons as decorative and
moves the accessible name to the button elements themselves via the
aria-label attribute.
* Adjust Behat tests for checking the dependency buttons.
* Add accessibility Behat coverage for the quiz edit page.

4 weeks agoMDL-81608 core: Label YUI dragdrop handles appropriately
Jun Pataleta [Thu, 5 Feb 2026 06:14:47 +0000 (14:14 +0800)]
MDL-81608 core: Label YUI dragdrop handles appropriately

The YUI dragdrop handles rely on the button's title attribute for its
accessible label. We should label it appropriately using the
aria-label attribute.

4 weeks agoMDL-88080 admin: initially focus the form element failing validation.
Paul Holden [Mon, 9 Mar 2026 10:27:08 +0000 (10:27 +0000)]
MDL-88080 admin: initially focus the form element failing validation.

This appears to replicate what the ancient admin_externalpage_print_header
method did prior to being deprecated in db785816, however its replacement
didn't support the same $focus argument - hence doing so manually now.

5 weeks agoMDL-87605 editor_tiny: serve minified version of Javascript files.
Paul Holden [Wed, 7 Jan 2026 10:38:39 +0000 (10:38 +0000)]
MDL-87605 editor_tiny: serve minified version of Javascript files.

Per documentation[1], serving the initial TinyMCE file minified induces
it to also serve other files (theme, plugin) in the same manner.

[1] https://www.tiny.cloud/docs/tinymce/5/integration-and-setup/#suffix

5 weeks agoMDL-87803 blocks: set ARIA label to string content value.
Paul Holden [Thu, 29 Jan 2026 17:10:20 +0000 (17:10 +0000)]
MDL-87803 blocks: set ARIA label to string content value.

Previously it was a string instance, which meant it wasn't encoded
correctly when used as part of the delete block confirmation.

5 weeks agoMDL-86698 core: Update security.txt expiry
Michael Hawkins [Fri, 6 Mar 2026 10:48:43 +0000 (18:48 +0800)]
MDL-86698 core: Update security.txt expiry