<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://docs.moodle.org/501/en/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Michaelh2</id>
	<title>MoodleDocs - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://docs.moodle.org/501/en/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Michaelh2"/>
	<link rel="alternate" type="text/html" href="https://docs.moodle.org/501/en/Special:Contributions/Michaelh2"/>
	<updated>2026-04-18T05:42:21Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://docs.moodle.org/501/en/index.php?title=Security_recommendations&amp;diff=155031</id>
		<title>Security recommendations</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/501/en/index.php?title=Security_recommendations&amp;diff=155031"/>
		<updated>2026-02-23T05:18:27Z</updated>

		<summary type="html">&lt;p&gt;Michaelh2: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Security}}All web application software is highly complex, and every application has security issues that are found from time to time, usually involving some combination of input that the programmers did not anticipate. The Moodle project takes security seriously, and is continuously improving Moodle to close such holes as we find them.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
*This page contains important security measures for your Moodle installation.&lt;br /&gt;
*If you find a potential security vulnerability in Moodle LMS, please see the [https://moodledev.io/general/development/process/security Security procedures documentation] for instructions on how to safely report them. Reported issues will be triaged as soon as possible and fixes will be prioritised depending on the severity of the issue. On that page you can also see our responsible disclosure policy, which includes ensuring we inform registered Moodle sites before information about any vulnerabilities are published more widely.&lt;br /&gt;
*You should not post any details about potential security vulnerabilities either in the Moodle community forums or elsewhere on the web, particularly before a fix is announced on https://moodle.org/security, to ensure other Moodle sites are not exposed without having an opportunity to upgrade or patch the issue.&lt;br /&gt;
&lt;br /&gt;
==Simple security measures==&lt;br /&gt;
*The best security strategy is a good backup! But you don&#039;t have a good backup unless you are able to restore it. Test your restoration procedures!&lt;br /&gt;
*Load only software or services you will use&lt;br /&gt;
*Perform regular updates&lt;br /&gt;
*Model your security after the layers of clothing you wear on a cold winter day&lt;br /&gt;
&lt;br /&gt;
==Basic recommendations==&lt;br /&gt;
&lt;br /&gt;
;Update Moodle regularly on each release&lt;br /&gt;
:Published security holes draw crackers&#039; attention after release. The older the version, the more vulnerabilities it is likely to contain.&lt;br /&gt;
; Use https to secure all pages (not just the login page)&lt;br /&gt;
:Protect all traffic from your Moodle instance and your users by making all pages accessible via https only. This not only protects passwords on login but also ensures the privacy of your users so that all user data cannot be intercepted or manipulated (&amp;quot;ad injections&amp;quot;) from third parties like WLAN providers for example. Free https certificates are available from https://letsencrypt.org/. In addition, set httpslogin=yes in your moodle config to add an extra layer of protection for submitting login credentials.&lt;br /&gt;
;[[admin/environment/custom check/php check register globals|Register globals &#039;&#039;&#039;MUST&#039;&#039;&#039; be disabled]]&lt;br /&gt;
:This will help prevent against possible XSS problems in third-party scripts.&lt;br /&gt;
;Run the [[Security_overview_report|Security Overview Report]]&lt;br /&gt;
:This identifies various configurations within your Moodle site that may pose a security risk, so any issues raised by that report should be investigated and action taken if necessary.&lt;br /&gt;
;Use strong passwords for admin and teachers&lt;br /&gt;
:Choosing &amp;quot;difficult&amp;quot; passwords is a basic security practice to protect against &amp;quot;brute force&amp;quot; cracking of accounts.&lt;br /&gt;
;Only give teacher accounts to trusted users. Avoid creating public sandboxes with free teacher accounts on production servers.&lt;br /&gt;
:Teacher accounts have much more liberal permissions and it is easier to create situations where data can be abused or stolen.&lt;br /&gt;
;Separate your systems as much as possible&lt;br /&gt;
:Another basic security technique is to use different passwords on different systems, use different machines for different services and so on.  This will prevent damage being widespread even if one account or one server is compromised.&lt;br /&gt;
&lt;br /&gt;
==Run regular updates==&lt;br /&gt;
*Use auto update systems&lt;br /&gt;
*Windows Update &lt;br /&gt;
*Linux: up2date, yum, apt-get&lt;br /&gt;
:Consider automating updates with a script scheduled via cron &lt;br /&gt;
*Mac OSX update system&lt;br /&gt;
*Stay current with php, apache, and moodle&lt;br /&gt;
&lt;br /&gt;
==Use mailing lists to stay updated==&lt;br /&gt;
*CISA Cybersecurity advisories - https://www.cisa.gov/news-events/cybersecurity-advisories&lt;br /&gt;
*PHP - http://www.php.net/mailing-lists.php - sign up for Announcements list&lt;br /&gt;
*MySQL - http://lists.mysql.com - sign up for MySQL Announcements&lt;br /&gt;
&lt;br /&gt;
==Firewalls==&lt;br /&gt;
*Security experts recommend a dual firewall&lt;br /&gt;
:Differing hardware/software combinations &lt;br /&gt;
*Disabling unused services is often as effective as a firewall&lt;br /&gt;
:Use netstat -a to review open network ports&lt;br /&gt;
*Not a guarantee of protection&lt;br /&gt;
*Allow ports &lt;br /&gt;
:80, 443(ssl), and 9111 (for chat), &lt;br /&gt;
:Remote admin: ssh 22, or rdp 3389&lt;br /&gt;
&lt;br /&gt;
==Password policy==&lt;br /&gt;
&lt;br /&gt;
A password policy may be set up in &#039;&#039;Settings &amp;gt; Site administration &amp;gt; Security &amp;gt; [[Site policies]]&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
There is a check box to determine if password complexity should be enforced or not, the option to set the minimum length of the password, the minimum number of digits, the minimum number of lowercase characters, the minimum number of uppercase characters and the minimum number of non alphanumeric characters.&lt;br /&gt;
&lt;br /&gt;
If a user enters a password that does not meet those requirements, they are given an error message indicating the nature of the problem with the entered password.&lt;br /&gt;
&lt;br /&gt;
Enforcing password complexity along with requiring users to change their initial password go a long way in helping ensure that users choose and are in fact using &amp;quot;good passwords&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
However, making the check too onerous just results in them writing it down so be realistic.&lt;br /&gt;
&lt;br /&gt;
==Be prepared for the worst==&lt;br /&gt;
*Have backups ready &lt;br /&gt;
*Practice recovery procedures ahead of time &lt;br /&gt;
*Use a rootkit detector on a regular basis &lt;br /&gt;
**Linux/MacOSX - http://www.chkrootkit.org/ &lt;br /&gt;
**Windows - http://technet.microsoft.com/en-en/sysinternals/bb897445.aspx and http://technet.microsoft.com/de-de/sysinternals/bb897445.aspx&lt;br /&gt;
&lt;br /&gt;
==Moodle security alerts==&lt;br /&gt;
*Register your site with Moodle.org&lt;br /&gt;
:Registered users receive email alerts&lt;br /&gt;
*Security alerts also posted online&lt;br /&gt;
*Web - http://moodle.org/security&lt;br /&gt;
*RSS feed - http://moodle.org/rss/file.php/1/1/forum/996/rss.xml&lt;br /&gt;
&lt;br /&gt;
==Miscellaneous considerations==&lt;br /&gt;
These are all things you might consider that impact your overall security:&lt;br /&gt;
*Use the secure forms setting&lt;br /&gt;
*Always set a mysql root user password&lt;br /&gt;
*Turn off mysql network access&lt;br /&gt;
*Use SSL, httpslogins=yes&lt;br /&gt;
*Use good passwords - set up a password policy in &#039;&#039;Settings &amp;gt; Site administration &amp;gt; Security &amp;gt; [[Site policies]]&#039;&#039;&lt;br /&gt;
*Do not enable the &#039;&#039;opentowebcrawlers&#039;&#039; setting (in &#039;&#039;Settings &amp;gt; Site administration &amp;gt; Security &amp;gt; [[Site policies]]&#039;&#039;)&lt;br /&gt;
*Disable guest access&lt;br /&gt;
*Place enrollment keys on all courses or set Course Enrollable = No for all courses&lt;br /&gt;
*Ensure the enrolment key hint is disabled (which it is by default) in &#039;&#039;Administration &amp;gt; Site administration &amp;gt; Plugins &amp;gt; Enrolment &amp;gt; Self enrolment.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Most secure/paranoid file permissions==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: &amp;lt;u&amp;gt;The following information applies to Linux/Unix based installations only, as MS Windows permission system is quite different&amp;lt;/u&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Depending on your server set-up there are two different scenarios:&lt;br /&gt;
# You are running Moodle on your own dedicated server.&lt;br /&gt;
# You are running Moodle on a shared hosting environment.&lt;br /&gt;
&lt;br /&gt;
In the sections below, you are required to use the web service user account and group to set the permissions, so you need to know them. This can vary quite a bit from server to server but if this feature has not been disabled in your server, you can go to &#039;&#039;&amp;lt;nowiki&amp;gt;http://your.moodle.site/admin/phpinfo.php&amp;lt;/nowiki&amp;gt;&#039;&#039; (logging in as admin), and then search for the line that reads &#039;User/Group&#039;, inside the &#039;apache&#039; table. For example, I get &#039;www-data&#039; for the user account and &#039;www-data&#039; for the group too.&lt;br /&gt;
&lt;br /&gt;
=== Running Moodle on a dedicated server ===&lt;br /&gt;
Assuming you are running Moodle on a sealed server (i.e. no user logins allowed on the machine) and that root takes care of the modifications to both moodle code and moodle config (config.php), then this are the most tight permissions I can think of:&lt;br /&gt;
&lt;br /&gt;
1. moodledata directory and all of its contents (and subdirectories, includes sessions):&lt;br /&gt;
 owner: apache user (apache, httpd, www-data, whatever; see above)&lt;br /&gt;
 group: apache group (apache, httpd, www-data, whatever; see above)&lt;br /&gt;
 permissions: 700 on directories, 600 on files&lt;br /&gt;
&lt;br /&gt;
2. moodle directory and all of its contents and subdirectories (including config.php):&lt;br /&gt;
 owner: root&lt;br /&gt;
 group: root&lt;br /&gt;
 permissions: 755 on directories, 644 on files.&lt;br /&gt;
&lt;br /&gt;
If you allow local logins for regular users, then 2. should be:&lt;br /&gt;
 owner: root&lt;br /&gt;
 group: apache group (apache, httpd, www-data, whatever; see above)&lt;br /&gt;
 permissions: 750 on directories, 640 on files.&lt;br /&gt;
&lt;br /&gt;
Think of these permissions as the most paranoid ones. You can be secure enough with less tighter permissions, both in moodledata and moodle directories (and subdirectories).&lt;br /&gt;
&lt;br /&gt;
=== Running Moodle on a shared hosting environment ===&lt;br /&gt;
If you are running Moodle on a shared hosting environment, then above permissions are probably wrong. If you set 700 as the permission for directories (and 600 for files), you are probably denying the web service user account access to your directories and files.&lt;br /&gt;
&lt;br /&gt;
If you want to tighten your permissions as much as possible, you will need to know:&lt;br /&gt;
&lt;br /&gt;
# the user account and the group the web service is running under (see above).&lt;br /&gt;
# the owner of the directories/files of both moodledata and the moodle directory (this should normally be your client user account), and the group of the directories/files. You can usually get this information from the file manager of your hosting control panel. Go to the moodle folder and pick any directory or file and try to view/change the permissions, owner and group of that file. That would normally show the current permissions, owner and group. Do the same for the moodledata directory.&lt;br /&gt;
&lt;br /&gt;
Then, depending on the following scenarios you should use a different set of permissions (listed from more secure to less secure) for your moodledata directory:&lt;br /&gt;
&lt;br /&gt;
# if the web service account and the owner of the directories/files is the same, you should use 700 for directories and 600 for files.&lt;br /&gt;
# if the web service group and the group of the directories/files is the same, you should use 770 for directories and 660 for the files.&lt;br /&gt;
# if none of the above, you will need to use 777 for directories and 666 for files, which is less secure but it is your only option. 707 and 606 would be more secure, but it might or might not work, depending on your particular setup.&lt;br /&gt;
&lt;br /&gt;
In fact, you just need to set moodledata the permissions specified above, as all the directories and files inside are created by the web service itself, and will have the right permissions.&lt;br /&gt;
&lt;br /&gt;
Regarding the moodle directory, as long as the web service user account can read the files plus read and execute the directories, that should be enough. There is no need to grant write permission to the web service account/group on any of the files or subdirectories. The only drawback is that you will need to create the config.php by hand during the installation process, as Moodle will not be able to create it. But that should not be a big problem.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
*[[Security FAQ]]&lt;br /&gt;
*[https://moodle.com/news/top-security-tips-for-moodle-administrators/ Top security tips for Moodle administrators article]&lt;br /&gt;
Using Moodle forum discussions:&lt;br /&gt;
*[http://moodle.org/mod/forum/discuss.php?d=39404 Guide to Securing your Moodle Server]&lt;br /&gt;
*[http://moodle.org/mod/forum/discuss.php?d=93561 How to secure Moodle website from hacking] including recommendations on emergency recovery&lt;br /&gt;
&lt;br /&gt;
[[es:Recomendaciones de Seguridad]]&lt;br /&gt;
[[fr:Sécurité]]&lt;/div&gt;</summary>
		<author><name>Michaelh2</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/501/en/index.php?title=sms/configure&amp;diff=150193</id>
		<title>sms/configure</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/501/en/index.php?title=sms/configure&amp;diff=150193"/>
		<updated>2024-11-19T18:11:10Z</updated>

		<summary type="html">&lt;p&gt;Michaelh2: Redirected page to SMS gateways&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#Redirect [[SMS gateways]]&lt;/div&gt;</summary>
		<author><name>Michaelh2</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/501/en/index.php?title=admin/setting/sms&amp;diff=150192</id>
		<title>admin/setting/sms</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/501/en/index.php?title=admin/setting/sms&amp;diff=150192"/>
		<updated>2024-11-19T18:09:52Z</updated>

		<summary type="html">&lt;p&gt;Michaelh2: Redirected page to SMS gateways&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#Redirect [[SMS gateways]]&lt;/div&gt;</summary>
		<author><name>Michaelh2</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/501/en/index.php?title=admin/setting/factor_sms&amp;diff=150191</id>
		<title>admin/setting/factor sms</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/501/en/index.php?title=admin/setting/factor_sms&amp;diff=150191"/>
		<updated>2024-11-19T18:07:54Z</updated>

		<summary type="html">&lt;p&gt;Michaelh2: Redirected page to Multi-factor authentication#Example setups&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#Redirect [[Multi-factor_authentication#Example_setups]]&lt;/div&gt;</summary>
		<author><name>Michaelh2</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/501/en/index.php?title=Multi-factor_authentication&amp;diff=150190</id>
		<title>Multi-factor authentication</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/501/en/index.php?title=Multi-factor_authentication&amp;diff=150190"/>
		<updated>2024-11-19T17:52:03Z</updated>

		<summary type="html">&lt;p&gt;Michaelh2: Added additional details about configuring SMS gateways for MFA use.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Authentication}}&lt;br /&gt;
==What is multi-factor authentication (MFA)?==&lt;br /&gt;
[https://en.wikipedia.org/wiki/Multi-factor_authentication Multi-factor authentication (MFA)] is a security measure that requires users to verify their identity using two or more factors of authentication. Factors can be something users know, like a password, something they have, like a phone or security token, or something they are, like a fingerprint.&lt;br /&gt;
&lt;br /&gt;
MFA helps improve security of your Moodle site because it is more difficult for attackers to compromise multiple factors.&lt;br /&gt;
==Manage multi-factor authentication==&lt;br /&gt;
From Site administration &amp;gt; Plugins &amp;gt; Admin tools &amp;gt; Manage multi-factor authentication, you can turn MFA on by checking the box MFA plugin enabled.  &lt;br /&gt;
&lt;br /&gt;
If you’re configuring MFA for your site for the first time, we recommend that you check out the [[Multi-factor authentication#Recommendations and example setups|Recommendations and example setups]] to streamline the experience for your users.&lt;br /&gt;
=== Weights and factors ===&lt;br /&gt;
In Site administration &amp;gt; Plugins &amp;gt; Admin tools &amp;gt; Manage multi-factor authentication, you can see a list of the available factors and select the ones that make up MFA for your site. &lt;br /&gt;
&lt;br /&gt;
These factors have weight points, and users have to reach 100 points in order to be able to log in. By configuring multiple factors and adjusting their weights, you can create complex and flexible rules for multi-factor authentication.&lt;br /&gt;
&lt;br /&gt;
For example, you could have two factors with 100 points each, if you want to give users different methods of authentication. Or you could have two factors with 50 points each, meaning that users will have to go through both factors to be able to log in.&lt;br /&gt;
&lt;br /&gt;
During the login process, factors that don&#039;t require user input, like IP address or user role, are assessed first. Then, the remaining factors are evaluated in order of weight, starting from the highest, until either the cumulative points reach the login threshold (100) or all factors have been checked and login is denied.&lt;br /&gt;
==== Available authentication factors ====&lt;br /&gt;
===== Standard authentication factors =====&lt;br /&gt;
These are well known, usual authentication factors used in many products and software:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Email&#039;&#039;&#039;: This factor requires users to enter a code received via email during the login process. When a user attempts to log in, the system generates a unique, temporary code and sends it to the user’s registered email address. The user must then enter this code along with their password to successfully complete the login process. This code has a limited validity period, which you can customise, ensuring that it cannot be used for unauthorised access.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Authenticator app&#039;&#039;&#039;: This factor uses a mobile application to generate a temporary code for user authentication. During the login process, Moodle prompts the user to enter a code generated by their authenticator app, in addition to their password. This code changes periodically, ensuring that it can’t be reused for unauthorised access. &#039;&#039;&#039;Users must have an app installed on their mobile device and configure this factor themselves.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Security key&#039;&#039;&#039;: This factor utilises physical hardware tokens, like USB or NFC security keys, or physical biometrics such as fingerprints. During the login process, users must physically use their security on their device to verify their identity. &#039;&#039;&#039;Users must configure this factor themselves&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IP range&#039;&#039;&#039;: This factor utilises users’ IP address to verify their identity, providing enhanced security when accessing from a trusted network. It requires no upfront setup from your users, allowing you to configure full login access on a trusted network. &#039;&#039;&#039;This factor requires no setup by your users.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;SMS Mobile phone&#039;&#039;&#039;: This factor requires a mobile phone capable of receiving SMS (text) messages. During the login process, Moodle generates a unique, one-time code and sends it to the user&#039;s registered mobile phone number via SMS. The user enters this code along with their password to successfully complete the login process. &#039;&#039;&#039;Users must configure this factor themselves&#039;&#039;&#039;. Find out more from [[SMS gateways]].&lt;br /&gt;
&lt;br /&gt;
=====User-filtering factors=====&lt;br /&gt;
User-filtering factors are a way to easily create groups of users who will or will not be required to use multi-factor authentication (MFA).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Non administrator&#039;&#039;&#039;: This factor requires only administrators to have two or more authentication factors, while not affecting other users. It does so by giving factor points to all users who are not an administrator.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Authentication type:&#039;&#039;&#039; This factor allows certain users to skip additional authentication steps based on their authentication type. This can be useful for situations where certain authentication types, such as [https://en.wikipedia.org/wiki/Security_Assertion_Markup_Language SAML] via [https://en.wikipedia.org/wiki/Active_Directory_Federation_Services ADFS] , already provide a high level of security, making additional authentication checks unnecessary.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Role&#039;&#039;&#039;: This factor has to be used in combination with other factors, as it allows you to specify which roles must use other factors to authenticate. For example, it enables you to require that individuals with elevated access privileges, such as managers and administrators, undergo a more stringent authentication process, while other non-specified roles such students can bypass MFA.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cohort&#039;&#039;&#039;: This factor has to be used in combination with other factors, as it allows you to specify which cohorts must use other factors to authenticate.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;User capability&#039;&#039;&#039;: This factor is similar to the Role factor, and must also be combined with other factors, as it allows you to specify which users must use other factors to authenticate. It does so by checking whether users have the capability ‘factor/capability:cannotpassfactor’ at system level. Users who do not have the capability ‘factor/capability:cannotpassfactor’ will be given points for this factor and can bypass MFA, while users with this capability will need to use another type of authentication.&lt;br /&gt;
&lt;br /&gt;
For example: You assign the capability ‘factor/capability:cannotpassfactor’ to all Managers, and also enable the Email factor. When a Manager logs in, they will have to use the Email factor. But when a student tries to log in, they will not. &lt;br /&gt;
&lt;br /&gt;
Since Admin users have all capabilities allowed by default, including “factor/capability:cannotpassfactor”, there’s an additional setting that will allow Admins to gain points for this factor despite having the capability.&lt;br /&gt;
&lt;br /&gt;
=====Other factors =====&lt;br /&gt;
These factors provide additional flexibility and control over the authentication process. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Trust this device&#039;&#039;&#039;: This factor allows users to mark a device as trusted during MFA logins. Once a device is designated as trusted, users can bypass MFA for a specified period of time when logging in from that device. &lt;br /&gt;
&lt;br /&gt;
To implement this feature effectively, assign a score of 100 points to this factor.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Grace period&#039;&#039;&#039;: This factor is essential when you turn on factors that require upfront setup from users, like authenticator app or security key. It allows users to log in without engaging with multi-factor authentication (MFA) for a specified time frame, providing a buffer period to complete the setup of additional authentication factors. If a user is still within their grace period upon reaching the first post-login page, regardless of whether they used grace mode as a login factor, a notification will inform them of the remaining grace period length and the potential need to set up additional factors to prevent account lockout when the grace period expires. &lt;br /&gt;
&lt;br /&gt;
To implement this feature effectively, assign a score of 100 points to this factor. To receive points for this factor, there must be no other user-input factors requiring user interaction during the login process. Place this factor at the end of the list to ensure all other factors are addressed first.&lt;br /&gt;
&lt;br /&gt;
If the grace period ends and users have not set up their authentication methods, they will not be able to log in to your site. You can extend the grace period to allow them to log in, or enable other factors temporarily, such as IP range or role.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;No other factors&#039;&#039;&#039;: This factor allows people to log in if they have not set up any other MFA factors. For example, if you want to offer MFA to your users but not make it compulsory, give 100 points to ‘no other factors’ to allow those who don’t want to use MFA to log in to the site. Once another factor is set up for a user, they will no longer gain points for this one.&lt;br /&gt;
===User setup===&lt;br /&gt;
If you enable the factors &#039;&#039;&#039;Authenticator app&#039;&#039;&#039; and &#039;&#039;&#039;Security key&#039;&#039;&#039;, your users will need to configure multi-factor authentication themselves. The authentication settings can be accessed through &#039;&#039;User menu &amp;gt; Preferences &amp;gt; Multi-factor authentication preferences&#039;&#039;. There, they will be able to set up and manage their authenticator apps or security keys, as well as revoke access to any factors they have configured.&lt;br /&gt;
&lt;br /&gt;
It is important to note that a user will not be able to revoke a factor without having at least one other factor set up. This will reduce the chances of locking a user out without another way to authenticate.&lt;br /&gt;
==Recommendations and example setups==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When setting up MFA for your site, it’s important to ensure that you’re making your site more secure, but also creating a good experience for your users, including making sure that they are able to log in if they follow the right steps. Here are some recommendations to ensure that MFA is streamlined for your users:&lt;br /&gt;
# Make sure you turn on the &#039;&#039;&#039;Grace period&#039;&#039;&#039; factor when you turn on an authentication factor that requires users to configure something themselves (&#039;&#039;&#039;Authenticator app&#039;&#039;&#039; or &#039;&#039;&#039;Security key&#039;&#039;&#039;). This will give your users time to set up MFA before they are required to use it.&lt;br /&gt;
#If you don’t want to make MFA mandatory, enable &#039;&#039;&#039;No other factors&#039;&#039;&#039;. This will allow users with no other factors to log in using only their password.&lt;br /&gt;
#&#039;&#039;&#039;IP range&#039;&#039;&#039; factor is a very straightforward authentication method if all your users are using the same network. Once users are logged in using this factor, you can allow them to set up additional factors, such as an authenticator app, and then use those other factors to log in when not on your secure network.&lt;br /&gt;
#The &#039;&#039;&#039;SMS mobile phone&#039;&#039;&#039; factor relies on [[SMS gateways]], which currently support Amazon Simple Notification Service (SNS) for the delivery of secure and efficient SMS messages.&lt;br /&gt;
===Example setups===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
These are some examples of common MFA setups to increase the security of your Moodle site.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;a) Email verification&#039;&#039;&#039;&lt;br /&gt;
#Enable MFA.&lt;br /&gt;
#Turn on factor &#039;&#039;&#039;Email&#039;&#039;&#039; and give it 100 points.&lt;br /&gt;
#You can turn on &#039;&#039;&#039;Trust your device&#039;&#039;&#039; to allow your users to bypass MFA for a specified period of time after they have verified it with MFA for the first time.&lt;br /&gt;
#Let your users know that email verification is now enabled. Next time your users try to log in, they will see a message that asks them to check their email and enter a code that has been sent there.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;b) Authenticator app&#039;&#039;&#039;&lt;br /&gt;
#Enable MFA.&lt;br /&gt;
#Turn on the factor &#039;&#039;&#039;Grace period&#039;&#039;&#039; and give it 100 points. This will allow your users a period of time to set up their authenticator apps and prevent them from being locked out of your site. Use the &#039;&#039;&#039;Grace period warning banner&#039;&#039;&#039; to let your users know that MFA will be enabled soon and encourage them to set up their authenticator app.&lt;br /&gt;
#Turn on the factor &#039;&#039;&#039;Authenticator app&#039;&#039;&#039; and give it 100 points.&lt;br /&gt;
# You can turn on &#039;&#039;&#039;Trust your device&#039;&#039;&#039; to allow your users to bypass MFA for a specified period of time after they have verified it with MFA for the first time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;c) Email OR authenticator app&#039;&#039;&#039;&lt;br /&gt;
#Enable MFA.&lt;br /&gt;
#Turn on the factor &#039;&#039;&#039;Email&#039;&#039;&#039; and give it 100 points.&lt;br /&gt;
#Turn on the factor &#039;&#039;&#039;Grace period&#039;&#039;&#039; and give it 100 points. This will allow your users a period of time to set up their authenticator apps and prevent them from being locked out of your site. Use the &#039;&#039;&#039;Grace period warning banner&#039;&#039;&#039; to let your users know that MFA will be enabled soon and encourage them to set up their authenticator app.&lt;br /&gt;
#Turn on the factor &#039;&#039;&#039;Authenticator app&#039;&#039;&#039; and give it 100 points.&lt;br /&gt;
#You can turn on &#039;&#039;&#039;Trust your device&#039;&#039;&#039; to allow your users to bypass MFA for a specified period of time after they have verified it with MFA for the first time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;d) Email AND authenticator app&#039;&#039;&#039;&lt;br /&gt;
#Enable MFA.&lt;br /&gt;
# Turn on the factor &#039;&#039;&#039;Email&#039;&#039;&#039; and give it 50 points.&lt;br /&gt;
#Turn on the factor &#039;&#039;&#039;Grace period&#039;&#039;&#039; and give it 100 points. This will allow your users a period of time to set up their authenticator apps and prevent them from being locked out of your site. Use the &#039;&#039;&#039;Grace period warning banner&#039;&#039;&#039; to let your users know that MFA will be enabled soon and encourage them to set up their authenticator app.&lt;br /&gt;
#Turn on the factor &#039;&#039;&#039;Authenticator app&#039;&#039;&#039; and give it 50 points. Users will have to pass both factors to get to 100 points and be able to log in.&lt;br /&gt;
#You can turn on Trust your device to allow your users to bypass MFA for a specified period of time after they have verified it with MFA for the first time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;e) SMS Mobile phone:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Enable MFA.&lt;br /&gt;
# Visit the settings page for the &#039;&#039;&#039;SMS Mobile phone&#039;&#039;&#039; factor.&lt;br /&gt;
# If no SMS gateways have been configured on the site, you will be prompted to set one up. You can follow the &amp;quot;set up an SMS gateway&amp;quot; link on the page to set this up. Alternatively, if you have one or more SMS gateways configured on the site, but wish to set up a new gateway for MFA, follow the &amp;quot;create a new gateway&amp;quot; link below the SMS gateway dropdown. If you need to check the configuration of an existing SMS gateway, you can do so via Site administration &amp;gt; SMS &amp;gt; Manage SMS gateways. Additional information can found in the [[SMS gateways|SMS gateways documentation]].&lt;br /&gt;
# After the gateway has been configured (or if it was already set up and available), select it from the SMS gateway dropdown.&lt;br /&gt;
# Enable the factor, which will reveal additional settings.&lt;br /&gt;
# Set the Factor weight to 100 points and set an appropriate Secret validity duration, then save.&lt;br /&gt;
# Inform your users that SMS mobile phone verification is now activated. During their next login, they can proceed to set up SMS mobile phone authentication in the user profile preferences page.&lt;br /&gt;
# You can turn on &#039;&#039;&#039;Trust your device&#039;&#039;&#039; to allow your users to bypass MFA for a specified period of time after they have verified it with MFA for the first time.&lt;br /&gt;
&lt;br /&gt;
==Summary of good conditions for login ==&lt;br /&gt;
Here are listed the factors selected and their total weighting, adding up to 100.&lt;br /&gt;
==General MFA settings==&lt;br /&gt;
*The MFA plugin enabled box should be checked for MFA to work.&lt;br /&gt;
*From this section you can add any relative URL from the siteroot for which the MFA check will not redirect from&lt;br /&gt;
*Links to any guidance pages or files may be uploaded here.&lt;br /&gt;
==Admin locked out of site - how to resolve==&lt;br /&gt;
Be careful as an administrator when configuring and testing the factors that you do not lock yourself out of the site. If you do then MFA can be disable from the command line by entering:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
: php admin/cli/cfg.php --component=tool_mfa --name=enabled --set=0&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==See also==&lt;br /&gt;
[[All factor report]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[es:Autenticación de múltiples factores]]&lt;br /&gt;
[[de:Multi-Faktor-Authentifizierung]]&lt;/div&gt;</summary>
		<author><name>Michaelh2</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/501/en/index.php?title=SMS_gateways&amp;diff=150189</id>
		<title>SMS gateways</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/501/en/index.php?title=SMS_gateways&amp;diff=150189"/>
		<updated>2024-11-19T17:37:17Z</updated>

		<summary type="html">&lt;p&gt;Michaelh2: Minor language tweaks.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;SMS is a now a subsystem in Moodle LMS, which includes a plugin type (SMS gateway), to allow different providers (e.g. AWS SNS) to send messages via SMS. Site administrators can now setup and configure multiple SMS gateways. Only sending (not receiving) of messages is currently supported.&lt;br /&gt;
&lt;br /&gt;
Initially, the SMS subsystem has been implemented for use in [[Multi-factor authentication]] (MFA), however there will also be a SMS notification support in the future. It is also worth mentioning that SMS is not a replacement for notifications sent to the [[Moodle app|Moodle App]], it is a supplementary mechanism. Many places in the world do not have access to internet enabled phones, or have data restrictions, so SMS functionality provides an alternative way to receive important information.&lt;br /&gt;
&lt;br /&gt;
== Managing SMS gateways ==&lt;br /&gt;
Management of SMS gateways is now available from site administration. Navigate to Site administration &amp;gt; Plugins &amp;gt; SMS &amp;gt; Manage SMS gateways.&lt;br /&gt;
[[File:01 sms.png|frameless|800x800px|center]]&lt;br /&gt;
Selecting Manage SMS gateways will take you to the SMS gateway management page. Select &amp;quot;Create new SMS gateway&amp;quot; to create a new SMS gateway.&lt;br /&gt;
[[File:02 sms.png|frameless|800x800px|sms gateway|center]]&lt;br /&gt;
&lt;br /&gt;
This will open the SMS gateway configuration form. In this page, the following information should be added to allow the usage of the gateway: &lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SMS gateway provider:&#039;&#039;&#039; SMS can have many different gateway providers, currently AWS is supported in Moodle LMS. Other providers such as Modica and Twilio will be available in future (or if you install a plugin to support them).&lt;br /&gt;
*&#039;&#039;&#039;Gateway name:&#039;&#039;&#039; This name will be used identify the gateway in the list of configured gateways.&lt;br /&gt;
*&#039;&#039;&#039;Default country code:&#039;&#039;&#039; This is the country code used if users have not included a country code when entering their mobile number. This is particularly useful if your users are from one specific region or mostly from one region, since it means they won&#039;t need to add the country code while entering their mobile number in plugins like MFA.&lt;br /&gt;
*The rest of the fields like Find AWS credential, Access key, Secret key, region etc. are specific to the AWS SMS gateway plugin. That information comes from your AWS account and must be filled correctly to ensure the gateway works correctly. Please note, different plugins will have different form fields for this section.&lt;br /&gt;
&lt;br /&gt;
[[File:03 sms.png|frameless|800x800px|center]]&lt;br /&gt;
&lt;br /&gt;
If we fill that information and save changes, we will have the gateway available in the SMS gateway management page.&lt;br /&gt;
[[File:04_sms.png|center|frameless|800x800px]]&lt;br /&gt;
The gateways can be enabled or disabled when needed, by clicking the toggle in the Status column, which will be confirmed by a notification banner.[[File:05 sms.png|frameless|800x800px|center]]&lt;br /&gt;
&lt;br /&gt;
If the gateway is in use (e.g. MFA is using this gateway), then it will not be disabled and instead it will show a notification that it can not be disabled.&lt;br /&gt;
[[File:06 sms.png|frameless|800x800px|center]]&lt;br /&gt;
&lt;br /&gt;
Gateways can also be deleted. A confirmation dialogue will be shown before deleting the gateway, as well as a notification after a successful deletion.&lt;br /&gt;
[[File:07 sms.png|frameless|800x800px|center]]&lt;br /&gt;
[[File:08 sms.png|frameless|800x800px|center]]&lt;br /&gt;
&lt;br /&gt;
If the gateway is in use or any other issues are found while deleting the gateway, it will not be deleted and a notification will be shows with relevant information.&lt;br /&gt;
[[File:09 sms.png|frameless|800x800px|center]]&lt;br /&gt;
&lt;br /&gt;
Once a gateway has been configured and enabled, you can select the gateway from the MFA SMS factor settings.&lt;br /&gt;
[[File:10 sms.png|center|frameless|800x800px]]&lt;br /&gt;
For further usage related information, please visit the [[Multi-factor authentication|MFA setup documentation.]] Configure your Amazon SNS for SMS Authentication following the [https://docs.aws.amazon.com/sns/ AWS SNS Documentation].&lt;br /&gt;
[[es: Puertas de enlace (gateways) SMS]]&lt;/div&gt;</summary>
		<author><name>Michaelh2</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/501/en/index.php?title=admin/setting/ai&amp;diff=149548</id>
		<title>admin/setting/ai</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/501/en/index.php?title=admin/setting/ai&amp;diff=149548"/>
		<updated>2024-10-15T07:57:22Z</updated>

		<summary type="html">&lt;p&gt;Michaelh2: Redirected page to AI subsystem&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#Redirect[[AI_subsystem]]&lt;/div&gt;</summary>
		<author><name>Michaelh2</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/501/en/index.php?title=TinyMCE_editor&amp;diff=149324</id>
		<title>TinyMCE editor</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/501/en/index.php?title=TinyMCE_editor&amp;diff=149324"/>
		<updated>2024-09-20T06:53:22Z</updated>

		<summary type="html">&lt;p&gt;Michaelh2: /* Tiny Toolbar */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Editing text}}&lt;br /&gt;
==What is TinyMCE?==&lt;br /&gt;
TinyMCE is a powerful rich-text editor that allows users to create formatted content within a user-friendly interface.&lt;br /&gt;
&lt;br /&gt;
The popular editor is the default editor in all sites from Moodle 4.4 onwards. From &#039;&#039;Administration &amp;gt; Site administration &amp;gt; Plugins &amp;gt; Text editors &amp;gt; Manage editors&#039;&#039;. From that page, text editors can be enabled, disabled, ordered by priority and the default editor can also be configured. If more than one text editor is enabled, users can select their preferred editor via their preferences page: &#039;&#039;User menu &amp;gt; Preferences &amp;gt; Editor preferences.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{MediaPlayer | url = https://youtu.be/aGtOOmJXweA?si=RbAzDcyv0XaydsTN | desc = Overview of TinyMCE}}&lt;br /&gt;
&lt;br /&gt;
==Spellcheck==&lt;br /&gt;
Although a spellchecker is available with TinyMCE Premium (see below), you can use your browser to check spellings in the standard TinyMCE editor. Depending on your browser you can, for example, type text, right click and select Spellcheck. Incorrect or potentially incorrect spellings will be underlined in red.&lt;br /&gt;
== Tiny Toolbar ==&lt;br /&gt;
The following buttons are available on the toolbar (not all buttons might show in all scenarios:)&lt;br /&gt;
[[File:latestTiny.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The available buttons are as follows:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!#&lt;br /&gt;
!Button&lt;br /&gt;
!#&lt;br /&gt;
!Button&lt;br /&gt;
!#&lt;br /&gt;
!Button&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Undo and Redo&lt;br /&gt;
|10&lt;br /&gt;
|No auto-link &lt;br /&gt;
|18&lt;br /&gt;
|Numbered list&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Bold and Italic&lt;br /&gt;
|11&lt;br /&gt;
|Full screen &lt;br /&gt;
|19&lt;br /&gt;
|Equation editor&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Insert image/modify properties&lt;br /&gt;
|12&lt;br /&gt;
|Align left&lt;br /&gt;
|20&lt;br /&gt;
|Toggle second toolbar (if present)&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Insert audio/video/modify properties&lt;br /&gt;
|13&lt;br /&gt;
|Align centre&lt;br /&gt;
|21&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|[[Audio|Record audio]]&lt;br /&gt;
|14&lt;br /&gt;
|Align right&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|[[Video|Record video]]&lt;br /&gt;
|15&lt;br /&gt;
|L/R and R/L directionality&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|Insert H5P / modify H5P properties&lt;br /&gt;
|16&lt;br /&gt;
|Decrease/increase indent&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|8&lt;br /&gt;
|Link&lt;br /&gt;
|17&lt;br /&gt;
|Bullets list&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|9&lt;br /&gt;
|Unlink&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
Some button have pre-requisites to display, for instance, the equation editor button will only show if either the [[MathJax filter|MathJax]] or the [[TeX notation filter|TeX notation]] filters are enabled (in &#039;&#039;Site administration &amp;gt; Plugins &amp;gt; Filters &amp;gt; Manage filters&#039;&#039;), while the H5P option will only show if the &#039;&#039;tiny/h5p:addembed&#039;&#039; capability has been granted.&lt;br /&gt;
&lt;br /&gt;
Some features will also be displayed in a &amp;quot;quick toolbar&amp;quot; when highlighting text within the editor (for example some formatting options), however the quick toolbar will only be displayed if the editor is more than 5 lines of text high. It is automatically hidden in smaller editor instances as the shorter space can cause issues with correctly displaying the options.&lt;br /&gt;
&lt;br /&gt;
== Tiny features ==&lt;br /&gt;
[[File:Tiny - Insert menu.png|thumb]]&lt;br /&gt;
The following features are available from the &#039;&#039;&#039;Insert&#039;&#039;&#039; menu:&lt;br /&gt;
=== Insert / Edit image ===&lt;br /&gt;
The easiest way to insert an image is via drag and drop. Alternatively, you can use the &#039;&#039;Insert image&#039;&#039; tool, which gives you more control over some image properties:&lt;br /&gt;
&lt;br /&gt;
[[File:uploadtinymce.png]]&lt;br /&gt;
&lt;br /&gt;
You can paste in a URL of an image or browse the repositories to locate or upload an image.&lt;br /&gt;
&lt;br /&gt;
Once your image is added, you can resize it and add alt text:&lt;br /&gt;
&lt;br /&gt;
[[File:edittinymceimage.png]]&lt;br /&gt;
&lt;br /&gt;
To modify image properties once it has been added to your text, select the image and press the &#039;&#039;Image&#039;&#039; button on the mini toolbar that shows up.&lt;br /&gt;
&lt;br /&gt;
=== Insert / Edit Link ===&lt;br /&gt;
When inserting or editing a link to another (internal or external) page, you can provide the following settings:&lt;br /&gt;
* &#039;&#039;&#039;URL&#039;&#039;&#039;: The address of the page to navigate to. If left empty, the option &#039;&#039;&amp;lt;top&amp;gt;&#039;&#039; and &#039;&#039;&amp;lt;bottom&amp;gt;&#039;&#039; are available&lt;br /&gt;
* &#039;&#039;&#039;Text to display&#039;&#039;&#039;: The text that is shown in the text, represented as a link&lt;br /&gt;
* &#039;&#039;&#039;Title&#039;&#039;&#039;: The text shown when hovering over the link&lt;br /&gt;
* &#039;&#039;&#039;Browse repositories&#039;&#039;&#039;: Upload a file to link to.&lt;br /&gt;
* &#039;&#039;&#039;Open link in...&#039;&#039;&#039;: The page can either be opened in the &#039;&#039;&#039;Current Window&#039;&#039;&#039; or a &#039;&#039;&#039;New window&#039;&#039;&#039;&lt;br /&gt;
[[File:Tiny - Link.png|border|center|frameless|450x450px]]&lt;br /&gt;
=== Insert / Edit Multimedia ===&lt;br /&gt;
To insert existing audio or videos clips, the TinyMCE editor supports Moodle standard [[Media embedding|Media embedding interface]]. &lt;br /&gt;
[[File:Tiny - Audio &amp;amp; Video.png|thumb]]&lt;br /&gt;
=== Record audio and video ===&lt;br /&gt;
TinyMCE lets users record [[audio]] and [[video]] clips which will attach to the text once recorded. Each recording comprises three steps:&lt;br /&gt;
# &#039;&#039;&#039;Start recording&#039;&#039;&#039;: when ready, press the &#039;&#039;Start recording&#039;&#039; button&lt;br /&gt;
# &#039;&#039;&#039;Stop recording&#039;&#039;&#039;: when completed, press the &#039;&#039;Stop recording&#039;&#039; button&lt;br /&gt;
# &#039;&#039;&#039;Review recording&#039;&#039;&#039;: you can listen to or watch the recording via the provided controls. Either attach the clip to your text or record it again.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The maximum length and quality (bitrate) can be [[TinyMCE editor#Tiny Record RTC plugin for Moodle|configured]] at admin level.&lt;br /&gt;
=== Insert / Edit code sample ===&lt;br /&gt;
The Tiny editor lets you insert and embed syntax color highlighted code snippets into the editable area.&lt;br /&gt;
[[File:Tiny - Code Sample.png|border|center|frameless|600x600px]]&lt;br /&gt;
While you can select the (programming) language at the top, it doesn&#039;t have any impact on the way the code is displayed.&lt;br /&gt;
&lt;br /&gt;
Tiny also supports formatting of code elements (&#039;&#039;Format -&amp;gt; Code&#039;&#039;), which changes the selected text to the internally defined &amp;lt;code&amp;gt;code style&amp;lt;/code&amp;gt;.&lt;br /&gt;
=== Insert Table ===&lt;br /&gt;
Tiny comes with comprehensive table management functionality to handle grid-like structures in your text. In addition to the Insert table menu item, an entire main menu has been dedicated to tables.&lt;br /&gt;
[[File:Tiny - Table.png|border|center|frameless|450x450px]]&lt;br /&gt;
Once a table has been added, you can customise individual cells, row, columns, and the properties of the entire table. The following self-explanatory menu items are available, all supporting standard HTML table options:&lt;br /&gt;
* Cell&lt;br /&gt;
** Cell properties&lt;br /&gt;
** Merge cells&lt;br /&gt;
** Split cells&lt;br /&gt;
* Row&lt;br /&gt;
** Insert row before&lt;br /&gt;
** Insert row after&lt;br /&gt;
** Delete row&lt;br /&gt;
** Row properties&lt;br /&gt;
** Cut row&lt;br /&gt;
** Copy row&lt;br /&gt;
** Paste row before&lt;br /&gt;
** Paste row after&lt;br /&gt;
* Column&lt;br /&gt;
** Insert column before&lt;br /&gt;
** Insert column after&lt;br /&gt;
** Delete column&lt;br /&gt;
** Cut column&lt;br /&gt;
** Copy column&lt;br /&gt;
** Paste column before&lt;br /&gt;
** Paste column after&lt;br /&gt;
* Table properties&lt;br /&gt;
* Delete table&lt;br /&gt;
[[File:Tiny - Table operations.png|border|center|frameless|600x600px]]&lt;br /&gt;
The table editor also shows context-sensitive menus when editing different table elements.&lt;br /&gt;
=== Insert special character ===&lt;br /&gt;
The special character picker lets you insert letters and symbols (a map of special unicode characters) that are difficult or impossible to access via your keyboard. You can either search by keyword and / or browse categories.&lt;br /&gt;
[[File:Tiny - Special character.png|border|center|frameless|450x450px]]&lt;br /&gt;
=== Insert Emojis ===&lt;br /&gt;
Bring a smiley to your content: The emoji picker lets you insert pictograms. You can either search by keyword and / or browse categories.&lt;br /&gt;
[[File:Tiny - Emojis.png|border|center|frameless|450x450px]]&lt;br /&gt;
=== Insert HTML elements ===&lt;br /&gt;
The following 4 HTML elements are supported by TinyMCE via menus:&lt;br /&gt;
* &#039;&#039;&#039;Insert horizontal line&#039;&#039;&#039;: Adds an HTML line to your text.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Insert page break&#039;&#039;&#039;: Adds a page break (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) to your text.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Insert nonbreaking space&#039;&#039;&#039;: Add an nonbreaking space (&amp;lt;code&amp;gt;&amp;amp;amp;nbsp;&amp;lt;/code&amp;gt;) at the current cursor location.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Insert anchor&#039;&#039;&#039;: Insert anchors (sometimes referred to as a bookmarks) to your text. Users will be prompted via a dialog box to enter a string. The string will be inserted into the HTML as an anchor id at the location of the cursor. For example, a user places their cursor at the beginning of &amp;quot;Moodle&amp;quot; and clicks on the anchor button and enters &amp;quot;start&amp;quot; in the dialog box. The resulting HTML will take the form of &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;p&amp;gt;&amp;lt;a id=&amp;quot;start&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/nowiki&amp;gt;Moodle&amp;lt;nowiki&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
=== Insert date/time ===&lt;br /&gt;
The Insert date/time options lets you easily insert the current date and/or time into the editable area at the cursor insertion point.&lt;br /&gt;
[[File:Tiny - DateTime.png|border|center|frameless]]&lt;br /&gt;
The available format options depend on the selected language. &lt;br /&gt;
[[File:Tiny - Equation editor.png|thumb]]&lt;br /&gt;
=== Equation editor ===&lt;br /&gt;
If either the [[MathJax filter|MathJax]] or the [[TeX notation filter|TeX]] filters are enabled (in &#039;&#039;Site administration &amp;gt; Plugins &amp;gt; Filters &amp;gt; Manage filters&#039;&#039;) then the &#039;&#039;Insert equation&#039;&#039; option is provided in the TinyMCE editor for launching the equation editor.&lt;br /&gt;
&lt;br /&gt;
Internally, the equation editor uses the [https://docs.moodle.org/400/en/TeX_notation_filter TeX notation] which can either be entered manually and / or interactively. The interactive elements are grouped into 4 categories (Operators, Arrows, Greek symbols, and Advanced). The content of each tab can be configured via the [[Equation editor settings]].&lt;br /&gt;
&lt;br /&gt;
At the bottom of the editor, a preview is shown.&lt;br /&gt;
=== Configure H5P content ===&lt;br /&gt;
You can embed [[H5P]] content via the &#039;&#039;Configure H5P content&#039;&#039; menu as follows:&lt;br /&gt;
# Browse the Content bank repository and select an H5P file&lt;br /&gt;
# Choose to either make a copy of the file or create a shortcut&lt;br /&gt;
# Optionally, configure the H5P options (Allow download, Embed button, Copyright button)&lt;br /&gt;
# Click the button &#039;Select this file&#039;&lt;br /&gt;
# Click &#039;Insert H5P&#039;These steps will automatically enter the internal address in the H5P URL field. Alternatively, you can enter any internal or external H5P URL manually.&lt;br /&gt;
Note: If you create a shortcut to the file, you can edit it in the Content bank and any activities with a link to the file will be updated.&lt;br /&gt;
== Tiny tools ==&lt;br /&gt;
[[File:Tiny - Tools menu.png|thumb]]&lt;br /&gt;
The following tools are available in vie the &#039;&#039;&#039;Tools&#039;&#039;&#039; menu:&lt;br /&gt;
=== View source code ===&lt;br /&gt;
The source code pop up window displays the code of the page, usually HTML or JS. The code can be modified in plain text; once the window is closed, any changes will be reflected in the WYSIWYG mode.&lt;br /&gt;
[[File:Tiny - Source code.png|center|frameless|900x900px]]&lt;br /&gt;
=== Word count ===&lt;br /&gt;
The word pop up windows displays the number of words and the number of characters (with and without spaces) of the entire document and the selected text, respectively.&lt;br /&gt;
[[File:Tiny - Word count.png|border|center|frameless|600x600px|alt=]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The number of words are also shown in the editor&#039;s footer.&lt;br /&gt;
=== Accessibility checker ===&lt;br /&gt;
The automated [[accessibility]] checker checks for some common errors in the text. These are usually elements in the way the text is constructed that can prevent all users from having equal access to information and functionality. The list of problems that the accessibility checker looks for is:&lt;br /&gt;
* Images with missing or empty alt text (unless they have the presentation role)&lt;br /&gt;
* Contrast of font colour and background colour meets [https://en.wikipedia.org/wiki/Web_Content_Accessibility_Guidelines WCAG AA guidelines]&lt;br /&gt;
* Long blocks of text are sufficiently broken up into headings&lt;br /&gt;
* All tables require captions&lt;br /&gt;
* Tables should not contain merged cells as they are difficult to navigate with screen readers&lt;br /&gt;
* All tables should contain row or column headers&lt;br /&gt;
=== Media Manager ===&lt;br /&gt;
The media manager shows all media files that have been embedded in the text. &lt;br /&gt;
&lt;br /&gt;
The top part of the media manager shows the familiar file management element where you can add, download, and delete attached files.&lt;br /&gt;
&lt;br /&gt;
Files that have been attached and deleted again are shown at the bottom half of the screen.&lt;br /&gt;
[[File:Tiny - Media manager.png|border|center|frameless|600x600px]]&lt;br /&gt;
== Keyboard shortcuts ==&lt;br /&gt;
The following keyboard shortcuts will work in the Tiny text editor in most browsers. Note that for many of these commands to work you need to either click in the text editor or select content in the text editor.&lt;br /&gt;
=== Editor shortcuts ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Windows Command&lt;br /&gt;
!Mac Command&lt;br /&gt;
!Function&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + Shift + f&lt;br /&gt;
|⌘ + Shift + f&lt;br /&gt;
|Full screen toggle&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + c&lt;br /&gt;
|⌘ + c&lt;br /&gt;
|Copy&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + v&lt;br /&gt;
|⌘ + v&lt;br /&gt;
|Paste&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + Shift + v&lt;br /&gt;
|⌘ + Shift + v&lt;br /&gt;
|Paste without formatting (very useful)&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + x&lt;br /&gt;
|⌘ + x&lt;br /&gt;
|Cut&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + z&lt;br /&gt;
|⌘ + z&lt;br /&gt;
|Undo&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + y&lt;br /&gt;
|⌘ + y&lt;br /&gt;
|Redo&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + a&lt;br /&gt;
|⌘ + a&lt;br /&gt;
|Select all&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + f&lt;br /&gt;
|⌘ + f&lt;br /&gt;
|Find and replace&lt;br /&gt;
|-&lt;br /&gt;
|F3&lt;br /&gt;
|&amp;lt;s&amp;gt;F3&amp;lt;/s&amp;gt;&lt;br /&gt;
|Find next&lt;br /&gt;
|-&lt;br /&gt;
|Shift + F3&lt;br /&gt;
|&amp;lt;s&amp;gt;Shift + F3&amp;lt;/s&amp;gt;&lt;br /&gt;
|Find previous&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + b&lt;br /&gt;
|⌘ + b&lt;br /&gt;
|Bold&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + i&lt;br /&gt;
|⌘ + i&lt;br /&gt;
|Italics&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + u&lt;br /&gt;
|⌘ + u&lt;br /&gt;
|Underline&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + k&lt;br /&gt;
|⌘ + k&lt;br /&gt;
|Insert/edit link&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + Right arrow&lt;br /&gt;
|Option + Right arrow&lt;br /&gt;
|Move to the end of the next word&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + Left arrow&lt;br /&gt;
|Option + Left arrow&lt;br /&gt;
|Move to the end of the previous word&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + Shift + Right arrow&lt;br /&gt;
|Shift + Option + Right arrow&lt;br /&gt;
|Select the next word or letter&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + Shift + Left arrow&lt;br /&gt;
|Shift + Option + Left arrow&lt;br /&gt;
|Select the previous word or letter&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + Shift + Home&lt;br /&gt;
|&amp;lt;s&amp;gt;⌘ + Shift + Home&amp;lt;/s&amp;gt;&lt;br /&gt;
|Select from the cursor to the beginning of the page&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + Shift + End&lt;br /&gt;
|&amp;lt;s&amp;gt;⌘ + Shift + End&amp;lt;/s&amp;gt;&lt;br /&gt;
|Select from the cursor to the end of the page&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + Home&lt;br /&gt;
|⌘ + Up arrow&lt;br /&gt;
|Move to the beginning of the page&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + End&lt;br /&gt;
|⌘ + Down arrow&lt;br /&gt;
|Move to the end of the page&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + Backspace&lt;br /&gt;
|&amp;lt;s&amp;gt;⌘ + Backspace&amp;lt;/s&amp;gt;&lt;br /&gt;
|Delete word or letter to the left&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + Delete&lt;br /&gt;
|&amp;lt;s&amp;gt;⌘ + Delete&amp;lt;/s&amp;gt;&lt;br /&gt;
|Delete word or letter to the right&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + P&lt;br /&gt;
|⌘ + P&lt;br /&gt;
|Print&lt;br /&gt;
|-&lt;br /&gt;
|Alt+Shift+1&lt;br /&gt;
|Ctrl+Option+1&lt;br /&gt;
|Header 1&lt;br /&gt;
|-&lt;br /&gt;
|Alt+Shift+2&lt;br /&gt;
|Ctrl+Option+2&lt;br /&gt;
|Header 2&lt;br /&gt;
|-&lt;br /&gt;
|Alt+Shift+3&lt;br /&gt;
|Ctrl+Option+3&lt;br /&gt;
|Header 3&lt;br /&gt;
|-&lt;br /&gt;
|Alt+Shift+4&lt;br /&gt;
|Ctrl+Option+4&lt;br /&gt;
|Header 4&lt;br /&gt;
|-&lt;br /&gt;
|Alt+Shift+5&lt;br /&gt;
|Ctrl+Option+5&lt;br /&gt;
|Header 5&lt;br /&gt;
|-&lt;br /&gt;
|Alt+Shift+6&lt;br /&gt;
|Ctrl+Option+6&lt;br /&gt;
|Header 6&lt;br /&gt;
|-&lt;br /&gt;
|Alt+Shift+7&lt;br /&gt;
|Ctrl+Option+7&lt;br /&gt;
|Paragraph&lt;br /&gt;
|-&lt;br /&gt;
|Alt+Shift+8&lt;br /&gt;
|Ctrl+Option+8&lt;br /&gt;
|Div&lt;br /&gt;
|-&lt;br /&gt;
|Alt+Shift+9&lt;br /&gt;
|Ctrl+Option+9&lt;br /&gt;
|Address&lt;br /&gt;
|-&lt;br /&gt;
|Alt+0&lt;br /&gt;
|Option+0&lt;br /&gt;
|Help dialogue (list of shortcuts)&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl and +&lt;br /&gt;
|⌘ and +&lt;br /&gt;
|Zoom in (not specific to the editor, but very useful)&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl and -&lt;br /&gt;
|⌘ and -&lt;br /&gt;
|Zoom out (not specific to the editor, but very useful)&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl and 0&lt;br /&gt;
|⌘ and 0&lt;br /&gt;
|Reset zoom (not specific to the editor, but very useful)&lt;br /&gt;
|-&lt;br /&gt;
|Double-click&lt;br /&gt;
|Double-click&lt;br /&gt;
|Select word&lt;br /&gt;
|-&lt;br /&gt;
|Triple-click&lt;br /&gt;
|Triple-click&lt;br /&gt;
|Select line&lt;br /&gt;
|}&lt;br /&gt;
=== Keyboard navigation ===&lt;br /&gt;
The sections of the outer UI of the editor - the menubar, toolbar, sidebar and footer - are all keyboard navigable. &lt;br /&gt;
==== Activating keyboard navigation ====&lt;br /&gt;
There are multiple ways to activate keyboard navigation:&lt;br /&gt;
* Focus the menubar: Alt + F9 (Windows) or ⌥F9 (MacOS)&lt;br /&gt;
* Focus the toolbar: Alt + F10 (Windows) or ⌥F10 (MacOS)&lt;br /&gt;
* Focus the footer: Alt + F11 (Windows) or ⌥F11 (MacOS)&lt;br /&gt;
Focusing the menubar or toolbar will start keyboard navigation at the first item in the menubar or toolbar, which will be highlighted with a gray background. Focusing the footer will start keyboard navigation at the first item in the element path, which will be highlighted with an underline.&lt;br /&gt;
==== Moving between UI sections ====&lt;br /&gt;
When keyboard navigation is active, pressing tab will move the focus to the next major section of the UI, where applicable. These sections are:&lt;br /&gt;
* the menubar&lt;br /&gt;
* each group of the toolbar&lt;br /&gt;
* the sidebar&lt;br /&gt;
* the element path in the footer&lt;br /&gt;
* the wordcount toggle button in the footer&lt;br /&gt;
* the branding link in the footer&lt;br /&gt;
* the editor resize handle in the footer&lt;br /&gt;
Pressing shift + tab will move backwards through the same sections, except when moving from the footer to the toolbar. Focusing the element path then pressing shift + tab will move focus to the first toolbar group, not the last.&lt;br /&gt;
==== Moving within UI sections ====&lt;br /&gt;
Keyboard navigation within UI sections can usually be achieved using the left and right arrow keys. This includes:&lt;br /&gt;
* moving between menus in the menubar&lt;br /&gt;
* moving between buttons in a toolbar group&lt;br /&gt;
* moving between items in the element path&lt;br /&gt;
In all these UI sections, keyboard navigation will cycle within the section. For example, focusing the last button in a toolbar group then pressing right arrow will move focus to the first item in the same toolbar group.&lt;br /&gt;
==== Executing buttons ====&lt;br /&gt;
To execute a button, navigate the selection to the desired button and hit space or enter.&lt;br /&gt;
==== Opening, navigating and closing menus ====&lt;br /&gt;
When focusing a menubar button or a toolbar button with a menu, pressing space, enter or down arrow will open the menu. When the menu opens the first item will be selected. To move up or down the menu, press the up or down arrow key respectively. This is the same for submenus, which can also be opened and closed using the left and right arrow keys.&lt;br /&gt;
&lt;br /&gt;
To close any active menu, hit the escape key. When a menu is closed the selection will be restored to its previous selection. This also works for closing submenus.&lt;br /&gt;
==== Context toolbars and menus ====&lt;br /&gt;
To focus an open context toolbar such as the table context toolbar, press Ctrl + F9 (Windows) or ⌃F9 (MacOS).&lt;br /&gt;
&lt;br /&gt;
Context toolbar navigation is the same as toolbar navigation, and context menu navigation is the same as standard menu navigation.&lt;br /&gt;
==== Dialog navigation ====&lt;br /&gt;
There are two types of dialog UIs in TinyMCE: tabbed dialogs and non-tabbed dialogs.&lt;br /&gt;
&lt;br /&gt;
When a non-tabbed dialog is opened, the first interactive component in the dialog will be focused. Users can navigate between interactive components by pressing tab. This includes any footer buttons. Navigation will cycle back to the first dialog component if tab is pressed while focusing the last component in the dialog. Pressing shift + tab will navigate backwards.&lt;br /&gt;
&lt;br /&gt;
When a tabbed dialog is opened, the first button in the tab menu is focused. Pressing tab will navigate to the first interactive component in that tab, and will cycle through the tab&#039;s components, the footer buttons, then back to the tab button. To switch to another tab, focus the tab button for the current tab, then use the arrow keys to cycle through the tab buttons.&lt;br /&gt;
==== Accessibility shortcuts ====&lt;br /&gt;
This is a list of available keyboard shortcuts within the editor user interface.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Windows Command&lt;br /&gt;
!Mac Command&lt;br /&gt;
!Function&lt;br /&gt;
|-&lt;br /&gt;
|Enter / Spacebar&lt;br /&gt;
|Enter / Spacebar&lt;br /&gt;
|Execute command&lt;br /&gt;
|-&lt;br /&gt;
|Tab&lt;br /&gt;
|Tab&lt;br /&gt;
|Focus on next UI Element(such as: Menu bar, Toolbar, Toolbar Group, Status Bar Item)&lt;br /&gt;
|-&lt;br /&gt;
|Shift+Tab&lt;br /&gt;
|Shift+Tab&lt;br /&gt;
|Focus on previous UI Element(such as: Menu bar, Toolbar, Toolbar Group, Status Bar Item)&lt;br /&gt;
|-&lt;br /&gt;
|Right Arrow / Down Arrow&lt;br /&gt;
|Right Arrow / Down Arrow&lt;br /&gt;
|Focus next Control(such as: toolbar button, menu, or menu item)&lt;br /&gt;
|-&lt;br /&gt;
|Left Arrow / Up Arrow&lt;br /&gt;
|Left Arrow / Up Arrow&lt;br /&gt;
|Focus previous Control(such as: toolbar button, menu, or menu item)&lt;br /&gt;
|-&lt;br /&gt;
|Down Arrow / Spacebar&lt;br /&gt;
|Down Arrow / Spacebar&lt;br /&gt;
|Open menu or toolbar menu button&lt;br /&gt;
|-&lt;br /&gt;
|Spacebar&lt;br /&gt;
|Spacebar&lt;br /&gt;
|Open group toolbar button&lt;br /&gt;
|-&lt;br /&gt;
|Down Arrow&lt;br /&gt;
|Down Arrow&lt;br /&gt;
|Open split toolbar button&lt;br /&gt;
|-&lt;br /&gt;
|Shift+Enter&lt;br /&gt;
|Shift+Enter&lt;br /&gt;
|Open the popup menu on split toolbar buttons&lt;br /&gt;
|-&lt;br /&gt;
|Right Arrow&lt;br /&gt;
|Right Arrow&lt;br /&gt;
|Open submenu&lt;br /&gt;
|-&lt;br /&gt;
|Left Arrow / Esc&lt;br /&gt;
|Left Arrow / Esc&lt;br /&gt;
|Close submenu&lt;br /&gt;
|-&lt;br /&gt;
|Esc&lt;br /&gt;
|Esc&lt;br /&gt;
|Close dialog&lt;br /&gt;
|-&lt;br /&gt;
|Esc&lt;br /&gt;
|Esc&lt;br /&gt;
|Close menu&lt;br /&gt;
|-&lt;br /&gt;
|Esc&lt;br /&gt;
|Esc&lt;br /&gt;
|Move focus back to editor body&lt;br /&gt;
|}&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: Browsers and Screen Readers provide additional shortcuts within the editor context.&lt;br /&gt;
==Site administration settings==&lt;br /&gt;
=== General settings ===&lt;br /&gt;
From &#039;&#039;Site administration &amp;gt; Plugins &amp;gt; Text editors &amp;gt; TinyMCE editor&#039;&#039; you can disable and enable certain settings, for example the Tiny HTML formatter, Tiny no-auto link and access the setting for the paid service TinyMCE Premium.&lt;br /&gt;
&lt;br /&gt;
You can also disable the TinyMCE branding logo which appears at the bottom of the editor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====TinyMCE Premium====&lt;br /&gt;
TinyMCE Premium requires a paid subscription. Your API key is available on your [https://www.tiny.cloud/ Tiny Cloud] account page if you have purchased a subscription, or if you are on a free trial. &lt;br /&gt;
&lt;br /&gt;
You can enter the API key and enable specific premium plugins at &#039;&#039;Site administration &amp;gt; Plugins &amp;gt; Text editors &amp;gt; TinyMCE Premium&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
For TinyMCE premium features charging is done on &amp;quot;per request&amp;quot; basis (number of editor loads). You can make use of the capability &#039;Access TinyMCE Premium features&#039; (tiny/premium:accesspremium) (new in Moodle 4.4) to control which users can use premium features and in which context.&lt;br /&gt;
&lt;br /&gt;
The TinyMCE features that may be available to your Moodle site with a Premium subscription are:&lt;br /&gt;
&lt;br /&gt;
* Advanced Tables&lt;br /&gt;
* Advanced Typography&lt;br /&gt;
* Case Change&lt;br /&gt;
* Checklist&lt;br /&gt;
* Enhanced Image Editing&lt;br /&gt;
* Export&lt;br /&gt;
* Footnotes&lt;br /&gt;
* Format Painter&lt;br /&gt;
* Link Checker&lt;br /&gt;
* Page Embed&lt;br /&gt;
* Permanent Pen&lt;br /&gt;
* PowerPaste&lt;br /&gt;
* Spell Checker Pro&lt;br /&gt;
* Spelling Autocorrect&lt;br /&gt;
* Table of Contents&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You can learn more about these features on [https://www.tiny.cloud/tinymce/features/#productivity TinyMCE&#039;s website]. Please note that not all plugins listed on TinyMCE&#039;s website are currently available to Moodle users.&lt;br /&gt;
&lt;br /&gt;
=== Equation editor settings ===&lt;br /&gt;
[[File:Tiny - Equation editor settings.png|thumb]]&lt;br /&gt;
The equation editor has 4 tabs: Operators, Arrows, Greek symbols, and Advanced. The commands that are available on each tab and their order can be configured in &#039;&#039;Site administration &amp;gt; Plugins &amp;gt; Text editors &amp;gt; TinyMCE editor &amp;gt; Equation editor settings&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
For each group, the list of commands is shown in TeX format.&lt;br /&gt;
=== Tiny Record RTC plugin for Moodle ===&lt;br /&gt;
[[File:Tiny - RTC settings.png|thumb]]&lt;br /&gt;
Tiny fully supports media recording through. Internally, RecordRTC is utilised, an open source JavaScript library using WebRTC for audio and video recording. To configure its settings, navigate to &#039;&#039;Site administration &amp;gt; Plugins &amp;gt; Text editors &amp;gt; TinyMCE editor &amp;gt; RecordRTC&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
The following options have an impact on server resources, both in terms of bandwidth and disk usage:&lt;br /&gt;
* &#039;&#039;&#039;Allowed types&#039;&#039;&#039;: You can specify whether &#039;&#039;&#039;Audio and video&#039;&#039;&#039; recording are supported or &#039;&#039;&#039;Audio only&#039;&#039;&#039; or &#039;&#039;&#039;Video only&#039;&#039;&#039;. There are two capabilities to control access to the TinyMCE buttons: &#039;&#039;&#039;[[Capabilities/tiny/recordrtc:recordvideo]]&#039;&#039;&#039; and &#039;&#039;&#039;[[Capabilities/tiny/recordrtc:recordaudio]]&#039;&#039;&#039; &lt;br /&gt;
* &#039;&#039;&#039;Audio bitrate&#039;&#039;&#039; and &#039;&#039;&#039;Video bitrate&#039;&#039;&#039;: The lower the bitrates, the smaller the file sizes, and vice versa. The default bitrate for recorded audio (128000) should generate files of about 15 KB per minute; the default bitrate for recorded video (2500000) to files of approximately 20 MB per minute.&lt;br /&gt;
* &#039;&#039;&#039;Audio time limit in seconds&#039;&#039;&#039; and &#039;&#039;&#039;Video time limit in seconds&#039;&#039;&#039;: The default time limit is 2 minutes for audio and video recording. Again, the longer the maximum recording length, the bigger the resulting files. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Recordings are stored in subdirectories of &#039;&#039;$CFG-&amp;gt;dataroot&amp;gt;/filedir&#039;&#039;. Ensure &#039;&#039;post_max_size&#039;&#039; and &#039;&#039;upload_max_filesize&#039;&#039; are configured in line with your expected maximum recording sizes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[es:Editor TinyMCE]]&lt;br /&gt;
[[de:TinyMCE-Editor]]&lt;br /&gt;
[[fr:Éditeur TinyMCE]]&lt;/div&gt;</summary>
		<author><name>Michaelh2</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/501/en/index.php?title=TeX_notation_filter&amp;diff=149169</id>
		<title>TeX notation filter</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/501/en/index.php?title=TeX_notation_filter&amp;diff=149169"/>
		<updated>2024-08-14T05:59:42Z</updated>

		<summary type="html">&lt;p&gt;Michaelh2: /* Installing the binaries */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Filters}}&lt;br /&gt;
The TeX Filter is a core Moodle filter intended to allow one to convert tex expressions into GIF, PNG or SVG images. The filter relies on some additional binaries to accomplish this for expressions contained between appropriate tokens.  Where these binaries are not available,  Moodle provides for a fallback through the use of  Mimetex. Versions of MimeTex for Linux (glib2.3 32bit), Windows, Mac OS X and FreeBSD are included in the Moodle distribution. There are other technologies available for displaying Tex (see the section on [[Mathematics]] tools for a discussion.)  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: being based on binaries it requires the availability of three PHP program execution functions: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;exec&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shell_exec&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;system&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Methods and Usage ==&lt;br /&gt;
&lt;br /&gt;
To avoid confusion you should note that the TeX filter has two separate methods for converting the TeX notation to images. The preferred method is a collection of three binaries that you are responsible for installing (if they are not already present,  though many webhosts make these available) and configuring on your server. The filter settings page relates entirely to this method. If this fails for any reason the filter will fall back to a single binary - MimeTeX.  A number of different builds are included in the Moodle distribution for popular operating systems,  though Mimetex and its bigger brother, MathTex are easy enough to compile and install if you have systems administration experience.&lt;br /&gt;
&lt;br /&gt;
Before doing anything else, you need to go to &#039;&#039;Settings &amp;gt; Site administration &amp;gt; Plugins &amp;gt; Filters&#039;&#039; and activate the TeX Notation Filter. If you want to use the Algebra filter (another core filter) since the Algebra Filter is really only a &amp;quot;front end&amp;quot; to the Tex filter,  you should also turn on the Algebra filter.  For more information on the Algebra Filter see the [[Algebra filter]].&lt;br /&gt;
&lt;br /&gt;
Once the filter is turned on and properly configured you can make use of it by&lt;br /&gt;
including a TeX expression delimited by double-dollar signs. Example:&lt;br /&gt;
 &lt;br /&gt;
    $$ \sqrt{x + y} $$&lt;br /&gt;
&lt;br /&gt;
If this does not display properly, see the information on debugging.&lt;br /&gt;
&lt;br /&gt;
== MimeTeX ==&lt;br /&gt;
&lt;br /&gt;
Moodle may use a pre-built MimeTeX binary (located in the filters/tex directory) as a fallback if it can&#039;t properly access dvips, convert and latex binaries. There are a number of different versions for different operating systems. The TeX filter picks the appropriate binary for the detected host operating system (you will need to hack the script if your operating system is not included). Note that your web server needs to be set up with appropriate permissions for running binaries in that location. &lt;br /&gt;
&lt;br /&gt;
The [http://www.forkosh.com/mimetexmanual.html MimeTeX manual] is available but is arguably intended for persons with systems administration experience and does not specifically address the Moodle environment.&lt;br /&gt;
&lt;br /&gt;
You should only use MimeTeX if installing the full LaTeX system fails or the binaries are not available on your system. The results are not nearly as good.&lt;br /&gt;
&lt;br /&gt;
== Compatability with MathJax ==&lt;br /&gt;
&lt;br /&gt;
In Moodle 2.8 onwards, the TeX Notation and MathJaxloader filter may be used in combination.  If both filters are enabled on the page, images will be displayed first by the TeX notation filter, and the MathJax version of the TeX expression will replace a little while later when MathJax has finished loading and processing.  If both filters are available, a teacher may decide which to use in an activity by enabling one and disabling the other.&lt;br /&gt;
&lt;br /&gt;
== Site administration settings ==&lt;br /&gt;
&lt;br /&gt;
Location: TeX Notation settings link in &#039;&#039;Settings &amp;gt; Site administration &amp;gt; Plugins &amp;gt; Filters &amp;gt; Manage filters&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The TeX filter settings page are primarily intended to adjust the operation of the LaTeX renderer. The defaults for the three path settings are selected according to the detection of the operating system on which Moodle is running. These are simply suggested common values - Moodle does not check that the binaries actually exist at these locations. More recent versions of Moodle show a green tick or a red cross next to the path setting - this shows that the binary exists at that location (only). The settings have no effect on the operation of the MimeTex binary (used if any of these binaries are not found).&lt;br /&gt;
&lt;br /&gt;
==== Installing the binaries ====&lt;br /&gt;
&lt;br /&gt;
This depends on your platform, but for a typical install you are going to need a LaTeX implementation. On modern Linux implementations you should look for the &#039;texlive&#039; package (e.g. &#039;&#039;apt-get install texlive&#039;&#039;) although a Windows version is available (see [http://www.tug.org/texlive/doc/texlive-en/texlive-en.html Tex Live]). It is highly unlikely that you will have all these binaries as part of a standard install. If you cannot find texlive you may have to install LaTeX, Ghostscript and ImageMagick separately. While not endorsed by Moodle.org, a simple installation binary for Windows is [http://miktex.org/  MikTeX].  &lt;br /&gt;
&lt;br /&gt;
For security reasons, you should ensure shell escape is disabled (&#039;&#039;shell_escape = f&#039;&#039;) in your LaTeX configuration (if is enabled, this will be set to &amp;quot;t&amp;quot;). This is to prevent the risk of users being able to execute external commands. Note that this is usually disabled by default. (If this is set to &amp;quot;p&amp;quot; ie restricted mode, a predefined set of commands are allowed, if this is the desired behaviour, be extremely careful which commands are allowed given all users will have access to these).&lt;br /&gt;
&lt;br /&gt;
The filter settings page will try to guess the most likely location for the binary files depending on the detected platform. If correct, green ticks will appear against each setting. If red crosses appear you will need to check and modify the settings as required. A simple check is made to establish if the binaries exist at the given paths. A tick or a cross is displayed alongside each as a result. Note that this does not check that the application actually works, just that it is there.&lt;br /&gt;
&lt;br /&gt;
Some systems supply the fonts as separate packages. If you are having problems make sure you have all the fonts you need installed. You may need to track down an &#039;extra&#039; fonts package to get the required maths fonts.&lt;br /&gt;
&lt;br /&gt;
==== LaTeX preamble ====&lt;br /&gt;
&lt;br /&gt;
Enables the LaTeX preamble to be specified. The default should work for most users, but you may need to change it to support non-Latin character sets etc. Please see the LaTeX documentation for further details.&lt;br /&gt;
&lt;br /&gt;
==== Transparent colour ====&lt;br /&gt;
&lt;br /&gt;
This should be set to your normal text background colour. The default setting is #FFFFFF (i.e., white). &lt;br /&gt;
&lt;br /&gt;
==== Density ====&lt;br /&gt;
&lt;br /&gt;
This setting effects the size of the resulting image. The default setting is 120 pixels, and it produces an image of  reasonable quality, but for some complicated equations, this still may not be enough. It may be that anything less is not going to produce an image of sufficient quality but the image size can be controlled by the TeX encoding when the page is rendered.&lt;br /&gt;
&lt;br /&gt;
==== Path of &#039;&#039;latex&#039;&#039; binary ====&lt;br /&gt;
&lt;br /&gt;
Path to standard latex binary.&lt;br /&gt;
&lt;br /&gt;
On Unix based systems it is normally &amp;quot;/usr/bin/latex&amp;quot;. On a MacOS X, the path is &amp;quot;/usr/texbin/&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
In Windows, using MiKTeX, it is usually something like C:\texmf\miktex\bin\latex.exe&lt;br /&gt;
&lt;br /&gt;
==== Path of &#039;&#039;dvips&#039;&#039; binary ====&lt;br /&gt;
&lt;br /&gt;
Path to standard dvips binary - generally distributed as part of a LaTeX system.&lt;br /&gt;
&lt;br /&gt;
On Unix based systems it is normally &amp;quot;/usr/bin/dvips&amp;quot;. On a MacOS X, the path is &amp;quot;/usr/texbin/&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
On Windows using MikTeX is usually something like C:\texmf\miktex\bin\dvips.exe&lt;br /&gt;
&lt;br /&gt;
==== Path of &#039;&#039;convert&#039;&#039; binary ====&lt;br /&gt;
&lt;br /&gt;
Path to standard convert binary. It is necessary to produce GIF or PNG images from using the latex and dvips binaries. This is distributed as part of the Ghostscript system, or ImageMagick in Linux.&lt;br /&gt;
&lt;br /&gt;
On Unix based systems it is normally &amp;quot;/usr/bin/convert&amp;quot;. On a MacOS X, the path is &amp;quot;/usr/local/bin/&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
On a Windows-based PC the path is something like C:\Program Files\ImageMagick\convert.exe (for ImageMagick, but something else for GhostScript.)&lt;br /&gt;
&lt;br /&gt;
==== Path of &#039;&#039;dvisvgm&#039;&#039; binary ====&lt;br /&gt;
&lt;br /&gt;
This binary is used instead of convert to produce SVG images. This is distributed as part of TeXlive on Linux although it may be require the full or extra packages to be installed.&lt;br /&gt;
&lt;br /&gt;
On Unix based systems it is normally &amp;quot;/usr/bin/dvisvgm&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
On a Windows-based PC  a compiled binary is available from [http://dvisvgm.sourceforge.net/Downloads sourceforge] and can placed in the same directory with the latex binary.&lt;br /&gt;
&lt;br /&gt;
==== Path of &#039;&#039;mimetex&#039;&#039; binary ====&lt;br /&gt;
&lt;br /&gt;
If this is blank and the binaries above are missing or fail, the TeX filter will attempt to use a mimetex binary distributed with Moodle.  If you have installed mimetex on the server and would rather use it include the path here.&lt;br /&gt;
&lt;br /&gt;
== Debugging TeX filter ==&lt;br /&gt;
&lt;br /&gt;
The TeX filter has a debugging script (which will be much more helpful if you turn on [[Debugging]]) included that should help if you are having problems. The URL will be as follows...&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;nowiki&amp;gt;http://your.moodle.path/filter/tex/texdebug.php&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can either enter this path explicitly or with appropriate role permissions the TeX images (or more likely incorrectly rendered text, if you need debugging) will link to this. On more recent versions of Moodle you are &#039;&#039;required&#039;&#039; to be logged in as an Administrator to access this facility.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [http://academy.edulabs.org/mod/glossary/print.php?id=764&amp;amp;mode&amp;amp;hook=ALL&amp;amp;sortkey&amp;amp;sortorder&amp;amp;offset=0&amp;amp;pagelimit=10  TeX Filter Glossary] - a [[glossary]] you can add to your course which details usage of the supported [[TeX notation]].&lt;br /&gt;
* [http://www.latex-project.org/ LaTeX] - the LaTeX document preparation system.&lt;br /&gt;
* [http://www.ghostscript.com/ ghostscript] - required to render the image&lt;br /&gt;
* [http://www.forkosh.com/mimetexmanual.html MimeTeX Manual] - Default TeX notation manual&lt;br /&gt;
* [http://www.miktex.org/ MikTeX] - LaTeX for Windows systems&lt;br /&gt;
* [http://www.imagemagick.org/script/index.php ImageMagick] - required to render images for Windows&lt;br /&gt;
* [[Using TeX Notation]]&lt;br /&gt;
* [[Advanced Maths Tools]] for Moodle 2.x - SEE - The Next Generation of TeX Tools&lt;br /&gt;
* [https://moodle.org/mod/forum/view.php?id=752 Mathematics tools forum] on moodle.org&lt;br /&gt;
&lt;br /&gt;
[[Category:Site administration]]&lt;br /&gt;
[[Category:Mathematics]]&lt;br /&gt;
&lt;br /&gt;
[[de:TeX-Notation]]&lt;br /&gt;
[[es:Filtro de notación TeX]]&lt;/div&gt;</summary>
		<author><name>Michaelh2</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/501/en/index.php?title=TinyMCE_editor&amp;diff=148770</id>
		<title>TinyMCE editor</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/501/en/index.php?title=TinyMCE_editor&amp;diff=148770"/>
		<updated>2024-06-13T03:04:26Z</updated>

		<summary type="html">&lt;p&gt;Michaelh2: /* What is TinyMCE? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Editing text}}&lt;br /&gt;
==What is TinyMCE?==&lt;br /&gt;
TinyMCE is a powerful rich-text editor that allows users to create formatted content within a user-friendly interface.&lt;br /&gt;
&lt;br /&gt;
The popular editor is the default editor in all sites from Moodle 4.4 onwards. In Moodle 4.2 and 4.3, TinyMCE is the default editor for new installations only, but can be made default for upgraded sites from &#039;&#039;Administration &amp;gt; Site administration &amp;gt; Plugins &amp;gt; Text editors &amp;gt; Manage editors&#039;&#039;. From that page, text editors can be enabled, disabled, ordered by priority and the default editor can also be configured. If more than one text editor is enabled, users can select their preferred editor via their preferences page: &#039;&#039;User menu &amp;gt; Preferences &amp;gt; Editor preferences.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{MediaPlayer | url = https://youtu.be/Q-D6nWSusrY | desc = Overview of TinyMCE}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tiny Toolbar ==&lt;br /&gt;
The following buttons are available on the toolbar (not all buttons might show in all scenarios:)&lt;br /&gt;
[[File:latestTiny.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The available buttons are as follows:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!#&lt;br /&gt;
!Button&lt;br /&gt;
!#&lt;br /&gt;
!Button&lt;br /&gt;
!#&lt;br /&gt;
!Button&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Undo and Redo&lt;br /&gt;
|10&lt;br /&gt;
|No auto-link &lt;br /&gt;
|18&lt;br /&gt;
|Numbered list&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Bold and Italic&lt;br /&gt;
|11&lt;br /&gt;
|Full screen &lt;br /&gt;
|19&lt;br /&gt;
|Equation editor&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Insert image/modify properties&lt;br /&gt;
|12&lt;br /&gt;
|Align left&lt;br /&gt;
|20&lt;br /&gt;
|Toggle second toolbar (if present)&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Insert audio/video/modify properties&lt;br /&gt;
|13&lt;br /&gt;
|Align centre&lt;br /&gt;
|21&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|[[Audio|Record audio]]&lt;br /&gt;
|14&lt;br /&gt;
|Align right&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|[[Video|Record video]]&lt;br /&gt;
|15&lt;br /&gt;
|L/R and R/L directionality&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|Insert H5P / modify H5P properties&lt;br /&gt;
|16&lt;br /&gt;
|Decrease/increase indent&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|8&lt;br /&gt;
|Link&lt;br /&gt;
|17&lt;br /&gt;
|Bullets list&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|9&lt;br /&gt;
|Unlink&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
Some button have pre-requisites to display, for instance, the equation editor button will only show if either the [[MathJax filter|MathJax]] or the [[TeX notation filter|TeX notation]] filters are enabled (in &#039;&#039;Site administration &amp;gt; Plugins &amp;gt; Filters &amp;gt; Manage filters&#039;&#039;), while the H5P option will only show if the &#039;&#039;tiny/h5p:addembed&#039;&#039; capability has been granted.&lt;br /&gt;
&lt;br /&gt;
== Tiny features ==&lt;br /&gt;
[[File:Tiny - Insert menu.png|thumb]]&lt;br /&gt;
The following features are available from the &#039;&#039;&#039;Insert&#039;&#039;&#039; menu:&lt;br /&gt;
=== Insert / Edit image ===&lt;br /&gt;
The easiest way to insert an image is via drag&#039;n&#039;drop. Alternatively, you can use the &#039;&#039;Insert image&#039;&#039; tool, which gives you more control over some image properties:&lt;br /&gt;
* &#039;&#039;&#039;URL&#039;&#039;&#039;: The (internal or external) address of the image. You can either enter a URL manually or select an image from the repository browser, which adds the URL automatically.&lt;br /&gt;
*&#039;&#039;&#039;Description&#039;&#039;&#039;: Unless the image is labelled decorative only, a description must be provided for screenreader users&lt;br /&gt;
*&#039;&#039;&#039;Size&#039;&#039;&#039;: Initially, the image&#039;s width and height are set. These can be adjusted to fit your text. When the &#039;&#039;Auto size&#039;&#039; checkbox remains ticked, the image&#039;s width-height ratio stays intact.&lt;br /&gt;
* &#039;&#039;&#039;Alignment&#039;&#039;&#039;: Options are &#039;&#039;Top&#039;&#039;, &#039;&#039;Middle&#039;&#039;, and &#039;&#039;Bottom&#039;&#039;.&lt;br /&gt;
[[File:Tiny - Image.png|border|center|frameless|450x450px]]&lt;br /&gt;
To modify image properties once it has been added to your text, select the image and press the &#039;&#039;Image&#039;&#039; button on the mini toolbar that shows up.&lt;br /&gt;
=== Insert / Edit Link ===&lt;br /&gt;
When inserting or editing a link to another (internal or external) page, you can provide the following settings:&lt;br /&gt;
* &#039;&#039;&#039;URL&#039;&#039;&#039;: The address of the page to navigate to. If left empty, the option &#039;&#039;&amp;lt;top&amp;gt;&#039;&#039; and &#039;&#039;&amp;lt;bottom&amp;gt;&#039;&#039; are available&lt;br /&gt;
* &#039;&#039;&#039;Text to display&#039;&#039;&#039;: The text that is shown in the text, represented as a link&lt;br /&gt;
* &#039;&#039;&#039;Title&#039;&#039;&#039;: The text shown when hovering over the link&lt;br /&gt;
* &#039;&#039;&#039;Browse repositories&#039;&#039;&#039;: Upload a file to link to.&lt;br /&gt;
* &#039;&#039;&#039;Open link in...&#039;&#039;&#039;: The page can either be opened in the &#039;&#039;&#039;Current Window&#039;&#039;&#039; or a &#039;&#039;&#039;New window&#039;&#039;&#039;&lt;br /&gt;
[[File:Tiny - Link.png|border|center|frameless|450x450px]]&lt;br /&gt;
=== Insert / Edit Multimedia ===&lt;br /&gt;
To insert existing audio or videos clips, the TinyMCE editor supports Moodle standard [[Media embedding|Media embedding interface]]. &lt;br /&gt;
[[File:Tiny - Audio &amp;amp; Video.png|thumb]]&lt;br /&gt;
=== Record audio and video ===&lt;br /&gt;
TinyMCE lets users record [[audio]] and [[video]] clips which will attach to the text once recorded. Each recording comprises three steps:&lt;br /&gt;
# &#039;&#039;&#039;Start recording&#039;&#039;&#039;: when ready, press the &#039;&#039;Start recording&#039;&#039; button&lt;br /&gt;
# &#039;&#039;&#039;Stop recording&#039;&#039;&#039;: when completed, press the &#039;&#039;Stop recording&#039;&#039; button&lt;br /&gt;
# &#039;&#039;&#039;Review recording&#039;&#039;&#039;: you can listen to or watch the recording via the provided controls. Either attach the clip to your text or record it again.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The maximum length and quality (bitrate) can be [[TinyMCE editor#Tiny Record RTC plugin for Moodle|configured]] at admin level.&lt;br /&gt;
=== Insert / Edit code sample ===&lt;br /&gt;
The Tiny editor lets you insert and embed syntax color highlighted code snippets into the editable area.&lt;br /&gt;
[[File:Tiny - Code Sample.png|border|center|frameless|600x600px]]&lt;br /&gt;
While you can select the (programming) language at the top, it doesn&#039;t have any impact on the way the code is displayed.&lt;br /&gt;
&lt;br /&gt;
Tiny also supports formatting of code elements (&#039;&#039;Format -&amp;gt; Code&#039;&#039;), which changes the selected text to the internally defined &amp;lt;code&amp;gt;code style&amp;lt;/code&amp;gt;.&lt;br /&gt;
=== Insert Table ===&lt;br /&gt;
Tiny comes with comprehensive table management functionality to handle grid-like structures in your text. In addition to the Insert table menu item, an entire main menu has been dedicated to tables.&lt;br /&gt;
[[File:Tiny - Table.png|border|center|frameless|450x450px]]&lt;br /&gt;
Once a table has been added, you can customise individual cells, row, columns, and the properties of the entire table. The following self-explanatory menu items are available, all supporting standard HTML table options:&lt;br /&gt;
* Cell&lt;br /&gt;
** Cell properties&lt;br /&gt;
** Merge cells&lt;br /&gt;
** Split cells&lt;br /&gt;
* Row&lt;br /&gt;
** Insert row before&lt;br /&gt;
** Insert row after&lt;br /&gt;
** Delete row&lt;br /&gt;
** Row properties&lt;br /&gt;
** Cut row&lt;br /&gt;
** Copy row&lt;br /&gt;
** Paste row before&lt;br /&gt;
** Paste row after&lt;br /&gt;
* Column&lt;br /&gt;
** Insert column before&lt;br /&gt;
** Insert column after&lt;br /&gt;
** Delete column&lt;br /&gt;
** Cut column&lt;br /&gt;
** Copy column&lt;br /&gt;
** Paste column before&lt;br /&gt;
** Paste column after&lt;br /&gt;
* Table properties&lt;br /&gt;
* Delete table&lt;br /&gt;
[[File:Tiny - Table operations.png|border|center|frameless|600x600px]]&lt;br /&gt;
The table editor also shows context-sensitive menus when editing different table elements.&lt;br /&gt;
=== Insert special character ===&lt;br /&gt;
The special character picker lets you insert letters and symbols (a map of special unicode characters) that are difficult or impossible to access via your keyboard. You can either search by keyword and / or browse categories.&lt;br /&gt;
[[File:Tiny - Special character.png|border|center|frameless|450x450px]]&lt;br /&gt;
=== Insert Emojis ===&lt;br /&gt;
Bring a smiley to your content: The emoji picker lets you insert pictograms. You can either search by keyword and / or browse categories.&lt;br /&gt;
[[File:Tiny - Emojis.png|border|center|frameless|450x450px]]&lt;br /&gt;
=== Insert HTML elements ===&lt;br /&gt;
The following 4 HTML elements are supported by TinyMCE via menus:&lt;br /&gt;
* &#039;&#039;&#039;Insert horizontal line&#039;&#039;&#039;: Adds an HTML line to your text.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Insert page break&#039;&#039;&#039;: Adds a page break (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) to your text.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Insert nonbreaking space&#039;&#039;&#039;: Add an nonbreaking space (&amp;lt;code&amp;gt;&amp;amp;amp;nbsp;&amp;lt;/code&amp;gt;) at the current cursor location.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Insert anchor&#039;&#039;&#039;: Insert anchors (sometimes referred to as a bookmarks) to your text. Users will be prompted via a dialog box to enter a string. The string will be inserted into the HTML as an anchor id at the location of the cursor. For example, a user places their cursor at the beginning of &amp;quot;Moodle&amp;quot; and clicks on the anchor button and enters &amp;quot;start&amp;quot; in the dialog box. The resulting HTML will take the form of &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;p&amp;gt;&amp;lt;a id=&amp;quot;start&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/nowiki&amp;gt;Moodle&amp;lt;nowiki&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
=== Insert date/time ===&lt;br /&gt;
The Insert date/time options lets you easily insert the current date and/or time into the editable area at the cursor insertion point.&lt;br /&gt;
[[File:Tiny - DateTime.png|border|center|frameless]]&lt;br /&gt;
The available format options depend on the selected language. &lt;br /&gt;
[[File:Tiny - Equation editor.png|thumb]]&lt;br /&gt;
=== Equation editor ===&lt;br /&gt;
If either the [[MathJax filter|MathJax]] or the [[TeX notation filter|TeX]] filters are enabled (in &#039;&#039;Site administration &amp;gt; Plugins &amp;gt; Filters &amp;gt; Manage filters&#039;&#039;) then the &#039;&#039;Insert equation&#039;&#039; option is provided in the TinyMCE editor for launching the equation editor.&lt;br /&gt;
&lt;br /&gt;
Internally, the equation editor uses the [https://docs.moodle.org/400/en/TeX_notation_filter TeX notation] which can either be entered manually and / or interactively. The interactive elements are grouped into 4 categories (Operators, Arrows, Greek symbols, and Advanced). The content of each tab can be configured via the [[Equation editor settings]].&lt;br /&gt;
&lt;br /&gt;
At the bottom of the editor, a preview is shown.&lt;br /&gt;
=== Configure H5P content ===&lt;br /&gt;
You can embed [[H5P]] content via the &#039;&#039;Configure H5P content&#039;&#039; menu as follows:&lt;br /&gt;
# Browse the Content bank repository and select an H5P file&lt;br /&gt;
# Choose to either make a copy of the file or create a shortcut&lt;br /&gt;
# Optionally, configure the H5P options (Allow download, Embed button, Copyright button)&lt;br /&gt;
# Click the button &#039;Select this file&#039;&lt;br /&gt;
# Click &#039;Insert H5P&#039;These steps will automatically enter the internal address in the H5P URL field. Alternatively, you can enter any internal or external H5P URL manually.&lt;br /&gt;
Note: If you create a shortcut to the file, you can edit it in the Content bank and any activities with a link to the file will be updated.&lt;br /&gt;
== Tiny tools ==&lt;br /&gt;
[[File:Tiny - Tools menu.png|thumb]]&lt;br /&gt;
The following tools are available in vie the &#039;&#039;&#039;Tools&#039;&#039;&#039; menu:&lt;br /&gt;
=== View source code ===&lt;br /&gt;
The source code pop up window displays the code of the page, usually HTML or JS. The code can be modified in plain text; once the window is closed, any changes will be reflected in the WYSIWYG mode.&lt;br /&gt;
[[File:Tiny - Source code.png|center|frameless|900x900px]]&lt;br /&gt;
=== Word count ===&lt;br /&gt;
The word pop up windows displays the number of words and the number of characters (with and without spaces) of the entire document and the selected text, respectively.&lt;br /&gt;
[[File:Tiny - Word count.png|border|center|frameless|600x600px|alt=]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The number of words are also shown in the editor&#039;s footer.&lt;br /&gt;
=== Accessibility checker ===&lt;br /&gt;
The automated [[accessibility]] checker checks for some common errors in the text. These are usually elements in the way the text is constructed that can prevent all users from having equal access to information and functionality. The list of problems that the accessibility checker looks for is:&lt;br /&gt;
* Images with missing or empty alt text (unless they have the presentation role)&lt;br /&gt;
* Contrast of font colour and background colour meets [https://en.wikipedia.org/wiki/Web_Content_Accessibility_Guidelines WCAG AA guidelines]&lt;br /&gt;
* Long blocks of text are sufficiently broken up into headings&lt;br /&gt;
* All tables require captions&lt;br /&gt;
* Tables should not contain merged cells as they are difficult to navigate with screen readers&lt;br /&gt;
* All tables should contain row or column headers&lt;br /&gt;
=== Media Manager ===&lt;br /&gt;
The media manager shows all media files that have been embedded in the text. &lt;br /&gt;
&lt;br /&gt;
The top part of the media manager shows the familiar file management element where you can add, download, and delete attached files.&lt;br /&gt;
&lt;br /&gt;
Files that have been attached and deleted again are shown at the bottom half of the screen.&lt;br /&gt;
[[File:Tiny - Media manager.png|border|center|frameless|600x600px]]&lt;br /&gt;
== Keyboard shortcuts ==&lt;br /&gt;
The following keyboard shortcuts will work in the Tiny text editor in most browsers. Note that for many of these commands to work you need to either click in the text editor or select content in the text editor.&lt;br /&gt;
=== Editor shortcuts ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Windows Command&lt;br /&gt;
!Mac Command&lt;br /&gt;
!Function&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + Shift + f&lt;br /&gt;
|⌘ + Shift + f&lt;br /&gt;
|Full screen toggle&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + c&lt;br /&gt;
|⌘ + c&lt;br /&gt;
|Copy&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + v&lt;br /&gt;
|⌘ + v&lt;br /&gt;
|Paste&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + Shift + v&lt;br /&gt;
|⌘ + Shift + v&lt;br /&gt;
|Paste without formatting (very useful)&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + x&lt;br /&gt;
|⌘ + x&lt;br /&gt;
|Cut&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + z&lt;br /&gt;
|⌘ + z&lt;br /&gt;
|Undo&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + y&lt;br /&gt;
|⌘ + y&lt;br /&gt;
|Redo&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + a&lt;br /&gt;
|⌘ + a&lt;br /&gt;
|Select all&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + f&lt;br /&gt;
|⌘ + f&lt;br /&gt;
|Find and replace&lt;br /&gt;
|-&lt;br /&gt;
|F3&lt;br /&gt;
|&amp;lt;s&amp;gt;F3&amp;lt;/s&amp;gt;&lt;br /&gt;
|Find next&lt;br /&gt;
|-&lt;br /&gt;
|Shift + F3&lt;br /&gt;
|&amp;lt;s&amp;gt;Shift + F3&amp;lt;/s&amp;gt;&lt;br /&gt;
|Find previous&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + b&lt;br /&gt;
|⌘ + b&lt;br /&gt;
|Bold&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + i&lt;br /&gt;
|⌘ + i&lt;br /&gt;
|Italics&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + u&lt;br /&gt;
|⌘ + u&lt;br /&gt;
|Underline&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + k&lt;br /&gt;
|⌘ + k&lt;br /&gt;
|Insert/edit link&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + Right arrow&lt;br /&gt;
|Option + Right arrow&lt;br /&gt;
|Move to the end of the next word&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + Left arrow&lt;br /&gt;
|Option + Left arrow&lt;br /&gt;
|Move to the end of the previous word&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + Shift + Right arrow&lt;br /&gt;
|Shift + Option + Right arrow&lt;br /&gt;
|Select the next word or letter&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + Shift + Left arrow&lt;br /&gt;
|Shift + Option + Left arrow&lt;br /&gt;
|Select the previous word or letter&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + Shift + Home&lt;br /&gt;
|&amp;lt;s&amp;gt;⌘ + Shift + Home&amp;lt;/s&amp;gt;&lt;br /&gt;
|Select from the cursor to the beginning of the page&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + Shift + End&lt;br /&gt;
|&amp;lt;s&amp;gt;⌘ + Shift + End&amp;lt;/s&amp;gt;&lt;br /&gt;
|Select from the cursor to the end of the page&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + Home&lt;br /&gt;
|⌘ + Up arrow&lt;br /&gt;
|Move to the beginning of the page&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + End&lt;br /&gt;
|⌘ + Down arrow&lt;br /&gt;
|Move to the end of the page&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + Backspace&lt;br /&gt;
|&amp;lt;s&amp;gt;⌘ + Backspace&amp;lt;/s&amp;gt;&lt;br /&gt;
|Delete word or letter to the left&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + Delete&lt;br /&gt;
|&amp;lt;s&amp;gt;⌘ + Delete&amp;lt;/s&amp;gt;&lt;br /&gt;
|Delete word or letter to the right&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + P&lt;br /&gt;
|⌘ + P&lt;br /&gt;
|Print&lt;br /&gt;
|-&lt;br /&gt;
|Alt+Shift+1&lt;br /&gt;
|Ctrl+Option+1&lt;br /&gt;
|Header 1&lt;br /&gt;
|-&lt;br /&gt;
|Alt+Shift+2&lt;br /&gt;
|Ctrl+Option+2&lt;br /&gt;
|Header 2&lt;br /&gt;
|-&lt;br /&gt;
|Alt+Shift+3&lt;br /&gt;
|Ctrl+Option+3&lt;br /&gt;
|Header 3&lt;br /&gt;
|-&lt;br /&gt;
|Alt+Shift+4&lt;br /&gt;
|Ctrl+Option+4&lt;br /&gt;
|Header 4&lt;br /&gt;
|-&lt;br /&gt;
|Alt+Shift+5&lt;br /&gt;
|Ctrl+Option+5&lt;br /&gt;
|Header 5&lt;br /&gt;
|-&lt;br /&gt;
|Alt+Shift+6&lt;br /&gt;
|Ctrl+Option+6&lt;br /&gt;
|Header 6&lt;br /&gt;
|-&lt;br /&gt;
|Alt+Shift+7&lt;br /&gt;
|Ctrl+Option+7&lt;br /&gt;
|Paragraph&lt;br /&gt;
|-&lt;br /&gt;
|Alt+Shift+8&lt;br /&gt;
|Ctrl+Option+8&lt;br /&gt;
|Div&lt;br /&gt;
|-&lt;br /&gt;
|Alt+Shift+9&lt;br /&gt;
|Ctrl+Option+9&lt;br /&gt;
|Address&lt;br /&gt;
|-&lt;br /&gt;
|Alt+0&lt;br /&gt;
|Option+0&lt;br /&gt;
|Help dialogue (list of shortcuts)&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl and +&lt;br /&gt;
|⌘ and +&lt;br /&gt;
|Zoom in (not specific to the editor, but very useful)&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl and -&lt;br /&gt;
|⌘ and -&lt;br /&gt;
|Zoom out (not specific to the editor, but very useful)&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl and 0&lt;br /&gt;
|⌘ and 0&lt;br /&gt;
|Reset zoom (not specific to the editor, but very useful)&lt;br /&gt;
|-&lt;br /&gt;
|Double-click&lt;br /&gt;
|Double-click&lt;br /&gt;
|Select word&lt;br /&gt;
|-&lt;br /&gt;
|Triple-click&lt;br /&gt;
|Triple-click&lt;br /&gt;
|Select line&lt;br /&gt;
|}&lt;br /&gt;
=== Keyboard navigation ===&lt;br /&gt;
The sections of the outer UI of the editor - the menubar, toolbar, sidebar and footer - are all keyboard navigable. &lt;br /&gt;
==== Activating keyboard navigation ====&lt;br /&gt;
There are multiple ways to activate keyboard navigation:&lt;br /&gt;
* Focus the menubar: Alt + F9 (Windows) or ⌥F9 (MacOS)&lt;br /&gt;
* Focus the toolbar: Alt + F10 (Windows) or ⌥F10 (MacOS)&lt;br /&gt;
* Focus the footer: Alt + F11 (Windows) or ⌥F11 (MacOS)&lt;br /&gt;
Focusing the menubar or toolbar will start keyboard navigation at the first item in the menubar or toolbar, which will be highlighted with a gray background. Focusing the footer will start keyboard navigation at the first item in the element path, which will be highlighted with an underline.&lt;br /&gt;
==== Moving between UI sections ====&lt;br /&gt;
When keyboard navigation is active, pressing tab will move the focus to the next major section of the UI, where applicable. These sections are:&lt;br /&gt;
* the menubar&lt;br /&gt;
* each group of the toolbar&lt;br /&gt;
* the sidebar&lt;br /&gt;
* the element path in the footer&lt;br /&gt;
* the wordcount toggle button in the footer&lt;br /&gt;
* the branding link in the footer&lt;br /&gt;
* the editor resize handle in the footer&lt;br /&gt;
Pressing shift + tab will move backwards through the same sections, except when moving from the footer to the toolbar. Focusing the element path then pressing shift + tab will move focus to the first toolbar group, not the last.&lt;br /&gt;
==== Moving within UI sections ====&lt;br /&gt;
Keyboard navigation within UI sections can usually be achieved using the left and right arrow keys. This includes:&lt;br /&gt;
* moving between menus in the menubar&lt;br /&gt;
* moving between buttons in a toolbar group&lt;br /&gt;
* moving between items in the element path&lt;br /&gt;
In all these UI sections, keyboard navigation will cycle within the section. For example, focusing the last button in a toolbar group then pressing right arrow will move focus to the first item in the same toolbar group.&lt;br /&gt;
==== Executing buttons ====&lt;br /&gt;
To execute a button, navigate the selection to the desired button and hit space or enter.&lt;br /&gt;
==== Opening, navigating and closing menus ====&lt;br /&gt;
When focusing a menubar button or a toolbar button with a menu, pressing space, enter or down arrow will open the menu. When the menu opens the first item will be selected. To move up or down the menu, press the up or down arrow key respectively. This is the same for submenus, which can also be opened and closed using the left and right arrow keys.&lt;br /&gt;
&lt;br /&gt;
To close any active menu, hit the escape key. When a menu is closed the selection will be restored to its previous selection. This also works for closing submenus.&lt;br /&gt;
==== Context toolbars and menus ====&lt;br /&gt;
To focus an open context toolbar such as the table context toolbar, press Ctrl + F9 (Windows) or ⌃F9 (MacOS).&lt;br /&gt;
&lt;br /&gt;
Context toolbar navigation is the same as toolbar navigation, and context menu navigation is the same as standard menu navigation.&lt;br /&gt;
==== Dialog navigation ====&lt;br /&gt;
There are two types of dialog UIs in TinyMCE: tabbed dialogs and non-tabbed dialogs.&lt;br /&gt;
&lt;br /&gt;
When a non-tabbed dialog is opened, the first interactive component in the dialog will be focused. Users can navigate between interactive components by pressing tab. This includes any footer buttons. Navigation will cycle back to the first dialog component if tab is pressed while focusing the last component in the dialog. Pressing shift + tab will navigate backwards.&lt;br /&gt;
&lt;br /&gt;
When a tabbed dialog is opened, the first button in the tab menu is focused. Pressing tab will navigate to the first interactive component in that tab, and will cycle through the tab&#039;s components, the footer buttons, then back to the tab button. To switch to another tab, focus the tab button for the current tab, then use the arrow keys to cycle through the tab buttons.&lt;br /&gt;
==== Accessibility shortcuts ====&lt;br /&gt;
This is a list of available keyboard shortcuts within the editor user interface.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Windows Command&lt;br /&gt;
!Mac Command&lt;br /&gt;
!Function&lt;br /&gt;
|-&lt;br /&gt;
|Enter / Spacebar&lt;br /&gt;
|Enter / Spacebar&lt;br /&gt;
|Execute command&lt;br /&gt;
|-&lt;br /&gt;
|Tab&lt;br /&gt;
|Tab&lt;br /&gt;
|Focus on next UI Element(such as: Menu bar, Toolbar, Toolbar Group, Status Bar Item)&lt;br /&gt;
|-&lt;br /&gt;
|Shift+Tab&lt;br /&gt;
|Shift+Tab&lt;br /&gt;
|Focus on previous UI Element(such as: Menu bar, Toolbar, Toolbar Group, Status Bar Item)&lt;br /&gt;
|-&lt;br /&gt;
|Right Arrow / Down Arrow&lt;br /&gt;
|Right Arrow / Down Arrow&lt;br /&gt;
|Focus next Control(such as: toolbar button, menu, or menu item)&lt;br /&gt;
|-&lt;br /&gt;
|Left Arrow / Up Arrow&lt;br /&gt;
|Left Arrow / Up Arrow&lt;br /&gt;
|Focus previous Control(such as: toolbar button, menu, or menu item)&lt;br /&gt;
|-&lt;br /&gt;
|Down Arrow / Spacebar&lt;br /&gt;
|Down Arrow / Spacebar&lt;br /&gt;
|Open menu or toolbar menu button&lt;br /&gt;
|-&lt;br /&gt;
|Spacebar&lt;br /&gt;
|Spacebar&lt;br /&gt;
|Open group toolbar button&lt;br /&gt;
|-&lt;br /&gt;
|Down Arrow&lt;br /&gt;
|Down Arrow&lt;br /&gt;
|Open split toolbar button&lt;br /&gt;
|-&lt;br /&gt;
|Shift+Enter&lt;br /&gt;
|Shift+Enter&lt;br /&gt;
|Open the popup menu on split toolbar buttons&lt;br /&gt;
|-&lt;br /&gt;
|Right Arrow&lt;br /&gt;
|Right Arrow&lt;br /&gt;
|Open submenu&lt;br /&gt;
|-&lt;br /&gt;
|Left Arrow / Esc&lt;br /&gt;
|Left Arrow / Esc&lt;br /&gt;
|Close submenu&lt;br /&gt;
|-&lt;br /&gt;
|Esc&lt;br /&gt;
|Esc&lt;br /&gt;
|Close dialog&lt;br /&gt;
|-&lt;br /&gt;
|Esc&lt;br /&gt;
|Esc&lt;br /&gt;
|Close menu&lt;br /&gt;
|-&lt;br /&gt;
|Esc&lt;br /&gt;
|Esc&lt;br /&gt;
|Move focus back to editor body&lt;br /&gt;
|}&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: Browsers and Screen Readers provide additional shortcuts within the editor context.&lt;br /&gt;
==Site administration settings==&lt;br /&gt;
=== General settings ===&lt;br /&gt;
From &#039;&#039;Site administration &amp;gt; Plugins &amp;gt; Text editors &amp;gt; TinyMCE editor&#039;&#039; you can disable and enable certain settings, for example the Tiny HTML formatter, Tiny no-auto link and access the setting for the paid service TinyMCE Premium.&lt;br /&gt;
&lt;br /&gt;
You can also disable the TinyMCE branding logo which appears at the bottom of the editor.&lt;br /&gt;
&lt;br /&gt;
====TinyMCE Premium====&lt;br /&gt;
TinyMCE Premium requires a paid subscription. Your API key is available on your [https://www.tiny.cloud/ Tiny Cloud] account page if you have purchased a subscription, or if you are on a free trial. Enter the API key from Site administration &amp;gt; Plugins &amp;gt; Text editors &amp;gt; TinyMCE Premium.&lt;br /&gt;
&lt;br /&gt;
For TinyMCE premium features charging is done on &amp;quot;per request&amp;quot; basis (number of editor loads). You can make use of the capability &#039;Access TinyMCE Premium features&#039; (tiny/premium:accesspremium) (new in Moodle 4.4) to control which users can use premium features and in which context.&lt;br /&gt;
&lt;br /&gt;
The TinyMCE features that may be available to your Moodle site with a Premium subscription are:&lt;br /&gt;
&lt;br /&gt;
* Advanced Tables&lt;br /&gt;
* Advanced Typography&lt;br /&gt;
* Case Change&lt;br /&gt;
* Checklist&lt;br /&gt;
* Enhanced Image Editing&lt;br /&gt;
* Export&lt;br /&gt;
* Footnotes&lt;br /&gt;
* Format Painter&lt;br /&gt;
* Link Checker&lt;br /&gt;
* Page Embed&lt;br /&gt;
* Permanent Pen&lt;br /&gt;
* PowerPaste&lt;br /&gt;
* Spell Checker Pro&lt;br /&gt;
* Spelling Autocorrect&lt;br /&gt;
* Table of Contents&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You can learn more about these features on [https://www.tiny.cloud/tinymce/features/#productivity TinyMCE&#039;s website]. Please note that not all plugins listed on TinyMCE&#039;s website are currently available to Moodle users.&lt;br /&gt;
&lt;br /&gt;
=== Equation editor settings ===&lt;br /&gt;
[[File:Tiny - Equation editor settings.png|thumb]]&lt;br /&gt;
The equation editor has 4 tabs: Operators, Arrows, Greek symbols, and Advanced. The commands that are available on each tab and their order can be configured in &#039;&#039;Site administration &amp;gt; Plugins &amp;gt; Text editors &amp;gt; TinyMCE editor &amp;gt; Equation editor settings&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
For each group, the list of commands is shown in TeX format.&lt;br /&gt;
=== Tiny Record RTC plugin for Moodle ===&lt;br /&gt;
[[File:Tiny - RTC settings.png|thumb]]&lt;br /&gt;
Tiny fully supports media recording through. Internally, RecordRTC is utilised, an open source JavaScript library using WebRTC for audio and video recording. To configure its settings, navigate to &#039;&#039;Site administration &amp;gt; Plugins &amp;gt; Text editors &amp;gt; TinyMCE editor &amp;gt; RecordRTC&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
The following options have an impact on server resources, both in terms of bandwidth and disk usage:&lt;br /&gt;
* &#039;&#039;&#039;Allowed types&#039;&#039;&#039;: You can specify whether &#039;&#039;&#039;Audio and video&#039;&#039;&#039; recording are supported or &#039;&#039;&#039;Audio only&#039;&#039;&#039; or &#039;&#039;&#039;Video only&#039;&#039;&#039;. There are two capabilities to control access to the TinyMCE buttons: &#039;&#039;&#039;[[Capabilities/tiny/recordrtc:recordvideo]]&#039;&#039;&#039; and &#039;&#039;&#039;[[Capabilities/tiny/recordrtc:recordaudio]]&#039;&#039;&#039; &lt;br /&gt;
* &#039;&#039;&#039;Audio bitrate&#039;&#039;&#039; and &#039;&#039;&#039;Video bitrate&#039;&#039;&#039;: The lower the bitrates, the smaller the file sizes, and vice versa. The default bitrate for recorded audio (128000) should generate files of about 15 KB per minute; the default bitrate for recorded video (2500000) to files of approximately 20 MB per minute.&lt;br /&gt;
* &#039;&#039;&#039;Audio time limit in seconds&#039;&#039;&#039; and &#039;&#039;&#039;Video time limit in seconds&#039;&#039;&#039;: The default time limit is 2 minutes for audio and video recording. Again, the longer the maximum recording length, the bigger the resulting files. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Recordings are stored in subdirectories of &#039;&#039;$CFG-&amp;gt;dataroot&amp;gt;/filedir&#039;&#039;. Ensure &#039;&#039;post_max_size&#039;&#039; and &#039;&#039;upload_max_filesize&#039;&#039; are configured in line with your expected maximum recording sizes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[es:Editor TinyMCE]]&lt;br /&gt;
[[de:TinyMCE-Editor]]&lt;br /&gt;
[[fr:Éditeur TinyMCE]]&lt;/div&gt;</summary>
		<author><name>Michaelh2</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/501/en/index.php?title=TinyMCE_editor&amp;diff=148768</id>
		<title>TinyMCE editor</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/501/en/index.php?title=TinyMCE_editor&amp;diff=148768"/>
		<updated>2024-06-13T02:52:58Z</updated>

		<summary type="html">&lt;p&gt;Michaelh2: /* What is TinyMCE? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Editing text}}&lt;br /&gt;
==What is TinyMCE?==&lt;br /&gt;
TinyMCE is a powerful rich-text editor that allows users to create formatted content within a user-friendly interface.&lt;br /&gt;
&lt;br /&gt;
The popular editor is the default editor in all sites from Moodle 4.4 onwards. In Moodle 4.2 and 4.3, TinyMCE is the default editor for new installations only, but can be made default for upgraded sites from &#039;&#039;Administration &amp;gt; Site administration &amp;gt; Plugins &amp;gt; Text editors &amp;gt; Manage editors&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If enabled, users may select the &#039;&#039;&#039;TinyMCE editor&#039;&#039;&#039; from the &#039;&#039;User menu &amp;gt; Preferences &amp;gt; Editor preferences.&#039;&#039;&lt;br /&gt;
{{MediaPlayer | url = https://youtu.be/Q-D6nWSusrY | desc = Overview of TinyMCE}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tiny Toolbar ==&lt;br /&gt;
The following buttons are available on the toolbar (not all buttons might show in all scenarios:)&lt;br /&gt;
[[File:latestTiny.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The available buttons are as follows:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!#&lt;br /&gt;
!Button&lt;br /&gt;
!#&lt;br /&gt;
!Button&lt;br /&gt;
!#&lt;br /&gt;
!Button&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Undo and Redo&lt;br /&gt;
|10&lt;br /&gt;
|No auto-link &lt;br /&gt;
|18&lt;br /&gt;
|Numbered list&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Bold and Italic&lt;br /&gt;
|11&lt;br /&gt;
|Full screen &lt;br /&gt;
|19&lt;br /&gt;
|Equation editor&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Insert image/modify properties&lt;br /&gt;
|12&lt;br /&gt;
|Align left&lt;br /&gt;
|20&lt;br /&gt;
|Toggle second toolbar (if present)&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Insert audio/video/modify properties&lt;br /&gt;
|13&lt;br /&gt;
|Align centre&lt;br /&gt;
|21&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|[[Audio|Record audio]]&lt;br /&gt;
|14&lt;br /&gt;
|Align right&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|[[Video|Record video]]&lt;br /&gt;
|15&lt;br /&gt;
|L/R and R/L directionality&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|Insert H5P / modify H5P properties&lt;br /&gt;
|16&lt;br /&gt;
|Decrease/increase indent&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|8&lt;br /&gt;
|Link&lt;br /&gt;
|17&lt;br /&gt;
|Bullets list&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|9&lt;br /&gt;
|Unlink&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
Some button have pre-requisites to display, for instance, the equation editor button will only show if either the [[MathJax filter|MathJax]] or the [[TeX notation filter|TeX notation]] filters are enabled (in &#039;&#039;Site administration &amp;gt; Plugins &amp;gt; Filters &amp;gt; Manage filters&#039;&#039;), while the H5P option will only show if the &#039;&#039;tiny/h5p:addembed&#039;&#039; capability has been granted.&lt;br /&gt;
&lt;br /&gt;
== Tiny features ==&lt;br /&gt;
[[File:Tiny - Insert menu.png|thumb]]&lt;br /&gt;
The following features are available from the &#039;&#039;&#039;Insert&#039;&#039;&#039; menu:&lt;br /&gt;
=== Insert / Edit image ===&lt;br /&gt;
The easiest way to insert an image is via drag&#039;n&#039;drop. Alternatively, you can use the &#039;&#039;Insert image&#039;&#039; tool, which gives you more control over some image properties:&lt;br /&gt;
* &#039;&#039;&#039;URL&#039;&#039;&#039;: The (internal or external) address of the image. You can either enter a URL manually or select an image from the repository browser, which adds the URL automatically.&lt;br /&gt;
*&#039;&#039;&#039;Description&#039;&#039;&#039;: Unless the image is labelled decorative only, a description must be provided for screenreader users&lt;br /&gt;
*&#039;&#039;&#039;Size&#039;&#039;&#039;: Initially, the image&#039;s width and height are set. These can be adjusted to fit your text. When the &#039;&#039;Auto size&#039;&#039; checkbox remains ticked, the image&#039;s width-height ratio stays intact.&lt;br /&gt;
* &#039;&#039;&#039;Alignment&#039;&#039;&#039;: Options are &#039;&#039;Top&#039;&#039;, &#039;&#039;Middle&#039;&#039;, and &#039;&#039;Bottom&#039;&#039;.&lt;br /&gt;
[[File:Tiny - Image.png|border|center|frameless|450x450px]]&lt;br /&gt;
To modify image properties once it has been added to your text, select the image and press the &#039;&#039;Image&#039;&#039; button on the mini toolbar that shows up.&lt;br /&gt;
=== Insert / Edit Link ===&lt;br /&gt;
When inserting or editing a link to another (internal or external) page, you can provide the following settings:&lt;br /&gt;
* &#039;&#039;&#039;URL&#039;&#039;&#039;: The address of the page to navigate to. If left empty, the option &#039;&#039;&amp;lt;top&amp;gt;&#039;&#039; and &#039;&#039;&amp;lt;bottom&amp;gt;&#039;&#039; are available&lt;br /&gt;
* &#039;&#039;&#039;Text to display&#039;&#039;&#039;: The text that is shown in the text, represented as a link&lt;br /&gt;
* &#039;&#039;&#039;Title&#039;&#039;&#039;: The text shown when hovering over the link&lt;br /&gt;
* &#039;&#039;&#039;Browse repositories&#039;&#039;&#039;: Upload a file to link to.&lt;br /&gt;
* &#039;&#039;&#039;Open link in...&#039;&#039;&#039;: The page can either be opened in the &#039;&#039;&#039;Current Window&#039;&#039;&#039; or a &#039;&#039;&#039;New window&#039;&#039;&#039;&lt;br /&gt;
[[File:Tiny - Link.png|border|center|frameless|450x450px]]&lt;br /&gt;
=== Insert / Edit Multimedia ===&lt;br /&gt;
To insert existing audio or videos clips, the TinyMCE editor supports Moodle standard [[Media embedding|Media embedding interface]]. &lt;br /&gt;
[[File:Tiny - Audio &amp;amp; Video.png|thumb]]&lt;br /&gt;
=== Record audio and video ===&lt;br /&gt;
TinyMCE lets users record [[audio]] and [[video]] clips which will attach to the text once recorded. Each recording comprises three steps:&lt;br /&gt;
# &#039;&#039;&#039;Start recording&#039;&#039;&#039;: when ready, press the &#039;&#039;Start recording&#039;&#039; button&lt;br /&gt;
# &#039;&#039;&#039;Stop recording&#039;&#039;&#039;: when completed, press the &#039;&#039;Stop recording&#039;&#039; button&lt;br /&gt;
# &#039;&#039;&#039;Review recording&#039;&#039;&#039;: you can listen to or watch the recording via the provided controls. Either attach the clip to your text or record it again.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The maximum length and quality (bitrate) can be [[TinyMCE editor#Tiny Record RTC plugin for Moodle|configured]] at admin level.&lt;br /&gt;
=== Insert / Edit code sample ===&lt;br /&gt;
The Tiny editor lets you insert and embed syntax color highlighted code snippets into the editable area.&lt;br /&gt;
[[File:Tiny - Code Sample.png|border|center|frameless|600x600px]]&lt;br /&gt;
While you can select the (programming) language at the top, it doesn&#039;t have any impact on the way the code is displayed.&lt;br /&gt;
&lt;br /&gt;
Tiny also supports formatting of code elements (&#039;&#039;Format -&amp;gt; Code&#039;&#039;), which changes the selected text to the internally defined &amp;lt;code&amp;gt;code style&amp;lt;/code&amp;gt;.&lt;br /&gt;
=== Insert Table ===&lt;br /&gt;
Tiny comes with comprehensive table management functionality to handle grid-like structures in your text. In addition to the Insert table menu item, an entire main menu has been dedicated to tables.&lt;br /&gt;
[[File:Tiny - Table.png|border|center|frameless|450x450px]]&lt;br /&gt;
Once a table has been added, you can customise individual cells, row, columns, and the properties of the entire table. The following self-explanatory menu items are available, all supporting standard HTML table options:&lt;br /&gt;
* Cell&lt;br /&gt;
** Cell properties&lt;br /&gt;
** Merge cells&lt;br /&gt;
** Split cells&lt;br /&gt;
* Row&lt;br /&gt;
** Insert row before&lt;br /&gt;
** Insert row after&lt;br /&gt;
** Delete row&lt;br /&gt;
** Row properties&lt;br /&gt;
** Cut row&lt;br /&gt;
** Copy row&lt;br /&gt;
** Paste row before&lt;br /&gt;
** Paste row after&lt;br /&gt;
* Column&lt;br /&gt;
** Insert column before&lt;br /&gt;
** Insert column after&lt;br /&gt;
** Delete column&lt;br /&gt;
** Cut column&lt;br /&gt;
** Copy column&lt;br /&gt;
** Paste column before&lt;br /&gt;
** Paste column after&lt;br /&gt;
* Table properties&lt;br /&gt;
* Delete table&lt;br /&gt;
[[File:Tiny - Table operations.png|border|center|frameless|600x600px]]&lt;br /&gt;
The table editor also shows context-sensitive menus when editing different table elements.&lt;br /&gt;
=== Insert special character ===&lt;br /&gt;
The special character picker lets you insert letters and symbols (a map of special unicode characters) that are difficult or impossible to access via your keyboard. You can either search by keyword and / or browse categories.&lt;br /&gt;
[[File:Tiny - Special character.png|border|center|frameless|450x450px]]&lt;br /&gt;
=== Insert Emojis ===&lt;br /&gt;
Bring a smiley to your content: The emoji picker lets you insert pictograms. You can either search by keyword and / or browse categories.&lt;br /&gt;
[[File:Tiny - Emojis.png|border|center|frameless|450x450px]]&lt;br /&gt;
=== Insert HTML elements ===&lt;br /&gt;
The following 4 HTML elements are supported by TinyMCE via menus:&lt;br /&gt;
* &#039;&#039;&#039;Insert horizontal line&#039;&#039;&#039;: Adds an HTML line to your text.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Insert page break&#039;&#039;&#039;: Adds a page break (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) to your text.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Insert nonbreaking space&#039;&#039;&#039;: Add an nonbreaking space (&amp;lt;code&amp;gt;&amp;amp;amp;nbsp;&amp;lt;/code&amp;gt;) at the current cursor location.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Insert anchor&#039;&#039;&#039;: Insert anchors (sometimes referred to as a bookmarks) to your text. Users will be prompted via a dialog box to enter a string. The string will be inserted into the HTML as an anchor id at the location of the cursor. For example, a user places their cursor at the beginning of &amp;quot;Moodle&amp;quot; and clicks on the anchor button and enters &amp;quot;start&amp;quot; in the dialog box. The resulting HTML will take the form of &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;p&amp;gt;&amp;lt;a id=&amp;quot;start&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/nowiki&amp;gt;Moodle&amp;lt;nowiki&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
=== Insert date/time ===&lt;br /&gt;
The Insert date/time options lets you easily insert the current date and/or time into the editable area at the cursor insertion point.&lt;br /&gt;
[[File:Tiny - DateTime.png|border|center|frameless]]&lt;br /&gt;
The available format options depend on the selected language. &lt;br /&gt;
[[File:Tiny - Equation editor.png|thumb]]&lt;br /&gt;
=== Equation editor ===&lt;br /&gt;
If either the [[MathJax filter|MathJax]] or the [[TeX notation filter|TeX]] filters are enabled (in &#039;&#039;Site administration &amp;gt; Plugins &amp;gt; Filters &amp;gt; Manage filters&#039;&#039;) then the &#039;&#039;Insert equation&#039;&#039; option is provided in the TinyMCE editor for launching the equation editor.&lt;br /&gt;
&lt;br /&gt;
Internally, the equation editor uses the [https://docs.moodle.org/400/en/TeX_notation_filter TeX notation] which can either be entered manually and / or interactively. The interactive elements are grouped into 4 categories (Operators, Arrows, Greek symbols, and Advanced). The content of each tab can be configured via the [[Equation editor settings]].&lt;br /&gt;
&lt;br /&gt;
At the bottom of the editor, a preview is shown.&lt;br /&gt;
=== Configure H5P content ===&lt;br /&gt;
You can embed [[H5P]] content via the &#039;&#039;Configure H5P content&#039;&#039; menu as follows:&lt;br /&gt;
# Browse the Content bank repository and select an H5P file&lt;br /&gt;
# Choose to either make a copy of the file or create a shortcut&lt;br /&gt;
# Optionally, configure the H5P options (Allow download, Embed button, Copyright button)&lt;br /&gt;
# Click the button &#039;Select this file&#039;&lt;br /&gt;
# Click &#039;Insert H5P&#039;These steps will automatically enter the internal address in the H5P URL field. Alternatively, you can enter any internal or external H5P URL manually.&lt;br /&gt;
Note: If you create a shortcut to the file, you can edit it in the Content bank and any activities with a link to the file will be updated.&lt;br /&gt;
== Tiny tools ==&lt;br /&gt;
[[File:Tiny - Tools menu.png|thumb]]&lt;br /&gt;
The following tools are available in vie the &#039;&#039;&#039;Tools&#039;&#039;&#039; menu:&lt;br /&gt;
=== View source code ===&lt;br /&gt;
The source code pop up window displays the code of the page, usually HTML or JS. The code can be modified in plain text; once the window is closed, any changes will be reflected in the WYSIWYG mode.&lt;br /&gt;
[[File:Tiny - Source code.png|center|frameless|900x900px]]&lt;br /&gt;
=== Word count ===&lt;br /&gt;
The word pop up windows displays the number of words and the number of characters (with and without spaces) of the entire document and the selected text, respectively.&lt;br /&gt;
[[File:Tiny - Word count.png|border|center|frameless|600x600px|alt=]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The number of words are also shown in the editor&#039;s footer.&lt;br /&gt;
=== Accessibility checker ===&lt;br /&gt;
The automated [[accessibility]] checker checks for some common errors in the text. These are usually elements in the way the text is constructed that can prevent all users from having equal access to information and functionality. The list of problems that the accessibility checker looks for is:&lt;br /&gt;
* Images with missing or empty alt text (unless they have the presentation role)&lt;br /&gt;
* Contrast of font colour and background colour meets [https://en.wikipedia.org/wiki/Web_Content_Accessibility_Guidelines WCAG AA guidelines]&lt;br /&gt;
* Long blocks of text are sufficiently broken up into headings&lt;br /&gt;
* All tables require captions&lt;br /&gt;
* Tables should not contain merged cells as they are difficult to navigate with screen readers&lt;br /&gt;
* All tables should contain row or column headers&lt;br /&gt;
=== Media Manager ===&lt;br /&gt;
The media manager shows all media files that have been embedded in the text. &lt;br /&gt;
&lt;br /&gt;
The top part of the media manager shows the familiar file management element where you can add, download, and delete attached files.&lt;br /&gt;
&lt;br /&gt;
Files that have been attached and deleted again are shown at the bottom half of the screen.&lt;br /&gt;
[[File:Tiny - Media manager.png|border|center|frameless|600x600px]]&lt;br /&gt;
== Keyboard shortcuts ==&lt;br /&gt;
The following keyboard shortcuts will work in the Tiny text editor in most browsers. Note that for many of these commands to work you need to either click in the text editor or select content in the text editor.&lt;br /&gt;
=== Editor shortcuts ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Windows Command&lt;br /&gt;
!Mac Command&lt;br /&gt;
!Function&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + Shift + f&lt;br /&gt;
|⌘ + Shift + f&lt;br /&gt;
|Full screen toggle&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + c&lt;br /&gt;
|⌘ + c&lt;br /&gt;
|Copy&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + v&lt;br /&gt;
|⌘ + v&lt;br /&gt;
|Paste&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + Shift + v&lt;br /&gt;
|⌘ + Shift + v&lt;br /&gt;
|Paste without formatting (very useful)&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + x&lt;br /&gt;
|⌘ + x&lt;br /&gt;
|Cut&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + z&lt;br /&gt;
|⌘ + z&lt;br /&gt;
|Undo&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + y&lt;br /&gt;
|⌘ + y&lt;br /&gt;
|Redo&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + a&lt;br /&gt;
|⌘ + a&lt;br /&gt;
|Select all&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + f&lt;br /&gt;
|⌘ + f&lt;br /&gt;
|Find and replace&lt;br /&gt;
|-&lt;br /&gt;
|F3&lt;br /&gt;
|&amp;lt;s&amp;gt;F3&amp;lt;/s&amp;gt;&lt;br /&gt;
|Find next&lt;br /&gt;
|-&lt;br /&gt;
|Shift + F3&lt;br /&gt;
|&amp;lt;s&amp;gt;Shift + F3&amp;lt;/s&amp;gt;&lt;br /&gt;
|Find previous&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + b&lt;br /&gt;
|⌘ + b&lt;br /&gt;
|Bold&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + i&lt;br /&gt;
|⌘ + i&lt;br /&gt;
|Italics&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + u&lt;br /&gt;
|⌘ + u&lt;br /&gt;
|Underline&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + k&lt;br /&gt;
|⌘ + k&lt;br /&gt;
|Insert/edit link&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + Right arrow&lt;br /&gt;
|Option + Right arrow&lt;br /&gt;
|Move to the end of the next word&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + Left arrow&lt;br /&gt;
|Option + Left arrow&lt;br /&gt;
|Move to the end of the previous word&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + Shift + Right arrow&lt;br /&gt;
|Shift + Option + Right arrow&lt;br /&gt;
|Select the next word or letter&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + Shift + Left arrow&lt;br /&gt;
|Shift + Option + Left arrow&lt;br /&gt;
|Select the previous word or letter&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + Shift + Home&lt;br /&gt;
|&amp;lt;s&amp;gt;⌘ + Shift + Home&amp;lt;/s&amp;gt;&lt;br /&gt;
|Select from the cursor to the beginning of the page&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + Shift + End&lt;br /&gt;
|&amp;lt;s&amp;gt;⌘ + Shift + End&amp;lt;/s&amp;gt;&lt;br /&gt;
|Select from the cursor to the end of the page&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + Home&lt;br /&gt;
|⌘ + Up arrow&lt;br /&gt;
|Move to the beginning of the page&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + End&lt;br /&gt;
|⌘ + Down arrow&lt;br /&gt;
|Move to the end of the page&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + Backspace&lt;br /&gt;
|&amp;lt;s&amp;gt;⌘ + Backspace&amp;lt;/s&amp;gt;&lt;br /&gt;
|Delete word or letter to the left&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + Delete&lt;br /&gt;
|&amp;lt;s&amp;gt;⌘ + Delete&amp;lt;/s&amp;gt;&lt;br /&gt;
|Delete word or letter to the right&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + P&lt;br /&gt;
|⌘ + P&lt;br /&gt;
|Print&lt;br /&gt;
|-&lt;br /&gt;
|Alt+Shift+1&lt;br /&gt;
|Ctrl+Option+1&lt;br /&gt;
|Header 1&lt;br /&gt;
|-&lt;br /&gt;
|Alt+Shift+2&lt;br /&gt;
|Ctrl+Option+2&lt;br /&gt;
|Header 2&lt;br /&gt;
|-&lt;br /&gt;
|Alt+Shift+3&lt;br /&gt;
|Ctrl+Option+3&lt;br /&gt;
|Header 3&lt;br /&gt;
|-&lt;br /&gt;
|Alt+Shift+4&lt;br /&gt;
|Ctrl+Option+4&lt;br /&gt;
|Header 4&lt;br /&gt;
|-&lt;br /&gt;
|Alt+Shift+5&lt;br /&gt;
|Ctrl+Option+5&lt;br /&gt;
|Header 5&lt;br /&gt;
|-&lt;br /&gt;
|Alt+Shift+6&lt;br /&gt;
|Ctrl+Option+6&lt;br /&gt;
|Header 6&lt;br /&gt;
|-&lt;br /&gt;
|Alt+Shift+7&lt;br /&gt;
|Ctrl+Option+7&lt;br /&gt;
|Paragraph&lt;br /&gt;
|-&lt;br /&gt;
|Alt+Shift+8&lt;br /&gt;
|Ctrl+Option+8&lt;br /&gt;
|Div&lt;br /&gt;
|-&lt;br /&gt;
|Alt+Shift+9&lt;br /&gt;
|Ctrl+Option+9&lt;br /&gt;
|Address&lt;br /&gt;
|-&lt;br /&gt;
|Alt+0&lt;br /&gt;
|Option+0&lt;br /&gt;
|Help dialogue (list of shortcuts)&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl and +&lt;br /&gt;
|⌘ and +&lt;br /&gt;
|Zoom in (not specific to the editor, but very useful)&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl and -&lt;br /&gt;
|⌘ and -&lt;br /&gt;
|Zoom out (not specific to the editor, but very useful)&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl and 0&lt;br /&gt;
|⌘ and 0&lt;br /&gt;
|Reset zoom (not specific to the editor, but very useful)&lt;br /&gt;
|-&lt;br /&gt;
|Double-click&lt;br /&gt;
|Double-click&lt;br /&gt;
|Select word&lt;br /&gt;
|-&lt;br /&gt;
|Triple-click&lt;br /&gt;
|Triple-click&lt;br /&gt;
|Select line&lt;br /&gt;
|}&lt;br /&gt;
=== Keyboard navigation ===&lt;br /&gt;
The sections of the outer UI of the editor - the menubar, toolbar, sidebar and footer - are all keyboard navigable. &lt;br /&gt;
==== Activating keyboard navigation ====&lt;br /&gt;
There are multiple ways to activate keyboard navigation:&lt;br /&gt;
* Focus the menubar: Alt + F9 (Windows) or ⌥F9 (MacOS)&lt;br /&gt;
* Focus the toolbar: Alt + F10 (Windows) or ⌥F10 (MacOS)&lt;br /&gt;
* Focus the footer: Alt + F11 (Windows) or ⌥F11 (MacOS)&lt;br /&gt;
Focusing the menubar or toolbar will start keyboard navigation at the first item in the menubar or toolbar, which will be highlighted with a gray background. Focusing the footer will start keyboard navigation at the first item in the element path, which will be highlighted with an underline.&lt;br /&gt;
==== Moving between UI sections ====&lt;br /&gt;
When keyboard navigation is active, pressing tab will move the focus to the next major section of the UI, where applicable. These sections are:&lt;br /&gt;
* the menubar&lt;br /&gt;
* each group of the toolbar&lt;br /&gt;
* the sidebar&lt;br /&gt;
* the element path in the footer&lt;br /&gt;
* the wordcount toggle button in the footer&lt;br /&gt;
* the branding link in the footer&lt;br /&gt;
* the editor resize handle in the footer&lt;br /&gt;
Pressing shift + tab will move backwards through the same sections, except when moving from the footer to the toolbar. Focusing the element path then pressing shift + tab will move focus to the first toolbar group, not the last.&lt;br /&gt;
==== Moving within UI sections ====&lt;br /&gt;
Keyboard navigation within UI sections can usually be achieved using the left and right arrow keys. This includes:&lt;br /&gt;
* moving between menus in the menubar&lt;br /&gt;
* moving between buttons in a toolbar group&lt;br /&gt;
* moving between items in the element path&lt;br /&gt;
In all these UI sections, keyboard navigation will cycle within the section. For example, focusing the last button in a toolbar group then pressing right arrow will move focus to the first item in the same toolbar group.&lt;br /&gt;
==== Executing buttons ====&lt;br /&gt;
To execute a button, navigate the selection to the desired button and hit space or enter.&lt;br /&gt;
==== Opening, navigating and closing menus ====&lt;br /&gt;
When focusing a menubar button or a toolbar button with a menu, pressing space, enter or down arrow will open the menu. When the menu opens the first item will be selected. To move up or down the menu, press the up or down arrow key respectively. This is the same for submenus, which can also be opened and closed using the left and right arrow keys.&lt;br /&gt;
&lt;br /&gt;
To close any active menu, hit the escape key. When a menu is closed the selection will be restored to its previous selection. This also works for closing submenus.&lt;br /&gt;
==== Context toolbars and menus ====&lt;br /&gt;
To focus an open context toolbar such as the table context toolbar, press Ctrl + F9 (Windows) or ⌃F9 (MacOS).&lt;br /&gt;
&lt;br /&gt;
Context toolbar navigation is the same as toolbar navigation, and context menu navigation is the same as standard menu navigation.&lt;br /&gt;
==== Dialog navigation ====&lt;br /&gt;
There are two types of dialog UIs in TinyMCE: tabbed dialogs and non-tabbed dialogs.&lt;br /&gt;
&lt;br /&gt;
When a non-tabbed dialog is opened, the first interactive component in the dialog will be focused. Users can navigate between interactive components by pressing tab. This includes any footer buttons. Navigation will cycle back to the first dialog component if tab is pressed while focusing the last component in the dialog. Pressing shift + tab will navigate backwards.&lt;br /&gt;
&lt;br /&gt;
When a tabbed dialog is opened, the first button in the tab menu is focused. Pressing tab will navigate to the first interactive component in that tab, and will cycle through the tab&#039;s components, the footer buttons, then back to the tab button. To switch to another tab, focus the tab button for the current tab, then use the arrow keys to cycle through the tab buttons.&lt;br /&gt;
==== Accessibility shortcuts ====&lt;br /&gt;
This is a list of available keyboard shortcuts within the editor user interface.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Windows Command&lt;br /&gt;
!Mac Command&lt;br /&gt;
!Function&lt;br /&gt;
|-&lt;br /&gt;
|Enter / Spacebar&lt;br /&gt;
|Enter / Spacebar&lt;br /&gt;
|Execute command&lt;br /&gt;
|-&lt;br /&gt;
|Tab&lt;br /&gt;
|Tab&lt;br /&gt;
|Focus on next UI Element(such as: Menu bar, Toolbar, Toolbar Group, Status Bar Item)&lt;br /&gt;
|-&lt;br /&gt;
|Shift+Tab&lt;br /&gt;
|Shift+Tab&lt;br /&gt;
|Focus on previous UI Element(such as: Menu bar, Toolbar, Toolbar Group, Status Bar Item)&lt;br /&gt;
|-&lt;br /&gt;
|Right Arrow / Down Arrow&lt;br /&gt;
|Right Arrow / Down Arrow&lt;br /&gt;
|Focus next Control(such as: toolbar button, menu, or menu item)&lt;br /&gt;
|-&lt;br /&gt;
|Left Arrow / Up Arrow&lt;br /&gt;
|Left Arrow / Up Arrow&lt;br /&gt;
|Focus previous Control(such as: toolbar button, menu, or menu item)&lt;br /&gt;
|-&lt;br /&gt;
|Down Arrow / Spacebar&lt;br /&gt;
|Down Arrow / Spacebar&lt;br /&gt;
|Open menu or toolbar menu button&lt;br /&gt;
|-&lt;br /&gt;
|Spacebar&lt;br /&gt;
|Spacebar&lt;br /&gt;
|Open group toolbar button&lt;br /&gt;
|-&lt;br /&gt;
|Down Arrow&lt;br /&gt;
|Down Arrow&lt;br /&gt;
|Open split toolbar button&lt;br /&gt;
|-&lt;br /&gt;
|Shift+Enter&lt;br /&gt;
|Shift+Enter&lt;br /&gt;
|Open the popup menu on split toolbar buttons&lt;br /&gt;
|-&lt;br /&gt;
|Right Arrow&lt;br /&gt;
|Right Arrow&lt;br /&gt;
|Open submenu&lt;br /&gt;
|-&lt;br /&gt;
|Left Arrow / Esc&lt;br /&gt;
|Left Arrow / Esc&lt;br /&gt;
|Close submenu&lt;br /&gt;
|-&lt;br /&gt;
|Esc&lt;br /&gt;
|Esc&lt;br /&gt;
|Close dialog&lt;br /&gt;
|-&lt;br /&gt;
|Esc&lt;br /&gt;
|Esc&lt;br /&gt;
|Close menu&lt;br /&gt;
|-&lt;br /&gt;
|Esc&lt;br /&gt;
|Esc&lt;br /&gt;
|Move focus back to editor body&lt;br /&gt;
|}&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: Browsers and Screen Readers provide additional shortcuts within the editor context.&lt;br /&gt;
==Site administration settings==&lt;br /&gt;
=== General settings ===&lt;br /&gt;
From &#039;&#039;Site administration &amp;gt; Plugins &amp;gt; Text editors &amp;gt; TinyMCE editor&#039;&#039; you can disable and enable certain settings, for example the Tiny HTML formatter, Tiny no-auto link and access the setting for the paid service TinyMCE Premium.&lt;br /&gt;
&lt;br /&gt;
You can also disable the TinyMCE branding logo which appears at the bottom of the editor.&lt;br /&gt;
&lt;br /&gt;
====TinyMCE Premium====&lt;br /&gt;
TinyMCE Premium requires a paid subscription. Your API key is available on your [https://www.tiny.cloud/ Tiny Cloud] account page if you have purchased a subscription, or if you are on a free trial. Enter the API key from Site administration &amp;gt; Plugins &amp;gt; Text editors &amp;gt; TinyMCE Premium.&lt;br /&gt;
&lt;br /&gt;
For TinyMCE premium features charging is done on &amp;quot;per request&amp;quot; basis (number of editor loads). You can make use of the capability &#039;Access TinyMCE Premium features&#039; (tiny/premium:accesspremium) (new in Moodle 4.4) to control which users can use premium features and in which context.&lt;br /&gt;
&lt;br /&gt;
The TinyMCE features that may be available to your Moodle site with a Premium subscription are:&lt;br /&gt;
&lt;br /&gt;
* Advanced Tables&lt;br /&gt;
* Advanced Typography&lt;br /&gt;
* Case Change&lt;br /&gt;
* Checklist&lt;br /&gt;
* Enhanced Image Editing&lt;br /&gt;
* Export&lt;br /&gt;
* Footnotes&lt;br /&gt;
* Format Painter&lt;br /&gt;
* Link Checker&lt;br /&gt;
* Page Embed&lt;br /&gt;
* Permanent Pen&lt;br /&gt;
* PowerPaste&lt;br /&gt;
* Spell Checker Pro&lt;br /&gt;
* Spelling Autocorrect&lt;br /&gt;
* Table of Contents&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You can learn more about these features on [https://www.tiny.cloud/tinymce/features/#productivity TinyMCE&#039;s website]. Please note that not all plugins listed on TinyMCE&#039;s website are currently available to Moodle users.&lt;br /&gt;
&lt;br /&gt;
=== Equation editor settings ===&lt;br /&gt;
[[File:Tiny - Equation editor settings.png|thumb]]&lt;br /&gt;
The equation editor has 4 tabs: Operators, Arrows, Greek symbols, and Advanced. The commands that are available on each tab and their order can be configured in &#039;&#039;Site administration &amp;gt; Plugins &amp;gt; Text editors &amp;gt; TinyMCE editor &amp;gt; Equation editor settings&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
For each group, the list of commands is shown in TeX format.&lt;br /&gt;
=== Tiny Record RTC plugin for Moodle ===&lt;br /&gt;
[[File:Tiny - RTC settings.png|thumb]]&lt;br /&gt;
Tiny fully supports media recording through. Internally, RecordRTC is utilised, an open source JavaScript library using WebRTC for audio and video recording. To configure its settings, navigate to &#039;&#039;Site administration &amp;gt; Plugins &amp;gt; Text editors &amp;gt; TinyMCE editor &amp;gt; RecordRTC&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
The following options have an impact on server resources, both in terms of bandwidth and disk usage:&lt;br /&gt;
* &#039;&#039;&#039;Allowed types&#039;&#039;&#039;: You can specify whether &#039;&#039;&#039;Audio and video&#039;&#039;&#039; recording are supported or &#039;&#039;&#039;Audio only&#039;&#039;&#039; or &#039;&#039;&#039;Video only&#039;&#039;&#039;. There are two capabilities to control access to the TinyMCE buttons: &#039;&#039;&#039;[[Capabilities/tiny/recordrtc:recordvideo]]&#039;&#039;&#039; and &#039;&#039;&#039;[[Capabilities/tiny/recordrtc:recordaudio]]&#039;&#039;&#039; &lt;br /&gt;
* &#039;&#039;&#039;Audio bitrate&#039;&#039;&#039; and &#039;&#039;&#039;Video bitrate&#039;&#039;&#039;: The lower the bitrates, the smaller the file sizes, and vice versa. The default bitrate for recorded audio (128000) should generate files of about 15 KB per minute; the default bitrate for recorded video (2500000) to files of approximately 20 MB per minute.&lt;br /&gt;
* &#039;&#039;&#039;Audio time limit in seconds&#039;&#039;&#039; and &#039;&#039;&#039;Video time limit in seconds&#039;&#039;&#039;: The default time limit is 2 minutes for audio and video recording. Again, the longer the maximum recording length, the bigger the resulting files. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Recordings are stored in subdirectories of &#039;&#039;$CFG-&amp;gt;dataroot&amp;gt;/filedir&#039;&#039;. Ensure &#039;&#039;post_max_size&#039;&#039; and &#039;&#039;upload_max_filesize&#039;&#039; are configured in line with your expected maximum recording sizes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[es:Editor TinyMCE]]&lt;br /&gt;
[[de:TinyMCE-Editor]]&lt;br /&gt;
[[fr:Éditeur TinyMCE]]&lt;/div&gt;</summary>
		<author><name>Michaelh2</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/501/en/index.php?title=TinyMCE_editor&amp;diff=148767</id>
		<title>TinyMCE editor</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/501/en/index.php?title=TinyMCE_editor&amp;diff=148767"/>
		<updated>2024-06-13T02:52:25Z</updated>

		<summary type="html">&lt;p&gt;Michaelh2: /* What is TinyMCE? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Editing text}}&lt;br /&gt;
==What is TinyMCE?==&lt;br /&gt;
TinyMCE is a powerful rich-text editor that allows users to create formatted content within a user-friendly interface.&lt;br /&gt;
&lt;br /&gt;
The popular editor is the default editor in all sites from Moodle 4.4 onwards. For Moodle 4.2 and 4.3, TinyMCE is the default editor for new installations only, but can be made default for upgraded sites from &#039;&#039;Administration &amp;gt; Site administration &amp;gt; Plugins &amp;gt; Text editors &amp;gt; Manage editors&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If enabled, users may select the &#039;&#039;&#039;TinyMCE editor&#039;&#039;&#039; from the &#039;&#039;User menu &amp;gt; Preferences &amp;gt; Editor preferences.&#039;&#039;&lt;br /&gt;
{{MediaPlayer | url = https://youtu.be/Q-D6nWSusrY | desc = Overview of TinyMCE}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tiny Toolbar ==&lt;br /&gt;
The following buttons are available on the toolbar (not all buttons might show in all scenarios:)&lt;br /&gt;
[[File:latestTiny.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The available buttons are as follows:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!#&lt;br /&gt;
!Button&lt;br /&gt;
!#&lt;br /&gt;
!Button&lt;br /&gt;
!#&lt;br /&gt;
!Button&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Undo and Redo&lt;br /&gt;
|10&lt;br /&gt;
|No auto-link &lt;br /&gt;
|18&lt;br /&gt;
|Numbered list&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Bold and Italic&lt;br /&gt;
|11&lt;br /&gt;
|Full screen &lt;br /&gt;
|19&lt;br /&gt;
|Equation editor&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Insert image/modify properties&lt;br /&gt;
|12&lt;br /&gt;
|Align left&lt;br /&gt;
|20&lt;br /&gt;
|Toggle second toolbar (if present)&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Insert audio/video/modify properties&lt;br /&gt;
|13&lt;br /&gt;
|Align centre&lt;br /&gt;
|21&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|[[Audio|Record audio]]&lt;br /&gt;
|14&lt;br /&gt;
|Align right&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|[[Video|Record video]]&lt;br /&gt;
|15&lt;br /&gt;
|L/R and R/L directionality&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|Insert H5P / modify H5P properties&lt;br /&gt;
|16&lt;br /&gt;
|Decrease/increase indent&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|8&lt;br /&gt;
|Link&lt;br /&gt;
|17&lt;br /&gt;
|Bullets list&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|9&lt;br /&gt;
|Unlink&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
Some button have pre-requisites to display, for instance, the equation editor button will only show if either the [[MathJax filter|MathJax]] or the [[TeX notation filter|TeX notation]] filters are enabled (in &#039;&#039;Site administration &amp;gt; Plugins &amp;gt; Filters &amp;gt; Manage filters&#039;&#039;), while the H5P option will only show if the &#039;&#039;tiny/h5p:addembed&#039;&#039; capability has been granted.&lt;br /&gt;
&lt;br /&gt;
== Tiny features ==&lt;br /&gt;
[[File:Tiny - Insert menu.png|thumb]]&lt;br /&gt;
The following features are available from the &#039;&#039;&#039;Insert&#039;&#039;&#039; menu:&lt;br /&gt;
=== Insert / Edit image ===&lt;br /&gt;
The easiest way to insert an image is via drag&#039;n&#039;drop. Alternatively, you can use the &#039;&#039;Insert image&#039;&#039; tool, which gives you more control over some image properties:&lt;br /&gt;
* &#039;&#039;&#039;URL&#039;&#039;&#039;: The (internal or external) address of the image. You can either enter a URL manually or select an image from the repository browser, which adds the URL automatically.&lt;br /&gt;
*&#039;&#039;&#039;Description&#039;&#039;&#039;: Unless the image is labelled decorative only, a description must be provided for screenreader users&lt;br /&gt;
*&#039;&#039;&#039;Size&#039;&#039;&#039;: Initially, the image&#039;s width and height are set. These can be adjusted to fit your text. When the &#039;&#039;Auto size&#039;&#039; checkbox remains ticked, the image&#039;s width-height ratio stays intact.&lt;br /&gt;
* &#039;&#039;&#039;Alignment&#039;&#039;&#039;: Options are &#039;&#039;Top&#039;&#039;, &#039;&#039;Middle&#039;&#039;, and &#039;&#039;Bottom&#039;&#039;.&lt;br /&gt;
[[File:Tiny - Image.png|border|center|frameless|450x450px]]&lt;br /&gt;
To modify image properties once it has been added to your text, select the image and press the &#039;&#039;Image&#039;&#039; button on the mini toolbar that shows up.&lt;br /&gt;
=== Insert / Edit Link ===&lt;br /&gt;
When inserting or editing a link to another (internal or external) page, you can provide the following settings:&lt;br /&gt;
* &#039;&#039;&#039;URL&#039;&#039;&#039;: The address of the page to navigate to. If left empty, the option &#039;&#039;&amp;lt;top&amp;gt;&#039;&#039; and &#039;&#039;&amp;lt;bottom&amp;gt;&#039;&#039; are available&lt;br /&gt;
* &#039;&#039;&#039;Text to display&#039;&#039;&#039;: The text that is shown in the text, represented as a link&lt;br /&gt;
* &#039;&#039;&#039;Title&#039;&#039;&#039;: The text shown when hovering over the link&lt;br /&gt;
* &#039;&#039;&#039;Browse repositories&#039;&#039;&#039;: Upload a file to link to.&lt;br /&gt;
* &#039;&#039;&#039;Open link in...&#039;&#039;&#039;: The page can either be opened in the &#039;&#039;&#039;Current Window&#039;&#039;&#039; or a &#039;&#039;&#039;New window&#039;&#039;&#039;&lt;br /&gt;
[[File:Tiny - Link.png|border|center|frameless|450x450px]]&lt;br /&gt;
=== Insert / Edit Multimedia ===&lt;br /&gt;
To insert existing audio or videos clips, the TinyMCE editor supports Moodle standard [[Media embedding|Media embedding interface]]. &lt;br /&gt;
[[File:Tiny - Audio &amp;amp; Video.png|thumb]]&lt;br /&gt;
=== Record audio and video ===&lt;br /&gt;
TinyMCE lets users record [[audio]] and [[video]] clips which will attach to the text once recorded. Each recording comprises three steps:&lt;br /&gt;
# &#039;&#039;&#039;Start recording&#039;&#039;&#039;: when ready, press the &#039;&#039;Start recording&#039;&#039; button&lt;br /&gt;
# &#039;&#039;&#039;Stop recording&#039;&#039;&#039;: when completed, press the &#039;&#039;Stop recording&#039;&#039; button&lt;br /&gt;
# &#039;&#039;&#039;Review recording&#039;&#039;&#039;: you can listen to or watch the recording via the provided controls. Either attach the clip to your text or record it again.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The maximum length and quality (bitrate) can be [[TinyMCE editor#Tiny Record RTC plugin for Moodle|configured]] at admin level.&lt;br /&gt;
=== Insert / Edit code sample ===&lt;br /&gt;
The Tiny editor lets you insert and embed syntax color highlighted code snippets into the editable area.&lt;br /&gt;
[[File:Tiny - Code Sample.png|border|center|frameless|600x600px]]&lt;br /&gt;
While you can select the (programming) language at the top, it doesn&#039;t have any impact on the way the code is displayed.&lt;br /&gt;
&lt;br /&gt;
Tiny also supports formatting of code elements (&#039;&#039;Format -&amp;gt; Code&#039;&#039;), which changes the selected text to the internally defined &amp;lt;code&amp;gt;code style&amp;lt;/code&amp;gt;.&lt;br /&gt;
=== Insert Table ===&lt;br /&gt;
Tiny comes with comprehensive table management functionality to handle grid-like structures in your text. In addition to the Insert table menu item, an entire main menu has been dedicated to tables.&lt;br /&gt;
[[File:Tiny - Table.png|border|center|frameless|450x450px]]&lt;br /&gt;
Once a table has been added, you can customise individual cells, row, columns, and the properties of the entire table. The following self-explanatory menu items are available, all supporting standard HTML table options:&lt;br /&gt;
* Cell&lt;br /&gt;
** Cell properties&lt;br /&gt;
** Merge cells&lt;br /&gt;
** Split cells&lt;br /&gt;
* Row&lt;br /&gt;
** Insert row before&lt;br /&gt;
** Insert row after&lt;br /&gt;
** Delete row&lt;br /&gt;
** Row properties&lt;br /&gt;
** Cut row&lt;br /&gt;
** Copy row&lt;br /&gt;
** Paste row before&lt;br /&gt;
** Paste row after&lt;br /&gt;
* Column&lt;br /&gt;
** Insert column before&lt;br /&gt;
** Insert column after&lt;br /&gt;
** Delete column&lt;br /&gt;
** Cut column&lt;br /&gt;
** Copy column&lt;br /&gt;
** Paste column before&lt;br /&gt;
** Paste column after&lt;br /&gt;
* Table properties&lt;br /&gt;
* Delete table&lt;br /&gt;
[[File:Tiny - Table operations.png|border|center|frameless|600x600px]]&lt;br /&gt;
The table editor also shows context-sensitive menus when editing different table elements.&lt;br /&gt;
=== Insert special character ===&lt;br /&gt;
The special character picker lets you insert letters and symbols (a map of special unicode characters) that are difficult or impossible to access via your keyboard. You can either search by keyword and / or browse categories.&lt;br /&gt;
[[File:Tiny - Special character.png|border|center|frameless|450x450px]]&lt;br /&gt;
=== Insert Emojis ===&lt;br /&gt;
Bring a smiley to your content: The emoji picker lets you insert pictograms. You can either search by keyword and / or browse categories.&lt;br /&gt;
[[File:Tiny - Emojis.png|border|center|frameless|450x450px]]&lt;br /&gt;
=== Insert HTML elements ===&lt;br /&gt;
The following 4 HTML elements are supported by TinyMCE via menus:&lt;br /&gt;
* &#039;&#039;&#039;Insert horizontal line&#039;&#039;&#039;: Adds an HTML line to your text.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Insert page break&#039;&#039;&#039;: Adds a page break (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) to your text.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Insert nonbreaking space&#039;&#039;&#039;: Add an nonbreaking space (&amp;lt;code&amp;gt;&amp;amp;amp;nbsp;&amp;lt;/code&amp;gt;) at the current cursor location.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Insert anchor&#039;&#039;&#039;: Insert anchors (sometimes referred to as a bookmarks) to your text. Users will be prompted via a dialog box to enter a string. The string will be inserted into the HTML as an anchor id at the location of the cursor. For example, a user places their cursor at the beginning of &amp;quot;Moodle&amp;quot; and clicks on the anchor button and enters &amp;quot;start&amp;quot; in the dialog box. The resulting HTML will take the form of &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;p&amp;gt;&amp;lt;a id=&amp;quot;start&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/nowiki&amp;gt;Moodle&amp;lt;nowiki&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
=== Insert date/time ===&lt;br /&gt;
The Insert date/time options lets you easily insert the current date and/or time into the editable area at the cursor insertion point.&lt;br /&gt;
[[File:Tiny - DateTime.png|border|center|frameless]]&lt;br /&gt;
The available format options depend on the selected language. &lt;br /&gt;
[[File:Tiny - Equation editor.png|thumb]]&lt;br /&gt;
=== Equation editor ===&lt;br /&gt;
If either the [[MathJax filter|MathJax]] or the [[TeX notation filter|TeX]] filters are enabled (in &#039;&#039;Site administration &amp;gt; Plugins &amp;gt; Filters &amp;gt; Manage filters&#039;&#039;) then the &#039;&#039;Insert equation&#039;&#039; option is provided in the TinyMCE editor for launching the equation editor.&lt;br /&gt;
&lt;br /&gt;
Internally, the equation editor uses the [https://docs.moodle.org/400/en/TeX_notation_filter TeX notation] which can either be entered manually and / or interactively. The interactive elements are grouped into 4 categories (Operators, Arrows, Greek symbols, and Advanced). The content of each tab can be configured via the [[Equation editor settings]].&lt;br /&gt;
&lt;br /&gt;
At the bottom of the editor, a preview is shown.&lt;br /&gt;
=== Configure H5P content ===&lt;br /&gt;
You can embed [[H5P]] content via the &#039;&#039;Configure H5P content&#039;&#039; menu as follows:&lt;br /&gt;
# Browse the Content bank repository and select an H5P file&lt;br /&gt;
# Choose to either make a copy of the file or create a shortcut&lt;br /&gt;
# Optionally, configure the H5P options (Allow download, Embed button, Copyright button)&lt;br /&gt;
# Click the button &#039;Select this file&#039;&lt;br /&gt;
# Click &#039;Insert H5P&#039;These steps will automatically enter the internal address in the H5P URL field. Alternatively, you can enter any internal or external H5P URL manually.&lt;br /&gt;
Note: If you create a shortcut to the file, you can edit it in the Content bank and any activities with a link to the file will be updated.&lt;br /&gt;
== Tiny tools ==&lt;br /&gt;
[[File:Tiny - Tools menu.png|thumb]]&lt;br /&gt;
The following tools are available in vie the &#039;&#039;&#039;Tools&#039;&#039;&#039; menu:&lt;br /&gt;
=== View source code ===&lt;br /&gt;
The source code pop up window displays the code of the page, usually HTML or JS. The code can be modified in plain text; once the window is closed, any changes will be reflected in the WYSIWYG mode.&lt;br /&gt;
[[File:Tiny - Source code.png|center|frameless|900x900px]]&lt;br /&gt;
=== Word count ===&lt;br /&gt;
The word pop up windows displays the number of words and the number of characters (with and without spaces) of the entire document and the selected text, respectively.&lt;br /&gt;
[[File:Tiny - Word count.png|border|center|frameless|600x600px|alt=]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The number of words are also shown in the editor&#039;s footer.&lt;br /&gt;
=== Accessibility checker ===&lt;br /&gt;
The automated [[accessibility]] checker checks for some common errors in the text. These are usually elements in the way the text is constructed that can prevent all users from having equal access to information and functionality. The list of problems that the accessibility checker looks for is:&lt;br /&gt;
* Images with missing or empty alt text (unless they have the presentation role)&lt;br /&gt;
* Contrast of font colour and background colour meets [https://en.wikipedia.org/wiki/Web_Content_Accessibility_Guidelines WCAG AA guidelines]&lt;br /&gt;
* Long blocks of text are sufficiently broken up into headings&lt;br /&gt;
* All tables require captions&lt;br /&gt;
* Tables should not contain merged cells as they are difficult to navigate with screen readers&lt;br /&gt;
* All tables should contain row or column headers&lt;br /&gt;
=== Media Manager ===&lt;br /&gt;
The media manager shows all media files that have been embedded in the text. &lt;br /&gt;
&lt;br /&gt;
The top part of the media manager shows the familiar file management element where you can add, download, and delete attached files.&lt;br /&gt;
&lt;br /&gt;
Files that have been attached and deleted again are shown at the bottom half of the screen.&lt;br /&gt;
[[File:Tiny - Media manager.png|border|center|frameless|600x600px]]&lt;br /&gt;
== Keyboard shortcuts ==&lt;br /&gt;
The following keyboard shortcuts will work in the Tiny text editor in most browsers. Note that for many of these commands to work you need to either click in the text editor or select content in the text editor.&lt;br /&gt;
=== Editor shortcuts ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Windows Command&lt;br /&gt;
!Mac Command&lt;br /&gt;
!Function&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + Shift + f&lt;br /&gt;
|⌘ + Shift + f&lt;br /&gt;
|Full screen toggle&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + c&lt;br /&gt;
|⌘ + c&lt;br /&gt;
|Copy&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + v&lt;br /&gt;
|⌘ + v&lt;br /&gt;
|Paste&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + Shift + v&lt;br /&gt;
|⌘ + Shift + v&lt;br /&gt;
|Paste without formatting (very useful)&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + x&lt;br /&gt;
|⌘ + x&lt;br /&gt;
|Cut&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + z&lt;br /&gt;
|⌘ + z&lt;br /&gt;
|Undo&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + y&lt;br /&gt;
|⌘ + y&lt;br /&gt;
|Redo&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + a&lt;br /&gt;
|⌘ + a&lt;br /&gt;
|Select all&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + f&lt;br /&gt;
|⌘ + f&lt;br /&gt;
|Find and replace&lt;br /&gt;
|-&lt;br /&gt;
|F3&lt;br /&gt;
|&amp;lt;s&amp;gt;F3&amp;lt;/s&amp;gt;&lt;br /&gt;
|Find next&lt;br /&gt;
|-&lt;br /&gt;
|Shift + F3&lt;br /&gt;
|&amp;lt;s&amp;gt;Shift + F3&amp;lt;/s&amp;gt;&lt;br /&gt;
|Find previous&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + b&lt;br /&gt;
|⌘ + b&lt;br /&gt;
|Bold&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + i&lt;br /&gt;
|⌘ + i&lt;br /&gt;
|Italics&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + u&lt;br /&gt;
|⌘ + u&lt;br /&gt;
|Underline&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + k&lt;br /&gt;
|⌘ + k&lt;br /&gt;
|Insert/edit link&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + Right arrow&lt;br /&gt;
|Option + Right arrow&lt;br /&gt;
|Move to the end of the next word&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + Left arrow&lt;br /&gt;
|Option + Left arrow&lt;br /&gt;
|Move to the end of the previous word&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + Shift + Right arrow&lt;br /&gt;
|Shift + Option + Right arrow&lt;br /&gt;
|Select the next word or letter&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + Shift + Left arrow&lt;br /&gt;
|Shift + Option + Left arrow&lt;br /&gt;
|Select the previous word or letter&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + Shift + Home&lt;br /&gt;
|&amp;lt;s&amp;gt;⌘ + Shift + Home&amp;lt;/s&amp;gt;&lt;br /&gt;
|Select from the cursor to the beginning of the page&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + Shift + End&lt;br /&gt;
|&amp;lt;s&amp;gt;⌘ + Shift + End&amp;lt;/s&amp;gt;&lt;br /&gt;
|Select from the cursor to the end of the page&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + Home&lt;br /&gt;
|⌘ + Up arrow&lt;br /&gt;
|Move to the beginning of the page&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + End&lt;br /&gt;
|⌘ + Down arrow&lt;br /&gt;
|Move to the end of the page&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + Backspace&lt;br /&gt;
|&amp;lt;s&amp;gt;⌘ + Backspace&amp;lt;/s&amp;gt;&lt;br /&gt;
|Delete word or letter to the left&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + Delete&lt;br /&gt;
|&amp;lt;s&amp;gt;⌘ + Delete&amp;lt;/s&amp;gt;&lt;br /&gt;
|Delete word or letter to the right&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + P&lt;br /&gt;
|⌘ + P&lt;br /&gt;
|Print&lt;br /&gt;
|-&lt;br /&gt;
|Alt+Shift+1&lt;br /&gt;
|Ctrl+Option+1&lt;br /&gt;
|Header 1&lt;br /&gt;
|-&lt;br /&gt;
|Alt+Shift+2&lt;br /&gt;
|Ctrl+Option+2&lt;br /&gt;
|Header 2&lt;br /&gt;
|-&lt;br /&gt;
|Alt+Shift+3&lt;br /&gt;
|Ctrl+Option+3&lt;br /&gt;
|Header 3&lt;br /&gt;
|-&lt;br /&gt;
|Alt+Shift+4&lt;br /&gt;
|Ctrl+Option+4&lt;br /&gt;
|Header 4&lt;br /&gt;
|-&lt;br /&gt;
|Alt+Shift+5&lt;br /&gt;
|Ctrl+Option+5&lt;br /&gt;
|Header 5&lt;br /&gt;
|-&lt;br /&gt;
|Alt+Shift+6&lt;br /&gt;
|Ctrl+Option+6&lt;br /&gt;
|Header 6&lt;br /&gt;
|-&lt;br /&gt;
|Alt+Shift+7&lt;br /&gt;
|Ctrl+Option+7&lt;br /&gt;
|Paragraph&lt;br /&gt;
|-&lt;br /&gt;
|Alt+Shift+8&lt;br /&gt;
|Ctrl+Option+8&lt;br /&gt;
|Div&lt;br /&gt;
|-&lt;br /&gt;
|Alt+Shift+9&lt;br /&gt;
|Ctrl+Option+9&lt;br /&gt;
|Address&lt;br /&gt;
|-&lt;br /&gt;
|Alt+0&lt;br /&gt;
|Option+0&lt;br /&gt;
|Help dialogue (list of shortcuts)&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl and +&lt;br /&gt;
|⌘ and +&lt;br /&gt;
|Zoom in (not specific to the editor, but very useful)&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl and -&lt;br /&gt;
|⌘ and -&lt;br /&gt;
|Zoom out (not specific to the editor, but very useful)&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl and 0&lt;br /&gt;
|⌘ and 0&lt;br /&gt;
|Reset zoom (not specific to the editor, but very useful)&lt;br /&gt;
|-&lt;br /&gt;
|Double-click&lt;br /&gt;
|Double-click&lt;br /&gt;
|Select word&lt;br /&gt;
|-&lt;br /&gt;
|Triple-click&lt;br /&gt;
|Triple-click&lt;br /&gt;
|Select line&lt;br /&gt;
|}&lt;br /&gt;
=== Keyboard navigation ===&lt;br /&gt;
The sections of the outer UI of the editor - the menubar, toolbar, sidebar and footer - are all keyboard navigable. &lt;br /&gt;
==== Activating keyboard navigation ====&lt;br /&gt;
There are multiple ways to activate keyboard navigation:&lt;br /&gt;
* Focus the menubar: Alt + F9 (Windows) or ⌥F9 (MacOS)&lt;br /&gt;
* Focus the toolbar: Alt + F10 (Windows) or ⌥F10 (MacOS)&lt;br /&gt;
* Focus the footer: Alt + F11 (Windows) or ⌥F11 (MacOS)&lt;br /&gt;
Focusing the menubar or toolbar will start keyboard navigation at the first item in the menubar or toolbar, which will be highlighted with a gray background. Focusing the footer will start keyboard navigation at the first item in the element path, which will be highlighted with an underline.&lt;br /&gt;
==== Moving between UI sections ====&lt;br /&gt;
When keyboard navigation is active, pressing tab will move the focus to the next major section of the UI, where applicable. These sections are:&lt;br /&gt;
* the menubar&lt;br /&gt;
* each group of the toolbar&lt;br /&gt;
* the sidebar&lt;br /&gt;
* the element path in the footer&lt;br /&gt;
* the wordcount toggle button in the footer&lt;br /&gt;
* the branding link in the footer&lt;br /&gt;
* the editor resize handle in the footer&lt;br /&gt;
Pressing shift + tab will move backwards through the same sections, except when moving from the footer to the toolbar. Focusing the element path then pressing shift + tab will move focus to the first toolbar group, not the last.&lt;br /&gt;
==== Moving within UI sections ====&lt;br /&gt;
Keyboard navigation within UI sections can usually be achieved using the left and right arrow keys. This includes:&lt;br /&gt;
* moving between menus in the menubar&lt;br /&gt;
* moving between buttons in a toolbar group&lt;br /&gt;
* moving between items in the element path&lt;br /&gt;
In all these UI sections, keyboard navigation will cycle within the section. For example, focusing the last button in a toolbar group then pressing right arrow will move focus to the first item in the same toolbar group.&lt;br /&gt;
==== Executing buttons ====&lt;br /&gt;
To execute a button, navigate the selection to the desired button and hit space or enter.&lt;br /&gt;
==== Opening, navigating and closing menus ====&lt;br /&gt;
When focusing a menubar button or a toolbar button with a menu, pressing space, enter or down arrow will open the menu. When the menu opens the first item will be selected. To move up or down the menu, press the up or down arrow key respectively. This is the same for submenus, which can also be opened and closed using the left and right arrow keys.&lt;br /&gt;
&lt;br /&gt;
To close any active menu, hit the escape key. When a menu is closed the selection will be restored to its previous selection. This also works for closing submenus.&lt;br /&gt;
==== Context toolbars and menus ====&lt;br /&gt;
To focus an open context toolbar such as the table context toolbar, press Ctrl + F9 (Windows) or ⌃F9 (MacOS).&lt;br /&gt;
&lt;br /&gt;
Context toolbar navigation is the same as toolbar navigation, and context menu navigation is the same as standard menu navigation.&lt;br /&gt;
==== Dialog navigation ====&lt;br /&gt;
There are two types of dialog UIs in TinyMCE: tabbed dialogs and non-tabbed dialogs.&lt;br /&gt;
&lt;br /&gt;
When a non-tabbed dialog is opened, the first interactive component in the dialog will be focused. Users can navigate between interactive components by pressing tab. This includes any footer buttons. Navigation will cycle back to the first dialog component if tab is pressed while focusing the last component in the dialog. Pressing shift + tab will navigate backwards.&lt;br /&gt;
&lt;br /&gt;
When a tabbed dialog is opened, the first button in the tab menu is focused. Pressing tab will navigate to the first interactive component in that tab, and will cycle through the tab&#039;s components, the footer buttons, then back to the tab button. To switch to another tab, focus the tab button for the current tab, then use the arrow keys to cycle through the tab buttons.&lt;br /&gt;
==== Accessibility shortcuts ====&lt;br /&gt;
This is a list of available keyboard shortcuts within the editor user interface.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Windows Command&lt;br /&gt;
!Mac Command&lt;br /&gt;
!Function&lt;br /&gt;
|-&lt;br /&gt;
|Enter / Spacebar&lt;br /&gt;
|Enter / Spacebar&lt;br /&gt;
|Execute command&lt;br /&gt;
|-&lt;br /&gt;
|Tab&lt;br /&gt;
|Tab&lt;br /&gt;
|Focus on next UI Element(such as: Menu bar, Toolbar, Toolbar Group, Status Bar Item)&lt;br /&gt;
|-&lt;br /&gt;
|Shift+Tab&lt;br /&gt;
|Shift+Tab&lt;br /&gt;
|Focus on previous UI Element(such as: Menu bar, Toolbar, Toolbar Group, Status Bar Item)&lt;br /&gt;
|-&lt;br /&gt;
|Right Arrow / Down Arrow&lt;br /&gt;
|Right Arrow / Down Arrow&lt;br /&gt;
|Focus next Control(such as: toolbar button, menu, or menu item)&lt;br /&gt;
|-&lt;br /&gt;
|Left Arrow / Up Arrow&lt;br /&gt;
|Left Arrow / Up Arrow&lt;br /&gt;
|Focus previous Control(such as: toolbar button, menu, or menu item)&lt;br /&gt;
|-&lt;br /&gt;
|Down Arrow / Spacebar&lt;br /&gt;
|Down Arrow / Spacebar&lt;br /&gt;
|Open menu or toolbar menu button&lt;br /&gt;
|-&lt;br /&gt;
|Spacebar&lt;br /&gt;
|Spacebar&lt;br /&gt;
|Open group toolbar button&lt;br /&gt;
|-&lt;br /&gt;
|Down Arrow&lt;br /&gt;
|Down Arrow&lt;br /&gt;
|Open split toolbar button&lt;br /&gt;
|-&lt;br /&gt;
|Shift+Enter&lt;br /&gt;
|Shift+Enter&lt;br /&gt;
|Open the popup menu on split toolbar buttons&lt;br /&gt;
|-&lt;br /&gt;
|Right Arrow&lt;br /&gt;
|Right Arrow&lt;br /&gt;
|Open submenu&lt;br /&gt;
|-&lt;br /&gt;
|Left Arrow / Esc&lt;br /&gt;
|Left Arrow / Esc&lt;br /&gt;
|Close submenu&lt;br /&gt;
|-&lt;br /&gt;
|Esc&lt;br /&gt;
|Esc&lt;br /&gt;
|Close dialog&lt;br /&gt;
|-&lt;br /&gt;
|Esc&lt;br /&gt;
|Esc&lt;br /&gt;
|Close menu&lt;br /&gt;
|-&lt;br /&gt;
|Esc&lt;br /&gt;
|Esc&lt;br /&gt;
|Move focus back to editor body&lt;br /&gt;
|}&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: Browsers and Screen Readers provide additional shortcuts within the editor context.&lt;br /&gt;
==Site administration settings==&lt;br /&gt;
=== General settings ===&lt;br /&gt;
From &#039;&#039;Site administration &amp;gt; Plugins &amp;gt; Text editors &amp;gt; TinyMCE editor&#039;&#039; you can disable and enable certain settings, for example the Tiny HTML formatter, Tiny no-auto link and access the setting for the paid service TinyMCE Premium.&lt;br /&gt;
&lt;br /&gt;
You can also disable the TinyMCE branding logo which appears at the bottom of the editor.&lt;br /&gt;
&lt;br /&gt;
====TinyMCE Premium====&lt;br /&gt;
TinyMCE Premium requires a paid subscription. Your API key is available on your [https://www.tiny.cloud/ Tiny Cloud] account page if you have purchased a subscription, or if you are on a free trial. Enter the API key from Site administration &amp;gt; Plugins &amp;gt; Text editors &amp;gt; TinyMCE Premium.&lt;br /&gt;
&lt;br /&gt;
For TinyMCE premium features charging is done on &amp;quot;per request&amp;quot; basis (number of editor loads). You can make use of the capability &#039;Access TinyMCE Premium features&#039; (tiny/premium:accesspremium) (new in Moodle 4.4) to control which users can use premium features and in which context.&lt;br /&gt;
&lt;br /&gt;
The TinyMCE features that may be available to your Moodle site with a Premium subscription are:&lt;br /&gt;
&lt;br /&gt;
* Advanced Tables&lt;br /&gt;
* Advanced Typography&lt;br /&gt;
* Case Change&lt;br /&gt;
* Checklist&lt;br /&gt;
* Enhanced Image Editing&lt;br /&gt;
* Export&lt;br /&gt;
* Footnotes&lt;br /&gt;
* Format Painter&lt;br /&gt;
* Link Checker&lt;br /&gt;
* Page Embed&lt;br /&gt;
* Permanent Pen&lt;br /&gt;
* PowerPaste&lt;br /&gt;
* Spell Checker Pro&lt;br /&gt;
* Spelling Autocorrect&lt;br /&gt;
* Table of Contents&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You can learn more about these features on [https://www.tiny.cloud/tinymce/features/#productivity TinyMCE&#039;s website]. Please note that not all plugins listed on TinyMCE&#039;s website are currently available to Moodle users.&lt;br /&gt;
&lt;br /&gt;
=== Equation editor settings ===&lt;br /&gt;
[[File:Tiny - Equation editor settings.png|thumb]]&lt;br /&gt;
The equation editor has 4 tabs: Operators, Arrows, Greek symbols, and Advanced. The commands that are available on each tab and their order can be configured in &#039;&#039;Site administration &amp;gt; Plugins &amp;gt; Text editors &amp;gt; TinyMCE editor &amp;gt; Equation editor settings&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
For each group, the list of commands is shown in TeX format.&lt;br /&gt;
=== Tiny Record RTC plugin for Moodle ===&lt;br /&gt;
[[File:Tiny - RTC settings.png|thumb]]&lt;br /&gt;
Tiny fully supports media recording through. Internally, RecordRTC is utilised, an open source JavaScript library using WebRTC for audio and video recording. To configure its settings, navigate to &#039;&#039;Site administration &amp;gt; Plugins &amp;gt; Text editors &amp;gt; TinyMCE editor &amp;gt; RecordRTC&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
The following options have an impact on server resources, both in terms of bandwidth and disk usage:&lt;br /&gt;
* &#039;&#039;&#039;Allowed types&#039;&#039;&#039;: You can specify whether &#039;&#039;&#039;Audio and video&#039;&#039;&#039; recording are supported or &#039;&#039;&#039;Audio only&#039;&#039;&#039; or &#039;&#039;&#039;Video only&#039;&#039;&#039;. There are two capabilities to control access to the TinyMCE buttons: &#039;&#039;&#039;[[Capabilities/tiny/recordrtc:recordvideo]]&#039;&#039;&#039; and &#039;&#039;&#039;[[Capabilities/tiny/recordrtc:recordaudio]]&#039;&#039;&#039; &lt;br /&gt;
* &#039;&#039;&#039;Audio bitrate&#039;&#039;&#039; and &#039;&#039;&#039;Video bitrate&#039;&#039;&#039;: The lower the bitrates, the smaller the file sizes, and vice versa. The default bitrate for recorded audio (128000) should generate files of about 15 KB per minute; the default bitrate for recorded video (2500000) to files of approximately 20 MB per minute.&lt;br /&gt;
* &#039;&#039;&#039;Audio time limit in seconds&#039;&#039;&#039; and &#039;&#039;&#039;Video time limit in seconds&#039;&#039;&#039;: The default time limit is 2 minutes for audio and video recording. Again, the longer the maximum recording length, the bigger the resulting files. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Recordings are stored in subdirectories of &#039;&#039;$CFG-&amp;gt;dataroot&amp;gt;/filedir&#039;&#039;. Ensure &#039;&#039;post_max_size&#039;&#039; and &#039;&#039;upload_max_filesize&#039;&#039; are configured in line with your expected maximum recording sizes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[es:Editor TinyMCE]]&lt;br /&gt;
[[de:TinyMCE-Editor]]&lt;br /&gt;
[[fr:Éditeur TinyMCE]]&lt;/div&gt;</summary>
		<author><name>Michaelh2</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/501/en/index.php?title=TinyMCE_editor&amp;diff=148019</id>
		<title>TinyMCE editor</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/501/en/index.php?title=TinyMCE_editor&amp;diff=148019"/>
		<updated>2024-03-11T06:40:40Z</updated>

		<summary type="html">&lt;p&gt;Michaelh2: Minor tweaks to TinyMCE Premium wording for clarification/consistency.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Editing text}}&lt;br /&gt;
==What is TinyMCE?==&lt;br /&gt;
TinyMCE is a powerful rich-text editor that allows users to create formatted content within a user-friendly interface.&lt;br /&gt;
&lt;br /&gt;
The popular editor is the default editor in new installations of Moodle 4.2 onwards and can be made default in upgraded sites from &#039;&#039;Administration &amp;gt; Site administration &amp;gt; Plugins &amp;gt; Text editors &amp;gt; Manage editors&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If enabled, users may select the &#039;&#039;&#039;TinyMCE editor&#039;&#039;&#039; from the &#039;&#039;User menu &amp;gt; Preferences &amp;gt; Editor preferences.&#039;&#039;&lt;br /&gt;
{{MediaPlayer | url = https://youtu.be/Q-D6nWSusrY | desc = Overview of TinyMCE}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tiny Toolbar ==&lt;br /&gt;
The following buttons are available on the toolbar (not all buttons might show in all scenarios:)&lt;br /&gt;
[[File:latestTiny.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The available buttons are as follows:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!#&lt;br /&gt;
!Button&lt;br /&gt;
!#&lt;br /&gt;
!Button&lt;br /&gt;
!#&lt;br /&gt;
!Button&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Undo and Redo&lt;br /&gt;
|10&lt;br /&gt;
|No auto-link NEW IN 4.3&lt;br /&gt;
|18&lt;br /&gt;
|Numbered list&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Bold and Italic&lt;br /&gt;
|11&lt;br /&gt;
|Full screen NEW IN 4.3&lt;br /&gt;
|19&lt;br /&gt;
|Equation editor&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Insert image/modify properties&lt;br /&gt;
|12&lt;br /&gt;
|Align left&lt;br /&gt;
|20&lt;br /&gt;
|Toggle second toolbar (if present)&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Insert audio/video/modify properties&lt;br /&gt;
|13&lt;br /&gt;
|Align centre&lt;br /&gt;
|21&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|[[Audio|Record audio]]&lt;br /&gt;
|14&lt;br /&gt;
|Align right&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|[[Video|Record video]]&lt;br /&gt;
|15&lt;br /&gt;
|L/R and R/L directionality&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|Insert H5P / modify H5P properties&lt;br /&gt;
|16&lt;br /&gt;
|Decrease/increase indent&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|8&lt;br /&gt;
|Link&lt;br /&gt;
|17&lt;br /&gt;
|Bullets list&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|9&lt;br /&gt;
|Unlink&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
Some button have pre-requisites to display, for instance, the equation editor button will only show if either the [[MathJax filter|MathJax]] or the [[TeX notation filter|TeX notation]] filters are enabled (in &#039;&#039;Site administration &amp;gt; Plugins &amp;gt; Filters &amp;gt; Manage filters&#039;&#039;), while the H5P option will only show if the &#039;&#039;tiny/h5p:addembed&#039;&#039; capability has been granted.&lt;br /&gt;
&lt;br /&gt;
== Tiny features ==&lt;br /&gt;
[[File:Tiny - Insert menu.png|thumb]]&lt;br /&gt;
The following features are available from the &#039;&#039;&#039;Insert&#039;&#039;&#039; menu:&lt;br /&gt;
=== Insert / Edit image ===&lt;br /&gt;
The easiest way to insert an image is via drag&#039;n&#039;drop. Alternatively, you can use the &#039;&#039;Insert image&#039;&#039; tool, which gives you more control over some image properties:&lt;br /&gt;
* &#039;&#039;&#039;URL&#039;&#039;&#039;: The (internal or external) address of the image. You can either enter a URL manually or select an image from the repository browser, which adds the URL automatically.&lt;br /&gt;
*&#039;&#039;&#039;Description&#039;&#039;&#039;: Unless the image is labelled decorative only, a description must be provided for screenreader users&lt;br /&gt;
*&#039;&#039;&#039;Size&#039;&#039;&#039;: Initially, the image&#039;s width and height are set. These can be adjusted to fit your text. When the &#039;&#039;Auto size&#039;&#039; checkbox remains ticked, the image&#039;s width-height ratio stays intact.&lt;br /&gt;
* &#039;&#039;&#039;Alignment&#039;&#039;&#039;: Options are &#039;&#039;Top&#039;&#039;, &#039;&#039;Middle&#039;&#039;, and &#039;&#039;Bottom&#039;&#039;.&lt;br /&gt;
[[File:Tiny - Image.png|border|center|frameless|450x450px]]&lt;br /&gt;
To modify image properties once it has been added to your text, select the image and press the &#039;&#039;Image&#039;&#039; button on the mini toolbar that shows up.&lt;br /&gt;
=== Insert / Edit Link ===&lt;br /&gt;
When inserting or editing a link to another (internal or external) page, you can provide the following settings:&lt;br /&gt;
* &#039;&#039;&#039;URL&#039;&#039;&#039;: The address of the page to navigate to. If left empty, the option &#039;&#039;&amp;lt;top&amp;gt;&#039;&#039; and &#039;&#039;&amp;lt;bottom&amp;gt;&#039;&#039; are available&lt;br /&gt;
* &#039;&#039;&#039;Text to display&#039;&#039;&#039;: The text that is shown in the text, represented as a link&lt;br /&gt;
* &#039;&#039;&#039;Title&#039;&#039;&#039;: The text shown when hovering over the link&lt;br /&gt;
* &#039;&#039;&#039;Browse repositories&#039;&#039;&#039;: Upload a file to link to.&lt;br /&gt;
* &#039;&#039;&#039;Open link in...&#039;&#039;&#039;: The page can either be opened in the &#039;&#039;&#039;Current Window&#039;&#039;&#039; or a &#039;&#039;&#039;New window&#039;&#039;&#039;&lt;br /&gt;
[[File:Tiny - Link.png|border|center|frameless|450x450px]]&lt;br /&gt;
=== Insert / Edit Multimedia ===&lt;br /&gt;
To insert existing audio or videos clips, the TinyMCE editor supports Moodle standard [[Media embedding|Media embedding interface]]. &lt;br /&gt;
[[File:Tiny - Audio &amp;amp; Video.png|thumb]]&lt;br /&gt;
=== Record audio and video ===&lt;br /&gt;
TinyMCE lets users record [[audio]] and [[video]] clips which will attach to the text once recorded. Each recording comprises three steps:&lt;br /&gt;
# &#039;&#039;&#039;Start recording&#039;&#039;&#039;: when ready, press the &#039;&#039;Start recording&#039;&#039; button&lt;br /&gt;
# &#039;&#039;&#039;Stop recording&#039;&#039;&#039;: when completed, press the &#039;&#039;Stop recording&#039;&#039; button&lt;br /&gt;
# &#039;&#039;&#039;Review recording&#039;&#039;&#039;: you can listen to or watch the recording via the provided controls. Either attach the clip to your text or record it again.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The maximum length and quality (bitrate) can be [[TinyMCE editor#Tiny Record RTC plugin for Moodle|configured]] at admin level.&lt;br /&gt;
=== Insert / Edit code sample ===&lt;br /&gt;
The Tiny editor lets you insert and embed syntax color highlighted code snippets into the editable area.&lt;br /&gt;
[[File:Tiny - Code Sample.png|border|center|frameless|600x600px]]&lt;br /&gt;
While you can select the (programming) language at the top, it doesn&#039;t have any impact on the way the code is displayed.&lt;br /&gt;
&lt;br /&gt;
Tiny also supports formatting of code elements (&#039;&#039;Format -&amp;gt; Code&#039;&#039;), which changes the selected text to the internally defined &amp;lt;code&amp;gt;code style&amp;lt;/code&amp;gt;.&lt;br /&gt;
=== Insert Table ===&lt;br /&gt;
Tiny comes with comprehensive table management functionality to handle grid-like structures in your text. In addition to the Insert table menu item, an entire main menu has been dedicated to tables.&lt;br /&gt;
[[File:Tiny - Table.png|border|center|frameless|450x450px]]&lt;br /&gt;
Once a table has been added, you can customise individual cells, row, columns, and the properties of the entire table. The following self-explanatory menu items are available, all supporting standard HTML table options:&lt;br /&gt;
* Cell&lt;br /&gt;
** Cell properties&lt;br /&gt;
** Merge cells&lt;br /&gt;
** Split cells&lt;br /&gt;
* Row&lt;br /&gt;
** Insert row before&lt;br /&gt;
** Insert row after&lt;br /&gt;
** Delete row&lt;br /&gt;
** Row properties&lt;br /&gt;
** Cut row&lt;br /&gt;
** Copy row&lt;br /&gt;
** Paste row before&lt;br /&gt;
** Paste row after&lt;br /&gt;
* Column&lt;br /&gt;
** Insert column before&lt;br /&gt;
** Insert column after&lt;br /&gt;
** Delete column&lt;br /&gt;
** Cut column&lt;br /&gt;
** Copy column&lt;br /&gt;
** Paste column before&lt;br /&gt;
** Paste column after&lt;br /&gt;
* Table properties&lt;br /&gt;
* Delete table&lt;br /&gt;
[[File:Tiny - Table operations.png|border|center|frameless|600x600px]]&lt;br /&gt;
The table editor also shows context-sensitive menus when editing different table elements.&lt;br /&gt;
=== Insert special character ===&lt;br /&gt;
The special character picker lets you insert letters and symbols (a map of special unicode characters) that are difficult or impossible to access via your keyboard. You can either search by keyword and / or browse categories.&lt;br /&gt;
[[File:Tiny - Special character.png|border|center|frameless|450x450px]]&lt;br /&gt;
=== Insert Emojis ===&lt;br /&gt;
Bring a smiley to your content: The emoji picker lets you insert pictograms. You can either search by keyword and / or browse categories.&lt;br /&gt;
[[File:Tiny - Emojis.png|border|center|frameless|450x450px]]&lt;br /&gt;
=== Insert HTML elements ===&lt;br /&gt;
The following 4 HTML elements are supported by TinyMCE via menus:&lt;br /&gt;
* &#039;&#039;&#039;Insert horizontal line&#039;&#039;&#039;: Adds an HTML line to your text.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Insert page break&#039;&#039;&#039;: Adds a page break (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) to your text.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Insert nonbreaking space&#039;&#039;&#039;: Add an nonbreaking space (&amp;lt;code&amp;gt;&amp;amp;amp;nbsp;&amp;lt;/code&amp;gt;) at the current cursor location.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Insert anchor&#039;&#039;&#039;: Insert anchors (sometimes referred to as a bookmarks) to your text. Users will be prompted via a dialog box to enter a string. The string will be inserted into the HTML as an anchor id at the location of the cursor. For example, a user places their cursor at the beginning of &amp;quot;Moodle&amp;quot; and clicks on the anchor button and enters &amp;quot;start&amp;quot; in the dialog box. The resulting HTML will take the form of &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;p&amp;gt;&amp;lt;a id=&amp;quot;start&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/nowiki&amp;gt;Moodle&amp;lt;nowiki&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
=== Insert date/time ===&lt;br /&gt;
The Insert date/time options lets you easily insert the current date and/or time into the editable area at the cursor insertion point.&lt;br /&gt;
[[File:Tiny - DateTime.png|border|center|frameless]]&lt;br /&gt;
The available format options depend on the selected language. &lt;br /&gt;
[[File:Tiny - Equation editor.png|thumb]]&lt;br /&gt;
=== Equation editor ===&lt;br /&gt;
If either the [[MathJax filter|MathJax]] or the [[TeX notation filter|TeX]] filters are enabled (in &#039;&#039;Site administration &amp;gt; Plugins &amp;gt; Filters &amp;gt; Manage filters&#039;&#039;) then the &#039;&#039;Insert equation&#039;&#039; option is provided in the TinyMCE editor for launching the equation editor.&lt;br /&gt;
&lt;br /&gt;
Internally, the equation editor uses the [https://docs.moodle.org/400/en/TeX_notation_filter TeX notation] which can either be entered manually and / or interactively. The interactive elements are grouped into 4 categories (Operators, Arrows, Greek symbols, and Advanced). The content of each tab can be configured via the [[Equation editor settings]].&lt;br /&gt;
&lt;br /&gt;
At the bottom of the editor, a preview is shown.&lt;br /&gt;
=== Configure H5P content ===&lt;br /&gt;
You can embed [[H5P]] content via the &#039;&#039;Configure H5P content&#039;&#039; menu as follows:&lt;br /&gt;
# Browse the Content bank repository and select an H5P file&lt;br /&gt;
# Choose to either make a copy of the file or create a shortcut&lt;br /&gt;
# Optionally, configure the H5P options (Allow download, Embed button, Copyright button)&lt;br /&gt;
# Click the button &#039;Select this file&#039;&lt;br /&gt;
# Click &#039;Insert H5P&#039;These steps will automatically enter the internal address in the H5P URL field. Alternatively, you can enter any internal or external H5P URL manually.&lt;br /&gt;
Note: If you create a shortcut to the file, you can edit it in the Content bank and any activities with a link to the file will be updated.&lt;br /&gt;
== Tiny tools ==&lt;br /&gt;
[[File:Tiny - Tools menu.png|thumb]]&lt;br /&gt;
The following tools are available in vie the &#039;&#039;&#039;Tools&#039;&#039;&#039; menu:&lt;br /&gt;
=== View source code ===&lt;br /&gt;
The source code pop up window displays the code of the page, usually HTML or JS. The code can be modified in plain text; once the window is closed, any changes will be reflected in the WYSIWYG mode.&lt;br /&gt;
[[File:Tiny - Source code.png|center|frameless|900x900px]]&lt;br /&gt;
=== Word count ===&lt;br /&gt;
The word pop up windows displays the number of words and the number of characters (with and without spaces) of the entire document and the selected text, respectively.&lt;br /&gt;
[[File:Tiny - Word count.png|border|center|frameless|600x600px|alt=]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The number of words are also shown in the editor&#039;s footer.&lt;br /&gt;
=== Accessibility checker ===&lt;br /&gt;
The automated [[accessibility]] checker checks for some common errors in the text. These are usually elements in the way the text is constructed that can prevent all users from having equal access to information and functionality. The list of problems that the accessibility checker looks for is:&lt;br /&gt;
* Images with missing or empty alt text (unless they have the presentation role)&lt;br /&gt;
* Contrast of font colour and background colour meets [https://en.wikipedia.org/wiki/Web_Content_Accessibility_Guidelines WCAG AA guidelines]&lt;br /&gt;
* Long blocks of text are sufficiently broken up into headings&lt;br /&gt;
* All tables require captions&lt;br /&gt;
* Tables should not contain merged cells as they are difficult to navigate with screen readers&lt;br /&gt;
* All tables should contain row or column headers&lt;br /&gt;
=== Media Manager ===&lt;br /&gt;
The media manager shows all media files that have been embedded in the text. &lt;br /&gt;
&lt;br /&gt;
The top part of the media manager shows the familiar file management element where you can add, download, and delete attached files.&lt;br /&gt;
&lt;br /&gt;
Files that have been attached and deleted again are shown at the bottom half of the screen.&lt;br /&gt;
[[File:Tiny - Media manager.png|border|center|frameless|600x600px]]&lt;br /&gt;
== Keyboard shortcuts ==&lt;br /&gt;
The following keyboard shortcuts will work in the Tiny text editor in most browsers. Note that for many of these commands to work you need to either click in the text editor or select content in the text editor.&lt;br /&gt;
=== Editor shortcuts ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Windows Command&lt;br /&gt;
!Mac Command&lt;br /&gt;
!Function&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + Shift + f&lt;br /&gt;
|⌘ + Shift + f&lt;br /&gt;
|Full screen toggle&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + c&lt;br /&gt;
|⌘ + c&lt;br /&gt;
|Copy&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + v&lt;br /&gt;
|⌘ + v&lt;br /&gt;
|Paste&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + Shift + v&lt;br /&gt;
|⌘ + Shift + v&lt;br /&gt;
|Paste without formatting (very useful)&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + x&lt;br /&gt;
|⌘ + x&lt;br /&gt;
|Cut&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + z&lt;br /&gt;
|⌘ + z&lt;br /&gt;
|Undo&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + y&lt;br /&gt;
|⌘ + y&lt;br /&gt;
|Redo&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + a&lt;br /&gt;
|⌘ + a&lt;br /&gt;
|Select all&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + f&lt;br /&gt;
|⌘ + f&lt;br /&gt;
|Find and replace&lt;br /&gt;
|-&lt;br /&gt;
|F3&lt;br /&gt;
|&amp;lt;s&amp;gt;F3&amp;lt;/s&amp;gt;&lt;br /&gt;
|Find next&lt;br /&gt;
|-&lt;br /&gt;
|Shift + F3&lt;br /&gt;
|&amp;lt;s&amp;gt;Shift + F3&amp;lt;/s&amp;gt;&lt;br /&gt;
|Find previous&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + b&lt;br /&gt;
|⌘ + b&lt;br /&gt;
|Bold&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + i&lt;br /&gt;
|⌘ + i&lt;br /&gt;
|Italics&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + u&lt;br /&gt;
|⌘ + u&lt;br /&gt;
|Underline&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + k&lt;br /&gt;
|⌘ + k&lt;br /&gt;
|Insert/edit link&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + Right arrow&lt;br /&gt;
|Option + Right arrow&lt;br /&gt;
|Move to the end of the next word&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + Left arrow&lt;br /&gt;
|Option + Left arrow&lt;br /&gt;
|Move to the end of the previous word&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + Shift + Right arrow&lt;br /&gt;
|Shift + Option + Right arrow&lt;br /&gt;
|Select the next word or letter&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + Shift + Left arrow&lt;br /&gt;
|Shift + Option + Left arrow&lt;br /&gt;
|Select the previous word or letter&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + Shift + Home&lt;br /&gt;
|&amp;lt;s&amp;gt;⌘ + Shift + Home&amp;lt;/s&amp;gt;&lt;br /&gt;
|Select from the cursor to the beginning of the page&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + Shift + End&lt;br /&gt;
|&amp;lt;s&amp;gt;⌘ + Shift + End&amp;lt;/s&amp;gt;&lt;br /&gt;
|Select from the cursor to the end of the page&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + Home&lt;br /&gt;
|⌘ + Up arrow&lt;br /&gt;
|Move to the beginning of the page&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + End&lt;br /&gt;
|⌘ + Down arrow&lt;br /&gt;
|Move to the end of the page&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + Backspace&lt;br /&gt;
|&amp;lt;s&amp;gt;⌘ + Backspace&amp;lt;/s&amp;gt;&lt;br /&gt;
|Delete word or letter to the left&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + Delete&lt;br /&gt;
|&amp;lt;s&amp;gt;⌘ + Delete&amp;lt;/s&amp;gt;&lt;br /&gt;
|Delete word or letter to the right&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl + P&lt;br /&gt;
|⌘ + P&lt;br /&gt;
|Print&lt;br /&gt;
|-&lt;br /&gt;
|Alt+Shift+1&lt;br /&gt;
|Ctrl+Option+1&lt;br /&gt;
|Header 1&lt;br /&gt;
|-&lt;br /&gt;
|Alt+Shift+2&lt;br /&gt;
|Ctrl+Option+2&lt;br /&gt;
|Header 2&lt;br /&gt;
|-&lt;br /&gt;
|Alt+Shift+3&lt;br /&gt;
|Ctrl+Option+3&lt;br /&gt;
|Header 3&lt;br /&gt;
|-&lt;br /&gt;
|Alt+Shift+4&lt;br /&gt;
|Ctrl+Option+4&lt;br /&gt;
|Header 4&lt;br /&gt;
|-&lt;br /&gt;
|Alt+Shift+5&lt;br /&gt;
|Ctrl+Option+5&lt;br /&gt;
|Header 5&lt;br /&gt;
|-&lt;br /&gt;
|Alt+Shift+6&lt;br /&gt;
|Ctrl+Option+6&lt;br /&gt;
|Header 6&lt;br /&gt;
|-&lt;br /&gt;
|Alt+Shift+7&lt;br /&gt;
|Ctrl+Option+7&lt;br /&gt;
|Paragraph&lt;br /&gt;
|-&lt;br /&gt;
|Alt+Shift+8&lt;br /&gt;
|Ctrl+Option+8&lt;br /&gt;
|Div&lt;br /&gt;
|-&lt;br /&gt;
|Alt+Shift+9&lt;br /&gt;
|Ctrl+Option+9&lt;br /&gt;
|Address&lt;br /&gt;
|-&lt;br /&gt;
|Alt+0&lt;br /&gt;
|Option+0&lt;br /&gt;
|Help dialogue (list of shortcuts)&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl and +&lt;br /&gt;
|⌘ and +&lt;br /&gt;
|Zoom in (not specific to the editor, but very useful)&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl and -&lt;br /&gt;
|⌘ and -&lt;br /&gt;
|Zoom out (not specific to the editor, but very useful)&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl and 0&lt;br /&gt;
|⌘ and 0&lt;br /&gt;
|Reset zoom (not specific to the editor, but very useful)&lt;br /&gt;
|-&lt;br /&gt;
|Double-click&lt;br /&gt;
|Double-click&lt;br /&gt;
|Select word&lt;br /&gt;
|-&lt;br /&gt;
|Triple-click&lt;br /&gt;
|Triple-click&lt;br /&gt;
|Select line&lt;br /&gt;
|}&lt;br /&gt;
=== Keyboard navigation ===&lt;br /&gt;
The sections of the outer UI of the editor - the menubar, toolbar, sidebar and footer - are all keyboard navigable. &lt;br /&gt;
==== Activating keyboard navigation ====&lt;br /&gt;
There are multiple ways to activate keyboard navigation:&lt;br /&gt;
* Focus the menubar: Alt + F9 (Windows) or ⌥F9 (MacOS)&lt;br /&gt;
* Focus the toolbar: Alt + F10 (Windows) or ⌥F10 (MacOS)&lt;br /&gt;
* Focus the footer: Alt + F11 (Windows) or ⌥F11 (MacOS)&lt;br /&gt;
Focusing the menubar or toolbar will start keyboard navigation at the first item in the menubar or toolbar, which will be highlighted with a gray background. Focusing the footer will start keyboard navigation at the first item in the element path, which will be highlighted with an underline.&lt;br /&gt;
==== Moving between UI sections ====&lt;br /&gt;
When keyboard navigation is active, pressing tab will move the focus to the next major section of the UI, where applicable. These sections are:&lt;br /&gt;
* the menubar&lt;br /&gt;
* each group of the toolbar&lt;br /&gt;
* the sidebar&lt;br /&gt;
* the element path in the footer&lt;br /&gt;
* the wordcount toggle button in the footer&lt;br /&gt;
* the branding link in the footer&lt;br /&gt;
* the editor resize handle in the footer&lt;br /&gt;
Pressing shift + tab will move backwards through the same sections, except when moving from the footer to the toolbar. Focusing the element path then pressing shift + tab will move focus to the first toolbar group, not the last.&lt;br /&gt;
==== Moving within UI sections ====&lt;br /&gt;
Keyboard navigation within UI sections can usually be achieved using the left and right arrow keys. This includes:&lt;br /&gt;
* moving between menus in the menubar&lt;br /&gt;
* moving between buttons in a toolbar group&lt;br /&gt;
* moving between items in the element path&lt;br /&gt;
In all these UI sections, keyboard navigation will cycle within the section. For example, focusing the last button in a toolbar group then pressing right arrow will move focus to the first item in the same toolbar group.&lt;br /&gt;
==== Executing buttons ====&lt;br /&gt;
To execute a button, navigate the selection to the desired button and hit space or enter.&lt;br /&gt;
==== Opening, navigating and closing menus ====&lt;br /&gt;
When focusing a menubar button or a toolbar button with a menu, pressing space, enter or down arrow will open the menu. When the menu opens the first item will be selected. To move up or down the menu, press the up or down arrow key respectively. This is the same for submenus, which can also be opened and closed using the left and right arrow keys.&lt;br /&gt;
&lt;br /&gt;
To close any active menu, hit the escape key. When a menu is closed the selection will be restored to its previous selection. This also works for closing submenus.&lt;br /&gt;
==== Context toolbars and menus ====&lt;br /&gt;
To focus an open context toolbar such as the table context toolbar, press Ctrl + F9 (Windows) or ⌃F9 (MacOS).&lt;br /&gt;
&lt;br /&gt;
Context toolbar navigation is the same as toolbar navigation, and context menu navigation is the same as standard menu navigation.&lt;br /&gt;
==== Dialog navigation ====&lt;br /&gt;
There are two types of dialog UIs in TinyMCE: tabbed dialogs and non-tabbed dialogs.&lt;br /&gt;
&lt;br /&gt;
When a non-tabbed dialog is opened, the first interactive component in the dialog will be focused. Users can navigate between interactive components by pressing tab. This includes any footer buttons. Navigation will cycle back to the first dialog component if tab is pressed while focusing the last component in the dialog. Pressing shift + tab will navigate backwards.&lt;br /&gt;
&lt;br /&gt;
When a tabbed dialog is opened, the first button in the tab menu is focused. Pressing tab will navigate to the first interactive component in that tab, and will cycle through the tab&#039;s components, the footer buttons, then back to the tab button. To switch to another tab, focus the tab button for the current tab, then use the arrow keys to cycle through the tab buttons.&lt;br /&gt;
==== Accessibility shortcuts ====&lt;br /&gt;
This is a list of available keyboard shortcuts within the editor user interface.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Windows Command&lt;br /&gt;
!Mac Command&lt;br /&gt;
!Function&lt;br /&gt;
|-&lt;br /&gt;
|Enter / Spacebar&lt;br /&gt;
|Enter / Spacebar&lt;br /&gt;
|Execute command&lt;br /&gt;
|-&lt;br /&gt;
|Tab&lt;br /&gt;
|Tab&lt;br /&gt;
|Focus on next UI Element(such as: Menu bar, Toolbar, Toolbar Group, Status Bar Item)&lt;br /&gt;
|-&lt;br /&gt;
|Shift+Tab&lt;br /&gt;
|Shift+Tab&lt;br /&gt;
|Focus on previous UI Element(such as: Menu bar, Toolbar, Toolbar Group, Status Bar Item)&lt;br /&gt;
|-&lt;br /&gt;
|Right Arrow / Down Arrow&lt;br /&gt;
|Right Arrow / Down Arrow&lt;br /&gt;
|Focus next Control(such as: toolbar button, menu, or menu item)&lt;br /&gt;
|-&lt;br /&gt;
|Left Arrow / Up Arrow&lt;br /&gt;
|Left Arrow / Up Arrow&lt;br /&gt;
|Focus previous Control(such as: toolbar button, menu, or menu item)&lt;br /&gt;
|-&lt;br /&gt;
|Down Arrow / Spacebar&lt;br /&gt;
|Down Arrow / Spacebar&lt;br /&gt;
|Open menu or toolbar menu button&lt;br /&gt;
|-&lt;br /&gt;
|Spacebar&lt;br /&gt;
|Spacebar&lt;br /&gt;
|Open group toolbar button&lt;br /&gt;
|-&lt;br /&gt;
|Down Arrow&lt;br /&gt;
|Down Arrow&lt;br /&gt;
|Open split toolbar button&lt;br /&gt;
|-&lt;br /&gt;
|Shift+Enter&lt;br /&gt;
|Shift+Enter&lt;br /&gt;
|Open the popup menu on split toolbar buttons&lt;br /&gt;
|-&lt;br /&gt;
|Right Arrow&lt;br /&gt;
|Right Arrow&lt;br /&gt;
|Open submenu&lt;br /&gt;
|-&lt;br /&gt;
|Left Arrow / Esc&lt;br /&gt;
|Left Arrow / Esc&lt;br /&gt;
|Close submenu&lt;br /&gt;
|-&lt;br /&gt;
|Esc&lt;br /&gt;
|Esc&lt;br /&gt;
|Close dialog&lt;br /&gt;
|-&lt;br /&gt;
|Esc&lt;br /&gt;
|Esc&lt;br /&gt;
|Close menu&lt;br /&gt;
|-&lt;br /&gt;
|Esc&lt;br /&gt;
|Esc&lt;br /&gt;
|Move focus back to editor body&lt;br /&gt;
|}&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: Browsers and Screen Readers provide additional shortcuts within the editor context.&lt;br /&gt;
==Site administration settings==&lt;br /&gt;
=== General settings ===&lt;br /&gt;
From &#039;&#039;Site administration &amp;gt; Plugins &amp;gt; Text editors &amp;gt; TinyMCE editor&#039;&#039; you can disable and enable certain settings, for example &#039;&#039;&#039;New in 4.3&#039;&#039;&#039; the Tiny HTML formatter, Tiny no-auto link and access the setting for the paid service TinyMCE Premium.&lt;br /&gt;
&lt;br /&gt;
You can also disable the TinyMCE branding logo which appears at the bottom of the editor.&lt;br /&gt;
{{New features}}&lt;br /&gt;
====TinyMCE Premium====&lt;br /&gt;
TinyMCE Premium requires a paid subscription. Your API key is available on your [https://www.tiny.cloud/ Tiny Cloud] account page if you have purchased a subscription, or if you are on a free trial. Enter the API key from Site administration &amp;gt; Plugins &amp;gt; Text editors &amp;gt; TinyMCE Premium.&lt;br /&gt;
&lt;br /&gt;
The TinyMCE features that may be available to your Moodle site with a Premium subscription are:&lt;br /&gt;
&lt;br /&gt;
* Advanced Tables&lt;br /&gt;
* Advanced Typography&lt;br /&gt;
* Case Change&lt;br /&gt;
* Checklist&lt;br /&gt;
* Enhanced Image Editing&lt;br /&gt;
* Export&lt;br /&gt;
* Footnotes&lt;br /&gt;
* Format Painter&lt;br /&gt;
* Link Checker&lt;br /&gt;
* Page Embed&lt;br /&gt;
* Permanent Pen&lt;br /&gt;
* PowerPaste&lt;br /&gt;
* Spell Checker Pro&lt;br /&gt;
* Spelling Autocorrect&lt;br /&gt;
* Table of Contents&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You can learn more about these features on [https://www.tiny.cloud/tinymce/features/#productivity TinyMCE&#039;s website]. Please note that not all plugins listed on TinyMCE&#039;s website are currently available to Moodle users.&lt;br /&gt;
&lt;br /&gt;
=== Equation editor settings ===&lt;br /&gt;
[[File:Tiny - Equation editor settings.png|thumb]]&lt;br /&gt;
The equation editor has 4 tabs: Operators, Arrows, Greek symbols, and Advanced. The commands that are available on each tab and their order can be configured in &#039;&#039;Site administration &amp;gt; Plugins &amp;gt; Text editors &amp;gt; TinyMCE editor &amp;gt; Equation editor settings&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
For each group, the list of commands is shown in TeX format.&lt;br /&gt;
=== Tiny Record RTC plugin for Moodle ===&lt;br /&gt;
[[File:Tiny - RTC settings.png|thumb]]&lt;br /&gt;
Tiny fully supports media recording through. Internally, RecordRTC is utilised, an open source JavaScript library using WebRTC for audio and video recording. To configure its settings, navigate to &#039;&#039;Site administration &amp;gt; Plugins &amp;gt; Text editors &amp;gt; TinyMCE editor &amp;gt; RecordRTC&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
The following options have an impact on server resources, both in terms of bandwidth and disk usage:&lt;br /&gt;
* &#039;&#039;&#039;Allowed types&#039;&#039;&#039;: You can specify whether &#039;&#039;&#039;Audio and video&#039;&#039;&#039; recording are supported or &#039;&#039;&#039;Audio only&#039;&#039;&#039; or &#039;&#039;&#039;Video only&#039;&#039;&#039;. There are two capabilities to control access to the TinyMCE buttons: &#039;&#039;&#039;[[Capabilities/tiny/recordrtc:recordvideo]]&#039;&#039;&#039; and &#039;&#039;&#039;[[Capabilities/tiny/recordrtc:recordaudio]]&#039;&#039;&#039; &lt;br /&gt;
* &#039;&#039;&#039;Audio bitrate&#039;&#039;&#039; and &#039;&#039;&#039;Video bitrate&#039;&#039;&#039;: The lower the bitrates, the smaller the file sizes, and vice versa. The default bitrate for recorded audio (128000) should generate files of about 15 KB per minute; the default bitrate for recorded video (2500000) to files of approximately 20 MB per minute.&lt;br /&gt;
* &#039;&#039;&#039;Audio time limit in seconds&#039;&#039;&#039; and &#039;&#039;&#039;Video time limit in seconds&#039;&#039;&#039;: The default time limit is 2 minutes for audio and video recording. Again, the longer the maximum recording length, the bigger the resulting files. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Recordings are stored in subdirectories of &#039;&#039;$CFG-&amp;gt;dataroot&amp;gt;/filedir&#039;&#039;. Ensure &#039;&#039;post_max_size&#039;&#039; and &#039;&#039;upload_max_filesize&#039;&#039; are configured in line with your expected maximum recording sizes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[es:Editor TinyMCE]]&lt;br /&gt;
[[de:TinyMCE-Editor]]&lt;br /&gt;
[[fr:Éditeur TinyMCE]]&lt;/div&gt;</summary>
		<author><name>Michaelh2</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/501/en/index.php?title=Environment_-_PHP_extension_sodium&amp;diff=145947</id>
		<title>Environment - PHP extension sodium</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/501/en/index.php?title=Environment_-_PHP_extension_sodium&amp;diff=145947"/>
		<updated>2023-04-20T05:58:55Z</updated>

		<summary type="html">&lt;p&gt;Michaelh2: Updated to reflect the 4.2 requirement&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Environment}}&lt;br /&gt;
The php-sodium extension provides strong encryption capabilities in an easy and consistent way. This extension is required from Moodle 4.2. &lt;br /&gt;
&lt;br /&gt;
Note that it is still highly recommended to use php-sodium in Moodle 3.11, 4.0 and 4.1, which also support the extension. Sites which do not have this extension installed use a php-openssl based solution as a fallback, which is considered sub-optimal. See MDL-71421 for more details.&lt;br /&gt;
&lt;br /&gt;
See also &amp;lt;nowiki&amp;gt;https://www.php.net/manual/book.sodium.php&amp;lt;/nowiki&amp;gt; and &amp;lt;nowiki&amp;gt;https://py-ipv8.readthedocs.io/en/latest/preliminaries/install_libsodium/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
[[Category:Environment|PHP]]&lt;br /&gt;
[[es:admin/environment/php extension/sodium]]&lt;br /&gt;
[[fr:admin/environment/php extension/sodium]]&lt;/div&gt;</summary>
		<author><name>Michaelh2</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/501/en/index.php?title=report/security/report_security_check_preventexecpath&amp;diff=141570</id>
		<title>report/security/report security check preventexecpath</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/501/en/index.php?title=report/security/report_security_check_preventexecpath&amp;diff=141570"/>
		<updated>2021-08-25T03:09:56Z</updated>

		<summary type="html">&lt;p&gt;Michaelh2: Small layout tweak.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Security overview report}}Some administration options allow setting the path to executable files on the web server such as du, aspell, ghostscript and others. This can potentially cause a security risk. You can prevent administrators from changing these paths by adding the following setting to your config.php file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$CFG-&amp;gt;preventexecpath = true;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should also explicitly set the relevant paths in your config.php file such as:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$CFG-&amp;gt;pathtodu = &#039;PATH&#039;;&lt;br /&gt;
$CFG-&amp;gt;pathtounoconv = &#039;PATH&#039;;&lt;br /&gt;
$CFG-&amp;gt;aspellpath = &#039;PATH&#039;;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[es:report/security/report security check preventexecpath]]&lt;/div&gt;</summary>
		<author><name>Michaelh2</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/501/en/index.php?title=Site_security_settings&amp;diff=140554</id>
		<title>Site security settings</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/501/en/index.php?title=Site_security_settings&amp;diff=140554"/>
		<updated>2021-06-02T06:12:02Z</updated>

		<summary type="html">&lt;p&gt;Michaelh2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;.&lt;br /&gt;
{{Security}}&lt;br /&gt;
===Protect usernames===&lt;br /&gt;
&lt;br /&gt;
If enabled, when a user attempts to reset their password and enters a username or email address, the following message is displayed: &amp;quot;If you supplied a correct username or email address then an email should have been sent to you.&amp;quot; This is to prevent a malicious party from using the interface to determine which usernames and email addresses are in use in valid accounts.&lt;br /&gt;
&lt;br /&gt;
If the protect usernames setting is disabled, when a user attempts to reset their password they are provided with feedback regarding whether an account exists with the username or email address supplied. For example, the message &amp;quot;The email address was not found in the database&amp;quot; may be displayed.&lt;br /&gt;
&lt;br /&gt;
===Force users to login===&lt;br /&gt;
&lt;br /&gt;
If you turn this setting on, all users must login before they even see the [[Front Page]] of the site. Note however that this does not prevent guest access to courses, if you have autologin guests enabled in [[User policies]].&lt;br /&gt;
&lt;br /&gt;
===Force users to login for profiles===&lt;br /&gt;
&lt;br /&gt;
Leave this set to Yes to keep anonymous visitors away from user profiles. &lt;br /&gt;
&lt;br /&gt;
===Force users to login to view user pictures===&lt;br /&gt;
&lt;br /&gt;
If enabled, users must login in order to view user profile pictures and the default user picture will be used in all notification emails.&lt;br /&gt;
&lt;br /&gt;
===Open to search engines===&lt;br /&gt;
&lt;br /&gt;
Enabling this setting allows search engines crawlers guest access to your site. Any part of the site that allows guest access will then be searchable on search engines. In addition, people coming in to your site via a search engine search will automatically be logged in as a guest.&lt;br /&gt;
&lt;br /&gt;
=== Referrer policy ===&lt;br /&gt;
&lt;br /&gt;
A referrer policy can be set, various parts of moodle rely on the referrer being set so it&#039;s generally best to only remove or reduce the referrer for external links. So a policy of origin-when-cross-origin is probably the best balance. &lt;br /&gt;
See the MDN docs for more details:&lt;br /&gt;
&lt;br /&gt;
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referrer-Policy&lt;br /&gt;
&lt;br /&gt;
===Allow indexing by search engines===&lt;br /&gt;
This determines whether to allow search engines to index your site. The default is Everywhere except login and signup pages.&lt;br /&gt;
&lt;br /&gt;
===Profile visible roles===&lt;br /&gt;
Any role which is checked/ticked here will be visible on  user profiles and the Participation screen.&lt;br /&gt;
&lt;br /&gt;
===Maximum uploaded file size===&lt;br /&gt;
&lt;br /&gt;
Probably the most frequently asked question in the Moodle.org Using Moodle forums is &amp;quot;How do I increase the upload file size limit?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Upload file sizes are restricted in a number of ways - each one in this list restricts the following ones:&lt;br /&gt;
&lt;br /&gt;
1. The Apache server setting LimitRequestBody ... default in Apache 2.x or greater is set to 0 or an unlimited upload size&lt;br /&gt;
&lt;br /&gt;
2. The PHP site settings post_max_size and upload_max_filesize in php.ini : &#039;&#039;&#039;modify php.ini in web server directories&#039;&#039;&#039; ( apache2.x.x/bin/php.ini ) not in php directories :&lt;br /&gt;
 &lt;br /&gt;
 post_max_size = 128M;  to increase limit to 128 Megabytes;&lt;br /&gt;
 upload_max_filesize = 128M;  to increase limit to 128 Megabytes;&lt;br /&gt;
 max_execution_time = 600 ; Maximum execution time of each script, in seconds;&lt;br /&gt;
&lt;br /&gt;
3. The Moodle site-wide maximum uploaded file size setting: &#039;&#039;Settings &amp;gt; Site administration &amp;gt; Security &amp;gt; Site policies &amp;gt; Maximum uploaded file size&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
4. The Moodle course maximum uploaded file size setting in the course default  settings: &#039;&#039;Settings &amp;gt; Site administration &amp;gt; Courses &amp;gt; Course default settings&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
5. The  file size settings in each individual course in &#039;&#039;Course Administration&amp;gt;Settings&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
5. Certain course activity module settings (for example, Assignment)&lt;br /&gt;
&lt;br /&gt;
* See [[File upload size]] for more details.&lt;br /&gt;
&lt;br /&gt;
===User quota===&lt;br /&gt;
&lt;br /&gt;
The maximum number of bytes that a user can store in their own [[Private files]] area.&lt;br /&gt;
&lt;br /&gt;
===Allow EMBED and OBJECT tags===&lt;br /&gt;
Allowing these presents a security risk but if you wish normal users such as students to be able to use them then check the box here.&lt;br /&gt;
&lt;br /&gt;
===Enable trusted content===&lt;br /&gt;
&lt;br /&gt;
By default Moodle will always thoroughly clean text that comes from users to remove any possible bad scripts, media etc that could be a security risk. The Trusted Content system is a way of giving particular users that you trust the ability to include these advanced features in their content without interference. To enable this system, you need to first enable this setting, and then grant the [[Capabilities/moodle/site:trustcontent|Trust submitted content]] capability to a specific Moodle role. Texts created or uploaded by such users will be marked as trusted and will not be cleaned before display.&lt;br /&gt;
&lt;br /&gt;
===Maximum time to edit posts===&lt;br /&gt;
&lt;br /&gt;
This sets the editing time for forum postings. The editing time is the amount of time users have to change forum postings before they are mailed to subscribers.&lt;br /&gt;
&lt;br /&gt;
Please refer to the forum discussions [http://moodle.org/mod/forum/discuss.php?d=28679 Editing a forum post after the 30 minutes deadline] and [http://moodle.org/mod/forum/discuss.php?d=5367 The philosophy underlying &amp;quot;no editing after 30 minutes&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
===Full name format===&lt;br /&gt;
&lt;br /&gt;
This setting has been moved in Moodle 2.6 onwards to &#039;&#039;Administration &amp;gt; Site administration &amp;gt; Users &amp;gt; Permissions &amp;gt; [[Roles settings|User policies]]&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Allow extended characters in usernames===&lt;br /&gt;
&lt;br /&gt;
The default here, unchecked = unenabled, can only contain alphabetical letters in lowercase, numbers, hypen &#039;-&#039;, underscore &#039;_&#039;, period &#039;.&#039;, or at sign &#039;@&#039;. If you enable this, it will be possible to have any characters for the username, but they must still be lowercase. This setting would allow you for example to have usernames with accents such as ö or ê and so on.&lt;br /&gt;
&lt;br /&gt;
Note: In Moodle 3.4.2 onwards, the Site policy URL and Site policy URL for guests settings have been moved to &#039;Policy settings&#039; in the Site administration.&lt;br /&gt;
&lt;br /&gt;
===Keep tag name casing===&lt;br /&gt;
&lt;br /&gt;
If checked, then tags like the following will be displayed: SOCCER, gUiTaR, MacDonalds, music&lt;br /&gt;
&lt;br /&gt;
If unchecked, then all tags will be displayed as follows: Soccer, Guitar, Macdonalds, Music&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Tips&#039;&#039;:&lt;br /&gt;
:* For English, off is useful.&lt;br /&gt;
:* For Japanese, no changes are made either way.&lt;br /&gt;
:* For languages where this kind of capitalization changes the meaning, it is best to keep this option on.&lt;br /&gt;
&lt;br /&gt;
===Profiles for enrolled users only===&lt;br /&gt;
&lt;br /&gt;
To prevent misuse by spammers, profile descriptions of users who are not yet enrolled in any course are hidden. New users must enrol in at least one course before they can add a profile description.&lt;br /&gt;
&lt;br /&gt;
===Cron execution via command line only===&lt;br /&gt;
&lt;br /&gt;
[[Cron]] is an action that runs various administrative jobs on your Moodle such as sending out forum posts. Running the cron from a web browser can expose privileged information to anonymous users. Thus it is recommended to only run the cron from the command line or set a cron password for remote access.&lt;br /&gt;
&lt;br /&gt;
===Cron password for remote access===&lt;br /&gt;
&lt;br /&gt;
Setting a password will mean that users can only run cron from the browser if they know the password and add it like this:&lt;br /&gt;
www.YOURMOODLE.com/admin/cron.php/?password=THEPASSWORDYOUSET.&lt;br /&gt;
&lt;br /&gt;
===Account lockout===&lt;br /&gt;
&lt;br /&gt;
Account lockout may be enabled. &lt;br /&gt;
&lt;br /&gt;
Account lockout threshold: After a specified number of failed login attempts, a user&#039;s account is locked and they are sent an email containing a URL to unlock the account. Setting this to &#039;No&#039; means there is no threshold and an account attempting to log in can do so an unlimited number of times.&lt;br /&gt;
&lt;br /&gt;
Account lockout observation window: Observation time for lockout threshold, if there are no failed attempts the threshold counter is reset after this time. This is the counter for how long to watch for more failed attempts by an account trying to log in even after being locked out, the counter will reset at each attempt and last this long.&lt;br /&gt;
&lt;br /&gt;
Account lockout duration: Locked out account is automatically unlocked after this duration.&lt;br /&gt;
&lt;br /&gt;
The account may also be unlocked by an administrator in &#039;&#039;Administration &amp;gt; Site administration &amp;gt; Users &amp;gt; Accounts &amp;gt; Browse list of users&#039;&#039; or by waiting for the account lockout duration to elapse.&lt;br /&gt;
&lt;br /&gt;
===Password policy===&lt;br /&gt;
&lt;br /&gt;
It is highly recommended that a password policy is set to force users to use stronger passwords that are less susceptible to being cracked by a intruder.&lt;br /&gt;
[[Image:Password policy.png|thumb|Password policy]]&lt;br /&gt;
&lt;br /&gt;
The password policy includes option to set the minimum length of the password, the minimum number of digits, the minimum number of lower-case characters, the minimum number of upper-case characters and the minimum number of non alphanumeric characters.&lt;br /&gt;
&lt;br /&gt;
The password policy is enabled by default. Default (recommended) settings are:&lt;br /&gt;
* Password length - 8&lt;br /&gt;
* Digits - 1&lt;br /&gt;
* Lowercase letters - 1&lt;br /&gt;
* Uppercase letters - 1&lt;br /&gt;
* Non-alphanumeric characters - 1&lt;br /&gt;
&lt;br /&gt;
If a user enters a password that does not meet the requirements, they are given an error message indicating the nature of the problem with the entered password.&lt;br /&gt;
&lt;br /&gt;
Enabling the password policy does not affect existing users until they decide to or are required to change their password. An admin can force all users to change their password using the force password change option in [[Bulk user actions]].&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Tip&#039;&#039;: The password policy may also be applied to [[Enrolment key|enrolment keys]] by ticking the &#039;Use password policy&#039; checkbox in the [[Self enrolment]] settings.&lt;br /&gt;
&lt;br /&gt;
===Password rotation limit===&lt;br /&gt;
&lt;br /&gt;
Here you can specify how often a user must change their password before they can re-use a previous password. Note that this might not work with some external authentication plugins.&lt;br /&gt;
&lt;br /&gt;
===Log out after password change===&lt;br /&gt;
&lt;br /&gt;
By default, users can change their password and remain logged in. Enabling this setting will log them out of existing sessions except the one in which they specify their new password. This setting only applies to users manually changing their password, not to bulk password changes.&lt;br /&gt;
&lt;br /&gt;
===User created token duration===&lt;br /&gt;
&lt;br /&gt;
A new setting in Moodle 3.4 onwards enables the duration of a web services token created by a user (for example via the mobile app) to be set. (Previously the duration was 3 months and this value could not be changed.)&lt;br /&gt;
&lt;br /&gt;
===Group enrolment key policy===&lt;br /&gt;
If this is enabled then when a teacher sets a group enrolment key, they will have to set a key which follows the password policy set above. Note that the group enrolment key policy requires the password policy to be enabled.&lt;br /&gt;
&lt;br /&gt;
===Disable user profile images===&lt;br /&gt;
&lt;br /&gt;
Check/tick this box if you don&#039;t want your users to be able to change their [[User pictures|profile images]]. &lt;br /&gt;
&lt;br /&gt;
===Email change confirmation===&lt;br /&gt;
&lt;br /&gt;
A confirmation step is required for users to change their email address unless the &#039;&#039;emailchangeconfirmation&#039;&#039; box is unchecked.&lt;br /&gt;
&lt;br /&gt;
===Remember username===&lt;br /&gt;
If you want  usernames to be stored during login then set this to &amp;quot;yes&amp;quot;. This will store permanent cookies and in some countries may be considered a privacy issue if used without consent. From a UK point of view, see http://tracker.moodle.org/secure/attachment/24290/UK+Laws+Relating+to+Cookies-LUNS2011.pdf See also the Using Moodle forum discussion [http://moodle.org/mod/forum/discuss.php?d=201558 EU Cookie Law].&lt;br /&gt;
&lt;br /&gt;
===Strict validation of required fields===&lt;br /&gt;
If enabled, users are prevented from entering a space or line break only in required fields in forms. (note: add more info)&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[Policies plugin]] - The Policies plugin provides a new user sign-on process, with ability to define multiple policies (site, privacy, third party), track user consents, and manage updates and versioning of the policies&lt;br /&gt;
&lt;br /&gt;
[[es:Políticas del sitio]]&lt;br /&gt;
[[eu:Gunearen_politikak]]&lt;br /&gt;
[[fr:Règles site]]&lt;br /&gt;
[[ja:サイトポリシー]]&lt;br /&gt;
[[de:Sicherheitsregeln der Website]]&lt;/div&gt;</summary>
		<author><name>Michaelh2</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/501/en/index.php?title=Security_recommendations&amp;diff=140481</id>
		<title>Security recommendations</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/501/en/index.php?title=Security_recommendations&amp;diff=140481"/>
		<updated>2021-05-20T09:50:42Z</updated>

		<summary type="html">&lt;p&gt;Michaelh2: /* See also */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Security}}All web application software is highly complex, and every application has security issues that are found from time to time, usually involving some combination of input that the programmers did not anticipate. The Moodle project takes security seriously, and is continuously improving Moodle to close such holes as we find them.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
*This page contains important security measures for your Moodle installation.&lt;br /&gt;
*You should report security problems to the [http://tracker.moodle.org/secure/CreateIssue!default.jspa  Moodle tracker] (and mark it as a security issue!) so that developers can see it and inform  registered Moodle sites about fixes as soon as possible.&lt;br /&gt;
*You should not post actual exploits in the forums or elsewhere on the web (to protect Moodle admins who have not upgraded yet).&lt;br /&gt;
&lt;br /&gt;
==Simple security measures==&lt;br /&gt;
*The best security strategy is a good backup! But you don&#039;t have a good backup unless you are able to restore it. Test your restoration procedures!&lt;br /&gt;
*Load only software or services you will use&lt;br /&gt;
*Perform regular updates&lt;br /&gt;
*Model your security after the layers of clothing you wear on a cold winter day&lt;br /&gt;
&lt;br /&gt;
==Basic recommendations==&lt;br /&gt;
&lt;br /&gt;
;Update Moodle regularly on each release&lt;br /&gt;
:Published security holes draw crackers&#039; attention after release. The older the version, the more vulnerabilities it is likely to contain.&lt;br /&gt;
; Use https to secure all pages (not just the login page)&lt;br /&gt;
:Protect all traffic from your Moodle instance and your users by making all pages accessible via https only. This not only protects passwords on login but also ensures the privacy of your users so that all user data cannot be intercepted or manipulated (&amp;quot;ad injections&amp;quot;) from third parties like WLAN providers for example. Free https certificates are available from https://letsencrypt.org/. In addition, set httpslogin=yes in your moodle config to add an extra layer of protection for submitting login credentials.&lt;br /&gt;
;[[admin/environment/custom check/php check register globals|Register globals &#039;&#039;&#039;MUST&#039;&#039;&#039; be disabled]]&lt;br /&gt;
:This will help prevent against possible XSS problems in third-party scripts.&lt;br /&gt;
;Run the [[Security_overview_report|Security Overview Report]]&lt;br /&gt;
:This identifies various configurations within your Moodle site that may pose a security risk, so any issues raised by that report should be investigated and action taken if necessary.&lt;br /&gt;
;Use strong passwords for admin and teachers&lt;br /&gt;
:Choosing &amp;quot;difficult&amp;quot; passwords is a basic security practice to protect against &amp;quot;brute force&amp;quot; cracking of accounts.&lt;br /&gt;
;Only give teacher accounts to trusted users. Avoid creating public sandboxes with free teacher accounts on production servers.&lt;br /&gt;
:Teacher accounts have much more liberal permissions and it is easier to create situations where data can be abused or stolen.&lt;br /&gt;
;Separate your systems as much as possible&lt;br /&gt;
:Another basic security technique is to use different passwords on different systems, use different machines for different services and so on.  This will prevent damage being widespread even if one account or one server is compromised.&lt;br /&gt;
&lt;br /&gt;
==Run regular updates==&lt;br /&gt;
*Use auto update systems&lt;br /&gt;
*Windows Update &lt;br /&gt;
*Linux: up2date, yum, apt-get&lt;br /&gt;
:Consider automating updates with a script scheduled via cron &lt;br /&gt;
*Mac OSX update system&lt;br /&gt;
*Stay current with php, apache, and moodle&lt;br /&gt;
&lt;br /&gt;
==Use mailing lists to stay updated==&lt;br /&gt;
*CERT - http://www.us-cert.gov/cas/signup.html&lt;br /&gt;
*PHP - http://www.php.net/mailing-lists.php - sign up for Announcements list&lt;br /&gt;
*MySQL - http://lists.mysql.com - sign up for MySQL Announcements&lt;br /&gt;
&lt;br /&gt;
==Firewalls==&lt;br /&gt;
*Security experts recommend a dual firewall&lt;br /&gt;
:Differing hardware/software combinations &lt;br /&gt;
*Disabling unused services is often as effective as a firewall&lt;br /&gt;
:Use netstat -a to review open network ports&lt;br /&gt;
*Not a guarantee of protection&lt;br /&gt;
*Allow ports &lt;br /&gt;
:80, 443(ssl), and 9111 (for chat), &lt;br /&gt;
:Remote admin: ssh 22, or rdp 3389&lt;br /&gt;
&lt;br /&gt;
==Password policy==&lt;br /&gt;
&lt;br /&gt;
A password policy may be set up in &#039;&#039;Settings &amp;gt; Site administration &amp;gt; Security &amp;gt; [[Site policies]]&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
There is a check box to determine if password complexity should be enforced or not, the option to set the minimum length of the password, the minimum number of digits, the minimum number of lowercase characters, the minimum number of uppercase characters and the minimum number of non alphanumeric characters.&lt;br /&gt;
&lt;br /&gt;
If a user enters a password that does not meet those requirements, they are given an error message indicating the nature of the problem with the entered password.&lt;br /&gt;
&lt;br /&gt;
Enforcing password complexity along with requiring users to change their initial password go a long way in helping ensure that users choose and are in fact using &amp;quot;good passwords&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
However, making the check too onerous just results in them writing it down so be realistic.&lt;br /&gt;
&lt;br /&gt;
==Be prepared for the worst==&lt;br /&gt;
*Have backups ready &lt;br /&gt;
*Practice recovery procedures ahead of time &lt;br /&gt;
*Use a rootkit detector on a regular basis &lt;br /&gt;
**Linux/MacOSX - http://www.chkrootkit.org/ &lt;br /&gt;
**Windows - http://technet.microsoft.com/en-en/sysinternals/bb897445.aspx and http://technet.microsoft.com/de-de/sysinternals/bb897445.aspx&lt;br /&gt;
&lt;br /&gt;
==Moodle security alerts==&lt;br /&gt;
*Register your site with Moodle.org&lt;br /&gt;
:Registered users receive email alerts&lt;br /&gt;
*Security alerts also posted online&lt;br /&gt;
*Web - http://moodle.org/security&lt;br /&gt;
*RSS feed - http://moodle.org/rss/file.php/1/1/forum/996/rss.xml&lt;br /&gt;
&lt;br /&gt;
==Miscellaneous considerations==&lt;br /&gt;
These are all things you might consider that impact your overall security:&lt;br /&gt;
*Use the secure forms setting&lt;br /&gt;
*Always set a mysql root user password&lt;br /&gt;
*Turn off mysql network access&lt;br /&gt;
*Use SSL, httpslogins=yes&lt;br /&gt;
*Use good passwords - set up a password policy in &#039;&#039;Settings &amp;gt; Site administration &amp;gt; Security &amp;gt; [[Site policies]]&#039;&#039;&lt;br /&gt;
*Do not enable the &#039;&#039;opentowebcrawlers&#039;&#039; setting (in &#039;&#039;Settings &amp;gt; Site administration &amp;gt; Security &amp;gt; [[Site policies]]&#039;&#039;)&lt;br /&gt;
*Disable guest access&lt;br /&gt;
*Place enrollment keys on all courses or set Course Enrollable = No for all courses&lt;br /&gt;
*Ensure the enrolment key hint is disabled (which it is by default) in &#039;&#039;Administration &amp;gt; Site administration &amp;gt; Plugins &amp;gt; Enrolment &amp;gt; Self enrolment.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Most secure/paranoid file permissions==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: &amp;lt;u&amp;gt;The following information applies to Linux/Unix based installations only, as MS Windows permission system is quite different&amp;lt;/u&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Depending on your server set-up there are two different scenarios:&lt;br /&gt;
# You are running Moodle on your own dedicated server.&lt;br /&gt;
# You are running Moodle on a shared hosting environment.&lt;br /&gt;
&lt;br /&gt;
In the sections below, you are required to use the web service user account and group to set the permissions, so you need to know them. This can vary quite a bit from server to server but if this feature has not been disabled in your server, you can go to &#039;&#039;&amp;lt;nowiki&amp;gt;http://your.moodle.site/admin/phpinfo.php&amp;lt;/nowiki&amp;gt;&#039;&#039; (logging in as admin), and then search for the line that reads &#039;User/Group&#039;, inside the &#039;apache&#039; table. For example, I get &#039;www-data&#039; for the user account and &#039;www-data&#039; for the group too.&lt;br /&gt;
&lt;br /&gt;
=== Running Moodle on a dedicated server ===&lt;br /&gt;
Assuming you are running Moodle on a sealed server (i.e. no user logins allowed on the machine) and that root takes care of the modifications to both moodle code and moodle config (config.php), then this are the most tight permissions I can think of:&lt;br /&gt;
&lt;br /&gt;
1. moodledata directory and all of its contents (and subdirectories, includes sessions):&lt;br /&gt;
 owner: apache user (apache, httpd, www-data, whatever; see above)&lt;br /&gt;
 group: apache group (apache, httpd, www-data, whatever; see above)&lt;br /&gt;
 permissions: 700 on directories, 600 on files&lt;br /&gt;
&lt;br /&gt;
2. moodle directory and all of its contents and subdirectories (including config.php):&lt;br /&gt;
 owner: root&lt;br /&gt;
 group: root&lt;br /&gt;
 permissions: 755 on directories, 644 on files.&lt;br /&gt;
&lt;br /&gt;
If you allow local logins for regular users, then 2. should be:&lt;br /&gt;
 owner: root&lt;br /&gt;
 group: apache group (apache, httpd, www-data, whatever; see above)&lt;br /&gt;
 permissions: 750 on directories, 640 on files.&lt;br /&gt;
&lt;br /&gt;
Think of these permissions as the most paranoid ones. You can be secure enough with less tighter permissions, both in moodledata and moodle directories (and subdirectories).&lt;br /&gt;
&lt;br /&gt;
=== Running Moodle on a shared hosting environment ===&lt;br /&gt;
If you are running Moodle on a shared hosting environment, then above permissions are probably wrong. If you set 700 as the permission for directories (and 600 for files), you are probably denying the web service user account access to your directories and files.&lt;br /&gt;
&lt;br /&gt;
If you want to tighten your permissions as much as possible, you will need to know:&lt;br /&gt;
&lt;br /&gt;
# the user account and the group the web service is running under (see above).&lt;br /&gt;
# the owner of the directories/files of both moodledata and the moodle directory (this should normally be your client user account), and the group of the directories/files. You can usually get this information from the file manager of your hosting control panel. Go to the moodle folder and pick any directory or file and try to view/change the permissions, owner and group of that file. That would normally show the current permissions, owner and group. Do the same for the moodledata directory.&lt;br /&gt;
&lt;br /&gt;
Then, depending on the following scenarios you should use a different set of permissions (listed from more secure to less secure) for your moodledata directory:&lt;br /&gt;
&lt;br /&gt;
# if the web service account and the owner of the directories/files is the same, you should use 700 for directories and 600 for files.&lt;br /&gt;
# if the web service group and the group of the directories/files is the same, you should use 770 for directories and 660 for the files.&lt;br /&gt;
# if none of the above, you will need to use 777 for directories and 666 for files, which is less secure but it is your only option. 707 and 606 would be more secure, but it might or might not work, depending on your particular setup.&lt;br /&gt;
&lt;br /&gt;
In fact, you just need to set moodledata the permissions specified above, as all the directories and files inside are created by the web service itself, and will have the right permissions.&lt;br /&gt;
&lt;br /&gt;
Regarding the moodle directory, as long as the web service user account can read the files plus read and execute the directories, that should be enough. There is no need to grant write permission to the web service account/group on any of the files or subdirectories. The only drawback is that you will need to create the config.php by hand during the installation process, as Moodle will not be able to create it. But that should not be a big problem.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
*[[Security FAQ]]&lt;br /&gt;
*[https://moodle.com/news/top-security-tips-for-moodle-administrators/ Top security tips for Moodle administrators article]&lt;br /&gt;
Using Moodle forum discussions:&lt;br /&gt;
*[http://moodle.org/mod/forum/discuss.php?d=39404 Guide to Securing your Moodle Server]&lt;br /&gt;
*[http://moodle.org/mod/forum/discuss.php?d=93561 How to secure Moodle website from hacking] including recommendations on emergency recovery&lt;br /&gt;
&lt;br /&gt;
[[es:Recomendaciones de Seguridad]]&lt;br /&gt;
[[fr:Sécurité]]&lt;/div&gt;</summary>
		<author><name>Michaelh2</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/501/en/index.php?title=Security_checks&amp;diff=140112</id>
		<title>Security checks</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/501/en/index.php?title=Security_checks&amp;diff=140112"/>
		<updated>2021-04-13T10:06:19Z</updated>

		<summary type="html">&lt;p&gt;Michaelh2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Security}}&lt;br /&gt;
A security overview report is available via &#039;Security checks&#039; in the Site administration &amp;quot;Reports&amp;quot; section.&lt;br /&gt;
&lt;br /&gt;
Some of the checks included are as follows:&lt;br /&gt;
&lt;br /&gt;
*[[report/security/report security check globals|Register globals]]&lt;br /&gt;
:register_globals is a PHP setting that must be disabled for Moodle to operate safely.&lt;br /&gt;
&lt;br /&gt;
*[[report/security/report security check unsecuredataroot|Insecure dataroot]]&lt;br /&gt;
:The dataroot is the directory where Moodle stores user files.  It should not be directly accessible via the web.&lt;br /&gt;
&lt;br /&gt;
*[[report/security/report security check displayerrors|Displaying of PHP errors]]&lt;br /&gt;
:If PHP is set to display errors, then anyone can enter a faulty URL causing PHP to give up valuable information about directory structures and so on.&lt;br /&gt;
&lt;br /&gt;
*[[Vendor directory security check|Vendor directory]]&lt;br /&gt;
:The vendor directory should not be present on public sites.&lt;br /&gt;
&lt;br /&gt;
*[[report/security/report security check noauth|No authentication]]&lt;br /&gt;
:Use of the &amp;quot;no authentication&amp;quot; plugin can be dangerous, allowing people to access the site without authenticating. &lt;br /&gt;
&lt;br /&gt;
*[[report/security/report security check embed|Allow EMBED and OBJECT]]&lt;br /&gt;
:Allowing ordinary users to embed Flash and other media in their texts (eg forum posts) can be a problem because those rich media objects can be used to steal admin or teacher access, even if the media object is on another server.&lt;br /&gt;
&lt;br /&gt;
*[[report/security/report_security_check_preventexecpath|Execuable paths]]&lt;br /&gt;
:Allowing executable paths to be set via the Admin GUI is a vector for privilege escalation. This can be prevented by setting the following config.php: &amp;lt;code php&amp;gt;$CFG-&amp;gt;preventexecpath = true;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*[[report/security/report security check mediafilterswf‎|Enabled .swf media filter]]&lt;br /&gt;
:Even the flash media filter can be abused to include malicious flash files.&lt;br /&gt;
&lt;br /&gt;
*[[report/security/report security check openprofiles|Open user profiles]]&lt;br /&gt;
:User profiles should not be open to the web without authentication, both for privacy reasons and because spammers then have a platform to publish spam on your site.&lt;br /&gt;
&lt;br /&gt;
*[[report/security/report security check google|Open to Google]]&lt;br /&gt;
:Allowing Google to enter your site means that all the contents become available to the world.  Don&#039;t use this unless it&#039;s a really public site.&lt;br /&gt;
&lt;br /&gt;
*[[report/security/report security check passwordpolicy|Password policy]]&lt;br /&gt;
:Using a password policy will force your users to use stronger passwords that are less susceptible to being cracked by a intruder.&lt;br /&gt;
&lt;br /&gt;
*[[Password salting|Password salt]]&lt;br /&gt;
:Setting a password salt greatly reduces the risk of password theft.&lt;br /&gt;
&lt;br /&gt;
*[[report/security/report security check emailchangeconfirmation‎|Email change confirmation]]&lt;br /&gt;
:You should generally always force users to confirm email address changes via an extra step where a confirmation link is sent to the user.&lt;br /&gt;
&lt;br /&gt;
*[[report/security/report security check cookiesecure|Secure cookies]]&lt;br /&gt;
:It is recommended to use secure cookies only when serving over SSL.&lt;br /&gt;
&lt;br /&gt;
*[[report/security/report security check configrw|Writable config.php]]&lt;br /&gt;
:The config.php file must not be writeable by the web server process.  If it is, then it is possible for another vulnerability to allow attackers to rewrite the Moodle code and display whatever they want.&lt;br /&gt;
&lt;br /&gt;
*[[report/security/report security check riskxss|XSS trusted users]]&lt;br /&gt;
:Make sure that you trust all the people on this list:  they are the ones with permissions to potentially write XSS exploits in forums etc.&lt;br /&gt;
&lt;br /&gt;
*[[report/security/report security check riskadmin|Administrators]]&lt;br /&gt;
:Review your administrator accounts and make sure you only have what you need.&lt;br /&gt;
&lt;br /&gt;
*[[Backup of user data]]&lt;br /&gt;
:Make sure that only roles that need to backup user data can do so and that all users who have the capability are trusted.&lt;br /&gt;
&lt;br /&gt;
*[[report/security/report security check defaultuserrole‎ |Default role for all users]]&lt;br /&gt;
:This checks that the registered user role is defined with sane permissions.&lt;br /&gt;
&lt;br /&gt;
*[[report/security/report security check guestrole|Guest role]]&lt;br /&gt;
:This checks that the guest role is defined with sane permissions.&lt;br /&gt;
&lt;br /&gt;
*[[report/security/report security check frontpagerole‎|Frontpage role]]&lt;br /&gt;
:This checks that the frontpage user role is defined with sane permissions.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
* [http://moodle.org/mod/forum/view.php?id=7301 Security and Privacy forum] on moodle.org&lt;br /&gt;
&lt;br /&gt;
[[Category:Report]]&lt;br /&gt;
[[Category:Site administration]]&lt;br /&gt;
&lt;br /&gt;
[[de:Sicherheitsbericht]]&lt;br /&gt;
[[es:Reporte Vista general de Seguridad]]&lt;br /&gt;
[[eu:Seguratasunaren_ikuspegi_orokorra]]&lt;br /&gt;
[[fr:Panorama de sécurité]]&lt;br /&gt;
[[ja:セキュリティオーバービュー]]&lt;/div&gt;</summary>
		<author><name>Michaelh2</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/501/en/index.php?title=Security_recommendations&amp;diff=140111</id>
		<title>Security recommendations</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/501/en/index.php?title=Security_recommendations&amp;diff=140111"/>
		<updated>2021-04-13T09:59:11Z</updated>

		<summary type="html">&lt;p&gt;Michaelh2: /* Basic recommendations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Security}}All web application software is highly complex, and every application has security issues that are found from time to time, usually involving some combination of input that the programmers did not anticipate. The Moodle project takes security seriously, and is continuously improving Moodle to close such holes as we find them.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
*This page contains important security measures for your Moodle installation.&lt;br /&gt;
*You should report security problems to the [http://tracker.moodle.org/secure/CreateIssue!default.jspa  Moodle tracker] (and mark it as a security issue!) so that developers can see it and inform  registered Moodle sites about fixes as soon as possible.&lt;br /&gt;
*You should not post actual exploits in the forums or elsewhere on the web (to protect Moodle admins who have not upgraded yet).&lt;br /&gt;
&lt;br /&gt;
==Simple security measures==&lt;br /&gt;
*The best security strategy is a good backup! But you don&#039;t have a good backup unless you are able to restore it. Test your restoration procedures!&lt;br /&gt;
*Load only software or services you will use&lt;br /&gt;
*Perform regular updates&lt;br /&gt;
*Model your security after the layers of clothing you wear on a cold winter day&lt;br /&gt;
&lt;br /&gt;
==Basic recommendations==&lt;br /&gt;
&lt;br /&gt;
;Update Moodle regularly on each release&lt;br /&gt;
:Published security holes draw crackers&#039; attention after release. The older the version, the more vulnerabilities it is likely to contain.&lt;br /&gt;
; Use https to secure all pages (not just the login page)&lt;br /&gt;
:Protect all traffic from your Moodle instance and your users by making all pages accessible via https only. This not only protects passwords on login but also ensures the privacy of your users so that all user data cannot be intercepted or manipulated (&amp;quot;ad injections&amp;quot;) from third parties like WLAN providers for example. Free https certificates are available from https://letsencrypt.org/. In addition, set httpslogin=yes in your moodle config to add an extra layer of protection for submitting login credentials.&lt;br /&gt;
;[[admin/environment/custom check/php check register globals|Register globals &#039;&#039;&#039;MUST&#039;&#039;&#039; be disabled]]&lt;br /&gt;
:This will help prevent against possible XSS problems in third-party scripts.&lt;br /&gt;
;Run the [[Security_overview_report|Security Overview Report]]&lt;br /&gt;
:This identifies various configurations within your Moodle site that may pose a security risk, so any issues raised by that report should be investigated and action taken if necessary.&lt;br /&gt;
;Use strong passwords for admin and teachers&lt;br /&gt;
:Choosing &amp;quot;difficult&amp;quot; passwords is a basic security practice to protect against &amp;quot;brute force&amp;quot; cracking of accounts.&lt;br /&gt;
;Only give teacher accounts to trusted users. Avoid creating public sandboxes with free teacher accounts on production servers.&lt;br /&gt;
:Teacher accounts have much more liberal permissions and it is easier to create situations where data can be abused or stolen.&lt;br /&gt;
;Separate your systems as much as possible&lt;br /&gt;
:Another basic security technique is to use different passwords on different systems, use different machines for different services and so on.  This will prevent damage being widespread even if one account or one server is compromised.&lt;br /&gt;
&lt;br /&gt;
==Run regular updates==&lt;br /&gt;
*Use auto update systems&lt;br /&gt;
*Windows Update &lt;br /&gt;
*Linux: up2date, yum, apt-get&lt;br /&gt;
:Consider automating updates with a script scheduled via cron &lt;br /&gt;
*Mac OSX update system&lt;br /&gt;
*Stay current with php, apache, and moodle&lt;br /&gt;
&lt;br /&gt;
==Use mailing lists to stay updated==&lt;br /&gt;
*CERT - http://www.us-cert.gov/cas/signup.html&lt;br /&gt;
*PHP - http://www.php.net/mailing-lists.php - sign up for Announcements list&lt;br /&gt;
*MySQL - http://lists.mysql.com - sign up for MySQL Announcements&lt;br /&gt;
&lt;br /&gt;
==Firewalls==&lt;br /&gt;
*Security experts recommend a dual firewall&lt;br /&gt;
:Differing hardware/software combinations &lt;br /&gt;
*Disabling unused services is often as effective as a firewall&lt;br /&gt;
:Use netstat -a to review open network ports&lt;br /&gt;
*Not a guarantee of protection&lt;br /&gt;
*Allow ports &lt;br /&gt;
:80, 443(ssl), and 9111 (for chat), &lt;br /&gt;
:Remote admin: ssh 22, or rdp 3389&lt;br /&gt;
&lt;br /&gt;
==Password policy==&lt;br /&gt;
&lt;br /&gt;
A password policy may be set up in &#039;&#039;Settings &amp;gt; Site administration &amp;gt; Security &amp;gt; [[Site policies]]&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
There is a check box to determine if password complexity should be enforced or not, the option to set the minimum length of the password, the minimum number of digits, the minimum number of lowercase characters, the minimum number of uppercase characters and the minimum number of non alphanumeric characters.&lt;br /&gt;
&lt;br /&gt;
If a user enters a password that does not meet those requirements, they are given an error message indicating the nature of the problem with the entered password.&lt;br /&gt;
&lt;br /&gt;
Enforcing password complexity along with requiring users to change their initial password go a long way in helping ensure that users choose and are in fact using &amp;quot;good passwords&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
However, making the check too onerous just results in them writing it down so be realistic.&lt;br /&gt;
&lt;br /&gt;
==Be prepared for the worst==&lt;br /&gt;
*Have backups ready &lt;br /&gt;
*Practice recovery procedures ahead of time &lt;br /&gt;
*Use a rootkit detector on a regular basis &lt;br /&gt;
**Linux/MacOSX - http://www.chkrootkit.org/ &lt;br /&gt;
**Windows - http://technet.microsoft.com/en-en/sysinternals/bb897445.aspx and http://technet.microsoft.com/de-de/sysinternals/bb897445.aspx&lt;br /&gt;
&lt;br /&gt;
==Moodle security alerts==&lt;br /&gt;
*Register your site with Moodle.org&lt;br /&gt;
:Registered users receive email alerts&lt;br /&gt;
*Security alerts also posted online&lt;br /&gt;
*Web - http://moodle.org/security&lt;br /&gt;
*RSS feed - http://moodle.org/rss/file.php/1/1/forum/996/rss.xml&lt;br /&gt;
&lt;br /&gt;
==Miscellaneous considerations==&lt;br /&gt;
These are all things you might consider that impact your overall security:&lt;br /&gt;
*Use the secure forms setting&lt;br /&gt;
*Always set a mysql root user password&lt;br /&gt;
*Turn off mysql network access&lt;br /&gt;
*Use SSL, httpslogins=yes&lt;br /&gt;
*Use good passwords - set up a password policy in &#039;&#039;Settings &amp;gt; Site administration &amp;gt; Security &amp;gt; [[Site policies]]&#039;&#039;&lt;br /&gt;
*Do not enable the &#039;&#039;opentowebcrawlers&#039;&#039; setting (in &#039;&#039;Settings &amp;gt; Site administration &amp;gt; Security &amp;gt; [[Site policies]]&#039;&#039;)&lt;br /&gt;
*Disable guest access&lt;br /&gt;
*Place enrollment keys on all courses or set Course Enrollable = No for all courses&lt;br /&gt;
*Ensure the enrolment key hint is disabled (which it is by default) in &#039;&#039;Administration &amp;gt; Site administration &amp;gt; Plugins &amp;gt; Enrolment &amp;gt; Self enrolment.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Most secure/paranoid file permissions==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: &amp;lt;u&amp;gt;The following information applies to Linux/Unix based installations only, as MS Windows permission system is quite different&amp;lt;/u&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Depending on your server set-up there are two different scenarios:&lt;br /&gt;
# You are running Moodle on your own dedicated server.&lt;br /&gt;
# You are running Moodle on a shared hosting environment.&lt;br /&gt;
&lt;br /&gt;
In the sections below, you are required to use the web service user account and group to set the permissions, so you need to know them. This can vary quite a bit from server to server but if this feature has not been disabled in your server, you can go to &#039;&#039;&amp;lt;nowiki&amp;gt;http://your.moodle.site/admin/phpinfo.php&amp;lt;/nowiki&amp;gt;&#039;&#039; (logging in as admin), and then search for the line that reads &#039;User/Group&#039;, inside the &#039;apache&#039; table. For example, I get &#039;www-data&#039; for the user account and &#039;www-data&#039; for the group too.&lt;br /&gt;
&lt;br /&gt;
=== Running Moodle on a dedicated server ===&lt;br /&gt;
Assuming you are running Moodle on a sealed server (i.e. no user logins allowed on the machine) and that root takes care of the modifications to both moodle code and moodle config (config.php), then this are the most tight permissions I can think of:&lt;br /&gt;
&lt;br /&gt;
1. moodledata directory and all of its contents (and subdirectories, includes sessions):&lt;br /&gt;
 owner: apache user (apache, httpd, www-data, whatever; see above)&lt;br /&gt;
 group: apache group (apache, httpd, www-data, whatever; see above)&lt;br /&gt;
 permissions: 700 on directories, 600 on files&lt;br /&gt;
&lt;br /&gt;
2. moodle directory and all of its contents and subdirectories (including config.php):&lt;br /&gt;
 owner: root&lt;br /&gt;
 group: root&lt;br /&gt;
 permissions: 755 on directories, 644 on files.&lt;br /&gt;
&lt;br /&gt;
If you allow local logins for regular users, then 2. should be:&lt;br /&gt;
 owner: root&lt;br /&gt;
 group: apache group (apache, httpd, www-data, whatever; see above)&lt;br /&gt;
 permissions: 750 on directories, 640 on files.&lt;br /&gt;
&lt;br /&gt;
Think of these permissions as the most paranoid ones. You can be secure enough with less tighter permissions, both in moodledata and moodle directories (and subdirectories).&lt;br /&gt;
&lt;br /&gt;
=== Running Moodle on a shared hosting environment ===&lt;br /&gt;
If you are running Moodle on a shared hosting environment, then above permissions are probably wrong. If you set 700 as the permission for directories (and 600 for files), you are probably denying the web service user account access to your directories and files.&lt;br /&gt;
&lt;br /&gt;
If you want to tighten your permissions as much as possible, you will need to know:&lt;br /&gt;
&lt;br /&gt;
# the user account and the group the web service is running under (see above).&lt;br /&gt;
# the owner of the directories/files of both moodledata and the moodle directory (this should normally be your client user account), and the group of the directories/files. You can usually get this information from the file manager of your hosting control panel. Go to the moodle folder and pick any directory or file and try to view/change the permissions, owner and group of that file. That would normally show the current permissions, owner and group. Do the same for the moodledata directory.&lt;br /&gt;
&lt;br /&gt;
Then, depending on the following scenarios you should use a different set of permissions (listed from more secure to less secure) for your moodledata directory:&lt;br /&gt;
&lt;br /&gt;
# if the web service account and the owner of the directories/files is the same, you should use 700 for directories and 600 for files.&lt;br /&gt;
# if the web service group and the group of the directories/files is the same, you should use 770 for directories and 660 for the files.&lt;br /&gt;
# if none of the above, you will need to use 777 for directories and 666 for files, which is less secure but it is your only option. 707 and 606 would be more secure, but it might or might not work, depending on your particular setup.&lt;br /&gt;
&lt;br /&gt;
In fact, you just need to set moodledata the permissions specified above, as all the directories and files inside are created by the web service itself, and will have the right permissions.&lt;br /&gt;
&lt;br /&gt;
Regarding the moodle directory, as long as the web service user account can read the files plus read and execute the directories, that should be enough. There is no need to grant write permission to the web service account/group on any of the files or subdirectories. The only drawback is that you will need to create the config.php by hand during the installation process, as Moodle will not be able to create it. But that should not be a big problem.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
*[[Security FAQ]]&lt;br /&gt;
Using Moodle forum discussions:&lt;br /&gt;
*[http://moodle.org/mod/forum/discuss.php?d=39404 Guide to Securing your Moodle Server]&lt;br /&gt;
*[http://moodle.org/mod/forum/discuss.php?d=93561 How to secure Moodle website from hacking] including recommendations on emergency recovery&lt;br /&gt;
&lt;br /&gt;
[[es:Recomendaciones de Seguridad]]&lt;br /&gt;
[[fr:Sécurité]]&lt;/div&gt;</summary>
		<author><name>Michaelh2</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/501/en/index.php?title=Security_recommendations&amp;diff=140110</id>
		<title>Security recommendations</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/501/en/index.php?title=Security_recommendations&amp;diff=140110"/>
		<updated>2021-04-13T09:56:29Z</updated>

		<summary type="html">&lt;p&gt;Michaelh2: /* Basic recommendations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Security}}All web application software is highly complex, and every application has security issues that are found from time to time, usually involving some combination of input that the programmers did not anticipate. The Moodle project takes security seriously, and is continuously improving Moodle to close such holes as we find them.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
*This page contains important security measures for your Moodle installation.&lt;br /&gt;
*You should report security problems to the [http://tracker.moodle.org/secure/CreateIssue!default.jspa  Moodle tracker] (and mark it as a security issue!) so that developers can see it and inform  registered Moodle sites about fixes as soon as possible.&lt;br /&gt;
*You should not post actual exploits in the forums or elsewhere on the web (to protect Moodle admins who have not upgraded yet).&lt;br /&gt;
&lt;br /&gt;
==Simple security measures==&lt;br /&gt;
*The best security strategy is a good backup! But you don&#039;t have a good backup unless you are able to restore it. Test your restoration procedures!&lt;br /&gt;
*Load only software or services you will use&lt;br /&gt;
*Perform regular updates&lt;br /&gt;
*Model your security after the layers of clothing you wear on a cold winter day&lt;br /&gt;
&lt;br /&gt;
==Basic recommendations==&lt;br /&gt;
&lt;br /&gt;
;Update Moodle regularly on each release&lt;br /&gt;
:Published security holes draw crackers&#039; attention after release. The older the version, the more vulnerabilities it is likely to contain.&lt;br /&gt;
; Use https to secure all pages (not just the login page)&lt;br /&gt;
:Protect all traffic from your Moodle instance and your users by making all pages accessible via https only. This not only protects passwords on login but also ensures the privacy of your users so that all user data cannot be intercepted or manipulated (&amp;quot;ad injections&amp;quot;) from third parties like WLAN providers for example. Free https certificates are available from https://letsencrypt.org/. In addition, set httpslogin=yes in your moodle config to add an extra layer of protection for submitting login credentials.&lt;br /&gt;
;[[admin/environment/custom check/php check register globals|Register globals &#039;&#039;&#039;MUST&#039;&#039;&#039; be disabled]]&lt;br /&gt;
:This will help prevent against possible XSS problems in third-party scripts.&lt;br /&gt;
;Run the [[Security_overview_report|Security Overview Report]] and address any issues identified.&lt;br /&gt;
;Use strong passwords for admin and teachers&lt;br /&gt;
:Choosing &amp;quot;difficult&amp;quot; passwords is a basic security practice to protect against &amp;quot;brute force&amp;quot; cracking of accounts.&lt;br /&gt;
;Only give teacher accounts to trusted users. Avoid creating public sandboxes with free teacher accounts on production servers.&lt;br /&gt;
:Teacher accounts have much more liberal permissions and it is easier to create situations where data can be abused or stolen.&lt;br /&gt;
;Separate your systems as much as possible&lt;br /&gt;
:Another basic security technique is to use different passwords on different systems, use different machines for different services and so on.  This will prevent damage being widespread even if one account or one server is compromised.&lt;br /&gt;
&lt;br /&gt;
==Run regular updates==&lt;br /&gt;
*Use auto update systems&lt;br /&gt;
*Windows Update &lt;br /&gt;
*Linux: up2date, yum, apt-get&lt;br /&gt;
:Consider automating updates with a script scheduled via cron &lt;br /&gt;
*Mac OSX update system&lt;br /&gt;
*Stay current with php, apache, and moodle&lt;br /&gt;
&lt;br /&gt;
==Use mailing lists to stay updated==&lt;br /&gt;
*CERT - http://www.us-cert.gov/cas/signup.html&lt;br /&gt;
*PHP - http://www.php.net/mailing-lists.php - sign up for Announcements list&lt;br /&gt;
*MySQL - http://lists.mysql.com - sign up for MySQL Announcements&lt;br /&gt;
&lt;br /&gt;
==Firewalls==&lt;br /&gt;
*Security experts recommend a dual firewall&lt;br /&gt;
:Differing hardware/software combinations &lt;br /&gt;
*Disabling unused services is often as effective as a firewall&lt;br /&gt;
:Use netstat -a to review open network ports&lt;br /&gt;
*Not a guarantee of protection&lt;br /&gt;
*Allow ports &lt;br /&gt;
:80, 443(ssl), and 9111 (for chat), &lt;br /&gt;
:Remote admin: ssh 22, or rdp 3389&lt;br /&gt;
&lt;br /&gt;
==Password policy==&lt;br /&gt;
&lt;br /&gt;
A password policy may be set up in &#039;&#039;Settings &amp;gt; Site administration &amp;gt; Security &amp;gt; [[Site policies]]&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
There is a check box to determine if password complexity should be enforced or not, the option to set the minimum length of the password, the minimum number of digits, the minimum number of lowercase characters, the minimum number of uppercase characters and the minimum number of non alphanumeric characters.&lt;br /&gt;
&lt;br /&gt;
If a user enters a password that does not meet those requirements, they are given an error message indicating the nature of the problem with the entered password.&lt;br /&gt;
&lt;br /&gt;
Enforcing password complexity along with requiring users to change their initial password go a long way in helping ensure that users choose and are in fact using &amp;quot;good passwords&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
However, making the check too onerous just results in them writing it down so be realistic.&lt;br /&gt;
&lt;br /&gt;
==Be prepared for the worst==&lt;br /&gt;
*Have backups ready &lt;br /&gt;
*Practice recovery procedures ahead of time &lt;br /&gt;
*Use a rootkit detector on a regular basis &lt;br /&gt;
**Linux/MacOSX - http://www.chkrootkit.org/ &lt;br /&gt;
**Windows - http://technet.microsoft.com/en-en/sysinternals/bb897445.aspx and http://technet.microsoft.com/de-de/sysinternals/bb897445.aspx&lt;br /&gt;
&lt;br /&gt;
==Moodle security alerts==&lt;br /&gt;
*Register your site with Moodle.org&lt;br /&gt;
:Registered users receive email alerts&lt;br /&gt;
*Security alerts also posted online&lt;br /&gt;
*Web - http://moodle.org/security&lt;br /&gt;
*RSS feed - http://moodle.org/rss/file.php/1/1/forum/996/rss.xml&lt;br /&gt;
&lt;br /&gt;
==Miscellaneous considerations==&lt;br /&gt;
These are all things you might consider that impact your overall security:&lt;br /&gt;
*Use the secure forms setting&lt;br /&gt;
*Always set a mysql root user password&lt;br /&gt;
*Turn off mysql network access&lt;br /&gt;
*Use SSL, httpslogins=yes&lt;br /&gt;
*Use good passwords - set up a password policy in &#039;&#039;Settings &amp;gt; Site administration &amp;gt; Security &amp;gt; [[Site policies]]&#039;&#039;&lt;br /&gt;
*Do not enable the &#039;&#039;opentowebcrawlers&#039;&#039; setting (in &#039;&#039;Settings &amp;gt; Site administration &amp;gt; Security &amp;gt; [[Site policies]]&#039;&#039;)&lt;br /&gt;
*Disable guest access&lt;br /&gt;
*Place enrollment keys on all courses or set Course Enrollable = No for all courses&lt;br /&gt;
*Ensure the enrolment key hint is disabled (which it is by default) in &#039;&#039;Administration &amp;gt; Site administration &amp;gt; Plugins &amp;gt; Enrolment &amp;gt; Self enrolment.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Most secure/paranoid file permissions==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: &amp;lt;u&amp;gt;The following information applies to Linux/Unix based installations only, as MS Windows permission system is quite different&amp;lt;/u&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Depending on your server set-up there are two different scenarios:&lt;br /&gt;
# You are running Moodle on your own dedicated server.&lt;br /&gt;
# You are running Moodle on a shared hosting environment.&lt;br /&gt;
&lt;br /&gt;
In the sections below, you are required to use the web service user account and group to set the permissions, so you need to know them. This can vary quite a bit from server to server but if this feature has not been disabled in your server, you can go to &#039;&#039;&amp;lt;nowiki&amp;gt;http://your.moodle.site/admin/phpinfo.php&amp;lt;/nowiki&amp;gt;&#039;&#039; (logging in as admin), and then search for the line that reads &#039;User/Group&#039;, inside the &#039;apache&#039; table. For example, I get &#039;www-data&#039; for the user account and &#039;www-data&#039; for the group too.&lt;br /&gt;
&lt;br /&gt;
=== Running Moodle on a dedicated server ===&lt;br /&gt;
Assuming you are running Moodle on a sealed server (i.e. no user logins allowed on the machine) and that root takes care of the modifications to both moodle code and moodle config (config.php), then this are the most tight permissions I can think of:&lt;br /&gt;
&lt;br /&gt;
1. moodledata directory and all of its contents (and subdirectories, includes sessions):&lt;br /&gt;
 owner: apache user (apache, httpd, www-data, whatever; see above)&lt;br /&gt;
 group: apache group (apache, httpd, www-data, whatever; see above)&lt;br /&gt;
 permissions: 700 on directories, 600 on files&lt;br /&gt;
&lt;br /&gt;
2. moodle directory and all of its contents and subdirectories (including config.php):&lt;br /&gt;
 owner: root&lt;br /&gt;
 group: root&lt;br /&gt;
 permissions: 755 on directories, 644 on files.&lt;br /&gt;
&lt;br /&gt;
If you allow local logins for regular users, then 2. should be:&lt;br /&gt;
 owner: root&lt;br /&gt;
 group: apache group (apache, httpd, www-data, whatever; see above)&lt;br /&gt;
 permissions: 750 on directories, 640 on files.&lt;br /&gt;
&lt;br /&gt;
Think of these permissions as the most paranoid ones. You can be secure enough with less tighter permissions, both in moodledata and moodle directories (and subdirectories).&lt;br /&gt;
&lt;br /&gt;
=== Running Moodle on a shared hosting environment ===&lt;br /&gt;
If you are running Moodle on a shared hosting environment, then above permissions are probably wrong. If you set 700 as the permission for directories (and 600 for files), you are probably denying the web service user account access to your directories and files.&lt;br /&gt;
&lt;br /&gt;
If you want to tighten your permissions as much as possible, you will need to know:&lt;br /&gt;
&lt;br /&gt;
# the user account and the group the web service is running under (see above).&lt;br /&gt;
# the owner of the directories/files of both moodledata and the moodle directory (this should normally be your client user account), and the group of the directories/files. You can usually get this information from the file manager of your hosting control panel. Go to the moodle folder and pick any directory or file and try to view/change the permissions, owner and group of that file. That would normally show the current permissions, owner and group. Do the same for the moodledata directory.&lt;br /&gt;
&lt;br /&gt;
Then, depending on the following scenarios you should use a different set of permissions (listed from more secure to less secure) for your moodledata directory:&lt;br /&gt;
&lt;br /&gt;
# if the web service account and the owner of the directories/files is the same, you should use 700 for directories and 600 for files.&lt;br /&gt;
# if the web service group and the group of the directories/files is the same, you should use 770 for directories and 660 for the files.&lt;br /&gt;
# if none of the above, you will need to use 777 for directories and 666 for files, which is less secure but it is your only option. 707 and 606 would be more secure, but it might or might not work, depending on your particular setup.&lt;br /&gt;
&lt;br /&gt;
In fact, you just need to set moodledata the permissions specified above, as all the directories and files inside are created by the web service itself, and will have the right permissions.&lt;br /&gt;
&lt;br /&gt;
Regarding the moodle directory, as long as the web service user account can read the files plus read and execute the directories, that should be enough. There is no need to grant write permission to the web service account/group on any of the files or subdirectories. The only drawback is that you will need to create the config.php by hand during the installation process, as Moodle will not be able to create it. But that should not be a big problem.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
*[[Security FAQ]]&lt;br /&gt;
Using Moodle forum discussions:&lt;br /&gt;
*[http://moodle.org/mod/forum/discuss.php?d=39404 Guide to Securing your Moodle Server]&lt;br /&gt;
*[http://moodle.org/mod/forum/discuss.php?d=93561 How to secure Moodle website from hacking] including recommendations on emergency recovery&lt;br /&gt;
&lt;br /&gt;
[[es:Recomendaciones de Seguridad]]&lt;br /&gt;
[[fr:Sécurité]]&lt;/div&gt;</summary>
		<author><name>Michaelh2</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/501/en/index.php?title=HTTP_security&amp;diff=140109</id>
		<title>HTTP security</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/501/en/index.php?title=HTTP_security&amp;diff=140109"/>
		<updated>2021-04-13T06:01:04Z</updated>

		<summary type="html">&lt;p&gt;Michaelh2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Security}}&lt;br /&gt;
*In Moodle 3.4 onwards, the setting &#039;Use HTTPS for logins&#039; (loginhttps) has been removed.&lt;br /&gt;
* There is a [[HTTPS conversion tool]] for converting embedded content to HTTPS.&lt;br /&gt;
&lt;br /&gt;
==Secure cookies only==&lt;br /&gt;
&lt;br /&gt;
It is recommended to use secure cookies only when serving over [https://en.wikipedia.org/wiki/Transport_Layer_Security SSL]. When not serving over SSL, the setting is ignored. In Moodle 3.1.2 onwards, the &#039;Secure cookies only&#039; default setting is on.&lt;br /&gt;
&lt;br /&gt;
==cURL blocked hosts list==&lt;br /&gt;
&lt;br /&gt;
This allows you to block Moodle&#039;s cURL implementation from accessing the specified hosts, wherever it is used to fetch content (such as by the URL downloader in the file picker). Generally it is recommended that as a minimum this is configured to prevent access to any internal network resources. The following is an example list of hosts which can be configured, which prevents access to various versions of &amp;quot;localhost&amp;quot;, as well as an address commonly used by AWS and some other cloud providers to provide meta data about the server instance (169.254.169.254):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
127.0.0.1&lt;br /&gt;
192.168.0.0/16&lt;br /&gt;
10.0.0.0/8&lt;br /&gt;
172.16.0.0/12&lt;br /&gt;
0.0.0.0&lt;br /&gt;
localhost&lt;br /&gt;
169.254.169.254&lt;br /&gt;
0000::1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In future, some logical default values such as those above will be configured automatically for new Moodle sites. See MDL-56873 for more details.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; In addition to configuring this at the application level via this setting, it is also recommended that sufficient firewall/network security measures are in place, including restricting access to internal network endpoints to those users/services that require them.&lt;br /&gt;
&lt;br /&gt;
==cURL allowed ports list==&lt;br /&gt;
&lt;br /&gt;
This allows you to restrict Moodle&#039;s cURL implementation to only access the specified list of port numbers, wherever it is used to fetch content (such as by the URL downloader in the file picker). Generally it is recommended that this is configured to only allow standard web ports, as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
80&lt;br /&gt;
443&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In future, some logical default values such as those above will be configured automatically for new Moodle sites. See MDL-56873 for more details.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; In addition to configuring this at the application level via this setting, it is also recommended that sufficient firewall/network security measures are in place, including restricting access to open ports on the internal network to those users/services that require them.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
* MDL-55662 for removing the secure cookies only setting&lt;br /&gt;
&lt;br /&gt;
[[Category:Site administration]]&lt;br /&gt;
&lt;br /&gt;
[[de:HTTP-Sicherheit]]&lt;br /&gt;
[[es:Seguridad HTTP]]&lt;/div&gt;</summary>
		<author><name>Michaelh2</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/501/en/index.php?title=Security_recommendations&amp;diff=138921</id>
		<title>Security recommendations</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/501/en/index.php?title=Security_recommendations&amp;diff=138921"/>
		<updated>2020-11-12T08:56:42Z</updated>

		<summary type="html">&lt;p&gt;Michaelh2: /* Miscellaneous considerations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Security}}All web application software is highly complex, and every application has security issues that are found from time to time, usually involving some combination of input that the programmers did not anticipate. The Moodle project takes security seriously, and is continuously improving Moodle to close such holes as we find them.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
*This page contains important security measures for your Moodle installation.&lt;br /&gt;
*You should report security problems to the [http://tracker.moodle.org/secure/CreateIssue!default.jspa  Moodle tracker] (and mark it as a security issue!) so that developers can see it and inform  registered Moodle sites about fixes as soon as possible.&lt;br /&gt;
*You should not post actual exploits in the forums or elsewhere on the web (to protect Moodle admins who have not upgraded yet).&lt;br /&gt;
&lt;br /&gt;
==Simple security measures==&lt;br /&gt;
*The best security strategy is a good backup! But you don&#039;t have a good backup unless you are able to restore it. Test your restoration procedures!&lt;br /&gt;
*Load only software or services you will use&lt;br /&gt;
*Perform regular updates&lt;br /&gt;
*Model your security after the layers of clothing you wear on a cold winter day&lt;br /&gt;
&lt;br /&gt;
==Basic recommendations==&lt;br /&gt;
&lt;br /&gt;
;Update Moodle regularly on each release&lt;br /&gt;
:Published security holes draw crackers attention after release. The older the version, the more vulnerabilities it is likely to contain.&lt;br /&gt;
; Use https to secure all pages (not just the login page)&lt;br /&gt;
:Protect all traffic from your Moodle instance and your users by making all pages accessible via https only. This not only protects passwords on login but also ensures the privacy of your users so that all user data cannot be intercepted or manipulated (&amp;quot;ad injections&amp;quot;) from third parties like WLAN providers for example. Free https certificates are available from https://letsencrypt.org/. In addition, set httpslogin=yes in your moodle config to add an extra layer of protection for submitting login credentials.&lt;br /&gt;
;[[admin/environment/custom check/php check register globals|Register globals &#039;&#039;&#039;MUST&#039;&#039;&#039; be disabled]]&lt;br /&gt;
:This will help prevent against possible XSS problems in third-party scripts.&lt;br /&gt;
;Use strong passwords for admin and teachers&lt;br /&gt;
:Choosing &amp;quot;difficult&amp;quot; passwords is a basic security practice to protect against &amp;quot;brute force&amp;quot; cracking of accounts.&lt;br /&gt;
;Only give teacher accounts to trusted users. Avoid creating public sandboxes with free teacher accounts on production servers.&lt;br /&gt;
:Teacher accounts have much freer permissions and it is easier to create situations where data can be abused or stolen.&lt;br /&gt;
;Separate your systems as much as possible&lt;br /&gt;
:Another basic security technique is to use different passwords on different systems, use different machines for different services and so on.  This will prevent damage being widespread even if one account or one server is compromised.&lt;br /&gt;
&lt;br /&gt;
==Run regular updates==&lt;br /&gt;
*Use auto update systems&lt;br /&gt;
*Windows Update &lt;br /&gt;
*Linux: up2date, yum, apt-get&lt;br /&gt;
:Consider automating updates with a script scheduled via cron &lt;br /&gt;
*Mac OSX update system&lt;br /&gt;
*Stay current with php, apache, and moodle&lt;br /&gt;
&lt;br /&gt;
==Use mailing lists to stay updated==&lt;br /&gt;
*CERT - http://www.us-cert.gov/cas/signup.html&lt;br /&gt;
*PHP - http://www.php.net/mailing-lists.php - sign up for Announcements list&lt;br /&gt;
*MySQL - http://lists.mysql.com - sign up for MySQL Announcements&lt;br /&gt;
&lt;br /&gt;
==Firewalls==&lt;br /&gt;
*Security experts recommend a dual firewall&lt;br /&gt;
:Differing hardware/software combinations &lt;br /&gt;
*Disabling unused services is often as effective as a firewall&lt;br /&gt;
:Use netstat -a to review open network ports&lt;br /&gt;
*Not a guarantee of protection&lt;br /&gt;
*Allow ports &lt;br /&gt;
:80, 443(ssl), and 9111 (for chat), &lt;br /&gt;
:Remote admin: ssh 22, or rdp 3389&lt;br /&gt;
&lt;br /&gt;
==Password policy==&lt;br /&gt;
&lt;br /&gt;
A password policy may be set up in &#039;&#039;Settings &amp;gt; Site administration &amp;gt; Security &amp;gt; [[Site policies]]&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
There is a check box to determine if password complexity should be enforced or not, the option to set the minimum length of the password, the minimum number of digits, the minimum number of lowercase characters, the minimum number of uppercase characters and the minimum number of non alphanumeric characters.&lt;br /&gt;
&lt;br /&gt;
If a user enters a password that does not meet those requirements, they are given an error message indicating the nature of the problem with the entered password.&lt;br /&gt;
&lt;br /&gt;
Enforcing password complexity along with requiring users to change their initial password go a long way in helping ensure that users choose and are in fact using &amp;quot;good passwords&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
However, making the check too onerous just results in them writing it down so be realistic.&lt;br /&gt;
&lt;br /&gt;
==Be prepared for the worst==&lt;br /&gt;
*Have backups ready &lt;br /&gt;
*Practice recovery procedures ahead of time &lt;br /&gt;
*Use a rootkit detector on a regular basis &lt;br /&gt;
**Linux/MacOSX - http://www.chkrootkit.org/ &lt;br /&gt;
**Windows - http://technet.microsoft.com/en-en/sysinternals/bb897445.aspx and http://technet.microsoft.com/de-de/sysinternals/bb897445.aspx&lt;br /&gt;
&lt;br /&gt;
==Moodle security alerts==&lt;br /&gt;
*Register your site with Moodle.org&lt;br /&gt;
:Registered users receive email alerts&lt;br /&gt;
*Security alerts also posted online&lt;br /&gt;
*Web - http://moodle.org/security&lt;br /&gt;
*RSS feed - http://moodle.org/rss/file.php/1/1/forum/996/rss.xml&lt;br /&gt;
&lt;br /&gt;
==Miscellaneous considerations==&lt;br /&gt;
These are all things you might consider that impact your overall security:&lt;br /&gt;
*Use the secure forms setting&lt;br /&gt;
*Always set a mysql root user password&lt;br /&gt;
*Turn off mysql network access&lt;br /&gt;
*Use SSL, httpslogins=yes&lt;br /&gt;
*Use good passwords - set up a password policy in &#039;&#039;Settings &amp;gt; Site administration &amp;gt; Security &amp;gt; [[Site policies]]&#039;&#039;&lt;br /&gt;
*Do not enable the &#039;&#039;opentowebcrawlers&#039;&#039; setting (in &#039;&#039;Settings &amp;gt; Site administration &amp;gt; Security &amp;gt; [[Site policies]]&#039;&#039;)&lt;br /&gt;
*Disable guest access&lt;br /&gt;
*Place enrollment keys on all courses or set Course Enrollable = No for all courses&lt;br /&gt;
*Ensure the enrolment key hint is disabled (which it is by default) in &#039;&#039;Administration &amp;gt; Site administration &amp;gt; Plugins &amp;gt; Enrolment &amp;gt; Self enrolment.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Most secure/paranoid file permissions==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: &amp;lt;u&amp;gt;The following information applies to Linux/Unix based installations only, as MS Windows permission system is quite different&amp;lt;/u&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Depending on your server set-up there are two different scenarios:&lt;br /&gt;
# You are running Moodle on your own dedicated server.&lt;br /&gt;
# You are running Moodle on a shared hosting environment.&lt;br /&gt;
&lt;br /&gt;
In the sections below, you are required to use the web service user account and group to set the permissions, so you need to know them. This can vary quite a bit from server to server but if this feature has not been disabled in your server, you can go to &#039;&#039;&amp;lt;nowiki&amp;gt;http://your.moodle.site/admin/phpinfo.php&amp;lt;/nowiki&amp;gt;&#039;&#039; (logging in as admin), and then search for the line that reads &#039;User/Group&#039;, inside the &#039;apache&#039; table. For example, I get &#039;www-data&#039; for the user account and &#039;www-data&#039; for the group too.&lt;br /&gt;
&lt;br /&gt;
=== Running Moodle on a dedicated server ===&lt;br /&gt;
Assuming you are running Moodle on a sealed server (i.e. no user logins allowed on the machine) and that root takes care of the modifications to both moodle code and moodle config (config.php), then this are the most tight permissions I can think of:&lt;br /&gt;
&lt;br /&gt;
1. moodledata directory and all of its contents (and subdirectories, includes sessions):&lt;br /&gt;
 owner: apache user (apache, httpd, www-data, whatever; see above)&lt;br /&gt;
 group: apache group (apache, httpd, www-data, whatever; see above)&lt;br /&gt;
 permissions: 700 on directories, 600 on files&lt;br /&gt;
&lt;br /&gt;
2. moodle directory and all of its contents and subdirectories (including config.php):&lt;br /&gt;
 owner: root&lt;br /&gt;
 group: root&lt;br /&gt;
 permissions: 755 on directories, 644 on files.&lt;br /&gt;
&lt;br /&gt;
If you allow local logins for regular users, then 2. should be:&lt;br /&gt;
 owner: root&lt;br /&gt;
 group: apache group (apache, httpd, www-data, whatever; see above)&lt;br /&gt;
 permissions: 750 on directories, 640 on files.&lt;br /&gt;
&lt;br /&gt;
Think of these permissions as the most paranoid ones. You can be secure enough with less tighter permissions, both in moodledata and moodle directories (and subdirectories).&lt;br /&gt;
&lt;br /&gt;
=== Running Moodle on a shared hosting environment ===&lt;br /&gt;
If you are running Moodle on a shared hosting environment, then above permissions are probably wrong. If you set 700 as the permission for directories (and 600 for files), you are probably denying the web service user account access to your directories and files.&lt;br /&gt;
&lt;br /&gt;
If you want to tighten your permissions as much as possible, you will need to know:&lt;br /&gt;
&lt;br /&gt;
# the user account and the group the web service is running under (see above).&lt;br /&gt;
# the owner of the directories/files of both moodledata and the moodle directory (this should normally be your client user account), and the group of the directories/files. You can usually get this information from the file manager of your hosting control panel. Go to the moodle folder and pick any directory or file and try to view/change the permissions, owner and group of that file. That would normally show the current permissions, owner and group. Do the same for the moodledata directory.&lt;br /&gt;
&lt;br /&gt;
Then, depending on the following scenarios you should use a different set of permissions (listed from more secure to less secure) for your moodledata directory:&lt;br /&gt;
&lt;br /&gt;
# if the web service account and the owner of the directories/files is the same, you should use 700 for directories and 600 for files.&lt;br /&gt;
# if the web service group and the group of the directories/files is the same, you should use 770 for directories and 660 for the files.&lt;br /&gt;
# if none of the above, you will need to use 777 for directories and 666 for files, which is less secure but it is your only option. 707 and 606 would be more secure, but it might or might not work, depending on your particular setup.&lt;br /&gt;
&lt;br /&gt;
In fact, you just need to set moodledata the permissions specified above, as all the directories and files inside are created by the web service itself, and will have the right permissions.&lt;br /&gt;
&lt;br /&gt;
Regarding the moodle directory, as long as the web service user account can read the files plus read and execute the directories, that should be enough. There is no need to grant write permission to the web service account/group on any of the files or subdirectories. The only drawback is that you will need to create the config.php by hand during the installation process, as Moodle will not be able to create it. But that should not be a big problem.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
*[[Security FAQ]]&lt;br /&gt;
Using Moodle forum discussions:&lt;br /&gt;
*[http://moodle.org/mod/forum/discuss.php?d=39404 Guide to Securing your Moodle Server]&lt;br /&gt;
*[http://moodle.org/mod/forum/discuss.php?d=93561 How to secure Moodle website from hacking] including recommendations on emergency recovery&lt;br /&gt;
&lt;br /&gt;
[[es:Recomendaciones de Seguridad]]&lt;br /&gt;
[[fr:Sécurité]]&lt;/div&gt;</summary>
		<author><name>Michaelh2</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/501/en/index.php?title=OAuth_2_LinkedIn_service&amp;diff=134118</id>
		<title>OAuth 2 LinkedIn service</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/501/en/index.php?title=OAuth_2_LinkedIn_service&amp;diff=134118"/>
		<updated>2019-05-29T05:27:55Z</updated>

		<summary type="html">&lt;p&gt;Michaelh2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{OAuth2}}&lt;br /&gt;
&lt;br /&gt;
From 1 May 2019, LinkedIn no longer support their v1 API, which could previously be configured as an OAuth 2 authentication method in Moodle. According to LinkedIn&#039;s v2 API [https://docs.microsoft.com/en-us/linkedin/consumer/integrations/self-serve/migration-faq?context=linkedin/consumer/context migration documentation], the new API replaces the old basic user information endpoint with a &#039;lite&#039; endpoint, which does not include a user&#039;s email address (which must be retrieved from a separate endpoint).&lt;br /&gt;
&lt;br /&gt;
Since email address is a required field in Moodle, and our OAuth 2 implementation currently requires all user information to be retrieved from a single endpoint, the LinkedIn v2 API currently appears to be incompatible with Moodle&#039;s &amp;quot;Custom OAuth 2 Service&amp;quot; feature.&lt;br /&gt;
&lt;br /&gt;
We are continuing to investigate a workaround for the new API, and will update this documentation further when a solution can be found. In the meantime, if you have any information that may assist with this, please contribute to Tracker issue MDL-65637.&lt;br /&gt;
[[es:Servicio OAuth 2 Linkedln]]&lt;br /&gt;
[[de:OAuth2 LinkedIn Service]]&lt;/div&gt;</summary>
		<author><name>Michaelh2</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/501/en/index.php?title=report/security/report_security_check_google&amp;diff=133996</id>
		<title>report/security/report security check google</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/501/en/index.php?title=report/security/report_security_check_google&amp;diff=133996"/>
		<updated>2019-05-22T05:56:00Z</updated>

		<summary type="html">&lt;p&gt;Michaelh2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Security overview report}}Allowing search engines to enter your site means that all the contents become available to the world. Don&#039;t use this unless it&#039;s a really public site. &lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
* Using Moodle [http://moodle.org/mod/forum/view.php?id=7301 Security and Privacy forum]&lt;/div&gt;</summary>
		<author><name>Michaelh2</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/501/en/index.php?title=Security_FAQ&amp;diff=132942</id>
		<title>Security FAQ</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/501/en/index.php?title=Security_FAQ&amp;diff=132942"/>
		<updated>2019-01-10T07:42:09Z</updated>

		<summary type="html">&lt;p&gt;Michaelh2: /* Who is able to view security issues in the Tracker? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Security}}&lt;br /&gt;
==How do I report a security issue?==&lt;br /&gt;
&lt;br /&gt;
See [[:dev:Moodle security procedures|Moodle security procedures]] in the dev docs for details on how to report a security issue.&lt;br /&gt;
&lt;br /&gt;
Previously fixed security issues are listed in the [http://moodle.org/security/ Moodle.org Security news]. If you are unsure whether a problem has been fixed or not, it&#039;s best to report it anyway.&lt;br /&gt;
&lt;br /&gt;
==How can I keep my site secure?==&lt;br /&gt;
&lt;br /&gt;
It&#039;s good practice to always use the latest stable release of the version you are using. It is safe to upgrade to a more recent version on the branch you are using, say from Moodle 2.X.1 to the latest version on the 2.X branch. [[Git for Administrators|Downloading via Git]] makes it very easy way to do this.&lt;br /&gt;
&lt;br /&gt;
==How do I keep track of recent security issues?==&lt;br /&gt;
&lt;br /&gt;
* [[Site registration | Register your Moodle site with moodle.org]], making sure to enable the option of being notified about security issues and updates. After your registration is accepted, your email address will be automatically added to our low-volume security alerts mailing list.&lt;br /&gt;
&lt;br /&gt;
* Eventually, all important security issues are published to the general public via the [http://moodle.org/mod/forum/view.php?f=996 Moodle Security forum]. You can subscribe to the forum or [http://twitter.com/moodlesecurity follow moodlesecurity on Twitter].&lt;br /&gt;
&lt;br /&gt;
==Who is able to view security issues in the Tracker?==&lt;br /&gt;
&lt;br /&gt;
Depending upon the security level of a Tracker issue, access is restricted to developers, testers or members of the security team. Specific details are available in the [[dev:Tracker guide#When_creating_an_issue|Security Level field description in the Tracker guide]].&lt;br /&gt;
&lt;br /&gt;
==Which versions of Moodle are supported?==&lt;br /&gt;
&lt;br /&gt;
Currently supported versions are listed on [http://download.moodle.org/ download.moodle.org].&lt;br /&gt;
&lt;br /&gt;
==My site was hacked. What do I do?==&lt;br /&gt;
&lt;br /&gt;
See [[Hacked site recovery]].&lt;br /&gt;
&lt;br /&gt;
==How can I reduce spam in Moodle?==&lt;br /&gt;
&lt;br /&gt;
See [[Reducing spam in Moodle]].&lt;br /&gt;
&lt;br /&gt;
==How can I increase privacy in Moodle?==&lt;br /&gt;
&lt;br /&gt;
See [[Increasing privacy in Moodle]].&lt;br /&gt;
&lt;br /&gt;
==How do I enable reCAPTCHA?==&lt;br /&gt;
&lt;br /&gt;
To add spam protection to the [[Email-based self-registration]] new account form with a CAPTCHA element:&lt;br /&gt;
&lt;br /&gt;
#Obtain a reCAPTCHA key from http://recaptcha.net by [https://admin.recaptcha.net/accounts/signup/?next= signing up for an account] (free) then entering a domain.&lt;br /&gt;
#Copy and paste the public and private keys provided into the &#039;&#039;recaptchapublickey&#039;&#039; and &#039;&#039;recaptchaprivatekey&#039;&#039; fields in the manage authentication common settings in &#039;&#039;Administration &amp;gt; Plugins &amp;gt; Authentication &amp;gt; [[Manage authentication]]&#039;&#039;.&lt;br /&gt;
#Click the &amp;quot;Save changes&amp;quot; button at the bottom of the page.&lt;br /&gt;
#Follow the settings link for email-based self-registration in &#039;&#039;Administration &amp;gt; Plugins &amp;gt; Authentication &amp;gt; Manage authentication&#039;&#039; and enable the reCAPTCHA element.&lt;br /&gt;
#Click the &amp;quot;Save changes&amp;quot; button at the bottom of the page.&lt;br /&gt;
&lt;br /&gt;
==How can I run the security overview report?==&lt;br /&gt;
&lt;br /&gt;
To run the [[Security overview|security overview report]], go to &#039;&#039;Administration &amp;gt; Site administration &amp;gt; Reports &amp;gt; Security overview&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== I have discovered Cross Site Scripting (XSS) is possible with Moodle ==&lt;br /&gt;
&lt;br /&gt;
Some forms of rich content used by teachers to enhance their courses use the same technologies that malicious users can use for cross-site scripting attacks. If Moodle was solely concerned with security, it would not allow this. However, Moodle is also concerned with education and so a balance has to be struck between securing the system and supporting teachers with their needs.&lt;br /&gt;
&lt;br /&gt;
In order to strike a balance between authoring rich educational content and securing the system, access to post XSS-capable content is controlled by capabilites flagged with the &#039;XSS risk&#039; - see [[Risks]]. In general this means that admins and teachers can post XSS-capable content, but students can not - see [[XSS_trusted_users]].&lt;br /&gt;
&lt;br /&gt;
Occasionally security bugs are discovered in Moodle&#039;s handling of XSS capable content and we are greatful to the community for reporting these through [https://docs.moodle.org/dev/Moodle_security_procedures responsible disclosure].  Before reporting an XSS bug to Moodle, please ensure that the user posting the XSS content does not have capabilities flagged with the XSS risk.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
* Using Moodle [http://moodle.org/mod/forum/view.php?id=7301 Security and Privacy forum]&lt;br /&gt;
&lt;br /&gt;
[[Category:FAQ]]&lt;br /&gt;
&lt;br /&gt;
[[es:Seguridad FAQ]]&lt;/div&gt;</summary>
		<author><name>Michaelh2</name></author>
	</entry>
</feed>