<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://docs.moodle.org/dev/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jonwitts</id>
	<title>MoodleDocs - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://docs.moodle.org/dev/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jonwitts"/>
	<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/Special:Contributions/Jonwitts"/>
	<updated>2026-04-23T22:42:56Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Filters&amp;diff=49117</id>
		<title>Filters</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Filters&amp;diff=49117"/>
		<updated>2015-12-03T23:46:54Z</updated>

		<summary type="html">&lt;p&gt;Jonwitts: /* Local configuration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&#039;&#039;&#039;Please note:&#039;&#039;&#039; This page contains information for developers. You may prefer to read the [[:en:Filters| information about filters for teachers and administrators]].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Moodle 2.0}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Filters&#039;&#039;&#039; are a way to automatically transform content before it is output. For example&lt;br /&gt;
* render embedded equations to images (the TeX filter)&lt;br /&gt;
* Links to media files can be automatically converted to an embedded applet for playing the media.&lt;br /&gt;
* Mentions of glossary terms can be automatically converted to links.&lt;br /&gt;
The possibilities are endless. There are a number of standard filters included with Moodle, or you can create your own. Filters are one of the easiest types of plugin to create. This page explains how.&lt;br /&gt;
&lt;br /&gt;
==Before you start==&lt;br /&gt;
&lt;br /&gt;
Go to  Site administration ▶ Plugins ▶ Filters ▶ Common filter settings and set Text cache lifetime to 0 (&amp;quot;No&amp;quot;) while you do development. Otherwise, you will not be able to see the effects of your changes when you edit your filter&#039;s code. (You should also be using the other common developer settings, like developer debug, theme designer mode and so on.)&lt;br /&gt;
&lt;br /&gt;
==Creating a basic filter==&lt;br /&gt;
&lt;br /&gt;
During this tutorial, we will build a simple example filter. We will make one that adds the word &#039;hello&#039; before every occurrence of the word &#039;world&#039;.&lt;br /&gt;
&lt;br /&gt;
1. Since our filter is not part of a module, we should put it inside the &#039;filter&#039; folder. Therefore, we create a directory called &#039;filter/helloworld&#039;.&lt;br /&gt;
&lt;br /&gt;
2. Inside that folder, we create a file called &#039;filter.php&#039;.&lt;br /&gt;
&lt;br /&gt;
3. Inside that PHP file, we define a class called filter_helloworld, that extends the moodle_text_filter class.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
class filter_helloworld extends moodle_text_filter {&lt;br /&gt;
    // ...&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4. Inside that class, we have to define one method, called &#039;filter&#039;. This takes the HTML to be filtered as an argument. The method should then transform that, and return the processed text. Replace the &#039;// ...&#039; above with&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
class filter_helloworld extends moodle_text_filter {&lt;br /&gt;
    public function filter($text, array $options = array()) {&lt;br /&gt;
        return str_replace(&#039;world&#039;, &#039;hello world!&#039;, $text);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That is basically all there is to it!&lt;br /&gt;
&lt;br /&gt;
==Giving your filter a name==&lt;br /&gt;
&lt;br /&gt;
To try the new filter, you first have to log in as Administrator and enable it by going to the page Administration ► Plugins ► Filters ► Manage filters.&lt;br /&gt;
&lt;br /&gt;
When you do, you will find that your plugin does not have a name. We missed a step:&lt;br /&gt;
&lt;br /&gt;
5. Inside the &#039;filter/helloworld&#039; folder, create a folder called &#039;lang&#039;, and in there, create a folder called &#039;en&#039;.&lt;br /&gt;
&lt;br /&gt;
6. Inside there, create a file called &#039;filter_helloworld.php&#039;. That is, you have just created the file &#039;filter/helloworld/lang/en/filter_helloworld.php&#039;.&lt;br /&gt;
&lt;br /&gt;
7. In that file, put&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php // $Id$&lt;br /&gt;
// Language string for filter/helloworld.&lt;br /&gt;
&lt;br /&gt;
$string[&#039;filtername&#039;] = &#039;Hello world!&#039;;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That may seem a little involved, just to give your filter a name, but it is just [[Places_to_search_for_lang_strings|the standard way Moodle stores language strings for plugins]].&lt;br /&gt;
&lt;br /&gt;
==Trying out your filter==&lt;br /&gt;
&lt;br /&gt;
We had just got to the [[Filters|filters administration screen]]. If you reload that page now, it should now show your filter with its proper name. Turn your filter on now.&lt;br /&gt;
&lt;br /&gt;
Filters are applied to all text that is printed with the [[Output functions|output functions]] format_text(), and, if you have turned on that option, format_string(). So, to see your filter in action, add some content containing the word &#039;world&#039; somewhere, for example, create a test course, and use the word in the course description. When you look at that course in the course listing, you should see that your filter has transformed it.&lt;br /&gt;
&lt;br /&gt;
==Adding a global settings screen==&lt;br /&gt;
&lt;br /&gt;
Some filters can benefit from some settings to let the administrator control how they work. Suppose we want to greet something other than &#039;world&#039;. To add global settings to the filter you need to:&lt;br /&gt;
&lt;br /&gt;
8. Create a file called &#039;filtersettings.php&#039; inside the &#039;filter/helloworld&#039; folder. Use standard &#039;settings.php&#039; file in Moodle 2.6 and later.&lt;br /&gt;
&lt;br /&gt;
9. In the &#039;filtersettings.php&#039; file, put something like:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$settings-&amp;gt;add(new admin_setting_configtext(&#039;filter_helloworld/word&#039;,&lt;br /&gt;
        get_string(&#039;word&#039;, &#039;filter_helloworld&#039;),&lt;br /&gt;
        get_string(&#039;word_desc&#039;, &#039;filter_helloworld&#039;), &#039;world&#039;, PARAM_NOTAGS));&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
10. In the language file &#039;filter/helloworld/lang/en/filter_helloworld.php&#039; add the necessary strings:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$string[&#039;word&#039;] = &#039;The thing to greet&#039;;&lt;br /&gt;
$string[&#039;word_desc&#039;] = &#039;The hello world filter will add the word \&#039;hello\&#039; in front of every occurrence of this word in any content.&#039;;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
11. Change the filter to use the new setting:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
class filter_helloworld extends moodle_text_filter {&lt;br /&gt;
    public function filter($text, array $options = array()) {&lt;br /&gt;
        global $CFG;&lt;br /&gt;
        return str_replace($CFG-&amp;gt;filter_helloworld/word,&lt;br /&gt;
                &amp;quot;hello $CFG-&amp;gt;filter_helloworld/word!&amp;quot;, $text);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In standard Moodle, the censor, mediaplugin and tex filters all provide good examples of of how filters use global configuration like this.&lt;br /&gt;
&lt;br /&gt;
==A note about performance==&lt;br /&gt;
&lt;br /&gt;
One important thing to remember when creating a filter is that the filter will be called to transform every bit of text output using format_text(), and possibly also format_string(). That means that you have to be careful, or you could cause big performance problems. If you have to get data out of the database, try to cache it so that you only do a fixed number of database queries per page load. The Glossary filter is an example of this. (I am not sure how good an example ;-))&lt;br /&gt;
&lt;br /&gt;
If your filter uses a special syntax or it is based on an appearance of&lt;br /&gt;
a substring in the text, it is recommend to perform a quick and cheap&lt;br /&gt;
&amp;lt;tt&amp;gt;strpos()&amp;lt;/tt&amp;gt; search first prior to executing the full regex-based search and replace.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * Example of a filter that uses &amp;lt;a&amp;gt; links in some way.&lt;br /&gt;
 */&lt;br /&gt;
public function filter($text, array $options = array()) {&lt;br /&gt;
&lt;br /&gt;
    if (!is_string($text) or empty($text)) {&lt;br /&gt;
        // Non-string data can not be filtered anyway.&lt;br /&gt;
        return $text;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    if (stripos($text, &#039;&amp;lt;/a&amp;gt;&#039;) === false) {&lt;br /&gt;
        // Performance shortcut - if there is no &amp;lt;/a&amp;gt; tag, nothing can match.&lt;br /&gt;
        return $text;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Here we can perform some more complex operations with the &amp;lt;a&amp;gt;&lt;br /&gt;
    // links in the text.&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Local configuration==&lt;br /&gt;
&lt;br /&gt;
In addition, in Moodle 2.0, filters can also have different configuration in each context. For example, the glossary filter could be changed so that in Forum A, you can choose to only link words from a particular glossary, say Glossary A, while in Forum B you choose to link words from Glossary B.&lt;br /&gt;
&lt;br /&gt;
To do that sort of thing, you need to add a file called filterlocalsettings.php. In it, you must define a [[lib/formslib.php|Moodle form]] that is a subclass of filter_local_settings_form. In addition to the standard formslib methods, you also need to define a save_changes method. There is not a good example of this in the standard Moodle install yet. To continue our example:&lt;br /&gt;
&lt;br /&gt;
12. Create a file called &#039;filterlocalsettings.php&#039; inside the &#039;filter/helloworld&#039; folder.&lt;br /&gt;
&lt;br /&gt;
13. In the &#039;filterlocalsettings.php&#039; file, put:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
class helloworld_filter_local_settings_form extends filter_local_settings_form {&lt;br /&gt;
    protected function definition_inner($mform) {&lt;br /&gt;
        $mform-&amp;gt;addElement(&#039;text&#039;, &#039;word&#039;, get_string(&#039;word&#039;, &#039;filter_helloworld&#039;), array(&#039;size&#039; =&amp;gt; 20));&lt;br /&gt;
        $mform-&amp;gt;setType(&#039;word&#039;, PARAM_NOTAGS);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
14. Extend the filter to use the new setting, if it is present. The filter must be able to work if the setting is not set, for example by falling back to the global or default setting in this case&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
class filter_helloworld extends moodle_text_filter {&lt;br /&gt;
    public function filter($text, array $options = array()) {&lt;br /&gt;
        global $CFG;&lt;br /&gt;
        if (isset($this-&amp;gt;localconfig[&#039;word&#039;])) {&lt;br /&gt;
            $word = $this-&amp;gt;localconfig[&#039;word&#039;];&lt;br /&gt;
        } else {&lt;br /&gt;
            $word = $CFG-&amp;gt;filter_helloworld/word;&lt;br /&gt;
        }&lt;br /&gt;
        return str_replace($word, &amp;quot;hello $word!&amp;quot;, $text);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Two types of filter==&lt;br /&gt;
&lt;br /&gt;
In the past, Moodle supported two different types of filter:&lt;br /&gt;
* Stand-alone filters like the one we created above. These live in a folder inside the &#039;filter&#039; folder. For example, in &#039;filter/myfilter&#039;. &#039;filter/tex&#039; is an example of a core filter of this type.&lt;br /&gt;
* Filters that were part of an activity module. In this case, the filter code lives inside the &#039;mod/mymod&#039; folder. &#039;mod/glossary&#039; used to be an example of a core module with a filter.&lt;br /&gt;
The second option no longer exists in Moodle 2.5 and later. All filters live in the filter folder. Of course, a filter may depend on an associated other plugin, like mod_glossary. If so, you should declare that in the [[version.php]] file.&lt;br /&gt;
&lt;br /&gt;
==Dynamic content==&lt;br /&gt;
&lt;br /&gt;
From Moodle 2.7:&lt;br /&gt;
On (very few) pages - it is possible that page content is loaded by ajax *after* the page is loaded (e.g. equations in a glossary popup). In certain filter types (e.g. MathJax) javascript is required to be run on the output of the filter in order to do the final markup. For these types of filters, a javascript event is triggered when new content is added to the page (the content will have already been processed by the filter in php). The javascript for a filter can listen for these event notifications and reprocess the affected dom nodes. &lt;br /&gt;
&lt;br /&gt;
To subscribe to the event:&lt;br /&gt;
&lt;br /&gt;
        // Listen for events triggered when new text is added to a page that needs                                                  &lt;br /&gt;
        // processing by a filter.                                                                                                  &lt;br /&gt;
        Y.on(M.core.event.FILTER_CONTENT_UPDATED, this.contentUpdated, this);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To handle the event:&lt;br /&gt;
&lt;br /&gt;
    /**                                                                                                                             &lt;br /&gt;
     * Handle content updated events - typeset the new content.                                                                     &lt;br /&gt;
     * @method contentUpdated                                                                                                       &lt;br /&gt;
     * @param Y.Event - Custom event with &amp;quot;nodes&amp;quot; indicating the root of the updated nodes.                                         &lt;br /&gt;
     */                                                                                                                             &lt;br /&gt;
    contentUpdated: function(event) {                                                                                               &lt;br /&gt;
        var self = this;                                                                                                            &lt;br /&gt;
        Y.use(&#039;mathjax&#039;, function() {                                                                                               &lt;br /&gt;
            self._setLocale();                                                                                                      &lt;br /&gt;
            event.nodes.each(function (node) {                                                                                      &lt;br /&gt;
                node.all(&#039;.filter_mathjaxloader_equation&#039;).each(function(node) {                                                    &lt;br /&gt;
                    MathJax.Hub.Queue([&amp;quot;Typeset&amp;quot;, MathJax.Hub, node.getDOMNode()]);                                                 &lt;br /&gt;
                });                                                                                                                 &lt;br /&gt;
            });                                                                                                                     &lt;br /&gt;
        });                                                                                                                         &lt;br /&gt;
    }                      &lt;br /&gt;
&lt;br /&gt;
See: filter/mathjaxloader/yui/src/loader/js/loader.js&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
* [[Filters schema]] - a page containing some ideas and thoughts about modifications to the filters system&lt;br /&gt;
* [[:en:Filters]] user documentation about filters.&lt;br /&gt;
* [https://moodle.org/plugins/browse.php?list=category&amp;amp;id=7 - List of filters in the Plugins database].&lt;br /&gt;
&lt;br /&gt;
[[Category:Filter]]&lt;br /&gt;
[[Category:Plugins]]&lt;/div&gt;</summary>
		<author><name>Jonwitts</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Roles&amp;diff=30955</id>
		<title>Roles</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Roles&amp;diff=30955"/>
		<updated>2011-12-13T14:25:06Z</updated>

		<summary type="html">&lt;p&gt;Jonwitts: /* Context */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Definitions==&lt;br /&gt;
&lt;br /&gt;
* A &#039;&#039;&#039;role&#039;&#039;&#039; is an identifier of the user&#039;s status in some context. For example: Teacher, Student and Forum moderator are examples of roles.&lt;br /&gt;
&lt;br /&gt;
* A &#039;&#039;&#039;capability&#039;&#039;&#039; is a description of some particular Moodle feature. Capabilities are associated with roles. For example, &#039;&#039;mod/forum:replypost&#039;&#039; is a capability.&lt;br /&gt;
&lt;br /&gt;
* A &#039;&#039;&#039;permission&#039;&#039;&#039; is some value that is assigned for a capability for a particular role.  For example, allow or prevent.&lt;br /&gt;
&lt;br /&gt;
* A &#039;&#039;&#039;context&#039;&#039;&#039; is a &amp;quot;space&amp;quot; in the Moodle, such as courses, activity modules, blocks etc.&lt;br /&gt;
&lt;br /&gt;
==The system prior to v1.7==&lt;br /&gt;
&lt;br /&gt;
In versions prior to v1.7, Moodle uses a fixed set of roles i.e. primary admin, admins, course creators, editing teachers, non-editing teachers, students, and guests. For each role, the capability or actions that they can perform are fixed. For example, the role student allows the user to submit an assignment, but doesn&#039;t allow the user to browse/edit other users&#039; work. By using this setup we limit ourselves to a rather rigid set of capabilities for each role. If we want, say a particular student or group to be able to mark assignments in a particular course, we can&#039;t do that without giving these users teacher privileges.&lt;br /&gt;
&lt;br /&gt;
==The new roles and capability system==&lt;br /&gt;
&lt;br /&gt;
With v1.7 and greater, Moodle introduces a roles and capabilities system.&lt;br /&gt;
&lt;br /&gt;
=== Roles ===&lt;br /&gt;
Role has two primary functions:&lt;br /&gt;
# define list of permissions - role definition is global for all contexts, but can be changed by local context overrides&lt;br /&gt;
# replace old course enrolments - role assignment in course context is similar to the old enrolment process&lt;br /&gt;
&lt;br /&gt;
The new system will allow authorized users to define an arbitrary number of roles (eg a teacher) &lt;br /&gt;
&lt;br /&gt;
A role consists of a list of permissions for different possible actions within Moodle (eg delete discussions, add activities etc)&lt;br /&gt;
&lt;br /&gt;
Roles can be applied to users in a &#039;&#039;context&#039;&#039; (eg assign Fred as a teacher in a particular course)&lt;br /&gt;
&lt;br /&gt;
=== Context ===&lt;br /&gt;
Here are the possible contexts, listed from the most general to the most specific. &lt;br /&gt;
&lt;br /&gt;
[[Image:Moodle-contexts-1.8.png|right|thumbnail|200px|A diagram of the contexts in Moodle. Click on the diagram to see a more detailed view of it.]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;nicetable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! CONTEXT NAME&lt;br /&gt;
! CONTEXT AREA&lt;br /&gt;
! CONTEXTLEVEL&lt;br /&gt;
|-&lt;br /&gt;
| CONTEXT_SYSTEM&lt;br /&gt;
| the whole site&lt;br /&gt;
| 10&lt;br /&gt;
|-&lt;br /&gt;
| CONTEXT_USER&lt;br /&gt;
| another user&lt;br /&gt;
| 30&lt;br /&gt;
|-&lt;br /&gt;
| CONTEXT_COURSECAT&lt;br /&gt;
| a course category&lt;br /&gt;
| 40&lt;br /&gt;
|-&lt;br /&gt;
| CONTEXT_COURSE&lt;br /&gt;
| a course&lt;br /&gt;
| 50&lt;br /&gt;
|-&lt;br /&gt;
| CONTEXT_GROUP&lt;br /&gt;
| a group&lt;br /&gt;
| 60&lt;br /&gt;
|-&lt;br /&gt;
| CONTEXT_MODULE&lt;br /&gt;
| an activity module&lt;br /&gt;
| 70&lt;br /&gt;
|-&lt;br /&gt;
| CONTEXT_BLOCK&lt;br /&gt;
| a block&lt;br /&gt;
| 80&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Please note that CONTEXT_PERSONAL (present in 1.7-1.8) was never implemented and was removed in 1.9. CONTEXT_GROUP is also not implemented and can not be used.&lt;br /&gt;
&lt;br /&gt;
An authorized user will be able to assign an arbitrary number of roles to each user in any context.&lt;br /&gt;
&lt;br /&gt;
(See [[Roles and modules#Context]] for more information.)&lt;br /&gt;
&lt;br /&gt;
=== Capabilities ===&lt;br /&gt;
Capabilities can have the following permissions:&lt;br /&gt;
&lt;br /&gt;
#CAP_INHERIT&lt;br /&gt;
#CAP_ALLOW&lt;br /&gt;
#CAP_PREVENT&lt;br /&gt;
#CAP_PROHIBIT&lt;br /&gt;
&lt;br /&gt;
If no permission is defined, then the capability permission is inherited from a context that is more general than the current context. If we define different permission values for the same capability in different contexts, we say that we are overriding the capability in the more specific context.&lt;br /&gt;
&lt;br /&gt;
=== Checking for capabilities ===&lt;br /&gt;
You can use the [[Roles_and_modules#has_capability_.28.24capability.2C_.24contextid.2C_.24kill.29|has_capability ()]] function for checking for capabilities in your code. &lt;br /&gt;
&lt;br /&gt;
=== Capability conflicts ===&lt;br /&gt;
Since the capabilities in each role could be different, there could be conflict in capabilities. This is resolved by enforcing the rule that the capability defined for a more specific context will win, unless a prohibit is encountered in a less specific context.&lt;br /&gt;
&lt;br /&gt;
For example, Mark has a student role at course level, which allows him to write into a wiki. But Mark also got assigned a Visitor role at a module context level (for a particular wiki) which prevents him from writing to the wiki (read only). Therefore, for this particular wiki, Mark will not be able to write to the wiki since the more specific context wins.&lt;br /&gt;
&lt;br /&gt;
If we set a PROHIBIT on a capability, it means that the capability cannot be overridden and will ALWAYS  have a permission of prevent (deny). Prohibit always wins.   For example, Jeff has a naughty student role that prohibits him from postings in any forums (for the whole site), but he&#039;s also assigned a facilitator role in &amp;quot;Science forum&amp;quot; in the course Science and Math 101. Since prohibit always wins, Jeff is unable to post in &amp;quot;Science forum&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Allow and prevent will cancel each other out if set for the same capability at the same context level. If this happens, we refer to the previous context level to determine the permission for the capability.&lt;br /&gt;
&lt;br /&gt;
This may sound more complex than it really is in practice.  The upshot is that the system can be flexible enough to allow pretty much any combination of permissions.&lt;br /&gt;
&lt;br /&gt;
===Capability-locality changes in v1.9===&lt;br /&gt;
&lt;br /&gt;
When resolving conflicts between &amp;quot;allow&amp;quot; and &amp;quot;prevent&amp;quot; in v1.7 and v1.8 the locality of the capability is taken into account, although with less weight than the locality of the role assignment. In v1.9 the process has been simplified, we consider locality of the role assignment when dealing with allow/prevent conflicts, but ignore where the capability has been defined (as long as it applies to the context).&lt;br /&gt;
&lt;br /&gt;
For example - for the situation where there is&lt;br /&gt;
&lt;br /&gt;
* two roles assigned to one user in a context (eg student role and teacher role)&lt;br /&gt;
* one override on one of those roles ( eg student role), at the same context&lt;br /&gt;
 &lt;br /&gt;
then&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;1.7/1.8&#039;&#039;&#039; The override used to &#039;&#039;always&#039;&#039; win over the settings from the combined roles.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;1.9&#039;&#039;&#039; The override is combined with the student role first. and then the roles are combined. This is more logical, as the override is acting like a modification to the student role.&lt;br /&gt;
&lt;br /&gt;
For more details, see [http://tracker.moodle.org/browse/MDL-11218 MDL-11218]&lt;br /&gt;
&lt;br /&gt;
==Upgrading from 1.6==&lt;br /&gt;
&lt;br /&gt;
A smooth upgrade will be provided with 1.7. The existing roles (admin, teacher, student, etc), and the existing capabilities will be automatically retained.  This is done by creating default roles at site/course levels, and assigning the current users to these roles accordingly. The default roles will have default capabilities associated with them, mirroring what we have  in 1.6.   With no modifications, Moodle will operate exactly the same before and after the upgrade.&lt;br /&gt;
&lt;br /&gt;
===Admins===&lt;br /&gt;
&lt;br /&gt;
Admin users will be assigned the default legacy admin role in the system (site) context&lt;br /&gt;
&lt;br /&gt;
===Course Creators===&lt;br /&gt;
&lt;br /&gt;
Course Creators will be assigned the default legacy course creator role in the system (site) context&lt;br /&gt;
&lt;br /&gt;
===Teachers===&lt;br /&gt;
&lt;br /&gt;
Users who were teachers will be assigned the default legacy teacher role (or non-editing teacher role) in all courses they were teacher.&lt;br /&gt;
&lt;br /&gt;
===Students===&lt;br /&gt;
&lt;br /&gt;
Users who were students will be assigned the default student role in all courses they were student.&lt;br /&gt;
&lt;br /&gt;
===Guests===&lt;br /&gt;
&lt;br /&gt;
There will still be a single guest user with no default role at site level.   For each course that allows guest access, the guest role will be assigned to the guest user for that course context.   The guest control for the course will be modified from three to two options (guests always need to enter enrolment key - on/off).  This setting is checked as now to force guests to enter key.&lt;br /&gt;
&lt;br /&gt;
==Capabilities==&lt;br /&gt;
&lt;br /&gt;
This will be a comprehensive list of capabilities (it&#039;s not complete yet). It is important that capability names are unique.&lt;br /&gt;
&lt;br /&gt;
===Core-level Capabilities===&lt;br /&gt;
&lt;br /&gt;
Moodle core capability names start with &#039;moodle/&#039;.  The next word indicates what type of core capability it is, and the last word is the actual capability itself.  The capabilities for the Moodle core are defined in lib/db/access.php&lt;br /&gt;
&lt;br /&gt;
#moodle/legacy:guest - legacy capabilities are used to transition existing users to the new roles system during the upgrade to Moodle 1.7&lt;br /&gt;
#moodle/legacy:student&lt;br /&gt;
#moodle/legacy:teacher&lt;br /&gt;
#moodle/legacy:editingteacher&lt;br /&gt;
#moodle/legacy:coursecreator&lt;br /&gt;
#moodle/legacy:admin&lt;br /&gt;
#moodle/site:doanything - special capability, meant for admins, if is set, overrides all other capability settings&lt;br /&gt;
#moodle/site:config - applicable in admin/index.php and config.php (might break down later) : 1)admin/config.php 2)admin/configure.php 3)blocks/admin/block_admin.php load_content_for_site()&lt;br /&gt;
#moodle/site:readallmessages - reads all messages and history&lt;br /&gt;
#moodle/site:approvecourse - approves a pending course&lt;br /&gt;
#moodle/site:manageblocks - adding/removing/editing blocks (site, course contexts only for now) : 1)_add_edit_controls moodleblock.class.php &lt;br /&gt;
#moodle/site:backup - can create a course backup : 1)course/category.php 2)block_admin.php&lt;br /&gt;
#moodle/site:restore - can restore into this context : 1)course/category.php 2)block_admin.php&lt;br /&gt;
#moodle/site:import - can import other courses into this context : 1)block_admin.php&lt;br /&gt;
#moodle/site:accessallgroups - able to access all groups irrespective of what group the user is in&lt;br /&gt;
#moodle/site:accessdb - directly accessing db (phpmyadmin)&lt;br /&gt;
#moodle/site:viewfullnames - able to see fullnames of other users&lt;br /&gt;
#moodle/site:viewparticipants - able to view participants&lt;br /&gt;
#moodle/site:viewreports - able to view site/course reports&lt;br /&gt;
#moodle/site:trustcontent - ability to use trusttext feature and bypass cleaning in specific areas&lt;br /&gt;
#moodle/site:uploadusers - ability to upload/update users from text file; moodle/role:assign capability is needed for course enrolling&lt;br /&gt;
#moodle/blog:view - read blogs (usable in system or course context)&lt;br /&gt;
#moodle/blog:create - write new blog posts (usable in system context only)&lt;br /&gt;
#moodle/blog:manageofficialtags - create/delete official blog tags that others can use (usable in system context only)&lt;br /&gt;
#moodle/blog:managepersonaltags - delete personal blog tags that others can use (usable in system context only) Note: users can always add own personal tags. This setting should be off for students by default.&lt;br /&gt;
#moodle/blog:manageentries - edit/delete all blog entries (usable in system context only)&lt;br /&gt;
#moodle/course:setcurrentsection - mark course section&lt;br /&gt;
#moodle/course:create - create courses : 1)course/edit.php 2)course/category.php 3)course/index.php&lt;br /&gt;
#moodle/course:delete - create courses : 1)course/category.php&lt;br /&gt;
#moodle/course:update - update course settings&lt;br /&gt;
#moodle/course:view - can use this to find participants&lt;br /&gt;
#moodle/course:viewparticipants - allows a user to view participant list&lt;br /&gt;
#moodle/course:viewscales - view scales (i.e. in a help window?) : 1)course/scales.php&lt;br /&gt;
#moodle/course:manageactivities - adding/removing/editing activities and resources (don&#039;t think it makes any sense to split these)&lt;br /&gt;
#moodle/course:managescales - add, delete, edit scales, move scales up and down : 1)blocks/block_admin.php 2)course/scales.php&lt;br /&gt;
#moodle/course:managegroups - managing groups, add, edit, delete : 1)course/groups.php 2)course/group.php&lt;br /&gt;
#moodle/course:managefiles - manage course files and folders&lt;br /&gt;
#moodle/course:managequestions - manage course questions&lt;br /&gt;
#moodle/course:managemetacourse - manage child courses in metacourse&lt;br /&gt;
#moodle/course:reset - able to reset the course&lt;br /&gt;
#moodle/course:useremail - Can use the enable/disable email stuff&lt;br /&gt;
#moodle/course:visibility - hide/show courses : 1)course/category.php&lt;br /&gt;
#moodle/course:viewhiddencourses - see hidden courses&lt;br /&gt;
#moodle/course:activityvisibility - hide/show activities within a course&lt;br /&gt;
#moodle/course:viewhiddenactivities - able to see activities that have been hidden&lt;br /&gt;
#moodle/course:sectionvisibility - hide/show sections&lt;br /&gt;
#moodle/course:viewhiddensections - view hidden sections&lt;br /&gt;
#moodle/course:viewcoursegrades - views all grades in course&lt;br /&gt;
#moodle/course:viewhiddenuserfields - view all hidden user fields&lt;br /&gt;
#moodle/course:managegrades - manages grades settings in course&lt;br /&gt;
#moodle/category:create - create category : 1)course/index.php&lt;br /&gt;
#moodle/category:delete - delete category : 1)course/index.php&lt;br /&gt;
#moodle/category:update - update category settings (sort and rename) this is currently an admin capability : 1)course/category.php&lt;br /&gt;
#moodle/category:visibility - hide/show categories : 1)course/index.php&lt;br /&gt;
#moodle/user:viewusergrades - view your own, or other user&#039;s grades (with specified context)&lt;br /&gt;
#moodle/user:create - create user : 1) user/edit.php&lt;br /&gt;
#moodle/user:delete - delete user : 1) admin/user.php&lt;br /&gt;
#moodle/user:readuserblogs - read blog entries&lt;br /&gt;
#moodle/user:update - update user settings : 1) user/edit.php&lt;br /&gt;
#moodle/user:viewdetails - view personally-identifying user details (e.g. name, photo).&lt;br /&gt;
#moodle/user:viewhiddendetails - view user details marked as &amp;quot;hidden&amp;quot;&lt;br /&gt;
#moodle/calendar:manageownentries - create/edit/delete &lt;br /&gt;
#moodle/calendar:manageentries - create/edit/delete&lt;br /&gt;
#moodle/role:assign - assign roles to users&lt;br /&gt;
#moodle/role:override - can override role capabilities (depending on context)&lt;br /&gt;
#moodle/role:manage - create/edit/delete roles, set capability permissions for each role&lt;br /&gt;
#moodle/role:unassignself - unassign yourself from your own roles&lt;br /&gt;
#moodle/role:viewhiddenassigns - view role assignments that have been marked as hidden&lt;br /&gt;
#moodle/question:import - imports questions (course level?) - Yes, question permissions currently need to be course-level.--[[User:Tim Hunt|Tim Hunt]]&lt;br /&gt;
#moodle/question:export - exports questions (course level?)&lt;br /&gt;
#moodle/question:managecategory - add/delete/edit question categories (course level?)&lt;br /&gt;
#moodle/question:manage - add/edit/delete a question (course level)&lt;br /&gt;
&lt;br /&gt;
===User-level Capabilities===&lt;br /&gt;
# moodle/user:readuserposts -read individual user posts on profile page (parent?)&lt;br /&gt;
# moodle/user:readuserblogs -read individual user blogs on profile page (parent?)&lt;br /&gt;
# moodle/user:viewuseractivitiesreport-read individual activity report on profile page (parent?)&lt;br /&gt;
# moodle/user:editprofile - edit profile (normally used in CONTEXT_USERID and CONTEXT_SYSTEM)&lt;br /&gt;
&lt;br /&gt;
===Module-level Capabilities===&lt;br /&gt;
The capabilities are cached into a database table when a module is installed or updated. Whenever the capability definitions are updated, the module version number should be bumped up so that the database table can be updated.&lt;br /&gt;
&lt;br /&gt;
The naming convention for capabilities that are specific to modules and blocks is &#039;mod/mod_name:capability&#039;.  The part before the colon is the full path to the module in the Moodle code.  The module capabilities are defined in mod/mod_name/db/access.php.&lt;br /&gt;
&lt;br /&gt;
#Assignment&lt;br /&gt;
##mod/assignment:view- reading the assignment description&lt;br /&gt;
##mod/assignment:submit - turn assignment in&lt;br /&gt;
##mod/assignment:grade - grading, viewing of list of submitted assignments&lt;br /&gt;
#Chat&lt;br /&gt;
##mod/chat:chat - allows a user to participate in this chat&lt;br /&gt;
##mod/chat:readlog - allows a user to read past chat session logs&lt;br /&gt;
##mod/chat:deletelog - allows a user to delete past chat logs&lt;br /&gt;
#Choice&lt;br /&gt;
##mod/choice:choose - make a choice&lt;br /&gt;
##mod/choice:readresponses - read all responses&lt;br /&gt;
##mod/choice:deleteresponses - deletes all responses&lt;br /&gt;
##mod/choice:downloadresponses - download responses&lt;br /&gt;
#Database&lt;br /&gt;
##mod/data:viewentry - reads other people&#039;s entry&lt;br /&gt;
##mod/data:writeentry - add / edit and delete (own) entries&lt;br /&gt;
##mod/data:managetemplates - add, delete, edit fields and templates&lt;br /&gt;
##mod/data:manageentries - edit/delete all entries&lt;br /&gt;
##mod/data:comment - comment&lt;br /&gt;
##mod/data:managecomments - edit/delete all comments&lt;br /&gt;
##mod/data:rate - rate an entry&lt;br /&gt;
##mod/data:viewrating&lt;br /&gt;
##mod/data:approve - approves an entry&lt;br /&gt;
##mod/data:uploadentries - batch upload of entries&lt;br /&gt;
#Exercise&lt;br /&gt;
##mod/exercise:assess&lt;br /&gt;
#Forum&lt;br /&gt;
##mod/forum:viewdiscussion&lt;br /&gt;
##mod/forum:viewdiscussionsfromallgroups&lt;br /&gt;
##mod/forum:viewhiddentimedposts&lt;br /&gt;
##mod/forum:startdiscussion&lt;br /&gt;
##mod/forum:replypost&lt;br /&gt;
##mod/forum:viewrating&lt;br /&gt;
##mod/forum:viewanyrating&lt;br /&gt;
##mod/forum:rate&lt;br /&gt;
##mod/forum:createattachment&lt;br /&gt;
##mod/forum:deleteownpost&lt;br /&gt;
##mod/forum:deleteanypost&lt;br /&gt;
##mod/forum:splitdiscussions&lt;br /&gt;
##mod/forum:movediscussions&lt;br /&gt;
##mod/forum:editanypost&lt;br /&gt;
##mod/forum:viewqandawithoutposting&lt;br /&gt;
##mod/forum:viewsubscribers&lt;br /&gt;
##mod/forum:managesubscriptions&lt;br /&gt;
##mod/forum:throttlingapplies&lt;br /&gt;
#Glossary&lt;br /&gt;
##mod/glossary:write - add entries&lt;br /&gt;
##mod/glossary:manageentries - add, edit, delete entries&lt;br /&gt;
##mod/glossary:managecategories - create, delete, edit categories&lt;br /&gt;
##mod/glossary:comment - comment on an entry&lt;br /&gt;
##mod/glossary:managecomments - edit, delete comments&lt;br /&gt;
##mod/glossary:import - import glossaries&lt;br /&gt;
##mod/glossary:export - export glossaries&lt;br /&gt;
##mod/glossary:approve - approve glossaries&lt;br /&gt;
##mod/glossary:rate - rates glossary&lt;br /&gt;
##mod/glossary:viewrating - view ratings&lt;br /&gt;
#Hotpot&lt;br /&gt;
##mod/hotpot:attempt - attempt a hotpot&lt;br /&gt;
##mod/hotpot:viewreport - review and view reports&lt;br /&gt;
##mod/hotpot:grade - (grade? and) regrade&lt;br /&gt;
##mod/hotpot:deleteattempt - deletes attempts&lt;br /&gt;
#Label&lt;br /&gt;
##none&lt;br /&gt;
#Lams&lt;br /&gt;
##mod/lams:participate - original student&lt;br /&gt;
##mod/lams:manage - original teacher&lt;br /&gt;
#Lesson&lt;br /&gt;
##mod/lesson:edit - add and edit pages&lt;br /&gt;
##mod/lesson:manage - view student attempts&lt;br /&gt;
#Quiz&lt;br /&gt;
##mod/quiz:grade - comment, override grade, manual grade&lt;br /&gt;
##mod/quiz:preview - previews the quiz&lt;br /&gt;
##mod/quiz:viewreports - view quiz result reports&lt;br /&gt;
##mod/quiz:manage - add/delete/move (up or down) questions for a quiz&lt;br /&gt;
##mod/quiz:attempt - attempt the quiz--[[User:Tim Hunt|Tim Hunt]]&lt;br /&gt;
#Resource&lt;br /&gt;
#Scorm&lt;br /&gt;
##mod/scorm:viewgrades&lt;br /&gt;
#Survey&lt;br /&gt;
##mod/survey:download - downloads survery result&lt;br /&gt;
##mod/survey:participate - participate/ do survey&lt;br /&gt;
##mod/survey:readresponses - read all user&#039;s responese&lt;br /&gt;
#Wiki&lt;br /&gt;
##mod/wiki:participate - original student, meaning depends of type and course setting&lt;br /&gt;
##mod/wiki:manage - original teacher, manages assigned group; moodle/site:accessallgroups is needed to manage all groups &lt;br /&gt;
##(Waiting on new wiki)&lt;br /&gt;
#Workshop&lt;br /&gt;
##mod/workshop:participate - original student, allows user to submit and assess&lt;br /&gt;
##mod/workshop:manage - original teacher, user can manage others&lt;br /&gt;
##(Waiting on new Workshop)&lt;br /&gt;
&lt;br /&gt;
===Enrolment-level Capabilities===&lt;br /&gt;
&lt;br /&gt;
The naming convention for capabilities that are specific to enrolment is &#039;enrol/enrol_name:capability&#039;. The enrolment capabilities are defined in enrol/enrol_name/db/access.php.&lt;br /&gt;
&lt;br /&gt;
#Authorize.net Payment Gateway &lt;br /&gt;
##enrol/authorize:managepayments - manage user payments, capture, void, refund, delete etc.&lt;br /&gt;
&lt;br /&gt;
===Blocks===&lt;br /&gt;
#activity_modules&lt;br /&gt;
##None&lt;br /&gt;
#admin&lt;br /&gt;
#admin_2&lt;br /&gt;
#admin_bookmarks&lt;br /&gt;
#blog_menu&lt;br /&gt;
#blog_tags&lt;br /&gt;
#calendar_month&lt;br /&gt;
#calendar_upcoming&lt;br /&gt;
#course_list&lt;br /&gt;
#course_summary&lt;br /&gt;
#glossary_random&lt;br /&gt;
#html&lt;br /&gt;
#loancalc&lt;br /&gt;
#login&lt;br /&gt;
#messages&lt;br /&gt;
#news_items&lt;br /&gt;
#online_users&lt;br /&gt;
#participants&lt;br /&gt;
#quiz_results&lt;br /&gt;
#recent_activity&lt;br /&gt;
#rss_client&lt;br /&gt;
##block/rss_client:createprivatefeeds&lt;br /&gt;
##block/rss_client:createsharedfeeds&lt;br /&gt;
##block/rss_client:manageownfeeds&lt;br /&gt;
##block/rss_client:manageanyfeeds&lt;br /&gt;
#search&lt;br /&gt;
#search_forums&lt;br /&gt;
#section_links&lt;br /&gt;
#site_main_menu&lt;br /&gt;
#social_activities&lt;br /&gt;
&lt;br /&gt;
===Questions===&lt;br /&gt;
I am adding question categories here because they seem to have been forgotten in the whole scheme of things since having been removed from the quiz module itself. I&#039;ve made a suggestion on how these could be handled in MDL-6118.&lt;br /&gt;
&lt;br /&gt;
: See [http://moodle.org/mod/forum/discuss.php?d=51143 this forum thread] for a discussion about the current problems wth publishing question categories.[[User:Tim Hunt|Tim Hunt]] 18:50, 8 August 2006 (WST)&lt;br /&gt;
&lt;br /&gt;
==Programming Interface==&lt;br /&gt;
&lt;br /&gt;
Although the Roles system may look complicated at first glance, implementing it in Moodle code is fairly simple.&lt;br /&gt;
&lt;br /&gt;
* You need to define each capability once, so that Moodle can upgrade existing roles to take advantage of it.  You do this in an &#039;&#039;&#039;access.php&#039;&#039;&#039; inside the &#039;&#039;db folder&#039;&#039; of any module (eg see mod/forum/db/access.php). The array contains entries like this (note the descriptions for the legacy roles which provides forward compatibility):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&#039;mod/forum:viewforum&#039; =&amp;gt; array(&lt;br /&gt;
  &#039;captype&#039;      =&amp;gt; &#039;read&#039;,&lt;br /&gt;
  &#039;contextlevel&#039; =&amp;gt; CONTEXT_MODULE,&lt;br /&gt;
        &#039;legacy&#039; =&amp;gt; array(&lt;br /&gt;
        &#039;guest&#039;          =&amp;gt; CAP_PREVENT,&lt;br /&gt;
        &#039;student&#039;        =&amp;gt; CAP_ALLOW,&lt;br /&gt;
        &#039;teacher&#039;        =&amp;gt; CAP_ALLOW,&lt;br /&gt;
        &#039;editingteacher&#039; =&amp;gt; CAP_ALLOW,&lt;br /&gt;
        &#039;coursecreator&#039;  =&amp;gt; CAP_ALLOW,&lt;br /&gt;
        &#039;admin&#039;          =&amp;gt; CAP_ALLOW&lt;br /&gt;
        )&lt;br /&gt;
  ),&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To load/change these capabilities you need to bump the module version.   There&#039;s no need to provide changes or differences as Moodle will scan the whole array and sort it out.&lt;br /&gt;
* On each page you need to find the context the user is working in, using the &#039;&#039;&#039;get_context_instance()&#039;&#039;&#039; function.  For example, in the forum module:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$context = get_context_instance(CONTEXT_MODULE, $cm-&amp;gt;id);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* or at the course level:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$context = get_context_instance(CONTEXT_COURSE, $id);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Then, whenever you want to check that the current user has rights to do something, call &#039;&#039;&#039;has_capability()&#039;&#039;&#039; like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
if (!has_capability(&#039;mod/forum:viewforum&#039;, $context)) {&lt;br /&gt;
  print_error(&#039;nopermissiontoviewforum&#039;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If you just want to assert a capability and then finish with an error message if it&#039;s not met (as we did above), then a shorter way it to use &#039;&#039;&#039;require_capability()&#039;&#039;&#039; like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
require_capability(&#039;mod/forum:viewforum&#039;, $context);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Note that there are extra parameters you can specify to get a custom error message, otherwise users get an automated &amp;quot;No permissions&amp;quot; message that lists the permission they were missing.&lt;br /&gt;
&lt;br /&gt;
As a result of the new Roles System, all calls to isadmin(), iscoursecreator, isteacheredit(), isteacher(), isstudent(), and isguest() will have to be replaced with calls to has_capability() or require_capability().   However, these functions will be retained for some backward compatibility with old code, using the legacy capabilities to try and work out what to do.&lt;br /&gt;
&lt;br /&gt;
==Metacourses==&lt;br /&gt;
&lt;br /&gt;
The behaviour of metacourses in Moodle 1.7 changed slightly, in that where it used to just synch students from child courses to the parent course, it will now synch ALL roles. Teachers etc of the child courses will have the same role in the meta course. Technically metacourse synchronises all role assignments in CONTEXT_COURSE with its child courses; the only exception are users with moodle/course:managemetacourse capability, these users are synchronized only upwards, they are not unenrolled from metacourse when unenroling from child course or when removing the child from metacourse.&lt;br /&gt;
&lt;br /&gt;
In order to import/enrol other courses into metacourse you need to have moodle/course:managemetacourse capability. You can add manually only participants with moodle/course:managemetacourse, all other participants are automatically synced with child courses - if you try to manually enrol user without this capability error is displayed. Similar error is shown also when you try to manually unenrol participant from meta course while still being enrolled in child course.&lt;br /&gt;
&lt;br /&gt;
Sample setup:&lt;br /&gt;
* metacourse manager has been assigned role with moodle/course:managemetacourse capability in system or course category context&lt;br /&gt;
* students are enrolled in several child courses&lt;br /&gt;
* teachers are enrolled in separate child course(s)&lt;br /&gt;
&lt;br /&gt;
==Problem areas we are working on ==&lt;br /&gt;
&lt;br /&gt;
===Student view===&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Student view&amp;quot; button has been removed completely.&lt;br /&gt;
&lt;br /&gt;
If there is time and a secure way can be found, it will be replaced by a menu to let the user assume a temporary role in the context of that course.&lt;br /&gt;
&lt;br /&gt;
===Teacher forum===&lt;br /&gt;
&lt;br /&gt;
Teacher forums were always a curious exception to normal forums, as they were not part of a course as such, and were not backed up.&lt;br /&gt;
&lt;br /&gt;
We&#039;re taking the opportunity to rectify this.   The upgrade converts teacher forums with content to normal forums in section 0 of the course, and ensures that only teachers can access them.  If the teacher forum had not been used in the course then it&#039;s not converted and will just dissappear.&lt;br /&gt;
&lt;br /&gt;
===Enrolment plugins===&lt;br /&gt;
&lt;br /&gt;
====Process of logging in====&lt;br /&gt;
&lt;br /&gt;
# load_user_capability() is called to load all the capabilities&lt;br /&gt;
# check_enrolment_plugins() is called at the top of load_user_capability() to check all the enrolment plugins.&lt;br /&gt;
# For each active plugin:&lt;br /&gt;
##Check for setup_enrolments($user) and run it.  This function will do all the processing needed to assign or unassign roles from the current user.&lt;br /&gt;
# load_user_capability() continues and loads up all the roles&lt;br /&gt;
# load_defaultuser_role() is called to add default site permissions (all users)&lt;br /&gt;
&lt;br /&gt;
====Process of checking access to a course====&lt;br /&gt;
&lt;br /&gt;
require_login($course-&amp;gt;id) is called by the script and has logic like this:&lt;br /&gt;
&lt;br /&gt;
# Is the user a guest at site level?&lt;br /&gt;
## Yes: Does the course allow guests?&lt;br /&gt;
### Yes: return true (and further capabilities are checked by the script)&lt;br /&gt;
### No:  send the user to course/enrol.php for enrolment&lt;br /&gt;
## No: continue below&lt;br /&gt;
&lt;br /&gt;
# Does the user have moodle/course:view in that (course) context?&lt;br /&gt;
## Yes: then they can enter (and further capabilities are checked by the script)&lt;br /&gt;
##  No: is guest access allowed on the course?&lt;br /&gt;
### Yes: assign temporary guest role to that user for that context (in session cache).&lt;br /&gt;
### No: send the user to course/enrol.php for enrolment.&lt;br /&gt;
&lt;br /&gt;
====Process of enrolling====&lt;br /&gt;
&lt;br /&gt;
(more soon)&lt;br /&gt;
&lt;br /&gt;
==Scenario brainstorming==&lt;br /&gt;
&lt;br /&gt;
This section is for brainstorming some example roles that we would like to support.  Note some of these *may* not be possible in 1.7.&lt;br /&gt;
&lt;br /&gt;
===Student===&lt;br /&gt;
Obviously.&lt;br /&gt;
&lt;br /&gt;
===Site Designers===&lt;br /&gt;
Is there a role for people involved in how the site looks but not full administrators? Thinking here of online control of themes rather than FTP theme uploading. But in either case they caneditlogos, caneditcss, candeditlevelatwhichthemeapplies.&lt;br /&gt;
&lt;br /&gt;
===Educational Authority Adviser===&lt;br /&gt;
Someone who would want to browse the site and may be asked to comment or contribute to particular discussions or developments in school. Access for this role would be controlled by the school in the case of school level moodles but may be different if there were to be a Local Authority wide Moodle.&lt;br /&gt;
&lt;br /&gt;
===Educational Inspector===&lt;br /&gt;
Someone who will visit the site to verify the school&#039;s self review that comments on home school relationships, extending the classroom etc. They may want to see summaries of usage and reports from surveys garnering parent and pupil views.&lt;br /&gt;
&lt;br /&gt;
===Second Marker / Moderator===&lt;br /&gt;
A teacher within ths site that has access to assignments and quizzes from another teacher&#039;s course for second marking purposes. This may need additional functionality adding to the assignment module so that two sets of grades/feedback can be given to one set of assignments.&lt;br /&gt;
&lt;br /&gt;
===Peer observer of teaching===&lt;br /&gt;
Many institutions encourage peer observation of teaching, to encourage reflection on practice. In online environments this will be similar to moderation or inspection. The peer observer would need to be able to experience the course &amp;quot;as a student&amp;quot;, but also to be able to view summaries of usage, transcripts of interactions (forums/surveys/polls etc), grades assigned (e.g. in assignments).&lt;br /&gt;
&lt;br /&gt;
===External Examiner===&lt;br /&gt;
Has all the rights of inspectors, but would also need to be able to review assignments and feedback, view forums, glossaries etc. However, would not want to post, feedback onto the site at all.&lt;br /&gt;
&lt;br /&gt;
===Parent===&lt;br /&gt;
A parent will have one or more children in one or more institutions which could be using one or more moodle instances or a mixture of Learning Platforms. A parent&#039;s role will vary depending on the age of their children and whether they are contributing as a parent or a school supporter.&lt;br /&gt;
&lt;br /&gt;
In Early Years (EY=3+4 yr olds) and Key Stage 1 (KS1=5+6 yr olds) they may play/learn on an activity or write for the child. Parents often interpret homework tasks and read to their children perhaps filling in a joint reading diary. In Key Stage 2 (KS2=7-11 yr olds) parents would be more monitoring but may join in as well.&lt;br /&gt;
&lt;br /&gt;
In Key stages 3 (KS3=12-14 yr olds) and 4 (KS4=15+16 yr olds) this changes to more of a monitoring/awareness role where a parent would expect to have a summary report of attendance, attainment and general achievement on a weekly/monthly/termly or annual basis. Parents will often be asked to sign and write back comments about this review report.&lt;br /&gt;
&lt;br /&gt;
In all Key Stages there is a great need for parents to receive communication from the school which they can confirm they have received by signing a form. In some cases this may also involve making choices from a list. It may also involve payment for a trip or disco being returned so there could be the possibility of electronic payments. Also in all Key Satges there may be a home-school agreement which may be signed up to. Could this form part of a site policy system that incorporates a tickable list of activities the parent agrees to the child using (blogs/wikis/forums etc.)?&lt;br /&gt;
&lt;br /&gt;
Parent&#039;s evenings often involve complex booking systems that attempt to get parent&#039;s and teachers together. Easy for EY/KS1/KS2 very difficult for KS3/KS4. Wow would this help if it was built into the Learning Platform.&lt;br /&gt;
&lt;br /&gt;
In some cases there needs to be confidential communication between the parent and the teacher without the child being party to this. It may involve teaching and learning but could also involve a behaviour or medical issue. Often this may be done via a sealed letter or face to face. &lt;br /&gt;
&lt;br /&gt;
The latest incarnation of OfSTED with the Self Review Framework (SEF) there is a greater emphasis on schools gathering parent voice via surveys and discussion. There is a clear match here with parents have access to parental votes, questionnaires and discussions and for schools to be able to publish news, results and reports back to parents.&lt;br /&gt;
&lt;br /&gt;
In the UK the LP framework and agenda as being pushed by the DfES via Becta emphasises that within the mandatory groups and roles functionality the parent role is likely to be required to meet the LP Framework procurement standard.&lt;br /&gt;
&lt;br /&gt;
Again in the UK, parents have their own independent right of access to a child&#039;s educational records. Obviously, children&#039;s records must not be made available to other parties, including the parents of other children in the same class. Thus it would be necessary to associate parent accounts with their own child&#039;s accounts in such a way that they could, if so desired, have read access to their child&#039;s grades, answers and contributions, but generally not those of other children - this may be problematic in the case of wiki activities or forum posts.&lt;br /&gt;
&lt;br /&gt;
There is some concern that children&#039;s forum contributions etc may be constrained if their parents are able to read all that they write; this may be particularly problematic in areas such as Personal, Social and Health Education (PSHE), where some schools may choose to use obfuscated usernames.&lt;br /&gt;
&lt;br /&gt;
===Manager===&lt;br /&gt;
&#039;&#039;Typically, for a manager in a business environment, they will want to be able to view reports, view grades for Quizzes, and view results from Surveys/Questionnaires for specific courses. They will also want to be able to view the list of enrolled students.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Note  that in Moodle 2.0, there is a manager role, but that is manager like a lesser admin. It is not manager like a manager in a business environment.&lt;br /&gt;
&lt;br /&gt;
===Weekly Seminar Leader===&lt;br /&gt;
&#039;&#039;In a university seminar, typically 8-15 students in their 3rd/4th year, each student is responsible for leading one topic in a study series.  I ask each student to research 5-10 resources, then give a powerpoint presentation to the other students.  This is followed by an in-class discussion and then online homework.  The homework involves some fun quiz questions and then some reflective journal questions.  I ask each seminar leader to prepare the quiz questions and journal questions as well as their presentation.  To do that, I would like to assign activity-making/authoring roles to the student--either for a short period, or for duration of the whole course.  Thus &amp;quot;Allow Quiz Authoring Role&amp;quot; or &amp;quot;Allow Assignment Authoring Role&amp;quot; at the course level or, if possible, even the Topic level (in a topic or week format course) would be important.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Mentor/Mentee===&lt;br /&gt;
&#039;&#039;Please add text here...&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Community-Designed Rating Criteria===&lt;br /&gt;
&#039;&#039;The gradebook tends to be the domain of the teacher.  What if community/peer ratings/marks could also be entered there? What if peer assessment criteria could be designed by the students, not just the teacher?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Visitor===&lt;br /&gt;
&lt;br /&gt;
This would be a role whereby one could allow a visitor to visit one&#039;s classroom. This might be a colleague interested in seeing your course, or a journalist who might be writing an article about one&#039;s site. They should not be able to see the names of any students anywhere (eg recent activity, forum posts) for privacy reasons. They should be able to try out things like quizzes, and lessons but no grades would be recorded (like in teacher preview mode). They would not be able to participate in choices and forums but could view them. It would be read only in a way like former-student role below but without access to a particular student&#039;s records that former student role would grant.&lt;br /&gt;
&lt;br /&gt;
===Guest Speaker===&lt;br /&gt;
&lt;br /&gt;
This role would be similar to the Visitor role above, but would allow seeing student names, and also allow both reading and posting to a specific forum or forums. We often have &amp;quot;guest speakers&amp;quot; who read and respond to student forum posts. Right now we have to add them as students, which isn&#039;t ideal.&lt;br /&gt;
&lt;br /&gt;
===Former Student===&lt;br /&gt;
This role would be of particular use for courses with rolling enrollments. This role would be one where a student had completed all of the requirements of a course (ie. assignments, quizzes etc.) but wished to have continued access to the course material for review or consultation. The key factor is that one would give access to the completed student to the notes he read, his work and the teacher&#039;s comments on it, but he would not be allowed to do anything that would take up the teacher&#039;s time. In other words, a sort-of read-only access to the course. How forums, which might contain pertinent information and would continue to grow, would be handled is a question. Perhaps the student would be shown only what was in the forums at the time he completed the course. He would not be allowed to see any new posts or add any himself. Same thing for database and glossary entries. In other words, a snapshot of the course at the time his regular enrollment ended. He shouldn&#039;t be able to see the names or profiles of any newly enrolled students for privacy reasons-hence the restrictions on forum access. One issue that would have to be dealt with would be changes to existing modules-such as resources. Does the student get access to the module as it was or as it is? We have no versioning of resources in Moodle so this would be a problem. What about a teacher changing a quiz question so that the answer is different? What would a former student see?&lt;br /&gt;
&lt;br /&gt;
===Alumnus=== &lt;br /&gt;
An ALUMNUS should be able to search for all other ALUMNI of the school, interact with them and be enrolled in a separate course - which is like a META course with all the content of his learning and interaction - as well as capabilities to be a part of this ALUMNI only course.  All the teachers of courses during school years should automatically be a part of the ALUMNI course .. which means when an ALUMNUS is enrolled in a course, the original teachers of all his courses get enrolled ?  --[[User:Anil Sharma|Anil Sharma]] 20:54, 15 July 2006 (WST)&lt;br /&gt;
&lt;br /&gt;
===Librarian===&lt;br /&gt;
&lt;br /&gt;
Reference Librarians have an active role in most of the courses taught at some schools such as Earlham College (with Bibliographic Instruction). The Librarian role within Moodle could encompass default read access to all courses (unless prohibited by course teacher) and read access to all components of the course unless access is barred (again by teacher). The Librarians would also perhaps have a block called perhaps Reference Services or Reference Desk with write access where they could deposit resources. Also this block might have a chat applet whereby enrolled students could chat to the Reference Librarian on duty about their bibliographic research needs.&lt;br /&gt;
&lt;br /&gt;
In schools there is often a book review system. This may be covered by the lending system database but may not in which case a librarian may neeed to have a course area they can create a database template to handle the reviews in which case they may have a normal teacher style role? Off topic but course an integration with common schools database systems would be great.&lt;br /&gt;
&lt;br /&gt;
===Teacher===&lt;br /&gt;
&lt;br /&gt;
Teachers should have read access to other Teacher&#039;s courses unless explictly prohibited. They should be able to set parts of their own course to be totally private (perhaps even to admin?). Just as each activity can currently be set to have group access, each activity could have a permissions field. Teachers could set default permissions for all activities on their course (eg they might disallow Librarian access for example) and then change the access permission for an individual activity. &lt;br /&gt;
&lt;br /&gt;
I think that what is needed is a simple heirarchy of permissions and levels of granularity.&lt;br /&gt;
&lt;br /&gt;
I would take issue with &amp;quot;teachers should have read access to other teacher&#039;s courses unless explicitly prohibited.&amp;quot; This is a violation of the students&#039; privacy as how they perform and what they do in one class isn&#039;t the business of another teacher. Moreover, in the real world a teacher wouldn&#039;t suddenly go sit in on a colleague&#039;s class without asking permission first. I would not have appreciated such an invasion of privacy as either a teacher or a student. It could be an option, but shouldn&#039;t be default.--[[User:N Hansen|N Hansen]] 19:54, 12 June 2006 (WST)&lt;br /&gt;
&lt;br /&gt;
===Community Education Tutors/Trainers===&lt;br /&gt;
Teachers may be community adult education trainers making use of a school moodle so must only have access to their courses unless given access elsewhere. They would not necessarily get the default teacher privileges.&lt;br /&gt;
&lt;br /&gt;
===Secretary/Student Worker===&lt;br /&gt;
&lt;br /&gt;
We often have faculty who want their departmental secretary or student worker to scan and upload files and perhaps create resources. Currently they have to be given teacher access to the course. This is dangerous from a FERPA standpoint since they could easily get access to grades.&lt;br /&gt;
&lt;br /&gt;
===Teaching Assistant===&lt;br /&gt;
&lt;br /&gt;
Our Faculty frequently have undergraduate students acting as Teaching Assistants. These students need to be able to add resources, create assignments, and possibly grade assignments. However, due to FERPA they cannot have access to other students&#039; overall grade information. I think the requirements here are slightly different than those of Secretary/Student Worker&lt;br /&gt;
&lt;br /&gt;
===Student - FERPA rights===&lt;br /&gt;
&lt;br /&gt;
A student that has asserted their FERPA rights to non-disclosure.  Typically includes not publishing their name&lt;br /&gt;
in any public place.  Could include this student only being seen with an &amp;quot;alias&amp;quot; within course spaces.  Is this an attribute rather&lt;br /&gt;
than a role?&lt;br /&gt;
&lt;br /&gt;
===Help Desk===&lt;br /&gt;
&lt;br /&gt;
Help desk agents that have read access for the purposes of trouble shooting.  Some care in placing this role within a hierarchy&lt;br /&gt;
of inheritance is needed, full access will be problematic with FERPA.&lt;br /&gt;
&lt;br /&gt;
===Admin - Catgory based===&lt;br /&gt;
&lt;br /&gt;
Basically a person in between full Admin and Creator that has the permissions of an Admin but only with respect to courses and students. Currently a Creator has permissions site-wide which does not always meet the requirements of a given organisation (e.g. Department A may not be happy that a person from Department B can create/modify courses within Department A&#039;s area). The ability to designate a Creator within a specific category would allow areas to be set up for a faculty/department/organisation and allow the Admin for that area to create/delete courses, upload users, add site-wide entries to the calendar etc.&lt;br /&gt;
&lt;br /&gt;
===Process Roles===&lt;br /&gt;
&lt;br /&gt;
organising the learning process for a group you wish to have the choice to place students in differnt roles: examples of this are:&lt;br /&gt;
* Give a student the role of forum-moderator with edit and chunk-rights&lt;br /&gt;
* Give students different roles &amp;amp; rights in a Webquest design (and change these roles next week&lt;br /&gt;
* Give students different resources, depending of their roles in a rolegame/simulation&lt;br /&gt;
* Give a student the rights to create the section content of next week (and only that week..)&lt;br /&gt;
&lt;br /&gt;
==Things to finish for 1.7 Beta==&lt;br /&gt;
&#039;&#039;&#039;18 Sept 2006&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
#Remove core references to user_student, user_teacher, user_admin, user_coursecreator tables.  [Yu]&lt;br /&gt;
#Address function: isteacher, isadmin, isstudent [Yu]&lt;br /&gt;
#Remove &amp;quot;view&amp;quot; capabilities from all modules unless required [Vy]&lt;br /&gt;
#Remove all old references from remaining Blocks [Vy]&lt;br /&gt;
#Metacourses [Skodak]&lt;br /&gt;
#Add risks to GUI[Skodak]&lt;br /&gt;
#Enrolment plugins  [Martin and Alastair]&lt;br /&gt;
#[[Stats_roles_1.7|Statistics]] [Penny]&lt;br /&gt;
#Fix Loginas&lt;br /&gt;
#Add category-level assigns [Yu]&lt;br /&gt;
#[[Backup_roles_1.7|Backups]] [Eloy?]&lt;br /&gt;
&lt;br /&gt;
===Proposal for interface enhancement===&lt;br /&gt;
Martin asked some questions, here are my answers. The sketches below are not worked out proposals. Their task is to visualize the idea. The exact colours and functionality may be defined after possible agreement about the proposals. The Green, orange and red columns support the meaning of the options from &amp;quot;allow&amp;quot; to &amp;quot;prohibit&amp;quot; (If you may want to see larger images please click onto the image or the &amp;quot;Enlarge&amp;quot; icon below the image.)&lt;br /&gt;
&lt;br /&gt;
The list of possible settings is very long and &#039;&#039; &amp;quot;... the problem is not to overwhelm people with information&amp;quot; &#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
[[Image:01_moodle_define_roles_structured.png|thumb=01_moodle_define_roles_structured_pre.png]]&lt;br /&gt;
&lt;br /&gt;
1) One proposal is to use colour to structure the sections and the columns. Picture 1 shows that the user can keep a much better overview when the list is divided into meaningful different coloured columns and clear sections.&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:02_moodle_define_roles_collapsed.png|thumb=02_moodle_define_roles_collapsed_pre.png]]&lt;br /&gt;
&lt;br /&gt;
2) A second proposal is to reduce the amount of information the user is shown at the same time. The YUI interface library offers great support to show/hide sections of the page by clicking on specific elements. &lt;br /&gt;
&lt;br /&gt;
For example click on an icon beside the sub heading &amp;quot;Course categories&amp;quot; and show/hide all table rows with the CLASS &amp;quot;course-category&amp;quot;.&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:03_moodle_define_roles_tooltip.png|thumb=03_moodle_define_roles_tooltip_pre.png]]&lt;br /&gt;
&lt;br /&gt;
3) &#039;&#039; &amp;quot;The main problem is the last column for risk ... we were thinking of putting little icons in there ...&amp;quot; &#039;&#039;&lt;br /&gt;
Icons are good when they tell the user more about possible actions/meanings then the letters. I am not sure if this is the case here. For both - icons or letters - the YUI tool-tip function would be able to give the user valuable information about the meaning.&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
*[[Hardening new Roles system]]&lt;br /&gt;
*[[Roles and modules]]&lt;br /&gt;
*Using Moodle course:&lt;br /&gt;
**[http://moodle.org/mod/forum/view.php?f=941 Roles and Capabilities forum]&lt;br /&gt;
**Key discussions at Using Moodle forums:&lt;br /&gt;
***[http://moodle.org/mod/forum/discuss.php?d=38788 Roles and Permissions architecture]&lt;br /&gt;
***[http://moodle.org/mod/forum/discuss.php?d=56302#256313 An example of admin roles as set in the database]&lt;br /&gt;
*** A short description by Tim Hunt of some new role related features in Moodle 2.0: [http://moodle.org/mod/forum/discuss.php?d=139641&amp;amp;parent=610871 Adding new roles as part of a module]&lt;br /&gt;
&lt;br /&gt;
[[Category:Roles]]&lt;br /&gt;
[[Category:Interfaces]]&lt;/div&gt;</summary>
		<author><name>Jonwitts</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Roles&amp;diff=30954</id>
		<title>Roles</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Roles&amp;diff=30954"/>
		<updated>2011-12-13T14:20:20Z</updated>

		<summary type="html">&lt;p&gt;Jonwitts: /* Context */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Definitions==&lt;br /&gt;
&lt;br /&gt;
* A &#039;&#039;&#039;role&#039;&#039;&#039; is an identifier of the user&#039;s status in some context. For example: Teacher, Student and Forum moderator are examples of roles.&lt;br /&gt;
&lt;br /&gt;
* A &#039;&#039;&#039;capability&#039;&#039;&#039; is a description of some particular Moodle feature. Capabilities are associated with roles. For example, &#039;&#039;mod/forum:replypost&#039;&#039; is a capability.&lt;br /&gt;
&lt;br /&gt;
* A &#039;&#039;&#039;permission&#039;&#039;&#039; is some value that is assigned for a capability for a particular role.  For example, allow or prevent.&lt;br /&gt;
&lt;br /&gt;
* A &#039;&#039;&#039;context&#039;&#039;&#039; is a &amp;quot;space&amp;quot; in the Moodle, such as courses, activity modules, blocks etc.&lt;br /&gt;
&lt;br /&gt;
==The system prior to v1.7==&lt;br /&gt;
&lt;br /&gt;
In versions prior to v1.7, Moodle uses a fixed set of roles i.e. primary admin, admins, course creators, editing teachers, non-editing teachers, students, and guests. For each role, the capability or actions that they can perform are fixed. For example, the role student allows the user to submit an assignment, but doesn&#039;t allow the user to browse/edit other users&#039; work. By using this setup we limit ourselves to a rather rigid set of capabilities for each role. If we want, say a particular student or group to be able to mark assignments in a particular course, we can&#039;t do that without giving these users teacher privileges.&lt;br /&gt;
&lt;br /&gt;
==The new roles and capability system==&lt;br /&gt;
&lt;br /&gt;
With v1.7 and greater, Moodle introduces a roles and capabilities system.&lt;br /&gt;
&lt;br /&gt;
=== Roles ===&lt;br /&gt;
Role has two primary functions:&lt;br /&gt;
# define list of permissions - role definition is global for all contexts, but can be changed by local context overrides&lt;br /&gt;
# replace old course enrolments - role assignment in course context is similar to the old enrolment process&lt;br /&gt;
&lt;br /&gt;
The new system will allow authorized users to define an arbitrary number of roles (eg a teacher) &lt;br /&gt;
&lt;br /&gt;
A role consists of a list of permissions for different possible actions within Moodle (eg delete discussions, add activities etc)&lt;br /&gt;
&lt;br /&gt;
Roles can be applied to users in a &#039;&#039;context&#039;&#039; (eg assign Fred as a teacher in a particular course)&lt;br /&gt;
&lt;br /&gt;
=== Context ===&lt;br /&gt;
Here are the possible contexts, listed from the most general to the most specific. &lt;br /&gt;
&lt;br /&gt;
[[Image:Moodle-contexts-1.8.png|right|thumbnail|200px|A diagram of the contexts in Moodle. Click on the diagram to see a more detailed view of it.]]&lt;br /&gt;
&lt;br /&gt;
CONTEXT NAME          CONTEXT AREA          CONTEXTLEVEL&lt;br /&gt;
#CONTEXT_SYSTEM       -- the whole site     -- 10&lt;br /&gt;
#CONTEXT_USER         -- another user       -- 30&lt;br /&gt;
#CONTEXT_COURSECAT    -- a course category  -- 40&lt;br /&gt;
#CONTEXT_COURSE       -- a course           -- 50&lt;br /&gt;
#CONTEXT_Group        -- a group            -- 60&lt;br /&gt;
#CONTEXT_MODULE       -- an activity module -- 70&lt;br /&gt;
#CONTEXT_BLOCK        -- a block            -- 80&lt;br /&gt;
&lt;br /&gt;
Please note that CONTEXT_PERSONAL (present in 1.7-1.8) was never implemented and was removed in 1.9. CONTEXT_GROUP is also not implemented and can not be used.&lt;br /&gt;
&lt;br /&gt;
An authorized user will be able to assign an arbitrary number of roles to each user in any context.&lt;br /&gt;
&lt;br /&gt;
(See [[Roles and modules#Context]] for more information.)&lt;br /&gt;
&lt;br /&gt;
=== Capabilities ===&lt;br /&gt;
Capabilities can have the following permissions:&lt;br /&gt;
&lt;br /&gt;
#CAP_INHERIT&lt;br /&gt;
#CAP_ALLOW&lt;br /&gt;
#CAP_PREVENT&lt;br /&gt;
#CAP_PROHIBIT&lt;br /&gt;
&lt;br /&gt;
If no permission is defined, then the capability permission is inherited from a context that is more general than the current context. If we define different permission values for the same capability in different contexts, we say that we are overriding the capability in the more specific context.&lt;br /&gt;
&lt;br /&gt;
=== Checking for capabilities ===&lt;br /&gt;
You can use the [[Roles_and_modules#has_capability_.28.24capability.2C_.24contextid.2C_.24kill.29|has_capability ()]] function for checking for capabilities in your code. &lt;br /&gt;
&lt;br /&gt;
=== Capability conflicts ===&lt;br /&gt;
Since the capabilities in each role could be different, there could be conflict in capabilities. This is resolved by enforcing the rule that the capability defined for a more specific context will win, unless a prohibit is encountered in a less specific context.&lt;br /&gt;
&lt;br /&gt;
For example, Mark has a student role at course level, which allows him to write into a wiki. But Mark also got assigned a Visitor role at a module context level (for a particular wiki) which prevents him from writing to the wiki (read only). Therefore, for this particular wiki, Mark will not be able to write to the wiki since the more specific context wins.&lt;br /&gt;
&lt;br /&gt;
If we set a PROHIBIT on a capability, it means that the capability cannot be overridden and will ALWAYS  have a permission of prevent (deny). Prohibit always wins.   For example, Jeff has a naughty student role that prohibits him from postings in any forums (for the whole site), but he&#039;s also assigned a facilitator role in &amp;quot;Science forum&amp;quot; in the course Science and Math 101. Since prohibit always wins, Jeff is unable to post in &amp;quot;Science forum&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Allow and prevent will cancel each other out if set for the same capability at the same context level. If this happens, we refer to the previous context level to determine the permission for the capability.&lt;br /&gt;
&lt;br /&gt;
This may sound more complex than it really is in practice.  The upshot is that the system can be flexible enough to allow pretty much any combination of permissions.&lt;br /&gt;
&lt;br /&gt;
===Capability-locality changes in v1.9===&lt;br /&gt;
&lt;br /&gt;
When resolving conflicts between &amp;quot;allow&amp;quot; and &amp;quot;prevent&amp;quot; in v1.7 and v1.8 the locality of the capability is taken into account, although with less weight than the locality of the role assignment. In v1.9 the process has been simplified, we consider locality of the role assignment when dealing with allow/prevent conflicts, but ignore where the capability has been defined (as long as it applies to the context).&lt;br /&gt;
&lt;br /&gt;
For example - for the situation where there is&lt;br /&gt;
&lt;br /&gt;
* two roles assigned to one user in a context (eg student role and teacher role)&lt;br /&gt;
* one override on one of those roles ( eg student role), at the same context&lt;br /&gt;
 &lt;br /&gt;
then&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;1.7/1.8&#039;&#039;&#039; The override used to &#039;&#039;always&#039;&#039; win over the settings from the combined roles.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;1.9&#039;&#039;&#039; The override is combined with the student role first. and then the roles are combined. This is more logical, as the override is acting like a modification to the student role.&lt;br /&gt;
&lt;br /&gt;
For more details, see [http://tracker.moodle.org/browse/MDL-11218 MDL-11218]&lt;br /&gt;
&lt;br /&gt;
==Upgrading from 1.6==&lt;br /&gt;
&lt;br /&gt;
A smooth upgrade will be provided with 1.7. The existing roles (admin, teacher, student, etc), and the existing capabilities will be automatically retained.  This is done by creating default roles at site/course levels, and assigning the current users to these roles accordingly. The default roles will have default capabilities associated with them, mirroring what we have  in 1.6.   With no modifications, Moodle will operate exactly the same before and after the upgrade.&lt;br /&gt;
&lt;br /&gt;
===Admins===&lt;br /&gt;
&lt;br /&gt;
Admin users will be assigned the default legacy admin role in the system (site) context&lt;br /&gt;
&lt;br /&gt;
===Course Creators===&lt;br /&gt;
&lt;br /&gt;
Course Creators will be assigned the default legacy course creator role in the system (site) context&lt;br /&gt;
&lt;br /&gt;
===Teachers===&lt;br /&gt;
&lt;br /&gt;
Users who were teachers will be assigned the default legacy teacher role (or non-editing teacher role) in all courses they were teacher.&lt;br /&gt;
&lt;br /&gt;
===Students===&lt;br /&gt;
&lt;br /&gt;
Users who were students will be assigned the default student role in all courses they were student.&lt;br /&gt;
&lt;br /&gt;
===Guests===&lt;br /&gt;
&lt;br /&gt;
There will still be a single guest user with no default role at site level.   For each course that allows guest access, the guest role will be assigned to the guest user for that course context.   The guest control for the course will be modified from three to two options (guests always need to enter enrolment key - on/off).  This setting is checked as now to force guests to enter key.&lt;br /&gt;
&lt;br /&gt;
==Capabilities==&lt;br /&gt;
&lt;br /&gt;
This will be a comprehensive list of capabilities (it&#039;s not complete yet). It is important that capability names are unique.&lt;br /&gt;
&lt;br /&gt;
===Core-level Capabilities===&lt;br /&gt;
&lt;br /&gt;
Moodle core capability names start with &#039;moodle/&#039;.  The next word indicates what type of core capability it is, and the last word is the actual capability itself.  The capabilities for the Moodle core are defined in lib/db/access.php&lt;br /&gt;
&lt;br /&gt;
#moodle/legacy:guest - legacy capabilities are used to transition existing users to the new roles system during the upgrade to Moodle 1.7&lt;br /&gt;
#moodle/legacy:student&lt;br /&gt;
#moodle/legacy:teacher&lt;br /&gt;
#moodle/legacy:editingteacher&lt;br /&gt;
#moodle/legacy:coursecreator&lt;br /&gt;
#moodle/legacy:admin&lt;br /&gt;
#moodle/site:doanything - special capability, meant for admins, if is set, overrides all other capability settings&lt;br /&gt;
#moodle/site:config - applicable in admin/index.php and config.php (might break down later) : 1)admin/config.php 2)admin/configure.php 3)blocks/admin/block_admin.php load_content_for_site()&lt;br /&gt;
#moodle/site:readallmessages - reads all messages and history&lt;br /&gt;
#moodle/site:approvecourse - approves a pending course&lt;br /&gt;
#moodle/site:manageblocks - adding/removing/editing blocks (site, course contexts only for now) : 1)_add_edit_controls moodleblock.class.php &lt;br /&gt;
#moodle/site:backup - can create a course backup : 1)course/category.php 2)block_admin.php&lt;br /&gt;
#moodle/site:restore - can restore into this context : 1)course/category.php 2)block_admin.php&lt;br /&gt;
#moodle/site:import - can import other courses into this context : 1)block_admin.php&lt;br /&gt;
#moodle/site:accessallgroups - able to access all groups irrespective of what group the user is in&lt;br /&gt;
#moodle/site:accessdb - directly accessing db (phpmyadmin)&lt;br /&gt;
#moodle/site:viewfullnames - able to see fullnames of other users&lt;br /&gt;
#moodle/site:viewparticipants - able to view participants&lt;br /&gt;
#moodle/site:viewreports - able to view site/course reports&lt;br /&gt;
#moodle/site:trustcontent - ability to use trusttext feature and bypass cleaning in specific areas&lt;br /&gt;
#moodle/site:uploadusers - ability to upload/update users from text file; moodle/role:assign capability is needed for course enrolling&lt;br /&gt;
#moodle/blog:view - read blogs (usable in system or course context)&lt;br /&gt;
#moodle/blog:create - write new blog posts (usable in system context only)&lt;br /&gt;
#moodle/blog:manageofficialtags - create/delete official blog tags that others can use (usable in system context only)&lt;br /&gt;
#moodle/blog:managepersonaltags - delete personal blog tags that others can use (usable in system context only) Note: users can always add own personal tags. This setting should be off for students by default.&lt;br /&gt;
#moodle/blog:manageentries - edit/delete all blog entries (usable in system context only)&lt;br /&gt;
#moodle/course:setcurrentsection - mark course section&lt;br /&gt;
#moodle/course:create - create courses : 1)course/edit.php 2)course/category.php 3)course/index.php&lt;br /&gt;
#moodle/course:delete - create courses : 1)course/category.php&lt;br /&gt;
#moodle/course:update - update course settings&lt;br /&gt;
#moodle/course:view - can use this to find participants&lt;br /&gt;
#moodle/course:viewparticipants - allows a user to view participant list&lt;br /&gt;
#moodle/course:viewscales - view scales (i.e. in a help window?) : 1)course/scales.php&lt;br /&gt;
#moodle/course:manageactivities - adding/removing/editing activities and resources (don&#039;t think it makes any sense to split these)&lt;br /&gt;
#moodle/course:managescales - add, delete, edit scales, move scales up and down : 1)blocks/block_admin.php 2)course/scales.php&lt;br /&gt;
#moodle/course:managegroups - managing groups, add, edit, delete : 1)course/groups.php 2)course/group.php&lt;br /&gt;
#moodle/course:managefiles - manage course files and folders&lt;br /&gt;
#moodle/course:managequestions - manage course questions&lt;br /&gt;
#moodle/course:managemetacourse - manage child courses in metacourse&lt;br /&gt;
#moodle/course:reset - able to reset the course&lt;br /&gt;
#moodle/course:useremail - Can use the enable/disable email stuff&lt;br /&gt;
#moodle/course:visibility - hide/show courses : 1)course/category.php&lt;br /&gt;
#moodle/course:viewhiddencourses - see hidden courses&lt;br /&gt;
#moodle/course:activityvisibility - hide/show activities within a course&lt;br /&gt;
#moodle/course:viewhiddenactivities - able to see activities that have been hidden&lt;br /&gt;
#moodle/course:sectionvisibility - hide/show sections&lt;br /&gt;
#moodle/course:viewhiddensections - view hidden sections&lt;br /&gt;
#moodle/course:viewcoursegrades - views all grades in course&lt;br /&gt;
#moodle/course:viewhiddenuserfields - view all hidden user fields&lt;br /&gt;
#moodle/course:managegrades - manages grades settings in course&lt;br /&gt;
#moodle/category:create - create category : 1)course/index.php&lt;br /&gt;
#moodle/category:delete - delete category : 1)course/index.php&lt;br /&gt;
#moodle/category:update - update category settings (sort and rename) this is currently an admin capability : 1)course/category.php&lt;br /&gt;
#moodle/category:visibility - hide/show categories : 1)course/index.php&lt;br /&gt;
#moodle/user:viewusergrades - view your own, or other user&#039;s grades (with specified context)&lt;br /&gt;
#moodle/user:create - create user : 1) user/edit.php&lt;br /&gt;
#moodle/user:delete - delete user : 1) admin/user.php&lt;br /&gt;
#moodle/user:readuserblogs - read blog entries&lt;br /&gt;
#moodle/user:update - update user settings : 1) user/edit.php&lt;br /&gt;
#moodle/user:viewdetails - view personally-identifying user details (e.g. name, photo).&lt;br /&gt;
#moodle/user:viewhiddendetails - view user details marked as &amp;quot;hidden&amp;quot;&lt;br /&gt;
#moodle/calendar:manageownentries - create/edit/delete &lt;br /&gt;
#moodle/calendar:manageentries - create/edit/delete&lt;br /&gt;
#moodle/role:assign - assign roles to users&lt;br /&gt;
#moodle/role:override - can override role capabilities (depending on context)&lt;br /&gt;
#moodle/role:manage - create/edit/delete roles, set capability permissions for each role&lt;br /&gt;
#moodle/role:unassignself - unassign yourself from your own roles&lt;br /&gt;
#moodle/role:viewhiddenassigns - view role assignments that have been marked as hidden&lt;br /&gt;
#moodle/question:import - imports questions (course level?) - Yes, question permissions currently need to be course-level.--[[User:Tim Hunt|Tim Hunt]]&lt;br /&gt;
#moodle/question:export - exports questions (course level?)&lt;br /&gt;
#moodle/question:managecategory - add/delete/edit question categories (course level?)&lt;br /&gt;
#moodle/question:manage - add/edit/delete a question (course level)&lt;br /&gt;
&lt;br /&gt;
===User-level Capabilities===&lt;br /&gt;
# moodle/user:readuserposts -read individual user posts on profile page (parent?)&lt;br /&gt;
# moodle/user:readuserblogs -read individual user blogs on profile page (parent?)&lt;br /&gt;
# moodle/user:viewuseractivitiesreport-read individual activity report on profile page (parent?)&lt;br /&gt;
# moodle/user:editprofile - edit profile (normally used in CONTEXT_USERID and CONTEXT_SYSTEM)&lt;br /&gt;
&lt;br /&gt;
===Module-level Capabilities===&lt;br /&gt;
The capabilities are cached into a database table when a module is installed or updated. Whenever the capability definitions are updated, the module version number should be bumped up so that the database table can be updated.&lt;br /&gt;
&lt;br /&gt;
The naming convention for capabilities that are specific to modules and blocks is &#039;mod/mod_name:capability&#039;.  The part before the colon is the full path to the module in the Moodle code.  The module capabilities are defined in mod/mod_name/db/access.php.&lt;br /&gt;
&lt;br /&gt;
#Assignment&lt;br /&gt;
##mod/assignment:view- reading the assignment description&lt;br /&gt;
##mod/assignment:submit - turn assignment in&lt;br /&gt;
##mod/assignment:grade - grading, viewing of list of submitted assignments&lt;br /&gt;
#Chat&lt;br /&gt;
##mod/chat:chat - allows a user to participate in this chat&lt;br /&gt;
##mod/chat:readlog - allows a user to read past chat session logs&lt;br /&gt;
##mod/chat:deletelog - allows a user to delete past chat logs&lt;br /&gt;
#Choice&lt;br /&gt;
##mod/choice:choose - make a choice&lt;br /&gt;
##mod/choice:readresponses - read all responses&lt;br /&gt;
##mod/choice:deleteresponses - deletes all responses&lt;br /&gt;
##mod/choice:downloadresponses - download responses&lt;br /&gt;
#Database&lt;br /&gt;
##mod/data:viewentry - reads other people&#039;s entry&lt;br /&gt;
##mod/data:writeentry - add / edit and delete (own) entries&lt;br /&gt;
##mod/data:managetemplates - add, delete, edit fields and templates&lt;br /&gt;
##mod/data:manageentries - edit/delete all entries&lt;br /&gt;
##mod/data:comment - comment&lt;br /&gt;
##mod/data:managecomments - edit/delete all comments&lt;br /&gt;
##mod/data:rate - rate an entry&lt;br /&gt;
##mod/data:viewrating&lt;br /&gt;
##mod/data:approve - approves an entry&lt;br /&gt;
##mod/data:uploadentries - batch upload of entries&lt;br /&gt;
#Exercise&lt;br /&gt;
##mod/exercise:assess&lt;br /&gt;
#Forum&lt;br /&gt;
##mod/forum:viewdiscussion&lt;br /&gt;
##mod/forum:viewdiscussionsfromallgroups&lt;br /&gt;
##mod/forum:viewhiddentimedposts&lt;br /&gt;
##mod/forum:startdiscussion&lt;br /&gt;
##mod/forum:replypost&lt;br /&gt;
##mod/forum:viewrating&lt;br /&gt;
##mod/forum:viewanyrating&lt;br /&gt;
##mod/forum:rate&lt;br /&gt;
##mod/forum:createattachment&lt;br /&gt;
##mod/forum:deleteownpost&lt;br /&gt;
##mod/forum:deleteanypost&lt;br /&gt;
##mod/forum:splitdiscussions&lt;br /&gt;
##mod/forum:movediscussions&lt;br /&gt;
##mod/forum:editanypost&lt;br /&gt;
##mod/forum:viewqandawithoutposting&lt;br /&gt;
##mod/forum:viewsubscribers&lt;br /&gt;
##mod/forum:managesubscriptions&lt;br /&gt;
##mod/forum:throttlingapplies&lt;br /&gt;
#Glossary&lt;br /&gt;
##mod/glossary:write - add entries&lt;br /&gt;
##mod/glossary:manageentries - add, edit, delete entries&lt;br /&gt;
##mod/glossary:managecategories - create, delete, edit categories&lt;br /&gt;
##mod/glossary:comment - comment on an entry&lt;br /&gt;
##mod/glossary:managecomments - edit, delete comments&lt;br /&gt;
##mod/glossary:import - import glossaries&lt;br /&gt;
##mod/glossary:export - export glossaries&lt;br /&gt;
##mod/glossary:approve - approve glossaries&lt;br /&gt;
##mod/glossary:rate - rates glossary&lt;br /&gt;
##mod/glossary:viewrating - view ratings&lt;br /&gt;
#Hotpot&lt;br /&gt;
##mod/hotpot:attempt - attempt a hotpot&lt;br /&gt;
##mod/hotpot:viewreport - review and view reports&lt;br /&gt;
##mod/hotpot:grade - (grade? and) regrade&lt;br /&gt;
##mod/hotpot:deleteattempt - deletes attempts&lt;br /&gt;
#Label&lt;br /&gt;
##none&lt;br /&gt;
#Lams&lt;br /&gt;
##mod/lams:participate - original student&lt;br /&gt;
##mod/lams:manage - original teacher&lt;br /&gt;
#Lesson&lt;br /&gt;
##mod/lesson:edit - add and edit pages&lt;br /&gt;
##mod/lesson:manage - view student attempts&lt;br /&gt;
#Quiz&lt;br /&gt;
##mod/quiz:grade - comment, override grade, manual grade&lt;br /&gt;
##mod/quiz:preview - previews the quiz&lt;br /&gt;
##mod/quiz:viewreports - view quiz result reports&lt;br /&gt;
##mod/quiz:manage - add/delete/move (up or down) questions for a quiz&lt;br /&gt;
##mod/quiz:attempt - attempt the quiz--[[User:Tim Hunt|Tim Hunt]]&lt;br /&gt;
#Resource&lt;br /&gt;
#Scorm&lt;br /&gt;
##mod/scorm:viewgrades&lt;br /&gt;
#Survey&lt;br /&gt;
##mod/survey:download - downloads survery result&lt;br /&gt;
##mod/survey:participate - participate/ do survey&lt;br /&gt;
##mod/survey:readresponses - read all user&#039;s responese&lt;br /&gt;
#Wiki&lt;br /&gt;
##mod/wiki:participate - original student, meaning depends of type and course setting&lt;br /&gt;
##mod/wiki:manage - original teacher, manages assigned group; moodle/site:accessallgroups is needed to manage all groups &lt;br /&gt;
##(Waiting on new wiki)&lt;br /&gt;
#Workshop&lt;br /&gt;
##mod/workshop:participate - original student, allows user to submit and assess&lt;br /&gt;
##mod/workshop:manage - original teacher, user can manage others&lt;br /&gt;
##(Waiting on new Workshop)&lt;br /&gt;
&lt;br /&gt;
===Enrolment-level Capabilities===&lt;br /&gt;
&lt;br /&gt;
The naming convention for capabilities that are specific to enrolment is &#039;enrol/enrol_name:capability&#039;. The enrolment capabilities are defined in enrol/enrol_name/db/access.php.&lt;br /&gt;
&lt;br /&gt;
#Authorize.net Payment Gateway &lt;br /&gt;
##enrol/authorize:managepayments - manage user payments, capture, void, refund, delete etc.&lt;br /&gt;
&lt;br /&gt;
===Blocks===&lt;br /&gt;
#activity_modules&lt;br /&gt;
##None&lt;br /&gt;
#admin&lt;br /&gt;
#admin_2&lt;br /&gt;
#admin_bookmarks&lt;br /&gt;
#blog_menu&lt;br /&gt;
#blog_tags&lt;br /&gt;
#calendar_month&lt;br /&gt;
#calendar_upcoming&lt;br /&gt;
#course_list&lt;br /&gt;
#course_summary&lt;br /&gt;
#glossary_random&lt;br /&gt;
#html&lt;br /&gt;
#loancalc&lt;br /&gt;
#login&lt;br /&gt;
#messages&lt;br /&gt;
#news_items&lt;br /&gt;
#online_users&lt;br /&gt;
#participants&lt;br /&gt;
#quiz_results&lt;br /&gt;
#recent_activity&lt;br /&gt;
#rss_client&lt;br /&gt;
##block/rss_client:createprivatefeeds&lt;br /&gt;
##block/rss_client:createsharedfeeds&lt;br /&gt;
##block/rss_client:manageownfeeds&lt;br /&gt;
##block/rss_client:manageanyfeeds&lt;br /&gt;
#search&lt;br /&gt;
#search_forums&lt;br /&gt;
#section_links&lt;br /&gt;
#site_main_menu&lt;br /&gt;
#social_activities&lt;br /&gt;
&lt;br /&gt;
===Questions===&lt;br /&gt;
I am adding question categories here because they seem to have been forgotten in the whole scheme of things since having been removed from the quiz module itself. I&#039;ve made a suggestion on how these could be handled in MDL-6118.&lt;br /&gt;
&lt;br /&gt;
: See [http://moodle.org/mod/forum/discuss.php?d=51143 this forum thread] for a discussion about the current problems wth publishing question categories.[[User:Tim Hunt|Tim Hunt]] 18:50, 8 August 2006 (WST)&lt;br /&gt;
&lt;br /&gt;
==Programming Interface==&lt;br /&gt;
&lt;br /&gt;
Although the Roles system may look complicated at first glance, implementing it in Moodle code is fairly simple.&lt;br /&gt;
&lt;br /&gt;
* You need to define each capability once, so that Moodle can upgrade existing roles to take advantage of it.  You do this in an &#039;&#039;&#039;access.php&#039;&#039;&#039; inside the &#039;&#039;db folder&#039;&#039; of any module (eg see mod/forum/db/access.php). The array contains entries like this (note the descriptions for the legacy roles which provides forward compatibility):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&#039;mod/forum:viewforum&#039; =&amp;gt; array(&lt;br /&gt;
  &#039;captype&#039;      =&amp;gt; &#039;read&#039;,&lt;br /&gt;
  &#039;contextlevel&#039; =&amp;gt; CONTEXT_MODULE,&lt;br /&gt;
        &#039;legacy&#039; =&amp;gt; array(&lt;br /&gt;
        &#039;guest&#039;          =&amp;gt; CAP_PREVENT,&lt;br /&gt;
        &#039;student&#039;        =&amp;gt; CAP_ALLOW,&lt;br /&gt;
        &#039;teacher&#039;        =&amp;gt; CAP_ALLOW,&lt;br /&gt;
        &#039;editingteacher&#039; =&amp;gt; CAP_ALLOW,&lt;br /&gt;
        &#039;coursecreator&#039;  =&amp;gt; CAP_ALLOW,&lt;br /&gt;
        &#039;admin&#039;          =&amp;gt; CAP_ALLOW&lt;br /&gt;
        )&lt;br /&gt;
  ),&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To load/change these capabilities you need to bump the module version.   There&#039;s no need to provide changes or differences as Moodle will scan the whole array and sort it out.&lt;br /&gt;
* On each page you need to find the context the user is working in, using the &#039;&#039;&#039;get_context_instance()&#039;&#039;&#039; function.  For example, in the forum module:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$context = get_context_instance(CONTEXT_MODULE, $cm-&amp;gt;id);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* or at the course level:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$context = get_context_instance(CONTEXT_COURSE, $id);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Then, whenever you want to check that the current user has rights to do something, call &#039;&#039;&#039;has_capability()&#039;&#039;&#039; like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
if (!has_capability(&#039;mod/forum:viewforum&#039;, $context)) {&lt;br /&gt;
  print_error(&#039;nopermissiontoviewforum&#039;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If you just want to assert a capability and then finish with an error message if it&#039;s not met (as we did above), then a shorter way it to use &#039;&#039;&#039;require_capability()&#039;&#039;&#039; like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
require_capability(&#039;mod/forum:viewforum&#039;, $context);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Note that there are extra parameters you can specify to get a custom error message, otherwise users get an automated &amp;quot;No permissions&amp;quot; message that lists the permission they were missing.&lt;br /&gt;
&lt;br /&gt;
As a result of the new Roles System, all calls to isadmin(), iscoursecreator, isteacheredit(), isteacher(), isstudent(), and isguest() will have to be replaced with calls to has_capability() or require_capability().   However, these functions will be retained for some backward compatibility with old code, using the legacy capabilities to try and work out what to do.&lt;br /&gt;
&lt;br /&gt;
==Metacourses==&lt;br /&gt;
&lt;br /&gt;
The behaviour of metacourses in Moodle 1.7 changed slightly, in that where it used to just synch students from child courses to the parent course, it will now synch ALL roles. Teachers etc of the child courses will have the same role in the meta course. Technically metacourse synchronises all role assignments in CONTEXT_COURSE with its child courses; the only exception are users with moodle/course:managemetacourse capability, these users are synchronized only upwards, they are not unenrolled from metacourse when unenroling from child course or when removing the child from metacourse.&lt;br /&gt;
&lt;br /&gt;
In order to import/enrol other courses into metacourse you need to have moodle/course:managemetacourse capability. You can add manually only participants with moodle/course:managemetacourse, all other participants are automatically synced with child courses - if you try to manually enrol user without this capability error is displayed. Similar error is shown also when you try to manually unenrol participant from meta course while still being enrolled in child course.&lt;br /&gt;
&lt;br /&gt;
Sample setup:&lt;br /&gt;
* metacourse manager has been assigned role with moodle/course:managemetacourse capability in system or course category context&lt;br /&gt;
* students are enrolled in several child courses&lt;br /&gt;
* teachers are enrolled in separate child course(s)&lt;br /&gt;
&lt;br /&gt;
==Problem areas we are working on ==&lt;br /&gt;
&lt;br /&gt;
===Student view===&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Student view&amp;quot; button has been removed completely.&lt;br /&gt;
&lt;br /&gt;
If there is time and a secure way can be found, it will be replaced by a menu to let the user assume a temporary role in the context of that course.&lt;br /&gt;
&lt;br /&gt;
===Teacher forum===&lt;br /&gt;
&lt;br /&gt;
Teacher forums were always a curious exception to normal forums, as they were not part of a course as such, and were not backed up.&lt;br /&gt;
&lt;br /&gt;
We&#039;re taking the opportunity to rectify this.   The upgrade converts teacher forums with content to normal forums in section 0 of the course, and ensures that only teachers can access them.  If the teacher forum had not been used in the course then it&#039;s not converted and will just dissappear.&lt;br /&gt;
&lt;br /&gt;
===Enrolment plugins===&lt;br /&gt;
&lt;br /&gt;
====Process of logging in====&lt;br /&gt;
&lt;br /&gt;
# load_user_capability() is called to load all the capabilities&lt;br /&gt;
# check_enrolment_plugins() is called at the top of load_user_capability() to check all the enrolment plugins.&lt;br /&gt;
# For each active plugin:&lt;br /&gt;
##Check for setup_enrolments($user) and run it.  This function will do all the processing needed to assign or unassign roles from the current user.&lt;br /&gt;
# load_user_capability() continues and loads up all the roles&lt;br /&gt;
# load_defaultuser_role() is called to add default site permissions (all users)&lt;br /&gt;
&lt;br /&gt;
====Process of checking access to a course====&lt;br /&gt;
&lt;br /&gt;
require_login($course-&amp;gt;id) is called by the script and has logic like this:&lt;br /&gt;
&lt;br /&gt;
# Is the user a guest at site level?&lt;br /&gt;
## Yes: Does the course allow guests?&lt;br /&gt;
### Yes: return true (and further capabilities are checked by the script)&lt;br /&gt;
### No:  send the user to course/enrol.php for enrolment&lt;br /&gt;
## No: continue below&lt;br /&gt;
&lt;br /&gt;
# Does the user have moodle/course:view in that (course) context?&lt;br /&gt;
## Yes: then they can enter (and further capabilities are checked by the script)&lt;br /&gt;
##  No: is guest access allowed on the course?&lt;br /&gt;
### Yes: assign temporary guest role to that user for that context (in session cache).&lt;br /&gt;
### No: send the user to course/enrol.php for enrolment.&lt;br /&gt;
&lt;br /&gt;
====Process of enrolling====&lt;br /&gt;
&lt;br /&gt;
(more soon)&lt;br /&gt;
&lt;br /&gt;
==Scenario brainstorming==&lt;br /&gt;
&lt;br /&gt;
This section is for brainstorming some example roles that we would like to support.  Note some of these *may* not be possible in 1.7.&lt;br /&gt;
&lt;br /&gt;
===Student===&lt;br /&gt;
Obviously.&lt;br /&gt;
&lt;br /&gt;
===Site Designers===&lt;br /&gt;
Is there a role for people involved in how the site looks but not full administrators? Thinking here of online control of themes rather than FTP theme uploading. But in either case they caneditlogos, caneditcss, candeditlevelatwhichthemeapplies.&lt;br /&gt;
&lt;br /&gt;
===Educational Authority Adviser===&lt;br /&gt;
Someone who would want to browse the site and may be asked to comment or contribute to particular discussions or developments in school. Access for this role would be controlled by the school in the case of school level moodles but may be different if there were to be a Local Authority wide Moodle.&lt;br /&gt;
&lt;br /&gt;
===Educational Inspector===&lt;br /&gt;
Someone who will visit the site to verify the school&#039;s self review that comments on home school relationships, extending the classroom etc. They may want to see summaries of usage and reports from surveys garnering parent and pupil views.&lt;br /&gt;
&lt;br /&gt;
===Second Marker / Moderator===&lt;br /&gt;
A teacher within ths site that has access to assignments and quizzes from another teacher&#039;s course for second marking purposes. This may need additional functionality adding to the assignment module so that two sets of grades/feedback can be given to one set of assignments.&lt;br /&gt;
&lt;br /&gt;
===Peer observer of teaching===&lt;br /&gt;
Many institutions encourage peer observation of teaching, to encourage reflection on practice. In online environments this will be similar to moderation or inspection. The peer observer would need to be able to experience the course &amp;quot;as a student&amp;quot;, but also to be able to view summaries of usage, transcripts of interactions (forums/surveys/polls etc), grades assigned (e.g. in assignments).&lt;br /&gt;
&lt;br /&gt;
===External Examiner===&lt;br /&gt;
Has all the rights of inspectors, but would also need to be able to review assignments and feedback, view forums, glossaries etc. However, would not want to post, feedback onto the site at all.&lt;br /&gt;
&lt;br /&gt;
===Parent===&lt;br /&gt;
A parent will have one or more children in one or more institutions which could be using one or more moodle instances or a mixture of Learning Platforms. A parent&#039;s role will vary depending on the age of their children and whether they are contributing as a parent or a school supporter.&lt;br /&gt;
&lt;br /&gt;
In Early Years (EY=3+4 yr olds) and Key Stage 1 (KS1=5+6 yr olds) they may play/learn on an activity or write for the child. Parents often interpret homework tasks and read to their children perhaps filling in a joint reading diary. In Key Stage 2 (KS2=7-11 yr olds) parents would be more monitoring but may join in as well.&lt;br /&gt;
&lt;br /&gt;
In Key stages 3 (KS3=12-14 yr olds) and 4 (KS4=15+16 yr olds) this changes to more of a monitoring/awareness role where a parent would expect to have a summary report of attendance, attainment and general achievement on a weekly/monthly/termly or annual basis. Parents will often be asked to sign and write back comments about this review report.&lt;br /&gt;
&lt;br /&gt;
In all Key Stages there is a great need for parents to receive communication from the school which they can confirm they have received by signing a form. In some cases this may also involve making choices from a list. It may also involve payment for a trip or disco being returned so there could be the possibility of electronic payments. Also in all Key Satges there may be a home-school agreement which may be signed up to. Could this form part of a site policy system that incorporates a tickable list of activities the parent agrees to the child using (blogs/wikis/forums etc.)?&lt;br /&gt;
&lt;br /&gt;
Parent&#039;s evenings often involve complex booking systems that attempt to get parent&#039;s and teachers together. Easy for EY/KS1/KS2 very difficult for KS3/KS4. Wow would this help if it was built into the Learning Platform.&lt;br /&gt;
&lt;br /&gt;
In some cases there needs to be confidential communication between the parent and the teacher without the child being party to this. It may involve teaching and learning but could also involve a behaviour or medical issue. Often this may be done via a sealed letter or face to face. &lt;br /&gt;
&lt;br /&gt;
The latest incarnation of OfSTED with the Self Review Framework (SEF) there is a greater emphasis on schools gathering parent voice via surveys and discussion. There is a clear match here with parents have access to parental votes, questionnaires and discussions and for schools to be able to publish news, results and reports back to parents.&lt;br /&gt;
&lt;br /&gt;
In the UK the LP framework and agenda as being pushed by the DfES via Becta emphasises that within the mandatory groups and roles functionality the parent role is likely to be required to meet the LP Framework procurement standard.&lt;br /&gt;
&lt;br /&gt;
Again in the UK, parents have their own independent right of access to a child&#039;s educational records. Obviously, children&#039;s records must not be made available to other parties, including the parents of other children in the same class. Thus it would be necessary to associate parent accounts with their own child&#039;s accounts in such a way that they could, if so desired, have read access to their child&#039;s grades, answers and contributions, but generally not those of other children - this may be problematic in the case of wiki activities or forum posts.&lt;br /&gt;
&lt;br /&gt;
There is some concern that children&#039;s forum contributions etc may be constrained if their parents are able to read all that they write; this may be particularly problematic in areas such as Personal, Social and Health Education (PSHE), where some schools may choose to use obfuscated usernames.&lt;br /&gt;
&lt;br /&gt;
===Manager===&lt;br /&gt;
&#039;&#039;Typically, for a manager in a business environment, they will want to be able to view reports, view grades for Quizzes, and view results from Surveys/Questionnaires for specific courses. They will also want to be able to view the list of enrolled students.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Note  that in Moodle 2.0, there is a manager role, but that is manager like a lesser admin. It is not manager like a manager in a business environment.&lt;br /&gt;
&lt;br /&gt;
===Weekly Seminar Leader===&lt;br /&gt;
&#039;&#039;In a university seminar, typically 8-15 students in their 3rd/4th year, each student is responsible for leading one topic in a study series.  I ask each student to research 5-10 resources, then give a powerpoint presentation to the other students.  This is followed by an in-class discussion and then online homework.  The homework involves some fun quiz questions and then some reflective journal questions.  I ask each seminar leader to prepare the quiz questions and journal questions as well as their presentation.  To do that, I would like to assign activity-making/authoring roles to the student--either for a short period, or for duration of the whole course.  Thus &amp;quot;Allow Quiz Authoring Role&amp;quot; or &amp;quot;Allow Assignment Authoring Role&amp;quot; at the course level or, if possible, even the Topic level (in a topic or week format course) would be important.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Mentor/Mentee===&lt;br /&gt;
&#039;&#039;Please add text here...&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Community-Designed Rating Criteria===&lt;br /&gt;
&#039;&#039;The gradebook tends to be the domain of the teacher.  What if community/peer ratings/marks could also be entered there? What if peer assessment criteria could be designed by the students, not just the teacher?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Visitor===&lt;br /&gt;
&lt;br /&gt;
This would be a role whereby one could allow a visitor to visit one&#039;s classroom. This might be a colleague interested in seeing your course, or a journalist who might be writing an article about one&#039;s site. They should not be able to see the names of any students anywhere (eg recent activity, forum posts) for privacy reasons. They should be able to try out things like quizzes, and lessons but no grades would be recorded (like in teacher preview mode). They would not be able to participate in choices and forums but could view them. It would be read only in a way like former-student role below but without access to a particular student&#039;s records that former student role would grant.&lt;br /&gt;
&lt;br /&gt;
===Guest Speaker===&lt;br /&gt;
&lt;br /&gt;
This role would be similar to the Visitor role above, but would allow seeing student names, and also allow both reading and posting to a specific forum or forums. We often have &amp;quot;guest speakers&amp;quot; who read and respond to student forum posts. Right now we have to add them as students, which isn&#039;t ideal.&lt;br /&gt;
&lt;br /&gt;
===Former Student===&lt;br /&gt;
This role would be of particular use for courses with rolling enrollments. This role would be one where a student had completed all of the requirements of a course (ie. assignments, quizzes etc.) but wished to have continued access to the course material for review or consultation. The key factor is that one would give access to the completed student to the notes he read, his work and the teacher&#039;s comments on it, but he would not be allowed to do anything that would take up the teacher&#039;s time. In other words, a sort-of read-only access to the course. How forums, which might contain pertinent information and would continue to grow, would be handled is a question. Perhaps the student would be shown only what was in the forums at the time he completed the course. He would not be allowed to see any new posts or add any himself. Same thing for database and glossary entries. In other words, a snapshot of the course at the time his regular enrollment ended. He shouldn&#039;t be able to see the names or profiles of any newly enrolled students for privacy reasons-hence the restrictions on forum access. One issue that would have to be dealt with would be changes to existing modules-such as resources. Does the student get access to the module as it was or as it is? We have no versioning of resources in Moodle so this would be a problem. What about a teacher changing a quiz question so that the answer is different? What would a former student see?&lt;br /&gt;
&lt;br /&gt;
===Alumnus=== &lt;br /&gt;
An ALUMNUS should be able to search for all other ALUMNI of the school, interact with them and be enrolled in a separate course - which is like a META course with all the content of his learning and interaction - as well as capabilities to be a part of this ALUMNI only course.  All the teachers of courses during school years should automatically be a part of the ALUMNI course .. which means when an ALUMNUS is enrolled in a course, the original teachers of all his courses get enrolled ?  --[[User:Anil Sharma|Anil Sharma]] 20:54, 15 July 2006 (WST)&lt;br /&gt;
&lt;br /&gt;
===Librarian===&lt;br /&gt;
&lt;br /&gt;
Reference Librarians have an active role in most of the courses taught at some schools such as Earlham College (with Bibliographic Instruction). The Librarian role within Moodle could encompass default read access to all courses (unless prohibited by course teacher) and read access to all components of the course unless access is barred (again by teacher). The Librarians would also perhaps have a block called perhaps Reference Services or Reference Desk with write access where they could deposit resources. Also this block might have a chat applet whereby enrolled students could chat to the Reference Librarian on duty about their bibliographic research needs.&lt;br /&gt;
&lt;br /&gt;
In schools there is often a book review system. This may be covered by the lending system database but may not in which case a librarian may neeed to have a course area they can create a database template to handle the reviews in which case they may have a normal teacher style role? Off topic but course an integration with common schools database systems would be great.&lt;br /&gt;
&lt;br /&gt;
===Teacher===&lt;br /&gt;
&lt;br /&gt;
Teachers should have read access to other Teacher&#039;s courses unless explictly prohibited. They should be able to set parts of their own course to be totally private (perhaps even to admin?). Just as each activity can currently be set to have group access, each activity could have a permissions field. Teachers could set default permissions for all activities on their course (eg they might disallow Librarian access for example) and then change the access permission for an individual activity. &lt;br /&gt;
&lt;br /&gt;
I think that what is needed is a simple heirarchy of permissions and levels of granularity.&lt;br /&gt;
&lt;br /&gt;
I would take issue with &amp;quot;teachers should have read access to other teacher&#039;s courses unless explicitly prohibited.&amp;quot; This is a violation of the students&#039; privacy as how they perform and what they do in one class isn&#039;t the business of another teacher. Moreover, in the real world a teacher wouldn&#039;t suddenly go sit in on a colleague&#039;s class without asking permission first. I would not have appreciated such an invasion of privacy as either a teacher or a student. It could be an option, but shouldn&#039;t be default.--[[User:N Hansen|N Hansen]] 19:54, 12 June 2006 (WST)&lt;br /&gt;
&lt;br /&gt;
===Community Education Tutors/Trainers===&lt;br /&gt;
Teachers may be community adult education trainers making use of a school moodle so must only have access to their courses unless given access elsewhere. They would not necessarily get the default teacher privileges.&lt;br /&gt;
&lt;br /&gt;
===Secretary/Student Worker===&lt;br /&gt;
&lt;br /&gt;
We often have faculty who want their departmental secretary or student worker to scan and upload files and perhaps create resources. Currently they have to be given teacher access to the course. This is dangerous from a FERPA standpoint since they could easily get access to grades.&lt;br /&gt;
&lt;br /&gt;
===Teaching Assistant===&lt;br /&gt;
&lt;br /&gt;
Our Faculty frequently have undergraduate students acting as Teaching Assistants. These students need to be able to add resources, create assignments, and possibly grade assignments. However, due to FERPA they cannot have access to other students&#039; overall grade information. I think the requirements here are slightly different than those of Secretary/Student Worker&lt;br /&gt;
&lt;br /&gt;
===Student - FERPA rights===&lt;br /&gt;
&lt;br /&gt;
A student that has asserted their FERPA rights to non-disclosure.  Typically includes not publishing their name&lt;br /&gt;
in any public place.  Could include this student only being seen with an &amp;quot;alias&amp;quot; within course spaces.  Is this an attribute rather&lt;br /&gt;
than a role?&lt;br /&gt;
&lt;br /&gt;
===Help Desk===&lt;br /&gt;
&lt;br /&gt;
Help desk agents that have read access for the purposes of trouble shooting.  Some care in placing this role within a hierarchy&lt;br /&gt;
of inheritance is needed, full access will be problematic with FERPA.&lt;br /&gt;
&lt;br /&gt;
===Admin - Catgory based===&lt;br /&gt;
&lt;br /&gt;
Basically a person in between full Admin and Creator that has the permissions of an Admin but only with respect to courses and students. Currently a Creator has permissions site-wide which does not always meet the requirements of a given organisation (e.g. Department A may not be happy that a person from Department B can create/modify courses within Department A&#039;s area). The ability to designate a Creator within a specific category would allow areas to be set up for a faculty/department/organisation and allow the Admin for that area to create/delete courses, upload users, add site-wide entries to the calendar etc.&lt;br /&gt;
&lt;br /&gt;
===Process Roles===&lt;br /&gt;
&lt;br /&gt;
organising the learning process for a group you wish to have the choice to place students in differnt roles: examples of this are:&lt;br /&gt;
* Give a student the role of forum-moderator with edit and chunk-rights&lt;br /&gt;
* Give students different roles &amp;amp; rights in a Webquest design (and change these roles next week&lt;br /&gt;
* Give students different resources, depending of their roles in a rolegame/simulation&lt;br /&gt;
* Give a student the rights to create the section content of next week (and only that week..)&lt;br /&gt;
&lt;br /&gt;
==Things to finish for 1.7 Beta==&lt;br /&gt;
&#039;&#039;&#039;18 Sept 2006&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
#Remove core references to user_student, user_teacher, user_admin, user_coursecreator tables.  [Yu]&lt;br /&gt;
#Address function: isteacher, isadmin, isstudent [Yu]&lt;br /&gt;
#Remove &amp;quot;view&amp;quot; capabilities from all modules unless required [Vy]&lt;br /&gt;
#Remove all old references from remaining Blocks [Vy]&lt;br /&gt;
#Metacourses [Skodak]&lt;br /&gt;
#Add risks to GUI[Skodak]&lt;br /&gt;
#Enrolment plugins  [Martin and Alastair]&lt;br /&gt;
#[[Stats_roles_1.7|Statistics]] [Penny]&lt;br /&gt;
#Fix Loginas&lt;br /&gt;
#Add category-level assigns [Yu]&lt;br /&gt;
#[[Backup_roles_1.7|Backups]] [Eloy?]&lt;br /&gt;
&lt;br /&gt;
===Proposal for interface enhancement===&lt;br /&gt;
Martin asked some questions, here are my answers. The sketches below are not worked out proposals. Their task is to visualize the idea. The exact colours and functionality may be defined after possible agreement about the proposals. The Green, orange and red columns support the meaning of the options from &amp;quot;allow&amp;quot; to &amp;quot;prohibit&amp;quot; (If you may want to see larger images please click onto the image or the &amp;quot;Enlarge&amp;quot; icon below the image.)&lt;br /&gt;
&lt;br /&gt;
The list of possible settings is very long and &#039;&#039; &amp;quot;... the problem is not to overwhelm people with information&amp;quot; &#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
[[Image:01_moodle_define_roles_structured.png|thumb=01_moodle_define_roles_structured_pre.png]]&lt;br /&gt;
&lt;br /&gt;
1) One proposal is to use colour to structure the sections and the columns. Picture 1 shows that the user can keep a much better overview when the list is divided into meaningful different coloured columns and clear sections.&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:02_moodle_define_roles_collapsed.png|thumb=02_moodle_define_roles_collapsed_pre.png]]&lt;br /&gt;
&lt;br /&gt;
2) A second proposal is to reduce the amount of information the user is shown at the same time. The YUI interface library offers great support to show/hide sections of the page by clicking on specific elements. &lt;br /&gt;
&lt;br /&gt;
For example click on an icon beside the sub heading &amp;quot;Course categories&amp;quot; and show/hide all table rows with the CLASS &amp;quot;course-category&amp;quot;.&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:03_moodle_define_roles_tooltip.png|thumb=03_moodle_define_roles_tooltip_pre.png]]&lt;br /&gt;
&lt;br /&gt;
3) &#039;&#039; &amp;quot;The main problem is the last column for risk ... we were thinking of putting little icons in there ...&amp;quot; &#039;&#039;&lt;br /&gt;
Icons are good when they tell the user more about possible actions/meanings then the letters. I am not sure if this is the case here. For both - icons or letters - the YUI tool-tip function would be able to give the user valuable information about the meaning.&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
*[[Hardening new Roles system]]&lt;br /&gt;
*[[Roles and modules]]&lt;br /&gt;
*Using Moodle course:&lt;br /&gt;
**[http://moodle.org/mod/forum/view.php?f=941 Roles and Capabilities forum]&lt;br /&gt;
**Key discussions at Using Moodle forums:&lt;br /&gt;
***[http://moodle.org/mod/forum/discuss.php?d=38788 Roles and Permissions architecture]&lt;br /&gt;
***[http://moodle.org/mod/forum/discuss.php?d=56302#256313 An example of admin roles as set in the database]&lt;br /&gt;
*** A short description by Tim Hunt of some new role related features in Moodle 2.0: [http://moodle.org/mod/forum/discuss.php?d=139641&amp;amp;parent=610871 Adding new roles as part of a module]&lt;br /&gt;
&lt;br /&gt;
[[Category:Roles]]&lt;br /&gt;
[[Category:Interfaces]]&lt;/div&gt;</summary>
		<author><name>Jonwitts</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=User_talk:Matt_Gibson&amp;diff=23445</id>
		<title>User talk:Matt Gibson</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=User_talk:Matt_Gibson&amp;diff=23445"/>
		<updated>2011-04-01T17:39:26Z</updated>

		<summary type="html">&lt;p&gt;Jonwitts: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Configuration addition on [[Apache]] page ===&lt;br /&gt;
&lt;br /&gt;
Hi Matt,&lt;br /&gt;
I&#039;m slightly concerned that the &#039;a2enmod&#039; command that you recommend appears to be peculiar to Debian Linux (I certainly don&#039;t have it on my SuSE install). Perhaps a note to this effect, or better yet a more general way of achieving this. I wasn&#039;t aware of this local caching FWIW. --[[User:Howard Miller|Howard Miller]] 16:00, 21 June 2006 (WST)&lt;br /&gt;
&lt;br /&gt;
==Thank you==&lt;br /&gt;
&lt;br /&gt;
Hi Matt, just wanted to say a big THANK YOU for all your [[Special:Contributions/Matt_Gibson|documentation contributions]] and also for filing lots of bugs - much appreciated :-) --[[User:Helen Foster|Helen Foster]] 08:40, 20 December 2007 (CST)&lt;br /&gt;
&lt;br /&gt;
== HTTPS and UK Data Protection ==&lt;br /&gt;
&lt;br /&gt;
Hi Matt, I had a query regarding your statements on the [[Masquerading]] page. I have added my question to the [[Talk:Masquerading]] page...&lt;br /&gt;
&lt;br /&gt;
[[User:Jon Witts|Jon Witts]]&lt;/div&gt;</summary>
		<author><name>Jonwitts</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Moodle_2.0_release_notes&amp;diff=25871</id>
		<title>Moodle 2.0 release notes</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Moodle_2.0_release_notes&amp;diff=25871"/>
		<updated>2010-07-18T07:31:51Z</updated>

		<summary type="html">&lt;p&gt;Jonwitts: /* System requirements */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Work_in_progress}}&lt;br /&gt;
&lt;br /&gt;
Release date: &#039;&#039;&#039;July 20, 2010&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Before the final release we will have a series of rapidly improving Preview releases.  These are to allow a wider range of developers and contributors to test the code on copies of their production servers, help us tweak the interface and performance, and work on translations, modules and other third-party code (most of which will have to be rewritten significantly).&lt;br /&gt;
&lt;br /&gt;
* [[Moodle 2.0 Preview 1 release notes]] - May 4, 2010&lt;br /&gt;
* [[Moodle 2.0 Preview 2 release notes]] - May 17, 2010&lt;br /&gt;
* [[Moodle 2.0 Preview 3 release notes]] - May 31, 2010&lt;br /&gt;
* [[Moodle 2.0 Preview 4 release notes]] - June 30, 2010&lt;br /&gt;
* [[Moodle 2.0 Preview 5 release notes]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Moodle 2.0 contains a lot of large new features, some completely rewritten features, and hundreds of bug fixes.  For full details (more than you probably want!), see [http://tracker.moodle.org/browse/MDL/fixforversion/10122 the full list of fixed issues in 2.0].&lt;br /&gt;
&lt;br /&gt;
This page is a summary of the major things to look for (links and screenshots will be added over time).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Major new features==&lt;br /&gt;
&lt;br /&gt;
===Community hubs===&lt;br /&gt;
&lt;br /&gt;
* Anybody can set up a Community Hub, which is a directory of courses for public use or for private communities.  The code is implemented as separate GPL plugin for Moodle.&lt;br /&gt;
* Sites can register to any Community Hub (instead of just moodle.org)&lt;br /&gt;
* Teachers on registered sites can publish their full courses to Community Hubs, for download&lt;br /&gt;
* Teachers on registered sites can also advertise their courses on Community Hubs, for people to join&lt;br /&gt;
* Teachers on any site can search all public Community Hubs and download courses as templates for their own courses&lt;br /&gt;
* Users on any Moodle site can also search Community Hubs for courses (and communities of practice) to participate in.  Initially we are encouraging &#039;&#039;&#039;&#039;communities of teaching practice&#039;&#039;&#039;&#039; but any sort of course can be listed.&lt;br /&gt;
&lt;br /&gt;
===Repository support===&lt;br /&gt;
&lt;br /&gt;
* Moodle now supports integration with external repositories of content, making it really simple to bring documents and media into Moodle via an AJAX interface that looks like a standard &#039;&#039;&#039;Open&#039;&#039;&#039; dialogue in desktop applications.&lt;br /&gt;
* Initial plugins in 2.0 include: Alfresco, Amazon S3, Box.net, File system on Server, Flickr, Google Docs, Mahara, MERLOT, Picasa, Recent Files, Remote Moodle sites, WebDAV servers, Wikimedia, Youtube.  These are simple to develop, so many more are expected.&lt;br /&gt;
* You can also import files from your desktop or by specifying a URL.&lt;br /&gt;
&lt;br /&gt;
===Portfolio support===&lt;br /&gt;
&lt;br /&gt;
* Modules can now export their data to external systems, particularly useful for portfolios where snapshots of forums, assignments and other things in Moodle are useful to record in a journal or a portfolio of evidence&lt;br /&gt;
* Different formats are supported (currently LEAP2A, HTML, Images and Text, but others like PDF can be added)&lt;br /&gt;
* Initial plugins in 2.0 include: Box.net, Flickr, Google Docs, &#039;&#039;&#039;Mahara&#039;&#039;&#039; and Picasa.&lt;br /&gt;
&lt;br /&gt;
===Completion===&lt;br /&gt;
&lt;br /&gt;
* Teachers can now specify conditions that define when any &#039;&#039;&#039;activity&#039;&#039;&#039; is seen as completed by a student.  For example, when a certain number of posts have been made, or a grade has been reached, or a choice has been made.  &lt;br /&gt;
* Teachers can now specify conditions that define with any &#039;&#039;&#039;course&#039;&#039;&#039; is seen as completed by a student.  Conditions include activity completion, but could also be by grade, date or a number of other criteria.&lt;br /&gt;
* Teachers and students can see reports that show the progress of any user within a course, or through a series of courses.&lt;br /&gt;
&lt;br /&gt;
===Conditional activities===&lt;br /&gt;
&lt;br /&gt;
* Access to activities can be restricted based on certain criteria, such as dates, grade obtained, or the completion of another activity.  &lt;br /&gt;
* These can be chained together to enable progressive disclosure of the course content, if that is desired. &lt;br /&gt;
&lt;br /&gt;
===Cohorts===&lt;br /&gt;
* Also known as &amp;quot;Site-wide groups&amp;quot;, these are site-wide collections of users that can be enrolled into courses in one action, either manually or synchronised automatically&lt;br /&gt;
&lt;br /&gt;
===Web services support===&lt;br /&gt;
* Support for standards-based web services across the entire Moodle code base, allowing the admin to expose particular functions of Moodle for use by:&lt;br /&gt;
** Administrative systems such as HR or SIS applications&lt;br /&gt;
** Mobile clients&lt;br /&gt;
* Framework contains a very high-level of security with a detailed token system and complete control over the range of functions exposed&lt;br /&gt;
* All defined functions are automatically available via:&lt;br /&gt;
** SOAP&lt;br /&gt;
** XML-RPC&lt;br /&gt;
** REST&lt;br /&gt;
** AMF (Flash)&lt;br /&gt;
&lt;br /&gt;
===IMS Common Cartridge===&lt;br /&gt;
* Moodle can now import courses in IMS Common Cartridge format (commonly used by publishers)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===New blocks===&lt;br /&gt;
* Comments block - like a shoutbox, allows comments to be added to any page. Great for student feedback.&lt;br /&gt;
* Private files block - allows easy access to one&#039;s private file repository in Moodle (with quota support)&lt;br /&gt;
* Community block - keeps track of external courses one is interested in &lt;br /&gt;
* Completion block - reports on the completion status of your courses&lt;br /&gt;
&lt;br /&gt;
==Major improvements to existing core features==&lt;br /&gt;
&lt;br /&gt;
===Backup and restore===&lt;br /&gt;
&lt;br /&gt;
* Completely rewritten Backup/Restore framework, no longer bound by memory (can work with &#039;&#039;&#039;any size course&#039;&#039;&#039;).&lt;br /&gt;
* Completely new backup format.&lt;br /&gt;
* Improved interface.&lt;br /&gt;
* Backup can be made of whole courses, but also specific sections or activities.&lt;br /&gt;
&lt;br /&gt;
===Blocks===&lt;br /&gt;
* Blocks are now consistently implemented on every page in Moodle&lt;br /&gt;
* No longer any limit to the block regions (in addition to left and right, put them at the top, center or bottom of pages)&lt;br /&gt;
* Any block can be made sticky (appears in all the contexts below, eg throughout a course).&lt;br /&gt;
* Blocks can be &amp;quot;docked&amp;quot; on the side of the screen (if the theme supports it)&lt;br /&gt;
&lt;br /&gt;
===Blog===&lt;br /&gt;
* Support for comments on each blog entry&lt;br /&gt;
* Removal of group-level and course-level blogs (these are converted into forums on upgrade)&lt;br /&gt;
* Support for external blog feeds (synchronised to Moodle blog)&lt;br /&gt;
&lt;br /&gt;
===Comments===&lt;br /&gt;
* User comments (Glossaries, Databases, Blogs, etc) are now all consistently handled  and displayed throughout Moodle, using AJAX if available&lt;br /&gt;
* User activity reports will include all the comments made by that user&lt;br /&gt;
&lt;br /&gt;
===Enrolment plugins===&lt;br /&gt;
* Major improvements in the handling of guests and guest accounts &lt;br /&gt;
* Support for multiple forms of enrolment at the same time &lt;br /&gt;
* More detailed control over enrolment in courses &lt;br /&gt;
&lt;br /&gt;
===File handling===&lt;br /&gt;
&lt;br /&gt;
* Full support for Unicode file names on all operating systems.&lt;br /&gt;
* Metadata about each file (author, date, license, etc) and what the file is used for are stored in the database.&lt;br /&gt;
* Duplicate files (for example, a large video file use in two different courses) are only stored once, saving disk space.&lt;br /&gt;
* Files are no longer just &amp;quot;uploaded to the course&amp;quot;.  Files are connected to the particular bit of Moodle content that uses them. (For example, a file may belong to a file resource, a forum post or a wiki page). Access to these files is then controlled by the same rules as as that bit of Moodle, increasing security.&lt;br /&gt;
&lt;br /&gt;
===Gradebook===&lt;br /&gt;
* Details coming soon&lt;br /&gt;
&lt;br /&gt;
===HTML editor===&lt;br /&gt;
* New editor based on TinyMCE&lt;br /&gt;
* Works on more browsers&lt;br /&gt;
* Resizable editing area&lt;br /&gt;
* Cleaner XHTML output &lt;br /&gt;
* Full integration with configured external repositories to import and embed media into text&lt;br /&gt;
&lt;br /&gt;
===Messaging===&lt;br /&gt;
* All email sent by Moodle is now treated as a message&lt;br /&gt;
* A message overview panel allows users to control how messages are sent to them&lt;br /&gt;
* Initial message output plugins in Moodle 2.0 include: Email, Jabber and Popups&lt;br /&gt;
&lt;br /&gt;
===My Moodle page===&lt;br /&gt;
* More customisable My Moodle page with new blocks for showing relevant information &lt;br /&gt;
* Admin can design (and optionally force) site-wide layouts for My Moodle&lt;br /&gt;
* My Moodle page given more prominence as the main &amp;quot;home page&amp;quot; for users&lt;br /&gt;
&lt;br /&gt;
===Navigation===&lt;br /&gt;
* Standard &amp;quot;Navigation&amp;quot; block on every page showing contextual links, while allowing you to jump elsewhere quickly&lt;br /&gt;
* Standard &amp;quot;Settings&amp;quot; blocks on every page shows contextual settings as well as settings for anything else you have permissions for&lt;br /&gt;
&lt;br /&gt;
===Ratings===&lt;br /&gt;
* User ratings (Glossaries, Databases, Forums, etc) are now all consistently handled and displayed throughout Moodle, using AJAX if available&lt;br /&gt;
* Aggregation of using ratings into activity grades is now standardised in all activities&lt;br /&gt;
&lt;br /&gt;
===Roles and permissions===&lt;br /&gt;
* Improved and simplified AJAX interfaces for defining and assigning roles&lt;br /&gt;
* Improved and simplified interfaces for tweaking permissions in any given context &lt;br /&gt;
* New &amp;quot;Archetypes&amp;quot; concept replacing the &amp;quot;Legacy roles&amp;quot; concept.&lt;br /&gt;
* New archetype &amp;quot;manager&amp;quot; to define the role of most people with system-wide editing rights, separate from &amp;quot;admin&amp;quot; role.&lt;br /&gt;
&lt;br /&gt;
===RSS feeds===&lt;br /&gt;
* All RSS feeds are now secured using a random per-user token in the URL&lt;br /&gt;
* Tokens can be updated by the user at any time (if they suspect a feed URL has been compromised)&lt;br /&gt;
* RSS feeds are now more accurate (eg they support forums with separate groups), and are generated efficiently whenever required&lt;br /&gt;
&lt;br /&gt;
===Themes===&lt;br /&gt;
* Many new themes in the core distribution&lt;br /&gt;
* All HTML and JS ouput is now far more efficient (server-side caching) and consistent (tableless layout, new CSS, YUI Framework)&lt;br /&gt;
* Themes can change the HTML of the page if they wish&lt;br /&gt;
* Core support for custom menus in all themes (for example at the top of the page)&lt;br /&gt;
&lt;br /&gt;
===Translation system===&lt;br /&gt;
* [http://lang.moodle.org/ New web portal] to make it easer for groups to collaborate on translating Moodle, and to keep their translations up-to-date.&lt;br /&gt;
* More efficient [[Development:Languages/AMOS|storage format for language strings]] should slightly improve performance.&lt;br /&gt;
&lt;br /&gt;
===User profile pages===&lt;br /&gt;
* Site-wide user profile page can be customised by users with blocks, news, feeds and so on&lt;br /&gt;
* Course-specific user profile pages show course blocks and standard profile information, plus information for teachers of that course&lt;br /&gt;
&lt;br /&gt;
==Major improvements to activity modules==&lt;br /&gt;
&lt;br /&gt;
===Lesson===&lt;br /&gt;
* Refactored internal code &lt;br /&gt;
* Forms are now standard Moodle forms&lt;br /&gt;
&lt;br /&gt;
===Quiz module and question bank===&lt;br /&gt;
&lt;br /&gt;
* [[Development:quiz_navigation|Quiz navigation improvements for students]]&lt;br /&gt;
* [[Development:Flagging_questions_during_a_quiz_attempt|Flagging questions during a quiz attempt]] &lt;br /&gt;
* [[Development:Quiz_report_enhancements|Quiz report enhancements]] - Major improvements to the quiz reports, especially regrading and item analysis&lt;br /&gt;
* [[Development:Quiz_UI_redesign|Quiz editing interface improvements]]&lt;br /&gt;
* Different settings (open/close date, number of attempts, password, time limit) for each group or student (MDL-16478)&lt;br /&gt;
* [[Development:Administration page for question types|Administration page for question types]]&lt;br /&gt;
* [[Development:Moodle 2.0 question bank improvements|Question tagging and improved searching in the question bank]]&lt;br /&gt;
* MDL-8648 Essay questions can now be randomised by random questions&lt;br /&gt;
&lt;br /&gt;
===Resource===&lt;br /&gt;
* All the resource types have been refactored into real modules, and cleaned up&lt;br /&gt;
** File - for displaying a file, possibly with supporting files (like a HTML mini-site)&lt;br /&gt;
** Folder - for displaying a collection of documents &lt;br /&gt;
** URL - for displaying a page with a given URL&lt;br /&gt;
** Page - for a single page, edited online using the HTML editor&lt;br /&gt;
** IMS - for showing a regular IMS content package&lt;br /&gt;
* Better XHTML-compliant support for frames, iframes and embedding in all these modules&lt;br /&gt;
&lt;br /&gt;
===SCORM===&lt;br /&gt;
&lt;br /&gt;
* New [[SCORM module]] settings - display attempt status, display course structure, force completed, force new attempt, lock after final attempt - allowing the behaviour dictated to the SCORM object by the authoring package to be changed MDL-11501 &lt;br /&gt;
* New reporting interface including sortable/collapsible table with group select box and ability to download in Excel, ODS and text format MDL-21555&lt;br /&gt;
&lt;br /&gt;
===Wiki===&lt;br /&gt;
* Completely re-written from scratch, based on NWIki from UPC&lt;br /&gt;
* Support for Mediawiki-style syntax, as well as Creole &lt;br /&gt;
* Interface improvements &lt;br /&gt;
&lt;br /&gt;
===Workshop===&lt;br /&gt;
&lt;br /&gt;
* Completely rewritten from scratch &lt;br /&gt;
* Vastly improved interface for managing stages and users&lt;br /&gt;
&lt;br /&gt;
==System requirements==&lt;br /&gt;
&lt;br /&gt;
Since Moodle 2.0 is such a major release, we are allowing ourselves some increases in the requirements.&lt;br /&gt;
&lt;br /&gt;
* PHP must be 5.2.8 or later (it was released 08-Dec-2008)&lt;br /&gt;
* Databases should be one of the following:&lt;br /&gt;
** MySQL 5.0.25 or later  (InnoDB storage engine highly recommended)&lt;br /&gt;
** PostgreSQL 8.3 or later&lt;br /&gt;
** Oracle 10.2 or later&lt;br /&gt;
** MS SQL 2005 or later&lt;br /&gt;
* Any standards-supporting browser from the past few years, for example:&lt;br /&gt;
** Firefox 3 or later &lt;br /&gt;
** Safari 3 or later &lt;br /&gt;
** Google Chrome 4 or later&lt;br /&gt;
** Opera 9 or later&lt;br /&gt;
** MS Internet Explorer 7 or later (Even [http://googleenterprise.blogspot.com/2010/01/modern-browsers-for-modern-applications.html Google don&#039;t support IE6 any more])&lt;br /&gt;
** etc&lt;br /&gt;
&lt;br /&gt;
==Upgrading==&lt;br /&gt;
&lt;br /&gt;
* When upgrading to Moodle 2.0, you must have Moodle 1.9 or later.  if you are using an earlier version of Moodle (eg 1.8.x) then you need to upgrade to Moodle 1.9.x first.&lt;br /&gt;
* We advise that you test the upgrade first on a COPY of your production site, to make sure it works as you expect.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==For developers: API changes==&lt;br /&gt;
&lt;br /&gt;
See [[Development:Migrating_contrib_code_to_2.0]]&lt;br /&gt;
&lt;br /&gt;
* [[Development:DB_layer_2.0_migration_docs|Database layer changes]] - you will need to update your code.&lt;br /&gt;
* [[Development:Using_the_file_API|File handling changes]] - you will need to update your code.&lt;br /&gt;
* [[Development:Migrating your code code to the 2.0 rendering API|Rendering layer changes]] - should be mostly backwards compatible, but you are advised to upgrade your code.&lt;br /&gt;
* Require capability used to do an automatic require_login. It no longer does so. All pages must explicitly call require_login if they need it. MDL-19882&lt;br /&gt;
* [[Development:Moodle_2.0_question_type_API_changes|Changes to the question type API]]&lt;br /&gt;
* MNet has been refactored and tidied up - related third party code needs to be checked&lt;br /&gt;
* Changes and improvements to the [[Development:Local_customisation|Local customisation system]].&lt;br /&gt;
* Javascript &lt;br /&gt;
* YUI&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;==See also==&lt;br /&gt;
*[[Moodle 1.9 release notes]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Release notes]]&lt;br /&gt;
[[Category:Moodle 2.0]]&lt;br /&gt;
&lt;br /&gt;
[[fr:Notes de mise à jour de Moodle 2.0]]&lt;br /&gt;
[[es:Notas de Moodle 2.0]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jonwitts</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Moodle_2.0_release_notes&amp;diff=25870</id>
		<title>Moodle 2.0 release notes</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Moodle_2.0_release_notes&amp;diff=25870"/>
		<updated>2010-07-18T07:24:29Z</updated>

		<summary type="html">&lt;p&gt;Jonwitts: /* System requirements */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Work_in_progress}}&lt;br /&gt;
&lt;br /&gt;
Release date: &#039;&#039;&#039;July 20, 2010&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Before the final release we will have a series of rapidly improving Preview releases.  These are to allow a wider range of developers and contributors to test the code on copies of their production servers, help us tweak the interface and performance, and work on translations, modules and other third-party code (most of which will have to be rewritten significantly).&lt;br /&gt;
&lt;br /&gt;
* [[Moodle 2.0 Preview 1 release notes]] - May 4, 2010&lt;br /&gt;
* [[Moodle 2.0 Preview 2 release notes]] - May 17, 2010&lt;br /&gt;
* [[Moodle 2.0 Preview 3 release notes]] - May 31, 2010&lt;br /&gt;
* [[Moodle 2.0 Preview 4 release notes]] - June 30, 2010&lt;br /&gt;
* [[Moodle 2.0 Preview 5 release notes]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Moodle 2.0 contains a lot of large new features, some completely rewritten features, and hundreds of bug fixes.  For full details (more than you probably want!), see [http://tracker.moodle.org/browse/MDL/fixforversion/10122 the full list of fixed issues in 2.0].&lt;br /&gt;
&lt;br /&gt;
This page is a summary of the major things to look for (links and screenshots will be added over time).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Major new features==&lt;br /&gt;
&lt;br /&gt;
===Community hubs===&lt;br /&gt;
&lt;br /&gt;
* Anybody can set up a Community Hub, which is a directory of courses for public use or for private communities.  The code is implemented as separate GPL plugin for Moodle.&lt;br /&gt;
* Sites can register to any Community Hub (instead of just moodle.org)&lt;br /&gt;
* Teachers on registered sites can publish their full courses to Community Hubs, for download&lt;br /&gt;
* Teachers on registered sites can also advertise their courses on Community Hubs, for people to join&lt;br /&gt;
* Teachers on any site can search all public Community Hubs and download courses as templates for their own courses&lt;br /&gt;
* Users on any Moodle site can also search Community Hubs for courses (and communities of practice) to participate in.  Initially we are encouraging &#039;&#039;&#039;&#039;communities of teaching practice&#039;&#039;&#039;&#039; but any sort of course can be listed.&lt;br /&gt;
&lt;br /&gt;
===Repository support===&lt;br /&gt;
&lt;br /&gt;
* Moodle now supports integration with external repositories of content, making it really simple to bring documents and media into Moodle via an AJAX interface that looks like a standard &#039;&#039;&#039;Open&#039;&#039;&#039; dialogue in desktop applications.&lt;br /&gt;
* Initial plugins in 2.0 include: Alfresco, Amazon S3, Box.net, File system on Server, Flickr, Google Docs, Mahara, MERLOT, Picasa, Recent Files, Remote Moodle sites, WebDAV servers, Wikimedia, Youtube.  These are simple to develop, so many more are expected.&lt;br /&gt;
* You can also import files from your desktop or by specifying a URL.&lt;br /&gt;
&lt;br /&gt;
===Portfolio support===&lt;br /&gt;
&lt;br /&gt;
* Modules can now export their data to external systems, particularly useful for portfolios where snapshots of forums, assignments and other things in Moodle are useful to record in a journal or a portfolio of evidence&lt;br /&gt;
* Different formats are supported (currently LEAP2A, HTML, Images and Text, but others like PDF can be added)&lt;br /&gt;
* Initial plugins in 2.0 include: Box.net, Flickr, Google Docs, &#039;&#039;&#039;Mahara&#039;&#039;&#039; and Picasa.&lt;br /&gt;
&lt;br /&gt;
===Completion===&lt;br /&gt;
&lt;br /&gt;
* Teachers can now specify conditions that define when any &#039;&#039;&#039;activity&#039;&#039;&#039; is seen as completed by a student.  For example, when a certain number of posts have been made, or a grade has been reached, or a choice has been made.  &lt;br /&gt;
* Teachers can now specify conditions that define with any &#039;&#039;&#039;course&#039;&#039;&#039; is seen as completed by a student.  Conditions include activity completion, but could also be by grade, date or a number of other criteria.&lt;br /&gt;
* Teachers and students can see reports that show the progress of any user within a course, or through a series of courses.&lt;br /&gt;
&lt;br /&gt;
===Conditional activities===&lt;br /&gt;
&lt;br /&gt;
* Access to activities can be restricted based on certain criteria, such as dates, grade obtained, or the completion of another activity.  &lt;br /&gt;
* These can be chained together to enable progressive disclosure of the course content, if that is desired. &lt;br /&gt;
&lt;br /&gt;
===Cohorts===&lt;br /&gt;
* Also known as &amp;quot;Site-wide groups&amp;quot;, these are site-wide collections of users that can be enrolled into courses in one action, either manually or synchronised automatically&lt;br /&gt;
&lt;br /&gt;
===Web services support===&lt;br /&gt;
* Support for standards-based web services across the entire Moodle code base, allowing the admin to expose particular functions of Moodle for use by:&lt;br /&gt;
** Administrative systems such as HR or SIS applications&lt;br /&gt;
** Mobile clients&lt;br /&gt;
* Framework contains a very high-level of security with a detailed token system and complete control over the range of functions exposed&lt;br /&gt;
* All defined functions are automatically available via:&lt;br /&gt;
** SOAP&lt;br /&gt;
** XML-RPC&lt;br /&gt;
** REST&lt;br /&gt;
** AMF (Flash)&lt;br /&gt;
&lt;br /&gt;
===IMS Common Cartridge===&lt;br /&gt;
* Moodle can now import courses in IMS Common Cartridge format (commonly used by publishers)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===New blocks===&lt;br /&gt;
* Comments block - like a shoutbox, allows comments to be added to any page. Great for student feedback.&lt;br /&gt;
* Private files block - allows easy access to one&#039;s private file repository in Moodle (with quota support)&lt;br /&gt;
* Community block - keeps track of external courses one is interested in &lt;br /&gt;
* Completion block - reports on the completion status of your courses&lt;br /&gt;
&lt;br /&gt;
==Major improvements to existing core features==&lt;br /&gt;
&lt;br /&gt;
===Backup and restore===&lt;br /&gt;
&lt;br /&gt;
* Completely rewritten Backup/Restore framework, no longer bound by memory (can work with &#039;&#039;&#039;any size course&#039;&#039;&#039;).&lt;br /&gt;
* Completely new backup format.&lt;br /&gt;
* Improved interface.&lt;br /&gt;
* Backup can be made of whole courses, but also specific sections or activities.&lt;br /&gt;
&lt;br /&gt;
===Blocks===&lt;br /&gt;
* Blocks are now consistently implemented on every page in Moodle&lt;br /&gt;
* No longer any limit to the block regions (in addition to left and right, put them at the top, center or bottom of pages)&lt;br /&gt;
* Any block can be made sticky (appears in all the contexts below, eg throughout a course).&lt;br /&gt;
* Blocks can be &amp;quot;docked&amp;quot; on the side of the screen (if the theme supports it)&lt;br /&gt;
&lt;br /&gt;
===Blog===&lt;br /&gt;
* Support for comments on each blog entry&lt;br /&gt;
* Removal of group-level and course-level blogs (these are converted into forums on upgrade)&lt;br /&gt;
* Support for external blog feeds (synchronised to Moodle blog)&lt;br /&gt;
&lt;br /&gt;
===Comments===&lt;br /&gt;
* User comments (Glossaries, Databases, Blogs, etc) are now all consistently handled  and displayed throughout Moodle, using AJAX if available&lt;br /&gt;
* User activity reports will include all the comments made by that user&lt;br /&gt;
&lt;br /&gt;
===Enrolment plugins===&lt;br /&gt;
* Major improvements in the handling of guests and guest accounts &lt;br /&gt;
* Support for multiple forms of enrolment at the same time &lt;br /&gt;
* More detailed control over enrolment in courses &lt;br /&gt;
&lt;br /&gt;
===File handling===&lt;br /&gt;
&lt;br /&gt;
* Full support for Unicode file names on all operating systems.&lt;br /&gt;
* Metadata about each file (author, date, license, etc) and what the file is used for are stored in the database.&lt;br /&gt;
* Duplicate files (for example, a large video file use in two different courses) are only stored once, saving disk space.&lt;br /&gt;
* Files are no longer just &amp;quot;uploaded to the course&amp;quot;.  Files are connected to the particular bit of Moodle content that uses them. (For example, a file may belong to a file resource, a forum post or a wiki page). Access to these files is then controlled by the same rules as as that bit of Moodle, increasing security.&lt;br /&gt;
&lt;br /&gt;
===Gradebook===&lt;br /&gt;
* Details coming soon&lt;br /&gt;
&lt;br /&gt;
===HTML editor===&lt;br /&gt;
* New editor based on TinyMCE&lt;br /&gt;
* Works on more browsers&lt;br /&gt;
* Resizable editing area&lt;br /&gt;
* Cleaner XHTML output &lt;br /&gt;
* Full integration with configured external repositories to import and embed media into text&lt;br /&gt;
&lt;br /&gt;
===Messaging===&lt;br /&gt;
* All email sent by Moodle is now treated as a message&lt;br /&gt;
* A message overview panel allows users to control how messages are sent to them&lt;br /&gt;
* Initial message output plugins in Moodle 2.0 include: Email, Jabber and Popups&lt;br /&gt;
&lt;br /&gt;
===My Moodle page===&lt;br /&gt;
* More customisable My Moodle page with new blocks for showing relevant information &lt;br /&gt;
* Admin can design (and optionally force) site-wide layouts for My Moodle&lt;br /&gt;
* My Moodle page given more prominence as the main &amp;quot;home page&amp;quot; for users&lt;br /&gt;
&lt;br /&gt;
===Navigation===&lt;br /&gt;
* Standard &amp;quot;Navigation&amp;quot; block on every page showing contextual links, while allowing you to jump elsewhere quickly&lt;br /&gt;
* Standard &amp;quot;Settings&amp;quot; blocks on every page shows contextual settings as well as settings for anything else you have permissions for&lt;br /&gt;
&lt;br /&gt;
===Ratings===&lt;br /&gt;
* User ratings (Glossaries, Databases, Forums, etc) are now all consistently handled and displayed throughout Moodle, using AJAX if available&lt;br /&gt;
* Aggregation of using ratings into activity grades is now standardised in all activities&lt;br /&gt;
&lt;br /&gt;
===Roles and permissions===&lt;br /&gt;
* Improved and simplified AJAX interfaces for defining and assigning roles&lt;br /&gt;
* Improved and simplified interfaces for tweaking permissions in any given context &lt;br /&gt;
* New &amp;quot;Archetypes&amp;quot; concept replacing the &amp;quot;Legacy roles&amp;quot; concept.&lt;br /&gt;
* New archetype &amp;quot;manager&amp;quot; to define the role of most people with system-wide editing rights, separate from &amp;quot;admin&amp;quot; role.&lt;br /&gt;
&lt;br /&gt;
===RSS feeds===&lt;br /&gt;
* All RSS feeds are now secured using a random per-user token in the URL&lt;br /&gt;
* Tokens can be updated by the user at any time (if they suspect a feed URL has been compromised)&lt;br /&gt;
* RSS feeds are now more accurate (eg they support forums with separate groups), and are generated efficiently whenever required&lt;br /&gt;
&lt;br /&gt;
===Themes===&lt;br /&gt;
* Many new themes in the core distribution&lt;br /&gt;
* All HTML and JS ouput is now far more efficient (server-side caching) and consistent (tableless layout, new CSS, YUI Framework)&lt;br /&gt;
* Themes can change the HTML of the page if they wish&lt;br /&gt;
* Core support for custom menus in all themes (for example at the top of the page)&lt;br /&gt;
&lt;br /&gt;
===Translation system===&lt;br /&gt;
* [http://lang.moodle.org/ New web portal] to make it easer for groups to collaborate on translating Moodle, and to keep their translations up-to-date.&lt;br /&gt;
* More efficient [[Development:Languages/AMOS|storage format for language strings]] should slightly improve performance.&lt;br /&gt;
&lt;br /&gt;
===User profile pages===&lt;br /&gt;
* Site-wide user profile page can be customised by users with blocks, news, feeds and so on&lt;br /&gt;
* Course-specific user profile pages show course blocks and standard profile information, plus information for teachers of that course&lt;br /&gt;
&lt;br /&gt;
==Major improvements to activity modules==&lt;br /&gt;
&lt;br /&gt;
===Lesson===&lt;br /&gt;
* Refactored internal code &lt;br /&gt;
* Forms are now standard Moodle forms&lt;br /&gt;
&lt;br /&gt;
===Quiz module and question bank===&lt;br /&gt;
&lt;br /&gt;
* [[Development:quiz_navigation|Quiz navigation improvements for students]]&lt;br /&gt;
* [[Development:Flagging_questions_during_a_quiz_attempt|Flagging questions during a quiz attempt]] &lt;br /&gt;
* [[Development:Quiz_report_enhancements|Quiz report enhancements]] - Major improvements to the quiz reports, especially regrading and item analysis&lt;br /&gt;
* [[Development:Quiz_UI_redesign|Quiz editing interface improvements]]&lt;br /&gt;
* Different settings (open/close date, number of attempts, password, time limit) for each group or student (MDL-16478)&lt;br /&gt;
* [[Development:Administration page for question types|Administration page for question types]]&lt;br /&gt;
* [[Development:Moodle 2.0 question bank improvements|Question tagging and improved searching in the question bank]]&lt;br /&gt;
* MDL-8648 Essay questions can now be randomised by random questions&lt;br /&gt;
&lt;br /&gt;
===Resource===&lt;br /&gt;
* All the resource types have been refactored into real modules, and cleaned up&lt;br /&gt;
** File - for displaying a file, possibly with supporting files (like a HTML mini-site)&lt;br /&gt;
** Folder - for displaying a collection of documents &lt;br /&gt;
** URL - for displaying a page with a given URL&lt;br /&gt;
** Page - for a single page, edited online using the HTML editor&lt;br /&gt;
** IMS - for showing a regular IMS content package&lt;br /&gt;
* Better XHTML-compliant support for frames, iframes and embedding in all these modules&lt;br /&gt;
&lt;br /&gt;
===SCORM===&lt;br /&gt;
&lt;br /&gt;
* New [[SCORM module]] settings - display attempt status, display course structure, force completed, force new attempt, lock after final attempt - allowing the behaviour dictated to the SCORM object by the authoring package to be changed MDL-11501 &lt;br /&gt;
* New reporting interface including sortable/collapsible table with group select box and ability to download in Excel, ODS and text format MDL-21555&lt;br /&gt;
&lt;br /&gt;
===Wiki===&lt;br /&gt;
* Completely re-written from scratch, based on NWIki from UPC&lt;br /&gt;
* Support for Mediawiki-style syntax, as well as Creole &lt;br /&gt;
* Interface improvements &lt;br /&gt;
&lt;br /&gt;
===Workshop===&lt;br /&gt;
&lt;br /&gt;
* Completely rewritten from scratch &lt;br /&gt;
* Vastly improved interface for managing stages and users&lt;br /&gt;
&lt;br /&gt;
==System requirements==&lt;br /&gt;
&lt;br /&gt;
Since Moodle 2.0 is such a major release, we are allowing ourselves some increases in the requirements.&lt;br /&gt;
&lt;br /&gt;
* PHP must be 5.2.8 or later (it was released 08-Dec-2008)&lt;br /&gt;
* Databases should be one of the following:&lt;br /&gt;
** MySQL 5.0.25 or later  (InnoDB storage engine highly recommended)&lt;br /&gt;
** PostgreSQL 8.3 or later&lt;br /&gt;
** Oracle 10.2 or later&lt;br /&gt;
** MS SQL 2005 or later&lt;br /&gt;
* Any standards-supporting browser from the past few years, for example:&lt;br /&gt;
** Firefox 3 or later &lt;br /&gt;
** Safari 3 or later &lt;br /&gt;
** Google Chrome 4 or later&lt;br /&gt;
** Opera 9 or later&lt;br /&gt;
** MS Internet Explorer 7 or later (Even [http://googleenterprise.blogspot.com/2010/01/modern-browsers-for-modern-applications.html Google don&#039;t support IE6 any more])&lt;br /&gt;
** In Windows installations at least, the webserver user must have write access to the Temp folder defined in your php set up for file uploads to function&lt;br /&gt;
** etc&lt;br /&gt;
&lt;br /&gt;
==Upgrading==&lt;br /&gt;
&lt;br /&gt;
* When upgrading to Moodle 2.0, you must have Moodle 1.9 or later.  if you are using an earlier version of Moodle (eg 1.8.x) then you need to upgrade to Moodle 1.9.x first.&lt;br /&gt;
* We advise that you test the upgrade first on a COPY of your production site, to make sure it works as you expect.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==For developers: API changes==&lt;br /&gt;
&lt;br /&gt;
See [[Development:Migrating_contrib_code_to_2.0]]&lt;br /&gt;
&lt;br /&gt;
* [[Development:DB_layer_2.0_migration_docs|Database layer changes]] - you will need to update your code.&lt;br /&gt;
* [[Development:Using_the_file_API|File handling changes]] - you will need to update your code.&lt;br /&gt;
* [[Development:Migrating your code code to the 2.0 rendering API|Rendering layer changes]] - should be mostly backwards compatible, but you are advised to upgrade your code.&lt;br /&gt;
* Require capability used to do an automatic require_login. It no longer does so. All pages must explicitly call require_login if they need it. MDL-19882&lt;br /&gt;
* [[Development:Moodle_2.0_question_type_API_changes|Changes to the question type API]]&lt;br /&gt;
* MNet has been refactored and tidied up - related third party code needs to be checked&lt;br /&gt;
* Changes and improvements to the [[Development:Local_customisation|Local customisation system]].&lt;br /&gt;
* Javascript &lt;br /&gt;
* YUI&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;==See also==&lt;br /&gt;
*[[Moodle 1.9 release notes]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Release notes]]&lt;br /&gt;
[[Category:Moodle 2.0]]&lt;br /&gt;
&lt;br /&gt;
[[fr:Notes de mise à jour de Moodle 2.0]]&lt;br /&gt;
[[es:Notas de Moodle 2.0]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jonwitts</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=User:Jon_Witts/Biography&amp;diff=22209</id>
		<title>User:Jon Witts/Biography</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=User:Jon_Witts/Biography&amp;diff=22209"/>
		<updated>2010-07-11T19:14:24Z</updated>

		<summary type="html">&lt;p&gt;Jonwitts: /* Education History */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Jon Witts Biography=&lt;br /&gt;
==Work History==&lt;br /&gt;
*2007 - Current : Director of ICT at South Hunsley School&lt;br /&gt;
*2004 - 2007 : Learning Resource Centre Manager at South Hunsley School&lt;br /&gt;
*2003 - 2004 : Ran my own Cyber Café and IT consultancy Company&lt;br /&gt;
*2002 - 2003 : Audio Visual and IT Technician at Hull Time Based Arts&lt;br /&gt;
*2001 - 2002 : Administrative Assistant at Hull Time Based Arts&lt;br /&gt;
&lt;br /&gt;
==Education History==&lt;br /&gt;
&lt;br /&gt;
*2005 - 2008 : Foundation Degree, Design and Development of e-Learning, University of Huddersfield&lt;br /&gt;
*1997 - 2000 : BA Hons , Fine Art - Time Based Media, University of Humberside and Lincolnshire&lt;br /&gt;
*1996 - 1997 : BTEC, Fine Art Foundation, Barnfield College&lt;br /&gt;
*1994 - 1996 : A Level, Art, Maths and Physics, Luton Sixth Form College&lt;/div&gt;</summary>
		<author><name>Jonwitts</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=User:Jon_Witts/Biography&amp;diff=22208</id>
		<title>User:Jon Witts/Biography</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=User:Jon_Witts/Biography&amp;diff=22208"/>
		<updated>2010-07-11T19:10:47Z</updated>

		<summary type="html">&lt;p&gt;Jonwitts: /* Work History */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Jon Witts Biography=&lt;br /&gt;
==Work History==&lt;br /&gt;
*2007 - Current : Director of ICT at South Hunsley School&lt;br /&gt;
*2004 - 2007 : Learning Resource Centre Manager at South Hunsley School&lt;br /&gt;
*2003 - 2004 : Ran my own Cyber Café and IT consultancy Company&lt;br /&gt;
*2002 - 2003 : Audio Visual and IT Technician at Hull Time Based Arts&lt;br /&gt;
*2001 - 2002 : Administrative Assistant at Hull Time Based Arts&lt;br /&gt;
&lt;br /&gt;
==Education History==&lt;br /&gt;
&lt;br /&gt;
1997 - 2000 : BA Hons Fine Art at University of Humberside and Lincolnshire specialising in Time Based Media&lt;/div&gt;</summary>
		<author><name>Jonwitts</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=User:Jon_Witts&amp;diff=21195</id>
		<title>User:Jon Witts</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=User:Jon_Witts&amp;diff=21195"/>
		<updated>2010-07-11T19:09:19Z</updated>

		<summary type="html">&lt;p&gt;Jonwitts: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I work at a secondary school in the East Riding of Yorkshire in England as the Director of ICT.&lt;br /&gt;
&lt;br /&gt;
I like to help out in the forums if I can...&lt;br /&gt;
&lt;br /&gt;
I have just started to try and focus more of Moodle time on the docs. Hopefully some of the edits I make and pages I create will help those starting out with Moodle.&lt;br /&gt;
&lt;br /&gt;
Here are links to my User area sub-pages... &lt;br /&gt;
&lt;br /&gt;
*[[user:Jon_Witts/Biography]]&lt;br /&gt;
*[[User:Jon_Witts/moodle_via_apt_get]]&lt;br /&gt;
*[[User:Jon_Witts/file-upload-v2]]&lt;/div&gt;</summary>
		<author><name>Jonwitts</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=User:Jon_Witts&amp;diff=21194</id>
		<title>User:Jon Witts</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=User:Jon_Witts&amp;diff=21194"/>
		<updated>2010-06-30T20:08:14Z</updated>

		<summary type="html">&lt;p&gt;Jonwitts: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I work at a secondary school in the East Riding of Yorkshire in England as the Director of ICT.&lt;br /&gt;
&lt;br /&gt;
I like to help out in the forums if I can...&lt;br /&gt;
&lt;br /&gt;
I have just started to try and focus more of Moodle time on the docs. Hopefully some of the edits I make and pages I create will help those starting out with Moodle.&lt;br /&gt;
&lt;br /&gt;
[[user:Jon_Witts/Biography]]&lt;br /&gt;
&lt;br /&gt;
[[User:Jon_Witts/moodle_via_apt_get]]&lt;/div&gt;</summary>
		<author><name>Jonwitts</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=User:Jon_Witts&amp;diff=21193</id>
		<title>User:Jon Witts</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=User:Jon_Witts&amp;diff=21193"/>
		<updated>2010-06-30T20:08:01Z</updated>

		<summary type="html">&lt;p&gt;Jonwitts: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I work at a secondary school in the East Riding of Yorkshire in England as the Director of ICT.&lt;br /&gt;
&lt;br /&gt;
I like to help out in the forums if I can...&lt;br /&gt;
&lt;br /&gt;
I have just started to try and focus more of Moodle time on the docs. Hopefully some of the edits I make and pages I create will help those starting out with Moodle.&lt;br /&gt;
&lt;br /&gt;
[[user:Jon_Witts/Biography]]&lt;br /&gt;
[[User:Jon_Witts/moodle_via_apt_get]]&lt;/div&gt;</summary>
		<author><name>Jonwitts</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=User:Jon_Witts/moodle_via_apt_get&amp;diff=22463</id>
		<title>User:Jon Witts/moodle via apt get</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=User:Jon_Witts/moodle_via_apt_get&amp;diff=22463"/>
		<updated>2010-06-30T20:07:24Z</updated>

		<summary type="html">&lt;p&gt;Jonwitts: New page: =Install Moodle via apt get package on Ubuntu and Debian= So this to try and tidy up the apt-get install docs which are in a bit of disarray at the moment...  *Ubuntu and Debain both use t...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Install Moodle via apt get package on Ubuntu and Debian=&lt;br /&gt;
So this to try and tidy up the apt-get install docs which are in a bit of disarray at the moment...&lt;br /&gt;
&lt;br /&gt;
*Ubuntu and Debain both use the same package manager that uses deb packages to allow you to install software and know that all of the dependencies will be automatically met and resolved for you by the operating system. Packages are also updated automatically as new versions are maintained in the package repositories.&lt;br /&gt;
*There is a deb package for Moodle maintained by ???. Whilst it will not be the latest version of Moodle; it should make installation on a Debian or Ubuntu server very easy.&lt;br /&gt;
==Install your server==&lt;br /&gt;
Download either the latest Ubuntu server disc (10.04 as this written) or the latest Debian disc (5.0 as writing) and follow the documentation on either site to install an basic server install with no packages installed (also known as the base system).&lt;br /&gt;
==Update your server==&lt;br /&gt;
Once your server is installed, make sure it is fully up to date.&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
 sudo apt-get dist-upgrade&lt;br /&gt;
At this point it is probably wise to reboot your server&lt;br /&gt;
==Set Static IP==&lt;br /&gt;
You are probably going to want your server running on a static IP.&lt;br /&gt;
*Edit /etc/networking/interfaces to set your static IP&lt;br /&gt;
*Restart your networking: sudo /etc/init.d/networking restart&lt;br /&gt;
*Check it works; can you ping another server? www.google.com for example?&lt;br /&gt;
==Install Moodle==&lt;/div&gt;</summary>
		<author><name>Jonwitts</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Themes_overview&amp;diff=17276</id>
		<title>Themes overview</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Themes_overview&amp;diff=17276"/>
		<updated>2010-04-24T07:08:17Z</updated>

		<summary type="html">&lt;p&gt;Jonwitts: /* Moodle&amp;#039;s core organisation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Themes}}{{Moodle 2.0}}Welcome to the new world of themes within Moodle 2.0!&lt;br /&gt;
&lt;br /&gt;
This document explains how themes work in Moodle and is intended to help you create or modify most themes for Moodle 2.0.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
Moodle themes are responsible for much of the &amp;quot;look&amp;quot; of a Moodle site.  They are responsible for providing the CSS for colours, layouts, fonts and so on, and can also change the structural XHTML code below that.  &lt;br /&gt;
&lt;br /&gt;
Themes can either be completely standalone (which means the theme designer needs to define everything) or they can extend an existing theme with customisations.   &lt;br /&gt;
&lt;br /&gt;
Most themes simply add new CSS to an existing standard theme and this is an effective way to achieve just about anything you want to do.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==What&#039;s new in 2.0==&lt;br /&gt;
&lt;br /&gt;
The theme system was completely redesigned in Moodle 2.0.  Known issues have been addressed and new features have been added to meet community requests.&lt;br /&gt;
&lt;br /&gt;
Unfortunately it was not possible to maintain backward compatibility, so all Moodle 1.x themes need to be recreated for Moodle 2.0.&lt;br /&gt;
&lt;br /&gt;
Major changes include:&lt;br /&gt;
* Clearer and more consistent CSS classes and IDs throughout all pages in Moodle&lt;br /&gt;
* Introduction of layout files (templates) describing overall layout HTML for many different types of pages in Moodle.&lt;br /&gt;
* Introduction of renderers, which produce the smaller &amp;quot;parts&amp;quot; of a HTML page.  Advanced themes can choose to override these too if they choose.&lt;br /&gt;
* Introduction of standard methods for adding Javascript to themes.&lt;br /&gt;
* Easier control over icons and images in Moodle.&lt;br /&gt;
* The old &amp;quot;standard&amp;quot; theme has been split into two themes:&lt;br /&gt;
**&#039;&#039;&#039;base&#039;&#039;&#039; - contains absolutely basic layout, and&lt;br /&gt;
**&#039;&#039;&#039;standard&#039;&#039;&#039; - which adds CSS to the base theme to make it look like the old standard theme.&lt;br /&gt;
* Performance tuning: In normal production mode CSS files are combined into a single optimised file, and both CSS and JavaScript files are minimised to ensure there are no wasted connections or traffic.  Files are heavily cached, but also versioned, so that users never need to clear their caches.&lt;br /&gt;
&lt;br /&gt;
==The structure of a theme==&lt;br /&gt;
&lt;br /&gt;
Some important things to know when building good themes:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;config.php&#039;&#039;&#039; - this file is required in every theme.  It defines configuration settings and definitions required to make the theme work in Moodle. These include theme, file, region, default region and options. &lt;br /&gt;
# &#039;&#039;&#039;Layouts and layout files&#039;&#039;&#039; -  in config.php there is one definition for each page type (see [[#theme_layouts_table|Appendix A: Theme layouts]] for a list of over 12 types).  Each page type definition tells Moodle which layout file will be used, what block regions this page type should display and so on.  The layout file contains the HTML and the minimum PHP required to display basic structure of pages. (If you know Moodle 1.9, it&#039;s like a combination of header.html and footer.html).&lt;br /&gt;
# &#039;&#039;&#039;The base theme&#039;&#039;&#039; - is not intended to be used for production sites.  It sets up the simplest possible generic layout and includes only CSS essential to that layout &#039;&#039;or&#039;&#039; to Moodle as a whole.  It tries not to make any unnecessary rules and makes as few assumptions as possible.  It&#039;s the perfect base on which to start designing a theme, as there are very few colours, borders, margins, and alignments to override.  You can just start adding what you need.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Theme files and folders are laid out like this:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;nicetable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! File / Directory&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| /config.php &lt;br /&gt;
| Contains all of the configuration and definitions for each theme&lt;br /&gt;
|-&lt;br /&gt;
| /lib.php &lt;br /&gt;
| Contains speciality classes and functions that are used by theme&lt;br /&gt;
|-&lt;br /&gt;
| /renderers.php &lt;br /&gt;
| Contains the custom renderers for the theme.&lt;br /&gt;
|-&lt;br /&gt;
| /settings.php &lt;br /&gt;
| Contains custom theme settings. These local settings are defined by the theme allowing the theme user to easily alter something about the way it looks or operates. (eg a background colour, or a header image)&lt;br /&gt;
|-&lt;br /&gt;
| /javascript/ &lt;br /&gt;
| All speciality JavaScript files the theme requires should be located in here.&lt;br /&gt;
|-&lt;br /&gt;
| /lang/ &lt;br /&gt;
| Any special language files the theme requires should be located in here.&lt;br /&gt;
|-&lt;br /&gt;
| /layout/ &lt;br /&gt;
| Contains the layout files for the theme.&lt;br /&gt;
|-&lt;br /&gt;
| /pix/ &lt;br /&gt;
| Contains any images the theme makes use of either in CSS or in the layout files.&lt;br /&gt;
|-&lt;br /&gt;
| /pix/favicon.ico &lt;br /&gt;
| The favicon to display for this theme.&lt;br /&gt;
|-&lt;br /&gt;
| /pix/screenshot.jpg &lt;br /&gt;
| A screenshot of the theme to be displayed in on the theme selection screen.&lt;br /&gt;
|-&lt;br /&gt;
| /style/ &lt;br /&gt;
| Contains the CSS files that the theme requires.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
There are also several other places that stylesheets can be included from (see the CSS how and why section below).&lt;br /&gt;
&lt;br /&gt;
==Theme options==&lt;br /&gt;
All theme options are set within the config.php file for the theme.&lt;br /&gt;
Have a look at the &#039;&#039;&#039;[[#theme_options_table|theme options table]]&#039;&#039;&#039; for a complete list of theme options, however keep in mind that in reality for most themes the only settings that are of any use are parents, javascripts, layouts, and sheets. The other settings are specialised or advanced and will not be used in most cases.&lt;br /&gt;
&lt;br /&gt;
Lets have a look at a basic theme configuration file and the different bits that make it up:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$THEME-&amp;gt;name = &#039;newtheme&#039;;&lt;br /&gt;
&lt;br /&gt;
$THEME-&amp;gt;parents = array(&lt;br /&gt;
    &#039;base&#039;&lt;br /&gt;
);&lt;br /&gt;
&lt;br /&gt;
$THEME-&amp;gt;sheets = array(&lt;br /&gt;
    &#039;admin&#039;,&lt;br /&gt;
    &#039;blocks&#039;,&lt;br /&gt;
    &#039;calendar&#039;,&lt;br /&gt;
    &#039;course&#039;,&lt;br /&gt;
    &#039;grade&#039;,&lt;br /&gt;
    &#039;message&#039;,&lt;br /&gt;
    &#039;question&#039;,&lt;br /&gt;
    &#039;user&#039;&lt;br /&gt;
);&lt;br /&gt;
&lt;br /&gt;
$THEME-&amp;gt;layouts = array(&lt;br /&gt;
    &#039;base&#039; =&amp;gt; array(&lt;br /&gt;
        &#039;theme&#039; =&amp;gt; &#039;newtheme&#039;,&lt;br /&gt;
        &#039;file&#039; =&amp;gt; &#039;general.php&#039;,&lt;br /&gt;
        &#039;regions&#039; =&amp;gt; array(),&lt;br /&gt;
    ),&lt;br /&gt;
    &#039;standard&#039; =&amp;gt; array(&lt;br /&gt;
        &#039;theme&#039; =&amp;gt; &#039;newtheme&#039;,&lt;br /&gt;
        &#039;file&#039; =&amp;gt; &#039;general.php&#039;,&lt;br /&gt;
        &#039;regions&#039; =&amp;gt; array(&#039;side-pre&#039;, &#039;side-post&#039;),&lt;br /&gt;
        &#039;defaultregion&#039; =&amp;gt; &#039;side-post&#039;,&lt;br /&gt;
    )&lt;br /&gt;
    //.......&lt;br /&gt;
);&lt;br /&gt;
&lt;br /&gt;
$THEME-&amp;gt;javascripts_footer = array(&lt;br /&gt;
    &#039;navigation&#039;&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
First up you will notice everything is added to $THEME. This is the theme&#039;s configuration object, it is created by Moodle using default settings and is then updated by whatever settings you add to it.&lt;br /&gt;
&lt;br /&gt;
The first setting is the theme&#039;s name, this should simply be whatever your theme&#039;s name is, most likely whatever you named your theme directory.&lt;br /&gt;
&lt;br /&gt;
Next comes an array of themes this theme will extend. In this case it is extending the base theme.&lt;br /&gt;
&lt;br /&gt;
After this is an array containing the names of the stylesheets to include for this theme. Note that it is just the name of the stylesheet and does not contain either the directory it exists in or the file extension. This is because Moodle assumes that the theme&#039;s stylesheets will be located in the styles directory of the theme and have .css as an extension.&lt;br /&gt;
&lt;br /&gt;
Next we see the layouts definition, in this case two layouts have been defined to override the layouts from the base theme. For more information see the [[#Layouts|layouts]] section below.&lt;br /&gt;
&lt;br /&gt;
The final setting is to include a JavaScript file. Much like styles you only need to provide the files name, Moodle will assume it is in your themes JavaScript directory and be a .js file.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Note&#039;&#039;&#039;&#039;&#039;: When you start out theming, make sure you take a look at the configuration files of the other themes that get shipped with Moodle. You will get a good picture of how everything works, and what is going on in a theme, simply by reading it and taking notice of what it is including or excluding.&lt;br /&gt;
&lt;br /&gt;
==CSS==&lt;br /&gt;
===Where it comes from===&lt;br /&gt;
First lets look at where CSS can be included from within Moodle:&lt;br /&gt;
; \theme\themename\styles\*.css : This is the default location for all of the stylesheets that are used by a theme&lt;br /&gt;
; {pluginpath}\styles.css e.g. \block\blockname\styles.css or \mod\modname\styles.css : Every plugin can have its own styles.css file. This file should only contain the required CSS rules for the module and should not add anything to the look of the plugin such as colours, font sizes, or margins other than those that are truly required.&amp;lt;br /&amp;gt;Theme specific styles for a plugin should be located within the themes styles directory.&lt;br /&gt;
; {pluginpath}\styles_themename.css : This should only ever be used by plugin developers. It allows them to write CSS that is designed for a specific theme without having to make changes to that theme. You will notice that this is never used within Moodle and is designed to be used only by contributed code.&lt;br /&gt;
&lt;br /&gt;
There is also one more method that can be used (although very rarely) to include CSS in a page. A developer can manually specify to include a stylesheet from anywhere within Moodle.&lt;br /&gt;
&lt;br /&gt;
As a theme designer you should not have to worry about this, however, as it is only ever meant to be used to include styles from a php file that is getting them from somewhere else, like the database.&lt;br /&gt;
Usually, if code is doing this, it is because there is a config or plugin setting that contains information required by CSS.&lt;br /&gt;
&lt;br /&gt;
When designing a theme, the only method of introducing CSS, that we are interested in, is the first method: adding rules to a stylesheet file located in the themes styles directory.&lt;br /&gt;
&lt;br /&gt;
It is important to note that the order, in which CSS files are found and included, has been specially crafted to ensure that the rules, within a theme&#039;s style sheets, take precedence over identical rules in other files, ensuring that themes have the last say.&lt;br /&gt;
&lt;br /&gt;
===Moodle&#039;s core organisation===&lt;br /&gt;
The next thing to look at is the organisation of CSS and rules within a theme. Although as a theme designer it is entirely up to you as to how you create and organise your CSS you will notice that within the themes provided out of the box by Moodle there is a very clear organisation of CSS.&lt;br /&gt;
&lt;br /&gt;
First up the pagelayout.css file, this contains the CSS required to give the layouts their look and feel. It doesn&#039;t contain any rules that affect the content generated by Moodle.&lt;br /&gt;
&lt;br /&gt;
Next is the core.css file. If you open up core you will notice that it contains all manner of general (usually) simple rules that don&#039;t relate to a specific section of Moodle but to Moodle as a whole.&lt;br /&gt;
There are also rules that relate to specific sections however this is done if there are only a handful of rules for that section. These small clusters of rules are grouped together and separated by comments identifying for which section each relates.&lt;br /&gt;
&lt;br /&gt;
Finally there are all the other CSS files, you will notice that there is a file for each section of Moodle that has a significant collection of rules.&lt;br /&gt;
For those who are familiar with Moodle 1.9 theme&#039;s this organisation will be a big change, in 1.9 CSS was organised by its nature (e.g. colours, layout, other)&lt;br /&gt;
&lt;br /&gt;
===How to write effective rules within Moodle===&lt;br /&gt;
This is an incredibly important point now within Moodle 2.0.&lt;br /&gt;
&lt;br /&gt;
Due to performance requirements and browser limitations all of the CSS files are combined into a single CSS file that gets included every time. This means that rules need to be written in such a way as to minimise the chances of a collision leading to unwanted styles being applied. Whilst writing good CSS is something most designers strive for we have implemented several new body classes and put more emphasis on developers for using classes more appropriately.&lt;br /&gt;
&lt;br /&gt;
====The body tag====&lt;br /&gt;
As of Moodle 2.0 the ID tag that gets applied to the body will always be a representation of the URI. For example if you are looking at a forum posting and the URI is &#039;/mod/forum/view.php&#039; then the body tags ID will be &#039;#page-mod-forum-view&#039;.&lt;br /&gt;
&lt;br /&gt;
As well as the body&#039;s ID attribute the URI is also exploded to form several CSS classes that get added to the body tag, so in the above example &#039;/mod/forum/view&#039; you would end up with the following classes being added to the body tag &#039;.path-mod&#039;, &#039;.path-mod-forum&#039;. Note that &#039;.path-mod-forum-view&#039; is not added as a class, this is intentionally left out to lessen confusion and duplication as rules can relate directly to the page by using the ID and do not require the final class.&lt;br /&gt;
&lt;br /&gt;
The body ID and body classes described above will form the bread and butter for many of the CSS rules you will need to write for your theme, however there are also several other very handy classes that get added to the body tag that will be beneficial to you once you start your journey down the rabbit hole that is themeing. Some of the more interesting classes are listed below.&lt;br /&gt;
&lt;br /&gt;
* If JavaScript is enabled then &#039;jsenabled&#039; will be added as a class to the body tag allowing you to style based on JavaScript being enabled or not.&lt;br /&gt;
* Either &#039;dir-rtl&#039; or &#039;dir-ltr&#039; will be added to the body as a class depending on the direction of the language pack: rtl = right to left, ltr = left to right. This allows you to determine your text-alignment based on language if required.&lt;br /&gt;
* A class will be added to represent the language pack currently in use, by default en_utf8 is used by Moodle and will result in the class &#039;lang-en_utf8&#039; being added to the body tag.&lt;br /&gt;
* The wwwroot for Moodle will also be converted to a class and added to the body tag allowing you to stylise your theme based on the URL through which it was reached. e.g. http://sam.moodle.local/moodle/ will become &#039;.sam-moodle-local—moodle&#039;&lt;br /&gt;
* If the current user is not logged then &#039;.notloggedin&#039; will be added to the body tag.&lt;br /&gt;
&lt;br /&gt;
What does all of this look like in practise? Well using the above example /mod/forum/view.php you would get at least the following body tag:&lt;br /&gt;
&amp;lt;code html4strict&amp;gt;&amp;lt;body id=”page-mod-forum-view” class=”path-mod path-mod-forum” /&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Writing your rules====&lt;br /&gt;
Now of course there are many specific classes used within Moodle, we try to put them everywhere where anyone may want to apply their own styles. It is important to recognise that no one developer can be aware of the all of the class names that have been used all throughout Moodle, let alone within all of the different contributed bits and pieces available for Moodle, it is up to the themer to write good rules and minimise the chances of a collision between rules because in this case good CSS is FAR more effective.&lt;br /&gt;
&lt;br /&gt;
When starting to write rules make sure that you have a good understanding of where you want those rules to be applied, it is a good idea to make the most of the body classes mentioned above.&lt;br /&gt;
If you want to write a rule for a specific page make use of the body tag&#039;s ID, e.g.:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code css&amp;gt;#page-mod-forum-view .forumpost {border:1px solid orange;)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to write a rule that will be applied all throughout the forum.:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code css&amp;gt;.path-mod-forum .forumpost {border:1px solid orange;}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The other very important thing to take into consideration is the structure leading up to the tag you want to style. Browsers apply conflicting styles with priority on the more specific selectors. It can be very beneficial to keep this in mind and write full selectors that rely on the structure of the tags leading to the tag you wish to style.&lt;br /&gt;
&lt;br /&gt;
By making use of body id&#039;s and classes and writing selectors to take into account the leading structure you can greatly minimise the chance of a collision both with Moodle now and in the future.&lt;br /&gt;
&lt;br /&gt;
==Layouts==&lt;br /&gt;
All themes are required to define the layouts they wish to be responsible for as well as create however many layout files are required by those layouts. If the theme is overriding another theme then it is a case of deciding which layouts this new theme should override. If the theme is a completely fresh start then you will need to define a layout for each of the different possibilities. For both situations these layouts should be defined within config.php.&lt;br /&gt;
&lt;br /&gt;
It is also important to note that a new theme that will base itself on another theme (overriding it) does not need to define any layouts or use any layout files if there are no changes that it wishes to make to the layouts of the existing theme. The standard theme in Moodle is a good example of this as it extends the base theme simply adding CSS to achieve its look and feel.&lt;br /&gt;
&lt;br /&gt;
So layouts... as mentioned earlier layouts are defined in config.php within $THEME-&amp;gt;layouts. The following is an example of one such layout definition:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$THEME-&amp;gt;layouts = array(&lt;br /&gt;
    // Standard layout with blocks, this is recommended for most pages with general information&lt;br /&gt;
    &#039;standard&#039; =&amp;gt; array(&lt;br /&gt;
        &#039;theme&#039; =&amp;gt; &#039;base&#039;,&lt;br /&gt;
        &#039;file&#039; =&amp;gt; &#039;general.php&#039;,&lt;br /&gt;
        &#039;regions&#039; =&amp;gt; array(&#039;side-pre&#039;, &#039;side-post&#039;),&lt;br /&gt;
        &#039;defaultregion&#039; =&amp;gt; &#039;side-post&#039;&lt;br /&gt;
    )&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
The first thing Moodle looks at is the name of the layout, in this case it is `standard` (the array key in PHP), it then looks at the settings for the layout, this is the theme, file, regions, and default region. There are also a couple of other options that can be set by a layout.&lt;br /&gt;
&lt;br /&gt;
; theme : is the theme the layout file exists in. That&#039;s right you can make use of layouts from other installed themes.&lt;br /&gt;
; file : is the name of the layout file this layout wants to use.&lt;br /&gt;
; regions : is the different block regions (places you can put blocks) within the theme.&lt;br /&gt;
; defaultregion : is the default location when adding new blocks.&lt;br /&gt;
; options : an array of layout specific options described in detail below.&lt;br /&gt;
&lt;br /&gt;
The first four settings are required by each layout definition however the final setting `options` is a special case that only needs to be set if you want to make use of it. This setting allows the theme designer to specify special options that they would like to create that can be later accessed within the layout file. This allows the theme to make design decisions during the definition and react upon those decisions in what ever layout file is being used.&lt;br /&gt;
&lt;br /&gt;
One such place this has been used is infact within the base theme. If you take a look first at theme/base/config.php you will notice that several layouts specify options &#039;&#039;&#039;nonavbar&#039;&#039;&#039; and &#039;&#039;&#039;nofooter&#039;&#039;&#039; which can both be set to either true or false. Then if we take a look at theme/base/layout/general.php you will spot lines like the following:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
$hasnavbar = (empty($PAGE-&amp;gt;layout_options[&#039;nonavbar&#039;]) &amp;amp;&amp;amp; $PAGE-&amp;gt;has_navbar());&lt;br /&gt;
$hasfooter = (empty($PAGE-&amp;gt;layout_options[&#039;nofooter&#039;]));&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
............&lt;br /&gt;
&amp;lt;?php if ($hasnavbar) { ?&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;navbar clearfix&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;breadcrumb&amp;quot;&amp;gt;&amp;lt;?php echo $OUTPUT-&amp;gt;navbar(); ?&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;navbutton&amp;quot;&amp;gt; &amp;lt;?php echo $PAGE-&amp;gt;button; ?&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;?php } ?&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
What you are seeing here is the use of those settings from the layout within the layout file. In this case it is being used to toggle the display of the navigation bar and page footer.&lt;br /&gt;
&lt;br /&gt;
==Layout files==&lt;br /&gt;
A layout file is a file that contains the core HTML structure for a layout including the header, footer, content and block regions.&lt;br /&gt;
For those of you who are familiar with themes in Moodle 1.9 this is simply header.html and footer.html combined.&lt;br /&gt;
Of course it is not all HTML, there is bits of HTML and content that Moodle needs to put into the page, within each layout file this will be done by a couple of VERY simple PHP calls to get bits and pieces including content.&lt;br /&gt;
&lt;br /&gt;
The following is a very simple layout file to illustrate the different bits that make it up:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php echo $OUTPUT-&amp;gt;doctype() ?&amp;gt;&lt;br /&gt;
&amp;lt;html &amp;lt;?php echo $OUTPUT-&amp;gt;htmlattributes() ?&amp;gt;&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;&amp;lt;?php echo $PAGE-&amp;gt;title ?&amp;gt;&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;?php echo $OUTPUT-&amp;gt;standard_head_html() ?&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body id=&amp;quot;&amp;lt;?php echo $PAGE-&amp;gt;bodyid ?&amp;gt;&amp;quot; class=&amp;quot;&amp;lt;?php echo $PAGE-&amp;gt;bodyclasses; ?&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php echo $OUTPUT-&amp;gt;standard_top_of_body_html() ?&amp;gt;&lt;br /&gt;
&amp;lt;table id=&amp;quot;page&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td colspan=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;h1 class=&amp;quot;headermain&amp;quot;&amp;gt;&amp;lt;?php echo $PAGE-&amp;gt;heading ?&amp;gt;&amp;lt;/h1&amp;gt;&lt;br /&gt;
            &amp;lt;div class=&amp;quot;headermenu&amp;quot;&amp;gt;&amp;lt;?php echo $OUTPUT-&amp;gt;login_info(); echo $PAGE-&amp;gt;headingmenu; ?&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;?php echo $OUTPUT-&amp;gt;blocks_for_region(&#039;side-pre&#039;) ?&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;?php echo core_renderer::MAIN_CONTENT_TOKEN ?&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;?php echo $OUTPUT-&amp;gt;blocks_for_region(&#039;side-post&#039;) ?&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td colspan=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;p class=&amp;quot;helplink&amp;quot;&amp;gt;&amp;lt;?php echo page_doc_link(get_string(&#039;moodledocslink&#039;)) ?&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
            &amp;lt;?php&lt;br /&gt;
            echo $OUTPUT-&amp;gt;login_info();&lt;br /&gt;
            echo $OUTPUT-&amp;gt;home_link();&lt;br /&gt;
            echo $OUTPUT-&amp;gt;standard_footer_html();&lt;br /&gt;
            ?&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;?php echo $OUTPUT-&amp;gt;standard_end_of_body_html() ?&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lets assume you know a enough HTML to understand the basic structure above, what you probably don&#039;t understand are the PHP calls so lets look at them.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php echo $OUTPUT-&amp;gt;doctype() ?&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
This occurs at the VERY top of the page, it must be the first bit of output and is responsible for adding the (X)HTML document type definition to the page. This of course is determined by the settings of the site and is one of the things that the themer has no control over.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;html &amp;lt;?php echo $OUTPUT-&amp;gt;htmlattributes() ?&amp;gt;&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Here we have started writing the opening html tag and have asked Moodle to give us the HTML attributes that should be applied to it. This again is determined by several settings within the actual HTML install.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php echo $PAGE-&amp;gt;title ?&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
This gets us the title for the page.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php echo $OUTPUT-&amp;gt;standard_head_html() ?&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
This very important call gets us the standard head HTML that needs to be within the HEAD tag of the page. This is where CSS and JavaScript requirements for the top of the page will be output as well as any special script or style tags.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;body id=&amp;quot;&amp;lt;?php echo $PAGE-&amp;gt;bodyid; ?&amp;gt;&amp;quot; class=&amp;quot;&amp;lt;?php echo $PAGE-&amp;gt;bodyclasses; ?&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Much like the html tag above we have started writing the body tag and have asked for Moodle to get us the desired ID and classes that should be applied to it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;h1 class=&amp;quot;headermain&amp;quot;&amp;gt;&amp;lt;?php echo $PAGE-&amp;gt;heading; ?&amp;gt;&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;headermenu&amp;quot;&amp;gt;&amp;lt;?php echo $OUTPUT-&amp;gt;login_info(); echo $PAGE-&amp;gt;headingmenu; ?&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Here we are creating the header for the page. In this case we want the heading for the page, we want to display the login information which will be the current users username or a link to log in if they are not logged in, and we want the heading menu if there is one.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php echo $OUTPUT-&amp;gt;blocks_for_region(&#039;side-pre&#039;) ?&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Here we get the HTML to display the blocks that have been added to the page. In this case we have asked for all blocks that have been added to the area labelled &#039;&#039;side-pre&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php echo core_renderer::MAIN_CONTENT_TOKEN ?&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
This is one of the most important calls within the file, it determines where the actual content for the page gets inserted.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php echo $OUTPUT-&amp;gt;blocks_for_region(&#039;side-post&#039;) ?&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Here we get the HTML to display the blocks that have been added to the page. In this case we have asked for all blocks that have been added to the area labelled &#039;&#039;side-post&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
echo $OUTPUT-&amp;gt;login_info();&lt;br /&gt;
echo $OUTPUT-&amp;gt;home_link();&lt;br /&gt;
echo $OUTPUT-&amp;gt;standard_footer_html();&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
This final bit of code gets the content for the footer of the page. It gets the login information which is the same as in the header, a home link, and the standard footer HTML which like the standard head HTML contains all of the script and style tags required by the page and requested to go in the footer.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Note&#039;&#039;&#039;&#039;&#039;: Within Moodle 2.0 most of the JavaScript for the page will be included in the footer. This greatly helps reduce the loading time of the page.&lt;br /&gt;
&lt;br /&gt;
When writing layout files think about the different layouts and how the HTML that each makes use of will differ. You will most likely find you do not need a different layout file for each layout, most likely you will be able to reuse the layout files you create across several layouts. You can of course make use of layout options as well to further reduce the number of layout files you need to produce.&lt;br /&gt;
&lt;br /&gt;
Of course as mentioned above if you are customising an existing theme then you may not need to create any layouts or layout files at all.&lt;br /&gt;
&lt;br /&gt;
==Making use of images==&lt;br /&gt;
Right at the start when listing the features of the new themes system one of the features mentioned was the ability to override any of the standard images within Moodle from within your theme. At this point we will look at both how to make use of your own images within your theme, and secondly how to override the images being used by Moodle.&lt;br /&gt;
So first up a bit about images within Moodle,&lt;br /&gt;
&lt;br /&gt;
# Images you want to use within your theme &#039;&#039;&#039;need&#039;&#039;&#039; to be located within your theme&#039;s pix directory.&lt;br /&gt;
# You can use sub directories within the pix directory of your theme.&lt;br /&gt;
# Images used by Moodle&#039;s core are located within the pix directory of Moodle.&lt;br /&gt;
# Modules, blocks and other plugins should also store there images within a pix directory.&lt;br /&gt;
&lt;br /&gt;
So making use of your own images first up. Lets assume you have added two image files to the pix directory of your theme.&lt;br /&gt;
&lt;br /&gt;
* /theme/yourthemename/pix/imageone.jpg&lt;br /&gt;
* /theme/yourthemename/pix/subdir/imagetwo.png&lt;br /&gt;
&lt;br /&gt;
Notice that one image is a JPEG image, and the second is a PNG. Also the second image is in a subdirectory.&lt;br /&gt;
&lt;br /&gt;
The following code snippet illustrates how to make use of your images within HTML, such as if you wanted to use them within a layout file.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;img src=&amp;quot;&amp;lt;?php echo $OUTPUT-&amp;gt;pix_url(&#039;imageone&#039;, &#039;theme&#039;);?&amp;gt;&amp;quot; alt=&amp;quot;&amp;quot; /&amp;gt; &lt;br /&gt;
&amp;lt;img src=&amp;quot;&amp;lt;?php echo $OUTPUT-&amp;gt;pix_url(&#039;subdir/imagetwo&#039;, &#039;theme&#039;);?&amp;gt;&amp;quot; alt=&amp;quot;&amp;quot; /&amp;gt; &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
In this case rather than writing out the URL to the image we use a method of Moodle&#039;s output library. Its not too important how that functions works but it is important that we use it as it is what allows images within Moodle to be over-rideable.&lt;br /&gt;
&lt;br /&gt;
The following is how you would use the images from within CSS as background images.&lt;br /&gt;
&amp;lt;code css&amp;gt;&lt;br /&gt;
.divone {background-image:url([[pix:theme|imageone]]);}&lt;br /&gt;
.divtwo {background-image:url([[pix:theme|subdir/imagetwo]]);}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
If this case we have to use some special notations that Moodle looks for. Whenever Moodle hands out a CSS file it first searches for all &#039;&#039;[[something]]&#039;&#039; tags and replaces them with what is required.&lt;br /&gt;
&lt;br /&gt;
The final thing to notice with both of the cases above is that at no point do we include the images file extension. &lt;br /&gt;
The reason for this leads us into the next topic, how to override images.&lt;br /&gt;
&lt;br /&gt;
From within a theme you can VERY easily override any standard image within Moodle by simply adding the replacement image to the theme&#039;s pix directory in the same sub directory structure as it is in Moodle.&lt;br /&gt;
So for instance we wanted to override the following two images:&lt;br /&gt;
# /pix/moodlelogo.gif&lt;br /&gt;
# /pix/i/user.gif&lt;br /&gt;
We would simply need to add our replacement images to the theme in the following locations&lt;br /&gt;
# /theme/themename/pix/moodlelogo.gif&lt;br /&gt;
# /theme/themename/pix/i/user.gif&lt;br /&gt;
How easy is that!&lt;br /&gt;
&lt;br /&gt;
Now the other very cool thing to mention is that Moodle looks for not just replacements of the same image type (jpg, gif, etc...) but also replacements in any image format. This is why above when working with our images we never specified the images file extension.&lt;br /&gt;
This means that the following would also work:&lt;br /&gt;
# /theme/themename/pix/moodlelogo.png&lt;br /&gt;
# /theme/themename/pix/i/user.bmp&lt;br /&gt;
&lt;br /&gt;
==Appendix A==&lt;br /&gt;
===Theme options as of March 29th, 2010===&lt;br /&gt;
{| class=&amp;quot;nicetable&amp;quot; id=&amp;quot;theme_options_table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Setting&lt;br /&gt;
! Effect&lt;br /&gt;
|-&lt;br /&gt;
|  $THEME-&amp;gt;&#039;&#039;&#039;csspostprocess&#039;&#039;&#039;&lt;br /&gt;
|  Allows the user to provide the name of a function that all CSS should be passed to before being delivered.&lt;br /&gt;
|-&lt;br /&gt;
|  $THEME-&amp;gt;&#039;&#039;&#039;editor_sheets&#039;&#039;&#039;&lt;br /&gt;
|  An array of stylesheets to include within the body of the editor.&lt;br /&gt;
|-&lt;br /&gt;
|  $THEME-&amp;gt;&#039;&#039;&#039;enable_dock&#039;&#039;&#039;&lt;br /&gt;
|  If set to true the side dock is enabled for blocks&lt;br /&gt;
|-&lt;br /&gt;
|  $THEME-&amp;gt;&#039;&#039;&#039;filter_mediaplugin_colors&#039;&#039;&#039;&lt;br /&gt;
|  Used to control the colours used in the small media player for the filters&lt;br /&gt;
|-&lt;br /&gt;
|  $THEME-&amp;gt;&#039;&#039;&#039;javascripts&#039;&#039;&#039;&lt;br /&gt;
|  An array containing the names of JavaScript files located in /javascript/ to include in the theme. (gets included in the head)&lt;br /&gt;
|-&lt;br /&gt;
|  $THEME-&amp;gt;&#039;&#039;&#039;javascripts_footer&#039;&#039;&#039;&lt;br /&gt;
|  As above but will be included in the page footer.&lt;br /&gt;
|-&lt;br /&gt;
|  $THEME-&amp;gt;&#039;&#039;&#039;larrow&#039;&#039;&#039;&lt;br /&gt;
|  Overrides the left arrow image used throughout Moodle&lt;br /&gt;
|-&lt;br /&gt;
|  $THEME-&amp;gt;&#039;&#039;&#039;layouts&#039;&#039;&#039;&lt;br /&gt;
|  An array setting the layouts for the theme&lt;br /&gt;
|-&lt;br /&gt;
|  $THEME-&amp;gt;&#039;&#039;&#039;parents&#039;&#039;&#039;&lt;br /&gt;
|  An array of themes to inherit from&lt;br /&gt;
|-&lt;br /&gt;
|  $THEME-&amp;gt;&#039;&#039;&#039;parents_exclude_javascripts&#039;&#039;&#039;&lt;br /&gt;
|  An array of JavaScript files NOT to inherit from the themes parents&lt;br /&gt;
|-&lt;br /&gt;
|  $THEME-&amp;gt;&#039;&#039;&#039;parents_exclude_sheets&#039;&#039;&#039;&lt;br /&gt;
|  An array of stylesheets not to inherit from the themes parents&lt;br /&gt;
|-&lt;br /&gt;
|  $THEME-&amp;gt;&#039;&#039;&#039;plugins_exclude_sheets&#039;&#039;&#039;&lt;br /&gt;
|  An array of plugin sheets to ignore and not include.&lt;br /&gt;
|-&lt;br /&gt;
|  $THEME-&amp;gt;&#039;&#039;&#039;rarrow&#039;&#039;&#039;&lt;br /&gt;
|  Overrides the right arrow image used throughout Moodle&lt;br /&gt;
|-&lt;br /&gt;
|  $THEME-&amp;gt;&#039;&#039;&#039;renderfactory&#039;&#039;&#039;&lt;br /&gt;
|  Sets a custom render factory to use with the theme, used when working with custom renderers.&lt;br /&gt;
|-&lt;br /&gt;
|  $THEME-&amp;gt;&#039;&#039;&#039;resource_mp3player_colors&#039;&#039;&#039;&lt;br /&gt;
|  Controls the colours for the MP3 player&lt;br /&gt;
|-&lt;br /&gt;
|  $THEME-&amp;gt;&#039;&#039;&#039;sheets&#039;&#039;&#039;&lt;br /&gt;
|  An array of stylesheets to include for this theme. Should be located in the theme&#039;s styles directory.&lt;br /&gt;
|}&lt;br /&gt;
===The different layouts as of March 29th, 2010===&lt;br /&gt;
{| class=&amp;quot;nicetable&amp;quot; id=&amp;quot;theme_layouts_table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Layout&lt;br /&gt;
! Purpose&lt;br /&gt;
|-&lt;br /&gt;
| base&lt;br /&gt;
| Most backwards compatible layout without the blocks - this is the layout used by default.&lt;br /&gt;
|- &lt;br /&gt;
| standard&lt;br /&gt;
| Standard layout with blocks, this is recommended for most pages with general information.&lt;br /&gt;
|- &lt;br /&gt;
| course&lt;br /&gt;
| Main course page.&lt;br /&gt;
|- &lt;br /&gt;
| coursecategory&lt;br /&gt;
| Use for browsing through course categories.&lt;br /&gt;
|- &lt;br /&gt;
| incourse&lt;br /&gt;
| Default layout while browsing a course, typical for modules.&lt;br /&gt;
|- &lt;br /&gt;
| frontpage&lt;br /&gt;
| The site home page.&lt;br /&gt;
|- &lt;br /&gt;
| admin&lt;br /&gt;
| Administration pages and scripts.&lt;br /&gt;
|- &lt;br /&gt;
| mydashboard&lt;br /&gt;
| My dashboard page.&lt;br /&gt;
|- &lt;br /&gt;
| mypublic&lt;br /&gt;
| My public page.&lt;br /&gt;
|- &lt;br /&gt;
| login&lt;br /&gt;
| The login page.&lt;br /&gt;
|-&lt;br /&gt;
| popup&lt;br /&gt;
| Pages that appear in pop-up windows - no navigation, no blocks, no header.&lt;br /&gt;
|-&lt;br /&gt;
| frametop&lt;br /&gt;
| Used for legacy frame layouts only. No blocks and minimal footer.&lt;br /&gt;
|-&lt;br /&gt;
| embedded&lt;br /&gt;
| Embeded pages, like iframe/object embedded in moodleform - it needs as much space as possible&lt;br /&gt;
|-&lt;br /&gt;
| maintenance&lt;br /&gt;
| Used during upgrade and install. This must not have any blocks, and it is good idea if it does not have links to other places - for example there should not be a home link in the footer.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Related pages==&lt;br /&gt;
* [[Themes 2.0 creating your first theme]]&lt;br /&gt;
* [[Themes 2.0 overriding a renderer]]&lt;br /&gt;
&lt;br /&gt;
* [[Theme_changes Older docs describing the core code changes]]&lt;/div&gt;</summary>
		<author><name>Jonwitts</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=User:Jon_Witts/file-upload-v2&amp;diff=22307</id>
		<title>User:Jon Witts/file-upload-v2</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=User:Jon_Witts/file-upload-v2&amp;diff=22307"/>
		<updated>2010-03-13T09:20:20Z</updated>

		<summary type="html">&lt;p&gt;Jonwitts: Undo revision 69618 by ColinFraser (Talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&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; Uploading files in Moodle is controlled both externally, within the server environment, and internally by Moodle - this is the nature of the Internet and cannot be avoided.  While this page will primarily focus upon making changes in on the server environment, outside of the Moodle interface, it will also look at the changes you can make inside Moodle.  &lt;br /&gt;
&lt;br /&gt;
There are different web server operating systems, thus the method of increasing the uploaded file limit can be different in each.  Typically this process is controlled directly by PHP, but some web server systems can override php settings.&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
File Upload sizes can be restricted in a number of different places. The list below shows the order of inheritance that file upload sizes follow.&lt;br /&gt;
&lt;br /&gt;
#PHP Server level - [[File_upload_size|File upload size]] (which is this page)&lt;br /&gt;
#Moodle site level - [[Site_policies|Site Policies]]&lt;br /&gt;
#Course level - [[Course_settings|Course Settings]]&lt;br /&gt;
#Activity level - [[Adding/editing_a_forum|Adding/Editing a Forum]], [[Upload_a_single_file_assignment|Upload a Single File Assignment]] and [[Advanced_uploading_of_files_assignment|Advanced Uploading of Files Assignment]]&lt;br /&gt;
&lt;br /&gt;
As you can see, it is the PHP server level that has the greatest precedence. So to increase the file upload size in Moodle we must first adjust this setting. You will need to find out where the active php.ini is located and if another program is over riding it.&lt;br /&gt;
&lt;br /&gt;
==Find php.ini control information==&lt;br /&gt;
&lt;br /&gt;
*In PHP 4.x there must be a php.ini file in every directory that has php scripts.&lt;br /&gt;
*In PHP 5.x there is only one php.ini file that is active.  There maybe many php.ini files on the server, but only one will effect the file upload size.  You can find this file by writing a php script or using the Moodle interface.&lt;br /&gt;
*Some Application Programming Interface (API) servers will handle php settings differently&lt;br /&gt;
&lt;br /&gt;
===Moodle php info===&lt;br /&gt;
In Moodle 1.7 onward, administrators run an information script by &lt;br /&gt;
Site administration block&amp;gt;Server&amp;gt;PHP info will run an information script. &lt;br /&gt;
&lt;br /&gt;
*Server API - shows the server type&lt;br /&gt;
*Configuration File (php.ini) Path - show the location of the file.&lt;br /&gt;
*Loaded Configuration File (if there)- will over ride the above location.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Phpinfo script===&lt;br /&gt;
For Moodles prior to 1.7 or on  any server, you can create your own information page. Follow the instruction at [[phpinfo]] for more information.&lt;br /&gt;
&lt;br /&gt;
At the very top of the phpinfo page you will see the version of PHP that your server is running. &lt;br /&gt;
&lt;br /&gt;
* Loaded Modules: For example Apache2Handler &lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
==What web server are you using?==&lt;br /&gt;
===Apache===&lt;br /&gt;
If you are using an Apache web server you can use .htaccess files to override the php.ini settings, or you can edit the active php.ini files on your server.  Look for the API as Apache Handler.  After making changes, you will have to restart your server.&lt;br /&gt;
&lt;br /&gt;
===IIS===&lt;br /&gt;
.... edit php.ini ?! ...&lt;br /&gt;
===Other===&lt;br /&gt;
??&lt;br /&gt;
&lt;br /&gt;
==How is php running on your web server?==&lt;br /&gt;
PHP can interact with other programs on your web server.  If PHP is being controlled by an Apache Handler, you will have to restart your server.   The changes will take place immediately if you are running API server using say CGI/FastCGI .&lt;br /&gt;
&lt;br /&gt;
You can find out how your web server is running PHP by looking at:&lt;br /&gt;
*Site administration&amp;gt;Server&amp;gt;PHP info &amp;quot;Server API&amp;quot;  &lt;br /&gt;
*phpinfo page: Apache2Handler &amp;gt; Loaded Modules Section.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===??===&lt;br /&gt;
&lt;br /&gt;
==What access do you have to the server?==&lt;br /&gt;
To make changes to the main php.ini file you will need administrative access to the server...&lt;br /&gt;
===Local / Full access to server===&lt;br /&gt;
...&lt;br /&gt;
===Shared / Hosted access to server===&lt;br /&gt;
==Hosted Server==&lt;br /&gt;
Things can be a little different with a hosted server for uploaded and downloaded file size.  You are probably going to  to be told to create or change a .htaccess file, or to modify a php.ini file.&lt;br /&gt;
&lt;br /&gt;
:It might be a good idea to talk to with your service provider before you attempt anything.  They probably have instructions on &amp;quot;how to&amp;quot; and may have their own limits for uploaded file size. Some hosts measure the file size in gigabytes and others in megabytes.  If you are unhappy with their limits, then check your contract and consider changing your provider to one that has a limit and price that you like.    &lt;br /&gt;
&lt;br /&gt;
===.htaccess with hosted server===&lt;br /&gt;
The one purpose of an .htaccess file is to override the the current limitations of both the server and the php.ini file.  Your hosted server should inform you where that file needs be placed in your Moodle, but generally in the root is sufficient. They should already have a standard file in place or you can copy it from another location.  &lt;br /&gt;
&lt;br /&gt;
To the .htaccess file find or add the lines:&lt;br /&gt;
  php_value upload_max_filesize 128M&lt;br /&gt;
  php_value post_max_size 128M&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
This will limit uploads to 128MB, but you can make it any size you agree with your provider. The wording may vary slightly, according to the demands of the server.&lt;br /&gt;
&lt;br /&gt;
===php.ini with hosted server===&lt;br /&gt;
Some servers will not allow you to change the moodle root .htaccess file and will tell you to use a php.ini file for php directives.  The steps are basically the same as we covered above and your host will probably be running PHP 5.x &lt;br /&gt;
*Locate the key php file.  It probably will not be located with your Moodle code.&lt;br /&gt;
*Using a file edit program, change the upload max and post max size in the active php file.&lt;br /&gt;
&lt;br /&gt;
For example we found the following lines and the max file size is 20 megabytes.  &lt;br /&gt;
&lt;br /&gt;
 upload_max_filesize = 20M&lt;br /&gt;
 post_max_size = 20M&lt;/div&gt;</summary>
		<author><name>Jonwitts</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=User_talk:Jon_Witts/file-upload-v2&amp;diff=24203</id>
		<title>User talk:Jon Witts/file-upload-v2</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=User_talk:Jon_Witts/file-upload-v2&amp;diff=24203"/>
		<updated>2010-03-13T09:19:40Z</updated>

		<summary type="html">&lt;p&gt;Jonwitts: /* Note from Jon to Colin */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Note from Jon to Colin==&lt;br /&gt;
Colin,&lt;br /&gt;
&lt;br /&gt;
I am not to happy with that generic statement. There are far too many users that will not have access to the php.ini file and this could just lead to confusion. We need to be able to guide the user to how their particular server set-up is configured first; and then instruct them what changes to make, or we will be making the issue worse. [[User:Jon Witts|Jon Witts]] 09:19, 13 March 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Hi Colin,&lt;br /&gt;
&lt;br /&gt;
I am editing the links as I type, and I too was thinking about the overall size and complexity of this page. What I am aiming to do with this is get a single Docs page that gives people the information needed to set their server up to allow greater file size uploads. The language and settings should transcend OS and / or web server versions; as we are dealing with either / or Apache and PHP settings; these are common across all OS.&lt;br /&gt;
&lt;br /&gt;
Where we are going to run into difficulty is going to be trying to provide a document for all the hundreds of variations of ways of doing this on hosted servers. I think for these cases we need to arm the reader with enough information to take back to their hosting provider to find out how they will allow it to be done... [[User:Jon Witts|Jon Witts]] 21:24, 8 March 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
==Comments from Colin==&lt;br /&gt;
I added a short generic comment about what needs be changed, I suggest that this comes first, irrespective of anything else. The way it was there was no mention of what needs be changed until well down the page. The structure this imposes makes what follows a little awkward, or rather what I put in is awkward and does not sit well there, but that is where I think it needs to be. My wording is a little clumsy, and may not be technically correct, so please yourself. Cheers.--[[User:Colin Fraser|Colin Fraser]] 08:57, 13 March 2010 (UTC) &lt;br /&gt;
&lt;br /&gt;
Jon, I certainly agree with your last comment, the myriad of servers is creating a myriad of problems. This is going to mean that whatever is written has to be as generic as possible, which will not please anyone. This also has implications for the next part too.  &lt;br /&gt;
&lt;br /&gt;
I doubt there should be any consideration of PHP 4.x apart from the general comment that &amp;quot;what is included here is suitable for later versions of Moodle, post 1.7 PHP 5.x and higher.&amp;quot; I do understand that some people are still using older versions, and are unwilling to upgrade, but at what point can they no longer be supported? We could tear our hair out arguing this, but I suggest seriously that a line be drawn and it be acknowledged that older versions are excluded. We all run into this issue, and we should be mindful of the huge changes to be made in the next major upgrade. A lot of what is being written now is going to be obsolete within the year - which will bring further challenge to what we think we should be supporting or not. &lt;br /&gt;
&lt;br /&gt;
To get back on point, there is three references to finding the PHP info, suggest it be shrunk into one. One line to deal with using the PHP Infor link in Administration &amp;gt; Server and the other the link to the manual creation of the php info file. Oops, Late for work now.. cheers --[[User:Colin Fraser|Colin Fraser]] 21:11, 11 March 2010 (UTC)   &lt;br /&gt;
        &lt;br /&gt;
Later: The question &amp;quot;How is php running on your web server?&amp;quot;, to me, looks to be a loaded question, like &amp;quot;when did you stop beating your wife?&amp;quot;, or an open ended question, like &amp;quot;how far is up?&amp;quot; or perhaps it is one of those golf ball questions, get a strand and it does not stop unraveling. I would suggest this is, perhaps, worthy of a page on its own. This seems to be getting into the seriously technical aspects of PHP which may not be appropriate on this page. I like the idea of an explanation, but if it is going to appear in Moodle Docs, then it had better be right, detailed enough to be accurate, and simple enough in language so most people can grasp its concepts easily. This is a hugely demanding task, and is certainly outside my abilities.--[[User:Colin Fraser|Colin Fraser]] 09:11, 12 March 2010 (UTC)   &lt;br /&gt;
&lt;br /&gt;
Hi Jon,&lt;br /&gt;
I agree with Chris there, the placing of a link off to other pages for those elements makes sense, leads people to using the Docs a little better. This would also reduce the eventual size of this page a lot - something I have become more aware of recently as a consideration I should be making. &lt;br /&gt;
&lt;br /&gt;
The main block still, I suggest, should be first and that discusses what values need be changed, with a brief explanation of how those values control the upload process possibly, and what they can be changed to. These values, I think, are constant throughout Apache/PHP environment, and I am not sure what they would be in the IIS/PHP environment. Do they retain the same names throughout all environments? What differences are there between different Linux Apache implementations? Are there differences? Or is it just a matter of different approaches to editing?  Cheers. --[[User:Colin Fraser|Colin Fraser]] 21:06, 8 March 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
==Comment by Chris==&lt;br /&gt;
Hi Jon,&lt;br /&gt;
I would put links to the list of levels (excellent) so users can view other pages.  &lt;br /&gt;
&lt;br /&gt;
Server level (this page)&lt;br /&gt;
Moodle site level (site administration block&amp;gt;security&amp;gt;site policies)&lt;br /&gt;
Course level (course administration block&amp;gt;settings&lt;br /&gt;
Activity level (for some activities, update activity link)&lt;br /&gt;
--[[User:chris collman|chris collman]] 20:44, 8 March 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
Hi Chris - good idea. I will add those links in... [[User:Jon Witts|Jon Witts]]&lt;br /&gt;
&lt;br /&gt;
==Chris jumped in==&lt;br /&gt;
Hi spent some time this morning with my coffee doing edits.  I check some local hosts of mine from 1.6 to 1.9.7, plus looked a &amp;quot;popular&amp;quot; webhosting service that uses cpanel and another 1.9.7 production site.   I ran out of time, but you can see where I am going and that I am learning some stuff.&lt;br /&gt;
&lt;br /&gt;
*I have not run the phpinfo() script, but note that Moodle will give this info from 1.7 onward, so I would put the emphasis there.  Jon will need to state where information is about API is and the key php.ini file. &lt;br /&gt;
*Not sure if we should worry about PHP 4.x but why not.&lt;br /&gt;
*I gather the Server API adds more potential variables, at this moment I am not sure how to treat them in an outline.   My &amp;quot;popular&amp;quot; webhost uses CGI/FastCGI, they told me to set the cpanel PHP Config program to &amp;quot;single php.ini&amp;quot; and it told me the active file there.   Later I saw our documentation that talked about php 5.x and one file, which meant I was messing with the wrong one :)&lt;br /&gt;
*My vague understanding is that Apache as an API uses .htaccess to override php.ini .  However, my &amp;quot;popular&amp;quot; would not let me modify this file in the moodle code directory. I did not try to modify it elsewhere. &lt;br /&gt;
&lt;br /&gt;
Best --[[User:chris collman|chris collman]] 13:17, 9 March 2010 (UTC)&lt;/div&gt;</summary>
		<author><name>Jonwitts</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=User:Jon_Witts/file-upload-v2&amp;diff=22290</id>
		<title>User:Jon Witts/file-upload-v2</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=User:Jon_Witts/file-upload-v2&amp;diff=22290"/>
		<updated>2010-03-08T21:32:31Z</updated>

		<summary type="html">&lt;p&gt;Jonwitts: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&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;
File Upload sizes are restricted in a number of different places. The list below shows the order of inheritance that file upload sizes follow.&lt;br /&gt;
&lt;br /&gt;
#PHP Server level - [[File_upload_size]]&lt;br /&gt;
#Moodle site level - [[Site_policies]]&lt;br /&gt;
#Course level - [[Course_settings]]&lt;br /&gt;
#Activity level - [[Adding/editing_a_forum]], [[Upload_a_single_file_assignment]] and [[Advanced_uploading_of_files_assignment]]&lt;br /&gt;
&lt;br /&gt;
As you can see from the list above, it is the PHP server level that has the greatest precedence. So to increase the file upload size in Moodle we must first adjust this setting. Before we try to adjust any settings in PHP though it is good to know what is set already. We find this out by using a phpinfo script.&lt;br /&gt;
&lt;br /&gt;
==PHP Info Script==&lt;br /&gt;
Create a phpinfo() page or locate the phpinfo section in your Moodle, as per the instructions here: [[phpinfo]]&lt;br /&gt;
&lt;br /&gt;
At the very top of the phpinfo page you will see the version of PHP that your server is running. See the relevant section below for information on how to proceed.&lt;br /&gt;
===PHP Version is 5===&lt;br /&gt;
If you are using PHP 5, there may be many php.ini files on your server, but only one will be the active one. Modifying any copy other than the active one will do absolutely no good whatsoever. To find the active one, do the [[phpinfo]] thing. In the output, near the top of the page, is an item labeled Configuration File (php.ini) Path. This will tell you exactly where the active file is. This is the php.ini that your PHP install is reading.&lt;br /&gt;
&lt;br /&gt;
===PHP Version is 4===&lt;br /&gt;
If you are using PHP 4 you will need a php.ini file in every folder (directory) with php script files.&lt;br /&gt;
&lt;br /&gt;
==What web server are you using?==&lt;br /&gt;
===Apache===&lt;br /&gt;
If you are using an Apache web server you can use .htaccess files to over ride the php.ini settings, or you can edit the active php.ini files on your server.&lt;br /&gt;
===IIS===&lt;br /&gt;
.... edit php.ini ?! ...&lt;br /&gt;
===Other===&lt;br /&gt;
??&lt;br /&gt;
&lt;br /&gt;
==How is php running on your web server?==&lt;br /&gt;
The manner in which PHP is running on your web server will determine if you need to restart your web server daemon or not to apply changes you make to the php.ini file.&lt;br /&gt;
&lt;br /&gt;
You can find out how your web server is running PHP by looking at this section of your phpinfo page: Apache2Handler &amp;gt; Loaded Modules Section.&lt;br /&gt;
&lt;br /&gt;
===mod_php5 is present===&lt;br /&gt;
You are running PHP as an Apache Module. You will need to restart Apache to make changes to your php.ini file apply.&lt;br /&gt;
&lt;br /&gt;
===??===&lt;br /&gt;
==What access do you have to the server?==&lt;br /&gt;
To make changes to the main php.ini file you will need administrative access to the server...&lt;br /&gt;
===Local / Full access to server===&lt;br /&gt;
...&lt;br /&gt;
===Shared / Hosted access to server===&lt;br /&gt;
...&lt;/div&gt;</summary>
		<author><name>Jonwitts</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=User:Jon_Witts/file-upload-v2&amp;diff=22289</id>
		<title>User:Jon Witts/file-upload-v2</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=User:Jon_Witts/file-upload-v2&amp;diff=22289"/>
		<updated>2010-03-08T21:31:40Z</updated>

		<summary type="html">&lt;p&gt;Jonwitts: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&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;
File Upload sizes are restricted in a number of different places. The list below shows the order of inheritance that file upload sizes follow.&lt;br /&gt;
&lt;br /&gt;
 #PHP Server level - [[File_upload_size]]&lt;br /&gt;
 #Moodle site level - [[Site_policies]]&lt;br /&gt;
 #Course level - [[Course_settings]]&lt;br /&gt;
 #Activity level - [[Adding/editing_a_forum]], [[Upload_a_single_file_assignment]] and [[Advanced_uploading_of_files_assignment]]&lt;br /&gt;
&lt;br /&gt;
As you can see from the list above, it is the PHP server level that has the greatest precedence. So to increase the file upload size in Moodle we must first adjust this setting. Before we try to adjust any settings in PHP though it is good to know what is set already. We find this out by using a phpinfo script.&lt;br /&gt;
&lt;br /&gt;
==PHP Info Script==&lt;br /&gt;
Create a phpinfo() page or locate the phpinfo section in your Moodle, as per the instructions here: [[phpinfo]]&lt;br /&gt;
&lt;br /&gt;
At the very top of the phpinfo page you will see the version of PHP that your server is running. See the relevant section below for information on how to proceed.&lt;br /&gt;
===PHP Version is 5===&lt;br /&gt;
If you are using PHP 5, there may be many php.ini files on your server, but only one will be the active one. Modifying any copy other than the active one will do absolutely no good whatsoever. To find the active one, do the [[phpinfo]] thing. In the output, near the top of the page, is an item labeled Configuration File (php.ini) Path. This will tell you exactly where the active file is. This is the php.ini that your PHP install is reading.&lt;br /&gt;
&lt;br /&gt;
===PHP Version is 4===&lt;br /&gt;
If you are using PHP 4 you will need a php.ini file in every folder (directory) with php script files.&lt;br /&gt;
&lt;br /&gt;
==What web server are you using?==&lt;br /&gt;
===Apache===&lt;br /&gt;
If you are using an Apache web server you can use .htaccess files to over ride the php.ini settings, or you can edit the active php.ini files on your server.&lt;br /&gt;
===IIS===&lt;br /&gt;
.... edit php.ini ?! ...&lt;br /&gt;
===Other===&lt;br /&gt;
??&lt;br /&gt;
&lt;br /&gt;
==How is php running on your web server?==&lt;br /&gt;
The manner in which PHP is running on your web server will determine if you need to restart your web server daemon or not to apply changes you make to the php.ini file.&lt;br /&gt;
&lt;br /&gt;
You can find out how your web server is running PHP by looking at this section of your phpinfo page: Apache2Handler &amp;gt; Loaded Modules Section.&lt;br /&gt;
&lt;br /&gt;
===mod_php5 is present===&lt;br /&gt;
You are running PHP as an Apache Module. You will need to restart Apache to make changes to your php.ini file apply.&lt;br /&gt;
&lt;br /&gt;
===??===&lt;br /&gt;
==What access do you have to the server?==&lt;br /&gt;
To make changes to the main php.ini file you will need administrative access to the server...&lt;br /&gt;
===Local / Full access to server===&lt;br /&gt;
...&lt;br /&gt;
===Shared / Hosted access to server===&lt;br /&gt;
...&lt;/div&gt;</summary>
		<author><name>Jonwitts</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=User_talk:Jon_Witts/file-upload-v2&amp;diff=24193</id>
		<title>User talk:Jon Witts/file-upload-v2</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=User_talk:Jon_Witts/file-upload-v2&amp;diff=24193"/>
		<updated>2010-03-08T21:24:55Z</updated>

		<summary type="html">&lt;p&gt;Jonwitts: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hi Colin,&lt;br /&gt;
&lt;br /&gt;
I am editing the links as I type, and I too was thinking about the overall size and complexity of this page. What I am aiming to do with this is get a single Docs page that gives people the information needed to set their server up to allow greater file size uploads. The language and settings should transcend OS and / or web server versions; as we are dealing with either / or Apache and PHP settings; these are common across all OS.&lt;br /&gt;
&lt;br /&gt;
Where we are going to run into difficulty is going to be trying to provide a document for all the hundreds of variations of ways of doing this on hosted servers. I think for these cases we need to arm the reader with enough information to take back to their hosting provider to find out how they will allow it to be done... [[User:Jon Witts|Jon Witts]] 21:24, 8 March 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
-------&lt;br /&gt;
&lt;br /&gt;
Hi Jon,&lt;br /&gt;
I agree with Chris there, the placing of a link off to other pages for those elements makes sense, leads people to using the Docs a little better. This would also reduce the eventual size of this page a lot - something I have become more aware of recently as a consideration I should be making. &lt;br /&gt;
&lt;br /&gt;
The main block still, I suggest, should be first and that discusses what values need be changed, with a brief explanation of how those values control the upload process possibly, and what they can be changed to. These values, I think, are constant throughout Apache/PHP environment, and I am not sure what they would be in the IIS/PHP environment. Do they retain the same names throughout all environments? What differences are there between different Linux Apache implementations? Are there differences? Or is it just a matter of different approaches to editing?  Cheers. --[[User:Colin Fraser|Colin Fraser]] 21:06, 8 March 2010 (UTC)      &lt;br /&gt;
&lt;br /&gt;
----------------&lt;br /&gt;
&lt;br /&gt;
Hi Jon,&lt;br /&gt;
I would put links to the list of levels (excellent) so users can view other pages.  &lt;br /&gt;
&lt;br /&gt;
Server level (this page)&lt;br /&gt;
Moodle site level (site administration block&amp;gt;security&amp;gt;site policies)&lt;br /&gt;
Course level (course administration block&amp;gt;settings&lt;br /&gt;
Activity level (for some activities, update activity link)&lt;br /&gt;
--[[User:chris collman|chris collman]] 20:44, 8 March 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
Hi Chris - good idea. I will add those links in... [[User:Jon Witts|Jon Witts]]&lt;/div&gt;</summary>
		<author><name>Jonwitts</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=User:Jon_Witts/file-upload-v2&amp;diff=22288</id>
		<title>User:Jon Witts/file-upload-v2</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=User:Jon_Witts/file-upload-v2&amp;diff=22288"/>
		<updated>2010-03-08T21:18:15Z</updated>

		<summary type="html">&lt;p&gt;Jonwitts: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&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; File Upload sizes are restricted in a number of different places. The list below shows the order of inheritance that file upload sizes follow.&lt;br /&gt;
&lt;br /&gt;
 *Server level - [[File_upload_size]]&lt;br /&gt;
 *Moodle site level - [[Site_policies]]&lt;br /&gt;
 *Course level - [[Course_settings]]&lt;br /&gt;
 *Activity level - [[Adding/editing_a_forum]], [[Upload_a_single_file_assignment]] and [[Advanced_uploading_of_files_assignment]]&lt;br /&gt;
&lt;br /&gt;
This is a contentious issue, mainly because you might think that it should be set inside the Moodle. Unfortunately, this is not so, Moodle cannot work outside itself. Your install of PHP is what determines the maximum upload file size; Moodle can only work with those settings determined by PHP. So to change these settings we first need to know what version of PHP you are running and where it is referencing its settings from. PHP uses a file called php.ini to determine its operational settings and this can be located in a number of places.&lt;br /&gt;
&lt;br /&gt;
==PHP Version and php.ini location==&lt;br /&gt;
Create a phpinfo() page or locate the phpinfo section in your Moodle, as per the instructions here: [[phpinfo]]&lt;br /&gt;
&lt;br /&gt;
At the very top of the phpinfo page you will see the version of PHP that your server is running. See the relevant section below for information on how to proceed.&lt;br /&gt;
===PHP Version is 5===&lt;br /&gt;
If you are using PHP 5, there may be many php.ini files on your server, but only one will be the active one. Modifying any copy other than the active one will do absolutely no good whatsoever. To find the active one, do the [[phpinfo]] thing. In the output, near the top of the page, is an item labeled Configuration File (php.ini) Path. This will tell you exactly where the active file is. This is the php.ini that your PHP install is reading.&lt;br /&gt;
&lt;br /&gt;
===PHP Version is 4===&lt;br /&gt;
If you are using PHP 4 you will need a php.ini file in every folder (directory) with php script files.&lt;br /&gt;
&lt;br /&gt;
==What web server are you using?==&lt;br /&gt;
===Apache===&lt;br /&gt;
If you are using an Apache web server you can use .htaccess files to over ride the php.ini settings, or you can edit the active php.ini files on your server.&lt;br /&gt;
===IIS===&lt;br /&gt;
.... edit php.ini ?! ...&lt;br /&gt;
===Other===&lt;br /&gt;
??&lt;br /&gt;
&lt;br /&gt;
==How is php running on your web server?==&lt;br /&gt;
The manner in which PHP is running on your web server will determine if you need to restart your web server daemon or not to apply changes you make to the php.ini file.&lt;br /&gt;
&lt;br /&gt;
You can find out how your web server is running PHP by looking at this section of your phpinfo page: Apache2Handler &amp;gt; Loaded Modules Section.&lt;br /&gt;
&lt;br /&gt;
===mod_php5 is present===&lt;br /&gt;
You are running PHP as an Apache Module. You will need to restart Apache to make changes to your php.ini file apply.&lt;br /&gt;
&lt;br /&gt;
===??===&lt;br /&gt;
==What access do you have to the server?==&lt;br /&gt;
To make changes to the main php.ini file you will need administrative access to the server...&lt;br /&gt;
===Local / Full access to server===&lt;br /&gt;
...&lt;br /&gt;
===Shared / Hosted access to server===&lt;br /&gt;
...&lt;/div&gt;</summary>
		<author><name>Jonwitts</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=User:Jon_Witts/file-upload-v2&amp;diff=22287</id>
		<title>User:Jon Witts/file-upload-v2</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=User:Jon_Witts/file-upload-v2&amp;diff=22287"/>
		<updated>2010-03-08T21:09:37Z</updated>

		<summary type="html">&lt;p&gt;Jonwitts: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&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; The changes that need be made are the same in all versions of Moodle, just in different OS&#039; they need be made in different places. Upload file sizes are restricted in a number of ways and each one in this list restricts the following ones:&lt;br /&gt;
&lt;br /&gt;
 Server level - [[File_upload_size]]&lt;br /&gt;
 Moodle site level - [[Site_policies]]&lt;br /&gt;
 Course level - [[Course_settings]]&lt;br /&gt;
 Activity level&lt;br /&gt;
&lt;br /&gt;
This is a contentious issue, mainly because you might think that it should be set inside the Moodle. Unfortunately, this is not so, Moodle cannot work outside itself. Your install of PHP is what determines the maximum upload file size; Moodle can only work with those settings determined by PHP. So to change these settings we first need to know what version of PHP you are running and where it is referencing its settings from. PHP uses a file called php.ini to determine its operational settings and this can be located in a number of places.&lt;br /&gt;
&lt;br /&gt;
==PHP Version and php.ini location==&lt;br /&gt;
Create a phpinfo() page or locate the phpinfo section in your Moodle, as per the instructions here: [[phpinfo]]&lt;br /&gt;
&lt;br /&gt;
At the very top of the phpinfo page you will see the version of PHP that your server is running. See the relevant section below for information on how to proceed.&lt;br /&gt;
===PHP Version is 5===&lt;br /&gt;
If you are using PHP 5, there may be many php.ini files on your server, but only one will be the active one. Modifying any copy other than the active one will do absolutely no good whatsoever. To find the active one, do the [[phpinfo]] thing. In the output, near the top of the page, is an item labeled Configuration File (php.ini) Path. This will tell you exactly where the active file is. This is the php.ini that your PHP install is reading.&lt;br /&gt;
&lt;br /&gt;
===PHP Version is 4===&lt;br /&gt;
If you are using PHP 4 you will need a php.ini file in every folder (directory) with php script files.&lt;br /&gt;
&lt;br /&gt;
==What web server are you using?==&lt;br /&gt;
===Apache===&lt;br /&gt;
If you are using an Apache web server you can use .htaccess files to over ride the php.ini settings, or you can edit the active php.ini files on your server.&lt;br /&gt;
===IIS===&lt;br /&gt;
.... edit php.ini ?! ...&lt;br /&gt;
===Other===&lt;br /&gt;
??&lt;br /&gt;
&lt;br /&gt;
==How is php running on your web server?==&lt;br /&gt;
The manner in which PHP is running on your web server will determine if you need to restart your web server daemon or not to apply changes you make to the php.ini file.&lt;br /&gt;
&lt;br /&gt;
You can find out how your web server is running PHP by looking at this section of your phpinfo page: Apache2Handler &amp;gt; Loaded Modules Section.&lt;br /&gt;
&lt;br /&gt;
===mod_php5 is present===&lt;br /&gt;
You are running PHP as an Apache Module. You will need to restart Apache to make changes to your php.ini file apply.&lt;br /&gt;
&lt;br /&gt;
===??===&lt;br /&gt;
==What access do you have to the server?==&lt;br /&gt;
To make changes to the main php.ini file you will need administrative access to the server...&lt;br /&gt;
===Local / Full access to server===&lt;br /&gt;
...&lt;br /&gt;
===Shared / Hosted access to server===&lt;br /&gt;
...&lt;/div&gt;</summary>
		<author><name>Jonwitts</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=User_talk:Jon_Witts/file-upload-v2&amp;diff=24191</id>
		<title>User talk:Jon Witts/file-upload-v2</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=User_talk:Jon_Witts/file-upload-v2&amp;diff=24191"/>
		<updated>2010-03-08T21:01:27Z</updated>

		<summary type="html">&lt;p&gt;Jonwitts: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hi Jon,&lt;br /&gt;
I would put links to the list of levels (excellent) so users can view other pages.  &lt;br /&gt;
&lt;br /&gt;
Server level (this page)&lt;br /&gt;
Moodle site level (site administration block&amp;gt;security&amp;gt;site policies)&lt;br /&gt;
Course level (course administration block&amp;gt;settings&lt;br /&gt;
Activity level (for some activities, update activity link)&lt;br /&gt;
--[[User:chris collman|chris collman]] 20:44, 8 March 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Hi Chris - good idea. I will add those links in... [[User:Jon Witts|Jon Witts]]&lt;/div&gt;</summary>
		<author><name>Jonwitts</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=User:Jon_Witts/file-upload-v2&amp;diff=22286</id>
		<title>User:Jon Witts/file-upload-v2</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=User:Jon_Witts/file-upload-v2&amp;diff=22286"/>
		<updated>2010-03-08T20:22:39Z</updated>

		<summary type="html">&lt;p&gt;Jonwitts: /* PHP Version is 5 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&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; The changes that need be made are the same in all versions of Moodle, just in different OS&#039; they need be made in different places. Upload file sizes are restricted in a number of ways and each one in this list restricts the following ones:&lt;br /&gt;
&lt;br /&gt;
 Server level&lt;br /&gt;
 Moodle site level&lt;br /&gt;
 Course level&lt;br /&gt;
 Activity level&lt;br /&gt;
&lt;br /&gt;
This is a contentious issue, mainly because you might think that it should be set inside the Moodle. Unfortunately, this is not so, Moodle cannot work outside itself. Your install of PHP is what determines the maximum upload file size; Moodle can only work with those settings determined by PHP. So to change these settings we first need to know what version of PHP you are running and where it is referencing its settings from. PHP uses a file called php.ini to determine its operational settings and this can be located in a number of places.&lt;br /&gt;
&lt;br /&gt;
==PHP Version and php.ini location==&lt;br /&gt;
Create a phpinfo() page or locate the phpinfo section in your Moodle, as per the instructions here: [[phpinfo]]&lt;br /&gt;
&lt;br /&gt;
At the very top of the phpinfo page you will see the version of PHP that your server is running. See the relevant section below for information on how to proceed.&lt;br /&gt;
===PHP Version is 5===&lt;br /&gt;
If you are using PHP 5, there may be many php.ini files on your server, but only one will be the active one. Modifying any copy other than the active one will do absolutely no good whatsoever. To find the active one, do the [[phpinfo]] thing. In the output, near the top of the page, is an item labeled Configuration File (php.ini) Path. This will tell you exactly where the active file is. This is the php.ini that your PHP install is reading.&lt;br /&gt;
&lt;br /&gt;
===PHP Version is 4===&lt;br /&gt;
If you are using PHP 4 you will need a php.ini file in every folder (directory) with php script files.&lt;br /&gt;
&lt;br /&gt;
==What web server are you using?==&lt;br /&gt;
===Apache===&lt;br /&gt;
If you are using an Apache web server you can use .htaccess files to over ride the php.ini settings, or you can edit the active php.ini files on your server.&lt;br /&gt;
===IIS===&lt;br /&gt;
.... edit php.ini ?! ...&lt;br /&gt;
===Other===&lt;br /&gt;
??&lt;br /&gt;
&lt;br /&gt;
==How is php running on your web server?==&lt;br /&gt;
The manner in which PHP is running on your web server will determine if you need to restart your web server daemon or not to apply changes you make to the php.ini file.&lt;br /&gt;
&lt;br /&gt;
You can find out how your web server is running PHP by looking at this section of your phpinfo page: Apache2Handler &amp;gt; Loaded Modules Section.&lt;br /&gt;
&lt;br /&gt;
===mod_php5 is present===&lt;br /&gt;
You are running PHP as an Apache Module. You will need to restart Apache to make changes to your php.ini file apply.&lt;br /&gt;
&lt;br /&gt;
===??===&lt;br /&gt;
==What access do you have to the server?==&lt;br /&gt;
To make changes to the main php.ini file you will need administrative access to the server...&lt;br /&gt;
===Local / Full access to server===&lt;br /&gt;
...&lt;br /&gt;
===Shared / Hosted access to server===&lt;br /&gt;
...&lt;/div&gt;</summary>
		<author><name>Jonwitts</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=User:Jon_Witts/file-upload-v2&amp;diff=22285</id>
		<title>User:Jon Witts/file-upload-v2</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=User:Jon_Witts/file-upload-v2&amp;diff=22285"/>
		<updated>2010-03-08T20:21:01Z</updated>

		<summary type="html">&lt;p&gt;Jonwitts: /* PHP Version is 4 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&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; The changes that need be made are the same in all versions of Moodle, just in different OS&#039; they need be made in different places. Upload file sizes are restricted in a number of ways and each one in this list restricts the following ones:&lt;br /&gt;
&lt;br /&gt;
 Server level&lt;br /&gt;
 Moodle site level&lt;br /&gt;
 Course level&lt;br /&gt;
 Activity level&lt;br /&gt;
&lt;br /&gt;
This is a contentious issue, mainly because you might think that it should be set inside the Moodle. Unfortunately, this is not so, Moodle cannot work outside itself. Your install of PHP is what determines the maximum upload file size; Moodle can only work with those settings determined by PHP. So to change these settings we first need to know what version of PHP you are running and where it is referencing its settings from. PHP uses a file called php.ini to determine its operational settings and this can be located in a number of places.&lt;br /&gt;
&lt;br /&gt;
==PHP Version and php.ini location==&lt;br /&gt;
Create a phpinfo() page or locate the phpinfo section in your Moodle, as per the instructions here: [[phpinfo]]&lt;br /&gt;
&lt;br /&gt;
At the very top of the phpinfo page you will see the version of PHP that your server is running. See the relevant section below for information on how to proceed.&lt;br /&gt;
===PHP Version is 5===&lt;br /&gt;
Read location of active php.ini file from phpinfo page...&lt;br /&gt;
&lt;br /&gt;
===PHP Version is 4===&lt;br /&gt;
If you are using PHP 4 you will need a php.ini file in every folder (directory) with php script files.&lt;br /&gt;
&lt;br /&gt;
==What web server are you using?==&lt;br /&gt;
===Apache===&lt;br /&gt;
If you are using an Apache web server you can use .htaccess files to over ride the php.ini settings, or you can edit the active php.ini files on your server.&lt;br /&gt;
===IIS===&lt;br /&gt;
.... edit php.ini ?! ...&lt;br /&gt;
===Other===&lt;br /&gt;
??&lt;br /&gt;
&lt;br /&gt;
==How is php running on your web server?==&lt;br /&gt;
The manner in which PHP is running on your web server will determine if you need to restart your web server daemon or not to apply changes you make to the php.ini file.&lt;br /&gt;
&lt;br /&gt;
You can find out how your web server is running PHP by looking at this section of your phpinfo page: Apache2Handler &amp;gt; Loaded Modules Section.&lt;br /&gt;
&lt;br /&gt;
===mod_php5 is present===&lt;br /&gt;
You are running PHP as an Apache Module. You will need to restart Apache to make changes to your php.ini file apply.&lt;br /&gt;
&lt;br /&gt;
===??===&lt;br /&gt;
==What access do you have to the server?==&lt;br /&gt;
To make changes to the main php.ini file you will need administrative access to the server...&lt;br /&gt;
===Local / Full access to server===&lt;br /&gt;
...&lt;br /&gt;
===Shared / Hosted access to server===&lt;br /&gt;
...&lt;/div&gt;</summary>
		<author><name>Jonwitts</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=User_talk:Chris_collman&amp;diff=23382</id>
		<title>User talk:Chris collman</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=User_talk:Chris_collman&amp;diff=23382"/>
		<updated>2010-03-08T19:55:54Z</updated>

		<summary type="html">&lt;p&gt;Jonwitts: /* File Upload Size */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== New Hampshire Moodlers ==&lt;br /&gt;
Way back when, Don S down in Nashua way asked me if I would like to talk about a New Hampshire Moodle user&#039;s group.   Interesting.  That was a small group at that time. Since then the list is really growing.  &lt;br /&gt;
&lt;br /&gt;
For example some overall agencies using/promoting/customizing Moodles in NH: &lt;br /&gt;
*Exeter Professional Development Center is developing the Portfolio module and trains K-12 Moodlers and does Moodle hosting for their stakeholders, &lt;br /&gt;
*North Country Educational Services (NCES in Gorham) promotes and trains  North Country K-12 schools, and &lt;br /&gt;
*UNH Cooperative Extension is looking at it &lt;br /&gt;
*Other Professional Development Centers (groups of School Administration Units, funded in part by NH&#039;s Dept of Education) may also be promoting Moodle. &lt;br /&gt;
*The State Higher Ed (USNH) colleges and universities, along with the state community college system (NHCCS, formerly NHCTCS) all use Bb. Some individual teachers may use Moodle. &lt;br /&gt;
&lt;br /&gt;
So I would guess as of October 2007 there are at least 15 to 25 schools and agencies using Moodle in New Hampshire.&lt;br /&gt;
&lt;br /&gt;
==To do==&lt;br /&gt;
&lt;br /&gt;
===Is today the day or this week the week?===&lt;br /&gt;
One of my site administrators (SA) told me last week that today (17 Nov 2009), the new server will be on line for me and it will have 1.9.6 on it. I feel confident that the server is running and now if my SA&#039;s other work dust will clear just enough for Moodle to be added....stayed tuned :)  This will be a shock, my first Moodle ( 1.5.3+ (2005060230)) is close to being history, or at least archived off from public access!  From the back of the cave to the latest and greatest! YIKES!&lt;br /&gt;
&lt;br /&gt;
The obvious todos - comments appreciated&lt;br /&gt;
*Document what I do and double check it against MoodleDocs.  &lt;br /&gt;
*Then the practical problems of a fresh install without upgrading.&lt;br /&gt;
**How to bring over the 3000 authenticated users with their site activity info, so we can eliminate those who have not used the site in the last 2 years. Not to worry about the user course data just site visits.&lt;br /&gt;
**After loading the easy stuff:(courses that only hold resources) and loading the never seen new courses with lessons, I got to figure out how to deal with the old courses where backups seem to crash and not want to compile when the file size is 10 megs or something like that. &lt;br /&gt;
**Check to see if  Certificate and Questionnaire have been loaded and do we really need Activity Locking anymore?&lt;br /&gt;
**Themes, better find the custom theme I redid in at least 1.8 or did I do it more recently in a 1.9.x localhost?  Wowie, Zowie! I can dump the old and put in a new favicon.ico along with some other cool custom graphics.&lt;br /&gt;
**Test, test, test.   &lt;br /&gt;
&lt;br /&gt;
Looks like I will be busy for a bit.--[[User:chris collman|chris collman]] 12:15, 17 November 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
==Import PowerPoints==&lt;br /&gt;
First, I want to say that I am in awe of programmers and greatly appreciate the efforts in trying to make a handy tool to assist [adjective_variable here] teachers in bringing in their powerpoints into Moodle.  Just looking at the 500 lines of code in importppt.php gives me a headache and realize that what I thought should be simple, is not.   Doubting readers are invited to create web pages in MS PowerPoint 2000 &amp;amp; 2003 and in Open Office Impress 2.x, then look at each of the files, especially in View Source Code mode.    YIKES, the common ground is slim between them!  &lt;br /&gt;
&lt;br /&gt;
The initial goal of Import PowerPoint was to bring in text and images from a series of slides to a series of question pages in a lesson, so the teacher could edit or just go with the imported content.  It is now a working part of Moodle 1.6 and a bit Horray!&lt;br /&gt;
&lt;br /&gt;
I seem to be leading a one person campaign to come up with an ImportOOI option when a lesson is created.  I figured rather than sit around and moan about a feature I wanted, I should be jumping off the cliffs and seeing if the sharks really would bite.  Of course I am SERIOUSLY ignorant in the PHP waters and &amp;quot;not sinking&amp;quot; does qualify as &amp;quot;swiming&amp;quot;.  Sigh, I held my nose and JUMPED!  &lt;br /&gt;
&lt;br /&gt;
In my own unique way (and with the help of others) I came up with a very ugly system which brings in an OOI presentation.  Essentially it places a screenshot of each presentation slide in page (branch).  Importppt breaks out text and image objects. It does not deal with the masterslide. ImportOOI does not contain links or create page titles, because that is way beyond my skills.  I also tweaked the image file storage system and got rid of the previous and continue buttons at the bottom of every page (reverted back to default).  [http://moodle.org/mod/forum/discuss.php?d=49714 This forum has a zip file of my effort.]&lt;br /&gt;
&lt;br /&gt;
Anyway, my two bannana&#039;s worth.  --[[User:chris collman|chris collman]] 20:23, 8 May 2006 (WST)  updated --[[User:chris collman|chris collman]] 07:28, 27 June 2006 (WST)--[[User:chris collman |chris collman]] 21:20, 17 July 2006 (WST)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Words with two or more meanings==&lt;br /&gt;
&lt;br /&gt;
Hi Chris, firstly thanks for your contributions to Moodle Docs :-)&lt;br /&gt;
&lt;br /&gt;
When a word has two or more meanings, we may create a [[Wikipedia:disambiguation|disambiguation]] page e.g. Database. Please check [[:Category:Disambiguation]] for a list of all such pages. --[[User:Helen Foster|Helen Foster]] 17:53, 8 May 2006 (WST)&lt;br /&gt;
&lt;br /&gt;
:Hi Helen,  And thank you for your efforts in editing and watching over contributors. Disambigauation is a NEW WORD for me.   I will check it out. Given English language, not to mention regional idioms, figured (there is one right there) that great minds had already thought about this. The link appeared to be deleted  but I found http://en.wikipedia.org/wiki/Wikipedia:Disambiguation .  I think See Also is a simple solution.  Anyone who is interested in MoodleDocs might find it. &lt;br /&gt;
&lt;br /&gt;
:This leads to the question, where do we direct people who want to learn a bit more about MoodleDocs-Templates?  Not a big burning issue.  More concerned about importppt.php.  See top this page.  Thanks again. --[[User:chris collman|chris collman]] 19:28, 8 May 2006 (WST)&lt;br /&gt;
&lt;br /&gt;
::Thanks for the Wikipedia link. Please check the [[MoodleDocs:Style guide|MoodleDocs Style guide]] for information on Moodle Docs templates. --[[User:Helen Foster|Helen Foster]] 20:46, 8 May 2006 (WST)&lt;br /&gt;
&lt;br /&gt;
==Major changes to key pages==&lt;br /&gt;
&lt;br /&gt;
Hi Chris, please let&#039;s not make major changes to key pages without prior discussion, either in the corresponding talk page and/or in the Using Moodle [http://moodle.org/mod/forum/view.php?id=5838 Moodle Documentation forum]. Apologies for rolling back your changes to the [[Teacher documentation]] until we have reached agreement. --[[User:Helen Foster|Helen Foster]] 04:36, 5 September 2006 (CDT)&lt;br /&gt;
&lt;br /&gt;
:I apologize.  I read this after commenting on teacher documentation page.   Did that late at night and definately a major BAD, should know better.  I am running out of Moodle edit time and jumped way too quick.  Notice on that major page, I will used the page comment to draft.  Thank you very much for the completely unnecessary apologies for doing the right thing.  &lt;br /&gt;
&lt;br /&gt;
:Don&#039;t think I am going to be able to cross the pond to my Aunt&#039;s memorial service in October in Sussex.  However, my daughter going to Italy in the Spring and I may leave NH to visit her and my English cousins.  So we might meet face to face and I can buy you a draft or sherry!--[[User:chris collman|chris collman]] 07:33, 5 September 2006 (CDT)&lt;br /&gt;
&lt;br /&gt;
::Your comments always make me smile - thanks! It would be nice to meet up one day. Good plan to use page comments to draft :-) --[[User:Helen Foster|Helen Foster]] 06:09, 6 September 2006 (CDT)&lt;br /&gt;
:::As you know, I like puns and humor.  Sometimes I am too quick and have been known to go over the top.  Thanks for the words, I will not take it as encouragement but as appreciation of the status quo. --[[User:chris collman|chris collman]] 07:28, 6 September 2006 (CDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Import Data to Grade Book ==&lt;br /&gt;
&lt;br /&gt;
I am new to Moodle and I do not know where to ask this. Please excuse if I am at the wrong place (and if possible tell me where I can ask this or find its answer) . I know that I can post off-line assignment and grade it; Can I use this to import the marks that I have already awarded. I have these marks in an excel file. I know I can grade the off-line assignment one student at a time. Can I copy + paste all the data in one step? Will the grade book plus be of some help? [[User:Sanjay P. K.|Sanjay P. K.]] 02:19, 11 September 2007 (CDT)&lt;br /&gt;
*Hi.  First excellent question and asking where to go to find the answer can never be asked in a wrong place.  I learned something in trying to help you.&lt;br /&gt;
&lt;br /&gt;
I am smiling because last night I was re-editing the MoodleDoc page [[Answers]] that I created in May 2006.  It is one of the few pages that I allowed my sense of humor to show in my writing in MoodleDocs.   One of the more serious sections [[Answers#Links_to_places_to_find_answers| lists starting points]] in Moodle to find answers. We do not use assignments or gradebook, so I am as new as you when it comes to those modules.  I would encourage you to figure out where in Moodle Documentation might be a good place to place the answer to your question.&lt;br /&gt;
*If I wanted to learn more about how to do it I would go to:&lt;br /&gt;
**Moodle Documentation on [[Assignment module]] related pages&lt;br /&gt;
**Moodle Documentation on [[Gradebook]] related pages&lt;br /&gt;
**Moodle Forums :  I did a search of the forums, then clicked on the advanced search, put &amp;quot;import grades&amp;quot; in the exact phrase field and selected just the Assignment Forum.  [http://moodle.org/mod/forum/search.php?id=5&amp;amp;words=&amp;amp;phrase=import+grades&amp;amp;notwords=&amp;amp;fullwords=&amp;amp;hfromday=1&amp;amp;hfrommonth=1&amp;amp;hfromyear=1&amp;amp;hfromhour=1&amp;amp;hfromminute=1&amp;amp;htoday=1&amp;amp;htomonth=1&amp;amp;htoyear=1&amp;amp;htohour=1&amp;amp;htominute=1&amp;amp;forumid=117&amp;amp;subject=&amp;amp;user= Here are my results].  There seems to be a thread on &amp;quot;Import grades from Excel&amp;quot; in the [http://moodle.org/mod/forum/view.php?f=117 assignment forum] that took place in 2006 November.  I would read and then reply in that thread, by restating the question, your [[Moodle version]] and perhaps what you tried.&lt;br /&gt;
**Try your own advanced search, perhaps using import grades and search gradebook forum.&lt;br /&gt;
**Try not to cross post the same question on two forums, unless a person in forum A suggests you ask the question in forum B. In which case I would say &amp;quot;forum A sent me here&amp;quot;.&lt;br /&gt;
*From the discussion I briefly read, it looks like you should be able to at least create a CVS file and import that into gradebook.  I don&#039;t see a page [[Import assignment grades]] in MoodleDocs, if you wanted to start one with your new found knowledge.  MoodleDocs is easier to read than a forum.&lt;br /&gt;
That should get you going on several paths to find the answer.  Hope that helps. --[[User:chris collman|chris collman]] 05:38, 11 September 2007 (CDT)&lt;br /&gt;
::Thank you very for the reply.  I visited the places you suggested and found an enhancement to import data from excel to moodle 1.6 ( my version).  I have asked my admin to try it.  [[User:Sanjay P. K.|Sanjay P. K.]] 22:17, 11 September 2007 (CDT)&lt;br /&gt;
&lt;br /&gt;
==Non-integer grades==&lt;br /&gt;
I was searching for a way to enter non-integer grades.  I found this; &amp;quot;It is currently not possible to use non-integer grades.  Others had requested the same feature, however the answer was this:Although it would be technically possible to change to accept non-integers, the whole Moodle framework expects integers to be there.  We can&#039;t tell where down the line this would cause problems, but it is very much setting it up for something bad.&amp;quot;  If you know of any later developemnts on this, please let me know; otherwise you may ignore this.  [[User:Sanjay P. K.|Sanjay P. K.]] 22:50, 11 September 2007 (CDT)&lt;br /&gt;
&lt;br /&gt;
:::Not sure about version features, I did a quick look at Scales and Grades in demo.moodle.org . Sounds like you have a conversion problem Asci to integer.   If you have an excel spreadsheet you should be able to create a column with a function to convert a letter to a integer/number grade  I probably would use a =vlookup or =hlookup and a table. But a nested =If function would also work (something like &amp;quot;if A, then 100, else if B, then 89, else if C, then 79&amp;quot; and so forth) .  Might have to change that column to a value by a special paste and rename it for import purposes.  Problem is determining what grade gets which integer in excel and then making sure that integer will average correctly with other scores that are stored as integers but displayed as letters in Moodle.  Interesting problem. Hope this helps --[[User:chris collman|chris collman]] 06:35, 12 September 2007 (CDT)&lt;br /&gt;
:Perhaps I was a bit sloppy; what I want to know is how to enter non-integer numbers as grades; e.g: How to award  5.5 ( out of 10) marks to an off-line assignment? Suppose the overall grade a student will get after completing the course is based on the total marks this student will score in 3 assignments (say each of maximum 10 marks) and suppose I do not want to round off each assignment mark to the nearest integer. [[User:Sanjay P. K.|Sanjay P. K.]] 23:14, 12 September 2007 (CDT)&lt;br /&gt;
&lt;br /&gt;
== NWIKI ==&lt;br /&gt;
&lt;br /&gt;
I recently posted [http://moodle.org/mod/forum/discuss.php?d=79911#p354566 this].  Then I saw a discussion about [http://morfeo.upc.es/crom/course/view.php?id=4&amp;amp;edit=1&amp;amp;sesskey=sidpcGIZbv#nwiki NWIKI].  Have you used this?  Does it mean that if NWIKI is installed all the media wiki  tags/tools will work in Moodle?  I just wanted to make sure NWIKI does what I want and is stable before asking my admin to install it ( for Moodle 1.6).  [[User:Sanjay P. K.|Sanjay P. K.]] 23:22, 12 September 2007 (CDT)&lt;br /&gt;
::Sorry P.K., I think I missed your comment. I don&#039;t use NWIKI so have no opinion (unusual for me but true). --[[User:chris collman|chris collman]] 08:30, 20 October 2007 (CDT)&lt;br /&gt;
&lt;br /&gt;
==Categories==&lt;br /&gt;
&lt;br /&gt;
Hi Chris, if you have chance, please could you take a look at the information about categories in [[MoodleDocs:Style guide]], and let me know if it explains why [[Blocks (teacher)]] should NOT be categorized as &amp;quot;Teacher&amp;quot; ;-) If you become interested in categorizing pages, your help with [http://tracker.moodle.org/browse/MDLSITE-201 MDLSITE-201 Improve Moodle Docs page categorization] would be much appreciated! --[[User:Helen Foster|Helen Foster]] 10:13, 27 September 2007 (CDT)&lt;br /&gt;
&lt;br /&gt;
:Moodle Taxonomy is really difficult.   If I understand this, basically most pages should only have one category index link. Using Block (teacher) as an example, The best category link would be to Category:Block. At Category:Block, there could be links to category:teacher and category:administrator.  &lt;br /&gt;
&lt;br /&gt;
:Thus do research into existing categories before adding one to a page the first time.   Select the one that is the most focused and look to see if it is linked to other categories.  Check other pages that are listed in a template table, to see which category indexes they are link to.  Or before adding a second or third category to a page, look on the existing category link to see if those are shown as category links to the first category.  &lt;br /&gt;
&lt;br /&gt;
:Whew.  How to explain what a new user will find by clicking on the category link will take some serious thunking time.  I better toddle off, between categories, rescuing a Windows 2000 and a Linux 1.6 pair of web servers from the dust bin and having my video network crash during a class this evening, it has be another exiting day in paradise!  Best --[[User:chris collman|chris collman]] 22:24, 27 September 2007 (CDT)&lt;br /&gt;
&lt;br /&gt;
===Double categories subject again===&lt;br /&gt;
Hi Helen, There are many pages that link to both block and teacher categories. This should be an exception than the rule, right?   When I see multiple categories on a block page, I should delete the teacher  category link, because it is already on the Block category page, right? &lt;br /&gt;
:I would make an exception for something like site or course administration block, or the &amp;quot;dis&amp;quot; page &amp;quot;Blocks&amp;quot; which could have multiple categories. &lt;br /&gt;
:and I will leave the Administrator categories for someone else to figure out :)--[[User:chris collman|chris collman]] 06:00, 26 October 2007 (CDT)&lt;br /&gt;
&lt;br /&gt;
::Hi Chris, yes please delete the teacher category on block pages. Seems like you have a good understanding of categories :-) --[[User:Helen Foster|Helen Foster]] 07:35, 26 October 2007 (CDT)&lt;br /&gt;
:::At last, good teaching job Helen :) --[[User:chris collman|chris collman]] 09:23, 26 October 2007 (CDT)&lt;br /&gt;
== Tyler add it below==&lt;br /&gt;
&lt;br /&gt;
== Thanks for your contributions ==&lt;br /&gt;
&lt;br /&gt;
Chris, thanks, as always, for your documentation contributions :-) Your talk page comments are very helpful. However, please give me chance to reply before making big changes ;-) --[[User:Helen Foster|Helen Foster]] 13:07, 20 February 2008 (CST)&lt;br /&gt;
&lt;br /&gt;
::Message received.  The only big changes I made were with Tracker (mostly formating) and I didn&#039;t think it would do any harm to work on [[Roles Permissions]].   But I am happy to move the Permission stuff over to the discussion page.  The entire Roles section will take a lot of thought before serious edits begin.   I have even resorted for the first time to print the pages to get my head around this subject.  Opening 5 broswer windows gets confusing :)   &lt;br /&gt;
&lt;br /&gt;
:Funny you should mention hold your horses a bit.  Monday, I had just posted a new page on Wikipedia about a distant relative (one of the Edmund Quincy&#039;s), went downstairs to get a snack and when I came back 10 minutes later to start adding details it was GONE! This was the first of 3 or 4 pages I plan on doing for these men. Some quick trigger specialist told me &amp;quot;Had not enough information to make it special, please consider this before you add any page to Wikipedia&amp;quot;. Well duh cowboy, some of us are a little bit slower than others.  His example about making Edumund unique had me laughing. Figure he some computer gun stock image counter, with a notch for every page he has deleted :)-  Best as always --[[User:chris collman|chris collman]] 13:40, 20 February 2008 (CST)&lt;br /&gt;
&lt;br /&gt;
==What about mod/balding and other capabilities jargon==&lt;br /&gt;
&lt;br /&gt;
Hi Helen, I am confuzeled about the mod/xxx link entries.   I suspect this is similar to the editingteacher subheading on the Teacher role.  I always thought mod/xxx entries were appropriate on a Development: page. Perhaps is this a case of if you don&#039;t understand it, you don&#039;t belong here or there?  I was wondering if we had a standard way of indicating function in simple english next to the mod/name ?  Thanks --[[User:chris collman|chris collman]] 14:04, 20 February 2008 (CST)&lt;br /&gt;
&lt;br /&gt;
:Hi Chris, good question about the mod/xxx pages. Each edit roles page in Moodle (via &#039;&#039;Administration &amp;gt; Users &amp;gt; Permissions &amp;gt; Define roles&#039;&#039;)  contains a list of links to all [[:Category:Capabilities]] pages. The documentation pages have not been renamed in this case, as it&#039;s easier for non-English speakers to identify the capabilities from mod/xxx. If you have any further questions, please remember that you can always post in the [http://moodle.org/mod/forum/view.php?id=5838 Moodle documentation forum]. Most likely you&#039;re not the only one with a particular question ;-) --[[User:Helen Foster|Helen Foster]] 05:55, 21 February 2008 (CST)&lt;br /&gt;
::Thanks again for all your comments, they should keep me pointed down the right paths concerning  roles and even templates for a while. I did take a break and watched a full eclipse last night. It was one of those cold clear nights in the mountains. Saw the event from our bed looking out the window.  Today it is doing an item analysis on an old quiz for a teacher, so we can upload a new version tomorrow for the test on Saturday.  --[[User:chris collman|chris collman]] 11:16, 21 February 2008 (CST)&lt;br /&gt;
&lt;br /&gt;
==Pages/images for deletion==&lt;br /&gt;
&lt;br /&gt;
Hi Chris, thanks for pointing out images needing deleting :-) For future reference, rather than creating a new talk page, you can simply add the deletion template to the image page, as described here: [[MoodleDocs:Style guide]] ;-) --[[User:Helen Foster|Helen Foster]] 10:06, 25 May 2008 (CDT)&lt;br /&gt;
:I forgot!  On the other hand, I had a lovely time with my wife, working on a couple of raised vegetable garden beds of her design, as her assistant.  I was waiting for her and decided to look at special pages and saw some old pictures of mine. Then it was &amp;quot;lets go Chris&amp;quot; and out we went.   While I might have done things differently, we had fun discussing which way the two 1 by 3 meter beds should lie.    It was a glorious day. &lt;br /&gt;
&lt;br /&gt;
Hope your corner of the world was as wonderful as mine.  Best --[[User:chris collman|chris collman]] 22:16, 25 May 2008 (CDT)&lt;br /&gt;
&lt;br /&gt;
==Disruptive technology==&lt;br /&gt;
hi chris, i&#039;ve added a &amp;quot;disruptive technology&amp;quot; link on my user page (a relatively new/intuitive interest) - basically it refers to a new, usually simple, low cost technology which unexpectedly takes over from a more complex, existing technology. the link gos to a wikiversity page where i&#039;ve added a few more notes including some thoughts about educational wikis as disruptive technology. personally, i still feel like i&#039;m in a 19th century classroom when using learning management systems which invariably seem to assume that the teacher shall have more tools and power than shall students, whereas the simplicity (and disruptiveness) of an educational wiki for me evaporates such unecessary and arbitrary power separations. then we can get on with trying out learning. interested in your thoughts. haven&#039;t poked much into your stuff and am a moodle newb, but am interested, so feel free to share your world and ideas. [[User:James Neill|James Neill]] 02:53, 1 September 2008 (CDT)&lt;br /&gt;
::Thanks for sharing. I hear you about the LMS, 19th Century and change.   Now I have a better idea of the &amp;quot;disruptive&amp;quot; term.  From my perspective, not all teachers are innovators.  Then there are effective innovators.  My long view of education goes back to my Peace Corp training at MSU where we were told about the process of change among a county full of Iowa corn growers.  Or a friendly State purchasing agent who told me &amp;quot;Chris, understand this process is intentionally designed NOT to be easy.&amp;quot;  Alrighty then, this is what I see in higher education in the US. It does not stop innovation, it just curtails it.&lt;br /&gt;
::Basic assumptions are always fun to observe. As you know it is not just teachers but some students who have been imprinted with &amp;quot;traditional&amp;quot; values.  Watching excited teacher/mentor/student relationships in the educational process is something I enjoy.  I always smile to myself when I suggest that the teacher in an interactive video classroom 60 miles away, grab the chalk and write on the board, instead of using the stylus on the touchscreen monitor which is ready to go.  The chalk keeps them excited and effective education flowing.  Best --[[User:chris collman|chris collman]] 07:31, 4 September 2008 (CDT)&lt;br /&gt;
&lt;br /&gt;
==User subpages==&lt;br /&gt;
Thanks for the tip about user subpages; as a result I&#039;ve tidied up my moodle.org profile a bit and also my docs.moodle.org user page to make it a bit more obvious that I do have some user subpages about moodle. Now that I&#039;ve found moodledocs, I&#039;m adding most of my notes here, so we might say perhaps some jabberwockysynchronicity. We just had a two day Moodle training, so that&#039;s got me going. Thanks 4 the collegiality :). [[User:James Neill|James Neill]] 11:14, 18 September 2008 (CDT)&lt;br /&gt;
::So you are wound up.  Great!  I am sort of jealous.  My formal training was about 30 minutes, looking over somebody&#039;s shoulder as they created jpgs from PPTs and added them one at a time to Lesson Branch pages. &amp;quot;Now you are a course creator, go for it.&amp;quot; All the rest has been either self taught by doing or playing, and utilizing moodle.org and docs.moodle.org of course .  Writing instructions still is a way of listening and learning. For fun, I am preparing a Bb course to supplement my face to face Genealogy workshop next month.  And I told them to give me a username and password and I would figure it out. Beginning to wonder if I don&#039;t like being trained :) --[[User:chris collman|chris collman]] 11:26, 18 September 2008 (CDT)&lt;br /&gt;
&lt;br /&gt;
==Moodle sync crazy idea==&lt;br /&gt;
Hi Rainer,&lt;br /&gt;
The only way my simple brain can handle it is the old fashion way: Backup one and restore to the other.  Anything else would be way over my head.   When I build courses for content providers, that is what I do. &lt;br /&gt;
&lt;br /&gt;
Having said that, you could speed the process up.  Use a the equal of a .bat file to clean out a folder on a local host.  Use Cron and set the localhost properities backup to 1 copy.   The bat file would also have a command(s) to gather specific course backups via a copy to the empty folder on the localhost.  Wonder if you can FTP the contents of the localhost folder to a folder in a fake course on a web Moodle. Someone clever should be able to get them to run with something like Cron or scheduler.  &lt;br /&gt;
&lt;br /&gt;
Then on the web Moodle find that folder and restore the backups manually.  I don&#039;t think I would trust anything automatic at this point for a live webhost. :)&lt;br /&gt;
&lt;br /&gt;
==Changes to Development:Usability/Improve_Moodle_User_Experience_Consistency==&lt;br /&gt;
Hi Chris,&lt;br /&gt;
&lt;br /&gt;
I appreciate you working on the docs, and thanks for adding a common GSOC 09 tag to [[Development:Usability/Improve_Moodle_User_Experience_Consistency]]. Is there a page which links all the pages tagged this way?&lt;br /&gt;
&lt;br /&gt;
However, I am not so sure about your newer changes. Are these changes made according to a Moodle docs convention, or based on your own user research? I assume you have changed the other GSOC pages accordingly, too, but just mentioning you are making it more user friendly does not mean much. Mostly your changes are okay (though you haven&#039;t really communicated what are the users/usage scenarios you are aiming to make it more useful for so it is hard to tell if it is more &amp;quot;user friendly&amp;quot; [usable?] or not). To have the navigation to other related documents seems important to me to keep at the top of the page, and the &amp;quot;up to usability&amp;quot; link was there to make the hierarchical relationship to the more general Usability page clear (and as such &amp;quot;additional documentation&amp;quot; is not really appropriate).&lt;br /&gt;
&lt;br /&gt;
--[[User:Olli Savolainen|Olli Savolainen]] 12:34, 20 May 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
Having not heard from you, reverted the &amp;quot;up to usability&amp;quot; link back to how it was. --[[User:Olli Savolainen|Olli Savolainen]] 09:59, 23 May 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
Hm, I am not sure why Development:Usability also has the GSoC template - I am not really working on that this summer - is some other GSoCcer? &lt;br /&gt;
&lt;br /&gt;
Would you like me to edit the template so that it would be a link to the GSoC&#039;09 page itself - this way it would be easier to browse around the different GSOC sites with the help of the template? &lt;br /&gt;
Thanks.--[[User:Olli Savolainen|Olli Savolainen]] 15:07, 23 May 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
::Hi Olli, been flat out with other stuff and have not checked &amp;quot;my watchlist&amp;quot; in a few days.  It was my understanding that someday some of the GSoC projects would become part of Moodle, thus my interest.  I respect your changes.   &lt;br /&gt;
&lt;br /&gt;
::I thought you were working on this as a [http://moodle.org/mod/forum/discuss.php?d=121585 project for &#039;09],and/or [[GSOC/2009#Improve_Moodle_user_experience_consistency]] my apologies. I usually stay away from the Development: stuff but am peeking in on the GSoC 09 forum this year to watch process.  &lt;br /&gt;
&lt;br /&gt;
::Usual MoodleDoc format is to put brief intro, then first heading, so TOC automatically inserts itself before the first heading and after the intro.  Usual MoodleDocs convention is to put &amp;quot;See also&amp;quot; at bottom of page with links to outside sources, or internal page links that may also be useful but not clearly linked in the body of the page. I personally like to see functionality come before setup instructions in mature MoodleDoc pages used by teachers, but in the development space, I think anything goes. I can see where those links serve as history or precedent which is useful for developers. And not something teachers really care about, so different needs for different users :)  &lt;br /&gt;
&lt;br /&gt;
:: The reason for the Template is to alert people that this is &#039;09 project. There is a [[:Category:GSOC]] a sub category of [[:Category:Project]] that seems to list student projects/.  I thought about creating a template with links but most users do not flit between the projects.   I was wondering if a sub category 09 might be better but decided that also too elaborate for the number of users who really were involved.   I was going to go back and tag all the GSoC &#039;09 projects with a category but ran out of time and put it on the potential roundtuit list.&lt;br /&gt;
&lt;br /&gt;
:: Appreciate your comments, sorry for the delay in getting back to you.  Thanks for all your contributions to Moodle, as well.  Best --[[User:chris collman|chris collman]] 18:49, 25 May 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
::: Hi Chris,&lt;br /&gt;
&lt;br /&gt;
::: I realize now that I was overtly harsh about your changes. Sorry about that. My project indeed is a GSoC project, and it makes sense to have the GSoC template on it. But Development:Usability is not directly related to this usability project, except by its subject area. &lt;br /&gt;
&lt;br /&gt;
::: I find it fascinating that you know so much about Moodle Docs conventions. The reason for this is that my project is, in essence, a project to create easy-as-possible content to the Docs: UI guidelines. So I would really like to learn from you.&lt;br /&gt;
&lt;br /&gt;
::: Oops, gotta go, will respond to the rest later. --[[User:Olli Savolainen|Olli Savolainen]] 08:42, 27 May 2009 (UTC)&lt;br /&gt;
::::I have been mentored by Helen :) [https://docs.moodle.org/en/Special:Contributions/Rcollman Trial and error], watching our community edit and discuss pages, and paying attention to repeating issues raised in a couple of forums also has influenced my knowledge of what seems to work.  We all live in ruts that we can not see out of without help, some of us know it and some of us don&#039;t :) Cultural Anthropology with 5 years of what might be called field experience taught me that before my brain became frozen at 25. Best --[[User:chris collman|chris collman]] 10:03, 29 May 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
::::: Great :). As I am creating content on docs, too, do you think it might be possible to document, just briefly, the conventions we already use, and the relationship to other recommendations for using wikis, such as Wikipedia&#039;s? Or would you like to participate in the discussion, once we get that far, on [[Development:Usability/Improve_Moodle_User_Experience_Consistency/Detailed_project_plan#Examine_pattern_libraries_and_guidelines_for_content_and_information_architecture_.28week_24.29|the design of the future guidelines]] - which, although they are mostly for developers at this point - must critically be &#039;&#039;very&#039;&#039; easy to read, since usability is typically strange land for many developers. --[[User:Olli Savolainen|Olli Savolainen]] 11:22, 29 May 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
::::: If you have time, please have a look at Development:Progressive_Disclosure and comment. Thanks :) --[[User:Olli Savolainen|Olli Savolainen]] 11:41, 2 June 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
==Beginning Administration FAQ==&lt;br /&gt;
I liked your comments about the question: &lt;br /&gt;
Why am I just not getting how Permissions and Roles work?&lt;br /&gt;
&lt;br /&gt;
This section really jumps around in my logic and needs more links. The intro is good because it addresses a problem I had/have :) But after that I would delete the rest. At a certain point the words revert to a description of a process, where authentication is mixed in with front page roles and terms of teacher, course creator and such and what happens when a user comes back from a course..... I think more links will help and maybe ask another question (or more) to focus upon why the mental block about permissions, contexts, capabilities, and roles. --chris collman 12:37, 20 July 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
Yes, you are probably right Chris, but my initial concern was to get the question up. Just go for it, I am not in the position I can spend a lot of time doing this until the end of September now. Cheers..&lt;br /&gt;
&lt;br /&gt;
Your comment : (→How do I restore an older graphics course that is way over he file upload limit?:  why someone would do this) It was worded the way it was for two reasons, first I rushed it and did not really think too hard about it, sorry, but then later when I realized it, and had time to fix it, you had already done so, thank you, saves me from looking like a complete blockhead..:) [[User:Colin Fraser|Colin Fraser]] 09:04, 12 December 2009 (UTC)Colin Fraser&lt;br /&gt;
::Hey Colin, that is why MoodleDocs is collaborative, we help the process along as we are able and so inclined.   I saw that because I am recreating a 1.5.3 site on a new 1.9.7 server.   I decided I better review the Beginning Admin FAQs for any hints about backups and users.  I had just finishing reinventing the wheel using WinSCP, when I saw your FAQ which was one of the issues I had to deal with.   I will confess that I tend not to look at those pages to edit, but obviously find them useful as I am sure others do as well.  Thanks for your continued contributions to Moodle, especially on behalf of the new users! --[[User:chris collman|chris collman]] 11:59, 12 December 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Thank you for catching my typo ==&lt;br /&gt;
&lt;br /&gt;
https://docs.moodle.org/en/index.php?title=Unit_tests&amp;amp;diff=65278&amp;amp;oldid=65277 did rather change the meaning ;-)--[[User:Tim Hunt|Tim Hunt]] 14:51, 16 November 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
Keep doing the heavy lifting, sometimes I will find a grain of sand to put in the right place.  --[[User:chris collman|chris collman]] 11:39, 17 November 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
== File Upload Size ==&lt;br /&gt;
&lt;br /&gt;
Hi Chris,&lt;br /&gt;
&lt;br /&gt;
I noticed that you made some changes to the [[File_upload_size]] page.&lt;br /&gt;
&lt;br /&gt;
I have been thrashing a few ideas about this page round with Marc and Colin for a while ([[Talk:File_upload_size]]) and I think I am getting close to a format that will help users first discover the info they need before they ask the question &amp;quot;How do I increase the file upload size in Moodle?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Anyway, I have finally found some time to have a look at it again. I have started a re-working of it from my user area on the docs. I am trying to take into account the idea of the matrix of questions Marc discussed. Have a look at it here [[User:Jon_Witts/file-upload-v2]] and leave any comments in the talk page and make any additions you see fit to make too.&lt;br /&gt;
&lt;br /&gt;
Cheers&lt;br /&gt;
&lt;br /&gt;
[[User:Jon Witts|Jon Witts]] 19:55, 8 March 2010 (UTC)&lt;/div&gt;</summary>
		<author><name>Jonwitts</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=User_talk:Chris_collman&amp;diff=23381</id>
		<title>User talk:Chris collman</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=User_talk:Chris_collman&amp;diff=23381"/>
		<updated>2010-03-08T19:55:10Z</updated>

		<summary type="html">&lt;p&gt;Jonwitts: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== New Hampshire Moodlers ==&lt;br /&gt;
Way back when, Don S down in Nashua way asked me if I would like to talk about a New Hampshire Moodle user&#039;s group.   Interesting.  That was a small group at that time. Since then the list is really growing.  &lt;br /&gt;
&lt;br /&gt;
For example some overall agencies using/promoting/customizing Moodles in NH: &lt;br /&gt;
*Exeter Professional Development Center is developing the Portfolio module and trains K-12 Moodlers and does Moodle hosting for their stakeholders, &lt;br /&gt;
*North Country Educational Services (NCES in Gorham) promotes and trains  North Country K-12 schools, and &lt;br /&gt;
*UNH Cooperative Extension is looking at it &lt;br /&gt;
*Other Professional Development Centers (groups of School Administration Units, funded in part by NH&#039;s Dept of Education) may also be promoting Moodle. &lt;br /&gt;
*The State Higher Ed (USNH) colleges and universities, along with the state community college system (NHCCS, formerly NHCTCS) all use Bb. Some individual teachers may use Moodle. &lt;br /&gt;
&lt;br /&gt;
So I would guess as of October 2007 there are at least 15 to 25 schools and agencies using Moodle in New Hampshire.&lt;br /&gt;
&lt;br /&gt;
==To do==&lt;br /&gt;
&lt;br /&gt;
===Is today the day or this week the week?===&lt;br /&gt;
One of my site administrators (SA) told me last week that today (17 Nov 2009), the new server will be on line for me and it will have 1.9.6 on it. I feel confident that the server is running and now if my SA&#039;s other work dust will clear just enough for Moodle to be added....stayed tuned :)  This will be a shock, my first Moodle ( 1.5.3+ (2005060230)) is close to being history, or at least archived off from public access!  From the back of the cave to the latest and greatest! YIKES!&lt;br /&gt;
&lt;br /&gt;
The obvious todos - comments appreciated&lt;br /&gt;
*Document what I do and double check it against MoodleDocs.  &lt;br /&gt;
*Then the practical problems of a fresh install without upgrading.&lt;br /&gt;
**How to bring over the 3000 authenticated users with their site activity info, so we can eliminate those who have not used the site in the last 2 years. Not to worry about the user course data just site visits.&lt;br /&gt;
**After loading the easy stuff:(courses that only hold resources) and loading the never seen new courses with lessons, I got to figure out how to deal with the old courses where backups seem to crash and not want to compile when the file size is 10 megs or something like that. &lt;br /&gt;
**Check to see if  Certificate and Questionnaire have been loaded and do we really need Activity Locking anymore?&lt;br /&gt;
**Themes, better find the custom theme I redid in at least 1.8 or did I do it more recently in a 1.9.x localhost?  Wowie, Zowie! I can dump the old and put in a new favicon.ico along with some other cool custom graphics.&lt;br /&gt;
**Test, test, test.   &lt;br /&gt;
&lt;br /&gt;
Looks like I will be busy for a bit.--[[User:chris collman|chris collman]] 12:15, 17 November 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
==Import PowerPoints==&lt;br /&gt;
First, I want to say that I am in awe of programmers and greatly appreciate the efforts in trying to make a handy tool to assist [adjective_variable here] teachers in bringing in their powerpoints into Moodle.  Just looking at the 500 lines of code in importppt.php gives me a headache and realize that what I thought should be simple, is not.   Doubting readers are invited to create web pages in MS PowerPoint 2000 &amp;amp; 2003 and in Open Office Impress 2.x, then look at each of the files, especially in View Source Code mode.    YIKES, the common ground is slim between them!  &lt;br /&gt;
&lt;br /&gt;
The initial goal of Import PowerPoint was to bring in text and images from a series of slides to a series of question pages in a lesson, so the teacher could edit or just go with the imported content.  It is now a working part of Moodle 1.6 and a bit Horray!&lt;br /&gt;
&lt;br /&gt;
I seem to be leading a one person campaign to come up with an ImportOOI option when a lesson is created.  I figured rather than sit around and moan about a feature I wanted, I should be jumping off the cliffs and seeing if the sharks really would bite.  Of course I am SERIOUSLY ignorant in the PHP waters and &amp;quot;not sinking&amp;quot; does qualify as &amp;quot;swiming&amp;quot;.  Sigh, I held my nose and JUMPED!  &lt;br /&gt;
&lt;br /&gt;
In my own unique way (and with the help of others) I came up with a very ugly system which brings in an OOI presentation.  Essentially it places a screenshot of each presentation slide in page (branch).  Importppt breaks out text and image objects. It does not deal with the masterslide. ImportOOI does not contain links or create page titles, because that is way beyond my skills.  I also tweaked the image file storage system and got rid of the previous and continue buttons at the bottom of every page (reverted back to default).  [http://moodle.org/mod/forum/discuss.php?d=49714 This forum has a zip file of my effort.]&lt;br /&gt;
&lt;br /&gt;
Anyway, my two bannana&#039;s worth.  --[[User:chris collman|chris collman]] 20:23, 8 May 2006 (WST)  updated --[[User:chris collman|chris collman]] 07:28, 27 June 2006 (WST)--[[User:chris collman |chris collman]] 21:20, 17 July 2006 (WST)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Words with two or more meanings==&lt;br /&gt;
&lt;br /&gt;
Hi Chris, firstly thanks for your contributions to Moodle Docs :-)&lt;br /&gt;
&lt;br /&gt;
When a word has two or more meanings, we may create a [[Wikipedia:disambiguation|disambiguation]] page e.g. Database. Please check [[:Category:Disambiguation]] for a list of all such pages. --[[User:Helen Foster|Helen Foster]] 17:53, 8 May 2006 (WST)&lt;br /&gt;
&lt;br /&gt;
:Hi Helen,  And thank you for your efforts in editing and watching over contributors. Disambigauation is a NEW WORD for me.   I will check it out. Given English language, not to mention regional idioms, figured (there is one right there) that great minds had already thought about this. The link appeared to be deleted  but I found http://en.wikipedia.org/wiki/Wikipedia:Disambiguation .  I think See Also is a simple solution.  Anyone who is interested in MoodleDocs might find it. &lt;br /&gt;
&lt;br /&gt;
:This leads to the question, where do we direct people who want to learn a bit more about MoodleDocs-Templates?  Not a big burning issue.  More concerned about importppt.php.  See top this page.  Thanks again. --[[User:chris collman|chris collman]] 19:28, 8 May 2006 (WST)&lt;br /&gt;
&lt;br /&gt;
::Thanks for the Wikipedia link. Please check the [[MoodleDocs:Style guide|MoodleDocs Style guide]] for information on Moodle Docs templates. --[[User:Helen Foster|Helen Foster]] 20:46, 8 May 2006 (WST)&lt;br /&gt;
&lt;br /&gt;
==Major changes to key pages==&lt;br /&gt;
&lt;br /&gt;
Hi Chris, please let&#039;s not make major changes to key pages without prior discussion, either in the corresponding talk page and/or in the Using Moodle [http://moodle.org/mod/forum/view.php?id=5838 Moodle Documentation forum]. Apologies for rolling back your changes to the [[Teacher documentation]] until we have reached agreement. --[[User:Helen Foster|Helen Foster]] 04:36, 5 September 2006 (CDT)&lt;br /&gt;
&lt;br /&gt;
:I apologize.  I read this after commenting on teacher documentation page.   Did that late at night and definately a major BAD, should know better.  I am running out of Moodle edit time and jumped way too quick.  Notice on that major page, I will used the page comment to draft.  Thank you very much for the completely unnecessary apologies for doing the right thing.  &lt;br /&gt;
&lt;br /&gt;
:Don&#039;t think I am going to be able to cross the pond to my Aunt&#039;s memorial service in October in Sussex.  However, my daughter going to Italy in the Spring and I may leave NH to visit her and my English cousins.  So we might meet face to face and I can buy you a draft or sherry!--[[User:chris collman|chris collman]] 07:33, 5 September 2006 (CDT)&lt;br /&gt;
&lt;br /&gt;
::Your comments always make me smile - thanks! It would be nice to meet up one day. Good plan to use page comments to draft :-) --[[User:Helen Foster|Helen Foster]] 06:09, 6 September 2006 (CDT)&lt;br /&gt;
:::As you know, I like puns and humor.  Sometimes I am too quick and have been known to go over the top.  Thanks for the words, I will not take it as encouragement but as appreciation of the status quo. --[[User:chris collman|chris collman]] 07:28, 6 September 2006 (CDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Import Data to Grade Book ==&lt;br /&gt;
&lt;br /&gt;
I am new to Moodle and I do not know where to ask this. Please excuse if I am at the wrong place (and if possible tell me where I can ask this or find its answer) . I know that I can post off-line assignment and grade it; Can I use this to import the marks that I have already awarded. I have these marks in an excel file. I know I can grade the off-line assignment one student at a time. Can I copy + paste all the data in one step? Will the grade book plus be of some help? [[User:Sanjay P. K.|Sanjay P. K.]] 02:19, 11 September 2007 (CDT)&lt;br /&gt;
*Hi.  First excellent question and asking where to go to find the answer can never be asked in a wrong place.  I learned something in trying to help you.&lt;br /&gt;
&lt;br /&gt;
I am smiling because last night I was re-editing the MoodleDoc page [[Answers]] that I created in May 2006.  It is one of the few pages that I allowed my sense of humor to show in my writing in MoodleDocs.   One of the more serious sections [[Answers#Links_to_places_to_find_answers| lists starting points]] in Moodle to find answers. We do not use assignments or gradebook, so I am as new as you when it comes to those modules.  I would encourage you to figure out where in Moodle Documentation might be a good place to place the answer to your question.&lt;br /&gt;
*If I wanted to learn more about how to do it I would go to:&lt;br /&gt;
**Moodle Documentation on [[Assignment module]] related pages&lt;br /&gt;
**Moodle Documentation on [[Gradebook]] related pages&lt;br /&gt;
**Moodle Forums :  I did a search of the forums, then clicked on the advanced search, put &amp;quot;import grades&amp;quot; in the exact phrase field and selected just the Assignment Forum.  [http://moodle.org/mod/forum/search.php?id=5&amp;amp;words=&amp;amp;phrase=import+grades&amp;amp;notwords=&amp;amp;fullwords=&amp;amp;hfromday=1&amp;amp;hfrommonth=1&amp;amp;hfromyear=1&amp;amp;hfromhour=1&amp;amp;hfromminute=1&amp;amp;htoday=1&amp;amp;htomonth=1&amp;amp;htoyear=1&amp;amp;htohour=1&amp;amp;htominute=1&amp;amp;forumid=117&amp;amp;subject=&amp;amp;user= Here are my results].  There seems to be a thread on &amp;quot;Import grades from Excel&amp;quot; in the [http://moodle.org/mod/forum/view.php?f=117 assignment forum] that took place in 2006 November.  I would read and then reply in that thread, by restating the question, your [[Moodle version]] and perhaps what you tried.&lt;br /&gt;
**Try your own advanced search, perhaps using import grades and search gradebook forum.&lt;br /&gt;
**Try not to cross post the same question on two forums, unless a person in forum A suggests you ask the question in forum B. In which case I would say &amp;quot;forum A sent me here&amp;quot;.&lt;br /&gt;
*From the discussion I briefly read, it looks like you should be able to at least create a CVS file and import that into gradebook.  I don&#039;t see a page [[Import assignment grades]] in MoodleDocs, if you wanted to start one with your new found knowledge.  MoodleDocs is easier to read than a forum.&lt;br /&gt;
That should get you going on several paths to find the answer.  Hope that helps. --[[User:chris collman|chris collman]] 05:38, 11 September 2007 (CDT)&lt;br /&gt;
::Thank you very for the reply.  I visited the places you suggested and found an enhancement to import data from excel to moodle 1.6 ( my version).  I have asked my admin to try it.  [[User:Sanjay P. K.|Sanjay P. K.]] 22:17, 11 September 2007 (CDT)&lt;br /&gt;
&lt;br /&gt;
==Non-integer grades==&lt;br /&gt;
I was searching for a way to enter non-integer grades.  I found this; &amp;quot;It is currently not possible to use non-integer grades.  Others had requested the same feature, however the answer was this:Although it would be technically possible to change to accept non-integers, the whole Moodle framework expects integers to be there.  We can&#039;t tell where down the line this would cause problems, but it is very much setting it up for something bad.&amp;quot;  If you know of any later developemnts on this, please let me know; otherwise you may ignore this.  [[User:Sanjay P. K.|Sanjay P. K.]] 22:50, 11 September 2007 (CDT)&lt;br /&gt;
&lt;br /&gt;
:::Not sure about version features, I did a quick look at Scales and Grades in demo.moodle.org . Sounds like you have a conversion problem Asci to integer.   If you have an excel spreadsheet you should be able to create a column with a function to convert a letter to a integer/number grade  I probably would use a =vlookup or =hlookup and a table. But a nested =If function would also work (something like &amp;quot;if A, then 100, else if B, then 89, else if C, then 79&amp;quot; and so forth) .  Might have to change that column to a value by a special paste and rename it for import purposes.  Problem is determining what grade gets which integer in excel and then making sure that integer will average correctly with other scores that are stored as integers but displayed as letters in Moodle.  Interesting problem. Hope this helps --[[User:chris collman|chris collman]] 06:35, 12 September 2007 (CDT)&lt;br /&gt;
:Perhaps I was a bit sloppy; what I want to know is how to enter non-integer numbers as grades; e.g: How to award  5.5 ( out of 10) marks to an off-line assignment? Suppose the overall grade a student will get after completing the course is based on the total marks this student will score in 3 assignments (say each of maximum 10 marks) and suppose I do not want to round off each assignment mark to the nearest integer. [[User:Sanjay P. K.|Sanjay P. K.]] 23:14, 12 September 2007 (CDT)&lt;br /&gt;
&lt;br /&gt;
== NWIKI ==&lt;br /&gt;
&lt;br /&gt;
I recently posted [http://moodle.org/mod/forum/discuss.php?d=79911#p354566 this].  Then I saw a discussion about [http://morfeo.upc.es/crom/course/view.php?id=4&amp;amp;edit=1&amp;amp;sesskey=sidpcGIZbv#nwiki NWIKI].  Have you used this?  Does it mean that if NWIKI is installed all the media wiki  tags/tools will work in Moodle?  I just wanted to make sure NWIKI does what I want and is stable before asking my admin to install it ( for Moodle 1.6).  [[User:Sanjay P. K.|Sanjay P. K.]] 23:22, 12 September 2007 (CDT)&lt;br /&gt;
::Sorry P.K., I think I missed your comment. I don&#039;t use NWIKI so have no opinion (unusual for me but true). --[[User:chris collman|chris collman]] 08:30, 20 October 2007 (CDT)&lt;br /&gt;
&lt;br /&gt;
==Categories==&lt;br /&gt;
&lt;br /&gt;
Hi Chris, if you have chance, please could you take a look at the information about categories in [[MoodleDocs:Style guide]], and let me know if it explains why [[Blocks (teacher)]] should NOT be categorized as &amp;quot;Teacher&amp;quot; ;-) If you become interested in categorizing pages, your help with [http://tracker.moodle.org/browse/MDLSITE-201 MDLSITE-201 Improve Moodle Docs page categorization] would be much appreciated! --[[User:Helen Foster|Helen Foster]] 10:13, 27 September 2007 (CDT)&lt;br /&gt;
&lt;br /&gt;
:Moodle Taxonomy is really difficult.   If I understand this, basically most pages should only have one category index link. Using Block (teacher) as an example, The best category link would be to Category:Block. At Category:Block, there could be links to category:teacher and category:administrator.  &lt;br /&gt;
&lt;br /&gt;
:Thus do research into existing categories before adding one to a page the first time.   Select the one that is the most focused and look to see if it is linked to other categories.  Check other pages that are listed in a template table, to see which category indexes they are link to.  Or before adding a second or third category to a page, look on the existing category link to see if those are shown as category links to the first category.  &lt;br /&gt;
&lt;br /&gt;
:Whew.  How to explain what a new user will find by clicking on the category link will take some serious thunking time.  I better toddle off, between categories, rescuing a Windows 2000 and a Linux 1.6 pair of web servers from the dust bin and having my video network crash during a class this evening, it has be another exiting day in paradise!  Best --[[User:chris collman|chris collman]] 22:24, 27 September 2007 (CDT)&lt;br /&gt;
&lt;br /&gt;
===Double categories subject again===&lt;br /&gt;
Hi Helen, There are many pages that link to both block and teacher categories. This should be an exception than the rule, right?   When I see multiple categories on a block page, I should delete the teacher  category link, because it is already on the Block category page, right? &lt;br /&gt;
:I would make an exception for something like site or course administration block, or the &amp;quot;dis&amp;quot; page &amp;quot;Blocks&amp;quot; which could have multiple categories. &lt;br /&gt;
:and I will leave the Administrator categories for someone else to figure out :)--[[User:chris collman|chris collman]] 06:00, 26 October 2007 (CDT)&lt;br /&gt;
&lt;br /&gt;
::Hi Chris, yes please delete the teacher category on block pages. Seems like you have a good understanding of categories :-) --[[User:Helen Foster|Helen Foster]] 07:35, 26 October 2007 (CDT)&lt;br /&gt;
:::At last, good teaching job Helen :) --[[User:chris collman|chris collman]] 09:23, 26 October 2007 (CDT)&lt;br /&gt;
== Tyler add it below==&lt;br /&gt;
&lt;br /&gt;
== Thanks for your contributions ==&lt;br /&gt;
&lt;br /&gt;
Chris, thanks, as always, for your documentation contributions :-) Your talk page comments are very helpful. However, please give me chance to reply before making big changes ;-) --[[User:Helen Foster|Helen Foster]] 13:07, 20 February 2008 (CST)&lt;br /&gt;
&lt;br /&gt;
::Message received.  The only big changes I made were with Tracker (mostly formating) and I didn&#039;t think it would do any harm to work on [[Roles Permissions]].   But I am happy to move the Permission stuff over to the discussion page.  The entire Roles section will take a lot of thought before serious edits begin.   I have even resorted for the first time to print the pages to get my head around this subject.  Opening 5 broswer windows gets confusing :)   &lt;br /&gt;
&lt;br /&gt;
:Funny you should mention hold your horses a bit.  Monday, I had just posted a new page on Wikipedia about a distant relative (one of the Edmund Quincy&#039;s), went downstairs to get a snack and when I came back 10 minutes later to start adding details it was GONE! This was the first of 3 or 4 pages I plan on doing for these men. Some quick trigger specialist told me &amp;quot;Had not enough information to make it special, please consider this before you add any page to Wikipedia&amp;quot;. Well duh cowboy, some of us are a little bit slower than others.  His example about making Edumund unique had me laughing. Figure he some computer gun stock image counter, with a notch for every page he has deleted :)-  Best as always --[[User:chris collman|chris collman]] 13:40, 20 February 2008 (CST)&lt;br /&gt;
&lt;br /&gt;
==What about mod/balding and other capabilities jargon==&lt;br /&gt;
&lt;br /&gt;
Hi Helen, I am confuzeled about the mod/xxx link entries.   I suspect this is similar to the editingteacher subheading on the Teacher role.  I always thought mod/xxx entries were appropriate on a Development: page. Perhaps is this a case of if you don&#039;t understand it, you don&#039;t belong here or there?  I was wondering if we had a standard way of indicating function in simple english next to the mod/name ?  Thanks --[[User:chris collman|chris collman]] 14:04, 20 February 2008 (CST)&lt;br /&gt;
&lt;br /&gt;
:Hi Chris, good question about the mod/xxx pages. Each edit roles page in Moodle (via &#039;&#039;Administration &amp;gt; Users &amp;gt; Permissions &amp;gt; Define roles&#039;&#039;)  contains a list of links to all [[:Category:Capabilities]] pages. The documentation pages have not been renamed in this case, as it&#039;s easier for non-English speakers to identify the capabilities from mod/xxx. If you have any further questions, please remember that you can always post in the [http://moodle.org/mod/forum/view.php?id=5838 Moodle documentation forum]. Most likely you&#039;re not the only one with a particular question ;-) --[[User:Helen Foster|Helen Foster]] 05:55, 21 February 2008 (CST)&lt;br /&gt;
::Thanks again for all your comments, they should keep me pointed down the right paths concerning  roles and even templates for a while. I did take a break and watched a full eclipse last night. It was one of those cold clear nights in the mountains. Saw the event from our bed looking out the window.  Today it is doing an item analysis on an old quiz for a teacher, so we can upload a new version tomorrow for the test on Saturday.  --[[User:chris collman|chris collman]] 11:16, 21 February 2008 (CST)&lt;br /&gt;
&lt;br /&gt;
==Pages/images for deletion==&lt;br /&gt;
&lt;br /&gt;
Hi Chris, thanks for pointing out images needing deleting :-) For future reference, rather than creating a new talk page, you can simply add the deletion template to the image page, as described here: [[MoodleDocs:Style guide]] ;-) --[[User:Helen Foster|Helen Foster]] 10:06, 25 May 2008 (CDT)&lt;br /&gt;
:I forgot!  On the other hand, I had a lovely time with my wife, working on a couple of raised vegetable garden beds of her design, as her assistant.  I was waiting for her and decided to look at special pages and saw some old pictures of mine. Then it was &amp;quot;lets go Chris&amp;quot; and out we went.   While I might have done things differently, we had fun discussing which way the two 1 by 3 meter beds should lie.    It was a glorious day. &lt;br /&gt;
&lt;br /&gt;
Hope your corner of the world was as wonderful as mine.  Best --[[User:chris collman|chris collman]] 22:16, 25 May 2008 (CDT)&lt;br /&gt;
&lt;br /&gt;
==Disruptive technology==&lt;br /&gt;
hi chris, i&#039;ve added a &amp;quot;disruptive technology&amp;quot; link on my user page (a relatively new/intuitive interest) - basically it refers to a new, usually simple, low cost technology which unexpectedly takes over from a more complex, existing technology. the link gos to a wikiversity page where i&#039;ve added a few more notes including some thoughts about educational wikis as disruptive technology. personally, i still feel like i&#039;m in a 19th century classroom when using learning management systems which invariably seem to assume that the teacher shall have more tools and power than shall students, whereas the simplicity (and disruptiveness) of an educational wiki for me evaporates such unecessary and arbitrary power separations. then we can get on with trying out learning. interested in your thoughts. haven&#039;t poked much into your stuff and am a moodle newb, but am interested, so feel free to share your world and ideas. [[User:James Neill|James Neill]] 02:53, 1 September 2008 (CDT)&lt;br /&gt;
::Thanks for sharing. I hear you about the LMS, 19th Century and change.   Now I have a better idea of the &amp;quot;disruptive&amp;quot; term.  From my perspective, not all teachers are innovators.  Then there are effective innovators.  My long view of education goes back to my Peace Corp training at MSU where we were told about the process of change among a county full of Iowa corn growers.  Or a friendly State purchasing agent who told me &amp;quot;Chris, understand this process is intentionally designed NOT to be easy.&amp;quot;  Alrighty then, this is what I see in higher education in the US. It does not stop innovation, it just curtails it.&lt;br /&gt;
::Basic assumptions are always fun to observe. As you know it is not just teachers but some students who have been imprinted with &amp;quot;traditional&amp;quot; values.  Watching excited teacher/mentor/student relationships in the educational process is something I enjoy.  I always smile to myself when I suggest that the teacher in an interactive video classroom 60 miles away, grab the chalk and write on the board, instead of using the stylus on the touchscreen monitor which is ready to go.  The chalk keeps them excited and effective education flowing.  Best --[[User:chris collman|chris collman]] 07:31, 4 September 2008 (CDT)&lt;br /&gt;
&lt;br /&gt;
==User subpages==&lt;br /&gt;
Thanks for the tip about user subpages; as a result I&#039;ve tidied up my moodle.org profile a bit and also my docs.moodle.org user page to make it a bit more obvious that I do have some user subpages about moodle. Now that I&#039;ve found moodledocs, I&#039;m adding most of my notes here, so we might say perhaps some jabberwockysynchronicity. We just had a two day Moodle training, so that&#039;s got me going. Thanks 4 the collegiality :). [[User:James Neill|James Neill]] 11:14, 18 September 2008 (CDT)&lt;br /&gt;
::So you are wound up.  Great!  I am sort of jealous.  My formal training was about 30 minutes, looking over somebody&#039;s shoulder as they created jpgs from PPTs and added them one at a time to Lesson Branch pages. &amp;quot;Now you are a course creator, go for it.&amp;quot; All the rest has been either self taught by doing or playing, and utilizing moodle.org and docs.moodle.org of course .  Writing instructions still is a way of listening and learning. For fun, I am preparing a Bb course to supplement my face to face Genealogy workshop next month.  And I told them to give me a username and password and I would figure it out. Beginning to wonder if I don&#039;t like being trained :) --[[User:chris collman|chris collman]] 11:26, 18 September 2008 (CDT)&lt;br /&gt;
&lt;br /&gt;
==Moodle sync crazy idea==&lt;br /&gt;
Hi Rainer,&lt;br /&gt;
The only way my simple brain can handle it is the old fashion way: Backup one and restore to the other.  Anything else would be way over my head.   When I build courses for content providers, that is what I do. &lt;br /&gt;
&lt;br /&gt;
Having said that, you could speed the process up.  Use a the equal of a .bat file to clean out a folder on a local host.  Use Cron and set the localhost properities backup to 1 copy.   The bat file would also have a command(s) to gather specific course backups via a copy to the empty folder on the localhost.  Wonder if you can FTP the contents of the localhost folder to a folder in a fake course on a web Moodle. Someone clever should be able to get them to run with something like Cron or scheduler.  &lt;br /&gt;
&lt;br /&gt;
Then on the web Moodle find that folder and restore the backups manually.  I don&#039;t think I would trust anything automatic at this point for a live webhost. :)&lt;br /&gt;
&lt;br /&gt;
==Changes to Development:Usability/Improve_Moodle_User_Experience_Consistency==&lt;br /&gt;
Hi Chris,&lt;br /&gt;
&lt;br /&gt;
I appreciate you working on the docs, and thanks for adding a common GSOC 09 tag to [[Development:Usability/Improve_Moodle_User_Experience_Consistency]]. Is there a page which links all the pages tagged this way?&lt;br /&gt;
&lt;br /&gt;
However, I am not so sure about your newer changes. Are these changes made according to a Moodle docs convention, or based on your own user research? I assume you have changed the other GSOC pages accordingly, too, but just mentioning you are making it more user friendly does not mean much. Mostly your changes are okay (though you haven&#039;t really communicated what are the users/usage scenarios you are aiming to make it more useful for so it is hard to tell if it is more &amp;quot;user friendly&amp;quot; [usable?] or not). To have the navigation to other related documents seems important to me to keep at the top of the page, and the &amp;quot;up to usability&amp;quot; link was there to make the hierarchical relationship to the more general Usability page clear (and as such &amp;quot;additional documentation&amp;quot; is not really appropriate).&lt;br /&gt;
&lt;br /&gt;
--[[User:Olli Savolainen|Olli Savolainen]] 12:34, 20 May 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
Having not heard from you, reverted the &amp;quot;up to usability&amp;quot; link back to how it was. --[[User:Olli Savolainen|Olli Savolainen]] 09:59, 23 May 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
Hm, I am not sure why Development:Usability also has the GSoC template - I am not really working on that this summer - is some other GSoCcer? &lt;br /&gt;
&lt;br /&gt;
Would you like me to edit the template so that it would be a link to the GSoC&#039;09 page itself - this way it would be easier to browse around the different GSOC sites with the help of the template? &lt;br /&gt;
Thanks.--[[User:Olli Savolainen|Olli Savolainen]] 15:07, 23 May 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
::Hi Olli, been flat out with other stuff and have not checked &amp;quot;my watchlist&amp;quot; in a few days.  It was my understanding that someday some of the GSoC projects would become part of Moodle, thus my interest.  I respect your changes.   &lt;br /&gt;
&lt;br /&gt;
::I thought you were working on this as a [http://moodle.org/mod/forum/discuss.php?d=121585 project for &#039;09],and/or [[GSOC/2009#Improve_Moodle_user_experience_consistency]] my apologies. I usually stay away from the Development: stuff but am peeking in on the GSoC 09 forum this year to watch process.  &lt;br /&gt;
&lt;br /&gt;
::Usual MoodleDoc format is to put brief intro, then first heading, so TOC automatically inserts itself before the first heading and after the intro.  Usual MoodleDocs convention is to put &amp;quot;See also&amp;quot; at bottom of page with links to outside sources, or internal page links that may also be useful but not clearly linked in the body of the page. I personally like to see functionality come before setup instructions in mature MoodleDoc pages used by teachers, but in the development space, I think anything goes. I can see where those links serve as history or precedent which is useful for developers. And not something teachers really care about, so different needs for different users :)  &lt;br /&gt;
&lt;br /&gt;
:: The reason for the Template is to alert people that this is &#039;09 project. There is a [[:Category:GSOC]] a sub category of [[:Category:Project]] that seems to list student projects/.  I thought about creating a template with links but most users do not flit between the projects.   I was wondering if a sub category 09 might be better but decided that also too elaborate for the number of users who really were involved.   I was going to go back and tag all the GSoC &#039;09 projects with a category but ran out of time and put it on the potential roundtuit list.&lt;br /&gt;
&lt;br /&gt;
:: Appreciate your comments, sorry for the delay in getting back to you.  Thanks for all your contributions to Moodle, as well.  Best --[[User:chris collman|chris collman]] 18:49, 25 May 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
::: Hi Chris,&lt;br /&gt;
&lt;br /&gt;
::: I realize now that I was overtly harsh about your changes. Sorry about that. My project indeed is a GSoC project, and it makes sense to have the GSoC template on it. But Development:Usability is not directly related to this usability project, except by its subject area. &lt;br /&gt;
&lt;br /&gt;
::: I find it fascinating that you know so much about Moodle Docs conventions. The reason for this is that my project is, in essence, a project to create easy-as-possible content to the Docs: UI guidelines. So I would really like to learn from you.&lt;br /&gt;
&lt;br /&gt;
::: Oops, gotta go, will respond to the rest later. --[[User:Olli Savolainen|Olli Savolainen]] 08:42, 27 May 2009 (UTC)&lt;br /&gt;
::::I have been mentored by Helen :) [https://docs.moodle.org/en/Special:Contributions/Rcollman Trial and error], watching our community edit and discuss pages, and paying attention to repeating issues raised in a couple of forums also has influenced my knowledge of what seems to work.  We all live in ruts that we can not see out of without help, some of us know it and some of us don&#039;t :) Cultural Anthropology with 5 years of what might be called field experience taught me that before my brain became frozen at 25. Best --[[User:chris collman|chris collman]] 10:03, 29 May 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
::::: Great :). As I am creating content on docs, too, do you think it might be possible to document, just briefly, the conventions we already use, and the relationship to other recommendations for using wikis, such as Wikipedia&#039;s? Or would you like to participate in the discussion, once we get that far, on [[Development:Usability/Improve_Moodle_User_Experience_Consistency/Detailed_project_plan#Examine_pattern_libraries_and_guidelines_for_content_and_information_architecture_.28week_24.29|the design of the future guidelines]] - which, although they are mostly for developers at this point - must critically be &#039;&#039;very&#039;&#039; easy to read, since usability is typically strange land for many developers. --[[User:Olli Savolainen|Olli Savolainen]] 11:22, 29 May 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
::::: If you have time, please have a look at Development:Progressive_Disclosure and comment. Thanks :) --[[User:Olli Savolainen|Olli Savolainen]] 11:41, 2 June 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
==Beginning Administration FAQ==&lt;br /&gt;
I liked your comments about the question: &lt;br /&gt;
Why am I just not getting how Permissions and Roles work?&lt;br /&gt;
&lt;br /&gt;
This section really jumps around in my logic and needs more links. The intro is good because it addresses a problem I had/have :) But after that I would delete the rest. At a certain point the words revert to a description of a process, where authentication is mixed in with front page roles and terms of teacher, course creator and such and what happens when a user comes back from a course..... I think more links will help and maybe ask another question (or more) to focus upon why the mental block about permissions, contexts, capabilities, and roles. --chris collman 12:37, 20 July 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
Yes, you are probably right Chris, but my initial concern was to get the question up. Just go for it, I am not in the position I can spend a lot of time doing this until the end of September now. Cheers..&lt;br /&gt;
&lt;br /&gt;
Your comment : (→How do I restore an older graphics course that is way over he file upload limit?:  why someone would do this) It was worded the way it was for two reasons, first I rushed it and did not really think too hard about it, sorry, but then later when I realized it, and had time to fix it, you had already done so, thank you, saves me from looking like a complete blockhead..:) [[User:Colin Fraser|Colin Fraser]] 09:04, 12 December 2009 (UTC)Colin Fraser&lt;br /&gt;
::Hey Colin, that is why MoodleDocs is collaborative, we help the process along as we are able and so inclined.   I saw that because I am recreating a 1.5.3 site on a new 1.9.7 server.   I decided I better review the Beginning Admin FAQs for any hints about backups and users.  I had just finishing reinventing the wheel using WinSCP, when I saw your FAQ which was one of the issues I had to deal with.   I will confess that I tend not to look at those pages to edit, but obviously find them useful as I am sure others do as well.  Thanks for your continued contributions to Moodle, especially on behalf of the new users! --[[User:chris collman|chris collman]] 11:59, 12 December 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Thank you for catching my typo ==&lt;br /&gt;
&lt;br /&gt;
https://docs.moodle.org/en/index.php?title=Unit_tests&amp;amp;diff=65278&amp;amp;oldid=65277 did rather change the meaning ;-)--[[User:Tim Hunt|Tim Hunt]] 14:51, 16 November 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
Keep doing the heavy lifting, sometimes I will find a grain of sand to put in the right place.  --[[User:chris collman|chris collman]] 11:39, 17 November 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
== File Upload Size ==&lt;br /&gt;
&lt;br /&gt;
Hi Chris,&lt;br /&gt;
&lt;br /&gt;
I noticed that you made some changes to the [[File_upload_size]] page.&lt;br /&gt;
&lt;br /&gt;
I have been thrashing a few ideas about this page round with Marc and Colin for a while ([[Talk:File_upload_size]]) and I think I am getting close to a format that will help users first discover the info they need before they ask the question &amp;quot;How do I inrease teh file upload size in Moodle?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Anyway, I have finally found some time to have a look at it again. I have started a re-working of it from my user area on the docs. I am trying to take into account the idea of the matrix of questions Marc discussed. Have a look at it here [[User:Jon_Witts/file-upload-v2]] and leave any comments in the talk page and make any additions you see fit to make too.&lt;br /&gt;
&lt;br /&gt;
Cheers&lt;br /&gt;
&lt;br /&gt;
Jon&lt;/div&gt;</summary>
		<author><name>Jonwitts</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=User:Jon_Witts/file-upload-v2&amp;diff=22284</id>
		<title>User:Jon Witts/file-upload-v2</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=User:Jon_Witts/file-upload-v2&amp;diff=22284"/>
		<updated>2010-03-08T18:31:19Z</updated>

		<summary type="html">&lt;p&gt;Jonwitts: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&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; The changes that need be made are the same in all versions of Moodle, just in different OS&#039; they need be made in different places. Upload file sizes are restricted in a number of ways and each one in this list restricts the following ones:&lt;br /&gt;
&lt;br /&gt;
 Server level&lt;br /&gt;
 Moodle site level&lt;br /&gt;
 Course level&lt;br /&gt;
 Activity level&lt;br /&gt;
&lt;br /&gt;
This is a contentious issue, mainly because you might think that it should be set inside the Moodle. Unfortunately, this is not so, Moodle cannot work outside itself. Your install of PHP is what determines the maximum upload file size; Moodle can only work with those settings determined by PHP. So to change these settings we first need to know what version of PHP you are running and where it is referencing its settings from. PHP uses a file called php.ini to determine its operational settings and this can be located in a number of places.&lt;br /&gt;
&lt;br /&gt;
==PHP Version and php.ini location==&lt;br /&gt;
Create a phpinfo() page or locate the phpinfo section in your Moodle, as per the instructions here: [[phpinfo]]&lt;br /&gt;
&lt;br /&gt;
At the very top of the phpinfo page you will see the version of PHP that your server is running. See the relevant section below for information on how to proceed.&lt;br /&gt;
===PHP Version is 5===&lt;br /&gt;
Read location of active php.ini file from phpinfo page...&lt;br /&gt;
&lt;br /&gt;
===PHP Version is 4===&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
==What web server are you using?==&lt;br /&gt;
===Apache===&lt;br /&gt;
If you are using an Apache web server you can use .htaccess files to over ride the php.ini settings, or you can edit the active php.ini files on your server.&lt;br /&gt;
===IIS===&lt;br /&gt;
.... edit php.ini ?! ...&lt;br /&gt;
===Other===&lt;br /&gt;
??&lt;br /&gt;
&lt;br /&gt;
==How is php running on your web server?==&lt;br /&gt;
The manner in which PHP is running on your web server will determine if you need to restart your web server daemon or not to apply changes you make to the php.ini file.&lt;br /&gt;
&lt;br /&gt;
You can find out how your web server is running PHP by looking at this section of your phpinfo page: Apache2Handler &amp;gt; Loaded Modules Section.&lt;br /&gt;
&lt;br /&gt;
===mod_php5 is present===&lt;br /&gt;
You are running PHP as an Apache Module. You will need to restart Apache to make changes to your php.ini file apply.&lt;br /&gt;
&lt;br /&gt;
===??===&lt;br /&gt;
==What access do you have to the server?==&lt;br /&gt;
To make changes to the main php.ini file you will need administrative access to the server...&lt;br /&gt;
===Local / Full access to server===&lt;br /&gt;
...&lt;br /&gt;
===Shared / Hosted access to server===&lt;br /&gt;
...&lt;/div&gt;</summary>
		<author><name>Jonwitts</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=User:Jon_Witts/file-upload-v2&amp;diff=22283</id>
		<title>User:Jon Witts/file-upload-v2</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=User:Jon_Witts/file-upload-v2&amp;diff=22283"/>
		<updated>2010-03-08T18:25:33Z</updated>

		<summary type="html">&lt;p&gt;Jonwitts: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&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; The changes that need be made are the same in all versions of Moodle, just in different OS&#039; they need be made in different places. Upload file sizes are restricted in a number of ways and each one in this list restricts the following ones:&lt;br /&gt;
&lt;br /&gt;
 Server level&lt;br /&gt;
 Moodle site level&lt;br /&gt;
 Course level&lt;br /&gt;
 Activity level&lt;br /&gt;
&lt;br /&gt;
This is a contentious issue, mainly because you might think that it should be set inside the Moodle. Unfortunately, this is not so, Moodle cannot work outside itself. Your install of PHP is what determines the maximum upload file size; Moodle can only work with those settings determined by PHP. So to change these settings we first need to know what version of PHP you are running and where it is referencing its settings from. PHP uses a file called php.ini to determine its operational settings and this can be located in a number of places.&lt;br /&gt;
&lt;br /&gt;
==What Webserver are you using?==&lt;br /&gt;
===Apache===&lt;br /&gt;
If you are using an Apche web server you can use .htaccess files to over ride the php.ini settings.&lt;br /&gt;
===IIS===&lt;br /&gt;
.... edit php.ini ?! ...&lt;br /&gt;
===Other===&lt;br /&gt;
??&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==PHP Version and php.ini location==&lt;br /&gt;
Create a phpinfo() page or locate the phpinfo section in your Moodle, as per the instructions here: [[phpinfo]]&lt;br /&gt;
&lt;br /&gt;
At the very top of the phpinfo page you will see the version of PHP that your server is running. See the relevant section below for information on how to proceed.&lt;br /&gt;
===PHP Version is 5===&lt;br /&gt;
Read location of active php.ini file from phpinfo page...&lt;br /&gt;
&lt;br /&gt;
===PHP Version is 4===&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
==What access do you have to the server?==&lt;br /&gt;
To make changes to the main php.ini file you will need administrative access to the server...&lt;br /&gt;
===Local / Full access to server===&lt;br /&gt;
...&lt;br /&gt;
===Shared / Hosted access to server===&lt;br /&gt;
...&lt;/div&gt;</summary>
		<author><name>Jonwitts</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=User:Jon_Witts/file-upload-v2&amp;diff=22282</id>
		<title>User:Jon Witts/file-upload-v2</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=User:Jon_Witts/file-upload-v2&amp;diff=22282"/>
		<updated>2010-03-08T18:24:58Z</updated>

		<summary type="html">&lt;p&gt;Jonwitts: /* PHP Version and php.ini location */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&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; The changes that need be made are the same in all versions of Moodle, just in different OS&#039; they need be made in different places. Upload file sizes are restricted in a number of ways and each one in this list restricts the following ones:&lt;br /&gt;
&lt;br /&gt;
 Server level&lt;br /&gt;
 Moodle site level&lt;br /&gt;
 Course level&lt;br /&gt;
 Activity level&lt;br /&gt;
&lt;br /&gt;
This is a contentious issue, mainly because you might think that it should be set inside the Moodle. Unfortunately, this is not so, Moodle cannot work outside itself. Your install of PHP is what determines the maximum upload file size; Moodle can only work with those settings determined by PHP. So to change these settings we first need to know what version of PHP you are running and where it is referencing its settings from. PHP uses a file called php.ini to determine its operational settings and this can be located in a number of places.&lt;br /&gt;
&lt;br /&gt;
==PHP Version and php.ini location==&lt;br /&gt;
Create a phpinfo() page or locate the phpinfo section in your Moodle, as per the instructions here: [[phpinfo]]&lt;br /&gt;
&lt;br /&gt;
At the very top of the phpinfo page you will see the version of PHP that your server is running. See the relevant section below for information on how to proceed.&lt;br /&gt;
===PHP Version is 5===&lt;br /&gt;
Read location of active php.ini file from phpinfo page...&lt;br /&gt;
&lt;br /&gt;
===PHP Version is 4===&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
==What access do you have to the server?==&lt;br /&gt;
To make changes to the main php.ini file you will need administrative access to the server...&lt;br /&gt;
===Local / Full access to server===&lt;br /&gt;
...&lt;br /&gt;
===Shared / Hosted access to server===&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
==What Webserver are you using?==&lt;br /&gt;
===Apache===&lt;br /&gt;
If you are using an Apche web server you can use .htaccess files to over ride the php.ini settings.&lt;br /&gt;
===IIS===&lt;br /&gt;
.... edit php.ini ?! ...&lt;br /&gt;
===Other===&lt;br /&gt;
??&lt;/div&gt;</summary>
		<author><name>Jonwitts</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=User:Jon_Witts/file-upload-v2&amp;diff=22281</id>
		<title>User:Jon Witts/file-upload-v2</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=User:Jon_Witts/file-upload-v2&amp;diff=22281"/>
		<updated>2010-03-08T18:24:47Z</updated>

		<summary type="html">&lt;p&gt;Jonwitts: /* PHP Version and php.ini location */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&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; The changes that need be made are the same in all versions of Moodle, just in different OS&#039; they need be made in different places. Upload file sizes are restricted in a number of ways and each one in this list restricts the following ones:&lt;br /&gt;
&lt;br /&gt;
 Server level&lt;br /&gt;
 Moodle site level&lt;br /&gt;
 Course level&lt;br /&gt;
 Activity level&lt;br /&gt;
&lt;br /&gt;
This is a contentious issue, mainly because you might think that it should be set inside the Moodle. Unfortunately, this is not so, Moodle cannot work outside itself. Your install of PHP is what determines the maximum upload file size; Moodle can only work with those settings determined by PHP. So to change these settings we first need to know what version of PHP you are running and where it is referencing its settings from. PHP uses a file called php.ini to determine its operational settings and this can be located in a number of places.&lt;br /&gt;
&lt;br /&gt;
==PHP Version and php.ini location==&lt;br /&gt;
Create a phpinfo() page or locate the phpinfo section in your Moodle, as per the instructions here: [[phpinfo]]&lt;br /&gt;
&lt;br /&gt;
At teh very top of the phpinfo page you will see the version of PHP that your server is running. See the relevant section below for information on how to proceed.&lt;br /&gt;
===PHP Version is 5===&lt;br /&gt;
Read location of active php.ini file from phpinfo page...&lt;br /&gt;
&lt;br /&gt;
===PHP Version is 4===&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
==What access do you have to the server?==&lt;br /&gt;
To make changes to the main php.ini file you will need administrative access to the server...&lt;br /&gt;
===Local / Full access to server===&lt;br /&gt;
...&lt;br /&gt;
===Shared / Hosted access to server===&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
==What Webserver are you using?==&lt;br /&gt;
===Apache===&lt;br /&gt;
If you are using an Apche web server you can use .htaccess files to over ride the php.ini settings.&lt;br /&gt;
===IIS===&lt;br /&gt;
.... edit php.ini ?! ...&lt;br /&gt;
===Other===&lt;br /&gt;
??&lt;/div&gt;</summary>
		<author><name>Jonwitts</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=User:Jon_Witts/file-upload-v2&amp;diff=22280</id>
		<title>User:Jon Witts/file-upload-v2</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=User:Jon_Witts/file-upload-v2&amp;diff=22280"/>
		<updated>2010-03-08T18:17:45Z</updated>

		<summary type="html">&lt;p&gt;Jonwitts: /* PHP Version and php.ini location */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&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; The changes that need be made are the same in all versions of Moodle, just in different OS&#039; they need be made in different places. Upload file sizes are restricted in a number of ways and each one in this list restricts the following ones:&lt;br /&gt;
&lt;br /&gt;
 Server level&lt;br /&gt;
 Moodle site level&lt;br /&gt;
 Course level&lt;br /&gt;
 Activity level&lt;br /&gt;
&lt;br /&gt;
This is a contentious issue, mainly because you might think that it should be set inside the Moodle. Unfortunately, this is not so, Moodle cannot work outside itself. Your install of PHP is what determines the maximum upload file size; Moodle can only work with those settings determined by PHP. So to change these settings we first need to know what version of PHP you are running and where it is referencing its settings from. PHP uses a file called php.ini to determine its operational settings and this can be located in a number of places.&lt;br /&gt;
&lt;br /&gt;
==PHP Version and php.ini location==&lt;br /&gt;
Create a phpinfo() page or locate the phpinfo section in your Moodle, as per the instructions here: [[phpinfo]]&lt;br /&gt;
===PHP Version is 5===&lt;br /&gt;
Read location of active php.ini file from phpinfo page...&lt;br /&gt;
&lt;br /&gt;
===PHP Version is 4===&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
==What access do you have to the server?==&lt;br /&gt;
To make changes to the main php.ini file you will need administrative access to the server...&lt;br /&gt;
===Local / Full access to server===&lt;br /&gt;
...&lt;br /&gt;
===Shared / Hosted access to server===&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
==What Webserver are you using?==&lt;br /&gt;
===Apache===&lt;br /&gt;
If you are using an Apche web server you can use .htaccess files to over ride the php.ini settings.&lt;br /&gt;
===IIS===&lt;br /&gt;
.... edit php.ini ?! ...&lt;br /&gt;
===Other===&lt;br /&gt;
??&lt;/div&gt;</summary>
		<author><name>Jonwitts</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=User:Jon_Witts/file-upload-v2&amp;diff=22279</id>
		<title>User:Jon Witts/file-upload-v2</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=User:Jon_Witts/file-upload-v2&amp;diff=22279"/>
		<updated>2010-03-08T18:01:21Z</updated>

		<summary type="html">&lt;p&gt;Jonwitts: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&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; The changes that need be made are the same in all versions of Moodle, just in different OS&#039; they need be made in different places. Upload file sizes are restricted in a number of ways and each one in this list restricts the following ones:&lt;br /&gt;
&lt;br /&gt;
 Server level&lt;br /&gt;
 Moodle site level&lt;br /&gt;
 Course level&lt;br /&gt;
 Activity level&lt;br /&gt;
&lt;br /&gt;
This is a contentious issue, mainly because you might think that it should be set inside the Moodle. Unfortunately, this is not so, Moodle cannot work outside itself. Your install of PHP is what determines the maximum upload file size; Moodle can only work with those settings determined by PHP. So to change these settings we first need to know what version of PHP you are running and where it is referencing its settings from. PHP uses a file called php.ini to determine its operational settings and this can be located in a number of places.&lt;br /&gt;
&lt;br /&gt;
==PHP Version and php.ini location==&lt;br /&gt;
Create a phpinfo() page...&lt;br /&gt;
===PHP Version is 5===&lt;br /&gt;
Read location of active php.ini file from phpinfo page...&lt;br /&gt;
&lt;br /&gt;
===PHP Version is 4===&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
==What access do you have to the server?==&lt;br /&gt;
To make changes to the main php.ini file you will need administrative access to the server...&lt;br /&gt;
===Local / Full access to server===&lt;br /&gt;
...&lt;br /&gt;
===Shared / Hosted access to server===&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
==What Webserver are you using?==&lt;br /&gt;
===Apache===&lt;br /&gt;
If you are using an Apche web server you can use .htaccess files to over ride the php.ini settings.&lt;br /&gt;
===IIS===&lt;br /&gt;
.... edit php.ini ?! ...&lt;br /&gt;
===Other===&lt;br /&gt;
??&lt;/div&gt;</summary>
		<author><name>Jonwitts</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=User:Jon_Witts/file-upload-v2&amp;diff=22278</id>
		<title>User:Jon Witts/file-upload-v2</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=User:Jon_Witts/file-upload-v2&amp;diff=22278"/>
		<updated>2010-03-07T23:29:14Z</updated>

		<summary type="html">&lt;p&gt;Jonwitts: /* PHP Version is 4 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&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; The changes that need be made are the same in all versions of Moodle, just in different OS&#039; they need be made in different places. Upload file sizes are restricted in a number of ways and each one in this list restricts the following ones:&lt;br /&gt;
&lt;br /&gt;
 Server level&lt;br /&gt;
 Moodle site level&lt;br /&gt;
 Course level&lt;br /&gt;
 Activity level&lt;br /&gt;
&lt;br /&gt;
This is a contentious issue, mainly because you might think that it should be set inside the Moodle. Unfortunately, this is not so, Moodle cannot work outside itself. Your install of PHP is what determines the maximum upload file size; Moodle can only work with those settings determined by PHP. So to change these settings we first need to know what version of PHP you are running and where it is referencing its settings from. PHP uses a file called php.ini to determine its operational settings and this can be located in a number of places.&lt;br /&gt;
&lt;br /&gt;
==PHP Version and php.ini location==&lt;br /&gt;
Create a phpinfo() page...&lt;br /&gt;
===PHP Version is 5===&lt;br /&gt;
Read location of active php.ini file from phpinfo page...&lt;br /&gt;
&lt;br /&gt;
===PHP Version is 4===&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
==What access do you have to the server?==&lt;br /&gt;
To make changes to the main php.ini file you will need administrative access to the server...&lt;br /&gt;
===Local / Full access to server===&lt;br /&gt;
...&lt;br /&gt;
===Shared / Hosted access to server===&lt;br /&gt;
...&lt;/div&gt;</summary>
		<author><name>Jonwitts</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=User:Jon_Witts/file-upload-v2&amp;diff=22277</id>
		<title>User:Jon Witts/file-upload-v2</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=User:Jon_Witts/file-upload-v2&amp;diff=22277"/>
		<updated>2010-03-07T23:28:36Z</updated>

		<summary type="html">&lt;p&gt;Jonwitts: New page: 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; The changes that need be made are the same in all versi...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&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; The changes that need be made are the same in all versions of Moodle, just in different OS&#039; they need be made in different places. Upload file sizes are restricted in a number of ways and each one in this list restricts the following ones:&lt;br /&gt;
&lt;br /&gt;
 Server level&lt;br /&gt;
 Moodle site level&lt;br /&gt;
 Course level&lt;br /&gt;
 Activity level&lt;br /&gt;
&lt;br /&gt;
This is a contentious issue, mainly because you might think that it should be set inside the Moodle. Unfortunately, this is not so, Moodle cannot work outside itself. Your install of PHP is what determines the maximum upload file size; Moodle can only work with those settings determined by PHP. So to change these settings we first need to know what version of PHP you are running and where it is referencing its settings from. PHP uses a file called php.ini to determine its operational settings and this can be located in a number of places.&lt;br /&gt;
&lt;br /&gt;
==PHP Version and php.ini location==&lt;br /&gt;
Create a phpinfo() page...&lt;br /&gt;
===PHP Version is 5===&lt;br /&gt;
Read location of active php.ini file from phpinfo page...&lt;br /&gt;
&lt;br /&gt;
===PHP Version is 4===&lt;br /&gt;
{{stub}}&lt;br /&gt;
&lt;br /&gt;
==What access do you have to the server?==&lt;br /&gt;
To make changes to the main php.ini file you will need administrative access to the server...&lt;br /&gt;
===Local / Full access to server===&lt;br /&gt;
...&lt;br /&gt;
===Shared / Hosted access to server===&lt;br /&gt;
...&lt;/div&gt;</summary>
		<author><name>Jonwitts</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=User:Jon_Witts/Biography&amp;diff=22207</id>
		<title>User:Jon Witts/Biography</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=User:Jon_Witts/Biography&amp;diff=22207"/>
		<updated>2009-12-12T10:39:43Z</updated>

		<summary type="html">&lt;p&gt;Jonwitts: New page: =Jon Witts Biography= ==Work History== 2007 - Current : Director of ICT at South Hunsley School 2004 - 2007 : Learning Resource Centre Manager at South Hunsley School 2003 - 2004 : Ran my ...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Jon Witts Biography=&lt;br /&gt;
==Work History==&lt;br /&gt;
2007 - Current : Director of ICT at South Hunsley School&lt;br /&gt;
2004 - 2007 : Learning Resource Centre Manager at South Hunsley School&lt;br /&gt;
2003 - 2004 : Ran my own Cyber Cafe and IT consultancy Company&lt;br /&gt;
2002 - 2003 : Audio Visual Technician at Hull Time Based Arts&lt;br /&gt;
2001 - 2002 : Administrative Assistant at Hull Time Based Arts&lt;br /&gt;
==Education History==&lt;br /&gt;
&lt;br /&gt;
1997 - 2000 : BA Hons Fine Art at University of Humberside and Lincolnshire specialising in Time Based Media&lt;/div&gt;</summary>
		<author><name>Jonwitts</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=User:Jon_Witts&amp;diff=21192</id>
		<title>User:Jon Witts</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=User:Jon_Witts&amp;diff=21192"/>
		<updated>2009-12-12T10:34:56Z</updated>

		<summary type="html">&lt;p&gt;Jonwitts: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I work at a secondary school in the East Riding of Yorkshire in England as the Director of ICT.&lt;br /&gt;
&lt;br /&gt;
I like to help out in the forums if I can...&lt;br /&gt;
&lt;br /&gt;
I have just started to try and focus more of Moodle time on the docs. Hopefully some of the edits I make and pages I create will help those starting out with Moodle.&lt;br /&gt;
&lt;br /&gt;
[[user:Jon_Witts/Biography]]&lt;/div&gt;</summary>
		<author><name>Jonwitts</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=User_talk:Jon_Witts&amp;diff=24062</id>
		<title>User talk:Jon Witts</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=User_talk:Jon_Witts&amp;diff=24062"/>
		<updated>2009-09-06T16:28:17Z</updated>

		<summary type="html">&lt;p&gt;Jonwitts: New page: ==Maximum uploaded file size==  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;  ===Ubuntu Linux Instru...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&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;
===Ubuntu Linux Instructions===&lt;br /&gt;
&lt;br /&gt;
These instructions assume that you have installed PHP 5 and Apache 2 via apt-get and left it all as a default install. If you have compiled yourself I presume that you will know where your php.ini files are!&lt;br /&gt;
&lt;br /&gt;
You need to edit the following three settings in your php.ini file located at: /etc/php5/apache2/&lt;br /&gt;
&lt;br /&gt;
*Type &amp;quot;sudo nano /etc/php5/apache2/php.ini&amp;quot;&lt;br /&gt;
*Press Ctrl and W and type &amp;quot;post_max_size&amp;quot; &lt;br /&gt;
*Change the value to the number of Mb you want your site to accept as uploads&lt;br /&gt;
*Press Ctrl and W and type &amp;quot;upload_max_filesize&amp;quot; &lt;br /&gt;
*Change the value to the number of Mb you want your site to accept as uploads&lt;br /&gt;
*Press Ctrl and W and type &amp;quot;max_execution_time&amp;quot; &lt;br /&gt;
*Change the value to 600&lt;br /&gt;
*Press Ctrl and O&lt;br /&gt;
*Press Ctrl and X&lt;br /&gt;
*Type sudo /etc/init.d/apache2 restart&lt;br /&gt;
&lt;br /&gt;
Your new file size limit should now appear in Administration &amp;gt; Security &amp;gt; Site Policies &amp;gt; Maximum uploaded file size&lt;br /&gt;
&lt;br /&gt;
===Windows XP and Server 2003 Instructions===&lt;br /&gt;
&lt;br /&gt;
These instructions presume that you have downloaded the latest PHP 5.2.x Windows zip package and extracted it to C:\PHP. If you have installed PHP to another location then change all references to &amp;quot;C:\PHP&amp;quot; to the location you installed PHP too.&lt;br /&gt;
&lt;br /&gt;
*Open C:\PHP&lt;br /&gt;
*Right Click the php.ini file in this folder and choose &amp;quot;Open with...&amp;quot;&lt;br /&gt;
*Choose &amp;quot;Wordpad&amp;quot; not &amp;quot;Notepad&amp;quot; to open the file with&lt;br /&gt;
*Press Ctrl and F and type &amp;quot;post_max_size&amp;quot; &lt;br /&gt;
*Change the value to the number of Mb you want your site to accept as uploads&lt;br /&gt;
*Press Ctrl and F and type &amp;quot;upload_max_filesize&amp;quot; &lt;br /&gt;
*Change the value to the number of Mb you want your site to accept as uploads&lt;br /&gt;
*Press Ctrl and F and type &amp;quot;max_execution_time&amp;quot; &lt;br /&gt;
*Change the value to 600&lt;br /&gt;
*Press Ctrl and S&lt;br /&gt;
*Exit Wordpad&lt;br /&gt;
*Restart your webserver&lt;br /&gt;
**&#039;&#039;&#039;For IIS&#039;&#039;&#039;&lt;br /&gt;
**Open your Start Menu on your server and select &amp;quot;Run&amp;quot;&lt;br /&gt;
**Type &amp;quot;iisreset /RESTART&amp;quot;&lt;br /&gt;
**&#039;&#039;&#039;For Apache 2&#039;&#039;&#039;&lt;br /&gt;
**The following command will work as long as you have installed Apache 2 as a service on your Windows Server&lt;br /&gt;
**Open your Start Menu on your server and select &amp;quot;Run&amp;quot;&lt;br /&gt;
**Type &amp;quot;httpd -k restart&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Your new file size limit should now appear in Administration &amp;gt; Security &amp;gt; Site Policies &amp;gt; Maximum uploaded file size&lt;/div&gt;</summary>
		<author><name>Jonwitts</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=User:Jon_Witts&amp;diff=21191</id>
		<title>User:Jon Witts</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=User:Jon_Witts&amp;diff=21191"/>
		<updated>2009-06-01T10:52:31Z</updated>

		<summary type="html">&lt;p&gt;Jonwitts: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I work at a secondary school in the East Riding of Yorkshire in England as the Director of ICT.&lt;br /&gt;
&lt;br /&gt;
I like to help out in the forums if I can...&lt;/div&gt;</summary>
		<author><name>Jonwitts</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=User:Jon_Witts&amp;diff=21190</id>
		<title>User:Jon Witts</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=User:Jon_Witts&amp;diff=21190"/>
		<updated>2009-02-03T09:45:37Z</updated>

		<summary type="html">&lt;p&gt;Jonwitts: New page: I work at a secondary school in the East Riding of Yorkshire in England as the Director of ICT.  I like to help out in the forums if I can, but more often than not I will be asking for hel...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I work at a secondary school in the East Riding of Yorkshire in England as the Director of ICT.&lt;br /&gt;
&lt;br /&gt;
I like to help out in the forums if I can, but more often than not I will be asking for help myslef! :-D&lt;/div&gt;</summary>
		<author><name>Jonwitts</name></author>
	</entry>
</feed>