<?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=Pilpi</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=Pilpi"/>
	<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/Special:Contributions/Pilpi"/>
	<updated>2026-04-23T19:33:42Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Checkbox&amp;diff=55927</id>
		<title>Checkbox</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Checkbox&amp;diff=55927"/>
		<updated>2019-04-16T09:08:37Z</updated>

		<summary type="html">&lt;p&gt;Pilpi: /* Common mistakes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[ Moodle User Interface Guidelines|Moodle User Interface Guidelines]] &amp;gt; &#039;&#039;&#039;Checkbox&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Problem ==&lt;br /&gt;
You want to know if a user wants to enable an option or not. &lt;br /&gt;
* You want the user to make a binary choice: an option is on or not.&lt;br /&gt;
* You may also have several related options, amongst which the user can select zero or more.&lt;br /&gt;
&lt;br /&gt;
== Context ==&lt;br /&gt;
You are designing a form.&lt;br /&gt;
&lt;br /&gt;
== Forces: factors that affect selection ==&lt;br /&gt;
* Radio buttons and dropdown menus are too verbose for a binary choice&lt;br /&gt;
* Dropdown menus hide the other choice&lt;br /&gt;
&lt;br /&gt;
== Solution ==&lt;br /&gt;
&lt;br /&gt;
Create a checkbox with an id attribute. Add a label for the checkbox &#039;&#039;&#039;after&#039;&#039;&#039; the checkbox (in left-to-right languages, on the right of the checkbox). As the text content of the label element, write the result of checking the box: &lt;br /&gt;
&lt;br /&gt;
 [] Show me the money&lt;br /&gt;
&lt;br /&gt;
Moodle forms have a left column for the descriptions of the elements in forms, and a right column for the element itself. Checkboxes should have a easy-to-scan short caption on the left column, so that items are easy to find. Both the checkbox and the actual  label of the checkbox on its right side should describe the exact meaning. If there are several related options, group them under the same caption.&lt;br /&gt;
&lt;br /&gt;
 Money display:     [] Show me the money&lt;br /&gt;
                    [] Only show big money&lt;br /&gt;
&lt;br /&gt;
Determine a reasonable default for the value: checked, or unchecked. the reasonable default should be such that if a user does not notice the option, they probably do not mind leaving it to default. If no reasonable default can be determined, you may want to consider highlighting the checkbox in the form it is in, since it is impossible to make a checkbox a required field per se. &lt;br /&gt;
&lt;br /&gt;
: (Another use of the checkbox is to require users to always check a checkbox, i.e. &amp;quot;[ ] I have read and I accept the terms and conditions&amp;quot;, but in this case it is not really an option at all.)&lt;br /&gt;
&lt;br /&gt;
A special case: Sometimes you may want users to be capable of selecting multiple items in a set, but limit the number of items (a kind of a mix between radio buttons and checkboxes). HTML does not support this limitation directly, but it has to be scripted either in Javascript or server side, in PHP.&lt;br /&gt;
&lt;br /&gt;
== Common mistakes ==&lt;br /&gt;
&lt;br /&gt;
* Do not express the option label as a question: &amp;quot;Do you want to see the money?&amp;quot;&lt;br /&gt;
* Do not invert the option to negative voice: &amp;quot;Don&#039;t show me the money&amp;quot;. Most times, only positive voice should be used.&lt;br /&gt;
* Do not use radio buttons or dropdowns when there are only two choices.&lt;br /&gt;
* &#039;&#039;&#039;Never&#039;&#039;&#039; use single select boxes for selection of multiple items (which require user to ctrl/shift click items, to select multiple). Instead &#039;&#039;&#039;always&#039;&#039;&#039; use checkboxes.&lt;br /&gt;
&lt;br /&gt;
TODO: Add further common mistakes from [http://moodle.org/mod/forum/discuss.php?d=126481]&lt;br /&gt;
&lt;br /&gt;
== Examples and implementation ==&lt;br /&gt;
&lt;br /&gt;
Some examples of good and bad implementation:&lt;br /&gt;
&lt;br /&gt;
* Course settings (course/edit.php) - BAD: uses dropdown yes/no rather than checkbox, uses question (is this a metacourse?)&lt;br /&gt;
* Updating or adding database module (course/modedit.php?update=19&amp;amp;return=1) - BAD: uses dropdown yes/no for ratings and comments. Also asks question Require approval?&lt;br /&gt;
* In general, a review of each modules is needed as we have similar issues with assignment (prevent late submissions, etc.)&lt;br /&gt;
&lt;br /&gt;
== Related guidelines ==&lt;br /&gt;
&lt;br /&gt;
* Radio buttons&lt;br /&gt;
* [[Switch Button|Switch Button]]&lt;br /&gt;
* Sometimes extra options should be hidden with [[Progressive Disclosure|Progressive disclosure]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Related issues in the tracker ==&lt;br /&gt;
&lt;br /&gt;
* MDL-19659 - Usability test: Proper display of configuration variables&#039; default values; related: http://moodle.org/mod/forum/discuss.php?d=124533&lt;br /&gt;
** TODO: turn dropdowns into checkboxes and radio buttons in most of Moodle (http://moodle.org/mod/forum/discuss.php?d=126481 )&lt;br /&gt;
** TODO: See [[User:Frank_Ralf/Moodle_forms1#Checkboxes]]&lt;br /&gt;
&lt;br /&gt;
== Further information / Sources  ==&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=126481 Alternatives to yes/no dropdown menus?]&lt;br /&gt;
* [https://developer.gnome.org/hig/3.14/check-boxes.html.en GNOME HIG: Check Boxes]&lt;br /&gt;
&lt;br /&gt;
[[Category:Moodle User Interface Guidelines]]&lt;/div&gt;</summary>
		<author><name>Pilpi</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Themes_overview&amp;diff=55590</id>
		<title>Themes overview</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Themes_overview&amp;diff=55590"/>
		<updated>2019-02-15T11:28:23Z</updated>

		<summary type="html">&lt;p&gt;Pilpi: /* Better than CSS correct erroneous claim about css variables&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Themes}}&lt;br /&gt;
Welcome to the new world of themes in Moodle!&lt;br /&gt;
&lt;br /&gt;
A Moodle theme allows the user to change the look and feel of a Moodle site.  Themes can be applied on the site, category, course and activity levels by users with permissions to do so.  Themes can be designed for specific devices such as mobile phones or tablets. This page explains how themes work in Moodle and is intended to help you create or modify most themes for Moodle.&lt;br /&gt;
&lt;br /&gt;
You can use contributed themes or create your entire own to share with the community. Themes can also be based on parent themes with only few customizations. Themes accomplish this using CSS, changing the underlying markup structure and also adding Javascript to add more advanced behaviors.&lt;br /&gt;
&lt;br /&gt;
Most theme developers simply add a few changes to their new theme by basing it on an existing one. The Moodle Theme architecture is designed in such a way whereby the base theme will act as a fall-back that is used when nothing has been defined in the theme based on it. This makes it easy to create new themes that simply seek out to make minor changes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Whats new?==&lt;br /&gt;
&lt;br /&gt;
When Moodle releases a new version. All changes that affect themes are listed in the theme/upgrade.txt file. This is the most up-to date place to find about all changes to a specific version of Moodle and will always be kept up to date. &lt;br /&gt;
&lt;br /&gt;
[https://github.com/moodle/moodle/blob/master/theme/upgrade.txt View upgrade notes]&lt;br /&gt;
&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.&lt;br /&gt;
# &#039;&#039;&#039;The boost theme&#039;&#039;&#039; - is intended to be the best theme to use as a starting point for building a new theme. It supports all the latest theme features and it tries to stay as true to the [http://getbootstrap.com/ Bootstrap] css framework as possible. [[Creating a theme based on boost]] &lt;br /&gt;
&lt;br /&gt;
===Files and folders===&lt;br /&gt;
A theme&#039;s files are placed in a folder with under moodle/theme folder and have subfolders. They are laid out like this:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;nicetable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Directory&lt;br /&gt;
! File&lt;br /&gt;
! Description&lt;br /&gt;
|-&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;
| /&lt;br /&gt;
| lib.php &lt;br /&gt;
| Contains speciality functions that are used by theme&lt;br /&gt;
|-&lt;br /&gt;
| /classes&lt;br /&gt;
| *.php&lt;br /&gt;
| Contains auto-loaded classes for the theme. See [[Automatic class loading]] for more details.&lt;br /&gt;
|-&lt;br /&gt;
| /classes/output&lt;br /&gt;
| *.php&lt;br /&gt;
| This is the location for the theme to define overridden renderers. See [[Output renderers]] for more details.&lt;br /&gt;
|-&lt;br /&gt;
| /&lt;br /&gt;
| settings.php &lt;br /&gt;
| Contains custom theme settings. These local settings are defined by the theme allowing an administrator 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;
| /&lt;br /&gt;
| version.php &lt;br /&gt;
| Contains the theme name, version number and Moodle version requirements for using the theme&lt;br /&gt;
|-&lt;br /&gt;
| /fonts/&lt;br /&gt;
| *.woff, *.ttf, *.eot, *.svg, *.otf&lt;br /&gt;
| Theme fonts (since 2.6).&lt;br /&gt;
|-&lt;br /&gt;
| /fonts_core/ &lt;br /&gt;
| *.woff, *.ttf, *.eot, *.svg, *.otf&lt;br /&gt;
| Contains fonts that override standard core fonts (since 2.6).&lt;br /&gt;
|-&lt;br /&gt;
| /fonts_plugins/plugintype/pluginname/ &lt;br /&gt;
| *.woff, *.ttf, *.eot, *.svg, *.otf&lt;br /&gt;
| Contains fonts that override plugin fonts (since 2.6).&lt;br /&gt;
|-&lt;br /&gt;
| /amd/src/ &lt;br /&gt;
| *.js&lt;br /&gt;
| All specialty JavaScript files the theme requires should be located in here. Javascript should be written as an AMD module. For more information see [[Javascript Modules]]. &lt;br /&gt;
|-&lt;br /&gt;
| /lang/[langcode]/&lt;br /&gt;
| *.php&lt;br /&gt;
| Any special language files the theme requires should be located in here. &lt;br /&gt;
|-&lt;br /&gt;
| /templates/ &lt;br /&gt;
| *.mustache&lt;br /&gt;
| Contains the mustache template files for the themes. (Including overridden ones). See [[Templates]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
| /layout/ &lt;br /&gt;
| *.php&lt;br /&gt;
| Contains the layout files for the theme.&lt;br /&gt;
|-&lt;br /&gt;
| /pix/ &lt;br /&gt;
| *.png, *.jpg, *.gif, *.svg&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/&lt;br /&gt;
| favicon.ico &lt;br /&gt;
| The favicon to display for this theme.&lt;br /&gt;
|-&lt;br /&gt;
| /pix/&lt;br /&gt;
| screenshot.png &lt;br /&gt;
| A screenshot of the theme to be displayed in on the theme selection screen.&lt;br /&gt;
|-&lt;br /&gt;
| /pix_core/ &lt;br /&gt;
| *.png, *.jpg, *.gif, *.svg&lt;br /&gt;
| Contains images that override standard core images.&lt;br /&gt;
|-&lt;br /&gt;
| /pix_plugins/plugintype/pluginname/ &lt;br /&gt;
| *.png, *.jpg, *.gif, *.svg&lt;br /&gt;
| Contains images that override plugin images.&lt;br /&gt;
|-&lt;br /&gt;
| /style/&lt;br /&gt;
| *.css&lt;br /&gt;
| Default location for CSS files.&lt;br /&gt;
|-&lt;br /&gt;
| /less/&lt;br /&gt;
| *.less&lt;br /&gt;
| Default location for Less files if your theme uses less.&lt;br /&gt;
|-&lt;br /&gt;
| /scss/&lt;br /&gt;
| *.scss&lt;br /&gt;
| Default location for SCSS files if your theme uses SCSS.&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;
It is possible to override icons used in base themes without interfering with core code by placing these in dataroot/pix and dataroot/pix_plugins. Where a theme extends a base theme and provides its own icons, these icons will still be used.&lt;br /&gt;
&lt;br /&gt;
It is possible to override mustache templates used in base themes without interfering with core code by placing these in templates/[componentname]/[templatename].mustache.&lt;br /&gt;
&lt;br /&gt;
==Theme options==&lt;br /&gt;
All theme options are set within the config.php file for the theme.  The settings that are most used are: parents, sheets, layouts, and javascripts. Have a look at the &#039;&#039;&#039;[[#theme_options_table|theme options table]]&#039;&#039;&#039; for a complete list of theme options which include lesser used specialised or advanced settings.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Basic theme config example===&lt;br /&gt;
Lets have a look at the boost theme configuration file and the different bits that make it up:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
defined(&#039;MOODLE_INTERNAL&#039;) || die();&lt;br /&gt;
&lt;br /&gt;
require_once(__DIR__ . &#039;/lib.php&#039;);&lt;br /&gt;
&lt;br /&gt;
$THEME-&amp;gt;name = &#039;boost&#039;;&lt;br /&gt;
$THEME-&amp;gt;sheets = [];&lt;br /&gt;
$THEME-&amp;gt;editor_sheets = [];&lt;br /&gt;
$THEME-&amp;gt;scss = function($theme) {&lt;br /&gt;
    return theme_boost_get_main_scss_content($theme);&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
$THEME-&amp;gt;layouts = [&lt;br /&gt;
    // Most backwards compatible layout without the blocks - this is the layout used by default.&lt;br /&gt;
    &#039;base&#039; =&amp;gt; array(&lt;br /&gt;
        &#039;file&#039; =&amp;gt; &#039;columns1.php&#039;,&lt;br /&gt;
        &#039;regions&#039; =&amp;gt; array(),&lt;br /&gt;
    ),&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;file&#039; =&amp;gt; &#039;columns2.php&#039;,&lt;br /&gt;
        &#039;regions&#039; =&amp;gt; array(&#039;side-pre&#039;),&lt;br /&gt;
        &#039;defaultregion&#039; =&amp;gt; &#039;side-pre&#039;,&lt;br /&gt;
    ),&lt;br /&gt;
    // Main course page.&lt;br /&gt;
    &#039;course&#039; =&amp;gt; array(&lt;br /&gt;
        &#039;file&#039; =&amp;gt; &#039;columns2.php&#039;,&lt;br /&gt;
        &#039;regions&#039; =&amp;gt; array(&#039;side-pre&#039;),&lt;br /&gt;
        &#039;defaultregion&#039; =&amp;gt; &#039;side-pre&#039;,&lt;br /&gt;
        &#039;options&#039; =&amp;gt; array(&#039;langmenu&#039; =&amp;gt; true),&lt;br /&gt;
    ),&lt;br /&gt;
    &#039;coursecategory&#039; =&amp;gt; array(&lt;br /&gt;
        &#039;file&#039; =&amp;gt; &#039;columns2.php&#039;,&lt;br /&gt;
        &#039;regions&#039; =&amp;gt; array(&#039;side-pre&#039;),&lt;br /&gt;
        &#039;defaultregion&#039; =&amp;gt; &#039;side-pre&#039;,&lt;br /&gt;
    ),&lt;br /&gt;
    // Part of course, typical for modules - default page layout if $cm specified in require_login().&lt;br /&gt;
    &#039;incourse&#039; =&amp;gt; array(&lt;br /&gt;
        &#039;file&#039; =&amp;gt; &#039;columns2.php&#039;,&lt;br /&gt;
        &#039;regions&#039; =&amp;gt; array(&#039;side-pre&#039;),&lt;br /&gt;
        &#039;defaultregion&#039; =&amp;gt; &#039;side-pre&#039;,&lt;br /&gt;
    ),&lt;br /&gt;
    // The site home page.&lt;br /&gt;
    &#039;frontpage&#039; =&amp;gt; array(&lt;br /&gt;
        &#039;file&#039; =&amp;gt; &#039;columns2.php&#039;,&lt;br /&gt;
        &#039;regions&#039; =&amp;gt; array(&#039;side-pre&#039;),&lt;br /&gt;
        &#039;defaultregion&#039; =&amp;gt; &#039;side-pre&#039;,&lt;br /&gt;
        &#039;options&#039; =&amp;gt; array(&#039;nonavbar&#039; =&amp;gt; true),&lt;br /&gt;
    ),&lt;br /&gt;
    // Server administration scripts.&lt;br /&gt;
    &#039;admin&#039; =&amp;gt; array(&lt;br /&gt;
        &#039;file&#039; =&amp;gt; &#039;columns2.php&#039;,&lt;br /&gt;
        &#039;regions&#039; =&amp;gt; array(&#039;side-pre&#039;),&lt;br /&gt;
        &#039;defaultregion&#039; =&amp;gt; &#039;side-pre&#039;,&lt;br /&gt;
    ),&lt;br /&gt;
    // My dashboard page.&lt;br /&gt;
    &#039;mydashboard&#039; =&amp;gt; array(&lt;br /&gt;
        &#039;file&#039; =&amp;gt; &#039;columns2.php&#039;,&lt;br /&gt;
        &#039;regions&#039; =&amp;gt; array(&#039;side-pre&#039;),&lt;br /&gt;
        &#039;defaultregion&#039; =&amp;gt; &#039;side-pre&#039;,&lt;br /&gt;
        &#039;options&#039; =&amp;gt; array(&#039;langmenu&#039; =&amp;gt; true),&lt;br /&gt;
    ),&lt;br /&gt;
    // My public page.&lt;br /&gt;
    &#039;mypublic&#039; =&amp;gt; array(&lt;br /&gt;
        &#039;file&#039; =&amp;gt; &#039;columns2.php&#039;,&lt;br /&gt;
        &#039;regions&#039; =&amp;gt; array(&#039;side-pre&#039;),&lt;br /&gt;
        &#039;defaultregion&#039; =&amp;gt; &#039;side-pre&#039;,&lt;br /&gt;
    ),&lt;br /&gt;
    &#039;login&#039; =&amp;gt; array(&lt;br /&gt;
        &#039;file&#039; =&amp;gt; &#039;login.php&#039;,&lt;br /&gt;
        &#039;regions&#039; =&amp;gt; array(),&lt;br /&gt;
        &#039;options&#039; =&amp;gt; array(&#039;langmenu&#039; =&amp;gt; true),&lt;br /&gt;
    ),&lt;br /&gt;
&lt;br /&gt;
    // Pages that appear in pop-up windows - no navigation, no blocks, no header.&lt;br /&gt;
    &#039;popup&#039; =&amp;gt; array(&lt;br /&gt;
        &#039;file&#039; =&amp;gt; &#039;columns1.php&#039;,&lt;br /&gt;
        &#039;regions&#039; =&amp;gt; array(),&lt;br /&gt;
        &#039;options&#039; =&amp;gt; array(&#039;nofooter&#039; =&amp;gt; true, &#039;nonavbar&#039; =&amp;gt; true),&lt;br /&gt;
    ),&lt;br /&gt;
    // No blocks and minimal footer - used for legacy frame layouts only!&lt;br /&gt;
    &#039;frametop&#039; =&amp;gt; array(&lt;br /&gt;
        &#039;file&#039; =&amp;gt; &#039;columns1.php&#039;,&lt;br /&gt;
        &#039;regions&#039; =&amp;gt; array(),&lt;br /&gt;
        &#039;options&#039; =&amp;gt; array(&#039;nofooter&#039; =&amp;gt; true, &#039;nocoursefooter&#039; =&amp;gt; true),&lt;br /&gt;
    ),&lt;br /&gt;
    // Embeded pages, like iframe/object embeded in moodleform - it needs as much space as possible.&lt;br /&gt;
    &#039;embedded&#039; =&amp;gt; array(&lt;br /&gt;
        &#039;file&#039; =&amp;gt; &#039;embedded.php&#039;,&lt;br /&gt;
        &#039;regions&#039; =&amp;gt; array()&lt;br /&gt;
    ),&lt;br /&gt;
    // Used during upgrade and install, and for the &#039;This site is undergoing maintenance&#039; message.&lt;br /&gt;
    // This must not have any blocks, links, or API calls that would lead to database or cache interaction.&lt;br /&gt;
    // Please be extremely careful if you are modifying this layout.&lt;br /&gt;
    &#039;maintenance&#039; =&amp;gt; array(&lt;br /&gt;
        &#039;file&#039; =&amp;gt; &#039;maintenance.php&#039;,&lt;br /&gt;
        &#039;regions&#039; =&amp;gt; array(),&lt;br /&gt;
    ),&lt;br /&gt;
    // Should display the content and basic headers only.&lt;br /&gt;
    &#039;print&#039; =&amp;gt; array(&lt;br /&gt;
        &#039;file&#039; =&amp;gt; &#039;columns1.php&#039;,&lt;br /&gt;
        &#039;regions&#039; =&amp;gt; array(),&lt;br /&gt;
        &#039;options&#039; =&amp;gt; array(&#039;nofooter&#039; =&amp;gt; true, &#039;nonavbar&#039; =&amp;gt; false),&lt;br /&gt;
    ),&lt;br /&gt;
    // The pagelayout used when a redirection is occuring.&lt;br /&gt;
    &#039;redirect&#039; =&amp;gt; array(&lt;br /&gt;
        &#039;file&#039; =&amp;gt; &#039;embedded.php&#039;,&lt;br /&gt;
        &#039;regions&#039; =&amp;gt; array(),&lt;br /&gt;
    ),&lt;br /&gt;
    // The pagelayout used for reports.&lt;br /&gt;
    &#039;report&#039; =&amp;gt; array(&lt;br /&gt;
        &#039;file&#039; =&amp;gt; &#039;columns2.php&#039;,&lt;br /&gt;
        &#039;regions&#039; =&amp;gt; array(&#039;side-pre&#039;),&lt;br /&gt;
        &#039;defaultregion&#039; =&amp;gt; &#039;side-pre&#039;,&lt;br /&gt;
    ),&lt;br /&gt;
    // The pagelayout used for safebrowser and securewindow.&lt;br /&gt;
    &#039;secure&#039; =&amp;gt; array(&lt;br /&gt;
        &#039;file&#039; =&amp;gt; &#039;secure.php&#039;,&lt;br /&gt;
        &#039;regions&#039; =&amp;gt; array(&#039;side-pre&#039;),&lt;br /&gt;
        &#039;defaultregion&#039; =&amp;gt; &#039;side-pre&#039;&lt;br /&gt;
    )&lt;br /&gt;
];&lt;br /&gt;
&lt;br /&gt;
$THEME-&amp;gt;parents = [];&lt;br /&gt;
$THEME-&amp;gt;enable_dock = false;&lt;br /&gt;
$THEME-&amp;gt;csstreepostprocessor = &#039;theme_boost_css_tree_post_processor&#039;;&lt;br /&gt;
$THEME-&amp;gt;extrascsscallback = &#039;theme_boost_get_extra_scss&#039;;&lt;br /&gt;
$THEME-&amp;gt;prescsscallback = &#039;theme_boost_get_pre_scss&#039;;&lt;br /&gt;
$THEME-&amp;gt;yuicssmodules = array();&lt;br /&gt;
$THEME-&amp;gt;rendererfactory = &#039;theme_overridden_renderer_factory&#039;;&lt;br /&gt;
$THEME-&amp;gt;undeletableblocktypes = &#039;&#039;;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Basic theme example settings explained===&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;
; $THEME-&amp;gt;name : 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;
; $THEME-&amp;gt;sheets : An array containing the names of the CSS stylesheets to include for this theme. Boost uses scss instead of css so it doesn&#039;t list any files here. Note that it is just the name of the stylesheet and does not contain the directory or the file extension. 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;
; $THEME-&amp;gt;editorsheets : An array containing the names of the CSS stylesheets to include for the TinyMCE text editor content area. Boost does not list any stylesheets here so TinyMCE will use plain text styles.&lt;br /&gt;
&lt;br /&gt;
; $THEME-&amp;gt;layouts : In this example, boost maps each of the 18 different layout types to one of 6 different layout files. For more information see the [[#Layouts|layouts]] section below.&lt;br /&gt;
&lt;br /&gt;
; $THEME-&amp;gt;parents : This defines the themes that the theme will extend. Boost has no parents, but if you were extending boost you would list it here like: $THEME-&amp;gt;parents = [&#039;boost&#039;];&lt;br /&gt;
&lt;br /&gt;
; $THEME-&amp;gt;enable_dock : Boost does not support docking blocks. For a example of a theme with a dock for blocks, see theme_bootstrapbase.&lt;br /&gt;
&lt;br /&gt;
; $THEME-&amp;gt;csstreepostprocessor : Boost uses a function to post process the CSS. This is an advanced feature and is used in boost to automatically apply vendor prefixes to CSS styles.&lt;br /&gt;
&lt;br /&gt;
; $THEME-&amp;gt;yuicssmodules : This is an old setting that defines a list of YUI css files to load. These files interfere with existing styles and it is recommended to set this to an empty string to prevent any files being included.&lt;br /&gt;
&lt;br /&gt;
; $THEME-&amp;gt;rendererfactory : Almost all themes need this setting to be set to &#039;theme_overridden_renderer_factory&#039; or the theme will not be able to customise any core renderers.&lt;br /&gt;
&lt;br /&gt;
; $THEME-&amp;gt;undeletableblocktypes : This is a comma separated list of block types that cannot be deleted in this theme. If you don&#039;t define this - the admin and settings blocks will be undeletable by default. Because Boost provides alternate ways to navigate it does not require any blocks.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Note&#039;&#039;&#039;&#039;&#039;: When you first begin writing themes, 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;
===Locations of CSS files===&lt;br /&gt;
First lets look at where CSS can be included from within Moodle:&lt;br /&gt;
; \theme\themename\style\*.css : This is the default location for all of the stylesheets that are used by a theme and the place which should be used by a theme designer if this theme is using CSS. Alternatives to CSS are LESS and SCSS which are more powerful, flexible and easier to maintain.&lt;br /&gt;
&lt;br /&gt;
New theme developers should note that the order in which CSS files are found and included creates a hierarchy.  This order ensures that the rules, within a theme&#039;s style sheets, take precedence over identical rules in other files that may have been introduced before.  This can both extend another files definitions (see parent array in the config file) and also ensures that the current theme&#039;s CSS rules/definitions have the last say.&lt;br /&gt;
&lt;br /&gt;
There are other locations that can be used (although very rarely) to include CSS in a page. A developer of a php file can manually specify a stylesheet from anywhere within Moodle, like the database. Usually, if code is doing this, it is because there is a non-theme config or plugin setting that contains information requires special CSS information.  As a theme designer you should be aware of, but not have to worry about, these locations of CSS files.  Here are some examples:&lt;br /&gt;
&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;
As theme designers, we will only use the first method of introducing CSS: adding rules to a stylesheet file located in the theme&#039;s style directory.&lt;br /&gt;
===Better than CSS===&lt;br /&gt;
Browsers understand CSS well - but it is hard to write and maintain. The language does not support inheritance and reuse. [https://developer.mozilla.org/en-US/docs/Web/CSS/Using_CSS_variables Support for variables] exists in more modern browsers only.  This is why CSS pre-processors were invented. Moodle supports 2 different types of CSS pre-processors (Less and Sass) but the Sass pre-processor is recommended by far. &lt;br /&gt;
&lt;br /&gt;
For more information on Less and Sass see: &lt;br /&gt;
* [https://en.wikipedia.org/wiki/Less_(stylesheet_language) Less (wikipedia)]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Sass_(stylesheet_language) Sass (wikipedia)]&lt;br /&gt;
&lt;br /&gt;
To use either one, define $THEME-&amp;gt;lessfile = &#039;filename&#039;; or $THEME-&amp;gt;scss = &#039;filename&#039;; in your themes config.php. Moodle will then use one of it&#039;s in-built CSS pre-processor to compile the CSS the first time it is loaded (or everytime if themedesignermode is enabled in $CFG).&lt;br /&gt;
&lt;br /&gt;
===Moodle&#039;s core CSS 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. Please note that none of the themes provided in the standard install by Moodle use CSS stylesheets directly. Instead they use either LESS or SCSS to generate the style sheets. They all list one main LESS or SCSS file named &amp;quot;moodle&amp;quot; in the less or scss folders and this file uses imports to load all other required files.&lt;br /&gt;
&lt;br /&gt;
===How to write effective CSS rules within Moodle===&lt;br /&gt;
Writing good CSS rules is incredibly important.&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 prompt developers to use appropriate classnames.&lt;br /&gt;
&lt;br /&gt;
====&amp;lt;body&amp;gt; CSS id and classes ====&lt;br /&gt;
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;
* The course format type will be added such as format-weeks&lt;br /&gt;
* The course id, context id and category id are all added as in &amp;quot;course-11 context-616 cmid-202 category-1&amp;quot;&lt;br /&gt;
* The pagelayout is added as &amp;quot;pagelayout-incourse&amp;quot;&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 html&amp;gt;&lt;br /&gt;
&amp;lt;body id=&amp;quot;page-mod-forum-view&amp;quot; class=&amp;quot;format-weeks forumtype-social  path-mod path-mod-forum safari dir-ltr lang-en yui-skin-sam yui3-skin-sam damyon-per-in-moodle-com--stable_master pagelayout-incourse course-11 context-616 cmid-202 category-1  jsenabled&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Writing your rules====&lt;br /&gt;
&lt;br /&gt;
By following the [[CSS coding style]] and CSS best-practices and understanding the [http://htmlhelp.com/reference/css/structure.html#cascade cascading order] of CSS a theme developer will reduce collisions and lines of CSS that is written. CSS classes have been placed where it is believed anyone may want to apply their own styles.&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 {&lt;br /&gt;
    border: 1px solid blue;&lt;br /&gt;
}&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 {&lt;br /&gt;
    border: 1px solid blue;&lt;br /&gt;
}&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;
It is also important to write as FEW rules as possible. CSS is extremely hard to maintain and lots of CSS is bad for client side performance. Themes based on the Bootstrap CSS framework can achieve most things without writing a single additional CSS rule. Please read [http://v4-alpha.getbootstrap.com/ the Bootstrap documentation] and learn how to use Bootstrap well to avoid adding unnecessary CSS rules for things already provided by the framework.&lt;br /&gt;
&lt;br /&gt;
==Layouts==&lt;br /&gt;
Layouts are defined in &#039;&#039;&#039;config.php&#039;&#039;&#039;.&lt;br /&gt;
&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. &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.&lt;br /&gt;
&lt;br /&gt;
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;boost&#039;,&lt;br /&gt;
        &#039;file&#039; =&amp;gt; &#039;columns2.php&#039;,&lt;br /&gt;
        &#039;regions&#039; =&amp;gt; array(&#039;side-pre&#039;),&lt;br /&gt;
        &#039;defaultregion&#039; =&amp;gt; &#039;side-pre&#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. &#039;&#039;Optional&#039;&#039;&lt;br /&gt;
; file : is the name of the layout file this layout wants to use. &#039;&#039;Required&#039;&#039;&lt;br /&gt;
; regions : is the different block regions (places you can put blocks) within the theme. &#039;&#039;Required&#039;&#039;&lt;br /&gt;
; defaultregion : is the default location when adding new blocks. &#039;&#039;&#039;Required if regions is non-empty, otherwise optional&#039;&#039;&#039;&lt;br /&gt;
; options : an array of layout specific options described in detail below. &#039;&#039;&#039;Optional&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;theme&#039;&#039;&#039; is optional. Normally the the layout file is looked for in the current theme, or, if it is not there, in the parent theme. However, you can use a layout file from any other theme by giving the theme name here.&lt;br /&gt;
&lt;br /&gt;
You can define whatever regions you like. You just need to pick a name for each one. Most themes just use one or both of &#039;&#039;&#039;side_pre&#039;&#039;&#039; and &#039;&#039;&#039;side_post&#039;&#039;&#039;, which is like &#039;left side&#039; and &#039;right side&#039;, except in right to left languages, when they are reversed. If you say in config.php that your the layout provides regions called &#039;fred&#039; and &#039;barney&#039;, then you must call $OUTPUT-&amp;gt;blocks_for_region(&#039;fred&#039;) and $OUTPUT-&amp;gt;blocks_for_region(&#039;barney&#039;) somewhere in the layout file.&lt;br /&gt;
&lt;br /&gt;
The final setting &#039;&#039;&#039;options&#039;&#039;&#039; 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 within the boost theme. If you take a look first at theme/boost/config.php you will notice that several layouts specify options &#039;&#039;&#039;langmenu&#039;&#039;&#039; and &#039;&#039;&#039;nonavbar&#039;&#039;&#039; which can both be set to either true or false. The layout options can then be used on the layout .php files, mustache templates and renderers.&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;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Layout files==&lt;br /&gt;
Layout files are used to provide a different layout of the elements of the page for different types of pages in Moodle.&lt;br /&gt;
&lt;br /&gt;
In the config.php for a theme - there is a list of &#039;layouts&#039; which map a page type to a specific php page in the layout folder for the theme.&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&#039;&#039;theme/boost/config.php&#039;&#039;&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
    &#039;popup&#039; =&amp;gt; array(                                                                                                               &lt;br /&gt;
        &#039;file&#039; =&amp;gt; &#039;columns1.php&#039;,                                                                                                   &lt;br /&gt;
        &#039;regions&#039; =&amp;gt; array(),                                                                                                       &lt;br /&gt;
        &#039;options&#039; =&amp;gt; array(&#039;nofooter&#039; =&amp;gt; true, &#039;nonavbar&#039; =&amp;gt; true),                                                                 &lt;br /&gt;
    ),                                &lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This means every page that has pagetype &#039;popup&#039; will be displayed with the &#039;theme/themename/layout/columns1.php&#039; file, it will have no block regions and there are some options that will be available to the page in the global variable &amp;quot;$PAGE-&amp;gt;layout_options&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
It is possible to implement a layout file directly in php by echoing the HTML for the page, or mixing php tags with HTML - but a better way to create a layout file is to gather all the information required for the layout into a context and render it with a mustache template. &lt;br /&gt;
&lt;br /&gt;
[[Templates| Read about mustache templates]]&lt;br /&gt;
&lt;br /&gt;
Using templates for layout files makes a lot of sense because they are easier to read and maintain than mixing PHP and HTML in the same file.&lt;br /&gt;
&lt;br /&gt;
A simple example of a layout file using a template is at:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;theme/boost/layout/columns1.php&#039;&#039;&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
$bodyattributes = $OUTPUT-&amp;gt;body_attributes([]);                                                                                     &lt;br /&gt;
                                                                                                                                    &lt;br /&gt;
$templatecontext = [                                                                                                                &lt;br /&gt;
    &#039;sitename&#039; =&amp;gt; format_string($SITE-&amp;gt;shortname, true, [&#039;context&#039; =&amp;gt; context_course::instance(SITEID), &amp;quot;escape&amp;quot; =&amp;gt; false]),        &lt;br /&gt;
    &#039;output&#039; =&amp;gt; $OUTPUT,                                                                                                            &lt;br /&gt;
    &#039;bodyattributes&#039; =&amp;gt; $bodyattributes                                                                                             &lt;br /&gt;
];                                                                                                                                  &lt;br /&gt;
                                                                                                                                    &lt;br /&gt;
echo $OUTPUT-&amp;gt;render_from_template(&#039;theme_boost/columns1&#039;, $templatecontext);  &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This example puts some variables into a templatecontext and then calls &amp;quot;render_from_template&amp;quot; to render the mustache template for this layout. The template is located at: &amp;quot;theme/boost/templates/columns1.mustache&amp;quot;. It is possible to put PHP classes in the context for the mustache template - and any public properties or methods which accept no arguments will be available to the template. $OUTPUT has several useful public methods which accept no arguments and is a valuable class when creating a layout template in mustache.&lt;br /&gt;
&lt;br /&gt;
The mustache template for this layout is shown here:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;theme/boost/templates/columns1.mustache&#039;&#039;&lt;br /&gt;
&amp;lt;code handlebars&amp;gt;&lt;br /&gt;
{{{ output.doctype }}}                                                                                                              &lt;br /&gt;
&amp;lt;html {{{ output.htmlattributes }}}&amp;gt;                                                                                                &lt;br /&gt;
&amp;lt;head&amp;gt;                                                                                                                              &lt;br /&gt;
    &amp;lt;title&amp;gt;{{{ output.page_title }}}&amp;lt;/title&amp;gt;                                                                                        &lt;br /&gt;
    &amp;lt;link rel=&amp;quot;shortcut icon&amp;quot; href=&amp;quot;{{{ output.favicon }}}&amp;quot; /&amp;gt;                                                                      &lt;br /&gt;
    {{{ output.standard_head_html }}}                                                                                               &lt;br /&gt;
    &amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=device-width, initial-scale=1.0&amp;quot;&amp;gt;                                                          &lt;br /&gt;
&amp;lt;/head&amp;gt;                                                                                                                             &lt;br /&gt;
                                                                                                                                    &lt;br /&gt;
&amp;lt;body {{{ bodyattributes }}}&amp;gt;                                                                                                       &lt;br /&gt;
                                                                                                                                    &lt;br /&gt;
&amp;lt;div id=&amp;quot;page-wrapper&amp;quot;&amp;gt;                                                                                                             &lt;br /&gt;
                                                                                                                                    &lt;br /&gt;
    {{{ output.standard_top_of_body_html }}}                                                                                        &lt;br /&gt;
                                                                                                                                    &lt;br /&gt;
    &amp;lt;div id=&amp;quot;page&amp;quot; class=&amp;quot;container-fluid&amp;quot;&amp;gt;                                                                                         &lt;br /&gt;
        &amp;lt;div id=&amp;quot;page-content&amp;quot; class=&amp;quot;row&amp;quot;&amp;gt;                                                                                         &lt;br /&gt;
            &amp;lt;div id=&amp;quot;region-main-box&amp;quot; class=&amp;quot;col-xs-12&amp;quot;&amp;gt;                                                                            &lt;br /&gt;
                &amp;lt;section id=&amp;quot;region-main&amp;quot;&amp;gt;                                                                                          &lt;br /&gt;
                    &amp;lt;div class=&amp;quot;card card-block&amp;quot;&amp;gt;                                                                                   &lt;br /&gt;
                    {{{ output.course_content_header }}}                                                                            &lt;br /&gt;
                    {{{ output.main_content }}}                                                                                     &lt;br /&gt;
                    {{{ output.course_content_footer }}}                                                                            &lt;br /&gt;
                    &amp;lt;/div&amp;gt;                                                                                                          &lt;br /&gt;
                &amp;lt;/section&amp;gt;                                                                                                          &lt;br /&gt;
            &amp;lt;/div&amp;gt;                                                                                                                  &lt;br /&gt;
        &amp;lt;/div&amp;gt;                                                                                                                      &lt;br /&gt;
    &amp;lt;/div&amp;gt;                                                                                                                          &lt;br /&gt;
&amp;lt;/div&amp;gt;                                                                                                                              &lt;br /&gt;
{{{ output.standard_end_of_body_html }}}                                                                                            &lt;br /&gt;
&amp;lt;/body&amp;gt;                                                                                                                             &lt;br /&gt;
&amp;lt;/html&amp;gt;                                                                                                                             &lt;br /&gt;
{{#js}}                                                                                                                             &lt;br /&gt;
require([&#039;theme_boost/loader&#039;]);                                                                                                    &lt;br /&gt;
{{/js}} &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Explaining each line of this template will answer a lot of questions. This example contains only the very minimal required functions to generate a valid layout. You should consider all of the sections below as required in every layout file (although any of the HTML tags can and should be altered). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code handlebars&amp;gt;&lt;br /&gt;
{{{ output.doctype }}}                                                                                                              &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is an example of calling a function on $OUTPUT in php. Because there is a public method on the output class named &amp;quot;doctype&amp;quot; which accepts no arguments - mustache will call it and return the output. We call a function to generate the doctype tag because calling this function returns us the correct HTML for the document type for this theme AND it sets a different content type header (including the charset) depending on the doc type for the theme. Setting a correct charset in every page is important to prevent a class of XSS attacks. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code handlebars&amp;gt;&lt;br /&gt;
&amp;lt;html {{{ output.htmlattributes }}}&amp;gt;                                                                                                &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now we have returned our root tag - the html tag. We included a set of default attributes for the page by calling the htmlattributes function of our output class. This includes the correct language attribute for the entire page and can include an xml namespace for XHTML documents. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code handlebars&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;                                                                                                                              &lt;br /&gt;
    &amp;lt;title&amp;gt;{{{ output.page_title }}}&amp;lt;/title&amp;gt;                                                                                        &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now we have started the head section of our document and set the title for the page. Notice the title is already escaped by the output class so we are using triple mustache tags &amp;quot;{{{&amp;quot; to avoid double escaping.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code handlebars&amp;gt;&lt;br /&gt;
    &amp;lt;link rel=&amp;quot;shortcut icon&amp;quot; href=&amp;quot;{{{ output.favicon }}}&amp;quot; /&amp;gt;                                                                      &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We call a function to get the url to the favicon. The favicon is a file in the theme pix directory and it is served through the &amp;quot;theme/image.php&amp;quot; file which adds special caching headers for images.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code handlebars&amp;gt;&lt;br /&gt;
    {{{ output.standard_head_html }}}                                                                                               &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The standard head html function performs a lot of setup that is required for our page. It internally creates the block regions, creates meta tags including keywords for SEO, initialises the common javascript modules, generates links to the style sheets and injects any additional HTML set by the $CFG-&amp;gt;additionalhtmlhead setting.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code handlebars&amp;gt;&lt;br /&gt;
    &amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=device-width, initial-scale=1.0&amp;quot;&amp;gt;                                                          &lt;br /&gt;
&amp;lt;/head&amp;gt;                                                                                                                             &lt;br /&gt;
                                                                                                                                    &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This viewport meta tag is recommended by bootstrap for &amp;quot;proper viewport rendering and touch zooming&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code handlebars&amp;gt;&lt;br /&gt;
&amp;lt;body {{{ bodyattributes }}}&amp;gt;                                                                                                       &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The body attributes include the language direction and standard classes for the page. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code handlebars&amp;gt;&lt;br /&gt;
                                                                                                                                    &lt;br /&gt;
&amp;lt;div id=&amp;quot;page-wrapper&amp;quot;&amp;gt;                                                                                                             &lt;br /&gt;
                                                                                                                                    &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the Boost theme we use a page-wrapper div to prevent content from disappearing under the fixed header.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code handlebars&amp;gt;&lt;br /&gt;
    {{{ output.standard_top_of_body_html }}}                                                                                        &lt;br /&gt;
                                                                                                                                    &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The standard_top_of_body_html should be included in every layout and includes skip links for accessibility as well as initialising jquery, yui and our own static javascript files.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code handlebars&amp;gt;&lt;br /&gt;
    &amp;lt;div id=&amp;quot;page&amp;quot; class=&amp;quot;container-fluid&amp;quot;&amp;gt;                                                                                         &lt;br /&gt;
        &amp;lt;div id=&amp;quot;page-content&amp;quot; class=&amp;quot;row&amp;quot;&amp;gt;                                                                                         &lt;br /&gt;
            &amp;lt;div id=&amp;quot;region-main-box&amp;quot; class=&amp;quot;col-xs-12&amp;quot;&amp;gt;                                                                            &lt;br /&gt;
                &amp;lt;section id=&amp;quot;region-main&amp;quot;&amp;gt;                                                                                          &lt;br /&gt;
                    &amp;lt;div class=&amp;quot;card card-block&amp;quot;&amp;gt;                                                                                   &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is standard HTML tags defining the content region for this page. The classes come from bootstrap 4.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code handlebars&amp;gt;&lt;br /&gt;
                    {{{ output.course_content_header }}}                                                                            &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The course content header allows Moodle plugins to inject things in the top of the page. This is used for &amp;quot;notifications&amp;quot; for example (which are the alert boxes you see after submitting a form). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code handlebars&amp;gt;&lt;br /&gt;
                    {{{ output.main_content }}}                                                                                     &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The main content function returns the real content for the page.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code handlebars&amp;gt;&lt;br /&gt;
                    {{{ output.course_content_footer }}}                                                                            &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The course content footer is used mainly by course formats to insert things after the main content.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code handlebars&amp;gt;&lt;br /&gt;
                    &amp;lt;/div&amp;gt;                                                                                                          &lt;br /&gt;
                &amp;lt;/section&amp;gt;                                                                                                          &lt;br /&gt;
            &amp;lt;/div&amp;gt;                                                                                                                  &lt;br /&gt;
        &amp;lt;/div&amp;gt;                                                                                                                      &lt;br /&gt;
    &amp;lt;/div&amp;gt;                                                                                                                          &lt;br /&gt;
&amp;lt;/div&amp;gt;                                                                                                                              &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We close all our open tags...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code handlebars&amp;gt;&lt;br /&gt;
{{{ output.standard_end_of_body_html }}}                                                                                            &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This function will add all of the javascript that was required while rendering the page. Javascript is added at the end of the document so that it does not block rendering the page. &lt;br /&gt;
&amp;lt;code handlebars&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;
We finish the HTML for our page. &lt;br /&gt;
&amp;lt;code handlebars&amp;gt;&lt;br /&gt;
{{#js}}                                                                                                                             &lt;br /&gt;
require([&#039;theme_boost/loader&#039;]);                                                                                                    &lt;br /&gt;
{{/js}} &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This final section is required for bootstrap 4 themes and loads all the Bootstrap 4 Javascript dependencies. &lt;br /&gt;
&lt;br /&gt;
If we had block regions in this layout we would need to insert them in the template. The way we would do this is by getting the HTML for the block region in our layout php file, adding it to the context and then including it in our template.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;theme/boost/layout/columns2.php&#039;&#039;&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
$blockshtml = $OUTPUT-&amp;gt;blocks(&#039;side-pre&#039;);                                                                                          &lt;br /&gt;
$hasblocks = strpos($blockshtml, &#039;data-block=&#039;) !== false;&lt;br /&gt;
...&lt;br /&gt;
$templatecontext = [&lt;br /&gt;
...&lt;br /&gt;
    &#039;sidepreblocks&#039; =&amp;gt; $blockshtml,                                                                                                 &lt;br /&gt;
    &#039;hasblocks&#039; =&amp;gt; $hasblocks,&lt;br /&gt;
...&lt;br /&gt;
];&lt;br /&gt;
...&lt;br /&gt;
echo $OUTPUT-&amp;gt;render_from_template(&#039;theme_boost/columns2&#039;, $templatecontext);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;theme/boost/templates/columns2.mustache&#039;&#039;&lt;br /&gt;
&amp;lt;code handlebars&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
                {{#hasblocks}}                                                                                                      &lt;br /&gt;
                &amp;lt;section data-region=&amp;quot;blocks-column&amp;quot; class=&amp;quot;hidden-print&amp;quot;&amp;gt;                                                          &lt;br /&gt;
                    {{{ sidepreblocks }}}                                                                                           &lt;br /&gt;
                &amp;lt;/section&amp;gt;                                                                                                          &lt;br /&gt;
                {{/hasblocks}} &lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/code&amp;gt;&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;
==Language File==&lt;br /&gt;
&lt;br /&gt;
You need to create a language file for your theme with a few standard strings in it. At a minimum create a file called lang/en/theme_themename.php in your theme folder. For example, the &#039;boost&#039; theme has a language file called lang/en/theme_boost.php. &lt;br /&gt;
&lt;br /&gt;
You &#039;&#039;&#039;must&#039;&#039;&#039; define the following lines in your file (example is from Boost theme, adapt as required):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$string[&#039;pluginname&#039;] = &#039;Boost&#039;;&lt;br /&gt;
$string[&#039;region-side-pre&#039;] = &#039;Right&#039;;&lt;br /&gt;
$string[&#039;choosereadme&#039;] = &#039;Boost is a modern highly-customisable theme. This theme is intended to be used directly, or as a parent theme when creating new themes utilising Bootstrap 4.&#039;;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Without the above you will get notices for the missing strings.&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 their 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 your layout file so they can be inserted by your layout template. &lt;br /&gt;
&#039;&#039;theme/yourtheme/layout/somelayout.php&#039;&#039;&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
$templatecontext = [&lt;br /&gt;
...&lt;br /&gt;
$imageone =&amp;gt; $OUTPUT-&amp;gt;pix_url(&#039;imageone&#039;, &#039;theme&#039;),&lt;br /&gt;
$imagetwo =&amp;gt; $OUTPUT-&amp;gt;pix_url(&#039;subdir/imagetwo&#039;, &#039;theme&#039;),&lt;br /&gt;
...&lt;br /&gt;
];&lt;br /&gt;
&lt;br /&gt;
echo $OUTPUT-&amp;gt;render_from_template(&#039;theme_yourtheme/somelayout&#039;, $templatecontext);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We use a method of Moodle&#039;s output library to generate the URL to the image. 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;
&#039;&#039;&#039;DO NOT&#039;&#039;&#039; include the image file extension. Moodle will work it out automatically and it will not work if you do include it.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;theme/yourtheme/templates/somelayout.mustache&#039;&#039;&lt;br /&gt;
&amp;lt;code handlebars&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;img src=&amp;quot;{{{imageone}}}&amp;quot; alt=&amp;quot;Please give your image alt text or set the role to presentation&amp;quot; width=&amp;quot;50&amp;quot; height=&amp;quot;50&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;img src=&amp;quot;{{{imagetwo}}}&amp;quot; alt=&amp;quot;Please give your image alt text or set the role to presentation&amp;quot; width=&amp;quot;50&amp;quot; height=&amp;quot;50&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following is how you would use the images from within CSS, SCSS or Less as background images.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code css&amp;gt;&lt;br /&gt;
.divone {&lt;br /&gt;
    background-image: url([[pix:theme|imageone]]);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.divtwo {&lt;br /&gt;
    background-image: url([[pix:theme|subdir/imagetwo]]);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&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_core/moodlelogo.gif&lt;br /&gt;
# /theme/themename/pix_core/i/user.gif&lt;br /&gt;
&#039;&#039;Note that we have created a &#039;&#039;&#039;pix_core&#039;&#039;&#039; directory in our theme. For a specific activity module like chat we need a &#039;&#039;&#039;pix_plugins/mod/chat&#039;&#039;&#039; directory. This directory is &amp;quot;pix_plugins&amp;quot; and then the plugin type (mod) and then the plugin name (chat). &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_core/moodlelogo.png&lt;br /&gt;
# /theme/themename/pix_core/i/user.bmp&lt;br /&gt;
&lt;br /&gt;
For a more detailed description of how this all works see the page on [[Using images in a theme]].&lt;br /&gt;
&lt;br /&gt;
==Adding custom fonts==&lt;br /&gt;
{{Moodle 2.6}}&lt;br /&gt;
&lt;br /&gt;
CSS3 standard introduced the possibility to specify custom fonts, see [http://www.w3schools.com/css/css3_fonts.asp CSS3 Fonts tutorial].&lt;br /&gt;
&lt;br /&gt;
Since 2.6 Moodle includes support for plugin or theme fonts. It is very similar to theme images and pix subdirectories.&lt;br /&gt;
&lt;br /&gt;
===Font file locations===&lt;br /&gt;
&lt;br /&gt;
Depending on where you intend to use the font put it into one of the following locations:&lt;br /&gt;
* /lib/fonts/ - fonts used in core&lt;br /&gt;
* /plugindir/fonts/ - fonts used by plugin&lt;br /&gt;
* /theme/sometheme/fonts/ - theme specific fonts&lt;br /&gt;
&lt;br /&gt;
You can also override core and plugin fonts in theme:&lt;br /&gt;
* /theme/sometheme/fonts_core/ - overridden core fonts&lt;br /&gt;
* /theme/sometheme/fonts_plugins/plugintype_pluginname/ - overridden fonts of some plugin&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
* subdirectories are not allowed&lt;br /&gt;
* use only lowercase alphanumeric characters and underscore in font file names&lt;br /&gt;
* WOFF (Web Open Font Format), TTF (True Type Fonts), OTF (OpenType Fonts), SVG (Scalable Vector Graphic) and EOT (Embedded OpenType) fonts are supported, but for the sake of humanity (And [https://tracker.moodle.org/browse/MDL-15169 MDL_15169] ) please use only WOFF fonts to encourage the quick death of IE8.&lt;br /&gt;
&lt;br /&gt;
===CSS placeholders===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code css&amp;gt;&lt;br /&gt;
@font-face {&lt;br /&gt;
    font-family: ThreeDumb;&lt;br /&gt;
    src: url([[font:mod_book|3dumb.woff]]);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The placeholder references file /mod/book/fonts/3dumb.woff, the new fontface could be for example used for book headings:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code css&amp;gt;&lt;br /&gt;
.path-mod-book .book_chapter_title {&lt;br /&gt;
    font-family: ThreeDumb;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
If you want to use some font in theme only, you can for example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code css&amp;gt;&lt;br /&gt;
@font-face {&lt;br /&gt;
    font-family: goodDogFont;&lt;br /&gt;
    src: url([[font:theme|good_dog.woff]]);&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
a {font-family:goodDogFont;}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The font would be stored in /theme/yourtheme/fonts/good_dog.woff file.&lt;br /&gt;
&lt;br /&gt;
===More free fonts===&lt;br /&gt;
&lt;br /&gt;
Please respect all licenses for font redistribution, you can get some nice free fonts from [http://www.fontsquirrel.com http://www.fontsquirrel.com] for example.&lt;br /&gt;
&lt;br /&gt;
===Warning===&lt;br /&gt;
&lt;br /&gt;
This is not intended for forcing of something like Comic Sans on all your visitors...&lt;br /&gt;
&lt;br /&gt;
==Compiling LESS on the fly==&lt;br /&gt;
{{Moodle 2.7}}&lt;br /&gt;
&lt;br /&gt;
You can now provide a LESS file that will be compiled (and cached) on the fly. The purpose of this feature is to dynamically allow the customisation of LESS variables.&lt;br /&gt;
&lt;br /&gt;
===Set up your theme===&lt;br /&gt;
&lt;br /&gt;
# Create a .less file in a less folder. Eg. &amp;lt;code&amp;gt;theme/yourtheme/less/myfile.less&amp;lt;/code&amp;gt;&lt;br /&gt;
# Edit your theme config file, and set $THEME-&amp;gt;&#039;&#039;&#039;lessfile&#039;&#039;&#039; to the name of your file (do not include .less). Eg. &amp;lt;code&amp;gt;$THEME-&amp;gt;lessfile = &#039;myfile&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That&#039;s it, the LESS file will be compiled and included in the page on the fly, but that is not very useful yet.&lt;br /&gt;
&lt;br /&gt;
Please note that any file referenced in $THEME-&amp;gt;sheets that shares the same name than the LESS file will be silently ignored.&lt;br /&gt;
&lt;br /&gt;
===Inheriting from a parent===&lt;br /&gt;
&lt;br /&gt;
Even if your theme is inheriting from a parent, the LESS file itself will not inherit from anything, this is something you should do manually. For instance, if you want your LESS file to include all of the LESS code provided by &#039;&#039;theme_bootstrapbase&#039;&#039;, usually to change the variables, you need to manually import the file like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
@import &amp;quot;../../bootstrapbase/less/moodle.less&amp;quot;;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The path needs to be relative and not absolute. You would definitely want to add that rule first in your file and add anything else below it.&lt;br /&gt;
&lt;br /&gt;
===Programmatically injecting LESS===&lt;br /&gt;
&lt;br /&gt;
There are two theme options to specify a callback function that you need to know about:&lt;br /&gt;
&lt;br /&gt;
# $THEME-&amp;gt;&#039;&#039;&#039;extralesscallback&#039;&#039;&#039;: To return raw LESS code to be injected.&lt;br /&gt;
# $THEME-&amp;gt;&#039;&#039;&#039;lessvariablescallback&#039;&#039;&#039;: To return an array of variables and their values.&lt;br /&gt;
&lt;br /&gt;
Typically you will want to simply inject variables, but if you need to perform more complex manipulations, you can return some raw LESS code. The variables returned by the callback are always injected last.&lt;br /&gt;
&lt;br /&gt;
===Performance===&lt;br /&gt;
&lt;br /&gt;
Compiling LESS on the fly is a slow operation, and even though the result is cached you should be aware of it. If you have enabled the configuration setting &#039;&#039;themedesignermode&#039;&#039; you will definintely notice the slowness as the cache only lives for a very short period of time. Ideally your theme should precompile the LESS into CSS, but if you want to provide theme settings to your user, then using this feature is for you.&lt;br /&gt;
&lt;br /&gt;
===Example===&lt;br /&gt;
&lt;br /&gt;
You can refer to the theme &#039;&#039;theme_more&#039;&#039; for an example on how to use this feature.&lt;br /&gt;
&lt;br /&gt;
==Compiling SCSS on the fly==&lt;br /&gt;
{{Moodle 3.2}}&lt;br /&gt;
&lt;br /&gt;
You can now provide a SCSS file that will be compiled (and cached) on the fly. The purpose of this feature is to dynamically allow the customisation of SCSS variables. See the [[SCSS|dedicated page on SCSS]].&lt;br /&gt;
&lt;br /&gt;
==Unobvious Things==&lt;br /&gt;
===Getting Your Theme to Appear Correctly in Theme Selector===&lt;br /&gt;
If you follow the examples on this page to the letter, when you go to the Theme Selector page you may be discouraged to find that your theme does not appear like the other themes do. In fact, instead of your theme&#039;s name, you will see something along the lines of &amp;lt;nowiki&amp;gt;[[pluginname]]&amp;lt;/nowiki&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
To correct this, you must add the theme/THEMENAME/lang/en/theme_THEMENAME.php file, where THEMENAME is the name of the theme folder. Inside that file, add the string &amp;quot;$string[&#039;pluginname&#039;] = &#039;THEMENAME&#039;; &amp;quot;. Make THEMENAME the name of your theme, however you want it displayed in the Theme selector.&lt;br /&gt;
&lt;br /&gt;
Also, make sure to change your config.php file and version.php file to reflect the correct name:&lt;br /&gt;
&lt;br /&gt;
In config.php: $THEME-&amp;gt;name = &#039;NAME&#039;;&lt;br /&gt;
&lt;br /&gt;
In version.php: $plugin-&amp;gt;component = &#039;theme_NAME&#039;; // Full name of the plugin (used for diagnostics)&lt;br /&gt;
&lt;br /&gt;
The screenshot for the theme should be about 500x400 px.&lt;br /&gt;
&lt;br /&gt;
===Required theme divs===&lt;br /&gt;
&lt;br /&gt;
Some parts of Moodle may rely on particular divs, for example the div with id &#039;page-header&#039;.&lt;br /&gt;
&lt;br /&gt;
Consequently all themes must include at least the divs (with the same ids) that are present in the &#039;boost&#039; theme. &lt;br /&gt;
&lt;br /&gt;
Missing out these elements may result in unexpected behaviour within specific modules or other plugins.&lt;br /&gt;
&lt;br /&gt;
==Caching==&lt;br /&gt;
When Moodle is not running in theme designer mode it will look for a cached version of the compiled CSS for the current theme to serve to the browser requesting the page. If the cached file doesn&#039;t yet exist then the CSS will be built and cached during the page request.&lt;br /&gt;
&lt;br /&gt;
The cached CSS is located on disk in Moodle&#039;s local cache:&lt;br /&gt;
  &amp;lt;Moodle data directory &amp;gt;/localcache/theme/&amp;lt;global theme revision&amp;gt;/&amp;lt;theme_name&amp;gt;/css/all_&amp;lt;theme subrevision&amp;gt;.css&lt;br /&gt;
&lt;br /&gt;
The cache path consists of a global theme revision (themerev config value) and a per theme subrevision (themesubrev plugin config value). If either of those are incremented it will change the path to the cache file and cause a new file to be generated.&lt;br /&gt;
&lt;br /&gt;
Individual theme&#039;s CSS cache can be built by using the admin CLI script:&lt;br /&gt;
  php admin/cli/build_theme_css.php --themes boost&lt;br /&gt;
&lt;br /&gt;
The script will only increment the theme subrevision of the theme(s) being built which means existing theme cache&#039;s remain untouched.&lt;br /&gt;
&lt;br /&gt;
==Appendix A==&lt;br /&gt;
=== Theme options ===&lt;br /&gt;
&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;blockrtlmanipulations&#039;&#039;&#039;&lt;br /&gt;
|  Allows the theme to manipulate how the blocks are displayed in a &#039;&#039;right-to-left&#039;&#039; language. Not recommended since we automatically flip CSS for rtl. &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;csstreepostprocessor&#039;&#039;&#039; (Since 3.2)&lt;br /&gt;
|  Allows the user to provide the name of a function that can perform manipulations on an in-memory representation of the CSS tree. Some useful manipulations are available such as the &amp;quot;theme_boost\autoprefixer&amp;quot; which will automatically add vendor prefixes to all CSS that requires them. &lt;br /&gt;
|-&lt;br /&gt;
|  $THEME-&amp;gt;&#039;&#039;&#039;doctype&#039;&#039;&#039;&lt;br /&gt;
|  The doctype of the served documents.&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 just within the body of the TinyMCE text editor. This is required if you want content to resemble its final appearance in the page, while it is being edited in the text editor.&lt;br /&gt;
|-&lt;br /&gt;
|  $THEME-&amp;gt;&#039;&#039;&#039;enablecourseajax&#039;&#039;&#039;&lt;br /&gt;
|  If set to false the course AJAX features will be disabled.&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;prescsscallback&#039;&#039;&#039;&lt;br /&gt;
|  The name of a function that will return some SCSS code to inject at the beginning of the SCSS file specified in $THEME-&amp;gt;scss. (Since 3.2)&lt;br /&gt;
|-&lt;br /&gt;
|  $THEME-&amp;gt;&#039;&#039;&#039;extrascsscallback&#039;&#039;&#039;&lt;br /&gt;
|  The name of a function that will return some SCSS code to inject at the end of the SCSS file specified in $THEME-&amp;gt;scss. (Since 3.2)&lt;br /&gt;
|-&lt;br /&gt;
|  $THEME-&amp;gt;&#039;&#039;&#039;extralesscallback&#039;&#039;&#039;&lt;br /&gt;
|  The name of a function that will return some LESS code to inject at the end of the LESS file specified in $THEME-&amp;gt;lessfile. (Since 2.7)&lt;br /&gt;
|-&lt;br /&gt;
|  $THEME-&amp;gt;&#039;&#039;&#039;hidefromselector&#039;&#039;&#039;&lt;br /&gt;
|  Used to hide a theme from the theme selector (unless theme designer mode is on). Accepts true or false.&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). This setting should no longer be used - please use AMD [[Javascript Modules]] instead.&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. This setting should no longer be used - please use AMD [[Javascript Modules]] instead.&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;lessfile&#039;&#039;&#039;&lt;br /&gt;
|  The name of a LESS file in the theme&#039;s less/ folder to compile on the fly. Sheets with the same name will be ignored. (Since 2.7)&lt;br /&gt;
|-&lt;br /&gt;
|  $THEME-&amp;gt;&#039;&#039;&#039;lessvariablescallback&#039;&#039;&#039;&lt;br /&gt;
|  The name of a function that will modify some LESS variables before compiling the LESS file specified in $THEME-&amp;gt;lessfile. (Since 2.7)&lt;br /&gt;
|-&lt;br /&gt;
|  $THEME-&amp;gt;&#039;&#039;&#039;scss&#039;&#039;&#039;&lt;br /&gt;
|  The name of a SCSS file in the theme&#039;s scss/ folder to compile on the fly. Sheets with the same name will be ignored. This can also be a function which returns SCSS, in which case all import paths will be relative to the scss folder in this theme or any of it&#039;s parents. (Since 3.2)&lt;br /&gt;
|-&lt;br /&gt;
|  $THEME-&amp;gt;&#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
|  Name of the theme. Most likely the name of the directory in which this file resides.&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. If the theme you inherit from inherits from a parent as well, you need to indicate the grand parent here too.&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;renderfactory&#039;&#039;&#039;&lt;br /&gt;
|  Sets a custom render factory to use with the theme, used when working with custom renderers. You most likely want this set to &amp;quot;theme_overridden_renderer_factory&amp;quot;. &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 style directory. Not required if using less or scss.&lt;br /&gt;
|-&lt;br /&gt;
|  $THEME-&amp;gt;&#039;&#039;&#039;yuicssmodules&#039;&#039;&#039;&lt;br /&gt;
|  An array of YUI CSS modules to be included. This setting should probably be set to &#039;&#039; to prevent and YUI CSS being included. &lt;br /&gt;
|-&lt;br /&gt;
|  $THEME-&amp;gt;&#039;&#039;&#039;undeletableblocktypes&#039;&#039;&#039;&lt;br /&gt;
|  An array of Block types that must exist on all pages in this theme or this theme will be unusable. If a block type listed here is missing when a page is loaded - it will be auto-created (but only shown for themes that require it).&lt;br /&gt;
|-&lt;br /&gt;
|  $THEME-&amp;gt;&#039;&#039;&#039;addblockposition&#039;&#039;&#039;&lt;br /&gt;
|  Either BLOCK_ADDBLOCK_POSITION_FLATNAV, BLOCK_ADDBLOCK_POSITION_DEFAULT or BLOCK_ADDBLOCK_POSITION_CUSTOM. Defines where to put the &amp;quot;Add a block&amp;quot; controls when editing is enabled.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===The different layouts as of 21st April 2013===&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;
| Used for embedded 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 a 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;
| print&lt;br /&gt;
| Used when the page is being displayed specifically for printing.&lt;br /&gt;
|-&lt;br /&gt;
| redirect&lt;br /&gt;
| Used when a redirection is occurring&lt;br /&gt;
|-&lt;br /&gt;
| report&lt;br /&gt;
| Used for reports.&lt;br /&gt;
|-&lt;br /&gt;
| secure&lt;br /&gt;
| Used for safebrowser and securewindow.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* MoodleBites Theme Design - completely online courses [https://www.moodlebites.com/mod/page/view.php?id=3208 Level 1] and [https://www.moodlebites.com/mod/page/view.php?id=3210 Level 2] are designed to assist Moodle administrators, designers, and developers get up-to-speed with Moodle Theme design, and are run by [https://www.hrdnz.com HRDNZ] (Certified Moodle Partner since 2006).&lt;br /&gt;
&lt;br /&gt;
[[Category:Plugins]]&lt;/div&gt;</summary>
		<author><name>Pilpi</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=User_Data_Always_Safe&amp;diff=54728</id>
		<title>User Data Always Safe</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=User_Data_Always_Safe&amp;diff=54728"/>
		<updated>2018-09-07T10:19:38Z</updated>

		<summary type="html">&lt;p&gt;Pilpi: /* Preserve submitted data or giving it back to the user to keep, until it can be saved */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[ Moodle User Interface Guidelines|Moodle User Interface Guidelines]] &amp;gt; &#039;&#039;&#039;User Data Always (Always) Safe&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 In all cases, the user&#039;s work is sacrosanct. Nothing your &lt;br /&gt;
 application does should lose or destroy user&#039;s work without &lt;br /&gt;
 explicit user action. - GNOME HIG: [http://library.gnome.org/devel/hig-book/stable/principles-forgiveness.html.en Forgive the User]&lt;br /&gt;
&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=130005 Please comment in the related discussion forum] &amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Every part in Moodle should commit to keeping the data user has entered, safe. &lt;br /&gt;
&lt;br /&gt;
Not being capable of trusting an application affects the user experience fatally. If the browser seems likely to destroy everything given to it, eventually it makes users paranoid and writing their work in a word processor and only copying the final work into the browser. &lt;br /&gt;
&lt;br /&gt;
This issue requires further user research to find the exact issues involved, but there are also some generally well known mechanisms to employ.&lt;br /&gt;
&lt;br /&gt;
As Moodle is a web application, keeping user data safe is not trivial.&lt;br /&gt;
&lt;br /&gt;
==Challenges==&lt;br /&gt;
* Users may leave forms without submitting them&lt;br /&gt;
** Learning from some desktop applications (GNOME settings dialogs), users may assume their settings get automatically saved when they just enter them.&lt;br /&gt;
** Accidentally hitting the back button&lt;br /&gt;
** Clicking on a link on the form itself, assuming it is safe&lt;br /&gt;
** Pushing a button on their keyboard resulting in accidental usage of the back/next buttons&lt;br /&gt;
* Users may fill out forms &amp;quot;inappropriately&amp;quot;&lt;br /&gt;
** Missing data &lt;br /&gt;
** Session may have expired&lt;br /&gt;
*** When user gets logged out for whatever reason: the session ID changes when they log in again so even if they manage to login (in a different window)  while keeping the form data, submitting the form again fails and the user loses all submitted data. At a minimum, Moodle should give the user their data back so they do not lose it. &lt;br /&gt;
** User may have logged out accidentally (browser crash; browser restores the browser session but not the Moodle session)&lt;br /&gt;
** User may no longer be capable of completing the action due to loss of permissions or other reasons&lt;br /&gt;
*** A forum post they are were replying to was deleted&lt;br /&gt;
*** The time to edit a post has passed while the user was editing the post&lt;br /&gt;
* Users may submit data when the server has gone down or network connection lost&lt;br /&gt;
&lt;br /&gt;
==Solutions==&lt;br /&gt;
&lt;br /&gt;
=== Preserve submitted data or giving it back to the user to keep, until it can be saved ===&lt;br /&gt;
Taking care of the user&#039;s data actively when designing an application is really the only thing that can really keep users safe. Know your users and their context, and find out what they might want to do in an error situation.&lt;br /&gt;
&lt;br /&gt;
If a user has posted something, but it cannot be saved, never ever just throw the data away (like for example, Forum currently does).&lt;br /&gt;
Design your application to request the user what should be done. This requires understanding the situations users may end up in. Examples:&lt;br /&gt;
* If the user&#039;s session has gotten closed (the user is no longer logged in), request the user to log in again, and tell them about the situation. &lt;br /&gt;
* Suggested error message example:  &amp;quot;&#039;&#039;&#039;What you tried to send is safe, but not yet saved.&#039;&#039;&#039; The [message] you posted could not be saved, since you are not logged in. Please log in to have Moodle try again to save it for you.&amp;quot;&lt;br /&gt;
==== Giving the user their data back, for copying to the clipboard ====&lt;br /&gt;
Issue: In case the user has gotten logged out, it may be a security risk to give the data out. In other error situations, this is a recommended strategy. &lt;br /&gt;
&lt;br /&gt;
In some browsers it is possible to have a javascripted button that copies the contents of a text field onto the clipboard. This can be used to decrease the user&#039;s effort. Not all users are fluent with the clipboard.&lt;br /&gt;
&lt;br /&gt;
* If a forum posting can not be saved due to, for example, editing time having ended, offer the user alternative options that make sense. &amp;quot;30 minutes have passed, so you can no longer edit your forum post. Shown below is what you posted, so you can copy it to your clipboard and from there somewhere safe.&amp;quot;&lt;br /&gt;
* If a forum reply  can not be saved due to the parent item having been deleted, offer users the option to copy their item to the clipboard. In addition, the UI can offer users an option to add their reply to another post in the same thread.&lt;br /&gt;
&lt;br /&gt;
=== Undo ===&lt;br /&gt;
Often, confirmation dialogs (such as preventing accidental leaving of an unsaved form with a javascript dialog) are frustrating to users. In some situations it may be smart to allow the user to perform a potentially destructive action but then give them a chance to undo it, like gmail does.&lt;br /&gt;
[[Image:gmail-undo-example.png|left|frame]]&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Autosave ===&lt;br /&gt;
Related forum threads:&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=74710 AJAX-like Autosave for quiz]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=107073 Autosave for Forum Compose?]&lt;br /&gt;
In situations where preserving the user&#039;s data is critical independent of server or client machine crashes, autosaving the data at a regular interval may be used. &lt;br /&gt;
* Autosaving can either mean saving form data continuously, not saving the old version, or keeping a version history. Adding version history functionality requires careful context-sensitive UI design. (Wordpress uses autosaving extensively and may be referred to if this strategy is selected)&lt;br /&gt;
** Autosaving can be implemented using AJAX or by just submitting the form in question in the background using javascript.&lt;br /&gt;
* The strain on the server produced by autosave can be reduced by only sending new changes to the server, instead of always sending the contents of the form to the server at a specific interval &lt;br /&gt;
* When technologies such as Google Gears or the HTML5 equivalent are in use, autosaving can also be done on the local machine, without straining the server.&lt;br /&gt;
** This is also probably the only possible strategy when the server has gone down or when the network connection has been lost&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Save as draft&amp;quot; button ===&lt;br /&gt;
Sometimes it may be appropriate to let users save their work, before it is finished, without yet publishing it.&lt;br /&gt;
&lt;br /&gt;
=== Javascript confirmation upon leaving &amp;quot;dirty&amp;quot; form ===&lt;br /&gt;
If the user is about to leave page with a form without submitting it, issue a javascript confirmation dialog confirming if they want to do this.&lt;br /&gt;
=== TinyMCE ===&lt;br /&gt;
The new rich text editor in Moodle 2.0, [[TinyMCE]] apparently does not lose text written in it if you accidentally go back (or forward) in your browser history and then return to the page you were writing on. It is apparently possible though some work to get TinyMCE work in earlier versions of Moodle.&lt;br /&gt;
&lt;br /&gt;
=== Browser-based solutions ===&lt;br /&gt;
Unrelated to Moodle development, browsers may one day integrate functionality currently provided as an [http://lifehacker.com/5097334/lazarus-form-recovery-saves-web-page-form-data extension to at least Firefox] ([https://addons.mozilla.org/en-US/firefox/addon/6984 alternate link]), always storing form data for later recovery. This may raise privacy issues though. &lt;br /&gt;
&lt;br /&gt;
Also developer tools such as Firebug HTTP traffic listening or the Firefox Tamper Data extension can be used in recovering lost data: Initiate traffic listening, repost the data, read in the tool what data was posted and copy it to the clipboard.&lt;br /&gt;
&lt;br /&gt;
Users should not have resort to paranoia of writing first in notepad and then copying it to the browser, or using somethin such as these tools.&lt;br /&gt;
&lt;br /&gt;
It seems the GNOME usability focused browser Epiphany gives confirmations upon leaving &amp;quot;dirty&amp;quot; forms (if trying to close window/tab) even if it is not programmed in (needs to be confirmed).&lt;br /&gt;
&lt;br /&gt;
== More information ==&lt;br /&gt;
* Discussion: [http://moodle.org/mod/forum/discuss.php?d=130005 Critical: Keeping user data safe]&lt;br /&gt;
** Linked threads: [http://moodle.org/mod/forum/discuss.php?d=130010] [http://moodle.org/mod/forum/discuss.php?d=130007]&lt;br /&gt;
* Directory of [[Major_usability_issues_in_Moodle|Major usability issues in Moodle]]&lt;br /&gt;
* A solution applicable in some scenarios: MDL-18014 Tracker item for autosave (thanks Mauno Korpelainen)&lt;br /&gt;
* [http://code.google.com/p/tinyautosave/ TinyMCE autosave plugin]  (thanks Mauno Korpelainen)&lt;br /&gt;
&lt;br /&gt;
[[Category:Moodle User Interface Guidelines]]&lt;/div&gt;</summary>
		<author><name>Pilpi</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Quiz_UI_redesign&amp;diff=46865</id>
		<title>Quiz UI redesign</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Quiz_UI_redesign&amp;diff=46865"/>
		<updated>2014-11-19T15:05:45Z</updated>

		<summary type="html">&lt;p&gt;Pilpi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Status: project finished and code incorporated into Moodle 2.0 in Autumn 2008.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Chapter 3 (especially page 18 and onwards) of Olli&#039;s master&#039;s thesis about [http://tutkielmat.uta.fi/tutkielma_en.php?id=20867 Moodle and open source usability work] documents the core ideas of the Quiz UI Redesign work most clearly. Chapters 4 to 6 of the work document the different phases of the project. ([https://drive.google.com/viewerng/viewer?url=http://tampub.uta.fi/bitstream/handle/10024/81866/gradu04510.pdf?sequence=1 Online view])&lt;br /&gt;
&lt;br /&gt;
* MDL-17284 Final tracker item&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=103869 Final forum discussion]&lt;br /&gt;
* For permanent documentation, &#039;&#039;&#039;See also: [[Quiz Usability portal]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
This is the Docs page for the Quiz UI redesign project 2008 &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The project blog&#039;&#039;&#039;:  http://www.pilpi.net/software/moodle_quiz_ui/ .&lt;br /&gt;
&lt;br /&gt;
* [[Quiz UI redesign prototype presumptions | Quiz UI redesign prototype presumptions]]&lt;br /&gt;
* &#039;&#039;&#039;[[Quiz UI redesign - Design specification | Design specification]]&#039;&#039;&#039;&lt;br /&gt;
* Project tracker: http://tracker.moodle.org/browse/CONTRIB-528&lt;br /&gt;
&lt;br /&gt;
== Related forum discussions ==&lt;br /&gt;
Some are still missing here. The last one is the newest, and the location of current discussion. &lt;br /&gt;
* Inquiry about the status of the UI: [http://moodle.org/mod/forum/discuss.php?d=63612 Quiz UI development]&lt;br /&gt;
* Suggesting concrete new UI: [http://moodle.org/mod/forum/discuss.php?d=72828 New Quiz UI prototype published] &lt;br /&gt;
** Related: [http://moodle.org/mod/forum/discuss.php?d=92870 Re: Concern of Moodle Usability - Quiz module]&lt;br /&gt;
* Applied for funding, Tim Hunt accepted as mentor: [http://moodle.org/mod/forum/discuss.php?d=92797 Simple Quiz building user interface]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=99351#p439124 Community effort to learn about teacher quiz/exam usage habits]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=100367 Call for comments: Quiz UI redesign prototype (new iteration now usability tested)]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=102062 Call for comments: Quiz UI redesign demo published]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=103869 Should Olli&#039;s new quiz editing interface be included in Moodle 2.0?]&lt;br /&gt;
** [http://moodle.org/mod/forum/discuss.php?d=103870 cross-post]&lt;br /&gt;
&lt;br /&gt;
== Scenarios ==&lt;br /&gt;
&lt;br /&gt;
===Scenarios work===&lt;br /&gt;
* &#039;&#039;&#039;[[Quiz_UI_redesign scenarios - conclusions| Scenarios work conclusions (executive summary) ]]&#039;&#039;&#039;&lt;br /&gt;
* [[Quiz_UI_redesign_-_what_makes_a_scenarios_interview%3F|The idea and the content of the scenarios interviews I did]]&lt;br /&gt;
&lt;br /&gt;
===The Scenarios===&lt;br /&gt;
* [[Quiz UI redesign scenarios - Scenarios index]]&lt;br /&gt;
&lt;br /&gt;
== Prototype testing ==&lt;br /&gt;
=== June 2008 ===&lt;br /&gt;
Published June 27th, 2008.&lt;br /&gt;
 &lt;br /&gt;
[http://www.pilpi.net/software/moodle_quiz_ui/files/quiz_ui_redesign_prototype_2008.odp The prototype used in testing, the last iteration] (ODP 230 KB; &#039;&#039;&#039;in Finnish. See the &#039;&#039;&#039;[[Quiz UI redesign - Design specification | Design specification]]&#039;&#039;&#039; for a more final, translated view of the UI&#039;&#039;&#039; )&lt;br /&gt;
* [[Quiz UI redesign - prototype testing background|Background]]&lt;br /&gt;
* [[Quiz_UI_redesign_prototype_questions#Testing_questions_used_in_spring.2Fsummer_2008|Tasks]]&lt;br /&gt;
* [[Quiz UI redesign - prototype testing report|Prototype testing report]]&lt;br /&gt;
&lt;br /&gt;
===Testing with the actual implementation: August 2008===&lt;br /&gt;
See also: [[Quiz_Usability_portal#Future_development]]&lt;br /&gt;
* [[Quiz_UI_redesign/usability testing of August 2008/Executive summary|Quiz UI redesign /  usability testing of August 2008 / Executive summary]]&lt;br /&gt;
* [[Quiz_UI_redesign/usability testing of August 2008/Issues|Quiz UI redesign / related issues in usability testing of August 2008]]&lt;br /&gt;
* Quiz UI redesign / [[Quiz_UI_redesign/usability testing of August 2008/Summary of solutions|Direct reactions to usability testing: List of solutions]]&lt;br /&gt;
* [[ Usability testing in August 2008/Test setting and tasks / background|Test setting and tasks / background]]&lt;br /&gt;
&lt;br /&gt;
== Development ==&lt;br /&gt;
Moved to [[Quiz UI redesign - development]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Usability]]&lt;br /&gt;
&lt;br /&gt;
== Obsolete == &lt;br /&gt;
* Obsolete: [[Quiz UI redesign prototype | Quiz UI redesign prototype]] &lt;br /&gt;
* Pretty obsolete: [[Quiz UI redesign - related use cases|Use cases]]&lt;/div&gt;</summary>
		<author><name>Pilpi</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Quiz_UI_redesign&amp;diff=35824</id>
		<title>Quiz UI redesign</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Quiz_UI_redesign&amp;diff=35824"/>
		<updated>2012-10-16T12:05:27Z</updated>

		<summary type="html">&lt;p&gt;Pilpi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Status: project finished and code incorporated into Moodle 2.0 in Autumn 2008.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Chapter 3 (especially page 18 and onwards) of Olli&#039;s master&#039;s thesis about [http://tutkielmat.uta.fi/tutkielma_en.php?id=20867 Moodle and open source usability work] documents the core ideas of the Quiz UI Redesign work most clearly. Chapters 4 to 6 of the work document the different phases of the project. [https://docs.google.com/viewer?url=http%3A%2F%2Ftutkielmat.uta.fi%2Fhaekokoversio.php%3Fid%3D20867 Online view]&lt;br /&gt;
* MDL-17284 Final tracker item&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=103869 Final forum discussion]&lt;br /&gt;
* For permanent documentation, &#039;&#039;&#039;See also: [[Quiz Usability portal]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
This is the Docs page for the Quiz UI redesign project 2008 &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The project blog&#039;&#039;&#039;:  http://www.pilpi.net/software/moodle_quiz_ui/ .&lt;br /&gt;
&lt;br /&gt;
* [[Quiz UI redesign prototype presumptions | Quiz UI redesign prototype presumptions]]&lt;br /&gt;
* &#039;&#039;&#039;[[Quiz UI redesign - Design specification | Design specification]]&#039;&#039;&#039;&lt;br /&gt;
* Project tracker: http://tracker.moodle.org/browse/CONTRIB-528&lt;br /&gt;
&lt;br /&gt;
== Related forum discussions ==&lt;br /&gt;
Some are still missing here. The last one is the newest, and the location of current discussion. &lt;br /&gt;
* Inquiry about the status of the UI: [http://moodle.org/mod/forum/discuss.php?d=63612 Quiz UI development]&lt;br /&gt;
* Suggesting concrete new UI: [http://moodle.org/mod/forum/discuss.php?d=72828 New Quiz UI prototype published] &lt;br /&gt;
** Related: [http://moodle.org/mod/forum/discuss.php?d=92870 Re: Concern of Moodle Usability - Quiz module]&lt;br /&gt;
* Applied for funding, Tim Hunt accepted as mentor: [http://moodle.org/mod/forum/discuss.php?d=92797 Simple Quiz building user interface]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=99351#p439124 Community effort to learn about teacher quiz/exam usage habits]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=100367 Call for comments: Quiz UI redesign prototype (new iteration now usability tested)]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=102062 Call for comments: Quiz UI redesign demo published]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=103869 Should Olli&#039;s new quiz editing interface be included in Moodle 2.0?]&lt;br /&gt;
** [http://moodle.org/mod/forum/discuss.php?d=103870 cross-post]&lt;br /&gt;
&lt;br /&gt;
== Scenarios ==&lt;br /&gt;
&lt;br /&gt;
===Scenarios work===&lt;br /&gt;
* &#039;&#039;&#039;[[Quiz_UI_redesign scenarios - conclusions| Scenarios work conclusions (executive summary) ]]&#039;&#039;&#039;&lt;br /&gt;
* [[Quiz_UI_redesign_-_what_makes_a_scenarios_interview%3F|The idea and the content of the scenarios interviews I did]]&lt;br /&gt;
&lt;br /&gt;
===The Scenarios===&lt;br /&gt;
* [[Quiz UI redesign scenarios - Scenarios index]]&lt;br /&gt;
&lt;br /&gt;
== Prototype testing ==&lt;br /&gt;
=== June 2008 ===&lt;br /&gt;
Published June 27th, 2008.&lt;br /&gt;
 &lt;br /&gt;
[http://www.pilpi.net/software/moodle_quiz_ui/files/quiz_ui_redesign_prototype_2008.odp The prototype used in testing, the last iteration] (ODP 230 KB; &#039;&#039;&#039;in Finnish. See the &#039;&#039;&#039;[[Quiz UI redesign - Design specification | Design specification]]&#039;&#039;&#039; for a more final, translated view of the UI&#039;&#039;&#039; )&lt;br /&gt;
* [[Quiz UI redesign - prototype testing background|Background]]&lt;br /&gt;
* [[Quiz_UI_redesign_prototype_questions#Testing_questions_used_in_spring.2Fsummer_2008|Tasks]]&lt;br /&gt;
* [[Quiz UI redesign - prototype testing report|Prototype testing report]]&lt;br /&gt;
&lt;br /&gt;
===Testing with the actual implementation: August 2008===&lt;br /&gt;
See also: [[Quiz_Usability_portal#Future_development]]&lt;br /&gt;
* [[Quiz_UI_redesign/usability testing of August 2008/Executive summary|Quiz UI redesign /  usability testing of August 2008 / Executive summary]]&lt;br /&gt;
* [[Quiz_UI_redesign/usability testing of August 2008/Issues|Quiz UI redesign / related issues in usability testing of August 2008]]&lt;br /&gt;
* Quiz UI redesign / [[Quiz_UI_redesign/usability testing of August 2008/Summary of solutions|Direct reactions to usability testing: List of solutions]]&lt;br /&gt;
* [[ Usability testing in August 2008/Test setting and tasks / background|Test setting and tasks / background]]&lt;br /&gt;
&lt;br /&gt;
== Development ==&lt;br /&gt;
Moved to [[Quiz UI redesign - development]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Usability]]&lt;br /&gt;
&lt;br /&gt;
== Obsolete == &lt;br /&gt;
* Obsolete: [[Quiz UI redesign prototype | Quiz UI redesign prototype]] &lt;br /&gt;
* Pretty obsolete: [[Quiz UI redesign - related use cases|Use cases]]&lt;/div&gt;</summary>
		<author><name>Pilpi</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Quiz_UI_redesign&amp;diff=35823</id>
		<title>Quiz UI redesign</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Quiz_UI_redesign&amp;diff=35823"/>
		<updated>2012-10-16T12:04:02Z</updated>

		<summary type="html">&lt;p&gt;Pilpi: added online view link to thesis&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Status: project finished and code incorporated into Moodle 2.0 in Autumn 2008.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Chapter 3 of Olli&#039;s master&#039;s thesis about [http://tutkielmat.uta.fi/tutkielma_en.php?id=20867 Moodle and open source usability work] documents the core ideas of the Quiz UI Redesign work most clearly. Chapters 4 to 6 of the work document the different phases of the project. [https://docs.google.com/viewer?url=http%3A%2F%2Ftutkielmat.uta.fi%2Fhaekokoversio.php%3Fid%3D20867 Online view]&lt;br /&gt;
* MDL-17284 Final tracker item&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=103869 Final forum discussion]&lt;br /&gt;
* For permanent documentation, &#039;&#039;&#039;See also: [[Quiz Usability portal]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
This is the Docs page for the Quiz UI redesign project 2008 &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The project blog&#039;&#039;&#039;:  http://www.pilpi.net/software/moodle_quiz_ui/ .&lt;br /&gt;
&lt;br /&gt;
* [[Quiz UI redesign prototype presumptions | Quiz UI redesign prototype presumptions]]&lt;br /&gt;
* &#039;&#039;&#039;[[Quiz UI redesign - Design specification | Design specification]]&#039;&#039;&#039;&lt;br /&gt;
* Project tracker: http://tracker.moodle.org/browse/CONTRIB-528&lt;br /&gt;
&lt;br /&gt;
== Related forum discussions ==&lt;br /&gt;
Some are still missing here. The last one is the newest, and the location of current discussion. &lt;br /&gt;
* Inquiry about the status of the UI: [http://moodle.org/mod/forum/discuss.php?d=63612 Quiz UI development]&lt;br /&gt;
* Suggesting concrete new UI: [http://moodle.org/mod/forum/discuss.php?d=72828 New Quiz UI prototype published] &lt;br /&gt;
** Related: [http://moodle.org/mod/forum/discuss.php?d=92870 Re: Concern of Moodle Usability - Quiz module]&lt;br /&gt;
* Applied for funding, Tim Hunt accepted as mentor: [http://moodle.org/mod/forum/discuss.php?d=92797 Simple Quiz building user interface]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=99351#p439124 Community effort to learn about teacher quiz/exam usage habits]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=100367 Call for comments: Quiz UI redesign prototype (new iteration now usability tested)]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=102062 Call for comments: Quiz UI redesign demo published]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=103869 Should Olli&#039;s new quiz editing interface be included in Moodle 2.0?]&lt;br /&gt;
** [http://moodle.org/mod/forum/discuss.php?d=103870 cross-post]&lt;br /&gt;
&lt;br /&gt;
== Scenarios ==&lt;br /&gt;
&lt;br /&gt;
===Scenarios work===&lt;br /&gt;
* &#039;&#039;&#039;[[Quiz_UI_redesign scenarios - conclusions| Scenarios work conclusions (executive summary) ]]&#039;&#039;&#039;&lt;br /&gt;
* [[Quiz_UI_redesign_-_what_makes_a_scenarios_interview%3F|The idea and the content of the scenarios interviews I did]]&lt;br /&gt;
&lt;br /&gt;
===The Scenarios===&lt;br /&gt;
* [[Quiz UI redesign scenarios - Scenarios index]]&lt;br /&gt;
&lt;br /&gt;
== Prototype testing ==&lt;br /&gt;
=== June 2008 ===&lt;br /&gt;
Published June 27th, 2008.&lt;br /&gt;
 &lt;br /&gt;
[http://www.pilpi.net/software/moodle_quiz_ui/files/quiz_ui_redesign_prototype_2008.odp The prototype used in testing, the last iteration] (ODP 230 KB; &#039;&#039;&#039;in Finnish. See the &#039;&#039;&#039;[[Quiz UI redesign - Design specification | Design specification]]&#039;&#039;&#039; for a more final, translated view of the UI&#039;&#039;&#039; )&lt;br /&gt;
* [[Quiz UI redesign - prototype testing background|Background]]&lt;br /&gt;
* [[Quiz_UI_redesign_prototype_questions#Testing_questions_used_in_spring.2Fsummer_2008|Tasks]]&lt;br /&gt;
* [[Quiz UI redesign - prototype testing report|Prototype testing report]]&lt;br /&gt;
&lt;br /&gt;
===Testing with the actual implementation: August 2008===&lt;br /&gt;
See also: [[Quiz_Usability_portal#Future_development]]&lt;br /&gt;
* [[Quiz_UI_redesign/usability testing of August 2008/Executive summary|Quiz UI redesign /  usability testing of August 2008 / Executive summary]]&lt;br /&gt;
* [[Quiz_UI_redesign/usability testing of August 2008/Issues|Quiz UI redesign / related issues in usability testing of August 2008]]&lt;br /&gt;
* Quiz UI redesign / [[Quiz_UI_redesign/usability testing of August 2008/Summary of solutions|Direct reactions to usability testing: List of solutions]]&lt;br /&gt;
* [[ Usability testing in August 2008/Test setting and tasks / background|Test setting and tasks / background]]&lt;br /&gt;
&lt;br /&gt;
== Development ==&lt;br /&gt;
Moved to [[Quiz UI redesign - development]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Usability]]&lt;br /&gt;
&lt;br /&gt;
== Obsolete == &lt;br /&gt;
* Obsolete: [[Quiz UI redesign prototype | Quiz UI redesign prototype]] &lt;br /&gt;
* Pretty obsolete: [[Quiz UI redesign - related use cases|Use cases]]&lt;/div&gt;</summary>
		<author><name>Pilpi</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Usability&amp;diff=32752</id>
		<title>Usability</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Usability&amp;diff=32752"/>
		<updated>2012-03-12T09:03:58Z</updated>

		<summary type="html">&lt;p&gt;Pilpi: /* See also: */ Fixed link to Syndia&amp;#039;s thesis&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{GSOC 09}}&lt;br /&gt;
Some pointers, links, and resources on the topic of usability with respect to Moodle.&lt;br /&gt;
&lt;br /&gt;
For general information on the concept of usability see &lt;br /&gt;
[http://www.lukew.com/ff/entry.asp?797 Definition of user experience (UX)].&lt;br /&gt;
&lt;br /&gt;
==Contribute to Moodle through Usability testing==&lt;br /&gt;
&lt;br /&gt;
An ongoing need of a project such as Moodle is to keep the interface usable as the code matures. Improvements and added functionality may seem like a wonderful innovation from the coder&#039;s or administrator&#039;s point of view, but if the end-user is confused or frustrated by it (or can&#039;t even find it!), its usefulness drops dramatically.&lt;br /&gt;
&lt;br /&gt;
The idea of usability testing is simple: a person who is well-versed in Moodle gets together a small number of willing participants, who have no previous experience of using Moodle, and who are not technology experts (such as web designers etc...). The closer these people are to the &amp;quot;typical user&amp;quot; (for example a high school student), the better. The person conducting the test simply observes the participant as he/she tries to achieve a number of tasks. A video/sound recording can also be made with the prior consent of the participant, and is useful for later analysis.&lt;br /&gt;
&lt;br /&gt;
The person conducting the test then pools together the issues that were common between most participants, and produces a short and concise report that is then used by Moodle developers to improve the user interface.&lt;br /&gt;
&lt;br /&gt;
This sort of contribution requires no coding skills whatsoever, not even HTML. You just need to be familiar with using Moodle as a learner.&lt;br /&gt;
&lt;br /&gt;
The links at the bottom of this article include Steve Krug&#039;s book, &amp;quot;Don&#039;t make me think!&amp;quot;. This books is the best introduction to Usability testing I know of.&lt;br /&gt;
&lt;br /&gt;
See also: [[Usability_testing_protocol|Usability testing protocol]]&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Bike Sheds&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
Because changes with regard to Usability are necessarily visual and on the surface, it is a potential Bike Shed issue. This is a metaphor bandied around in Open Source circles that suggests (in brief) that the smaller the change, the greater the discussions that surround it in forums and mailing lists. People proposing small improvements to Moodle should be aware of this phenomenon and not take the level of discussion as an implicit criticism of their suggestion.&lt;br /&gt;
&lt;br /&gt;
You can read a well-written account of this metaphor that [http://www.freebsd.org/doc/en_US.ISO8859-1/books/faq/misc.html#BIKESHED-PAINTING originated on the BSD mailing list] under http://www.bikeshed.com.&lt;br /&gt;
&lt;br /&gt;
==Avoid the word &amp;quot;intuitive&amp;quot;==&lt;br /&gt;
&lt;br /&gt;
(Definition: [http://www.usabilityfirst.com/glossary/main.cgi?function=display_term&amp;amp;term_id=444 Intuitive])&lt;br /&gt;
&lt;br /&gt;
Intuitive is a word you should avoid in discussions of usability as its meaning is often confused.&lt;br /&gt;
&lt;br /&gt;
It is generally accepted that a large part of usability is based on familiarity and experience. Human Interface Guidelines published by people such as Apple or Gnome strive for logic and consistency so that the learning can be easier, and the experience more valuable. Using &#039;intuitive&#039; as a short-hand for something that is familiar often gives the impression that if something is &#039;intuitive&#039; then it is so regardless of prior learning or experience and therefore equally true for everyone. It suggests that the goodness or badness of an interface is situated within the interface itself, rather than in the relationship between the user and the interface.&lt;br /&gt;
&lt;br /&gt;
Very few people would object to the statement that &#039;Apple software is more intuitive than Windows software&#039; yet to someone who has only used Windows software, this is clearly not the case. Avoiding using the word yourself and mentally translating other people&#039;s use of intuitive as &#039;something I like&#039; e.g. &amp;quot;Moodle&#039;s block system is unintuitive&amp;quot; = &amp;quot;Moodle&#039;s block system is something I don&#039;t like&amp;quot; may help to defuse arguments because it is harder to argue about personal opinions that are stated explicitly as personal opinion rather than disguised as objective statements about the software.&lt;br /&gt;
&lt;br /&gt;
Therefore what is called intuitive, in the case of Moodle, will depend on your experience and expectations of other learning systems, web applications or sites, as well as software in general and thus varies from person to person. Usability studies should therefore average out the expectations of many people to find what is &#039;intuitive&#039; and check to see if different groups (e.g. users of particular alternative systems, total beginners) have different expectations.&lt;br /&gt;
&lt;br /&gt;
This article explains more and better (with diagrams!): http://www.uie.com/articles/design_intuitive/&lt;br /&gt;
&lt;br /&gt;
==Learnability versus usability==&lt;br /&gt;
&lt;br /&gt;
People often confuse these topics, understandably as they do have a great deal in common. Generally what are referred to as &#039;usability&#039; improvements make things both easier to learn and easier for experienced users. Occasionally decisions need to be made favouring one over the other, and in those situations it helps to be explicit which of the two you are referring to. There are many successful software tools that sacrifice learnability so that power-users can be more efficient. It seems likely that Moodle will continue to lean towards learnability in these cases, though again 99% of the time these goals are not in conflict.&lt;br /&gt;
&lt;br /&gt;
==Don&#039;t automatically suggest a new preference==&lt;br /&gt;
&lt;br /&gt;
In open source projects it is often easier (in the short term) to defuse any disagreement by &#039;adding a preference&#039;. This means you end up with double (or triple..) the code to achieve the same thing. &lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Every time you provide an option, you&#039;re asking the user to make a decision.&#039;&#039;&#039; - [http://www.joelonsoftware.com/uibook/chapters/fog0000000059.html Joel on Software: Choices]&lt;br /&gt;
&lt;br /&gt;
# That&#039;s more code to write, debug, maintain etc. And once you end up with preferences interacting the potential combinations become astronomical and you end up in the situation that no two people are actually running the same program.&lt;br /&gt;
# Each new preference wastes user attention span and time. If you think you really need to add a preference, consider applying [[Progressive_Disclosure|progressive disclosure]].&lt;br /&gt;
&lt;br /&gt;
This can, over time lead to a profusion of preferences, each of which has a cost that needs to be weighed against its benefit. Sometimes finding a solution that pleases everyone (to some degree) is preferable to adding preferences for each idea. Learn to know what your users really need. Instead of pleasing everyone separately, [http://gettingreal.37signals.com/ch04_Make_Opinionated_Software.php make opinionated software].&lt;br /&gt;
&lt;br /&gt;
This is explained far better by Havoc Pennington in his piece on Open Source and User Interface, in particular the &amp;quot;Question of Preferences &amp;quot; section about half way through: http://www106.pair.com/rhp/free-software-ui.html&lt;br /&gt;
&lt;br /&gt;
==Is Moodle a website?==&lt;br /&gt;
&lt;br /&gt;
The somewhat tricky thing with regard to Moodle&#039;s usability is that Moodle is a web application, not a web site (though the line between the two is sometimes blurry) and few, if any, books have been written for that class of software. Therefore many applicable pieces of advice (from web, software or product usability guides) need to be reassessed with Moodle&#039;s nature in mind.&lt;br /&gt;
&lt;br /&gt;
== Additional Resources ==&lt;br /&gt;
&lt;br /&gt;
=== Websites ===&lt;br /&gt;
&lt;br /&gt;
* 37 Signals Blog: Signal versus Noise http://www.37signals.com/svn/&lt;br /&gt;
* Jakob Nielsen&#039;s website http://useit.com/&lt;br /&gt;
** [http://www.elearningpost.com/articles/archives/jakob_nielsen_on_e_learning/ an interview of Jakob Nielsen about e-learning]&lt;br /&gt;
* Joel Spolsky&#039;s User Interface Design for Programmers http://www.joelonsoftware.com/uibook/chapters/fog0000000057.html&lt;br /&gt;
* First Principles of Interaction Design by Tog (Bruce Tognazzini) http://www.asktog.com/basics/firstPrinciples.html&lt;br /&gt;
* [http://mpt.net.nz/archive/2008/08/01/free-software-usability Challenges of usability in an Open Source context]&lt;br /&gt;
* [http://wiki.fluidproject.org/display/fluid/Design+Handbook Fluid Design Handbook], an excellent resource to User Centered Design methods&lt;br /&gt;
* [http://mashable.com/2009/01/09/user-experience-design/ 10 Most Common Misconceptions About User Experience Design]&lt;br /&gt;
&lt;br /&gt;
=== Books ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Web specific&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* [http://www.sensible.com/ Don&#039;t Make Me Think] by Steve Krug &lt;br /&gt;
:A really good book, full of good info yet brief, well written and accessible. A [http://www.sensible.com/chapter.html sample chapter] is made available on his site, as well as [http://www.sensible.com/secondedition/index.html 3 complete chapters] from the 1st edition in pdf format, covering a complete script for usability testing.&lt;br /&gt;
&lt;br /&gt;
* [http://www.digital-web.com/articles/defensive_design_for_the_web/ Defensive Design For The Web] by [http://www.37signals.com/ 37 Signals] (Matthew Lindeman and Jason Fried).&lt;br /&gt;
&lt;br /&gt;
* [http://www.zeldman.com/dwws/ Designing with Web Standards, 2nd ed.] by Jeffrey Zeldman&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Moodle specific&#039;&#039;&#039;&lt;br /&gt;
* [http://www.pilpi.net/masters User experience design in open source development: Approaches to usability work in the Moodle community] by Olli Savolainen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Computer specific&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* [http://books.google.fi/books?id=04cFCVXC_AUC&amp;amp;dq=the+inmates+are+running+the+asylum&amp;amp;printsec=frontcover&amp;amp;source=bn&amp;amp;hl=en&amp;amp;ei=COknSur4FIfz_AaDzuXYAQ&amp;amp;sa=X&amp;amp;oi=book_result&amp;amp;ct=result&amp;amp;resnum=4 The inmates are running the asylum - Why High-Tech Products Drive Us Crazy and How to Restore the Sanity] by Alan Cooper&lt;br /&gt;
:A usability classic: a thought-stimulating, yet an entertaining higher-level perspective on the friction between user-centered thinking and software engineering thinking, and on solutions to start really designing for the actual goals of the users using Personas, Goals and Scenarios. &lt;br /&gt;
* [http://books.google.com/books?id=D39vjmLfO3kC The Humane Interface] by Jef Raskin&lt;br /&gt;
:Jef, who sadly passed away recently, has been more and more research focused for the last 15 years, since his days helping to create the first Macintosh. This led to a discarding all practical considerations to concieve of the &#039;perfect&#039; UI, rather than attending to the pragmatic, checklist-style &amp;quot;improve your site in 15 minutes&amp;quot; genre. However his writing is excellent in consistently laying the blame for problems with the computer and its software, not the user. It is often easy to fall into the trap of thinking &#039;stupid&#039; users are the problem, rather than simply a design parameter. It is however worth remembering that (unless you are a research fellow) many of these technical faults must be worked with to a certain degree, and that &amp;quot;perfection can often be the enemy of the good&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;General&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Psychology of Everyday Things&#039;&#039; by Donald Norman (new edition aka [http://books.google.com/books?id=EXwkGwAACAAJ The Design of Everyday Things]) &lt;br /&gt;
:It&#039;s a classic, so some of the examples are a bit dated, but the basic message that it is fundamentally hard for a designer (no matter how smart) to place themselves mentally in the position of a user is put across well. I think about this book&#039;s simple message every time I push a door I was supposed to pull and vice versa.&lt;br /&gt;
* [http://books.google.com/books?id=h_wAbnGlOC4C Emotional Design: Why We Love (or Hate) Everyday Things] by Donald Norman&lt;br /&gt;
&lt;br /&gt;
== See also: ==&lt;br /&gt;
* [[Usability FAQ]]&lt;br /&gt;
* [[Moodle_User_Interface_Guidelines|Moodle User Interface Guidelines]] &lt;br /&gt;
* [http://moodle.org/mod/data/view.php?d=55&amp;amp;rid=4640 &amp;quot;Make the Most of Your Studies: A Case Study and Web Usability Study Using the Collaborative Virtual Learning Environment Moodle with Postgraduate Students from Oil &amp;amp; Gas Related Courses&amp;quot;] MSc Dissertation by [http://moodle.org/user/view.php?id=757944&amp;amp;course=1 Syndia Lengyel]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Usability]]&lt;br /&gt;
[[Category:Usability]]&lt;br /&gt;
&lt;br /&gt;
[[ja:開発:ユーザビリティ]]&lt;/div&gt;</summary>
		<author><name>Pilpi</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Usability&amp;diff=32751</id>
		<title>Usability</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Usability&amp;diff=32751"/>
		<updated>2012-03-12T09:00:11Z</updated>

		<summary type="html">&lt;p&gt;Pilpi: /* Books */ Noticed, though late that my work about Usability practice in the Moodle community had been forgotten from here altogether.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{GSOC 09}}&lt;br /&gt;
Some pointers, links, and resources on the topic of usability with respect to Moodle.&lt;br /&gt;
&lt;br /&gt;
For general information on the concept of usability see &lt;br /&gt;
[http://www.lukew.com/ff/entry.asp?797 Definition of user experience (UX)].&lt;br /&gt;
&lt;br /&gt;
==Contribute to Moodle through Usability testing==&lt;br /&gt;
&lt;br /&gt;
An ongoing need of a project such as Moodle is to keep the interface usable as the code matures. Improvements and added functionality may seem like a wonderful innovation from the coder&#039;s or administrator&#039;s point of view, but if the end-user is confused or frustrated by it (or can&#039;t even find it!), its usefulness drops dramatically.&lt;br /&gt;
&lt;br /&gt;
The idea of usability testing is simple: a person who is well-versed in Moodle gets together a small number of willing participants, who have no previous experience of using Moodle, and who are not technology experts (such as web designers etc...). The closer these people are to the &amp;quot;typical user&amp;quot; (for example a high school student), the better. The person conducting the test simply observes the participant as he/she tries to achieve a number of tasks. A video/sound recording can also be made with the prior consent of the participant, and is useful for later analysis.&lt;br /&gt;
&lt;br /&gt;
The person conducting the test then pools together the issues that were common between most participants, and produces a short and concise report that is then used by Moodle developers to improve the user interface.&lt;br /&gt;
&lt;br /&gt;
This sort of contribution requires no coding skills whatsoever, not even HTML. You just need to be familiar with using Moodle as a learner.&lt;br /&gt;
&lt;br /&gt;
The links at the bottom of this article include Steve Krug&#039;s book, &amp;quot;Don&#039;t make me think!&amp;quot;. This books is the best introduction to Usability testing I know of.&lt;br /&gt;
&lt;br /&gt;
See also: [[Usability_testing_protocol|Usability testing protocol]]&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Bike Sheds&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
Because changes with regard to Usability are necessarily visual and on the surface, it is a potential Bike Shed issue. This is a metaphor bandied around in Open Source circles that suggests (in brief) that the smaller the change, the greater the discussions that surround it in forums and mailing lists. People proposing small improvements to Moodle should be aware of this phenomenon and not take the level of discussion as an implicit criticism of their suggestion.&lt;br /&gt;
&lt;br /&gt;
You can read a well-written account of this metaphor that [http://www.freebsd.org/doc/en_US.ISO8859-1/books/faq/misc.html#BIKESHED-PAINTING originated on the BSD mailing list] under http://www.bikeshed.com.&lt;br /&gt;
&lt;br /&gt;
==Avoid the word &amp;quot;intuitive&amp;quot;==&lt;br /&gt;
&lt;br /&gt;
(Definition: [http://www.usabilityfirst.com/glossary/main.cgi?function=display_term&amp;amp;term_id=444 Intuitive])&lt;br /&gt;
&lt;br /&gt;
Intuitive is a word you should avoid in discussions of usability as its meaning is often confused.&lt;br /&gt;
&lt;br /&gt;
It is generally accepted that a large part of usability is based on familiarity and experience. Human Interface Guidelines published by people such as Apple or Gnome strive for logic and consistency so that the learning can be easier, and the experience more valuable. Using &#039;intuitive&#039; as a short-hand for something that is familiar often gives the impression that if something is &#039;intuitive&#039; then it is so regardless of prior learning or experience and therefore equally true for everyone. It suggests that the goodness or badness of an interface is situated within the interface itself, rather than in the relationship between the user and the interface.&lt;br /&gt;
&lt;br /&gt;
Very few people would object to the statement that &#039;Apple software is more intuitive than Windows software&#039; yet to someone who has only used Windows software, this is clearly not the case. Avoiding using the word yourself and mentally translating other people&#039;s use of intuitive as &#039;something I like&#039; e.g. &amp;quot;Moodle&#039;s block system is unintuitive&amp;quot; = &amp;quot;Moodle&#039;s block system is something I don&#039;t like&amp;quot; may help to defuse arguments because it is harder to argue about personal opinions that are stated explicitly as personal opinion rather than disguised as objective statements about the software.&lt;br /&gt;
&lt;br /&gt;
Therefore what is called intuitive, in the case of Moodle, will depend on your experience and expectations of other learning systems, web applications or sites, as well as software in general and thus varies from person to person. Usability studies should therefore average out the expectations of many people to find what is &#039;intuitive&#039; and check to see if different groups (e.g. users of particular alternative systems, total beginners) have different expectations.&lt;br /&gt;
&lt;br /&gt;
This article explains more and better (with diagrams!): http://www.uie.com/articles/design_intuitive/&lt;br /&gt;
&lt;br /&gt;
==Learnability versus usability==&lt;br /&gt;
&lt;br /&gt;
People often confuse these topics, understandably as they do have a great deal in common. Generally what are referred to as &#039;usability&#039; improvements make things both easier to learn and easier for experienced users. Occasionally decisions need to be made favouring one over the other, and in those situations it helps to be explicit which of the two you are referring to. There are many successful software tools that sacrifice learnability so that power-users can be more efficient. It seems likely that Moodle will continue to lean towards learnability in these cases, though again 99% of the time these goals are not in conflict.&lt;br /&gt;
&lt;br /&gt;
==Don&#039;t automatically suggest a new preference==&lt;br /&gt;
&lt;br /&gt;
In open source projects it is often easier (in the short term) to defuse any disagreement by &#039;adding a preference&#039;. This means you end up with double (or triple..) the code to achieve the same thing. &lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Every time you provide an option, you&#039;re asking the user to make a decision.&#039;&#039;&#039; - [http://www.joelonsoftware.com/uibook/chapters/fog0000000059.html Joel on Software: Choices]&lt;br /&gt;
&lt;br /&gt;
# That&#039;s more code to write, debug, maintain etc. And once you end up with preferences interacting the potential combinations become astronomical and you end up in the situation that no two people are actually running the same program.&lt;br /&gt;
# Each new preference wastes user attention span and time. If you think you really need to add a preference, consider applying [[Progressive_Disclosure|progressive disclosure]].&lt;br /&gt;
&lt;br /&gt;
This can, over time lead to a profusion of preferences, each of which has a cost that needs to be weighed against its benefit. Sometimes finding a solution that pleases everyone (to some degree) is preferable to adding preferences for each idea. Learn to know what your users really need. Instead of pleasing everyone separately, [http://gettingreal.37signals.com/ch04_Make_Opinionated_Software.php make opinionated software].&lt;br /&gt;
&lt;br /&gt;
This is explained far better by Havoc Pennington in his piece on Open Source and User Interface, in particular the &amp;quot;Question of Preferences &amp;quot; section about half way through: http://www106.pair.com/rhp/free-software-ui.html&lt;br /&gt;
&lt;br /&gt;
==Is Moodle a website?==&lt;br /&gt;
&lt;br /&gt;
The somewhat tricky thing with regard to Moodle&#039;s usability is that Moodle is a web application, not a web site (though the line between the two is sometimes blurry) and few, if any, books have been written for that class of software. Therefore many applicable pieces of advice (from web, software or product usability guides) need to be reassessed with Moodle&#039;s nature in mind.&lt;br /&gt;
&lt;br /&gt;
== Additional Resources ==&lt;br /&gt;
&lt;br /&gt;
=== Websites ===&lt;br /&gt;
&lt;br /&gt;
* 37 Signals Blog: Signal versus Noise http://www.37signals.com/svn/&lt;br /&gt;
* Jakob Nielsen&#039;s website http://useit.com/&lt;br /&gt;
** [http://www.elearningpost.com/articles/archives/jakob_nielsen_on_e_learning/ an interview of Jakob Nielsen about e-learning]&lt;br /&gt;
* Joel Spolsky&#039;s User Interface Design for Programmers http://www.joelonsoftware.com/uibook/chapters/fog0000000057.html&lt;br /&gt;
* First Principles of Interaction Design by Tog (Bruce Tognazzini) http://www.asktog.com/basics/firstPrinciples.html&lt;br /&gt;
* [http://mpt.net.nz/archive/2008/08/01/free-software-usability Challenges of usability in an Open Source context]&lt;br /&gt;
* [http://wiki.fluidproject.org/display/fluid/Design+Handbook Fluid Design Handbook], an excellent resource to User Centered Design methods&lt;br /&gt;
* [http://mashable.com/2009/01/09/user-experience-design/ 10 Most Common Misconceptions About User Experience Design]&lt;br /&gt;
&lt;br /&gt;
=== Books ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Web specific&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* [http://www.sensible.com/ Don&#039;t Make Me Think] by Steve Krug &lt;br /&gt;
:A really good book, full of good info yet brief, well written and accessible. A [http://www.sensible.com/chapter.html sample chapter] is made available on his site, as well as [http://www.sensible.com/secondedition/index.html 3 complete chapters] from the 1st edition in pdf format, covering a complete script for usability testing.&lt;br /&gt;
&lt;br /&gt;
* [http://www.digital-web.com/articles/defensive_design_for_the_web/ Defensive Design For The Web] by [http://www.37signals.com/ 37 Signals] (Matthew Lindeman and Jason Fried).&lt;br /&gt;
&lt;br /&gt;
* [http://www.zeldman.com/dwws/ Designing with Web Standards, 2nd ed.] by Jeffrey Zeldman&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Moodle specific&#039;&#039;&#039;&lt;br /&gt;
* [http://www.pilpi.net/masters User experience design in open source development: Approaches to usability work in the Moodle community] by Olli Savolainen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Computer specific&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* [http://books.google.fi/books?id=04cFCVXC_AUC&amp;amp;dq=the+inmates+are+running+the+asylum&amp;amp;printsec=frontcover&amp;amp;source=bn&amp;amp;hl=en&amp;amp;ei=COknSur4FIfz_AaDzuXYAQ&amp;amp;sa=X&amp;amp;oi=book_result&amp;amp;ct=result&amp;amp;resnum=4 The inmates are running the asylum - Why High-Tech Products Drive Us Crazy and How to Restore the Sanity] by Alan Cooper&lt;br /&gt;
:A usability classic: a thought-stimulating, yet an entertaining higher-level perspective on the friction between user-centered thinking and software engineering thinking, and on solutions to start really designing for the actual goals of the users using Personas, Goals and Scenarios. &lt;br /&gt;
* [http://books.google.com/books?id=D39vjmLfO3kC The Humane Interface] by Jef Raskin&lt;br /&gt;
:Jef, who sadly passed away recently, has been more and more research focused for the last 15 years, since his days helping to create the first Macintosh. This led to a discarding all practical considerations to concieve of the &#039;perfect&#039; UI, rather than attending to the pragmatic, checklist-style &amp;quot;improve your site in 15 minutes&amp;quot; genre. However his writing is excellent in consistently laying the blame for problems with the computer and its software, not the user. It is often easy to fall into the trap of thinking &#039;stupid&#039; users are the problem, rather than simply a design parameter. It is however worth remembering that (unless you are a research fellow) many of these technical faults must be worked with to a certain degree, and that &amp;quot;perfection can often be the enemy of the good&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;General&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Psychology of Everyday Things&#039;&#039; by Donald Norman (new edition aka [http://books.google.com/books?id=EXwkGwAACAAJ The Design of Everyday Things]) &lt;br /&gt;
:It&#039;s a classic, so some of the examples are a bit dated, but the basic message that it is fundamentally hard for a designer (no matter how smart) to place themselves mentally in the position of a user is put across well. I think about this book&#039;s simple message every time I push a door I was supposed to pull and vice versa.&lt;br /&gt;
* [http://books.google.com/books?id=h_wAbnGlOC4C Emotional Design: Why We Love (or Hate) Everyday Things] by Donald Norman&lt;br /&gt;
&lt;br /&gt;
== See also: ==&lt;br /&gt;
* [[Usability FAQ]]&lt;br /&gt;
* [[Moodle_User_Interface_Guidelines|Moodle User Interface Guidelines]] &lt;br /&gt;
* [http://moodle.org/mod/data/view.php?d=19&amp;amp;rid=2486 &amp;quot;Make the Most of Your Studies: A Case Study and Web Usability Study Using the Collaborative Virtual Learning Environment Moodle with Postgraduate Students from Oil &amp;amp; Gas Related Courses&amp;quot;] MSc Dissertation by [http://moodle.org/user/view.php?id=757944&amp;amp;course=1 Syndia Lengyel]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Usability]]&lt;br /&gt;
[[Category:Usability]]&lt;br /&gt;
&lt;br /&gt;
[[ja:開発:ユーザビリティ]]&lt;/div&gt;</summary>
		<author><name>Pilpi</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Moodle_User_Interface_Guidelines&amp;diff=29251</id>
		<title>Moodle User Interface Guidelines</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Moodle_User_Interface_Guidelines&amp;diff=29251"/>
		<updated>2011-08-22T14:14:03Z</updated>

		<summary type="html">&lt;p&gt;Pilpi: /* See also */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DRAFT DOCUMENT&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Many of the pages below are incomplete or obsolete.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These guidelines were produced as part of a student project in 2009, and are not yet official Moodle guidelines.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
These guidelines are to be used as a &#039;&#039;&#039;UI reference library&#039;&#039;&#039; by Moodle developers when creating user interfaces. &lt;br /&gt;
&lt;br /&gt;
It does not catalogue all the elements in use in Moodle, but is intended a reference of reusable elements sharing that common Moodle style. We aim to update this reference as new common practices appear. [[Moodle User Interface Guidelines:Introduction|More...]]&lt;br /&gt;
* [[Moodle User Interface Guidelines:Help requested|Help requested: comment on these guidelines]]&lt;br /&gt;
&lt;br /&gt;
==Moodle basics==&lt;br /&gt;
* [[Page structure and types|Page structure and different page types]]&lt;br /&gt;
* [https://docs.moodle.org/20/en/Roles_and_capabilities Roles and capabilities]&lt;br /&gt;
* [[Groups]]&lt;br /&gt;
&lt;br /&gt;
==Moodle UI library==&lt;br /&gt;
UIs are built of Elements and Interaction Styles (bigger wholes, which are built of Elements).&lt;br /&gt;
=== Elements ===&lt;br /&gt;
* [[Big Select List|Big Select List]]&lt;br /&gt;
&lt;br /&gt;
* [[Tooltip|Tooltip]]&lt;br /&gt;
* [[Link|Link]]&lt;br /&gt;
* [[Button|Button]]&lt;br /&gt;
* [[Address Bar|Address Bar]] (URLs)&lt;br /&gt;
&lt;br /&gt;
=== Interaction Styles ===&lt;br /&gt;
* [[Wizard|Wizard]]&lt;br /&gt;
* [[Help Popups|Help Popups]] (See [[Interface_guidelines#Linking_to_help|Linking to help]] for now)&lt;br /&gt;
* [[Feedback page|Feedback page]]&lt;br /&gt;
* [[Form|Form]] (incomplete)&lt;br /&gt;
** [[Radio button|Radio button]]&lt;br /&gt;
** [[Checkbox|Checkbox]]&lt;br /&gt;
** [[Dropdown Lists|Dropdown lists]] (incomplete)&lt;br /&gt;
&lt;br /&gt;
== General design guidelines ==&lt;br /&gt;
* [[Progressive Disclosure|Progressive Disclosure]]&lt;br /&gt;
* [[User Data Always Safe|User Data Always (Always) Safe]] &lt;br /&gt;
* [[Feedback (User Interface Guideline)|Feedback]] (Incomplete)&lt;br /&gt;
=== Relevant guidelines from other sites ===&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-people.html.en Design for People]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-broad-userbase.html.en Don&#039;t Limit Your User Base]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-match.html.en Create a Match Between Your Application and the Real World]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-consistency.html.en Make Your Application Consistent]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-feedback.html.en Keep the User Informed]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-simplicity.html.en Keep It Simple and Pretty]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-user-control.html.en Put the User in Control]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-forgiveness.html.en Forgive the User]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-direct-manipulation.html.en Provide Direct Manipulation]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [http://developer.fellowshipone.com/patterns/ Design Patterns Library &amp;amp; Code Standards] by Fellowship technologies&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* Further development on Talk page: [[Talk:Moodle_User_Interface_Guidelines]]&lt;br /&gt;
* &#039;&#039;&#039;[https://docs.moodle.org/20/en/Using_Moodle_book Using Moodle book]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Usability in Moodle ===&lt;br /&gt;
* [[Usability|Usability]]&lt;br /&gt;
* [[Usability_FAQ|Usability FAQ]]&lt;br /&gt;
&lt;br /&gt;
=== Implementation advice ===&lt;br /&gt;
* [[Developer_documentation|Developer documentation]]&lt;br /&gt;
* UI coding: [[Interface_guidelines]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer tools|User Interface Guidelines]]&lt;br /&gt;
[[Category:Usability|User Interface Guidelines]]&lt;br /&gt;
[[Category:Moodle User Interface Guidelines]]&lt;/div&gt;</summary>
		<author><name>Pilpi</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Moodle_User_Interface_Guidelines&amp;diff=29250</id>
		<title>Moodle User Interface Guidelines</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Moodle_User_Interface_Guidelines&amp;diff=29250"/>
		<updated>2011-08-22T14:11:53Z</updated>

		<summary type="html">&lt;p&gt;Pilpi: /* See also */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DRAFT DOCUMENT&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Many of the pages below are incomplete or obsolete.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These guidelines were produced as part of a student project in 2009, and are not yet official Moodle guidelines.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
These guidelines are to be used as a &#039;&#039;&#039;UI reference library&#039;&#039;&#039; by Moodle developers when creating user interfaces. &lt;br /&gt;
&lt;br /&gt;
It does not catalogue all the elements in use in Moodle, but is intended a reference of reusable elements sharing that common Moodle style. We aim to update this reference as new common practices appear. [[Moodle User Interface Guidelines:Introduction|More...]]&lt;br /&gt;
* [[Moodle User Interface Guidelines:Help requested|Help requested: comment on these guidelines]]&lt;br /&gt;
&lt;br /&gt;
==Moodle basics==&lt;br /&gt;
* [[Page structure and types|Page structure and different page types]]&lt;br /&gt;
* [https://docs.moodle.org/20/en/Roles_and_capabilities Roles and capabilities]&lt;br /&gt;
* [[Groups]]&lt;br /&gt;
&lt;br /&gt;
==Moodle UI library==&lt;br /&gt;
UIs are built of Elements and Interaction Styles (bigger wholes, which are built of Elements).&lt;br /&gt;
=== Elements ===&lt;br /&gt;
* [[Big Select List|Big Select List]]&lt;br /&gt;
&lt;br /&gt;
* [[Tooltip|Tooltip]]&lt;br /&gt;
* [[Link|Link]]&lt;br /&gt;
* [[Button|Button]]&lt;br /&gt;
* [[Address Bar|Address Bar]] (URLs)&lt;br /&gt;
&lt;br /&gt;
=== Interaction Styles ===&lt;br /&gt;
* [[Wizard|Wizard]]&lt;br /&gt;
* [[Help Popups|Help Popups]] (See [[Interface_guidelines#Linking_to_help|Linking to help]] for now)&lt;br /&gt;
* [[Feedback page|Feedback page]]&lt;br /&gt;
* [[Form|Form]] (incomplete)&lt;br /&gt;
** [[Radio button|Radio button]]&lt;br /&gt;
** [[Checkbox|Checkbox]]&lt;br /&gt;
** [[Dropdown Lists|Dropdown lists]] (incomplete)&lt;br /&gt;
&lt;br /&gt;
== General design guidelines ==&lt;br /&gt;
* [[Progressive Disclosure|Progressive Disclosure]]&lt;br /&gt;
* [[User Data Always Safe|User Data Always (Always) Safe]] &lt;br /&gt;
* [[Feedback (User Interface Guideline)|Feedback]] (Incomplete)&lt;br /&gt;
=== Relevant guidelines from other sites ===&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-people.html.en Design for People]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-broad-userbase.html.en Don&#039;t Limit Your User Base]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-match.html.en Create a Match Between Your Application and the Real World]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-consistency.html.en Make Your Application Consistent]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-feedback.html.en Keep the User Informed]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-simplicity.html.en Keep It Simple and Pretty]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-user-control.html.en Put the User in Control]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-forgiveness.html.en Forgive the User]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-direct-manipulation.html.en Provide Direct Manipulation]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [http://developer.fellowshipone.com/patterns/ Design Patterns Library &amp;amp; Code Standards] by Fellowship technologies&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* Further development on Talk page: [[Development_talk:Moodle_User_Interface_Guidelines]]&lt;br /&gt;
* &#039;&#039;&#039;[https://docs.moodle.org/20/en/Using_Moodle_book Using Moodle book]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Usability in Moodle ===&lt;br /&gt;
* [[Usability|Usability]]&lt;br /&gt;
* [[Usability_FAQ|Usability FAQ]]&lt;br /&gt;
&lt;br /&gt;
=== Implementation advice ===&lt;br /&gt;
* [[Developer_documentation|Developer documentation]]&lt;br /&gt;
* UI coding: [[Interface_guidelines]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer tools|User Interface Guidelines]]&lt;br /&gt;
[[Category:Usability|User Interface Guidelines]]&lt;br /&gt;
[[Category:Moodle User Interface Guidelines]]&lt;/div&gt;</summary>
		<author><name>Pilpi</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Moodle_User_Interface_Guidelines&amp;diff=29249</id>
		<title>Moodle User Interface Guidelines</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Moodle_User_Interface_Guidelines&amp;diff=29249"/>
		<updated>2011-08-22T14:11:35Z</updated>

		<summary type="html">&lt;p&gt;Pilpi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DRAFT DOCUMENT&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Many of the pages below are incomplete or obsolete.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These guidelines were produced as part of a student project in 2009, and are not yet official Moodle guidelines.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
These guidelines are to be used as a &#039;&#039;&#039;UI reference library&#039;&#039;&#039; by Moodle developers when creating user interfaces. &lt;br /&gt;
&lt;br /&gt;
It does not catalogue all the elements in use in Moodle, but is intended a reference of reusable elements sharing that common Moodle style. We aim to update this reference as new common practices appear. [[Moodle User Interface Guidelines:Introduction|More...]]&lt;br /&gt;
* [[Moodle User Interface Guidelines:Help requested|Help requested: comment on these guidelines]]&lt;br /&gt;
&lt;br /&gt;
==Moodle basics==&lt;br /&gt;
* [[Page structure and types|Page structure and different page types]]&lt;br /&gt;
* [https://docs.moodle.org/20/en/Roles_and_capabilities Roles and capabilities]&lt;br /&gt;
* [[Groups]]&lt;br /&gt;
&lt;br /&gt;
==Moodle UI library==&lt;br /&gt;
UIs are built of Elements and Interaction Styles (bigger wholes, which are built of Elements).&lt;br /&gt;
=== Elements ===&lt;br /&gt;
* [[Big Select List|Big Select List]]&lt;br /&gt;
&lt;br /&gt;
* [[Tooltip|Tooltip]]&lt;br /&gt;
* [[Link|Link]]&lt;br /&gt;
* [[Button|Button]]&lt;br /&gt;
* [[Address Bar|Address Bar]] (URLs)&lt;br /&gt;
&lt;br /&gt;
=== Interaction Styles ===&lt;br /&gt;
* [[Wizard|Wizard]]&lt;br /&gt;
* [[Help Popups|Help Popups]] (See [[Interface_guidelines#Linking_to_help|Linking to help]] for now)&lt;br /&gt;
* [[Feedback page|Feedback page]]&lt;br /&gt;
* [[Form|Form]] (incomplete)&lt;br /&gt;
** [[Radio button|Radio button]]&lt;br /&gt;
** [[Checkbox|Checkbox]]&lt;br /&gt;
** [[Dropdown Lists|Dropdown lists]] (incomplete)&lt;br /&gt;
&lt;br /&gt;
== General design guidelines ==&lt;br /&gt;
* [[Progressive Disclosure|Progressive Disclosure]]&lt;br /&gt;
* [[User Data Always Safe|User Data Always (Always) Safe]] &lt;br /&gt;
* [[Feedback (User Interface Guideline)|Feedback]] (Incomplete)&lt;br /&gt;
=== Relevant guidelines from other sites ===&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-people.html.en Design for People]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-broad-userbase.html.en Don&#039;t Limit Your User Base]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-match.html.en Create a Match Between Your Application and the Real World]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-consistency.html.en Make Your Application Consistent]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-feedback.html.en Keep the User Informed]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-simplicity.html.en Keep It Simple and Pretty]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-user-control.html.en Put the User in Control]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-forgiveness.html.en Forgive the User]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-direct-manipulation.html.en Provide Direct Manipulation]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [http://developer.fellowshipone.com/patterns/ Design Patterns Library &amp;amp; Code Standards] by Fellowship technologies&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* Further development on Talk page: [[Development_talk:Moodle_User_Interface_Guidelines]]&lt;br /&gt;
* &#039;&#039;&#039;[Using Moodle book https://docs.moodle.org/20/en/Using_Moodle_book]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Usability in Moodle ===&lt;br /&gt;
* [[Usability|Usability]]&lt;br /&gt;
* [[Usability_FAQ|Usability FAQ]]&lt;br /&gt;
&lt;br /&gt;
=== Implementation advice ===&lt;br /&gt;
* [[Developer_documentation|Developer documentation]]&lt;br /&gt;
* UI coding: [[Interface_guidelines]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer tools|User Interface Guidelines]]&lt;br /&gt;
[[Category:Usability|User Interface Guidelines]]&lt;br /&gt;
[[Category:Moodle User Interface Guidelines]]&lt;/div&gt;</summary>
		<author><name>Pilpi</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Moodle_User_Interface_Guidelines:Introduction&amp;diff=29248</id>
		<title>Moodle User Interface Guidelines:Introduction</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Moodle_User_Interface_Guidelines:Introduction&amp;diff=29248"/>
		<updated>2011-08-22T14:08:37Z</updated>

		<summary type="html">&lt;p&gt;Pilpi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[ Moodle User Interface Guidelines|Moodle User Interface Guidelines]] &amp;gt; &#039;&#039;&#039;Introduction&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;These guidelines are to be used as a &#039;&#039;&#039;UI reference library&#039;&#039;&#039; by Moodle developers when creating user interfaces. &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;It does not catalogue all the elements in use in Moodle, but is intended a reference of reusable elements sharing that common Moodle style. We aim to update this reference as new common practices appear.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The primary purpose&#039;&#039; is to document what is already there, the parts of Moodle that are proven by practice to work. What is the Moodle style - what is specific about the Moodle UI that makes it Moodlish and is better than any other UI for the purpose it serves? It often seems it is difficult to know how to make an UI coherent with the Moodle style. I have started to find out, and I intend to document it. This way, Moodle can give a more consistent user experience in the future, by helping developers quickly find what there already is. The guidelines under the heading &#039;&#039;&#039;Moodle UI library&#039;&#039;&#039; are meant for this.&lt;br /&gt;
&lt;br /&gt;
All of the guidelines are to have a link to a document called &amp;quot;Examples and Code Samples: [Guideline Name] &amp;quot;, where it is documented where to look for examples on how to implement a given guideline in practice.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The other, and perhaps a longer-term purpose&#039;&#039; is to have a bit of a reference and a foundation to invoke discussion about usability issues. There are many guidelines that often apply not only to Moodle but also to other web applications. Getting them right also helps to make Moodle more welcoming to people coming from elsewhere on the web, and use Moodle only occasionally. These guidelines are under the heading &#039;&#039;&#039;General design guidelines&#039;&#039;&#039;.&lt;/div&gt;</summary>
		<author><name>Pilpi</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Usability/Improve_Moodle_User_Experience_Consistency&amp;diff=12922</id>
		<title>Usability/Improve Moodle User Experience Consistency</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Usability/Improve_Moodle_User_Experience_Consistency&amp;diff=12922"/>
		<updated>2010-10-29T13:53:48Z</updated>

		<summary type="html">&lt;p&gt;Pilpi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Parent page:[[Usability|Usability]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project outcome: [[Moodle_User_Interface_Guidelines|Moodle User Interface Guidelines]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This project will create a a lightweight Human Interface Guidelines style documentation for Moodle, as part of a review of Moodle&#039;s overall user interface.&lt;br /&gt;
&lt;br /&gt;
It is not about making usability recommendations to specific parts of Moodle, but trying to see patterns in the way UI&#039;s are made in Moodle, and to make recommendations concerning those patterns.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note: This is a project plan, and although I have made an effort to organize the content, as such might it not be very easily readable by random passers-by.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{GSOC 09}}&lt;br /&gt;
==Overview==&lt;br /&gt;
*&#039;&#039;&#039;Progress meter:&#039;&#039;&#039; MDL-19586&lt;br /&gt;
*&#039;&#039;&#039;Resulting guidelines site:&#039;&#039;&#039; [[Moodle_User_Interface_Guidelines|Moodle User Interface Guidelines]]&lt;br /&gt;
* Project documents:&lt;br /&gt;
**&#039;&#039;&#039;Detailed project plan (and schedule):&#039;&#039;&#039; [[Usability/Improve Moodle User Experience Consistency/Detailed project plan]]&lt;br /&gt;
** &#039;&#039;&#039;Notes:&#039;&#039;&#039; [[Usability/Improve Moodle User Experience Consistency/Notes from UI inspection]]&lt;br /&gt;
*&#039;&#039;&#039;Forum:&#039;&#039;&#039; [http://moodle.org/mod/forum/discuss.php?d=119507#p523934 Usability forum]&lt;br /&gt;
*&#039;&#039;&#039;Blog:&#039;&#039;&#039; [http://www.pilpi.net/software/moodle/ Project blog]&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;Proposition:&#039;&#039;&#039; [http://moodle.org/mod/forum/discuss.php?d=119502 Introducing the project] for Google Summer of Code 2009 (based on prior discussion with Tim Hunt and Helen Foster)&lt;br /&gt;
*&#039;&#039;&#039;Project student:&#039;&#039;&#039; [[User:Olli Savolainen]] / University of Tampere, Finland&lt;br /&gt;
&lt;br /&gt;
===Executive Summary===&lt;br /&gt;
Review Moodle&#039;s overall user interface. As an intermediary step, create a lightweight Human Interface Guidelines style documentation for Moodle. After having gathered the principle interaction styles and elements, discuss them with the community and fix the most obvious inconsistencies found. &lt;br /&gt;
&lt;br /&gt;
=== Motivation ===&lt;br /&gt;
In Summer 2008, I worked to [[Quiz_UI_redesign|enhance the usability of the Moodle Quiz module]], based on reported needs of teachers. During this project the lack of usability documentation became obvious. On one hand, there is an implicit Moodle way of doing user interfaces, but then it is not very well documented. &lt;br /&gt;
&lt;br /&gt;
When I started working on the Quiz UI I was not deeply knowledgeable about Moodle as a whole. Though consistency was discussed in that project, the fact shows in the outcome. It was difficult to keep a complex UI design consistent with the whole of Moodle where the spectrum of UI elements and interaction styles used is quite limited. Moodle is just starting to introduce the fluidity of AJAX-style UIs.&lt;br /&gt;
&lt;br /&gt;
Although I have been developing for Moodle since Summer 2006, I also consider this an important learning experience about the whole of Moodle for myself, to gain deeper understanding about the different possiblities provided by Moodle, and about how they correspond to actual user needs.&lt;br /&gt;
&lt;br /&gt;
== Summer 2009: In practice ==&lt;br /&gt;
&lt;br /&gt;
Moodle is a web application. Web applications do not, in general, have strict consistency rules or UI guidelines. However, Moodle is also starting to be a big application. &lt;br /&gt;
&lt;br /&gt;
Different parts of it share similar interactions, and they should work similarly across different components, or modules. To this end, developers should be capable of searching the documentation for topics such as “selecting a group of users” or “opening a file” and find a concise explanation describing what the user experience should look like and possibly how to implement it.&lt;br /&gt;
&lt;br /&gt;
Based on the usage scenarios and use cases of each component, a limited amount of usability testing will be carried out.  Necessary improvements will then be suggested on the user interface level to enhance the interoperability between different parts of the whole. &lt;br /&gt;
&lt;br /&gt;
I will implement changes, the need for which rises from the research phase that can be sufficiently usability tested, agreed about in the community, and are reasonable easy to implement in terms of software development. Larger-scale guidelines for improving consistency will be discussed in the community and documented.&lt;br /&gt;
&lt;br /&gt;
===Project plan===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Detailed project plan (and schedule):&#039;&#039;&#039; [[Usability/Improve Moodle User Experience Consistency/Detailed project plan]]&lt;br /&gt;
&lt;br /&gt;
The idea is to keep ideas and perceptions in this docs page and possibly in subpages. I will go through Moodle 2.0 HEAD and in case something is broken I will refer to Moodle 1.9. Results of the project will possibly be in [[Interface_guidelines]] although that may still be something different from what I&#039;m actually doing in this project - so another page might be needed. During the project I will listen to the community of developers a LOT to understand their needs and the scenarios in which they might use something like a HIG.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TODO DONE May09: Create a ticket in tracker with the subsections of the project&#039;&#039;&#039; ... hm. I really don&#039;t find the tracker UI very suitable for this kind of a project. Can anyone name a real reason to use time creating those subtickets? Maybe I&#039;ll just create a single big ticket and link it here to the actual project plan.&lt;br /&gt;
&lt;br /&gt;
 Well, it&#039;s useful to organise the stages, indicate their completion status, &lt;br /&gt;
 Moodle versions, as well as add watchers/notification and so on.  Consider&lt;br /&gt;
 it a Moodle.org usability guideline :)   [[User:Martin Dougiamas|Martin Dougiamas]] 08:25, 3 June 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== UIs to examine ===&lt;br /&gt;
My current impression is that at least the following are an integral part of the core Moodle experience, and need to be evaluated as a part of this project. This list is &#039;&#039;&#039;not&#039;&#039;&#039; definitive, but serves as an initial perspective of the scope of the project.&lt;br /&gt;
&lt;br /&gt;
☑=initially examined for elements and interaction styles to include&lt;br /&gt;
&lt;br /&gt;
* Course management: Front page, category page, Main course page (including different formats; topics ☑), course completion (http://moodle.org/mod/forum/discuss.php?d=126016)&lt;br /&gt;
* Roles management&lt;br /&gt;
* My Moodle, User profiles, course participants list&lt;br /&gt;
* Assignments, Chat ☑, Database activities, File management, Feedback (Questionnaire) http://moodle.org/mod/forum/discuss.php?d=52861&amp;amp;parent=550322, Forums(☑), Glossaries ☑, Quizzes (☑), Resources ☑, (Wikis ☑, Lessons, Hot Potatoes)&lt;br /&gt;
* Gradebook (the new UI interoduced in 1.9 and 2.0 in 2009), Outcomes, Backup&amp;amp; Restore, Question bank, various Settings screens (forms).&lt;br /&gt;
* More modules listed in using moodle forums listing (could not find it from moodle.org menus now)&lt;br /&gt;
See also: [http://tracker.moodle.org/secure/IssueNavigator.jspa?reset=true&amp;amp;mode=hide&amp;amp;pid=10011&amp;amp;sorter/order=DESC&amp;amp;sorter/field=priority&amp;amp;resolution=-1&amp;amp;component=10309 Tracker items tagged &#039;usability&#039;]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Various ways to categorize UIs and their parts ====&lt;br /&gt;
* &#039;&#039;&#039;Goal-related&#039;&#039;&#039; &lt;br /&gt;
** Functional wholes: site administration, course hierarchy management, user management, course management, student: keeping track of courses/duties, rights management (contexts,roles)&lt;br /&gt;
** Processes: installation, logging in&lt;br /&gt;
** Use cases: login when following link to protected page, checking for new posts, grading things&lt;br /&gt;
** User motivations: efficiency, privacy, social meaningfulness, fitness for purpose, satisfaction/pleasantness&lt;br /&gt;
* &#039;&#039;&#039;Page types&#039;&#039;&#039;: Course page, module pages, tabbed pages, configuration pages (and rights management), user-specific pages (profile/my moodle), popups/specialised pages (help windows, chat windows, quiz question preview)&lt;br /&gt;
* &#039;&#039;&#039;Functional units&#039;&#039;&#039;: courses, modules, blocks, editors&lt;br /&gt;
** editors: text editors (plain, wysiwyg), equation editors, image editors, sound editors&lt;br /&gt;
** &#039;&#039;&#039;Modules&#039;&#039;&#039;: Forum, Quiz, Wiki, Assignment, Glossary, Gradebook, ...&lt;br /&gt;
** web app taxonomy: configuration, content editing pages&lt;br /&gt;
** domain-specific taxonomy: course categories, courses, modules, blocks&lt;br /&gt;
* &#039;&#039;&#039;Page regions&#039;&#039;&#039;: Header, footer, sidebars, content area&lt;br /&gt;
* &#039;&#039;&#039;Interaction styles&#039;&#039;&#039;: wizards, forms, different course formats&lt;br /&gt;
* &#039;&#039;&#039;Elements&#039;&#039;&#039;: Tabs, different form elements, links, buttons, dialogs, breadcrumb navigation, tooltips, list tools (add element to list from a set), table tools&lt;br /&gt;
** &#039;&#039;&#039;Navigational elements&#039;&#039;&#039;: Search, breadcrumb, menu, tabs, modes, headings&lt;br /&gt;
* &#039;&#039;&#039;Technology&#039;&#039;&#039;: native in browser, plain html+css, browser scripted (js, canvas), dynamic/desktop-like (ajax, flash), plugin-based (java, flash, separate video players), email-based, IM-based, on-screen, printable, mobile, &lt;br /&gt;
** &#039;&#039;&#039;Modality&#039;&#039;&#039;: auditive, visual, tactile&lt;br /&gt;
* Modes&lt;br /&gt;
** global: &amp;quot;view as student&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Interaction styles/elements to possibly examine ===&lt;br /&gt;
striking through as temporarily moving to an openoffice.org document&lt;br /&gt;
&amp;lt;s&amp;gt;&lt;br /&gt;
* consistency of feedback from any and all user actions; normal and error situations; recovery&lt;br /&gt;
* data listings, such as quiz editing and moodle course front page&lt;br /&gt;
** functionality: moving elements in a list (reordering), moving elements between lists &lt;br /&gt;
** gradebook: clicking on column titles to highlight the column&lt;br /&gt;
** tables vs. lists vs. divs with complex data&lt;br /&gt;
** alternating colours for rows: in general it is a good idea and helps to guide the eye better than just a table grid. There should be a contrast in luminosity of the rows (just alternating hue might not be enough), to make sure also colorblind people can see the difference. Also if some rows/colours can be selected, changing their background colour again, this might have to be rethought.&lt;br /&gt;
** filtering selection lists MDL-17780 MDL-19285&lt;br /&gt;
* forms &lt;br /&gt;
** simplicity through progressive disclosure&lt;br /&gt;
*** quiz question editing forms for various question types&lt;br /&gt;
** on simple forms, (less than one page / four elements or less) autofocus the first field of the form on body onload IF none of the fields have any changed content in them (i.e. if the user is not returning to the page from browser history, see: MDL-825)&lt;br /&gt;
** autosave as a standard on all forms: in case of network outage / simultaneous editing by someone else / some other conflict situation, always tell the user there was an error and **give the users their data back** so that they can &lt;br /&gt;
*** optimally, try again saving the data, resolving that conflict&lt;br /&gt;
*** or at least copy what they filled in to clipboard&lt;br /&gt;
*** currently losing data is also a problem when the editing time of a forum post has passed but the user is already in the post editing form and has changed something: moodle gives an error message that editing time has passed, and just discards all the changes the user tried to save.&lt;br /&gt;
**** The same applies when user gets logged out for whatever reason: the session ID changes when they log in again so even if they manage to do that (in a different window), submitting the form again fails and the user loses all submitted data: if there are no security issues to this, Moodle should give the user their data back so they do not lose it.&lt;br /&gt;
** Feedback for form actions; an intermediate page giving feedback with META refresh&lt;br /&gt;
*** slow, clumsy, issues with browser history(?), not standard with most of the rest of the web&lt;br /&gt;
** Like in WordPress, javascript confirmation if the user presses the back button when already having filled in data but not submitted the form. Especially when using ctrl and shift with arrow keys to move around in text (though it&#039;s possibly a marginal use case), it is easy to inadvertedly trigger the shortcut key of the back button in the browser.&lt;br /&gt;
** Configuration defaults: http://moodle.org/mod/forum/discuss.php?d=124533&lt;br /&gt;
** Date selection: use javascript selector (how about time?)&lt;br /&gt;
** Buttons in each module configuration: save and return to course / save and display / cancel. Are there really use cases to support having this choice each time? &lt;br /&gt;
* editing modes: inline editing (course frontpage) vs. editor (quiz)&lt;br /&gt;
** related: most CMSs have separate control panels and inline editing is extra, in Moodle there is no clear distinction between control panels and content pages&lt;br /&gt;
** http://moodle.org/mod/forum/discuss.php?d=122300#p536641&lt;br /&gt;
** related: when editing something in a form, if the user is exiting the page without saving page, give a javascript alert on pageunload (?) confirming whether the user wants to save the changes first &lt;br /&gt;
* dialog title bars visuals: file selector vs. quiz dialogs&lt;br /&gt;
* modal buttons; buttons that have an on/off state: show the command to change or the current status &lt;br /&gt;
** According to the strictest rules of form element usage, everything should ideally be done with radio buttons and a submit button to confirm the selection. However, this is very clumsy.&lt;br /&gt;
** track/subscribe a forum: button saying yes/no in the forums listing of a course VS link saying &amp;quot;Subscribe to this forum&amp;quot;/&amp;quot;Unsubscribe from this forum&amp;quot; or &amp;quot;Track unread posts&amp;quot;/&amp;quot;Don&#039;t track unread posts&amp;quot;&lt;br /&gt;
** show/hide controls (eye icon/button): should it reflect the current status or the status after pushing? one idea is to have a button-style control with pressed/non-pressed visual status (thanks to Hans de Zwart)&lt;br /&gt;
** In profile, enable/disable e-mail (2.0)&lt;br /&gt;
* usage of buttons vs. links&lt;br /&gt;
** general guidelines of using buttons for commands/actions (non-bookmarkable POST or AJAX request -&amp;gt; not in URL) and links for navigation/location (GET request -&amp;gt; shows also in URL)&lt;br /&gt;
*** VS what is usually done in Moodle&lt;br /&gt;
**** In profile, clicking (this e-mail address is disabled) does not explain it but just removes the link! (Apparently fixed for 2.0 but raises another issue of changing status of a setting with an icon)&lt;br /&gt;
** But like facebook seems to do it now (2009-05) to remove clutter, sometimes when an element is clearly a command, it may be okay to make it look like a button only after the user hovers over it.&lt;br /&gt;
** http://natbat.net/2009/Jun/10/styling-buttons-as-links/ - is the only UI difference that reloading (and browser history otherwise) works badly with POST? (this can be fixed with a HTTP redirect) &lt;br /&gt;
*** (08:22:26 AM) timhunt: Olli, the real reason for the difference between GET and POST comes when you think about web caches, or clicking reload in the browser, or, getting more technical, REST web services. (08:23:18 AM) timhunt: A POST does something, and should not be repeated, or served from a cache, without careful thought. A GET, that just pulls information, can safely be served from a cache, or repeated.&lt;br /&gt;
* Tabs: even though users are already accustomed to the fact that tabs are not used in as a regular fashion as was originally thought, tabs in the same tab bar should still have some common denominators. Document these, compare with other HIGs&lt;br /&gt;
** [http://www.futurice.com/services/we_can_we_care an interesting deviation from the standard tabs visual design]&lt;br /&gt;
* Search&lt;br /&gt;
* TITLE elements of pages: descriptive of the specific content&lt;br /&gt;
* popup_form() dropdown command menus (add new activity to course) vs. YUI dialogs such as &#039;add new question&#039; in Quiz&lt;br /&gt;
* Help: wiki ([http://blogs.atlassian.com/news/2007/12/using_a_wiki_fo.html]), popups, inline help (http://www.pilpi.net/software/moodle/2009/06/18/inline-help/ [http://www.pathf.com/blogs/2008/04/design-pattern-2/])&lt;br /&gt;
* usage of the frames which are rounded at the bottom. are they for summaries (m2q ► CF101 ► Resources ► tiedostot) or for the main content? (resource)&lt;br /&gt;
* update this [modulename] button, and various additional buttons/links nearby&lt;br /&gt;
** glossary: Import entries / Export entries Printer-friendly version&lt;br /&gt;
** forum: subscripthion permission status, force everyone to be subscribed (-&amp;gt;button), show/edit subscriptions, subscribe (-&amp;gt;button)&lt;br /&gt;
* visual consistency of toolbars (and other windowingsystem-like visuals) in tools such as equation editor, drawing tool, rich text editor&lt;br /&gt;
* wizards, such as backup, need to act like wizards. &lt;br /&gt;
** Back/Next (which preserve the data entered by users in other screens) and Cancel buttons on every screen with progress meter showing the active steps and the number of steps left. &lt;br /&gt;
**Each screen is a form, so no links are used to make selections to keep the wizard consistent (the added click is secondary to the problem of potentially losing user data: even if the data was preserved, navigation links do not afford this and the user is still anxious of using back/forward browser buttons). &lt;br /&gt;
** what makes a wizard? http://ui-patterns.com/pattern/Wizard  http://designinginterfaces.com/Wizard&lt;br /&gt;
**All of this functionality is provided by PEAR QuickForm_Controller.&lt;br /&gt;
*** assumably quickform_wizard is a more advanced version of quickform_controller http://translate.google.com/translate?js=n&amp;amp;prev=_t&amp;amp;hl=en&amp;amp;ie=UTF-8&amp;amp;u=http%3A%2F%2Fwww.ambrosanio.com%2Fcomponent%2Fcontent%2Farticle%2F33-my-php%2F56-htmlquickformwizard&amp;amp;sl=auto&amp;amp;tl=en&amp;amp;history_state0= &lt;br /&gt;
*** a progressive enhancement AJAX to quickform_wizard: http://www.bubbling-library.com/eng/api/docs/plugins/wizard-documentation.html&lt;br /&gt;
&amp;lt;/s&amp;gt;&lt;br /&gt;
==== Moodle / CMS elements conveying specific semantics ====&lt;br /&gt;
* Blocks&lt;br /&gt;
* Themes&lt;br /&gt;
* Filters&lt;br /&gt;
&lt;br /&gt;
==== Future prospects ====&lt;br /&gt;
* notification popups (like facebook&#039;s) - something like http://www.paquitosoft.com/notimoo/ but more subtle and with YUI&lt;br /&gt;
* explore google wave&#039;s interaction styles&lt;br /&gt;
&lt;br /&gt;
=== Outcomes ===&lt;br /&gt;
# As a result of having discovered consistency issues, fixes to Moodle 2.0 UI code to enhance the overall user experience (UX)&lt;br /&gt;
# Index of the current screen types, interaction styles and elements, with their intended uses. Should also be searchable by intended use, to find out what UI elements to use in a given situation.&lt;br /&gt;
# Secondary outcome: find and gather typical use cases of core UIs/modules -&amp;gt; useful for usability testing and further UI design&lt;br /&gt;
&lt;br /&gt;
The format in which to present the guidelines is still unclear. The main objectives are&lt;br /&gt;
* Lightness, quickness: rather links to examples and screenshots than lengthy explanations&lt;br /&gt;
* Interlinked elements (UI&#039;s, issues, guidelines, etc.) to facilitate keeping documentation in context and easing maintenance.&lt;br /&gt;
&lt;br /&gt;
=== What is ahead: challenges ===&lt;br /&gt;
We need to do this together. Although I am promoting building at least some sort of a skeleton of a documentation on the User Experience (UX) level, the point is to create something that the community can embrace and use, as a part of the developer documentation used in everyday development discussions. Moodle already has a lot of documentation for technical considerations and it has usually been easy to get help for technical issues. [http://www.uoc.edu/portal/english/la_universitat/sala_de_premsa/entrevistes/2008/martin_dougiamas.html Usability needs to have an equally important role, as discussed many times before].&lt;br /&gt;
&lt;br /&gt;
The challenge in trying to standardize something such as UI designs, is that the whole point about developing applications for humans is often about creating new styles of interactions. Thus, it is key to create a strong convention to keep this documentation up-to-date. That is, whenever developers decide that something is missing in the catalog, it will be added. The most standard i.e. common and mundane tasks need to be the most easy-to-find, keeping at least them standard across Moodle.&lt;br /&gt;
&lt;br /&gt;
Also, usability testing the suggested solutions sufficiently for actually changing the implementation is quite a challenge during just one Summer.&lt;br /&gt;
&lt;br /&gt;
== Background: The Ultimate Goals ==&lt;br /&gt;
&lt;br /&gt;
=== Goals ===&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Give power to the developers to create good, Moodle-style UI&#039;s&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The main goal is to gather lightweight HIG-style documentation to help evaluate the consistency of the current UIs and to facilitate the design of future UIs. For this to be useful, using the HIG needs to be incorporated in the developer guidelines (and in the moodle developer course) of Moodle. All UIs should be validated against the HIG. It does not make sense to document all &amp;quot;original&amp;quot; interactions. Still, at least where an UI deviates from something mundane that clearly is defined in the HIG, the fact and the reasons for it should be documented with in the documentation for the code.&lt;br /&gt;
&lt;br /&gt;
The intended use of the main core modules will be studied and preliminary documentation will be gathered so that anyone building on an existing UI will know what user needs they are designing for. This will also facilitate usability testing since it will be transparent to what the main tasks to test against are, even to people who do not already know the UI (this seems to avoid the bias of defending the familiar, during usability tests).&lt;br /&gt;
&lt;br /&gt;
As opposed to the Quiz UI work of last summer, the approach is top-down. The point is to examine the goals each of the main components of the user interface, in the context of Moodle, as a whole. &lt;br /&gt;
&lt;br /&gt;
The goal is to create a framework for developers to think about and document the user experience (UX) of Moodle. The knowledge of what has been verified – typically with usability testing – to work for users, needs to be available. A Human Interface Guideline (HIG) is one way of thinking about it. However, there is rigidity and vastness to a typical HIG that we want to avoid: it is paramount that what is documented is both easily accessible and maintainable.&lt;br /&gt;
&lt;br /&gt;
It also has to be said that a HIG can never replace an actual usability practitioner. Using a HIG simply helps us take a good direction, a basis to build upon, so that usability practitioners can concentrate on the issues that really require them. Just like in the corporate world, functional testing is a separate profession because different people have skills to do programming than testing, designing interaction is a intricate profession of its own. For further discussion about this, refer to Cooper&#039;s excellent discussion about the intricacies of the software industry: [http://books.google.com/books?id=04cFCVXC_AUC&amp;amp;printsec=frontcover&amp;amp;dq=the+inmates+are+running The Inmates Are Running The Asylum] (limited edition on google books).&lt;br /&gt;
&lt;br /&gt;
=== Later: Documented user descriptions and scenarios ===&lt;br /&gt;
&lt;br /&gt;
The basic requirement of usability work is to &amp;quot;Know Your Users&amp;quot;.  However, at this point we do not deal with the actual profiles of users: the assumption in this project is that the community-based development style with a strong focus on feedback helps developers approximate user needs.&lt;br /&gt;
&lt;br /&gt;
This knowledge about users is often expressed in terms of Personas, scenarios and use cases. &lt;br /&gt;
* [[Quiz_UI_redesign_scenarios_-_Scenarios_index|Some work was done in the Quiz UI Redesign project]] but the format this was communicated in was not sufficiently easy to access. &lt;br /&gt;
* Also, Moodle has used [http://wiki.fluidproject.org/display/fluid/Moodle+UX+Walkthrough+Working+Group?showChildren=false fluid efforts], including their personas and scenarios&lt;br /&gt;
&lt;br /&gt;
In a separate effort, Moodle should take a more robust approach to base its design on really knowing that we know our users, instead of the gut feeling of developers (no matter how close they might feel to teachers, students, or other users).&lt;br /&gt;
&lt;br /&gt;
Also other aspects of HIGs, such as keeping vocabularies consistent and accessibility issues should be considered, but they are not the focus of this project.&lt;br /&gt;
&lt;br /&gt;
== My competences ==&lt;br /&gt;
&lt;br /&gt;
In Summer 2008 I redesigned and implemented [[Quiz_UI_redesign|the Quiz editing UI]]: did interviews for [[Quiz_UI_redesign_scenarios_-_Scenarios_index|scenarios]], usability testing testing and community discussions. The result of this work is now included in Moodle 2.0 HEAD. &lt;br /&gt;
&lt;br /&gt;
Before this, I worked in the University of Tampere on a Moodle integration project. I am also an Interactive Technology major in that university. I am currently writing my thesis about Usability processes in open source projects, with last summer&#039;s Quiz work as the principal case that is examined.&lt;br /&gt;
&lt;br /&gt;
* [http://tracker.moodle.org/secure/IssueNavigator.jspa?reset=true&amp;amp;assigneeSelect=specificuser&amp;amp;assignee=pilpi&amp;amp;resolution=1 List of my completed tracker issues]&lt;br /&gt;
* [http://www.linkedin.com/in/ollisavolainen LinkedIn]&lt;br /&gt;
* [https://www.ohloh.net/accounts/pilpi Ohloh]&lt;br /&gt;
&lt;br /&gt;
== Current state of research (in constant state of change)==&lt;br /&gt;
&lt;br /&gt;
===Advice to possibly include in the final documentation===&lt;br /&gt;
* do not relay UI design decisions to moodle admins (unless you really have different use cases where different UIs would be suitable for different sorts of users AND the UI can&#039;t take them into account &amp;quot;by UI design otherwise&amp;quot; (explain further). &lt;br /&gt;
** moving the burden of making design decisions from development to administration seems a quasi-solution to me - in some cases admins may be interested and know their users well. But I think most of the time relaying such responsibility just gives an impression of an unfinished product. Of course they can be given the power to customize, but I think we should not think about that while the design itself is unfinished.&lt;br /&gt;
** it needs to be carefully examined which configuration options are genuinely options that depend on different needs of different Moodle installations, and which are the effect of avoiding making strategic usability decisions that should be made during Moodle development&lt;br /&gt;
** [http://www.joelonsoftware.com/uibook/chapters/fog0000000059.html Joel on Software on Choices)&lt;br /&gt;
** [http://twitter.com/eGJD/statuses/1475501418 Martin Langhoff at #mmuk09: &amp;quot;Options are bad, it is what we put in place when we don&#039;t make a decision&amp;quot;]&lt;br /&gt;
* A hig includes an index of interaction styles that are part of standard Moodle: &amp;quot;if your proposition for a new UI contains new interactions, please link to it under the &#039;suggested interaction styles&#039; in the HIG, and it will be checked out and discussed.&amp;quot;&lt;br /&gt;
* [[Progressive Disclosure]]&lt;br /&gt;
* [[Tooltips]]&lt;br /&gt;
* About the nature of guidelines: [http://en.wikipedia.org/wiki/Wikipedia:What_%22Ignore_all_rules%22_means#What_.22Ignore_all_rules.22_does_not_mean]&lt;br /&gt;
&lt;br /&gt;
=== Issues, to be researched further ===&lt;br /&gt;
These are not tested and proven, but some things I have discovered while working on Moodle&lt;br /&gt;
* forums&lt;br /&gt;
** If users are not logged in, they sometimes get a login screen (forum) and sometimes just an error message (moodle.org blogs) when accessing content. &lt;br /&gt;
*** It is questionable whether content that is accessible via &amp;quot;login as guest&amp;quot; button by anyone should require passing through a login screen in the first place, since most web apps do not require such - it is a hassle to remember to mention &amp;quot;press the login as guest button to get to the actual target of this link I am posting&amp;quot;&lt;br /&gt;
**** there were references in the tracker to [http://tracker.moodle.org/browse/MDL-12705 &amp;quot;guest autologin&amp;quot;] feature but I don&#039;t know if this is it or what are the reasons for this being a setting &lt;br /&gt;
** MDL-1626 (addressed already so letting go) [following a single thread and not entire forum does not seem to be possible. in the solution gmail+google groups, gmail automatically groups messages with the same subject line and shows them as one message (&amp;quot;thread&amp;quot;) in gmail, too. The problem is still present also in google if one orders a digest mail: can&#039;t select which threads I&#039;m interested in and threads are not sorted. is there an underlying design decision to forcing to follow all forum or none of it?]&lt;br /&gt;
* if moodle.org wants to present usage of moodle, it should be consistent with moodle&#039;s ux itself. an example: where is the listing to all the forums from the breadcrumb?&lt;br /&gt;
** course front page: showing/hiding sections&lt;br /&gt;
* Feedback: sometimes Moodle gives non-localized, entirely technical and unhelpful feedback even to normal users.&lt;br /&gt;
** &amp;quot;Olli - Under &amp;quot;Some potential things that require change, to be researched further&amp;quot; you mention Feedback being too technical and unhelpful feedback to normal users - could you cite an example or two to show what you mean? Thanks - Anthony &amp;quot;&lt;br /&gt;
*** This needs to be researched further. For now, see my rant (written in gray) at http://moodle.org/mod/forum/discuss.php?d=117522#p524143 (sorry, haven&#039;t gotten around to doing a bug report about that yet).&lt;br /&gt;
* Quiz:&lt;br /&gt;
** new interaction styles introduced by usability work of summer 2008&lt;br /&gt;
*** icons in tabs: is this a problem to someone? preview icon should in my opinion be used in all preview tabs? the reasoning is to familiarize users to the meaning of the icon by associating it with the label&lt;br /&gt;
*** using overflow:none in listings where the content does not fit screen&lt;br /&gt;
*** question bank window: the concept of &amp;quot;toolbar window&amp;quot;, per-user open/close state persistence &lt;br /&gt;
** integration with question bank http://tracker.moodle.org/browse/MDL-18001 (is there something similar somewhere else in moodle?)&lt;br /&gt;
** dialog styles: ok button vs something named after the actual dialog action, cancel button, which first, apply button(?), dialog visual style&lt;br /&gt;
* New UI work recently done on gradebook&lt;br /&gt;
* Moodle messaging: &lt;br /&gt;
** Might be required: unobtrusive notifications for new private / forum messages, external notifications consistently regardless of whether user is logged in&lt;br /&gt;
** Block user: green icon? (Tim, Anthony)&lt;br /&gt;
* Facilities for consistent undoing across Moodle, see for example [[Talk:Projects_for_new_developers#XML_templates_for_admin_settings]]&lt;br /&gt;
* Moodle messaging: mail/whatever notifications should come regardless of being logged in (is this true in the new notification framework?), unobtrusive web notifications (moodle is the only thing to use unrequested popups; see facebook and basically any web app on the planet for less distractive interaction styles)&lt;br /&gt;
* new gradebook: visual report disabled states&lt;br /&gt;
* file selector visual hierarchy: icons/list selection is positioned in the dialog to communicate it is related to both the panes below it when it is related only to the right-side pane&lt;br /&gt;
* There is a convention to create feature description pages when new features and changes are planned (sumewhat such as the page you are reading). I am struck by how much cleaner such pages are for mozilla.org, for example. https://wiki.mozilla.org/Thunderbird:Folder_Pane&lt;br /&gt;
** are all these pages organized somewhere in the wiki centrally?&lt;br /&gt;
* The fact that the help system is made of popups is a problem; popups get lost under other windows, and less experienced users (the primary users of the help systems) get confused by them (surprisingly few novices master the task bar very well). Yahoo dialogs don&#039;t solve it since they are modal and don&#039;t enable the user to both use the system and refer to the help at the same time. Windows has contextual help popups that split the current window, showing the help beside the normal content of the window. Also,  there should be some kind of a standard for the help texts themselves; many of them explain things assuming that users know a bunch of other techie/moodle concepts.&lt;br /&gt;
** TODO: review other web apps, how is help done&lt;br /&gt;
** differentiate between tutorial content that explains things (non-modal popups are suitable), and with clarifications that answer to the question &amp;quot;what does this mean&amp;quot; for example with individual configuration options (inline help - always visible or not, different icon to activate than with popup help?; short text for which a popup would be too slow and cumbersome)&lt;br /&gt;
* Headings of sections: &#039;&#039;&#039;always&#039;&#039;&#039; right under the header, before any other content, stating type of activity (=module name, configuration, course categories) and possibly name of activity (a specific activity in the context of a course)&lt;br /&gt;
==== Other considerations ====&lt;br /&gt;
* Guiding teachers to [[Pedagogy#Progression|better gain from Moodle&#039;s wide array of pedagogical features]] has been discussed quite a bit recently. This may require novel interaction styles: guides/wizards/assisted functionality&lt;br /&gt;
* In Moodle Moot UK &#039;09 Martin Dougiamas mentioned setting up functional testing in the tracker. &lt;br /&gt;
** -&amp;gt; This is not very far from the goals of usability testing: &lt;br /&gt;
**** -&amp;gt; some of the base work is similar since to do functional testing the core functionality has to be defined and perhaps even prioritized. &lt;br /&gt;
** -&amp;gt; And usability testing core functionality is the basis of this project.&lt;br /&gt;
** TODO: Where is this discussed and documented? http://moodle.org/mod/forum/view.php?id=56 Not here?&lt;br /&gt;
* Configuration screens (Update [modulename]) / content editing screens (also sometimes in update [modulename]) / various buttons nearby the Update [modulename] button (glossary:Import entries / Export entries Printer-friendly version)&lt;br /&gt;
* module configuration: a big commitment required of users up-front, giving them a huge configuration screen before they can see anything at all about what the element itself is. (advanced uploading of files)&lt;br /&gt;
&lt;br /&gt;
== Further reading ==&lt;br /&gt;
** [http://www.joelonsoftware.com/articles/fog0000000033.html Joel on software: Painless functional specs] - a rather different way of writing to developers about software&lt;br /&gt;
* [http://www.disambiguity.com/drupal7ux-how-does-drupal-talk-on-brand-personality-and-tone-of-voice/ drupal: brand personality, drupal&#039;s voice] What is Moodle&#039;s voice like? How does it address, talk to users? The first thing that springs up to mind is that Moodle&#039;s error messages are certainly not very friendly-toned, but strictly technical - does that need to be the case?&lt;br /&gt;
* [http://www.useit.com/papers/standards.html Assessing the Usability of a User Interface Standard], By Henrik Thovtrup and Jakob Nielsen, 1991&lt;br /&gt;
* [http://www.useit.com/alertbox/tabs.html Tabs, Used Right] - Moodle uses &#039;&#039;&#039;a lot&#039;&#039;&#039; of tabs, and I suspect examining them will reveal something ugly.&lt;br /&gt;
* [http://www.useit.com/papers/webwriting/ Writing for the web], useful links found:&lt;br /&gt;
** http://www.useit.com/alertbox/content-strategy.html&lt;br /&gt;
** http://www.useit.com/papers/webwriting/rewriting.html&lt;br /&gt;
** http://www.e-gineer.com/v1/articles/web-writing-for-many-interest-levels.htm&lt;br /&gt;
** http://www.gooddocuments.com/homepage/homepage.htm&lt;br /&gt;
* I will probably need to dive pretty deep in [[Navigation_2.0]] ([http://moodle.org/mod/forum/discuss.php?d=116936#p519530 discussion linking consistency work with navigation])&lt;br /&gt;
** Navigation blocks in the sideblock of all modules.&lt;br /&gt;
* Forms usability is a related topic of its own. Progressive disclosure will give wins here if we do it right. Some kinds of guidelines could probably be found for this&lt;br /&gt;
** http://moodle.org/mod/forum/discuss.php?d=119227#p522673&lt;br /&gt;
* [http://tracker.moodle.org/browse/MDL-14639 Last summer&#039;s GSoc usability project]&lt;br /&gt;
** https://docs.moodle.org/en/Student_projects/Usability_issues/T1 &lt;br /&gt;
* To compare with current state of Moodle: [http://wiki.fluidproject.org/display/fluid/Moodle+UX+Walkthrough+Working+Group?showChildren=false fluid findings]&lt;br /&gt;
* [http://moodle.org/mod/forum/user.php?id=636237&amp;amp;course=5 Thomas Hanley&#039;s forum postings]&lt;br /&gt;
* Wikipedia guidelines: http://en.wikipedia.org/wiki/Category:Wikipedia_style_guidelines http://en.wikipedia.org/wiki/Category:Wikipedia_editing_guidelines&lt;br /&gt;
&lt;br /&gt;
=== HIGs ===&lt;br /&gt;
* [http://wiki.laptop.org/go/OLPC_Human_Interface_Guidelines OLPC HIG]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/ Gnome HIG] - a lot of what is here also applies to Moodle&lt;br /&gt;
* [http://developer.apple.com/iphone/library/documentation/UserExperience/Conceptual/MobileHIG/Introduction/Introduction.html iPhone HIG] - another example of comprehensive guidelines producing great interfaces&lt;br /&gt;
** [http://developer.apple.com/documentation/UserExperience/index.html Leopard Guides: User Experience]&lt;br /&gt;
* [http://msdn.microsoft.com/en-us/library/aa511258.aspx Windows HIG]&lt;br /&gt;
* [http://groups.drupal.org/node/14422 Drupal User Interface best practices] (http://groups.drupal.org/node/14786) - contains lots of links to different resources, HIG&#039;s and pattern libraries&lt;br /&gt;
* [[Interface_guidelines|Current Moodle Interface Guidelines]] - Old and never completed&lt;br /&gt;
==== About guideline/pattern/HIG writing ====&lt;br /&gt;
* Gerard Meszaros, Jim Doble: [http://www.hillside.net/patterns/writing/patternwritingpaper.htm A Pattern Language for Pattern Writing] (Thanks to Tim Hunt!)&lt;br /&gt;
** http://xunitpatterns.com/Introduction.html (again, thanks to Tim)&lt;br /&gt;
* [http://ieeexplore.ieee.org/Xplore/login.jsp?url=http%3A%2F%2Fieeexplore.ieee.org%2Fiel4%2F5915%2F15768%2F00732206.pdf%3Farnumber%3D732206&amp;amp;authDecision=-203 Principles for a usability-oriented pattern language Mahemoff, M.J.; Johnston, L.J.] ([http://mahemoff.com/paper/principles/ &amp;quot;HTMLized version&amp;quot;])&lt;br /&gt;
&lt;br /&gt;
==== Patterns ====&lt;br /&gt;
* http://ui-patterns.com/&lt;br /&gt;
* http://visiblearea.com/cgi-bin/twiki/view/Patterns/Patterns_repository&lt;br /&gt;
* [http://wiki.fluidproject.org/display/fluid/User+Manual+Table+of+Contents Fluid components], [http://wiki.fluidproject.org/display/fluid/Design+Patterns Fluid patterns]&lt;br /&gt;
* collections of patterns: [http://konigi.com/interface/latest konigi], [http://www.flickr.com/groups/designpatterns/ flickr]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Forum discussions ===&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=119502 Introducing the project] (copy: http://moodle.org/mod/forum/discuss.php?d=119507#p523934)&lt;/div&gt;</summary>
		<author><name>Pilpi</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Quiz_UI_redesign&amp;diff=9290</id>
		<title>Quiz UI redesign</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Quiz_UI_redesign&amp;diff=9290"/>
		<updated>2010-09-30T17:36:37Z</updated>

		<summary type="html">&lt;p&gt;Pilpi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Status: project finished and code incorporated into Moodle 2.0 in Autumn 2008.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Chapter 3 of Olli&#039;s master&#039;s thesis about [http://tutkielmat.uta.fi/tutkielma_en.php?id=20867 Moodle and open source usability work] documents the core ideas of the Quiz UI Redesign work most clearly. Chapters 4 to 6 of the work document the different phases of the project.&lt;br /&gt;
* MDL-17284 Final tracker item&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=103869 Final forum discussion]&lt;br /&gt;
* For permanent documentation, &#039;&#039;&#039;See also: [[Quiz Usability portal]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
This is the Docs page for the Quiz UI redesign project 2008 &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The project blog&#039;&#039;&#039;:  http://www.pilpi.net/software/moodle_quiz_ui/ .&lt;br /&gt;
&lt;br /&gt;
* [[Quiz UI redesign prototype presumptions | Quiz UI redesign prototype presumptions]]&lt;br /&gt;
* &#039;&#039;&#039;[[Quiz UI redesign - Design specification | Design specification]]&#039;&#039;&#039;&lt;br /&gt;
* Project tracker: http://tracker.moodle.org/browse/CONTRIB-528&lt;br /&gt;
&lt;br /&gt;
== Related forum discussions ==&lt;br /&gt;
Some are still missing here. The last one is the newest, and the location of current discussion. &lt;br /&gt;
* Inquiry about the status of the UI: [http://moodle.org/mod/forum/discuss.php?d=63612 Quiz UI development]&lt;br /&gt;
* Suggesting concrete new UI: [http://moodle.org/mod/forum/discuss.php?d=72828 New Quiz UI prototype published] &lt;br /&gt;
** Related: [http://moodle.org/mod/forum/discuss.php?d=92870 Re: Concern of Moodle Usability - Quiz module]&lt;br /&gt;
* Applied for funding, Tim Hunt accepted as mentor: [http://moodle.org/mod/forum/discuss.php?d=92797 Simple Quiz building user interface]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=99351#p439124 Community effort to learn about teacher quiz/exam usage habits]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=100367 Call for comments: Quiz UI redesign prototype (new iteration now usability tested)]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=102062 Call for comments: Quiz UI redesign demo published]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=103869 Should Olli&#039;s new quiz editing interface be included in Moodle 2.0?]&lt;br /&gt;
** [http://moodle.org/mod/forum/discuss.php?d=103870 cross-post]&lt;br /&gt;
&lt;br /&gt;
== Scenarios ==&lt;br /&gt;
&lt;br /&gt;
===Scenarios work===&lt;br /&gt;
* &#039;&#039;&#039;[[Quiz_UI_redesign scenarios - conclusions| Scenarios work conclusions (executive summary) ]]&#039;&#039;&#039;&lt;br /&gt;
* [[Quiz_UI_redesign_-_what_makes_a_scenarios_interview%3F|The idea and the content of the scenarios interviews I did]]&lt;br /&gt;
&lt;br /&gt;
===The Scenarios===&lt;br /&gt;
* [[Quiz UI redesign scenarios - Scenarios index]]&lt;br /&gt;
&lt;br /&gt;
== Prototype testing ==&lt;br /&gt;
=== June 2008 ===&lt;br /&gt;
Published June 27th, 2008.&lt;br /&gt;
 &lt;br /&gt;
[http://www.pilpi.net/software/moodle_quiz_ui/files/quiz_ui_redesign_prototype_2008.odp The prototype used in testing, the last iteration] (ODP 230 KB; &#039;&#039;&#039;in Finnish. See the &#039;&#039;&#039;[[Quiz UI redesign - Design specification | Design specification]]&#039;&#039;&#039; for a more final, translated view of the UI&#039;&#039;&#039; )&lt;br /&gt;
* [[Quiz UI redesign - prototype testing background|Background]]&lt;br /&gt;
* [[Quiz_UI_redesign_prototype_questions#Testing_questions_used_in_spring.2Fsummer_2008|Tasks]]&lt;br /&gt;
* [[Quiz UI redesign - prototype testing report|Prototype testing report]]&lt;br /&gt;
&lt;br /&gt;
===Testing with the actual implementation: August 2008===&lt;br /&gt;
See also: [[Quiz_Usability_portal#Future_development]]&lt;br /&gt;
* [[Quiz_UI_redesign/usability testing of August 2008/Executive summary|Quiz UI redesign /  usability testing of August 2008 / Executive summary]]&lt;br /&gt;
* [[Quiz_UI_redesign/usability testing of August 2008/Issues|Quiz UI redesign / related issues in usability testing of August 2008]]&lt;br /&gt;
* Quiz UI redesign / [[Quiz_UI_redesign/usability testing of August 2008/Summary of solutions|Direct reactions to usability testing: List of solutions]]&lt;br /&gt;
* [[ Usability testing in August 2008/Test setting and tasks / background|Test setting and tasks / background]]&lt;br /&gt;
&lt;br /&gt;
== Development ==&lt;br /&gt;
Moved to [[Quiz UI redesign - development]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Usability]]&lt;br /&gt;
&lt;br /&gt;
== Obsolete == &lt;br /&gt;
* Obsolete: [[Quiz UI redesign prototype | Quiz UI redesign prototype]] &lt;br /&gt;
* Pretty obsolete: [[Quiz UI redesign - related use cases|Use cases]]&lt;/div&gt;</summary>
		<author><name>Pilpi</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Quiz_UI_redesign&amp;diff=9289</id>
		<title>Quiz UI redesign</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Quiz_UI_redesign&amp;diff=9289"/>
		<updated>2010-09-30T17:36:11Z</updated>

		<summary type="html">&lt;p&gt;Pilpi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Status: project finished and code incorporated into Moodle 2.0 in Autumn 2008.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Chapter 3 of [http://tutkielmat.uta.fi/tutkielma_en.php?id=20867 Olli&#039;s master&#039;s thesis about Moodle and open source usability work] documents the core ideas of the Quiz UI Redesign work most clearly. Chapters 4 to 6 of the work document the different phases of the project.&lt;br /&gt;
* MDL-17284 Final tracker item&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=103869 Final forum discussion]&lt;br /&gt;
* For permanent documentation, &#039;&#039;&#039;See also: [[Quiz Usability portal]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
This is the Docs page for the Quiz UI redesign project 2008 &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The project blog&#039;&#039;&#039;:  http://www.pilpi.net/software/moodle_quiz_ui/ .&lt;br /&gt;
&lt;br /&gt;
* [[Quiz UI redesign prototype presumptions | Quiz UI redesign prototype presumptions]]&lt;br /&gt;
* &#039;&#039;&#039;[[Quiz UI redesign - Design specification | Design specification]]&#039;&#039;&#039;&lt;br /&gt;
* Project tracker: http://tracker.moodle.org/browse/CONTRIB-528&lt;br /&gt;
&lt;br /&gt;
== Related forum discussions ==&lt;br /&gt;
Some are still missing here. The last one is the newest, and the location of current discussion. &lt;br /&gt;
* Inquiry about the status of the UI: [http://moodle.org/mod/forum/discuss.php?d=63612 Quiz UI development]&lt;br /&gt;
* Suggesting concrete new UI: [http://moodle.org/mod/forum/discuss.php?d=72828 New Quiz UI prototype published] &lt;br /&gt;
** Related: [http://moodle.org/mod/forum/discuss.php?d=92870 Re: Concern of Moodle Usability - Quiz module]&lt;br /&gt;
* Applied for funding, Tim Hunt accepted as mentor: [http://moodle.org/mod/forum/discuss.php?d=92797 Simple Quiz building user interface]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=99351#p439124 Community effort to learn about teacher quiz/exam usage habits]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=100367 Call for comments: Quiz UI redesign prototype (new iteration now usability tested)]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=102062 Call for comments: Quiz UI redesign demo published]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=103869 Should Olli&#039;s new quiz editing interface be included in Moodle 2.0?]&lt;br /&gt;
** [http://moodle.org/mod/forum/discuss.php?d=103870 cross-post]&lt;br /&gt;
&lt;br /&gt;
== Scenarios ==&lt;br /&gt;
&lt;br /&gt;
===Scenarios work===&lt;br /&gt;
* &#039;&#039;&#039;[[Quiz_UI_redesign scenarios - conclusions| Scenarios work conclusions (executive summary) ]]&#039;&#039;&#039;&lt;br /&gt;
* [[Quiz_UI_redesign_-_what_makes_a_scenarios_interview%3F|The idea and the content of the scenarios interviews I did]]&lt;br /&gt;
&lt;br /&gt;
===The Scenarios===&lt;br /&gt;
* [[Quiz UI redesign scenarios - Scenarios index]]&lt;br /&gt;
&lt;br /&gt;
== Prototype testing ==&lt;br /&gt;
=== June 2008 ===&lt;br /&gt;
Published June 27th, 2008.&lt;br /&gt;
 &lt;br /&gt;
[http://www.pilpi.net/software/moodle_quiz_ui/files/quiz_ui_redesign_prototype_2008.odp The prototype used in testing, the last iteration] (ODP 230 KB; &#039;&#039;&#039;in Finnish. See the &#039;&#039;&#039;[[Quiz UI redesign - Design specification | Design specification]]&#039;&#039;&#039; for a more final, translated view of the UI&#039;&#039;&#039; )&lt;br /&gt;
* [[Quiz UI redesign - prototype testing background|Background]]&lt;br /&gt;
* [[Quiz_UI_redesign_prototype_questions#Testing_questions_used_in_spring.2Fsummer_2008|Tasks]]&lt;br /&gt;
* [[Quiz UI redesign - prototype testing report|Prototype testing report]]&lt;br /&gt;
&lt;br /&gt;
===Testing with the actual implementation: August 2008===&lt;br /&gt;
See also: [[Quiz_Usability_portal#Future_development]]&lt;br /&gt;
* [[Quiz_UI_redesign/usability testing of August 2008/Executive summary|Quiz UI redesign /  usability testing of August 2008 / Executive summary]]&lt;br /&gt;
* [[Quiz_UI_redesign/usability testing of August 2008/Issues|Quiz UI redesign / related issues in usability testing of August 2008]]&lt;br /&gt;
* Quiz UI redesign / [[Quiz_UI_redesign/usability testing of August 2008/Summary of solutions|Direct reactions to usability testing: List of solutions]]&lt;br /&gt;
* [[ Usability testing in August 2008/Test setting and tasks / background|Test setting and tasks / background]]&lt;br /&gt;
&lt;br /&gt;
== Development ==&lt;br /&gt;
Moved to [[Quiz UI redesign - development]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Usability]]&lt;br /&gt;
&lt;br /&gt;
== Obsolete == &lt;br /&gt;
* Obsolete: [[Quiz UI redesign prototype | Quiz UI redesign prototype]] &lt;br /&gt;
* Pretty obsolete: [[Quiz UI redesign - related use cases|Use cases]]&lt;/div&gt;</summary>
		<author><name>Pilpi</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Quiz_UI_redesign_%C2%AD_what_makes_a_scenarios_interview%3F&amp;diff=17869</id>
		<title>Quiz UI redesign ­ what makes a scenarios interview?</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Quiz_UI_redesign_%C2%AD_what_makes_a_scenarios_interview%3F&amp;diff=17869"/>
		<updated>2010-06-19T17:51:07Z</updated>

		<summary type="html">&lt;p&gt;Pilpi: Redirecting to Quiz UI redesign - what makes a scenarios interview?&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Quiz_UI_redesign_-_what_makes_a_scenarios_interview%3F]]&lt;/div&gt;</summary>
		<author><name>Pilpi</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Quiz_UI_redesign_%C2%AD_what_makes_a_scenarios_interview%3F&amp;diff=17868</id>
		<title>Quiz UI redesign ­ what makes a scenarios interview?</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Quiz_UI_redesign_%C2%AD_what_makes_a_scenarios_interview%3F&amp;diff=17868"/>
		<updated>2010-06-19T17:50:21Z</updated>

		<summary type="html">&lt;p&gt;Pilpi: New page: #REDIRECT https://docs.moodle.org/en/Development:Quiz_UI_redesign__ what_makes_a_scenarios_interview%3F&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT https://docs.moodle.org/en/Development:Quiz_UI_redesign__&lt;br /&gt;
what_makes_a_scenarios_interview%3F&lt;/div&gt;</summary>
		<author><name>Pilpi</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Moodle_User_Interface_Guidelines&amp;diff=15068</id>
		<title>Moodle User Interface Guidelines</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Moodle_User_Interface_Guidelines&amp;diff=15068"/>
		<updated>2010-05-22T11:46:32Z</updated>

		<summary type="html">&lt;p&gt;Pilpi: /* Relevant guidelines from other sites */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DRAFT DOCUMENT&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Many of the pages below are incomplete or obsolete.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These guidelines were produced as part of a student project in 2009, and are not yet official Moodle guidelines.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
These guidelines are to be used as a &#039;&#039;&#039;UI reference library&#039;&#039;&#039; by Moodle developers when creating user interfaces. &lt;br /&gt;
&lt;br /&gt;
It does not catalogue all the elements in use in Moodle, but is intended a reference of reusable elements sharing that common Moodle style. We aim to update this reference as new common practices appear. [[Moodle User Interface Guidelines:Introduction|More...]]&lt;br /&gt;
* [[Moodle User Interface Guidelines:Help requested|Help requested: comment on these guidelines]]&lt;br /&gt;
&lt;br /&gt;
==Moodle basics==&lt;br /&gt;
* [[Page structure and types|Page structure and different page types]]&lt;br /&gt;
* [[Roles and capabilities]]&lt;br /&gt;
* [[Groups]]&lt;br /&gt;
&lt;br /&gt;
==Moodle UI library==&lt;br /&gt;
UIs are built of Elements and Interaction Styles (bigger wholes, which are built of Elements).&lt;br /&gt;
=== Elements ===&lt;br /&gt;
* [[Big Select List|Big Select List]]&lt;br /&gt;
&lt;br /&gt;
* [[Tooltip|Tooltip]]&lt;br /&gt;
* [[Link|Link]]&lt;br /&gt;
* [[Button|Button]]&lt;br /&gt;
* [[Address Bar|Address Bar]] (URLs)&lt;br /&gt;
&lt;br /&gt;
=== Interaction Styles ===&lt;br /&gt;
* [[Wizard|Wizard]]&lt;br /&gt;
* [[Help Popups|Help Popups]] (See [[Interface_guidelines#Linking_to_help|Linking to help]] for now)&lt;br /&gt;
* [[Feedback page|Feedback page]]&lt;br /&gt;
* [[Form|Form]] (incomplete)&lt;br /&gt;
** [[Radio button|Radio button]]&lt;br /&gt;
** [[Checkbox|Checkbox]]&lt;br /&gt;
** [[Dropdown Lists|Dropdown lists]] (incomplete)&lt;br /&gt;
&lt;br /&gt;
== General design guidelines ==&lt;br /&gt;
* [[Progressive Disclosure|Progressive Disclosure]]&lt;br /&gt;
* [[User Data Always Safe|User Data Always (Always) Safe]] &lt;br /&gt;
* [[Feedback (User Interface Guideline)|Feedback]] (Incomplete)&lt;br /&gt;
=== Relevant guidelines from other sites ===&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-people.html.en Design for People]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-broad-userbase.html.en Don&#039;t Limit Your User Base]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-match.html.en Create a Match Between Your Application and the Real World]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-consistency.html.en Make Your Application Consistent]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-feedback.html.en Keep the User Informed]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-simplicity.html.en Keep It Simple and Pretty]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-user-control.html.en Put the User in Control]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-forgiveness.html.en Forgive the User]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-direct-manipulation.html.en Provide Direct Manipulation]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [http://developer.fellowshipone.com/patterns/ Design Patterns Library &amp;amp; Code Standards] by Fellowship technologies&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* Further development on Talk page: [[Development_talk:Moodle_User_Interface_Guidelines]]&lt;br /&gt;
* &#039;&#039;&#039;[[Using Moodle book]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Usability in Moodle ===&lt;br /&gt;
* [[Usability|Usability]]&lt;br /&gt;
* [[Usability_FAQ|Usability FAQ]]&lt;br /&gt;
&lt;br /&gt;
=== Implementation advice ===&lt;br /&gt;
* [[Developer_documentation|Developer documentation]]&lt;br /&gt;
* UI coding: [[Interface_guidelines]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:User Interface Guidelines]]&lt;br /&gt;
[[Category:Developer tools|User Interface Guidelines]]&lt;br /&gt;
[[Category:Usability|User Interface Guidelines]]&lt;br /&gt;
[[Category:Moodle User Interface Guidelines]]&lt;/div&gt;</summary>
		<author><name>Pilpi</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Moodle_User_Interface_Guidelines&amp;diff=15067</id>
		<title>Moodle User Interface Guidelines</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Moodle_User_Interface_Guidelines&amp;diff=15067"/>
		<updated>2010-05-22T11:46:17Z</updated>

		<summary type="html">&lt;p&gt;Pilpi: /* Relevant guidelines from other sites */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DRAFT DOCUMENT&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Many of the pages below are incomplete or obsolete.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These guidelines were produced as part of a student project in 2009, and are not yet official Moodle guidelines.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
These guidelines are to be used as a &#039;&#039;&#039;UI reference library&#039;&#039;&#039; by Moodle developers when creating user interfaces. &lt;br /&gt;
&lt;br /&gt;
It does not catalogue all the elements in use in Moodle, but is intended a reference of reusable elements sharing that common Moodle style. We aim to update this reference as new common practices appear. [[Moodle User Interface Guidelines:Introduction|More...]]&lt;br /&gt;
* [[Moodle User Interface Guidelines:Help requested|Help requested: comment on these guidelines]]&lt;br /&gt;
&lt;br /&gt;
==Moodle basics==&lt;br /&gt;
* [[Page structure and types|Page structure and different page types]]&lt;br /&gt;
* [[Roles and capabilities]]&lt;br /&gt;
* [[Groups]]&lt;br /&gt;
&lt;br /&gt;
==Moodle UI library==&lt;br /&gt;
UIs are built of Elements and Interaction Styles (bigger wholes, which are built of Elements).&lt;br /&gt;
=== Elements ===&lt;br /&gt;
* [[Big Select List|Big Select List]]&lt;br /&gt;
&lt;br /&gt;
* [[Tooltip|Tooltip]]&lt;br /&gt;
* [[Link|Link]]&lt;br /&gt;
* [[Button|Button]]&lt;br /&gt;
* [[Address Bar|Address Bar]] (URLs)&lt;br /&gt;
&lt;br /&gt;
=== Interaction Styles ===&lt;br /&gt;
* [[Wizard|Wizard]]&lt;br /&gt;
* [[Help Popups|Help Popups]] (See [[Interface_guidelines#Linking_to_help|Linking to help]] for now)&lt;br /&gt;
* [[Feedback page|Feedback page]]&lt;br /&gt;
* [[Form|Form]] (incomplete)&lt;br /&gt;
** [[Radio button|Radio button]]&lt;br /&gt;
** [[Checkbox|Checkbox]]&lt;br /&gt;
** [[Dropdown Lists|Dropdown lists]] (incomplete)&lt;br /&gt;
&lt;br /&gt;
== General design guidelines ==&lt;br /&gt;
* [[Progressive Disclosure|Progressive Disclosure]]&lt;br /&gt;
* [[User Data Always Safe|User Data Always (Always) Safe]] &lt;br /&gt;
* [[Feedback (User Interface Guideline)|Feedback]] (Incomplete)&lt;br /&gt;
=== Relevant guidelines from other sites ===&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-people.html.en Design for People]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-broad-userbase.html.en Don&#039;t Limit Your User Base]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-match.html.en Create a Match Between Your Application and the Real World]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-consistency.html.en Make Your Application Consistent]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-feedback.html.en Keep the User Informed]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-simplicity.html.en Keep It Simple and Pretty]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-user-control.html.en Put the User in Control]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-forgiveness.html.en Forgive the User]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-direct-manipulation.html.en Provide Direct Manipulation]&lt;br /&gt;
&lt;br /&gt;
* [http://developer.fellowshipone.com/patterns/ Design Patterns Library &amp;amp; Code Standards] by Fellowship technologies&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* Further development on Talk page: [[Development_talk:Moodle_User_Interface_Guidelines]]&lt;br /&gt;
* &#039;&#039;&#039;[[Using Moodle book]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Usability in Moodle ===&lt;br /&gt;
* [[Usability|Usability]]&lt;br /&gt;
* [[Usability_FAQ|Usability FAQ]]&lt;br /&gt;
&lt;br /&gt;
=== Implementation advice ===&lt;br /&gt;
* [[Developer_documentation|Developer documentation]]&lt;br /&gt;
* UI coding: [[Interface_guidelines]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:User Interface Guidelines]]&lt;br /&gt;
[[Category:Developer tools|User Interface Guidelines]]&lt;br /&gt;
[[Category:Usability|User Interface Guidelines]]&lt;br /&gt;
[[Category:Moodle User Interface Guidelines]]&lt;/div&gt;</summary>
		<author><name>Pilpi</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Address_Bar&amp;diff=15694</id>
		<title>Address Bar</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Address_Bar&amp;diff=15694"/>
		<updated>2010-05-18T20:30:57Z</updated>

		<summary type="html">&lt;p&gt;Pilpi: what a horrible sentence it was I found - fixed&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[ Moodle User Interface Guidelines|Moodle User Interface Guidelines]] &amp;gt; &#039;&#039;&#039;Address Bar&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
On the web, URLs (web addresses, &#039;&#039;Uniform Resource Locator&#039;&#039;) are a part of the user interface and some users routinely use the address bar to navigate sites (for example, for getting higher in the hierarchy if they don&#039;t find an easier way in the site navigation).&lt;br /&gt;
&lt;br /&gt;
In Moodle, The form of URLs is determined by a motivation to make work easy for developers, which is important in an open source community. Usually it is enough to just look at the URL to know which PHP file to edit. &lt;br /&gt;
&lt;br /&gt;
As a consequence, the site hierarchy is not reflected in the URL - the end user is not considered the primary user of URLs, unlike usually recommended. &lt;br /&gt;
&lt;br /&gt;
Examples&lt;br /&gt;
* Course front pages are at moodlesite/course/view.php?id=2&lt;br /&gt;
* Regardless of the course an activity module instance, such as a forum belongs to, it&#039;s URL is moodlesite/mod/forum/view.php?id=13&lt;br /&gt;
&lt;br /&gt;
== Guidelines ==&lt;br /&gt;
# URLs should be as short as possible.&lt;br /&gt;
# No underscores in parameter names or files names&lt;br /&gt;
# Never use two words when one would do.&lt;br /&gt;
&lt;br /&gt;
===Activity modules===&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;index.php&#039;&#039; - lists all instances for that module in a course&lt;br /&gt;
*&#039;&#039;view.php&#039;&#039; - displays a particular instance&lt;br /&gt;
*&#039;&#039;config.html&#039;&#039; - configure an instance of the module&lt;br /&gt;
&lt;br /&gt;
===Blocks===&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;config.html&#039;&#039; - configure an instance of the block&lt;br /&gt;
&lt;br /&gt;
[[Category:Moodle User Interface Guidelines]]&lt;/div&gt;</summary>
		<author><name>Pilpi</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=User_Data_Always_Safe&amp;diff=15635</id>
		<title>User Data Always Safe</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=User_Data_Always_Safe&amp;diff=15635"/>
		<updated>2010-05-17T12:49:52Z</updated>

		<summary type="html">&lt;p&gt;Pilpi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[ Moodle User Interface Guidelines|Moodle User Interface Guidelines]] &amp;gt; &#039;&#039;&#039;User Data Always (Always) Safe&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 In all cases, the user&#039;s work is sacrosanct. Nothing your &lt;br /&gt;
 application does should lose or destroy user&#039;s work without &lt;br /&gt;
 explicit user action. - GNOME HIG: [http://library.gnome.org/devel/hig-book/stable/principles-forgiveness.html.en Forgive the User]&lt;br /&gt;
&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=130005 Please comment in the related discussion forum] &amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Every part in Moodle should commit to keeping the data user has entered, safe. &lt;br /&gt;
&lt;br /&gt;
Not being capable of trusting an application affects the user experience fatally. If the browser seems likely to destroy everything given to it, eventually it makes users paranoid and writing their work in a word processor and only copying the final work into the browser. &lt;br /&gt;
&lt;br /&gt;
This issue requires further user research to find the exact issues involved, but there are also some generally well known mechanisms to employ.&lt;br /&gt;
&lt;br /&gt;
As Moodle is a web application, keeping user data safe is not trivial.&lt;br /&gt;
&lt;br /&gt;
==Challenges==&lt;br /&gt;
* Users may leave forms without submitting them&lt;br /&gt;
** Learning from some desktop applications (GNOME settings dialogs), users may assume their settings get automatically saved when they just enter them.&lt;br /&gt;
** Accidentally hitting the back button&lt;br /&gt;
** Clicking on a link on the form itself, assuming it is safe&lt;br /&gt;
** Pushing a button on their keyboard resulting in accidental usage of the back/next buttons&lt;br /&gt;
* Users may fill out forms &amp;quot;inappropriately&amp;quot;&lt;br /&gt;
** Missing data &lt;br /&gt;
** Session may have expired&lt;br /&gt;
*** When user gets logged out for whatever reason: the session ID changes when they log in again so even if they manage to login (in a different window)  while keeping the form data, submitting the form again fails and the user loses all submitted data. At a minimum, Moodle should give the user their data back so they do not lose it. &lt;br /&gt;
** User may have logged out accidentally (browser crash; browser restores the browser session but not the Moodle session)&lt;br /&gt;
** User may no longer be capable of completing the action due to loss of permissions or other reasons&lt;br /&gt;
*** A forum post they are were replying to was deleted&lt;br /&gt;
*** The time to edit a post has passed while the user was editing the post&lt;br /&gt;
* Users may submit data when the server has gone down or network connection lost&lt;br /&gt;
&lt;br /&gt;
==Solutions==&lt;br /&gt;
&lt;br /&gt;
=== Preserve submitted data or giving it back to the user to keep, until it can be saved ===&lt;br /&gt;
Taking care of the user&#039;s data actively when designing an application is really the only thing that can really keep users safe. Know your users and their context, and find out what they might want to do in an error situation.&lt;br /&gt;
&lt;br /&gt;
If a user has posted something, but it cannot be saved, never ever just throw the data away (like for example, Forum currently does).&lt;br /&gt;
Design your application to request the user what should be done. This requires understanding the situations users may end up in. Examples:&lt;br /&gt;
* If the user&#039;s session has gotten closed (the user is no longer logged in), request the user to log in again, and tell them about the situation: &amp;quot;&#039;&#039;&#039;What you tried to send is safe, but not yet saved.&#039;&#039;&#039; The [insert descriptive label for data here] you posted could not be saved, since you are not logged in. Please log in to have Moodle try again to save it for you.&amp;quot;&lt;br /&gt;
==== Giving the user their data back, for copying to the clipboard ====&lt;br /&gt;
Issue: In case the user has gotten logged out, it may be a security risk to give the data out. In other error situations, this is a recommended strategy. &lt;br /&gt;
&lt;br /&gt;
In some browsers it is possible to have a javascripted button that copies the contents of a text field onto the clipboard. This can be used to decrease the user&#039;s effort. Not all users are fluent with the clipboard.&lt;br /&gt;
&lt;br /&gt;
* If a forum posting can not be saved due to, for example, editing time having ended, offer the user alternative options that make sense. &amp;quot;30 minutes have passed, so you can no longer edit your forum post. Shown below is what you posted, so you can copy it to your clipboard and from there somewhere safe.&amp;quot;&lt;br /&gt;
* If a forum reply  can not be saved due to the parent item having been deleted, offer users the option to copy their item to the clipboard. In addition, the UI can offer users an option to add their reply to another post in the same thread.&lt;br /&gt;
&lt;br /&gt;
=== Undo ===&lt;br /&gt;
Often, confirmation dialogs (such as preventing accidental leaving of an unsaved form with a javascript dialog) are frustrating to users. In some situations it may be smart to allow the user to perform a potentially destructive action but then give them a chance to undo it, like gmail does.&lt;br /&gt;
[[Image:gmail-undo-example.png|left|frame]]&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Autosave ===&lt;br /&gt;
Related forum threads:&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=74710 AJAX-like Autosave for quiz]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=107073 Autosave for Forum Compose?]&lt;br /&gt;
In situations where preserving the user&#039;s data is critical independent of server or client machine crashes, autosaving the data at a regular interval may be used. &lt;br /&gt;
* Autosaving can either mean saving form data continuously, not saving the old version, or keeping a version history. Adding version history functionality requires careful context-sensitive UI design. (Wordpress uses autosaving extensively and may be referred to if this strategy is selected)&lt;br /&gt;
** Autosaving can be implemented using AJAX or by just submitting the form in question in the background using javascript.&lt;br /&gt;
* The strain on the server produced by autosave can be reduced by only sending new changes to the server, instead of always sending the contents of the form to the server at a specific interval &lt;br /&gt;
* When technologies such as Google Gears or the HTML5 equivalent are in use, autosaving can also be done on the local machine, without straining the server.&lt;br /&gt;
** This is also probably the only possible strategy when the server has gone down or when the network connection has been lost&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Save as draft&amp;quot; button ===&lt;br /&gt;
Sometimes it may be appropriate to let users save their work, before it is finished, without yet publishing it.&lt;br /&gt;
&lt;br /&gt;
=== Javascript confirmation upon leaving &amp;quot;dirty&amp;quot; form ===&lt;br /&gt;
If the user is about to leave page with a form without submitting it, issue a javascript confirmation dialog confirming if they want to do this.&lt;br /&gt;
=== TinyMCE ===&lt;br /&gt;
The new rich text editor in Moodle 2.0, [[TinyMCE]] apparently does not lose text written in it if you accidentally go back (or forward) in your browser history and then return to the page you were writing on. It is apparently possible though some work to get TinyMCE work in earlier versions of Moodle.&lt;br /&gt;
&lt;br /&gt;
=== Browser-based solutions ===&lt;br /&gt;
Unrelated to Moodle development, browsers may one day integrate functionality currently provided as an [http://lifehacker.com/5097334/lazarus-form-recovery-saves-web-page-form-data extension to at least Firefox] ([https://addons.mozilla.org/en-US/firefox/addon/6984 alternate link]), always storing form data for later recovery. This may raise privacy issues though. &lt;br /&gt;
&lt;br /&gt;
Also developer tools such as Firebug HTTP traffic listening or the Firefox Tamper Data extension can be used in recovering lost data: Initiate traffic listening, repost the data, read in the tool what data was posted and copy it to the clipboard.&lt;br /&gt;
&lt;br /&gt;
Users should not have resort to paranoia of writing first in notepad and then copying it to the browser, or using somethin such as these tools.&lt;br /&gt;
&lt;br /&gt;
It seems the GNOME usability focused browser Epiphany gives confirmations upon leaving &amp;quot;dirty&amp;quot; forms (if trying to close window/tab) even if it is not programmed in (needs to be confirmed).&lt;br /&gt;
&lt;br /&gt;
== More information ==&lt;br /&gt;
* Discussion: [http://moodle.org/mod/forum/discuss.php?d=130005 Critical: Keeping user data safe]&lt;br /&gt;
** Linked threads: [http://moodle.org/mod/forum/discuss.php?d=130010] [http://moodle.org/mod/forum/discuss.php?d=130007]&lt;br /&gt;
* Directory of [[Major_usability_issues_in_Moodle|Major usability issues in Moodle]]&lt;br /&gt;
* A solution applicable in some scenarios: MDL-18014 Tracker item for autosave (thanks Mauno Korpelainen)&lt;br /&gt;
* [http://code.google.com/p/tinyautosave/ TinyMCE autosave plugin]  (thanks Mauno Korpelainen)&lt;br /&gt;
&lt;br /&gt;
[[Category:Moodle User Interface Guidelines]]&lt;/div&gt;</summary>
		<author><name>Pilpi</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Wizard&amp;diff=15563</id>
		<title>Wizard</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Wizard&amp;diff=15563"/>
		<updated>2010-05-15T16:03:03Z</updated>

		<summary type="html">&lt;p&gt;Pilpi: /* Backup */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[ Moodle User Interface Guidelines|Moodle User Interface Guidelines]] &amp;gt; &#039;&#039;&#039;Wizard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Problem ==&lt;br /&gt;
* Users need to perform a complex task, which which they are not familiar or lack needed domain knowledge &lt;br /&gt;
* The task users need to perform naturally divides into subtasks, and the nature or number of subtasks depends on what is selected in some other (preceding) tasks&lt;br /&gt;
&lt;br /&gt;
== Context ==&lt;br /&gt;
You are designing an UI for users who are not experts at a given task that involves entering a lot of information or making intricate selections that depend on each other. &lt;br /&gt;
== Forces: factors that affect selection ==&lt;br /&gt;
* Unexperienced users may get frustrated&lt;br /&gt;
** if too many choices, dependent on each other, are presented to them at once&lt;br /&gt;
** if they do not have all the background information related to a task &lt;br /&gt;
* Experienced users easily get frustrated&lt;br /&gt;
** if a task they know is split into too many phases &lt;br /&gt;
** if the order they enter data into the application is controlled&lt;br /&gt;
* Any user can be frustrated by lack of control in the process, i.e. not knowing the number of steps left or not being capable of controlling the process (returning back in the process to an earlier screen in case of a misunderstanding or mistake, for example)&lt;br /&gt;
&lt;br /&gt;
== Solution ==&lt;br /&gt;
&lt;br /&gt;
A Wizard, sometimes called an Assistant, is an interface that guides users through a predefined sequence of steps. &lt;br /&gt;
&lt;br /&gt;
=== Elements of a wizard ===&lt;br /&gt;
&lt;br /&gt;
==== Status display ====&lt;br /&gt;
Displays the steps required to complete the wizard, and indicates the step the user is in currently, giving important feedback to the user resulting from their actions, making the application seem responsive.&lt;br /&gt;
&lt;br /&gt;
==== Navigation buttons ====&lt;br /&gt;
* &#039;&#039;&#039;Previous&#039;&#039;&#039;: Whereever it is possible to allow the user to change the selections they have already made, a button labeled &#039;Previous&#039; should be provided. &lt;br /&gt;
** Obviously, the first page of the wizard does not include a previous button, nor do pages which are a result of actions that can not be undone. &lt;br /&gt;
** Unlike one might assume, the Previous button acts as a submit button for the current page, just like the Next button. If the user has made changes on the current page when they decide to return to a previous step, those changes are saved.&lt;br /&gt;
**Provide a Previous button whenever possible to maximize user control. &lt;br /&gt;
* &#039;&#039;&#039;Next&#039;&#039;&#039;: Used for moving to the next step&lt;br /&gt;
** When the next step is to actually start an operation (usually the last step of the wizard), the button is in the same position, but the label is an action verb such as &amp;quot;Start Backup&amp;quot;. This is to let users know that they are doing something that actually has consequences and not just continuing to enter data. If the operation that the user is about to start cannot be undone or is in some other way potentially dangerous, consider adding a javascript warning dialog confirming the user wants to continue.&lt;br /&gt;
* &#039;&#039;&#039;Cancel&#039;&#039;&#039;: If there is a specific page from which the user can be assumed to have arrived to the wizard from, clicking Cancel will return them to this page. If you can not be sure, determine a reasonable default.&lt;br /&gt;
** The Cancel button should in most cases (except in very simple Wizards) have a javascript confirmation dialog associated with it, noting them that all the information they have entered will be lost, and asking them if they really want to continue.&lt;br /&gt;
&lt;br /&gt;
=== Notes ===&lt;br /&gt;
The user should be capable of using the browser&#039;s back button normally in a wizard. &lt;br /&gt;
* After pressing the Next button, the user should end up in the step that was before the page  &lt;br /&gt;
* After pressing the Previous button, the user should end up in the step that is after the current step in the wizard&#039;s sequence&lt;br /&gt;
* If the user cannot return to the previous step anymore, the user should be returned to the earliest possible screen, or alternatively the wizard should be reinitialized and the user sent to the first page of the wizard &lt;br /&gt;
&lt;br /&gt;
If there is a danger that experienced users want to use the functionality provided by the wizard and that they want more control than what the wizard provides, provide an alternate user interface to them.&lt;br /&gt;
&lt;br /&gt;
== Common mistakes ==&lt;br /&gt;
&lt;br /&gt;
Moodle Wizards typically do not have all of the required buttons nor the status display.&lt;br /&gt;
&lt;br /&gt;
Each screen is a form, so no links are used for moving between the screens but the next/previous should be used. The added click of selecting a form field and then pressing &#039;next&#039; is secondary to the problem of potentially losing user data: even if the data is preserved (using javascript which cannot be relied upon anyway), navigation links do not afford this so the user is left anxious. Also usage of back/forward browser buttons is problematic if what user has selected is not saved in the session using a the next/prev buttons (which are technically form submit buttons).&lt;br /&gt;
&lt;br /&gt;
== Examples and implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Backup ===&lt;br /&gt;
&lt;br /&gt;
[[Image:wizard-mockup.png|thumb]] &lt;br /&gt;
This mockup (MDL-20036) demonstrates the main features of a wizard. &lt;br /&gt;
* Status display and controls for controlling the wizard&lt;br /&gt;
* The visual hierarchy of the page expresses that the content in the box with the darker background is part of the wizard, and that this wizard is completes the process of backing up the Course Course Fullname 101.&lt;br /&gt;
&lt;br /&gt;
Note that this wizard is in the sense not typical that it only contains one step where the user actually does anything actively (enters information). The fact that the single screen contains a lot of information may slow down novices, but since backup can be considered an advanced operation, slowing down more experienced users would be worse.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Note&#039;&#039;&#039;: Moodle 2.0 contains a implementation of a wizard done according to MDL-20036 (see MDL-22142). View it at http://qa.moodle.net/backup/backup.php?id=1 (requires login with the qa site testing credentials). A screenshot should be added here as soon as Moodle 2.0 is released.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Further examples and code samples: [[Wizard Examples and Code Samples]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Related guidelines ==&lt;br /&gt;
Another way of only showing unexperienced users what they understand is using [[Progressive_Disclosure|Progressive Disclosure]]&lt;br /&gt;
&lt;br /&gt;
== Related issues in the tracker ==&lt;br /&gt;
* TODO: all the issues with installation and backup&lt;br /&gt;
&lt;br /&gt;
== (Optional) Further information / Sources  ==&lt;br /&gt;
* GNOME HIG: [http://library.gnome.org/devel/hig-book/stable/windows-assistant.html.en Assistants]&lt;br /&gt;
* http://ui-patterns.com/pattern/Wizard&lt;br /&gt;
* http://www.welie.com/patterns/showPattern.php?patternID=wizard&lt;br /&gt;
* http://uipatternfactory.com/p=wizard/&lt;br /&gt;
* http://en.wikipedia.org/wiki/Wizard_(software)&lt;br /&gt;
&lt;br /&gt;
[[Category:Moodle User Interface Guidelines]]&lt;/div&gt;</summary>
		<author><name>Pilpi</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Wizard&amp;diff=15562</id>
		<title>Wizard</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Wizard&amp;diff=15562"/>
		<updated>2010-05-15T16:02:37Z</updated>

		<summary type="html">&lt;p&gt;Pilpi: /* Backup */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[ Moodle User Interface Guidelines|Moodle User Interface Guidelines]] &amp;gt; &#039;&#039;&#039;Wizard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Problem ==&lt;br /&gt;
* Users need to perform a complex task, which which they are not familiar or lack needed domain knowledge &lt;br /&gt;
* The task users need to perform naturally divides into subtasks, and the nature or number of subtasks depends on what is selected in some other (preceding) tasks&lt;br /&gt;
&lt;br /&gt;
== Context ==&lt;br /&gt;
You are designing an UI for users who are not experts at a given task that involves entering a lot of information or making intricate selections that depend on each other. &lt;br /&gt;
== Forces: factors that affect selection ==&lt;br /&gt;
* Unexperienced users may get frustrated&lt;br /&gt;
** if too many choices, dependent on each other, are presented to them at once&lt;br /&gt;
** if they do not have all the background information related to a task &lt;br /&gt;
* Experienced users easily get frustrated&lt;br /&gt;
** if a task they know is split into too many phases &lt;br /&gt;
** if the order they enter data into the application is controlled&lt;br /&gt;
* Any user can be frustrated by lack of control in the process, i.e. not knowing the number of steps left or not being capable of controlling the process (returning back in the process to an earlier screen in case of a misunderstanding or mistake, for example)&lt;br /&gt;
&lt;br /&gt;
== Solution ==&lt;br /&gt;
&lt;br /&gt;
A Wizard, sometimes called an Assistant, is an interface that guides users through a predefined sequence of steps. &lt;br /&gt;
&lt;br /&gt;
=== Elements of a wizard ===&lt;br /&gt;
&lt;br /&gt;
==== Status display ====&lt;br /&gt;
Displays the steps required to complete the wizard, and indicates the step the user is in currently, giving important feedback to the user resulting from their actions, making the application seem responsive.&lt;br /&gt;
&lt;br /&gt;
==== Navigation buttons ====&lt;br /&gt;
* &#039;&#039;&#039;Previous&#039;&#039;&#039;: Whereever it is possible to allow the user to change the selections they have already made, a button labeled &#039;Previous&#039; should be provided. &lt;br /&gt;
** Obviously, the first page of the wizard does not include a previous button, nor do pages which are a result of actions that can not be undone. &lt;br /&gt;
** Unlike one might assume, the Previous button acts as a submit button for the current page, just like the Next button. If the user has made changes on the current page when they decide to return to a previous step, those changes are saved.&lt;br /&gt;
**Provide a Previous button whenever possible to maximize user control. &lt;br /&gt;
* &#039;&#039;&#039;Next&#039;&#039;&#039;: Used for moving to the next step&lt;br /&gt;
** When the next step is to actually start an operation (usually the last step of the wizard), the button is in the same position, but the label is an action verb such as &amp;quot;Start Backup&amp;quot;. This is to let users know that they are doing something that actually has consequences and not just continuing to enter data. If the operation that the user is about to start cannot be undone or is in some other way potentially dangerous, consider adding a javascript warning dialog confirming the user wants to continue.&lt;br /&gt;
* &#039;&#039;&#039;Cancel&#039;&#039;&#039;: If there is a specific page from which the user can be assumed to have arrived to the wizard from, clicking Cancel will return them to this page. If you can not be sure, determine a reasonable default.&lt;br /&gt;
** The Cancel button should in most cases (except in very simple Wizards) have a javascript confirmation dialog associated with it, noting them that all the information they have entered will be lost, and asking them if they really want to continue.&lt;br /&gt;
&lt;br /&gt;
=== Notes ===&lt;br /&gt;
The user should be capable of using the browser&#039;s back button normally in a wizard. &lt;br /&gt;
* After pressing the Next button, the user should end up in the step that was before the page  &lt;br /&gt;
* After pressing the Previous button, the user should end up in the step that is after the current step in the wizard&#039;s sequence&lt;br /&gt;
* If the user cannot return to the previous step anymore, the user should be returned to the earliest possible screen, or alternatively the wizard should be reinitialized and the user sent to the first page of the wizard &lt;br /&gt;
&lt;br /&gt;
If there is a danger that experienced users want to use the functionality provided by the wizard and that they want more control than what the wizard provides, provide an alternate user interface to them.&lt;br /&gt;
&lt;br /&gt;
== Common mistakes ==&lt;br /&gt;
&lt;br /&gt;
Moodle Wizards typically do not have all of the required buttons nor the status display.&lt;br /&gt;
&lt;br /&gt;
Each screen is a form, so no links are used for moving between the screens but the next/previous should be used. The added click of selecting a form field and then pressing &#039;next&#039; is secondary to the problem of potentially losing user data: even if the data is preserved (using javascript which cannot be relied upon anyway), navigation links do not afford this so the user is left anxious. Also usage of back/forward browser buttons is problematic if what user has selected is not saved in the session using a the next/prev buttons (which are technically form submit buttons).&lt;br /&gt;
&lt;br /&gt;
== Examples and implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Backup ===&lt;br /&gt;
&lt;br /&gt;
[[Image:wizard-mockup.png|thumb]] &lt;br /&gt;
This mockup (MDL-20036) demonstrates the main features of a wizard. &lt;br /&gt;
* Status display and controls for controlling the wizard&lt;br /&gt;
* The visual hierarchy of the page expresses that the content in the box with the darker background is part of the wizard, and that this wizard is completes the process of backing up the Course Course Fullname 101.&lt;br /&gt;
&lt;br /&gt;
Note that this wizard is in the sense not typical that it only contains one step where the user actually does anything actively (enters information). The fact that the single screen contains a lot of information may slow down novices, but since backup can be considered an advanced operation, slowing down more experienced users would be worse.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Note&#039;&#039;&#039;: Moodle 2.0 contains a implementation of a wizard done according to MDL-20036 (see MDL-22142). View it at http://qa.moodle.net/backup/backup.php?id=1 (requires login). A screenshot should be added here as soon as Moodle 2.0 is released.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Further examples and code samples: [[Wizard Examples and Code Samples]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Related guidelines ==&lt;br /&gt;
Another way of only showing unexperienced users what they understand is using [[Progressive_Disclosure|Progressive Disclosure]]&lt;br /&gt;
&lt;br /&gt;
== Related issues in the tracker ==&lt;br /&gt;
* TODO: all the issues with installation and backup&lt;br /&gt;
&lt;br /&gt;
== (Optional) Further information / Sources  ==&lt;br /&gt;
* GNOME HIG: [http://library.gnome.org/devel/hig-book/stable/windows-assistant.html.en Assistants]&lt;br /&gt;
* http://ui-patterns.com/pattern/Wizard&lt;br /&gt;
* http://www.welie.com/patterns/showPattern.php?patternID=wizard&lt;br /&gt;
* http://uipatternfactory.com/p=wizard/&lt;br /&gt;
* http://en.wikipedia.org/wiki/Wizard_(software)&lt;br /&gt;
&lt;br /&gt;
[[Category:Moodle User Interface Guidelines]]&lt;/div&gt;</summary>
		<author><name>Pilpi</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Wizard&amp;diff=15561</id>
		<title>Wizard</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Wizard&amp;diff=15561"/>
		<updated>2010-05-15T16:01:09Z</updated>

		<summary type="html">&lt;p&gt;Pilpi: /* Backup */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[ Moodle User Interface Guidelines|Moodle User Interface Guidelines]] &amp;gt; &#039;&#039;&#039;Wizard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Problem ==&lt;br /&gt;
* Users need to perform a complex task, which which they are not familiar or lack needed domain knowledge &lt;br /&gt;
* The task users need to perform naturally divides into subtasks, and the nature or number of subtasks depends on what is selected in some other (preceding) tasks&lt;br /&gt;
&lt;br /&gt;
== Context ==&lt;br /&gt;
You are designing an UI for users who are not experts at a given task that involves entering a lot of information or making intricate selections that depend on each other. &lt;br /&gt;
== Forces: factors that affect selection ==&lt;br /&gt;
* Unexperienced users may get frustrated&lt;br /&gt;
** if too many choices, dependent on each other, are presented to them at once&lt;br /&gt;
** if they do not have all the background information related to a task &lt;br /&gt;
* Experienced users easily get frustrated&lt;br /&gt;
** if a task they know is split into too many phases &lt;br /&gt;
** if the order they enter data into the application is controlled&lt;br /&gt;
* Any user can be frustrated by lack of control in the process, i.e. not knowing the number of steps left or not being capable of controlling the process (returning back in the process to an earlier screen in case of a misunderstanding or mistake, for example)&lt;br /&gt;
&lt;br /&gt;
== Solution ==&lt;br /&gt;
&lt;br /&gt;
A Wizard, sometimes called an Assistant, is an interface that guides users through a predefined sequence of steps. &lt;br /&gt;
&lt;br /&gt;
=== Elements of a wizard ===&lt;br /&gt;
&lt;br /&gt;
==== Status display ====&lt;br /&gt;
Displays the steps required to complete the wizard, and indicates the step the user is in currently, giving important feedback to the user resulting from their actions, making the application seem responsive.&lt;br /&gt;
&lt;br /&gt;
==== Navigation buttons ====&lt;br /&gt;
* &#039;&#039;&#039;Previous&#039;&#039;&#039;: Whereever it is possible to allow the user to change the selections they have already made, a button labeled &#039;Previous&#039; should be provided. &lt;br /&gt;
** Obviously, the first page of the wizard does not include a previous button, nor do pages which are a result of actions that can not be undone. &lt;br /&gt;
** Unlike one might assume, the Previous button acts as a submit button for the current page, just like the Next button. If the user has made changes on the current page when they decide to return to a previous step, those changes are saved.&lt;br /&gt;
**Provide a Previous button whenever possible to maximize user control. &lt;br /&gt;
* &#039;&#039;&#039;Next&#039;&#039;&#039;: Used for moving to the next step&lt;br /&gt;
** When the next step is to actually start an operation (usually the last step of the wizard), the button is in the same position, but the label is an action verb such as &amp;quot;Start Backup&amp;quot;. This is to let users know that they are doing something that actually has consequences and not just continuing to enter data. If the operation that the user is about to start cannot be undone or is in some other way potentially dangerous, consider adding a javascript warning dialog confirming the user wants to continue.&lt;br /&gt;
* &#039;&#039;&#039;Cancel&#039;&#039;&#039;: If there is a specific page from which the user can be assumed to have arrived to the wizard from, clicking Cancel will return them to this page. If you can not be sure, determine a reasonable default.&lt;br /&gt;
** The Cancel button should in most cases (except in very simple Wizards) have a javascript confirmation dialog associated with it, noting them that all the information they have entered will be lost, and asking them if they really want to continue.&lt;br /&gt;
&lt;br /&gt;
=== Notes ===&lt;br /&gt;
The user should be capable of using the browser&#039;s back button normally in a wizard. &lt;br /&gt;
* After pressing the Next button, the user should end up in the step that was before the page  &lt;br /&gt;
* After pressing the Previous button, the user should end up in the step that is after the current step in the wizard&#039;s sequence&lt;br /&gt;
* If the user cannot return to the previous step anymore, the user should be returned to the earliest possible screen, or alternatively the wizard should be reinitialized and the user sent to the first page of the wizard &lt;br /&gt;
&lt;br /&gt;
If there is a danger that experienced users want to use the functionality provided by the wizard and that they want more control than what the wizard provides, provide an alternate user interface to them.&lt;br /&gt;
&lt;br /&gt;
== Common mistakes ==&lt;br /&gt;
&lt;br /&gt;
Moodle Wizards typically do not have all of the required buttons nor the status display.&lt;br /&gt;
&lt;br /&gt;
Each screen is a form, so no links are used for moving between the screens but the next/previous should be used. The added click of selecting a form field and then pressing &#039;next&#039; is secondary to the problem of potentially losing user data: even if the data is preserved (using javascript which cannot be relied upon anyway), navigation links do not afford this so the user is left anxious. Also usage of back/forward browser buttons is problematic if what user has selected is not saved in the session using a the next/prev buttons (which are technically form submit buttons).&lt;br /&gt;
&lt;br /&gt;
== Examples and implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Backup ===&lt;br /&gt;
&lt;br /&gt;
[[Image:wizard-mockup.png|thumb]] &lt;br /&gt;
This mockup (MDL-20036) demonstrates the main features of a wizard. &lt;br /&gt;
* Status display and controls for controlling the wizard&lt;br /&gt;
* The visual hierarchy of the page expresses that the content in the box with the darker background is part of the wizard, and that this wizard is completes the process of backing up the Course Course Fullname 101.&lt;br /&gt;
&lt;br /&gt;
Note that this wizard is in the sense not typical that it only contains one step where the user actually does anything actively (enters information). The fact that the single screen contains a lot of information may slow down novices, but since backup can be considered an advanced operation, slowing down more experienced users would be worse.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Note&#039;&#039;&#039;: Moodle 2.0 contains a implementation of a wizard done according to MDL-20036 (see MDL-22142). View it at http://qa.moodle.net/backup/backup.php (requires login). A screenshot should be added here as soon as Moodle 2.0 is released.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Further examples and code samples: [[Wizard Examples and Code Samples]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Related guidelines ==&lt;br /&gt;
Another way of only showing unexperienced users what they understand is using [[Progressive_Disclosure|Progressive Disclosure]]&lt;br /&gt;
&lt;br /&gt;
== Related issues in the tracker ==&lt;br /&gt;
* TODO: all the issues with installation and backup&lt;br /&gt;
&lt;br /&gt;
== (Optional) Further information / Sources  ==&lt;br /&gt;
* GNOME HIG: [http://library.gnome.org/devel/hig-book/stable/windows-assistant.html.en Assistants]&lt;br /&gt;
* http://ui-patterns.com/pattern/Wizard&lt;br /&gt;
* http://www.welie.com/patterns/showPattern.php?patternID=wizard&lt;br /&gt;
* http://uipatternfactory.com/p=wizard/&lt;br /&gt;
* http://en.wikipedia.org/wiki/Wizard_(software)&lt;br /&gt;
&lt;br /&gt;
[[Category:Moodle User Interface Guidelines]]&lt;/div&gt;</summary>
		<author><name>Pilpi</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Wizard&amp;diff=15560</id>
		<title>Wizard</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Wizard&amp;diff=15560"/>
		<updated>2010-05-15T15:38:29Z</updated>

		<summary type="html">&lt;p&gt;Pilpi: /* Backup */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[ Moodle User Interface Guidelines|Moodle User Interface Guidelines]] &amp;gt; &#039;&#039;&#039;Wizard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Problem ==&lt;br /&gt;
* Users need to perform a complex task, which which they are not familiar or lack needed domain knowledge &lt;br /&gt;
* The task users need to perform naturally divides into subtasks, and the nature or number of subtasks depends on what is selected in some other (preceding) tasks&lt;br /&gt;
&lt;br /&gt;
== Context ==&lt;br /&gt;
You are designing an UI for users who are not experts at a given task that involves entering a lot of information or making intricate selections that depend on each other. &lt;br /&gt;
== Forces: factors that affect selection ==&lt;br /&gt;
* Unexperienced users may get frustrated&lt;br /&gt;
** if too many choices, dependent on each other, are presented to them at once&lt;br /&gt;
** if they do not have all the background information related to a task &lt;br /&gt;
* Experienced users easily get frustrated&lt;br /&gt;
** if a task they know is split into too many phases &lt;br /&gt;
** if the order they enter data into the application is controlled&lt;br /&gt;
* Any user can be frustrated by lack of control in the process, i.e. not knowing the number of steps left or not being capable of controlling the process (returning back in the process to an earlier screen in case of a misunderstanding or mistake, for example)&lt;br /&gt;
&lt;br /&gt;
== Solution ==&lt;br /&gt;
&lt;br /&gt;
A Wizard, sometimes called an Assistant, is an interface that guides users through a predefined sequence of steps. &lt;br /&gt;
&lt;br /&gt;
=== Elements of a wizard ===&lt;br /&gt;
&lt;br /&gt;
==== Status display ====&lt;br /&gt;
Displays the steps required to complete the wizard, and indicates the step the user is in currently, giving important feedback to the user resulting from their actions, making the application seem responsive.&lt;br /&gt;
&lt;br /&gt;
==== Navigation buttons ====&lt;br /&gt;
* &#039;&#039;&#039;Previous&#039;&#039;&#039;: Whereever it is possible to allow the user to change the selections they have already made, a button labeled &#039;Previous&#039; should be provided. &lt;br /&gt;
** Obviously, the first page of the wizard does not include a previous button, nor do pages which are a result of actions that can not be undone. &lt;br /&gt;
** Unlike one might assume, the Previous button acts as a submit button for the current page, just like the Next button. If the user has made changes on the current page when they decide to return to a previous step, those changes are saved.&lt;br /&gt;
**Provide a Previous button whenever possible to maximize user control. &lt;br /&gt;
* &#039;&#039;&#039;Next&#039;&#039;&#039;: Used for moving to the next step&lt;br /&gt;
** When the next step is to actually start an operation (usually the last step of the wizard), the button is in the same position, but the label is an action verb such as &amp;quot;Start Backup&amp;quot;. This is to let users know that they are doing something that actually has consequences and not just continuing to enter data. If the operation that the user is about to start cannot be undone or is in some other way potentially dangerous, consider adding a javascript warning dialog confirming the user wants to continue.&lt;br /&gt;
* &#039;&#039;&#039;Cancel&#039;&#039;&#039;: If there is a specific page from which the user can be assumed to have arrived to the wizard from, clicking Cancel will return them to this page. If you can not be sure, determine a reasonable default.&lt;br /&gt;
** The Cancel button should in most cases (except in very simple Wizards) have a javascript confirmation dialog associated with it, noting them that all the information they have entered will be lost, and asking them if they really want to continue.&lt;br /&gt;
&lt;br /&gt;
=== Notes ===&lt;br /&gt;
The user should be capable of using the browser&#039;s back button normally in a wizard. &lt;br /&gt;
* After pressing the Next button, the user should end up in the step that was before the page  &lt;br /&gt;
* After pressing the Previous button, the user should end up in the step that is after the current step in the wizard&#039;s sequence&lt;br /&gt;
* If the user cannot return to the previous step anymore, the user should be returned to the earliest possible screen, or alternatively the wizard should be reinitialized and the user sent to the first page of the wizard &lt;br /&gt;
&lt;br /&gt;
If there is a danger that experienced users want to use the functionality provided by the wizard and that they want more control than what the wizard provides, provide an alternate user interface to them.&lt;br /&gt;
&lt;br /&gt;
== Common mistakes ==&lt;br /&gt;
&lt;br /&gt;
Moodle Wizards typically do not have all of the required buttons nor the status display.&lt;br /&gt;
&lt;br /&gt;
Each screen is a form, so no links are used for moving between the screens but the next/previous should be used. The added click of selecting a form field and then pressing &#039;next&#039; is secondary to the problem of potentially losing user data: even if the data is preserved (using javascript which cannot be relied upon anyway), navigation links do not afford this so the user is left anxious. Also usage of back/forward browser buttons is problematic if what user has selected is not saved in the session using a the next/prev buttons (which are technically form submit buttons).&lt;br /&gt;
&lt;br /&gt;
== Examples and implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Backup ===&lt;br /&gt;
&lt;br /&gt;
[[Image:wizard-mockup.png|thumb]] &lt;br /&gt;
This mockup (MDL-20036) demonstrates the main features of a wizard. &lt;br /&gt;
* Status display and controls for controlling the wizard&lt;br /&gt;
* The visual hierarchy of the page expresses that the content in the box with the darker background is part of the wizard, and that this wizard is completes the process of backing up the Course Course Fullname 101.&lt;br /&gt;
&lt;br /&gt;
Note that this wizard is in the sense not typical that it only contains one step where the user actually does anything actively (enters information). The fact that the single screen contains a lot of information may slow down novices, but since backup can be considered an advanced operation, slowing down more experienced users would be worse.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Note&#039;&#039;&#039;: Moodle 2.0 contains a implementation of a wizard done according to MDL-20036 (see MDL-22142). View it at [http://qa.moodle.net/backup/backup.php]. A screenshot should be added here as soon as Moodle 2.0 is released.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Further examples and code samples: [[Wizard Examples and Code Samples]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Related guidelines ==&lt;br /&gt;
Another way of only showing unexperienced users what they understand is using [[Progressive_Disclosure|Progressive Disclosure]]&lt;br /&gt;
&lt;br /&gt;
== Related issues in the tracker ==&lt;br /&gt;
* TODO: all the issues with installation and backup&lt;br /&gt;
&lt;br /&gt;
== (Optional) Further information / Sources  ==&lt;br /&gt;
* GNOME HIG: [http://library.gnome.org/devel/hig-book/stable/windows-assistant.html.en Assistants]&lt;br /&gt;
* http://ui-patterns.com/pattern/Wizard&lt;br /&gt;
* http://www.welie.com/patterns/showPattern.php?patternID=wizard&lt;br /&gt;
* http://uipatternfactory.com/p=wizard/&lt;br /&gt;
* http://en.wikipedia.org/wiki/Wizard_(software)&lt;br /&gt;
&lt;br /&gt;
[[Category:Moodle User Interface Guidelines]]&lt;/div&gt;</summary>
		<author><name>Pilpi</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Wizard&amp;diff=15559</id>
		<title>Wizard</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Wizard&amp;diff=15559"/>
		<updated>2010-05-15T15:38:01Z</updated>

		<summary type="html">&lt;p&gt;Pilpi: /* Backup */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[ Moodle User Interface Guidelines|Moodle User Interface Guidelines]] &amp;gt; &#039;&#039;&#039;Wizard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Problem ==&lt;br /&gt;
* Users need to perform a complex task, which which they are not familiar or lack needed domain knowledge &lt;br /&gt;
* The task users need to perform naturally divides into subtasks, and the nature or number of subtasks depends on what is selected in some other (preceding) tasks&lt;br /&gt;
&lt;br /&gt;
== Context ==&lt;br /&gt;
You are designing an UI for users who are not experts at a given task that involves entering a lot of information or making intricate selections that depend on each other. &lt;br /&gt;
== Forces: factors that affect selection ==&lt;br /&gt;
* Unexperienced users may get frustrated&lt;br /&gt;
** if too many choices, dependent on each other, are presented to them at once&lt;br /&gt;
** if they do not have all the background information related to a task &lt;br /&gt;
* Experienced users easily get frustrated&lt;br /&gt;
** if a task they know is split into too many phases &lt;br /&gt;
** if the order they enter data into the application is controlled&lt;br /&gt;
* Any user can be frustrated by lack of control in the process, i.e. not knowing the number of steps left or not being capable of controlling the process (returning back in the process to an earlier screen in case of a misunderstanding or mistake, for example)&lt;br /&gt;
&lt;br /&gt;
== Solution ==&lt;br /&gt;
&lt;br /&gt;
A Wizard, sometimes called an Assistant, is an interface that guides users through a predefined sequence of steps. &lt;br /&gt;
&lt;br /&gt;
=== Elements of a wizard ===&lt;br /&gt;
&lt;br /&gt;
==== Status display ====&lt;br /&gt;
Displays the steps required to complete the wizard, and indicates the step the user is in currently, giving important feedback to the user resulting from their actions, making the application seem responsive.&lt;br /&gt;
&lt;br /&gt;
==== Navigation buttons ====&lt;br /&gt;
* &#039;&#039;&#039;Previous&#039;&#039;&#039;: Whereever it is possible to allow the user to change the selections they have already made, a button labeled &#039;Previous&#039; should be provided. &lt;br /&gt;
** Obviously, the first page of the wizard does not include a previous button, nor do pages which are a result of actions that can not be undone. &lt;br /&gt;
** Unlike one might assume, the Previous button acts as a submit button for the current page, just like the Next button. If the user has made changes on the current page when they decide to return to a previous step, those changes are saved.&lt;br /&gt;
**Provide a Previous button whenever possible to maximize user control. &lt;br /&gt;
* &#039;&#039;&#039;Next&#039;&#039;&#039;: Used for moving to the next step&lt;br /&gt;
** When the next step is to actually start an operation (usually the last step of the wizard), the button is in the same position, but the label is an action verb such as &amp;quot;Start Backup&amp;quot;. This is to let users know that they are doing something that actually has consequences and not just continuing to enter data. If the operation that the user is about to start cannot be undone or is in some other way potentially dangerous, consider adding a javascript warning dialog confirming the user wants to continue.&lt;br /&gt;
* &#039;&#039;&#039;Cancel&#039;&#039;&#039;: If there is a specific page from which the user can be assumed to have arrived to the wizard from, clicking Cancel will return them to this page. If you can not be sure, determine a reasonable default.&lt;br /&gt;
** The Cancel button should in most cases (except in very simple Wizards) have a javascript confirmation dialog associated with it, noting them that all the information they have entered will be lost, and asking them if they really want to continue.&lt;br /&gt;
&lt;br /&gt;
=== Notes ===&lt;br /&gt;
The user should be capable of using the browser&#039;s back button normally in a wizard. &lt;br /&gt;
* After pressing the Next button, the user should end up in the step that was before the page  &lt;br /&gt;
* After pressing the Previous button, the user should end up in the step that is after the current step in the wizard&#039;s sequence&lt;br /&gt;
* If the user cannot return to the previous step anymore, the user should be returned to the earliest possible screen, or alternatively the wizard should be reinitialized and the user sent to the first page of the wizard &lt;br /&gt;
&lt;br /&gt;
If there is a danger that experienced users want to use the functionality provided by the wizard and that they want more control than what the wizard provides, provide an alternate user interface to them.&lt;br /&gt;
&lt;br /&gt;
== Common mistakes ==&lt;br /&gt;
&lt;br /&gt;
Moodle Wizards typically do not have all of the required buttons nor the status display.&lt;br /&gt;
&lt;br /&gt;
Each screen is a form, so no links are used for moving between the screens but the next/previous should be used. The added click of selecting a form field and then pressing &#039;next&#039; is secondary to the problem of potentially losing user data: even if the data is preserved (using javascript which cannot be relied upon anyway), navigation links do not afford this so the user is left anxious. Also usage of back/forward browser buttons is problematic if what user has selected is not saved in the session using a the next/prev buttons (which are technically form submit buttons).&lt;br /&gt;
&lt;br /&gt;
== Examples and implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Backup ===&lt;br /&gt;
&lt;br /&gt;
[[Image:wizard-mockup.png|thumb]] &lt;br /&gt;
This mockup (MDL-20036) demonstrates the main features of a wizard. &lt;br /&gt;
* Status display and controls for controlling the wizard&lt;br /&gt;
* The visual hierarchy of the page expresses that the content in the box with the darker background is part of the wizard, and that this wizard is completes the process of backing up the Course Course Fullname 101.&lt;br /&gt;
&lt;br /&gt;
Note that this wizard is in the sense not typical that it only contains one step where the user actually does anything actively (enters information). The fact that the single screen contains a lot of information may slow down novices, but since backup can be considered an advanced operation, slowing down more experienced users would be worse.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Note&#039;&#039;&#039;: Moodle 2.0 contains a implementation of a wizard done according to MDL-20036. View it at [http://qa.moodle.net/backup/backup.php]. A screenshot should be added here as soon as Moodle 2.0 is released.&lt;br /&gt;
&lt;br /&gt;
http://tracker.moodle.org/browse/MDL-22142&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Further examples and code samples: [[Wizard Examples and Code Samples]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Related guidelines ==&lt;br /&gt;
Another way of only showing unexperienced users what they understand is using [[Progressive_Disclosure|Progressive Disclosure]]&lt;br /&gt;
&lt;br /&gt;
== Related issues in the tracker ==&lt;br /&gt;
* TODO: all the issues with installation and backup&lt;br /&gt;
&lt;br /&gt;
== (Optional) Further information / Sources  ==&lt;br /&gt;
* GNOME HIG: [http://library.gnome.org/devel/hig-book/stable/windows-assistant.html.en Assistants]&lt;br /&gt;
* http://ui-patterns.com/pattern/Wizard&lt;br /&gt;
* http://www.welie.com/patterns/showPattern.php?patternID=wizard&lt;br /&gt;
* http://uipatternfactory.com/p=wizard/&lt;br /&gt;
* http://en.wikipedia.org/wiki/Wizard_(software)&lt;br /&gt;
&lt;br /&gt;
[[Category:Moodle User Interface Guidelines]]&lt;/div&gt;</summary>
		<author><name>Pilpi</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Page_structure_and_types&amp;diff=15272</id>
		<title>Page structure and types</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Page_structure_and_types&amp;diff=15272"/>
		<updated>2010-05-15T15:18:54Z</updated>

		<summary type="html">&lt;p&gt;Pilpi: /* See also */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[ Moodle User Interface Guidelines|Moodle User Interface Guidelines]] &amp;gt; &#039;&#039;&#039;Page structure and types&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Work in progress|forumurl=http://moodle.org/mod/forum/discuss.php?d=126884|info=&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&#039;&#039;&#039;This is a guideline template for a [[Moodle_User_Interface_Guidelines|Moodle Interface Guideline]]. Comments: [http://moodle.org/mod/forum/discuss.php?d=126884 developer forum thread] &#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
This page describes the structure of different types of Moodle pages, using the default theme &#039;standard&#039; as an example. Much of what is described here can be changed in a custom theme ([[#See also|See also]]).&lt;br /&gt;
&lt;br /&gt;
== Basic page structure ==&lt;br /&gt;
[[Image:basic-page-structure.png||Image 1: Basic page structure]]&lt;br /&gt;
&lt;br /&gt;
Most Moodle pages are divided in four parts:  Header, Navigation bar, Main content area and Footer.&lt;br /&gt;
&lt;br /&gt;
=== Header ===&lt;br /&gt;
In addition to the main heading of the page, the header also has another area for content defined (right aligned in the above image). Depending on the page, the content of this area is either a navigation menu or the user login info. &lt;br /&gt;
&lt;br /&gt;
=== Navigation bar ===&lt;br /&gt;
&lt;br /&gt;
The navigation bar contains a breadcrumb menu. Additionally, it has an element (right aligned in the above image), the contents of which depend on the page and often on the permissions the user viewing the page has.&lt;br /&gt;
&lt;br /&gt;
=== Main content area ===&lt;br /&gt;
&lt;br /&gt;
In addition to the actual content of the page, this area can contain [[Blocks|blocks]] in the left and right columns.&lt;br /&gt;
&lt;br /&gt;
The content of the page in the middle is controlled by the teacher. &lt;br /&gt;
* Teacher(s) can add and edit the actual content, &lt;br /&gt;
* The overall sequencing and organization of the content is controlled by the selected [[Course Format|Course Format]].&lt;br /&gt;
&lt;br /&gt;
=== Footer ===&lt;br /&gt;
&lt;br /&gt;
The footer contains a link to the documentation wiki for the page in question, login info, and a link (with the appearance roughly of a button) to go higher up in the hierarchy of the Moodle site.&lt;br /&gt;
&lt;br /&gt;
=== Implementation ===&lt;br /&gt;
Note: May be obsolete from Moodle 2.0 onwards.&lt;br /&gt;
&lt;br /&gt;
# All pages should call print_header, and supply a standard navigation path to be displayed in it. Where possible, it should look like: COURSE &amp;gt;&amp;gt; INDEX &amp;gt;&amp;gt; INSTANCE &amp;gt;&amp;gt; SUBPAGES...&lt;br /&gt;
# Pages within activity modules should call navmenu() to generate the appropriate navigation menu.&lt;br /&gt;
# All pages should call print_header, and supply a standard navigation path to be displayed in it. Where possible, it should look like: COURSE &amp;gt;&amp;gt; INDEX &amp;gt;&amp;gt; INSTANCE &amp;gt;&amp;gt; SUBPAGES...&lt;br /&gt;
# Pages within activity modules should call navmenu() to generate the appropriate navigation menu.&lt;br /&gt;
&lt;br /&gt;
==== Page layout ====&lt;br /&gt;
# Print headings with print_heading, use the CSS hooks for IDs and Classes&lt;br /&gt;
# Print boxes around text using print_simple_box, use the CSS hooks for IDs and Classes (TODO: Advice usage of boxes in UI design context, is there an unwritten rule when to use them?)&lt;br /&gt;
&lt;br /&gt;
== Page types == &lt;br /&gt;
&lt;br /&gt;
TODO: see [[Development_talk:Page_structure_and_types]]&lt;br /&gt;
&lt;br /&gt;
== Who controls what? ==&lt;br /&gt;
&lt;br /&gt;
(TODO: Perhaps move this section to moodle site structure or on a page of its own?)&lt;br /&gt;
=== Teachers ===&lt;br /&gt;
As a metaphor from physical education world, a course is an independent playground for a teacher. This is where they communicate to students the essence of the course. &lt;br /&gt;
&lt;br /&gt;
The means for teachers to do this in Moodle are:&lt;br /&gt;
* in the center column of the content area (course index, containing mostly links to activity modules), and &lt;br /&gt;
* in the side columnd (blocks  and course-specific features such as the question bank, grades, and course-specific roles). &lt;br /&gt;
&lt;br /&gt;
The goals teachers have doing this, i.e. what it means to communicate a course&#039;s essence: &lt;br /&gt;
* Communicate what is expected of students&lt;br /&gt;
* Communicate the overall contents of the course&lt;br /&gt;
* The course itself: Give means/tools for students to learn (as described by social constructionism)&lt;br /&gt;
&lt;br /&gt;
=== Students ===&lt;br /&gt;
&lt;br /&gt;
Interact mainly with the activity modules placed in a course by a teacher.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
Please add relevant links to implementation advice.&lt;br /&gt;
&lt;br /&gt;
* [[Navigation_block]]&lt;br /&gt;
* [[Moodle_2.0_release_notes#Navigation]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Moodle User Interface Guidelines]]&lt;/div&gt;</summary>
		<author><name>Pilpi</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Page_structure_and_types&amp;diff=15271</id>
		<title>Page structure and types</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Page_structure_and_types&amp;diff=15271"/>
		<updated>2010-05-15T15:16:03Z</updated>

		<summary type="html">&lt;p&gt;Pilpi: /* Teachers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[ Moodle User Interface Guidelines|Moodle User Interface Guidelines]] &amp;gt; &#039;&#039;&#039;Page structure and types&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Work in progress|forumurl=http://moodle.org/mod/forum/discuss.php?d=126884|info=&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&#039;&#039;&#039;This is a guideline template for a [[Moodle_User_Interface_Guidelines|Moodle Interface Guideline]]. Comments: [http://moodle.org/mod/forum/discuss.php?d=126884 developer forum thread] &#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
This page describes the structure of different types of Moodle pages, using the default theme &#039;standard&#039; as an example. Much of what is described here can be changed in a custom theme ([[#See also|See also]]).&lt;br /&gt;
&lt;br /&gt;
== Basic page structure ==&lt;br /&gt;
[[Image:basic-page-structure.png||Image 1: Basic page structure]]&lt;br /&gt;
&lt;br /&gt;
Most Moodle pages are divided in four parts:  Header, Navigation bar, Main content area and Footer.&lt;br /&gt;
&lt;br /&gt;
=== Header ===&lt;br /&gt;
In addition to the main heading of the page, the header also has another area for content defined (right aligned in the above image). Depending on the page, the content of this area is either a navigation menu or the user login info. &lt;br /&gt;
&lt;br /&gt;
=== Navigation bar ===&lt;br /&gt;
&lt;br /&gt;
The navigation bar contains a breadcrumb menu. Additionally, it has an element (right aligned in the above image), the contents of which depend on the page and often on the permissions the user viewing the page has.&lt;br /&gt;
&lt;br /&gt;
=== Main content area ===&lt;br /&gt;
&lt;br /&gt;
In addition to the actual content of the page, this area can contain [[Blocks|blocks]] in the left and right columns.&lt;br /&gt;
&lt;br /&gt;
The content of the page in the middle is controlled by the teacher. &lt;br /&gt;
* Teacher(s) can add and edit the actual content, &lt;br /&gt;
* The overall sequencing and organization of the content is controlled by the selected [[Course Format|Course Format]].&lt;br /&gt;
&lt;br /&gt;
=== Footer ===&lt;br /&gt;
&lt;br /&gt;
The footer contains a link to the documentation wiki for the page in question, login info, and a link (with the appearance roughly of a button) to go higher up in the hierarchy of the Moodle site.&lt;br /&gt;
&lt;br /&gt;
=== Implementation ===&lt;br /&gt;
Note: May be obsolete from Moodle 2.0 onwards.&lt;br /&gt;
&lt;br /&gt;
# All pages should call print_header, and supply a standard navigation path to be displayed in it. Where possible, it should look like: COURSE &amp;gt;&amp;gt; INDEX &amp;gt;&amp;gt; INSTANCE &amp;gt;&amp;gt; SUBPAGES...&lt;br /&gt;
# Pages within activity modules should call navmenu() to generate the appropriate navigation menu.&lt;br /&gt;
# All pages should call print_header, and supply a standard navigation path to be displayed in it. Where possible, it should look like: COURSE &amp;gt;&amp;gt; INDEX &amp;gt;&amp;gt; INSTANCE &amp;gt;&amp;gt; SUBPAGES...&lt;br /&gt;
# Pages within activity modules should call navmenu() to generate the appropriate navigation menu.&lt;br /&gt;
&lt;br /&gt;
==== Page layout ====&lt;br /&gt;
# Print headings with print_heading, use the CSS hooks for IDs and Classes&lt;br /&gt;
# Print boxes around text using print_simple_box, use the CSS hooks for IDs and Classes (TODO: Advice usage of boxes in UI design context, is there an unwritten rule when to use them?)&lt;br /&gt;
&lt;br /&gt;
== Page types == &lt;br /&gt;
&lt;br /&gt;
TODO: see [[Development_talk:Page_structure_and_types]]&lt;br /&gt;
&lt;br /&gt;
== Who controls what? ==&lt;br /&gt;
&lt;br /&gt;
(TODO: Perhaps move this section to moodle site structure or on a page of its own?)&lt;br /&gt;
=== Teachers ===&lt;br /&gt;
As a metaphor from physical education world, a course is an independent playground for a teacher. This is where they communicate to students the essence of the course. &lt;br /&gt;
&lt;br /&gt;
The means for teachers to do this in Moodle are:&lt;br /&gt;
* in the center column of the content area (course index, containing mostly links to activity modules), and &lt;br /&gt;
* in the side columnd (blocks  and course-specific features such as the question bank, grades, and course-specific roles). &lt;br /&gt;
&lt;br /&gt;
The goals teachers have doing this, i.e. what it means to communicate a course&#039;s essence: &lt;br /&gt;
* Communicate what is expected of students&lt;br /&gt;
* Communicate the overall contents of the course&lt;br /&gt;
* The course itself: Give means/tools for students to learn (as described by social constructionism)&lt;br /&gt;
&lt;br /&gt;
=== Students ===&lt;br /&gt;
&lt;br /&gt;
Interact mainly with the activity modules placed in a course by a teacher.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[Developement:How_Moodle_outputs_HTML]]&lt;br /&gt;
* [[Navigation_block]]&lt;br /&gt;
* [[Moodle_2.0_release_notes#Navigation]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Moodle User Interface Guidelines]]&lt;/div&gt;</summary>
		<author><name>Pilpi</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Page_structure_and_types&amp;diff=15270</id>
		<title>Page structure and types</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Page_structure_and_types&amp;diff=15270"/>
		<updated>2010-05-15T15:15:33Z</updated>

		<summary type="html">&lt;p&gt;Pilpi: /* See also */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[ Moodle User Interface Guidelines|Moodle User Interface Guidelines]] &amp;gt; &#039;&#039;&#039;Page structure and types&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Work in progress|forumurl=http://moodle.org/mod/forum/discuss.php?d=126884|info=&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&#039;&#039;&#039;This is a guideline template for a [[Moodle_User_Interface_Guidelines|Moodle Interface Guideline]]. Comments: [http://moodle.org/mod/forum/discuss.php?d=126884 developer forum thread] &#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
This page describes the structure of different types of Moodle pages, using the default theme &#039;standard&#039; as an example. Much of what is described here can be changed in a custom theme ([[#See also|See also]]).&lt;br /&gt;
&lt;br /&gt;
== Basic page structure ==&lt;br /&gt;
[[Image:basic-page-structure.png||Image 1: Basic page structure]]&lt;br /&gt;
&lt;br /&gt;
Most Moodle pages are divided in four parts:  Header, Navigation bar, Main content area and Footer.&lt;br /&gt;
&lt;br /&gt;
=== Header ===&lt;br /&gt;
In addition to the main heading of the page, the header also has another area for content defined (right aligned in the above image). Depending on the page, the content of this area is either a navigation menu or the user login info. &lt;br /&gt;
&lt;br /&gt;
=== Navigation bar ===&lt;br /&gt;
&lt;br /&gt;
The navigation bar contains a breadcrumb menu. Additionally, it has an element (right aligned in the above image), the contents of which depend on the page and often on the permissions the user viewing the page has.&lt;br /&gt;
&lt;br /&gt;
=== Main content area ===&lt;br /&gt;
&lt;br /&gt;
In addition to the actual content of the page, this area can contain [[Blocks|blocks]] in the left and right columns.&lt;br /&gt;
&lt;br /&gt;
The content of the page in the middle is controlled by the teacher. &lt;br /&gt;
* Teacher(s) can add and edit the actual content, &lt;br /&gt;
* The overall sequencing and organization of the content is controlled by the selected [[Course Format|Course Format]].&lt;br /&gt;
&lt;br /&gt;
=== Footer ===&lt;br /&gt;
&lt;br /&gt;
The footer contains a link to the documentation wiki for the page in question, login info, and a link (with the appearance roughly of a button) to go higher up in the hierarchy of the Moodle site.&lt;br /&gt;
&lt;br /&gt;
=== Implementation ===&lt;br /&gt;
Note: May be obsolete from Moodle 2.0 onwards.&lt;br /&gt;
&lt;br /&gt;
# All pages should call print_header, and supply a standard navigation path to be displayed in it. Where possible, it should look like: COURSE &amp;gt;&amp;gt; INDEX &amp;gt;&amp;gt; INSTANCE &amp;gt;&amp;gt; SUBPAGES...&lt;br /&gt;
# Pages within activity modules should call navmenu() to generate the appropriate navigation menu.&lt;br /&gt;
# All pages should call print_header, and supply a standard navigation path to be displayed in it. Where possible, it should look like: COURSE &amp;gt;&amp;gt; INDEX &amp;gt;&amp;gt; INSTANCE &amp;gt;&amp;gt; SUBPAGES...&lt;br /&gt;
# Pages within activity modules should call navmenu() to generate the appropriate navigation menu.&lt;br /&gt;
&lt;br /&gt;
==== Page layout ====&lt;br /&gt;
# Print headings with print_heading, use the CSS hooks for IDs and Classes&lt;br /&gt;
# Print boxes around text using print_simple_box, use the CSS hooks for IDs and Classes (TODO: Advice usage of boxes in UI design context, is there an unwritten rule when to use them?)&lt;br /&gt;
&lt;br /&gt;
== Page types == &lt;br /&gt;
&lt;br /&gt;
TODO: see [[Development_talk:Page_structure_and_types]]&lt;br /&gt;
&lt;br /&gt;
== Who controls what? ==&lt;br /&gt;
&lt;br /&gt;
(TODO: Perhaps move this section to moodle site structure or on a page of its own?)&lt;br /&gt;
=== Teachers ===&lt;br /&gt;
As a metaphor from physical education world, a course is an independent playground for a teacher. This is where they communicate to students the essence of the course. &lt;br /&gt;
&lt;br /&gt;
The means for teachers to do this in Moodle are:&lt;br /&gt;
* in the center column of the content area (course index, containing mostly links to activity modules), and &lt;br /&gt;
* in the side columnd (blocks  and course-specific features such as the question bank, grades, and course-specific roles). &lt;br /&gt;
&lt;br /&gt;
The goals teachers have doing this, i.e. what it means to communicate a course&#039;s essence: &lt;br /&gt;
* Communicate what is expected of students&lt;br /&gt;
* Communicate the overall contents of the course (curriculum)&lt;br /&gt;
* The course itself: Give means/tools for students to learn (as described by social constructionism)&lt;br /&gt;
&lt;br /&gt;
=== Students ===&lt;br /&gt;
&lt;br /&gt;
Interact mainly with the activity modules placed in a course by a teacher.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[Developement:How_Moodle_outputs_HTML]]&lt;br /&gt;
* [[Navigation_block]]&lt;br /&gt;
* [[Moodle_2.0_release_notes#Navigation]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Moodle User Interface Guidelines]]&lt;/div&gt;</summary>
		<author><name>Pilpi</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Moodle_User_Interface_Guidelines&amp;diff=15065</id>
		<title>Moodle User Interface Guidelines</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Moodle_User_Interface_Guidelines&amp;diff=15065"/>
		<updated>2010-05-15T15:05:01Z</updated>

		<summary type="html">&lt;p&gt;Pilpi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: these guidelines were produced as part of a student project in 2009, and are not official Moodle guidelines. &lt;br /&gt;
&lt;br /&gt;
In fact, many of the pages below are currently incomplete or obsolete.  They still need a lot of work to be regarded as useful and authoritative guidelines.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
These guidelines are to be used as a &#039;&#039;&#039;UI reference library&#039;&#039;&#039; by Moodle developers when creating user interfaces. &lt;br /&gt;
&lt;br /&gt;
It does not catalogue all the elements in use in Moodle, but is intended a reference of reusable elements sharing that common Moodle style. We aim to update this reference as new common practices appear. [[Moodle User Interface Guidelines:Introduction|More...]]&lt;br /&gt;
* [[Moodle User Interface Guidelines:Help requested|Help requested: comment on these guidelines]]&lt;br /&gt;
&lt;br /&gt;
==Moodle basics==&lt;br /&gt;
* [[Page structure and types|Page structure and different page types]]&lt;br /&gt;
* [[Roles and capabilities]]&lt;br /&gt;
* [[Groups]]&lt;br /&gt;
&lt;br /&gt;
==Moodle UI library==&lt;br /&gt;
UIs are built of Elements and Interaction Styles (bigger wholes, which are built of Elements).&lt;br /&gt;
=== Elements ===&lt;br /&gt;
* [[Big Select List|Big Select List]]&lt;br /&gt;
&lt;br /&gt;
* [[Tooltip|Tooltip]]&lt;br /&gt;
* [[Link|Link]]&lt;br /&gt;
* [[Button|Button]]&lt;br /&gt;
* [[Address Bar|Address Bar]] (URLs)&lt;br /&gt;
&lt;br /&gt;
=== Interaction Styles ===&lt;br /&gt;
* [[Wizard|Wizard]]&lt;br /&gt;
* [[Help Popups|Help Popups]] (See [[Interface_guidelines#Linking_to_help|Linking to help]] for now)&lt;br /&gt;
* [[Feedback page|Feedback page]]&lt;br /&gt;
* [[Form|Form]] (incomplete)&lt;br /&gt;
** [[Radio button|Radio button]]&lt;br /&gt;
** [[Checkbox|Checkbox]]&lt;br /&gt;
** [[Dropdown Lists|Dropdown lists]] (incomplete)&lt;br /&gt;
&lt;br /&gt;
== General design guidelines ==&lt;br /&gt;
* [[Progressive Disclosure|Progressive Disclosure]]&lt;br /&gt;
* [[User Data Always Safe|User Data Always (Always) Safe]] &lt;br /&gt;
* [[Feedback (User Interface Guideline)|Feedback]] (Incomplete)&lt;br /&gt;
=== Relevant guidelines from other sites ===&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-people.html.en Design for People]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-broad-userbase.html.en Don&#039;t Limit Your User Base]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-match.html.en Create a Match Between Your Application and the Real World]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-consistency.html.en Make Your Application Consistent]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-feedback.html.en Keep the User Informed]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-simplicity.html.en Keep It Simple and Pretty]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-user-control.html.en Put the User in Control]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-forgiveness.html.en Forgive the User]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-direct-manipulation.html.en Provide Direct Manipulation]&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* Further development on Talk page: [[Development_talk:Moodle_User_Interface_Guidelines]]&lt;br /&gt;
* &#039;&#039;&#039;[[Using Moodle book]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Usability in Moodle ===&lt;br /&gt;
* [[Usability|Usability]]&lt;br /&gt;
* [[Usability_FAQ|Usability FAQ]]&lt;br /&gt;
&lt;br /&gt;
=== Implementation advice ===&lt;br /&gt;
* [[Developer_documentation|Developer documentation]]&lt;br /&gt;
* UI coding: [[Interface_guidelines]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:User Interface Guidelines]]&lt;br /&gt;
[[Category:Developer tools|User Interface Guidelines]]&lt;br /&gt;
[[Category:Usability|User Interface Guidelines]]&lt;br /&gt;
[[Category:Moodle User Interface Guidelines]]&lt;/div&gt;</summary>
		<author><name>Pilpi</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Moodle_User_Interface_Guidelines&amp;diff=15064</id>
		<title>Moodle User Interface Guidelines</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Moodle_User_Interface_Guidelines&amp;diff=15064"/>
		<updated>2010-05-15T15:04:34Z</updated>

		<summary type="html">&lt;p&gt;Pilpi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: these guidelines were produced as part of a student project in 2009, and are not official Moodle guidelines. &lt;br /&gt;
&lt;br /&gt;
In fact, many of the pages below are currently incomplete or obsolete.  They still need a lot of work to be regarded as useful and authoritative guidelines.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
These guidelines are to be used as a &#039;&#039;&#039;UI reference library&#039;&#039;&#039; by Moodle developers when creating user interfaces. &lt;br /&gt;
&lt;br /&gt;
It does not catalogue all the elements in use in Moodle, but is intended a reference of reusable elements sharing that common Moodle style. We aim to update this reference as new common practices appear. [[Moodle User Interface Guidelines:Introduction|More...]]&lt;br /&gt;
* [[Moodle User Interface Guidelines:Help requested|Help requested: comment on these guidelines]]&lt;br /&gt;
&lt;br /&gt;
The guidelines are also available at [[Category:Moodle_User_Interface_Guidelines]]&lt;br /&gt;
&lt;br /&gt;
==Moodle basics==&lt;br /&gt;
* [[Page structure and types|Page structure and different page types]]&lt;br /&gt;
* [[Roles and capabilities]]&lt;br /&gt;
* [[Groups]]&lt;br /&gt;
&lt;br /&gt;
==Moodle UI library==&lt;br /&gt;
UIs are built of Elements and Interaction Styles (bigger wholes, which are built of Elements).&lt;br /&gt;
=== Elements ===&lt;br /&gt;
* [[Big Select List|Big Select List]]&lt;br /&gt;
&lt;br /&gt;
* [[Tooltip|Tooltip]]&lt;br /&gt;
* [[Link|Link]]&lt;br /&gt;
* [[Button|Button]]&lt;br /&gt;
* [[Address Bar|Address Bar]] (URLs)&lt;br /&gt;
&lt;br /&gt;
=== Interaction Styles ===&lt;br /&gt;
* [[Wizard|Wizard]]&lt;br /&gt;
* [[Help Popups|Help Popups]] (See [[Interface_guidelines#Linking_to_help|Linking to help]] for now)&lt;br /&gt;
* [[Feedback page|Feedback page]]&lt;br /&gt;
* [[Form|Form]] (incomplete)&lt;br /&gt;
** [[Radio button|Radio button]]&lt;br /&gt;
** [[Checkbox|Checkbox]]&lt;br /&gt;
** [[Dropdown Lists|Dropdown lists]] (incomplete)&lt;br /&gt;
&lt;br /&gt;
== General design guidelines ==&lt;br /&gt;
* [[Progressive Disclosure|Progressive Disclosure]]&lt;br /&gt;
* [[User Data Always Safe|User Data Always (Always) Safe]] &lt;br /&gt;
* [[Feedback (User Interface Guideline)|Feedback]] (Incomplete)&lt;br /&gt;
=== Relevant guidelines from other sites ===&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-people.html.en Design for People]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-broad-userbase.html.en Don&#039;t Limit Your User Base]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-match.html.en Create a Match Between Your Application and the Real World]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-consistency.html.en Make Your Application Consistent]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-feedback.html.en Keep the User Informed]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-simplicity.html.en Keep It Simple and Pretty]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-user-control.html.en Put the User in Control]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-forgiveness.html.en Forgive the User]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-direct-manipulation.html.en Provide Direct Manipulation]&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* Further development on Talk page: [[Development_talk:Moodle_User_Interface_Guidelines]]&lt;br /&gt;
* &#039;&#039;&#039;[[Using Moodle book]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Usability in Moodle ===&lt;br /&gt;
* [[Usability|Usability]]&lt;br /&gt;
* [[Usability_FAQ|Usability FAQ]]&lt;br /&gt;
&lt;br /&gt;
=== Implementation advice ===&lt;br /&gt;
* [[Developer_documentation|Developer documentation]]&lt;br /&gt;
* UI coding: [[Interface_guidelines]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:User Interface Guidelines]]&lt;br /&gt;
[[Category:Developer tools|User Interface Guidelines]]&lt;br /&gt;
[[Category:Usability|User Interface Guidelines]]&lt;br /&gt;
[[Category:Moodle User Interface Guidelines]]&lt;/div&gt;</summary>
		<author><name>Pilpi</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Moodle_User_Interface_Guidelines&amp;diff=15063</id>
		<title>Moodle User Interface Guidelines</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Moodle_User_Interface_Guidelines&amp;diff=15063"/>
		<updated>2010-05-15T15:02:12Z</updated>

		<summary type="html">&lt;p&gt;Pilpi: /* See also */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: these guidelines were produced as part of a student project in 2009, and are not official Moodle guidelines. &lt;br /&gt;
&lt;br /&gt;
In fact, many of the pages below are currently incomplete or obsolete.  They still need a lot of work to be regarded as useful and authoritative guidelines.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
These guidelines are to be used as a &#039;&#039;&#039;UI reference library&#039;&#039;&#039; by Moodle developers when creating user interfaces. &lt;br /&gt;
&lt;br /&gt;
It does not catalogue all the elements in use in Moodle, but is intended a reference of reusable elements sharing that common Moodle style. We aim to update this reference as new common practices appear. [[Moodle User Interface Guidelines:Introduction|More...]]&lt;br /&gt;
* [[Moodle User Interface Guidelines:Help requested|Help requested: comment on these guidelines]]&lt;br /&gt;
&lt;br /&gt;
==Moodle basics==&lt;br /&gt;
* [[Page structure and types|Page structure and different page types]]&lt;br /&gt;
* [[Roles and capabilities]]&lt;br /&gt;
* [[Groups]]&lt;br /&gt;
&lt;br /&gt;
==Moodle UI library==&lt;br /&gt;
UIs are built of Elements and Interaction Styles (bigger wholes, which are built of Elements).&lt;br /&gt;
=== Elements ===&lt;br /&gt;
* [[Big Select List|Big Select List]]&lt;br /&gt;
&lt;br /&gt;
* [[Tooltip|Tooltip]]&lt;br /&gt;
* [[Link|Link]]&lt;br /&gt;
* [[Button|Button]]&lt;br /&gt;
* [[Address Bar|Address Bar]] (URLs)&lt;br /&gt;
&lt;br /&gt;
=== Interaction Styles ===&lt;br /&gt;
* [[Wizard|Wizard]]&lt;br /&gt;
* [[Help Popups|Help Popups]] (See [[Interface_guidelines#Linking_to_help|Linking to help]] for now)&lt;br /&gt;
* [[Feedback page|Feedback page]]&lt;br /&gt;
* [[Form|Form]] (incomplete)&lt;br /&gt;
** [[Radio button|Radio button]]&lt;br /&gt;
** [[Checkbox|Checkbox]]&lt;br /&gt;
** [[Dropdown Lists|Dropdown lists]] (incomplete)&lt;br /&gt;
&lt;br /&gt;
== General design guidelines ==&lt;br /&gt;
* [[Progressive Disclosure|Progressive Disclosure]]&lt;br /&gt;
* [[User Data Always Safe|User Data Always (Always) Safe]] &lt;br /&gt;
* [[Feedback (User Interface Guideline)|Feedback]] (Incomplete)&lt;br /&gt;
=== Relevant guidelines from other sites ===&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-people.html.en Design for People]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-broad-userbase.html.en Don&#039;t Limit Your User Base]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-match.html.en Create a Match Between Your Application and the Real World]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-consistency.html.en Make Your Application Consistent]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-feedback.html.en Keep the User Informed]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-simplicity.html.en Keep It Simple and Pretty]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-user-control.html.en Put the User in Control]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-forgiveness.html.en Forgive the User]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-direct-manipulation.html.en Provide Direct Manipulation]&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* Further development on Talk page: [[Development_talk:Moodle_User_Interface_Guidelines]]&lt;br /&gt;
* &#039;&#039;&#039;[[Using Moodle book]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Usability in Moodle ===&lt;br /&gt;
* [[Usability|Usability]]&lt;br /&gt;
* [[Usability_FAQ|Usability FAQ]]&lt;br /&gt;
&lt;br /&gt;
=== Implementation advice ===&lt;br /&gt;
* [[Developer_documentation|Developer documentation]]&lt;br /&gt;
* UI coding: [[Interface_guidelines]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:User Interface Guidelines]]&lt;br /&gt;
[[Category:Developer tools|User Interface Guidelines]]&lt;br /&gt;
[[Category:Usability|User Interface Guidelines]]&lt;br /&gt;
[[Category:Moodle User Interface Guidelines]]&lt;/div&gt;</summary>
		<author><name>Pilpi</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Talk:Moodle_User_Interface_Guidelines&amp;diff=28417</id>
		<title>Talk:Moodle User Interface Guidelines</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Talk:Moodle_User_Interface_Guidelines&amp;diff=28417"/>
		<updated>2010-05-15T14:53:27Z</updated>

		<summary type="html">&lt;p&gt;Pilpi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Missing guidelines ==&lt;br /&gt;
&lt;br /&gt;
=== Unwritten guidelines ===&lt;br /&gt;
* Moodle basics&lt;br /&gt;
** Hierarchy of a Moodle site ([http://moodle.org/mod/forum/discuss.php?d=115620 one attempt])&lt;br /&gt;
* Building blocks&lt;br /&gt;
* Hierarchy Browsing List&lt;br /&gt;
** [[Course Format|Course Format]]&lt;br /&gt;
** Block (not a technical guide but a guideline how what to take into account when using a block as a part of a design) &lt;br /&gt;
** Filter &lt;br /&gt;
** Module (not a technical guide but a guideline how what to take into account when using a module as a part of a design)&lt;br /&gt;
* Dialog&lt;br /&gt;
* Popup Window&lt;br /&gt;
* Link lists (menus)&lt;br /&gt;
* [[Page Heading|Page Heading]]&lt;br /&gt;
&lt;br /&gt;
=== Proposed elements ===&lt;br /&gt;
We will probably need a process to get these accepted across the community&lt;br /&gt;
* [http://uipatternfactory.com/p=edit-in-place/ Edit-in-place] ([http://www.google.fi/search?q=inplace+editing+ui+pattern more patterns])&lt;br /&gt;
&lt;br /&gt;
=== Guidelines that require further research/discussion ===&lt;br /&gt;
&#039;&#039;&#039;[[Major usability issues in Moodle]] (separate design projects)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
These are plans to create new interaction styles, switch existing conventions for more usable ones, or issues that are still unclear and need to be further discussed to become actual guidelines.&lt;br /&gt;
&lt;br /&gt;
* [[Switch Button|Switch Button]]&lt;br /&gt;
* [[Add element|Add element]]&lt;br /&gt;
* [[Jump Navigation|Jump Navigation]]&lt;br /&gt;
* Move Element (Course front page model vs. quiz)&lt;br /&gt;
* Quick Inline Help ([http://www.pilpi.net/software/moodle/2009/06/18/inline-help/] for now)&lt;br /&gt;
* Further research required: Search&lt;br /&gt;
* Further research required: Editing modes&lt;br /&gt;
* Further research required: Data Listing&lt;br /&gt;
* Waiting for developments of Navigation 2.0: Tabs&lt;br /&gt;
* Command Popup Menu&lt;br /&gt;
&lt;br /&gt;
== Todo ==&lt;br /&gt;
* [[Moodle User Interface Guidelines:Problem-Solution Summary Table|Problem-Solution Summary Table]] (See [http://www.hillside.net/index.php/a-pattern-language-for-pattern-writing#E.1.1])&lt;br /&gt;
* [[Moodle User Interface Guidelines:Glossary|Glossary]] (See [http://www.hillside.net/index.php/a-pattern-language-for-pattern-writing#E.5])&lt;br /&gt;
&lt;br /&gt;
--[[User:Olli Savolainen|Olli Savolainen]] 14:43, 15 May 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>Pilpi</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Moodle_User_Interface_Guidelines&amp;diff=15062</id>
		<title>Moodle User Interface Guidelines</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Moodle_User_Interface_Guidelines&amp;diff=15062"/>
		<updated>2010-05-15T14:53:07Z</updated>

		<summary type="html">&lt;p&gt;Pilpi: /* Elements */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: these guidelines were produced as part of a student project in 2009, and are not official Moodle guidelines. &lt;br /&gt;
&lt;br /&gt;
In fact, many of the pages below are currently incomplete or obsolete.  They still need a lot of work to be regarded as useful and authoritative guidelines.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
These guidelines are to be used as a &#039;&#039;&#039;UI reference library&#039;&#039;&#039; by Moodle developers when creating user interfaces. &lt;br /&gt;
&lt;br /&gt;
It does not catalogue all the elements in use in Moodle, but is intended a reference of reusable elements sharing that common Moodle style. We aim to update this reference as new common practices appear. [[Moodle User Interface Guidelines:Introduction|More...]]&lt;br /&gt;
* [[Moodle User Interface Guidelines:Help requested|Help requested: comment on these guidelines]]&lt;br /&gt;
&lt;br /&gt;
==Moodle basics==&lt;br /&gt;
* [[Page structure and types|Page structure and different page types]]&lt;br /&gt;
* [[Roles and capabilities]]&lt;br /&gt;
* [[Groups]]&lt;br /&gt;
&lt;br /&gt;
==Moodle UI library==&lt;br /&gt;
UIs are built of Elements and Interaction Styles (bigger wholes, which are built of Elements).&lt;br /&gt;
=== Elements ===&lt;br /&gt;
* [[Big Select List|Big Select List]]&lt;br /&gt;
&lt;br /&gt;
* [[Tooltip|Tooltip]]&lt;br /&gt;
* [[Link|Link]]&lt;br /&gt;
* [[Button|Button]]&lt;br /&gt;
* [[Address Bar|Address Bar]] (URLs)&lt;br /&gt;
&lt;br /&gt;
=== Interaction Styles ===&lt;br /&gt;
* [[Wizard|Wizard]]&lt;br /&gt;
* [[Help Popups|Help Popups]] (See [[Interface_guidelines#Linking_to_help|Linking to help]] for now)&lt;br /&gt;
* [[Feedback page|Feedback page]]&lt;br /&gt;
* [[Form|Form]] (incomplete)&lt;br /&gt;
** [[Radio button|Radio button]]&lt;br /&gt;
** [[Checkbox|Checkbox]]&lt;br /&gt;
** [[Dropdown Lists|Dropdown lists]] (incomplete)&lt;br /&gt;
&lt;br /&gt;
== General design guidelines ==&lt;br /&gt;
* [[Progressive Disclosure|Progressive Disclosure]]&lt;br /&gt;
* [[User Data Always Safe|User Data Always (Always) Safe]] &lt;br /&gt;
* [[Feedback (User Interface Guideline)|Feedback]] (Incomplete)&lt;br /&gt;
=== Relevant guidelines from other sites ===&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-people.html.en Design for People]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-broad-userbase.html.en Don&#039;t Limit Your User Base]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-match.html.en Create a Match Between Your Application and the Real World]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-consistency.html.en Make Your Application Consistent]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-feedback.html.en Keep the User Informed]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-simplicity.html.en Keep It Simple and Pretty]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-user-control.html.en Put the User in Control]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-forgiveness.html.en Forgive the User]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-direct-manipulation.html.en Provide Direct Manipulation]&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
Talk page: [[Development_talk:Moodle_User_Interface_Guidelines]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Using Moodle book]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Usability in Moodle ===&lt;br /&gt;
* [[Usability|Usability]]&lt;br /&gt;
* [[Usability_FAQ|Usability FAQ]]&lt;br /&gt;
&lt;br /&gt;
=== Implementation advice ===&lt;br /&gt;
* [[Developer_documentation|Developer documentation]]&lt;br /&gt;
* UI coding: [[Interface_guidelines]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:User Interface Guidelines]]&lt;br /&gt;
[[Category:Developer tools|User Interface Guidelines]]&lt;br /&gt;
[[Category:Usability|User Interface Guidelines]]&lt;br /&gt;
[[Category:Moodle User Interface Guidelines]]&lt;/div&gt;</summary>
		<author><name>Pilpi</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Talk:Moodle_User_Interface_Guidelines&amp;diff=28416</id>
		<title>Talk:Moodle User Interface Guidelines</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Talk:Moodle_User_Interface_Guidelines&amp;diff=28416"/>
		<updated>2010-05-15T14:52:50Z</updated>

		<summary type="html">&lt;p&gt;Pilpi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Missing guidelines ==&lt;br /&gt;
&lt;br /&gt;
=== Unwritten guidelines ===&lt;br /&gt;
* Moodle basics&lt;br /&gt;
** Hierarchy of a Moodle site ([http://moodle.org/mod/forum/discuss.php?d=115620 one attempt])&lt;br /&gt;
* Building blocks&lt;br /&gt;
** [[Course Format|Course Format]]&lt;br /&gt;
** Block (not a technical guide but a guideline how what to take into account when using a block as a part of a design) &lt;br /&gt;
** Filter &lt;br /&gt;
** Module (not a technical guide but a guideline how what to take into account when using a module as a part of a design)&lt;br /&gt;
* Dialog&lt;br /&gt;
* Popup Window&lt;br /&gt;
* Link lists (menus)&lt;br /&gt;
* [[Page Heading|Page Heading]]&lt;br /&gt;
&lt;br /&gt;
=== Proposed elements ===&lt;br /&gt;
We will probably need a process to get these accepted across the community&lt;br /&gt;
* [http://uipatternfactory.com/p=edit-in-place/ Edit-in-place] ([http://www.google.fi/search?q=inplace+editing+ui+pattern more patterns])&lt;br /&gt;
&lt;br /&gt;
=== Guidelines that require further research/discussion ===&lt;br /&gt;
&#039;&#039;&#039;[[Major usability issues in Moodle]] (separate design projects)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
These are plans to create new interaction styles, switch existing conventions for more usable ones, or issues that are still unclear and need to be further discussed to become actual guidelines.&lt;br /&gt;
&lt;br /&gt;
* [[Switch Button|Switch Button]]&lt;br /&gt;
* [[Add element|Add element]]&lt;br /&gt;
* [[Jump Navigation|Jump Navigation]]&lt;br /&gt;
* Move Element (Course front page model vs. quiz)&lt;br /&gt;
* Quick Inline Help ([http://www.pilpi.net/software/moodle/2009/06/18/inline-help/] for now)&lt;br /&gt;
* Further research required: Search&lt;br /&gt;
* Further research required: Editing modes&lt;br /&gt;
* Further research required: Data Listing&lt;br /&gt;
* Waiting for developments of Navigation 2.0: Tabs&lt;br /&gt;
* Command Popup Menu&lt;br /&gt;
&lt;br /&gt;
== Todo ==&lt;br /&gt;
* [[Moodle User Interface Guidelines:Problem-Solution Summary Table|Problem-Solution Summary Table]] (See [http://www.hillside.net/index.php/a-pattern-language-for-pattern-writing#E.1.1])&lt;br /&gt;
* [[Moodle User Interface Guidelines:Glossary|Glossary]] (See [http://www.hillside.net/index.php/a-pattern-language-for-pattern-writing#E.5])&lt;br /&gt;
&lt;br /&gt;
--[[User:Olli Savolainen|Olli Savolainen]] 14:43, 15 May 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>Pilpi</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Moodle_User_Interface_Guidelines&amp;diff=15061</id>
		<title>Moodle User Interface Guidelines</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Moodle_User_Interface_Guidelines&amp;diff=15061"/>
		<updated>2010-05-15T14:52:26Z</updated>

		<summary type="html">&lt;p&gt;Pilpi: /* Moodle basics */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: these guidelines were produced as part of a student project in 2009, and are not official Moodle guidelines. &lt;br /&gt;
&lt;br /&gt;
In fact, many of the pages below are currently incomplete or obsolete.  They still need a lot of work to be regarded as useful and authoritative guidelines.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
These guidelines are to be used as a &#039;&#039;&#039;UI reference library&#039;&#039;&#039; by Moodle developers when creating user interfaces. &lt;br /&gt;
&lt;br /&gt;
It does not catalogue all the elements in use in Moodle, but is intended a reference of reusable elements sharing that common Moodle style. We aim to update this reference as new common practices appear. [[Moodle User Interface Guidelines:Introduction|More...]]&lt;br /&gt;
* [[Moodle User Interface Guidelines:Help requested|Help requested: comment on these guidelines]]&lt;br /&gt;
&lt;br /&gt;
==Moodle basics==&lt;br /&gt;
* [[Page structure and types|Page structure and different page types]]&lt;br /&gt;
* [[Roles and capabilities]]&lt;br /&gt;
* [[Groups]]&lt;br /&gt;
&lt;br /&gt;
==Moodle UI library==&lt;br /&gt;
UIs are built of Elements and Interaction Styles (bigger wholes, which are built of Elements).&lt;br /&gt;
=== Elements ===&lt;br /&gt;
* [[Big Select List|Big Select List]]&lt;br /&gt;
* Hierarchy Browsing List&lt;br /&gt;
&lt;br /&gt;
* [[Tooltip|Tooltip]]&lt;br /&gt;
* [[Link|Link]]&lt;br /&gt;
* [[Button|Button]]&lt;br /&gt;
* [[Address Bar|Address Bar]] (URLs)&lt;br /&gt;
&lt;br /&gt;
=== Interaction Styles ===&lt;br /&gt;
* [[Wizard|Wizard]]&lt;br /&gt;
* [[Help Popups|Help Popups]] (See [[Interface_guidelines#Linking_to_help|Linking to help]] for now)&lt;br /&gt;
* [[Feedback page|Feedback page]]&lt;br /&gt;
* [[Form|Form]] (incomplete)&lt;br /&gt;
** [[Radio button|Radio button]]&lt;br /&gt;
** [[Checkbox|Checkbox]]&lt;br /&gt;
** [[Dropdown Lists|Dropdown lists]] (incomplete)&lt;br /&gt;
&lt;br /&gt;
== General design guidelines ==&lt;br /&gt;
* [[Progressive Disclosure|Progressive Disclosure]]&lt;br /&gt;
* [[User Data Always Safe|User Data Always (Always) Safe]] &lt;br /&gt;
* [[Feedback (User Interface Guideline)|Feedback]] (Incomplete)&lt;br /&gt;
=== Relevant guidelines from other sites ===&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-people.html.en Design for People]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-broad-userbase.html.en Don&#039;t Limit Your User Base]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-match.html.en Create a Match Between Your Application and the Real World]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-consistency.html.en Make Your Application Consistent]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-feedback.html.en Keep the User Informed]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-simplicity.html.en Keep It Simple and Pretty]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-user-control.html.en Put the User in Control]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-forgiveness.html.en Forgive the User]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-direct-manipulation.html.en Provide Direct Manipulation]&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
Talk page: [[Development_talk:Moodle_User_Interface_Guidelines]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Using Moodle book]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Usability in Moodle ===&lt;br /&gt;
* [[Usability|Usability]]&lt;br /&gt;
* [[Usability_FAQ|Usability FAQ]]&lt;br /&gt;
&lt;br /&gt;
=== Implementation advice ===&lt;br /&gt;
* [[Developer_documentation|Developer documentation]]&lt;br /&gt;
* UI coding: [[Interface_guidelines]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:User Interface Guidelines]]&lt;br /&gt;
[[Category:Developer tools|User Interface Guidelines]]&lt;br /&gt;
[[Category:Usability|User Interface Guidelines]]&lt;br /&gt;
[[Category:Moodle User Interface Guidelines]]&lt;/div&gt;</summary>
		<author><name>Pilpi</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Page_structure_and_types&amp;diff=15269</id>
		<title>Page structure and types</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Page_structure_and_types&amp;diff=15269"/>
		<updated>2010-05-15T14:51:52Z</updated>

		<summary type="html">&lt;p&gt;Pilpi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[ Moodle User Interface Guidelines|Moodle User Interface Guidelines]] &amp;gt; &#039;&#039;&#039;Page structure and types&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Work in progress|forumurl=http://moodle.org/mod/forum/discuss.php?d=126884|info=&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&#039;&#039;&#039;This is a guideline template for a [[Moodle_User_Interface_Guidelines|Moodle Interface Guideline]]. Comments: [http://moodle.org/mod/forum/discuss.php?d=126884 developer forum thread] &#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
This page describes the structure of different types of Moodle pages, using the default theme &#039;standard&#039; as an example. Much of what is described here can be changed in a custom theme ([[#See also|See also]]).&lt;br /&gt;
&lt;br /&gt;
== Basic page structure ==&lt;br /&gt;
[[Image:basic-page-structure.png||Image 1: Basic page structure]]&lt;br /&gt;
&lt;br /&gt;
Most Moodle pages are divided in four parts:  Header, Navigation bar, Main content area and Footer.&lt;br /&gt;
&lt;br /&gt;
=== Header ===&lt;br /&gt;
In addition to the main heading of the page, the header also has another area for content defined (right aligned in the above image). Depending on the page, the content of this area is either a navigation menu or the user login info. &lt;br /&gt;
&lt;br /&gt;
=== Navigation bar ===&lt;br /&gt;
&lt;br /&gt;
The navigation bar contains a breadcrumb menu. Additionally, it has an element (right aligned in the above image), the contents of which depend on the page and often on the permissions the user viewing the page has.&lt;br /&gt;
&lt;br /&gt;
=== Main content area ===&lt;br /&gt;
&lt;br /&gt;
In addition to the actual content of the page, this area can contain [[Blocks|blocks]] in the left and right columns.&lt;br /&gt;
&lt;br /&gt;
The content of the page in the middle is controlled by the teacher. &lt;br /&gt;
* Teacher(s) can add and edit the actual content, &lt;br /&gt;
* The overall sequencing and organization of the content is controlled by the selected [[Course Format|Course Format]].&lt;br /&gt;
&lt;br /&gt;
=== Footer ===&lt;br /&gt;
&lt;br /&gt;
The footer contains a link to the documentation wiki for the page in question, login info, and a link (with the appearance roughly of a button) to go higher up in the hierarchy of the Moodle site.&lt;br /&gt;
&lt;br /&gt;
=== Implementation ===&lt;br /&gt;
Note: May be obsolete from Moodle 2.0 onwards.&lt;br /&gt;
&lt;br /&gt;
# All pages should call print_header, and supply a standard navigation path to be displayed in it. Where possible, it should look like: COURSE &amp;gt;&amp;gt; INDEX &amp;gt;&amp;gt; INSTANCE &amp;gt;&amp;gt; SUBPAGES...&lt;br /&gt;
# Pages within activity modules should call navmenu() to generate the appropriate navigation menu.&lt;br /&gt;
# All pages should call print_header, and supply a standard navigation path to be displayed in it. Where possible, it should look like: COURSE &amp;gt;&amp;gt; INDEX &amp;gt;&amp;gt; INSTANCE &amp;gt;&amp;gt; SUBPAGES...&lt;br /&gt;
# Pages within activity modules should call navmenu() to generate the appropriate navigation menu.&lt;br /&gt;
&lt;br /&gt;
==== Page layout ====&lt;br /&gt;
# Print headings with print_heading, use the CSS hooks for IDs and Classes&lt;br /&gt;
# Print boxes around text using print_simple_box, use the CSS hooks for IDs and Classes (TODO: Advice usage of boxes in UI design context, is there an unwritten rule when to use them?)&lt;br /&gt;
&lt;br /&gt;
== Page types == &lt;br /&gt;
&lt;br /&gt;
TODO: see [[Development_talk:Page_structure_and_types]]&lt;br /&gt;
&lt;br /&gt;
== Who controls what? ==&lt;br /&gt;
&lt;br /&gt;
(TODO: Perhaps move this section to moodle site structure or on a page of its own?)&lt;br /&gt;
=== Teachers ===&lt;br /&gt;
As a metaphor from physical education world, a course is an independent playground for a teacher. This is where they communicate to students the essence of the course. &lt;br /&gt;
&lt;br /&gt;
The means for teachers to do this in Moodle are:&lt;br /&gt;
* in the center column of the content area (course index, containing mostly links to activity modules), and &lt;br /&gt;
* in the side columnd (blocks  and course-specific features such as the question bank, grades, and course-specific roles). &lt;br /&gt;
&lt;br /&gt;
The goals teachers have doing this, i.e. what it means to communicate a course&#039;s essence: &lt;br /&gt;
* Communicate what is expected of students&lt;br /&gt;
* Communicate the overall contents of the course (curriculum)&lt;br /&gt;
* The course itself: Give means/tools for students to learn (as described by social constructionism)&lt;br /&gt;
&lt;br /&gt;
=== Students ===&lt;br /&gt;
&lt;br /&gt;
Interact mainly with the activity modules placed in a course by a teacher.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[Developement:How_Moodle_outputs_HTML]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Moodle User Interface Guidelines]]&lt;/div&gt;</summary>
		<author><name>Pilpi</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Talk:Page_structure_and_types&amp;diff=28418</id>
		<title>Talk:Page structure and types</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Talk:Page_structure_and_types&amp;diff=28418"/>
		<updated>2010-05-15T14:51:05Z</updated>

		<summary type="html">&lt;p&gt;Pilpi: New page:  == Page types ==   In progress: Once Moodle 2.0 is clearer, can be continued.  TODO: This &amp;lt;s&amp;gt;should correspond&amp;lt;/s&amp;gt; to  [[Migrating_your_code_to_the_2.0_rendering_API#You_can_h...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Page types == &lt;br /&gt;
&lt;br /&gt;
In progress: Once Moodle 2.0 is clearer, can be continued.&lt;br /&gt;
&lt;br /&gt;
TODO: This &amp;lt;s&amp;gt;should correspond&amp;lt;/s&amp;gt; to  [[Migrating_your_code_to_the_2.0_rendering_API#You_can_have_different_layout.php_files_for_different_page]]. &#039;&#039;&#039;Actually,&#039;&#039;&#039; the page types of a hig should describe the different page types that offer differing kinds of interaction. The relationship between a technical page type to the interaction page types is probably N to 1.&lt;br /&gt;
&lt;br /&gt;
 * Editing page&lt;br /&gt;
 * Site configuration page&lt;br /&gt;
 * Module configuration page (Update this xxx)&lt;br /&gt;
 * Organizing page&lt;br /&gt;
 * Teacher content page&lt;br /&gt;
 * Application/module functionality page&lt;br /&gt;
 * Course page&lt;br /&gt;
 * Data listing page&lt;br /&gt;
 * Student content page&lt;br /&gt;
 * Content accumulating page (views to forums posts)&lt;br /&gt;
&lt;br /&gt;
 Hm, on some pages several of these many may apply?&lt;/div&gt;</summary>
		<author><name>Pilpi</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Page_structure_and_types&amp;diff=15268</id>
		<title>Page structure and types</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Page_structure_and_types&amp;diff=15268"/>
		<updated>2010-05-15T14:50:16Z</updated>

		<summary type="html">&lt;p&gt;Pilpi: /* Page types */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[ Moodle User Interface Guidelines|Moodle User Interface Guidelines]] &amp;gt; &#039;&#039;&#039;Page structure and types&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Work in progress|forumurl=http://moodle.org/mod/forum/discuss.php?d=126884|info=&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&#039;&#039;&#039;This is a guideline template for a [[Moodle_User_Interface_Guidelines|Moodle Interface Guideline]]. Comments: [http://moodle.org/mod/forum/discuss.php?d=126884 developer forum thread] &#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
This page describes the structure of different types of Moodle pages, using the default theme &#039;standard&#039; as an example. Much of what is described here can be changed in a custom theme ([[#See also|See also]]).&lt;br /&gt;
&lt;br /&gt;
== Basic page structure ==&lt;br /&gt;
[[Image:basic-page-structure.png||Image 1: Basic page structure]]&lt;br /&gt;
&lt;br /&gt;
Most Moodle pages are divided in four parts:  Header, Navigation bar, Main content area and Footer.&lt;br /&gt;
&lt;br /&gt;
=== Header ===&lt;br /&gt;
In addition to the main heading of the page, the header also has another area for content defined (right aligned in the above image). Depending on the page, the content of this area is either a navigation menu or the user login info. &lt;br /&gt;
&lt;br /&gt;
=== Navigation bar ===&lt;br /&gt;
&lt;br /&gt;
The navigation bar contains a breadcrumb menu. Additionally, it has an element (right aligned in the above image), the contents of which depend on the page and often on the permissions the user viewing the page has.&lt;br /&gt;
&lt;br /&gt;
=== Main content area ===&lt;br /&gt;
&lt;br /&gt;
In addition to the actual content of the page, this area can contain [[Blocks|blocks]] in the left and right columns.&lt;br /&gt;
&lt;br /&gt;
The content of the page in the middle is controlled by the teacher. &lt;br /&gt;
* Teacher(s) can add and edit the actual content, &lt;br /&gt;
* The overall sequencing and organization of the content is controlled by the selected [[Course Format|Course Format]].&lt;br /&gt;
&lt;br /&gt;
=== Footer ===&lt;br /&gt;
&lt;br /&gt;
The footer contains a link to the documentation wiki for the page in question, login info, and a link (with the appearance roughly of a button) to go higher up in the hierarchy of the Moodle site.&lt;br /&gt;
&lt;br /&gt;
=== Implementation ===&lt;br /&gt;
Note: May be obsolete from Moodle 2.0 onwards.&lt;br /&gt;
&lt;br /&gt;
# All pages should call print_header, and supply a standard navigation path to be displayed in it. Where possible, it should look like: COURSE &amp;gt;&amp;gt; INDEX &amp;gt;&amp;gt; INSTANCE &amp;gt;&amp;gt; SUBPAGES...&lt;br /&gt;
# Pages within activity modules should call navmenu() to generate the appropriate navigation menu.&lt;br /&gt;
# All pages should call print_header, and supply a standard navigation path to be displayed in it. Where possible, it should look like: COURSE &amp;gt;&amp;gt; INDEX &amp;gt;&amp;gt; INSTANCE &amp;gt;&amp;gt; SUBPAGES...&lt;br /&gt;
# Pages within activity modules should call navmenu() to generate the appropriate navigation menu.&lt;br /&gt;
&lt;br /&gt;
==== Page layout ====&lt;br /&gt;
# Print headings with print_heading, use the CSS hooks for IDs and Classes&lt;br /&gt;
# Print boxes around text using print_simple_box, use the CSS hooks for IDs and Classes (TODO: Advice usage of boxes in UI design context, is there an unwritten rule when to use them?)&lt;br /&gt;
&lt;br /&gt;
== Page types == &lt;br /&gt;
&lt;br /&gt;
TODO: see [[Development_talk:Page_structure_and_types]]&lt;br /&gt;
&lt;br /&gt;
== Who controls what? ==&lt;br /&gt;
&lt;br /&gt;
(TODO: Perhaps move this section to moodle site structure or on a page of its own?)&lt;br /&gt;
=== Teachers ===&lt;br /&gt;
As a metaphor from physical education world, a course is an independent playground for a teacher. This is where they communicate to students the essence of the course. &lt;br /&gt;
&lt;br /&gt;
The means for teachers to do this in Moodle are:&lt;br /&gt;
* in the center column of the content area (course index, containing mostly links to activity modules), and &lt;br /&gt;
* in the side columnd (blocks  and course-specific features such as the question bank, grades, and course-specific roles). &lt;br /&gt;
&lt;br /&gt;
The goals teachers have doing this, i.e. what it means to communicate a course&#039;s essence: &lt;br /&gt;
* Communicate what is expected of students&lt;br /&gt;
* Communicate the overall contents of the course (curriculum)&lt;br /&gt;
* The course itself: Give means/tools for students to learn (as described by social constructionism)&lt;br /&gt;
&lt;br /&gt;
=== Students ===&lt;br /&gt;
&lt;br /&gt;
Interact mainly with the activity modules placed in a course by a teacher.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[Developement:How_Moodle_outputs_HTML]]&lt;/div&gt;</summary>
		<author><name>Pilpi</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Page_structure_and_types&amp;diff=15267</id>
		<title>Page structure and types</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Page_structure_and_types&amp;diff=15267"/>
		<updated>2010-05-15T14:49:11Z</updated>

		<summary type="html">&lt;p&gt;Pilpi: /* Implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[ Moodle User Interface Guidelines|Moodle User Interface Guidelines]] &amp;gt; &#039;&#039;&#039;Page structure and types&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Work in progress|forumurl=http://moodle.org/mod/forum/discuss.php?d=126884|info=&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&#039;&#039;&#039;This is a guideline template for a [[Moodle_User_Interface_Guidelines|Moodle Interface Guideline]]. Comments: [http://moodle.org/mod/forum/discuss.php?d=126884 developer forum thread] &#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
This page describes the structure of different types of Moodle pages, using the default theme &#039;standard&#039; as an example. Much of what is described here can be changed in a custom theme ([[#See also|See also]]).&lt;br /&gt;
&lt;br /&gt;
== Basic page structure ==&lt;br /&gt;
[[Image:basic-page-structure.png||Image 1: Basic page structure]]&lt;br /&gt;
&lt;br /&gt;
Most Moodle pages are divided in four parts:  Header, Navigation bar, Main content area and Footer.&lt;br /&gt;
&lt;br /&gt;
=== Header ===&lt;br /&gt;
In addition to the main heading of the page, the header also has another area for content defined (right aligned in the above image). Depending on the page, the content of this area is either a navigation menu or the user login info. &lt;br /&gt;
&lt;br /&gt;
=== Navigation bar ===&lt;br /&gt;
&lt;br /&gt;
The navigation bar contains a breadcrumb menu. Additionally, it has an element (right aligned in the above image), the contents of which depend on the page and often on the permissions the user viewing the page has.&lt;br /&gt;
&lt;br /&gt;
=== Main content area ===&lt;br /&gt;
&lt;br /&gt;
In addition to the actual content of the page, this area can contain [[Blocks|blocks]] in the left and right columns.&lt;br /&gt;
&lt;br /&gt;
The content of the page in the middle is controlled by the teacher. &lt;br /&gt;
* Teacher(s) can add and edit the actual content, &lt;br /&gt;
* The overall sequencing and organization of the content is controlled by the selected [[Course Format|Course Format]].&lt;br /&gt;
&lt;br /&gt;
=== Footer ===&lt;br /&gt;
&lt;br /&gt;
The footer contains a link to the documentation wiki for the page in question, login info, and a link (with the appearance roughly of a button) to go higher up in the hierarchy of the Moodle site.&lt;br /&gt;
&lt;br /&gt;
=== Implementation ===&lt;br /&gt;
Note: May be obsolete from Moodle 2.0 onwards.&lt;br /&gt;
&lt;br /&gt;
# All pages should call print_header, and supply a standard navigation path to be displayed in it. Where possible, it should look like: COURSE &amp;gt;&amp;gt; INDEX &amp;gt;&amp;gt; INSTANCE &amp;gt;&amp;gt; SUBPAGES...&lt;br /&gt;
# Pages within activity modules should call navmenu() to generate the appropriate navigation menu.&lt;br /&gt;
# All pages should call print_header, and supply a standard navigation path to be displayed in it. Where possible, it should look like: COURSE &amp;gt;&amp;gt; INDEX &amp;gt;&amp;gt; INSTANCE &amp;gt;&amp;gt; SUBPAGES...&lt;br /&gt;
# Pages within activity modules should call navmenu() to generate the appropriate navigation menu.&lt;br /&gt;
&lt;br /&gt;
==== Page layout ====&lt;br /&gt;
# Print headings with print_heading, use the CSS hooks for IDs and Classes&lt;br /&gt;
# Print boxes around text using print_simple_box, use the CSS hooks for IDs and Classes (TODO: Advice usage of boxes in UI design context, is there an unwritten rule when to use them?)&lt;br /&gt;
&lt;br /&gt;
== Page types == &lt;br /&gt;
&lt;br /&gt;
NOT FINAL TEXT, in progress. &lt;br /&gt;
&lt;br /&gt;
TODO: Think about if a page type specific visual hierarchy could be devised?&lt;br /&gt;
&lt;br /&gt;
TODO: This &amp;lt;s&amp;gt;should correspond&amp;lt;/s&amp;gt; to  [[Migrating_your_code_to_the_2.0_rendering_API#You_can_have_different_layout.php_files_for_different_page]]. &#039;&#039;&#039;Actually,&#039;&#039;&#039; the page types of a hig should describe the different page types that offer differing kinds of interaction. The relationship between a technical page type to the interaction page types is probably N to 1.&lt;br /&gt;
&lt;br /&gt;
 * Editing page&lt;br /&gt;
 * Site configuration page&lt;br /&gt;
 * Module configuration page (Update this xxx)&lt;br /&gt;
 * Organizing page&lt;br /&gt;
 * Teacher content page&lt;br /&gt;
 * Application/module functionality page&lt;br /&gt;
 * Course page&lt;br /&gt;
 * Data listing page&lt;br /&gt;
 * Student content page&lt;br /&gt;
 * Content accumulating page (views to forums posts)&lt;br /&gt;
&lt;br /&gt;
 Hm, on some pages several of these many may apply?&lt;br /&gt;
&lt;br /&gt;
== Who controls what? ==&lt;br /&gt;
&lt;br /&gt;
(TODO: Perhaps move this section to moodle site structure or on a page of its own?)&lt;br /&gt;
=== Teachers ===&lt;br /&gt;
As a metaphor from physical education world, a course is an independent playground for a teacher. This is where they communicate to students the essence of the course. &lt;br /&gt;
&lt;br /&gt;
The means for teachers to do this in Moodle are:&lt;br /&gt;
* in the center column of the content area (course index, containing mostly links to activity modules), and &lt;br /&gt;
* in the side columnd (blocks  and course-specific features such as the question bank, grades, and course-specific roles). &lt;br /&gt;
&lt;br /&gt;
The goals teachers have doing this, i.e. what it means to communicate a course&#039;s essence: &lt;br /&gt;
* Communicate what is expected of students&lt;br /&gt;
* Communicate the overall contents of the course (curriculum)&lt;br /&gt;
* The course itself: Give means/tools for students to learn (as described by social constructionism)&lt;br /&gt;
&lt;br /&gt;
=== Students ===&lt;br /&gt;
&lt;br /&gt;
Interact mainly with the activity modules placed in a course by a teacher.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[Developement:How_Moodle_outputs_HTML]]&lt;/div&gt;</summary>
		<author><name>Pilpi</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Interface_guidelines&amp;diff=1805</id>
		<title>Interface guidelines</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Interface_guidelines&amp;diff=1805"/>
		<updated>2010-05-15T14:46:45Z</updated>

		<summary type="html">&lt;p&gt;Pilpi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Work in progress}}&lt;br /&gt;
This document is not authoritative, it is a collection of ideas and under construction.&lt;br /&gt;
&lt;br /&gt;
==Keeping it simple==&lt;br /&gt;
&lt;br /&gt;
Use the minimum interface required to get the job done.&lt;br /&gt;
Order the elements by contexts. Give the user a strong orientation where the places are to do several things.&lt;br /&gt;
&lt;br /&gt;
==Standard pages==&lt;br /&gt;
&lt;br /&gt;
See [[Address_Bar|Address Bar/URL UI guideline]]&lt;br /&gt;
&lt;br /&gt;
==One script per major function/page==&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
==Page layout==&lt;br /&gt;
See: [[Page_structure_and_types#Implementation|Basic page _structure UI guideline]]&lt;br /&gt;
&lt;br /&gt;
The information that was here has been included there.&lt;br /&gt;
&lt;br /&gt;
==Form layout==&lt;br /&gt;
&lt;br /&gt;
See: [[Form|Form UI guideline]] &lt;br /&gt;
&lt;br /&gt;
==Dealing with tables==&lt;br /&gt;
&lt;br /&gt;
Use the print_table function whenever possible.&lt;br /&gt;
&lt;br /&gt;
==Standard navigation tools==&lt;br /&gt;
&lt;br /&gt;
See: &lt;br /&gt;
* [[Page_structure_and_types#Basic_page_structure|Basic page structure UI guideline]]&lt;br /&gt;
* [[Link|Link UI guideline]]&lt;br /&gt;
* [[Button|Button UI guideline]]&lt;br /&gt;
&lt;br /&gt;
The information that was here has been incorporated to those pages&lt;br /&gt;
&lt;br /&gt;
==URLs==&lt;br /&gt;
See [[Address_Bar|Address Bar UI guideline]]&lt;br /&gt;
&lt;br /&gt;
==Buttons vs links==&lt;br /&gt;
&lt;br /&gt;
See: [[Button]] and [[Link]] UI guidelines.&lt;br /&gt;
&lt;br /&gt;
The information that was here has been integrated to those documents.&lt;br /&gt;
&lt;br /&gt;
==Language strings==&lt;br /&gt;
&lt;br /&gt;
# Use your own language strings in a separate file. Don&#039;t use existing language files from moodle.php or other lang files. So translators can translate in the contexts in different ways as terms are used in the special learning culture.&lt;br /&gt;
&lt;br /&gt;
==CSS naming==&lt;br /&gt;
&lt;br /&gt;
* Don&#039;t add font, color or layout definitions in code. This belongs to CSS theme files.&lt;br /&gt;
* See [[Standards|theme standards]]&lt;br /&gt;
&lt;br /&gt;
==Linking to help==&lt;br /&gt;
&lt;br /&gt;
* Help buttons should be on the right of the thing (as an exception it can be left, if the thing is right-aligned)&lt;br /&gt;
&lt;br /&gt;
==Related topics==&lt;br /&gt;
&lt;br /&gt;
Robin Good&#039;s Latest News. &amp;quot;Interaction Design Meets Online Real Estate&amp;quot; 1 Mar. 2005 http://www.masternewmedia.org/news/2005/03/01/interaction_design_meets_online_real.htm&lt;br /&gt;
&lt;br /&gt;
The article presents a view of virtual spaces with the focus on human actions. It reminded me of communicative approaches like Moodle. The interface serves as the handle of all the communication tools.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
* [[Usability]]&lt;br /&gt;
* [[Moodle_User_Interface_Guidelines|Moodle User Interface Guidelines]] GSOC 2009 project&lt;br /&gt;
&lt;br /&gt;
[[Category:Coding guidelines|Interface]]&lt;br /&gt;
[[Category:Moodle User Interface Guidelines]]&lt;br /&gt;
&lt;br /&gt;
[[pt:Guia para interface]]&lt;br /&gt;
[[es:Manual de estilo de la interfaz]]&lt;br /&gt;
[[ja:インターフェースガイドライン]]&lt;/div&gt;</summary>
		<author><name>Pilpi</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Moodle_User_Interface_Guidelines&amp;diff=15060</id>
		<title>Moodle User Interface Guidelines</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Moodle_User_Interface_Guidelines&amp;diff=15060"/>
		<updated>2010-05-15T14:46:03Z</updated>

		<summary type="html">&lt;p&gt;Pilpi: /* Relevant guidelines from other sites */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: these guidelines were produced as part of a student project in 2009, and are not official Moodle guidelines. &lt;br /&gt;
&lt;br /&gt;
In fact, many of the pages below are currently incomplete or obsolete.  They still need a lot of work to be regarded as useful and authoritative guidelines.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
These guidelines are to be used as a &#039;&#039;&#039;UI reference library&#039;&#039;&#039; by Moodle developers when creating user interfaces. &lt;br /&gt;
&lt;br /&gt;
It does not catalogue all the elements in use in Moodle, but is intended a reference of reusable elements sharing that common Moodle style. We aim to update this reference as new common practices appear. [[Moodle User Interface Guidelines:Introduction|More...]]&lt;br /&gt;
* [[Moodle User Interface Guidelines:Help requested|Help requested: comment on these guidelines]]&lt;br /&gt;
&lt;br /&gt;
==Moodle basics==&lt;br /&gt;
* Hierarchy of a Moodle site ([http://moodle.org/mod/forum/discuss.php?d=115620 one attempt])&lt;br /&gt;
* [[Page structure and types|Page structure and different page types]]&lt;br /&gt;
* [[Roles and capabilities]]&lt;br /&gt;
* [[Groups]]&lt;br /&gt;
&lt;br /&gt;
==Moodle UI library==&lt;br /&gt;
UIs are built of Elements and Interaction Styles (bigger wholes, which are built of Elements).&lt;br /&gt;
=== Elements ===&lt;br /&gt;
* [[Big Select List|Big Select List]]&lt;br /&gt;
* Hierarchy Browsing List&lt;br /&gt;
&lt;br /&gt;
* [[Tooltip|Tooltip]]&lt;br /&gt;
* [[Link|Link]]&lt;br /&gt;
* [[Button|Button]]&lt;br /&gt;
* [[Address Bar|Address Bar]] (URLs)&lt;br /&gt;
&lt;br /&gt;
=== Interaction Styles ===&lt;br /&gt;
* [[Wizard|Wizard]]&lt;br /&gt;
* [[Help Popups|Help Popups]] (See [[Interface_guidelines#Linking_to_help|Linking to help]] for now)&lt;br /&gt;
* [[Feedback page|Feedback page]]&lt;br /&gt;
* [[Form|Form]] (incomplete)&lt;br /&gt;
** [[Radio button|Radio button]]&lt;br /&gt;
** [[Checkbox|Checkbox]]&lt;br /&gt;
** [[Dropdown Lists|Dropdown lists]] (incomplete)&lt;br /&gt;
&lt;br /&gt;
== General design guidelines ==&lt;br /&gt;
* [[Progressive Disclosure|Progressive Disclosure]]&lt;br /&gt;
* [[User Data Always Safe|User Data Always (Always) Safe]] &lt;br /&gt;
* [[Feedback (User Interface Guideline)|Feedback]] (Incomplete)&lt;br /&gt;
=== Relevant guidelines from other sites ===&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-people.html.en Design for People]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-broad-userbase.html.en Don&#039;t Limit Your User Base]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-match.html.en Create a Match Between Your Application and the Real World]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-consistency.html.en Make Your Application Consistent]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-feedback.html.en Keep the User Informed]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-simplicity.html.en Keep It Simple and Pretty]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-user-control.html.en Put the User in Control]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-forgiveness.html.en Forgive the User]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-direct-manipulation.html.en Provide Direct Manipulation]&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
Talk page: [[Development_talk:Moodle_User_Interface_Guidelines]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Using Moodle book]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Usability in Moodle ===&lt;br /&gt;
* [[Usability|Usability]]&lt;br /&gt;
* [[Usability_FAQ|Usability FAQ]]&lt;br /&gt;
&lt;br /&gt;
=== Implementation advice ===&lt;br /&gt;
* [[Developer_documentation|Developer documentation]]&lt;br /&gt;
* UI coding: [[Interface_guidelines]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:User Interface Guidelines]]&lt;br /&gt;
[[Category:Developer tools|User Interface Guidelines]]&lt;br /&gt;
[[Category:Usability|User Interface Guidelines]]&lt;br /&gt;
[[Category:Moodle User Interface Guidelines]]&lt;/div&gt;</summary>
		<author><name>Pilpi</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Talk:Moodle_User_Interface_Guidelines&amp;diff=28415</id>
		<title>Talk:Moodle User Interface Guidelines</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Talk:Moodle_User_Interface_Guidelines&amp;diff=28415"/>
		<updated>2010-05-15T14:45:19Z</updated>

		<summary type="html">&lt;p&gt;Pilpi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Missing guidelines ==&lt;br /&gt;
&lt;br /&gt;
=== Unwritten guidelines ===&lt;br /&gt;
* Building blocks&lt;br /&gt;
** [[Course Format|Course Format]]&lt;br /&gt;
** Block (not a technical guide but a guideline how what to take into account when using a block as a part of a design) &lt;br /&gt;
** Filter &lt;br /&gt;
** Module (not a technical guide but a guideline how what to take into account when using a module as a part of a design)&lt;br /&gt;
* Dialog&lt;br /&gt;
* Popup Window&lt;br /&gt;
* Link lists (menus)&lt;br /&gt;
* [[Page Heading|Page Heading]]&lt;br /&gt;
&lt;br /&gt;
=== Proposed elements ===&lt;br /&gt;
We will probably need a process to get these accepted across the community&lt;br /&gt;
* [http://uipatternfactory.com/p=edit-in-place/ Edit-in-place] ([http://www.google.fi/search?q=inplace+editing+ui+pattern more patterns])&lt;br /&gt;
&lt;br /&gt;
=== Guidelines that require further research/discussion ===&lt;br /&gt;
&#039;&#039;&#039;[[Major usability issues in Moodle]] (separate design projects)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
These are plans to create new interaction styles, switch existing conventions for more usable ones, or issues that are still unclear and need to be further discussed to become actual guidelines.&lt;br /&gt;
&lt;br /&gt;
* [[Switch Button|Switch Button]]&lt;br /&gt;
* [[Add element|Add element]]&lt;br /&gt;
* [[Jump Navigation|Jump Navigation]]&lt;br /&gt;
* Move Element (Course front page model vs. quiz)&lt;br /&gt;
* Quick Inline Help ([http://www.pilpi.net/software/moodle/2009/06/18/inline-help/] for now)&lt;br /&gt;
* Further research required: Search&lt;br /&gt;
* Further research required: Editing modes&lt;br /&gt;
* Further research required: Data Listing&lt;br /&gt;
* Waiting for developments of Navigation 2.0: Tabs&lt;br /&gt;
* Command Popup Menu&lt;br /&gt;
&lt;br /&gt;
== Todo ==&lt;br /&gt;
* [[Moodle User Interface Guidelines:Problem-Solution Summary Table|Problem-Solution Summary Table]] (See [http://www.hillside.net/index.php/a-pattern-language-for-pattern-writing#E.1.1])&lt;br /&gt;
* [[Moodle User Interface Guidelines:Glossary|Glossary]] (See [http://www.hillside.net/index.php/a-pattern-language-for-pattern-writing#E.5])&lt;br /&gt;
&lt;br /&gt;
--[[User:Olli Savolainen|Olli Savolainen]] 14:43, 15 May 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>Pilpi</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Moodle_User_Interface_Guidelines&amp;diff=15059</id>
		<title>Moodle User Interface Guidelines</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Moodle_User_Interface_Guidelines&amp;diff=15059"/>
		<updated>2010-05-15T14:45:04Z</updated>

		<summary type="html">&lt;p&gt;Pilpi: /* Todo */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: these guidelines were produced as part of a student project in 2009, and are not official Moodle guidelines. &lt;br /&gt;
&lt;br /&gt;
In fact, many of the pages below are currently incomplete or obsolete.  They still need a lot of work to be regarded as useful and authoritative guidelines.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
These guidelines are to be used as a &#039;&#039;&#039;UI reference library&#039;&#039;&#039; by Moodle developers when creating user interfaces. &lt;br /&gt;
&lt;br /&gt;
It does not catalogue all the elements in use in Moodle, but is intended a reference of reusable elements sharing that common Moodle style. We aim to update this reference as new common practices appear. [[Moodle User Interface Guidelines:Introduction|More...]]&lt;br /&gt;
* [[Moodle User Interface Guidelines:Help requested|Help requested: comment on these guidelines]]&lt;br /&gt;
&lt;br /&gt;
==Moodle basics==&lt;br /&gt;
* Hierarchy of a Moodle site ([http://moodle.org/mod/forum/discuss.php?d=115620 one attempt])&lt;br /&gt;
* [[Page structure and types|Page structure and different page types]]&lt;br /&gt;
* [[Roles and capabilities]]&lt;br /&gt;
* [[Groups]]&lt;br /&gt;
&lt;br /&gt;
==Moodle UI library==&lt;br /&gt;
UIs are built of Elements and Interaction Styles (bigger wholes, which are built of Elements).&lt;br /&gt;
=== Elements ===&lt;br /&gt;
* [[Big Select List|Big Select List]]&lt;br /&gt;
* Hierarchy Browsing List&lt;br /&gt;
&lt;br /&gt;
* [[Tooltip|Tooltip]]&lt;br /&gt;
* [[Link|Link]]&lt;br /&gt;
* [[Button|Button]]&lt;br /&gt;
* [[Address Bar|Address Bar]] (URLs)&lt;br /&gt;
&lt;br /&gt;
=== Interaction Styles ===&lt;br /&gt;
* [[Wizard|Wizard]]&lt;br /&gt;
* [[Help Popups|Help Popups]] (See [[Interface_guidelines#Linking_to_help|Linking to help]] for now)&lt;br /&gt;
* [[Feedback page|Feedback page]]&lt;br /&gt;
* [[Form|Form]] (incomplete)&lt;br /&gt;
** [[Radio button|Radio button]]&lt;br /&gt;
** [[Checkbox|Checkbox]]&lt;br /&gt;
** [[Dropdown Lists|Dropdown lists]] (incomplete)&lt;br /&gt;
&lt;br /&gt;
== General design guidelines ==&lt;br /&gt;
* [[Progressive Disclosure|Progressive Disclosure]]&lt;br /&gt;
* [[User Data Always Safe|User Data Always (Always) Safe]] &lt;br /&gt;
* [[Feedback (User Interface Guideline)|Feedback]] (Incomplete)&lt;br /&gt;
=== Relevant guidelines from other sites ===&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-people.html.en Design for People]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-broad-userbase.html.en Don&#039;t Limit Your User Base]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-match.html.en Create a Match Between Your Application and the Real World]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-consistency.html.en Make Your Application Consistent]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-feedback.html.en Keep the User Informed]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-simplicity.html.en Keep It Simple and Pretty]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-user-control.html.en Put the User in Control]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-forgiveness.html.en Forgive the User]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-direct-manipulation.html.en Provide Direct Manipulation]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
Talk page: [[Development_talk:Moodle_User_Interface_Guidelines]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Using Moodle book]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Usability in Moodle ===&lt;br /&gt;
* [[Usability|Usability]]&lt;br /&gt;
* [[Usability_FAQ|Usability FAQ]]&lt;br /&gt;
&lt;br /&gt;
=== Implementation advice ===&lt;br /&gt;
* [[Developer_documentation|Developer documentation]]&lt;br /&gt;
* UI coding: [[Interface_guidelines]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:User Interface Guidelines]]&lt;br /&gt;
[[Category:Developer tools|User Interface Guidelines]]&lt;br /&gt;
[[Category:Usability|User Interface Guidelines]]&lt;br /&gt;
[[Category:Moodle User Interface Guidelines]]&lt;/div&gt;</summary>
		<author><name>Pilpi</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Moodle_User_Interface_Guidelines:Help_requested&amp;diff=15276</id>
		<title>Moodle User Interface Guidelines:Help requested</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Moodle_User_Interface_Guidelines:Help_requested&amp;diff=15276"/>
		<updated>2010-05-15T14:44:51Z</updated>

		<summary type="html">&lt;p&gt;Pilpi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[ Moodle User Interface Guidelines|Moodle User Interface Guidelines]] &amp;gt; Help requested&lt;br /&gt;
&lt;br /&gt;
You can help by &#039;&#039;&#039;commenting on [[Guideline_template]] and on the [[Moodle_User_Interface_Guidelines|guidelines listed]]&#039;&#039;&#039; [http://moodle.org/mod/forum/discuss.php?d=126884 in the appropriate forum]. The template describes how the actual guidelines are supposed to be written, so it might be a good idea to read and compare these side-by-side. If you wish, you can even add new guidelines yourself - don&#039;t worry about if they look right yet or not - and I can take a look at them too. During July 2009, the number of guidelines will increase - if not by you, then by me. &#039;&#039;&#039;I will hope to have a lot of eyes on them to make sure they are easy to understand and use&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The point is to have something everybody will use in development. I want you to reject this, but do it now, please, not later :). [http://moodle.org/mod/forum/discuss.php?d=126884 Tell me what you think might be better]. Let us build this together.&lt;br /&gt;
&lt;br /&gt;
=== About writing these guidelines ===&lt;br /&gt;
* Some pages use the [[Guideline template|Guideline template]], others are freeform prose&lt;/div&gt;</summary>
		<author><name>Pilpi</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Moodle_User_Interface_Guidelines&amp;diff=15058</id>
		<title>Moodle User Interface Guidelines</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Moodle_User_Interface_Guidelines&amp;diff=15058"/>
		<updated>2010-05-15T14:44:33Z</updated>

		<summary type="html">&lt;p&gt;Pilpi: /* About writing these guidelines */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: these guidelines were produced as part of a student project in 2009, and are not official Moodle guidelines. &lt;br /&gt;
&lt;br /&gt;
In fact, many of the pages below are currently incomplete or obsolete.  They still need a lot of work to be regarded as useful and authoritative guidelines.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
These guidelines are to be used as a &#039;&#039;&#039;UI reference library&#039;&#039;&#039; by Moodle developers when creating user interfaces. &lt;br /&gt;
&lt;br /&gt;
It does not catalogue all the elements in use in Moodle, but is intended a reference of reusable elements sharing that common Moodle style. We aim to update this reference as new common practices appear. [[Moodle User Interface Guidelines:Introduction|More...]]&lt;br /&gt;
* [[Moodle User Interface Guidelines:Help requested|Help requested: comment on these guidelines]]&lt;br /&gt;
&lt;br /&gt;
==Moodle basics==&lt;br /&gt;
* Hierarchy of a Moodle site ([http://moodle.org/mod/forum/discuss.php?d=115620 one attempt])&lt;br /&gt;
* [[Page structure and types|Page structure and different page types]]&lt;br /&gt;
* [[Roles and capabilities]]&lt;br /&gt;
* [[Groups]]&lt;br /&gt;
&lt;br /&gt;
==Moodle UI library==&lt;br /&gt;
UIs are built of Elements and Interaction Styles (bigger wholes, which are built of Elements).&lt;br /&gt;
=== Elements ===&lt;br /&gt;
* [[Big Select List|Big Select List]]&lt;br /&gt;
* Hierarchy Browsing List&lt;br /&gt;
&lt;br /&gt;
* [[Tooltip|Tooltip]]&lt;br /&gt;
* [[Link|Link]]&lt;br /&gt;
* [[Button|Button]]&lt;br /&gt;
* [[Address Bar|Address Bar]] (URLs)&lt;br /&gt;
&lt;br /&gt;
=== Interaction Styles ===&lt;br /&gt;
* [[Wizard|Wizard]]&lt;br /&gt;
* [[Help Popups|Help Popups]] (See [[Interface_guidelines#Linking_to_help|Linking to help]] for now)&lt;br /&gt;
* [[Feedback page|Feedback page]]&lt;br /&gt;
* [[Form|Form]] (incomplete)&lt;br /&gt;
** [[Radio button|Radio button]]&lt;br /&gt;
** [[Checkbox|Checkbox]]&lt;br /&gt;
** [[Dropdown Lists|Dropdown lists]] (incomplete)&lt;br /&gt;
&lt;br /&gt;
== General design guidelines ==&lt;br /&gt;
* [[Progressive Disclosure|Progressive Disclosure]]&lt;br /&gt;
* [[User Data Always Safe|User Data Always (Always) Safe]] &lt;br /&gt;
* [[Feedback (User Interface Guideline)|Feedback]] (Incomplete)&lt;br /&gt;
=== Relevant guidelines from other sites ===&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-people.html.en Design for People]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-broad-userbase.html.en Don&#039;t Limit Your User Base]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-match.html.en Create a Match Between Your Application and the Real World]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-consistency.html.en Make Your Application Consistent]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-feedback.html.en Keep the User Informed]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-simplicity.html.en Keep It Simple and Pretty]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-user-control.html.en Put the User in Control]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-forgiveness.html.en Forgive the User]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-direct-manipulation.html.en Provide Direct Manipulation]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
Talk page: [[Development_talk:Moodle_User_Interface_Guidelines]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Using Moodle book]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Usability in Moodle ===&lt;br /&gt;
* [[Usability|Usability]]&lt;br /&gt;
* [[Usability_FAQ|Usability FAQ]]&lt;br /&gt;
&lt;br /&gt;
=== Implementation advice ===&lt;br /&gt;
* [[Developer_documentation|Developer documentation]]&lt;br /&gt;
* UI coding: [[Interface_guidelines]]&lt;br /&gt;
&lt;br /&gt;
== Todo ==&lt;br /&gt;
* [[Moodle User Interface Guidelines:Problem-Solution Summary Table|Problem-Solution Summary Table]] (See [http://www.hillside.net/index.php/a-pattern-language-for-pattern-writing#E.1.1])&lt;br /&gt;
* [[Moodle User Interface Guidelines:Glossary|Glossary]] (See [http://www.hillside.net/index.php/a-pattern-language-for-pattern-writing#E.5])&lt;br /&gt;
&lt;br /&gt;
[[Category:User Interface Guidelines]]&lt;br /&gt;
[[Category:Developer tools|User Interface Guidelines]]&lt;br /&gt;
[[Category:Usability|User Interface Guidelines]]&lt;br /&gt;
[[Category:Moodle User Interface Guidelines]]&lt;/div&gt;</summary>
		<author><name>Pilpi</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Moodle_User_Interface_Guidelines&amp;diff=15057</id>
		<title>Moodle User Interface Guidelines</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Moodle_User_Interface_Guidelines&amp;diff=15057"/>
		<updated>2010-05-15T14:44:10Z</updated>

		<summary type="html">&lt;p&gt;Pilpi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: these guidelines were produced as part of a student project in 2009, and are not official Moodle guidelines. &lt;br /&gt;
&lt;br /&gt;
In fact, many of the pages below are currently incomplete or obsolete.  They still need a lot of work to be regarded as useful and authoritative guidelines.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
These guidelines are to be used as a &#039;&#039;&#039;UI reference library&#039;&#039;&#039; by Moodle developers when creating user interfaces. &lt;br /&gt;
&lt;br /&gt;
It does not catalogue all the elements in use in Moodle, but is intended a reference of reusable elements sharing that common Moodle style. We aim to update this reference as new common practices appear. [[Moodle User Interface Guidelines:Introduction|More...]]&lt;br /&gt;
* [[Moodle User Interface Guidelines:Help requested|Help requested: comment on these guidelines]]&lt;br /&gt;
&lt;br /&gt;
==Moodle basics==&lt;br /&gt;
* Hierarchy of a Moodle site ([http://moodle.org/mod/forum/discuss.php?d=115620 one attempt])&lt;br /&gt;
* [[Page structure and types|Page structure and different page types]]&lt;br /&gt;
* [[Roles and capabilities]]&lt;br /&gt;
* [[Groups]]&lt;br /&gt;
&lt;br /&gt;
==Moodle UI library==&lt;br /&gt;
UIs are built of Elements and Interaction Styles (bigger wholes, which are built of Elements).&lt;br /&gt;
=== Elements ===&lt;br /&gt;
* [[Big Select List|Big Select List]]&lt;br /&gt;
* Hierarchy Browsing List&lt;br /&gt;
&lt;br /&gt;
* [[Tooltip|Tooltip]]&lt;br /&gt;
* [[Link|Link]]&lt;br /&gt;
* [[Button|Button]]&lt;br /&gt;
* [[Address Bar|Address Bar]] (URLs)&lt;br /&gt;
&lt;br /&gt;
=== Interaction Styles ===&lt;br /&gt;
* [[Wizard|Wizard]]&lt;br /&gt;
* [[Help Popups|Help Popups]] (See [[Interface_guidelines#Linking_to_help|Linking to help]] for now)&lt;br /&gt;
* [[Feedback page|Feedback page]]&lt;br /&gt;
* [[Form|Form]] (incomplete)&lt;br /&gt;
** [[Radio button|Radio button]]&lt;br /&gt;
** [[Checkbox|Checkbox]]&lt;br /&gt;
** [[Dropdown Lists|Dropdown lists]] (incomplete)&lt;br /&gt;
&lt;br /&gt;
== General design guidelines ==&lt;br /&gt;
* [[Progressive Disclosure|Progressive Disclosure]]&lt;br /&gt;
* [[User Data Always Safe|User Data Always (Always) Safe]] &lt;br /&gt;
* [[Feedback (User Interface Guideline)|Feedback]] (Incomplete)&lt;br /&gt;
=== Relevant guidelines from other sites ===&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-people.html.en Design for People]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-broad-userbase.html.en Don&#039;t Limit Your User Base]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-match.html.en Create a Match Between Your Application and the Real World]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-consistency.html.en Make Your Application Consistent]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-feedback.html.en Keep the User Informed]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-simplicity.html.en Keep It Simple and Pretty]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-user-control.html.en Put the User in Control]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-forgiveness.html.en Forgive the User]&lt;br /&gt;
* [http://library.gnome.org/devel/hig-book/stable/principles-direct-manipulation.html.en Provide Direct Manipulation]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
Talk page: [[Development_talk:Moodle_User_Interface_Guidelines]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Using Moodle book]]&#039;&#039;&#039;&lt;br /&gt;
=== About writing these guidelines ===&lt;br /&gt;
* Some pages use the [[Guideline template|Guideline template]], others are freeform prose&lt;br /&gt;
=== Usability in Moodle ===&lt;br /&gt;
* [[Usability|Usability]]&lt;br /&gt;
* [[Usability_FAQ|Usability FAQ]]&lt;br /&gt;
&lt;br /&gt;
=== Implementation advice ===&lt;br /&gt;
* [[Developer_documentation|Developer documentation]]&lt;br /&gt;
* UI coding: [[Interface_guidelines]]&lt;br /&gt;
&lt;br /&gt;
== Todo ==&lt;br /&gt;
* [[Moodle User Interface Guidelines:Problem-Solution Summary Table|Problem-Solution Summary Table]] (See [http://www.hillside.net/index.php/a-pattern-language-for-pattern-writing#E.1.1])&lt;br /&gt;
* [[Moodle User Interface Guidelines:Glossary|Glossary]] (See [http://www.hillside.net/index.php/a-pattern-language-for-pattern-writing#E.5])&lt;br /&gt;
&lt;br /&gt;
[[Category:User Interface Guidelines]]&lt;br /&gt;
[[Category:Developer tools|User Interface Guidelines]]&lt;br /&gt;
[[Category:Usability|User Interface Guidelines]]&lt;br /&gt;
[[Category:Moodle User Interface Guidelines]]&lt;/div&gt;</summary>
		<author><name>Pilpi</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Talk:Moodle_User_Interface_Guidelines&amp;diff=28414</id>
		<title>Talk:Moodle User Interface Guidelines</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Talk:Moodle_User_Interface_Guidelines&amp;diff=28414"/>
		<updated>2010-05-15T14:43:40Z</updated>

		<summary type="html">&lt;p&gt;Pilpi: New page:  == Missing guidelines ==  === Unwritten guidelines === * Building blocks ** Course Format ** Block (not a technical guide but a guideline how what to take in...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Missing guidelines ==&lt;br /&gt;
&lt;br /&gt;
=== Unwritten guidelines ===&lt;br /&gt;
* Building blocks&lt;br /&gt;
** [[Course Format|Course Format]]&lt;br /&gt;
** Block (not a technical guide but a guideline how what to take into account when using a block as a part of a design) &lt;br /&gt;
** Filter &lt;br /&gt;
** Module (not a technical guide but a guideline how what to take into account when using a module as a part of a design)&lt;br /&gt;
* Dialog&lt;br /&gt;
* Popup Window&lt;br /&gt;
* Link lists (menus)&lt;br /&gt;
* [[Page Heading|Page Heading]]&lt;br /&gt;
&lt;br /&gt;
=== Proposed elements ===&lt;br /&gt;
We will probably need a process to get these accepted across the community&lt;br /&gt;
* [http://uipatternfactory.com/p=edit-in-place/ Edit-in-place] ([http://www.google.fi/search?q=inplace+editing+ui+pattern more patterns])&lt;br /&gt;
&lt;br /&gt;
=== Guidelines that require further research/discussion ===&lt;br /&gt;
&#039;&#039;&#039;[[Major usability issues in Moodle]] (separate design projects)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
These are plans to create new interaction styles, switch existing conventions for more usable ones, or issues that are still unclear and need to be further discussed to become actual guidelines.&lt;br /&gt;
&lt;br /&gt;
* [[Switch Button|Switch Button]]&lt;br /&gt;
* [[Add element|Add element]]&lt;br /&gt;
* [[Jump Navigation|Jump Navigation]]&lt;br /&gt;
* Move Element (Course front page model vs. quiz)&lt;br /&gt;
* Quick Inline Help ([http://www.pilpi.net/software/moodle/2009/06/18/inline-help/] for now)&lt;br /&gt;
* Further research required: Search&lt;br /&gt;
* Further research required: Editing modes&lt;br /&gt;
* Further research required: Data Listing&lt;br /&gt;
* Waiting for developments of Navigation 2.0: Tabs&lt;br /&gt;
* Command Popup Menu&lt;br /&gt;
&lt;br /&gt;
--[[User:Olli Savolainen|Olli Savolainen]] 14:43, 15 May 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>Pilpi</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Feedback_(User_Interface_Guideline)&amp;diff=15687</id>
		<title>Feedback (User Interface Guideline)</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Feedback_(User_Interface_Guideline)&amp;diff=15687"/>
		<updated>2010-05-15T14:41:56Z</updated>

		<summary type="html">&lt;p&gt;Pilpi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[ Moodle User Interface Guidelines|Moodle User Interface Guidelines]] &amp;gt; &#039;&#039;&#039;Feedback&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Work in progress|forumurl=http://moodle.org/mod/forum/discuss.php?d=126884|info=&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&#039;&#039;&#039;Status: INCOMPLETE &#039;&#039;&#039;&amp;lt;br /&amp;gt;This is a guideline for a [[Moodle_User_Interface_Guidelines|Moodle Interface Guideline]]. Comments: [http://moodle.org/mod/forum/discuss.php?d=126884 developer forum thread]}}&lt;br /&gt;
== Problem ==&lt;br /&gt;
In order to make it possible for the user to use an application meaningfully, the application must respond meaningfully to each user action.&lt;br /&gt;
&lt;br /&gt;
== Solution ==&lt;br /&gt;
&lt;br /&gt;
See: &#039;&#039;&#039;GNOME Human Interface Guidelines: [http://library.gnome.org/devel/hig-book/stable/feedback.html.en Feedback] &#039;&#039;&#039; &lt;br /&gt;
(for Desktop but still a great guide and mostly applicable to Moodle.)&lt;br /&gt;
&lt;br /&gt;
== Examples and implementation ==&lt;br /&gt;
=== Feedback pages ===&lt;br /&gt;
[[Feedback_page|Feedback pages]] are often used in Moodle to provide feedback to the user about successful filling of a form, such as a submission of configuration page or posting to a forum thread.&lt;br /&gt;
&lt;br /&gt;
=== Wizards ===&lt;br /&gt;
&lt;br /&gt;
TODO: [[Wizard|Wizards]] should use the status display that tells the user about the steps available and the active step, as feedback to the user about their actions.&lt;br /&gt;
&lt;br /&gt;
==== Installation ====&lt;br /&gt;
The Moodle installation wizard gives the user feedback about its progress by outputting new rows to the current page being displayed, allowing the page to load completely only when the process is complete.&lt;br /&gt;
&lt;br /&gt;
== Common mistakes ==&lt;br /&gt;
&lt;br /&gt;
==  Related guidelines ==&lt;br /&gt;
* [[Feedback page]]&lt;br /&gt;
== Related issues in the tracker ==&lt;br /&gt;
* TODO: development of Moodle feedback away from the feedback page towards showing feedback on the resulting content page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Further information / Sources  ==&lt;br /&gt;
&lt;br /&gt;
* TODO: Test and create guideline for: MDL-18224 MDL-18225&lt;br /&gt;
* See [http://mahara.org/view/view.php?id=3482 presentation] ([http://mahara.org/artefact/file/download.php?file=14278&amp;amp;view=3482 alternate link]) of workshop by David Mudrak for the future direction of feedback&lt;br /&gt;
&lt;br /&gt;
[[Category:Moodle User Interface Guidelines]]&lt;/div&gt;</summary>
		<author><name>Pilpi</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=User_Data_Always_Safe&amp;diff=15634</id>
		<title>User Data Always Safe</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=User_Data_Always_Safe&amp;diff=15634"/>
		<updated>2010-05-15T14:41:08Z</updated>

		<summary type="html">&lt;p&gt;Pilpi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[ Moodle User Interface Guidelines|Moodle User Interface Guidelines]] &amp;gt; &#039;&#039;&#039;User Data Always (Always) Safe&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;&#039;&#039;&#039;This is the single most serious usability flaw in Moodle. It also requires a lot of software engineering work to get right.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 In all cases, the user&#039;s work is sacrosanct. Nothing your &lt;br /&gt;
 application does should lose or destroy user&#039;s work without &lt;br /&gt;
 explicit user action. - GNOME HIG: [http://library.gnome.org/devel/hig-book/stable/principles-forgiveness.html.en Forgive the User]&lt;br /&gt;
&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=130005 Please comment in the related discussion forum] &amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Every part in Moodle should commit to keeping the data user has entered, safe. &lt;br /&gt;
&lt;br /&gt;
* In  2009 Facebook has several groups where users have spelled out their frustration when Moodle had lost hours of their work.&lt;br /&gt;
* In Finland whenever you tell someone you work for/on Moodle, students spill out their frustration since everyone seems to have the experience of Moodle losing their work. &lt;br /&gt;
&lt;br /&gt;
Not being capable of trusting an application affects the user experience fatally. Eventually it makes users paranoid and writing their work in a word processor and only copying the final work into the browser, which seems likely to destroy everything given to it. &lt;br /&gt;
&lt;br /&gt;
This issue requires further user research to find the exact issues involved, but there are also some generally well known mechanisms to employ.&lt;br /&gt;
&lt;br /&gt;
As Moodle is a web application, keeping user data safe is not trivial.&lt;br /&gt;
&lt;br /&gt;
==Challenges==&lt;br /&gt;
* Users may leave forms without submitting them&lt;br /&gt;
** Learning from some desktop applications (GNOME settings dialogs), users may assume their settings get automatically saved when they just enter them.&lt;br /&gt;
** Accidentally hitting the back button&lt;br /&gt;
** Clicking on a link on the form itself, assuming it is safe&lt;br /&gt;
** Pushing a button on their keyboard resulting in accidental usage of the back/next buttons&lt;br /&gt;
* Users may fill out forms &amp;quot;inappropriately&amp;quot;&lt;br /&gt;
** Missing data &lt;br /&gt;
** Session may have expired&lt;br /&gt;
*** When user gets logged out for whatever reason: the session ID changes when they log in again so even if they manage to login (in a different window)  while keeping the form data, submitting the form again fails and the user loses all submitted data. At a minimum, Moodle should give the user their data back so they do not lose it. &lt;br /&gt;
** User may have logged out accidentally (browser crash; browser restores the browser session but not the Moodle session)&lt;br /&gt;
** User may no longer be capable of completing the action due to loss of permissions or other reasons&lt;br /&gt;
*** A forum post they are were replying to was deleted&lt;br /&gt;
*** The time to edit a post has passed while the user was editing the post&lt;br /&gt;
* Users may submit data when the server has gone down or network connection lost&lt;br /&gt;
* &#039;&#039;&#039;There is very probably a lot more: research required.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Solutions==&lt;br /&gt;
&lt;br /&gt;
=== Preserve submitted data or giving it back to the user to keep, until it can be saved ===&lt;br /&gt;
Taking care of the user&#039;s data actively when designing an application is really the only thing that can really keep users safe. Know your users and their context, and find out what they might want to do in an error situation.&lt;br /&gt;
&lt;br /&gt;
If a user has posted something, but it cannot be saved, never ever just throw the data away (like for example, Forum currently does).&lt;br /&gt;
Design your application to request the user what should be done. This requires understanding the situations users may end up in. Examples:&lt;br /&gt;
* If the user&#039;s session has gotten closed (the user is no longer logged in), request the user to log in again, and tell them about the situation: &amp;quot;&#039;&#039;&#039;What you tried to send is safe, but not yet saved.&#039;&#039;&#039; The [insert descriptive label for data here] you posted could not be saved, since you are not logged in. Please log in to have Moodle try again to save it for you.&amp;quot;&lt;br /&gt;
==== Giving the user their data back, for copying to the clipboard ====&lt;br /&gt;
Issue: In case the user has gotten logged out, it may be a security risk to give the data out. In other error situations, this is a recommended strategy. &lt;br /&gt;
&lt;br /&gt;
In some browsers it is possible to have a javascripted button that copies the contents of a text field onto the clipboard. This can be used to decrease the user&#039;s effort. Not all users are fluent with the clipboard.&lt;br /&gt;
&lt;br /&gt;
* If a forum posting can not be saved due to, for example, editing time having ended, offer the user alternative options that make sense. &amp;quot;30 minutes have passed, so you can no longer edit your forum post. Shown below is what you posted, so you can copy it to your clipboard and from there somewhere safe.&amp;quot;&lt;br /&gt;
* If a forum reply  can not be saved due to the parent item having been deleted, offer users the option to copy their item to the clipboard. In addition, the UI can offer users an option to add their reply to another post in the same thread.&lt;br /&gt;
&lt;br /&gt;
=== Undo ===&lt;br /&gt;
Often, confirmation dialogs (such as preventing accidental leaving of an unsaved form with a javascript dialog) are frustrating to users. In some situations it may be smart to allow the user to perform a potentially destructive action but then give them a chance to undo it, like gmail does.&lt;br /&gt;
[[Image:gmail-undo-example.png|left|frame]]&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Autosave ===&lt;br /&gt;
Related forum threads:&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=74710 AJAX-like Autosave for quiz]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=107073 Autosave for Forum Compose?]&lt;br /&gt;
In situations where preserving the user&#039;s data is critical independent of server or client machine crashes, autosaving the data at a regular interval may be used. &lt;br /&gt;
* Autosaving can either mean saving form data continuously, not saving the old version, or keeping a version history. Adding version history functionality requires careful context-sensitive UI design. (Wordpress uses autosaving extensively and may be referred to if this strategy is selected)&lt;br /&gt;
** Autosaving can be implemented using AJAX or by just submitting the form in question in the background using javascript.&lt;br /&gt;
* The strain on the server produced by autosave can be reduced by only sending new changes to the server, instead of always sending the contents of the form to the server at a specific interval &lt;br /&gt;
* When technologies such as Google Gears or the HTML5 equivalent are in use, autosaving can also be done on the local machine, without straining the server.&lt;br /&gt;
** This is also probably the only possible strategy when the server has gone down or when the network connection has been lost&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Save as draft&amp;quot; button ===&lt;br /&gt;
Sometimes it may be appropriate to let users save their work, before it is finished, without yet publishing it.&lt;br /&gt;
&lt;br /&gt;
=== Javascript confirmation upon leaving &amp;quot;dirty&amp;quot; form ===&lt;br /&gt;
If the user is about to leave page with a form without submitting it, issue a javascript confirmation dialog confirming if they want to do this.&lt;br /&gt;
=== TinyMCE ===&lt;br /&gt;
The new rich text editor in Moodle 2.0, [[TinyMCE]] apparently does not lose text written in it if you accidentally go back (or forward) in your browser history and then return to the page you were writing on. It is apparently possible though some work to get TinyMCE work in earlier versions of Moodle.&lt;br /&gt;
&lt;br /&gt;
=== Browser-based solutions ===&lt;br /&gt;
Unrelated to Moodle development, browsers may one day integrate functionality currently provided as an [http://lifehacker.com/5097334/lazarus-form-recovery-saves-web-page-form-data extension to at least Firefox] ([https://addons.mozilla.org/en-US/firefox/addon/6984 alternate link]), always storing form data for later recovery. This may raise privacy issues though. &lt;br /&gt;
&lt;br /&gt;
Also developer tools such as Firebug HTTP traffic listening or the Firefox Tamper Data extension can be used in recovering lost data: Initiate traffic listening, repost the data, read in the tool what data was posted and copy it to the clipboard.&lt;br /&gt;
&lt;br /&gt;
Users should not have resort to paranoia of writing first in notepad and then copying it to the browser, or using somethin such as these tools.&lt;br /&gt;
&lt;br /&gt;
It seems the GNOME usability focused browser Epiphany gives confirmations upon leaving &amp;quot;dirty&amp;quot; forms (if trying to close window/tab) even if it is not programmed in (needs to be confirmed).&lt;br /&gt;
&lt;br /&gt;
== More information ==&lt;br /&gt;
* Discussion: [http://moodle.org/mod/forum/discuss.php?d=130005 Critical: Keeping user data safe]&lt;br /&gt;
** Linked threads: [http://moodle.org/mod/forum/discuss.php?d=130010] [http://moodle.org/mod/forum/discuss.php?d=130007]&lt;br /&gt;
* Directory of [[Major_usability_issues_in_Moodle|Major usability issues in Moodle]]&lt;br /&gt;
* MDL-18014 Tracker item for autosave (thanks Mauno Korpelainen)&lt;br /&gt;
* [http://code.google.com/p/tinyautosave/ TinyMCE autosave plugin]  (thanks Mauno Korpelainen)&lt;br /&gt;
&lt;br /&gt;
[[Category:Moodle User Interface Guidelines]]&lt;/div&gt;</summary>
		<author><name>Pilpi</name></author>
	</entry>
</feed>