Compare commits

..

717 Commits

Author SHA1 Message Date
Huong Nguyen ac802ad804 Moodle release 5.1.2 2026-02-06 09:16:30 +07:00
Huong Nguyen a379081818 NOBUG: Add upgrade notes 2026-02-06 09:16:30 +07:00
AMOS bot 550afb2a72 Automatically generated installer lang files 2026-02-06 00:07:49 +00:00
Mihail Geshoski e99b368c60 weekly release 5.1.1+ 2026-02-05 20:23:16 +08:00
Mihail Geshoski 70d026f0f7 NOBUG: Add upgrade notes 2026-02-05 20:23:16 +08:00
Mihail Geshoski 833f55cf11 Merge branch 'install_501_STABLE' of https://git.in.moodle.com/amosbot/moodle-install into MOODLE_501_STABLE 2026-02-05 20:23:05 +08:00
Paul Holden f36fd442e8 MDL-87870 admin: tighten up validation of colour picker values. 2026-02-05 17:25:37 +07:00
Paul Holden 60564c02ab MDL-87870 filter_tex: escape background argument content. 2026-02-05 17:25:37 +07:00
Mihail Geshoski b39f3bb7f9 Merge branch 'MDL-86444_501_STABLE' of https://github.com/marxjohnson/moodle into MOODLE_501_STABLE 2026-02-05 17:25:35 +07:00
Huong Nguyen 31a3e0eaa9 Merge branch 'MDL-87352-501' of https://github.com/andimendunia/moodle into MOODLE_501_STABLE 2026-02-05 17:24:53 +07:00
Mihail Geshoski aac49cd591 Merge branch 'MDL-87258-501' of https://github.com/rjnl/moodle into MOODLE_501_STABLE 2026-02-05 17:24:53 +07:00
Jun Pataleta 557432b764 Merge branch 'MDL-87757-501' of https://github.com/muhammadarnaldo/moodle into MOODLE_501_STABLE 2026-02-05 17:24:53 +07:00
yusufwib01 8683b4a049 MDL-86785 tiny_equation: Add timeout handling for mimetex execution 2026-02-05 11:45:53 +08:00
Adrian Greeve 49b29449af Merge branch 'MDL-87559-501' of https://github.com/abias/moodle into MOODLE_501_STABLE 2026-02-05 11:45:53 +08:00
Mihail Geshoski a80b692453 Merge branch 'MDL-86437-501' of https://github.com/snake/moodle into MOODLE_501_STABLE 2026-02-05 11:45:53 +08:00
Huong Nguyen 5100441bba MDL-87843 filter_tex: Switch to use Colour picker setting
This will allow users to easily choose the background colour
and prevent invalid input values
2026-02-05 11:45:53 +08:00
Paul Holden ff5c46a912 MDL-87612 repository: safer unserializing of file source data. 2026-02-05 11:45:53 +08:00
Mihail Geshoski 860feade62 Merge branch 'MDL-87789-501' of https://github.com/snake/moodle into MOODLE_501_STABLE 2026-02-05 11:45:53 +08:00
AMOS bot e193924db6 Automatically generated installer lang files 2026-02-05 00:07:50 +00:00
Muhammad Arnaldo 364a762fa7 MDL-87757 block_myoverview: Remove navigation role and behat update
- Removal of the navigation role on main and zero-state template
- Add accessibility extra tests for the block_overview
2026-02-04 10:11:41 +07:00
Muhammad Arnaldo fa810327f7 MDL-87757 block_myoverview: fix the heading-order 2026-02-04 10:11:41 +07:00
Andi Permana b25ed2333f MDL-87352 admin: Add MoodleNet removal warnings 2026-02-04 10:07:30 +07:00
AMOS bot 6803fd0988 Automatically generated installer lang files 2026-02-04 00:07:44 +00:00
Alexander Bias 03341aea9f MDL-87559 core: Set $SCRIPT even outside public/ 2026-02-03 10:39:40 +01:00
Jun Pataleta a7c5fad12d Merge branch 'MDL-83984_501' of https://github.com/santoshndev/moodle into MOODLE_501_STABLE 2026-02-03 17:06:49 +08:00
Jake Dallimore 3132cc9d4f Merge branch 'MDL-85535-501' of https://github.com/junpataleta/moodle into MOODLE_501_STABLE 2026-02-03 16:59:16 +08:00
Andrew Nicols 2eb32285d7 Merge branch 'MDL-87199-501' of https://github.com/abias/moodle into MOODLE_501_STABLE 2026-02-03 16:51:07 +08:00
Jun Pataleta 274d5ccc62 Merge branch 'MDL-87185-501' of https://github.com/durenadev/moodle into MOODLE_501_STABLE 2026-02-03 16:50:14 +08:00
Jun Pataleta a105edc53f Merge branch 'MDL-87593-501-enfix' of https://github.com/mudrd8mz/moodle into MOODLE_501_STABLE 2026-02-03 16:47:47 +08:00
Jun Pataleta 582f2e673a Merge branch 'MDL-77162-filepicker-a11y-tab-order-repository-keyboard-selection-M5.1' of https://github.com/stopfstedt/moodle into MOODLE_501_STABLE 2026-02-03 16:44:14 +08:00
Jun Pataleta e9e6e0921d Merge branch 'MDL-87694-course-participant-profile-missing-heading-M5.1' of https://github.com/stopfstedt/moodle into MOODLE_501_STABLE 2026-02-03 15:18:21 +08:00
Rajneel Totaram 0a580ed98d MDL-87258 mod_lti: request access for PNA
Since Chrome 142, public servers accessing resources on local networks
gets blocked by default. Users need to allow access for such requests
to proceed.

This patch introduces a new config setting `ltiallowlocalnetwork`.
This determines if the local-network-access flag should be added to LTI
iframes so that Chrome users get prompted when a local network access
is being made.
2026-02-03 18:49:16 +12:00
Mihail Geshoski bb13942ace Merge branch 'MDL-87606_501_STABLE' of https://github.com/marxjohnson/moodle into MOODLE_501_STABLE 2026-02-03 14:21:57 +08:00
Mihail Geshoski 3c681534da Merge branch 'MDL-86609_501_STABLE' of https://github.com/marxjohnson/moodle into MOODLE_501_STABLE 2026-02-03 14:10:25 +08:00
Mihail Geshoski 036fc9ef9a Merge branch 'MOODLE_501_STABLE_MDL-84966' of https://github.com/niko-hoogeveen/moodle into MOODLE_501_STABLE 2026-02-03 13:44:14 +08:00
Mihail Geshoski 03a901b1fb Merge branch 'MDL-85653_501_STABLE' of https://github.com/marxjohnson/moodle into MOODLE_501_STABLE 2026-02-03 13:36:13 +08:00
Mihail Geshoski 6390af2f48 Merge branch 'MDL-87029-501' of https://github.com/cameron1729/moodle into MOODLE_501_STABLE 2026-02-03 13:26:28 +08:00
Huong Nguyen 078308b04a Merge branch 'MDL-87334-501' of https://github.com/paulholden/moodle into MOODLE_501_STABLE 2026-02-03 11:07:41 +07:00
Huong Nguyen c708bb044e Merge branch 'MDL-87289-501' of https://github.com/raortegar/moodle into MOODLE_501_STABLE 2026-02-03 10:43:48 +07:00
Huong Nguyen e001ebc339 Merge branch 'MDL-87396-501' of https://github.com/izendegi/moodle into MOODLE_501_STABLE 2026-02-03 10:37:06 +07:00
Huong Nguyen f9a69ed13c Merge branch 'MDL-87520-501-branch-number' of https://github.com/mudrd8mz/moodle into MOODLE_501_STABLE 2026-02-03 10:32:34 +07:00
Huong Nguyen f1f1738ca8 Merge branch 'MDL-86905-501' of https://github.com/junpataleta/moodle into MOODLE_501_STABLE 2026-02-03 10:27:03 +07:00
Huong Nguyen 8bdec47d8e Merge branch 'MDL-87675-501' of https://github.com/nvhai248/moodle into MOODLE_501_STABLE 2026-02-03 10:23:32 +07:00
AMOS bot dc662df705 Automatically generated installer lang files 2026-02-03 00:07:58 +00:00
Stefan Topfstedt d5f21323ce MDL-87694 core: prevent empty heading in context header. 2026-02-02 10:35:44 -08:00
Stefan Topfstedt 608266dace MDL-87694 profile: change page title to "Login required".
This realigns the page title with public/user/view.php.
2026-02-02 10:20:40 -08:00
Stefan Topfstedt f8349fb154 MDL-87694 profile: set top level heading when accessed as guest user. 2026-02-02 10:12:45 -08:00
Jun Pataleta 3408c2366d MDL-87694 core: headinglevel display option for $OUTPUT->confirm()
`\core\output\core_renderer::confirm()`'s `$displayoptions` parameter
now also accepts a `headinglevel` option that developers can use to
specify the heading level of the confirmation's heading. If not
specified, the confirmation heading will be rendered in an `h4` tag.
2026-02-02 09:18:50 -08:00
cescobedo 6d9979bd1b Merge branch 'MDL-87761-501' of https://github.com/sarjona/moodle into MOODLE_501_STABLE 2026-02-02 11:16:10 +01:00
Jun Pataleta 9360d678e5 MDL-86905 core: Use proper link markup for email links 2026-02-02 18:04:10 +08:00
Huong Nguyen 5182889f53 Merge branch 'MDL-78342-501' of https://github.com/davewoloszyn/moodle into MOODLE_501_STABLE 2026-02-02 08:49:53 +07:00
Safat 918cc4f6c4 Merge branch 'MDL-86601-adhoc-index-MOODLE_501_STABLE' of https://github.com/bwalkerl/moodle into MOODLE_501_STABLE 2026-02-02 12:12:43 +11:00
Cameron Ball 6862165efa MDL-87029 quiz: Refetch attempts in overdue task to avoid stale submits
The update_overdue_attempts scheduled task iterated attempts from a recordset
and could act on stale attempt data if the web request finished an attempt
before cron processed it, causing duplicate submissions.

Change get_list_of_overdue_attempts() to return only attempt ids plus computed user
timeclose/timelimit, and refetch each attempt by id inside the task loop before
constructing quiz_attempt. This keeps quiz_attempt APIs unchanged and ensures cron
operates on current state
2026-01-31 15:38:34 +08:00
AMOS bot 052cf0a509 Automatically generated installer lang files 2026-01-31 00:07:50 +00:00
David Mudrák 9556da6637 MDL-87520 core: Fix interpretation of CFG->branch in update API client
Starting in version 3.10, Moodle started to use a different format for
the $CFG->branch that has not been fixed here. This is to make sure that
we request the correct version of the plugin.
2026-01-30 14:18:16 +01:00
Benjamin Walker 5af16f7c62 MDL-86601 core_task: Add index for scheduled task lastruntime 2026-01-30 22:52:31 +10:00
Benjamin Walker 223e070e9c MDL-86601 core_task: Add index for large adhoc task queues 2026-01-30 22:52:31 +10:00
Sara Arjona 3e49f34657 MDL-87761 course: Add warning for phasing out subsection descriptions
The Description field within the Subsection edit form has been deprecated since Moodle 5.2 onwards (see MDL-87279).
To ensure a smooth transition and avoid data loss for our users, the XD team have prepared a solution to notify them
of this upcoming change in stable versions.
2026-01-30 12:25:11 +01:00
Iñigo Zendegi a73abacee5 MDL-87396 mod_assign: Add availability check to notifications 2026-01-30 11:41:12 +01:00
Paul Holden 604a1e0cdd MDL-87334 course: looser check for empty return field editing course.
When the course format switcher reloads the form, the `$returnto`
parameter is of type string: "0", rather of type integer per initial
load.

In this case the `empty(...)` check is verifying all of empty string,
0 (integer) and "0" (string). Hurrah for PHP type checking.
2026-01-30 10:37:51 +00:00
Huong Nguyen 50e44173c8 weekly release 5.1.1+ 2026-01-30 15:39:13 +07:00
Huong Nguyen 8084242767 NOBUG: Add upgrade notes 2026-01-30 15:39:13 +07:00
Huong Nguyen e05e7093c9 Merge branch 'install_501_STABLE' of https://git.in.moodle.com/amosbot/moodle-install into MOODLE_501_STABLE 2026-01-30 15:39:02 +07:00
Andrew Nicols ebf862e0d3 NOBUG: Bump composer.lock 2026-01-30 13:06:41 +08:00
Niko Hoogeveen c94a1593e3 MDL-84966 core_question: Updated question bank tag filter
Fixes a bug where filtering questions by tag the 'NONE'
option was not being respected. Automated testing was also added
to cover tag filtering conditions in the question bank
2026-01-29 09:41:57 -05:00
Daniel Ureña d5cad3ef39 MDL-87185 block_site_main_menu: Add required library 2026-01-29 13:14:55 +01:00
fgo 65da222994 MDL-86437 enrol_lti: Cast scoreGiven to float for LTI compliance
scoreGiven was being passed as a string (e.g. "8.0"), which caused
validation errors in some LMS implementations such as Rustici Engine.
According to the LTI specification, scoreGiven must be numeric if
present.

Co-authored-by: Jake Dallimore <jake@moodle.com>
2026-01-29 14:58:43 +08:00
Jake Dallimore 3382df5406 MDL-87789 libraries: patch lti1p3 for certification support
https://github.com/packbackbooks/lti-1-3-php-library/issues/169 blocks
us from using the new build.1edtech certification tooling. This issue
commits that fix as a library customisation/hack for stables, so the
suite can be used for annual/bi-annual re-certification.
2026-01-29 13:24:56 +08:00
Huong Nguyen f9280e786b Merge branch 'MDL-87521_501' of https://github.com/timhunt/moodle into MOODLE_501_STABLE 2026-01-29 11:03:56 +07:00
Huong Nguyen 8d4df26b01 Merge branch 'MDL-87087-501' of https://github.com/lameze/moodle into MOODLE_501_STABLE 2026-01-29 11:01:29 +07:00
Huong Nguyen 884a9b436c Merge branch 'MDL-86994-501' of https://github.com/mioyu-ubiq/moodle into MOODLE_501_STABLE 2026-01-29 10:58:20 +07:00
Huong Nguyen bada40d4a4 Merge branch 'MDL-87018-501' of https://github.com/bhect0/moodle into MOODLE_501_STABLE 2026-01-29 10:55:02 +07:00
Huong Nguyen b0130619d6 Merge branch 'MDL-87104-501' of https://github.com/paulholden/moodle into MOODLE_501_STABLE 2026-01-29 10:46:28 +07:00
Huong Nguyen 207f222e80 Merge branch 'MDL-87323-501' of https://github.com/paulholden/moodle into MOODLE_501_STABLE 2026-01-29 10:41:30 +07:00
Huong Nguyen 8e959ef40d Merge branch 'MDL-86988-501' of https://github.com/paulholden/moodle into MOODLE_501_STABLE 2026-01-29 10:39:09 +07:00
Angelia Dela Cruz 846ddd3979 MDL-87087 tool_dataprivacy: Test data request by authorized user 2026-01-29 11:08:26 +08:00
AMOS bot 5370fa4d1d Automatically generated installer lang files 2026-01-29 00:07:47 +00:00
David Mudrák b23182d82d MDL-87593 lang: Fix strings order 2026-01-28 21:44:45 +01:00
Paul Holden 8c49fdeb1d MDL-87714 customfield_number: upgrade note for recalculate parameters. 2026-01-28 16:34:04 +00:00
Paul Holden 37ec33f56c Merge branch 'MDL-87714-501' of https://github.com/sebastsg/moodle into MOODLE_501_STABLE 2026-01-28 16:07:12 +00:00
Sebastian Gundersen e4c3310295 MDL-87714 customfield: Add component/area to field number provider
Fixes ambiguous instances when using shared custom fields.
The component and area parameters are now used to get the proper handler.
2026-01-28 16:24:35 +01:00
Tim Hunt 915c263266 MDL-87521 behat: better error reporting if an adhoc task fails 2026-01-28 14:56:24 +00:00
Paul Holden 0f332fb0ff Merge branch 'MDL-87736-501' of https://github.com/yerairogo/moodle into MOODLE_501_STABLE 2026-01-28 14:45:07 +00:00
Paul Holden dd8a1647c3 MDL-87059 customfield: upgrade note regarding shortname uniqueness. 2026-01-28 14:39:48 +00:00
Paul Holden b56a9953cf Merge branch 'MDL-87059-501' of https://github.com/dravek/moodle into MOODLE_501_STABLE 2026-01-28 14:26:14 +00:00
Paul Holden 5cb2949d50 Merge branch 'MDL-87437-501' of https://github.com/tasiobg/moodle into MOODLE_501_STABLE 2026-01-28 14:16:27 +00:00
Yerai Rodríguez 75ad63dd97 MDL-87736 customfield: Retrieve instances data using component and area 2026-01-28 13:22:30 +01:00
Jun Pataleta 2448dbd55f Merge branch 'MDL-86639-501' of https://github.com/yusufwib01/moodle into MOODLE_501_STABLE 2026-01-28 16:17:30 +08:00
mioyu-ubiq 0222576f3f MDL-86994 mod_assign: Behat to test permitted users can edit submission 2026-01-28 13:47:22 +08:00
Hai Nguyen Van 002e281598 MDL-87675 core: Add delay for displaying the YUI alert dialogue message
* Add a slight delay for displaying the message content of the YUI
alert dialogue's ARIA live container to allow screen readers to
announce the alert message accordingly.
2026-01-28 03:19:03 +00:00
David Mudrák 17f2636bc2 MDL-87593 lang: Use the fixed strings in tests 2026-01-27 21:40:36 +01:00
Helen Foster cff7c05eb8 MDL-87593 lang: Import fixed English strings (en_fix) 2026-01-27 21:40:05 +01:00
Mark Johnson 3f9e294f21 MDL-87606 backup: Include child questions in backups
Since MDL-41924, because we are not always including the whole category
of each question being used in a backup, we have been missing some child
questions.

This expands the query selecting questions belonging to categories
where only annotated questions are being included, to also select any
children of those questions.
2026-01-27 14:52:13 +00:00
Paul Holden e80b3cf70a MDL-87104 message: remove border from contact request sent profile info. 2026-01-27 10:26:04 +00:00
Raquel Ortega 86de0a0c8d MDL-87289 mod_forum: Disable mediaplugin filter in emails 2026-01-26 21:33:40 +01:00
Huong Nguyen 59d0bb149d Merge branch 'MDL-84862-501-test' of https://github.com/yusufwib01/moodle into MOODLE_501_STABLE 2026-01-26 15:32:28 +07:00
David Carrillo 7b93ccde37 MDL-87059 customfield: Check if custom field shortname is unique
- If is a shared field check that shortname does not exist anywhere.
- If is an entity field check that the shortname does not exist
within the same entity fields or in the shared fields.
2026-01-26 08:02:39 +01:00
Huong Nguyen 96dd901bea weekly release 5.1.1+ 2026-01-26 10:38:54 +07:00
Huong Nguyen 316507507b Merge branch 'install_501_STABLE' of https://git.in.moodle.com/amosbot/moodle-install into MOODLE_501_STABLE 2026-01-26 10:38:43 +07:00
Héctor Benedicte e11305428c MDL-87018 qtype_essay: Add unit tests for un_summarise_response(). 2026-01-23 19:29:22 +01:00
AMOS bot 489eb64b4a Automatically generated installer lang files 2026-01-23 00:08:05 +00:00
Mihail Geshoski 555eef58af MDL-87287 qbank_tagquestion: Fix version bump 2026-01-22 14:25:06 +07:00
Safat 2e011c622f Merge branch 'MDL-86527-501' of https://github.com/HuongNV13/moodle into MOODLE_501_STABLE 2026-01-22 15:39:43 +11:00
Huong Nguyen a686188165 Merge branch 'MDL-87188-501' of https://github.com/paulholden/moodle into MOODLE_501_STABLE 2026-01-22 11:02:45 +07:00
Huong Nguyen 880314b565 Merge branch 'MDL-87317-501' of https://github.com/lucaboesch/moodle into MOODLE_501_STABLE 2026-01-22 10:52:55 +07:00
Huong Nguyen 638de36275 Merge branch 'MDL-87318-501' of https://github.com/lucaboesch/moodle into MOODLE_501_STABLE 2026-01-22 10:46:19 +07:00
Huong Nguyen bc72e1c107 Merge branch 'MDL-86797-501' of https://github.com/paulholden/moodle into MOODLE_501_STABLE 2026-01-22 10:44:18 +07:00
Huong Nguyen 23a8fdc812 Merge branch 'MDL-87092-501' of https://github.com/Kredelirious/moodle into MOODLE_501_STABLE 2026-01-22 10:36:45 +07:00
Huong Nguyen 6511e183f5 Merge branch 'MDL-87090-501' of https://github.com/lameze/moodle into MOODLE_501_STABLE 2026-01-22 10:32:28 +07:00
Jun Pataleta 775858e46a Merge branch 'MDL-86136_501_STABLE' of https://github.com/marxjohnson/moodle into MOODLE_501_STABLE 2026-01-22 08:32:47 +08:00
Jun Pataleta ff9fb97d72 Merge branch 'MDL-87478_501' of https://github.com/mohdtahseen1/moodle into MOODLE_501_STABLE 2026-01-22 08:22:46 +08:00
Mark Johnson c00b4eda45 MDL-86136 question: Amend version restore test
Restoring a whole course will now restore the backed-up questions to a
new qbank instance. This means the test to restore versions was not
restoring the deleted versions to the original question bank entires,
but to a new question bank entry in the new qbank.

Updating the test to just backup and restore the quiz resolves this.
2026-01-21 09:30:31 +00:00
Mark Johnson ca12b96b77 MDL-86136 qbank: Restore entire activity when it is in the backup
When restoring a backup containing a question bank, we were always
trying to match questions to an existing category on the target course
if once existed. This meant that when duplicating a qbank on the same
course, or importing the same qbank to another course multiple times,
only one of the restored qbanks would end up with questions in it.

This adds a mechanism to record any activities in the backup which
support `FEATURE_PUBLISHES_QUESTIONS`. Then when we restore the
questions, we check if we will be restoring the original activity they
belong to, and skip trying to match them to an existing category. This
means a new copy of each question will be created, and moved to the new
copy of the qbank once it is created.
2026-01-21 09:30:31 +00:00
Muhammad Arnaldo 2bc458c4f9 MDL-86527 behat: Avoid element-click-intercepted failures
Adjusts the window size to accommodate wide tables.
This ensures that columns which were previously clipped
are now visible and accessible to the Behat driver.
2026-01-21 15:05:05 +07:00
Muhammad Arnaldo 6945ab9db5 MDL-86527 behat: Fix random failures when toggling edit mode 2026-01-21 15:05:05 +07:00
Adrian Greeve 3768fa2928 Merge branch 'MDL-87625-501' of https://github.com/andrewnicols/moodle into MOODLE_501_STABLE 2026-01-21 14:19:15 +08:00
Adrian Greeve ad9a1630a1 Merge branch 'MDL-87659-501' of https://github.com/andrewnicols/moodle into MOODLE_501_STABLE 2026-01-21 13:13:35 +08:00
Andrew Nicols 3252c42592 MDL-87659 core: Hide "Details" section of checks Table when there are none 2026-01-21 13:01:41 +08:00
Huong Nguyen f41ee92e8e Merge branch 'MDL-79221-MOODLE_501_STABLE' of https://github.com/PhMemmel/moodle into MOODLE_501_STABLE 2026-01-21 10:14:12 +07:00
Huong Nguyen 77937f2359 Merge branch 'MDL-51447-501' of https://github.com/AnupamaSarjoshi/moodle into MOODLE_501_STABLE 2026-01-21 10:10:40 +07:00
AMOS bot e3ccaace4a Automatically generated installer lang files 2026-01-21 00:08:12 +00:00
Yusuf Wibisono b612105230 MDL-86639 groups: Wrap group names in grade report group selector 2026-01-21 03:29:16 +07:00
Ilya Tregubov 157a8eb014 Merge branch 'MDL-76975-501' of https://github.com/yerairogo/moodle into MOODLE_501_STABLE 2026-01-20 19:45:50 +02:00
Paul Holden 7d620f8fdc MDL-86797 courseformat: account for hidden delegated section info. 2026-01-20 09:56:34 +00:00
Kim Jared Lucas ba75b60c85 MDL-87092 tool_uploaduser: suspend enrolments via CSV upload 2026-01-20 11:17:44 +08:00
Mihail Geshoski d70681c2f5 Merge branch 'MDL-87287_501_STABLE' of https://github.com/marxjohnson/moodle into MOODLE_501_STABLE 2026-01-20 10:35:32 +08:00
AMOS bot 1bc6eba524 Automatically generated installer lang files 2026-01-20 00:08:12 +00:00
Anupama Sarjoshi 6200a07627 MDL-51447 block_completionstatus: Show only user-visible activities
This change ensures that the completion details page displays only the
activities that are visible to the user on the course home page.
Activities that are hidden, unavailable or  located in hidden sections
are no longer shown in the completion details view.

Co-authored by: ewallah <info@ewallah.net>
2026-01-19 17:56:56 +05:30
Anupama Sarjoshi ccdacb8443 MDL-51447 core_completion: Get visible activities with completion on 2026-01-19 17:56:56 +05:30
Simey Lameze a84be34f83 MDL-87090 behat: improve new test 2026-01-19 14:12:25 +08:00
mioyu-ubiq 5ec89b95ec MDL-87090 mod_assign : Teacher can override assignment deadlines 2026-01-19 14:12:25 +08:00
David Woloszyn 189be87f2e MDL-78342 core_table: Remove line break conversion in format_text 2026-01-19 13:08:29 +11:00
Mark Johnson 61868b9510 MDL-86609 qbank_bulkmove: Select the current category by default 2026-01-16 14:26:37 +00:00
Nicolas Dunand 13317f2598 MDL-86609 qbank_bulkmove: Target qbank categoryid fix. 2026-01-16 14:25:36 +00:00
Luca Bösch 54dfeb3d11 MDL-87318 gradereport_grader: No over-thick table borders with BS 5. 2026-01-16 11:01:22 +01:00
Luca Bösch 908784bca9 MDL-87317 report_progress: Striped hovering table rows with BS 5. 2026-01-16 11:00:27 +01:00
Jake Dallimore 28c9a52455 weekly release 5.1.1+ 2026-01-16 16:38:17 +08:00
Jake Dallimore 86ee7eef07 NOBUG: Add upgrade notes 2026-01-16 16:38:17 +08:00
Jake Dallimore b4ed92a701 Merge branch 'install_501_STABLE' of https://git.in.moodle.com/amosbot/moodle-install into MOODLE_501_STABLE 2026-01-16 16:38:11 +08:00
Paul Holden 2ae416b6f5 MDL-85300 grade: account for tooltip size in bulk move dialogue.
Now that it actually works, it obscures some elements required in
Behat scenarios. Resize the icon, and place it to the right.
2026-01-16 15:23:29 +08:00
Jake Dallimore c5faeaee4c Merge branch 'MDL-87634-501' of https://github.com/paulholden/moodle into MOODLE_501_STABLE 2026-01-16 15:23:29 +08:00
Jayce Birrell d3c9ccba3c MDL-86802 core: make CURLOPT_USERPWD optional for put()
Microsoft does not always allow an Authorization header when using PUT but the put() method sets one
by default - https://learn.microsoft.com/en-us/graph/api/driveitem-createuploadsession?view=graph-rest-1.0#remarks.
I've included an optional argument to prevent this, but the default
value will maintain the pre-existing logic to avoid other regressions.
2026-01-16 15:23:29 +08:00
Jake Dallimore 72c6f8882c Merge branch 'MDL-86423-501' of https://github.com/martygilbert/moodle into MOODLE_501_STABLE 2026-01-16 15:23:29 +08:00
Jake Dallimore ec07626137 Merge branch 'MDL-87635-501' of https://github.com/paulholden/moodle into MOODLE_501_STABLE 2026-01-16 15:23:29 +08:00
Jake Dallimore 28f156895a Merge branch 'MDL-86869_501-single-view-overload' of https://github.com/alexkeel/moodle into MOODLE_501_STABLE 2026-01-16 15:23:29 +08:00
Paul Holden 7adddedf4f MDL-50364 forms: consistent access to language strings from JS. 2026-01-16 15:23:29 +08:00
Paul Holden 6ba03f474a Merge branch 'MDL-50364-501' of https://github.com/Jayce0808/moodle into MOODLE_501_STABLE 2026-01-16 15:23:29 +08:00
Ilya Tregubov 44fbef243d Merge branch 'MDL-85300-501' of https://github.com/paulholden/moodle into MOODLE_501_STABLE 2026-01-16 15:23:29 +08:00
Andrew Nicols 7c19447345 Merge branch 'MDL-87608-501' of https://github.com/paulholden/moodle into MOODLE_501_STABLE 2026-01-16 15:23:29 +08:00
Mi Jia Looi 5e946c1f4f MDL-86017 mod_folder: Cast customdata to object in folder_cm_info_view() 2026-01-16 15:23:29 +08:00
Huong Nguyen f793334a44 Merge branch 'MDL-87070-501' of https://github.com/andelacruz/moodle into MOODLE_501_STABLE 2026-01-16 15:23:29 +08:00
Huong Nguyen 4c47af3dee Merge branch 'MDL-85431_501_STABLE' of https://github.com/marxjohnson/moodle into MOODLE_501_STABLE 2026-01-16 15:23:29 +08:00
Huong Nguyen 3ab3c72aa7 Merge branch 'MDL-87443-501' of https://github.com/paulholden/moodle into MOODLE_501_STABLE 2026-01-16 15:23:29 +08:00
Huong Nguyen efee80655a Merge branch 'MDL-87229-501' of https://github.com/lucaboesch/moodle into MOODLE_501_STABLE 2026-01-16 15:23:28 +08:00
Huong Nguyen a4da1b6b4e Merge branch 'MDL-87056-501' of https://github.com/paulholden/moodle into MOODLE_501_STABLE 2026-01-16 15:23:28 +08:00
Huong Nguyen 36186e9af7 Merge branch 'MDL-86565-501' of https://github.com/paulholden/moodle into MOODLE_501_STABLE 2026-01-16 15:23:28 +08:00
Huong Nguyen 37c54215d1 Merge branch 'MDL-87120-501' of https://github.com/paulholden/moodle into MOODLE_501_STABLE 2026-01-16 15:23:27 +08:00
AMOS bot 92788c9c31 Automatically generated installer lang files 2026-01-15 00:08:05 +00:00
Mark Johnson 42cb48db5c MDL-85653 qbank_editquestion: Display static status when not editable 2026-01-14 15:41:39 +00:00
Mark Johnson 3bb83daec9 MDL-86444 questions: Fix question categories with incorrect top parents 2026-01-14 10:28:15 +00:00
Paul Holden 34db25536e MDL-87634 core: exclude fixtures from Github actions "one-by-one" job.
This is consistent with the PHPUnit general configuration in 20aa9d05.
2026-01-14 09:25:27 +00:00
Yerai Rodríguez ab57c200c5 MDL-76975 admin: Move AMD dependencies to data attribute to fix overflow
Since there is a 1024 length limit on arguments passed through
js_call_amd(), we pass it through a HTML element dataset to avoid
this limit.
2026-01-14 08:28:48 +01:00
Guest 3b72da69af MDL-87478 mod_quiz: Make pre-create attempts work with previews 2026-01-13 15:12:52 +05:30
AMOS bot 358dd1dc29 Automatically generated installer lang files 2026-01-13 00:08:07 +00:00
Andrew Nicols 3f436bb599 MDL-87625 core: Use the /r.php basepath to guess routes 2026-01-13 08:06:18 +08:00
Paul Holden d7431b36a2 MDL-87635 backup: ensure required test libraries are loaded. 2026-01-12 17:22:16 +00:00
Simey Lameze 159a155062 MDL-87088 behat: add missing @javascript tags to required tests 2026-01-12 13:37:44 +07:00
Angelia Dela Cruz 0c0b4b69c9 MDL-87070 mod_glossary: Behat to confirm glossary autolinking works 2026-01-12 11:08:07 +08:00
Huong Nguyen a4b47235d6 Merge branch 'MDL-87088-501' of https://github.com/andelacruz/moodle into MOODLE_501_STABLE 2026-01-12 09:53:15 +07:00
dustinhuynh 90e25dfc45 MDL-86058 core_task: enable disable tasks with a pending upgrade 2026-01-12 09:44:05 +07:00
Stefan Topfstedt 3c7933178d MDL-77162 filepicker: default to selecting first repository available. 2026-01-09 08:34:59 -08:00
Paul Holden 738fb91dec MDL-87443 reportbuilder: use Toast selector in Behat scenarios. 2026-01-09 12:08:02 +00:00
Paul Holden badca8a618 MDL-87443 behat: define new Toast message named selector. 2026-01-09 12:08:02 +00:00
Mark Johnson 0fa3a9d6aa MDL-87287 qbank_deletequestion: Update behat test for tag deletion
Now that deleting a tagged question correctly deletes it tag instances,
the tag is no longer available for re-selection after all the tagged
questions are deleted.
2026-01-09 10:40:50 +00:00
Mark Johnson 8b0edbf074 MDL-87287 mod_qbank: De-duplicate tags when migrating questions
In the migration from old-style question banks to mod_qbank, if a
question had the same tag from multiple contexts, when it was moved to
its new question bank context, the migration tried to set multiple tag
instances for the same tag to the same context, which caused a unique
key violation.

This add some checking to the
`question_move_question_tags_to_new_context` function to identify any
tag instances to be moved that will trigger this key violation, and
delte any duplicates before the move so we end up with a single instance
of the tag in the new context. This is done in a transaction that will
only be committed once the remaining tags have been moved.

This required adding the `tiuserid` field to the data returned by
`core_tag_tag::get_items_tag` so we can assemble the unique key without
having to do additional queries.

This also extends the test coverage for the `transfer_questions` task
to ensure tags are moved to the new contexts, and tags on stale questions
are deleted.
2026-01-09 10:40:29 +00:00
Mark Johnson 27db562110 MDL-87287 qbank_tagquestion: Remove all tags from deleted questions
When we deleted a question, we were including the userid of the user who
performed the delete when checking for question tags. This means that if
user A tagged the question, and user B deleted the question, it might
leave the tags behind.

This fixes the issue by deleting tags regardless of the user, and adds
an upgrade step to find and remove orphaned tag instances.
2026-01-09 10:40:27 +00:00
Tasio de4bcb1b4c MDL-87437 course: Make course cached image entries domain-agnostic 2026-01-09 10:12:28 +01:00
Luca Bösch 47ce3408a1 MDL-87229 course: Show nice "Other users" table in courses. 2026-01-09 07:12:35 +01:00
Jayce Birrell 1e2abd1466 MDL-50364 forms: calendar header renderer uses translated months 2026-01-09 13:53:07 +10:30
Angelia Dela Cruz 1e5e225a86 MDL-87088 core_grades: Behat to view grades from user menu 2026-01-09 10:26:11 +08:00
Huong Nguyen 774796cf77 weekly release 5.1.1+ 2026-01-09 08:41:18 +07:00
Huong Nguyen 9e72cc3998 NOBUG: Add upgrade notes 2026-01-09 08:41:17 +07:00
Huong Nguyen 928b6719dc Merge branch 'install_501_STABLE' of https://git.in.moodle.com/amosbot/moodle-install into MOODLE_501_STABLE 2026-01-09 08:41:06 +07:00
Jun Pataleta 1c4022b77d MDL-85535 forum: Render discussion navigation at the bottom only 2026-01-08 11:34:49 +08:00
Jun Pataleta 158bff3dcb MDL-85535 forum: Label discussion navigation 2026-01-08 11:34:49 +08:00
Marty 8642510801 MDL-86423 mod_assign: Reduce duesoon/overdue notifications.
Students shouldn't receive overdue notifications if there is nothing to
submit in Moodle.

Students shouldn't receive due soon notifications if they a) already
have a grade or b) meet activity completion status.
2026-01-07 12:24:20 -05:00
Paul Holden 36a0b0572f MDL-87120 course: observe activity dates display in course requests.
Upgrade step to ensure the default value for this field in the schema
matches the default value used in the interface itself.
2026-01-07 16:43:22 +00:00
Paul Holden 0fd0462bc6 MDL-87608 javascript: fix public paths in generated jsconfig file.
This partly reverts changes from 31335206, removing the double public/
directory component of the file paths.
2026-01-07 14:30:40 +00:00
Safat 362c9de6ad Merge branch 'MDL-87406-501' of https://github.com/ericmerrill/moodle into MOODLE_501_STABLE 2026-01-07 16:27:32 +11:00
Jun Pataleta 8d8941166c Merge branch 'MDL-86436-navigation-accessibility-page-heading-menu-visible-on-larger-screens-even-if-empty-M5.1' of https://github.com/stopfstedt/moodle into MOODLE_501_STABLE 2026-01-07 11:18:15 +08:00
Jun Pataleta 0d16e46646 Merge branch 'MDL-87416-glossary-entry-page-title-missing-M5.1' of https://github.com/stopfstedt/moodle into MOODLE_501_STABLE 2026-01-07 11:14:03 +08:00
Santosh Nagargoje 4d04135186 MDL-83984 core: Fixed subpanel show/hide issue 2026-01-06 16:20:20 +05:30
Adrian Greeve cb4e4c8d45 Merge branch 'MDL-87526-501' of https://github.com/andrewnicols/moodle into MOODLE_501_STABLE 2026-01-06 09:08:39 +08:00
Stefan Topfstedt bf58e69516 MDL-87416 glossary: set page title on glossary entry details page. 2026-01-05 11:30:37 -08:00
Mark Johnson cf51659f5a MDL-85431 questions: Fix access checks on Question banks page
Users who could not manage activities on a course, but did have
permission to access particular question banks, could not access the
Question banks page.

This modifies the permission checks on that page to allow access if the
user can either manage activities, or has access to at least one
activity that publishes questions. Some additional changes to the output
were required to prevent non-editing users adding banks.

It also modifies the navigation hook to add the Question banks
navigation node if the user can access any activitiy that publishes
questions on the course. This is all based on cached modinfo and
permissions data so should remain performant.
2026-01-05 15:21:05 +00:00
Paul Holden 4a7f57ee8e Merge branch 'MDL-87529-501' of https://github.com/yerairogo/moodle into MOODLE_501_STABLE 2026-01-05 14:24:31 +00:00
Paul Holden 1cc0453ccd Merge branch 'MDL-87288-501' of https://github.com/ilyatregubov/moodle into MOODLE_501_STABLE 2026-01-05 09:46:52 +00:00
AMOS bot 9f589703a6 Automatically generated installer lang files 2026-01-03 00:08:06 +00:00
Huong Nguyen ed4f0da1c9 Merge branch 'MDL-81882-501' of https://github.com/yusufwib01/moodle into MOODLE_501_STABLE 2025-12-29 13:51:38 +07:00
Matt Porritt 923eb86a8c MDL-84862 AI: Stop provider instance creataion when no provider plugins
Prevents calls to action to create an AI provider instance from
being displayed to users when there are no AI provider plugins
installed in the instance.

Co-Authored-By: Yusuf Wibisono <yusuf.wibisono@moodle.com>
2025-12-29 12:00:49 +07:00
Huong Nguyen 5886683a33 Merge branch 'MDL-87433-501' of https://github.com/muhammadarnaldo/moodle into MOODLE_501_STABLE 2025-12-29 09:54:37 +07:00
yusufwib01 5ef0a36d3d MDL-81882 core: Optimize block instance deletion with batch processing
Improve upgrade execution by gathering block instance IDs upfront
and processing deletions of related records in context, block_positions, user_preferences, and block_instances tables in batches.
2025-12-29 09:33:14 +07:00
AMOS bot 07e4f55804 Automatically generated installer lang files 2025-12-27 00:08:08 +00:00
AMOS bot dda4552e79 Automatically generated installer lang files 2025-12-26 00:08:05 +00:00
Muhammad Arnaldo c04a71b431 MDL-87433 course: Add sorting to get_nearest_editable_subcategory
Add ORDER BY to the query to ensure categories are returned in
consistent order. This fixes random test failures, especially
on PostgreSQL.
2025-12-24 16:14:19 +07:00
Yerai Rodríguez 120beb8aaf MDL-87529 core_customfield: reset CF handler cache after form save 2025-12-23 14:01:49 +01:00
Alex Keel d08fd3c2af MDL-86869 gradereport_singleview: Raises memory limit 2025-12-23 12:25:49 +00:00
Alex Keel 2b94d55524 MDL-86869 gradereport_singleview: Lower the max per page limit 2025-12-23 12:23:48 +00:00
Mihail Geshoski 057c314edc Merge branch 'MDL-86798_501_STABLE' of https://github.com/marxjohnson/moodle into MOODLE_501_STABLE 2025-12-23 16:09:55 +08:00
Andrew Nicols d4690ea232 MDL-87526 core: Specify composer project type 2025-12-23 11:49:15 +08:00
Andrew Nicols 88763ab043 MDL-87526 core: Moodle provides moodle/lms 2025-12-23 11:49:02 +08:00
Mark Johnson 547ea9cfbf MDL-86798 questions: Check original context is on the same site
When checking if the original context exists during a restore, we need
to check that we're looking at the context on the same site, not one on
a different site that happens to have the same ID.
2025-12-19 09:31:14 +00:00
Mark Johnson cfaccbf953 MDL-86798 questions: Track next version for question bank entries
This adds a new "nextversion" field to `question_bank_entries` to track
which version number the next version of the question should have. This
ensures that version numbers are not re-used if the latest version is
deleted.

To use this field, you must call
`\core_question\versions::get_next_version()`. This will initialise the
field to the correct value if it is currently null.

If you create a new version using this value, you must then call
`\core_question\versions::increment_next_version()` to increment the
counter.
2025-12-19 09:31:14 +00:00
Mark Johnson 11d0802ca6 MDL-86798 questions: Restore backups containing deleted versions
If the latest version of a question is deleted, and then a new one
created, the new one will currently re-use the version number of the
deleted version. If the original version was backed up before it was
deleted, then restored later, we end up with two questions in one
question bank entry that have the same version.

To resolve this, when restoring a question, we check if there is already
a version with the same version number, then bump it and any higher
versions up by 1. We also check for any references specifically using
these versions and bump those up by 1. Any references using "always
latest" will be fine, as the latest version will still be the latest.

Additionally, if deleting a version made it hidden, and the backup
contains the same version in "ready" state, restoring the backup will
restore it to "ready" state.
2025-12-19 09:29:03 +00:00
Huong Nguyen 1cd17816c5 weekly release 5.1.1+ 2025-12-19 09:04:16 +07:00
Ilya Tregubov 8bcf6f016d MDL-87288 output: Fix pagination in small containers. 2025-12-18 09:37:45 +01:00
Huong Nguyen bd39c5df46 Merge branch 'MDL-87340-501' of https://github.com/lameze/moodle into MOODLE_501_STABLE 2025-12-18 11:44:37 +08:00
Huong Nguyen 85f08eccd7 Merge branch 'MDL-86420-501' of https://github.com/muhammadarnaldo/moodle into MOODLE_501_STABLE 2025-12-18 11:44:36 +08:00
Huong Nguyen e35c3f18e5 Merge branch 'MDL-86086-501' of https://github.com/andimendunia/moodle into MOODLE_501_STABLE 2025-12-18 11:44:36 +08:00
Adrian Greeve 700ffe79a3 Merge branch 'MDL-87461-501' of https://github.com/andrewnicols/moodle into MOODLE_501_STABLE 2025-12-18 11:44:36 +08:00
Huong Nguyen 0bfc7f5abd Merge branch 'MDL-87094-501' of https://github.com/andelacruz/moodle into MOODLE_501_STABLE 2025-12-18 11:44:36 +08:00
Mihail Geshoski 39a16ed55a Merge branch 'MDL-72833_501_STABLE' of https://github.com/marxjohnson/moodle into MOODLE_501_STABLE 2025-12-18 11:44:36 +08:00
Andi Permana 7414e469b8 MDL-86086 theme_boost: Add visual distinction for readonly form inputs 2025-12-17 19:07:45 +07:00
Andrew Nicols a55b9cfc70 MDL-87461 core: Update composer lock file 2025-12-17 16:14:52 +08:00
Andrew Nicols f4187d49da MDL-87461 core: Add Composer config to indicate the use of public dir 2025-12-17 16:14:51 +08:00
Mihail Geshoski cacdd7e63a Merge branch 'MDL-86416-501' of https://github.com/junpataleta/moodle into MOODLE_501_STABLE 2025-12-17 12:14:29 +08:00
Paul Holden 08d6834166 MDL-85300 output: ensure Bootstrap tooltips load for dynamic content.
Prior to this change, tooltips would only load for elements in the
initial page DOM without considering those elements subsequently added
dynamically (e.g. via AJAX).

Co-authored-by: Sebastian Gundersen <sebastian@sgundersen.com>
2025-12-16 13:30:11 +00:00
Amaia Anabitarte 740c3dafcc Merge branch 'MDL-87436-501' of https://github.com/laurentdavid/moodle into MOODLE_501_STABLE 2025-12-15 13:41:16 +01:00
Mark Johnson b50f58ec0d MDL-72833 quiz: Respect locale in maxmark setting
Editing maxmarks in quiz slots was not respecting the decimal separator
from the set language's locale, meaning if your language formats numbers
like 1,10 editing didn't work correctly.

This sets the correct parameter to ensure the locale is respected.
2025-12-15 11:47:24 +00:00
Jun Pataleta 3fd9808fc6 Merge branch 'MDL-87341_501' of https://github.com/TomoTsuyuki/moodle into MOODLE_501_STABLE 2025-12-15 18:48:45 +08:00
Angelia Dela Cruz 9155d32f36 MDL-87094 core_course: Behat to restrict available activities/resources 2025-12-15 12:00:38 +08:00
Huong Nguyen e6d7fcb2e0 Merge branch 'MOODLE_501_STABLE_MDL-73396' of https://github.com/niko-hoogeveen/moodle into MOODLE_501_STABLE 2025-12-15 08:55:35 +07:00
Huong Nguyen c5b69126d7 Merge branch 'MDL-86679-501' of https://github.com/andimendunia/moodle into MOODLE_501_STABLE 2025-12-15 08:46:48 +07:00
Tomo Tsuyuki 0f0904243d MDL-87341 javascript: Fix aria label issue for navigation bar 2025-12-15 10:24:46 +11:00
Stefan Topfstedt 95d96c926b MDL-86436 navigation: hide empty page heading menu.
Co-authored-by: Jun Pataleta <jun@moodle.com>
2025-12-12 18:06:09 -08:00
Stefan Topfstedt e39521934c MDL-87415 profile: set page title when accessed as guest user. 2025-12-12 13:42:38 -08:00
Philipp Memmel c629f23da8 MDL-79221 core_grade: Fix fetching context for disabled mod plugins
Activity plugins that are disabled on the site are not included in
the modinfo cache. That's why their context must not be fetched via
modinfo cache.
2025-12-12 06:42:56 +01:00
Philipp Memmel 3f5b13cd49 MDL-79221 core_completion: Do not update state for disabled plugins 2025-12-12 06:42:56 +01:00
Shamim Rezaie 019e03af94 weekly release 5.1.1+ 2025-12-12 14:06:13 +11:00
Shamim Rezaie 8e477788f8 Merge branch 'install_501_STABLE' of https://git.in.moodle.com/amosbot/moodle-install into MOODLE_501_STABLE 2025-12-12 14:06:02 +11:00
Mihail Geshoski b32b09d584 MDL-87412 qbank_managecategories: Use single quotes in scenario name 2025-12-12 09:45:21 +07:00
Huong Nguyen 1a1033c601 Merge branch 'MDL-84736-501' of https://github.com/lameze/moodle into MOODLE_501_STABLE 2025-12-12 09:45:21 +07:00
Huong Nguyen fcde530bc4 Merge branch 'MDL-86830-501' of https://github.com/andimendunia/moodle into MOODLE_501_STABLE 2025-12-12 09:45:20 +07:00
Huong Nguyen 8117d73b98 Merge branch 'MDL-86808-501' of https://github.com/muhammadarnaldo/moodle into MOODLE_501_STABLE 2025-12-12 09:45:20 +07:00
Mihail Geshoski 6ca58162c6 Merge branch 'MDL-87182-501' of https://github.com/srobotta/moodle into MOODLE_501_STABLE 2025-12-12 09:45:20 +07:00
Mihail Geshoski 7b348fa333 Merge branch 'MDL-87121_501' of https://github.com/santoshndev/moodle into MOODLE_501_STABLE 2025-12-12 09:45:20 +07:00
Mihail Geshoski a6587c7986 Merge branch 'MDL-87412_501_STABLE' of https://github.com/marxjohnson/moodle into MOODLE_501_STABLE 2025-12-12 09:45:20 +07:00
Mihail Geshoski 19b193784b Merge branch 'MDL-87142-501' of https://github.com/lucaboesch/moodle into MOODLE_501_STABLE 2025-12-12 09:45:20 +07:00
Jun Pataleta 6f44b00e42 Merge branch 'MDL-86807-501' of https://github.com/muhammadarnaldo/moodle into MOODLE_501_STABLE 2025-12-12 09:45:20 +07:00
Jun Pataleta 90eb487eec Merge branch 'MDL-86805-501' of https://github.com/andimendunia/moodle into MOODLE_501_STABLE 2025-12-12 09:45:20 +07:00
Huong Nguyen 2d111226fe Merge branch 'MDL-86593-501' of https://github.com/christianabila/moodle into MOODLE_501_STABLE 2025-12-12 09:45:20 +07:00
Muhammad Arnaldo 832acc2639 MDL-86420 enrol_database: avoid duplicate key violations 2025-12-11 10:25:18 +07:00
AMOS bot 7eb5190921 Automatically generated installer lang files 2025-12-11 00:08:10 +00:00
Niko Hoogeveen 2e1e274ed4 MDL-73396 auth_oauth2: link non-suspended account on oauth login
Added checks to link non-suspended user accounts to OAuth2, when logging
in. Also added an additional check to prevent users from using OAuth2
to login if their account is suspended in Moodle.
2025-12-10 14:22:52 -05:00
Niko Hoogeveen a217af7ae5 MDL-73396 core_user: prioritize active users when retrieving by email
Updated get_users_by_email() to return active users at the
start of the returned array, suspended users last.
2025-12-10 14:22:52 -05:00
Laurent David 1e893d4b21 MDL-87436 core_courseformat: Fix id collision when testing
* When testing using phpunit/sqlsrv the ids of sections and cm are colliding
so we need to make sure we separate them as a reference to a cm can be the
same as a reference to a section
2025-12-10 12:10:41 +01:00
Simey Lameze de2ab7ccb7 MDL-84736 behat: add custom step to edit a criterion
This commit also improves the existing tests and add a new scenario to
verify the 'Do not mark for regrade' behavior.
2025-12-09 17:21:40 +08:00
Angelia Dela Cruz f6a31e8fdc MDL-84736 gradingform : Behat for editing guide with graded submissions 2025-12-09 17:21:40 +08:00
Stefan Topfstedt 7cf1291cc2 MDL-86416 navigation: Render the more menu only when it's not empty
Co-authored-by: Jun Pataleta <jun@moodle.com>
2025-12-09 11:17:38 +08:00
Huong Nguyen f380071cb5 Merge branch 'MDL-87379_501' of https://github.com/santoshndev/moodle into MOODLE_501_STABLE 2025-12-09 09:28:18 +07:00
Mihail Geshoski 3055d89c46 Merge branch 'MDL-82281-501' of https://github.com/lucaboesch/moodle into MOODLE_501_STABLE 2025-12-09 09:45:32 +08:00
Mihail Geshoski 4ef04a9d94 Merge branch 'MDL-86677-501' of https://github.com/lucaboesch/moodle into MOODLE_501_STABLE 2025-12-09 09:28:08 +08:00
Mihail Geshoski a633683bb3 Merge branch 'mdl-87356_501' of https://github.com/james-cnz/moodle into MOODLE_501_STABLE 2025-12-09 09:17:16 +08:00
Simey Lameze 0c4b848a48 MDL-87340 mod_quiz: make test_question_shuffle more robust
This commit improves test_question_shuffle by retrying if questions
remains in the same order after shuffling.
2025-12-09 07:34:04 +08:00
Stephan Robotta 010daf38da MDL-87182 quiz: no CBM metric when no data available 2025-12-08 08:46:06 +01:00
Muhammad Arnaldo 038963316f MDL-86807 core_courseformat: RTL chevron in move activity modal 2025-12-08 11:50:31 +07:00
Andi Permana 94a34a82f7 MDL-86830 calendar: Fix double encoding in event title attributes 2025-12-08 10:42:42 +07:00
Luca Bösch d8f2f5e6a0 MDL-87142 question: dropdown-toggle class for question format select 2025-12-07 20:12:35 +01:00
Luca Bösch bdcc11503d MDL-86677 mod_quiz: let the summary of attempt table be striped 2025-12-07 20:11:41 +01:00
Luca Bösch 35ca47e57a MDL-82281 quiz: Amend test to circumvent modinfo cache fails. 2025-12-07 20:10:52 +01:00
Huong Nguyen a3a086d670 Moodle release 5.1.1 2025-12-07 08:05:51 +07:00
Huong Nguyen ed72ceb60d NOBUG: Add upgrade notes 2025-12-07 08:05:50 +07:00
Andi Permana 840c045bc1 MDL-86805 courseindex: Fix RTL keyboard navigation in tree 2025-12-06 01:09:20 +07:00
Mark Johnson 7ca1574c28 MDL-87412 qbank_managecategories: Fix "new child" drop target
This fixes the CSS rule that reveals the "as new child of" drop target
shown when dragging a category over another category which has no
children.

We can't behat test the actual drag-drop reordering behaviour with behat
as reactive DragDrop components aren't testable, but we can trigger the
CSS to add a regression test for the drop target's appearance.
2025-12-05 14:11:06 +00:00
Santosh Nagargoje bae9d77604 MDL-87379 theme_classic: Fixed mobile responsiveness issue 2025-12-05 15:31:36 +05:30
Muhammad Arnaldo 91bdc56a5d MDL-86808 theme_boost: misaligned footer popover in RTL
Limit the fallback placement vertically.
2025-12-05 16:27:54 +07:00
Andi Permana 00cd643c33 MDL-86679 core: Fix MS field mappings in upgrade script 2025-12-05 15:44:10 +07:00
Andi Permana 73118e777f MDL-86679 oauth2: Support MS personal and work account names 2025-12-05 15:42:33 +07:00
Eric Merrill eb50526c35 MDL-87406 customfield: Use recordset for processing upgrade 2025-12-04 23:59:52 -05:00
Huong Nguyen 907071a323 weekly release 5.1+ 2025-12-05 08:08:31 +07:00
Huong Nguyen 11f03970cd NOBUG: Add upgrade notes 2025-12-05 08:08:31 +07:00
Huong Nguyen c7566a3ff1 Merge branch 'install_501_STABLE' of https://git.in.moodle.com/amosbot/moodle-install into MOODLE_501_STABLE 2025-12-05 08:08:20 +07:00
Huong Nguyen 0cf4d3d878 MDL-81304 Performance: Add notes for CTE 2025-12-04 21:11:59 +07:00
Adrian Greeve 5ea7e78323 Merge branch 'MDL-86665-501' of https://github.com/andrewnicols/moodle into MOODLE_501_STABLE 2025-12-04 20:58:44 +07:00
Huong Nguyen a9cae9aa15 Merge branch 'MDL-87068-501' of https://github.com/lameze/moodle into MOODLE_501_STABLE 2025-12-04 20:58:44 +07:00
Santosh Nagargoje 8e952904e8 MDL-87121 quiz: Fixed random question performance issue 2025-12-04 17:26:22 +05:30
James C 0df4a0d4ce MDL-87356 qtype_random: orphaned random questions should be deleted
This patch reinstates the task from MDL-63260 and MDL-66273.
2025-12-04 23:01:50 +13:00
Christian Abila 56e76851cc MDL-86593 Course completion: Disabled modules not returned as criteria
- Filter out disabled modules
- Update get_criteria method signature
- Fix code style
2025-12-04 07:04:11 +01:00
Angelia Dela Cruz b642e708c1 MDL-87068 contentbank_h5p: Behat for restoring course contentbank 2025-12-04 10:33:06 +08:00
Huong Nguyen bf55209d00 Merge branch 'MDL-83485-501' of https://github.com/junpataleta/moodle into MOODLE_501_STABLE 2025-12-04 09:18:57 +07:00
Huong Nguyen 2f994067ab Merge branch 'MDL-82232-501' of https://github.com/junpataleta/moodle into MOODLE_501_STABLE 2025-12-04 09:12:59 +07:00
Huong Nguyen f96e586689 MDL-72744 table: Improve PHPUnit test 2025-12-04 08:58:18 +07:00
David Woloszyn 0963d22572 MDL-72744 core_grades: Escape formulas when exporting spreadsheets 2025-12-04 08:58:18 +07:00
David Woloszyn cde19f5864 MDL-72744 dataformat: Escape formulas when exporting spreadsheets
Co-authored-by: Huong Nguyen <huongnv13@gmail.com>
2025-12-04 08:58:18 +07:00
Mihail Geshoski 5685e0eafa Merge branch 'MDL-85534-501' of https://github.com/junpataleta/moodle into MOODLE_501_STABLE 2025-12-04 09:44:40 +08:00
Huong Nguyen dc457a3284 MDL-86087 core: Use correct required version 2025-12-04 08:36:12 +07:00
Mihail Geshoski 146a705372 Merge branch 'MDL-87299-501' of https://github.com/lucaboesch/moodle into MOODLE_501_STABLE 2025-12-04 09:21:45 +08:00
Mihail Geshoski 4743bf4f3e Merge branch 'MDL-87245-501' of https://github.com/junpataleta/moodle into MOODLE_501_STABLE 2025-12-03 23:49:47 +08:00
Mihail Geshoski e193f84f72 Merge branch 'MOODLE_501_STABLE_MDL-81304' of https://github.com/mattporritt/moodle into MOODLE_501_STABLE 2025-12-03 23:38:11 +08:00
Jun Pataleta e31a807352 MDL-87245 scorm: Indicate when the SCORM package opens in a new window 2025-12-03 23:36:11 +08:00
Jun Pataleta b72b5e6b9f MDL-87245 lang: Add a bracketed form of the opensinnewwindow lang string 2025-12-03 23:36:11 +08:00
Mihail Geshoski 658c5a0ce5 Merge branch 'MDL-85858-501' of https://github.com/junpataleta/moodle into MOODLE_501_STABLE 2025-12-03 23:27:48 +08:00
Jun Pataleta 4d2e309df8 MDL-85534 forum: Set appropriate heading levels for the discussion page 2025-12-03 17:33:43 +08:00
Huong Nguyen 033754f36a Merge branch 'MDL-87091-501' of https://github.com/lameze/moodle into MOODLE_501_STABLE 2025-12-03 16:11:23 +07:00
mioyu-ubiq 6e95f2227c MDL-87091 behat: Test authloginviaemail setting behavior 2025-12-03 15:54:47 +08:00
Huong Nguyen 2aaa03573c MDL-87353 core: Safer unserializing of file references 2025-12-03 14:19:42 +08:00
Jun Pataleta e2a2f724ed Merge branch 'MDL-86087-501' of https://github.com/HuongNV13/moodle into MOODLE_501_STABLE 2025-12-03 14:10:13 +08:00
Stefan Hanauska 848548373f MDL-86960 mod_glossary: Check user 2025-12-03 13:40:46 +08:00
Stefan Hanauska 2588655e85 MDL-86960 mod_data: Check user 2025-12-03 13:40:34 +08:00
Stefan Hanauska 1e8ec342e1 MDL-86960 mod_forum: Check user 2025-12-03 13:40:21 +08:00
Huong Nguyen fdb01e81ae Merge branch 'MDL-87339-501' of https://github.com/paulholden/moodle into MOODLE_501_STABLE 2025-12-03 12:14:52 +07:00
Matt Porritt 369390ec1e MDL-81304 Performance: Improve performance of my courses.
Refactor get_nearest_editable_subcategory to improve performance.

This refactor maintains functionality and signature of
get_nearest_editable_subcategory but improves perofrmance
for varied datasets. This makes rendering of the
my courses page.
2025-12-03 15:50:28 +11:00
Jake Dallimore d8046b157d MDL-87286 enrol_lti: prevent suspended user account auth in legacy LTI 2025-12-03 15:49:31 +11:00
Jake Dallimore 3ad3766180 MDL-87286 auth_lti: prevent suspended user account auth in LTI1p3 2025-12-03 15:49:31 +11:00
raortegar fcf388339c MDL-87267 aiplacement_courseassist: Improve response formatting 2025-12-03 11:16:12 +07:00
Mihail Geshoski 64a844f588 MDL-82808 assign: Use blindid during submission removal in blind marking 2025-12-03 03:08:33 +00:00
Rajneel Totaram 529d3d9b47 MDL-82808 mod_assign: replace userid with blindid in anonymous marking 2025-12-03 03:08:33 +00:00
David Woloszyn 927cc251ef MDL-86544 lib: Adjust checks on local URL params 2025-12-03 03:08:33 +00:00
Eric Merrill 3dbed6740a MDL-80317 auth_oauth2: Restrict login redirect to local url 2025-12-03 03:08:33 +00:00
Stefan Hanauska 84a5f493cc MDL-86507 badge: Check if role is assigned 2025-12-03 03:08:33 +00:00
David Woloszyn ae71f51969 MDL-85557 tiny_equation: Sanitise equation preview input 2025-12-03 03:08:33 +00:00
yusufwib01 d06747d7de MDL-86326 auth: Enhance validation logic in resend_confirmation_email 2025-12-03 03:08:33 +00:00
Mihail Geshoski 45d8a31534 Merge branch 'MDL-86749_501' of https://github.com/santoshndev/moodle into MOODLE_501_STABLE 2025-12-03 11:04:19 +08:00
Huong Nguyen 39ad0b5757 Merge branch 'MDL-78442-501' of https://github.com/andimendunia/moodle into MOODLE_501_STABLE 2025-12-03 09:55:44 +07:00
Mihail Geshoski 73562f7fa0 Merge branch 'MDL-87066_cleanstring_501' of https://github.com/skodak/moodle into MOODLE_501_STABLE 2025-12-03 09:47:02 +08:00
AMOS bot b24ce6f829 Automatically generated installer lang files 2025-12-03 00:08:10 +00:00
Jun Pataleta 2db5a0143c MDL-82232 behat: Fix breadcrumb navigation on Behat 2025-12-02 19:22:00 +08:00
Jun Pataleta 4af1b8dc85 MDL-82232 core: Change the breadcrumb lang string to Breadcrumb 2025-12-02 19:21:59 +08:00
Andi Permana 37f9588815 MDL-78442 antivirus_clamav: Try SCAN first, then INSTREAM as fallback 2025-12-02 15:46:37 +07:00
Andi Permana 7a5fc382fa MDL-78442 tool_moodlenet: Fix directory path passed to antivirus scanner 2025-12-02 15:46:37 +07:00
Mihail Geshoski 9fd148db76 Merge branch 'MDL-86806-501' of https://github.com/muhammadarnaldo/moodle into MOODLE_501_STABLE 2025-12-02 15:10:37 +08:00
Mihail Geshoski 8f61fbd62c Merge branch 'MDL-86523-MOODLE_501_STABLE_invalidcategoryid' of https://github.com/loewis/moodle into MOODLE_501_STABLE 2025-12-02 15:03:02 +08:00
Mihail Geshoski aa26e53691 Merge branch 'MDL-86844-501' of https://github.com/lucaboesch/moodle into MOODLE_501_STABLE 2025-12-02 14:50:00 +08:00
Mihail Geshoski b1f8591b27 MDL-85405 core: Bump version to update cache 2025-12-02 14:32:23 +08:00
Mihail Geshoski 69c48377de Merge branch 'MDL-85405_501_STABLE' of https://github.com/marxjohnson/moodle into MOODLE_501_STABLE 2025-12-02 14:19:39 +08:00
Huong Nguyen 048f2660b3 Merge branch 'MDL-84898-prohibitjoin-51' of https://github.com/leonstr/moodle into MOODLE_501_STABLE 2025-12-02 10:38:13 +07:00
Huong Nguyen 64c43bc478 Merge branch 'MDL-86425-501' of https://github.com/sh-csg/moodle into MOODLE_501_STABLE 2025-12-02 10:32:28 +07:00
Huong Nguyen 5dd8611708 Merge branch 'MDL-87218-501-enfix' of https://github.com/mudrd8mz/moodle into MOODLE_501_STABLE 2025-12-02 10:30:48 +07:00
Muhammad Arnaldo 2bdc37e51b MDL-86806 core_courseformat: Fix RTL keyboard navigation
Ensure consistent navigation experience across LTR and
RTL interfaces in activity chooser.
2025-12-02 10:14:27 +07:00
AMOS bot e481c59723 Automatically generated installer lang files 2025-12-02 00:08:10 +00:00
David Mudrák b4f791f3af MDL-87218 lang: Use the fixed strings in tests, too 2025-12-01 19:16:48 +01:00
Helen Foster 90976d6d5a MDL-87218 lang: Import fixed English strings (en_fix) 2025-12-01 19:16:48 +01:00
AMOS bot ae1eac5106 Automatically generated installer lang files 2025-11-30 00:08:14 +00:00
AMOS bot 5bcdb83c08 Automatically generated installer lang files 2025-11-29 00:08:04 +00:00
Jun Pataleta c30e6ba062 MDL-85858 mod_scorm: Fix Table of Contents toggle button's accessibility
* Set proper label via `aria-label`.
* Instead of changing the button's label to 'Show'/'Hide', set the
button's `aria-expanded` attribute accordingly.
* Remove unnecessary event handling for the toggle button when pressing
Enter or Space key. This is already natively supported and triggers
the click event.
* Adjust Behat tests accordingly.
2025-11-28 21:01:09 +08:00
Jun Pataleta 8c1f502f82 MDL-85858 mod_scorm: Use semantic heading for the Preview mode 2025-11-28 21:01:09 +08:00
Jun Pataleta 3cc77faf51 MDL-85858 mod_scorm: Set page and iframe titles for the SCORM player 2025-11-28 21:01:09 +08:00
Luca Bösch d79636169e MDL-86844 qbank: style question bank table as in Moodle 4.5. 2025-11-28 10:37:54 +01:00
Huong Nguyen cd6394f177 MDL-86087 core: Fix PHPUnit 11.5.43+ compatibility
Adjust tests to comply with updated PHPUnit lifecycle behaviour
 - Initialise typed test properties (e.g. core_session memcached test) or make them nullable
 - Add `isset()` checks to avoid accessing properties before initialisation
 - Ensure resetAfterTest() is called before modifying DB or `$USER`
2025-11-28 09:10:19 +07:00
Huong Nguyen 7ac1a10807 MDL-86087 core: Define environment requirements for Moodle 5.2 2025-11-28 09:09:14 +07:00
AMOS bot fbe212222c Automatically generated installer lang files 2025-11-28 00:08:07 +00:00
Paul Holden aaf94d4714 MDL-87339 hook: ensure cache directory present/writeable for use.
Avoids PHP warnings during Behat initialisation:

- file_put_contents(...): Failed to open stream: No such file or directory;
- rename(...): No such file or directory
2025-11-27 19:06:02 +00:00
Paul Holden 6fd62e9bfc MDL-87323 report_outline: fix report viewed event URL. 2025-11-27 17:28:43 +00:00
Mark Johnson c5578a0173 MDL-85405 course: Fix indentation and line wrapping 2025-11-27 15:14:06 +00:00
Luca Bösch f99e1652fd MDL-85405 modinfo: Don't show modules without FEATURE_CAN_DISPLAY
Question banks were displaying in places they shouldn't, because
FEATURE_CAN_DISPLAY wasn't fully implemented. This broadens its
usage in the following areas:

- Availability info - Not relevant to qbank. However you could feasibly
have some module which isn't shown to students, but the teacher can
use
  it to track completion, so dont display the link.
- Activities block - links to each activity's index page. We already
have
the Question banks page in the secondary nav. No need to have it here
too.
- Overview report - It doesn't make sense to display question banks
here,
  as they're not an activity students can participate in, they wont have
  dates etc.
- Externallib - Return with candisplay = false. The app needs to handle
  this correctly.
- Visibility options, moodleform_mod, modvisible and visibility
selector.
Not relevant for qbank since it doesn't include the standard
coursemodule
  options, but if an activity with without CAN_DISPLAY did display a
  visibility setting, "Hidden" should be the only option.
- Activity names filter - we dont want automatic links to question
banks.
2025-11-27 15:14:06 +00:00
Petr Skoda 4e239b0e76 MDL-87066 core: add upgrade note for clean_string() 2025-11-27 14:58:03 +01:00
Petr Skoda fe057e8edc MDL-87066 core: add clean_string() to solve double encoding in Mustache
The idea is to prevent double escaping in s()
and mustache.escape() by using numeric html
entities to sanitise result of format_string(),
get_string() and similar.
2025-11-27 14:58:03 +01:00
Luca Bösch 9f5b8f06aa MDL-87299 qtype_match: Remove Bootstrap 5 table borders. 2025-11-27 14:05:16 +01:00
Mihail Geshoski d0f3a5723b weekly release 5.1+ 2025-11-27 19:40:02 +08:00
Mihail Geshoski 09132ddaa4 Merge branch 'install_501_STABLE' of https://git.in.moodle.com/amosbot/moodle-install into MOODLE_501_STABLE 2025-11-27 19:39:52 +08:00
Stefan Hanauska c428fab04b MDL-86425 backup: Reset nullcontent flag in xml_writer 2025-11-27 06:12:44 +01:00
Jun Pataleta ad0dfdf091 MDL-83485 core: Add bottom margin on preference links
To meet the WCAG 2.2 Level AA requirement for minimum target size,
we need to add a bit of spacing between the links on the user
preferences page.

More information:
https://www.w3.org/WAI/WCAG22/Understanding/target-size-minimum.html
2025-11-27 11:36:54 +08:00
Jun Pataleta 036b5664b1 MDL-83485 core: Add accessibility Behat coverage to the preferences page 2025-11-27 11:36:54 +08:00
Jun Pataleta c9d5ebf18e MDL-83485 core: Fix heading level for preferences groups 2025-11-27 11:36:54 +08:00
Jun Pataleta 3a8bd5a459 MDL-83485 core: Render preferences groups as lists 2025-11-27 11:36:54 +08:00
Andrew Nicols 16ae0c28f2 Merge branch 'MDL-86255-501' of https://github.com/paulholden/moodle into MOODLE_501_STABLE 2025-11-27 11:10:39 +08:00
Andrew Nicols e9494bddd0 Merge branch 'MDL-86955-501' of https://github.com/paulholden/moodle into MOODLE_501_STABLE 2025-11-27 11:07:55 +08:00
Jake Dallimore 365f07fc1f Merge branch 'MDL-86840-501' of https://github.com/junpataleta/moodle into MOODLE_501_STABLE 2025-11-27 09:41:17 +08:00
Paul Holden 8d07409ff8 MDL-86988 mod_resource: ensure required library always present.
The `resourcelib` library is explicitly required by the modules
own local library, and neither the add/update methods use it
directly.
2025-11-26 15:10:59 +00:00
Paul Holden 7c6aaf9d4b MDL-87188 gradereport_grader: prevent overlapping collapsed columns. 2025-11-26 11:40:27 +00:00
Mihail Geshoski 8ab11c50c5 Merge branch 'MDL-87259-501' of https://github.com/x-iy/moodle into MOODLE_501_STABLE 2025-11-26 18:01:58 +08:00
Mihail Geshoski c77f201bcc Merge branch 'MDL-86668-501' of https://github.com/lucaboesch/moodle into MOODLE_501_STABLE 2025-11-26 17:51:06 +08:00
Mihail Geshoski 37ddec6188 Merge branch 'MDL-86975-501' of https://github.com/paulholden/moodle into MOODLE_501_STABLE 2025-11-26 17:43:14 +08:00
Mihail Geshoski 9c1ad940f3 Merge branch 'MDL-87149-501' of https://github.com/junpataleta/moodle into MOODLE_501_STABLE 2025-11-26 17:29:32 +08:00
david adamson c75cf3cb93 MDL-87259 course: Correct content item user cache key 2025-11-26 14:38:18 +11:00
Paul Holden 1ac7ea29cc Merge branch 'MDL-87046-501' of https://github.com/andrewnicols/moodle into MOODLE_501_STABLE 2025-11-25 15:25:21 +00:00
Mihail Geshoski d68abeb57e Merge branch 'MDL-87054-501' of https://github.com/bhect0/moodle into MOODLE_501_STABLE 2025-11-25 23:09:54 +08:00
Andrew Nicols ddaecc3f67 MDL-86018 tool_xmldb: Check XML content in reconciler 2025-11-25 15:02:04 +00:00
Paul Holden aa8c922c6e Merge branch 'MDL-85306-501' of https://github.com/vinod404/moodle into MOODLE_501_STABLE 2025-11-25 14:38:04 +00:00
Andrew Nicols a5abe0936e Merge branch 'MDL-86656-501' of https://github.com/paulholden/moodle into MOODLE_501_STABLE 2025-11-25 21:13:15 +08:00
Andrew Nicols ca15a28cc7 Merge branch 'MDL-86419-501' of https://github.com/paulholden/moodle into MOODLE_501_STABLE 2025-11-25 21:07:13 +08:00
Andrew Nicols 4c0c37ae52 Merge branch 'MDL-86279-501' of https://github.com/paulholden/moodle into MOODLE_501_STABLE 2025-11-25 21:04:00 +08:00
Andrew Nicols 49a8ebde70 Merge branch 'MDL-87166-501' of https://github.com/paulholden/moodle into MOODLE_501_STABLE 2025-11-25 20:57:12 +08:00
Andrew Nicols bd96cb2953 Merge branch 'MDL-86765-501' of https://github.com/paulholden/moodle into MOODLE_501_STABLE 2025-11-25 20:52:02 +08:00
Leon Stringer f82e6b37a3 MDL-84898 core: Improve prohibit performance
Change the query used to check if a user has a capability but is
assigned a role that prohibits that capability.  This is based on the
query added by Petr Skoda for MDL-57027.
2025-11-25 11:37:12 +00:00
Huong Nguyen e41cf47433 Merge branch 'MDL-87017-501-frontpage-block-any-page' of https://github.com/danowar2k/moodle into MOODLE_501_STABLE 2025-11-25 10:42:09 +07:00
Huong Nguyen f6852fe28e Merge branch 'MDL-87194-501' of https://github.com/albertgasset/moodle into MOODLE_501_STABLE 2025-11-25 10:39:55 +07:00
Huong Nguyen b8b80d8314 Merge branch 'MDL-86161-501' of https://github.com/lucaboesch/moodle into MOODLE_501_STABLE 2025-11-25 10:38:02 +07:00
Huong Nguyen eff677df20 Merge branch 'MDL-87031_501' of https://github.com/santoshndev/moodle into MOODLE_501_STABLE 2025-11-25 10:35:19 +07:00
Jun Pataleta 3fee3b03bd Merge branch 'MDL-86547-501' of https://github.com/muhammadarnaldo/moodle into MOODLE_501_STABLE 2025-11-25 11:09:57 +08:00
Huong Nguyen 81f2f74797 Merge branch 'MDL-85930-501' of https://github.com/andimendunia/moodle into MOODLE_501_STABLE 2025-11-25 08:51:44 +07:00
Adrian Greeve 761fc67f68 MDL-86745 install: Stop installation if public directory visible 2025-11-25 09:19:17 +08:00
Andrew Nicols 91806e4291 Merge branch 'MDL-87072-501' of https://github.com/stevandoMoodle/moodle into MOODLE_501_STABLE 2025-11-25 08:07:25 +08:00
Muhammad Arnaldo 4ba07e01e1 MDL-86547 theme_boost: Override the code-color
Increase the contrast by overriding the existing code color to match the one on default.scss
2025-11-24 19:24:26 +07:00
Jun Pataleta 031e3b4f59 Merge branch 'MDL-86547-501' of https://github.com/muhammadarnaldo/moodle into MOODLE_501_STABLE 2025-11-24 15:55:31 +08:00
Muhammad Arnaldo b879b87281 MDL-86547 theme_boost: Improve inline code contrast in editor
Changed the background color of highlighted inline code for better accessibility.
2025-11-24 14:27:44 +07:00
AMOS bot 3f25ce3473 Automatically generated installer lang files 2025-11-23 00:08:28 +00:00
Santosh Nagargoje 4041efd8e7 MDL-87031 gradereport: Fixed clear button issue 2025-11-21 23:38:47 +05:30
Martin v. Löwis eb05bf8e70 MDL-86523 backup: update context only if also updating category. 2025-11-21 14:29:31 +01:00
Luca Bösch 4637f434ad MDL-86668 course: Support filter in scale names. 2025-11-21 10:46:20 +01:00
Luca Bösch 9162a7741f MDL-86161 groups: Correct picture title and alt text. 2025-11-21 10:46:04 +01:00
Huong Nguyen e5f1a32269 weekly release 5.1+ 2025-11-21 14:33:12 +07:00
Huong Nguyen faefd168fd NOBUG: Add upgrade notes 2025-11-21 14:33:12 +07:00
Mihail Geshoski 4bb5c5e7ca Merge branch 'MDL-86984-501' of https://github.com/lucaboesch/moodle into MOODLE_501_STABLE 2025-11-21 08:10:07 +07:00
Mihail Geshoski d2b11de28b Merge branch 'MDL-86069-501' of https://github.com/paulholden/moodle into MOODLE_501_STABLE 2025-11-21 08:10:07 +07:00
Mihail Geshoski c68c880227 Merge branch 'MDL-87011-501' of https://github.com/rjnl/moodle into MOODLE_501_STABLE 2025-11-21 08:10:07 +07:00
Huong Nguyen 6934d4c9e8 Merge branch 'MDL-86323_501' of https://github.com/PhilippImhof/moodle into MOODLE_501_STABLE 2025-11-21 08:10:07 +07:00
Huong Nguyen 13166ffdf9 Merge branch 'MDL-87048-501' of https://github.com/lameze/moodle into MOODLE_501_STABLE 2025-11-21 08:10:07 +07:00
Huong Nguyen b02b45af70 Merge branch 'MDL-84735-501' of https://github.com/lameze/moodle into MOODLE_501_STABLE 2025-11-21 08:10:07 +07:00
Andrew Nicols f7b0309a7e MDL-87046 core: Fix shutdown manager early return
If the `\core_shutdown_manager::initialize` method is called multiple
times, it should only succeed once.

Unfortunately whilst logging existed, the shutdown manager did not
actually exit.
2025-11-21 08:53:03 +08:00
Huong Nguyen 5e2d52f55e Merge branch 'MDL-85373-501' of https://github.com/paulholden/moodle into MOODLE_501_STABLE 2025-11-20 13:27:58 +07:00
Mihail Geshoski d7c3c56c34 Merge branch 'MDL-86967_501' of https://github.com/Chocolate-lightning/moodle into MOODLE_501_STABLE 2025-11-20 13:27:58 +07:00
Huong Nguyen 8abd0fb46a Merge branch 'MDL-86272-501' of https://github.com/paulholden/moodle into MOODLE_501_STABLE 2025-11-20 13:27:58 +07:00
Amaia Anabitarte 5c99555de6 Merge branch 'MDL-87198-501' of https://github.com/sarjona/moodle into MOODLE_501_STABLE 2025-11-20 13:27:58 +07:00
Huong Nguyen fd20fa2ce7 Merge branch 'MDL-82511-cache-cron-MOODLE_501_STABLE' of https://github.com/bwalkerl/moodle into MOODLE_501_STABLE 2025-11-20 13:27:58 +07:00
Huong Nguyen acc999ccc5 Merge branch '86320-fix-qr-code-unit-test-501' of https://github.com/DSI-Universite-Rennes2/moodle into MOODLE_501_STABLE 2025-11-20 13:27:58 +07:00
Huong Nguyen d622826d1d Merge branch 'MDL-86907-501' of https://github.com/mioyu-ubiq/moodle into MOODLE_501_STABLE 2025-11-20 13:27:57 +07:00
Huong Nguyen a92c4139a6 Merge branch 'MDL-72608-501' of https://github.com/paulholden/moodle into MOODLE_501_STABLE 2025-11-20 13:27:57 +07:00
Huong Nguyen 8aafb6b91e Merge branch 'MDL-85835-501' of https://github.com/plasger-uni-siegen/moodle into MOODLE_501_STABLE 2025-11-20 13:27:57 +07:00
Huong Nguyen 593f4d20d9 Merge branch 'MDL-86998-501' of https://github.com/junpataleta/moodle into MOODLE_501_STABLE 2025-11-20 13:27:57 +07:00
Simey Lameze 434ab68dd2 MDL-87050 behat: use src for img xpath selector 2025-11-20 13:27:57 +07:00
Mihail Geshoski 845b4dd043 Merge branch 'MDL-85049-501' of https://github.com/lucaboesch/moodle into MOODLE_501_STABLE 2025-11-20 13:27:57 +07:00
Mihail Geshoski 42032b3808 Merge branch 'MDL-86817_501_STABLE' of https://github.com/marxjohnson/moodle into MOODLE_501_STABLE 2025-11-20 13:27:57 +07:00
Angelia Dela Cruz 9407747fa9 MDL-87048 tool_lp: Behat for synchronising cohort with learning plan 2025-11-20 10:09:11 +08:00
Angelia Dela Cruz 3ab48001e5 MDL-84735 gradingform: Behat for modifying marking guide criterion 2025-11-20 08:31:53 +08:00
Paul Holden 096269a40a MDL-86272 tool_policy: verify current user before store policy agreed. 2025-11-18 11:47:53 +00:00
Santosh Nagargoje 0b963c9eef MDL-86749 questions: Added index on hashcode column
Identified performance bottlenecks in clear_cached_data() from
mod/quiz/report/statistics/report.php. The delete_records() calls on
question_statistics, question_response_analysis, and quiz_statistics tables
use the hashcode column for filtering, which becomes inefficient with large
datasets.
2025-11-18 17:04:34 +05:30
Paul Holden e06a6ee9c8 MDL-86565 courseformat: don't link to sections user cannot see. 2025-11-18 10:31:58 +00:00
Mathew May 1e31b6f480 MDL-86967 theme_classic: Correct orange & yellow vars + warning 2025-11-18 15:05:14 +08:00
Mathew May 882a3ccf7c MDL-86967 theme_boost: Correct orange & yellow vars + warning 2025-11-18 15:05:08 +08:00
mioyu-ubiq 04df7b5ff9 MDL-86907 mod_choice: Behat test for adding multiple choice responses 2025-11-18 15:00:44 +08:00
Stevani Andolo 2263427b4d MDL-87072 core: Removed ->wwwrootendsinpublic from setup 2025-11-18 07:50:50 +08:00
Mihail Geshoski 1cac5286d9 Merge branch 'MDL-86099_501_STABLE' of https://github.com/marxjohnson/moodle into MOODLE_501_STABLE 2025-11-17 22:28:05 +08:00
Andi Permana 4739209609 MDL-85930 tiny_media: Fix adding video from Youtube repo 2025-11-17 18:42:03 +07:00
Paul Holden c8a1b29190 MDL-86279 core: fix deprecation emitting/annotation in AWS helpers. 2025-11-17 11:00:57 +00:00
Paul Holden d885da21e6 MDL-86955 tool_task: ensure tasks are runnable in adhoc table output. 2025-11-17 10:56:36 +00:00
Huong Nguyen 0b34948f58 Merge branch 'MDL-85235-501' of https://github.com/safatshahin/moodle into MOODLE_501_STABLE 2025-11-17 16:01:50 +07:00
Huong Nguyen 034e9a7f07 Merge branch 'MDL-87050-501' of https://github.com/andelacruz/moodle into MOODLE_501_STABLE 2025-11-17 15:58:04 +07:00
Huong Nguyen 8129468989 Merge branch 'MDL-87111-501' of https://github.com/paulholden/moodle into MOODLE_501_STABLE 2025-11-17 15:31:32 +07:00
Huong Nguyen 0d7b69816a Merge branch 'MDL-86810-501' of https://github.com/paulholden/moodle into MOODLE_501_STABLE 2025-11-17 15:27:32 +07:00
Huong Nguyen 72294f9e33 Merge branch 'MDL-86159-501' of https://github.com/paulholden/moodle into MOODLE_501_STABLE 2025-11-17 14:55:53 +07:00
Huong Nguyen 0774c2089b Merge branch 'MDL-85764-quiz-notification-MOODLE_501_STABLE' of https://github.com/bwalkerl/moodle into MOODLE_501_STABLE 2025-11-17 14:50:39 +07:00
Alexander Bias 92a8d0e9c0 MDL-87199 core: In public/config.php, use require_once() 2025-11-17 07:44:03 +01:00
vinod404 36640eccf5 MDL-85306 core/toggle: Move tooltip/title to input to show tooltips.
The title and tooltip attributes are now moved to the input element, ensuring tooltips appear.
2025-11-17 11:20:39 +05:30
Jun Pataleta 04d7d3061f MDL-87149 mod_feedback: Accessibility Behat test coverage
* Check the accessibility of the questionnaire, especially when
there are dependent questions.
* Use generators for a more efficient and faster test execution.
2025-11-17 12:44:50 +08:00
Jun Pataleta 5f4e4d731d MDL-87149 mod_feedback: Generate dependent questions
Allow the generator to create questions that depend on other questions.
2025-11-17 12:44:49 +08:00
Jun Pataleta 9620e6ec34 MDL-87149 theme_boost: Remove the .feedback_is_dependent class
It's no longer being used. So, just remove it.
2025-11-17 12:44:49 +08:00
Jun Pataleta 5b152a44db MDL-87149 mod_feedback: Do not use .feedback_is_dependent anymore
Making a visual distinction for dependent questions compared to other
questions does not add much value in the perspective of users. We should
just stop adding the `.feedback_is_dependent` class for dependent
questions.
2025-11-17 12:44:49 +08:00
Huong Nguyen e99a4db6cc Merge branch 'MDL-87107-501' of https://github.com/andrewnicols/moodle into MOODLE_501_STABLE 2025-11-17 09:08:50 +07:00
Mark Johnson 32a0053942 MDL-86099 questions: Check for empty bank names
If we call `question_bank_helper::create_default_open_instance` with an
empty `$bankname` parameter, it will currently create a new instance
with no name. This leads to exceptions being thrown when we try to load
the course it belongs to.

This adds some validation to ensure the name being passed is not empty.
Once the issue is resolved, and the bank is created with a proper name,
the course will work as normal.
2025-11-14 16:51:55 +00:00
Albert Gasset cfdea24959 MDL-87194 tool_mobile: Fix subscription requests 2025-11-14 16:15:35 +01:00
Albert Gasset ac9043090a MDL-87194 message_airnotifier: Fix access key requests 2025-11-14 16:15:26 +01:00
Sara Arjona ee95766414 MDL-87198 course_format: Consider section name visibility in Overview 2025-11-14 15:56:39 +01:00
Daniel Poggenpohl 78dad0b6a8 MDL-87017 blocks: Provide page context to page_type_list functions
- The current context may be necessary when deleting a frontpage block displayed on every page with javascript disabled
- The current context may be necessary when a frontpage block is displayed on every page and the question bank is viewed
- Also handle a NULL currentcontext for question_page_type_list() correctly
2025-11-14 15:35:41 +01:00
Paul Holden 1841019afb MDL-72608 output: define default popover region template lang string. 2025-11-14 13:04:46 +00:00
Paul Holden 8f4eb41b6b MDL-86419 enrol_ldap: define plugin's own copy of configuration strings.
AMOS BEGIN
 CPY [ignorehiddencourses,enrol_database],[ignorehiddencourses,enrol_ldap]
 CPY [ignorehiddencourses_desc,enrol_database],[ignorehiddencourses_desc,enrol_ldap]
AMOS END
2025-11-14 13:03:50 +00:00
Benjamin Walker 5d09824f5e MDL-85764 mod_quiz: Improve performance of quiz notifications task 2025-11-14 20:04:19 +10:00
Benjamin Walker 9eda93d84e MDL-82511 cachestore_redis: Reduce blocking when finding keys 2025-11-14 20:03:48 +10:00
Benjamin Walker cc9d9e0077 MDL-82511 cache: Improve performance of cleanup in cache_cron_task 2025-11-14 20:03:48 +10:00
Paul Holden 45ad1861c5 MDL-86159 mod_bigbluebuttonbn: consistent/correct course name format. 2025-11-14 07:57:53 +00:00
Philipp Imhof 283e0dec6e MDL-86323 editor_tiny: allow svg attributes
Co-authored-by: Petr Skoda <commits@skodak.org>
2025-11-14 08:51:23 +01:00
Luca Bösch 44d21fee07 MDL-86984 book: remove borders in print page top table. 2025-11-13 17:06:52 +01:00
Luca Bösch c69b390c0e MDL-85049 question: complete border around table row for newest question 2025-11-13 17:00:02 +01:00
Mihail Geshoski 66c419f029 weekly release 5.1+ 2025-11-13 18:48:42 +08:00
Mark Johnson 01c187418b MDL-86817 qbank: Prevent unique key violations during migration
When fixing categories with broken parents, if the resulting changes
would have led to categories with the same stamp or idnumber being in
the same context, the task failed due to violations of the unique keys
on contextid-stamp and contextid-idnumber.

This checks for violations before moving categories, and either
generates a new stamp or nulls the idnumber on the category being moved,
following the method used in MDL-85869.
2025-11-13 10:33:59 +00:00
Angelia Dela Cruz 6f2ae3a24e MDL-87050 mod_folder: Behat for preventing forced file downloads 2025-11-13 15:48:54 +08:00
Mihail Geshoski 5244eddb4b Merge branch 'MDL-86397_501_STABLE' of https://github.com/marxjohnson/moodle into MOODLE_501_STABLE 2025-11-13 12:15:54 +08:00
Huong Nguyen 26d30cc4b2 Merge branch 'MDL-86845-501' of https://github.com/lucaboesch/moodle into MOODLE_501_STABLE 2025-11-13 11:14:30 +07:00
Huong Nguyen cb5741a52e Merge branch 'MDL-86895-501' of https://github.com/mioyu-ubiq/moodle into MOODLE_501_STABLE 2025-11-13 10:43:54 +07:00
Huong Nguyen 9c5ab59d60 Merge branch 'MDL-79249-501' of https://github.com/andelacruz/moodle into MOODLE_501_STABLE 2025-11-13 10:20:27 +07:00
Huong Nguyen 6d2741966b Merge branch 'MDL-87047-501' of https://github.com/andelacruz/moodle into MOODLE_501_STABLE 2025-11-13 10:16:42 +07:00
Huong Nguyen d14692c0ef Merge branch 'MDL-78973-501' of https://github.com/andelacruz/moodle into MOODLE_501_STABLE 2025-11-13 08:52:42 +07:00
Huong Nguyen b0adf49300 Merge branch 'MDL-84967-M501_recordset-not-closed-in-core_analytics_local_analyser_by_course_get_analysables_iterator' of https://github.com/ziegenberg/moodle into MOODLE_501_STABLE 2025-11-13 08:47:26 +07:00
Huong Nguyen addd767426 Merge branch 'MDL-82867-501' of https://github.com/paulholden/moodle into MOODLE_501_STABLE 2025-11-13 08:44:31 +07:00
Héctor Benedicte 64645ce975 MDL-87054 mod_glossary: Change "Comments" column position. 2025-11-12 17:15:51 +01:00
Mark Johnson 1eecb821ac MDL-86397 calendar: Filter user courses
In the calendar API, `raw_event_retrieval_strategy` accepts a list of
courses to return events for. If one or more users are also specified,
it will find the courses the are enrolled in, then call
`calendar_set_filters()` to return a sorted list of those courses, and
any groups within those courses that they can see events for. The list
of courses in then filtered to those passed to
`raw_event_retrieval_strategy`.

If the user is enrolled on lots of courses, but is only viewing the
caledar for one course, this results in a lot of redundant work to fetch
group data for their courses which is then not used. This either
involves a lot of extra complex queries, or results in an unncessary
cache hit for each course.

This change re-orders the code so that the list of enrolled courses is
filtered to just those courses being viewed, before it is passed to
`calendar_set_filters()`. This means we are only fetching group data for
those courses we will be showing events for.
2025-11-12 14:39:37 +00:00
Mihail Geshoski 90c5befc85 Merge branch 'MDL-87130-501' of https://github.com/paulholden/moodle into MOODLE_501_STABLE 2025-11-12 17:25:31 +08:00
Mihail Geshoski b7667014da Merge branch 'MDL-86963-501' of https://github.com/andelacruz/moodle into MOODLE_501_STABLE 2025-11-12 17:14:00 +08:00
Mihail Geshoski a1fcfedb96 Merge branch 'MDL-85686-501' of https://github.com/lameze/moodle into MOODLE_501_STABLE 2025-11-12 16:58:58 +08:00
Mihail Geshoski f560bd2fb8 Merge branch 'MDL-86886-501' of https://github.com/andelacruz/moodle into MOODLE_501_STABLE 2025-11-12 16:36:30 +08:00
Angelia Dela Cruz 78cbba85e6 MDL-87047 tool_lp: Behat optimisation 2025-11-12 16:36:07 +08:00
Angelia Dela Cruz 42d4abb063 MDL-87047 tool_lp: Behat to complete a learning plan and alter it 2025-11-12 16:34:42 +08:00
Angelia Dela Cruz 44683eb89f MDL-86963 tool_lp: Behat to perform CRUD operations on competencies 2025-11-12 10:26:37 +08:00
Luca Bösch 79793e1274 MDL-86845 admin: Striped hovering plugins + course format table w/ BS 5. 2025-11-12 00:21:33 +01:00
Safat 2f58a4f951 MDL-85235 tool_mobile: Implement the augmentation hooks for apps 2025-11-12 09:52:54 +11:00
Safat d0b44e9ed9 MDL-85235 tool_mobile: Add extend ios app banner hook 2025-11-12 09:52:54 +11:00
Safat a598ba1d1d MDL-85235 core: Add extend url hook 2025-11-12 09:52:54 +11:00
Safat 8e918945e1 MDL-85235 tool_mobile: Make mobile manifest cookieless and cacheable 2025-11-12 09:52:54 +11:00
Paul Holden 721b17a2ce MDL-87130 dml: fix SQL debugging test assertions on Windows.
Ensure that the Windows directory separator ('\') isn't confused
for regular expression control character.
2025-11-11 15:50:35 +00:00
Jun Pataleta b5d396a4ef MDL-86840 forum: Add accessibility Behat coverage
* Add accessibility Behat coverage on the Advanced forum search page.
2025-11-11 21:13:49 +08:00
Jun Pataleta be66825174 MDL-86840 forum: Do not use layout table for the search form 2025-11-11 21:13:49 +08:00
Jun Pataleta 90bc57e7d0 MDL-86840 forum: Fix heading structure of search form 2025-11-11 21:13:48 +08:00
Paul Holden 068bd1464c MDL-86765 forms: disable calendar icon if element disabled.
This is similar to change in ec89abc5 which updated the icon state
if the corresponding checkbox was unchecked. Here we're doing the
same if the entire date/time element itself is disabled.
2025-11-11 12:49:41 +00:00
Paul Holden 0de575995f MDL-86656 task: remove spurious mtrace parameters in calling code.
Co-authored-by: Jason Lees <jlees@arden.ac.uk>
2025-11-11 12:48:11 +00:00
Paul Holden 26a16e4e27 MDL-87056 enrol: update instance modified date when toggling status. 2025-11-11 12:36:18 +00:00
Paul Holden ce73b5c09e MDL-87111 filter_tex: remove border-radius of rendered expression. 2025-11-11 12:18:14 +00:00
Paul Holden 2967da8924 MDL-87166 communication: verify user feature support on user deletion. 2025-11-11 11:45:34 +00:00
Jun Pataleta b6051186c0 MDL-86998 message: Fix accessibility issues in notification settings
* Fix missing labels for the checkboxes that enable notification plugins
* Add an accessible name for the Default notification preferences table
* Fix missing table header for the preference column of the Default
  notification preferences table.
* Accessibility Behat test coverage for the Notification settings
  admin page
* Remove the unnecessary title attributes for the visually hidden labels
2025-11-11 17:30:36 +08:00
Jun Pataleta 9d54035901 MDL-86998 message: Fix accessibility issues in notification preferences
* Fix missing column heading for the preference column
* Fix incorrect label for the toggle controls
* Make the preference name a table heading with a row scope so that the
  toggle controls will be programmatically associated to it.
* Apply a col scope for the processor column headings to
  programmatically associate the toggle controls to their respective
  columns.
2025-11-11 17:30:36 +08:00
Angelia Dela Cruz bd1b8ee2db MDL-86886 tool_lp: Behat to move and cross-reference competencies 2025-11-11 15:46:29 +08:00
Simon Plasger 6022e27150 MDL-85835 TinyMCE: Fix not working tabs on TinyMCE in quiz mode 2025-11-11 07:28:15 +01:00
Angelia Dela Cruz 82b8dec217 MDL-78973 Behat: Behat coverage for invalid file upload in data activity 2025-11-11 12:59:40 +08:00
Simey Lameze 7be9bd39eb MDL-85686 mod_quiz: unit test coverage for questions shuffle 2025-11-11 11:17:55 +08:00
Mio Yu 5e84b1ff4f MDL-86895 core_grades: Behat to verify listing and grading submissions 2025-11-11 09:52:24 +08:00
Huong Nguyen 1834ac2074 Merge branch 'MDL-85627-501' of https://github.com/jleyva/moodle into MOODLE_501_STABLE 2025-11-10 10:17:08 +07:00
Tim Schroeder 0aa504fc00 MDL-81604 Files: Fix broken file serving w/ Apache + PHP-FPM + PHP >=8.1 2025-11-10 10:14:51 +07:00
Huong Nguyen 9c1f347f29 Merge branch 'MDL-86999-501' of https://github.com/lucaboesch/moodle into MOODLE_501_STABLE 2025-11-10 10:13:00 +07:00
Shamim Rezaie ef6817119f Merge branch 'MDL-86965-501' of https://github.com/NashTechOpenUniversity/moodle into MOODLE_501_STABLE 2025-11-10 13:43:47 +11:00
Andrew Nicols 0cb612a24b MDL-86665 core: Fix path stripping in format_backtrace 2025-11-10 09:36:29 +08:00
Luca Bösch e5ef845421 MDL-86999 customfield: Striped hovering fields table with BS 5. 2025-11-07 13:11:11 +01:00
Andrew Nicols 487742e687 MDL-87107 core: Stop using MUC for hook manager caching 2025-11-07 17:19:09 +08:00
Huong Nguyen 41a6ad6cd2 weekly release 5.1+ 2025-11-07 14:48:40 +07:00
Huong Nguyen bb3b349055 NOBUG: Add upgrade notes 2025-11-07 14:48:40 +07:00
Huong Nguyen 95c7be0d2a Merge branch 'install_501_STABLE' of https://git.in.moodle.com/amosbot/moodle-install into MOODLE_501_STABLE 2025-11-07 14:48:29 +07:00
Huong Nguyen 2a9cf86c25 Merge branch 'MDL-86701-501-fix' of https://github.com/junpataleta/moodle into MOODLE_501_STABLE 2025-11-07 08:46:22 +07:00
Juan Leyva 3ced045f9f MDL-85627 mod_bigbluebuttonbn: Remove unused class 2025-11-06 13:10:40 +01:00
Jun Pataleta 696d604452 MDL-86701 behat: Update Behat tests to press edit/delete buttons 2025-11-06 18:40:13 +08:00
Huong Nguyen 7054587924 MDL-69226 environment: filter extension required for 4.1 2025-11-06 18:21:00 +08:00
hieuvu 6447815691 MDL-86965 core_question: Fix get_bank_instances query. 2025-11-06 16:51:01 +07:00
Mihail Geshoski 4b1d1579bf Merge branch 'MDL-87073-501' of https://github.com/HuongNV13/moodle into MOODLE_501_STABLE 2025-11-06 17:07:25 +08:00
Huong Nguyen 262455fcb9 MDL-87073 PHPUnit: Use non-DST timezone for comparing
Including in this commit
 - Use America/New_York instead of US/Eastern
2025-11-06 15:47:07 +07:00
Huong Nguyen edd60e9987 Merge branch 'MDL-86908-501' of https://github.com/andelacruz/moodle into MOODLE_501_STABLE 2025-11-06 15:42:16 +07:00
Huong Nguyen 8fa2cb8305 Merge branch 'MDL-87049-501' of https://github.com/lameze/moodle into MOODLE_501_STABLE 2025-11-06 15:40:19 +07:00
Huong Nguyen 48f29174d1 Merge branch 'MDL-87079-501' of https://github.com/andrewnicols/moodle into MOODLE_501_STABLE 2025-11-06 15:37:18 +07:00
Jake Dallimore fb8fd8f2c2 Merge branch 'MDL-86379-501' of https://github.com/lameze/moodle into MOODLE_501_STABLE 2025-11-06 14:29:28 +08:00
Mark Johnson 2e152ba575 MDL-86010 tool_lp: Test fetching evidence works after cm deletion 2025-11-06 11:50:34 +08:00
Michael Kotlyar c38c373db5 MDL-86010 competency: Delete competency evidence on cm delete
Evidence recorded against course module competencies was not deleted
with the course module. This led to errors when attempting to view the
competency record on a learning plan.

This change will delete associated evidence records with the cm, and
will clean up any existing orphaned records on upgrade.

Co-Authored-By: Mark Johnson <mark.johnson@catalyst-eu.net>
2025-11-06 11:50:22 +08:00
Huong Nguyen be0041c992 Merge branch 'MDL-87019-redis-bloat-MOODLE_501_STABLE' of https://github.com/bwalkerl/moodle into MOODLE_501_STABLE 2025-11-06 10:35:02 +07:00
Andrew Nicols 8030d474bc MDL-86534 mod_forum: Only run bulk action JS if they are enabled 2025-11-06 11:33:26 +08:00
Huong Nguyen 7d76ec16fc Merge branch 'MDL-86701-501' of https://github.com/junpataleta/moodle into MOODLE_501_STABLE 2025-11-06 10:27:10 +07:00
Huong Nguyen e2263f49be Merge branch 'MDL-86332-501' of https://github.com/paulholden/moodle into MOODLE_501_STABLE 2025-11-06 10:20:22 +07:00
Huong Nguyen 488a72ec99 Merge branch 'MDL-86915-501' of https://github.com/paulholden/moodle into MOODLE_501_STABLE 2025-11-06 10:10:21 +07:00
Huong Nguyen 8a6b9baebc Merge branch 'mdl-85036_501' of https://github.com/james-cnz/moodle into MOODLE_501_STABLE 2025-11-06 10:53:21 +08:00
Jake Dallimore b13c4992b7 Merge branch 'MDL-87004_501_STABLE' of https://github.com/marxjohnson/moodle into MOODLE_501_STABLE 2025-11-06 10:53:21 +08:00
Simey Lameze 1cfa2dce12 MDL-87049 behat: read showcampaigncontent setting when running behat 2025-11-06 08:23:32 +08:00
Angelia Dela Cruz 0221cf06fe MDL-87049 core: Behat to toggle campaign content banner display 2025-11-06 08:23:32 +08:00
AMOS bot d24b54a72a Automatically generated installer lang files 2025-11-06 00:08:05 +00:00
Angelia Dela Cruz de6cd6766c MDL-86908 core_contentbank: Behat to set supported files of contentbank 2025-11-05 17:58:00 +08:00
Simey Lameze 79ae77da91 MDL-86379 mod_quiz: move create_test_quiz function into generator 2025-11-05 11:48:41 +08:00
Andrew Nicols 66480c2e4b MDL-87079 core: Call existing pcntl handlers
Whilst `register_shutdown_function` works as a queue, `pcntl_signal`
does not.

To preserve the behaviour of existing signal handlers, as are typically
found in CLI wrappers like PHPUnit and Behat, we should store any
existing handler
2025-11-05 08:51:40 +08:00
Ilya Tregubov 61f6bf1693 Merge branch 'MDL-86953-501' of https://github.com/paulholden/moodle into MOODLE_501_STABLE 2025-11-04 16:46:12 +01:00
James C 0110c7cd0f MDL-85036 completion: Properly initialize cm_info for user completion 2025-11-04 20:58:45 +13:00
Jake Dallimore e265bab546 Merge branch 'MDL-85391-m501' of https://github.com/NeillM/moodle into MOODLE_501_STABLE 2025-11-04 14:14:32 +08:00
Jake Dallimore d77e9f8efb Merge branch 'MDL-86855-501' of https://github.com/junpataleta/moodle into MOODLE_501_STABLE 2025-11-04 14:09:37 +08:00
Ilya Tregubov 41e7abc189 Merge branch 'MDL-86952-501' of https://github.com/paulholden/moodle into MOODLE_501_STABLE 2025-11-03 12:38:33 +01:00
Jun Pataleta 3faeba40d0 MDL-86701 customfield: Better naming of custom field action buttons
Include the category and field names for accessible names of the delete
and action buttons to help assistive technology users better understand
the buttons' purpose.
2025-11-03 11:58:51 +08:00
Jun Pataleta 9fcecb0261 MDL-86701 customfield: Improve action buttons accessibility
* Use native HTML buttons for the edit and delete buttons. This provides
default button behaviours which helps keyboard users activate the
buttons using either the Space or Enter key.
* Move the accessible label out of the pix icon and to the action button
itself.
* Style buttons to ensure that they have a minimum clickable size of
24x24 pixels to sufficiently meet WCAG 2.2 SC 2.5.8 - Target Size
(Minimum) (Level AA).
2025-11-03 11:58:51 +08:00
Angelia Dela Cruz 434b1e0a4d MDL-79249 core_filepicker: Cancel file and folder upload using X button 2025-11-03 10:11:57 +08:00
Huong Nguyen cd62c13d03 Merge branch 'MDL-69226-M501_verify-that-the-filter-php-extension-is-present' of https://github.com/ziegenberg/moodle into MOODLE_501_STABLE 2025-11-03 09:02:05 +07:00
AMOS bot 74779cf781 Automatically generated installer lang files 2025-11-01 00:08:04 +00:00
Benjamin Walker 1c2b0838d6 MDL-87019 redis: Avoid storing userhashkey for non-login users 2025-10-31 16:20:39 +10:00
Huong Nguyen 7eae56e4fa Merge branch 'MDL-86831-501' of https://github.com/lucaboesch/moodle into MOODLE_501_STABLE 2025-10-31 09:37:11 +07:00
Huong Nguyen 71f26fbbf2 Merge branch 'MDL-86235-501' of https://github.com/andimendunia/moodle into MOODLE_501_STABLE 2025-10-31 09:34:44 +07:00
Luca Bösch 8fec48df4a MDL-86831 behat: Adopt behat paths to include public/ 2025-10-30 18:55:41 +01:00
Mihail Geshoski a1c5c162b3 weekly release 5.1+ 2025-10-30 18:10:53 +08:00
Mihail Geshoski 0b6a4eac69 Merge branch 'install_501_STABLE' of https://git.in.moodle.com/amosbot/moodle-install into MOODLE_501_STABLE 2025-10-30 18:10:43 +08:00
Neill Magill 1498b4ee77 MDL-85391 course: Handle null course urls
Course urls may be null when navigation is set to true.

The return value from course_get_url being null was not being handled before
this change, which could lead to an exception causing the page not to load.

It also handles null urls in the course index in Boost so that they are
not a link to what ever the current page is.

If either the first or last section in a format did not a
return a url under the Classic theme there would still be
a link displayed with a link to the current page the user
is on.

After this change no link would be displayed in this case.
2025-10-29 08:11:17 +00:00
Huong Nguyen 44816b77db Merge branch 'mdl85075-51' of https://github.com/matthewhilton/moodle into MOODLE_501_STABLE 2025-10-29 09:31:09 +07:00
Mihail Geshoski 8a5a0881cf Merge branch 'MDL-86894-501' of https://github.com/Kredelirious/moodle into MOODLE_501_STABLE 2025-10-29 10:18:00 +08:00
Mihail Geshoski fd06801c40 Merge branch 'MDL-82190-501' of https://github.com/danghieu1407/moodle into MOODLE_501_STABLE 2025-10-29 10:11:07 +08:00
Daniel Ziegenberg a6571efa69 MDL-69226 environment: filter extension required
Signed-off-by: Daniel Ziegenberg <daniel@ziegenberg.at>
2025-10-28 19:30:03 +01:00
Kim Jared Lucas 91f1c4252c MDL-86894 mod_forum: Behat to verify default forum RSS settings 2025-10-28 12:46:09 +08:00
AMOS bot 503e8b8507 Automatically generated installer lang files 2025-10-28 00:09:54 +00:00
Rajneel Totaram 6dd011127e MDL-87011 mod_assign: Replace deprecated CSS style 2025-10-27 22:26:06 +12:00
Adrian Greeve 8388556ed3 Merge branch 'MDL-85774-501-3' of https://github.com/junpataleta/moodle into MOODLE_501_STABLE 2025-10-27 09:02:42 +08:00
Daniel Ziegenberg edd7407b60 MDL-84967 analytics: close recordset when it's not needed anymore
Signed-off-by: Daniel Ziegenberg <daniel@ziegenberg.at>
2025-10-24 21:01:40 +02:00
ferran 021b04b3aa Merge branch 'MDL-86430-Bad-Display-Of-Scale-Grading-501' of https://github.com/birdy1976/moodle into MOODLE_501_STABLE 2025-10-24 12:15:28 +02:00
Andi Permana 97133c0946 MDL-86235 core: Add table-hover class to admintable and generaltable 2025-10-24 15:49:58 +07:00
Mark Johnson 19e86de968 MDL-87004 backup: Ensure backups include all random questions
Backing up quizzes containing random questions from multiple different
categories was only including one of the categories in the backup.

This was due to doing $array + $array instead of array_merge(), meaning
items in the second array with keys that were already present in the
first did not get added to the result.
2025-10-24 09:47:52 +01:00
Jun Pataleta 77eeecae4b MDL-86855 qbank_columnsortorder: Render disabled columns as a list
* Lists must be marked up with the proper semantics.
2025-10-24 12:02:31 +08:00
Jun Pataleta 3bb8302dd7 MDL-86855 qbank_columnsortorder: Fix accessibility issues
* Fix empty column heading in admin settings page
* Add accessible labels for the move buttons
* Fix drag and drop Behat test
* Add accessibility Behat coverage
2025-10-24 12:02:31 +08:00
Huong Nguyen a15fca46ef weekly release 5.1+ 2025-10-24 10:59:52 +07:00
Huong Nguyen a341bb6db1 NOBUG: Add upgrade notes 2025-10-24 10:59:52 +07:00
Martin Vögeli aa2b1ab966 MDL-86430 theme_boost: Fix display of scale grading when title too long 2025-10-23 17:22:31 +02:00
danghieu1407 845be94042 MDL-82190 Quiz: Fix quiz preview crash on question version removal 2025-10-23 14:11:11 +07:00
Jun Pataleta 314a6c2a39 MDL-85774 login: Check for username/password fields before moving focus
When the login form is not shown but $CFG->loginautofocus is turned on,
we need to verify first that the username and password fields exist
before we move the focus. Otherwise, the JS will break.
2025-10-23 11:28:39 +08:00
Jun Pataleta fe7d26d33f MDL-85774 login: Remove visually-hidden links
Visually hidden links on login error/info disrupt tab order. We must
remove them.

Instead, announce the div containing the login error/info messages on
page reload.

The visually hidden signup link has also been removed.
2025-10-23 11:28:39 +08:00
Huong Nguyen 5fbce49854 Merge branch 'MDL-86986-501' of https://github.com/junpataleta/moodle into MOODLE_501_STABLE 2025-10-23 09:57:20 +07:00
Huong Nguyen c2779c97f6 Merge branch 'MDL-80524-501' of https://github.com/paulholden/moodle into MOODLE_501_STABLE 2025-10-23 09:29:18 +07:00
Mihail Geshoski e34d126494 Merge branch 'MOODLE_501_STABLE' of https://github.com/aneno-m-e/moodle into MOODLE_501_STABLE 2025-10-23 10:21:56 +08:00
Matthew Hilton eeb9977692 MDL-85075 files: Use core security helper first 2025-10-23 12:20:57 +10:00
Andrew Nicols af4aec6594 Merge branch 'MDL-81804-501-first' of https://github.com/lucaboesch/moodle into MOODLE_501_STABLE 2025-10-23 09:14:19 +08:00
Leon Stringer 70c6f5dca7 MDL-86434 core: Page title for invalid user ID 2025-10-22 23:11:23 +02:00
Luca Bösch cf6087d890 MDL-81804 dml: Passing parameters with -c key=val on PostgreSQL.
Co-authored-by: Marcos Dos Santos De Oliveira <marcos.s.oliveira@fiesc.com.br>
2025-10-22 16:18:34 +02:00
Jun Pataleta bd690ac79a MDL-86986 core: Add aria-label to the drag handle button 2025-10-22 20:14:28 +08:00
ferran b3aae16d5e Merge branch 'wip_MDL-86435_m51' of https://github.com/gjb2048/moodle into MOODLE_501_STABLE 2025-10-22 12:55:54 +02:00
Mihail Geshoski 264b4a686c Merge branch 'MDL-85474_501' of https://github.com/jonof/moodle into MOODLE_501_STABLE 2025-10-22 16:46:08 +08:00
Paul Holden fb29f55fa1 MDL-80524 rating: preserve activity idnumber when adding rating.
See also e9a5485f for context regarding similar problem with grade
updates.

Co-authored-by: Julian Tovar
2025-10-22 09:43:37 +01:00
Stephan Robotta f1c1815b97 MDL-86282 navigation: Main navigation corrected for XMLDB tool 2025-10-22 16:30:19 +08:00
Noemie Ariste 7787e7ee82 MDL-75764 mod_assign: remove capability check for bulk downloads 2025-10-22 16:46:55 +13:00
Mihail Geshoski adb1179f06 Merge branch 'MDL-86217-501' of https://github.com/paulholden/moodle into MOODLE_501_STABLE 2025-10-22 11:40:21 +08:00
Jose Pico fdb7d82ea5 MDL-86225 plagiarism: Update data type from object to array 2025-10-22 11:02:01 +08:00
Mihail Geshoski 5b781a1c68 Merge branch 'MDL-86063-501' of https://github.com/paulholden/moodle into MOODLE_501_STABLE 2025-10-22 10:21:04 +08:00
Huong Nguyen 89ab4e919e Merge branch '83543-xls-form-501' of https://github.com/DSI-Universite-Rennes2/moodle into MOODLE_501_STABLE 2025-10-22 09:12:21 +07:00
Huong Nguyen 75a212e5c5 Merge branch '77137-proxybypass-on-multiple-curl-queries-501' of https://github.com/DSI-Universite-Rennes2/moodle into MOODLE_501_STABLE 2025-10-22 09:07:06 +07:00
Paul Holden 87b1c27659 MDL-86975 mod_book: fix alignment of chapter editing delete icon.
Mis-aligned since changes to previously used action icon in df486967.
2025-10-22 00:26:33 +01:00
Paul Holden e69e34174c MDL-86915 core: define "core" plugin type string.
Per ae7f3dfd this is now required for all plugin types. In this
specific case, it's used by the privacy plugin registry.
2025-10-21 21:44:00 +01:00
Amaia Anabitarte 74c36527d5 Merge branch 'MDL-85796-501' of https://github.com/junpataleta/moodle into MOODLE_501_STABLE 2025-10-21 19:55:43 +02:00
Paul Holden f38ff4bd49 MDL-86255 behat: implement methods to assert date/time field value. 2025-10-21 11:32:45 +01:00
Huong Nguyen db092cb9a4 Merge branch 'MDL-86848-501' of https://github.com/andrewnicols/moodle into MOODLE_501_STABLE 2025-10-21 14:00:39 +07:00
Shamim Rezaie 02dced9e5d Merge branch 'MDL-85592-501' of https://github.com/paulholden/moodle into MOODLE_501_STABLE 2025-10-21 17:10:00 +11:00
Philipp Memmel 3d46fc66eb MDL-85168 lib: Move courseid filter to participants_filter.js 2025-10-21 10:37:28 +07:00
Huong Nguyen d56670f1aa Merge branch 'MDL-85633-501' of https://github.com/lucaboesch/moodle into MOODLE_501_STABLE 2025-10-21 09:47:15 +07:00
Huong Nguyen ced2c8f288 Merge branch 'MDL-85511-501' of https://github.com/lucaboesch/moodle into MOODLE_501_STABLE 2025-10-21 09:44:40 +07:00
Huong Nguyen 3bccd1cf5a Merge branch 'MDL-85287-m501' of https://github.com/sammarshallou/moodle into MOODLE_501_STABLE 2025-10-21 09:41:54 +07:00
Huong Nguyen e7dc5bcd4c Merge branch 'MDL-86559-501-test2' of https://github.com/andimendunia/moodle into MOODLE_501_STABLE 2025-10-21 09:39:21 +07:00
Jonathon Fowler 2030a3d87b MDL-85474 assign: fix call to undefined 'view_error_page' method
And while doing so, fix $notices parameters that ought to be call-by-
reference to collect notices produced during calls to
process_submit_other_for_grading() and process_submit_for_grading().
2025-10-21 10:09:35 +10:00
Paul Holden 4b79e0354c Merge branch 'MDL-86455-501' of https://github.com/yerairogo/moodle into MOODLE_501_STABLE 2025-10-20 16:51:05 +01:00
Sara Arjona a8e94a04fd Merge branch 'MDL-86598-501' of https://github.com/aanabit/moodle into MOODLE_501_STABLE 2025-10-20 16:59:03 +02:00
Amaia Anabitarte 2b08b48997 MDL-86598 course: Render HTML in activity overview section name mustache 2025-10-20 16:14:50 +02:00
Amaia Anabitarte 51afe905eb Merge branch 'MDL-86011-501' of https://github.com/sarjona/moodle into MOODLE_501_STABLE 2025-10-20 16:01:27 +02:00
Amaia Anabitarte 55d78e4053 Merge branch 'MDL-86914-501' of https://github.com/sarjona/moodle into MOODLE_501_STABLE 2025-10-20 15:57:07 +02:00
Amaia Anabitarte b0c01971c2 Merge branch 'MDL-86912-501' of https://github.com/sarjona/moodle into MOODLE_501_STABLE 2025-10-20 13:33:09 +02:00
Luca Bösch d12a9bdb84 MDL-85633 course: Move away from YUI navigation.
Co-authored-by: Mikel Martín Corrales <mikel@moodle.com>
2025-10-20 11:27:18 +02:00
sam marshall 3c4e09a34b MDL-85287 User tours: Avoid scrolling while backdrop is displayed
If the page scrolls while the backdrop is displayed, it looks
incorrect because the backdrop does not scroll with page content.
To avoid this, don't show the backdrop until scrolling has finished.
2025-10-20 09:57:45 +01:00
Sara Arjona d9be5161c8 MDL-86912 assign: Prevent admin submitting unless enrolled as student 2025-10-20 09:46:23 +02:00
Sara Arjona 8e1b7f51a2 MDL-86912 assign: Adjust display of Status column in Overview 2025-10-20 09:46:23 +02:00
Luca Bösch b280113644 MDL-85511 course: back button for course management course search. 2025-10-20 07:59:47 +02:00
Andi Permana fcc9b77f9c MDL-86559 filter_activitynames: Fix auto links with double spaces 2025-10-20 09:44:39 +07:00
Mihail Geshoski e4fa093ba1 Merge branch 'MDL-85696-501' of https://github.com/andelacruz/moodle into MOODLE_501_STABLE 2025-10-20 10:27:08 +08:00
Huong Nguyen 4c5f4aa1c8 Merge branch 'mdl-85917_501' of https://github.com/james-cnz/moodle into MOODLE_501_STABLE 2025-10-20 08:48:36 +07:00
Mark Johnson d74ce2b179 MDL-85975 backup: Handle nulls and arrays in restored questiondata
unset_excluded_fields() was using isset() to determine if the field
targeted for removal is present in the provided data structure. However,
isset() returns false if the field exists, but contains null. This means
the field will not be unset when it should be.

This resolves this by changing the isset() to a property_exists() check
for objects, and array_key_exists() check for arrays. It also expands
the function to properly handle arrays of arrays, or arrays of values,
which was not fully covered before and is used by some third-party
question types.
2025-10-20 08:45:46 +07:00
Paul Holden 40e65cc032 MDL-86063 customfield: internally validate numeric data in persistent.
Move previous validation from the data controller, added in 89dbe63d,
into the persistent class itself so that it can internally validate
itself rather than relying on callers.

This resolves problems with empty/null numeric fields contained within
course backups (e.g. during course copy).
2025-10-19 16:53:41 +01:00
Paul Holden 30d7d03664 MDL-86217 badges: gracefully handle missing recipient data. 2025-10-19 16:50:38 +01:00
Paul Holden 8da0cef435 MDL-85592 output: export missing node sort attribute for template. 2025-10-19 16:49:07 +01:00
Gareth Barnard 52d7c26922 MDL-86435 course: i/groupn.svg is not the same size as other icons. 2025-10-17 16:56:09 +01:00
Paul Holden 50678b67d8 MDL-86953 blocks: constrain block controls menu on narrow screens.
Extension of work in 93cadaba that constrained the dropdown menu,
we now set a breakpoint to account for overflowing when narrow.
2025-10-17 14:49:39 +01:00
Ilya Tregubov edc5590782 Merge branch 'MDL-80422' of https://github.com/paulholden/moodle into MOODLE_501_STABLE 2025-10-17 15:36:35 +02:00
Paul Holden 95a1e4dea2 MDL-86952 output: truncate long text in drag/drop dialog options. 2025-10-17 14:12:21 +01:00
Paul Holden c1c1e0cb30 MDL-86952 output: truncate long text in modal/dialog title element. 2025-10-17 14:12:04 +01:00
Amaia Anabitarte 5b50a27704 Merge branch 'MDL-85887-501' of https://github.com/paulholden/moodle into MOODLE_501_STABLE 2025-10-17 13:47:15 +02:00
Paul Holden d84050aab1 MDL-86810 completion: update module completion data correctly.
Ensure we check the correct field to determine form value.
2025-10-17 12:13:26 +01:00
Paul Holden 9a4a69a788 MDL-85373 admin: update site installation page referenced favicon. 2025-10-17 12:07:38 +01:00
Angelia Dela Cruz f4838fb07d MDL-85696 mod_quiz: Behat to attempt password and time restricted quiz 2025-10-17 15:48:51 +08:00
Paul Holden 99021b96b5 MDL-85418 user: prevent default click event/scroll in user sub-menus. 2025-10-17 10:27:49 +07:00
Paul Holden 7bce09379a MDL-85312 profilefield_menu: remove locked field option formatting.
We shouldn't be formatting the option key when setting constant
value, because that isn't formatted - only the option value is.
2025-10-17 10:20:52 +07:00
Huong Nguyen 789dd5b3d7 Merge branch 'MDL-86849-501' of https://github.com/andrewnicols/moodle into MOODLE_501_STABLE 2025-10-17 10:15:19 +07:00
Andrew Nicols 332b0aca3d Merge branch 'm501-86376' of https://github.com/danmarsden/moodle into MOODLE_501_STABLE 2025-10-17 11:04:56 +08:00
djarrancotleanu 7a5135ab8d MDL-85366 core: Add proper PHPMailer handling of .ics files 2025-10-17 08:46:45 +08:00
Paul Holden 4625619621 MDL-86822 mod_h5pactivity: fix block page type list method parameters.
Similar was done before in 7a77493b.
2025-10-17 08:35:52 +08:00
Andrew Nicols 9dd2e7d29e Merge branch 'MDL-85554-501' of https://github.com/paulholden/moodle into MOODLE_501_STABLE 2025-10-17 08:27:10 +08:00
Andrew Nicols 21be86fb7f weekly release 5.1+ 2025-10-17 06:50:07 +08:00
Andrew Nicols 6f1cb67f02 NOBUG: Add upgrade notes 2025-10-17 06:50:07 +08:00
Andrew Nicols a0d8526f79 Merge branch 'install_501_STABLE' of https://git.in.moodle.com/amosbot/moodle-install into MOODLE_501_STABLE 2025-10-17 06:49:49 +08:00
Paul Holden e326d3b4da MDL-85554 user: fix class attribute spacing for profile categories.
Update to use non-aliased html_writer class.
2025-10-16 22:29:17 +01:00
Yerai Rodríguez 2145fd918d MDL-86455 forms: disable all modal submit buttons on button click
To provide visual feedback and prevent multiple clicks
on no-submit buttons, all submit buttons within a modal
form will be disabled once any of them is clicked.
2025-10-16 16:26:18 +02:00
Paul Holden 07fb77f515 MDL-85887 tag: style search form using common Bootstrap controls. 2025-10-16 09:58:53 +01:00
Conn Warwicker fb56e96476 MDL-85874 core_grade: Fix grade category toggle JS error. 2025-10-16 16:52:37 +08:00
Benjamin Walker 789bf3f3d0 MDL-85729 group: Lazy load group image urls in search box 2025-10-16 16:13:09 +08:00
Andrew Nicols 44642bfa22 MDL-86849 core: configrw check should check the actual config.php 2025-10-16 16:07:26 +08:00
Jun Pataleta 5b6de5d201 MDL-85796 core: Remove unnecessary title attribute on profile links
The title attribute with value "View profile" on profile links is
not necessary as the user's name on the link itself is sufficient
to convey the purpose of the link.
2025-10-16 15:50:04 +08:00
Dan Marsden 77b6c26d7a MDL-86376 core: Make public static functions more resilient
a
2025-10-16 20:45:03 +13:00
Andrew Nicols 8de3c9a4b5 MDL-86848 core: Throw exception instead of redirecting on /index.php 2025-10-16 15:36:21 +08:00
Paul Holden 119db785b1 MDL-85348 cohort: disable report bulk deletion for managed cohorts. 2025-10-16 13:51:51 +08:00
Paul Holden 5b530f4708 MDL-84745 cohort: capability check prior to bulk deletion button. 2025-10-16 13:44:17 +08:00
Paul Holden 05cba50aa1 MDL-85736 core: don't double escape page URL in meta refresh tag.
Co-authored-by: Clay Cross <claycross@gmail.com>
2025-10-16 13:39:39 +08:00
Paul Holden abf40757c1 MDL-86053 mod_assign: account for lack of global scales in settings. 2025-10-16 13:33:02 +08:00
Paul Holden 625fa57388 MDL-86293 communication: queue/execute membership task if appropriate.
Avoid doing so if the current instance does not support user features.
2025-10-16 13:24:33 +08:00
Paul Holden e6a28cba5e MDL-86648 mod_assign: refer to selected user when calculating override.
The selected user is either that chosen for a new override, or the saved
value when editing/loading an existing override.
2025-10-16 13:19:16 +08:00
Mihail Geshoski 4786f3a82c Merge branch 'MDL-85988-501' of https://github.com/rjnl/moodle into MOODLE_501_STABLE 2025-10-16 10:38:54 +08:00
Jarad Barker a868140434 MDL-84483 core_files: Always fire after_file_created hook 2025-10-16 09:03:44 +07:00
Paul Holden 84a364d5c7 MDL-85618 filter_displayh5p: change regular expression delimeter.
Ensure we don't confuse the expression parser when supplied "Allowed
source" contains coincidental control characters in the URL, e.g. '/'
and '#'.

Note that `preg_quote(...)` isn't appropriate here, because the given
URL may indeed contain genuine control characters already.
2025-10-15 23:38:32 +08:00
hieuvu d5f0cc4a3c MDL-86621 core_question: Add capability checking for question bank node 2025-10-15 23:17:06 +08:00
Paul Holden fecfec75a5 MDL-86003 datafield_textarea: define missing media/subtitle options.
In order to insert multimedia using the editor, we need a "subtitle"
filepicker option.
2025-10-15 15:51:53 +02:00
ferran 00370924f2 Merge branch 'MDL-85486-501' of https://github.com/roland04/moodle into MOODLE_501_STABLE 2025-10-15 15:15:14 +02:00
ferran 493b0c25fc Merge branch 'MDL-66579-501' of https://github.com/rjnl/moodle into MOODLE_501_STABLE 2025-10-15 15:07:31 +02:00
Sara Arjona 3e03aec140 MDL-86914 choice: Fix inconsistent completion status column in overview 2025-10-15 13:50:25 +02:00
Paul Holden fa26a977b2 MDL-86369 mod_scorm: fix attempt deletion behaviour on submit/redirect.
Standard after a POST submission is to redirect back to where user came
from (in this case), to avoid awkward page reload behaviour. Also fix
bug where deleting an attempt for a user, where the attempt didn't exist
would delete all attempts for that user.
2025-10-15 17:08:41 +08:00
Andrew Nicols 66dd74d365 Merge branch 'MDL-86627-501' of https://github.com/paulholden/moodle into MOODLE_501_STABLE 2025-10-15 17:04:14 +08:00
Paul Holden 9ca986926c MDL-86645 grade: account for text grade types determining element icon. 2025-10-15 17:01:28 +08:00
Sara Arjona e9013762b5 Merge branch 'MDL-86879-501' of https://github.com/ferranrecio/moodle into MOODLE_501_STABLE 2025-10-15 11:00:09 +02:00
Paul Holden 9e377960ab MDL-86646 gradereport_user: ensure table rowspan always populated. 2025-10-15 16:57:15 +08:00
Paul Holden 265f472f58 MDL-86147 block_myoverview: consistent zero-state view styling.
Make the zero state template consistent with the populated course
template from 6415776d, specifically in regards to borders.
2025-10-15 15:54:02 +08:00
Simey Lameze b57d39e1fe MDL-86186 behat: enlarge window size before asserting 2025-10-15 15:50:10 +08:00
Philipp Memmel 1014dd0084 MDL-81263 grunt: Respect local .eslintignore and .stylelintignore 2025-10-15 15:18:20 +08:00
Andrew Nicols 9bcfe95f05 Merge branch 'MDL-86767-501' of https://github.com/lucaboesch/moodle into MOODLE_501_STABLE 2025-10-15 15:14:28 +08:00
Andrew Nicols 6abb9e29d2 Merge branch '86322-fix-example-phpdoc-501' of https://github.com/DSI-Universite-Rennes2/moodle into MOODLE_501_STABLE 2025-10-15 15:10:10 +08:00
Huong Nguyen d3022c17d5 MDL-86762 repository_flickr: Fix Flickr fetching and downloading 2025-10-15 14:58:32 +08:00
Mark Johnson f3174ef370 MDL-81514 assign: Show non-participation groups in activity menu
This sets the flag in the activity menu for selecting the grade
summaries for each groups, to include non-participation groups as well.
2025-10-15 11:01:11 +08:00
Mark Johnson 6cec07a34e MDL-81514 assign: Enable filtering by non-participation groups
This adds non-participation groups to the group menu on the Submissions
screen, so that submissions can be filtered by these groups.
2025-10-15 11:00:56 +08:00
Mark Johnson a9ea34dc3f MDL-81514 groups: Add participationonly option to activity group menu
groups_print_activity_menu() and groups_get_activity_group() now include
an additional $participationonly parameter,
which is true by default. This can be set false when we want the user to
be able to select a non-participation group within
an activity, for example if a teacher wants to filter assignment
submissions by non-participation groups. It should never be
used when the menu is displayed to students, as this may allow them to
participate using non-participation groups.

groups_sort_menu_options() now has a $splitparticipation parameter,
which will split non-participation groups out into their own optgroup at
the end of the menu.
2025-10-15 11:00:38 +08:00
hieuvu 2253a568d0 MDL-86621 core_question: remove incorrect navigation nodes. 2025-10-15 09:47:51 +08:00
AMOS bot c81b75e0e0 Automatically generated installer lang files 2025-10-15 00:09:39 +00:00
Paul Holden e817d28f23 MDL-86627 cohort: format name correctly in report entity column. 2025-10-14 15:06:20 +01:00
Mikel Martín 03aa72e963 MDL-85486 theme_boost: Fix single section page inplace editor
When course format is displayed as single section per page, the inplace editable
in the section page heading was incorrectly displaye, and the instructions panel
was not displayed.
Adding some specific styles to fix that behaviour.
2025-10-14 11:40:25 +02:00
Sara Arjona 4cc058fc23 MDL-86011 feedback: Prevent admin answering unless enrolled as student 2025-10-14 07:07:33 +02:00
Sara Arjona 49bea1dc22 MDL-86011 feedback: Adjust display of Responded column in Overview 2025-10-14 07:07:33 +02:00
Julien Boulen 60db17bea9 MDL-77137 filelib: Honour proxybypass option for multiple Curl queries 2025-10-12 22:16:58 +02:00
Julien Boulen 8ad01a9abe MDL-86320 core: Fix unit test qrcode_test 2025-10-12 21:55:21 +02:00
Julien Boulen e01123cbd5 MDL-86322 phpdoc: Fix the given example in the phpdoc 2025-10-12 21:49:15 +02:00
Julien Boulen 50bdce3494 MDL-83543 core: Move download complete status handling to Excel library
When a form is validated, all validation buttons are automatically
locked to prevent them from being sent twice by mistake. When the form
returns a file instead of redirecting to a new HTML page, a mechanism
(\core_form\util::form_download_complete()) must be called to
reactivate the form's validation buttons.

This mechanism is called for CSV files (file lib/csvlib.class.php), but
not when downloading xls files. The mechanism is only called when
downloading grades in Excel format (file
grade/export/xls/grade_export_xls.php).

The patch proposes to call this mechanism globally for all Excel file
downloads (file lib/excellib.class.php), and not just for grade
downloads (file grade/export/xls/grade_export_xls.php).
2025-10-12 21:35:03 +02:00
ferran 0bd7d0767b MDL-86879 core_course: optimise subsections loading 2025-10-10 14:05:56 +02:00
Jun Pataleta fa0ef43e8e MDL-85820 lib: Update pear/readme_moodle.txt 2025-10-10 11:01:42 +08:00
Tim Hunt d8758c8367 MDL-85820 formslib: don't add '-' to client-side valiation 2025-10-10 11:01:42 +08:00
Luca Bösch 1ae4254fca MDL-86767 forum: let forum use standard buttons. 2025-10-09 21:05:25 +02:00
Huong Nguyen 25614d858b weekly release 5.1+ 2025-10-09 21:58:52 +07:00
Huong Nguyen b0c3bbbf1d Merge branch 'install_501_STABLE' of https://git.in.moodle.com/amosbot/moodle-install into MOODLE_501_STABLE 2025-10-09 21:58:12 +07:00
Paul Holden aca127b16d MDL-86777 customfield: show formatted category name in move dialog. 2025-10-09 08:48:32 +07:00
Paul Holden 58e27b4430 MDL-86736 block_myoverview: remove stray template content.
Changes made in c530e4c4 left some stray elements in the templates,
which manifested themselves as displaying misplaced pipe characters
depending on unrelated site config (`$CFG->courselistshortnames`).
2025-10-09 08:45:15 +07:00
Huong Nguyen 8e8512fa2d Merge branch 'MDL-86654-501' of https://github.com/junpataleta/moodle into MOODLE_501_STABLE 2025-10-09 08:41:23 +07:00
Paul Holden 431040b341 MDL-86575 cohort: format cohort names in external service return data. 2025-10-09 08:21:10 +07:00
Paul Holden 8f7c9ae1b5 MDL-86574 tool_cohortroles: format cohort data during privacy export. 2025-10-09 08:14:55 +07:00
AMOS bot e028ea9232 Automatically generated installer lang files 2025-10-09 00:09:19 +00:00
Rajneel Totaram 16e42d4bd5 MDL-85988 mod_book: Fix chapter content overlaps navigation buttons 2025-10-09 10:53:14 +12:00
Rajneel Totaram 9cf695d7bc MDL-66579 mod_book: Make chapter numbering consistent 2025-10-09 10:17:26 +12:00
Mihail Geshoski 0605fc0a3e Merge branch 'MDL-78495-501_exclude_badges_from_recyclebin' of https://github.com/sharpchi/moodle into MOODLE_501_STABLE 2025-10-08 23:38:16 +08:00
Paul Holden 8b9a317982 MDL-82867 output: consistently space external link pixicon. 2025-10-08 16:18:20 +01:00
Mark Sharp 7f2b6002a9 MDL-78495 Badges: Exclude badges from recycle bin
- co-authored by: Sara Arjona

Add badges to recycle bin test
2025-10-08 10:59:14 +01:00
Philipp Memmel fe87f683a3 MDL-86382 qbank_bulkmove: Fix selecting placeholder in qbank selector
@Co-authored-by: Luca Bösch <luca.boesch@bfh.ch>
2025-10-08 13:35:02 +08:00
Stefan Hanauska 0ae5666e66 MDL-86300 backup: Save old id of top category
Co-authored-by: Paola Maneggia <paola.maneggia@isb.bayern.de>
2025-10-08 13:25:47 +08:00
Huong Nguyen 0bb74501ea MDL-86828 upgrade: Add the 5.1.0 separation line to all upgrade scripts 2025-10-08 12:21:48 +08:00
Paul Holden c191f7be0f MDL-86332 completion: remove criteria only from current course on save. 2025-10-07 12:24:05 +01:00
Paul Holden a5d6ec1c4e MDL-86069 blog: verify success state of RSS file before processing.
Avoids subsequent errors in the SimplePie library when trying to
process invalid feed content, triggering numerous PHP deprecation
notices.

See: https://github.com/simplepie/simplepie/issues/810
2025-10-07 12:19:50 +01:00
Stefan Topfstedt 3649adaf2b MDL-86450 Forum: adds missing IDs to advanced search form elements. 2025-10-07 14:23:07 +08:00
Jun Pataleta 4d058c5c61 MDL-86654 customfield: Ensure we can test the display of move category
* And simplify checking for the move buttons
2025-10-07 10:00:38 +08:00
Jun Pataleta 35d753c4e2 MDL-86654 customfield: Show drag handles only when necessary
* Show category drag handles when there are 2 or more categories
* Show custom field drag handles when there are a total of 2 or more
fields on the page.
2025-10-07 10:00:37 +08:00
james-cnz 390a5af3da MDL-85917 course: Relocate section title update code 2025-10-07 13:04:42 +13:00
35939 changed files with 143318 additions and 4108521 deletions
-185
View File
@@ -1,185 +0,0 @@
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* Generates tsconfig.aliases.json for cross-component TypeScript imports.
*
* Moodle ESM source files can import from other components using the alias
* scheme @moodle/lms/<component>/* (e.g. @moodle/lms/core/SomeUtil). This
* file reads the Moodle component registry (.grunt/components.js), finds every
* component that has a js/esm/src/ directory, and writes the corresponding
* TypeScript path mappings to tsconfig.aliases.json.
*
* tsconfig.json extends tsconfig.aliases.json, so TypeScript picks up the
* mappings automatically. The file is skipped if its content is unchanged, to
* avoid unnecessary rebuilds.
*
* This must run before esbuild compilation. The Grunt `jsconfig` task calls
* generateAliases() so that both jsconfig.json and tsconfig.aliases.json are
* kept in sync. The `react` task depends on `jsconfig`, so aliases are always
* up to date before a React build.
*
* @copyright 2026 Adrian Greeve <adrian@moodle.com>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
import fs from "fs";
import path from "path";
import { createRequire } from "module";
const rootDir = process.cwd();
const tsconfigOut = path.join(rootDir, "tsconfig.aliases.json");
const TS_ALIASES_WARNING =
"// WARNING: Do not edit this file manually. It is generated by `grunt jsconfig`.\n";
/**
* Load Moodle component paths from `.grunt/components.js`.
*
* @returns {Record<string, string>} Map of component paths to component names.
*/
function loadComponentPathMap() {
const require = createRequire(import.meta.url);
// Load Moodle's components data from .grunt/components.js.
const { fetchComponentData } = require(
path.join(process.cwd(), ".grunt", "components.js")
);
// Format: `{ components: { "public/lib": "core", ... } }`.
const componentsData = fetchComponentData().components;
// Expected:
// `{ "public/lib": "core", "public/ai": "core_ai", ... }`.
return componentsData;
}
/**
* Compare two TypeScript `paths` maps for exact equality.
*
* @param {Record<string, string[]>} a First paths map.
* @param {Record<string, string[]>} b Second paths map.
* @returns {boolean} True when keys and values match in order.
*/
function pathsEqual(a, b) {
const aKeys = Object.keys(a);
const bKeys = Object.keys(b);
if (aKeys.length !== bKeys.length) {
return false;
}
for (const key of aKeys) {
if (!Object.prototype.hasOwnProperty.call(b, key)) {
return false;
}
const aArr = a[key] ?? [];
const bArr = b[key] ?? [];
if (aArr.length !== bArr.length) {
return false;
}
for (let i = 0; i < aArr.length; i++) {
if (aArr[i] !== bArr[i]) {
return false;
}
}
}
return true;
}
/**
* Parse JSON content and tolerate line comments.
*
* @param {string} content Raw JSON/JSONC file content.
* @returns {unknown}
*/
function parseJsonWithComments(content) {
const stripped = content
.replace(/^\uFEFF/, "")
.replace(/^\s*\/\/.*$/gm, "");
return JSON.parse(stripped);
}
/**
* Convert JSON output so single-value arrays are rendered on one line.
*
* @param {unknown} obj Data to stringify.
* @returns {string} JSON string with flattened single-value arrays.
*/
function stringifyFlatArrays(obj) {
const json = JSON.stringify(obj, null, 2);
return TS_ALIASES_WARNING + json.replace(/\[\s+\"(.*?)\"\s+\]/g, '["$1"]') + "\n";
}
/**
* Generate `tsconfig.aliases.json` from Moodle component metadata.
*
* Includes core aliases, discovers plugin React source aliases, and skips
* rewriting when aliases have not changed.
*
* @returns {void}
*/
export function generateAliases() {
const componentPathMap = loadComponentPathMap();
// Build TS paths for tsconfig.aliases.json
/** @type {Record<string, string[]>} */
const tsPaths = {
// Always include core alias.
"@moodle/lms/core/*": ["./public/lib/js/esm/src/*"],
};
for (const [componentPath, componentName] of Object.entries(componentPathMap)) {
const runtimeAliasKey = `@moodle/lms/${componentName}/*`;
const targetPattern = `./${path
.join(componentPath, "js", "esm", "src", "*")
.replace(/\\/g, "/")}`;
tsPaths[runtimeAliasKey] = [targetPattern];
}
const tsconfig = {
compilerOptions: { paths: tsPaths },
};
// If tsconfig paths didn't change, skip regeneration
let previousPaths = null;
let hasWarningHeader = false;
if (fs.existsSync(tsconfigOut)) {
try {
const previousContent = fs.readFileSync(tsconfigOut, "utf8");
hasWarningHeader = previousContent.startsWith(TS_ALIASES_WARNING);
const previousTsconfig = /** @type {{compilerOptions?: {paths?: Record<string, string[]>}}} */ (
parseJsonWithComments(previousContent)
);
previousPaths = previousTsconfig.compilerOptions?.paths ?? {};
} catch {
// ignore parse errors and treat as "no previous cache"
previousPaths = null;
}
}
if (previousPaths && hasWarningHeader && pathsEqual(previousPaths, tsPaths)) {
console.log("✓ Generating tsconfig.aliases.json was skipped. No alias modifications detected.");
return;
}
// Write tsconfig.aliases.json
fs.writeFileSync(tsconfigOut, stringifyFlatArrays(tsconfig));
console.log("✓ Generating tsconfig.aliases.json");
}
-324
View File
@@ -1,324 +0,0 @@
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* Core esbuild library for Moodle ESM components.
*
* This is the single source of all build logic. The Grunt tasks
* (.grunt/tasks/react.js) import from here rather than duplicating
* configuration or build steps.
*
* Source layout convention:
* <component>/js/esm/src/**\/*.{ts,tsx} → <component>/js/esm/build/**\/*.js
*
* Exports:
* createBuildConfig(isDev) esbuild config object; pass isDev=true
* to disable minification / add sourcemaps.
* buildPluginComponents(isDev) Glob for every js/esm/src tree across
* core and plugins, compile all in parallel.
* buildSingleFile(filePath, isDev) Compile one source file; used by the
* Grunt watch task on incremental changes.
* watchComponents(isDev) Start esbuild's native watch mode so the
* compiler rebuilds affected files on save.
* resolveComponentPaths(entry) Map an absolute source path to its
* relative input path and output path.
*
* @copyright 2026 Adrian Greeve <adrian@moodle.com>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
import esbuild from "esbuild";
import { glob } from "glob";
import chalk from "chalk";
import path from "path";
import fs from "fs";
const projectRoot = process.cwd();
/**
* Resolve a path from the current project root.
*
* @param {...string} segments Path segments to resolve.
* @returns {string} Absolute path from project root.
*/
const fromRoot = (...segments) => path.resolve(projectRoot, ...segments);
/**
* Create an incremental dot progress indicator.
* Prints one dot per completed build and wraps lines for readability.
*
* @param {number} total Total number of items to build.
* @returns {{ start: () => void, tick: () => void, succeed: (msg: string) => void, fail: (msg: string) => void }}
*/
function createDotProgress(total) {
const dotsPerLine = 60;
let printed = 0;
return {
start: () => {
process.stdout.write(`${chalk.cyan("Building")} `);
},
tick: () => {
printed++;
process.stdout.write(chalk.cyan("."));
if (printed % dotsPerLine === 0 && printed < total) {
process.stdout.write(` ${chalk.dim(`[${printed}/${total}]`)}\n`);
}
},
succeed: (msg) => {
process.stdout.write(` ${chalk.dim(`[${printed}/${total}]`)}\n`);
process.stdout.write(`${chalk.green("✓")} ${msg}\n`);
},
fail: (msg) => {
process.stdout.write(` ${chalk.dim(`[${printed}/${total}]`)}\n`);
process.stdout.write(`${chalk.red("✗")} ${msg}\n`);
},
};
}
/**
* Build a single React component entry file.
*
* @param {string} entry Absolute entry file path.
* @param {import('esbuild').BuildOptions} buildConfig Shared esbuild configuration.
* @returns {Promise<{file: string, output?: string, error: Error|null}>}
*/
async function buildComponent(entry, buildConfig) {
const resolved = resolveComponentPaths(entry);
if (!resolved) {
return { file: entry, error: new Error(`Unknown path pattern: ${entry}`) };
}
const { file, output } = resolved;
fs.mkdirSync(path.dirname(output), { recursive: true });
try {
await esbuild.build({
...buildConfig,
entryPoints: [entry],
outfile: output,
});
return { file, output, error: null };
} catch (error) {
return { file, error: error instanceof Error ? error : new Error(String(error)) };
}
}
/**
* Resolve source and output paths for a component entry.
*
* @param {string} entry Absolute component source path.
* @returns {{file: string, output: string} | null} Relative file info and output path, or null for unsupported paths.
*/
export function resolveComponentPaths(entry) {
const rel = path.relative(projectRoot, entry);
if (rel.includes(path.join('esm', 'src'))) {
const [part, rawFile] = rel.split(path.join('esm', 'src'));
const file = rawFile.replace(/^[\/\\]/, '');
return {
file,
output: fromRoot(part, 'esm', 'build', file.replace(/\.(ts|tsx)$/, '.js')),
};
}
return null;
}
/**
* Run all builds in parallel, showing incremental dot progress.
*
* @param {string[]} entryPoints Absolute entry file paths.
* @param {import('esbuild').BuildOptions} buildConfig Shared esbuild configuration.
* @returns {Promise<{errors: {file: string, output?: string, error: Error|null}[]}>}
*/
async function runParallelBuilds(entryPoints, buildConfig) {
const total = entryPoints.length;
/** @type {{file: string, output?: string, error: Error|null}[]} */
const errors = [];
const startTime = Date.now();
const progress = createDotProgress(total);
progress.start();
await Promise.all(entryPoints.map(async (entry) => {
const result = await buildComponent(entry, buildConfig);
if (result.error) {
errors.push(result);
}
progress.tick();
}));
const elapsed = ((Date.now() - startTime) / 1000).toFixed(1);
const succeeded = total - errors.length;
if (errors.length > 0) {
progress.fail(`${succeeded}/${total} built · ${elapsed}s`);
for (const e of errors) {
console.error(chalk.red(`${e.file}: ${e.error?.message ?? ''}`));
}
} else {
progress.succeed(chalk.bold(`${total} components built`) + chalk.dim(` · ${elapsed}s`));
}
return { errors };
}
/**
* Create the shared esbuild build configuration.
*
* @param {boolean} isDev Whether development mode is enabled.
* @returns {import('esbuild').BuildOptions} esbuild configuration object.
*/
export function createBuildConfig(isDev) {
return {
bundle: true,
format: "esm",
external: ["react", "react/*", "react-dom", "react-dom/*", "@moodlehq/design-system", "@moodlehq/design-system/*", "@moodle/lms", "@moodle/lms/*"],
jsx: "automatic",
minify: !isDev,
sourcemap: isDev ? 'inline' : false,
jsxDev: isDev,
keepNames: isDev,
treeShaking: !isDev,
define: { 'process.env.NODE_ENV': isDev ? '"development"' : '"production"' },
};
}
/**
* Build all plugin and core React components.
*
* @param {boolean} isDev Whether development mode is enabled.
* @returns {Promise<void>}
*/
export async function buildPluginComponents(isDev) {
console.log(chalk.green('> Building components...'));
const entryPoints = glob.sync("**/js/esm/src/**/*.{ts,tsx}", {
cwd: projectRoot,
absolute: true,
ignore: [
`${process.cwd()}/node_modules/**`,
`${process.cwd()}/vendor/**`,
],
});
const buildConfig = createBuildConfig(isDev);
const { errors } = await runParallelBuilds(entryPoints, buildConfig);
if (errors.length > 0) {
throw new Error(`React build failed: ${errors.length} component(s) could not be built`);
}
}
/**
* Start esbuild in native watch mode over all React components.
*
* Creates a single incremental build context for all entry points so that
* esbuild can reuse its internal graph between rebuilds instead of starting
* from scratch on every file change.
*
* @param {boolean} isDev Whether to build in development mode.
* @param {((srcFiles: string[]) => void) | undefined} [onRebuild] Called with the rebuilt entry source
* files (relative to project root) after each non-initial successful rebuild. Use this to run
* follow-up tasks such as linting without coupling them to this module.
* @returns {Promise<import('esbuild').BuildContext|null>} The active context, or null if no source files exist.
*/
export async function watchComponents(isDev, onRebuild) {
const entryPoints = glob.sync("**/js/esm/src/**/*.{ts,tsx}", {
cwd: projectRoot,
absolute: true,
ignore: [
`${process.cwd()}/node_modules/**`,
`${process.cwd()}/vendor/**`,
],
});
if (entryPoints.length === 0) {
return null;
}
const buildConfig = createBuildConfig(isDev);
// Map each source file to an {in, out} pair so esbuild can write each
// component to its custom output directory while sharing a single context.
// The 'out' path is relative to outdir (projectRoot) and has no extension —
// esbuild appends the appropriate extension automatically.
// Build entry pairs and ensure output directories exist in a single pass.
const entryPairs = entryPoints.flatMap(entry => {
const resolved = resolveComponentPaths(entry);
if (!resolved) {
return [];
}
fs.mkdirSync(path.dirname(resolved.output), { recursive: true });
return [{ in: entry, out: path.relative(projectRoot, resolved.output).replace(/\.js$/, '') }];
});
// Report build results to the terminal after every build (initial and on each change).
// metafile: true populates result.metafile.outputs so we know which files were written.
// On a rebuild only the affected outputs appear, so it effectively names the changed file.
/** @type {import('esbuild').Plugin} */
const watchReporter = {
name: 'watch-reporter',
setup(build) {
let isInitial = true;
let startTime = 0;
build.onStart(() => {
startTime = Date.now();
});
build.onEnd(result => {
const now = new Date().toLocaleTimeString();
const elapsed = ((Date.now() - startTime) / 1000).toFixed(1);
if (result.errors.length > 0) {
console.error(chalk.red(`[${now}] ✗ Build failed (${result.errors.length} error(s))`) + chalk.dim(` · ${elapsed}s`));
return;
}
const outputs = Object.keys(result.metafile?.outputs ?? {});
console.log(chalk.green(`[${now}] ✓ ${outputs.length} component(s) built`) + chalk.dim(` · ${elapsed}s`));
if (isInitial) {
isInitial = false;
} else if (onRebuild) {
// entryPoint is the source file (relative to projectRoot) that triggered
// this rebuild. Pass it to the caller so they can run follow-up tasks
// (e.g. linting) without this module needing to know about them.
const srcFiles = Object.values(result.metafile?.outputs ?? {})
.map(output => output.entryPoint)
.filter(/** @param {string|undefined} f */ f => !!f);
onRebuild(/** @type {string[]} */ (srcFiles));
}
});
},
};
const ctx = await esbuild.context({
...buildConfig,
entryPoints: entryPairs,
outdir: projectRoot,
metafile: true,
plugins: [watchReporter],
});
await ctx.watch();
return ctx;
}
-17
View File
@@ -244,23 +244,6 @@
'sourceType': 'module',
'requireConfigFile': false
}
},
{
files: ["**/*.ts", "**/*.tsx"],
parser: '@typescript-eslint/parser',
parserOptions: {
sourceType: 'module',
ecmaFeatures: {
jsx: true
},
allowSyntheticDefaultImports: true
},
rules: {
// promise/no-native crashes on TypeScript ASTs (same reason it is
// disabled for AMD files above). Native Promises are standard in TS.
'promise/no-native': 'off',
'promise/avoid-new': 'off',
}
}
]
}
-4
View File
@@ -3,7 +3,3 @@
**.js.map -diff
**-min.js -diff
**.min.js -diff
# Remove composer lock file changes from standard diff views.
/composer.lock -diff
/lib/js/bundles/*/*.js -diff
+1 -1
View File
@@ -1,2 +1,2 @@
# Primary donations pages.
custom: ["https://moodle.com/donations/"]
custom: ["https://moodle.com/donations/", "https://fund.moodle.org"]
-118
View File
@@ -1,118 +0,0 @@
name: Run tests in a Composed Moodle Setup
on:
push:
branches-ignore:
- main
- MOODLE_[0-9]+_STABLE
tags-ignore:
- v[0-9]+.[0-9]+.[0-9]+*
workflow_dispatch:
inputs:
phpunit_extra_options:
description: Additional options to apply to PHPUnit
required: false
default: ''
env:
php: 8.4
jobs:
PHPUnit:
runs-on: ${{ matrix.os }}
services:
exttests:
image: moodlehq/moodle-exttests
ports:
- 8080:80
redis:
image: redis
ports:
- 6379:6379
postgres:
image: ${{ matrix.db == 'pgsql' && 'postgres:16' || '' }}
env:
POSTGRES_DB: test
POSTGRES_USER: test
POSTGRES_PASSWORD: test
ports:
- 5432:5432
strategy:
fail-fast: false
matrix:
include:
# MySQL builds always run with the lowest PHP supported version.
- os: ubuntu-24.04
php: 8.3
extensions:
db: mysqli
# PostgreSQL builds always run with the highest PHP supported version.
- os: ubuntu-24.04
php: 8.4
db: pgsql
steps:
- name: Run MySQL Server
if: ${{ matrix.db == 'mysqli' }}
run: |
docker run --rm \
-e MYSQL_DATABASE=test \
-e MYSQL_USER=test \
-e MYSQL_PASSWORD=test \
-e MYSQL_ROOT_PASSWORD=test \
-p 3306:3306 \
-d \
--tmpfs /var/lib/mysql:rw,noexec,nosuid,size=1024M \
mysql:8.4 \
--skip-log-bin \
--collation-server=utf8mb4_bin
- name: Configuring git vars
uses: rlespinasse/github-slug-action@v5
- name: Setting up PHP ${{ matrix.php }}
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php }}
extensions: ${{ matrix.extensions }}
ini-values: max_input_vars=5000
coverage: none
tools: composer
- name: Checking out code from ${{ env.GITHUB_REF_SLUG }}
uses: actions/checkout@v6
with:
path: 'moodle'
- name: 'Preparing the environment'
run: |
echo "pathtophp=$(which php)" >> $GITHUB_ENV # Inject installed pathtophp to env. The template config needs it.
sudo locale-gen en_AU.UTF-8
- name: Create the new Composer Project
run: |
mkdir testsite
cp moodle/.github/workflows/composed/composer.json testsite/composer.json
cp moodle/.github/workflows/composed/config.php testsite/config.php
mkdir -p testsite/data/moodledata
mkdir -p testsite/data/phpunitdata
- name: Install the Moodle test site
working-directory: testsite
run: |
composer install --no-interaction
- name: Setting up PHPUnit
working-directory: testsite
env:
dbtype: ${{ matrix.db }}
run: |
php moodle/public/admin/tool/phpunit/cli/init.php --no-composer-self-update
- name: Running PHPUnit tests
working-directory: testsite
env:
dbtype: ${{ matrix.db }}
phpunit_options: ${{ secrets.phpunit_options }}
run: |
vendor/bin/phpunit $phpunit_options ${{ inputs.phpunit_extra_options }}
-25
View File
@@ -1,25 +0,0 @@
{
"type": "project",
"require": {
"moodle/composer-installer": "^1",
"moodle/moodle-composer-scaffold": "^1",
"moodle/moodle": "@dev",
"moodle/moodle-testing": "^1.0"
},
"repositories": [
{
"name": "moodleundertest",
"type": "path",
"url": "../moodle"
}
],
"config": {
"audit": {
"block-insecure": false
},
"allow-plugins": {
"moodle/composer-installer": true,
"moodle/moodle-composer-scaffold": true
}
}
}
-67
View File
@@ -1,67 +0,0 @@
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* Template configuraton file for GitHub Actions CI/CD using Composer.
*
* @package core
* @copyright 2020 onwards Eloy Lafuente (stronk7) {@link https://stronk7.com}
* @license https://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
// This cannot be used out from a GitHub Actions workflow, so just exit.
getenv('GITHUB_WORKFLOW') || die; // phpcs:ignore moodle.Files.MoodleInternal.MoodleInternalGlobalState
unset($CFG);
global $CFG;
$CFG = new stdClass();
$CFG->dbtype = getenv('dbtype');
$CFG->dblibrary = 'native';
$CFG->dbhost = '127.0.0.1';
$CFG->dbname = 'test';
$CFG->dbuser = 'test';
$CFG->dbpass = 'test';
$CFG->prefix = 'm_';
$CFG->dboptions = ['dbcollation' => 'utf8mb4_bin'];
$host = 'localhost';
$CFG->wwwroot = "http://{$host}";
$CFG->dataroot = __DIR__ . '/data/moodledata';
$CFG->admin = 'admin';
$CFG->directorypermissions = 0777;
// Debug options - possible to be controlled by flag in future.
$CFG->debug = (E_ALL); // DEBUG_DEVELOPER.
$CFG->debugdisplay = 1;
$CFG->debugstringids = 1; // Add strings=1 to url to get string ids.
$CFG->perfdebug = 15;
$CFG->debugpageinfo = 1;
$CFG->allowthemechangeonurl = 1;
$CFG->passwordpolicy = 0;
$CFG->cronclionly = 0;
$CFG->pathtophp = getenv('pathtophp');
$CFG->phpunit_dataroot = __DIR__ . '/data/phpunitdata';
$CFG->phpunit_prefix = 't_';
$CFG->routerconfigured = true;
define('TEST_EXTERNAL_FILES_HTTP_URL', 'http://localhost:8080');
define('TEST_EXTERNAL_FILES_HTTPS_URL', 'http://localhost:8080');
define('TEST_SESSION_REDIS_HOST', 'localhost');
define('TEST_CACHESTORE_REDIS_TESTSERVERS', 'localhost');
-2
View File
@@ -58,8 +58,6 @@ $CFG->pathtophp = getenv('pathtophp');
$CFG->phpunit_dataroot = realpath(dirname(__DIR__)) . '/phpunitdata';
$CFG->phpunit_prefix = 't_';
$CFG->routerconfigured = true;
define('TEST_EXTERNAL_FILES_HTTP_URL', 'http://localhost:8080');
define('TEST_EXTERNAL_FILES_HTTPS_URL', 'http://localhost:8080');
+1 -1
View File
@@ -85,7 +85,7 @@ jobs:
- name: Setting up DB pgsql
uses: m4nu56/postgresql-action@v1
with:
postgresql version: 16
postgresql version: 14
postgresql db: test
postgresql user: test
postgresql password: test
+21 -22
View File
@@ -56,21 +56,13 @@ jobs:
image: redis
ports:
- 6379:6379
postgres:
image: ${{ matrix.db == 'pgsql' && 'postgres:16' || '' }}
env:
POSTGRES_DB: test
POSTGRES_USER: test
POSTGRES_PASSWORD: test
ports:
- 5432:5432
strategy:
fail-fast: false
matrix:
include:
# MySQL builds always run with the lowest PHP supported version.
- os: ubuntu-24.04
php: 8.3
php: 8.2
extensions:
db: mysqli
# PostgreSQL builds always run with the highest PHP supported version.
@@ -79,20 +71,27 @@ jobs:
db: pgsql
steps:
- name: Run MySQL Server
- name: Setting up DB mysql
if: ${{ matrix.db == 'mysqli' }}
run: |
docker run --rm \
-e MYSQL_DATABASE=test \
-e MYSQL_USER=test \
-e MYSQL_PASSWORD=test \
-e MYSQL_ROOT_PASSWORD=test \
-p 3306:3306 \
-d \
--tmpfs /var/lib/mysql:rw,noexec,nosuid,size=1024M \
mysql:8.4 \
--skip-log-bin \
--collation-server=utf8mb4_bin
uses: moodlehq/mysql-action@v1
with:
collation server: utf8mb4_bin
mysql version: 8.4
mysql database: test
mysql user: test
mysql password: test
use tmpfs: true
tmpfs size: '1024M'
extra conf: --skip-log-bin
- name: Setting up DB pgsql
if: ${{ matrix.db == 'pgsql' }}
uses: m4nu56/postgresql-action@v1
with:
postgresql version: 15
postgresql db: test
postgresql user: test
postgresql password: test
- name: Configuring git vars
uses: rlespinasse/github-slug-action@v4
+1 -1
View File
@@ -10,7 +10,7 @@ jobs:
fail-fast: false
matrix:
os: [ubuntu-latest]
php: [8.3, 8.4]
php: [8.2, 8.4]
steps:
- name: Construct repository URL
run: echo "REPOSITORY_URL=${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}" >> $GITHUB_ENV
+1 -1
View File
@@ -59,7 +59,7 @@ jobs:
db: pgsql
extensions: exif, fileinfo, gd, intl, pgsql, mysql, redis, soap, sodium, zip
- os: windows-latest
php: 8.3
php: 8.2
db: pgsql
extensions: exif, fileinfo, gd, intl, pgsql, mysql, redis, soap, sodium, zip
-1
View File
@@ -60,4 +60,3 @@ phpcs.xml
jsconfig.json
UPGRADING-CURRENT.md
.phpunit.cache
tsconfig.aliases.json
+3 -23
View File
@@ -184,13 +184,11 @@ const getThirdPartyLibsList = relativeTo => {
const fs = require('fs');
const path = require('path');
const pathList = fetchComponentData().pathList
return fetchComponentData().pathList
.map(componentPath => path.relative(relativeTo, componentPath) + '/thirdpartylibs.xml')
.map(componentPath => componentPath.replace(/\\/g, '/'))
.filter(path => fs.existsSync(path));
pathList.push('lib/thirdpartylibs.xml');
return pathList.sort();
.filter(path => fs.existsSync(path))
.sort();
};
/**
@@ -387,23 +385,6 @@ const getThirdPartyLibsUpgradable = async() => {
return (await Promise.all(upgradableLibraries)).filter((library) => !!library);
};
/**
* Get the list of paths to build react sources.
*
* @param {string} relativeTo
* @returns {string[]}
*/
const getReactTsSrcGlobList = (relativeTo = '') => {
const globList = [];
fetchComponentData().pathList.forEach(componentPath => {
const relativeComponentPath = componentPath.replace(relativeTo, '');
globList.push(`${relativeComponentPath}/js/esm/src/**/*.ts`);
globList.push(`${relativeComponentPath}/js/esm/src/**/*.tsx`);
});
return globList.map(componentPath => componentPath.replace(/\\/g, '/'));
};
/**
* Get the list of thirdparty libraries.
*
@@ -451,5 +432,4 @@ module.exports = {
getThirdPartyLibsList,
getThirdPartyPaths,
getThirdPartyLibsUpgradable,
getReactTsSrcGlobList,
};
+1 -1
View File
@@ -89,7 +89,7 @@ const templates = {
module.exports = {
opts: {
destination: "./public/jsdoc/",
destination: "./jsdoc/",
template: "node_modules/docdash",
},
plugins,
+2 -2
View File
@@ -18,7 +18,7 @@ import inquirer from 'inquirer';
import chalk from 'chalk';
import { createNote } from './note.mjs';
import { getInitialValues, getIssueNumberFromBranchName } from './helpers.mjs';
import { getInitialValues } from './helpers.mjs';
import * as Prompts from './prompts.mjs';
import logger from './logger.mjs';
@@ -29,7 +29,7 @@ export default async (options) => {
// Fetch information.
const messages = [];
const { issueNumber } = await inquirer.prompt([
Prompts.getIssuePrompt(getIssueNumberFromBranchName()),
Prompts.getIssuePrompt(),
], initialValues);
let selection = {};
-14
View File
@@ -14,7 +14,6 @@
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
import chalk from 'chalk';
import branchName from 'current-git-branch';
import { isStandardComponent, isCommunityComponent, rewritePlugintypeAsSubsystem } from './components.mjs';
import { isValidNoteName } from './noteTypes.mjs';
import logger from './logger.mjs';
@@ -60,19 +59,6 @@ export const formatIssueNumber = (input) => {
return input;
};
/**
* Get the issue number, based off current git branch name
*
* @returns {string|null}
*/
export const getIssueNumberFromBranchName = () => {
const issueNumber = String(branchName()).match(/^[a-zA-Z]*-\d+/);
if (issueNumber) {
return formatIssueNumber(issueNumber[0]);
}
return null;
};
/**
* Validate a component.
*
-8
View File
@@ -41,14 +41,6 @@ module.exports = grunt => {
// Check YUI module source files.
yui: {src: files ? files : grunt.moodleEnv.yuiSrc},
// Check React source files.
'react': {
options: {
fix: true,
},
src: files ? files : grunt.moodleEnv.reactSrc,
},
},
});
+1 -4
View File
@@ -37,9 +37,6 @@ const babelRename = function(destPath, srcPath) {
};
module.exports = grunt => {
// Load the React build tasks.
require('./react')(grunt);
// Load the Ignorefiles tasks.
require('./ignorefiles')(grunt);
@@ -60,7 +57,7 @@ module.exports = grunt => {
// Register JS tasks.
grunt.registerTask('yui', ['eslint:yui', 'shifter']);
grunt.registerTask('amd', ['ignorefiles', 'eslint:amd', 'rollup']);
grunt.registerTask('js', ['amd', 'yui', 'react']);
grunt.registerTask('js', ['amd', 'yui']);
// Register NPM tasks.
grunt.loadNpmTasks('grunt-contrib-watch');
+11 -41
View File
@@ -14,7 +14,6 @@
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/* jshint node: true, browser: false */
/* eslint-env node */
// @ts-nocheck
/**
* @copyright 2022 Andrew Lyons <andrew@nicols.co.uk>
@@ -35,49 +34,20 @@ const configuration = {
include: [],
};
/**
* Generate jsconfig.json with AMD module path aliases for all components.
*
* @param {object} grunt The Grunt instance.
*/
const generateJsconfig = (grunt) => {
const jsconfigData = Object.assign({}, configuration);
const path = require('path');
const {fetchComponentData} = require(path.join(process.cwd(), '.grunt', 'components.js'));
const componentData = fetchComponentData().components;
for (const [thisPath, component] of Object.entries(componentData)) {
jsconfigData.compilerOptions.paths[`${component}/*`] = [`${thisPath}/amd/src/*`];
jsconfigData.include.push(`${thisPath}/amd/src/**/*`);
}
grunt.file.write('jsconfig.json', JSON.stringify(jsconfigData, null, " ") + "\n");
grunt.log.write('✓ Generating jsconfig.json\n');
};
/**
* Generate tsconfig.aliases.json with TypeScript path aliases for all ESM components.
*
* @returns {Promise<void>}
*/
const generateTsAliases = async() => {
const {generateAliases} = await import('../../.esbuild/generate-aliases.mjs');
generateAliases();
};
module.exports = (grunt) => {
const handler = async function() {
const done = this.async();
const handler = () => {
const jsconfigData = Object.assign({}, configuration);
try {
generateJsconfig(grunt);
await generateTsAliases();
done();
} catch (err) {
grunt.log.error(err.message);
done(false);
const path = require('path');
const {fetchComponentData} = require(path.join(process.cwd(), '.grunt', 'components.js'));
const componentData = fetchComponentData().components;
for (const [thisPath, component] of Object.entries(componentData)) {
jsconfigData.compilerOptions.paths[`${component}/*`] = [`${thisPath}/amd/src/*`];
jsconfigData.include.push(`${thisPath}/amd/src/**/*`);
}
grunt.file.write('jsconfig.json', JSON.stringify(jsconfigData, null, " ") + "\n");
};
grunt.registerTask('jsconfig', 'Generate a jsconfig configuration compatible with the LSP', handler);
};
-111
View File
@@ -1,111 +0,0 @@
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/* jshint node: true, browser: false */
/* eslint-env node */
// @ts-nocheck
/**
* Grunt tasks for building React components.
*
* @copyright Meirza <meirza.arson@moodle.com>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
module.exports = grunt => {
/**
* Register react task — build or watch React components.
*
* Modes:
* grunt react — production build
* grunt react:dev — development build (sourcemaps, no minification)
* grunt react:watch — esbuild native watch (dev mode, incremental context)
*
* Note: react:watch uses esbuild's own context.watch() and is intentionally
* separate from grunt-contrib-watch. This keeps esbuild's incremental build
* graph alive between rebuilds rather than restarting from scratch on each change.
*/
grunt.registerTask('react', 'Build all React components', function(mode) {
const done = this.async();
const isWatch = mode === 'watch';
const isDev = isWatch || mode === 'dev';
if (isWatch) {
const path = require('path');
const {spawn} = require('child_process');
// Run ESLint on the rebuilt source files in check-only mode (no --fix)
// to avoid writing changes that would re-trigger esbuild.
const eslintBin = path.join(grunt.moodleEnv.gruntFilePath, 'node_modules', '.bin', 'eslint');
const onRebuild = (srcFiles) => {
if (srcFiles.length === 0) {
return;
}
const absSrcFiles = srcFiles.map(f => path.join(grunt.moodleEnv.gruntFilePath, f));
spawn(eslintBin, absSrcFiles, {stdio: 'inherit'})
.on('error', err => grunt.log.error(`ESLint: ${err.message}`));
};
(async() => {
try {
const {watchComponents} = await import('../../.esbuild/plugin/plugincomponents.mjs');
const { generateAliases } = await import('../../.esbuild/generate-aliases.mjs');
const { buildPluginComponents } = await import('../../.esbuild/plugin/plugincomponents.mjs');
generateAliases();
await buildPluginComponents(isDev);
const ctx = await watchComponents(true, onRebuild);
if (!ctx) {
grunt.log.warn('No React source files found. Nothing to watch.');
done();
return;
}
grunt.log.ok('esbuild is watching for React changes. Press Ctrl+C to stop.');
// Keep the process alive until the user interrupts. done() is intentionally
// not called here — grunt's async mechanism holds the process open.
process.on('SIGINT', async() => {
await ctx.dispose();
done();
});
} catch (err) {
grunt.log.error(err.message);
done(false);
}
})();
return;
}
grunt.log.writeln(`Building React components in ${isDev ? 'DEVELOPMENT' : 'PRODUCTION'} mode...`);
(async() => {
try {
const {generateAliases} = await import('../../.esbuild/generate-aliases.mjs');
const {buildPluginComponents} = await import('../../.esbuild/plugin/plugincomponents.mjs');
generateAliases();
await buildPluginComponents(isDev);
done();
} catch (err) {
grunt.log.error(err.message);
done(false);
}
})();
});
};
-3
View File
@@ -33,9 +33,6 @@ module.exports = grunt => {
// Are we in an AMD directory?
} else if (grunt.moodleEnv.inAMD) {
grunt.task.run('amd');
// Are we in an ESM source directory?
} else if (grunt.moodleEnv.inEsm) {
grunt.task.run('react');
} else {
// Run all of the requested startup tasks.
grunt.moodleEnv.startupTasks.forEach(taskName => grunt.task.run(taskName));
+1 -5
View File
@@ -49,10 +49,6 @@ module.exports = grunt => {
// Spawn the task in a child process so that it doesn't kill this one
// if it failed.
var args = [task, filesOption];
if (grunt.option('force')) {
args.push('--force');
}
grunt.util.spawn(
{
// Spawn with the grunt bin.
@@ -62,7 +58,7 @@ module.exports = grunt => {
cwd: grunt.moodleEnv.fullRunDir,
stdio: 'inherit'
},
args: args
args: [task, filesOption]
},
function(err, res, code) {
if (code !== 0) {
@@ -1,7 +0,0 @@
issueNumber: MDL-51152
notes:
enrol_manual:
- message: >-
The unused parameter 'roleid' has been removed from the external
function `unenrol_users()`
type: removed
@@ -1,22 +0,0 @@
issueNumber: MDL-71368
notes:
core:
- message: >
The `arg_separator.output` has been changed from a default of `amp;` to
a default of `&` in line with PHP defaults.
If you were previously relying on the legacy default when using
`http_build_query()` then you should _actively_ specify the value as the
third
parameter, for example:
```
http_build_query($formdata, '', '&amp;');
```
type: changed
@@ -1,8 +0,0 @@
issueNumber: MDL-73602
notes:
core:
- message: >-
Removed `qtype_random` from core.
`core\component::is_valid_plugin_name` has an additional check to ensure no-one can create a new plugin called qtype_random,
as this would conflict with the support for restoring old backups.
type: removed
@@ -1,8 +0,0 @@
issueNumber: MDL-75067
notes:
tool_behat:
- message: >-
The `behat_session_trait::ensure_element_[does_not_]exists(...)` methods
now accept optional `$container` parameter to define the parent node to
look within
type: improved
@@ -1,5 +0,0 @@
issueNumber: MDL-77894
notes:
core:
- message: Appending an exclamation mark to template names ignores theme overrides
type: improved
@@ -1,10 +0,0 @@
issueNumber: MDL-78325
notes:
core_grades:
- message: >-
In Moodle 4.2, the legacy Gradebook base widget from 4.1 has been removed and
replaced with a simpler class-based system due to a breaking change and
excessive complexity in the old pattern. The files `core/grades/basewidget.js` and
templates in `grade/templates/searchwidget/` have been deleted,
with minimal expected third-party impact.
type: removed
@@ -1,13 +0,0 @@
issueNumber: MDL-79182
notes:
core:
- message: >
The following AMD modules have been removed following the final
deprecation process. It is no longer possible or necessary to manually
register modal types. See MDL-78324 for further details.
- `core/modal_registry`
- `core/modal_factory`
type: removed
@@ -1,7 +0,0 @@
issueNumber: MDL-79574
notes:
core:
- message: >-
The `\core\persistent::get_records(...)` class method now returns
instances keyed by record ID
type: changed
@@ -1,13 +0,0 @@
issueNumber: MDL-81514
notes:
core_group:
- message: >
`groups_print_activity_menu()` and `groups_get_activity_group()` now
include an additional `$participationonly` parameter, which is true by
default. This can be set false when we want the user to be able to
select a non-participation group within an activity, for example if a
teacher wants to filter assignment submissions by non-participation
groups. It should never be used when the menu is displayed to students,
as this may allow them to participate using non-participation groups.
Non-participation groups are labeled as such.
type: improved
@@ -1,8 +0,0 @@
issueNumber: MDL-81608
notes:
mod_quiz:
- message: >-
The language strings `addpagebreak` and `removepagebreak` have been
deprecated and should no longer be used. These have been replaced by
the `addpagebreakafter` and `removepagebreakafter` language strings.
type: deprecated
@@ -1,12 +0,0 @@
issueNumber: MDL-81961
notes:
core_question:
- message: |
core_question:
- message: |
Final deprecation of `moodle-question-chooser` YUI module.
type: removed
- message: |
Final deprecation of `core_question/qbank_chooser` template.
type: removed
type: removed
-13
View File
@@ -1,13 +0,0 @@
issueNumber: MDL-81962
notes:
core:
- message: The `moodle-core-notification-confirm` YUI module has been removed after an extensive deprecation period. Please use the AMD `core/modal` module as a replacement.
type: removed
- message: |
The following feaetures of the `moodle-core-notification` YUI module have been removed after an extensive deprecation process.:
- method: `keyDelegation`
- property: `lightbox`
There is no direct replacement for these features, but they were not widely used and their removal should not cause significant issues. If you were using these features, you will need to implement your own solutions for key delegation and lightbox functionality.
type: removed
@@ -1,7 +0,0 @@
issueNumber: MDL-82284
notes:
core:
- message: >-
Legacy constructors have been removed. These relate to PHP 4 and
earlier.
type: removed
@@ -1,15 +0,0 @@
issueNumber: MDL-83902
notes:
core_badges:
- message: >-
The following classes and functions are now also available in the following new
locations. They will continue to work in their old locations:
| Old classname/function | New classname/function |
| --- | --- |
| `\badge_award_selector_base` | `\core_badges\award_selector_base` |
| `\badge_potential_users_selector` | `\core_badges\potential_award_selector` |
| `\badge_existing_users_selector` | `\core_badges\existing_award_selector` |
| `process_manual_award()` | `\core_badges\award_manager::process_manual_award()` |
| `process_manual_revoke()` | `\core_badges\award_manager::process_manual_revoke()` |
type: improved
@@ -1,7 +0,0 @@
issueNumber: MDL-84082
notes:
core_reportbuilder:
- message: >-
The text filter "Contains" and "Not contains" operators now support `*`
and `?` wildcard characters for better text content filtering
type: improved
@@ -1,30 +0,0 @@
issueNumber: MDL-84960
notes:
core:
- message: >-
Several core web services now include a new initials field in user data
structures. This change is backward-compatible and only adds an optional
field; no existing fields or field semantics have been changed.
Client applications should ensure they can handle the additional initials
field in web service responses, but clients that ignore unknown fields can
continue working without changes. The affected web services are:
- core_enrol_get_enrolled_users
- core_enrol_get_enrolled_users_with_capability
- core_enrol_get_potential_users
- core_enrol_search_users
- core_user_get_users_by_field
- core_user_get_users
- core_user_get_course_user_profiles
- core_grades_get_enrolled_users_for_selector
- core_grades_get_gradable_users
- gradereport_grader_get_users_in_report
- core_message_get_contact_requests
- core_message_get_conversation_members
- core_message_message_search_users
- core_message_get_user_contacts
- core_message_get_member_info
- core_message_get_conversation_messages
- mod_assign_list_participants
- mod_assign_get_participant
- mod_forum_get_forum_discussions
type: improved
@@ -1,9 +0,0 @@
issueNumber: MDL-85233
notes:
core_filters:
- message: >-
MimeTeX support has been removed from both `filter_tex` and
`filter_algebra`. These filters now depend on LaTeX tools (`latex`,
`dvips`, and `convert`/`dvisvgm`), and as a result, the `pathmimetex`
setting has been removed.
type: removed
@@ -1,8 +0,0 @@
issueNumber: MDL-85322
notes:
block_html:
- message: >-
Treat Dashboard (pagetype 'my-index') as trusted in web services so
get_content_for_external preserves embedded HTML (e.g. iframes) on user
Dashboard.
type: changed
@@ -1,8 +0,0 @@
issueNumber: MDL-85336
notes:
core:
- message: >-
Redis connection timeout settings for cachestores and sessions have been
split into connection timeout and read timeout to allow for finer
control. These settings now also accept floats.
type: improved
@@ -1,9 +0,0 @@
issueNumber: MDL-85405
notes:
core_course:
- message: >-
The external function `core_course_get_course_contents` now includes the
`candisplay` property for each returned module. If this is false, the
module should not be displayed on the course page (for example, for
question banks).
type: improved
@@ -1,5 +0,0 @@
issueNumber: MDL-85621
notes:
core_badges:
- message: The create_issued_badge generator now returns the issued badge object.
type: changed
@@ -1,11 +0,0 @@
issueNumber: MDL-85621
notes:
core_badges:
- message: >-
The class core_badges_assertion has been deprecated and replaced by
\core_badges\achievement_credential.
The method badges_get_default_issuer() has also been deprecated because
it is no longer needed.
The file badges/endorsement.php has been removed because it stopped being used
when MDL-84323 was integrated.
type: deprecated
@@ -1,17 +0,0 @@
issueNumber: MDL-85975
notes:
core:
- message: >
`restore_qtype_plugin::unset_excluded_fields` now returns the modified
questiondata structure,
in order to support structures that contain arrays.
If your qtype plugin overrides
`restore_qtype_plugin::remove_excluded_question_data` without
calling the parent method, you may need to modify your overridden method
to use the returned
value.
type: fixed
@@ -1,8 +0,0 @@
issueNumber: MDL-86332
notes:
core_completion:
- message: >-
The `completion_info::clear_criteria` method takes an optional
`$removetypecriteria` to determine whether to remove course type
criteria from other courses that refer to the current course
type: changed
@@ -1,26 +0,0 @@
issueNumber: MDL-86493
notes:
mod_quiz:
- message: >-
The quiz overrides cache implementation has been replaced with a faster alternative with a different API.
This should be a transparent change but any direct references will still need to be updated.
type: deprecated
- message: >
`mod_quiz_cm_info_dynamic()` now uses the new `quiz_overrides` cache via `override_manager`, performing a single cache fetch per quiz/user.
This significantly reduces cache calls on course pages with many quizzes and groups.
The new `mod_quiz:quiz_overrides` cache is keyed by `quizid_userid` using datasource `\mod_quiz\cache\quiz_overrides_cache`.
This cache returns all applicable overrides for a user in a quiz (the user override, if any, plus all group overrides for groups they belong to in the quiz's course).
New class `\mod_quiz\local\quiz_overrides_cache_manager` to interact with the cache:
- `get_overrides(int $quizid, int $userid): array`
- `purge_for_user(int $quizid, int $userid): void`
- `purge_for_users(int $quizid, array $userids): void`
- `purge_for_group(int $quizid, int $groupid): void`
- `purge_for_group_members(int $groupid, array $userids): void`
Hook callbacks in `db/hooks.php` to keep the cache in sync with group
membership changes:
- `\core_group\hook\after_group_membership_added`
- `\core_group\hook\after_group_membership_removed`
type: improved
@@ -1,12 +0,0 @@
issueNumber: MDL-86524
notes:
core_question:
- message: >-
During restore of a question_set_reference, mapping of IDs in the
filtercondition is now delegated to qbank plugins.
If your qbank plugin defines a filter condition that uses database
IDs, add an override of `restore_filtercondition()` to the `condition`
class, which checks the condition's data and replaces the IDs with
mapped values if required. See
`qbank_managecategories\category_condition` for an example.
type: improved
@@ -1,7 +0,0 @@
issueNumber: MDL-86607
notes:
mod_feedback:
- message: >-
The method `feedback_init_feedback_session()` has been deprecated, along
with all other direct access to `$SESSION` from the module
type: deprecated
@@ -1,7 +0,0 @@
issueNumber: MDL-86660
notes:
core_courseformat:
- message: >-
The `$cm` attribute in `activityoverviewbase` has been updated to public
visibility, allowing direct access to the course module instance
type: changed
@@ -1,8 +0,0 @@
issueNumber: MDL-86660
notes:
core_courseformat:
- message: >-
A new `available` attribute has been added to `activityname_exporter`
class. It allows the external API to return the activity's availability
status relative to the current user.
type: changed
@@ -1,9 +0,0 @@
issueNumber: MDL-86660
notes:
core_courseformat:
- message: >-
Two new public static methods have been added to the `overviewtable`
class:
- `is_cm_displayable`: Determines if a course module should be listed in the overview table.
- `is_cm_available`: Checks if a course module is accessible to the user (and should therefore be rendered as a link).
type: changed
@@ -1,19 +0,0 @@
issueNumber: MDL-86678
notes:
core_reportbuilder:
- message: >-
The base entity class now implements a default `initialise` method, that
will automatically call each of the following methods to load entity
report data:
* `get_available_columns()`
* `get_available_filters()`
* `get_available_conditions()`
This change allows for a lot of boilerplate to be removed from report
entity classes
type: improved
@@ -1,12 +0,0 @@
issueNumber: MDL-86699
notes:
core_reportbuilder:
- message: >-
There are two new entities intended for reports specific to course
module data, in order to provide a baseline in terms of module reporting
and API usage:
*
`core_course\reportbuilder\local\entities\{course_module,course_module_base}`
type: improved
@@ -1,7 +0,0 @@
issueNumber: MDL-86699
notes:
mod_forum:
- message: >-
The forum report entity `->get_context_joins()` method is deprecated,
replaced with `->get_course_modules_joins(...)`
type: deprecated
@@ -1,17 +0,0 @@
issueNumber: MDL-86798
notes:
core_question:
- message: >
In order to prevent re-use of question version numbers after a version
is deleted, the `nextversion` column was added to
`question_bank_entries`. This serves as a counter incremented each time
a version is created.
Do not query this field directly. Instead use
`core_question\versions::get_next_version()` to read the value, which
will initialise it based on the existing versions if it is not set yet.
By default, it will increment the version number automatically, unless
you pass `increment: false`. Because of this, it is advisable to call
it inside a transaction, that is only committed after the version number
is used in a `question_versions` record.
type: fixed
@@ -1,7 +0,0 @@
issueNumber: MDL-86798
notes:
core_question:
- message: >-
`get_next_version()` from questionlib.php is now deprecated. Use
`\core_question\versions::get_next_version()` instead.
type: deprecated
@@ -1,5 +0,0 @@
issueNumber: MDL-86832
notes:
core_block:
- message: Removed block_activity_modules from Moodle 5.2.
type: removed
@@ -1,10 +0,0 @@
issueNumber: MDL-86839
notes:
core:
- message: >
"grunt watch" now accepts a force flag. Run "grunt watch -f" or "grunt
watch --force" to prevent grunt from cancelling builds when errors
occur. This is especially useful during development, because js build
files will be built even if, for example, jslint errors are still
present in the files.
type: improved
@@ -1,8 +0,0 @@
issueNumber: MDL-86846
notes:
core:
- message: >-
The `core/drag_handle` template has been modified to use a native HTML
button for a more accessible experience and a consistent look with other
buttons on the page.
type: changed
@@ -1,7 +0,0 @@
issueNumber: MDL-86854
notes:
core_courseformat:
- message: >-
Add core_courseformat\cmactions::move_before that will allow to move a coursemodule to a position before another coursemodule.
Add core_courseformat\cmactions::move_end_section that will allow to move a coursemodule the end of a section.
type: improved
@@ -1,8 +0,0 @@
issueNumber: MDL-86854
notes:
core_course:
- message: >-
Deprecates moveto_module (core_course) in favor of
cmactions::move_before or cmactions::move_end_section
(core_courseformat\local\cmactions).
type: deprecated
@@ -1,11 +0,0 @@
issueNumber: MDL-86855
notes:
qbank_columnsortorder:
- message: >-
The Behat selector `column move handle` for the `qbank_columnsortorder` plugin has been removed.
When interacting with the column's move handle, please use the move handle's accessible name and type.
For example:
- `And I drag "Move Created by" "button" and I drop it in "Move T" "button"`
type: removed
@@ -1,9 +0,0 @@
issueNumber: MDL-86856
notes:
core_course:
- message: >-
The following methods have been deprecated and should no longer be used:
- `course_delete_module`
- `course_module_flag_for_async_deletion`
Please consider using the equivalent methods, delete and delete_async, in `core_courseformat\local\cmactions` instead.
type: deprecated
@@ -1,5 +0,0 @@
issueNumber: MDL-86856
notes:
core_courseformat:
- message: Add delete method to the core_courseformat\cmactions
type: improved
@@ -1,7 +0,0 @@
issueNumber: MDL-86857
notes:
core_courseformat:
- message: >-
Add set_groupmode method to the core_courseformat\cmactions (course
format actions)
type: improved
@@ -1,7 +0,0 @@
issueNumber: MDL-86857
notes:
core_course:
- message: >-
Deprecates set_coursemodule_groupmode in favor of
core_courseformat\cmactions::set_groupmode
type: deprecated
@@ -1,7 +0,0 @@
issueNumber: MDL-86858
notes:
core_courseformat:
- message: >-
Create a new core_courseformat\cmactions::duplicate aiming to replace
the course/lib.php version
type: improved
@@ -1,7 +0,0 @@
issueNumber: MDL-86858
notes:
core_course:
- message: >-
The duplicate_module has been deprecated in favor of
core_courseformat\cmactions::duplicate
type: deprecated
@@ -1,7 +0,0 @@
issueNumber: MDL-86860
notes:
core_courseformat:
- message: >-
Added `set_marker` and `remove_all_markers` methods to the
`core_courseformat\sectionactions` class.
type: improved
@@ -1,9 +0,0 @@
issueNumber: MDL-86860
notes:
core_course:
- message: >-
The `course_set_marker` function has been deprecated and should no
longer be used.
Please consider using the equivalent methods, `set_marker` or `remove_all_markers`,
in `core_courseformat\local\sectionactions` instead.
type: deprecated
@@ -1,8 +0,0 @@
issueNumber: MDL-86861
notes:
core_courseformat:
- message: >-
Added the `set_visibility` method to the `core_courseformat\sectionactions` class.
To optimize performance, this method does not return the list of affected resources,
avoiding unnecessary database queries since the return value is unused.
type: improved
@@ -1,9 +0,0 @@
issueNumber: MDL-86861
notes:
core_courseformat:
- message: >-
The `set_section_visible` function has been deprecated and should no
longer be used.
Please consider using the equivalent method, `set_visibility`, in
`core_courseformat\local\sectionactions` instead.
type: deprecated
@@ -1,6 +0,0 @@
issueNumber: MDL-86862
notes:
core_courseformat:
- message: >-
Add a new core_courseformat\sectionactions::move_after to replace the current move_section_to logic.
type: improved
@@ -1,5 +0,0 @@
issueNumber: MDL-86862
notes:
core_courseformat:
- message: Deprecates the move_section_to logic
type: deprecated
@@ -1,5 +0,0 @@
issueNumber: MDL-86862
notes:
core_courseformat:
- message: Deprecates and remove all usages of reorder_sections that is used only internally.
type: deprecated
@@ -1,5 +0,0 @@
issueNumber: MDL-86862
notes:
core_courseformat:
- message: Add sectionactions::move_at to move a section at a given position.
type: improved
@@ -1,5 +0,0 @@
issueNumber: MDL-86862
notes:
core_course:
- message: Add a new invalidation event for course action state so we can purge the courseactionsinstances cache when needed.
type: improved
@@ -1,9 +0,0 @@
issueNumber: MDL-86916
notes:
mod_quiz:
- message: >-
The WebServices mod_quiz_get_user_best_grade and
mod_quiz_get_user_quiz_attempts have been updated to return overall feedback
even when quiz marks are hidden in the review options. This change
aligns the WebService behaviour with Moodle LMS display logic.
type: changed
@@ -1,10 +0,0 @@
issueNumber: MDL-86932
notes:
mod_choice:
- message: >-
mod_choice_get_choice_results web service: new userresponse structure.
The mod_choice_get_choice_results web service now includes a new
userresponse field that returns the current user selections in a
structured format with optionid and text properties. This enhancement
provides better access to user choice data for API consumers.
type: changed
@@ -1,7 +0,0 @@
issueNumber: MDL-86960
notes:
mod_glossary:
- message: >-
Function mod_glossary_rating_can_see_item_ratings is now implemented for
checking permissions to view ratings.
type: improved
@@ -1,10 +0,0 @@
issueNumber: MDL-86997
notes:
core_reportbuilder:
- message: |
The following `user_filter_manager` methods have been deprecated:
* `reset_all()` - to be replaced by new `reset()` method
* `reset_single()`
* `merge()`
type: deprecated
@@ -1,9 +0,0 @@
issueNumber: MDL-87000
notes:
core_reportbuilder:
- message: |
The following enrolment entity formatter methods have been deprecated:
* `enrolment_status()`
* `enrolment_values()`
type: deprecated
@@ -1,7 +0,0 @@
issueNumber: MDL-87003
notes:
tool_mobile:
- message: >-
The WS tool_mobile_get_public_config now returns whether MFA and
reCAPTCHA are enabled for login/recover password.
type: changed
@@ -1,9 +0,0 @@
issueNumber: MDL-87034
notes:
core_webservice:
- message: >-
The WebService core_webservice_get_site_info now returns three new fields:
"usercanviewconfig" indicating whether the current user can see the
administration tree, "usercanchangeconfig" indicating whether the
current user can change the site configuration, and site secret.
type: changed
@@ -1,8 +0,0 @@
issueNumber: MDL-87046
notes:
core:
- message: >-
The namespace for the `\core_shutdown_manager` has been moved to
`\core\shutdown_manager`. The legacy namespace will continue to work for
the moment.
type: improved
@@ -1,8 +0,0 @@
issueNumber: MDL-87059
notes:
core_customfield:
- message: >-
Added new `\core_customfield\api::is_shortname_unique(...)` method to
determine whether a shortname is available for use inside a given
handler
type: improved
@@ -1,5 +0,0 @@
issueNumber: MDL-87066
notes:
core:
- message: Added clean_string() that prevents double escaping in Mustache templates
type: improved
@@ -1,5 +0,0 @@
issueNumber: MDL-87072
notes:
core:
- message: Removed $CFG->wwwrootendsinpublic flag to force users to configure their server accordingly.
type: removed
@@ -1,5 +0,0 @@
issueNumber: MDL-87079
notes:
core:
- message: When responding to pcntl signals, call existing signal handlers.
type: fixed
@@ -1,7 +0,0 @@
issueNumber: MDL-87100
notes:
core:
- message: >-
When creating upgrade notes, the issue number will be inferred from the
current Git branch name by default
type: improved
@@ -1,5 +0,0 @@
issueNumber: MDL-87107
notes:
core:
- message: The Hook Manager now uses localcache instead of caching via MUC.
type: changed
@@ -1,16 +0,0 @@
issueNumber: MDL-87107
notes:
core:
- message: >
The `upgrade_ensure_not_running()` function has been deprecated and
replaced
with:
- `\core\setup::warn_if_upgrade_is_running()`;
- `\core\setup::ensure_upgrade_is_not_running()`; and
- `\core\setup::is_upgrade_running()`.
type: improved
@@ -1,8 +0,0 @@
issueNumber: MDL-87117
notes:
core_course:
- message: >-
Two optional new strings, `modulename_summary` and `modulename_tip`,
have been added to modules and will be displayed in the activity chooser
interface when defined.
type: improved
@@ -1,7 +0,0 @@
issueNumber: MDL-87158
notes:
tool_xmldb:
- message: >-
Generated `rename_field(...)` upgrade step code now checks for field
existence, to ensure it can be executed multiple times
type: changed
@@ -1,9 +0,0 @@
issueNumber: MDL-87173
notes:
core:
- message: >-
The CLI script used to terminate user sessions (kill_all_sessions.php)
has been improved to make it safer and more flexible.
A new '--run' parameter has been introduced. Without '--run', the script performs a dry run making no changes.
The script now supports targeted session termination using '--for-users' parameter.
type: improved
@@ -1,9 +0,0 @@
issueNumber: MDL-87242
notes:
core_enrol:
- message: >-
The external function core_enrol::get_enrolled_users() now behaves
consistently with the web version; returning the basic user information
even if the current user does not have permission to view the full
details.
type: changed
@@ -1,8 +0,0 @@
issueNumber: MDL-87263
notes:
core_reportbuilder:
- message: >-
The order in which `$entitynames` are passed to the datasource
`add_all_from_entities()` method is now observed, taking precedence over
the order in which they were already added to the report
type: changed

Some files were not shown because too many files have changed in this diff Show More