Sara Arjona [Wed, 8 Apr 2026 06:10:53 +0000 (08:10 +0200)]
Merge branch 'MDL-88391' of https://github.com/paulholden/moodle
Huong Nguyen [Wed, 8 Apr 2026 01:12:55 +0000 (08:12 +0700)]
Merge branch 'MDL-88006' of https://github.com/paulholden/moodle
Paul Holden [Tue, 7 Apr 2026 19:50:46 +0000 (20:50 +0100)]
MDL-88391 tool_mobile: update usage of Bootstrap margin class.
Sara Arjona [Tue, 7 Apr 2026 12:42:54 +0000 (14:42 +0200)]
Merge branch 'MDL-88214-main' of https://github.com/aanabit/moodle
Mihail Geshoski [Tue, 7 Apr 2026 09:05:40 +0000 (17:05 +0800)]
Merge branch 'MDL-87739' of https://github.com/paulholden/moodle
Mihail Geshoski [Tue, 7 Apr 2026 09:00:37 +0000 (17:00 +0800)]
Merge branch 'MDL-87796' of https://github.com/paulholden/moodle
Mihail Geshoski [Tue, 7 Apr 2026 08:55:06 +0000 (16:55 +0800)]
Merge branch 'MDL-87269' of https://github.com/paulholden/moodle
Sara Arjona [Tue, 7 Apr 2026 08:54:09 +0000 (10:54 +0200)]
Merge branch 'MDL-88316-main' of https://github.com/laurentdavid/moodle
Mihail Geshoski [Tue, 7 Apr 2026 07:19:45 +0000 (15:19 +0800)]
Merge branch 'MDL-77649-main' of https://github.com/junpataleta/moodle
Mihail Geshoski [Tue, 7 Apr 2026 07:13:48 +0000 (15:13 +0800)]
Merge branch 'MDL-80496-main' of https://github.com/parzers/moodle
Laurent David [Tue, 31 Mar 2026 06:07:38 +0000 (08:07 +0200)]
MDL-88316 core_courseformat: Fix URL mapping for subsections
Sara Arjona [Tue, 7 Apr 2026 05:56:55 +0000 (07:56 +0200)]
Merge branch 'MDL-88361-main' of https://github.com/sarjona/moodle
Huong Nguyen [Tue, 7 Apr 2026 02:01:44 +0000 (09:01 +0700)]
Merge branch 'MDL-88349-main' of https://github.com/muhammadarnaldo/moodle
Huong Nguyen [Tue, 7 Apr 2026 01:58:42 +0000 (08:58 +0700)]
Merge branch 'MDL-88348-main' of https://github.com/andimendunia/moodle
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
Huong Nguyen [Mon, 6 Apr 2026 01:48:25 +0000 (08:48 +0700)]
Merge branch 'MDL-87957-main' of https://github.com/jfederico/moodle
Huong Nguyen [Fri, 3 Apr 2026 02:25:52 +0000 (09:25 +0700)]
Moodle release 5.2beta
Huong Nguyen [Fri, 3 Apr 2026 02:25:51 +0000 (09:25 +0700)]
NOBUG: Add upgrade notes
Huong Nguyen [Fri, 3 Apr 2026 02:25:29 +0000 (09:25 +0700)]
NOBUG: Fixed SVG browser compatibility
Huong Nguyen [Fri, 3 Apr 2026 02:25:22 +0000 (09:25 +0700)]
Merge branch 'install_main' of https://git.in.moodle.com/amosbot/moodle-install
AMOS bot [Fri, 3 Apr 2026 00:07:55 +0000 (00:07 +0000)]
Automatically generated installer lang files
Amaia Anabitarte [Thu, 2 Apr 2026 14:17:08 +0000 (16:17 +0200)]
MDL-88214 course: Remove the settings menu from restricted pages
Andi Permana [Thu, 2 Apr 2026 11:18:03 +0000 (18:18 +0700)]
MDL-88348 repository_upload: move validation before session close
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.
Sara Arjona [Thu, 2 Apr 2026 10:17:26 +0000 (12:17 +0200)]
MDL-88361 course: Avoid duplicate dates in restricted page for classic
Forcing incourse pagelayout for restricted module page aligns it with
regular activity pages and prevents the duplicate date rendering path.
Huong Nguyen [Thu, 2 Apr 2026 03:54:53 +0000 (10:54 +0700)]
Merge branch 'MDL-88210-main' of https://github.com/mickhawkins/moodle
Muhammad Arnaldo [Thu, 2 Apr 2026 03:23:30 +0000 (10:23 +0700)]
MDL-88349 core: fix preventredirect guard
Added the missing the $preventredirect check
for the restricted-but-visible activity case.
Michael Hawkins [Mon, 16 Mar 2026 03:11:33 +0000 (11:11 +0800)]
MDL-88210 core: Fix filtering of additionalhtmlfooter
When filtering was added to support multi-lang, it used format_string
which broke necessary JS support, this update corrects it to format_text
Mihail Geshoski [Thu, 2 Apr 2026 02:22:19 +0000 (10:22 +0800)]
Merge branch 'MDL-84579-main' of https://github.com/vietlx426/moodle-1
Huong Nguyen [Thu, 2 Apr 2026 02:19:32 +0000 (09:19 +0700)]
Merge branch 'MDL-87498-main' of https://github.com/davewoloszyn/moodle
Huong Nguyen [Thu, 2 Apr 2026 02:11:38 +0000 (09:11 +0700)]
Merge branch 'MDL-88272-main' of https://github.com/junpataleta/moodle
Mihail Geshoski [Thu, 2 Apr 2026 01:56:30 +0000 (09:56 +0800)]
Merge branch 'MDL-68335-main' of https://github.com/lucaboesch/moodle
Mihail Geshoski [Thu, 2 Apr 2026 01:49:16 +0000 (09:49 +0800)]
Merge branch 'MDL-87848_main' of https://github.com/marxjohnson/moodle
Huong Nguyen [Thu, 2 Apr 2026 01:40:40 +0000 (08:40 +0700)]
Merge branch 'MDL-88228-main' of https://github.com/raortegar/moodle
AMOS bot [Thu, 2 Apr 2026 00:08:20 +0000 (00:08 +0000)]
Automatically generated installer lang files
Safat [Wed, 1 Apr 2026 11:13:31 +0000 (22:13 +1100)]
Merge branch 'MDL-88092-main' of https://github.com/rezaies/moodle
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>
Jun Pataleta [Thu, 15 Jan 2026 04:40:40 +0000 (12:40 +0800)]
MDL-77649 glossary: Do not use layout tables for glossary entries
Jun Pataleta [Tue, 23 Dec 2025 08:35:40 +0000 (16:35 +0800)]
MDL-77649 glossary: Do not use layout tables in glossary functions
* Refactor `glossary_print_entry_lower_section()` and
`glossary_print_entry_approval()` so that they are not rendered using
layout tables.
Jun Pataleta [Thu, 15 Jan 2026 04:28:07 +0000 (12:28 +0800)]
MDL-77649 glossary: Create a reusable glossary entry header
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.
# Conflicts:
# public/mod/glossary/formats/encyclopedia/encyclopedia_format.php
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.
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
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.
Huong Nguyen [Wed, 1 Apr 2026 01:56:28 +0000 (08:56 +0700)]
Merge branch 'MDL-88343-main' of https://github.com/junpataleta/moodle
Huong Nguyen [Wed, 1 Apr 2026 01:50:16 +0000 (08:50 +0700)]
Merge branch 'MDL-87605' of https://github.com/paulholden/moodle
Huong Nguyen [Wed, 1 Apr 2026 01:46:17 +0000 (08:46 +0700)]
Merge branch 'MDL-87862-main' of https://github.com/djarran/moodle
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.
Jun Pataleta [Tue, 23 Dec 2025 01:50:05 +0000 (09:50 +0800)]
MDL-77649 glossary: Render category headers without using layout tables
Mihail Geshoski [Wed, 1 Apr 2026 01:18:01 +0000 (09:18 +0800)]
Merge branch 'MDL-87632-main' of https://github.com/andimendunia/moodle
Mihail Geshoski [Wed, 1 Apr 2026 01:07:11 +0000 (09:07 +0800)]
Merge branch 'MDL-87624-main' of https://github.com/snake/moodle
Mihail Geshoski [Wed, 1 Apr 2026 00:59:56 +0000 (08:59 +0800)]
Merge branch 'MDL-87331' of https://github.com/paulholden/moodle
AMOS bot [Wed, 1 Apr 2026 00:07:58 +0000 (00:07 +0000)]
Automatically generated installer lang files
Marcus Green [Sun, 15 Feb 2026 19:34:36 +0000 (20:34 +0100)]
MDL-68335 qbehaviour: read in settings.php files
Jun Pataleta [Fri, 27 Mar 2026 04:40:03 +0000 (12:40 +0800)]
MDL-88272 theme: Update the login background for Boost and Classic
Co-authored-by: Matt Porritt <matt.porritt@moodle.com>
Jun Pataleta [Wed, 25 Mar 2026 06:04:24 +0000 (14:04 +0800)]
MDL-88272 theme_boost: Expose auth instructions to assistive tech
* Setting the `aside` and stats container hidden from assistive
technologies means that screen reader users will miss out on the
login instructions on the site. We must make sure to display them
so screen reader users do not miss out.
* In addition to that, not sure why we need to set a presentation
role to the div containing the stats. I think it's better for
assistive technology users to be able to perceive these as well,
just like sighted users can.
Jun Pataleta [Wed, 25 Mar 2026 06:02:21 +0000 (14:02 +0800)]
MDL-88272 core: Add a semi-opaque backdrop for the login instructions
This is to ensure sufficient contrast regardless of the background
image.
Raquel Ortega [Wed, 25 Mar 2026 11:42:09 +0000 (12:42 +0100)]
MDL-88228 core: Rename "Suspended" users label at system level
Shamim Rezaie [Thu, 12 Mar 2026 22:48:22 +0000 (09:48 +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.
Shamim Rezaie [Thu, 12 Mar 2026 01:58:57 +0000 (12:58 +1100)]
MDL-88092 core_h5p: Update editor lib with Moodle-specific adjustments
Shamim Rezaie [Wed, 11 Mar 2026 20:14:27 +0000 (07:14 +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).
Shamim Rezaie [Thu, 12 Mar 2026 21:37:24 +0000 (08:37 +1100)]
MDL-88092 core_h5p: Update core lib with Moodle-specific adjustments
Shamim Rezaie [Thu, 12 Mar 2026 21:37:10 +0000 (08:37 +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.
Shamim Rezaie [Thu, 12 Mar 2026 20:44:56 +0000 (07:44 +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
AMOS bot [Tue, 31 Mar 2026 00:07:59 +0000 (00:07 +0000)]
Automatically generated installer lang files
Jun Pataleta [Mon, 30 Mar 2026 12:45:38 +0000 (20:45 +0800)]
MDL-88343 admin: Add accessibility Behat test for viewing suspended user
Jun Pataleta [Mon, 30 Mar 2026 12:32:00 +0000 (20:32 +0800)]
MDL-88343 user: Fix suspended user warning message heading level
Mihail Geshoski [Mon, 30 Mar 2026 08:15:03 +0000 (16:15 +0800)]
Merge branch 'MDL-88285-main' of https://github.com/laurentdavid/moodle
Mihail Geshoski [Mon, 30 Mar 2026 01:56:38 +0000 (09:56 +0800)]
Merge branch 'MDL-88086-main' of https://github.com/dpalou/moodle
Huong Nguyen [Mon, 30 Mar 2026 01:52:09 +0000 (08:52 +0700)]
Merge branch 'MDL-87509-main' of https://github.com/jfederico/moodle
Mihail Geshoski [Mon, 30 Mar 2026 01:49:59 +0000 (09:49 +0800)]
Merge branch 'MDL-85544-main' of https://github.com/Jayce0808/moodle
Huong Nguyen [Mon, 30 Mar 2026 01:48:30 +0000 (08:48 +0700)]
Merge branch 'MDL-87471' of https://github.com/paulholden/moodle
Huong Nguyen [Mon, 30 Mar 2026 01:44:16 +0000 (08:44 +0700)]
Merge branch 'MDL-86298-main' of https://github.com/timhunt/moodle
Huong Nguyen [Mon, 30 Mar 2026 01:40:46 +0000 (08:40 +0700)]
Merge branch 'MDL-88309-main' of https://github.com/andimendunia/moodle
Huong Nguyen [Mon, 30 Mar 2026 01:36:52 +0000 (08:36 +0700)]
Merge branch 'MDL-88039-main' of https://github.com/muhammadarnaldo/moodle
Huong Nguyen [Mon, 30 Mar 2026 01:34:15 +0000 (08:34 +0700)]
Merge branch 'MDL-88190-main' of https://github.com/lucaboesch/moodle
Huong Nguyen [Mon, 30 Mar 2026 01:30:45 +0000 (08:30 +0700)]
Merge branch 'MDL-88290-main' of https://github.com/junpataleta/moodle
Huong Nguyen [Mon, 30 Mar 2026 01:28:11 +0000 (08:28 +0700)]
Merge branch 'MDL-88012-main' of https://github.com/christianabila/moodle
AMOS bot [Sat, 28 Mar 2026 00:09:44 +0000 (00:09 +0000)]
Automatically generated installer lang files
Luca Bösch [Wed, 11 Mar 2026 19:21:00 +0000 (20:21 +0100)]
MDL-88190 theme_boost: Equal paddings around "Edit mode" toggle.
Huong Nguyen [Fri, 27 Mar 2026 08:42:27 +0000 (15:42 +0700)]
Moodle release 5.2beta
Huong Nguyen [Fri, 27 Mar 2026 08:42:27 +0000 (15:42 +0700)]
NOBUG: Add upgrade notes
Huong Nguyen [Fri, 27 Mar 2026 08:41:59 +0000 (15:41 +0700)]
Merge branch 'install_main' of https://git.in.moodle.com/amosbot/moodle-install
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.
Andi Permana [Thu, 26 Mar 2026 07:32:22 +0000 (14:32 +0700)]
MDL-88309 auth: fix loginwith string to use placeholder
Dani Palou [Mon, 2 Mar 2026 07:31:01 +0000 (08:31 +0100)]
MDL-88086 quiz: Fix feedback returned by WS get_user_quiz_attempts
Dani Palou [Fri, 27 Feb 2026 11:16:01 +0000 (12:16 +0100)]
MDL-88086 quiz: Abstract and reuse create/answer logic in unit tests
Dani Palou [Fri, 27 Feb 2026 11:07:58 +0000 (12:07 +0100)]
MDL-88086 quiz: Support overallfeedback in test generator
Christian Abila [Thu, 19 Feb 2026 10:55:28 +0000 (11:55 +0100)]
MDL-88012 core: Force unique MessageID when sending bulk mail
Huong Nguyen [Thu, 26 Mar 2026 03:51:05 +0000 (10:51 +0700)]
Merge branch 'MDL-81241-main' of https://github.com/junpataleta/moodle
Mihail Geshoski [Thu, 26 Mar 2026 03:33:40 +0000 (11:33 +0800)]
Merge branch 'MDL-88270-main' of https://github.com/davewoloszyn/moodle
Huong Nguyen [Thu, 26 Mar 2026 00:49:21 +0000 (07:49 +0700)]
Merge branch 'MDL-88279-main' of https://github.com/meirzamoodle/moodle
AMOS bot [Thu, 26 Mar 2026 00:07:58 +0000 (00:07 +0000)]
Automatically generated installer lang files
Hai Nguyen Van [Wed, 3 Dec 2025 10:28:29 +0000 (10:28 +0000)]
MDL-86298 filepicker: prevent renaming file to disallowed extensions
Shamiso Jaravaza [Tue, 24 Feb 2026 17:13:24 +0000 (10:13 -0700)]
MDL-87957 mod_bigbluebuttonbn: Fix meeting events
Mark Johnson [Mon, 2 Mar 2026 15:16:20 +0000 (15:16 +0000)]
MDL-87848 questions: Move question count sql to question_counts
Now that we have multiple places that use question counts, it's a good
idea to have the queries generated in the same place, so that we can
make sure the counts treat things like versions and statuses
consistently.
Mark Johnson [Thu, 15 Jan 2026 14:10:10 +0000 (14:10 +0000)]
MDL-87848 questions: Update question_counts route
Updates the parameters of the bank::question_counts() route for
consistency with bank::switcher(), and adds response metadata.
jfedericobn [Wed, 25 Mar 2026 13:25:01 +0000 (13:25 +0000)]
MDL-87509 mod_bigbluebuttonbn: Fix protected recording link bug
Paul Holden [Wed, 17 Dec 2025 16:16:00 +0000 (16:16 +0000)]
MDL-87471 tiny_autosave: use user context to retrieve draft files.
Laurent David [Wed, 25 Mar 2026 10:12:45 +0000 (11:12 +0100)]
MDL-88285 core_courseformat: Dimmed styling to restricted sections