<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://docs.moodle.org/dev/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Tsala</id>
	<title>MoodleDocs - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://docs.moodle.org/dev/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Tsala"/>
	<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/Special:Contributions/Tsala"/>
	<updated>2026-06-04T07:41:31Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=sandbox&amp;diff=64644</id>
		<title>sandbox</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=sandbox&amp;diff=64644"/>
		<updated>2025-08-25T13:23:44Z</updated>

		<summary type="html">&lt;p&gt;Tsala: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:WillNotMigrate}}&lt;br /&gt;
For playing around in....&lt;br /&gt;
&lt;br /&gt;
Testing math tags...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\int_{-\infty}^\infty \psi^{-x^{tim}}\,dx = \sqrt{hunt^4}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\int_{-\infty}^\infty \psi^{-x^{tim}}\,dx = \sqrt{hunt^3}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
.page-sandbox #siteNotice {&lt;br /&gt;
  display: none;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tsala</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=MediaWiki:Sidebar&amp;diff=64643</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=MediaWiki:Sidebar&amp;diff=64643"/>
		<updated>2025-08-25T13:21:44Z</updated>

		<summary type="html">&lt;p&gt;Tsala: removing 4.4 link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* mainpage | mainpage | fas fa-angle-left&lt;/div&gt;</summary>
		<author><name>Tsala</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Availability_API_for_items_within_a_module&amp;diff=64629</id>
		<title>Availability API for items within a module</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Availability_API_for_items_within_a_module&amp;diff=64629"/>
		<updated>2025-06-18T15:10:50Z</updated>

		<summary type="html">&lt;p&gt;Tsala: removing migrated template as page is linked from https://moodledev.io/docs/5.1/apis/subsystems/availability#using-availability-conditions-in-other-areas&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Moodle 2.7}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
The [[Availability API]] provides availability controls for activity modules (course-modules) and sections. It can also be used, with some limitations, to implement an interface for availability restrictions within a module (if you wanted to add different restrictions to different pages within a Book, for example).&lt;br /&gt;
&lt;br /&gt;
== Limitations ==&lt;br /&gt;
&lt;br /&gt;
The following limitations currently apply:&lt;br /&gt;
&lt;br /&gt;
* The editing interface must be within a Moodle form.&lt;br /&gt;
* You may only have a single &#039;Restrict access&#039; control on a page. (This means that you can&#039;t have a second one on your main module settings form, as that already has one; you would have to put this on a separate form.)&lt;br /&gt;
* The API only works within a course. You can&#039;t use it for system-level items.&lt;br /&gt;
* &#039;&#039;&#039;None of this has been tested for real.&#039;&#039;&#039; The API wasn&#039;t really designed for this so although it seems to work perfectly well, there may be some catch.&lt;br /&gt;
&lt;br /&gt;
== How to implement ==&lt;br /&gt;
&lt;br /&gt;
To implement the API for an item within your module, assuming that item has its own editing form, you need to do the following:&lt;br /&gt;
&lt;br /&gt;
* Editing interface:&lt;br /&gt;
** Add code to the form definition to add the &#039;restrict access&#039; field and JavaScript.&lt;br /&gt;
** Add code to the form validation to check its results.&lt;br /&gt;
** Store the returned &#039;availabiltyconditionsjson&#039; value in a suitable database location when the form is saved, and ensure this value is provided in the normal form data when displaying the form.&lt;br /&gt;
* Back-end class:&lt;br /&gt;
** Implement a new class that extends \core_availability\info with regard to your type of item. &lt;br /&gt;
** This class needs to provide the availability settings value to the parent class, supply a name for debugging purposes, have a mechanism to set the value in the database, and return a Moodle context relating to the item.&lt;br /&gt;
* Implement backup and restore:&lt;br /&gt;
** Include the availabilityconditionsjson value in backup and restore as usual.&lt;br /&gt;
** After restore completes (NOT during restore of your individual module - must be after all modules were restored), create an instance of your class and call the update_after_restore function.&lt;br /&gt;
* Check availability:&lt;br /&gt;
** Check Moodle capabilities that may mean the current user bypasses the restrictions.&lt;br /&gt;
** Construct an object of your class and call the is_available function.&lt;br /&gt;
** Use the returned data to control whether your item displays (or whether we show information about when it will be available, or whether we don&#039;t show anything at all).&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
This example is a complete script, demonstrating everything except backup/restore. If you save it as silly.php within mod/page, and then call it as silly.php?id=1234 where 1234 is a valid page id, you&#039;ll be able to set an availability condition with the form and see the result.&lt;br /&gt;
&lt;br /&gt;
Note: For real use you would probably create several suitably namespaced classes, rather than slinging everything into one script. The single script here is just an example.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
require(__DIR__ . &#039;/../../config.php&#039;);&lt;br /&gt;
require_once($CFG-&amp;gt;libdir . &#039;/formslib.php&#039;);&lt;br /&gt;
&lt;br /&gt;
// Standard Moodle setup for module access.&lt;br /&gt;
$id = required_param(&#039;id&#039;, PARAM_INT);&lt;br /&gt;
$course = $DB-&amp;gt;get_record_sql(&amp;quot;&lt;br /&gt;
        SELECT c.*&lt;br /&gt;
          FROM {course_modules} cm&lt;br /&gt;
          JOIN {course} c ON c.id = cm.course&lt;br /&gt;
         WHERE cm.id = ?&amp;quot;, array($id), MUST_EXIST);&lt;br /&gt;
$modinfo = get_fast_modinfo($course);&lt;br /&gt;
$cm = $modinfo-&amp;gt;get_cm($id);&lt;br /&gt;
require_login($course, true, $cm);&lt;br /&gt;
&lt;br /&gt;
// Set up page stuff.&lt;br /&gt;
$pageurl = new moodle_url(&#039;/mod/page/silly.php&#039;, array(&#039;id&#039; =&amp;gt; $id));&lt;br /&gt;
$PAGE-&amp;gt;set_url($pageurl);&lt;br /&gt;
$PAGE-&amp;gt;set_context(context_module::instance($id));&lt;br /&gt;
&lt;br /&gt;
// Define a form that includes availability settings.&lt;br /&gt;
class mod_mymodule_silly_form extends moodleform {&lt;br /&gt;
    public function definition() {&lt;br /&gt;
        global $COURSE;&lt;br /&gt;
&lt;br /&gt;
        $mform = $this-&amp;gt;_form;&lt;br /&gt;
        $cm = $this-&amp;gt;_customdata-&amp;gt;cm;&lt;br /&gt;
        $mform-&amp;gt;addElement(&#039;hidden&#039;, &#039;id&#039;, $cm-&amp;gt;id);&lt;br /&gt;
        $mform-&amp;gt;setType(&#039;id&#039;, PARAM_INT);&lt;br /&gt;
&lt;br /&gt;
        // Use this code to add the &#039;Restrict access&#039; section.&lt;br /&gt;
        // NOTE: Due to limitations in the JavaScript and CSS, you may only&lt;br /&gt;
        // have one of these fields on a page! Sorry.&lt;br /&gt;
        $mform-&amp;gt;addElement(&#039;header&#039;, &#039;availabilityconditionsheader&#039;,&lt;br /&gt;
                get_string(&#039;restrictaccess&#039;, &#039;availability&#039;));&lt;br /&gt;
        $mform-&amp;gt;addElement(&#039;textarea&#039;, &#039;availabilityconditionsjson&#039;,&lt;br /&gt;
                get_string(&#039;accessrestrictions&#039;, &#039;availability&#039;));&lt;br /&gt;
        \core_availability\frontend::include_all_javascript($COURSE, $cm);&lt;br /&gt;
&lt;br /&gt;
        $this-&amp;gt;add_action_buttons(false);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public function validation($data, $files) {&lt;br /&gt;
        $errors = array();&lt;br /&gt;
&lt;br /&gt;
        // Use this code to validate the &#039;Restrict access&#039; section.&lt;br /&gt;
        \core_availability\frontend::report_validation_errors($data, $errors);&lt;br /&gt;
&lt;br /&gt;
        return $errors;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Custom availability class. You need one of these for each type of items that&lt;br /&gt;
// can have availability, so there&#039;s one in core for modules and one for&lt;br /&gt;
// sections, and you make a new one if you put availability on anything else.&lt;br /&gt;
class mod_mymodule_availability_info extends \core_availability\info {&lt;br /&gt;
    protected $cm;&lt;br /&gt;
&lt;br /&gt;
    // You would probably define more suitable parameters here about the&lt;br /&gt;
    // specific thing you&#039;re controlling availability for.&lt;br /&gt;
    public function __construct(\cm_info $cm, $availability) {&lt;br /&gt;
        // You should probably set the $visible parameter to &#039;true&#039; unless&lt;br /&gt;
        // you want to implement a separate eye icon for your thingy.&lt;br /&gt;
        parent::__construct($cm-&amp;gt;get_course(), true, $availability);&lt;br /&gt;
        $this-&amp;gt;cm = $cm;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    protected function get_thing_name() {&lt;br /&gt;
        // This may be used in error messages etc. You would probably use&lt;br /&gt;
        // the name of the thing you&#039;re controlling availability for.&lt;br /&gt;
        return &#039;Special thing within module&#039;;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    protected function set_in_database($availability) {&lt;br /&gt;
        // This function should save the availability settings back to database.&lt;br /&gt;
        // It&#039;s needed if doing an update after restore, so you do need to&lt;br /&gt;
        // implement it.&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public function get_context() {&lt;br /&gt;
        return \context_module::instance($this-&amp;gt;cm-&amp;gt;id);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // I didn&#039;t bother to implement filter_user_list, so it&#039;s using the default&lt;br /&gt;
    // which considers only this condition. You might want to make a&lt;br /&gt;
    // filter_user_list that takes into account the course-module&#039;s permissions&lt;br /&gt;
    // too (like how the info_module class includes the section), if you expect&lt;br /&gt;
    // to actually use the &#039;list users who can access this&#039; APIs.&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$mform = new mod_mymodule_silly_form(&#039;silly.php&#039;, (object)array(&#039;cm&#039; =&amp;gt; $cm));&lt;br /&gt;
if ($data = $mform-&amp;gt;get_data()) {&lt;br /&gt;
    // Because this is a silly test, we&#039;re not going to store the availability&lt;br /&gt;
    // settings in the database, instead we put it in user session.&lt;br /&gt;
    $SESSION-&amp;gt;mod_mymodule_silly_availability = $data-&amp;gt;availabilityconditionsjson;&lt;br /&gt;
    redirect($pageurl);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
echo $OUTPUT-&amp;gt;header();&lt;br /&gt;
&lt;br /&gt;
// If there is some availability data...&lt;br /&gt;
if (isset($SESSION-&amp;gt;mod_mymodule_silly_availability)) {&lt;br /&gt;
    // Set form data.&lt;br /&gt;
    $mform-&amp;gt;set_data(array(&#039;availabilityconditionsjson&#039; =&amp;gt; $SESSION-&amp;gt;mod_mymodule_silly_availability));&lt;br /&gt;
    &lt;br /&gt;
    // Check availability. Note that this does NOT take into account any&lt;br /&gt;
    // capabilities the user might have - you probably want to check for&lt;br /&gt;
    // viewhiddenactivities capability and skip availability checks in that&lt;br /&gt;
    // case.&lt;br /&gt;
    $info = new mod_mymodule_availability_info($cm, $SESSION-&amp;gt;mod_mymodule_silly_availability);&lt;br /&gt;
    $information = &#039;&#039;;&lt;br /&gt;
    $available = $info-&amp;gt;is_available($information);&lt;br /&gt;
&lt;br /&gt;
    // Because this is a test page, we&#039;ll just display whether it&#039;s available or&lt;br /&gt;
    // not, and the message(s) if it isn&#039;t.&lt;br /&gt;
    echo html_writer::start_tag(&#039;ul&#039;);&lt;br /&gt;
    echo html_writer::tag(&#039;li&#039;, $available ? &#039;This page IS available to you&#039; :&lt;br /&gt;
            &#039;This page IS NOT available to you&#039;);&lt;br /&gt;
    if (!$available) {&lt;br /&gt;
        echo html_writer::tag(&#039;li&#039;, $information === &#039;&#039; ?&lt;br /&gt;
                &#039;No information displayed (hide entirely)&#039; :&lt;br /&gt;
                &#039;Information displayed (show info)&#039;);&lt;br /&gt;
    }&lt;br /&gt;
    echo html_writer::end_tag(&#039;ul&#039;);&lt;br /&gt;
    if (!$available) {&lt;br /&gt;
        echo html_writer::start_div();&lt;br /&gt;
        echo $information;&lt;br /&gt;
        echo html_writer::end_div();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$mform-&amp;gt;display();&lt;br /&gt;
echo $OUTPUT-&amp;gt;footer();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tsala</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Main_Page&amp;diff=64595</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Main_Page&amp;diff=64595"/>
		<updated>2025-03-12T15:29:19Z</updated>

		<summary type="html">&lt;p&gt;Tsala: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#addbodyclass:moodledocs-mainpage}}&lt;br /&gt;
{{#addbodyclass:moodledocs-logo}}&lt;br /&gt;
&amp;lt;div class=&amp;quot;navtrail&amp;quot;&amp;gt;[https://docs.moodle.org/overview/ Docs overview] ► [[{{PAGENAME}}|Dev docs]]&amp;lt;/div&amp;gt;&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&#039;&#039;&#039;Welcome to our old Developer Documentation.&#039;&#039;&#039; This site has been replaced by the [https://moodledev.io Moodle Developer Resource] site. &lt;br /&gt;
&lt;br /&gt;
If you manage a Moodle site, or if you teach using Moodle, try the [[:en:Main_page|User documentation]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;card-deck&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;card&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;card-body&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h4 class=&amp;quot;card-title&amp;quot;&amp;gt;[[Overview]]&amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;card-text&amp;quot;&amp;gt;&lt;br /&gt;
* [[Mission]]&lt;br /&gt;
* [[Roadmap]]&lt;br /&gt;
* [[Releases]]&lt;br /&gt;
* [[Process|Development processes]]&lt;br /&gt;
* [[:Category:Processes]]&lt;br /&gt;
* [[Developer meetings]]&lt;br /&gt;
* [https://moodle.org/mod/forum/view.php?id=55 General developer forum]&lt;br /&gt;
* [https://docs.moodle.org/dev/Chat Telegram Moodle Dev Chat room]&lt;br /&gt;
* [http://moodle.org/dev Developer credits/statistics]&lt;br /&gt;
* [https://moodle.org/ux Moodle User Experience (UX)]&lt;br /&gt;
* [[Moodle_research|Research]]&lt;br /&gt;
* [[Testing]]&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;card-footer&amp;quot;&amp;gt;&lt;br /&gt;
: [[Overview|More overview info &amp;lt;i class=&amp;quot;fa fa-sm fa-arrow-right&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;card&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;card-body&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h4 class=&amp;quot;card-title&amp;quot;&amp;gt;[[Plugins|Plugin development]]&amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;card-text&amp;quot;&amp;gt;&lt;br /&gt;
* [[Activity modules]]&lt;br /&gt;
* [[Blocks]]&lt;br /&gt;
* [[Themes]]&lt;br /&gt;
* [[Course formats]]&lt;br /&gt;
* [[Enrolment plugins]]&lt;br /&gt;
* [[Authentication plugins]]&lt;br /&gt;
* [[Repository plugins]]&lt;br /&gt;
* [[Filters]]&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;card-footer&amp;quot;&amp;gt;&lt;br /&gt;
: [[Plugins|Full list of plugin types &amp;lt;i class=&amp;quot;fa fa-sm fa-arrow-right&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;card&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;card-body&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h4 class=&amp;quot;card-title&amp;quot;&amp;gt;[[Core APIs]]&amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;card-text&amp;quot;&amp;gt;&lt;br /&gt;
* [[Access API]]&lt;br /&gt;
* [[Data manipulation API]]&lt;br /&gt;
* [[Exporter|Exporter API]]&lt;br /&gt;
* [[File API]]&lt;br /&gt;
* [[Form API]]&lt;br /&gt;
* [[Migrating logging calls in plugins|Logging]]&lt;br /&gt;
* [[Navigation API]]&lt;br /&gt;
* [[Page API]]&lt;br /&gt;
* [[Persistent|Persistent API]]&lt;br /&gt;
* [[Output API]]&lt;br /&gt;
* [[String API]] &lt;br /&gt;
* [[Web service API functions]]&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;card-footer&amp;quot;&amp;gt;&lt;br /&gt;
: [[Core APIs|Full list of core APIs &amp;lt;i class=&amp;quot;fa fa-sm fa-arrow-right&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;card-deck mt-3&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;card&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;card-body&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h4 class=&amp;quot;card-title&amp;quot;&amp;gt;Guidelines&amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;card-text&amp;quot;&amp;gt;&lt;br /&gt;
* [[Moodle 4.0 developer update]]&lt;br /&gt;
* [[Coding|Coding guidelines]]&lt;br /&gt;
* [[Git_for_developers|Git use]]&lt;br /&gt;
* [[Plugin contribution|Contributing plugins]]&lt;br /&gt;
* [[How_to_create_a_patch|Creating patches]]&lt;br /&gt;
* [[PHPUnit|PHPUnit tests]]&lt;br /&gt;
* [[Acceptance testing]]&lt;br /&gt;
* [[Writing_PHPUnit_tests|Writing tests with PHPUnit]]&lt;br /&gt;
* [[Testing_instructions_guide|Writing manual testing instructions for an issue]]&lt;br /&gt;
* [[Aria Guidelines]]&lt;br /&gt;
* [[HTML Guidelines]]&lt;br /&gt;
* [[Automatic class loading]]&lt;br /&gt;
* [[Templates]]&lt;br /&gt;
* [[Javascript Modules]]&lt;br /&gt;
* [[AJAX]]&lt;br /&gt;
* [[Communication Between Components]]&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;card-footer&amp;quot;&amp;gt;&lt;br /&gt;
: [[:Category:Guidelines|More guidelines &amp;lt;i class=&amp;quot;fa fa-sm fa-arrow-right&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;card&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;card-body&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h4 class=&amp;quot;card-title&amp;quot;&amp;gt;[[:Category:Developer tools|Developer tools]]&amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;card-text&amp;quot;&amp;gt;&lt;br /&gt;
* [[Linting]]&lt;br /&gt;
* [[Setting up Eclipse]]&lt;br /&gt;
* [[Setting up Netbeans]]&lt;br /&gt;
* [[:Category:Firefox extensions|Firefox extensions]]&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;card-footer&amp;quot;&amp;gt;&lt;br /&gt;
: [[:Category:Developer tools|Full list of developer tools &amp;lt;i class=&amp;quot;fa fa-sm fa-arrow-right&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;card&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;card-body&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h4 class=&amp;quot;card-title&amp;quot;&amp;gt;[[Moodle App]]&amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;card-text&amp;quot;&amp;gt;&lt;br /&gt;
* [[Moodle App Overview]]&lt;br /&gt;
* [[Moodle App Development Guide]]&lt;br /&gt;
* [[Moodle App Plugins Development Guide]]&lt;br /&gt;
* [[Moodle App Customization]]&lt;br /&gt;
* [[Moodle App FAQ]]&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;card-footer&amp;quot;&amp;gt;&lt;br /&gt;
: [[:Category:Mobile|Full list of Moodle App documentation &amp;lt;i class=&amp;quot;fa fa-sm fa-arrow-right&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tsala</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=MediaWiki:Sitenotice&amp;diff=64594</id>
		<title>MediaWiki:Sitenotice</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=MediaWiki:Sitenotice&amp;diff=64594"/>
		<updated>2025-03-12T15:27:02Z</updated>

		<summary type="html">&lt;p&gt;Tsala: Update - site in read-only mode&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;alert alert-info&amp;quot;&lt;br /&gt;
|style=&amp;quot;padding: 0.7em 0.5em 0.5em;&amp;quot; | &#039;&#039;&#039;Note:&#039;&#039;&#039;&lt;br /&gt;
This site is no longer used and is in read-only mode. Instead please go to our new &#039;&#039;&#039;[https://moodledev.io Moodle Developer Resource]&#039;&#039;&#039; site. &lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Tsala</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Main_Page&amp;diff=64593</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Main_Page&amp;diff=64593"/>
		<updated>2025-03-12T15:25:17Z</updated>

		<summary type="html">&lt;p&gt;Tsala: Update - site in read-only mode&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#addbodyclass:moodledocs-mainpage}}&lt;br /&gt;
{{#addbodyclass:moodledocs-logo}}&lt;br /&gt;
&amp;lt;div class=&amp;quot;navtrail&amp;quot;&amp;gt;[https://docs.moodle.org/overview/ Docs overview] ► [[{{PAGENAME}}|Dev docs]]&amp;lt;/div&amp;gt;&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&#039;&#039;&#039;Welcome to our old Developer Documentation site.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This site is no longer used and is in read-only mode. Instead please go to our new &#039;&#039;&#039;[https://moodledev.io Moodle Developer Resource]&#039;&#039;&#039; site.&lt;br /&gt;
&lt;br /&gt;
If you manage a Moodle site, or if you teach using Moodle, try the [[:en:Main_page|User documentation]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;card-deck&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;card&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;card-body&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h4 class=&amp;quot;card-title&amp;quot;&amp;gt;[[Overview]]&amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;card-text&amp;quot;&amp;gt;&lt;br /&gt;
* [[Mission]]&lt;br /&gt;
* [[Roadmap]]&lt;br /&gt;
* [[Releases]]&lt;br /&gt;
* [[Process|Development processes]]&lt;br /&gt;
* [[:Category:Processes]]&lt;br /&gt;
* [[Developer meetings]]&lt;br /&gt;
* [https://moodle.org/mod/forum/view.php?id=55 General developer forum]&lt;br /&gt;
* [https://docs.moodle.org/dev/Chat Telegram Moodle Dev Chat room]&lt;br /&gt;
* [http://moodle.org/dev Developer credits/statistics]&lt;br /&gt;
* [https://moodle.org/ux Moodle User Experience (UX)]&lt;br /&gt;
* [[Moodle_research|Research]]&lt;br /&gt;
* [[Testing]]&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;card-footer&amp;quot;&amp;gt;&lt;br /&gt;
: [[Overview|More overview info &amp;lt;i class=&amp;quot;fa fa-sm fa-arrow-right&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;card&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;card-body&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h4 class=&amp;quot;card-title&amp;quot;&amp;gt;[[Plugins|Plugin development]]&amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;card-text&amp;quot;&amp;gt;&lt;br /&gt;
* [[Activity modules]]&lt;br /&gt;
* [[Blocks]]&lt;br /&gt;
* [[Themes]]&lt;br /&gt;
* [[Course formats]]&lt;br /&gt;
* [[Enrolment plugins]]&lt;br /&gt;
* [[Authentication plugins]]&lt;br /&gt;
* [[Repository plugins]]&lt;br /&gt;
* [[Filters]]&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;card-footer&amp;quot;&amp;gt;&lt;br /&gt;
: [[Plugins|Full list of plugin types &amp;lt;i class=&amp;quot;fa fa-sm fa-arrow-right&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;card&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;card-body&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h4 class=&amp;quot;card-title&amp;quot;&amp;gt;[[Core APIs]]&amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;card-text&amp;quot;&amp;gt;&lt;br /&gt;
* [[Access API]]&lt;br /&gt;
* [[Data manipulation API]]&lt;br /&gt;
* [[Exporter|Exporter API]]&lt;br /&gt;
* [[File API]]&lt;br /&gt;
* [[Form API]]&lt;br /&gt;
* [[Migrating logging calls in plugins|Logging]]&lt;br /&gt;
* [[Navigation API]]&lt;br /&gt;
* [[Page API]]&lt;br /&gt;
* [[Persistent|Persistent API]]&lt;br /&gt;
* [[Output API]]&lt;br /&gt;
* [[String API]] &lt;br /&gt;
* [[Web service API functions]]&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;card-footer&amp;quot;&amp;gt;&lt;br /&gt;
: [[Core APIs|Full list of core APIs &amp;lt;i class=&amp;quot;fa fa-sm fa-arrow-right&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;card-deck mt-3&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;card&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;card-body&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h4 class=&amp;quot;card-title&amp;quot;&amp;gt;Guidelines&amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;card-text&amp;quot;&amp;gt;&lt;br /&gt;
* [[Moodle 4.0 developer update]]&lt;br /&gt;
* [[Coding|Coding guidelines]]&lt;br /&gt;
* [[Git_for_developers|Git use]]&lt;br /&gt;
* [[Plugin contribution|Contributing plugins]]&lt;br /&gt;
* [[How_to_create_a_patch|Creating patches]]&lt;br /&gt;
* [[PHPUnit|PHPUnit tests]]&lt;br /&gt;
* [[Acceptance testing]]&lt;br /&gt;
* [[Writing_PHPUnit_tests|Writing tests with PHPUnit]]&lt;br /&gt;
* [[Testing_instructions_guide|Writing manual testing instructions for an issue]]&lt;br /&gt;
* [[Aria Guidelines]]&lt;br /&gt;
* [[HTML Guidelines]]&lt;br /&gt;
* [[Automatic class loading]]&lt;br /&gt;
* [[Templates]]&lt;br /&gt;
* [[Javascript Modules]]&lt;br /&gt;
* [[AJAX]]&lt;br /&gt;
* [[Communication Between Components]]&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;card-footer&amp;quot;&amp;gt;&lt;br /&gt;
: [[:Category:Guidelines|More guidelines &amp;lt;i class=&amp;quot;fa fa-sm fa-arrow-right&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;card&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;card-body&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h4 class=&amp;quot;card-title&amp;quot;&amp;gt;[[:Category:Developer tools|Developer tools]]&amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;card-text&amp;quot;&amp;gt;&lt;br /&gt;
* [[Linting]]&lt;br /&gt;
* [[Setting up Eclipse]]&lt;br /&gt;
* [[Setting up Netbeans]]&lt;br /&gt;
* [[:Category:Firefox extensions|Firefox extensions]]&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;card-footer&amp;quot;&amp;gt;&lt;br /&gt;
: [[:Category:Developer tools|Full list of developer tools &amp;lt;i class=&amp;quot;fa fa-sm fa-arrow-right&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;card&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;card-body&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h4 class=&amp;quot;card-title&amp;quot;&amp;gt;[[Moodle App]]&amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;card-text&amp;quot;&amp;gt;&lt;br /&gt;
* [[Moodle App Overview]]&lt;br /&gt;
* [[Moodle App Development Guide]]&lt;br /&gt;
* [[Moodle App Plugins Development Guide]]&lt;br /&gt;
* [[Moodle App Customization]]&lt;br /&gt;
* [[Moodle App FAQ]]&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;card-footer&amp;quot;&amp;gt;&lt;br /&gt;
: [[:Category:Mobile|Full list of Moodle App documentation &amp;lt;i class=&amp;quot;fa fa-sm fa-arrow-right&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tsala</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=XMLDB_Documentation&amp;diff=64309</id>
		<title>XMLDB Documentation</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=XMLDB_Documentation&amp;diff=64309"/>
		<updated>2024-12-13T13:26:51Z</updated>

		<summary type="html">&lt;p&gt;Tsala: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&lt;br /&gt;
XMLDB is Moodle&#039;s database abstraction layer -- it is the library of code that lets Moodle interact with and access the database.&lt;br /&gt;
&lt;br /&gt;
In this page you will find links to all the XMLDB-related documentation.&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
* [[XMLDB introduction|Introduction]]: Where the general idea of XMLDB is explained.&lt;br /&gt;
* [[XMLDB roadmap|Roadmap]]: An overall view of the process of implementing the XMLDB subsystem, with details for each point of the process.&lt;br /&gt;
* [[XMLDB problems|Problems]]: A comprehensive list of issues that need to be determined/solved prior to incorporate them into the [[XMLDB roadmap|roadmap]].&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
&lt;br /&gt;
* [[:en:Installing MSSQL for PHP|Installing MSSQL for PHP]]: One short manual about the steps needed to successfully add MSSQL support to PHP.&lt;br /&gt;
* [[:en:Installing Moodle|Installing Moodle]]: The guide to install Moodle (once you have the [[:en:Installing AMP|AMP platform]] working on your server).&lt;br /&gt;
&lt;br /&gt;
=== Developing ===&lt;br /&gt;
&lt;br /&gt;
* [[DDL functions|DDL functions]]: One list of the new XMLDB Data Definition functions and their usage.&lt;br /&gt;
* [[DML functions|DML functions]]: One list of the available Data Manipulation functions and their usage.&lt;br /&gt;
* [[XMLDB defining an XML structure|XMLDB Usage]]: Explanation about the XML schema basis, the [[XMLDB defining an XML structure#The XMLDB editor|XML editor]] embedded within Moodle, its [[XMLDB defining an XML structure#Conventions|naming conventions]] and one simple but illustrative [[XMLDB defining an XML structure#One example: the assignment module|example]].&lt;br /&gt;
* [[Installing and upgrading plugin database tables]]&lt;br /&gt;
* [[Coding|Coding guidelines]]: The main coding guidelines and, more exactly, the [[Database|database structures section]] that you must follow carefully in order to produce good cross-db code.&lt;br /&gt;
* [[Database Schema|Database schema]]: Moodle database diagrams in [http://fabforce.net/dbdesigner4/ DBDesigner4] format.&lt;br /&gt;
&lt;br /&gt;
=== Bugs and new features ===&lt;br /&gt;
&lt;br /&gt;
* [http://tracker.moodle.org/secure/IssueNavigator.jspa?reset=true&amp;amp;&amp;amp;type=1&amp;amp;pid=10011&amp;amp;resolution=-1&amp;amp;component=10131&amp;amp;sorter/field=issuekey&amp;amp;sorter/order=DESC XMLDB known bugs]&lt;br /&gt;
* [http://tracker.moodle.org/secure/IssueNavigator.jspa?reset=true&amp;amp;&amp;amp;type=4&amp;amp;type=2&amp;amp;type=3&amp;amp;type=5&amp;amp;pid=10011&amp;amp;resolution=-1&amp;amp;component=10131&amp;amp;sorter/field=issuekey&amp;amp;sorter/order=DESC XMLDB pending improvements and features]&lt;br /&gt;
* [http://moodle.org/mod/forum/view.php?id=55 Developers forum]: For general development discussions.&lt;br /&gt;
&lt;br /&gt;
=== Database engine documentation ===&lt;br /&gt;
&lt;br /&gt;
Here are convenient links to the reference documentation of the various database engines we support, should you need to check that something is supported by all of them:&lt;br /&gt;
&lt;br /&gt;
* [http://www.postgresql.org/docs/8.4/interactive/index.html Postgres]&lt;br /&gt;
* [http://dev.mysql.com/doc/refman/5.0/en/index.html MySQL]&lt;br /&gt;
* [http://msdn.microsoft.com/en-us/library/ms189826.aspx MSSQL]&lt;br /&gt;
&lt;br /&gt;
=== See also ===&lt;br /&gt;
* [[XMLDB column types|DB column types]] - Some links about column types inside every RDBMS and their characteristics.&lt;br /&gt;
* [[XMLDB key and index naming|DB key and index naming]] - Some info about automatic naming of keys/indexes and other objects.&lt;br /&gt;
* [[XMLDB reserved words|DB reserved words]] - A collection of reserver words inside each RDBMS.&lt;br /&gt;
&lt;br /&gt;
[[Category:XMLDB]]&lt;br /&gt;
[[Category:DB]]&lt;br /&gt;
&lt;br /&gt;
[[ja:XMLデータベーススキーマ]]&lt;/div&gt;</summary>
		<author><name>Tsala</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=MediaWiki:Sidebar&amp;diff=64090</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=MediaWiki:Sidebar&amp;diff=64090"/>
		<updated>2024-03-26T10:19:13Z</updated>

		<summary type="html">&lt;p&gt;Tsala: version update&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* mainpage | mainpage | fas fa-angle-left&lt;br /&gt;
* https://docs.moodle.org/404/en | 4.4 user documentation | fas fa-book&lt;br /&gt;
* recentchanges-url | recentchanges | fas fa-history&lt;/div&gt;</summary>
		<author><name>Tsala</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=String_API&amp;diff=64062</id>
		<title>String API</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=String_API&amp;diff=64062"/>
		<updated>2024-01-16T09:08:24Z</updated>

		<summary type="html">&lt;p&gt;Tsala: /* Help strings */ stringname_link update - MDLSITE-7236&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
The String API is how you get language text strings to use in the user interface. It handles internationalisation issues, and will use a number of settings and environment variables to present the best text to every user. Moodle has a mechanism that allows a number of places to be searched (in order) to find language strings. This enables language strings to be packaged with plugins and avoids the step of having to copy the language files over to the language directory when a plugin is installed.&lt;br /&gt;
&lt;br /&gt;
Moodle also provide general string functions like substr, strlen etc. for multibyte safe, string operations. It uses mbstring or iconv for UTF-8 strings and falls back to typo3.&lt;br /&gt;
==Basic concepts==&lt;br /&gt;
When it is required to lookup a string, two basic items of information are required.&lt;br /&gt;
# The component providing the string.&lt;br /&gt;
# The identifier of the string.&lt;br /&gt;
Example: The function call &amp;lt;tt&amp;gt;get_string(&#039;editingquiz&#039;, &#039;mod_quiz&#039;)&amp;lt;/tt&amp;gt; will return &amp;quot;Editing quiz&amp;quot; if the current language is English, or relevant translation of the text. Here the string identifier is &amp;quot;editingquiz&amp;quot; and the string is provided by the &amp;quot;mod_quiz&amp;quot; component (that is the Quiz activity module).&lt;br /&gt;
===Adding language file to plugin===&lt;br /&gt;
Language support for plugin(s) is added by creating a &#039;&#039;&#039;lang/en/&#039;&#039;&#039; subdirectory in the plugin directory and putting the plugin&#039;s English string file there. The name of the string file is supposed to follow the plugin&#039;s [[Frankenstyle|component name]], so that it is something like &amp;lt;tt&amp;gt;plugintype_pluginname.php&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The default &amp;quot;en&amp;quot; language is the [[:en:Language FAQ#Which_is_the_official_language_for_Moodle.3F|Australian English]] which is same as the British English when it comes to spelling and grammar. American English is a separate language pack &amp;quot;en_us&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
There is no need to include languages other than the default English, as almost all approved [https://lang.moodle.org/mod/forum/discuss.php?d=2485 plugin strings will be automatically imported into AMOS] for translation by the language packs translators.&lt;br /&gt;
===Adding a string to the language file===&lt;br /&gt;
Strings are defined via the associative array &amp;lt;tt&amp;gt;$string&amp;lt;/tt&amp;gt; provided by the string file. The array key is the string identifier, the value is the string text in the given language.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$string[&#039;editingquiz&#039;] = &#039;Editing quiz&#039;;&lt;br /&gt;
$string[&#039;editingquiz_help&#039;] = &#039;Help for editing quiz&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
===Run-time parameters===&lt;br /&gt;
Strings can define placeholders like &amp;lt;tt&amp;gt;{$a}&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;{$a-&amp;gt;foobar}&amp;lt;/tt&amp;gt;. These placeholders are replaced with a value passed to the &amp;lt;tt&amp;gt;get_string()&amp;lt;/tt&amp;gt; function call.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Strings defined in the language file.&lt;br /&gt;
$string[&#039;greeting&#039;] = &#039;Dear {$a}&#039;;&lt;br /&gt;
$string[&#039;info&#039;] = &#039;There are {$a-&amp;gt;count} new messages from {$a-&amp;gt;from}.&#039;;&lt;br /&gt;
&lt;br /&gt;
// Passing values for the placeholders.&lt;br /&gt;
echo get_string(&#039;greeting&#039;, &#039;tool_example&#039;, &#039;Mr. Anderson&#039;);&lt;br /&gt;
echo get_string(&#039;info&#039;, &#039;tool_example&#039;, [&#039;count&#039; =&amp;gt; 42, &#039;from&#039; =&amp;gt; &#039;Mr. Smith&#039;]);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
== Help strings ==&lt;br /&gt;
Help strings are texts that are displayed in the help tooltips. There are certain conventions on how to define them.&lt;br /&gt;
[[Image:Roles help popup.png|thumb|Help popup containing &amp;quot;More help&amp;quot; link]] Help strings names start with the string name of the setting to which they apply, so that they are kept together in the language file.&lt;br /&gt;
* &#039;&#039;stringname&#039;&#039; - identifier of the string we provide the help for, may be used as a title of the help popup&lt;br /&gt;
* &#039;&#039;stringname_help&#039;&#039; - string with the help text&lt;br /&gt;
* &#039;&#039;stringname_link&#039;&#039; - an optional string naming a path in Moodle Docs, only if required, calculated just like the link in the footer to go to the right language etc, and shown after the help text in the popup as a link with an icon to &amp;quot;More help...&amp;quot;. These strings don&#039;t usually need to be translated. (They were previously hidden in the AMOS UI then unhidden in 2023. See MDLSITE-7236 for details.)&lt;br /&gt;
* &#039;&#039;stringname_desc&#039;&#039; - an admin setting description replacing the legacy &#039;&#039;configstringname&#039;&#039;&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$string[&#039;submissionsize&#039;] = &#039;Submission size&#039;;&lt;br /&gt;
$string[&#039;submissionsize_help&#039;] = &#039;Blah blah blah some useful text, optionally using Markdown syntax&#039;;&lt;br /&gt;
$string[&#039;submissionsize_link&#039;] = &#039;mod/workshop/submission&#039;;&lt;br /&gt;
$string[&#039;submissionsize_desc&#039;] = &#039;Default value for submission size. This value will be pre-filled and can be blah blah ...&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Help string text should be short and simple - two small paragraphs maximum with no headings, no links, no bold, no tables etc.&lt;br /&gt;
&lt;br /&gt;
[[:en:Markdown|Markdown]] can be used for some basic formatting of strings with the &amp;quot;_help&amp;quot; suffix. It is recommended to stick to paragraphs and lists only. Markdown can only be used for help strings, not for other language strings.&lt;br /&gt;
=== More help links ===&lt;br /&gt;
To display the optional &#039;&#039;More help...&#039;&#039; link at the bottom of the help popup, a string with the &amp;quot;_link&amp;quot; suffix must exist beside the relevant &amp;quot;_help&amp;quot; string. These link strings should consist of a short relative path like &#039;component/thing&#039; (eg. &#039;mod/folder/view&#039; or &#039;group/import&#039;). This gets turned into a link to MoodleDocs in the user&#039;s language, and for the appropriate Moodle version.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$string[&#039;groupimport_link&#039;] = &#039;group/import&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
will make a link to something like &amp;lt;nowiki&amp;gt;&#039;https://docs.moodle.org/32/en/group/import&#039;&amp;lt;/nowiki&amp;gt; (if you are an English user of Moodle 3.2). This page in turn should be a redirect page to the actual page providing the info. Note the &amp;lt;nowiki&amp;gt;&#039;https://docs.moodle.org&#039;&amp;lt;/nowiki&amp;gt; part comes from $CFG-&amp;gt;docroot.&lt;br /&gt;
&lt;br /&gt;
The second option is that you can give an absolute link, if you want, and that will be used unmodified.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$string[&#039;patronising_link&#039;] = &amp;lt;nowiki&amp;gt;&#039;http://lmgtfy.com/?q=Moodle+for+dummies&#039;;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
This case is detected by seeing if the string starts with &amp;lt;nowiki&amp;gt;http:// or https://&amp;lt;/nowiki&amp;gt;. This option is useful if the documentation for your plugin is hosted at Github wiki, for example.&lt;br /&gt;
&lt;br /&gt;
The third option is to start the link with &amp;lt;tt&amp;gt;%%WWWROOT%%&amp;lt;/tt&amp;gt;. That is replaced by &amp;lt;tt&amp;gt;$CFG-&amp;gt;wwwroot&amp;lt;/tt&amp;gt;. This is useful for contributed plugins that want to keep the help within the plugin.&lt;br /&gt;
=== Words for roles ===&lt;br /&gt;
The following words should be used in the English (en) help strings whenever it is necessary to refer to people with particular roles in a generic sense.&lt;br /&gt;
* Participants - all people with a role&lt;br /&gt;
* Teachers - people with some sort of a facilitation/editing role&lt;br /&gt;
* Students - people primarily there to learn&lt;br /&gt;
* Users - people across the site&lt;br /&gt;
([[User:Martin Dougiamas|Martin Dougiamas]] 16:13, 20 April 2010 (UTC): I&#039;m not entirely comfortable with this choice even though I just re-confirmed it, as I&#039;d prefer to be using words like facilitator/moderator to subtly and continually promote a less transmissionist pedgagogy and I know many Moodle users would agree. However, I think these terms are far more commonly used in the community and in discussion, and from the point of view that we need to build a consistent system for usability they are less distracting and better for documentation.)&lt;br /&gt;
&lt;br /&gt;
==Files==&lt;br /&gt;
String functions are defined in &lt;br /&gt;
# lib/moodlelib.php - locale related functions&lt;br /&gt;
# lib/textlib.class.php - general string functions (substr, strlen etc.)&lt;br /&gt;
==Functions and examples==&lt;br /&gt;
There are three main functions, used in moodle for getting/displaying the localised string, based on user preferred language.&lt;br /&gt;
===get_string()===&lt;br /&gt;
Returns a localised string for current user.&lt;br /&gt;
&lt;br /&gt;
Example for displaying string &amp;quot;This is my plug-in&amp;quot; in any language that supports on your site, then you need to use the following identifier in language file (located in appropriate lang directory)&lt;br /&gt;
   $string[&#039;plugintitle&#039;] = &#039;This is my plug-in&#039;;&lt;br /&gt;
If you want to display this string in any supported language, then you would use this function.&lt;br /&gt;
   echo get_string(&#039;plugintitle&#039;, &#039;module_pluginlangfilename&#039;);&lt;br /&gt;
If you want to substitute value in the language string then use &#039;&#039;&#039;{$a}&#039;&#039;&#039; for substituting value. $a is an object, string or number that can be used within translation strings. The variable has to be $a, and it has to be in single quotes. For example, if you want to display answer number in Drag &amp;amp; drop plugin then add&lt;br /&gt;
   $string[&#039;answerno1&#039;] = &#039;Answer {$a}&#039;; //Substituting string/integer&lt;br /&gt;
   $string[&#039;answerno2&#039;] = &#039;Answer {$a-&amp;gt;name}&#039;; //Substituting object member&lt;br /&gt;
in qtype_dragdrop.php (Drag &amp;amp; Drop language file). And call it using&lt;br /&gt;
   //Get string by substituting integer. &lt;br /&gt;
   get_string(&#039;answerno1&#039;, &#039;qtype_dragdrop&#039;, $number);&lt;br /&gt;
   //Get string by substituting object member integer&lt;br /&gt;
   $user-&amp;gt;number = 10;&lt;br /&gt;
   get_string(&#039;answerno2&#039;, &#039;qtype_dragdrop&#039;, $user);&lt;br /&gt;
In Moodle 2.3 there is a new argument to this function $lazyload. Setting $lazyload to true causes get_string to return a lang_string object rather than the string itself. &lt;br /&gt;
   $stringobject = get_string(&#039;answerno&#039;, &#039;qtype_dragdrop&#039;, $number, true);&lt;br /&gt;
The fetching of the string is then put off until the string object is first used. The object can be used by calling it&#039;s out method or by casting the object to a string, either directly e.g. &lt;br /&gt;
   (string)$stringobject &lt;br /&gt;
or indirectly by using the string within another string or echoing it out e.g.&lt;br /&gt;
   echo $stringobject;&lt;br /&gt;
return &amp;quot;&amp;lt;p&amp;gt;{$stringobject}&amp;lt;/p&amp;gt;&amp;quot;;&lt;br /&gt;
Note: using $lazyload and attempting to use the string as an array key will cause a fatal error as objects cannot be used as array keys.&lt;br /&gt;
===get_strings()===&lt;br /&gt;
Converts an array of string names to localised strings for a specific plugin. lazy loading is not supported in this function.&lt;br /&gt;
   $txt = get_strings(array(&#039;enable&#039;, &#039;disable&#039;, &#039;up&#039;, &#039;down&#039;, &#039;none&#039;), &#039;qtype_dragdrop&#039;);&lt;br /&gt;
   echo $txt-&amp;gt;up;  //Display localised string for up&lt;br /&gt;
   echo $txt-&amp;gt;down //Display localised string for down&lt;br /&gt;
===print_string()===&lt;br /&gt;
Prints out a translated string by using &#039;&#039;&#039;get_string()&#039;&#039;&#039; function&lt;br /&gt;
===lang_string class===&lt;br /&gt;
In Moodle 2.3 a special class (lang_string) is used to create an object representation of a string request. In this case string processing doesn&#039;t occur until the object is first used. The class was created especially to aid performance in areas where strings were required to be generated but were not necessarily used. As an example the admin navigation tree when generated uses over 1500 strings, of which normally only 1/3 are ever actually printed at any time. The performance advantage is achieved by not actually processing strings that aren&#039;t being used, as such reducing the processing required for the page.&lt;br /&gt;
&lt;br /&gt;
lang_string class can be used in two ways&lt;br /&gt;
# Setting $lazyload (fourth argument of the get_string function), to true.&lt;br /&gt;
   $string = get_string(&#039;yes&#039;, &#039;qtype_dragdrop&#039;, null, true);&lt;br /&gt;
# Direct instantiation&lt;br /&gt;
   $string = new lang_string(&#039;yes&#039;, &#039;qtype_dragdrop&#039;, null, &#039;en&#039;);&lt;br /&gt;
== String manager ==&lt;br /&gt;
Most of function listed above are just handful wrappers for the methods provided by the string manager class. Some strings related functionality is available only via directly calling the manager&#039;s methods.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$stringman = get_string_manager();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
The factory function get_string_manager() returns singleton instance of &amp;lt;tt&amp;gt;core_string_manager_install&amp;lt;/tt&amp;gt; in early stages of the site installation, or instance of &amp;lt;tt&amp;gt;core_string_manager_standard&amp;lt;/tt&amp;gt; in all normal situations. These managers implement interface &amp;lt;tt&amp;gt;core_string_manager&amp;lt;/tt&amp;gt;. Methods provided by the interface are&lt;br /&gt;
;get_string():Returns the given component string localised in the given language. Can be used to obtain the translation of the string in the other language than the current user&#039;s language.&lt;br /&gt;
;string_exists():Does the given string actually exist? This is typically checked by a code like&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
if (get_string_manager()-&amp;gt;string_exists(&#039;stringidentifier&#039;, &#039;component_name&#039;)) {&lt;br /&gt;
    // Do something.&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
;string_deprecated():Has the string been deprecated? See [[String deprecation]] for details.&lt;br /&gt;
;get_list_of_countries():Returns a localised list of all country names, sorted by country keys.&lt;br /&gt;
;get_list_of_languages():Returns a localised list of languages, sorted by code keys.&lt;br /&gt;
;translation_exists():Checks if the translation exists for the given language.&lt;br /&gt;
;get_list_of_translations():Returns localised list of installed language packs.&lt;br /&gt;
;get_list_of_currencies():Returns localised list of known currencies.&lt;br /&gt;
;load_component_strings():Loads all strings for one component.&lt;br /&gt;
;reset_caches():Invalidates all caches, should the manager use some.&lt;br /&gt;
;get_revision():Returns string revision counter.&lt;br /&gt;
=== Custom string managers ===&lt;br /&gt;
{{Moodle 2.9}}Plugins can provide custom implementation of the string manager. This is supposed to be used in experimental and/or development scenarios only, not in typical production environment. See MDL-49361 for use cases and implementation details. An example of such an implementation can be found at [https://github.com/mudrd8mz/moodle-local_stringman moodle-local_stringman.git] repository.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Custom string manager class can be defined in the main config.php file.&lt;br /&gt;
$CFG-&amp;gt;customstringmanager = &#039;\local_stringman\dummy_string_manager&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==textlib (core_text) class==&lt;br /&gt;
textlib class provide pool of safe functions to operate on UTF-8 text. textlib provide set of static functions to operate on strings and gets included in setup.php&lt;br /&gt;
&lt;br /&gt;
{{Moodle 2.6}}In Moodle 2.6 the textlib class was renamed to &#039;&#039;&#039;core_text&#039;&#039;&#039;.&lt;br /&gt;
===asort()===&lt;br /&gt;
Locale aware sorting, the key associations are kept, values are sorted alphabetically.&lt;br /&gt;
===code2utf8===&lt;br /&gt;
Returns the utf8 string corresponding to the unicode value&lt;br /&gt;
===convert===&lt;br /&gt;
Converts the text between different encodings. It uses iconv extension with //TRANSLIT parameter, fall back to typo3&lt;br /&gt;
===encode_mimeheader===&lt;br /&gt;
Generate a correct base64 encoded header to be used in MIME mail messages.&lt;br /&gt;
===entities_to_utf8===&lt;br /&gt;
Converts all the numeric entities &amp;amp;#nnnn; or &amp;amp;#xnnn; to UTF-8&lt;br /&gt;
===specialtoascii===&lt;br /&gt;
Converts upper unicode characters to plain ascii, the returned string may contain unconverted unicode characters.&lt;br /&gt;
===strlen===&lt;br /&gt;
Multibyte safe strlen() function, uses iconv for utf-8, falls back to typo3.&lt;br /&gt;
===strpos===&lt;br /&gt;
Find the position of the first occurrence of a substring in a string. UTF-8 ONLY safe strpos(), uses iconv.&lt;br /&gt;
===strrpos===&lt;br /&gt;
Find the position of the last occurrence of a substring in a string. UTF-8 ONLY safe strrpos(), uses iconv.&lt;br /&gt;
===strtolower===&lt;br /&gt;
Multibyte safe strtolower() function, uses mbstring, falls back to typo3.&lt;br /&gt;
===strtotitle===&lt;br /&gt;
Makes first letter of each word capital - words must be separated by spaces.&lt;br /&gt;
===strtoupper===&lt;br /&gt;
Multibyte safe strtoupper() function, uses mbstring, falls back to typo3.&lt;br /&gt;
===substr===&lt;br /&gt;
Multibyte safe substr() function, uses iconv for utf-8, falls back to typo3.&lt;br /&gt;
===trim_utf8_bom===&lt;br /&gt;
Removes the BOM from unicode string. [http://unicode.org/faq/utf_bom.html more info]&lt;br /&gt;
===utf8_to_entities===&lt;br /&gt;
Converts all Unicode chars &amp;gt; 127 to numeric entities &amp;amp;#nnnn; or &amp;amp;#xnnn;&lt;br /&gt;
==FAQ==&lt;br /&gt;
===When should I use a lang_string object?===&lt;br /&gt;
The lang_string object is designed to be used in any situation where a string may not be needed, but needs to be generated. The admin navigation tree is a good example of where lang_string objects should be used. A more practical example would be any class that requires strings that may not be printed (after all classes get renderer by renderers and who knows what they will do ;))&lt;br /&gt;
===When should I not use a lang_string object?===&lt;br /&gt;
Don&#039;t use lang_strings when you are going to use a string immediately. There is no need as it will be processed immediately and there will be no advantage, and in fact perhaps a negative hit as a class has to be instantiated for a lang_string object, however get_string won&#039;t require that.&lt;br /&gt;
===Limitation of lang_string===&lt;br /&gt;
lang_string object cannot be used as an array offset. Doing so will result in PHP throwing an error. (You can use it as an object property!)&lt;br /&gt;
===How to compare strings properties in two object===&lt;br /&gt;
collatorlib_property_comparison class can be used to compare properties of two objects&lt;br /&gt;
===Should the colon sign be hard-coded or included in a language string?===&lt;br /&gt;
The colon sign should not be hard-coded because languages may use a different symbol, or have a space before or after the colon sign. Instead, the colon sign may be included in a language string, though please consider first if it is really necessary. A colon sign in a field label is not recommended. (MDL-12192 is for removing existing hard-coded colon signs.)&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Do NOT hard code any punctuation:&lt;br /&gt;
$string[&#039;fieldname&#039;] = &#039;Name&#039;;&lt;br /&gt;
&lt;br /&gt;
echo get_string(&#039;fieldname&#039;, &#039;mod_foobar&#039;) . &#039;: &#039; . $somevalue;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Slightly better with no hard coded colon:&lt;br /&gt;
$string[&#039;fieldname&#039;] = &#039;Name: &#039;;&lt;br /&gt;
&lt;br /&gt;
echo get_string(&#039;fieldname&#039;, &#039;mod_foobar&#039;) . $somevalue;&lt;br /&gt;
&lt;br /&gt;
// Better with no assumed word order:&lt;br /&gt;
$string[&#039;fieldname&#039;] = &#039;Name: {$a-&amp;gt;name}&#039;;&lt;br /&gt;
&lt;br /&gt;
echo get_string(&#039;fieldname&#039;, &#039;mod_foobar&#039;, [&#039;name&#039; =&amp;gt; $somevalue]);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Changing or creating a new lang string?===&lt;br /&gt;
New strings were required in 1.x times when we did not have branches for translations. Since 2.0, for changes in master, structural and/or semantic modification of a string (such as adding or removing {$a} placeholders etc) is acceptable as such strings are highlighted in AMOS as outdated. Of course, if lang pack maintainers do not pay attention to it, mismatch can happen - but this is considered to be the lang pack bug.&lt;br /&gt;
&lt;br /&gt;
When a new string is introduced, the old one should be [[String deprecation | deprecated or removed]] so that unused strings do not accumulate.&lt;br /&gt;
:A) Basically I see it as (for master only issues):&lt;br /&gt;
:&lt;br /&gt;
:# Any change is allowed (semantic or structural). It does not have sense to keep the old string because there won&#039;t be use for it when the new Moodle version is released. So we can forget about the old one 100%. Of course if the string is radically different, then it may have sense to create a new, completely different string (and proceed with next point).&lt;br /&gt;
:# If for any reason we stop using any string (because a feature is out or because we have decided to create a new different string instead of change existing)), then:&lt;br /&gt;
:#* if the old string is really specific (not suitable for reuse) we can safely proceed to delete it,.&lt;br /&gt;
:#* If the string belongs to a plugin, IMO we can also proceed to delete it (reuse of plugin strings should not be allowed).&lt;br /&gt;
:#* But, if the string is generic (may be reused) and it&#039;s not part of a plugin then the string must be deprecated.&lt;br /&gt;
&lt;br /&gt;
:B) And, for issues involving stables, only small semantic changes are allowed. No structural, no deprecation and no deletion. Ever. If still something different must be shown it will be, always, via new string. When applied to master, these changes will also imply the [[String deprecation | standard old string deprecation]]. No CPY instruction will be performed between the old and the new strings (safest, easier, consistent behavior, no matter there are some cases where the instruction may be acceptable. Stop overthinking. Now!).&lt;br /&gt;
===User names placeholders===&lt;br /&gt;
Some strings may contain placeholders to display the user&#039;s name. Common examples include various email templates or welcome messages. Developers may be tempted to use just the user&#039;s firstname in such cases, to make the text feel informal and friendlier:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Do NOT do this.&lt;br /&gt;
$string[&#039;welcome&#039;] = &#039;Hello {$a}! Welcome to the course.&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
But some cultures or institutions may want the full name or last name to be used, rather than the first name. To enable sites to easily customise such strings and have lastname and alternatename placeholders available, the following pattern should be used.&lt;br /&gt;
&lt;br /&gt;
Let the language strings file for the given component define the default display of the name:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$string[&#039;welcome&#039;] = &#039;Hello {$a-&amp;gt;firstname}! Welcome to the course.&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Then in the file making use of the string:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$namefields = [&lt;br /&gt;
    &#039;fullname&#039; =&amp;gt; fullname($USER),&lt;br /&gt;
    &#039;alternativefullname&#039; =&amp;gt; fullname($USER, true),&lt;br /&gt;
];&lt;br /&gt;
&lt;br /&gt;
foreach (\core_user\fields::get_name_fields() as $namefield) {&lt;br /&gt;
    $namefields[$namefield] = $USER-&amp;gt;{$namefield};&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
echo get_string(&#039;welcome&#039;, &#039;xyz_component&#039;, $namefields);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
That way, the string can be locally customised and use any combination of the following placeholders as needed: firstnamephonetic, lastnamephonetic, middlename, alternatename, firstname, lastname, fullname and alternativefullname.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Locally customised variant of the string.&lt;br /&gt;
$string[&#039;welcome&#039;] = &#039;Welcome to the course, {$a-&amp;gt;fullname}&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==See also==&lt;br /&gt;
* [[Output_functions]]&lt;br /&gt;
* [[Core APIs]]&lt;br /&gt;
* [[AMOS]]&lt;br /&gt;
* The section &#039;Language strings&#039; in [[Coding style]]&lt;br /&gt;
* [[String deprecation]]&lt;br /&gt;
* [[Improving English language strings]]&lt;br /&gt;
[[Category:API]]&lt;br /&gt;
[[Category:Language]]&lt;/div&gt;</summary>
		<author><name>Tsala</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=String_API&amp;diff=63876</id>
		<title>String API</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=String_API&amp;diff=63876"/>
		<updated>2023-05-03T05:38:41Z</updated>

		<summary type="html">&lt;p&gt;Tsala: /* Help strings */ _link strings hidden in AMOS (MDLSITE-7236)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
The String API is how you get language text strings to use in the user interface. It handles internationalisation issues, and will use a number of settings and environment variables to present the best text to every user. Moodle has a mechanism that allows a number of places to be searched (in order) to find language strings. This enables language strings to be packaged with plugins and avoids the step of having to copy the language files over to the language directory when a plugin is installed.&lt;br /&gt;
&lt;br /&gt;
Moodle also provide general string functions like substr, strlen etc. for multibyte safe, string operations. It uses mbstring or iconv for UTF-8 strings and falls back to typo3.&lt;br /&gt;
==Basic concepts==&lt;br /&gt;
When it is required to lookup a string, two basic items of information are required.&lt;br /&gt;
# The component providing the string.&lt;br /&gt;
# The identifier of the string.&lt;br /&gt;
Example: The function call &amp;lt;tt&amp;gt;get_string(&#039;editingquiz&#039;, &#039;mod_quiz&#039;)&amp;lt;/tt&amp;gt; will return &amp;quot;Editing quiz&amp;quot; if the current language is English, or relevant translation of the text. Here the string identifier is &amp;quot;editingquiz&amp;quot; and the string is provided by the &amp;quot;mod_quiz&amp;quot; component (that is the Quiz activity module).&lt;br /&gt;
===Adding language file to plugin===&lt;br /&gt;
Language support for plugin(s) is added by creating a &#039;&#039;&#039;lang/en/&#039;&#039;&#039; subdirectory in the plugin directory and putting the plugin&#039;s English string file there. The name of the string file is supposed to follow the plugin&#039;s [[Frankenstyle|component name]], so that it is something like &amp;lt;tt&amp;gt;plugintype_pluginname.php&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The default &amp;quot;en&amp;quot; language is the [[:en:Language FAQ#Which_is_the_official_language_for_Moodle.3F|Australian English]] which is same as the British English when it comes to spelling and grammar. American English is a separate language pack &amp;quot;en_us&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
There is no need to include languages other than the default English, as almost all approved [https://lang.moodle.org/mod/forum/discuss.php?d=2485 plugin strings will be automatically imported into AMOS] for translation by the language packs translators.&lt;br /&gt;
===Adding a string to the language file===&lt;br /&gt;
Strings are defined via the associative array &amp;lt;tt&amp;gt;$string&amp;lt;/tt&amp;gt; provided by the string file. The array key is the string identifier, the value is the string text in the given language.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$string[&#039;editingquiz&#039;] = &#039;Editing quiz&#039;;&lt;br /&gt;
$string[&#039;editingquiz_help&#039;] = &#039;Help for editing quiz&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
===Run-time parameters===&lt;br /&gt;
Strings can define placeholders like &amp;lt;tt&amp;gt;{$a}&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;{$a-&amp;gt;foobar}&amp;lt;/tt&amp;gt;. These placeholders are replaced with a value passed to the &amp;lt;tt&amp;gt;get_string()&amp;lt;/tt&amp;gt; function call.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Strings defined in the language file.&lt;br /&gt;
$string[&#039;greeting&#039;] = &#039;Dear {$a}&#039;;&lt;br /&gt;
$string[&#039;info&#039;] = &#039;There are {$a-&amp;gt;count} new messages from {$a-&amp;gt;from}.&#039;;&lt;br /&gt;
&lt;br /&gt;
// Passing values for the placeholders.&lt;br /&gt;
echo get_string(&#039;greeting&#039;, &#039;tool_example&#039;, &#039;Mr. Anderson&#039;);&lt;br /&gt;
echo get_string(&#039;info&#039;, &#039;tool_example&#039;, [&#039;count&#039; =&amp;gt; 42, &#039;from&#039; =&amp;gt; &#039;Mr. Smith&#039;]);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
== Help strings ==&lt;br /&gt;
Help strings are texts that are displayed in the help tooltips. There are certain conventions on how to define them.&lt;br /&gt;
[[Image:Roles help popup.png|thumb|Help popup containing &amp;quot;More help&amp;quot; link]] Help strings names start with the string name of the setting to which they apply, so that they are kept together in the language file.&lt;br /&gt;
* &#039;&#039;stringname&#039;&#039; - identifier of the string we provide the help for, may be used as a title of the help popup&lt;br /&gt;
* &#039;&#039;stringname_help&#039;&#039; - string with the help text&lt;br /&gt;
* &#039;&#039;stringname_link&#039;&#039; - an optional string naming a path in Moodle Docs, only if required, calculated just like the link in the footer to go to the right language etc, and shown after the help text in the popup as a link with an icon to &amp;quot;More help...&amp;quot;. These strings don&#039;t need to be translated, so are hidden in the AMOS UI (with the exception of some TinyMCE strings).&lt;br /&gt;
* &#039;&#039;stringname_desc&#039;&#039; - an admin setting description replacing the legacy &#039;&#039;configstringname&#039;&#039;&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$string[&#039;submissionsize&#039;] = &#039;Submission size&#039;;&lt;br /&gt;
$string[&#039;submissionsize_help&#039;] = &#039;Blah blah blah some useful text, optionally using Markdown syntax&#039;;&lt;br /&gt;
$string[&#039;submissionsize_link&#039;] = &#039;mod/workshop/submission&#039;;&lt;br /&gt;
$string[&#039;submissionsize_desc&#039;] = &#039;Default value for submission size. This value will be pre-filled and can be blah blah ...&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Help string text should be short and simple - two small paragraphs maximum with no headings, no links, no bold, no tables etc.&lt;br /&gt;
&lt;br /&gt;
[[:en:Markdown|Markdown]] can be used for some basic formatting of strings with the &amp;quot;_help&amp;quot; suffix. It is recommended to stick to paragraphs and lists only. Markdown can only be used for help strings, not for other language strings.&lt;br /&gt;
=== More help links ===&lt;br /&gt;
To display the optional &#039;&#039;More help...&#039;&#039; link at the bottom of the help popup, a string with the &amp;quot;_link&amp;quot; suffix must exist beside the relevant &amp;quot;_help&amp;quot; string. These link strings should consist of a short relative path like &#039;component/thing&#039; (eg. &#039;mod/folder/view&#039; or &#039;group/import&#039;). This gets turned into a link to MoodleDocs in the user&#039;s language, and for the appropriate Moodle version.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$string[&#039;groupimport_link&#039;] = &#039;group/import&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
will make a link to something like &amp;lt;nowiki&amp;gt;&#039;https://docs.moodle.org/32/en/group/import&#039;&amp;lt;/nowiki&amp;gt; (if you are an English user of Moodle 3.2). This page in turn should be a redirect page to the actual page providing the info. Note the &amp;lt;nowiki&amp;gt;&#039;https://docs.moodle.org&#039;&amp;lt;/nowiki&amp;gt; part comes from $CFG-&amp;gt;docroot.&lt;br /&gt;
&lt;br /&gt;
The second option is that you can give an absolute link, if you want, and that will be used unmodified.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$string[&#039;patronising_link&#039;] = &amp;lt;nowiki&amp;gt;&#039;http://lmgtfy.com/?q=Moodle+for+dummies&#039;;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
This case is detected by seeing if the string starts with &amp;lt;nowiki&amp;gt;http:// or https://&amp;lt;/nowiki&amp;gt;. This option is useful if the documentation for your plugin is hosted at Github wiki, for example.&lt;br /&gt;
&lt;br /&gt;
The third option is to start the link with &amp;lt;tt&amp;gt;%%WWWROOT%%&amp;lt;/tt&amp;gt;. That is replaced by &amp;lt;tt&amp;gt;$CFG-&amp;gt;wwwroot&amp;lt;/tt&amp;gt;. This is useful for contributed plugins that want to keep the help within the plugin.&lt;br /&gt;
=== Words for roles ===&lt;br /&gt;
The following words should be used in the English (en) help strings whenever it is necessary to refer to people with particular roles in a generic sense.&lt;br /&gt;
* Participants - all people with a role&lt;br /&gt;
* Teachers - people with some sort of a facilitation/editing role&lt;br /&gt;
* Students - people primarily there to learn&lt;br /&gt;
* Users - people across the site&lt;br /&gt;
([[User:Martin Dougiamas|Martin Dougiamas]] 16:13, 20 April 2010 (UTC): I&#039;m not entirely comfortable with this choice even though I just re-confirmed it, as I&#039;d prefer to be using words like facilitator/moderator to subtly and continually promote a less transmissionist pedgagogy and I know many Moodle users would agree. However, I think these terms are far more commonly used in the community and in discussion, and from the point of view that we need to build a consistent system for usability they are less distracting and better for documentation.)&lt;br /&gt;
&lt;br /&gt;
==Files==&lt;br /&gt;
String functions are defined in &lt;br /&gt;
# lib/moodlelib.php - locale related functions&lt;br /&gt;
# lib/textlib.class.php - general string functions (substr, strlen etc.)&lt;br /&gt;
==Functions and examples==&lt;br /&gt;
There are three main functions, used in moodle for getting/displaying the localised string, based on user preferred language.&lt;br /&gt;
===get_string()===&lt;br /&gt;
Returns a localised string for current user.&lt;br /&gt;
&lt;br /&gt;
Example for displaying string &amp;quot;This is my plug-in&amp;quot; in any language that supports on your site, then you need to use the following identifier in language file (located in appropriate lang directory)&lt;br /&gt;
   $string[&#039;plugintitle&#039;] = &#039;This is my plug-in&#039;;&lt;br /&gt;
If you want to display this string in any supported language, then you would use this function.&lt;br /&gt;
   echo get_string(&#039;plugintitle&#039;, &#039;module_pluginlangfilename&#039;);&lt;br /&gt;
If you want to substitute value in the language string then use &#039;&#039;&#039;{$a}&#039;&#039;&#039; for substituting value. $a is an object, string or number that can be used within translation strings. The variable has to be $a, and it has to be in single quotes. For example, if you want to display answer number in Drag &amp;amp; drop plugin then add&lt;br /&gt;
   $string[&#039;answerno1&#039;] = &#039;Answer {$a}&#039;; //Substituting string/integer&lt;br /&gt;
   $string[&#039;answerno2&#039;] = &#039;Answer {$a-&amp;gt;name}&#039;; //Substituting object member&lt;br /&gt;
in qtype_dragdrop.php (Drag &amp;amp; Drop language file). And call it using&lt;br /&gt;
   //Get string by substituting integer. &lt;br /&gt;
   get_string(&#039;answerno1&#039;, &#039;qtype_dragdrop&#039;, $number);&lt;br /&gt;
   //Get string by substituting object member integer&lt;br /&gt;
   $user-&amp;gt;number = 10;&lt;br /&gt;
   get_string(&#039;answerno2&#039;, &#039;qtype_dragdrop&#039;, $user);&lt;br /&gt;
In Moodle 2.3 there is a new argument to this function $lazyload. Setting $lazyload to true causes get_string to return a lang_string object rather than the string itself. &lt;br /&gt;
   $stringobject = get_string(&#039;answerno&#039;, &#039;qtype_dragdrop&#039;, $number, true);&lt;br /&gt;
The fetching of the string is then put off until the string object is first used. The object can be used by calling it&#039;s out method or by casting the object to a string, either directly e.g. &lt;br /&gt;
   (string)$stringobject &lt;br /&gt;
or indirectly by using the string within another string or echoing it out e.g.&lt;br /&gt;
   echo $stringobject;&lt;br /&gt;
return &amp;quot;&amp;lt;p&amp;gt;{$stringobject}&amp;lt;/p&amp;gt;&amp;quot;;&lt;br /&gt;
Note: using $lazyload and attempting to use the string as an array key will cause a fatal error as objects cannot be used as array keys.&lt;br /&gt;
===get_strings()===&lt;br /&gt;
Converts an array of string names to localised strings for a specific plugin. lazy loading is not supported in this function.&lt;br /&gt;
   $txt = get_strings(array(&#039;enable&#039;, &#039;disable&#039;, &#039;up&#039;, &#039;down&#039;, &#039;none&#039;), &#039;qtype_dragdrop&#039;);&lt;br /&gt;
   echo $txt-&amp;gt;up;  //Display localised string for up&lt;br /&gt;
   echo $txt-&amp;gt;down //Display localised string for down&lt;br /&gt;
===print_string()===&lt;br /&gt;
Prints out a translated string by using &#039;&#039;&#039;get_string()&#039;&#039;&#039; function&lt;br /&gt;
===lang_string class===&lt;br /&gt;
In Moodle 2.3 a special class (lang_string) is used to create an object representation of a string request. In this case string processing doesn&#039;t occur until the object is first used. The class was created especially to aid performance in areas where strings were required to be generated but were not necessarily used. As an example the admin navigation tree when generated uses over 1500 strings, of which normally only 1/3 are ever actually printed at any time. The performance advantage is achieved by not actually processing strings that aren&#039;t being used, as such reducing the processing required for the page.&lt;br /&gt;
&lt;br /&gt;
lang_string class can be used in two ways&lt;br /&gt;
# Setting $lazyload (fourth argument of the get_string function), to true.&lt;br /&gt;
   $string = get_string(&#039;yes&#039;, &#039;qtype_dragdrop&#039;, null, true);&lt;br /&gt;
# Direct instantiation&lt;br /&gt;
   $string = new lang_string(&#039;yes&#039;, &#039;qtype_dragdrop&#039;, null, &#039;en&#039;);&lt;br /&gt;
== String manager ==&lt;br /&gt;
Most of function listed above are just handful wrappers for the methods provided by the string manager class. Some strings related functionality is available only via directly calling the manager&#039;s methods.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$stringman = get_string_manager();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
The factory function get_string_manager() returns singleton instance of &amp;lt;tt&amp;gt;core_string_manager_install&amp;lt;/tt&amp;gt; in early stages of the site installation, or instance of &amp;lt;tt&amp;gt;core_string_manager_standard&amp;lt;/tt&amp;gt; in all normal situations. These managers implement interface &amp;lt;tt&amp;gt;core_string_manager&amp;lt;/tt&amp;gt;. Methods provided by the interface are&lt;br /&gt;
;get_string():Returns the given component string localised in the given language. Can be used to obtain the translation of the string in the other language than the current user&#039;s language.&lt;br /&gt;
;string_exists():Does the given string actually exist? This is typically checked by a code like&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
if (get_string_manager()-&amp;gt;string_exists(&#039;stringidentifier&#039;, &#039;component_name&#039;)) {&lt;br /&gt;
    // Do something.&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
;string_deprecated():Has the string been deprecated? See [[String deprecation]] for details.&lt;br /&gt;
;get_list_of_countries():Returns a localised list of all country names, sorted by country keys.&lt;br /&gt;
;get_list_of_languages():Returns a localised list of languages, sorted by code keys.&lt;br /&gt;
;translation_exists():Checks if the translation exists for the given language.&lt;br /&gt;
;get_list_of_translations():Returns localised list of installed language packs.&lt;br /&gt;
;get_list_of_currencies():Returns localised list of known currencies.&lt;br /&gt;
;load_component_strings():Loads all strings for one component.&lt;br /&gt;
;reset_caches():Invalidates all caches, should the manager use some.&lt;br /&gt;
;get_revision():Returns string revision counter.&lt;br /&gt;
=== Custom string managers ===&lt;br /&gt;
{{Moodle 2.9}}Plugins can provide custom implementation of the string manager. This is supposed to be used in experimental and/or development scenarios only, not in typical production environment. See MDL-49361 for use cases and implementation details. An example of such an implementation can be found at [https://github.com/mudrd8mz/moodle-local_stringman moodle-local_stringman.git] repository.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Custom string manager class can be defined in the main config.php file.&lt;br /&gt;
$CFG-&amp;gt;customstringmanager = &#039;\local_stringman\dummy_string_manager&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==textlib (core_text) class==&lt;br /&gt;
textlib class provide pool of safe functions to operate on UTF-8 text. textlib provide set of static functions to operate on strings and gets included in setup.php&lt;br /&gt;
&lt;br /&gt;
{{Moodle 2.6}}In Moodle 2.6 the textlib class was renamed to &#039;&#039;&#039;core_text&#039;&#039;&#039;.&lt;br /&gt;
===asort()===&lt;br /&gt;
Locale aware sorting, the key associations are kept, values are sorted alphabetically.&lt;br /&gt;
===code2utf8===&lt;br /&gt;
Returns the utf8 string corresponding to the unicode value&lt;br /&gt;
===convert===&lt;br /&gt;
Converts the text between different encodings. It uses iconv extension with //TRANSLIT parameter, fall back to typo3&lt;br /&gt;
===encode_mimeheader===&lt;br /&gt;
Generate a correct base64 encoded header to be used in MIME mail messages.&lt;br /&gt;
===entities_to_utf8===&lt;br /&gt;
Converts all the numeric entities &amp;amp;#nnnn; or &amp;amp;#xnnn; to UTF-8&lt;br /&gt;
===specialtoascii===&lt;br /&gt;
Converts upper unicode characters to plain ascii, the returned string may contain unconverted unicode characters.&lt;br /&gt;
===strlen===&lt;br /&gt;
Multibyte safe strlen() function, uses iconv for utf-8, falls back to typo3.&lt;br /&gt;
===strpos===&lt;br /&gt;
Find the position of the first occurrence of a substring in a string. UTF-8 ONLY safe strpos(), uses iconv.&lt;br /&gt;
===strrpos===&lt;br /&gt;
Find the position of the last occurrence of a substring in a string. UTF-8 ONLY safe strrpos(), uses iconv.&lt;br /&gt;
===strtolower===&lt;br /&gt;
Multibyte safe strtolower() function, uses mbstring, falls back to typo3.&lt;br /&gt;
===strtotitle===&lt;br /&gt;
Makes first letter of each word capital - words must be separated by spaces.&lt;br /&gt;
===strtoupper===&lt;br /&gt;
Multibyte safe strtoupper() function, uses mbstring, falls back to typo3.&lt;br /&gt;
===substr===&lt;br /&gt;
Multibyte safe substr() function, uses iconv for utf-8, falls back to typo3.&lt;br /&gt;
===trim_utf8_bom===&lt;br /&gt;
Removes the BOM from unicode string. [http://unicode.org/faq/utf_bom.html more info]&lt;br /&gt;
===utf8_to_entities===&lt;br /&gt;
Converts all Unicode chars &amp;gt; 127 to numeric entities &amp;amp;#nnnn; or &amp;amp;#xnnn;&lt;br /&gt;
==FAQ==&lt;br /&gt;
===When should I use a lang_string object?===&lt;br /&gt;
The lang_string object is designed to be used in any situation where a string may not be needed, but needs to be generated. The admin navigation tree is a good example of where lang_string objects should be used. A more practical example would be any class that requires strings that may not be printed (after all classes get renderer by renderers and who knows what they will do ;))&lt;br /&gt;
===When should I not use a lang_string object?===&lt;br /&gt;
Don&#039;t use lang_strings when you are going to use a string immediately. There is no need as it will be processed immediately and there will be no advantage, and in fact perhaps a negative hit as a class has to be instantiated for a lang_string object, however get_string won&#039;t require that.&lt;br /&gt;
===Limitation of lang_string===&lt;br /&gt;
lang_string object cannot be used as an array offset. Doing so will result in PHP throwing an error. (You can use it as an object property!)&lt;br /&gt;
===How to compare strings properties in two object===&lt;br /&gt;
collatorlib_property_comparison class can be used to compare properties of two objects&lt;br /&gt;
===Should the colon sign be hard-coded or included in a language string?===&lt;br /&gt;
The colon sign should not be hard-coded because languages may use a different symbol, or have a space before or after the colon sign. Instead, the colon sign may be included in a language string, though please consider first if it is really necessary. A colon sign in a field label is not recommended. (MDL-12192 is for removing existing hard-coded colon signs.)&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Do NOT hard code any punctuation:&lt;br /&gt;
$string[&#039;fieldname&#039;] = &#039;Name&#039;;&lt;br /&gt;
&lt;br /&gt;
echo get_string(&#039;fieldname&#039;, &#039;mod_foobar&#039;) . &#039;: &#039; . $somevalue;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Slightly better with no hard coded colon:&lt;br /&gt;
$string[&#039;fieldname&#039;] = &#039;Name: &#039;;&lt;br /&gt;
&lt;br /&gt;
echo get_string(&#039;fieldname&#039;, &#039;mod_foobar&#039;) . $somevalue;&lt;br /&gt;
&lt;br /&gt;
// Better with no assumed word order:&lt;br /&gt;
$string[&#039;fieldname&#039;] = &#039;Name: {$a-&amp;gt;name}&#039;;&lt;br /&gt;
&lt;br /&gt;
echo get_string(&#039;fieldname&#039;, &#039;mod_foobar&#039;, [&#039;name&#039; =&amp;gt; $somevalue]);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Changing or creating a new lang string?===&lt;br /&gt;
New strings were required in 1.x times when we did not have branches for translations. Since 2.0, for changes in master, structural and/or semantic modification of a string (such as adding or removing {$a} placeholders etc) is acceptable as such strings are highlighted in AMOS as outdated. Of course, if lang pack maintainers do not pay attention to it, mismatch can happen - but this is considered to be the lang pack bug.&lt;br /&gt;
&lt;br /&gt;
When a new string is introduced, the old one should be [[String deprecation | deprecated or removed]] so that unused strings do not accumulate.&lt;br /&gt;
:A) Basically I see it as (for master only issues):&lt;br /&gt;
:&lt;br /&gt;
:# Any change is allowed (semantic or structural). It does not have sense to keep the old string because there won&#039;t be use for it when the new Moodle version is released. So we can forget about the old one 100%. Of course if the string is radically different, then it may have sense to create a new, completely different string (and proceed with next point).&lt;br /&gt;
:# If for any reason we stop using any string (because a feature is out or because we have decided to create a new different string instead of change existing)), then:&lt;br /&gt;
:#* if the old string is really specific (not suitable for reuse) we can safely proceed to delete it,.&lt;br /&gt;
:#* If the string belongs to a plugin, IMO we can also proceed to delete it (reuse of plugin strings should not be allowed).&lt;br /&gt;
:#* But, if the string is generic (may be reused) and it&#039;s not part of a plugin then the string must be deprecated.&lt;br /&gt;
&lt;br /&gt;
:B) And, for issues involving stables, only small semantic changes are allowed. No structural, no deprecation and no deletion. Ever. If still something different must be shown it will be, always, via new string. When applied to master, these changes will also imply the [[String deprecation | standard old string deprecation]]. No CPY instruction will be performed between the old and the new strings (safest, easier, consistent behavior, no matter there are some cases where the instruction may be acceptable. Stop overthinking. Now!).&lt;br /&gt;
===User names placeholders===&lt;br /&gt;
Some strings may contain placeholders to display the user&#039;s name. Common examples include various email templates or welcome messages. Developers may be tempted to use just the user&#039;s firstname in such cases, to make the text feel informal and friendlier:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Do NOT do this.&lt;br /&gt;
$string[&#039;welcome&#039;] = &#039;Hello {$a}! Welcome to the course.&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
But some cultures or institutions may want the full name or last name to be used, rather than the first name. To enable sites to easily customise such strings and have lastname and alternatename placeholders available, the following pattern should be used.&lt;br /&gt;
&lt;br /&gt;
Let the language strings file for the given component define the default display of the name:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$string[&#039;welcome&#039;] = &#039;Hello {$a-&amp;gt;firstname}! Welcome to the course.&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Then in the file making use of the string:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$namefields = [&lt;br /&gt;
    &#039;fullname&#039; =&amp;gt; fullname($USER),&lt;br /&gt;
    &#039;alternativefullname&#039; =&amp;gt; fullname($USER, true),&lt;br /&gt;
];&lt;br /&gt;
&lt;br /&gt;
foreach (\core_user\fields::get_name_fields() as $namefield) {&lt;br /&gt;
    $namefields[$namefield] = $USER-&amp;gt;{$namefield};&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
echo get_string(&#039;welcome&#039;, &#039;xyz_component&#039;, $namefields);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
That way, the string can be locally customised and use any combination of the following placeholders as needed: firstnamephonetic, lastnamephonetic, middlename, alternatename, firstname, lastname, fullname and alternativefullname.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Locally customised variant of the string.&lt;br /&gt;
$string[&#039;welcome&#039;] = &#039;Welcome to the course, {$a-&amp;gt;fullname}&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==See also==&lt;br /&gt;
* [[Output_functions]]&lt;br /&gt;
* [[Core APIs]]&lt;br /&gt;
* [[AMOS]]&lt;br /&gt;
* The section &#039;Language strings&#039; in [[Coding style]]&lt;br /&gt;
* [[String deprecation]]&lt;br /&gt;
* [[Improving English language strings]]&lt;br /&gt;
[[Category:API]]&lt;br /&gt;
[[Category:Language]]&lt;/div&gt;</summary>
		<author><name>Tsala</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=XMLDB_Problems&amp;diff=63814</id>
		<title>XMLDB Problems</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=XMLDB_Problems&amp;diff=63814"/>
		<updated>2023-01-25T05:23:26Z</updated>

		<summary type="html">&lt;p&gt;Tsala: link edit&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#redirect [[XMLDB problems]]&lt;/div&gt;</summary>
		<author><name>Tsala</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=XMLDB_Problems&amp;diff=63813</id>
		<title>XMLDB Problems</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=XMLDB_Problems&amp;diff=63813"/>
		<updated>2023-01-25T05:22:58Z</updated>

		<summary type="html">&lt;p&gt;Tsala: restoring redirect&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#redirect [[Development:XMLDB problems]]&lt;/div&gt;</summary>
		<author><name>Tsala</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Themes&amp;diff=63649</id>
		<title>Themes</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Themes&amp;diff=63649"/>
		<updated>2022-10-10T14:00:41Z</updated>

		<summary type="html">&lt;p&gt;Tsala: themes template&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Themes}}&lt;br /&gt;
This page is a starting point for Moodle theme developers.&lt;br /&gt;
&lt;br /&gt;
For documentation on installing and using themes, please see the [[:en:Themes|Themes user documentation]] and [[:en:Themes FAQ|Themes FAQ]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Moodle has a powerful themes system that allows for a variety of effects through the use of HTML and CSS.&lt;br /&gt;
&lt;br /&gt;
* [[Themes overview]]&lt;br /&gt;
* [[Creating a theme based on boost]]&lt;br /&gt;
* [[Creating a theme based on classic]]&lt;br /&gt;
* [[Moving your theme to use boost as a parent theme]]&lt;br /&gt;
* [[Updating a boost based theme]]&lt;br /&gt;
* [[Using images in a theme|Using images]]&lt;br /&gt;
* [[Creating a theme settings page|Theme settings page]]&lt;br /&gt;
* [[Adding theme upgrade code]]&lt;br /&gt;
* [[Extending the theme custom menu|Extending the custom menu]]&lt;br /&gt;
* [[Overriding a renderer]]&lt;br /&gt;
* [[Theme checklist]]&lt;br /&gt;
* [[Templates]]&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
* [[:Category:Themes|List of all themes-related developer documentation]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Themes]]&lt;/div&gt;</summary>
		<author><name>Tsala</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Translation&amp;diff=63609</id>
		<title>Translation</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Translation&amp;diff=63609"/>
		<updated>2022-09-05T11:34:14Z</updated>

		<summary type="html">&lt;p&gt;Tsala: rewording&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is now located in the user docs: [[:en:Translation|Translation]]&lt;/div&gt;</summary>
		<author><name>Tsala</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Translation&amp;diff=63608</id>
		<title>Translation</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Translation&amp;diff=63608"/>
		<updated>2022-09-05T11:19:03Z</updated>

		<summary type="html">&lt;p&gt;Tsala: link fix&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{Note|[[:en:Translation|Translation documentation]] is available in the user documentation.}}&lt;/div&gt;</summary>
		<author><name>Tsala</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Translation&amp;diff=63607</id>
		<title>Translation</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Translation&amp;diff=63607"/>
		<updated>2022-09-05T07:27:47Z</updated>

		<summary type="html">&lt;p&gt;Tsala: link edit&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{Note|[[:Translation|Translation documentation]] is available in the user documentation.}}&lt;/div&gt;</summary>
		<author><name>Tsala</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Translation&amp;diff=63603</id>
		<title>Translation</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Translation&amp;diff=63603"/>
		<updated>2022-09-02T09:59:46Z</updated>

		<summary type="html">&lt;p&gt;Tsala: removing migrated template&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Translation}}&lt;br /&gt;
==So you&#039;d like to help with translating Moodle?==&lt;br /&gt;
&lt;br /&gt;
Great! :-) All translation happens on our &#039;&#039;&#039;[http://lang.moodle.org Moodle translation site]&#039;&#039;&#039;, so you&#039;ll need to start by creating an account there.&lt;br /&gt;
&lt;br /&gt;
Perhaps you&#039;ve found some words or phrases not yet translated into your language? Or you&#039;ve spotted a mistake? If so, please see the guide to [[Contributing a translation]]. &lt;br /&gt;
&lt;br /&gt;
Note: If you&#039;d like to help translate more than just a few strings, please contact the maintainer of your language pack as listed in the [http://lang.moodle.org/local/amos/credits.php Translation credits] and ask where you can help. &lt;br /&gt;
&lt;br /&gt;
==Wish to take on responsibility for a language pack?==&lt;br /&gt;
&lt;br /&gt;
Please see [[Maintaining a language pack]] and the [[AMOS manual]]  for further information about the AMOS translation toolkit.&lt;br /&gt;
&lt;br /&gt;
==Is Moodle not yet translated into your language?==&lt;br /&gt;
&lt;br /&gt;
Please see  [[Starting a new language pack]].&lt;br /&gt;
&lt;br /&gt;
==Any questions?==&lt;br /&gt;
&lt;br /&gt;
Please check the [[Translation  FAQ]] and join us in the [http://lang.moodle.org/mod/forum/view.php?id=5 Using AMOS forum].&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
* [https://download.moodle.org/langpack/3.8/ Language packs for Moodle 3.8] for the percentage of language strings translated in each language pack for the current Moodle branch&lt;br /&gt;
&lt;br /&gt;
[[fr:Traduction]]&lt;br /&gt;
[[de:Übersetzung]]&lt;br /&gt;
[[es:Traducción]]&lt;/div&gt;</summary>
		<author><name>Tsala</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=QA_testing&amp;diff=63554</id>
		<title>QA testing</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=QA_testing&amp;diff=63554"/>
		<updated>2022-07-15T04:44:21Z</updated>

		<summary type="html">&lt;p&gt;Tsala: removing QA testing latest&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Migrated|newDocId=/general/development/process/testing/qa}}&lt;br /&gt;
&#039;&#039;&#039;Quality Assurance&#039;&#039;&#039; tests look at the functionality of Moodle from a user&#039;s point of view. &lt;br /&gt;
&lt;br /&gt;
Real users systematically try each feature in Moodle and test that it works in the current version of the Moodle code. These tests are repeated in series of cycles, around 4 - 6 weeks before a major release, once all major features have landed.&lt;br /&gt;
&lt;br /&gt;
==Getting involved==&lt;br /&gt;
Would you like to help with QA testing? If so, please make sure you have created an account in the [[Tracker_introduction|Moodle tracker]] and you&#039;re subscribed to the [https://moodle.org/mod/forum/view.php?id=56 Testing and QA forum] in order to receive QA testing news updates.&lt;br /&gt;
==Running tests==&lt;br /&gt;
# Go to the [https://tracker.moodle.org/secure/Dashboard.jspa?selectPageId=11454 Moodle QA testing dashboard] and choose a test from the list of current QA cycle open issues. When viewing a test, if you wish, you can click the &#039;Assign to me&#039; link on the right, so that nobody else chooses the same test to run. (If you then find you are unable to run the test, you can click the Assign button and set the assignee as &#039;Unassigned&#039;.) Please note:&lt;br /&gt;
#* Only assign an issue to yourself which no one else is testing (Assignee = Unassigned).&lt;br /&gt;
#* Only assign one issue at a time unless you plan to test a number of related issues within the next 24 hours. In other words, don&#039;t assign several issues to yourself then do nothing for several days. ;-)&lt;br /&gt;
#* The label &#039;&#039;test_server_required&#039;&#039; indicates issues that can&#039;t be tested on the QA testing site. The label &#039;&#039;credentials_required&#039;&#039; indicates that credentials such as an OAuth 2 service client ID and secret are required.&lt;br /&gt;
# Using either the [https://qa.moodledemo.net/ Moodle QA Testing Site] or your own test site running the latest Moodle 4.0dev (available from Git on the integration/master branch &#039;&#039;&amp;lt;nowiki&amp;gt;git://git.moodle.org/integration.git&amp;lt;/nowiki&amp;gt;&#039;&#039;) with [[:en:Debugging|debugging]] set to developer, perform each of the steps listed in the test.&lt;br /&gt;
# &#039;&#039;Please attach screenshots of the steps where you verify or check something.&#039;&#039;&lt;br /&gt;
# If it makes sense, please test using the currently supported themes, Boost and Classic.&lt;br /&gt;
# Choose an appropriate workflow action:&lt;br /&gt;
#* &#039;&#039;Pass&#039;&#039; - Test runs perfectly. Add comment such as feedback about a new feature, browsers used for testing (if applicable; example: &amp;quot;This test passes on Q&amp;amp;A site with Teacher role using Boost theme&amp;quot;), or simply &amp;quot;This test passes - yippee!&amp;quot;&lt;br /&gt;
#* &#039;&#039;Fail&#039;&#039; - Something doesn&#039;t work, or you obtain debugging messages. Add comment describing the step that doesn&#039;t work. If in doubt whether to pass a test, give it a fail and add a comment describing your doubts.&lt;br /&gt;
#* &#039;&#039;Obsolete&#039;&#039; - Test is no longer relevant in the current Moodle version. Add comment explaining why.&lt;br /&gt;
If you notice that the test description is out-of-date, add a comment mentioning that it needs updating. Alternatively, if you&#039;d like to help with updating the test yourself, see below.&lt;br /&gt;
==Any questions?==&lt;br /&gt;
If there is anything you are unsure of, such as whether to mark a test as failed, or you have any other questions, please ask in one of the following places:&lt;br /&gt;
* [https://t.me/moodleqa Moodle QA Telegram chat room] - To join the room for the first time, please use the [https://t.me/+cXneE_ZeZ_A4ODRk Moodle QA Telegram invite link].&lt;br /&gt;
* [https://moodle.org/mod/forum/view.php?id=56 Testing and QA forum]&lt;br /&gt;
==Moodle QA Testing Site==&lt;br /&gt;
The [https://qa.moodledemo.net/ Moodle QA Testing Site] is updated daily at around 13:00 UTC with the latest bug fixes to enable you to re-run QA tests.&lt;br /&gt;
&lt;br /&gt;
To prevent the site being used for sending spam, no emails are sent from it. Thus, tests involving email cannot be run using the Moodle QA Testing Site. (If such tests are attempted, an email debug message is displayed. This is not a bug but rather expected behaviour.)&lt;br /&gt;
&lt;br /&gt;
Teacher and student accounts are provided. If you would like admin access to the Moodle QA Testing Site for running certain tests, please ask in the Moodle QA Telegram chat room or the Testing and QA forum for someone to send you the account credentials via private message.&lt;br /&gt;
==&amp;lt;div id=&amp;quot;failedTests&amp;quot;&amp;gt;Failed tests&amp;lt;/div&amp;gt;==&lt;br /&gt;
So you ran a test and it failed? Congratulations on finding a bug! Please do the following.&lt;br /&gt;
# Click the Fail button at the top of the page.&lt;br /&gt;
# Add a comment to the QA test stating that there was a problem and that you will report it as a Moodle bug.&lt;br /&gt;
# Note the MDLQA number; it will be something like &amp;lt;nowiki&amp;gt;MDLQA-448&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
# Try searching for whether the bug has been reported previously, and if not create a new issue for it (as described in [[Tracker introduction]]).&lt;br /&gt;
# In the new Moodle (MDL) issue select &#039;Link&#039; from the &#039;More actions&#039; dropdown menu. &amp;lt;br /&amp;gt;[[Image:LinkIssue.png|150px|Linking to the QA issue in the tracker]]&lt;br /&gt;
# Link to the QA test by selecting &#039;blocks&#039; as the link type, entering the MDLQA number that you noted earlier, and optionally adding a comment. &amp;lt;br /&amp;gt;[[Image:LinkDetails.png|150px|Adding details for a link to the QA issue]]&lt;br /&gt;
# Give the issue the label &#039;mdlqa&#039;. &lt;br /&gt;
# (Optional) Add yourself as a watcher to the MDL issue so that you receive email notification when the issue is fixed.&lt;br /&gt;
# When the MDL issue is fixed, hopefully within a day or two, the QA test can be reset and can then be run again.&lt;br /&gt;
==Resetting tests==&lt;br /&gt;
&#039;&#039;Note for integrators:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
After integrating a fix, &lt;br /&gt;
# Reset the MDLQA test, adding a comment.&lt;br /&gt;
# Remove the &#039;mdlqa&#039; label from the MDL issue.&lt;br /&gt;
# If the issue doesn&#039;t have testing instructions, pass it with message &amp;quot;Will be tested by MDLQA-XXXX&amp;quot;.&lt;br /&gt;
The tester will then receive email notification that the bug is fixed and will hopefully decide to run the test again soon.&lt;br /&gt;
==Fixing existing bugs==&lt;br /&gt;
At the beginning of the QA cycle, all bugs identified (both new and existing) are investigated promptly and hopefully fixed. &lt;br /&gt;
&lt;br /&gt;
When we are close to the scheduled release date (1-2 weeks prior), developers must focus on fixing new bugs (which affect the upcoming release version) only.&lt;br /&gt;
&lt;br /&gt;
Thus, at this point in the QA cycle, any bugs which also affect existing versions of Moodle are labelled qa_identified (and the label mdlqa removed) for investigation after the release.&lt;br /&gt;
==Testing tips==&lt;br /&gt;
When entering text into a form, try things like:&lt;br /&gt;
* &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&amp;amp;&amp;lt;/syntaxhighlight&amp;gt; (ampersand), &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; (greater than) or &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&amp;lt;&amp;lt;/syntaxhighlight&amp;gt; (less than) e.g. &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;x &amp;lt; 1 &amp;amp;&amp;amp; x &amp;gt; 0&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;0&amp;lt;/syntaxhighlight&amp;gt; (the single digit 0) &lt;br /&gt;
* &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&#039;&amp;lt;/syntaxhighlight&amp;gt; (single quote) e.g. &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;Fergal.O&#039;Brien@example.com&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* special characters e.g. &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;café&amp;lt;/syntaxhighlight&amp;gt; or &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;囲碁&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* very long strings&lt;br /&gt;
* different languages, such as a RTL language&lt;br /&gt;
==New QA tests required==&lt;br /&gt;
&#039;&#039;Note for developers:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If an issue fix cannot be covered by automated tests, &lt;br /&gt;
# Add the label &#039;qa_test_required&#039; to the issue.&lt;br /&gt;
# Add a comment explaining why it can&#039;t be covered by automated tests and suggesting which steps of the testing instructions should be included in a QA test e.g. steps 6-10 or all steps.&lt;br /&gt;
QA tests will then be written and included in the next QA cycle. For issues with long testing instructions, several QA tests will be written to cover the issue. If appropriate, activities etc. will be set up on the [https://qa.moodledemo.net/ Moodle QA Testing Site] to enable the issue to be easily tested in future. &lt;br /&gt;
&lt;br /&gt;
Similarly, for new features and improvements which would benefit from exploratory testing,&lt;br /&gt;
# Add the label &#039;qa_test_required&#039; to the issue.&lt;br /&gt;
# Add a comment mentioning that exploratory testing is required.&lt;br /&gt;
Exploratory QA tests will then be written and included in the next QA cycle and then removed.&lt;br /&gt;
==Updating tests==&lt;br /&gt;
QA tests often become out-of-date due to new developments. If you would like to help with updating tests, you&#039;ll need to be a member of the test writers group in the Tracker. &lt;br /&gt;
&lt;br /&gt;
To update a QA test original:&lt;br /&gt;
# Search for the test in MDLQA-1.&lt;br /&gt;
# Edit the test description.&lt;br /&gt;
If a test in the current QA cycle is marked as failed because it is out-of-date, the description should be updated (as well as the test original) before resetting the test. If the test in the current QA cycle is marked as passed, then only the test original needs to be updated.&lt;br /&gt;
==Writing new tests==&lt;br /&gt;
Would you like to help with writing new QA tests? If so, as for updating tests, you&#039;ll need to be a member of the test writers group in the Tracker.&lt;br /&gt;
&lt;br /&gt;
QA tests are needed for any features which can&#039;t be tested with automated testing, such as connecting to an external system, drag and drop functionality or a CLI script. Also if it requires a person to detect if something is &#039;correct&#039; vs. present/absent on the page.&lt;br /&gt;
&lt;br /&gt;
In addition, new features can benefit from exploratory testing by community volunteers.&lt;br /&gt;
&lt;br /&gt;
To create a new QA test:&lt;br /&gt;
# If appropriate, do a quick search of MDLQA-1 to check if there is an existing test which can be updated.&lt;br /&gt;
# If not, in MDLQA-1 from the More menu select &#039;Create sub-task&#039;.&lt;br /&gt;
# Enter a summary such as &#039;A teacher can ...&#039;.&lt;br /&gt;
# Select &#039;Original&#039; as affected version and select appropriate components.&lt;br /&gt;
# In the description field add the test steps (usually between 3 and 10), similar to the issue&#039;s [[Testing instructions guide|testing instructions]], starting with &#039;Log in as a teacher...&#039; or similar. It&#039;s a good idea to try doing the steps yourself as you write the test.&lt;br /&gt;
# Start some steps with &#039;Verify that ...&#039; or similar.&lt;br /&gt;
# Click the Create button.&lt;br /&gt;
# Go to the MDL issue and create a ‘has a QA test’ link to the new QA test, adding a comment “This feature is now covered by the QA test MDLQA....”. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
* Add the label &#039;&#039;new&#039;&#039;&lt;br /&gt;
* For tests which can’t be run on the QA testing site, such as ones where you need to check an email, label &#039;&#039;test_server_required&#039;&#039;.&lt;br /&gt;
* For OAuth 2 tests and any other tests which require a client ID or secret to be entered, label &#039;&#039;credentials_required&#039;&#039;.&lt;br /&gt;
* For issues which specifically mention in the testing instructions to test in different browsers, use the phrase &amp;quot;Test in as many browsers as possible and mention in a comment which ones you’ve used.&amp;quot;&lt;br /&gt;
* For an exploratory test, begin the test description with &amp;quot;This is an exploratory test of a new feature or improvement, so please feel free to try anything you like and not just the test steps!&amp;quot;&lt;br /&gt;
* For a test requiring admin access which can be run on the QA site, add:&lt;br /&gt;
 This test requires admin access. If you would like to use the [QA testing site|https://qa.moodledemo.net/] for running it, please see the [QA testing guide|https://docs.moodle.org/dev/QA_testing] for details of how to request admin access. Begin just after the hourly reset to give yourself plenty of time to complete the test!&lt;br /&gt;
==Feedback==&lt;br /&gt;
Feedback on all aspects of our QA testing process is welcome. If you have any questions or comments, please post in the [https://moodle.org/mod/forum/view.php?id=56 Testing and QA forum].&lt;br /&gt;
==See also==&lt;br /&gt;
* [https://tracker.moodle.org/secure/Dashboard.jspa?selectPageId=11454 QA testing dashboard]&lt;br /&gt;
* [[Testing credits]]&lt;br /&gt;
* [[MDLQA-features]]&lt;br /&gt;
* [https://moodle.org/mod/forum/discuss.php?d=351302 Useful tips for QA testing]&lt;br /&gt;
Comments on tests from previous QA cycles:&lt;br /&gt;
* [https://tracker.moodle.org/browse/MDLQA-150 Moodle 2.0 QA Cycle 1]&lt;br /&gt;
* [https://tracker.moodle.org/browse/MDLQA-328 Moodle 2.0 QA Cycle 2]&lt;br /&gt;
* [https://tracker.moodle.org/browse/MDLQA-540 Moodle 2.0.2 QA]&lt;br /&gt;
* [https://tracker.moodle.org/browse/MDLQA-944 Moodle 2.1 QA Cycle 1]&lt;br /&gt;
* [https://tracker.moodle.org/browse/MDLQA-1190 Moodle 2.2 QA]&lt;br /&gt;
* [https://tracker.moodle.org/browse/MDLQA-1814 Moodle 2.3 QA]&lt;br /&gt;
* [https://tracker.moodle.org/browse/MDLQA-4602 Moodle 2.4 QA]&lt;br /&gt;
* [https://tracker.moodle.org/browse/MDLQA-5267 Moodle 2.5 QA]&lt;br /&gt;
* [https://tracker.moodle.org/browse/MDLQA-5740 Moodle 2.6 QA]&lt;br /&gt;
* [https://tracker.moodle.org/browse/MDLQA-6693 Moodle 2.7 QA]&lt;br /&gt;
* [https://tracker.moodle.org/browse/MDLQA-7170 Moodle 2.8 QA]&lt;br /&gt;
* [https://tracker.moodle.org/browse/MDLQA-7660 Moodle 2.9 QA]&lt;br /&gt;
* [https://tracker.moodle.org/browse/MDLQA-8205 Moodle 3.0 QA]&lt;br /&gt;
* [https://tracker.moodle.org/browse/MDLQA-9267 Moodle 3.1 QA]&lt;br /&gt;
* [https://tracker.moodle.org/browse/MDLQA-9827 Moodle 3.2 QA]&lt;br /&gt;
* [https://tracker.moodle.org/browse/MDLQA-10403 Moodle 3.3 QA]&lt;br /&gt;
* [https://tracker.moodle.org/browse/MDLQA-10999 Moodle 3.4 QA]&lt;br /&gt;
* [https://tracker.moodle.org/browse/MDLQA-11698 Moodle 3.5 QA]&lt;br /&gt;
* [https://tracker.moodle.org/browse/MDLQA-12282 Moodle 3.6 QA]&lt;br /&gt;
* [https://tracker.moodle.org/browse/MDLQA-12911 Moodle 3.7 QA]&lt;br /&gt;
* [https://tracker.moodle.org/browse/MDLQA-13517 Moodle 3.8 QA]&lt;br /&gt;
* [https://tracker.moodle.org/browse/MDLQA-14131 Moodle 3.9 QA]&lt;br /&gt;
* [https://tracker.moodle.org/browse/MDLQA-14813 Moodle 3.10 QA]&lt;br /&gt;
* [https://tracker.moodle.org/browse/MDLQA-15457 Moodle 3.11 QA]&lt;br /&gt;
* [https://tracker.moodle.org/secure/Dashboard.jspa?selectPageId=11454 Moodle 4.0 QA]&lt;br /&gt;
[[Category:Quality Assurance]]&lt;/div&gt;</summary>
		<author><name>Tsala</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Translation_credits_archive&amp;diff=63156</id>
		<title>Translation credits archive</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Translation_credits_archive&amp;diff=63156"/>
		<updated>2022-05-27T19:47:28Z</updated>

		<summary type="html">&lt;p&gt;Tsala: note&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:WillNotMigrate}}&lt;br /&gt;
&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;Note: This page will not be migrated to new devdocs. Please see &#039;&#039;&#039;[http://lang.moodle.org/local/amos/credits.php Translation credits]&#039;&#039;&#039; for the up-to-date list of language pack maintainers and contributors (Moodle 2.0 onwards).&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you&#039;d like to contact a language pack maintainer, please create an account on the [http://lang.moodle.org Moodle translation site] then click on their name in the [http://lang.moodle.org/local/amos/credits.php Translation credits] and send them a message.&lt;br /&gt;
&lt;br /&gt;
Many language pack maintainers are active in the forums on moodle.org. A translators icon (a book) under a user&#039;s name in forum posts identifies them as a member of the translators group, for example [http://moodle.org/user/index.php?id=5&amp;amp;group=173 Translators in Moodle in English].&lt;br /&gt;
&lt;br /&gt;
==Translation credits since the beginning of the project==&lt;br /&gt;
&lt;br /&gt;
From the very beginning, Moodle was [[Translation|designed to be translated]] into many languages. This page lists translators from the beginning of the project (pre-Moodle 2.0).&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
===Afrikaans===&lt;br /&gt;
* Riaan De Villiers&lt;br /&gt;
&lt;br /&gt;
===Albanian===&lt;br /&gt;
* Bejo Duka &lt;br /&gt;
&lt;br /&gt;
===Arabic===&lt;br /&gt;
* Dr. Ali H. Abureesh &lt;br /&gt;
* (Original translation by Ahmed Nabil)&lt;br /&gt;
&lt;br /&gt;
===Armenian===&lt;br /&gt;
* Lusine Khachatryan &lt;br /&gt;
* Tygran Terteryan &lt;br /&gt;
* Andranik Markosyan &lt;br /&gt;
&lt;br /&gt;
===Asturian===&lt;br /&gt;
* Xosé Nel Caldevilla Vega &lt;br /&gt;
&lt;br /&gt;
===Bangla===&lt;br /&gt;
* Razib Mustafiz &lt;br /&gt;
&lt;br /&gt;
===Basque===&lt;br /&gt;
* Santurtziko Udal Euskaltegia  (CVS)&lt;br /&gt;
* Jose Sanchez &lt;br /&gt;
&lt;br /&gt;
===Belarusian===&lt;br /&gt;
* Maryia Davidouskaia &lt;br /&gt;
&lt;br /&gt;
===Bosnian===&lt;br /&gt;
* Tihomir Veselinovic &lt;br /&gt;
* red_eye&lt;br /&gt;
&lt;br /&gt;
===Bulgarian===&lt;br /&gt;
* Tihomir Veselinovic &lt;br /&gt;
&lt;br /&gt;
===Catalan===&lt;br /&gt;
* Carles Bellver (CVS)&lt;br /&gt;
* cent&lt;br /&gt;
* Joan Queralt&lt;br /&gt;
&lt;br /&gt;
===Chinese (simplified)===&lt;br /&gt;
* Ling Li (CVS)&lt;br /&gt;
* sunner&lt;br /&gt;
&#039;&#039;Original translator:&#039;&#039;&lt;br /&gt;
* ctbxz&lt;br /&gt;
* cncoolbit&lt;br /&gt;
&lt;br /&gt;
===Chinese (traditional)===&lt;br /&gt;
* Finjon Kiang (CVS)&lt;br /&gt;
* Fu-Kwun Hwang &lt;br /&gt;
&lt;br /&gt;
===Croatian===&lt;br /&gt;
* Jasmin Klindzic (CVS)&lt;br /&gt;
&lt;br /&gt;
===Czech===&lt;br /&gt;
* David Mudrák (CVS)&lt;br /&gt;
* Daniel Mikšík (CVS)&lt;br /&gt;
* Jindřich Jindřich &lt;br /&gt;
* Jiří Rambousek &lt;br /&gt;
* Zdeněk Pytela &lt;br /&gt;
* Jarmila Fictumová &lt;br /&gt;
* Petr Sudický &lt;br /&gt;
* Kamila Králíková &lt;br /&gt;
&lt;br /&gt;
===Danish===&lt;br /&gt;
* Bente Olsen (CVS)&lt;br /&gt;
&lt;br /&gt;
Based on the work of&lt;br /&gt;
&lt;br /&gt;
* Vinther Hansen &lt;br /&gt;
* Kristian Nielsen&lt;br /&gt;
&lt;br /&gt;
===Dutch===&lt;br /&gt;
* Koen Roggemans (CVS)&lt;br /&gt;
* Hans De Zwart (initial translation)&lt;br /&gt;
* Leo Vandijck (revisions)&lt;br /&gt;
&lt;br /&gt;
===Dhivehi===&lt;br /&gt;
* Ahmed Shareef	&lt;br /&gt;
* Moosa Ali	&lt;br /&gt;
* Amir Hussein	&lt;br /&gt;
&lt;br /&gt;
===English===&lt;br /&gt;
* Maintained by Moodle developers as default language&lt;br /&gt;
&lt;br /&gt;
===English (US)===&lt;br /&gt;
* Maintained by Moodle developers&lt;br /&gt;
&lt;br /&gt;
===Estonian===&lt;br /&gt;
&lt;br /&gt;
* Erkki Laaneoks (CVS)&lt;br /&gt;
* Initial translation Ahti Paju &lt;br /&gt;
&lt;br /&gt;
===Filipino===&lt;br /&gt;
* Julian Lilio &lt;br /&gt;
&lt;br /&gt;
===Finnish===&lt;br /&gt;
* Petri Asikainen (CVS)&lt;br /&gt;
&lt;br /&gt;
===French===&lt;br /&gt;
* Nicolas Martignoni (CVS)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Contributors:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Séverin Terrier &lt;br /&gt;
* Thomas Poinsot &lt;br /&gt;
* Valéry Frémaux &lt;br /&gt;
* Didier Rambeau &lt;br /&gt;
* Étienne Rozé &lt;br /&gt;
* Nicolas Galante&lt;br /&gt;
* Joseph Rézeau &lt;br /&gt;
* Jean-François Nadeau &lt;br /&gt;
* Sébastien Namèche &lt;br /&gt;
&lt;br /&gt;
Thanks to Sébastien Namèche, French was the first non-English localisation of Moodle in September 2002.&lt;br /&gt;
&lt;br /&gt;
===French Canadian===&lt;br /&gt;
* Sébastien Namèche &lt;br /&gt;
&lt;br /&gt;
===Galician===&lt;br /&gt;
&lt;br /&gt;
* Forem Galicia - CC.OO&lt;br /&gt;
&lt;br /&gt;
Based on work from:&lt;br /&gt;
* Luz Castro &lt;br /&gt;
* Sonia Álvarez López&lt;br /&gt;
&lt;br /&gt;
===Georgian===&lt;br /&gt;
* Lasha Altunashvili and his team&lt;br /&gt;
&lt;br /&gt;
===German===&lt;br /&gt;
* Ralf Hilgenstock (CVS)&lt;br /&gt;
* Ralf Krause (CVS)&lt;br /&gt;
* Andre Krüger (previously)&lt;br /&gt;
&lt;br /&gt;
===German (modification)===&lt;br /&gt;
* Ralf Hilgenstock (CVS)&lt;br /&gt;
* Ralf Krause (CVS)&lt;br /&gt;
Based on the work of &lt;br /&gt;
* Christian Borowski&lt;br /&gt;
* Franz Horvath (initial version)&lt;br /&gt;
&lt;br /&gt;
===Greek===&lt;br /&gt;
* University of Ioannina &lt;br /&gt;
* Georgios Papaioannou&lt;br /&gt;
* Nikolaos Kyrgios&lt;br /&gt;
* Ioannis Kyriakidis&lt;br /&gt;
* Theodoros Koukoulis&lt;br /&gt;
* Dimitrios Mixail&lt;br /&gt;
* Ioannis Sofronis&lt;br /&gt;
Based on the work of&lt;br /&gt;
* Christos Sintoris &lt;br /&gt;
* George Fousekis &lt;br /&gt;
&lt;br /&gt;
===Gujarati===&lt;br /&gt;
* Amit Mali &lt;br /&gt;
&lt;br /&gt;
===Hebrew===&lt;br /&gt;
*  Emanuel Gruengard (CVS)&lt;br /&gt;
&lt;br /&gt;
Additional Contributors:&lt;br /&gt;
&lt;br /&gt;
* Lev Abramov&lt;br /&gt;
* Anat Martkovich&lt;br /&gt;
* Miki Alliel&lt;br /&gt;
* Shahar Dolev&lt;br /&gt;
* Dovix&lt;br /&gt;
&lt;br /&gt;
===Hindi===&lt;br /&gt;
&lt;br /&gt;
* Stallon Selvan (GHOP)&lt;br /&gt;
&lt;br /&gt;
Translation based on the work of&lt;br /&gt;
* Utkarshraj Atmaram &lt;br /&gt;
&lt;br /&gt;
===Hungarian===&lt;br /&gt;
* Karoly Fabricz &lt;br /&gt;
* Istvan Bozsa&lt;br /&gt;
&lt;br /&gt;
===Icelandic===&lt;br /&gt;
* S.Fjalar &lt;br /&gt;
&lt;br /&gt;
===Indonesion===&lt;br /&gt;
* Arfan Hidayat&lt;br /&gt;
* Fajrin Azis (GHOP)&lt;br /&gt;
&lt;br /&gt;
===Italian===&lt;br /&gt;
* Andrea Bicciolo (CVS)&lt;br /&gt;
* Roberto Pinna &lt;br /&gt;
* Paolo Lariccia&lt;br /&gt;
* Davide Suraci &lt;br /&gt;
&lt;br /&gt;
===Irish===&lt;br /&gt;
* Cathal Ó Foirréidh &lt;br /&gt;
&lt;br /&gt;
===Japanese===&lt;br /&gt;
* Mitsuhiro Yoshida (CVS)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Contributors:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Timothy Takemoto&lt;br /&gt;
* Toshihiro Kita&lt;br /&gt;
* Paul Tsuchido Shew&lt;br /&gt;
* Haruhiko Okumura&lt;br /&gt;
* Tatsuya Aoyagi&lt;br /&gt;
* Masataka Nakaue&lt;br /&gt;
* Hiroto Kagotani&lt;br /&gt;
* Thomas N. Robb&lt;br /&gt;
* Takahiro Kagoya&lt;br /&gt;
* Takahito Kashiwagi&lt;br /&gt;
* Naoko Ueda&lt;br /&gt;
* Shinya Ichikawa&lt;br /&gt;
&lt;br /&gt;
===Kannada===&lt;br /&gt;
* Hari Prasad Nadig and his team&lt;br /&gt;
&lt;br /&gt;
===Kazakh===&lt;br /&gt;
* Туенбаева Калима - Tuyenbayeva Kalima &lt;br /&gt;
* Туенбаев Дархан - Tuyenbayev Darkhan &lt;br /&gt;
* Айжан Арғынбаева - Aizhan Argynbayeva&lt;br /&gt;
* Жандос Байжұма - Zhandos Baizhuma&lt;br /&gt;
&lt;br /&gt;
===Khmer===&lt;br /&gt;
&#039;&#039;Original translator&#039;&#039;&lt;br /&gt;
* Vichika &lt;br /&gt;
&#039;&#039;KhmerOS Localization and E-Learning Team of the Open Institute:&#039;&#039;&lt;br /&gt;
* Khem Sokhem (CVS)&lt;br /&gt;
* Auk Piseth &lt;br /&gt;
* Eng Vannak &lt;br /&gt;
* Leang Chumsoben &lt;br /&gt;
&lt;br /&gt;
===Korean===&lt;br /&gt;
* Lee ChanYoung (CVS)&lt;br /&gt;
* Timothy Allen &lt;br /&gt;
* Kui In Keem&lt;br /&gt;
* Park Min-jeong&lt;br /&gt;
* Park Wang Kyu&lt;br /&gt;
* Lee Yong-keun&lt;br /&gt;
&lt;br /&gt;
===Lao===&lt;br /&gt;
* Somsack &lt;br /&gt;
&lt;br /&gt;
===Latin===&lt;br /&gt;
* Nicholas Sinnott-Armstrong &lt;br /&gt;
&lt;br /&gt;
===Latvian===&lt;br /&gt;
* Arnis Voitkans &lt;br /&gt;
Translation has been carried out by University of Latvia, Riga Technical University and company Tilde.&lt;br /&gt;
&lt;br /&gt;
Based on work of:&lt;br /&gt;
* Girts Ozolins &lt;br /&gt;
* Ivan Ribakov (GHOP)&lt;br /&gt;
&lt;br /&gt;
===Lithuanian===&lt;br /&gt;
* Aidas Smaizys &lt;br /&gt;
&lt;br /&gt;
===Macedonian===&lt;br /&gt;
* Dimitar Talevski &lt;br /&gt;
&lt;br /&gt;
Contributors:&lt;br /&gt;
* Jovan Naumovski &lt;br /&gt;
* Pavle Jonoski &lt;br /&gt;
* Vlatko Trajkov &lt;br /&gt;
* Zoran Lazarevski &lt;br /&gt;
&lt;br /&gt;
Based on the work of:&lt;br /&gt;
Institute for informatics - Skopje&lt;br /&gt;
&lt;br /&gt;
===Malayalam===&lt;br /&gt;
* George Varghese&lt;br /&gt;
&lt;br /&gt;
===Malaysian===&lt;br /&gt;
* Mohamad Ghazaly Abdul Rahman &lt;br /&gt;
&lt;br /&gt;
===Maori (Ngai Tahu)===&lt;br /&gt;
* Jeremy Fitzpatrick &lt;br /&gt;
* The OSCINZ project&lt;br /&gt;
&lt;br /&gt;
===Māori (WaikatoUni)===&lt;br /&gt;
&lt;br /&gt;
* Translation team (based at the University of Waikato, Hamilton, New Zealand)&lt;br /&gt;
&lt;br /&gt;
* Tom Roa (Waikato - Maniapoto)&lt;br /&gt;
* Roger Lewis (Hunaonga o Ngāti Raukawa)&lt;br /&gt;
* Hariru Roa (Waikato - Maniapoto)&lt;br /&gt;
* Joeliee Seed-Pihama (Taranaki, Ngāti Moeahu; Te Atiawa)&lt;br /&gt;
* Damen Pitiroa (Ngāti Tūwharetoa)&lt;br /&gt;
* Te Taka Keegan (Waikato-Maniapoto)&lt;br /&gt;
&lt;br /&gt;
This translation was carried out as part of the &amp;quot;Mäori language in e-learning&amp;quot;  project, funded through the elearning Collaborative Development Fund (eCDF) by the Tertiary Education Commission of New Zealand.&lt;br /&gt;
&lt;br /&gt;
===Marathi===&lt;br /&gt;
&lt;br /&gt;
* Usha Deo &lt;br /&gt;
&lt;br /&gt;
===Mongolian===&lt;br /&gt;
* Khadbaatar.G &lt;br /&gt;
&lt;br /&gt;
===Norwegian===&lt;br /&gt;
Current translator&lt;br /&gt;
* Alf Martin Johnsen (CVS)&lt;br /&gt;
&lt;br /&gt;
Translation based on the work of&lt;br /&gt;
* John Harald Gartland&lt;br /&gt;
* Solveig Bjørnestad&lt;br /&gt;
* Tormod Aagaard &lt;br /&gt;
* Stig Bjarne Haugen (initial translation)&lt;br /&gt;
&lt;br /&gt;
===Norwegian (Nynorsk)===&lt;br /&gt;
* Alf Martin Johnsen (CVS)&lt;br /&gt;
&lt;br /&gt;
Original translation based on the work of&lt;br /&gt;
* John Harald Gartland &lt;br /&gt;
* Tormod Aagaard &lt;br /&gt;
&lt;br /&gt;
===Norwegian translation for primary schools===&lt;br /&gt;
* Alf Martin Johnsen (CVS)&lt;br /&gt;
&lt;br /&gt;
Original translation based on the work of&lt;br /&gt;
* John Harald Gartland &lt;br /&gt;
* Anders Bjerkholt &lt;br /&gt;
* Stig Bjarne Haugen&lt;br /&gt;
&lt;br /&gt;
===Persian===&lt;br /&gt;
* Shamim Rezaie (CVS)&lt;br /&gt;
* Adel Ghazikhani &lt;br /&gt;
* Ali Hosseini&lt;br /&gt;
* Mehran Talaee&lt;br /&gt;
&lt;br /&gt;
===Polish===&lt;br /&gt;
* Adam PaweÅ‚czak (CVS)&lt;br /&gt;
* Przemyslaw Polanski &lt;br /&gt;
* Luiza Budzynska &lt;br /&gt;
* gadulix (GHOP)&lt;br /&gt;
* Szymon Kałasz (GHOP)&lt;br /&gt;
&lt;br /&gt;
===Portuguese===&lt;br /&gt;
* Jaime E. Villate, University of Porto (CVS)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Contributors:&#039;&#039;&lt;br /&gt;
* Paulo Figueira, Portugal&lt;br /&gt;
* Guida Querido, Portugal&lt;br /&gt;
* Manuel Padilha, University of Porto&lt;br /&gt;
* José Soeiro de Carvalho, University of Porto&lt;br /&gt;
&lt;br /&gt;
===Portuguese (Brasil)===&lt;br /&gt;
* Gilvan Marques (CVS)&lt;br /&gt;
* Paula de Waal (CVS)&lt;br /&gt;
&lt;br /&gt;
===Romanian===&lt;br /&gt;
&lt;br /&gt;
* Alexandru Diaconu (CVS)&lt;br /&gt;
&lt;br /&gt;
based on the work of&lt;br /&gt;
* Mihai Cotu&lt;br /&gt;
* Eugen Tanul&lt;br /&gt;
&lt;br /&gt;
===Russian===&lt;br /&gt;
Initial translator: Andrew Redkin &lt;br /&gt;
&lt;br /&gt;
Currently maintained by:&lt;br /&gt;
* Alex Djachenko (CVS)&lt;br /&gt;
* Dmitry Pupinin (CVS)&lt;br /&gt;
* Maryia Davidouskaia &lt;br /&gt;
* Evgenij Cigancov&lt;br /&gt;
&lt;br /&gt;
===Samoan===&lt;br /&gt;
Translated by the OSCINZ project&lt;br /&gt;
&lt;br /&gt;
* Jeremy Fitzpatrick&lt;br /&gt;
&lt;br /&gt;
===Serbian===&lt;br /&gt;
Initial translation Serbian Cyrilic for Bosnia and Herzegovina&lt;br /&gt;
* Dragan Simic  &lt;br /&gt;
&lt;br /&gt;
Current Serbian translation&lt;br /&gt;
* Zivana Komlenov (CVS)&lt;br /&gt;
&lt;br /&gt;
Grammar sensitive Serbian language pack&lt;br /&gt;
* Bojan Milosavljevic&lt;br /&gt;
&lt;br /&gt;
===Sinhala===&lt;br /&gt;
Initial Translators (two independent translations)&lt;br /&gt;
* Harsha Balasooriya et alia&lt;br /&gt;
* Malinda Siriwardena et alia&lt;br /&gt;
&lt;br /&gt;
Significant assistance for the Sinhala language translation of Moodle was&lt;br /&gt;
facilitated by Distance Education Modernisation Project (DEMP) of Ministry of&lt;br /&gt;
Higher Education of Sri Lanka &lt;br /&gt;
&lt;br /&gt;
Major contribution for quality improvements: &lt;br /&gt;
e-learning Centre, University of Colombo School of Computing&lt;br /&gt;
&lt;br /&gt;
Maintainers:&lt;br /&gt;
* Rashan Anushka, University of Colombo School of Computing (CVS)&lt;br /&gt;
* Malinda Siriwardene, University of Colombo School of Computing (CVS)&lt;br /&gt;
* Harsha Balasooriya, The Open University of Sri Lanka (CVS)&lt;br /&gt;
&lt;br /&gt;
===Slovak===&lt;br /&gt;
&lt;br /&gt;
* Miroslav Fikar (MF), FCHPT STU (CVS)&lt;br /&gt;
* Zuzana Jakubcová (ZJ), FCHPT STU&lt;br /&gt;
* Martina Majorová (MM), CIT FEM SPU&lt;br /&gt;
* Juraj Chlebec (JCH), CIT FEM SPU&lt;br /&gt;
* Radik Kalakay, Projekt VECIT 9-2003 - ISO-8859-2&lt;br /&gt;
&lt;br /&gt;
===Slovenian===&lt;br /&gt;
&lt;br /&gt;
*Mitja Podreka (CVS)&lt;br /&gt;
&lt;br /&gt;
Based on the work of&lt;br /&gt;
* Robert Leskovar  (CVS)&lt;br /&gt;
* Sandra Bajde &lt;br /&gt;
* Damjan Crnič &lt;br /&gt;
* Daša Delavec &lt;br /&gt;
* Bojan Janeš &lt;br /&gt;
* Aleš Kecman &lt;br /&gt;
* Matic Kožuh &lt;br /&gt;
* Miha Kramar &lt;br /&gt;
* Grega Lebar &lt;br /&gt;
* Boštjan Lukša &lt;br /&gt;
* Renata Mohorič &lt;br /&gt;
* Vid Ogris &lt;br /&gt;
* Gašper Osredkar &lt;br /&gt;
* Gregor Rekar &lt;br /&gt;
* Maruška Spasovski &lt;br /&gt;
* Žiga Vuk &lt;br /&gt;
* Tomaz Savodniki &lt;br /&gt;
* Robert Leskovar &lt;br /&gt;
&lt;br /&gt;
===Somali===&lt;br /&gt;
* Mohamed Abdi &lt;br /&gt;
&lt;br /&gt;
===Spanish international===&lt;br /&gt;
&#039;&#039;Coordination and Interface&#039;&#039; &lt;br /&gt;
* Benito Arias (CVS)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Help and documentation:&#039;&#039;&lt;br /&gt;
* Antonio Navarro &lt;br /&gt;
* Antonio Vicent &lt;br /&gt;
* Eloy Lafuente (CVS)&lt;br /&gt;
* Fermín Cueva &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Cooperators:&#039;&#039;&lt;br /&gt;
* Claudio Tavares &lt;br /&gt;
* Sergio Alfaro &lt;br /&gt;
* Pedro Benito&lt;br /&gt;
* Ricardo Dalton&lt;br /&gt;
* David Delgado &lt;br /&gt;
* Emmanuelle Gutiérrez y Restrepo&lt;br /&gt;
* Mauricio Latorre &lt;br /&gt;
* Facundo Ortiz &lt;br /&gt;
* Raúl Vernengo &lt;br /&gt;
* Sergio Zúñiga &lt;br /&gt;
* Juan David Martinez Pavony &lt;br /&gt;
&lt;br /&gt;
===Swedish===&lt;br /&gt;
* Anders Berggren &lt;br /&gt;
&lt;br /&gt;
===Tagalog===&lt;br /&gt;
* Roel Cantada&lt;br /&gt;
&lt;br /&gt;
===Tamil===&lt;br /&gt;
* Nagarajan Vadivel &lt;br /&gt;
&lt;br /&gt;
===Tamil (Sri Lanka)===&lt;br /&gt;
* M A Kaleelur Rahuman (CVS)&lt;br /&gt;
* T.Gnanakumar &lt;br /&gt;
* Kengatharaiyer Sarveswaran (Sarves)&lt;br /&gt;
&lt;br /&gt;
Significant assistance for the Tamil (LK)  language translation of Moodle was facilitated by  the National Online Distance Education Service (NODES) established by the Distance Education Modernisation Project (DEMP) of Ministry of Higher Education of Sri Lanka.&lt;br /&gt;
&lt;br /&gt;
===Thai===&lt;br /&gt;
* M.Minkowski&lt;br /&gt;
* Worrapat Boonyaritipong (GHOP)&lt;br /&gt;
&lt;br /&gt;
===Tongan===&lt;br /&gt;
&lt;br /&gt;
Translated by the OSCINZ project&lt;br /&gt;
* Jeremy Fitzpatrick &lt;br /&gt;
&lt;br /&gt;
===Turkish===&lt;br /&gt;
* Ethem Evlice (CVS)&lt;br /&gt;
* Dr. Gultekin Cetiner &lt;br /&gt;
&lt;br /&gt;
===Ukrainian===&lt;br /&gt;
* Andriv Olefirenko &lt;br /&gt;
&lt;br /&gt;
===Urdu===&lt;br /&gt;
* Faisal Kaleem &lt;br /&gt;
&lt;br /&gt;
===Uzbek===&lt;br /&gt;
* Tokhir Akhmedjanov&lt;br /&gt;
ESDP DE project UZB 1961 Component B&lt;br /&gt;
&lt;br /&gt;
Initial translation&lt;br /&gt;
* Orif N. Ruzimurodov &lt;br /&gt;
Center of the Development Multimedium Education Programms (CDMEP)&lt;br /&gt;
&lt;br /&gt;
===Vietnamese===&lt;br /&gt;
* Đinh Lư Giang (CVS)&lt;br /&gt;
* Vu Thanh Hung &lt;br /&gt;
&lt;br /&gt;
===Welsh===&lt;br /&gt;
* Karen Coyle &lt;br /&gt;
&lt;br /&gt;
===Zulu===&lt;br /&gt;
* iCyber E-Learning Solutions on initiative of Gerrit Botha&lt;br /&gt;
* Coordination Lionel Redelinghuys &lt;br /&gt;
* Translation Mr. Nhlanhla Ndlovu&lt;br /&gt;
&lt;br /&gt;
[[Category:Credits]]&lt;br /&gt;
[[Category:Translation]]&lt;/div&gt;</summary>
		<author><name>Tsala</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Translation_credits_archive&amp;diff=63155</id>
		<title>Translation credits archive</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Translation_credits_archive&amp;diff=63155"/>
		<updated>2022-05-27T19:46:24Z</updated>

		<summary type="html">&lt;p&gt;Tsala: This page will not be migrated to new devdocs&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:WillNotMigrate}}&lt;br /&gt;
&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;Please see &#039;&#039;&#039;[http://lang.moodle.org/local/amos/credits.php Translation credits]&#039;&#039;&#039; for the up-to-date list of language pack maintainers and contributors (Moodle 2.0 onwards).&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you&#039;d like to contact a language pack maintainer, please create an account on the [http://lang.moodle.org Moodle translation site] then click on their name in the [http://lang.moodle.org/local/amos/credits.php Translation credits] and send them a message.&lt;br /&gt;
&lt;br /&gt;
Many language pack maintainers are active in the forums on moodle.org. A translators icon (a book) under a user&#039;s name in forum posts identifies them as a member of the translators group, for example [http://moodle.org/user/index.php?id=5&amp;amp;group=173 Translators in Moodle in English].&lt;br /&gt;
&lt;br /&gt;
==Translation credits since the beginning of the project==&lt;br /&gt;
&lt;br /&gt;
From the very beginning, Moodle was [[Translation|designed to be translated]] into many languages. This page lists translators from the beginning of the project (pre-Moodle 2.0).&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
===Afrikaans===&lt;br /&gt;
* Riaan De Villiers&lt;br /&gt;
&lt;br /&gt;
===Albanian===&lt;br /&gt;
* Bejo Duka &lt;br /&gt;
&lt;br /&gt;
===Arabic===&lt;br /&gt;
* Dr. Ali H. Abureesh &lt;br /&gt;
* (Original translation by Ahmed Nabil)&lt;br /&gt;
&lt;br /&gt;
===Armenian===&lt;br /&gt;
* Lusine Khachatryan &lt;br /&gt;
* Tygran Terteryan &lt;br /&gt;
* Andranik Markosyan &lt;br /&gt;
&lt;br /&gt;
===Asturian===&lt;br /&gt;
* Xosé Nel Caldevilla Vega &lt;br /&gt;
&lt;br /&gt;
===Bangla===&lt;br /&gt;
* Razib Mustafiz &lt;br /&gt;
&lt;br /&gt;
===Basque===&lt;br /&gt;
* Santurtziko Udal Euskaltegia  (CVS)&lt;br /&gt;
* Jose Sanchez &lt;br /&gt;
&lt;br /&gt;
===Belarusian===&lt;br /&gt;
* Maryia Davidouskaia &lt;br /&gt;
&lt;br /&gt;
===Bosnian===&lt;br /&gt;
* Tihomir Veselinovic &lt;br /&gt;
* red_eye&lt;br /&gt;
&lt;br /&gt;
===Bulgarian===&lt;br /&gt;
* Tihomir Veselinovic &lt;br /&gt;
&lt;br /&gt;
===Catalan===&lt;br /&gt;
* Carles Bellver (CVS)&lt;br /&gt;
* cent&lt;br /&gt;
* Joan Queralt&lt;br /&gt;
&lt;br /&gt;
===Chinese (simplified)===&lt;br /&gt;
* Ling Li (CVS)&lt;br /&gt;
* sunner&lt;br /&gt;
&#039;&#039;Original translator:&#039;&#039;&lt;br /&gt;
* ctbxz&lt;br /&gt;
* cncoolbit&lt;br /&gt;
&lt;br /&gt;
===Chinese (traditional)===&lt;br /&gt;
* Finjon Kiang (CVS)&lt;br /&gt;
* Fu-Kwun Hwang &lt;br /&gt;
&lt;br /&gt;
===Croatian===&lt;br /&gt;
* Jasmin Klindzic (CVS)&lt;br /&gt;
&lt;br /&gt;
===Czech===&lt;br /&gt;
* David Mudrák (CVS)&lt;br /&gt;
* Daniel Mikšík (CVS)&lt;br /&gt;
* Jindřich Jindřich &lt;br /&gt;
* Jiří Rambousek &lt;br /&gt;
* Zdeněk Pytela &lt;br /&gt;
* Jarmila Fictumová &lt;br /&gt;
* Petr Sudický &lt;br /&gt;
* Kamila Králíková &lt;br /&gt;
&lt;br /&gt;
===Danish===&lt;br /&gt;
* Bente Olsen (CVS)&lt;br /&gt;
&lt;br /&gt;
Based on the work of&lt;br /&gt;
&lt;br /&gt;
* Vinther Hansen &lt;br /&gt;
* Kristian Nielsen&lt;br /&gt;
&lt;br /&gt;
===Dutch===&lt;br /&gt;
* Koen Roggemans (CVS)&lt;br /&gt;
* Hans De Zwart (initial translation)&lt;br /&gt;
* Leo Vandijck (revisions)&lt;br /&gt;
&lt;br /&gt;
===Dhivehi===&lt;br /&gt;
* Ahmed Shareef	&lt;br /&gt;
* Moosa Ali	&lt;br /&gt;
* Amir Hussein	&lt;br /&gt;
&lt;br /&gt;
===English===&lt;br /&gt;
* Maintained by Moodle developers as default language&lt;br /&gt;
&lt;br /&gt;
===English (US)===&lt;br /&gt;
* Maintained by Moodle developers&lt;br /&gt;
&lt;br /&gt;
===Estonian===&lt;br /&gt;
&lt;br /&gt;
* Erkki Laaneoks (CVS)&lt;br /&gt;
* Initial translation Ahti Paju &lt;br /&gt;
&lt;br /&gt;
===Filipino===&lt;br /&gt;
* Julian Lilio &lt;br /&gt;
&lt;br /&gt;
===Finnish===&lt;br /&gt;
* Petri Asikainen (CVS)&lt;br /&gt;
&lt;br /&gt;
===French===&lt;br /&gt;
* Nicolas Martignoni (CVS)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Contributors:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Séverin Terrier &lt;br /&gt;
* Thomas Poinsot &lt;br /&gt;
* Valéry Frémaux &lt;br /&gt;
* Didier Rambeau &lt;br /&gt;
* Étienne Rozé &lt;br /&gt;
* Nicolas Galante&lt;br /&gt;
* Joseph Rézeau &lt;br /&gt;
* Jean-François Nadeau &lt;br /&gt;
* Sébastien Namèche &lt;br /&gt;
&lt;br /&gt;
Thanks to Sébastien Namèche, French was the first non-English localisation of Moodle in September 2002.&lt;br /&gt;
&lt;br /&gt;
===French Canadian===&lt;br /&gt;
* Sébastien Namèche &lt;br /&gt;
&lt;br /&gt;
===Galician===&lt;br /&gt;
&lt;br /&gt;
* Forem Galicia - CC.OO&lt;br /&gt;
&lt;br /&gt;
Based on work from:&lt;br /&gt;
* Luz Castro &lt;br /&gt;
* Sonia Álvarez López&lt;br /&gt;
&lt;br /&gt;
===Georgian===&lt;br /&gt;
* Lasha Altunashvili and his team&lt;br /&gt;
&lt;br /&gt;
===German===&lt;br /&gt;
* Ralf Hilgenstock (CVS)&lt;br /&gt;
* Ralf Krause (CVS)&lt;br /&gt;
* Andre Krüger (previously)&lt;br /&gt;
&lt;br /&gt;
===German (modification)===&lt;br /&gt;
* Ralf Hilgenstock (CVS)&lt;br /&gt;
* Ralf Krause (CVS)&lt;br /&gt;
Based on the work of &lt;br /&gt;
* Christian Borowski&lt;br /&gt;
* Franz Horvath (initial version)&lt;br /&gt;
&lt;br /&gt;
===Greek===&lt;br /&gt;
* University of Ioannina &lt;br /&gt;
* Georgios Papaioannou&lt;br /&gt;
* Nikolaos Kyrgios&lt;br /&gt;
* Ioannis Kyriakidis&lt;br /&gt;
* Theodoros Koukoulis&lt;br /&gt;
* Dimitrios Mixail&lt;br /&gt;
* Ioannis Sofronis&lt;br /&gt;
Based on the work of&lt;br /&gt;
* Christos Sintoris &lt;br /&gt;
* George Fousekis &lt;br /&gt;
&lt;br /&gt;
===Gujarati===&lt;br /&gt;
* Amit Mali &lt;br /&gt;
&lt;br /&gt;
===Hebrew===&lt;br /&gt;
*  Emanuel Gruengard (CVS)&lt;br /&gt;
&lt;br /&gt;
Additional Contributors:&lt;br /&gt;
&lt;br /&gt;
* Lev Abramov&lt;br /&gt;
* Anat Martkovich&lt;br /&gt;
* Miki Alliel&lt;br /&gt;
* Shahar Dolev&lt;br /&gt;
* Dovix&lt;br /&gt;
&lt;br /&gt;
===Hindi===&lt;br /&gt;
&lt;br /&gt;
* Stallon Selvan (GHOP)&lt;br /&gt;
&lt;br /&gt;
Translation based on the work of&lt;br /&gt;
* Utkarshraj Atmaram &lt;br /&gt;
&lt;br /&gt;
===Hungarian===&lt;br /&gt;
* Karoly Fabricz &lt;br /&gt;
* Istvan Bozsa&lt;br /&gt;
&lt;br /&gt;
===Icelandic===&lt;br /&gt;
* S.Fjalar &lt;br /&gt;
&lt;br /&gt;
===Indonesion===&lt;br /&gt;
* Arfan Hidayat&lt;br /&gt;
* Fajrin Azis (GHOP)&lt;br /&gt;
&lt;br /&gt;
===Italian===&lt;br /&gt;
* Andrea Bicciolo (CVS)&lt;br /&gt;
* Roberto Pinna &lt;br /&gt;
* Paolo Lariccia&lt;br /&gt;
* Davide Suraci &lt;br /&gt;
&lt;br /&gt;
===Irish===&lt;br /&gt;
* Cathal Ó Foirréidh &lt;br /&gt;
&lt;br /&gt;
===Japanese===&lt;br /&gt;
* Mitsuhiro Yoshida (CVS)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Contributors:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Timothy Takemoto&lt;br /&gt;
* Toshihiro Kita&lt;br /&gt;
* Paul Tsuchido Shew&lt;br /&gt;
* Haruhiko Okumura&lt;br /&gt;
* Tatsuya Aoyagi&lt;br /&gt;
* Masataka Nakaue&lt;br /&gt;
* Hiroto Kagotani&lt;br /&gt;
* Thomas N. Robb&lt;br /&gt;
* Takahiro Kagoya&lt;br /&gt;
* Takahito Kashiwagi&lt;br /&gt;
* Naoko Ueda&lt;br /&gt;
* Shinya Ichikawa&lt;br /&gt;
&lt;br /&gt;
===Kannada===&lt;br /&gt;
* Hari Prasad Nadig and his team&lt;br /&gt;
&lt;br /&gt;
===Kazakh===&lt;br /&gt;
* Туенбаева Калима - Tuyenbayeva Kalima &lt;br /&gt;
* Туенбаев Дархан - Tuyenbayev Darkhan &lt;br /&gt;
* Айжан Арғынбаева - Aizhan Argynbayeva&lt;br /&gt;
* Жандос Байжұма - Zhandos Baizhuma&lt;br /&gt;
&lt;br /&gt;
===Khmer===&lt;br /&gt;
&#039;&#039;Original translator&#039;&#039;&lt;br /&gt;
* Vichika &lt;br /&gt;
&#039;&#039;KhmerOS Localization and E-Learning Team of the Open Institute:&#039;&#039;&lt;br /&gt;
* Khem Sokhem (CVS)&lt;br /&gt;
* Auk Piseth &lt;br /&gt;
* Eng Vannak &lt;br /&gt;
* Leang Chumsoben &lt;br /&gt;
&lt;br /&gt;
===Korean===&lt;br /&gt;
* Lee ChanYoung (CVS)&lt;br /&gt;
* Timothy Allen &lt;br /&gt;
* Kui In Keem&lt;br /&gt;
* Park Min-jeong&lt;br /&gt;
* Park Wang Kyu&lt;br /&gt;
* Lee Yong-keun&lt;br /&gt;
&lt;br /&gt;
===Lao===&lt;br /&gt;
* Somsack &lt;br /&gt;
&lt;br /&gt;
===Latin===&lt;br /&gt;
* Nicholas Sinnott-Armstrong &lt;br /&gt;
&lt;br /&gt;
===Latvian===&lt;br /&gt;
* Arnis Voitkans &lt;br /&gt;
Translation has been carried out by University of Latvia, Riga Technical University and company Tilde.&lt;br /&gt;
&lt;br /&gt;
Based on work of:&lt;br /&gt;
* Girts Ozolins &lt;br /&gt;
* Ivan Ribakov (GHOP)&lt;br /&gt;
&lt;br /&gt;
===Lithuanian===&lt;br /&gt;
* Aidas Smaizys &lt;br /&gt;
&lt;br /&gt;
===Macedonian===&lt;br /&gt;
* Dimitar Talevski &lt;br /&gt;
&lt;br /&gt;
Contributors:&lt;br /&gt;
* Jovan Naumovski &lt;br /&gt;
* Pavle Jonoski &lt;br /&gt;
* Vlatko Trajkov &lt;br /&gt;
* Zoran Lazarevski &lt;br /&gt;
&lt;br /&gt;
Based on the work of:&lt;br /&gt;
Institute for informatics - Skopje&lt;br /&gt;
&lt;br /&gt;
===Malayalam===&lt;br /&gt;
* George Varghese&lt;br /&gt;
&lt;br /&gt;
===Malaysian===&lt;br /&gt;
* Mohamad Ghazaly Abdul Rahman &lt;br /&gt;
&lt;br /&gt;
===Maori (Ngai Tahu)===&lt;br /&gt;
* Jeremy Fitzpatrick &lt;br /&gt;
* The OSCINZ project&lt;br /&gt;
&lt;br /&gt;
===Māori (WaikatoUni)===&lt;br /&gt;
&lt;br /&gt;
* Translation team (based at the University of Waikato, Hamilton, New Zealand)&lt;br /&gt;
&lt;br /&gt;
* Tom Roa (Waikato - Maniapoto)&lt;br /&gt;
* Roger Lewis (Hunaonga o Ngāti Raukawa)&lt;br /&gt;
* Hariru Roa (Waikato - Maniapoto)&lt;br /&gt;
* Joeliee Seed-Pihama (Taranaki, Ngāti Moeahu; Te Atiawa)&lt;br /&gt;
* Damen Pitiroa (Ngāti Tūwharetoa)&lt;br /&gt;
* Te Taka Keegan (Waikato-Maniapoto)&lt;br /&gt;
&lt;br /&gt;
This translation was carried out as part of the &amp;quot;Mäori language in e-learning&amp;quot;  project, funded through the elearning Collaborative Development Fund (eCDF) by the Tertiary Education Commission of New Zealand.&lt;br /&gt;
&lt;br /&gt;
===Marathi===&lt;br /&gt;
&lt;br /&gt;
* Usha Deo &lt;br /&gt;
&lt;br /&gt;
===Mongolian===&lt;br /&gt;
* Khadbaatar.G &lt;br /&gt;
&lt;br /&gt;
===Norwegian===&lt;br /&gt;
Current translator&lt;br /&gt;
* Alf Martin Johnsen (CVS)&lt;br /&gt;
&lt;br /&gt;
Translation based on the work of&lt;br /&gt;
* John Harald Gartland&lt;br /&gt;
* Solveig Bjørnestad&lt;br /&gt;
* Tormod Aagaard &lt;br /&gt;
* Stig Bjarne Haugen (initial translation)&lt;br /&gt;
&lt;br /&gt;
===Norwegian (Nynorsk)===&lt;br /&gt;
* Alf Martin Johnsen (CVS)&lt;br /&gt;
&lt;br /&gt;
Original translation based on the work of&lt;br /&gt;
* John Harald Gartland &lt;br /&gt;
* Tormod Aagaard &lt;br /&gt;
&lt;br /&gt;
===Norwegian translation for primary schools===&lt;br /&gt;
* Alf Martin Johnsen (CVS)&lt;br /&gt;
&lt;br /&gt;
Original translation based on the work of&lt;br /&gt;
* John Harald Gartland &lt;br /&gt;
* Anders Bjerkholt &lt;br /&gt;
* Stig Bjarne Haugen&lt;br /&gt;
&lt;br /&gt;
===Persian===&lt;br /&gt;
* Shamim Rezaie (CVS)&lt;br /&gt;
* Adel Ghazikhani &lt;br /&gt;
* Ali Hosseini&lt;br /&gt;
* Mehran Talaee&lt;br /&gt;
&lt;br /&gt;
===Polish===&lt;br /&gt;
* Adam PaweÅ‚czak (CVS)&lt;br /&gt;
* Przemyslaw Polanski &lt;br /&gt;
* Luiza Budzynska &lt;br /&gt;
* gadulix (GHOP)&lt;br /&gt;
* Szymon Kałasz (GHOP)&lt;br /&gt;
&lt;br /&gt;
===Portuguese===&lt;br /&gt;
* Jaime E. Villate, University of Porto (CVS)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Contributors:&#039;&#039;&lt;br /&gt;
* Paulo Figueira, Portugal&lt;br /&gt;
* Guida Querido, Portugal&lt;br /&gt;
* Manuel Padilha, University of Porto&lt;br /&gt;
* José Soeiro de Carvalho, University of Porto&lt;br /&gt;
&lt;br /&gt;
===Portuguese (Brasil)===&lt;br /&gt;
* Gilvan Marques (CVS)&lt;br /&gt;
* Paula de Waal (CVS)&lt;br /&gt;
&lt;br /&gt;
===Romanian===&lt;br /&gt;
&lt;br /&gt;
* Alexandru Diaconu (CVS)&lt;br /&gt;
&lt;br /&gt;
based on the work of&lt;br /&gt;
* Mihai Cotu&lt;br /&gt;
* Eugen Tanul&lt;br /&gt;
&lt;br /&gt;
===Russian===&lt;br /&gt;
Initial translator: Andrew Redkin &lt;br /&gt;
&lt;br /&gt;
Currently maintained by:&lt;br /&gt;
* Alex Djachenko (CVS)&lt;br /&gt;
* Dmitry Pupinin (CVS)&lt;br /&gt;
* Maryia Davidouskaia &lt;br /&gt;
* Evgenij Cigancov&lt;br /&gt;
&lt;br /&gt;
===Samoan===&lt;br /&gt;
Translated by the OSCINZ project&lt;br /&gt;
&lt;br /&gt;
* Jeremy Fitzpatrick&lt;br /&gt;
&lt;br /&gt;
===Serbian===&lt;br /&gt;
Initial translation Serbian Cyrilic for Bosnia and Herzegovina&lt;br /&gt;
* Dragan Simic  &lt;br /&gt;
&lt;br /&gt;
Current Serbian translation&lt;br /&gt;
* Zivana Komlenov (CVS)&lt;br /&gt;
&lt;br /&gt;
Grammar sensitive Serbian language pack&lt;br /&gt;
* Bojan Milosavljevic&lt;br /&gt;
&lt;br /&gt;
===Sinhala===&lt;br /&gt;
Initial Translators (two independent translations)&lt;br /&gt;
* Harsha Balasooriya et alia&lt;br /&gt;
* Malinda Siriwardena et alia&lt;br /&gt;
&lt;br /&gt;
Significant assistance for the Sinhala language translation of Moodle was&lt;br /&gt;
facilitated by Distance Education Modernisation Project (DEMP) of Ministry of&lt;br /&gt;
Higher Education of Sri Lanka &lt;br /&gt;
&lt;br /&gt;
Major contribution for quality improvements: &lt;br /&gt;
e-learning Centre, University of Colombo School of Computing&lt;br /&gt;
&lt;br /&gt;
Maintainers:&lt;br /&gt;
* Rashan Anushka, University of Colombo School of Computing (CVS)&lt;br /&gt;
* Malinda Siriwardene, University of Colombo School of Computing (CVS)&lt;br /&gt;
* Harsha Balasooriya, The Open University of Sri Lanka (CVS)&lt;br /&gt;
&lt;br /&gt;
===Slovak===&lt;br /&gt;
&lt;br /&gt;
* Miroslav Fikar (MF), FCHPT STU (CVS)&lt;br /&gt;
* Zuzana Jakubcová (ZJ), FCHPT STU&lt;br /&gt;
* Martina Majorová (MM), CIT FEM SPU&lt;br /&gt;
* Juraj Chlebec (JCH), CIT FEM SPU&lt;br /&gt;
* Radik Kalakay, Projekt VECIT 9-2003 - ISO-8859-2&lt;br /&gt;
&lt;br /&gt;
===Slovenian===&lt;br /&gt;
&lt;br /&gt;
*Mitja Podreka (CVS)&lt;br /&gt;
&lt;br /&gt;
Based on the work of&lt;br /&gt;
* Robert Leskovar  (CVS)&lt;br /&gt;
* Sandra Bajde &lt;br /&gt;
* Damjan Crnič &lt;br /&gt;
* Daša Delavec &lt;br /&gt;
* Bojan Janeš &lt;br /&gt;
* Aleš Kecman &lt;br /&gt;
* Matic Kožuh &lt;br /&gt;
* Miha Kramar &lt;br /&gt;
* Grega Lebar &lt;br /&gt;
* Boštjan Lukša &lt;br /&gt;
* Renata Mohorič &lt;br /&gt;
* Vid Ogris &lt;br /&gt;
* Gašper Osredkar &lt;br /&gt;
* Gregor Rekar &lt;br /&gt;
* Maruška Spasovski &lt;br /&gt;
* Žiga Vuk &lt;br /&gt;
* Tomaz Savodniki &lt;br /&gt;
* Robert Leskovar &lt;br /&gt;
&lt;br /&gt;
===Somali===&lt;br /&gt;
* Mohamed Abdi &lt;br /&gt;
&lt;br /&gt;
===Spanish international===&lt;br /&gt;
&#039;&#039;Coordination and Interface&#039;&#039; &lt;br /&gt;
* Benito Arias (CVS)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Help and documentation:&#039;&#039;&lt;br /&gt;
* Antonio Navarro &lt;br /&gt;
* Antonio Vicent &lt;br /&gt;
* Eloy Lafuente (CVS)&lt;br /&gt;
* Fermín Cueva &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Cooperators:&#039;&#039;&lt;br /&gt;
* Claudio Tavares &lt;br /&gt;
* Sergio Alfaro &lt;br /&gt;
* Pedro Benito&lt;br /&gt;
* Ricardo Dalton&lt;br /&gt;
* David Delgado &lt;br /&gt;
* Emmanuelle Gutiérrez y Restrepo&lt;br /&gt;
* Mauricio Latorre &lt;br /&gt;
* Facundo Ortiz &lt;br /&gt;
* Raúl Vernengo &lt;br /&gt;
* Sergio Zúñiga &lt;br /&gt;
* Juan David Martinez Pavony &lt;br /&gt;
&lt;br /&gt;
===Swedish===&lt;br /&gt;
* Anders Berggren &lt;br /&gt;
&lt;br /&gt;
===Tagalog===&lt;br /&gt;
* Roel Cantada&lt;br /&gt;
&lt;br /&gt;
===Tamil===&lt;br /&gt;
* Nagarajan Vadivel &lt;br /&gt;
&lt;br /&gt;
===Tamil (Sri Lanka)===&lt;br /&gt;
* M A Kaleelur Rahuman (CVS)&lt;br /&gt;
* T.Gnanakumar &lt;br /&gt;
* Kengatharaiyer Sarveswaran (Sarves)&lt;br /&gt;
&lt;br /&gt;
Significant assistance for the Tamil (LK)  language translation of Moodle was facilitated by  the National Online Distance Education Service (NODES) established by the Distance Education Modernisation Project (DEMP) of Ministry of Higher Education of Sri Lanka.&lt;br /&gt;
&lt;br /&gt;
===Thai===&lt;br /&gt;
* M.Minkowski&lt;br /&gt;
* Worrapat Boonyaritipong (GHOP)&lt;br /&gt;
&lt;br /&gt;
===Tongan===&lt;br /&gt;
&lt;br /&gt;
Translated by the OSCINZ project&lt;br /&gt;
* Jeremy Fitzpatrick &lt;br /&gt;
&lt;br /&gt;
===Turkish===&lt;br /&gt;
* Ethem Evlice (CVS)&lt;br /&gt;
* Dr. Gultekin Cetiner &lt;br /&gt;
&lt;br /&gt;
===Ukrainian===&lt;br /&gt;
* Andriv Olefirenko &lt;br /&gt;
&lt;br /&gt;
===Urdu===&lt;br /&gt;
* Faisal Kaleem &lt;br /&gt;
&lt;br /&gt;
===Uzbek===&lt;br /&gt;
* Tokhir Akhmedjanov&lt;br /&gt;
ESDP DE project UZB 1961 Component B&lt;br /&gt;
&lt;br /&gt;
Initial translation&lt;br /&gt;
* Orif N. Ruzimurodov &lt;br /&gt;
Center of the Development Multimedium Education Programms (CDMEP)&lt;br /&gt;
&lt;br /&gt;
===Vietnamese===&lt;br /&gt;
* Đinh Lư Giang (CVS)&lt;br /&gt;
* Vu Thanh Hung &lt;br /&gt;
&lt;br /&gt;
===Welsh===&lt;br /&gt;
* Karen Coyle &lt;br /&gt;
&lt;br /&gt;
===Zulu===&lt;br /&gt;
* iCyber E-Learning Solutions on initiative of Gerrit Botha&lt;br /&gt;
* Coordination Lionel Redelinghuys &lt;br /&gt;
* Translation Mr. Nhlanhla Ndlovu&lt;br /&gt;
&lt;br /&gt;
[[Category:Credits]]&lt;br /&gt;
[[Category:Translation]]&lt;/div&gt;</summary>
		<author><name>Tsala</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Documentation_credits&amp;diff=62393</id>
		<title>Documentation credits</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Documentation_credits&amp;diff=62393"/>
		<updated>2022-05-17T11:47:34Z</updated>

		<summary type="html">&lt;p&gt;Tsala: /* Documentation writers */ date updated&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Migrated|newDocId=/general/community/credits/documentation}}&lt;br /&gt;
==Documentation writers==&lt;br /&gt;
&lt;br /&gt;
The following people have made valuable contributions to the Moodle documentation:&lt;br /&gt;
&lt;br /&gt;
Iñaki Arenaza, Dominique Bauer, Luca Bösch, Éric Bugnet, Abel Camacho, Chris Collman, Nicolas Connault, Mary Cooch, Manuel de la Torre, Martin Dougiamas, Mary Evans, Miroslav Fikar, Giuseppe Fiorentino, Helen Foster, Colin Fraser, John Harald Gartland, Gisela Hillenbrand, Tim Hunt, Art Lader, Eloy Lafuente (stronk7), Simey Lameze, Nicolas Martignoni, Michael Milette, Howard Miller, Ulrike Montgomery, Jérôme Mouneyrac, David Mudrak, Mark Nelson, Jamie Pratt, Frank Ralf, Emma Richardson, Koen Roggemans, Daniela Rotelli, David Scotson, Petr Škoda (škoďák), Séverin Terrier, Michael Tesar, Randy Thornton, Itamar Tzadok, German Valero, Paul Verrall, Antonio Vicent, Ken Wilson, Mitsuhiro Yoshida&lt;br /&gt;
&lt;br /&gt;
(List updated 11:47, 17 May 2022 (UTC))&lt;br /&gt;
&lt;br /&gt;
Apologies if anyone has been missed out from the above list. Please add their name to the [[Talk:Documentation credits|page comments]].&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
* [http://moodle.org/user/index.php?id=5&amp;amp;group=178 Current Documentation writers in Moodle in English]&lt;br /&gt;
&lt;br /&gt;
[[Category:Credits]]&lt;/div&gt;</summary>
		<author><name>Tsala</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Documentation_credits&amp;diff=62392</id>
		<title>Documentation credits</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Documentation_credits&amp;diff=62392"/>
		<updated>2022-05-17T10:27:29Z</updated>

		<summary type="html">&lt;p&gt;Tsala: /* Documentation writers */ Michael Milette many thanks&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Migrated|newDocId=/general/community/credits/documentation}}&lt;br /&gt;
==Documentation writers==&lt;br /&gt;
&lt;br /&gt;
The following people have made valuable contributions to the Moodle documentation:&lt;br /&gt;
&lt;br /&gt;
Iñaki Arenaza, Dominique Bauer, Luca Bösch, Éric Bugnet, Abel Camacho, Chris Collman, Nicolas Connault, Mary Cooch, Manuel de la Torre, Martin Dougiamas, Mary Evans, Miroslav Fikar, Giuseppe Fiorentino, Helen Foster, Colin Fraser, John Harald Gartland, Gisela Hillenbrand, Tim Hunt, Art Lader, Eloy Lafuente (stronk7), Simey Lameze, Nicolas Martignoni, Michael Milette, Howard Miller, Ulrike Montgomery, Jérôme Mouneyrac, David Mudrak, Mark Nelson, Jamie Pratt, Frank Ralf, Emma Richardson, Koen Roggemans, Daniela Rotelli, David Scotson, Petr Škoda (škoďák), Séverin Terrier, Michael Tesar, Randy Thornton, Itamar Tzadok, German Valero, Paul Verrall, Antonio Vicent, Ken Wilson, Mitsuhiro Yoshida&lt;br /&gt;
&lt;br /&gt;
(List updated 10:53, 15 November 2018 (UTC))&lt;br /&gt;
&lt;br /&gt;
Apologies if anyone has been missed out from the above list. Please add their name to the [[Talk:Documentation credits|page comments]].&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
* [http://moodle.org/user/index.php?id=5&amp;amp;group=178 Current Documentation writers in Moodle in English]&lt;br /&gt;
&lt;br /&gt;
[[Category:Credits]]&lt;/div&gt;</summary>
		<author><name>Tsala</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Developer_meeting_April_2022&amp;diff=62197</id>
		<title>Developer meeting April 2022</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Developer_meeting_April_2022&amp;diff=62197"/>
		<updated>2022-05-02T12:15:37Z</updated>

		<summary type="html">&lt;p&gt;Tsala: recording link available&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Developer meetings]] &amp;gt; April 2022 meeting &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Date&lt;br /&gt;
| Tuesday 12 April 2022 at 08:00 UTC &lt;br /&gt;
|-&lt;br /&gt;
| Meeting recording&lt;br /&gt;
| [https://moodle.org/mod/bigbluebuttonbn/view.php?id=8596 Developer meetings BBB on moodle.org]&lt;br /&gt;
|-&lt;br /&gt;
| Discussion&lt;br /&gt;
| [https://moodle.org/mod/forum/discuss.php?d=432769 Developer meeting Tuesday 12 April 2022]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Agenda ==&lt;br /&gt;
&lt;br /&gt;
# Introducing Moodle 4.0 - Moodle HQ developers&lt;br /&gt;
# Developer Documentation update&lt;/div&gt;</summary>
		<author><name>Tsala</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Roadmap&amp;diff=62136</id>
		<title>Roadmap</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Roadmap&amp;diff=62136"/>
		<updated>2022-04-29T07:04:42Z</updated>

		<summary type="html">&lt;p&gt;Tsala: /* Moodle 4.1 (November 2022) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Migrated|newDocId=/general/community/roadmap}}&lt;br /&gt;
= Introduction =&lt;br /&gt;
The Moodle Project is designed to have a positive effect on the world by supporting and empowering the educators who are teaching students in all sectors, in all countries. &lt;br /&gt;
&lt;br /&gt;
To do this, our team at Moodle HQ looks to the world, talks with our community, and creates solutions in the forms of products that fit our values of &#039;&#039;&#039;education&#039;&#039;&#039;, &#039;&#039;&#039;openness&#039;&#039;&#039;, &#039;&#039;&#039;respect&#039;&#039;&#039;, &#039;&#039;&#039;integrity&#039;&#039;&#039; and &#039;&#039;&#039;innovation&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
This document summarises, for a broad audience, the best current plans on the future technical development of the Moodle’s open source learning platform, consisting of Moodle LMS, Moodle Workplace LMS, MoodleCloud, MoodleNet, Moodle Apps, and Moodle Educator Certificates.&lt;br /&gt;
==Where this roadmap comes from==&lt;br /&gt;
Proposals for improvements and new features come from a variety of different places. &lt;br /&gt;
&lt;br /&gt;
Feedback from the community is extremely important and you can reach us by&lt;br /&gt;
* creating new issues on [http://tracker.moodle.org tracker], &lt;br /&gt;
* joining the [https://moodleassociation.org/ Moodle Users Association] to vote on a new project for each release, &lt;br /&gt;
* discussing your ideas on the [https://moodle.org/forums forums], &lt;br /&gt;
* creating new solutions as a plugin in the [https://moodle.org/plugins Moodle Plugins directory], &lt;br /&gt;
* or meeting us in person at one of our [https://moodle.com/events/ MoodleMoots]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Moodle also has an extensive network of [https://moodle.com/partners Moodle Partners]. Moodle Partners are service providers that are certified by Moodle HQ to provide high quality Moodle services for schools, institutions and organisations. We work closely with our partners to determine the needs of Moodle Users and improve the platform.&lt;br /&gt;
&lt;br /&gt;
Our Roadmap is built via our [[Roadmap process]]. This process is continuously evolving but it always seeks to involve all our key stakeholders - students, teachers, admins, institutions, and of course our partners and supporters.&lt;br /&gt;
= The big picture =&lt;br /&gt;
Working on the Moodle learning platform involves millions of moving parts, and every release generally includes hundreds of improvements. However, there are &#039;&#039;&#039;four main goals&#039;&#039;&#039; that we are focussing on for the next two years:&lt;br /&gt;
=== User experience and flow ===&lt;br /&gt;
The entire user experience from onboarding, into daily teaching/learning and expert customisation of Moodle is the core value of what makes Moodle useful or not in the real world, in fully online and blended modes.&lt;br /&gt;
&lt;br /&gt;
While we’re working on hundreds of smaller, annoying issues, we are also doing some major re-thinking around what an LMS should be in the next decade and beyond as a tool to empower educators and learners.&lt;br /&gt;
=== Enabling all our developers ===&lt;br /&gt;
Our significant community of engaged developers are an amazing group of over 1000 people - many of them make a living being part of the Moodle community.&lt;br /&gt;
&lt;br /&gt;
We are of course working on ways to make Moodle programming easier and better, with better training and support as well as improved APIs, plugins, integrations and support for modern technologies.&lt;br /&gt;
&lt;br /&gt;
However, a particularly exciting initiative is the new Moodle Plugins Service, due in 2021, which will provide an “app store” experience on which all developers can build financial sustainability for their work, while teachers will have easier access to use hundreds of new plugins in their courses via the web interface, without needing to convince their admins to install code. This will help the entire plugins ecosystem.&lt;br /&gt;
===Better integrations between Moodle products===&lt;br /&gt;
The current Moodle products already integrate with each other, of course, but there is much more to be done to make them work together more seamlessly, as part of one platform, so that our users have a better experience and also so that they become more aware of solutions to their problems.&lt;br /&gt;
=== Better integration with the world ===&lt;br /&gt;
Moodle is never used alone, and it is a part of many ecosystems at many levels. We must connect to all kinds of other systems, we must of course comply with new legislation such as the GDPR, Accessibility and much more.&lt;br /&gt;
&lt;br /&gt;
In particular though, we are committed to helping to promote [https://openedtech.global/ &amp;lt;span class=&amp;quot;underline&amp;quot;&amp;gt;Open EdTech&amp;lt;/span&amp;gt;] and to work closely with qualified Open EdTech products and major stakeholders to design and build an open architecture for a long-term future.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Roadmap timeline =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;2021&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Moodle LMS&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Moodle Workplace&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Moodle Apps&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;MoodleCloud&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;MoodleNet&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Moodle Academy&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Q1&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Minor release(s)&lt;br /&gt;
| &#039;&#039;&#039;Dashboards&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Q2&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Moodle 3.11&lt;br /&gt;
* Student activity completion (MUA)&lt;br /&gt;
* Open Badges v2.1 (Badge Connect API)&lt;br /&gt;
* Accessibility toolkit integration&lt;br /&gt;
&#039;&#039;&#039;Minor release(s)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
* Learn Moodle Teaching Next Level.&lt;br /&gt;
* Learn Moodle 3.11 Basics (MOOC).&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Q3&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Minor release(s)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
* [https://moodle.academy Moodle.Academy] launched.&lt;br /&gt;
&lt;br /&gt;
* [https://moodle.academy/mod/page/view.php?id=57&amp;amp;forceview=1 First Educator courses released].&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Q4&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Minor release(s)&#039;&#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;br /&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
* [https://moodle.academy/mod/page/view.php?id=57&amp;amp;forceview=1 Further Educator courses released].&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;2022&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Moodle LMS&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Moodle Workplace&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Moodle Apps&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;MoodleCloud&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;MoodleNet&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Moodle Academy&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Q1&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Minor releases(s)&#039;&#039;&#039;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
* [https://moodle.academy/mod/page/view.php?id=59&amp;amp;forceview=1 First Developer Beginner courses released].&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Q2&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Moodle 4.0&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;UX improvements&#039;&#039;&#039;&lt;br /&gt;
* Navigation&lt;br /&gt;
* Course experience&lt;br /&gt;
* Onboarding&lt;br /&gt;
* Other wins (calendar / timeline block)&lt;br /&gt;
* UI consistency via component library&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;New:&#039;&#039;&#039;&lt;br /&gt;
* LTI 1.3 Advantage Tool / Provider implementation&lt;br /&gt;
* BigBlueButton integration&lt;br /&gt;
* Atto accessibility improvements (MUA)&lt;br /&gt;
&lt;br /&gt;
* Workplace Report Builder integration&lt;br /&gt;
* Site admin presets&lt;br /&gt;
* Question bank improvements&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Minor release(s)&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Release 4.0&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Release 4.0&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Improved&#039;&#039;&#039;&lt;br /&gt;
Moodle LMS 4.0 compatibility&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Moodle Workplace 4.0 compatibility&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Classroom tools with friendly UX&lt;br /&gt;
| &#039;&#039;&#039;Release 4.0&#039;&#039;&#039;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
* [https://moodle.academy/mod/page/view.php?id=57&amp;amp;forceview=1 Further Educator courses released]*.&lt;br /&gt;
* [https://moodle.academy/mod/page/view.php?id=58&amp;amp;forceview=1 First Administrator courses released]*.&lt;br /&gt;
* [https://moodle.academy/mod/page/view.php?id=59&amp;amp;forceview=1 Further Developer courses released]*.&lt;br /&gt;
* Learn Moodle courses migrated to [https://moodle.academy Moodle.Academy].&lt;br /&gt;
* Program certificates available for purchase.&lt;br /&gt;
* Translations in languages other than English.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;A course in each learning pathway (Educator, Administrator, Developer) will introduce changes in Moodle 4.0.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Q3&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Minor release(s)&#039;&#039;&#039; &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Q4&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Moodle 4.1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;UX improvements&#039;&#039;&#039;&lt;br /&gt;
* Course activities&lt;br /&gt;
* Gradebook&lt;br /&gt;
* Global UX (tables/filters)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;New&#039;&#039;&#039;&lt;br /&gt;
* Improved integration with MoodleNet and other Moodle sites&lt;br /&gt;
* Improved integration with 3rd party platforms/tools&lt;br /&gt;
* Database improvements (MUA)&lt;br /&gt;
* Question bank improvements&lt;br /&gt;
| &lt;br /&gt;
| &#039;&#039;&#039;Release 4.1&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Release 4.1&#039;&#039;&#039;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
== Notes on the Moodle LMS releases ==&lt;br /&gt;
=== Moodle 4.1 (November 2022) ===&lt;br /&gt;
Moodle 4.1 (and following 4.x releases) will see a continuation of user experience (UX) improvements for the Moodle LMS platform. Moodle 4.0 focused on significant UX improvements for navigation and the main course page experience. In Moodle 4.1 we will focus on improving the UX for the course activities, commencing with the most widely used activities such as Assignment and Quiz. Improving the gradebook UX will be another main focus.&lt;br /&gt;
&lt;br /&gt;
Other projects include:&lt;br /&gt;
* Improving the integration with MoodleNet&lt;br /&gt;
* Investigating and commencing the project to improve messaging in Moodle (likely integrating with [https://matrix.org/ Matrix] messaging)&lt;br /&gt;
* MUA projects to improve the Database and Assignment activities&lt;br /&gt;
* Continuing the [[Question bank improvements for Moodle 4.1|Question bank improvements]] project&lt;br /&gt;
&lt;br /&gt;
===Moodle 4.0 (April 2022) ===&lt;br /&gt;
For our very large new releases such as 1.0, 2.0, 3.0 and now 4.0, we often take longer so that we can tackle more significant chunks of important core work, giving us the opportunity sometimes to make more serious changes to UX or architecture. Moodle 4.0 will focus on UX improvements.&lt;br /&gt;
&lt;br /&gt;
As part of a significant UX and design change, the current focus is on three main UX projects:&lt;br /&gt;
* [[Moodle_4.0_navigation_improvements|Improved navigation]], search and menus - MDL-69588&lt;br /&gt;
* Making it easier to create and manage courses - MDL-70907&lt;br /&gt;
* Making it easier for students to know what they need to do to complete a course, and know what’s next&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Other projects include:&lt;br /&gt;
* LTI 1.3 Advantage Tool / Provider implementation - MDL-69542&lt;br /&gt;
* BigBlueButton integration - MDL-70658&lt;br /&gt;
* a community proposal for the question bank being discussed and shaped by a consortium of universities - [[Question bank improvements for Moodle 4.0]].&lt;br /&gt;
* Integration of the [https://moodle.org/plugins/block_admin_presets admin presets] tool to enable saving, loading, and sharing of Moodle site configurations - [[Site admin presets]].&lt;br /&gt;
=== Moodle 3.11 (May 2021)===&lt;br /&gt;
In 2021 the majority of HQ developers will be focused on the UX improvements that are scheduled for Moodle 4.0. This means that the Moodle 3.11 release is anticipated to contain mostly community contributed improvements and a couple smaller HQ developments. &lt;br /&gt;
&lt;br /&gt;
Note that while we will endeavour to include all community contributions in the 3.11 release, we may defer some improvements to a later release depending on the complexity, size, and impact on other scheduled work.&lt;br /&gt;
&lt;br /&gt;
Scheduled projects for Moodle 3.11 are:&lt;br /&gt;
* [[Student activity completion]] (MUA) - MDL-70469&lt;br /&gt;
* Open Badges v2.1 (Badge Connect API) - MDL-71117&lt;br /&gt;
* Brickfield accessibility toolkit integration - MDL-71041&lt;br /&gt;
=== Release support timeframes ===&lt;br /&gt;
We are extending security support on Moodle 3.9 and Moodle 3.11 to November 2023. We are also extending general bug fix support on Moodle 3.11 by 6 months to November 2022. This will provide additional support and time for sites to make the transition to Moodle 4.0 or Moodle 4.1.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Version&lt;br /&gt;
! (Scheduled) Release date&lt;br /&gt;
! Full support period ends&lt;br /&gt;
! Security support period ends&lt;br /&gt;
|-&lt;br /&gt;
| Moodle 3.9 (LTS)&lt;br /&gt;
| 15 June 2020&lt;br /&gt;
| 10 May 2021&lt;br /&gt;
| 13 Nov 2023 (ext 6M)&lt;br /&gt;
|-&lt;br /&gt;
| Moodle 3.10&lt;br /&gt;
| 9 Nov 2020&lt;br /&gt;
| 8 Nov 2021&lt;br /&gt;
| 9 May 2022&lt;br /&gt;
|-&lt;br /&gt;
| Moodle 3.11&lt;br /&gt;
| 17 May 2021&lt;br /&gt;
| 14 Nov 2022 (ext 6M)&lt;br /&gt;
| 13 Nov 2023 (ext 12M)&lt;br /&gt;
|-&lt;br /&gt;
| Moodle 4.0&lt;br /&gt;
| Apr 2022&lt;br /&gt;
| May 2023&lt;br /&gt;
| Nov 2023&lt;br /&gt;
|-&lt;br /&gt;
| Moodle 4.1 (LTS)&lt;br /&gt;
| Nov 2022&lt;br /&gt;
| Nov 2023&lt;br /&gt;
| Nov 2025&lt;br /&gt;
|}&lt;br /&gt;
=Past releases=&lt;br /&gt;
See our [[Releases]] page for information about past releases.&lt;br /&gt;
&lt;br /&gt;
After Moodle 2.0 we switched to time-based releases rather than feature-based releases (see our [https://docs.moodle.org/dev/Process development process]). Because of this, the details above on future releases are an indication of current priorities only, and are targeted to be released in the upcoming releases. Anything not ready by the next release date will generally be pushed to the following major release.&lt;br /&gt;
==See also==&lt;br /&gt;
* [[Releases]] - versions of Moodle that have already been released&lt;br /&gt;
* https://docs.moodle.org/dev/Releases#General_release_calendar Key dates relating to future releases. &lt;br /&gt;
[[es:Plan de desarrollo]]&lt;br /&gt;
[[fr:Planification]]&lt;br /&gt;
[[Category:Core development]]&lt;/div&gt;</summary>
		<author><name>Tsala</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Moodle_4.0_release_notes&amp;diff=62126</id>
		<title>Moodle 4.0 release notes</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Moodle_4.0_release_notes&amp;diff=62126"/>
		<updated>2022-04-28T12:23:12Z</updated>

		<summary type="html">&lt;p&gt;Tsala: playlist link update&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Migrated|newDocId=/docs/release-notes}}&lt;br /&gt;
[[Releases]] &amp;gt; {{FULLPAGENAME}}&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Release date: 19 April 2022&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here is [https://tracker.moodle.org/secure/IssueNavigator!executeAdvanced.jspa?jqlQuery=project+%3D+mdl+AND+resolution+%3D+fixed+AND+fixVersion+in+%28%224.0%22%29+ORDER+BY+priority+DESC&amp;amp;runQuery=true&amp;amp;clear=true the full list of fixed issues in 4.0].&lt;br /&gt;
&lt;br /&gt;
See our [https://docs.moodle.org/400/en/New_features New features] page in the user documentation for an introduction to Moodle 4.0 with screenshots.&lt;br /&gt;
{{MediaPlayer | url = https://www.youtube.com/watch?v=sZxZ_YzsD_w&amp;amp;list=PLxcO_MFWQBDcI0BezfCOW8QRfJw6FblRn&amp;amp;ab_channel=Moodle | desc = Moodle 4.0 new features}}&lt;br /&gt;
&lt;br /&gt;
If you are upgrading from a previous version, please see [[:en:Upgrading|Upgrading]] in the user docs.&lt;br /&gt;
==Server requirements==&lt;br /&gt;
These are just the minimum supported versions. We recommend keeping all of your software and operating systems up-to-date.&lt;br /&gt;
* Moodle upgrade: Moodle 3.6 or later&lt;br /&gt;
* PHP version: minimum PHP 7.3.0 &#039;&#039;Note: minimum PHP version has increased since Moodle 3.10&#039;&#039;. PHP 7.4.x is supported too. [[Moodle and PHP|PHP 8.0 support]] is being implemented (see MDL-70745) and &#039;&#039;&#039;not ready for production&#039;&#039;&#039; yet.&lt;br /&gt;
* PHP extension &#039;&#039;&#039;sodium&#039;&#039;&#039; is recommended. It will be required in Moodle 4.2. For further details, see [https://docs.moodle.org/311/en/Environment_-_PHP_extension_sodium Environment - PHP extension sodium].&lt;br /&gt;
* PHP extension &#039;&#039;&#039;exif&#039;&#039;&#039; is recommended.&lt;br /&gt;
* PHP setting &#039;&#039;&#039;max_input_vars&#039;&#039;&#039; is recommended to be &amp;gt;= 5000 for PHP 7.x installations. It&#039;s a requirement for PHP 8.x installations. For further details, see [https://docs.moodle.org/311/en/Environment_-_max_input_vars Environment - max input vars].&lt;br /&gt;
=== Database requirements ===&lt;br /&gt;
Moodle supports the following database servers. Again, version numbers are just the minimum supported version. We recommend running the latest stable version of any software.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Database&lt;br /&gt;
! Minimum version&lt;br /&gt;
! Recommended&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.postgresql.org/ PostgreSQL]&lt;br /&gt;
| 10 (increased since Moodle 3.11)  &lt;br /&gt;
| Latest&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.mysql.com/ MySQL]&lt;br /&gt;
| 5.7 &lt;br /&gt;
| Latest&lt;br /&gt;
|-&lt;br /&gt;
| [https://mariadb.org/ MariaDB]&lt;br /&gt;
| 10.2.29 &lt;br /&gt;
| Latest&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.microsoft.com/en-us/server-cloud/products/sql-server/ Microsoft SQL Server]&lt;br /&gt;
| 2017 (increased since Moodle 3.10)&lt;br /&gt;
| Latest&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.oracle.com/us/products/database/overview/index.html Oracle Database]&lt;br /&gt;
| 11.2&lt;br /&gt;
| Latest&lt;br /&gt;
|}&lt;br /&gt;
==Client requirements==&lt;br /&gt;
=== Browser support ===&lt;br /&gt;
Moodle is compatible with any standards compliant web browser. We regularly test Moodle with the following browsers:&lt;br /&gt;
&lt;br /&gt;
Desktop:&lt;br /&gt;
* Chrome&lt;br /&gt;
* Firefox&lt;br /&gt;
* Safari&lt;br /&gt;
* Edge&lt;br /&gt;
&#039;&#039;Note: Moodle 4.0 does NOT support Internet Explorer 11.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Safari 7 and below has known compatibility issues with Moodle 4.0.&lt;br /&gt;
&lt;br /&gt;
Mobile:&lt;br /&gt;
* MobileSafari&lt;br /&gt;
* Google Chrome&lt;br /&gt;
For the best experience and optimum security, we recommend that you keep your browser up to date.&lt;br /&gt;
==Major UX improvements==&lt;br /&gt;
===Navigation improvements===&lt;br /&gt;
* MDL-70208 - Implement frontend functionality for primary navigation&lt;br /&gt;
* MDL-70207 - Implement backend functionality for primary navigation&lt;br /&gt;
* MDL-70202 - Implement frontend functionality for secondary navigation&lt;br /&gt;
* MDL-70198 - Implement backend functionality for secondary navigation&lt;br /&gt;
* MDL-70196 - Create a module based navigation bar&lt;br /&gt;
* MDL-72352 - Ensure that secondary navigation is backwards compatible&lt;br /&gt;
* MDL-73462 - Course and category management secondary and tertiary navigation&lt;br /&gt;
* MDL-71977 - Define the secondary navigation nodes that should be always displayed in the more menu in the module context&lt;br /&gt;
* MDL-71901 - Allow plugins to define their own secondary nav ordering&lt;br /&gt;
* MDL-70844 - Update the secondary navigation view to send site administration information in tab form&lt;br /&gt;
* MDL-72396 - Allow easy setting of the active tab for navigation views&lt;br /&gt;
* MDL-71912 - Implement tertiary navigation for plugins (also see MDL-71913, MDL-71914 and MDL-71914)&lt;br /&gt;
* MDL-73863 - Tertiary navigation in course completion&lt;br /&gt;
* MDL-72875 - Add tertiary navigation to the participants page&lt;br /&gt;
* MDL-72904 - Add tertiary navigation to the badges pages&lt;br /&gt;
* MDL-72873 - Add tertiary navigation to the gradebook&lt;br /&gt;
* MDL-72094 - Update the course reports page styling and functionality&lt;br /&gt;
* MDL-71083 - Move the user menu in the top bar into the primary navigation menu in the mobile view&lt;br /&gt;
* MDL-73393 - Ensure that existing third party themes still work with latest navigation changes&lt;br /&gt;
* MDL-71943 - Dynamic (AJAX) tabs in Moodle LMS&lt;br /&gt;
* MDL-72090 - Convert course admin pages from link farms to dropdowns&lt;br /&gt;
* MDL-72413 - Move the activity modules title, description, and activity completion into a standard module API&lt;br /&gt;
* MDL-72736 - Remove section navigation on one section per page&lt;br /&gt;
* MDL-72834 - Move the calendar link into the user menu&lt;br /&gt;
* MDL-72450 - Remove the next and previous activity links from all activity modules in Boost&lt;br /&gt;
* MDL-71148 - Combine both the custom menu &amp;amp; primary navigation renderers&lt;br /&gt;
* MDL-71683 - Update language menu to move from the top navigation into the user menu when logged in&lt;br /&gt;
* MDL-72005 - Update the context_header in Boost to move the breadcrumb to the top&lt;br /&gt;
===Course index===&lt;br /&gt;
* MDL-71209 - Create the new course index list&lt;br /&gt;
* MDL-72660 - Add activity completion indicators to the course index&lt;br /&gt;
* MDL-71228 - Implement drag and drop option for sections and activities in the course index&lt;br /&gt;
* MDL-71211 - Keep the status of the course index collapsed and expanded sections per user and course&lt;br /&gt;
* MDL-71795 - Course index on activity view page&lt;br /&gt;
* MDL-71828 - Implement section links&#039; behaviour in course index&lt;br /&gt;
* MDL-71664 - Enable drag &amp;amp; drop from course index to course content and vice versa&lt;br /&gt;
* MDL-72463 - Add &#039;highlighted&#039; label to course index&lt;br /&gt;
* MDL-71727 - Sync course index and course content when an element is dragged&lt;br /&gt;
* MDL-72897 - Mark the current section in the course index&lt;br /&gt;
* MDL-73340 - Open course index by default first time a user access the course&lt;br /&gt;
* MDL-73310 - Show the course index on all pages within a course&lt;br /&gt;
===Course experience===&lt;br /&gt;
* MDL-71037 - Sections are now collapsible for Topics and Weekly course formats&lt;br /&gt;
* MDL-71691 - Created a new activity UI component&lt;br /&gt;
* MDL-71689 - Improvements to add activity and add section design&lt;br /&gt;
* MDL-71663 - Created a new &amp;quot;move&amp;quot; option in the sections and activity cog menu in the course editor&lt;br /&gt;
* MDL-71779 - Made &#039;Add a new topic/week&#039; option client side on Topics and Weekly formats&lt;br /&gt;
* MDL-72311 - Proceed straight to course content when creating a new course&lt;br /&gt;
* MDL-71863 - Created core_courseformat subsystem&lt;br /&gt;
* MDL-72578 - Moved activity UI component to output classes and templates&lt;br /&gt;
* MDL-73343 - New quick access to create a new course from My courses page when there is no course available&lt;br /&gt;
===My Courses page and overview block===&lt;br /&gt;
* MDL-70801 - Implement &amp;quot;My courses&amp;quot; page&lt;br /&gt;
* MDL-58579 - Allow searching / filtering of courses in myoverview&lt;br /&gt;
* MDL-73231 - Provide option of having My courses as defaulthomepage&lt;br /&gt;
===Timeline block===&lt;br /&gt;
* MDL-72276 - Update timeline block dropdowns to display current selection&lt;br /&gt;
* MDL-72277 - Improve the layout and usability of the items in the timeline block&lt;br /&gt;
* MDL-73068 - Only display courses in the timeline block if they contain events&lt;br /&gt;
* MDL-72295 - Add text search to the timeline block&lt;br /&gt;
* MDL-72594 - Improve displaying of overdue items in the timeline block&lt;br /&gt;
* MDL-72603 - Replace timeline block pagination with &amp;quot;show more&amp;quot; lazy loading&lt;br /&gt;
* MDL-72543 - Change the display of the event names of the items on the timeline block&lt;br /&gt;
===Calendar usability===&lt;br /&gt;
* MDL-71817 - Render the calendar in the calendar block in month view&lt;br /&gt;
* MDL-72237 - Limit number of events shown per day in calendar month view&lt;br /&gt;
* MDL-71810 - Add a current date indicator and make calendar block responsive when switching between small and large views&lt;br /&gt;
* MDL-71808 - Move the import calendar form to its own page&lt;br /&gt;
* MDL-72045 - Improve help information provided on the calendar export page&lt;br /&gt;
* MDL-71790 - Revamp the manage subscriptions page&lt;br /&gt;
* MDL-71788 - Make it easier to copy the export URL&lt;br /&gt;
* MDL-71775 - Add footer links to the calendar block&lt;br /&gt;
* MDL-72810 - Remove 3-month calendar view&lt;br /&gt;
===Dashboard===&lt;br /&gt;
* MDL-72092 - Arrange blocks between My courses &amp;amp; My dashboard&lt;br /&gt;
* MDL-73114 - Display a title in the dashboard page&lt;br /&gt;
* MDL-71964 - Welcome message for users&lt;br /&gt;
* MDL-73233 - Provide option to disable the Dashboard&lt;br /&gt;
* MDL-72116 - Remove some of the default blocks from the Dashboard&lt;br /&gt;
===User tours===&lt;br /&gt;
* MDL-61674 - Allow user tours to be created using the Atto text editor&lt;br /&gt;
* MDL-72385 - Improve and simplify design of user tours&lt;br /&gt;
* MDL-71938 - Display number of steps in a user tour&lt;br /&gt;
* MDL-72783 - Add new user tours&lt;br /&gt;
* MDL-72781 - Remove previous user tours&lt;br /&gt;
* MDL-72557 - Implement customisable confirmation button for single step user tours&lt;br /&gt;
* MDL-71931 - Update user tours to emit events&lt;br /&gt;
===Other usability and user experience improvements===&lt;br /&gt;
* MDL-69371 - Redesign the Moodle login page (also see MDL-72928)&lt;br /&gt;
* MDL-71457 - Update the Moodle activity icons&lt;br /&gt;
* MDL-71963 - Turn confirmation page into modals&lt;br /&gt;
* MDL-71965 - New footer&lt;br /&gt;
* MDL-71456 - Create page drawers for the block and course index areas&lt;br /&gt;
* MDL-72095 - Set a main container width of Boost pages&lt;br /&gt;
* MDL-71610 - Move the turn editing on button into the navbar&lt;br /&gt;
* MDL-72305 - Show user initials as a placeholder for the user profile picture&lt;br /&gt;
* MDL-72278 - Fake blocks now in drawer are made visible on first visit&lt;br /&gt;
* MDL-72454 - Removal of back to top link&lt;br /&gt;
* MDL-72088 - Update styling across top level pages&lt;br /&gt;
* MDL-70888 - Update the layouts in Boost theme&lt;br /&gt;
* MDL-71292 - Update the page header and include course image / activity icon&lt;br /&gt;
* MDL-73608 - Provide a contact form which sends to the site support email and replace mailto link in footer&lt;br /&gt;
* MDL-73935 - Improved flexibility of site support form and consistency of site support info provided in Moodle&lt;br /&gt;
* MDL-61564 - Allow multiple cohort selection in cohort enrolment&lt;br /&gt;
* MDL-66539 - Better handling of link names and URLs with Atto&lt;br /&gt;
* MDL-73797 - Dialogues now have the action button on the right&lt;br /&gt;
* MDL-60917 - Add highest ranked results section to global search&lt;br /&gt;
* MDL-73917 - Notification preferences page improvements&lt;br /&gt;
* MDL-72500 - Easier to find a specific component in event list report&lt;br /&gt;
* MDL-32103 - Course completion is instant for activity based completion criteria (single user completions only)&lt;br /&gt;
==Other major features==&lt;br /&gt;
===Report builder integration (from Moodle Workplace)===&lt;br /&gt;
* MDL-70795 - Implement functionality for creating custom reports&lt;br /&gt;
* MDL-70794 - Implement functionality for creating system reports&lt;br /&gt;
* MDL-72588 - Implement custom report audiences&lt;br /&gt;
* MDL-72598 - Implement custom report schedules&lt;br /&gt;
* MDL-73598 - Allow Custom Reports to be disabled by site admin&lt;br /&gt;
* MDL-72280 - Create &amp;quot;Courses&amp;quot; custom report source&lt;br /&gt;
* MDL-73069 - Report condition to limit returned data to current user&lt;br /&gt;
* MDL-73180 - Improve definitions of previous/next relative date filters&lt;br /&gt;
* MDL-72662 - Implement relative date options in the Reportbuilder date filter&lt;br /&gt;
* MDL-72172 - Create &amp;quot;Cohort members&amp;quot; custom report source&lt;br /&gt;
* MDL-72962 - Format editable report elements (column, filters, etc)&lt;br /&gt;
* MDL-72826 - Custom report option to display unique row values&lt;br /&gt;
* MDL-71153 - Convert task logs report to a system report&lt;br /&gt;
* MDL-71070 - Convert configuration changes report to a system report&lt;br /&gt;
===BigBlueButton integration===&lt;br /&gt;
* MDL-70658 - Integrate the BigBlueButton plugin into Moodle LMS&lt;br /&gt;
===Quiz and Questions===&lt;br /&gt;
* MDL-71516 - Create new plugin type - Qbank (for the full list of qbank plugins added to core, see MDL-70329)&lt;br /&gt;
* MDL-71679 - Update mod_quiz for new question bank&lt;br /&gt;
* MDL-71636 - Add a columnsortorder settings page &lt;br /&gt;
* MDL-71696 - Add question versions&lt;br /&gt;
* MDL-72076 - Question bank bulk action UI&lt;br /&gt;
* MDL-72553 - Add custom fields to questions&lt;br /&gt;
* MDL-52206 - Move &amp;quot;Require passing grade&amp;quot; completion option to core&lt;br /&gt;
* MDL-52456 - Add notification message for students after questions have been manually graded&lt;br /&gt;
* MDL-71984 - Add logging to quiz auto-save, process_attempt and redo_question&lt;br /&gt;
* MDL-73337 - Log editing quizzes in detail&lt;br /&gt;
* MDL-73699 - Question status UI/UX update&lt;br /&gt;
* MDL-72448 - Add qbank_history to core&lt;br /&gt;
* MDL-71614 - Add qbank_previewquestion to core&lt;br /&gt;
===Update LTI tool provider feature to support 1.3===&lt;br /&gt;
* MDL-69543 - Update tool to support 1.3 OAuth2/OIDC launch flow&lt;br /&gt;
* MDL-71371 - Provide upgrade path for 1.1 preconfigured tools&lt;br /&gt;
* MDL-72745 - Provide account provisioning options for LTI Advantage launches&lt;br /&gt;
* MDL-69547 - Update tool enrolment code so that a user is automatically created and enrolled when launching via 1.3&lt;br /&gt;
* MDL-69545 - Update user sync task to support 1.3 messages&lt;br /&gt;
* MDL-69544 - Update grade sync task to support 1.3 messages&lt;br /&gt;
* MDL-72288 - Update library and model code to support issuer and clientid uniqueness on registrations&lt;br /&gt;
* MDL-69862 - Add dynamic registration support to the tool&lt;br /&gt;
* MDL-70354 - Return line item information during content selection&lt;br /&gt;
===Assignment===&lt;br /&gt;
* MDL-68913 - Per attempt timing now available in assignments&lt;br /&gt;
===Admin configuration presets===&lt;br /&gt;
* MDL-72112 - Integrate admin_presets third-party plugin in Moodle LMS&lt;br /&gt;
* MDL-73145 - Add a $CFG setting to define the preset to be installed&lt;br /&gt;
* MDL-72114 - Include pre-installed admin presets&lt;br /&gt;
* MDL-72113 - Add feature to import/export plugins visibility from Admin presets tool&lt;br /&gt;
* MDL-73394 - Store the latest site admin preset applied&lt;br /&gt;
===Content bank and H5P===&lt;br /&gt;
* MDL-68394 - Integrate mod_h5pactivity with recent activity plugins&lt;br /&gt;
* MDL-72099 - Add navigation by contexts in the content bank&lt;br /&gt;
* MDL-71885 - Inline editing H5P content for mod_h5pactivity&lt;br /&gt;
* MDL-71956 - Inline editing H5P content anywhere&lt;br /&gt;
===Badges===&lt;br /&gt;
* MDL-72141 - Simplifying the external badge page&lt;br /&gt;
===Accessibility improvements===&lt;br /&gt;
* MDL-67853 - Remove online-offline options on notifications&lt;br /&gt;
* MDL-72078 - Give users an indication that they encountered an editor&lt;br /&gt;
* MDL-71604 - Move the screen reader helper button to the first row&lt;br /&gt;
* MDL-72896 - Make html_tables responsive by default&lt;br /&gt;
==Other Highlights==&lt;br /&gt;
===Functional changes===&lt;br /&gt;
* MDL-70456 - Add custom user field support to all places that display user identity [0,Minor] Improvement  &lt;br /&gt;
* MDL-73342 - Disable some blocks by default (such as feedback, RSS and self-completion)&lt;br /&gt;
* MDL-70905 - Updated media default width/height to use 16:9&lt;br /&gt;
* MDL-72118 - Rename &amp;quot;HTML block&amp;quot; to the more easily understood &amp;quot;Text block&amp;quot; &lt;br /&gt;
* MDL-72706 - Change default value of &amp;quot;Hidden sections&amp;quot; course format setting&lt;br /&gt;
* MDL-72115 - Rename &amp;quot;Miscellaneous&amp;quot; category to &amp;quot;Category 1&amp;quot;&lt;br /&gt;
* MDL-72119 - Make “Enable xxxxx” features consistent (hide menus for disabled features)&lt;br /&gt;
===For administrators===&lt;br /&gt;
* MDL-71347 - Add a filter to &amp;quot;browse list of users&amp;quot; for date of user account creation&lt;br /&gt;
* MDL-72031 - Separate out max_time for audio and video files in Atto/RecordRTC&lt;br /&gt;
* MDL-71515 - Improve the test outgoing mail configuration admin page&lt;br /&gt;
* MDL-67686 - Add more filters to task log (/admin/tasklogs.php)&lt;br /&gt;
* MDL-72984 - Ensure support email address is mandatory&lt;br /&gt;
* MDL-73592 - MoodleNet integration now enabled by default&lt;br /&gt;
* MDL-71621 - Parent role cannot edit custom fields in child profile&lt;br /&gt;
* MDL-73918 - Allow admins to change the page width using custom SCSS&lt;br /&gt;
* MDL-71927 - Logs and question attempt history now show time to the second, to help investigate issues&lt;br /&gt;
* MDL-71466 - Custom user field support: Admin role screens (check permissions, assign)&lt;br /&gt;
* MDL-72619 - Provide admin page to view cache size estimates&lt;br /&gt;
* MDL-67822 - New check_database_schema performance check&lt;br /&gt;
* MDL-70271 - Dropbox token and Permission Updates&lt;br /&gt;
* MDL-58395 - LDAP auth sync now skip and report problematic user accounts&lt;br /&gt;
* MDL-72251 - Tasks admin UI now shows time to nearest second&lt;br /&gt;
===Mobile===&lt;br /&gt;
* MDL-67807 - Return concurrent sessions information to apply concurrent login limit in the mobile app&lt;br /&gt;
* MDL-69555 - Make duration of QR login and auto-login time between requests configurable&lt;br /&gt;
* MDL-73794 - Update the footer in the mobile view&lt;br /&gt;
===Performance===&lt;br /&gt;
* MDL-72596 - Caching: Track cache I/O size in perfdebug&lt;br /&gt;
* MDL-69088 - Make file cache store purges instant with a safe and async purge&lt;br /&gt;
* MDL-68164 - Additional caching of pg_field_type postgres field metadata&lt;br /&gt;
* MDL-63983 - Improve the performance of non-contact searches in messaging when site-wide messaging is disabled (default)&lt;br /&gt;
* MDL-71014 - Cache the siteidentifier and site contextid in local cache&lt;br /&gt;
* MDL-72328 - Add TTL support for Redis caches&lt;br /&gt;
* MDL-72837 - Cache API should support versioned data&lt;br /&gt;
==Security improvements==&lt;br /&gt;
* MDL-56873 - Set more secure defaults for the cURL allow/deny lists&lt;br /&gt;
* MDL-66776 - Send notifications when new devices are used to log in into the site&lt;br /&gt;
* MDL-71627 - Add check API for anti virus and optionally remove admin notifications&lt;br /&gt;
* MDL-71806 - Improved the UX of the Moodle security report&lt;br /&gt;
* MDL-71176 - New password and change forms should have autocomplete=&amp;quot;new-password&amp;quot;&lt;br /&gt;
==For developers==&lt;br /&gt;
* MDL-61460 - Introduce the UI components library&lt;br /&gt;
* MDL-74229 - Add navigation node keys to allow themers to hide navigation tabs&lt;br /&gt;
* MDL-74235 - Rename the icons for activities to allow support of multiple icons for multiple versions&lt;br /&gt;
* MDL-74033 - Allow full customisation of the primary navigation&lt;br /&gt;
* MDL-72779 - Set more than one value on a persistent at the same time&lt;br /&gt;
* MDL-70862 - Implement a new callback to extend gradebook plugininfo&lt;br /&gt;
* MDL-72289 - Allow callers to customise the rendered icon of inplace editable elements&lt;br /&gt;
* MDL-73347 - Allow themes to define un-addable blocks&lt;br /&gt;
* MDL-46778 - Allow use a separate DB configuration (not just prefix) for Behat similar to PHPUnit&lt;br /&gt;
* MDL-73270 - Warn where XMLRPC is currently in use&lt;br /&gt;
* MDL-67228 - Tool_replace maturity set&lt;br /&gt;
===Web service additions and updates===&lt;br /&gt;
* MDL-71135 - Create core_course_get_state web service&lt;br /&gt;
* MDL-71165 - Create core_course_update_course web service&lt;br /&gt;
===Core plugins removed===&lt;br /&gt;
* MDL-71473 - Jabber removed as a standard notification plugin&lt;br /&gt;
* MDL-58939 - Picasa repository and portfolio removed from core&lt;br /&gt;
* MDL-72335 - Tool_health removed from core&lt;br /&gt;
* MDL-72615 - Boxnet plugins removed from core&lt;br /&gt;
* MDL-72616 - Quiz results block removed from core&lt;br /&gt;
* MDL-72348 - Microsoft OneDrive (legacy) repository (repository_skydrive) removed from core&lt;br /&gt;
* MDL-72347 - Word censorship filter (filter_censor) removed from core&lt;br /&gt;
* MDL-72407 - VideoJS Flash plugin removed from core&lt;br /&gt;
* MDL-72042 - Flash animation media player removed from core&lt;br /&gt;
* MDL-72041 - WebCT question import format removed from core&lt;br /&gt;
* MDL-72517 - Examview question import format removed from core&lt;br /&gt;
===Deprecations===&lt;br /&gt;
* MDL-53544 - Typo3 library removed&lt;br /&gt;
* MDL-72004 - Quiz 4.0 Class renaming and deprecation&lt;br /&gt;
* MDL-73756 - Deprecate $modinfo param to completion_info::get_data()&lt;br /&gt;
* MDL-65799 - Phase 2 of deprecation of functions in lib/deprecatedlib.php initially deprecated in 3.8&lt;br /&gt;
* MDL-71175 - Deprecate some plagiarism functions that are not used, or have replacements&lt;br /&gt;
* MDL-66266 - Remove deprecated functions in messages/classes/api.php&lt;br /&gt;
* MDL-72098 - deprecate grade_grade::insert method that just calls its parent&lt;br /&gt;
* MDL-72433 - Final deprecation of get_grades() in lib/classes/grades_external.php&lt;br /&gt;
* MDL-71476 - Remove mysql_engine.php&lt;br /&gt;
* MDL-65252 - Final deprecations of forum_count_replies and get_forum_discussion_posts&lt;br /&gt;
* MDL-67412 - Remove deprecated functions in lib/setuplib.php &lt;br /&gt;
* MDL-65801 - Remove strings deprecated in 3.8&lt;br /&gt;
===Component API updates===&lt;br /&gt;
* admin/tool/generator/upgrade.txt&lt;br /&gt;
* admin/tool/log/upgrade.txt&lt;br /&gt;
* admin/tool/mobile/upgrade.txt&lt;br /&gt;
* admin/tool/upgrade.txt&lt;br /&gt;
* admin/tool/usertours/upgrade.txt&lt;br /&gt;
* admin/upgrade.txt&lt;br /&gt;
* analytics/upgrade.txt&lt;br /&gt;
* auth/shibboleth/upgrade.txt&lt;br /&gt;
* availability/upgrade.txt&lt;br /&gt;
* backup/upgrade.txt&lt;br /&gt;
* badges/upgrade.txt&lt;br /&gt;
* blocks/section_links/upgrade.txt&lt;br /&gt;
* blocks/tag_youtube/upgrade.txt&lt;br /&gt;
* blocks/timeline/upgrade.txt&lt;br /&gt;
* blocks/upgrade.txt&lt;br /&gt;
* cache/upgrade.txt&lt;br /&gt;
* calendar/upgrade.txt&lt;br /&gt;
* completion/upgrade.txt&lt;br /&gt;
* contentbank/upgrade.txt&lt;br /&gt;
* course/format/upgrade.txt&lt;br /&gt;
* course/upgrade.txt&lt;br /&gt;
* customfield/upgrade.txt&lt;br /&gt;
* dataformat/upgrade.txt&lt;br /&gt;
* enrol/database/upgrade.txt&lt;br /&gt;
* enrol/upgrade.txt&lt;br /&gt;
* filter/upgrade.txt&lt;br /&gt;
* grade/grading/form/upgrade.txt&lt;br /&gt;
* grade/upgrade.txt&lt;br /&gt;
* group/upgrade.txt&lt;br /&gt;
* h5p/upgrade.txt&lt;br /&gt;
* lib/upgrade.txt&lt;br /&gt;
* media/upgrade.txt&lt;br /&gt;
* message/upgrade.txt&lt;br /&gt;
* mod/assign/upgrade.txt&lt;br /&gt;
* mod/book/upgrade.txt&lt;br /&gt;
* mod/feedback/upgrade.txt&lt;br /&gt;
* mod/forum/upgrade.txt&lt;br /&gt;
* mod/glossary/upgrade.txt&lt;br /&gt;
* mod/h5pactivity/upgrade.txt&lt;br /&gt;
* mod/lesson/upgrade.txt&lt;br /&gt;
* mod/lti/upgrade.txt&lt;br /&gt;
* mod/page/upgrade.txt&lt;br /&gt;
* mod/quiz/upgrade.txt&lt;br /&gt;
* mod/resource/upgrade.txt&lt;br /&gt;
* mod/scorm/upgrade.txt&lt;br /&gt;
* mod/upgrade.txt&lt;br /&gt;
* mod/url/upgrade.txt&lt;br /&gt;
* mod/wiki/upgrade.txt&lt;br /&gt;
* mod/workshop/upgrade.txt&lt;br /&gt;
* my/upgrade.txt&lt;br /&gt;
* payment/upgrade.txt&lt;br /&gt;
* plagiarism/upgrade.txt&lt;br /&gt;
* portfolio/upgrade.txt&lt;br /&gt;
* question/bank/upgrade.txt&lt;br /&gt;
* question/behaviour/upgrade.txt&lt;br /&gt;
* question/engine/upgrade.txt&lt;br /&gt;
* question/format/upgrade.txt&lt;br /&gt;
* question/type/multichoice/upgrade.txt&lt;br /&gt;
* question/type/upgrade.txt&lt;br /&gt;
* question/upgrade.txt&lt;br /&gt;
* report/eventlist/upgrade.txt&lt;br /&gt;
* report/upgrade.txt&lt;br /&gt;
* repository/upgrade.txt&lt;br /&gt;
* search/upgrade.txt&lt;br /&gt;
* theme/upgrade.txt&lt;br /&gt;
* user/upgrade.txt&lt;br /&gt;
* webservice/upgrade.txt&lt;br /&gt;
 &lt;br /&gt;
==See also==&lt;br /&gt;
*[[Moodle 3.11 release notes]]&lt;br /&gt;
 &lt;br /&gt;
[[Category:Release notes]]&lt;br /&gt;
[[Category:Moodle 4.0]]&lt;br /&gt;
 &lt;br /&gt;
[[fr:Notes de version de Moodle 4.0]]&lt;br /&gt;
[[es:Notas de Moodle 4.0]]&lt;/div&gt;</summary>
		<author><name>Tsala</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Moodle_4.0_release_notes&amp;diff=62125</id>
		<title>Moodle 4.0 release notes</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Moodle_4.0_release_notes&amp;diff=62125"/>
		<updated>2022-04-28T09:24:34Z</updated>

		<summary type="html">&lt;p&gt;Tsala: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Migrated|newDocId=/docs/release-notes}}&lt;br /&gt;
[[Releases]] &amp;gt; {{FULLPAGENAME}}&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Release date: 19 April 2022&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here is [https://tracker.moodle.org/secure/IssueNavigator!executeAdvanced.jspa?jqlQuery=project+%3D+mdl+AND+resolution+%3D+fixed+AND+fixVersion+in+%28%224.0%22%29+ORDER+BY+priority+DESC&amp;amp;runQuery=true&amp;amp;clear=true the full list of fixed issues in 4.0].&lt;br /&gt;
&lt;br /&gt;
See our [https://docs.moodle.org/400/en/New_features New features] page in the user documentation for an introduction to Moodle 4.0 with screenshots.&lt;br /&gt;
{{MediaPlayer | url = https://youtu.be/sZxZ_YzsD_w | desc = Moodle 4.0 new features}}&lt;br /&gt;
&lt;br /&gt;
If you are upgrading from a previous version, please see [[:en:Upgrading|Upgrading]] in the user docs.&lt;br /&gt;
==Server requirements==&lt;br /&gt;
These are just the minimum supported versions. We recommend keeping all of your software and operating systems up-to-date.&lt;br /&gt;
* Moodle upgrade: Moodle 3.6 or later&lt;br /&gt;
* PHP version: minimum PHP 7.3.0 &#039;&#039;Note: minimum PHP version has increased since Moodle 3.10&#039;&#039;. PHP 7.4.x is supported too. [[Moodle and PHP|PHP 8.0 support]] is being implemented (see MDL-70745) and &#039;&#039;&#039;not ready for production&#039;&#039;&#039; yet.&lt;br /&gt;
* PHP extension &#039;&#039;&#039;sodium&#039;&#039;&#039; is recommended. It will be required in Moodle 4.2. For further details, see [https://docs.moodle.org/311/en/Environment_-_PHP_extension_sodium Environment - PHP extension sodium].&lt;br /&gt;
* PHP extension &#039;&#039;&#039;exif&#039;&#039;&#039; is recommended.&lt;br /&gt;
* PHP setting &#039;&#039;&#039;max_input_vars&#039;&#039;&#039; is recommended to be &amp;gt;= 5000 for PHP 7.x installations. It&#039;s a requirement for PHP 8.x installations. For further details, see [https://docs.moodle.org/311/en/Environment_-_max_input_vars Environment - max input vars].&lt;br /&gt;
=== Database requirements ===&lt;br /&gt;
Moodle supports the following database servers. Again, version numbers are just the minimum supported version. We recommend running the latest stable version of any software.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Database&lt;br /&gt;
! Minimum version&lt;br /&gt;
! Recommended&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.postgresql.org/ PostgreSQL]&lt;br /&gt;
| 10 (increased since Moodle 3.11)  &lt;br /&gt;
| Latest&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.mysql.com/ MySQL]&lt;br /&gt;
| 5.7 &lt;br /&gt;
| Latest&lt;br /&gt;
|-&lt;br /&gt;
| [https://mariadb.org/ MariaDB]&lt;br /&gt;
| 10.2.29 &lt;br /&gt;
| Latest&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.microsoft.com/en-us/server-cloud/products/sql-server/ Microsoft SQL Server]&lt;br /&gt;
| 2017 (increased since Moodle 3.10)&lt;br /&gt;
| Latest&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.oracle.com/us/products/database/overview/index.html Oracle Database]&lt;br /&gt;
| 11.2&lt;br /&gt;
| Latest&lt;br /&gt;
|}&lt;br /&gt;
==Client requirements==&lt;br /&gt;
=== Browser support ===&lt;br /&gt;
Moodle is compatible with any standards compliant web browser. We regularly test Moodle with the following browsers:&lt;br /&gt;
&lt;br /&gt;
Desktop:&lt;br /&gt;
* Chrome&lt;br /&gt;
* Firefox&lt;br /&gt;
* Safari&lt;br /&gt;
* Edge&lt;br /&gt;
&#039;&#039;Note: Moodle 4.0 does NOT support Internet Explorer 11.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Safari 7 and below has known compatibility issues with Moodle 4.0.&lt;br /&gt;
&lt;br /&gt;
Mobile:&lt;br /&gt;
* MobileSafari&lt;br /&gt;
* Google Chrome&lt;br /&gt;
For the best experience and optimum security, we recommend that you keep your browser up to date.&lt;br /&gt;
==Major UX improvements==&lt;br /&gt;
===Navigation improvements===&lt;br /&gt;
* MDL-70208 - Implement frontend functionality for primary navigation&lt;br /&gt;
* MDL-70207 - Implement backend functionality for primary navigation&lt;br /&gt;
* MDL-70202 - Implement frontend functionality for secondary navigation&lt;br /&gt;
* MDL-70198 - Implement backend functionality for secondary navigation&lt;br /&gt;
* MDL-70196 - Create a module based navigation bar&lt;br /&gt;
* MDL-72352 - Ensure that secondary navigation is backwards compatible&lt;br /&gt;
* MDL-73462 - Course and category management secondary and tertiary navigation&lt;br /&gt;
* MDL-71977 - Define the secondary navigation nodes that should be always displayed in the more menu in the module context&lt;br /&gt;
* MDL-71901 - Allow plugins to define their own secondary nav ordering&lt;br /&gt;
* MDL-70844 - Update the secondary navigation view to send site administration information in tab form&lt;br /&gt;
* MDL-72396 - Allow easy setting of the active tab for navigation views&lt;br /&gt;
* MDL-71912 - Implement tertiary navigation for plugins (also see MDL-71913, MDL-71914 and MDL-71914)&lt;br /&gt;
* MDL-73863 - Tertiary navigation in course completion&lt;br /&gt;
* MDL-72875 - Add tertiary navigation to the participants page&lt;br /&gt;
* MDL-72904 - Add tertiary navigation to the badges pages&lt;br /&gt;
* MDL-72873 - Add tertiary navigation to the gradebook&lt;br /&gt;
* MDL-72094 - Update the course reports page styling and functionality&lt;br /&gt;
* MDL-71083 - Move the user menu in the top bar into the primary navigation menu in the mobile view&lt;br /&gt;
* MDL-73393 - Ensure that existing third party themes still work with latest navigation changes&lt;br /&gt;
* MDL-71943 - Dynamic (AJAX) tabs in Moodle LMS&lt;br /&gt;
* MDL-72090 - Convert course admin pages from link farms to dropdowns&lt;br /&gt;
* MDL-72413 - Move the activity modules title, description, and activity completion into a standard module API&lt;br /&gt;
* MDL-72736 - Remove section navigation on one section per page&lt;br /&gt;
* MDL-72834 - Move the calendar link into the user menu&lt;br /&gt;
* MDL-72450 - Remove the next and previous activity links from all activity modules in Boost&lt;br /&gt;
* MDL-71148 - Combine both the custom menu &amp;amp; primary navigation renderers&lt;br /&gt;
* MDL-71683 - Update language menu to move from the top navigation into the user menu when logged in&lt;br /&gt;
* MDL-72005 - Update the context_header in Boost to move the breadcrumb to the top&lt;br /&gt;
===Course index===&lt;br /&gt;
* MDL-71209 - Create the new course index list&lt;br /&gt;
* MDL-72660 - Add activity completion indicators to the course index&lt;br /&gt;
* MDL-71228 - Implement drag and drop option for sections and activities in the course index&lt;br /&gt;
* MDL-71211 - Keep the status of the course index collapsed and expanded sections per user and course&lt;br /&gt;
* MDL-71795 - Course index on activity view page&lt;br /&gt;
* MDL-71828 - Implement section links&#039; behaviour in course index&lt;br /&gt;
* MDL-71664 - Enable drag &amp;amp; drop from course index to course content and vice versa&lt;br /&gt;
* MDL-72463 - Add &#039;highlighted&#039; label to course index&lt;br /&gt;
* MDL-71727 - Sync course index and course content when an element is dragged&lt;br /&gt;
* MDL-72897 - Mark the current section in the course index&lt;br /&gt;
* MDL-73340 - Open course index by default first time a user access the course&lt;br /&gt;
* MDL-73310 - Show the course index on all pages within a course&lt;br /&gt;
===Course experience===&lt;br /&gt;
* MDL-71037 - Sections are now collapsible for Topics and Weekly course formats&lt;br /&gt;
* MDL-71691 - Created a new activity UI component&lt;br /&gt;
* MDL-71689 - Improvements to add activity and add section design&lt;br /&gt;
* MDL-71663 - Created a new &amp;quot;move&amp;quot; option in the sections and activity cog menu in the course editor&lt;br /&gt;
* MDL-71779 - Made &#039;Add a new topic/week&#039; option client side on Topics and Weekly formats&lt;br /&gt;
* MDL-72311 - Proceed straight to course content when creating a new course&lt;br /&gt;
* MDL-71863 - Created core_courseformat subsystem&lt;br /&gt;
* MDL-72578 - Moved activity UI component to output classes and templates&lt;br /&gt;
* MDL-73343 - New quick access to create a new course from My courses page when there is no course available&lt;br /&gt;
===My Courses page and overview block===&lt;br /&gt;
* MDL-70801 - Implement &amp;quot;My courses&amp;quot; page&lt;br /&gt;
* MDL-58579 - Allow searching / filtering of courses in myoverview&lt;br /&gt;
* MDL-73231 - Provide option of having My courses as defaulthomepage&lt;br /&gt;
===Timeline block===&lt;br /&gt;
* MDL-72276 - Update timeline block dropdowns to display current selection&lt;br /&gt;
* MDL-72277 - Improve the layout and usability of the items in the timeline block&lt;br /&gt;
* MDL-73068 - Only display courses in the timeline block if they contain events&lt;br /&gt;
* MDL-72295 - Add text search to the timeline block&lt;br /&gt;
* MDL-72594 - Improve displaying of overdue items in the timeline block&lt;br /&gt;
* MDL-72603 - Replace timeline block pagination with &amp;quot;show more&amp;quot; lazy loading&lt;br /&gt;
* MDL-72543 - Change the display of the event names of the items on the timeline block&lt;br /&gt;
===Calendar usability===&lt;br /&gt;
* MDL-71817 - Render the calendar in the calendar block in month view&lt;br /&gt;
* MDL-72237 - Limit number of events shown per day in calendar month view&lt;br /&gt;
* MDL-71810 - Add a current date indicator and make calendar block responsive when switching between small and large views&lt;br /&gt;
* MDL-71808 - Move the import calendar form to its own page&lt;br /&gt;
* MDL-72045 - Improve help information provided on the calendar export page&lt;br /&gt;
* MDL-71790 - Revamp the manage subscriptions page&lt;br /&gt;
* MDL-71788 - Make it easier to copy the export URL&lt;br /&gt;
* MDL-71775 - Add footer links to the calendar block&lt;br /&gt;
* MDL-72810 - Remove 3-month calendar view&lt;br /&gt;
===Dashboard===&lt;br /&gt;
* MDL-72092 - Arrange blocks between My courses &amp;amp; My dashboard&lt;br /&gt;
* MDL-73114 - Display a title in the dashboard page&lt;br /&gt;
* MDL-71964 - Welcome message for users&lt;br /&gt;
* MDL-73233 - Provide option to disable the Dashboard&lt;br /&gt;
* MDL-72116 - Remove some of the default blocks from the Dashboard&lt;br /&gt;
===User tours===&lt;br /&gt;
* MDL-61674 - Allow user tours to be created using the Atto text editor&lt;br /&gt;
* MDL-72385 - Improve and simplify design of user tours&lt;br /&gt;
* MDL-71938 - Display number of steps in a user tour&lt;br /&gt;
* MDL-72783 - Add new user tours&lt;br /&gt;
* MDL-72781 - Remove previous user tours&lt;br /&gt;
* MDL-72557 - Implement customisable confirmation button for single step user tours&lt;br /&gt;
* MDL-71931 - Update user tours to emit events&lt;br /&gt;
===Other usability and user experience improvements===&lt;br /&gt;
* MDL-69371 - Redesign the Moodle login page (also see MDL-72928)&lt;br /&gt;
* MDL-71457 - Update the Moodle activity icons&lt;br /&gt;
* MDL-71963 - Turn confirmation page into modals&lt;br /&gt;
* MDL-71965 - New footer&lt;br /&gt;
* MDL-71456 - Create page drawers for the block and course index areas&lt;br /&gt;
* MDL-72095 - Set a main container width of Boost pages&lt;br /&gt;
* MDL-71610 - Move the turn editing on button into the navbar&lt;br /&gt;
* MDL-72305 - Show user initials as a placeholder for the user profile picture&lt;br /&gt;
* MDL-72278 - Fake blocks now in drawer are made visible on first visit&lt;br /&gt;
* MDL-72454 - Removal of back to top link&lt;br /&gt;
* MDL-72088 - Update styling across top level pages&lt;br /&gt;
* MDL-70888 - Update the layouts in Boost theme&lt;br /&gt;
* MDL-71292 - Update the page header and include course image / activity icon&lt;br /&gt;
* MDL-73608 - Provide a contact form which sends to the site support email and replace mailto link in footer&lt;br /&gt;
* MDL-73935 - Improved flexibility of site support form and consistency of site support info provided in Moodle&lt;br /&gt;
* MDL-61564 - Allow multiple cohort selection in cohort enrolment&lt;br /&gt;
* MDL-66539 - Better handling of link names and URLs with Atto&lt;br /&gt;
* MDL-73797 - Dialogues now have the action button on the right&lt;br /&gt;
* MDL-60917 - Add highest ranked results section to global search&lt;br /&gt;
* MDL-73917 - Notification preferences page improvements&lt;br /&gt;
* MDL-72500 - Easier to find a specific component in event list report&lt;br /&gt;
* MDL-32103 - Course completion is instant for activity based completion criteria (single user completions only)&lt;br /&gt;
==Other major features==&lt;br /&gt;
===Report builder integration (from Moodle Workplace)===&lt;br /&gt;
* MDL-70795 - Implement functionality for creating custom reports&lt;br /&gt;
* MDL-70794 - Implement functionality for creating system reports&lt;br /&gt;
* MDL-72588 - Implement custom report audiences&lt;br /&gt;
* MDL-72598 - Implement custom report schedules&lt;br /&gt;
* MDL-73598 - Allow Custom Reports to be disabled by site admin&lt;br /&gt;
* MDL-72280 - Create &amp;quot;Courses&amp;quot; custom report source&lt;br /&gt;
* MDL-73069 - Report condition to limit returned data to current user&lt;br /&gt;
* MDL-73180 - Improve definitions of previous/next relative date filters&lt;br /&gt;
* MDL-72662 - Implement relative date options in the Reportbuilder date filter&lt;br /&gt;
* MDL-72172 - Create &amp;quot;Cohort members&amp;quot; custom report source&lt;br /&gt;
* MDL-72962 - Format editable report elements (column, filters, etc)&lt;br /&gt;
* MDL-72826 - Custom report option to display unique row values&lt;br /&gt;
* MDL-71153 - Convert task logs report to a system report&lt;br /&gt;
* MDL-71070 - Convert configuration changes report to a system report&lt;br /&gt;
===BigBlueButton integration===&lt;br /&gt;
* MDL-70658 - Integrate the BigBlueButton plugin into Moodle LMS&lt;br /&gt;
===Quiz and Questions===&lt;br /&gt;
* MDL-71516 - Create new plugin type - Qbank (for the full list of qbank plugins added to core, see MDL-70329)&lt;br /&gt;
* MDL-71679 - Update mod_quiz for new question bank&lt;br /&gt;
* MDL-71636 - Add a columnsortorder settings page &lt;br /&gt;
* MDL-71696 - Add question versions&lt;br /&gt;
* MDL-72076 - Question bank bulk action UI&lt;br /&gt;
* MDL-72553 - Add custom fields to questions&lt;br /&gt;
* MDL-52206 - Move &amp;quot;Require passing grade&amp;quot; completion option to core&lt;br /&gt;
* MDL-52456 - Add notification message for students after questions have been manually graded&lt;br /&gt;
* MDL-71984 - Add logging to quiz auto-save, process_attempt and redo_question&lt;br /&gt;
* MDL-73337 - Log editing quizzes in detail&lt;br /&gt;
* MDL-73699 - Question status UI/UX update&lt;br /&gt;
* MDL-72448 - Add qbank_history to core&lt;br /&gt;
* MDL-71614 - Add qbank_previewquestion to core&lt;br /&gt;
===Update LTI tool provider feature to support 1.3===&lt;br /&gt;
* MDL-69543 - Update tool to support 1.3 OAuth2/OIDC launch flow&lt;br /&gt;
* MDL-71371 - Provide upgrade path for 1.1 preconfigured tools&lt;br /&gt;
* MDL-72745 - Provide account provisioning options for LTI Advantage launches&lt;br /&gt;
* MDL-69547 - Update tool enrolment code so that a user is automatically created and enrolled when launching via 1.3&lt;br /&gt;
* MDL-69545 - Update user sync task to support 1.3 messages&lt;br /&gt;
* MDL-69544 - Update grade sync task to support 1.3 messages&lt;br /&gt;
* MDL-72288 - Update library and model code to support issuer and clientid uniqueness on registrations&lt;br /&gt;
* MDL-69862 - Add dynamic registration support to the tool&lt;br /&gt;
* MDL-70354 - Return line item information during content selection&lt;br /&gt;
===Assignment===&lt;br /&gt;
* MDL-68913 - Per attempt timing now available in assignments&lt;br /&gt;
===Admin configuration presets===&lt;br /&gt;
* MDL-72112 - Integrate admin_presets third-party plugin in Moodle LMS&lt;br /&gt;
* MDL-73145 - Add a $CFG setting to define the preset to be installed&lt;br /&gt;
* MDL-72114 - Include pre-installed admin presets&lt;br /&gt;
* MDL-72113 - Add feature to import/export plugins visibility from Admin presets tool&lt;br /&gt;
* MDL-73394 - Store the latest site admin preset applied&lt;br /&gt;
===Content bank and H5P===&lt;br /&gt;
* MDL-68394 - Integrate mod_h5pactivity with recent activity plugins&lt;br /&gt;
* MDL-72099 - Add navigation by contexts in the content bank&lt;br /&gt;
* MDL-71885 - Inline editing H5P content for mod_h5pactivity&lt;br /&gt;
* MDL-71956 - Inline editing H5P content anywhere&lt;br /&gt;
===Badges===&lt;br /&gt;
* MDL-72141 - Simplifying the external badge page&lt;br /&gt;
===Accessibility improvements===&lt;br /&gt;
* MDL-67853 - Remove online-offline options on notifications&lt;br /&gt;
* MDL-72078 - Give users an indication that they encountered an editor&lt;br /&gt;
* MDL-71604 - Move the screen reader helper button to the first row&lt;br /&gt;
* MDL-72896 - Make html_tables responsive by default&lt;br /&gt;
==Other Highlights==&lt;br /&gt;
===Functional changes===&lt;br /&gt;
* MDL-70456 - Add custom user field support to all places that display user identity [0,Minor] Improvement  &lt;br /&gt;
* MDL-73342 - Disable some blocks by default (such as feedback, RSS and self-completion)&lt;br /&gt;
* MDL-70905 - Updated media default width/height to use 16:9&lt;br /&gt;
* MDL-72118 - Rename &amp;quot;HTML block&amp;quot; to the more easily understood &amp;quot;Text block&amp;quot; &lt;br /&gt;
* MDL-72706 - Change default value of &amp;quot;Hidden sections&amp;quot; course format setting&lt;br /&gt;
* MDL-72115 - Rename &amp;quot;Miscellaneous&amp;quot; category to &amp;quot;Category 1&amp;quot;&lt;br /&gt;
* MDL-72119 - Make “Enable xxxxx” features consistent (hide menus for disabled features)&lt;br /&gt;
===For administrators===&lt;br /&gt;
* MDL-71347 - Add a filter to &amp;quot;browse list of users&amp;quot; for date of user account creation&lt;br /&gt;
* MDL-72031 - Separate out max_time for audio and video files in Atto/RecordRTC&lt;br /&gt;
* MDL-71515 - Improve the test outgoing mail configuration admin page&lt;br /&gt;
* MDL-67686 - Add more filters to task log (/admin/tasklogs.php)&lt;br /&gt;
* MDL-72984 - Ensure support email address is mandatory&lt;br /&gt;
* MDL-73592 - MoodleNet integration now enabled by default&lt;br /&gt;
* MDL-71621 - Parent role cannot edit custom fields in child profile&lt;br /&gt;
* MDL-73918 - Allow admins to change the page width using custom SCSS&lt;br /&gt;
* MDL-71927 - Logs and question attempt history now show time to the second, to help investigate issues&lt;br /&gt;
* MDL-71466 - Custom user field support: Admin role screens (check permissions, assign)&lt;br /&gt;
* MDL-72619 - Provide admin page to view cache size estimates&lt;br /&gt;
* MDL-67822 - New check_database_schema performance check&lt;br /&gt;
* MDL-70271 - Dropbox token and Permission Updates&lt;br /&gt;
* MDL-58395 - LDAP auth sync now skip and report problematic user accounts&lt;br /&gt;
* MDL-72251 - Tasks admin UI now shows time to nearest second&lt;br /&gt;
===Mobile===&lt;br /&gt;
* MDL-67807 - Return concurrent sessions information to apply concurrent login limit in the mobile app&lt;br /&gt;
* MDL-69555 - Make duration of QR login and auto-login time between requests configurable&lt;br /&gt;
* MDL-73794 - Update the footer in the mobile view&lt;br /&gt;
===Performance===&lt;br /&gt;
* MDL-72596 - Caching: Track cache I/O size in perfdebug&lt;br /&gt;
* MDL-69088 - Make file cache store purges instant with a safe and async purge&lt;br /&gt;
* MDL-68164 - Additional caching of pg_field_type postgres field metadata&lt;br /&gt;
* MDL-63983 - Improve the performance of non-contact searches in messaging when site-wide messaging is disabled (default)&lt;br /&gt;
* MDL-71014 - Cache the siteidentifier and site contextid in local cache&lt;br /&gt;
* MDL-72328 - Add TTL support for Redis caches&lt;br /&gt;
* MDL-72837 - Cache API should support versioned data&lt;br /&gt;
==Security improvements==&lt;br /&gt;
* MDL-56873 - Set more secure defaults for the cURL allow/deny lists&lt;br /&gt;
* MDL-66776 - Send notifications when new devices are used to log in into the site&lt;br /&gt;
* MDL-71627 - Add check API for anti virus and optionally remove admin notifications&lt;br /&gt;
* MDL-71806 - Improved the UX of the Moodle security report&lt;br /&gt;
* MDL-71176 - New password and change forms should have autocomplete=&amp;quot;new-password&amp;quot;&lt;br /&gt;
==For developers==&lt;br /&gt;
* MDL-61460 - Introduce the UI components library&lt;br /&gt;
* MDL-74229 - Add navigation node keys to allow themers to hide navigation tabs&lt;br /&gt;
* MDL-74235 - Rename the icons for activities to allow support of multiple icons for multiple versions&lt;br /&gt;
* MDL-74033 - Allow full customisation of the primary navigation&lt;br /&gt;
* MDL-72779 - Set more than one value on a persistent at the same time&lt;br /&gt;
* MDL-70862 - Implement a new callback to extend gradebook plugininfo&lt;br /&gt;
* MDL-72289 - Allow callers to customise the rendered icon of inplace editable elements&lt;br /&gt;
* MDL-73347 - Allow themes to define un-addable blocks&lt;br /&gt;
* MDL-46778 - Allow use a separate DB configuration (not just prefix) for Behat similar to PHPUnit&lt;br /&gt;
* MDL-73270 - Warn where XMLRPC is currently in use&lt;br /&gt;
* MDL-67228 - Tool_replace maturity set&lt;br /&gt;
===Web service additions and updates===&lt;br /&gt;
* MDL-71135 - Create core_course_get_state web service&lt;br /&gt;
* MDL-71165 - Create core_course_update_course web service&lt;br /&gt;
===Core plugins removed===&lt;br /&gt;
* MDL-71473 - Jabber removed as a standard notification plugin&lt;br /&gt;
* MDL-58939 - Picasa repository and portfolio removed from core&lt;br /&gt;
* MDL-72335 - Tool_health removed from core&lt;br /&gt;
* MDL-72615 - Boxnet plugins removed from core&lt;br /&gt;
* MDL-72616 - Quiz results block removed from core&lt;br /&gt;
* MDL-72348 - Microsoft OneDrive (legacy) repository (repository_skydrive) removed from core&lt;br /&gt;
* MDL-72347 - Word censorship filter (filter_censor) removed from core&lt;br /&gt;
* MDL-72407 - VideoJS Flash plugin removed from core&lt;br /&gt;
* MDL-72042 - Flash animation media player removed from core&lt;br /&gt;
* MDL-72041 - WebCT question import format removed from core&lt;br /&gt;
* MDL-72517 - Examview question import format removed from core&lt;br /&gt;
===Deprecations===&lt;br /&gt;
* MDL-53544 - Typo3 library removed&lt;br /&gt;
* MDL-72004 - Quiz 4.0 Class renaming and deprecation&lt;br /&gt;
* MDL-73756 - Deprecate $modinfo param to completion_info::get_data()&lt;br /&gt;
* MDL-65799 - Phase 2 of deprecation of functions in lib/deprecatedlib.php initially deprecated in 3.8&lt;br /&gt;
* MDL-71175 - Deprecate some plagiarism functions that are not used, or have replacements&lt;br /&gt;
* MDL-66266 - Remove deprecated functions in messages/classes/api.php&lt;br /&gt;
* MDL-72098 - deprecate grade_grade::insert method that just calls its parent&lt;br /&gt;
* MDL-72433 - Final deprecation of get_grades() in lib/classes/grades_external.php&lt;br /&gt;
* MDL-71476 - Remove mysql_engine.php&lt;br /&gt;
* MDL-65252 - Final deprecations of forum_count_replies and get_forum_discussion_posts&lt;br /&gt;
* MDL-67412 - Remove deprecated functions in lib/setuplib.php &lt;br /&gt;
* MDL-65801 - Remove strings deprecated in 3.8&lt;br /&gt;
===Component API updates===&lt;br /&gt;
* admin/tool/generator/upgrade.txt&lt;br /&gt;
* admin/tool/log/upgrade.txt&lt;br /&gt;
* admin/tool/mobile/upgrade.txt&lt;br /&gt;
* admin/tool/upgrade.txt&lt;br /&gt;
* admin/tool/usertours/upgrade.txt&lt;br /&gt;
* admin/upgrade.txt&lt;br /&gt;
* analytics/upgrade.txt&lt;br /&gt;
* auth/shibboleth/upgrade.txt&lt;br /&gt;
* availability/upgrade.txt&lt;br /&gt;
* backup/upgrade.txt&lt;br /&gt;
* badges/upgrade.txt&lt;br /&gt;
* blocks/section_links/upgrade.txt&lt;br /&gt;
* blocks/tag_youtube/upgrade.txt&lt;br /&gt;
* blocks/timeline/upgrade.txt&lt;br /&gt;
* blocks/upgrade.txt&lt;br /&gt;
* cache/upgrade.txt&lt;br /&gt;
* calendar/upgrade.txt&lt;br /&gt;
* completion/upgrade.txt&lt;br /&gt;
* contentbank/upgrade.txt&lt;br /&gt;
* course/format/upgrade.txt&lt;br /&gt;
* course/upgrade.txt&lt;br /&gt;
* customfield/upgrade.txt&lt;br /&gt;
* dataformat/upgrade.txt&lt;br /&gt;
* enrol/database/upgrade.txt&lt;br /&gt;
* enrol/upgrade.txt&lt;br /&gt;
* filter/upgrade.txt&lt;br /&gt;
* grade/grading/form/upgrade.txt&lt;br /&gt;
* grade/upgrade.txt&lt;br /&gt;
* group/upgrade.txt&lt;br /&gt;
* h5p/upgrade.txt&lt;br /&gt;
* lib/upgrade.txt&lt;br /&gt;
* media/upgrade.txt&lt;br /&gt;
* message/upgrade.txt&lt;br /&gt;
* mod/assign/upgrade.txt&lt;br /&gt;
* mod/book/upgrade.txt&lt;br /&gt;
* mod/feedback/upgrade.txt&lt;br /&gt;
* mod/forum/upgrade.txt&lt;br /&gt;
* mod/glossary/upgrade.txt&lt;br /&gt;
* mod/h5pactivity/upgrade.txt&lt;br /&gt;
* mod/lesson/upgrade.txt&lt;br /&gt;
* mod/lti/upgrade.txt&lt;br /&gt;
* mod/page/upgrade.txt&lt;br /&gt;
* mod/quiz/upgrade.txt&lt;br /&gt;
* mod/resource/upgrade.txt&lt;br /&gt;
* mod/scorm/upgrade.txt&lt;br /&gt;
* mod/upgrade.txt&lt;br /&gt;
* mod/url/upgrade.txt&lt;br /&gt;
* mod/wiki/upgrade.txt&lt;br /&gt;
* mod/workshop/upgrade.txt&lt;br /&gt;
* my/upgrade.txt&lt;br /&gt;
* payment/upgrade.txt&lt;br /&gt;
* plagiarism/upgrade.txt&lt;br /&gt;
* portfolio/upgrade.txt&lt;br /&gt;
* question/bank/upgrade.txt&lt;br /&gt;
* question/behaviour/upgrade.txt&lt;br /&gt;
* question/engine/upgrade.txt&lt;br /&gt;
* question/format/upgrade.txt&lt;br /&gt;
* question/type/multichoice/upgrade.txt&lt;br /&gt;
* question/type/upgrade.txt&lt;br /&gt;
* question/upgrade.txt&lt;br /&gt;
* report/eventlist/upgrade.txt&lt;br /&gt;
* report/upgrade.txt&lt;br /&gt;
* repository/upgrade.txt&lt;br /&gt;
* search/upgrade.txt&lt;br /&gt;
* theme/upgrade.txt&lt;br /&gt;
* user/upgrade.txt&lt;br /&gt;
* webservice/upgrade.txt&lt;br /&gt;
 &lt;br /&gt;
==See also==&lt;br /&gt;
*[[Moodle 3.11 release notes]]&lt;br /&gt;
 &lt;br /&gt;
[[Category:Release notes]]&lt;br /&gt;
[[Category:Moodle 4.0]]&lt;br /&gt;
 &lt;br /&gt;
[[fr:Notes de version de Moodle 4.0]]&lt;br /&gt;
[[es:Notas de Moodle 4.0]]&lt;/div&gt;</summary>
		<author><name>Tsala</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Template:MediaPlayer&amp;diff=62124</id>
		<title>Template:MediaPlayer</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Template:MediaPlayer&amp;diff=62124"/>
		<updated>2022-04-28T09:14:09Z</updated>

		<summary type="html">&lt;p&gt;Tsala: div&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;right&amp;quot;&amp;gt;{{#evt:&lt;br /&gt;
service=youtube&lt;br /&gt;
|id={{{url}}}&lt;br /&gt;
|description={{{desc|{{{url}}}}}}&lt;br /&gt;
|urlargs=modestbranding=1&amp;amp;rel=0&lt;br /&gt;
}}&amp;lt;/div&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Displays an embedded media player of the given YouTube video.&lt;br /&gt;
&lt;br /&gt;
== Syntax ==&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{MediaPlayer | url = https://www.youtube.com/watch?v=U7M3sZL6wts | desc = Video description}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tsala</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Moodle_4.0_release_notes&amp;diff=62123</id>
		<title>Moodle 4.0 release notes</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Moodle_4.0_release_notes&amp;diff=62123"/>
		<updated>2022-04-28T09:00:23Z</updated>

		<summary type="html">&lt;p&gt;Tsala: Moodle 4.0 new features video&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Migrated|newDocId=/docs/release-notes}}&lt;br /&gt;
[[Releases]] &amp;gt; {{FULLPAGENAME}}&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Release date: 19 April 2022&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here is [https://tracker.moodle.org/secure/IssueNavigator!executeAdvanced.jspa?jqlQuery=project+%3D+mdl+AND+resolution+%3D+fixed+AND+fixVersion+in+%28%224.0%22%29+ORDER+BY+priority+DESC&amp;amp;runQuery=true&amp;amp;clear=true the full list of fixed issues in 4.0].&lt;br /&gt;
&lt;br /&gt;
See our [https://docs.moodle.org/400/en/New_features New features] page in the user documentation for an introduction to Moodle 4.0 with screenshots.&lt;br /&gt;
&lt;br /&gt;
{{MediaPlayer | url = https://youtu.be/sZxZ_YzsD_w | desc = Moodle 4.0 new features}}&lt;br /&gt;
&lt;br /&gt;
If you are upgrading from a previous version, please see [[:en:Upgrading|Upgrading]] in the user docs.&lt;br /&gt;
==Server requirements==&lt;br /&gt;
These are just the minimum supported versions. We recommend keeping all of your software and operating systems up-to-date.&lt;br /&gt;
* Moodle upgrade: Moodle 3.6 or later&lt;br /&gt;
* PHP version: minimum PHP 7.3.0 &#039;&#039;Note: minimum PHP version has increased since Moodle 3.10&#039;&#039;. PHP 7.4.x is supported too. [[Moodle and PHP|PHP 8.0 support]] is being implemented (see MDL-70745) and &#039;&#039;&#039;not ready for production&#039;&#039;&#039; yet.&lt;br /&gt;
* PHP extension &#039;&#039;&#039;sodium&#039;&#039;&#039; is recommended. It will be required in Moodle 4.2. For further details, see [https://docs.moodle.org/311/en/Environment_-_PHP_extension_sodium Environment - PHP extension sodium].&lt;br /&gt;
* PHP extension &#039;&#039;&#039;exif&#039;&#039;&#039; is recommended.&lt;br /&gt;
* PHP setting &#039;&#039;&#039;max_input_vars&#039;&#039;&#039; is recommended to be &amp;gt;= 5000 for PHP 7.x installations. It&#039;s a requirement for PHP 8.x installations. For further details, see [https://docs.moodle.org/311/en/Environment_-_max_input_vars Environment - max input vars].&lt;br /&gt;
=== Database requirements ===&lt;br /&gt;
Moodle supports the following database servers. Again, version numbers are just the minimum supported version. We recommend running the latest stable version of any software.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Database&lt;br /&gt;
! Minimum version&lt;br /&gt;
! Recommended&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.postgresql.org/ PostgreSQL]&lt;br /&gt;
| 10 (increased since Moodle 3.11)  &lt;br /&gt;
| Latest&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.mysql.com/ MySQL]&lt;br /&gt;
| 5.7 &lt;br /&gt;
| Latest&lt;br /&gt;
|-&lt;br /&gt;
| [https://mariadb.org/ MariaDB]&lt;br /&gt;
| 10.2.29 &lt;br /&gt;
| Latest&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.microsoft.com/en-us/server-cloud/products/sql-server/ Microsoft SQL Server]&lt;br /&gt;
| 2017 (increased since Moodle 3.10)&lt;br /&gt;
| Latest&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.oracle.com/us/products/database/overview/index.html Oracle Database]&lt;br /&gt;
| 11.2&lt;br /&gt;
| Latest&lt;br /&gt;
|}&lt;br /&gt;
==Client requirements==&lt;br /&gt;
=== Browser support ===&lt;br /&gt;
Moodle is compatible with any standards compliant web browser. We regularly test Moodle with the following browsers:&lt;br /&gt;
&lt;br /&gt;
Desktop:&lt;br /&gt;
* Chrome&lt;br /&gt;
* Firefox&lt;br /&gt;
* Safari&lt;br /&gt;
* Edge&lt;br /&gt;
&#039;&#039;Note: Moodle 4.0 does NOT support Internet Explorer 11.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Safari 7 and below has known compatibility issues with Moodle 4.0.&lt;br /&gt;
&lt;br /&gt;
Mobile:&lt;br /&gt;
* MobileSafari&lt;br /&gt;
* Google Chrome&lt;br /&gt;
For the best experience and optimum security, we recommend that you keep your browser up to date.&lt;br /&gt;
==Major UX improvements==&lt;br /&gt;
===Navigation improvements===&lt;br /&gt;
* MDL-70208 - Implement frontend functionality for primary navigation&lt;br /&gt;
* MDL-70207 - Implement backend functionality for primary navigation&lt;br /&gt;
* MDL-70202 - Implement frontend functionality for secondary navigation&lt;br /&gt;
* MDL-70198 - Implement backend functionality for secondary navigation&lt;br /&gt;
* MDL-70196 - Create a module based navigation bar&lt;br /&gt;
* MDL-72352 - Ensure that secondary navigation is backwards compatible&lt;br /&gt;
* MDL-73462 - Course and category management secondary and tertiary navigation&lt;br /&gt;
* MDL-71977 - Define the secondary navigation nodes that should be always displayed in the more menu in the module context&lt;br /&gt;
* MDL-71901 - Allow plugins to define their own secondary nav ordering&lt;br /&gt;
* MDL-70844 - Update the secondary navigation view to send site administration information in tab form&lt;br /&gt;
* MDL-72396 - Allow easy setting of the active tab for navigation views&lt;br /&gt;
* MDL-71912 - Implement tertiary navigation for plugins (also see MDL-71913, MDL-71914 and MDL-71914)&lt;br /&gt;
* MDL-73863 - Tertiary navigation in course completion&lt;br /&gt;
* MDL-72875 - Add tertiary navigation to the participants page&lt;br /&gt;
* MDL-72904 - Add tertiary navigation to the badges pages&lt;br /&gt;
* MDL-72873 - Add tertiary navigation to the gradebook&lt;br /&gt;
* MDL-72094 - Update the course reports page styling and functionality&lt;br /&gt;
* MDL-71083 - Move the user menu in the top bar into the primary navigation menu in the mobile view&lt;br /&gt;
* MDL-73393 - Ensure that existing third party themes still work with latest navigation changes&lt;br /&gt;
* MDL-71943 - Dynamic (AJAX) tabs in Moodle LMS&lt;br /&gt;
* MDL-72090 - Convert course admin pages from link farms to dropdowns&lt;br /&gt;
* MDL-72413 - Move the activity modules title, description, and activity completion into a standard module API&lt;br /&gt;
* MDL-72736 - Remove section navigation on one section per page&lt;br /&gt;
* MDL-72834 - Move the calendar link into the user menu&lt;br /&gt;
* MDL-72450 - Remove the next and previous activity links from all activity modules in Boost&lt;br /&gt;
* MDL-71148 - Combine both the custom menu &amp;amp; primary navigation renderers&lt;br /&gt;
* MDL-71683 - Update language menu to move from the top navigation into the user menu when logged in&lt;br /&gt;
* MDL-72005 - Update the context_header in Boost to move the breadcrumb to the top&lt;br /&gt;
===Course index===&lt;br /&gt;
* MDL-71209 - Create the new course index list&lt;br /&gt;
* MDL-72660 - Add activity completion indicators to the course index&lt;br /&gt;
* MDL-71228 - Implement drag and drop option for sections and activities in the course index&lt;br /&gt;
* MDL-71211 - Keep the status of the course index collapsed and expanded sections per user and course&lt;br /&gt;
* MDL-71795 - Course index on activity view page&lt;br /&gt;
* MDL-71828 - Implement section links&#039; behaviour in course index&lt;br /&gt;
* MDL-71664 - Enable drag &amp;amp; drop from course index to course content and vice versa&lt;br /&gt;
* MDL-72463 - Add &#039;highlighted&#039; label to course index&lt;br /&gt;
* MDL-71727 - Sync course index and course content when an element is dragged&lt;br /&gt;
* MDL-72897 - Mark the current section in the course index&lt;br /&gt;
* MDL-73340 - Open course index by default first time a user access the course&lt;br /&gt;
* MDL-73310 - Show the course index on all pages within a course&lt;br /&gt;
===Course experience===&lt;br /&gt;
* MDL-71037 - Sections are now collapsible for Topics and Weekly course formats&lt;br /&gt;
* MDL-71691 - Created a new activity UI component&lt;br /&gt;
* MDL-71689 - Improvements to add activity and add section design&lt;br /&gt;
* MDL-71663 - Created a new &amp;quot;move&amp;quot; option in the sections and activity cog menu in the course editor&lt;br /&gt;
* MDL-71779 - Made &#039;Add a new topic/week&#039; option client side on Topics and Weekly formats&lt;br /&gt;
* MDL-72311 - Proceed straight to course content when creating a new course&lt;br /&gt;
* MDL-71863 - Created core_courseformat subsystem&lt;br /&gt;
* MDL-72578 - Moved activity UI component to output classes and templates&lt;br /&gt;
* MDL-73343 - New quick access to create a new course from My courses page when there is no course available&lt;br /&gt;
===My Courses page and overview block===&lt;br /&gt;
* MDL-70801 - Implement &amp;quot;My courses&amp;quot; page&lt;br /&gt;
* MDL-58579 - Allow searching / filtering of courses in myoverview&lt;br /&gt;
* MDL-73231 - Provide option of having My courses as defaulthomepage&lt;br /&gt;
===Timeline block===&lt;br /&gt;
* MDL-72276 - Update timeline block dropdowns to display current selection&lt;br /&gt;
* MDL-72277 - Improve the layout and usability of the items in the timeline block&lt;br /&gt;
* MDL-73068 - Only display courses in the timeline block if they contain events&lt;br /&gt;
* MDL-72295 - Add text search to the timeline block&lt;br /&gt;
* MDL-72594 - Improve displaying of overdue items in the timeline block&lt;br /&gt;
* MDL-72603 - Replace timeline block pagination with &amp;quot;show more&amp;quot; lazy loading&lt;br /&gt;
* MDL-72543 - Change the display of the event names of the items on the timeline block&lt;br /&gt;
===Calendar usability===&lt;br /&gt;
* MDL-71817 - Render the calendar in the calendar block in month view&lt;br /&gt;
* MDL-72237 - Limit number of events shown per day in calendar month view&lt;br /&gt;
* MDL-71810 - Add a current date indicator and make calendar block responsive when switching between small and large views&lt;br /&gt;
* MDL-71808 - Move the import calendar form to its own page&lt;br /&gt;
* MDL-72045 - Improve help information provided on the calendar export page&lt;br /&gt;
* MDL-71790 - Revamp the manage subscriptions page&lt;br /&gt;
* MDL-71788 - Make it easier to copy the export URL&lt;br /&gt;
* MDL-71775 - Add footer links to the calendar block&lt;br /&gt;
* MDL-72810 - Remove 3-month calendar view&lt;br /&gt;
===Dashboard===&lt;br /&gt;
* MDL-72092 - Arrange blocks between My courses &amp;amp; My dashboard&lt;br /&gt;
* MDL-73114 - Display a title in the dashboard page&lt;br /&gt;
* MDL-71964 - Welcome message for users&lt;br /&gt;
* MDL-73233 - Provide option to disable the Dashboard&lt;br /&gt;
* MDL-72116 - Remove some of the default blocks from the Dashboard&lt;br /&gt;
===User tours===&lt;br /&gt;
* MDL-61674 - Allow user tours to be created using the Atto text editor&lt;br /&gt;
* MDL-72385 - Improve and simplify design of user tours&lt;br /&gt;
* MDL-71938 - Display number of steps in a user tour&lt;br /&gt;
* MDL-72783 - Add new user tours&lt;br /&gt;
* MDL-72781 - Remove previous user tours&lt;br /&gt;
* MDL-72557 - Implement customisable confirmation button for single step user tours&lt;br /&gt;
* MDL-71931 - Update user tours to emit events&lt;br /&gt;
===Other usability and user experience improvements===&lt;br /&gt;
* MDL-69371 - Redesign the Moodle login page (also see MDL-72928)&lt;br /&gt;
* MDL-71457 - Update the Moodle activity icons&lt;br /&gt;
* MDL-71963 - Turn confirmation page into modals&lt;br /&gt;
* MDL-71965 - New footer&lt;br /&gt;
* MDL-71456 - Create page drawers for the block and course index areas&lt;br /&gt;
* MDL-72095 - Set a main container width of Boost pages&lt;br /&gt;
* MDL-71610 - Move the turn editing on button into the navbar&lt;br /&gt;
* MDL-72305 - Show user initials as a placeholder for the user profile picture&lt;br /&gt;
* MDL-72278 - Fake blocks now in drawer are made visible on first visit&lt;br /&gt;
* MDL-72454 - Removal of back to top link&lt;br /&gt;
* MDL-72088 - Update styling across top level pages&lt;br /&gt;
* MDL-70888 - Update the layouts in Boost theme&lt;br /&gt;
* MDL-71292 - Update the page header and include course image / activity icon&lt;br /&gt;
* MDL-73608 - Provide a contact form which sends to the site support email and replace mailto link in footer&lt;br /&gt;
* MDL-73935 - Improved flexibility of site support form and consistency of site support info provided in Moodle&lt;br /&gt;
* MDL-61564 - Allow multiple cohort selection in cohort enrolment&lt;br /&gt;
* MDL-66539 - Better handling of link names and URLs with Atto&lt;br /&gt;
* MDL-73797 - Dialogues now have the action button on the right&lt;br /&gt;
* MDL-60917 - Add highest ranked results section to global search&lt;br /&gt;
* MDL-73917 - Notification preferences page improvements&lt;br /&gt;
* MDL-72500 - Easier to find a specific component in event list report&lt;br /&gt;
* MDL-32103 - Course completion is instant for activity based completion criteria (single user completions only)&lt;br /&gt;
==Other major features==&lt;br /&gt;
===Report builder integration (from Moodle Workplace)===&lt;br /&gt;
* MDL-70795 - Implement functionality for creating custom reports&lt;br /&gt;
* MDL-70794 - Implement functionality for creating system reports&lt;br /&gt;
* MDL-72588 - Implement custom report audiences&lt;br /&gt;
* MDL-72598 - Implement custom report schedules&lt;br /&gt;
* MDL-73598 - Allow Custom Reports to be disabled by site admin&lt;br /&gt;
* MDL-72280 - Create &amp;quot;Courses&amp;quot; custom report source&lt;br /&gt;
* MDL-73069 - Report condition to limit returned data to current user&lt;br /&gt;
* MDL-73180 - Improve definitions of previous/next relative date filters&lt;br /&gt;
* MDL-72662 - Implement relative date options in the Reportbuilder date filter&lt;br /&gt;
* MDL-72172 - Create &amp;quot;Cohort members&amp;quot; custom report source&lt;br /&gt;
* MDL-72962 - Format editable report elements (column, filters, etc)&lt;br /&gt;
* MDL-72826 - Custom report option to display unique row values&lt;br /&gt;
* MDL-71153 - Convert task logs report to a system report&lt;br /&gt;
* MDL-71070 - Convert configuration changes report to a system report&lt;br /&gt;
===BigBlueButton integration===&lt;br /&gt;
* MDL-70658 - Integrate the BigBlueButton plugin into Moodle LMS&lt;br /&gt;
===Quiz and Questions===&lt;br /&gt;
* MDL-71516 - Create new plugin type - Qbank (for the full list of qbank plugins added to core, see MDL-70329)&lt;br /&gt;
* MDL-71679 - Update mod_quiz for new question bank&lt;br /&gt;
* MDL-71636 - Add a columnsortorder settings page &lt;br /&gt;
* MDL-71696 - Add question versions&lt;br /&gt;
* MDL-72076 - Question bank bulk action UI&lt;br /&gt;
* MDL-72553 - Add custom fields to questions&lt;br /&gt;
* MDL-52206 - Move &amp;quot;Require passing grade&amp;quot; completion option to core&lt;br /&gt;
* MDL-52456 - Add notification message for students after questions have been manually graded&lt;br /&gt;
* MDL-71984 - Add logging to quiz auto-save, process_attempt and redo_question&lt;br /&gt;
* MDL-73337 - Log editing quizzes in detail&lt;br /&gt;
* MDL-73699 - Question status UI/UX update&lt;br /&gt;
* MDL-72448 - Add qbank_history to core&lt;br /&gt;
* MDL-71614 - Add qbank_previewquestion to core&lt;br /&gt;
===Update LTI tool provider feature to support 1.3===&lt;br /&gt;
* MDL-69543 - Update tool to support 1.3 OAuth2/OIDC launch flow&lt;br /&gt;
* MDL-71371 - Provide upgrade path for 1.1 preconfigured tools&lt;br /&gt;
* MDL-72745 - Provide account provisioning options for LTI Advantage launches&lt;br /&gt;
* MDL-69547 - Update tool enrolment code so that a user is automatically created and enrolled when launching via 1.3&lt;br /&gt;
* MDL-69545 - Update user sync task to support 1.3 messages&lt;br /&gt;
* MDL-69544 - Update grade sync task to support 1.3 messages&lt;br /&gt;
* MDL-72288 - Update library and model code to support issuer and clientid uniqueness on registrations&lt;br /&gt;
* MDL-69862 - Add dynamic registration support to the tool&lt;br /&gt;
* MDL-70354 - Return line item information during content selection&lt;br /&gt;
===Assignment===&lt;br /&gt;
* MDL-68913 - Per attempt timing now available in assignments&lt;br /&gt;
===Admin configuration presets===&lt;br /&gt;
* MDL-72112 - Integrate admin_presets third-party plugin in Moodle LMS&lt;br /&gt;
* MDL-73145 - Add a $CFG setting to define the preset to be installed&lt;br /&gt;
* MDL-72114 - Include pre-installed admin presets&lt;br /&gt;
* MDL-72113 - Add feature to import/export plugins visibility from Admin presets tool&lt;br /&gt;
* MDL-73394 - Store the latest site admin preset applied&lt;br /&gt;
===Content bank and H5P===&lt;br /&gt;
* MDL-68394 - Integrate mod_h5pactivity with recent activity plugins&lt;br /&gt;
* MDL-72099 - Add navigation by contexts in the content bank&lt;br /&gt;
* MDL-71885 - Inline editing H5P content for mod_h5pactivity&lt;br /&gt;
* MDL-71956 - Inline editing H5P content anywhere&lt;br /&gt;
===Badges===&lt;br /&gt;
* MDL-72141 - Simplifying the external badge page&lt;br /&gt;
===Accessibility improvements===&lt;br /&gt;
* MDL-67853 - Remove online-offline options on notifications&lt;br /&gt;
* MDL-72078 - Give users an indication that they encountered an editor&lt;br /&gt;
* MDL-71604 - Move the screen reader helper button to the first row&lt;br /&gt;
* MDL-72896 - Make html_tables responsive by default&lt;br /&gt;
==Other Highlights==&lt;br /&gt;
===Functional changes===&lt;br /&gt;
* MDL-70456 - Add custom user field support to all places that display user identity [0,Minor] Improvement  &lt;br /&gt;
* MDL-73342 - Disable some blocks by default (such as feedback, RSS and self-completion)&lt;br /&gt;
* MDL-70905 - Updated media default width/height to use 16:9&lt;br /&gt;
* MDL-72118 - Rename &amp;quot;HTML block&amp;quot; to the more easily understood &amp;quot;Text block&amp;quot; &lt;br /&gt;
* MDL-72706 - Change default value of &amp;quot;Hidden sections&amp;quot; course format setting&lt;br /&gt;
* MDL-72115 - Rename &amp;quot;Miscellaneous&amp;quot; category to &amp;quot;Category 1&amp;quot;&lt;br /&gt;
* MDL-72119 - Make “Enable xxxxx” features consistent (hide menus for disabled features)&lt;br /&gt;
===For administrators===&lt;br /&gt;
* MDL-71347 - Add a filter to &amp;quot;browse list of users&amp;quot; for date of user account creation&lt;br /&gt;
* MDL-72031 - Separate out max_time for audio and video files in Atto/RecordRTC&lt;br /&gt;
* MDL-71515 - Improve the test outgoing mail configuration admin page&lt;br /&gt;
* MDL-67686 - Add more filters to task log (/admin/tasklogs.php)&lt;br /&gt;
* MDL-72984 - Ensure support email address is mandatory&lt;br /&gt;
* MDL-73592 - MoodleNet integration now enabled by default&lt;br /&gt;
* MDL-71621 - Parent role cannot edit custom fields in child profile&lt;br /&gt;
* MDL-73918 - Allow admins to change the page width using custom SCSS&lt;br /&gt;
* MDL-71927 - Logs and question attempt history now show time to the second, to help investigate issues&lt;br /&gt;
* MDL-71466 - Custom user field support: Admin role screens (check permissions, assign)&lt;br /&gt;
* MDL-72619 - Provide admin page to view cache size estimates&lt;br /&gt;
* MDL-67822 - New check_database_schema performance check&lt;br /&gt;
* MDL-70271 - Dropbox token and Permission Updates&lt;br /&gt;
* MDL-58395 - LDAP auth sync now skip and report problematic user accounts&lt;br /&gt;
* MDL-72251 - Tasks admin UI now shows time to nearest second&lt;br /&gt;
===Mobile===&lt;br /&gt;
* MDL-67807 - Return concurrent sessions information to apply concurrent login limit in the mobile app&lt;br /&gt;
* MDL-69555 - Make duration of QR login and auto-login time between requests configurable&lt;br /&gt;
* MDL-73794 - Update the footer in the mobile view&lt;br /&gt;
===Performance===&lt;br /&gt;
* MDL-72596 - Caching: Track cache I/O size in perfdebug&lt;br /&gt;
* MDL-69088 - Make file cache store purges instant with a safe and async purge&lt;br /&gt;
* MDL-68164 - Additional caching of pg_field_type postgres field metadata&lt;br /&gt;
* MDL-63983 - Improve the performance of non-contact searches in messaging when site-wide messaging is disabled (default)&lt;br /&gt;
* MDL-71014 - Cache the siteidentifier and site contextid in local cache&lt;br /&gt;
* MDL-72328 - Add TTL support for Redis caches&lt;br /&gt;
* MDL-72837 - Cache API should support versioned data&lt;br /&gt;
==Security improvements==&lt;br /&gt;
* MDL-56873 - Set more secure defaults for the cURL allow/deny lists&lt;br /&gt;
* MDL-66776 - Send notifications when new devices are used to log in into the site&lt;br /&gt;
* MDL-71627 - Add check API for anti virus and optionally remove admin notifications&lt;br /&gt;
* MDL-71806 - Improved the UX of the Moodle security report&lt;br /&gt;
* MDL-71176 - New password and change forms should have autocomplete=&amp;quot;new-password&amp;quot;&lt;br /&gt;
==For developers==&lt;br /&gt;
* MDL-61460 - Introduce the UI components library&lt;br /&gt;
* MDL-74229 - Add navigation node keys to allow themers to hide navigation tabs&lt;br /&gt;
* MDL-74235 - Rename the icons for activities to allow support of multiple icons for multiple versions&lt;br /&gt;
* MDL-74033 - Allow full customisation of the primary navigation&lt;br /&gt;
* MDL-72779 - Set more than one value on a persistent at the same time&lt;br /&gt;
* MDL-70862 - Implement a new callback to extend gradebook plugininfo&lt;br /&gt;
* MDL-72289 - Allow callers to customise the rendered icon of inplace editable elements&lt;br /&gt;
* MDL-73347 - Allow themes to define un-addable blocks&lt;br /&gt;
* MDL-46778 - Allow use a separate DB configuration (not just prefix) for Behat similar to PHPUnit&lt;br /&gt;
* MDL-73270 - Warn where XMLRPC is currently in use&lt;br /&gt;
* MDL-67228 - Tool_replace maturity set&lt;br /&gt;
===Web service additions and updates===&lt;br /&gt;
* MDL-71135 - Create core_course_get_state web service&lt;br /&gt;
* MDL-71165 - Create core_course_update_course web service&lt;br /&gt;
===Core plugins removed===&lt;br /&gt;
* MDL-71473 - Jabber removed as a standard notification plugin&lt;br /&gt;
* MDL-58939 - Picasa repository and portfolio removed from core&lt;br /&gt;
* MDL-72335 - Tool_health removed from core&lt;br /&gt;
* MDL-72615 - Boxnet plugins removed from core&lt;br /&gt;
* MDL-72616 - Quiz results block removed from core&lt;br /&gt;
* MDL-72348 - Microsoft OneDrive (legacy) repository (repository_skydrive) removed from core&lt;br /&gt;
* MDL-72347 - Word censorship filter (filter_censor) removed from core&lt;br /&gt;
* MDL-72407 - VideoJS Flash plugin removed from core&lt;br /&gt;
* MDL-72042 - Flash animation media player removed from core&lt;br /&gt;
* MDL-72041 - WebCT question import format removed from core&lt;br /&gt;
* MDL-72517 - Examview question import format removed from core&lt;br /&gt;
===Deprecations===&lt;br /&gt;
* MDL-53544 - Typo3 library removed&lt;br /&gt;
* MDL-72004 - Quiz 4.0 Class renaming and deprecation&lt;br /&gt;
* MDL-73756 - Deprecate $modinfo param to completion_info::get_data()&lt;br /&gt;
* MDL-65799 - Phase 2 of deprecation of functions in lib/deprecatedlib.php initially deprecated in 3.8&lt;br /&gt;
* MDL-71175 - Deprecate some plagiarism functions that are not used, or have replacements&lt;br /&gt;
* MDL-66266 - Remove deprecated functions in messages/classes/api.php&lt;br /&gt;
* MDL-72098 - deprecate grade_grade::insert method that just calls its parent&lt;br /&gt;
* MDL-72433 - Final deprecation of get_grades() in lib/classes/grades_external.php&lt;br /&gt;
* MDL-71476 - Remove mysql_engine.php&lt;br /&gt;
* MDL-65252 - Final deprecations of forum_count_replies and get_forum_discussion_posts&lt;br /&gt;
* MDL-67412 - Remove deprecated functions in lib/setuplib.php &lt;br /&gt;
* MDL-65801 - Remove strings deprecated in 3.8&lt;br /&gt;
===Component API updates===&lt;br /&gt;
* admin/tool/generator/upgrade.txt&lt;br /&gt;
* admin/tool/log/upgrade.txt&lt;br /&gt;
* admin/tool/mobile/upgrade.txt&lt;br /&gt;
* admin/tool/upgrade.txt&lt;br /&gt;
* admin/tool/usertours/upgrade.txt&lt;br /&gt;
* admin/upgrade.txt&lt;br /&gt;
* analytics/upgrade.txt&lt;br /&gt;
* auth/shibboleth/upgrade.txt&lt;br /&gt;
* availability/upgrade.txt&lt;br /&gt;
* backup/upgrade.txt&lt;br /&gt;
* badges/upgrade.txt&lt;br /&gt;
* blocks/section_links/upgrade.txt&lt;br /&gt;
* blocks/tag_youtube/upgrade.txt&lt;br /&gt;
* blocks/timeline/upgrade.txt&lt;br /&gt;
* blocks/upgrade.txt&lt;br /&gt;
* cache/upgrade.txt&lt;br /&gt;
* calendar/upgrade.txt&lt;br /&gt;
* completion/upgrade.txt&lt;br /&gt;
* contentbank/upgrade.txt&lt;br /&gt;
* course/format/upgrade.txt&lt;br /&gt;
* course/upgrade.txt&lt;br /&gt;
* customfield/upgrade.txt&lt;br /&gt;
* dataformat/upgrade.txt&lt;br /&gt;
* enrol/database/upgrade.txt&lt;br /&gt;
* enrol/upgrade.txt&lt;br /&gt;
* filter/upgrade.txt&lt;br /&gt;
* grade/grading/form/upgrade.txt&lt;br /&gt;
* grade/upgrade.txt&lt;br /&gt;
* group/upgrade.txt&lt;br /&gt;
* h5p/upgrade.txt&lt;br /&gt;
* lib/upgrade.txt&lt;br /&gt;
* media/upgrade.txt&lt;br /&gt;
* message/upgrade.txt&lt;br /&gt;
* mod/assign/upgrade.txt&lt;br /&gt;
* mod/book/upgrade.txt&lt;br /&gt;
* mod/feedback/upgrade.txt&lt;br /&gt;
* mod/forum/upgrade.txt&lt;br /&gt;
* mod/glossary/upgrade.txt&lt;br /&gt;
* mod/h5pactivity/upgrade.txt&lt;br /&gt;
* mod/lesson/upgrade.txt&lt;br /&gt;
* mod/lti/upgrade.txt&lt;br /&gt;
* mod/page/upgrade.txt&lt;br /&gt;
* mod/quiz/upgrade.txt&lt;br /&gt;
* mod/resource/upgrade.txt&lt;br /&gt;
* mod/scorm/upgrade.txt&lt;br /&gt;
* mod/upgrade.txt&lt;br /&gt;
* mod/url/upgrade.txt&lt;br /&gt;
* mod/wiki/upgrade.txt&lt;br /&gt;
* mod/workshop/upgrade.txt&lt;br /&gt;
* my/upgrade.txt&lt;br /&gt;
* payment/upgrade.txt&lt;br /&gt;
* plagiarism/upgrade.txt&lt;br /&gt;
* portfolio/upgrade.txt&lt;br /&gt;
* question/bank/upgrade.txt&lt;br /&gt;
* question/behaviour/upgrade.txt&lt;br /&gt;
* question/engine/upgrade.txt&lt;br /&gt;
* question/format/upgrade.txt&lt;br /&gt;
* question/type/multichoice/upgrade.txt&lt;br /&gt;
* question/type/upgrade.txt&lt;br /&gt;
* question/upgrade.txt&lt;br /&gt;
* report/eventlist/upgrade.txt&lt;br /&gt;
* report/upgrade.txt&lt;br /&gt;
* repository/upgrade.txt&lt;br /&gt;
* search/upgrade.txt&lt;br /&gt;
* theme/upgrade.txt&lt;br /&gt;
* user/upgrade.txt&lt;br /&gt;
* webservice/upgrade.txt&lt;br /&gt;
 &lt;br /&gt;
==See also==&lt;br /&gt;
*[[Moodle 3.11 release notes]]&lt;br /&gt;
 &lt;br /&gt;
[[Category:Release notes]]&lt;br /&gt;
[[Category:Moodle 4.0]]&lt;br /&gt;
 &lt;br /&gt;
[[fr:Notes de version de Moodle 4.0]]&lt;br /&gt;
[[es:Notas de Moodle 4.0]]&lt;/div&gt;</summary>
		<author><name>Tsala</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Template:MediaPlayer&amp;diff=62122</id>
		<title>Template:MediaPlayer</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Template:MediaPlayer&amp;diff=62122"/>
		<updated>2022-04-28T08:59:21Z</updated>

		<summary type="html">&lt;p&gt;Tsala: Adding code from MDLSITE-4989&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{#evt:&lt;br /&gt;
service=youtube&lt;br /&gt;
|id={{{url}}}&lt;br /&gt;
|description={{{desc|{{{url}}}}}}&lt;br /&gt;
|urlargs=modestbranding=1&amp;amp;rel=0&lt;br /&gt;
}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Displays an embedded media player of the given YouTube video.&lt;br /&gt;
&lt;br /&gt;
== Syntax ==&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{MediaPlayer | url = https://www.youtube.com/watch?v=U7M3sZL6wts | desc = Video description}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tsala</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=QA_testing&amp;diff=62047</id>
		<title>QA testing</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=QA_testing&amp;diff=62047"/>
		<updated>2022-04-22T12:27:30Z</updated>

		<summary type="html">&lt;p&gt;Tsala: removing reference to contacting me&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Migrated|newDocId=/general/development/process/testing/qa}}&lt;br /&gt;
&#039;&#039;&#039;Quality Assurance&#039;&#039;&#039; tests look at the functionality of Moodle from a user&#039;s point of view. &lt;br /&gt;
&lt;br /&gt;
Real users systematically try each feature in Moodle and test that it works in the current version of the Moodle code. These tests are repeated in series of cycles, around 4 - 6 weeks before a major release, once all major features have landed.&lt;br /&gt;
&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&#039;&#039;&#039;QA testing latest&#039;&#039;&#039;: &#039;&#039;We&#039;re currently QA testing Moodle 4.0. More testers are always welcome (see below).&#039;&#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
==Getting involved==&lt;br /&gt;
Would you like to help with QA testing? If so, please make sure you have created an account in the [[Tracker_introduction|Moodle tracker]] and you&#039;re subscribed to the [https://moodle.org/mod/forum/view.php?id=56 Testing and QA forum] in order to receive QA testing news updates.&lt;br /&gt;
==Running tests==&lt;br /&gt;
# Go to the [https://tracker.moodle.org/secure/Dashboard.jspa?selectPageId=11454 Moodle QA testing dashboard] and choose a test from the list of current QA cycle open issues. When viewing a test, if you wish, you can click the &#039;Assign to me&#039; link on the right, so that nobody else chooses the same test to run. (If you then find you are unable to run the test, you can click the Assign button and set the assignee as &#039;Unassigned&#039;.) Please note:&lt;br /&gt;
#* Only assign an issue to yourself which no one else is testing (Assignee = Unassigned).&lt;br /&gt;
#* Only assign one issue at a time unless you plan to test a number of related issues within the next 24 hours. In other words, don&#039;t assign several issues to yourself then do nothing for several days. ;-)&lt;br /&gt;
#* The label &#039;&#039;test_server_required&#039;&#039; indicates issues that can&#039;t be tested on the QA testing site. The label &#039;&#039;credentials_required&#039;&#039; indicates that credentials such as an OAuth 2 service client ID and secret are required.&lt;br /&gt;
# Using either the [https://qa.moodledemo.net/ Moodle QA Testing Site] or your own test site running the latest Moodle 4.0dev (available from Git on the integration/master branch &#039;&#039;&amp;lt;nowiki&amp;gt;git://git.moodle.org/integration.git&amp;lt;/nowiki&amp;gt;&#039;&#039;) with [[:en:Debugging|debugging]] set to developer, perform each of the steps listed in the test.&lt;br /&gt;
# &#039;&#039;Please attach screenshots of the steps where you verify or check something.&#039;&#039;&lt;br /&gt;
# If it makes sense, please test using the currently supported themes, Boost and Classic.&lt;br /&gt;
# Choose an appropriate workflow action:&lt;br /&gt;
#* &#039;&#039;Pass&#039;&#039; - Test runs perfectly. Add comment such as feedback about a new feature, browsers used for testing (if applicable; example: &amp;quot;This test passes on Q&amp;amp;A site with Teacher role using Boost theme&amp;quot;), or simply &amp;quot;This test passes - yippee!&amp;quot;&lt;br /&gt;
#* &#039;&#039;Fail&#039;&#039; - Something doesn&#039;t work, or you obtain debugging messages. Add comment describing the step that doesn&#039;t work. If in doubt whether to pass a test, give it a fail and add a comment describing your doubts.&lt;br /&gt;
#* &#039;&#039;Obsolete&#039;&#039; - Test is no longer relevant in the current Moodle version. Add comment explaining why.&lt;br /&gt;
If you notice that the test description is out-of-date, add a comment mentioning that it needs updating. Alternatively, if you&#039;d like to help with updating the test yourself, see below.&lt;br /&gt;
==Any questions?==&lt;br /&gt;
If there is anything you are unsure of, such as whether to mark a test as failed, or you have any other questions, please ask in one of the following places:&lt;br /&gt;
* [https://t.me/moodleqa Moodle QA Telegram chat room] - To join the room for the first time, please use the [https://t.me/+cXneE_ZeZ_A4ODRk Moodle QA Telegram invite link].&lt;br /&gt;
* [https://moodle.org/mod/forum/view.php?id=56 Testing and QA forum]&lt;br /&gt;
==Moodle QA Testing Site==&lt;br /&gt;
The [https://qa.moodledemo.net/ Moodle QA Testing Site] is updated daily at around 13:00 UTC with the latest bug fixes to enable you to re-run QA tests.&lt;br /&gt;
&lt;br /&gt;
To prevent the site being used for sending spam, no emails are sent from it. Thus, tests involving email cannot be run using the Moodle QA Testing Site. (If such tests are attempted, an email debug message is displayed. This is not a bug but rather expected behaviour.)&lt;br /&gt;
&lt;br /&gt;
Teacher and student accounts are provided. If you would like admin access to the Moodle QA Testing Site for running certain tests, please ask in the Moodle QA Telegram chat room or the Testing and QA forum for someone to send you the account credentials via private message.&lt;br /&gt;
==&amp;lt;div id=&amp;quot;failedTests&amp;quot;&amp;gt;Failed tests&amp;lt;/div&amp;gt;==&lt;br /&gt;
So you ran a test and it failed? Congratulations on finding a bug! Please do the following.&lt;br /&gt;
# Click the Fail button at the top of the page.&lt;br /&gt;
# Add a comment to the QA test stating that there was a problem and that you will report it as a Moodle bug.&lt;br /&gt;
# Note the MDLQA number; it will be something like &amp;lt;nowiki&amp;gt;MDLQA-448&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
# Try searching for whether the bug has been reported previously, and if not create a new issue for it (as described in [[Tracker introduction]]).&lt;br /&gt;
# In the new Moodle (MDL) issue select &#039;Link&#039; from the &#039;More actions&#039; dropdown menu. &amp;lt;br /&amp;gt;[[Image:LinkIssue.png|150px|Linking to the QA issue in the tracker]]&lt;br /&gt;
# Link to the QA test by selecting &#039;blocks&#039; as the link type, entering the MDLQA number that you noted earlier, and optionally adding a comment. &amp;lt;br /&amp;gt;[[Image:LinkDetails.png|150px|Adding details for a link to the QA issue]]&lt;br /&gt;
# Give the issue the label &#039;mdlqa&#039;. &lt;br /&gt;
# (Optional) Add yourself as a watcher to the MDL issue so that you receive email notification when the issue is fixed.&lt;br /&gt;
# When the MDL issue is fixed, hopefully within a day or two, the QA test can be reset and can then be run again.&lt;br /&gt;
==Resetting tests==&lt;br /&gt;
&#039;&#039;Note for integrators:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
After integrating a fix, &lt;br /&gt;
# Reset the MDLQA test, adding a comment.&lt;br /&gt;
# Remove the &#039;mdlqa&#039; label from the MDL issue.&lt;br /&gt;
# If the issue doesn&#039;t have testing instructions, pass it with message &amp;quot;Will be tested by MDLQA-XXXX&amp;quot;.&lt;br /&gt;
The tester will then receive email notification that the bug is fixed and will hopefully decide to run the test again soon.&lt;br /&gt;
==Fixing existing bugs==&lt;br /&gt;
At the beginning of the QA cycle, all bugs identified (both new and existing) are investigated promptly and hopefully fixed. &lt;br /&gt;
&lt;br /&gt;
When we are close to the scheduled release date (1-2 weeks prior), developers must focus on fixing new bugs (which affect the upcoming release version) only.&lt;br /&gt;
&lt;br /&gt;
Thus, at this point in the QA cycle, any bugs which also affect existing versions of Moodle are labelled qa_identified (and the label mdlqa removed) for investigation after the release.&lt;br /&gt;
==Testing tips==&lt;br /&gt;
When entering text into a form, try things like:&lt;br /&gt;
* &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&amp;amp;&amp;lt;/syntaxhighlight&amp;gt; (ampersand), &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; (greater than) or &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&amp;lt;&amp;lt;/syntaxhighlight&amp;gt; (less than) e.g. &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;x &amp;lt; 1 &amp;amp;&amp;amp; x &amp;gt; 0&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;0&amp;lt;/syntaxhighlight&amp;gt; (the single digit 0) &lt;br /&gt;
* &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&#039;&amp;lt;/syntaxhighlight&amp;gt; (single quote) e.g. &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;Fergal.O&#039;Brien@example.com&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* special characters e.g. &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;café&amp;lt;/syntaxhighlight&amp;gt; or &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;囲碁&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* very long strings&lt;br /&gt;
* different languages, such as a RTL language&lt;br /&gt;
==New QA tests required==&lt;br /&gt;
&#039;&#039;Note for developers:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If an issue fix cannot be covered by automated tests, &lt;br /&gt;
# Add the label &#039;qa_test_required&#039; to the issue.&lt;br /&gt;
# Add a comment explaining why it can&#039;t be covered by automated tests and suggesting which steps of the testing instructions should be included in a QA test e.g. steps 6-10 or all steps.&lt;br /&gt;
QA tests will then be written and included in the next QA cycle. For issues with long testing instructions, several QA tests will be written to cover the issue. If appropriate, activities etc. will be set up on the [https://qa.moodledemo.net/ Moodle QA Testing Site] to enable the issue to be easily tested in future. &lt;br /&gt;
&lt;br /&gt;
Similarly, for new features and improvements which would benefit from exploratory testing,&lt;br /&gt;
# Add the label &#039;qa_test_required&#039; to the issue.&lt;br /&gt;
# Add a comment mentioning that exploratory testing is required.&lt;br /&gt;
Exploratory QA tests will then be written and included in the next QA cycle and then removed.&lt;br /&gt;
==Updating tests==&lt;br /&gt;
QA tests often become out-of-date due to new developments. If you would like to help with updating tests, you&#039;ll need to be a member of the test writers group in the Tracker. &lt;br /&gt;
&lt;br /&gt;
To update a QA test original:&lt;br /&gt;
# Search for the test in MDLQA-1.&lt;br /&gt;
# Edit the test description.&lt;br /&gt;
If a test in the current QA cycle is marked as failed because it is out-of-date, the description should be updated (as well as the test original) before resetting the test. If the test in the current QA cycle is marked as passed, then only the test original needs to be updated.&lt;br /&gt;
==Writing new tests==&lt;br /&gt;
Would you like to help with writing new QA tests? If so, as for updating tests, you&#039;ll need to be a member of the test writers group in the Tracker.&lt;br /&gt;
&lt;br /&gt;
QA tests are needed for any features which can&#039;t be tested with automated testing, such as connecting to an external system, drag and drop functionality or a CLI script. Also if it requires a person to detect if something is &#039;correct&#039; vs. present/absent on the page.&lt;br /&gt;
&lt;br /&gt;
In addition, new features can benefit from exploratory testing by community volunteers.&lt;br /&gt;
&lt;br /&gt;
To create a new QA test:&lt;br /&gt;
# If appropriate, do a quick search of MDLQA-1 to check if there is an existing test which can be updated.&lt;br /&gt;
# If not, in MDLQA-1 from the More menu select &#039;Create sub-task&#039;.&lt;br /&gt;
# Enter a summary such as &#039;A teacher can ...&#039;.&lt;br /&gt;
# Select &#039;Original&#039; as affected version and select appropriate components.&lt;br /&gt;
# In the description field add the test steps (usually between 3 and 10), similar to the issue&#039;s [[Testing instructions guide|testing instructions]], starting with &#039;Log in as a teacher...&#039; or similar. It&#039;s a good idea to try doing the steps yourself as you write the test.&lt;br /&gt;
# Start some steps with &#039;Verify that ...&#039; or similar.&lt;br /&gt;
# Click the Create button.&lt;br /&gt;
# Go to the MDL issue and create a ‘has a QA test’ link to the new QA test, adding a comment “This feature is now covered by the QA test MDLQA....”. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
* Add the label &#039;&#039;new&#039;&#039;&lt;br /&gt;
* For tests which can’t be run on the QA testing site, such as ones where you need to check an email, label &#039;&#039;test_server_required&#039;&#039;.&lt;br /&gt;
* For OAuth 2 tests and any other tests which require a client ID or secret to be entered, label &#039;&#039;credentials_required&#039;&#039;.&lt;br /&gt;
* For issues which specifically mention in the testing instructions to test in different browsers, use the phrase &amp;quot;Test in as many browsers as possible and mention in a comment which ones you’ve used.&amp;quot;&lt;br /&gt;
* For an exploratory test, begin the test description with &amp;quot;This is an exploratory test of a new feature or improvement, so please feel free to try anything you like and not just the test steps!&amp;quot;&lt;br /&gt;
* For a test requiring admin access which can be run on the QA site, add:&lt;br /&gt;
 This test requires admin access. If you would like to use the [QA testing site|https://qa.moodledemo.net/] for running it, please see the [QA testing guide|https://docs.moodle.org/dev/QA_testing] for details of how to request admin access. Begin just after the hourly reset to give yourself plenty of time to complete the test!&lt;br /&gt;
==Feedback==&lt;br /&gt;
Feedback on all aspects of our QA testing process is welcome. If you have any questions or comments, please post in the [https://moodle.org/mod/forum/view.php?id=56 Testing and QA forum].&lt;br /&gt;
==See also==&lt;br /&gt;
* [https://tracker.moodle.org/secure/Dashboard.jspa?selectPageId=11454 QA testing dashboard]&lt;br /&gt;
* [[Testing credits]]&lt;br /&gt;
* [[MDLQA-features]]&lt;br /&gt;
* [https://moodle.org/mod/forum/discuss.php?d=351302 Useful tips for QA testing]&lt;br /&gt;
Comments on tests from previous QA cycles:&lt;br /&gt;
* [https://tracker.moodle.org/browse/MDLQA-150 Moodle 2.0 QA Cycle 1]&lt;br /&gt;
* [https://tracker.moodle.org/browse/MDLQA-328 Moodle 2.0 QA Cycle 2]&lt;br /&gt;
* [https://tracker.moodle.org/browse/MDLQA-540 Moodle 2.0.2 QA]&lt;br /&gt;
* [https://tracker.moodle.org/browse/MDLQA-944 Moodle 2.1 QA Cycle 1]&lt;br /&gt;
* [https://tracker.moodle.org/browse/MDLQA-1190 Moodle 2.2 QA]&lt;br /&gt;
* [https://tracker.moodle.org/browse/MDLQA-1814 Moodle 2.3 QA]&lt;br /&gt;
* [https://tracker.moodle.org/browse/MDLQA-4602 Moodle 2.4 QA]&lt;br /&gt;
* [https://tracker.moodle.org/browse/MDLQA-5267 Moodle 2.5 QA]&lt;br /&gt;
* [https://tracker.moodle.org/browse/MDLQA-5740 Moodle 2.6 QA]&lt;br /&gt;
* [https://tracker.moodle.org/browse/MDLQA-6693 Moodle 2.7 QA]&lt;br /&gt;
* [https://tracker.moodle.org/browse/MDLQA-7170 Moodle 2.8 QA]&lt;br /&gt;
* [https://tracker.moodle.org/browse/MDLQA-7660 Moodle 2.9 QA]&lt;br /&gt;
* [https://tracker.moodle.org/browse/MDLQA-8205 Moodle 3.0 QA]&lt;br /&gt;
* [https://tracker.moodle.org/browse/MDLQA-9267 Moodle 3.1 QA]&lt;br /&gt;
* [https://tracker.moodle.org/browse/MDLQA-9827 Moodle 3.2 QA]&lt;br /&gt;
* [https://tracker.moodle.org/browse/MDLQA-10403 Moodle 3.3 QA]&lt;br /&gt;
* [https://tracker.moodle.org/browse/MDLQA-10999 Moodle 3.4 QA]&lt;br /&gt;
* [https://tracker.moodle.org/browse/MDLQA-11698 Moodle 3.5 QA]&lt;br /&gt;
* [https://tracker.moodle.org/browse/MDLQA-12282 Moodle 3.6 QA]&lt;br /&gt;
* [https://tracker.moodle.org/browse/MDLQA-12911 Moodle 3.7 QA]&lt;br /&gt;
* [https://tracker.moodle.org/browse/MDLQA-13517 Moodle 3.8 QA]&lt;br /&gt;
* [https://tracker.moodle.org/browse/MDLQA-14131 Moodle 3.9 QA]&lt;br /&gt;
* [https://tracker.moodle.org/browse/MDLQA-14813 Moodle 3.10 QA]&lt;br /&gt;
* [https://tracker.moodle.org/browse/MDLQA-15457 Moodle 3.11 QA]&lt;br /&gt;
* [https://tracker.moodle.org/secure/Dashboard.jspa?selectPageId=11454 Moodle 4.0 QA]&lt;br /&gt;
[[Category:Quality Assurance]]&lt;/div&gt;</summary>
		<author><name>Tsala</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Template:Translation&amp;diff=62046</id>
		<title>Template:Translation</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Template:Translation&amp;diff=62046"/>
		<updated>2022-04-22T10:45:32Z</updated>

		<summary type="html">&lt;p&gt;Tsala: Removing Translating Moodle video subtitles as it is no longer possible to do so&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;sideblock right&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;header&amp;quot;&amp;gt;[[Translation]]&amp;lt;/div&amp;gt;	&lt;br /&gt;
&amp;lt;div class=&amp;quot;content&amp;quot;&amp;gt;&lt;br /&gt;
*[[Contributing a translation]]&lt;br /&gt;
*[[Maintaining a language pack]]&lt;br /&gt;
*[[AMOS manual]]&lt;br /&gt;
*[[Starting a new language pack]]&lt;br /&gt;
*[[Translating plugins]]&lt;br /&gt;
*[[Translating Moodle Docs]]&lt;br /&gt;
*[[Translating the Moodle app]]&lt;br /&gt;
*[[Translating User tours from Moodle.net]]&lt;br /&gt;
*[[Translation FAQ]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;includeonly&amp;gt;[[Category:Translation]]&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;This template will categorize articles that include it into [[:Category:Translation]].&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tsala</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Tracker_guide&amp;diff=62044</id>
		<title>Tracker guide</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Tracker_guide&amp;diff=62044"/>
		<updated>2022-04-22T10:25:11Z</updated>

		<summary type="html">&lt;p&gt;Tsala: /* Tracker groups and permissions */ removing testers group as everyone with a tracker account can help with QA testing&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Migrated|newDocId=/general/development/tracker}}&lt;br /&gt;
The [http://tracker.moodle.org/ Moodle Tracker] is our database for recording and managing all Moodle development issues - bugs, improvements and feature requests.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;For an intro guide to the tracker, see [[Tracker introduction]].&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
To do anything more than browsing and searching in the tracker, you&#039;ll need to [http://tracker.moodle.org/secure/Signup%21default.jspa create an account] and then login.&lt;br /&gt;
&lt;br /&gt;
==Integration workflow==&lt;br /&gt;
&lt;br /&gt;
The following diagram illustrates the integration workflow in the tracker and lists the different statuses of an issue.&lt;br /&gt;
&lt;br /&gt;
[[File:Workflow.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Tracker fields==&lt;br /&gt;
&lt;br /&gt;
===When creating an issue===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field&lt;br /&gt;
! Values&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| valign=top | &#039;&#039;&#039;Project&#039;&#039;&#039;&lt;br /&gt;
| valign=top | &lt;br /&gt;
; Moodle&lt;br /&gt;
: For an issue relating to the Moodle codebase&lt;br /&gt;
; Moodle Community Sites&lt;br /&gt;
: For an issue on tracker.moodle.org, docs.moodle.org, demo.moodle.org, download.moodle.org, moodle.org, etc..&lt;br /&gt;
; Non-core contributed modules&lt;br /&gt;
: For an issue with a contributed plugin&lt;br /&gt;
(There are a few more projects, but these are the main ones.)&lt;br /&gt;
| valign=top |&lt;br /&gt;
* Tracker is used for multiple projects.&lt;br /&gt;
|-&lt;br /&gt;
| valign=top | &#039;&#039;&#039;Issue Type&#039;&#039;&#039; &lt;br /&gt;
| valign=top |&lt;br /&gt;
; Bug&lt;br /&gt;
: A problem which impairs or prevents Moodle from functioning correctly.&lt;br /&gt;
; Improvement&#039;&#039;&lt;br /&gt;
: An enhancement to an existing Moodle feature.&lt;br /&gt;
; New Feature&#039;&#039;&lt;br /&gt;
: A new Moodle feature which has yet to be developed.&lt;br /&gt;
; Task&lt;br /&gt;
: A task that needs to be completed, usually apart from coding.&lt;br /&gt;
; Sub-Task&lt;br /&gt;
: Part of a greater task&lt;br /&gt;
|-&lt;br /&gt;
| valign=top | &#039;&#039;&#039;Summary&#039;&#039;&#039;&lt;br /&gt;
| valign=top | A brief, concise description of the problem.&lt;br /&gt;
| valign=top | &lt;br /&gt;
* When the issue is about applying an existing solution to another, usually older, branch (namely &amp;quot;backport&amp;quot;), please use the summary of the existing solution plus its issue number (i.e. &amp;quot;Fix forum alignment (backport of MDL-99999)&amp;quot;).&lt;br /&gt;
|-&lt;br /&gt;
| valign=top | &#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
| valign=top |&lt;br /&gt;
A full and complete description of the issue including:&lt;br /&gt;
* replication steps,&lt;br /&gt;
* the expected result,&lt;br /&gt;
* the actual result,&lt;br /&gt;
* any error messages shown with [[:en:Debugging|Debugging]] turned on, and&lt;br /&gt;
* any other relevant information.&lt;br /&gt;
| valign=top |&lt;br /&gt;
* Please provide as much detail as possible.&lt;br /&gt;
* More detail means an issue will be easier to resolve.&lt;br /&gt;
|-&lt;br /&gt;
| valign=top | &#039;&#039;&#039;Affects Version/s&#039;&#039;&#039;&lt;br /&gt;
|&lt;br /&gt;
* For bugs: the latest &#039;&#039;released&#039;&#039; version in which the bug is found&lt;br /&gt;
* For improvements: the latest &#039;&#039;released&#039;&#039; version&lt;br /&gt;
* For new features: Use &#039;Future dev&#039;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| valign=top | &#039;&#039;&#039;Component/s&#039;&#039;&#039;&lt;br /&gt;
| valign=top | The area(s) in Moodle which is affected by the issue.&lt;br /&gt;
| valign=top |&lt;br /&gt;
* Select &#039;Unknown&#039; if you are unsure.&lt;br /&gt;
|-&lt;br /&gt;
| valign=top | &#039;&#039;&#039;Security Level&#039;&#039;&#039;&lt;br /&gt;
| valign=top | &lt;br /&gt;
; None&lt;br /&gt;
: Viewable by everyone, including non-logged-in users&lt;br /&gt;
; Could be a security issue&lt;br /&gt;
: Viewable by members of the jira-developers group&lt;br /&gt;
; Minor security issue&lt;br /&gt;
: Viewable by members of the security team only&lt;br /&gt;
; Serious security issue&lt;br /&gt;
: Viewable by members of the security team only&lt;br /&gt;
| valign=top |&lt;br /&gt;
* The reporter can view the issue they reported, regardless of the security level set.&lt;br /&gt;
* The higher the security level, the fewer people who can view the issue.&lt;br /&gt;
* The &#039;Could be a security issue&#039; should only be used temporarily when the issue is reported. A decision should be made as soon as possible to set another level.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===When editing an issue===&lt;br /&gt;
&lt;br /&gt;
Once an issue has been created, the following additional fields are able to be changed/set by editing the issue. Not all users can edit all fields.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field&lt;br /&gt;
! Values&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| valign=top | &#039;&#039;&#039;Fixed Version/s&#039;&#039;&#039;&lt;br /&gt;
| valign=top | &lt;br /&gt;
* Prior to integration, this will be set to a backlog (a queue of development work), for example STABLE Backlog, Dev Sprint 2.&lt;br /&gt;
* After integration, this will be set to the Moodle version the bug was fixed in, for example 2.4.1.&lt;br /&gt;
| &lt;br /&gt;
* This is usually set during triage, or later by a developer or integrator.&lt;br /&gt;
* If you resolve the bug as anything but &amp;quot;Fixed&amp;quot; (Cannot Reproduce, Won&#039;t Fix, etc.) leave Fix Version/s blank.&lt;br /&gt;
* Fix version/s are used to automatically build release notes (see the tabs on http://tracker.moodle.org/browse/MDL).&lt;br /&gt;
|-&lt;br /&gt;
| valign=top | &#039;&#039;&#039;Priority&#039;&#039;&#039;&lt;br /&gt;
| valign=top |&lt;br /&gt;
; Blocker&lt;br /&gt;
: Blocks development and/or testing, prevents Moodle from running&lt;br /&gt;
: Applicable to bugs only&lt;br /&gt;
; Critical&lt;br /&gt;
: Crashes server, loss of data, severe memory leak&lt;br /&gt;
; Major&lt;br /&gt;
: Major loss of function, incorrect output&lt;br /&gt;
; Minor&lt;br /&gt;
: Minor loss of function where workaround is possible&lt;br /&gt;
; Trivial&lt;br /&gt;
: Cosmetic problem like misspelt words or misaligned text&lt;br /&gt;
| valign=top | &lt;br /&gt;
* When it is reported, the priority level represents the severity of an bug.&lt;br /&gt;
* After being reported, the priority may be promoted by HQ developers and component leads as an issue escalates.&lt;br /&gt;
* Other users wishing to influence the priority of issues should do so by voting for the issue.&lt;br /&gt;
* The priority of new features and improvements should generally remain at the default (Minor) level.&lt;br /&gt;
|- &lt;br /&gt;
| valign=top | &#039;&#039;&#039;Reporter&#039;&#039;&#039; &lt;br /&gt;
| valign=top | The person who logs the bug.  This field is automatically filled by Tracker.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| valign=top | &#039;&#039;&#039;Assignee&#039;&#039;&#039;&lt;br /&gt;
| valign=top | The person who will fix the issue. Prior to May 2013, developers were [[Changes to issue assignment|automatically assigned]]. Currently, the assignee should be set when there is a definite intention to complete the issue.&lt;br /&gt;
| &lt;br /&gt;
* Developers or QA Testers can reassign issues.&lt;br /&gt;
* Please note that even though a person may be assigned to an issue, this does not mean they are currently working on the issue, although they are likely to in future.&lt;br /&gt;
|-&lt;br /&gt;
| valign=top | &#039;&#039;&#039;Peer reviewer&#039;&#039;&#039;&lt;br /&gt;
| valign=top | The person who will check the fix at the code level.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| valign=top | &#039;&#039;&#039;Integrator&#039;&#039;&#039;&lt;br /&gt;
| valign=top | The person who will integrate the code into the Moodle codebase.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| valign=top | &#039;&#039;&#039;Tester&#039;&#039;&#039;&lt;br /&gt;
| valign=top | The person who will test the solution at a functional level, according to the test instructions provided.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| valign=top | &#039;&#039;&#039;Environment&#039;&#039;&#039;&lt;br /&gt;
| valign=top | The operating system, server and/or browser specifications if applicable to this bug.&lt;br /&gt;
|&lt;br /&gt;
* Note that the database is specified separately in the database field below.&lt;br /&gt;
|-&lt;br /&gt;
| valign=top | &#039;&#039;&#039;Database&#039;&#039;&#039; &lt;br /&gt;
| valign=top | If applicable to the bug, identify the database type.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| valign=top | &#039;&#039;&#039;Testing instructions&#039;&#039;&#039;&lt;br /&gt;
| valign=top | The steps that a tester should follow to achieve the expected behaviour after the issue has been resolved.&lt;br /&gt;
| valign=top | &lt;br /&gt;
* This may be different to the replication steps reported in the description.&lt;br /&gt;
* These instructions are written by the developer working on the issue.&lt;br /&gt;
|-&lt;br /&gt;
| valign=top | &#039;&#039;&#039;Workaround&#039;&#039;&#039;&lt;br /&gt;
| valign=top | A way to achieve the desired functionality by other means.&lt;br /&gt;
| valign=top | &lt;br /&gt;
* This will be very useful to other Moodle users who have the same problem, until the issue is resolved.&lt;br /&gt;
* If the issue can be resolved by a simple code change, say one line, then you can give that as a workaround, although patches and Git branches are preferred.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Attachment&#039;&#039;&#039;&lt;br /&gt;
| valign=top | Patch files, Screenshots, example backups or other related files&lt;br /&gt;
| valign=top | &lt;br /&gt;
* Attaching a file will help developers and testers better understand the bug.&lt;br /&gt;
* Maximum attachment size is 512Kb.&lt;br /&gt;
|-&lt;br /&gt;
| valign=top | &#039;&#039;&#039;URL&#039;&#039;&#039;&lt;br /&gt;
| valign=top | If possible, provide a URL address that demonstrates an example of this bug.&lt;br /&gt;
|&lt;br /&gt;
|- &lt;br /&gt;
| valign=top | &#039;&#039;&#039;Epic Name&#039;&#039;&#039; &lt;br /&gt;
| valign=top | A short name given to an issue of type Epic so that linked issues can be grouped by this name. It should only be a few words at most.&lt;br /&gt;
| valign=top | Only applies to issues of type Epic.&lt;br /&gt;
|- &lt;br /&gt;
| valign=top | &#039;&#039;&#039;Epic Link&#039;&#039;&#039; &lt;br /&gt;
| valign=top | A link to an Epic issue. This can be added by providing the issue ID or Epic name. It is a way of organising related issues as part of a project. &lt;br /&gt;
| valign=top | Only applies to issues that need to be collected together for a project.&lt;br /&gt;
|-&lt;br /&gt;
| valign=top | &#039;&#039;&#039;Labels&#039;&#039;&#039;&lt;br /&gt;
| valign=top | See [[Tracker issue labels]]&lt;br /&gt;
| &lt;br /&gt;
* Labels should be specific values used in filters and searches.&lt;br /&gt;
* This is not a field for including generic keywords.&lt;br /&gt;
|-&lt;br /&gt;
| valign=top | &#039;&#039;&#039;Pull...&#039;&#039;&#039;&lt;br /&gt;
| valign=top | Links to a code solution in a Git repository.&lt;br /&gt;
| &lt;br /&gt;
* These fields are used by developers.&lt;br /&gt;
* There may be multiple solutions if the problem affects multiple Moodle versions.&lt;br /&gt;
|-&lt;br /&gt;
| valign=top | &#039;&#039;&#039;Documentation link&#039;&#039;&#039;&lt;br /&gt;
| valign=top | URL of related documentation.&lt;br /&gt;
| valign=top | &lt;br /&gt;
* When changes require documentation to be updated, this field should be filled.&lt;br /&gt;
|-&lt;br /&gt;
| valign=top | &#039;&#039;&#039;Comment&#039;&#039;&#039;&lt;br /&gt;
| valign=top |&lt;br /&gt;
* Notes made by all interested parties.&lt;br /&gt;
* A detailed register of all changes that relate to this bug.&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===When closing an issue===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field&lt;br /&gt;
! Values&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| valign=top | &#039;&#039;&#039;Resolution&#039;&#039;&#039;&lt;br /&gt;
| valign=top |&lt;br /&gt;
; Fixed&lt;br /&gt;
: Bug has been fixed; a code change has been integrated into Moodle code.&lt;br /&gt;
; Won&#039;t Fix&lt;br /&gt;
: The problem described is an issue which will never be fixed. Specific reasons should be given.&lt;br /&gt;
; Not a bug&lt;br /&gt;
: This issue is not a bug. The issue may have been logged in error. Use this code if the bug was fixed by another bug report or in some earlier Moodle version.&lt;br /&gt;
; Duplicate&lt;br /&gt;
: The problem is a duplicate of an existing issue.&lt;br /&gt;
; Incomplete&lt;br /&gt;
: More information was needed to understand this bug, but it was not provided.&lt;br /&gt;
; Can&#039;t Reproduce&lt;br /&gt;
: Attempts at reproduce the issue failed. If more information appears later, please open a new issue.&lt;br /&gt;
; Deferred&lt;br /&gt;
: The resolution to this bug will be deferred to a later release or to a fix in a third-party plugin used in Moodle.&lt;br /&gt;
| valign=top | &lt;br /&gt;
* This field is only displayed when resolving or closing a bug.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Tracker groups and permissions ==&lt;br /&gt;
&lt;br /&gt;
There are a number of groups used to define the potential of users in Tracker. Here are some important ones.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Jira group&lt;br /&gt;
! Potential&lt;br /&gt;
! How to become one&lt;br /&gt;
|-&lt;br /&gt;
| valign=top | &#039;&#039;&#039;Users&#039;&#039;&#039;&lt;br /&gt;
| valign=top | jira-users&lt;br /&gt;
| valign=top | Users can create new issues, comment on issues, vote for issues, link issues, attach files, create sub-tasks and watch issues.&lt;br /&gt;
| valign=top | Anyone who creates a tracker account becomes a member of the Users group.&lt;br /&gt;
|-&lt;br /&gt;
| valign=top | &#039;&#039;&#039;Moodle Security&#039;&#039;&#039;&lt;br /&gt;
| valign=top | moodle-security&lt;br /&gt;
| valign=top | Trusted developers and administrators who need to work on security issues that are hidden from normal users. (See [[Moodle security procedures]].)&lt;br /&gt;
| valign=top | This is generally limited to developers at Moodle HQ and Partner organisations. People wishing join the Moodle Security group should email [mailto:security@moodle.org  security@moodle.org] with the reasons for your request.&lt;br /&gt;
|-&lt;br /&gt;
| valign=top | &#039;&#039;&#039;Developers&#039;&#039;&#039;&lt;br /&gt;
| valign=top | jira-developers&lt;br /&gt;
| valign=top | Developers can edit issues and assign issues to themselves. They are also able to request peer reviews from HQ staff and component leads. They cannot submit code directly for integration review, but an HQ staff member or component lead can do this after a satisfactory peer review. (See [[Process]].)&lt;br /&gt;
| valign=top | People wishing to join the Developers group should be able to demonstrate a history of contributing patches to issues.&lt;br /&gt;
&lt;br /&gt;
When a developer&#039;s first patch is integrated, tested and the issue is closed, they are added to the group and set as issue assignee.&lt;br /&gt;
&lt;br /&gt;
If that doesn&#039;t happen automatically, please send an email to [mailto:integration@moodle.com integration@moodle.com] with your tracker username and links to issues where you have contributed patches.&lt;br /&gt;
|-&lt;br /&gt;
| valign=top | &#039;&#039;&#039;Integration requesters&#039;&#039;&#039;&lt;br /&gt;
| valign=top | pull-requesters&lt;br /&gt;
| valign=top | Developers can send issues for integration review. (See [[Process]].)&lt;br /&gt;
| valign=top | This role is reserved for Moodle HQ developers and component leads.&lt;br /&gt;
|-&lt;br /&gt;
| valign=top | &#039;&#039;&#039;Integration testers&#039;&#039;&#039;&lt;br /&gt;
| valign=top | pull-testers&lt;br /&gt;
| valign=top | Users that can tests issues under integration and pass/fail them. (See [[Process]].)&lt;br /&gt;
| valign=top | Usually reserved for HQ developers and external testers.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that you can browse a project without being logged in to Tracker, however you will be unable edit or comment on bugs.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
*[[Tracker introduction]] - less scary version of this page for new users.&lt;br /&gt;
*[[Process]]&lt;br /&gt;
*[[Bug triage]]&lt;br /&gt;
*[[Tracker issue labels]]&lt;br /&gt;
*[[Testing of integrated issues]]&lt;br /&gt;
*Using Moodle [http://moodle.org/mod/forum/discuss.php?d=43952 How to manipulate Moodle developers] forum discussion&lt;br /&gt;
*Wikipedia [http://en.wikipedia.org/wiki/Software_bug Definition of a bug]&lt;br /&gt;
&lt;br /&gt;
[[Category:Tracker]]&lt;br /&gt;
[[Category:Quality Assurance]]&lt;/div&gt;</summary>
		<author><name>Tsala</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Plugin_documentation&amp;diff=62041</id>
		<title>Plugin documentation</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Plugin_documentation&amp;diff=62041"/>
		<updated>2022-04-21T13:48:08Z</updated>

		<summary type="html">&lt;p&gt;Tsala: /* Which version of the user docs should the documentation be added to? */ link update&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Plugin developers, maintainers and users are welcome to include documentation about their plugin in the [https://docs.moodle.org English Moodle Docs]. Of course it is fine to have documentation elsewhere, such as the Github wiki, however one advantage of including documentation in the English Moodle Docs is that &#039;Moodle Docs for this page&#039; links in Moodle (when logged in as a teacher or admin) can lead directly to your plugin documentation (as explained in [[:en:Header and footer]]). And, very important, it will then be very easy for translators of Moodle Docs to add translations for this information.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Where should the documentation go?==&lt;br /&gt;
&lt;br /&gt;
To create a page for your documentation, type in the browser address bar: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://docs.moodle.org/en/Plugin_name&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (where &#039;&#039;Plugin name&#039;&#039; is the name of the plugin in the plugins directory).&lt;br /&gt;
&lt;br /&gt;
If your plugin has a page in Moodle, you can redirect this page to your documentation page as follows:&lt;br /&gt;
&lt;br /&gt;
# Log in to your Moodle site as admin and go to the page for your plugin.&lt;br /&gt;
# Follow the &#039;Help and documentation&#039; link in the footer to &#039;&#039;docs.moodle.org/en/mod/pluginname&#039;&#039; (or similar).&lt;br /&gt;
# Create this page and add a redirect by adding the text &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#redirect [[Plugin_name]]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==What should the documentation include?==&lt;br /&gt;
&lt;br /&gt;
[[File:infobox plugin.png|thumb|Example infobox: Stamp collection module]]&lt;br /&gt;
&#039;&#039;&#039;*New*&#039;&#039;&#039;: Copy and complete the following template code to obtain an infobox listing details of the plugin:&lt;br /&gt;
&amp;lt;pre  style=&amp;quot;width:40em&amp;quot;&amp;gt;&lt;br /&gt;
{{Infobox plugin&lt;br /&gt;
|type = Enter the plugin type e.g. activity, block, filter&lt;br /&gt;
|entry = Enter the plugins directory link&lt;br /&gt;
|tracker = Enter the bug tracker URL&lt;br /&gt;
|discussion = Enter the link to the forum or discussion thread&lt;br /&gt;
|maintainer = [[User:Maintainer name|Maintainer name]]&lt;br /&gt;
|float = Enter left or right to make the box float to that side (optional)&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: If there is not yet a discussion thread about your plugin, please create one in the [http://moodle.org/mod/forum/view.php?id=44 General plugins forum].&lt;br /&gt;
&lt;br /&gt;
Note: Please make sure that the page linked in &#039;User:Maintainer name|Maintainer name&#039; actually has your relevant details (profile), or a link to an existing profile in Moodle or elsewhere.&lt;br /&gt;
&lt;br /&gt;
The documentation may also include&lt;br /&gt;
&lt;br /&gt;
* A features overview with screenshots or videos.&lt;br /&gt;
* Installation instructions&lt;br /&gt;
&lt;br /&gt;
Plugin documentation examples: [[:en:Stamp collection module]], [[:en:Profile switches]].&lt;br /&gt;
&lt;br /&gt;
==Which version of the user docs should the documentation be added to?==&lt;br /&gt;
&lt;br /&gt;
Plugin documentation should be added to the most recent version wiki in which the plugin works, for example if the plugin works in Moodle 4.0, it should be added to the [https://docs.moodle.org/400/en/ Moodle 4.0 docs wiki].&lt;br /&gt;
&lt;br /&gt;
==I need help!==&lt;br /&gt;
&lt;br /&gt;
If any of the above sounds too complicated, please don&#039;t worry - just email Moodle Docs wiki admin Helen ([mailto:helen@moodle.org helen@moodle.org]) who will be happy to help you :-) (Restoring and redirecting pages etc. are quick and easy for a wiki admin to do!)&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
* [[:en:Help:Editing|Wiki editing help]]&lt;br /&gt;
* MDL-34035 A way to have more help links relative to wwwroot&lt;br /&gt;
&lt;br /&gt;
[[Category:Plugins]]&lt;br /&gt;
[[Category:Plugin documentation]]&lt;/div&gt;</summary>
		<author><name>Tsala</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=New_docs_version_process&amp;diff=62039</id>
		<title>New docs version process</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=New_docs_version_process&amp;diff=62039"/>
		<updated>2022-04-21T10:01:37Z</updated>

		<summary type="html">&lt;p&gt;Tsala: /* Day of release */ formatting&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes the procedures for creating a new Moodle Docs version wiki.&lt;br /&gt;
&lt;br /&gt;
==4 weeks prior==&lt;br /&gt;
&lt;br /&gt;
Tidying up in current latest version wiki:&lt;br /&gt;
&lt;br /&gt;
# Delete https://docs.moodle.org/en/Special:BrokenRedirects&lt;br /&gt;
# Edit https://docs.moodle.org/en/Special:DoubleRedirects (ignoring redirects to dev docs)&lt;br /&gt;
# Check and delete as necessary https://docs.moodle.org/en/Special:NewFiles&lt;br /&gt;
# Check and delete as necessary https://docs.moodle.org/en/Special:ListDuplicatedFiles&lt;br /&gt;
# Check and delete as necessary https://docs.moodle.org/en/Special:UnusedFiles&lt;br /&gt;
# (Check and delete as necessary https://docs.moodle.org/en/Special:ShortPages )&lt;br /&gt;
&lt;br /&gt;
Create a tracker issue for creating new en and de version wikis similar to MDLSITE-6265.&lt;br /&gt;
==3 weeks prior==&lt;br /&gt;
&lt;br /&gt;
In new version wiki:&lt;br /&gt;
&lt;br /&gt;
# Edit MediaWiki:MoodleDocsVersionLinks &lt;br /&gt;
# Edit Main_page&lt;br /&gt;
# Add message to MediaWiki:Sitenotice&lt;br /&gt;
# Remove new features template from all pages in Category:New_features&lt;br /&gt;
# Edit Template:New_features and Category:New_features&lt;br /&gt;
# Go through [https://tracker.moodle.org/issues/?jql=labels%20%3D%20docs_required tracker issues with the docs_required label] and the release notes for the upcoming release and add documentation on new features plus the new features template&lt;br /&gt;
# Create Upgrading_to_Moodle_3.x and redirect to Upgrading&lt;br /&gt;
# Update version number in Template:Version and Template:Version2 and Git for Administrators&lt;br /&gt;
# Review Special:WantedPages&lt;br /&gt;
# Review Special:LonelyPages&lt;br /&gt;
# Review instances of &amp;quot;(new in 3.x)&amp;quot; text (not always necessary to remove them)&lt;br /&gt;
# Add link to new version wiki to https://docs.moodle.org/dev/MediaWiki:Sidebar&lt;br /&gt;
# Add link to new version wiki to https://docs.moodle.org/en/MoodleDocs:Overview&lt;br /&gt;
# Post on moodle.org in the Moodle community sites forum about the new version wikis e.g. [https://moodle.org/mod/forum/discuss.php?d=404029 Moodle Docs 3.9 wikis now available]&lt;br /&gt;
&lt;br /&gt;
==1 week prior==&lt;br /&gt;
&lt;br /&gt;
In new wiki:&lt;br /&gt;
&lt;br /&gt;
* Remove message in MediaWiki:Sitenotice&lt;br /&gt;
* Check (and update if needed) Upgrading and Upgrade overview pages&lt;br /&gt;
&lt;br /&gt;
In all older version wikis:&lt;br /&gt;
&lt;br /&gt;
* Edit https://docs.moodle.org/en/MediaWiki:MoodleDocsVersionLinks to add the new version and remove older versions (though keeping 3.9 as [[Releases|LTS release]])&lt;br /&gt;
&lt;br /&gt;
==Day of release==&lt;br /&gt;
&lt;br /&gt;
Request for the new version wiki to be made default and email notification of watched pages to be enabled.&lt;br /&gt;
&lt;br /&gt;
In previous latest version wiki:&lt;br /&gt;
&lt;br /&gt;
* Edit https://docs.moodle.org/en/MediaWiki:Noarticletext to make it like https://docs.moodle.org/2x-1/en/MediaWiki:Noarticletext&lt;br /&gt;
* Edit https://docs.moodle.org/en/Creating_SCORM_Content to make it like https://docs.moodle.org/2x-1/en/Creating_SCORM_Content &lt;br /&gt;
* Go through Special:RecentChanges in the previous most recent version wiki and add relevant changes to the new version wiki&lt;br /&gt;
* Edit https://docs.moodle.org/en/Awards and add &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#redirect [[:en:Awards]]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; so it redirects to the latest version of the page&lt;br /&gt;
* Edit https://docs.moodle.org/en/MoodleDocs:Overview and add &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#redirect [[:en:MoodleDocs:Overview]]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; so it redirects to the latest version of the page&lt;br /&gt;
* For no longer supported versions, create MediaWiki:Sitenotice by copying content from https://docs.moodle.org/37/en/MediaWiki:Sitenotice&lt;br /&gt;
&lt;br /&gt;
==Final checks==&lt;br /&gt;
&lt;br /&gt;
* Email notification of watched pages enabled&lt;br /&gt;
* Links without version number e.g. https://docs.moodle.org/en/Main_page redirect to the new version wiki&lt;br /&gt;
* Docs links from a dev site, such as the QA testing site, redirect to the correct page in the new version wiki&lt;br /&gt;
* New version wiki listed in https://docs.moodle.org/overview/ &lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation]]&lt;br /&gt;
[[Category:Processes]]&lt;br /&gt;
[[Category:Moodle Docs]]&lt;/div&gt;</summary>
		<author><name>Tsala</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Add_a_block_cleanup&amp;diff=61901</id>
		<title>Add a block cleanup</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Add_a_block_cleanup&amp;diff=61901"/>
		<updated>2022-03-26T13:44:32Z</updated>

		<summary type="html">&lt;p&gt;Tsala: /* Disabling less useful blocks */ improved wording&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Project&lt;br /&gt;
|name = Add a block cleanup&lt;br /&gt;
|state = Completed&lt;br /&gt;
|tracker = MDL-73299 (epic)&lt;br /&gt;
|discussion = [https://moodle.org/mod/forum/discuss.php?d=429959 Add a block cleanup for Moodle 4.0]&lt;br /&gt;
|assignee = Sara Arjona&lt;br /&gt;
}}&lt;br /&gt;
{{Template:Moodle 4.0}}&lt;br /&gt;
&lt;br /&gt;
In the Add a block menu, the list of blocks is really long. This project is about figuring out how to reduce the list.&lt;br /&gt;
==Disabling blocks if the feature is disabled==&lt;br /&gt;
Blocks such as the blog menu, blog tags and recent blog entries will be disabled if blogs are disabled in advanced features.&lt;br /&gt;
&lt;br /&gt;
Blocks this applies to:&lt;br /&gt;
* Accessibility review&lt;br /&gt;
* Blog menu&lt;br /&gt;
* Blog tags&lt;br /&gt;
* Recent blog entries&lt;br /&gt;
* Comments&lt;br /&gt;
* Course completion status&lt;br /&gt;
* Global search&lt;br /&gt;
* Latest badges&lt;br /&gt;
* Learning plans&lt;br /&gt;
* Network servers&lt;br /&gt;
* Random glossary entry&lt;br /&gt;
* Tags&lt;br /&gt;
==Disabling less useful blocks==&lt;br /&gt;
Some blocks that we have disabled by default are:&lt;br /&gt;
* Course summary&lt;br /&gt;
* Feedback - as the block only works if a Feedback activity is added to the site home page&lt;br /&gt;
* Remote RSS feeds - as RSS feeds are not used as much these days&lt;br /&gt;
* Self completion - as the block is only needed if self completion is enabled in the course completion settings (as mentioned in the setting).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For new installs, the above blocks will disabled by default.&lt;br /&gt;
&lt;br /&gt;
For upgraded sites, we check if there are any instances of the block and if not, disable it.&lt;br /&gt;
&lt;br /&gt;
==Letting themes define &amp;quot;unneeded&amp;quot; blocks==&lt;br /&gt;
The Administration and Navigation blocks are only needed if the Classic theme is used.&lt;br /&gt;
&lt;br /&gt;
A new theme setting has been added to let themes mark blocks as &amp;quot;unneeded&amp;quot; (to avoid them being displayed in the &amp;quot;Add a block&amp;quot; list). This will allow Boost to mark the following blocks as unneeded:&lt;br /&gt;
* Navigation&lt;br /&gt;
* Administration&lt;br /&gt;
* Courses - as we have My courses in 4.0&lt;br /&gt;
* Section links - as the course index in 4.0 provides access to sections&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As it&#039;s a theme setting, admins can still remove them from this &amp;quot;unneeded&amp;quot; blocks list, if, for any reason, they want the block to be available in the &amp;quot;Add a block&amp;quot; list.&lt;/div&gt;</summary>
		<author><name>Tsala</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Add_a_block_cleanup&amp;diff=61900</id>
		<title>Add a block cleanup</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Add_a_block_cleanup&amp;diff=61900"/>
		<updated>2022-03-26T13:41:59Z</updated>

		<summary type="html">&lt;p&gt;Tsala: /* Letting themes define &amp;quot;unneeded&amp;quot; blocks */ improved wording&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Project&lt;br /&gt;
|name = Add a block cleanup&lt;br /&gt;
|state = Completed&lt;br /&gt;
|tracker = MDL-73299 (epic)&lt;br /&gt;
|discussion = [https://moodle.org/mod/forum/discuss.php?d=429959 Add a block cleanup for Moodle 4.0]&lt;br /&gt;
|assignee = Sara Arjona&lt;br /&gt;
}}&lt;br /&gt;
{{Template:Moodle 4.0}}&lt;br /&gt;
&lt;br /&gt;
In the Add a block menu, the list of blocks is really long. This project is about figuring out how to reduce the list.&lt;br /&gt;
==Disabling blocks if the feature is disabled==&lt;br /&gt;
Blocks such as the blog menu, blog tags and recent blog entries will be disabled if blogs are disabled in advanced features.&lt;br /&gt;
&lt;br /&gt;
Blocks this applies to:&lt;br /&gt;
* Accessibility review&lt;br /&gt;
* Blog menu&lt;br /&gt;
* Blog tags&lt;br /&gt;
* Recent blog entries&lt;br /&gt;
* Comments&lt;br /&gt;
* Course completion status&lt;br /&gt;
* Global search&lt;br /&gt;
* Latest badges&lt;br /&gt;
* Learning plans&lt;br /&gt;
* Network servers&lt;br /&gt;
* Random glossary entry&lt;br /&gt;
* Tags&lt;br /&gt;
==Disabling less useful blocks==&lt;br /&gt;
Some blocks that we have disabled by default are:&lt;br /&gt;
* Course summary&lt;br /&gt;
* Feedback - as the block only works if a Feedback activity is added to the site home page&lt;br /&gt;
* Remote RSS feeds - as RSS feeds are not used as much these days&lt;br /&gt;
* Self completion - as the block is only needed if self completion is enabled in the course completion settings. Instead we can mention in the interface that for self completion, the block needs to be enabled by an administrator.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For new installs, the above blocks will disabled by default.&lt;br /&gt;
&lt;br /&gt;
For upgraded sites, we check if there are any instances of the block and if not, disable it.&lt;br /&gt;
==Letting themes define &amp;quot;unneeded&amp;quot; blocks==&lt;br /&gt;
The Administration and Navigation blocks are only needed if the Classic theme is used.&lt;br /&gt;
&lt;br /&gt;
A new theme setting has been added to let themes mark blocks as &amp;quot;unneeded&amp;quot; (to avoid them being displayed in the &amp;quot;Add a block&amp;quot; list). This will allow Boost to mark the following blocks as unneeded:&lt;br /&gt;
* Navigation&lt;br /&gt;
* Administration&lt;br /&gt;
* Courses - as we have My courses in 4.0&lt;br /&gt;
* Section links - as the course index in 4.0 provides access to sections&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As it&#039;s a theme setting, admins can still remove them from this &amp;quot;unneeded&amp;quot; blocks list, if, for any reason, they want the block to be available in the &amp;quot;Add a block&amp;quot; list.&lt;/div&gt;</summary>
		<author><name>Tsala</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Site_admin_presets&amp;diff=61899</id>
		<title>Site admin presets</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Site_admin_presets&amp;diff=61899"/>
		<updated>2022-03-26T13:03:08Z</updated>

		<summary type="html">&lt;p&gt;Tsala: /* Introduction */ rewording&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Project&lt;br /&gt;
|state = Completed&lt;br /&gt;
|name = Site admin presets&lt;br /&gt;
|tracker = MDL-72112&lt;br /&gt;
|discussion = [https://moodle.org/mod/forum/discuss.php?d=429512 Site admin presets in Moodle 4.0]&lt;br /&gt;
|assignee = Pimenko, Sara Arjona and Amaia Anabitarte&lt;br /&gt;
}}&lt;br /&gt;
{{Template:Moodle 4.0}}&lt;br /&gt;
==Introduction==&lt;br /&gt;
As an admin&lt;br /&gt;
*I want to load administration presets&lt;br /&gt;
*So I can easily switch between different site admin configurations&lt;br /&gt;
&lt;br /&gt;
This feature is partially implemented by the third-party plugin [https://moodle.org/plugins/block_admin_presets Admin presets], created by David Monllaó and maintained by developers from [https://pimenko.com/ Pimenko]. The plugin lets admins import/export admin settings. This project adds enabled/disabled plugins data too.&lt;br /&gt;
&lt;br /&gt;
==Acceptance criteria==&lt;br /&gt;
* The block should be converted to an admin tool.&lt;br /&gt;
** A link &amp;quot;Site admin presets&amp;quot; (pointing to 3rd-party plugin main page) should be displayed in the Site administration.&lt;br /&gt;
* The admin tool should follow the Moodle coding style and policy rules. &lt;br /&gt;
* The “Auto exclude sensitive settings” setting should be checked by default.&lt;br /&gt;
** The tool_admin_presets setting should be reviewed to confirm it includes all the sensitive settings that have been added recently.&lt;br /&gt;
* Presets should also include plugins visibility in order to let admins export/preview/load the list of plugins and their visibility (the original third-party plugin only includes settings).&lt;br /&gt;
* Moodle LMS should include, by default, 2 site admin presets, Starter and Full.&lt;br /&gt;
** Starter will disable most of the settings and plugins in order to make it easier for users to find the most common features.&lt;br /&gt;
** Full will include settings and plugins configuration as in Moodle 4.0&lt;br /&gt;
== Starter preset setting changes ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Site administration&lt;br /&gt;
!Action&lt;br /&gt;
|-&lt;br /&gt;
|Advanced features&lt;br /&gt;
|Disable comments, tags, notes, blogs, badges, analytics, competencies&lt;br /&gt;
|-&lt;br /&gt;
|Users / Privacy and policies&lt;br /&gt;
|Disable Show data retention summary&lt;br /&gt;
|-&lt;br /&gt;
|Courses / Activity chooser / Activity chooser settings&lt;br /&gt;
|Set Activity chooser tabs to &amp;quot;Starred, All, Recommended&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|Plugins / Activity modules / Manage activities&lt;br /&gt;
|Hide chat, database, external tool, IMS content package, lesson, SCORM, survey, wiki, workshop&lt;br /&gt;
|-&lt;br /&gt;
|Plugins / Activity modules / Forum&lt;br /&gt;
|Maximum number of attachments = 3&lt;br /&gt;
|-&lt;br /&gt;
|Plugins / Authentication / Manage authentication&lt;br /&gt;
|Hide Guest login button&lt;br /&gt;
|-&lt;br /&gt;
|Plugins / Availability restrictions / Manage restrictions&lt;br /&gt;
|Hide Grouping, User profile&lt;br /&gt;
|-&lt;br /&gt;
|Plugins / Activity modules / Manage blocks&lt;br /&gt;
|Hide Activities, Blog menu, Blog tags, Comments, Course completion status, Courses, Flickr, Global search, Latest badges, Learning plans, Logged in user, Login, Main menu, Mentees, Network servers, Online users, Private files, Recent blog entries, Recently accessed courses, Search forums, Section links, Social activities, Starred courses, Tags, YouTube&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hidden by default since Moodle 4.0: Course/site summary, RSS feeds, Self completion, Feedback.&lt;br /&gt;
|-&lt;br /&gt;
|Plugins / Course formats / Manage course formats&lt;br /&gt;
|Disable Social format&lt;br /&gt;
|-&lt;br /&gt;
|Plugins / Data formats / Manage data formats&lt;br /&gt;
|Disable Javascript Object Notation (.json)&lt;br /&gt;
|-&lt;br /&gt;
|Plugins / Enrolments / Manage enrol plugins&lt;br /&gt;
|Disable Cohort sync, Guest access&lt;br /&gt;
|-&lt;br /&gt;
|Plugins / Filters / Manage filters&lt;br /&gt;
|Disable MathJax, Activity names auto-linking&lt;br /&gt;
|-&lt;br /&gt;
|Plugins / Question behaviours / Manage question behaviours&lt;br /&gt;
|Disable Adaptive mode (no penalties), Deferred feedback with CBM, Immediate feedback with CBM&lt;br /&gt;
|-&lt;br /&gt;
|Plugins / Question types / Manage question types&lt;br /&gt;
|Disable Calculated, Calculated multichoice, Calculated simple, Drag and drop into text, Drag and drop markers, Drag and drop onto image, Embedded answers (Cloze), Numerical, Random short-answer matching&lt;br /&gt;
|-&lt;br /&gt;
|Plugins / Repositories / Manage repositories&lt;br /&gt;
|Disable Server files, URL downloader, Wikimedia&lt;br /&gt;
|-&lt;br /&gt;
|Plugins / Text editors / Manage editors&lt;br /&gt;
|Disable TinyMCE HTML editor&lt;br /&gt;
|}&lt;br /&gt;
== Migrating from block_admin_preset to tool_admin_preset ==&lt;br /&gt;
There are no plans to create any migration tool or similar. However, the tool_admin_preset follows the same XML than the block_admin_preset so users can export their presets from the block_admin_preset and import them in the tool_admin_preset.&lt;br /&gt;
==Defining the preset to be installed==&lt;br /&gt;
A $CFG setting in the config.php file allows you to specify the preset which will be installed during the install process (MDL-73145):&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// The site admin presets plugin has been integrated in Moodle LMS. You can use a setting in case you&lt;br /&gt;
// want to apply a preset during the installation:&lt;br /&gt;
//&lt;br /&gt;
//      $CFG-&amp;gt;setsitepresetduringinstall = &#039;starter&#039;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tsala</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Add_a_block_cleanup&amp;diff=61898</id>
		<title>Add a block cleanup</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Add_a_block_cleanup&amp;diff=61898"/>
		<updated>2022-03-25T09:18:17Z</updated>

		<summary type="html">&lt;p&gt;Tsala: /* Letting themes define &amp;quot;un-addable&amp;quot; blocks */ unneeded&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Project&lt;br /&gt;
|name = Add a block cleanup&lt;br /&gt;
|state = Completed&lt;br /&gt;
|tracker = MDL-73299 (epic)&lt;br /&gt;
|discussion = [https://moodle.org/mod/forum/discuss.php?d=429959 Add a block cleanup for Moodle 4.0]&lt;br /&gt;
|assignee = Sara Arjona&lt;br /&gt;
}}&lt;br /&gt;
{{Template:Moodle 4.0}}&lt;br /&gt;
&lt;br /&gt;
In the Add a block menu, the list of blocks is really long. This project is about figuring out how to reduce the list.&lt;br /&gt;
==Disabling blocks if the feature is disabled==&lt;br /&gt;
Blocks such as the blog menu, blog tags and recent blog entries will be disabled if blogs are disabled in advanced features.&lt;br /&gt;
&lt;br /&gt;
Blocks this applies to:&lt;br /&gt;
* Accessibility review&lt;br /&gt;
* Blog menu&lt;br /&gt;
* Blog tags&lt;br /&gt;
* Recent blog entries&lt;br /&gt;
* Comments&lt;br /&gt;
* Course completion status&lt;br /&gt;
* Global search&lt;br /&gt;
* Latest badges&lt;br /&gt;
* Learning plans&lt;br /&gt;
* Network servers&lt;br /&gt;
* Random glossary entry&lt;br /&gt;
* Tags&lt;br /&gt;
==Disabling less useful blocks==&lt;br /&gt;
Some blocks that we have disabled by default are:&lt;br /&gt;
* Course summary&lt;br /&gt;
* Feedback - as the block only works if a Feedback activity is added to the site home page&lt;br /&gt;
* Remote RSS feeds - as RSS feeds are not used as much these days&lt;br /&gt;
* Self completion - as the block is only needed if self completion is enabled in the course completion settings. Instead we can mention in the interface that for self completion, the block needs to be enabled by an administrator.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For new installs, the above blocks will disabled by default.&lt;br /&gt;
&lt;br /&gt;
For upgraded sites, we check if there are any instances of the block and if not, disable it.&lt;br /&gt;
==Letting themes define &amp;quot;unneeded&amp;quot; blocks==&lt;br /&gt;
The Administration and Navigation blocks are only needed if the Classic theme is used.&lt;br /&gt;
&lt;br /&gt;
A new theme setting has been added to let themes mark blocks as &amp;quot;unneeded&amp;quot; (to avoid them being displayed in the &amp;quot;Add a block&amp;quot; list page). This will allow Boost to mark the following blocks as unneeded:&lt;br /&gt;
* Navigation - as it has been improved in 4.0&lt;br /&gt;
* Administration - as navigation has been improved in 4.0&lt;br /&gt;
* Courses - as we have My courses in 4.0&lt;br /&gt;
* Section links - as the course index in 4.0 provides access to sections&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As it&#039;s a theme setting, admins can still remove them from this &amp;quot;unneeded&amp;quot; blocks list, if, for any reason, they want to get them displayed in the &amp;quot;Add a block&amp;quot; page.&lt;/div&gt;</summary>
		<author><name>Tsala</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Core_plugins_review_for_Moodle_4.0&amp;diff=61897</id>
		<title>Core plugins review for Moodle 4.0</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Core_plugins_review_for_Moodle_4.0&amp;diff=61897"/>
		<updated>2022-03-25T09:14:56Z</updated>

		<summary type="html">&lt;p&gt;Tsala: /* Plugins to be removed from core and added to the plugins directory */ quiz results block&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Project&lt;br /&gt;
|name = Core plugins review&lt;br /&gt;
|state = Completed&lt;br /&gt;
|tracker = MDL-72046 (epic)&lt;br /&gt;
|discussion = [https://moodle.org/mod/forum/discuss.php?d=426053 Moodle core plugins review]&lt;br /&gt;
|assignee = Sara Arjona&lt;br /&gt;
}}&lt;br /&gt;
{{Template:Moodle 4.0}}&lt;br /&gt;
==Introduction==&lt;br /&gt;
This project is about reviewing the plugins in core Moodle LMS with the aim of removing any which are no longer or hardly used, and if appropriate, adding them to the Moodle plugins directory.&lt;br /&gt;
==Plugins to be deleted from core==&lt;br /&gt;
The following plugins will be deleted from core but not put in the plugins directory because the technology is discontinued.&lt;br /&gt;
* WebCT question import/export format (qformat_webct)&lt;br /&gt;
* Examview question import/export format (qformat_examview)&lt;br /&gt;
* Flash animation media player (media_swf)&lt;br /&gt;
* VideoJS Flash plugin&lt;br /&gt;
* Picasa repository (repository_picasa)&lt;br /&gt;
* Picasa portfolio (portfolio_picasa)&lt;br /&gt;
* Microsoft OneDrive (legacy)	(repository_skydrive)&lt;br /&gt;
==Plugins to be removed from core and added to the plugins directory==&lt;br /&gt;
Plugins which have been removed from core and added to the plugins directory will initially be listed with Moodle HQ as maintainer while we seek new maintainers via the [[Plugins adoption programme]].&lt;br /&gt;
* Word censorship filter (filter_censor)&lt;br /&gt;
* Health center admin tool (tool_health)&lt;br /&gt;
* Jabber notification (message_jabber)&lt;br /&gt;
* Quiz results block (block_quiz_results)&lt;br /&gt;
* Box repository (repository_boxnet)&lt;br /&gt;
* Box portfolio (portfolio_boxnet)&lt;br /&gt;
Note the plugins can be added to the Plugins directory only once the target version 4.0 is registered there, which happens on beta release.&lt;br /&gt;
&lt;br /&gt;
==Plugins we are thinking about removing from core in the future and adding to the plugins directory==&lt;br /&gt;
We still need to decide which of the following plugins should be removed from core and added to the plugins directory. It will be done in MDL-73136 (epic). Please let us know your thoughts by posting in the discussion on moodle.org [https://moodle.org/mod/forum/discuss.php?d=426053 Moodle core plugins review]. We will collate all your feedback and review what to do with each plugin.&lt;br /&gt;
* Algebra notation filter (filter_algebra)&lt;br /&gt;
* Assignment 2.2 module (mod_assignment): MDL-72350&lt;br /&gt;
* Equella repository (repository_equella)&lt;br /&gt;
* Flickr block (block_tag_flickr): MDL-72614 &lt;br /&gt;
* Flickr portfolio (portfolio_flickr): MDL-72614  &lt;br /&gt;
* Flickr repository (repository_flickr): MDL-72614  &lt;br /&gt;
* Flickr public repository (repository_flickr_public): MDL-72614  &lt;br /&gt;
* HTML tidy filter (filter_tidy)&lt;br /&gt;
* Legacy course files repository (repository_coursefiles)&lt;br /&gt;
* Mahara ePortfolio (portfolio_mahara)&lt;br /&gt;
* Merlot.org repository (repository_merlot)&lt;br /&gt;
* Survey activity (mod_survey)&lt;br /&gt;
* URL downloader repository (repository_url)&lt;br /&gt;
== How will these plugins be removed from core? ==&lt;br /&gt;
* The plugin folder (for instance, question/format/webct/ for qformat_webct), will be completely removed from Moodle core. IMPORTANT: if you want to keep any of the plugins removed from core in your Moodle site, you will need to download and copy the plugin folder to the right place BEFORE running the upgrading process.&lt;br /&gt;
* Each plugin will be removed from the standard_plugins_list() method and added to the is_deleted_standard_plugin() method (both placed in lib/classes/plugin_manager.php).&lt;br /&gt;
[[File:jabber tobedeleted.png|center|thumb|The plugins will be marked as &amp;quot;To be deleted&amp;quot; if their code is not placed again in the Moodle folder.]]&lt;br /&gt;
* The upgrading steps will be added to lib/db/upgrade.php, to remove specific tables and settings (when it applies).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The plugins data will be removed only if the plugins files are not present anymore in the code. So, if a site wants to keep any of the plugins removed from core, they should download and copy the plugin folder to the right place (as they use to do with third-party plugins) BEFORE running the upgrading process.&lt;/div&gt;</summary>
		<author><name>Tsala</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Moodle_4.0_release_notes&amp;diff=61896</id>
		<title>Moodle 4.0 release notes</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Moodle_4.0_release_notes&amp;diff=61896"/>
		<updated>2022-03-24T16:47:11Z</updated>

		<summary type="html">&lt;p&gt;Tsala: scheduled release date update&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Releases]] &amp;gt; {{FULLPAGENAME}}&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Release date: Not yet released - scheduled for the week of 18 April 2022&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here is [https://tracker.moodle.org/secure/IssueNavigator!executeAdvanced.jspa?jqlQuery=project+%3D+mdl+AND+resolution+%3D+fixed+AND+fixVersion+in+%28%224.0%22%29+ORDER+BY+priority+DESC&amp;amp;runQuery=true&amp;amp;clear=true the full list of fixed issues in 4.0].&lt;br /&gt;
&lt;br /&gt;
If you are upgrading from a previous version, please see [[:en:Upgrading|Upgrading]] in the user docs.&lt;br /&gt;
&lt;br /&gt;
==Server requirements==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note: Requirements still to be reviewed and updated as necessary!&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
These are just the minimum supported versions. We recommend keeping all of your software and operating systems up-to-date.&lt;br /&gt;
&lt;br /&gt;
* Moodle upgrade:  Moodle 3.6 or later&lt;br /&gt;
* PHP version: minimum PHP 7.3.0 &#039;&#039;Note: minimum PHP version has increased since Moodle 3.10&#039;&#039;. PHP 7.4.x is supported too. [[Moodle and PHP|PHP 8.0 support]] is being implemented (see MDL-70745) and &#039;&#039;&#039;not ready for production&#039;&#039;&#039; yet.&lt;br /&gt;
* PHP extension &#039;&#039;&#039;sodium&#039;&#039;&#039; is recommended. It will be required in Moodle 4.2. For further details, see [https://docs.moodle.org/311/en/Environment_-_PHP_extension_sodium Environment - PHP extension sodium].&lt;br /&gt;
* PHP extension &#039;&#039;&#039;exif&#039;&#039;&#039; is recommended.&lt;br /&gt;
* PHP setting &#039;&#039;&#039;max_input_vars&#039;&#039;&#039; is recommended to be &amp;gt;= 5000 for PHP 7.x installations. It&#039;s a requirement for PHP 8.x installations. For further details, see [https://docs.moodle.org/311/en/Environment_-_max_input_vars Environment - max input vars].&lt;br /&gt;
&lt;br /&gt;
=== Database requirements ===&lt;br /&gt;
&lt;br /&gt;
Moodle supports the following database servers. Again, version numbers are just the minimum supported version. We recommend running the latest stable version of any software.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Database&lt;br /&gt;
! Minimum version&lt;br /&gt;
! Recommended&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.postgresql.org/ PostgreSQL]&lt;br /&gt;
| 10 (increased since Moodle 3.11)  &lt;br /&gt;
| Latest&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.mysql.com/ MySQL]&lt;br /&gt;
| 5.7 &lt;br /&gt;
| Latest&lt;br /&gt;
|-&lt;br /&gt;
| [https://mariadb.org/ MariaDB]&lt;br /&gt;
| 10.2.29 &lt;br /&gt;
| Latest&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.microsoft.com/en-us/server-cloud/products/sql-server/ Microsoft SQL Server]&lt;br /&gt;
| 2017 (increased since Moodle 3.10)&lt;br /&gt;
| Latest&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.oracle.com/us/products/database/overview/index.html Oracle Database]&lt;br /&gt;
| 11.2&lt;br /&gt;
| Latest&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Client requirements==&lt;br /&gt;
&lt;br /&gt;
=== Browser support ===&lt;br /&gt;
&lt;br /&gt;
Moodle is compatible with any standards compliant web browser. We regularly test Moodle with the following browsers:&lt;br /&gt;
&lt;br /&gt;
Desktop:&lt;br /&gt;
* Chrome&lt;br /&gt;
* Firefox&lt;br /&gt;
* Safari&lt;br /&gt;
* Edge&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note: Moodle 4.0 does NOT support Internet Explorer 11.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Safari 7 and below has known compatibility issues with Moodle 4.0.&lt;br /&gt;
&lt;br /&gt;
Mobile:&lt;br /&gt;
* MobileSafari&lt;br /&gt;
* Google Chrome&lt;br /&gt;
&lt;br /&gt;
For the best experience and optimum security, we recommend that you keep your browser up to date.&lt;br /&gt;
==Major features==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Other highlights==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Security issues==&lt;br /&gt;
 &lt;br /&gt;
A number of security related issues were resolved. Details of these issues will be released after a period of approximately one week to allow system administrators to safely update to the latest version.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
==See also==&lt;br /&gt;
*[[Moodle 3.11 release notes]]&lt;br /&gt;
 &lt;br /&gt;
[[Category:Release notes]]&lt;br /&gt;
[[Category:Moodle 4.0]]&lt;br /&gt;
 &lt;br /&gt;
[[fr:Notes de version de Moodle 4.0]]&lt;br /&gt;
[[es:Notas de Moodle 4.0]]&lt;/div&gt;</summary>
		<author><name>Tsala</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Translating_Moodle_Docs&amp;diff=61878</id>
		<title>Translating Moodle Docs</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Translating_Moodle_Docs&amp;diff=61878"/>
		<updated>2022-03-21T13:56:11Z</updated>

		<summary type="html">&lt;p&gt;Tsala: /* Contributing to the documentation */ removing link to manuals page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Translation}}&lt;br /&gt;
==Contributing to the documentation==&lt;br /&gt;
Moodle Docs pages, such as the page you are reading right now, are wiki pages available in [https://docs.moodle.org/overview/ several languages]. Any registered Moodle user can contribute to Moodle Docs and improve or translate these wiki pages. Please make sure to follow the [[:en:Guidelines_for_Contributors|guidelines for contributors]].&lt;br /&gt;
&lt;br /&gt;
You might find it useful to add the original English documentation pages that you have just translated to your watchlist (alt-shift-w), so that you will know when your translation might need to be re-checked for a possible update.&lt;br /&gt;
&lt;br /&gt;
==Translating the screen images used in Moodle Docs==&lt;br /&gt;
* If you want to recreate the bright orange-coloured screen images used in the Documentation pages (eg, [https://docs.moodle.org/30/en/New_features Moodle 3.0 New features Docs page]), you can replicate the [http://school.demo.moodle.net/ Mount Orange school] theme in your local server by following the details outlined [https://docs.moodle.org/30/en/Standard_themes#Mount_Orange:_example_of_a_customised_More_theme here for Moodle 3.0] and [https://docs.moodle.org/34/en/Standard_themes#Example_of_a_customised_Boost_theme here for the Boost theme in more recent Moodle branches].&lt;br /&gt;
&lt;br /&gt;
===Replicating the Mount Orange theme look in a local server with the Boost theme===&lt;br /&gt;
* You will need to download the cloudy background from [https://docs.moodle.org/34/en/File:bg6.png here] and the Mount Orange image from [https://docs.moodle.org/30/en/File:Mount_Orange_Front_page_image.jpg here].&lt;br /&gt;
* You may insert these two images in a label in a Moodle course and notice (write down) the paths that references where these images have been stored, as you will need to input these paths later.&lt;br /&gt;
&lt;br /&gt;
* Go to your site home and edit the site home summary.&lt;br /&gt;
&lt;br /&gt;
[[File:Edit_Site_home_01.png]]&lt;br /&gt;
&lt;br /&gt;
** You need to click on the very first tool button in  order to show all the tools buttons in the Atto editor.&lt;br /&gt;
&lt;br /&gt;
[[File:Edit_Site_home_02.png]]&lt;br /&gt;
&lt;br /&gt;
** You need to click on the &amp;lt;/&amp;gt; button in order to input HTML code:&lt;br /&gt;
&lt;br /&gt;
[[File:Edit_Site_home_03.png]]&lt;br /&gt;
&lt;br /&gt;
** You must input the code described in &#039;Front page topic section&#039; of https://docs.moodle.org/34/en/Standard_themes#Example_of_a_customised_Boost_theme. Do NOT click the &#039;Save&#039; button yet:&lt;br /&gt;
&lt;br /&gt;
[[File:Edit Site home 04.png]]&lt;br /&gt;
** Replace &#039;YOUR UPLOADED FRONT PAGE IMAGE.jpg&#039; with the path to your recently uploaded front page image, that you carefully wrote down earlier.&lt;br /&gt;
** Now is the time when you replace the &#039;YOUR HEADING&#039; text with the translated text for your Orange-coloured School (&#039;Escuela Monte Naranja&#039; for this Spanish language example). &lt;br /&gt;
** Replace the &#039;SMALLER  HEADING&#039; text in both places with your language text strings.&lt;br /&gt;
** Replace &#039;Paragraph of text&#039; in both places.&lt;br /&gt;
** Replace &#039;BUTTON TEXT&#039; in both cases-&lt;br /&gt;
* When you click again on the &amp;lt;&amp;gt; button, the HTML code will be interpreted and you will see the graphics displayed and the texts rendered in a nice orange-colored style:&lt;br /&gt;
&lt;br /&gt;
[[File:Edit_Site_home_05.png]]&lt;br /&gt;
** Check the result, and correct if necessary.&lt;br /&gt;
** You can now save your changes.&lt;br /&gt;
&lt;br /&gt;
* Go to Administration, Appearance, Themes, Boost, advanced settings &lt;br /&gt;
* Paste the &#039;Boost theme Advanced settings - Raw initial CSS:&#039; and &#039;Boost theme Advanced settings - Raw SCSS:&#039; codes from  https://docs.moodle.org/34/en/Standard_themes#Example_of_a_customised_Boost_theme.&lt;br /&gt;
** In the &#039;Boost theme Advanced settings - Raw SCSS:&#039; section, replace &#039;YOUR UPLOADED BACKGROUND IMAGE.jpg&#039; with the path to your recently uploaded cloudy background image.&lt;br /&gt;
* Replace the original English language text with the appropiate text for your language pack.&lt;br /&gt;
* Check that your Mount Orange clone site looks good.&lt;br /&gt;
* Compare your site&#039;s front page with the image of [https://docs.moodle.org/34/en/File:MountOrangeFrontPage.png Mount Orange 3.4 front page], or better yet, compare your site with [http://school.demo.moodle.net/ the current Mount Orange] page.&lt;br /&gt;
** Correct if necessary.&lt;br /&gt;
* If all is fine, save the changes.&lt;br /&gt;
&lt;br /&gt;
* You can now use your emulated translated Orange site to replicate the beautiful images Moodle HQ used to illustrate [https://docs.moodle.org/33/en/New_features Moodle 3.3 new features] (or newer branches) in Moodle Docs.&lt;br /&gt;
&lt;br /&gt;
==Which documentation pages are most important or useful to translate?==&lt;br /&gt;
&lt;br /&gt;
Many Moodle users will start reading the [[:en:Main Page|English docs main page]]. This might be a good page to have translated.&lt;br /&gt;
&lt;br /&gt;
The [[:en:New_features|new features in the latest version]] would surely be of interest to the users of previous Moodle versions that want to catch up with the new available features.&lt;br /&gt;
&lt;br /&gt;
The [[:en:Category:Quick_guide|quick guides]] are very short pages (that hopefully you can very quickly translate) that teachers can quickly check, in order to grasp how an important Moodle feature works, without having to read the standard detailed (long) Moodle full documentation pages.&lt;br /&gt;
&lt;br /&gt;
The [[:en:Table_of_Contents|Table of contents]] has a very comprehensive and organized list of important Moodle topics. This might be a worthy addition to your language documentation.&lt;br /&gt;
&lt;br /&gt;
If you see a post which has been rated as &#039;Useful&#039; several times in a [https://moodle.org/course/ Forum in a language other than English], which links to an untranslated English documentation page, it might be a good idea to translate this page.&lt;br /&gt;
&lt;br /&gt;
The English Documentation Special Page with the [https://docs.moodle.org/30/en/index.php?title=Special:MostLinkedPages&amp;amp;limit=100&amp;amp;offset=0 Most linked-to pages] shows the English pages that have the highest number of links and (except for all the User: pages) you will find there many pages highly useful for Moodlers of all languages and worth translating to your language (eg, [https://docs.moodle.org/30/en/Managing_a_Moodle_site Managing a Moodle site] &amp;amp; [https://docs.moodle.org/30/en/Managing_a_Moodle_course Managing a Moodle course]).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;If you are a Moodle site admin or teacher, using a language other than English, and you use the &#039;Moodle Docs for this page&#039; link in your daily work, please consider translating the English pages that helped you most to do your job and solve your problems.&#039;&#039; See below.&lt;br /&gt;
&lt;br /&gt;
==Translating the Documentation pages for &#039;Mooodle Docs for this page&#039; and &#039;More help&#039; links==&lt;br /&gt;
&lt;br /&gt;
* When logged in as an admin or teacher, &#039;Moodle Docs for this page&#039; links at the bottom of each page in Moodle take you to documentation about that page in your language, if it exists, otherwise in English.&lt;br /&gt;
[[File:Moodle Docs for this page.png|300px]]&lt;br /&gt;
* You might be tempted to start typing the documentation in your own language (if such a page exists), but please don&#039;t do it. Instead, change your language to English and then click in the &#039;Moodle Docs for this page&#039; link. &lt;br /&gt;
* In the English documentation page that just opened, add a language link for your language (see [https://docs.moodle.org/dev/Starting_a_new_docs_wiki Interlanguage-linking]), save it and then open the given translation page.&lt;br /&gt;
* If the English Documentation page has only a redirect instruction, please add a translation for the redirection and then save the English page with the redirection&lt;br /&gt;
[[File:Redirected page.png|400px]]&lt;br /&gt;
[[File:Redirected page in English.png|400px]]&lt;br /&gt;
* Make sure that you add a translation link for the redirection, check that it works (create the page if it did not exist) and save the page.&lt;br /&gt;
[[File:Redirected page in English with Spanish translation link.png|400px]]&lt;br /&gt;
* You can now jump to the redirected page in your own language and work on it.&lt;br /&gt;
[[File:Redirected page in Spanish.png|400px]]&lt;br /&gt;
* The &#039;More help&#039; links have the same icon (i) and work the same way as the &#039;Moodle Docs for this page&#039; links.&lt;br /&gt;
&lt;br /&gt;
==Is it important to translate English Documentation pages that only have one #Redirect instruction?==&lt;br /&gt;
Yes, it is very, very fast and it will make your translated wiki more efficient, because you will replicate all the automatic redirections that exist in the English Docs in your own language Docs, specially with the Docs pages related to online help for specific pages in your Moodle server (see the example above).&lt;br /&gt;
&lt;br /&gt;
If you have translated Documentation pages with #Redirect instructions, it will then be a good idea to go to the TOOLS column at the bottom of the page (in your language wiki documentation) and click on &#039;Special pages&#039;. There, check the &#039;Broken redirects&#039; and &#039;Double redirects&#039; links and fix any pages that might show up there.&lt;br /&gt;
&lt;br /&gt;
==Which English documentation pages will change when there is a new Moodle version release==&lt;br /&gt;
&lt;br /&gt;
* If you have a translation of [https://docs.moodle.org/dev/Releases https://docs.moodle.org/dev/Releases] you will need to update it &lt;br /&gt;
* The [[:en:New_features|new features in the latest version]] mentioned above must now have the new available features.&lt;br /&gt;
* You might need to update the version numbers in your translated documentation for these pages:&lt;br /&gt;
** [https://docs.moodle.org/en/Upgrading https://docs.moodle.org/en/Upgrading]&lt;br /&gt;
** [https://docs.moodle.org/en/Installation_Quickstart https://docs.moodle.org/en/Installation_Quickstart]&lt;br /&gt;
** [https://docs.moodle.org/en/Installing_Moodle https://docs.moodle.org/en/Installing_Moodle]&lt;br /&gt;
** [https://docs.moodle.org/en/Git_for_Administrators https://docs.moodle.org/en/Git_for_Administrators]&lt;br /&gt;
** [https://docs.moodle.org/en/Upgrade_overview https://docs.moodle.org/en/Upgrade_overview]&lt;br /&gt;
** [https://docs.moodle.org/en/Language_packs https://docs.moodle.org/en/Language_packs]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
* [[Starting a new docs wiki]]&lt;br /&gt;
* [[Help strings]] in the developers documentation&lt;br /&gt;
&lt;br /&gt;
[[Category:Moodle Docs]]&lt;br /&gt;
[[Category:Translation]]&lt;/div&gt;</summary>
		<author><name>Tsala</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Starting_a_new_docs_wiki&amp;diff=61877</id>
		<title>Starting a new docs wiki</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Starting_a_new_docs_wiki&amp;diff=61877"/>
		<updated>2022-03-21T13:42:38Z</updated>

		<summary type="html">&lt;p&gt;Tsala: /* Starting a documentation wiki in another language */ moodle.com contact form&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Translation}}&lt;br /&gt;
==Starting a documentation wiki in another language==&lt;br /&gt;
&lt;br /&gt;
Would you like Moodle Docs in your language?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Please check first whether all of the help files included in Moodle have been translated into your language.&#039;&#039; If not, perhaps you could offer to help your language pack maintainer(s) - see the [http://lang.moodle.org/local/amos/credits.php translation credits] for contact details.&lt;br /&gt;
&lt;br /&gt;
Moodle Docs in a new language needs:&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;An administrator&#039;&#039;&#039; (or two)&lt;br /&gt;
:The administrator should understand MediaWiki features such as page redirects, [[Special:Categories|categories]] and templates. Please browse this wiki to discover how these features work. When a new language wiki is started, an empty wiki will be set up for you to add documentation to.&lt;br /&gt;
*&#039;&#039;&#039;Lots of people wishing to contribute&#039;&#039;&#039;&lt;br /&gt;
:Please find out how many people are interested by discussing Moodle Docs in your moodle.org [https://moodle.org/community/ community discussion course]. You should also contact your language pack maintainer(s).&lt;br /&gt;
&lt;br /&gt;
Note: Languages for which there is no documentation wiki link to the English Moodle Docs in the footer of each page. When a new language wiki is set up, all sites using the language will then link to the new language wiki and not to the English. &lt;br /&gt;
&lt;br /&gt;
If you wish to start Moodle Docs in your language, are willing to take on administrator responsibility, and know of lots of people wishing to contribute, please get in touch via the [https://moodle.com/contact/support/?selection=community#form Moodle.com contact form].&lt;br /&gt;
&lt;br /&gt;
Once your documentation wiki is set up, please announce it in your moodle.org community discussion course. Suggestions of what to do next are described below. Whilst everyone in your community may login and [[:en:MoodleDocs:Guidelines for contributors|contribute to the documentation]], [[:en:Special:Allmessages|system messages]] pages i.e. pages in the MediaWiki namespace are locked so that only administrators may edit them.&lt;br /&gt;
&lt;br /&gt;
==Inter-language linking==&lt;br /&gt;
&lt;br /&gt;
* Add inter-language links to pages by typing &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;[[xx:Corresponding page title in the new language]]&amp;lt;/nowiki&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; in the English MoodleDocs, and &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;[[en:Corresponding page title in English]]&amp;lt;/nowiki&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; in the new language Moodle Docs, at the bottom of the page, below the category link. Inter-language links will appear automatically in the &amp;quot;In other languages&amp;quot; block.&lt;br /&gt;
===Example===&lt;br /&gt;
View the source at the bottom of the [https://docs.moodle.org/30/en/Main_page English Documentation main page] with many available inter-language links. Note that some pages (such as this) are protected and only English Moodle Docs administrators can edit them. If you need to add an inter-language link in a protected English Doc page, please comment in the corresponding talk page.&lt;br /&gt;
&lt;br /&gt;
[[File:Inter-language links for Moodle Docs Main Page.png|200px]]&lt;br /&gt;
&lt;br /&gt;
==Further links to the English documentation==&lt;br /&gt;
&lt;br /&gt;
Note: [[:en:MediaWiki:Noarticletext]], containing the text below, automatically provides links for every page in Moodle to the corresponding English documentation page if they do not yet exist in your language.&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;This page does not exist yet. You are welcome to [{{SERVER}}{{localurl:{{NAMESPACE}}:{{PAGENAME}}|action=edit}} create it]&lt;br /&gt;
 or read &#039;&#039;[[:en:{{NAMESPACE}}:{{PAGENAME}}|the corresponding page in the English documentation]]&#039;&#039;.&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Moodle Docs]]&lt;/div&gt;</summary>
		<author><name>Tsala</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Developer_meeting_April_2022&amp;diff=61821</id>
		<title>Developer meeting April 2022</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Developer_meeting_April_2022&amp;diff=61821"/>
		<updated>2022-03-15T10:38:07Z</updated>

		<summary type="html">&lt;p&gt;Tsala: discussion link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Developer meetings]] &amp;gt; April 2022 meeting &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Date&lt;br /&gt;
| Tuesday 12 April 2022 at 08:00 UTC ([https://www.timeanddate.com/worldclock/fixedtime.html?msg=Moodle+developer+meeting+April+2022&amp;amp;iso=20220412T08&amp;amp;p1=1440&amp;amp;ah=1 Check this time in your location])&lt;br /&gt;
|-&lt;br /&gt;
| Meeting room&lt;br /&gt;
| [https://moodle.org/mod/bigbluebuttonbn/view.php?id=8596 Developer meetings BBB on moodle.org]&lt;br /&gt;
|-&lt;br /&gt;
| Discussion&lt;br /&gt;
| [https://moodle.org/mod/forum/discuss.php?d=432769 Developer meeting Tuesday 12 April 2022]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Agenda ==&lt;br /&gt;
&lt;br /&gt;
# Introducing Moodle 4.0 - Moodle HQ developers&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
If there is any topic that you would like to present or discuss at a developer meeting, please contact [https://moodle.org/user/profile.php?id=1601 David Mudrák].&lt;/div&gt;</summary>
		<author><name>Tsala</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Developer_meeting_April_2022&amp;diff=61820</id>
		<title>Developer meeting April 2022</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Developer_meeting_April_2022&amp;diff=61820"/>
		<updated>2022-03-15T10:24:50Z</updated>

		<summary type="html">&lt;p&gt;Tsala: time confirmed, agenda&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Developer meetings]] &amp;gt; April 2022 meeting &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Date&lt;br /&gt;
| Tuesday 12 April 2022 at 08:00 UTC ([https://www.timeanddate.com/worldclock/fixedtime.html?msg=Moodle+developer+meeting+April+2022&amp;amp;iso=20220412T08&amp;amp;p1=1440&amp;amp;ah=1 Check this time in your location])&lt;br /&gt;
|-&lt;br /&gt;
| Meeting room&lt;br /&gt;
| [https://moodle.org/mod/bigbluebuttonbn/view.php?id=8596 Developer meetings BBB on moodle.org]&lt;br /&gt;
|-&lt;br /&gt;
| Discussion&lt;br /&gt;
| To be added&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Agenda ==&lt;br /&gt;
&lt;br /&gt;
# Introducing Moodle 4.0 - Moodle HQ developers&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
If there is any topic that you would like to present or discuss at a developer meeting, please contact [https://moodle.org/user/profile.php?id=1601 David Mudrák].&lt;/div&gt;</summary>
		<author><name>Tsala</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Moodle_3.11.6_release_notes&amp;diff=61805</id>
		<title>Moodle 3.11.6 release notes</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Moodle_3.11.6_release_notes&amp;diff=61805"/>
		<updated>2022-03-14T06:18:28Z</updated>

		<summary type="html">&lt;p&gt;Tsala: version released&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Releases]] &amp;gt; {{FULLPAGENAME}}&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Release date: 14 March 2022&lt;br /&gt;
 &lt;br /&gt;
Here is [https://tracker.moodle.org/secure/IssueNavigator!executeAdvanced.jspa?jqlQuery=project+%3D+mdl+AND+resolution+%3D+fixed+AND+fixVersion+in+%28%223.11.6%22%29+ORDER+BY+priority+DESC&amp;amp;runQuery=true&amp;amp;clear=true the full list of fixed issues in 3.11.6].&lt;br /&gt;
 &lt;br /&gt;
==General fixes and improvements==&lt;br /&gt;
* MDL-72762 - Backup fails if section name has only blank spaces&lt;br /&gt;
* MDL-72246 - 3.11 Dashboard Loads Slowly (30 seconds)&lt;br /&gt;
* MDL-72915 - Drag and Drop onto image: Issue moving draggable items with Unlimited option&lt;br /&gt;
* MDL-73846 - &amp;quot;Prepare submissions for annotation&amp;quot; task tries to process the whole queue in one go&lt;br /&gt;
* MDL-64770 - User profile fields uniqueness don&#039;t work while user importing&lt;br /&gt;
* MDL-72646 - MIME type headers for theme fonts are deprecated&lt;br /&gt;
* MDL-67428 - Performance issues with filters applied to course/category titles in navigation&lt;br /&gt;
* MDL-73824 - Decimal comma &amp;amp; PHP8.0&lt;br /&gt;
* MDL-66940 - &#039;View external Criteria URL&#039; on Badgr links to badge awarded to somebody else&lt;br /&gt;
* MDL-69965 - MoodleNet profile field is displayed even when MoodleNet is disabled&lt;br /&gt;
* MDL-73915 - Bump NodeJS version, dependencies, and update JS build process, drop IE support&lt;br /&gt;
* MDL-73827 - URL blocked during OBv2.1 user authentication&lt;br /&gt;
* MDL-69966 - Quiz: start attempt button should be a primary button&lt;br /&gt;
* MDL-73450 - is_antelope_file_format_no_more_supported check should return true on Aurora MySQL 8.0+&lt;br /&gt;
* MDL-73588 - Unexpected content in the CURLOPT_FILE output stream on redirects&lt;br /&gt;
* MDL-73905 - Wrong coding_exception used on problems sending messages&lt;br /&gt;
* MDL-73954 - Quiz percentage should round the percentage the same way as the other grades&lt;br /&gt;
* MDL-73582 - Add endpoint to provide the Moodle version&lt;br /&gt;
* MDL-73868 - Remove multiple slashes in URL image for Open Badges services&lt;br /&gt;
* MDL-73636 - Activity &amp;quot;Mark as done&amp;quot; buttons contain unformatted module names&lt;br /&gt;
* MDL-73625 - Reorder and review the mobile settings for app 4.0&lt;br /&gt;
* MDL-72937 - Saving a user profile Moodlenet field &amp;gt; 255 characters causes exception&lt;br /&gt;
* MDL-73765 - Scheduled task are randomly allocated to 0 - 23 minutes range only&lt;br /&gt;
* MDL-72852 - If there are no course badges, students shouldn&#039;t have a link to a page saying there are no badges available&lt;br /&gt;
* MDL-73603 - Webservice token creation form throws exceptions during validation&lt;br /&gt;
* MDL-73561 - &amp;quot;Grades were set for X items&amp;quot; message displayed as alert-danger&lt;br /&gt;
&lt;br /&gt;
==Accessibility improvements==&lt;br /&gt;
* MDL-73584 - Required ARIA children role not present: group, menuitemradio, menuitem, menuitemcheckbox&lt;br /&gt;
* MDL-70792 - CSS changes for the moremenu&lt;br /&gt;
* MDL-72412 - aria-label attribute is invalid for informative icon fonts&lt;br /&gt;
&lt;br /&gt;
==Security improvements==&lt;br /&gt;
* MDL-72734 - Inconsistent checks used to determine whether to run task through web UI&lt;br /&gt;
 &lt;br /&gt;
==Security fixes==&lt;br /&gt;
 	&lt;br /&gt;
Details of any security issues will be released after a period of approximately one week to allow system administrators to safely update to the latest version.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
*[[Moodle 3.11.5 release notes]]&lt;br /&gt;
 &lt;br /&gt;
[[Category:Release notes]]&lt;br /&gt;
[[Category:Moodle 3.11]]&lt;br /&gt;
 &lt;br /&gt;
[[fr:Notes de mise à jour de Moodle 3.11.6]]&lt;br /&gt;
[[es:Notas de Moodle 3.11.6]]&lt;/div&gt;</summary>
		<author><name>Tsala</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Moodle_3.10.10_release_notes&amp;diff=61804</id>
		<title>Moodle 3.10.10 release notes</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Moodle_3.10.10_release_notes&amp;diff=61804"/>
		<updated>2022-03-14T06:17:30Z</updated>

		<summary type="html">&lt;p&gt;Tsala: version released&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&#039;&#039;&#039;This version of Moodle is no longer supported for general bug fixes.&#039;&#039;&#039; You are encouraged to [[:en:Upgrading|upgrade]] to a supported version of Moodle.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Releases]] &amp;gt; {{FULLPAGENAME}}&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Release date: 14 March 2022&lt;br /&gt;
 &lt;br /&gt;
Here is [https://tracker.moodle.org/secure/IssueNavigator!executeAdvanced.jspa?jqlQuery=project+%3D+mdl+AND+resolution+%3D+fixed+AND+fixVersion+in+%28%223.10.10%22%29+ORDER+BY+priority+DESC&amp;amp;runQuery=true&amp;amp;clear=true the full list of fixed issues in 3.10.10].&lt;br /&gt;
&lt;br /&gt;
==Backported bug fixes==&lt;br /&gt;
* MDL-72762 - Backup fails if section name has only blank spaces&lt;br /&gt;
* MDL-73915 - Bump NodeJS version, dependencies, and update JS build process, drop IE support&lt;br /&gt;
* MDL-73588 - Unexpected content in the CURLOPT_FILE output stream on redirects&lt;br /&gt;
 &lt;br /&gt;
==Security fixes==&lt;br /&gt;
 	&lt;br /&gt;
Details of any security issues will be released after a period of approximately one week to allow system administrators to safely update to the latest version.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
*[[Moodle 3.10.9 release notes]]&lt;br /&gt;
 &lt;br /&gt;
[[Category:Release notes]]&lt;br /&gt;
[[Category:Moodle 3.10]]&lt;br /&gt;
 &lt;br /&gt;
[[fr:Notes de mise à jour de Moodle 3.10.10]]&lt;br /&gt;
[[es:Notas de Moodle 3.10.10]]&lt;/div&gt;</summary>
		<author><name>Tsala</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Moodle_3.9.13_release_notes&amp;diff=61803</id>
		<title>Moodle 3.9.13 release notes</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Moodle_3.9.13_release_notes&amp;diff=61803"/>
		<updated>2022-03-14T06:17:06Z</updated>

		<summary type="html">&lt;p&gt;Tsala: version released&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&#039;&#039;&#039;This version of Moodle is no longer supported for general bug fixes.&#039;&#039;&#039; You are encouraged to [[:en:Upgrading|upgrade]] to a supported version of Moodle.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Releases]] &amp;gt; {{FULLPAGENAME}}&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Release date: 14 March 2022&lt;br /&gt;
 &lt;br /&gt;
Here is [https://tracker.moodle.org/secure/IssueNavigator!executeAdvanced.jspa?jqlQuery=project+%3D+mdl+AND+resolution+%3D+fixed+AND+fixVersion+in+%28%223.9.13%22%29+ORDER+BY+priority+DESC&amp;amp;runQuery=true&amp;amp;clear=true the full list of fixed issues in 3.9.13].&lt;br /&gt;
&lt;br /&gt;
==Backported bug fixes==&lt;br /&gt;
* MDL-73915 - Bump NodeJS version, dependencies, and update JS build process, drop IE support&lt;br /&gt;
* MDL-73588 - Unexpected content in the CURLOPT_FILE output stream on redirects&lt;br /&gt;
&lt;br /&gt;
==Security fixes==&lt;br /&gt;
 	&lt;br /&gt;
Details of any security issues will be released after a period of approximately one week to allow system administrators to safely update to the latest version.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
*[[Moodle 3.9.12 release notes]]&lt;br /&gt;
 &lt;br /&gt;
[[Category:Release notes]]&lt;br /&gt;
[[Category:Moodle 3.9]]&lt;br /&gt;
 &lt;br /&gt;
[[fr:Notes de mise à jour de Moodle 3.9.13]]&lt;br /&gt;
[[es:Notas de Moodle 3.9.13]]&lt;/div&gt;</summary>
		<author><name>Tsala</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Moodle_3.9.13_release_notes&amp;diff=61793</id>
		<title>Moodle 3.9.13 release notes</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Moodle_3.9.13_release_notes&amp;diff=61793"/>
		<updated>2022-03-10T07:59:38Z</updated>

		<summary type="html">&lt;p&gt;Tsala: Backported bug fixes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&#039;&#039;&#039;This version of Moodle is no longer supported for general bug fixes.&#039;&#039;&#039; You are encouraged to [[:en:Upgrading|upgrade]] to a supported version of Moodle.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Releases]] &amp;gt; {{FULLPAGENAME}}&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Release date: Not yet released - scheduled for 14 March 2022&lt;br /&gt;
 &lt;br /&gt;
Here is [https://tracker.moodle.org/secure/IssueNavigator!executeAdvanced.jspa?jqlQuery=project+%3D+mdl+AND+resolution+%3D+fixed+AND+fixVersion+in+%28%223.9.13%22%29+ORDER+BY+priority+DESC&amp;amp;runQuery=true&amp;amp;clear=true the full list of fixed issues in 3.9.13].&lt;br /&gt;
&lt;br /&gt;
==Backported bug fixes==&lt;br /&gt;
* MDL-73915 - Bump NodeJS version, dependencies, and update JS build process, drop IE support&lt;br /&gt;
* MDL-73588 - Unexpected content in the CURLOPT_FILE output stream on redirects&lt;br /&gt;
&lt;br /&gt;
==Security fixes==&lt;br /&gt;
 	&lt;br /&gt;
Details of any security issues will be released after a period of approximately one week to allow system administrators to safely update to the latest version.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
*[[Moodle 3.9.12 release notes]]&lt;br /&gt;
 &lt;br /&gt;
[[Category:Release notes]]&lt;br /&gt;
[[Category:Moodle 3.9]]&lt;br /&gt;
 &lt;br /&gt;
[[fr:Notes de mise à jour de Moodle 3.9.13]]&lt;br /&gt;
[[es:Notas de Moodle 3.9.13]]&lt;/div&gt;</summary>
		<author><name>Tsala</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Moodle_3.10.10_release_notes&amp;diff=61792</id>
		<title>Moodle 3.10.10 release notes</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Moodle_3.10.10_release_notes&amp;diff=61792"/>
		<updated>2022-03-10T07:58:44Z</updated>

		<summary type="html">&lt;p&gt;Tsala: Backported bug fixes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&#039;&#039;&#039;This version of Moodle is no longer supported for general bug fixes.&#039;&#039;&#039; You are encouraged to [[:en:Upgrading|upgrade]] to a supported version of Moodle.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Releases]] &amp;gt; {{FULLPAGENAME}}&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Release date: Not yet released - scheduled for 14 March 2022&lt;br /&gt;
 &lt;br /&gt;
Here is [https://tracker.moodle.org/secure/IssueNavigator!executeAdvanced.jspa?jqlQuery=project+%3D+mdl+AND+resolution+%3D+fixed+AND+fixVersion+in+%28%223.10.10%22%29+ORDER+BY+priority+DESC&amp;amp;runQuery=true&amp;amp;clear=true the full list of fixed issues in 3.10.10].&lt;br /&gt;
&lt;br /&gt;
==Backported bug fixes==&lt;br /&gt;
* MDL-72762 - Backup fails if section name has only blank spaces&lt;br /&gt;
* MDL-73915 - Bump NodeJS version, dependencies, and update JS build process, drop IE support&lt;br /&gt;
* MDL-73588 - Unexpected content in the CURLOPT_FILE output stream on redirects&lt;br /&gt;
 &lt;br /&gt;
==Security fixes==&lt;br /&gt;
 	&lt;br /&gt;
Details of any security issues will be released after a period of approximately one week to allow system administrators to safely update to the latest version.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
*[[Moodle 3.10.9 release notes]]&lt;br /&gt;
 &lt;br /&gt;
[[Category:Release notes]]&lt;br /&gt;
[[Category:Moodle 3.10]]&lt;br /&gt;
 &lt;br /&gt;
[[fr:Notes de mise à jour de Moodle 3.10.10]]&lt;br /&gt;
[[es:Notas de Moodle 3.10.10]]&lt;/div&gt;</summary>
		<author><name>Tsala</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Moodle_3.11.6_release_notes&amp;diff=61791</id>
		<title>Moodle 3.11.6 release notes</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Moodle_3.11.6_release_notes&amp;diff=61791"/>
		<updated>2022-03-10T07:56:12Z</updated>

		<summary type="html">&lt;p&gt;Tsala: General fixes and improvements, Accessibility improvements, Security improvements&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Releases]] &amp;gt; {{FULLPAGENAME}}&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Release date: Not yet released - scheduled for 14 March 2022&lt;br /&gt;
 &lt;br /&gt;
Here is [https://tracker.moodle.org/secure/IssueNavigator!executeAdvanced.jspa?jqlQuery=project+%3D+mdl+AND+resolution+%3D+fixed+AND+fixVersion+in+%28%223.11.6%22%29+ORDER+BY+priority+DESC&amp;amp;runQuery=true&amp;amp;clear=true the full list of fixed issues in 3.11.6].&lt;br /&gt;
 &lt;br /&gt;
==General fixes and improvements==&lt;br /&gt;
* MDL-72762 - Backup fails if section name has only blank spaces&lt;br /&gt;
* MDL-72246 - 3.11 Dashboard Loads Slowly (30 seconds)&lt;br /&gt;
* MDL-72915 - Drag and Drop onto image: Issue moving draggable items with Unlimited option&lt;br /&gt;
* MDL-73846 - &amp;quot;Prepare submissions for annotation&amp;quot; task tries to process the whole queue in one go&lt;br /&gt;
* MDL-64770 - User profile fields uniqueness don&#039;t work while user importing&lt;br /&gt;
* MDL-72646 - MIME type headers for theme fonts are deprecated&lt;br /&gt;
* MDL-67428 - Performance issues with filters applied to course/category titles in navigation&lt;br /&gt;
* MDL-73824 - Decimal comma &amp;amp; PHP8.0&lt;br /&gt;
* MDL-66940 - &#039;View external Criteria URL&#039; on Badgr links to badge awarded to somebody else&lt;br /&gt;
* MDL-69965 - MoodleNet profile field is displayed even when MoodleNet is disabled&lt;br /&gt;
* MDL-73915 - Bump NodeJS version, dependencies, and update JS build process, drop IE support&lt;br /&gt;
* MDL-73827 - URL blocked during OBv2.1 user authentication&lt;br /&gt;
* MDL-69966 - Quiz: start attempt button should be a primary button&lt;br /&gt;
* MDL-73450 - is_antelope_file_format_no_more_supported check should return true on Aurora MySQL 8.0+&lt;br /&gt;
* MDL-73588 - Unexpected content in the CURLOPT_FILE output stream on redirects&lt;br /&gt;
* MDL-73905 - Wrong coding_exception used on problems sending messages&lt;br /&gt;
* MDL-73954 - Quiz percentage should round the percentage the same way as the other grades&lt;br /&gt;
* MDL-73582 - Add endpoint to provide the Moodle version&lt;br /&gt;
* MDL-73868 - Remove multiple slashes in URL image for Open Badges services&lt;br /&gt;
* MDL-73636 - Activity &amp;quot;Mark as done&amp;quot; buttons contain unformatted module names&lt;br /&gt;
* MDL-73625 - Reorder and review the mobile settings for app 4.0&lt;br /&gt;
* MDL-72937 - Saving a user profile Moodlenet field &amp;gt; 255 characters causes exception&lt;br /&gt;
* MDL-73765 - Scheduled task are randomly allocated to 0 - 23 minutes range only&lt;br /&gt;
* MDL-72852 - If there are no course badges, students shouldn&#039;t have a link to a page saying there are no badges available&lt;br /&gt;
* MDL-73603 - Webservice token creation form throws exceptions during validation&lt;br /&gt;
* MDL-73561 - &amp;quot;Grades were set for X items&amp;quot; message displayed as alert-danger&lt;br /&gt;
&lt;br /&gt;
==Accessibility improvements==&lt;br /&gt;
* MDL-73584 - Required ARIA children role not present: group, menuitemradio, menuitem, menuitemcheckbox&lt;br /&gt;
* MDL-70792 - CSS changes for the moremenu&lt;br /&gt;
* MDL-72412 - aria-label attribute is invalid for informative icon fonts&lt;br /&gt;
&lt;br /&gt;
==Security improvements==&lt;br /&gt;
* MDL-72734 - Inconsistent checks used to determine whether to run task through web UI&lt;br /&gt;
 &lt;br /&gt;
==Security fixes==&lt;br /&gt;
 	&lt;br /&gt;
Details of any security issues will be released after a period of approximately one week to allow system administrators to safely update to the latest version.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
*[[Moodle 3.11.5 release notes]]&lt;br /&gt;
 &lt;br /&gt;
[[Category:Release notes]]&lt;br /&gt;
[[Category:Moodle 3.11]]&lt;br /&gt;
 &lt;br /&gt;
[[fr:Notes de mise à jour de Moodle 3.11.6]]&lt;br /&gt;
[[es:Notas de Moodle 3.11.6]]&lt;/div&gt;</summary>
		<author><name>Tsala</name></author>
	</entry>
</feed>