<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://docs.moodle.org/21/en/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Scyrma</id>
	<title>MoodleDocs - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://docs.moodle.org/21/en/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Scyrma"/>
	<link rel="alternate" type="text/html" href="https://docs.moodle.org/21/en/Special:Contributions/Scyrma"/>
	<updated>2026-04-18T17:28:50Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://docs.moodle.org/21/en/index.php?title=Web_Hosts&amp;diff=42587</id>
		<title>Web Hosts</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/21/en/index.php?title=Web_Hosts&amp;diff=42587"/>
		<updated>2008-08-25T07:15:30Z</updated>

		<summary type="html">&lt;p&gt;Scyrma: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Work_in_progress}}&lt;br /&gt;
The intent here is to invite those who have experience with various web hosting firms to provide data on their experience so as to provide an easy comparison among web hosting firms.&lt;br /&gt;
&lt;br /&gt;
Feature Key appears below the matrix - please suggest additional features&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!Webhosts&lt;br /&gt;
!A&lt;br /&gt;
!B&lt;br /&gt;
!C&lt;br /&gt;
!D&lt;br /&gt;
!E&lt;br /&gt;
!F&lt;br /&gt;
!G&lt;br /&gt;
!H&lt;br /&gt;
! I &lt;br /&gt;
!J&lt;br /&gt;
!K&lt;br /&gt;
!L&lt;br /&gt;
!M&lt;br /&gt;
!N&lt;br /&gt;
!O&lt;br /&gt;
!P&lt;br /&gt;
!Q&lt;br /&gt;
!R&lt;br /&gt;
!S&lt;br /&gt;
!T&lt;br /&gt;
!U&lt;br /&gt;
!V&lt;br /&gt;
!W&lt;br /&gt;
!X&lt;br /&gt;
!Y&lt;br /&gt;
!Z&lt;br /&gt;
!II&lt;br /&gt;
!III&lt;br /&gt;
!IV&lt;br /&gt;
!VI&lt;br /&gt;
|-&lt;br /&gt;
|Siteground&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|BlueHost&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Dreamhost&lt;br /&gt;
|■&lt;br /&gt;
|■&lt;br /&gt;
|■&lt;br /&gt;
|■&lt;br /&gt;
|■&lt;br /&gt;
|■&lt;br /&gt;
|■ &lt;br /&gt;
|■&lt;br /&gt;
|1&lt;br /&gt;
|■&lt;br /&gt;
|x&lt;br /&gt;
|x&lt;br /&gt;
|?&lt;br /&gt;
|■&lt;br /&gt;
|■&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Another&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|And Another&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
A. Customizable php.ini or .htaccess&lt;br /&gt;
&lt;br /&gt;
B. Access to custom build of php&lt;br /&gt;
&lt;br /&gt;
C. PHP version 5.x provided&lt;br /&gt;
&lt;br /&gt;
D. MySQL version 5 provided&lt;br /&gt;
&lt;br /&gt;
E. Shell access&lt;br /&gt;
&lt;br /&gt;
F. SSH supported&lt;br /&gt;
&lt;br /&gt;
G. Bulk Mail use restriction&lt;br /&gt;
&lt;br /&gt;
H. SPAM restrictions in excess of security provided via Moodle&lt;br /&gt;
&lt;br /&gt;
I. Language (1- only English, 2- English and Spanish, etc)?&lt;br /&gt;
&lt;br /&gt;
J. Custom panel&lt;br /&gt;
&lt;br /&gt;
K. Fantastico&lt;br /&gt;
&lt;br /&gt;
L. Cpanel&lt;br /&gt;
&lt;br /&gt;
M. Limited TLDs available&lt;br /&gt;
&lt;br /&gt;
N. Domains available&lt;br /&gt;
&lt;br /&gt;
O. Under US$100/yr&lt;/div&gt;</summary>
		<author><name>Scyrma</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/21/en/index.php?title=TinyMCE&amp;diff=40438</id>
		<title>TinyMCE</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/21/en/index.php?title=TinyMCE&amp;diff=40438"/>
		<updated>2008-07-25T06:20:00Z</updated>

		<summary type="html">&lt;p&gt;Scyrma: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;TinyMCE ([http://tinymce.moxiecode.com/ homepage]) is an opensource javascript text editor from Moxiecode released under the LGPL licence. It is being used by some as a replacement for the HTML editor which in versions 1.8 and 1.9 of Moodle.&lt;br /&gt;
&lt;br /&gt;
It will be the default editor in Moodle 2.0.&lt;br /&gt;
&lt;br /&gt;
= Plugins =&lt;br /&gt;
&lt;br /&gt;
Some plugins are Moodle-specific and need to be maintained separately. &lt;br /&gt;
&lt;br /&gt;
TinyMCE plugins code should be compressed using http://javascriptcompressor.com/.  &lt;br /&gt;
&lt;br /&gt;
== moodlenolink ==&lt;br /&gt;
&lt;br /&gt;
Lets people mark some text that must not be filtered by Moodle (ie. to prevent auto-linking).&lt;br /&gt;
&lt;br /&gt;
[[Category:HTML editor]]&lt;/div&gt;</summary>
		<author><name>Scyrma</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/21/en/index.php?title=Development:How_to_create_a_patch&amp;diff=39002</id>
		<title>Development:How to create a patch</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/21/en/index.php?title=Development:How_to_create_a_patch&amp;diff=39002"/>
		<updated>2008-07-01T08:00:40Z</updated>

		<summary type="html">&lt;p&gt;Scyrma: /* Creating a patch using CVS (command line) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;If you have made some changes to the code that you would like to share with the community, particularly if you want to send them to one of the core developers for possible inclusion in Moodle Core, it is very helpful if you can provide them as a patch file. Sometimes also called a diff file.&lt;br /&gt;
&lt;br /&gt;
This page explains how you can make a patch file. Patch is a standard format, and there are many options for how to create one. Pick the one that is easiest for you.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note, I have not been able to test most of these instructions. They are about right, but I am hoping that as people use them, they will fill in any gaps, correct any details, and so on.[[User:Tim Hunt|Tim Hunt]] 08:40, 25 June 2007 (CDT)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Introduction: what does a patch file look like==&lt;br /&gt;
&lt;br /&gt;
This is a simple example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
Index: lang/en_utf8/quiz.php&lt;br /&gt;
===================================================================&lt;br /&gt;
RCS file: /cvsroot/moodle/moodle/lang/en_utf8/quiz.php,v&lt;br /&gt;
retrieving revision 1.57.2.10&lt;br /&gt;
diff -u -r1.57.2.10 quiz.php&lt;br /&gt;
--- lang/en_utf8/quiz.php	29 May 2007 17:47:25 -0000	1.57.2.10&lt;br /&gt;
+++ lang/en_utf8/quiz.php	25 Jun 2007 12:58:34 -0000&lt;br /&gt;
@@ -252,7 +255,6 @@&lt;br /&gt;
 $string[&#039;indivresp&#039;] = &#039;Responses of Individuals to Each Item&#039;;&lt;br /&gt;
 $string[&#039;info&#039;] = &#039;Info&#039;;&lt;br /&gt;
 $string[&#039;introduction&#039;] = &#039;Introduction&#039;;&lt;br /&gt;
-$string[&#039;invalidcategory&#039;] = &#039;Category ID is invalid&#039;;&lt;br /&gt;
 $string[&#039;invalidnumericanswer&#039;] = &#039;One of the answers you entered was not a valid number.&#039;;&lt;br /&gt;
 $string[&#039;invalidnumerictolerance&#039;] = &#039;One of the tolerances you entered was not a valid number.&#039;;&lt;br /&gt;
 $string[&#039;invalidsource&#039;] = &#039;The source is not accepted as valid.&#039;;&lt;br /&gt;
@@ -375,8 +377,10 @@&lt;br /&gt;
 $string[&#039;questiontypesetupoptions&#039;] = &#039;Setup options for question types:&#039;;&lt;br /&gt;
 $string[&#039;quiz:attempt&#039;] = &#039;Attempt quizzes&#039;;&lt;br /&gt;
 $string[&#039;quiz:deleteattempts&#039;] = &#039;Delete quiz attempts&#039;;&lt;br /&gt;
+$string[&#039;quiz:emailconfirmsubmission&#039;] = &#039;Receive own quiz submission notification&#039;;&lt;br /&gt;
+$string[&#039;quiz:emailnotifysubmission&#039;] = &#039;Receive student quiz submission notifications&#039;;&lt;br /&gt;
 $string[&#039;quiz:grade&#039;] = &#039;Grade quizzes manually&#039;;&lt;br /&gt;
-$string[&#039;quiz:ignoretimelimits&#039;] = &#039;Ignores time limit on quizzes&#039;;&lt;br /&gt;
+$string[&#039;quiz:ignoretimelimits&#039;] = &#039;Ignores time limit on quizs&#039;;&lt;br /&gt;
 $string[&#039;quiz:manage&#039;] = &#039;Manage quizzes&#039;;&lt;br /&gt;
 $string[&#039;quiz:preview&#039;] = &#039;Preview quizzes&#039;;&lt;br /&gt;
 $string[&#039;quiz:view&#039;] = &#039;View quiz information&#039;;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
At the top it says which file is being affected. Changes to several files can be included in one patch. Lines added are shown with a &#039;+&#039;, lines removed are shown with a &#039;-&#039;, lines changed are shown as the old line being removed and the new one added.&lt;br /&gt;
&lt;br /&gt;
Patch files are good because they only show the changed parts of the file. This has two advantages: it easy to understand the change; and if other parts of the same files change between the patch being made an being used, there is no problem, the patch will still apply.&lt;br /&gt;
&lt;br /&gt;
==Creating a patch using diff==&lt;br /&gt;
&lt;br /&gt;
diff is the a linux command line program, and is where patch files originated. It requires that you have two copies of the code, one with your changes, and one without. Suppose these two copies are in folders called &#039;standard_moodle&#039; and &#039;my_moodle&#039; which are subdirectories of the current folder. Then to create the patch, type:&lt;br /&gt;
&lt;br /&gt;
 diff -ur standard_moodle my_moodle &amp;gt; patch.txt&lt;br /&gt;
&lt;br /&gt;
==Creating a patch using CVS (command line)==&lt;br /&gt;
&lt;br /&gt;
It is easier if you are using CVS to manage your development, because you don&#039;t need to keep the copy of &#039;standard_moodle&#039;. CVS takes care of that for you. In you workspace (sandbox) type:&lt;br /&gt;
&lt;br /&gt;
 cvs diff -uN &amp;gt; patch.txt&lt;br /&gt;
&lt;br /&gt;
If you have unversioned files to include in your patch, you will notice that the above command simply adds the file&#039;s name to the top of your patch, prefixed with a question mark. This is because your new file is not tagged for adding to the repository. Just do&lt;br /&gt;
&lt;br /&gt;
 cvs add newfile&lt;br /&gt;
&lt;br /&gt;
Then &lt;br /&gt;
&lt;br /&gt;
 cvs diff -uNa &amp;gt; patch.txt&lt;br /&gt;
&lt;br /&gt;
This should add the correct code to the patch, so that someone applying the patch to their working copy will have a new file created at the right place (hopefully!).&lt;br /&gt;
&lt;br /&gt;
If your patch, for some reason, contains a lot of white space changes in many files, you might want to add -Bbw to the diff call. Make sure these changes are really not significant (like adding or removing a space at the end of a line - editors like Eclipse sometimes do this automatically). This can make a patch a lot smaller, and thus easier to review. The complete call would then be &lt;br /&gt;
&lt;br /&gt;
 cvs diff -uNawbB &amp;gt; patch.txt&lt;br /&gt;
&lt;br /&gt;
==Creating a patch using Tortoise CVS==&lt;br /&gt;
&lt;br /&gt;
[http://www.tortoisecvs.org/ Tortoise CVS] is a Windows GUI front end for CVS. To create a patch, right-click on a folder in CVS, and choose &#039;&#039;&#039;CVS -&amp;gt; Make patch ...&#039;&#039;&#039; from the context menu.&lt;br /&gt;
&lt;br /&gt;
==Creating a patch using Eclipse==&lt;br /&gt;
&lt;br /&gt;
See [[Development:Setting_up_Eclipse#Creating_a_patch]]. Eclipse makes creating patches really easy, once you have got it set up correctly.&lt;br /&gt;
&lt;br /&gt;
==Creating a patch using WinMerge==&lt;br /&gt;
&lt;br /&gt;
[http://winmerge.org/ WinMerge] is a nice windows GUI for comparing folders. In this sense it is like the original command-line &#039;diff&#039; program. You need a copy of &#039;standard_moodle&#039; and &#039;my_moodle&#039;. Use &#039;&#039;&#039;File -&amp;gt; Open...&#039;&#039;&#039; to open the two versions for comparison. This will give you a nice view of what you have changed. Then do &#039;&#039;&#039;Tools -&amp;gt; Generate patch ...&#039;&#039;&#039;. In the dialogue box, make sure you select Style: Unified in the Format box.&lt;/div&gt;</summary>
		<author><name>Scyrma</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/21/en/index.php?title=Development_talk:Setting_up_Eclipse&amp;diff=38326</id>
		<title>Development talk:Setting up Eclipse</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/21/en/index.php?title=Development_talk:Setting_up_Eclipse&amp;diff=38326"/>
		<updated>2008-06-26T01:28:32Z</updated>

		<summary type="html">&lt;p&gt;Scyrma: New section: Eclipse and whitespace&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Really nice work, Tim, thanks!   I&#039;ve been through and I&#039;m trying it out.    [[User:Martin Dougiamas|Martin Dougiamas]] 09:05, 5 September 2006 (CDT)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
The stuff about changing editors under General -&amp;gt; Editors -&amp;gt; File Associations doesn&#039;t work any more if an Eclipse plugin has &#039;locked&#039; a file type or content type. Not sure how to fix this&lt;br /&gt;
--[[User:Andy Baker|Andy Baker]] 06:40, 28 November 2006 (CST)&lt;br /&gt;
&lt;br /&gt;
Hopefully it will be the PHP plugin, and it will have locked *.php to the setting you want anyway. If not, can you tell us exactly what you are seeing.[[User:Tim Hunt|Tim Hunt]] 04:24, 29 November 2006 (CST)&lt;br /&gt;
&lt;br /&gt;
== Problems with Ubuntu 6.10... ==&lt;br /&gt;
&lt;br /&gt;
I&#039;d really like to switch completely to Linux and Eclipse on my Moodle developments. However, I can&#039;t get the PHPEclipse plug-in to work with Eclipse 3.2 that came with Ubuntu 6.10. After the Eclipse restart required by the &amp;quot;add . to the include path&amp;quot; tweak, the &amp;quot;PHPEclipse stuff&amp;quot; is gone from the menus (forgot what it said), and when I try to open a PHP file in Eclipse I get:&lt;br /&gt;
&amp;quot;Failed to execute runnable (java.lang.NoClassDefFoundError: net.sourceforge.phpeclipse.phpeditor.PHPUnitEditor)&amp;quot; and &amp;quot;Unhandled event loop exception&amp;quot;... Going to Google around a bit, but there seems to be a lot of other issues with the JVM also: Eclipse crashed when I tried to search the help, for example. --[[User:Samuli Karevaara|Samuli Karevaara]] 04:07, 20 December 2006 (CST)&lt;br /&gt;
:Just reporting that now the error message has changed to &amp;quot;Problems occurred when invoking code from plug-in: &amp;quot;org.eclipse.jface&amp;quot;.&amp;quot; or I was reading the wrong part of the error log before... --[[User:Samuli Karevaara|Samuli Karevaara]] 04:11, 20 December 2006 (CST)&lt;br /&gt;
:One headache later I was able to get Eclipse to open the PHP files. Apparently it was about the Java Runtime Environment version after all. I had &amp;quot;sun-java5-bin : Sun Java(TM) Runtime Environment (JRE) 5.0&amp;quot; package installed but it didn&#039;t help. After completely removing everything &amp;quot;Java 1.4&amp;quot; (&amp;quot;j2re1.4&amp;quot; and friends) and upgrading &amp;quot;libgjc&amp;quot; packages I got it to work. I reeeeally not a friend of Java versioning and library packaging! --[[User:Samuli Karevaara|Samuli Karevaara]] 06:05, 20 December 2006 (CST)&lt;br /&gt;
&lt;br /&gt;
== Ubuntu Eclipse Improvements ==&lt;br /&gt;
&lt;br /&gt;
Just found this:&lt;br /&gt;
http://wiki.liferay.com/index.php/Liferay_Development_Environment:_Ubuntu_Linux#Eclipse_IDE&lt;br /&gt;
&lt;br /&gt;
It may help a bit.&lt;br /&gt;
&lt;br /&gt;
There is a problem wiht the different java VM. If you set that the vm is the one of sun it must be like this everywere&lt;br /&gt;
I did that:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   $ sudo aptitude install eclipse-sdk&lt;br /&gt;
&lt;br /&gt;
Remove any reference to gcj in &lt;br /&gt;
     /etc/eclipse/java_home.&lt;br /&gt;
&lt;br /&gt;
edit the file /usr/bin/eclipse and comment&lt;br /&gt;
&lt;br /&gt;
    -Dgnu.gcj.precompiled.db.path=/var/lib/gcj-4.1/classmap.db et &lt;br /&gt;
   -Dgnu.gcj.runtime.VMClassLoader.library_control=never.&lt;br /&gt;
&lt;br /&gt;
For me now eclipse runs with no problem&lt;br /&gt;
&lt;br /&gt;
== Prefs file missing? ==&lt;br /&gt;
&lt;br /&gt;
Working through this bit:&lt;br /&gt;
&lt;br /&gt;
  Open the file net.sourceforge.phpeclipse.ui.prefs that is in the directory (your&lt;br /&gt;
  workspace)/.metadata/.plugins/org.eclipse.core.runtime/.settings in a text editor.&lt;br /&gt;
&lt;br /&gt;
the file is not there. net.sourceforge.phpeclipse.prefs is present, but does not have the line described.&lt;br /&gt;
&lt;br /&gt;
Also,&lt;br /&gt;
&lt;br /&gt;
  Under Team -&amp;gt; CVS -&amp;gt; SSH2 Connection Method,&lt;br /&gt;
&lt;br /&gt;
this path does not exist (working on Xandros with linux eclipse)&lt;br /&gt;
&lt;br /&gt;
[[User:Matt Gibson|Matt Gibson]] 16:48, 17 January 2008 (CST)&lt;br /&gt;
&lt;br /&gt;
== net.sourcegorge.phpeclipse.ui.prefs ==&lt;br /&gt;
&lt;br /&gt;
Note that in the documentation is:&lt;br /&gt;
- Look for a line in the file that starts _php_include_paths= &#039;&#039;&#039;If it is not there, add it at the end&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
In my case, it was nothing there, so I add the line &lt;br /&gt;
_php_include_paths=.&lt;br /&gt;
and work.&lt;br /&gt;
&lt;br /&gt;
== Under Team -&amp;gt; CVS -&amp;gt; SSH2 Connection Method ==&lt;br /&gt;
&lt;br /&gt;
I found this to be &#039;&#039;&#039;General -&amp;gt; Network Connections -&amp;gt; SSH2 -&amp;gt; Key Management&#039;&#039;&#039; (the documentation is updated).&lt;br /&gt;
&lt;br /&gt;
After generating a DSA key, and following the rest of the instructions, I finally finish setting up Eclipse.&lt;br /&gt;
&lt;br /&gt;
== Eclipse and whitespace ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(Moving this out of main page, so as not to confuse people with discussion...) I suggested ... Under &#039;&#039;&#039;General -&amp;gt; Compare/Patch&#039;&#039;&#039;, turn on &#039;&#039;&#039;Ignore white space&#039;&#039;&#039; if you plan to exchange patches with other developers or send patches on the tracker. This will make patches smaller and easier to compare. [[User:Mathieu Petit-Clair|Mathieu Petit-Clair]] 20:28, 25 June 2008 (CDT)&lt;br /&gt;
&lt;br /&gt;
Tim replied: but that is a very bad idea. Whitespace is important, you should not change it unnecessarily, and so whitespace changes should be included in patches.&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
You&#039;ve got good point there, whitespace is significant. But Eclipse seems to remove trailing space (eg. at the end of lines) by itself, and this makes patches I receive from Eclipse users impossible to apply after a few days of hacking in cvs head. :(  Is there a way to tell Eclipse not to remove whitespace by itself? I really like to work with patches, but when they&#039;re twice as big as they should be and don&#039;t apply, it makes it a nightmare... [[User:Mathieu Petit-Clair|Mathieu Petit-Clair]] 20:28, 25 June 2008 (CDT)&lt;/div&gt;</summary>
		<author><name>Scyrma</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/21/en/index.php?title=Development:Setting_up_Eclipse&amp;diff=38325</id>
		<title>Development:Setting up Eclipse</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/21/en/index.php?title=Development:Setting_up_Eclipse&amp;diff=38325"/>
		<updated>2008-06-26T01:23:33Z</updated>

		<summary type="html">&lt;p&gt;Scyrma: /* General settings */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://www.eclipse.org/ Eclipse] is an IDE originally designed for Java, but now with plugins for many languages including PHP. It has lots of very powerful features, and it is the editor that some Moodle developers like to use. Other (more) popular choices are vim and emacs.&lt;br /&gt;
&lt;br /&gt;
However, Eclipse is not the easiest program in the world to get started with, so I&#039;m going to take you through it step by step. These instructions assume Eclipse 3.2, the current version at the time of writing. It should not change much between releases.&lt;br /&gt;
&lt;br /&gt;
This article started off as a brain-dump by [[User:Tim Hunt|Tim Hunt]]. Since then, several other people have worked through it and made corrections, so the information here should be pretty accurate.&lt;br /&gt;
&lt;br /&gt;
==Prerequisites==&lt;br /&gt;
&lt;br /&gt;
Eclipse is written in Java, so I recommend getting the latest Java runtime environment from http://java.com/ for maximum speed and reliability.&lt;br /&gt;
&lt;br /&gt;
Eclipse is quite big, so I recommend lots of memory in your computer. I have used it on Windows, MacOS X and Linux, in each case with 1GB of memory, and that is plenty.&lt;br /&gt;
&lt;br /&gt;
==Installing Eclipse==&lt;br /&gt;
&lt;br /&gt;
Go to http://www.eclipse.org/downloads/. Click on the link corresponding to your operating system where it says &#039;&#039;&#039;Eclipse Classic&#039;&#039;&#039;. Choose a Mirror, and wait for the ~100MB download.&lt;br /&gt;
&lt;br /&gt;
You will notice that what you have got is a zip file (unless your system automatically decompresses it for you).&lt;br /&gt;
&lt;br /&gt;
On Windows, unzip it into &#039;&#039;&#039;C:\Program Files&#039;&#039;&#039; (all the files go into an &#039;&#039;&#039;Eclipse&#039;&#039;&#039; folder there). Then look in the Eclipse folder and drag Eclipse.exe to the Start menu/Desktop/Quicklaunch bar to make a shortcut for starting it.&lt;br /&gt;
&lt;br /&gt;
On MacOS, unzip and copy the Eclipse folder into Applications. Go into the Eclipse folder and drag the Eclipse app to the Dock for ease of launching.&lt;br /&gt;
&lt;br /&gt;
On Linux, unzip somewhere suitable, and make an easy way to launch it.&lt;br /&gt;
&lt;br /&gt;
==The first time you run Eclipse==&lt;br /&gt;
&lt;br /&gt;
The first time you launch Eclipse it does a bit of setup stuff, for instance, it create a &#039;&#039;&#039;workspace&#039;&#039;&#039;. This is where it stores the things you are working on. The default location is sensible on all platforms, so use that. &lt;br /&gt;
&lt;br /&gt;
For some reason, every time you start Eclipse, it asks you which workspace you want to use. I have never seen the need to have more than one, so I recommend turning on the checkbox that says &amp;quot;Use this as the default and do not ask again&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Another thing that happens the first time you run Eclipse is that you arrive at a welcome screen. This has links to various bits of help, which you can read if you like, but you probably don&#039;t need to if you are following these instructions. So find the button on the welcome page that closes it and gets you to the main Eclipse screen.&lt;br /&gt;
&lt;br /&gt;
==Installing the necessary plugins==&lt;br /&gt;
&lt;br /&gt;
By default, Eclipse comes with the Java tools. For everything else you will need to install some plugins.&lt;br /&gt;
&lt;br /&gt;
If you are sitting behind a web proxy, from the &#039;&#039;&#039;Window&#039;&#039;&#039; menu choose &#039;&#039;&#039;Preferences ...&#039;&#039;&#039;. Choose &#039;&#039;&#039;Install/Update&#039;&#039;&#039; from the tree view on the left, and enter the proxy information in the boxes on the right. If you aren&#039;t behind a proxy, ignore this step.&lt;br /&gt;
&lt;br /&gt;
From the &#039;&#039;&#039;Help&#039;&#039;&#039; menu choose &#039;&#039;&#039;Software Updates -&amp;gt; Find and Install&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
On the first screen of the wizard, make sure that &amp;quot;Search for new features to install&amp;quot; is selected, then click &#039;&#039;&#039;Next &amp;gt;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The next screen is a list of upgrade sites to check. You need to add one to the list, so click the &#039;&#039;&#039;New Remote Site ...&#039;&#039;&#039; Button.&lt;br /&gt;
&lt;br /&gt;
In the pop-up dialog, give the remote site a name like &#039;&#039;&#039;PHPeclipse Update Site&#039;&#039;&#039;; set the URL to http://phpeclipse.sourceforge.net/update/releases/; then click &#039;&#039;&#039;OK&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note, there is now also another PHP editor for Eclipse. The update URL ishttp://download.eclipse.org/tools/pdt/updates/. I am just trying it--[[User:Tim Hunt|Tim Hunt]] 11:39, 7 November 2007 (CST)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Back in the wizard, turn on just two things in the box &amp;quot;Sites to include in search&amp;quot;:&lt;br /&gt;
* Your newly created &#039;&#039;&#039;Phpeclipse Update Site&#039;&#039;&#039;; and&lt;br /&gt;
* the one called &#039;&#039;&#039;Europa Discovery Site&#039;&#039;&#039; (or possibly &#039;&#039;&#039;Callisto Discovery Site&#039;&#039;&#039;.&lt;br /&gt;
Then click &#039;&#039;&#039;Finish&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
It goes off sees what updates are available at those sites. As it does so, it may occasionally pop up a dialog asking you to choose a mirror. Each time, select a sensible one.&lt;br /&gt;
&lt;br /&gt;
Eventually, you get to a new wizard for selecting and installing the updates you want. The ones you want (you may have to search the tree structure) are, &#039;&#039;&#039;PHPeclipse&#039;&#039;&#039; (from your newly created PHPEclipse Update Site) and all the &#039;&#039;&#039;Web Standard Tools (WST)&#039;&#039;&#039; (usually under Callisto Discovery Site --&amp;gt; Web and J2EE Development).&lt;br /&gt;
&lt;br /&gt;
Next, and very importantly, you must click the &#039;&#039;&#039;Select Required&#039;&#039;&#039; button which should resolve dependencies and remove the warning message you are probably worrying about. Then you can click the &#039;&#039;&#039;Next &amp;gt;&#039;&#039;&#039; button.&lt;br /&gt;
&lt;br /&gt;
Read and agree to all the license agreements. Then click &#039;&#039;&#039;Next &amp;gt;&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
Click &#039;&#039;&#039;Finish&#039;&#039;&#039;, and wait for the plugins to download.&lt;br /&gt;
&lt;br /&gt;
Once the downloads have finished, a warning will pop-up telling you that all the plugins you downloaded are not digitally signed. The Eclipse Foundation build digital signing of plugins into their architecture as a security measure, and then did not sign any of their own plugins! Anyway, click the &#039;&#039;&#039;Install All&#039;&#039;&#039; button.&lt;br /&gt;
&lt;br /&gt;
Finally, a window will pop up asking you to restart Eclipse. Do so.&lt;br /&gt;
&lt;br /&gt;
==Setting the preferences for Moodle development==&lt;br /&gt;
&lt;br /&gt;
Now go to the &#039;&#039;&#039;Window&#039;&#039;&#039; menu, and choose &#039;&#039;&#039;Preferences ...&#039;&#039;&#039; (&#039;&#039;&#039;Eclipse&#039;&#039;&#039; menu on Mac OS X).&lt;br /&gt;
&lt;br /&gt;
The Eclipse preferences are immense, with a tree view on the left, which selects which screen to display on the right. Don&#039;t panic, we&#039;ll guide you through it.&lt;br /&gt;
&lt;br /&gt;
===General settings===&lt;br /&gt;
&lt;br /&gt;
If you have strong feelings about fonts (I would hate to edit code an anything except Andale Mono), choose &#039;&#039;&#039;General -&amp;gt; Appearance -&amp;gt; Colors and Fonts&#039;&#039;&#039; from the tree on the left. Then on the right look under &#039;&#039;&#039;Basic&#039;&#039;&#039; and change &#039;&#039;&#039;Text Font&#039;&#039;&#039;. All the other editor font settings will inherit from this, so this is probably the only one you have to change.&lt;br /&gt;
&lt;br /&gt;
Under &#039;&#039;&#039;General -&amp;gt; Content Types&#039;&#039;&#039;, select PHP Source File, and add &#039;&#039;&#039;*.html&#039;&#039;&#039; to the box at the bottom.&lt;br /&gt;
&lt;br /&gt;
Under &#039;&#039;&#039;General -&amp;gt; Editors -&amp;gt; File Associations&#039;&#039;&#039;, if it is not already there, add &#039;&#039;&#039;*.php&#039;&#039;&#039; to the top box. With &#039;&#039;&#039;*.php&#039;&#039;&#039; selected in the top box, make sure &#039;&#039;&#039;PHP Editor&#039;&#039;&#039; is set to default in the bottom box. With &#039;&#039;&#039;*.html&#039;&#039;&#039; selected in the top box, select &#039;&#039;&#039;PHP Editor&#039;&#039;&#039; in the bottom box and click the &#039;&#039;&#039;Default&#039;&#039;&#039; button to change it, because in Moodle, most HTML files actually contain PHP code.&lt;br /&gt;
&lt;br /&gt;
If you use a web proxy, enter the details under &#039;&#039;&#039;Internet -&amp;gt; Proxy Settings&#039;&#039;&#039;. (Yes, I know you have entered them somewhere else before. Now you have to enter them again here. I don&#039;t know why. You just do.)&lt;br /&gt;
&lt;br /&gt;
===PHP Settings===&lt;br /&gt;
&lt;br /&gt;
These are all hidden under the &#039;&#039;&#039;PHPeclipse Web Development&#039;&#039;&#039; bit of the tree.&lt;br /&gt;
&lt;br /&gt;
Under &#039;&#039;&#039;PHPeclipse Web Development -&amp;gt; Browser Preview Defaults&#039;&#039;&#039;, turn off both checkboxes.&lt;br /&gt;
&lt;br /&gt;
Under &#039;&#039;&#039;PHPeclipse Web Development -&amp;gt; PHP&#039;&#039;&#039;, on the &#039;&#039;&#039;Appearance&#039;&#039;&#039; tab, set &#039;&#039;&#039;Displayed tab width&#039;&#039;&#039; to 4.&lt;br /&gt;
&lt;br /&gt;
Under &#039;&#039;&#039;PHPeclipse Web Development -&amp;gt; PHP&#039;&#039;&#039;, on the &#039;&#039;&#039;Appearance&#039;&#039;&#039; tab, check &#039;&#039;&#039;Show line numbers&#039;&#039;&#039; to display line numbers in the left margin (optional). NOTE.- When you are editing a PHP file, you could left-click in the left margin and tick the &#039;&#039;&#039;Show Line Numbers&#039;&#039;&#039; line in the contextual menu. However, this toggle only applies to plain text files, &#039;&#039;not&#039;&#039; to HTML or PHP files. The only place where you can toggle line numbers on/off for such files is in the PHP/Appearance menu.&lt;br /&gt;
&lt;br /&gt;
Under &#039;&#039;&#039;PHPeclipse Web Development -&amp;gt; PHP&#039;&#039;&#039;, on the &#039;&#039;&#039;Typing&#039;&#039;&#039; tab, turn off all the options except &#039;&#039;&#039;Pasting for correct indentation&#039;&#039;&#039;, &#039;&#039;&#039;Insert spaces for tab&#039;&#039;&#039; and &#039;&#039;&#039;Close PHPdocs and comments&#039;&#039;&#039; and &#039;&#039;&#039;Remove trailing spaces on editor save&#039;&#039;&#039;. It would be nice to turn on more of these options, but most of the rest don&#039;t work very well.&lt;br /&gt;
&lt;br /&gt;
Under &#039;&#039;&#039;PHPeclipse Web Development -&amp;gt; PHP -&amp;gt; Formatter&#039;&#039;&#039;, on the &#039;&#039;&#039;New Lines&#039;&#039;&#039; tab, turn on &#039;&#039;&#039;Clear all blank lines&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Under &#039;&#039;&#039;PHPeclipse Web Development -&amp;gt; PHP -&amp;gt; Formatter&#039;&#039;&#039;, on the &#039;&#039;&#039;Style&#039;&#039;&#039; tab, turn off &#039;&#039;&#039;Indentation is represented by a tab&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Under &#039;&#039;&#039;PHPeclipse Web Development -&amp;gt; PHP -&amp;gt; Templates&#039;&#039;&#039;, I like to define a new template to help with debugging:&lt;br /&gt;
;Name&lt;br /&gt;
:dump &lt;br /&gt;
;Description&lt;br /&gt;
:Dump a PHP variable&lt;br /&gt;
;Pattern&lt;br /&gt;
&amp;lt;pre&amp;gt;print_object(${word_selection}${cursor}); // DONOTCOMMIT&amp;lt;/pre&amp;gt;&lt;br /&gt;
You can do other useful things with templates too. Here are two more I use:&lt;br /&gt;
&amp;lt;pre&amp;gt;debugging(&amp;quot;&#039;${word_selection}${cursor}&#039;&amp;quot;); // DONOTCOMMIT&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;$$string[&#039;${word_selection}${cursor}&#039;] = &#039;.&#039;;&amp;lt;/pre&amp;gt;&lt;br /&gt;
That is, a simple debug message with a stack trace, and a new language string.&lt;br /&gt;
&lt;br /&gt;
There is a really stupid bug. Under &#039;&#039;&#039;PHPeclipse Web Development -&amp;gt; Project Defaults&#039;&#039;&#039;, you would like to add &amp;quot;.&amp;quot; to the &#039;&#039;&#039;Include Paths&#039;&#039;&#039;, but you can&#039;t using the GUI. You will have to edit one of the Eclipse config files by hand. So&lt;br /&gt;
# Note down the path to your Eclipse profile. On Windows it will be something like &#039;&#039;&#039;C:/Documents and settings/XXXX/workspace&#039;&#039;&#039;, and on Unixy systems something like &#039;&#039;&#039;~/workspace&#039;&#039;&#039;.&lt;br /&gt;
# Close Eclipse. &lt;br /&gt;
# Open the file &#039;&#039;&#039;net.sourceforge.phpeclipse.ui.prefs&#039;&#039;&#039; that is in the directory &#039;&#039;&#039;(your workspace)/.metadata/.plugins/org.eclipse.core.runtime/.settings&#039;&#039;&#039; in a text editor.&lt;br /&gt;
# Look for a line in the file that starts &#039;&#039;&#039;_php_include_paths=&#039;&#039;&#039; If it is not there, add it at the end.&lt;br /&gt;
# Change this line to say &#039;&#039;&#039;_php_include_paths=.&#039;&#039;&#039;&lt;br /&gt;
# Run Eclipse again.&lt;br /&gt;
&lt;br /&gt;
===SSH2===&lt;br /&gt;
Information about generating SSH2 keys for the purpose of connecting to cvs.moodle.org can be found here at https://docs.moodle.org/en/Development:SSH_key , but please finish reading this section before reading that material.&lt;br /&gt;
&lt;br /&gt;
The Eclipse installation has its own SSH client plugin so you do not have to use a separate ssh client in connection with your use of Eclipse (this is one reason you will be using extssh below,  instead of just ext,  however,  if you wish you may alter the configuration to use an external client but please post news of your success and configuration). See, http://www.jcraft.com/eclipse-cvsssh2/ , for additional information on this plugin.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039; Since Eclipse 3.0M6 the CVSSSH plugin is incorporated into Eclipse, [http://www.jroller.com/prane/entry/eclipse_3_0_cvs_support as &amp;quot;extssh&amp;quot; instead of &amp;quot;extssh2&amp;quot;] - --[[User:Olli Savolainen|Olli Savolainen]] 07:54, 23  June 2008 (CDT)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Please note that Eclipse is fully equipped to generate ssh2 rsa and dsa keys as well as import keys.  You may encounter issues with passphrases that are too long (a bug reportedly fixed but which may still in fact be present) and some issues with using keypairs generated by other applications have been seen, so it may be best to generate a key pair with Eclipse. Additional details on how to do this will be added.&lt;br /&gt;
&lt;br /&gt;
Sourceforge, at http://sourceforge.net/docs/F02/ , provides instructions on how to create a SSH key for it&#039;s CVS (remember,  Moodle does not use sourceforge for its CVS now and you will need to generate keys for cvs.moodle.org, not sourceforge). This is mentioned by way of general explanation, not for the purposes of providing instructions on how to generate your keys for Eclipse. To make use of the public key, login to Moodle.org and add it via the Update My Developer Information tab under CVS Developers (http://moodle.org/cvs). Remember,  public keys provided to Moodle must be in the Openssh format.&lt;br /&gt;
&lt;br /&gt;
===CVS Settings===&lt;br /&gt;
&lt;br /&gt;
These are almost all hidden under the &#039;&#039;&#039;Team&#039;&#039;&#039; bit of the tree.&lt;br /&gt;
&lt;br /&gt;
Under &#039;&#039;&#039;General -&amp;gt; Network Connections -&amp;gt; SSH2 -&amp;gt; Key Management&#039;&#039;&#039;, you can set up a public/private key pair. If you do this, you won&#039;t have to keep typing your password when doing CVS operations. &lt;br /&gt;
&lt;br /&gt;
The rest of the ones in this section are personal preferences, but I recommend them because the default settings are very irritating.&lt;br /&gt;
&lt;br /&gt;
Under &#039;&#039;&#039;Team&#039;&#039;&#039;, set &#039;&#039;&#039;Perspectives&#039;&#039;&#039; to &#039;&#039;&#039;None&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Under &#039;&#039;&#039;Team -&amp;gt; CVS -&amp;gt; Annotate&#039;&#039;&#039; set &#039;&#039;&#039;Use Quick Diff annotate mode for local file annotations&#039;&#039;&#039; to &#039;&#039;&#039;Yes&#039;&#039;&#039;, and &#039;&#039;&#039;Open perspective after a &#039;Show Annotations&#039; operation&#039;&#039;&#039; to &#039;&#039;&#039;No&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Under &#039;&#039;&#039;Team -&amp;gt; CVS -&amp;gt; Label Decorations&#039;&#039;&#039;, switch to the &#039;&#039;&#039;Icon Decorations&#039;&#039;&#039; tab and turn on all the settings, and then on the &#039;&#039;&#039;Text Decorations&#039;&#039;&#039; tab change both &#039;&#039;&#039;File Decoration&#039;&#039;&#039; and &#039;&#039;&#039;Folder Decoration&#039;&#039;&#039; to be just &#039;&#039;&#039;{name}&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Web and XML settings===&lt;br /&gt;
&lt;br /&gt;
Foreach XXX in CSS, HTML, Javascript, XML:&lt;br /&gt;
&lt;br /&gt;
Under &#039;&#039;&#039;Web and XML -&amp;gt; XXX Files -&amp;gt;XXX Source&#039;&#039;&#039;, choose &#039;&#039;&#039;Indent using spaces&#039;&#039;&#039; and &#039;&#039;&#039;indentation size&#039;&#039;&#039; 4.&lt;br /&gt;
&lt;br /&gt;
==Checking out the Moodle code==&lt;br /&gt;
&lt;br /&gt;
From the &#039;&#039;&#039;File&#039;&#039;&#039; menu, choose &#039;&#039;&#039;New -&amp;gt; Project ...&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
In the wizard that pops up, choose &#039;&#039;&#039;CVS -&amp;gt; Projects from CVS&#039;&#039;&#039;, then click &#039;&#039;&#039;Next &amp;gt;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Select &#039;&#039;&#039;Create a new repository location&#039;&#039;&#039;, then click &#039;&#039;&#039;Next &amp;gt;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Fill in&lt;br /&gt;
&amp;lt;div style=&amp;quot;float: right; border: 1px solid orange; padding: 0 1em;&amp;quot;&amp;gt;&lt;br /&gt;
For anonymous CVS access use&lt;br /&gt;
;Host&lt;br /&gt;
:XX.cvs.moodle.org&lt;br /&gt;
where XX.cvs.moodle.org is one of [[CVS_for_Administrators#CVS_Servers|these mirrors]]&lt;br /&gt;
;Repository path&lt;br /&gt;
:/cvsroot/moodle&lt;br /&gt;
;User&lt;br /&gt;
:anonymous&lt;br /&gt;
;Password&lt;br /&gt;
:(leave blank)&lt;br /&gt;
;Connection type&lt;br /&gt;
:pserver&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
;Host&lt;br /&gt;
:cvs.moodle.org&lt;br /&gt;
;Repository path&lt;br /&gt;
:/cvsroot/moodle&lt;br /&gt;
;User&lt;br /&gt;
:(your Moodle CVS username)&lt;br /&gt;
;Password&lt;br /&gt;
:(if you set up the SSH2 key thing in preferences, leave this blank, otherwise, type in your Moodle CVS password.)&lt;br /&gt;
;Connection type&lt;br /&gt;
:extssh&lt;br /&gt;
(CVS experts, if you are confused by that last one, know it is an Eclipse-specific thing.) Then click &#039;&#039;&#039;Next &amp;gt;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
On the next screen of the Wizard, choose &#039;&#039;&#039;Use an existing module&#039;&#039;&#039;. Wait a moment, then select &#039;&#039;&#039;moodle&#039;&#039;&#039; from the list. Click &#039;&#039;&#039;Next &amp;gt;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
On the next screen, make sure the option &#039;&#039;&#039;Check out as a project configured using the New Project Wizard&#039;&#039;&#039; is selected, then click &#039;&#039;&#039;Next &amp;gt;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Click &#039;&#039;&#039;Refresh Tags&#039;&#039;&#039;, then choose the branch you want. For now leave it set to &#039;&#039;&#039;HEAD&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Click &#039;&#039;&#039;Finish&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now you  will find yourself back at the start of the &#039;&#039;&#039;New Project&#039;&#039;&#039; Wizard. This is because of the option you chose three paragraphs ago. This time you should select &#039;&#039;&#039;PHP -&amp;gt; PHP Project&#039;&#039;&#039;, then click &#039;&#039;&#039;Next &amp;gt;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Make up a project name. &#039;&#039;&#039;moodle&#039;&#039;&#039; would be sensible.&lt;br /&gt;
&lt;br /&gt;
Click &#039;&#039;&#039;Finish&#039;&#039;&#039;, and wait while all the moodle files are checked out of CVS.&lt;br /&gt;
&lt;br /&gt;
Once it has finished, it will probably ask you if you want to switch to the PHP perspective. Answer &#039;&#039;&#039;Yes&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you also need another branch (1.6, 1.7, 1.8, ...) repeat all the other steps with a few changes:&lt;br /&gt;
* This time you can choose &#039;&#039;&#039;Use an existing repository location&#039;&#039;&#039; instead of typing all the sourceforge CVS details again.&lt;br /&gt;
* Select the appropriate branch. If you don&#039;t see the branch you want, see [https://docs.moodle.org/en/Development:Setting_up_Eclipse#Resetting_the_branch_information this Troubleshooting tip].&lt;br /&gt;
* Use a different project name (e.g. moodle16, moodle17, etc.).&lt;br /&gt;
&lt;br /&gt;
==Let your development web server know where your files are==&lt;br /&gt;
&lt;br /&gt;
Either by editing you web server&#039;s config files, or using a symbolic link. Make sure your webserver can see your new working set of files at a sensible URL, so you can test the code you are working on.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Quick tour of some cool features, and remaining configuration changes==&lt;br /&gt;
&lt;br /&gt;
I find the default workbench setup is pretty good. Here is a quick guide to some of the bits.&lt;br /&gt;
&lt;br /&gt;
===Navigator===&lt;br /&gt;
&lt;br /&gt;
To the left is the &#039;&#039;&#039;Navigator&#039;&#039;&#039;. This is a tree view of all your files. If you double-click on a file, it opens in the editor in the middle. Try opening &#039;&#039;&#039;course/lib.php&#039;&#039;&#039; now. You will notice that it comes up nicely syntax-hightlighted.&lt;br /&gt;
&lt;br /&gt;
===Error highlighting===&lt;br /&gt;
&lt;br /&gt;
In the middle of the file, just type any old text, for example &amp;quot;I like Eclipse&amp;quot;. Obviously, this is not valid PHP syntax, and Eclipse will notice this, and put a red underline under it. Also, by the scrollbar is a ruler with a red mark in it to show the error.&lt;br /&gt;
&lt;br /&gt;
You will see some yellow marks lower down the ruler. There are warnings. Click on one, and you will be taken to where that warning is in the file. Hover your mouse over the warning, and you will get a tooltip explaining what the problem might be.&lt;br /&gt;
&lt;br /&gt;
Save the edited file. (Don&#039;t worry that it is broken, we&#039;ll clean up the mess later.) Notice that a red error marker is added to the file in the navigator, so you can see that there is a problem. Also, error markers are added to the course folder, and the whole project, so you could see there was an error even if the navigator tree was collapsed.&lt;br /&gt;
&lt;br /&gt;
You will probably find lots of warnings that the config.php file can&#039;t be found. In the navigator, find the file &#039;&#039;&#039;config-dist.php&#039;&#039;&#039;. Do &#039;&#039;&#039;Copy&#039;&#039;&#039; then &#039;&#039;&#039;Paste&#039;&#039;&#039; and choose to call the new file &#039;&#039;&#039;config.php&#039;&#039;&#039;. Edit this new config.php as normal. You should fine that most of the include file warnings have gone now.&lt;br /&gt;
&lt;br /&gt;
Notice also that there is another marker on each file icon. A little yellow cylinder on most files, but a white-on-brown star on the one you have edited. This is telling you the CVS status of each file. The brown stars are changes you have made but not checked in yet.&lt;br /&gt;
&lt;br /&gt;
===Outline===&lt;br /&gt;
&lt;br /&gt;
Over to the right is the Outline view. This shows a list of functions and classes defined in this file. By default, they are listed in the same order as in the file, but if you click on the &#039;&#039;&#039;az&#039;&#039;&#039; toolbar button, they are sorted into alphabetical order.&lt;br /&gt;
&lt;br /&gt;
Click on the function name &#039;&#039;&#039;add_course_module&#039;&#039;&#039; in the Outline. You will see that the editor scrolls to the definition of that function.&lt;br /&gt;
&lt;br /&gt;
===Code navigation===&lt;br /&gt;
&lt;br /&gt;
In that function, hover the mouse pointer over the function name &#039;&#039;&#039;insert_record&#039;&#039;&#039;. After a while, the documentation for that function will appear in a big tooltip.&lt;br /&gt;
&lt;br /&gt;
Hold down CTRL, move the mouse pointer over the function name &#039;&#039;&#039;insert_record&#039;&#039;&#039;, then click. Eclipse should load &#039;&#039;&#039;dmllib.php&#039;&#039;&#039;, and scroll you to where this function is defined.&lt;br /&gt;
&lt;br /&gt;
In the main Eclipse toolbar, there are forward and back arrows like in a web browser. Click back now to get back to &#039;&#039;&#039;course/lib.php&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Open resource===&lt;br /&gt;
&lt;br /&gt;
From the &#039;&#039;&#039;Navigate&#039;&#039;&#039; menu, choose &#039;&#039;&#039;Open Resource...&#039;&#039;&#039;. In the dialog that pops up, start typing a filename for instance type &#039;&#039;&#039;moodlel&#039;&#039;&#039;. In the box in the middle of the dialog, you will see it list all the files in the project whose names start that way. At the bottom is a box which lists the different folders that contain a file with that name. This can be a very quick way of opening files with fairly unique names like moodlelib.php, without having to click through the levels of the navigator tree. Of course, it is not so useful for an index.php file! Click OK now to open moodlelib.php. (It would actually work if you just did CTRL + Shift + R, moodlel, Enter.)&lt;br /&gt;
&lt;br /&gt;
===Multi-file search===&lt;br /&gt;
&lt;br /&gt;
Scroll down moodlelib a little bit, and double click on the name of the constant &#039;&#039;&#039;MOODLE_INTERNAL&#039;&#039;&#039; where it is defined, so that the text is selected. Then, from the &#039;&#039;&#039;Search&#039;&#039;&#039; menu, choose &#039;&#039;&#039;Search...&#039;&#039;&#039;. Notice that the &#039;&#039;&#039;Containing text&#039;&#039;&#039; box has already been filled in for you with the text you just selected. Of course you can just type text into this box without selecting it first. Notice that you can do regular expression searches, but leave that turned off for now. In the &#039;&#039;&#039;File name patterns&#039;&#039;&#039; box type &#039;&#039;&#039;*.css, *.html, *.inc, *.js, *.php, *.xml&#039;&#039;&#039;. (This is the most useful general setting for working on moodle. Eclipse will remember this setting, so you only have to enter it once.) Click &#039;&#039;&#039;Search&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The search results will appear in a new view underneath the editor. That view has a toolbar with yellow up and down arrows. Click the down arrow a few times and it will take you to the first few matches in the code, opening the relevant files as necessary.&lt;br /&gt;
&lt;br /&gt;
===Synchronize view===&lt;br /&gt;
&lt;br /&gt;
I think this is my favorite feature. From the &#039;&#039;&#039;Window&#039;&#039;&#039; menu, select &#039;&#039;&#039;Show View -&amp;gt; Other...&#039;&#039;&#039;. In the dialog that pops up, select &#039;&#039;&#039;Team -&amp;gt; Synchronize&#039;&#039;&#039;, then click &#039;&#039;&#039;OK&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
This opens the Synchronize view below the editor. The view has a toolbar. Click on the first toolbar button, which pops up the Synchronize wizard.&lt;br /&gt;
&lt;br /&gt;
On the first screen, there will probably only be one option: &#039;&#039;&#039;CVS&#039;&#039;&#039;. Make sure that is selected, then click &#039;&#039;&#039;Next &amp;gt;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Under &#039;&#039;&#039;Scope&#039;&#039;&#039;, choose &#039;&#039;&#039;Workspace&#039;&#039;&#039;, then click &#039;&#039;&#039;Finish&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Wait while it talks to the CVS server. After a while, you will see that the Synchronize view lists course/lib.php, and something called &#039;&#039;&#039;.project.... That is, it is listing just the files you have edited, but not checked in yet.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;.project&#039;&#039;&#039; is something that belongs to Eclipse that we don&#039;t care about. So select it and bring up the context menu, and choose &#039;&#039;&#039;Add to .cvsignore...&#039;&#039;&#039;. In the dialog that pops up, choose the top option, then click &#039;&#039;&#039;OK&#039;&#039;&#039;. Then you will find the Synchronize view shows you a &#039;&#039;&#039;.cvsignore&#039;&#039;&#039; file that you aren&#039;t interested in, so add that to .cvsignore too!&lt;br /&gt;
&lt;br /&gt;
If you double-click on &#039;&#039;&#039;course/lib.php&#039;&#039;&#039; here, you will see that it opens the compare editor, which is a nice graphical display of the changes in this file.&lt;br /&gt;
&lt;br /&gt;
If you select a file or files here, then bring up the context menu, you will see the option to &#039;&#039;&#039;Commit...&#039;&#039;&#039; the changes. (But don&#039;t do that now!). This is the easiest way to commit things in Eclipse.&lt;br /&gt;
&lt;br /&gt;
However, our changes were rubbish, so we want to undo them. So open the context menu again, and choose &#039;&#039;&#039;Override and Update&#039;&#039;&#039;. This checks a clean copy of the file out of CVS, removing our changes.&lt;br /&gt;
&lt;br /&gt;
Note that the easiest way to do an ordinary CVS Update is to select the top-level project-folder in the Navigator view on the left, open the context menu, and choose &#039;&#039;&#039;Team -&amp;gt; Update&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
That&#039;s all the really important features. I sure you can learn everything else on your own. An you could always read the built in help!&lt;br /&gt;
&lt;br /&gt;
===Creating a patch===&lt;br /&gt;
&lt;br /&gt;
In the synchronise view, right click on an item (file or folder) and choose &#039;&#039;&#039;Create Patch...&#039;&#039;&#039;. Or in the navigator, right click on an item and choose &#039;&#039;&#039;Team -&amp;gt; Create Patch...&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
This brings up a two-page wizard. On the first page you can select where you want the patch made. For small patches it can be useful to create them on the clipboard, but normally you will want to save them in a file.&lt;br /&gt;
&lt;br /&gt;
On the second page, you can set some options, but normally you don&#039;t need to change the defaults which are &#039;&#039;&#039;Unified&#039;&#039;&#039; diff format, and Patch root set to &#039;&#039;&#039;Workspace&#039;&#039;&#039;. Well, sometimes it is helpful to change the second one to &#039;&#039;&#039;Project&#039;&#039;&#039; but it is not important.&lt;br /&gt;
&lt;br /&gt;
There is a corresponding apply patch wizard that you can use to apply a patch to a project.&lt;br /&gt;
&lt;br /&gt;
===Switching to another branch or version===&lt;br /&gt;
&lt;br /&gt;
Suppose you have been using a check-out of HEAD from CVS, and then as the 1.9 release approaches, the MOODLE_19_STABLE branch is created, and you want to start following that instead.&lt;br /&gt;
# Right click on the moodle project in the navigator view, and select &#039;&#039;&#039;Team -&amp;gt; Switch to Another Branch or Version ...&#039;&#039;&#039;.&lt;br /&gt;
# choose the second radio button: &#039;&#039;&#039;Select the tag from the following list&#039;&#039;&#039;.&lt;br /&gt;
# If the branch you want is not in the &#039;&#039;&#039;Matching tags&#039;&#039;&#039; box, see [[Development:Setting_up_Eclipse#Resetting the branch information|Resetting the branch information]] below.&lt;br /&gt;
# Select the branch you want and click &#039;&#039;&#039;Finish&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Troubleshooting==&lt;br /&gt;
&lt;br /&gt;
Some tips on how to solve common problems that may crop up.&lt;br /&gt;
&lt;br /&gt;
===Resetting the branch information===&lt;br /&gt;
&lt;br /&gt;
Every now and then, Eclipse may lose information on the branch tags it knows about. Hitting refresh tags may fix it, but if not, try the following:&lt;br /&gt;
&lt;br /&gt;
#Bring up the tag dialogue (example using &amp;quot;Team / Switch to Another Branch or Version&amp;quot;).&lt;br /&gt;
#Click on Configure tags ... (not Refresh tags).&lt;br /&gt;
#Select config-dist.php in the top left box (if this is a Moodle checkout).&lt;br /&gt;
#Click Add Checked tags.&lt;br /&gt;
#Click OK.&lt;br /&gt;
#Then you will have all tags.&lt;br /&gt;
&lt;br /&gt;
(thanks to Tim Hunt)&lt;br /&gt;
&lt;br /&gt;
This info saved my day to find all branches:&lt;br /&gt;
   1. Window-&amp;gt;Show View-&amp;gt;Other. Select CVS-&amp;gt;CVS Repositories.&lt;br /&gt;
   2. Context Menu-&amp;gt;New-&amp;gt;Repository Location...&lt;br /&gt;
   3. Fill in the location information identifying your repository and click Finish.&lt;br /&gt;
   4. Expand the newly-created repository location.&lt;br /&gt;
   5. Add the branch:&lt;br /&gt;
         1. right click on it and expand configure branches and versions&lt;br /&gt;
         2. Expand HEAD and select the project moodle.&lt;br /&gt;
         3. Context Menu-&amp;gt;Configure Branches and Versions...&lt;br /&gt;
         4. In the &amp;quot;Browse files for tags&amp;quot; table, select one or more files &lt;br /&gt;
            that contain tags you would like to see (for example scroll down &lt;br /&gt;
            to find config.php).&lt;br /&gt;
         5. On the right the existing tags will appear.&lt;br /&gt;
         6. select the tags: for example MOODLE_15_STABLE&lt;br /&gt;
         7. Click &amp;quot;Add Selected Tags&amp;quot;.&lt;br /&gt;
         8. Click &amp;quot;OK&amp;quot;.&lt;br /&gt;
   6. locate branches, MOODLE_19_STABLE, moodle MOODLE_19_STABLE.&lt;br /&gt;
   7. Context Menu-&amp;gt;Check Out As Project.&lt;br /&gt;
(&amp;quot;stolen&amp;quot; from  Joan Codina Filba	&lt;br /&gt;
General developer forum -&amp;gt; Moodle floating &amp;quot;block&amp;quot;/toolbar released -&amp;gt; Re: Moodle floating &amp;quot;block--PATCH FOR GRADES &amp;amp; ASIGNMENT --PROBLEM)&lt;br /&gt;
&lt;br /&gt;
===Error loading php files after Ubuntu 7.04 Install===&lt;br /&gt;
&lt;br /&gt;
A java issue with Ubuntu 7.04 may cause an error when you attempt to load php pages. Refer to:&lt;br /&gt;
http://www.plog4u.org/index.php/Using_PHPEclipse_:_Installation_:_Installing_PHPEclipse for details about how to fix this in Ubuntu 7.04.&lt;br /&gt;
&lt;br /&gt;
After upgrading from Ubuntu 7.04 to 7.10, I had to go in and re-edit the /etc/eclipse/java_home file in order to get the CVS functions to work and be able to open PHP files. When I tried to do a CVS update I initially received an error about org.eclipse.team.internal.ccvs.ui.wizards.CheckoutWizard). Everything seemed to work again after reapplying the fix for the aforementioned 7.04 java issue.&lt;br /&gt;
&lt;br /&gt;
==Related Links==&lt;br /&gt;
&lt;br /&gt;
There is an excellent series of articles published by IBM on using Eclipse for Drupal developement here : [http://www-128.ibm.com/developerworks/ibm/osource/index.html Using open source software to design, develop, and deploy a collaborative Web site Tools and techniques for getting relatively complicated Web sites up and running quickly].&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer|Setting up Eclipse]]&lt;/div&gt;</summary>
		<author><name>Scyrma</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/21/en/index.php?title=Development:Setting_up_Eclipse&amp;diff=38279</id>
		<title>Development:Setting up Eclipse</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/21/en/index.php?title=Development:Setting_up_Eclipse&amp;diff=38279"/>
		<updated>2008-06-25T07:10:39Z</updated>

		<summary type="html">&lt;p&gt;Scyrma: /* General settings */ ignore whitespace in patches&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://www.eclipse.org/ Eclipse] is an IDE originally designed for Java, but now with plugins for many languages including PHP. It has lots of very powerful features, and it is the editor that some Moodle developers like to use. Other (more) popular choices are vim and emacs.&lt;br /&gt;
&lt;br /&gt;
However, Eclipse is not the easiest program in the world to get started with, so I&#039;m going to take you through it step by step. These instructions assume Eclipse 3.2, the current version at the time of writing. It should not change much between releases.&lt;br /&gt;
&lt;br /&gt;
This article started off as a brain-dump by [[User:Tim Hunt|Tim Hunt]]. Since then, several other people have worked through it and made corrections, so the information here should be pretty accurate.&lt;br /&gt;
&lt;br /&gt;
==Prerequisites==&lt;br /&gt;
&lt;br /&gt;
Eclipse is written in Java, so I recommend getting the latest Java runtime environment from http://java.com/ for maximum speed and reliability.&lt;br /&gt;
&lt;br /&gt;
Eclipse is quite big, so I recommend lots of memory in your computer. I have used it on Windows, MacOS X and Linux, in each case with 1GB of memory, and that is plenty.&lt;br /&gt;
&lt;br /&gt;
==Installing Eclipse==&lt;br /&gt;
&lt;br /&gt;
Go to http://www.eclipse.org/downloads/. Click on the link corresponding to your operating system where it says &#039;&#039;&#039;Eclipse Classic&#039;&#039;&#039;. Choose a Mirror, and wait for the ~100MB download.&lt;br /&gt;
&lt;br /&gt;
You will notice that what you have got is a zip file (unless your system automatically decompresses it for you).&lt;br /&gt;
&lt;br /&gt;
On Windows, unzip it into &#039;&#039;&#039;C:\Program Files&#039;&#039;&#039; (all the files go into an &#039;&#039;&#039;Eclipse&#039;&#039;&#039; folder there). Then look in the Eclipse folder and drag Eclipse.exe to the Start menu/Desktop/Quicklaunch bar to make a shortcut for starting it.&lt;br /&gt;
&lt;br /&gt;
On MacOS, unzip and copy the Eclipse folder into Applications. Go into the Eclipse folder and drag the Eclipse app to the Dock for ease of launching.&lt;br /&gt;
&lt;br /&gt;
On Linux, unzip somewhere suitable, and make an easy way to launch it.&lt;br /&gt;
&lt;br /&gt;
==The first time you run Eclipse==&lt;br /&gt;
&lt;br /&gt;
The first time you launch Eclipse it does a bit of setup stuff, for instance, it create a &#039;&#039;&#039;workspace&#039;&#039;&#039;. This is where it stores the things you are working on. The default location is sensible on all platforms, so use that. &lt;br /&gt;
&lt;br /&gt;
For some reason, every time you start Eclipse, it asks you which workspace you want to use. I have never seen the need to have more than one, so I recommend turning on the checkbox that says &amp;quot;Use this as the default and do not ask again&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Another thing that happens the first time you run Eclipse is that you arrive at a welcome screen. This has links to various bits of help, which you can read if you like, but you probably don&#039;t need to if you are following these instructions. So find the button on the welcome page that closes it and gets you to the main Eclipse screen.&lt;br /&gt;
&lt;br /&gt;
==Installing the necessary plugins==&lt;br /&gt;
&lt;br /&gt;
By default, Eclipse comes with the Java tools. For everything else you will need to install some plugins.&lt;br /&gt;
&lt;br /&gt;
If you are sitting behind a web proxy, from the &#039;&#039;&#039;Window&#039;&#039;&#039; menu choose &#039;&#039;&#039;Preferences ...&#039;&#039;&#039;. Choose &#039;&#039;&#039;Install/Update&#039;&#039;&#039; from the tree view on the left, and enter the proxy information in the boxes on the right. If you aren&#039;t behind a proxy, ignore this step.&lt;br /&gt;
&lt;br /&gt;
From the &#039;&#039;&#039;Help&#039;&#039;&#039; menu choose &#039;&#039;&#039;Software Updates -&amp;gt; Find and Install&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
On the first screen of the wizard, make sure that &amp;quot;Search for new features to install&amp;quot; is selected, then click &#039;&#039;&#039;Next &amp;gt;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The next screen is a list of upgrade sites to check. You need to add one to the list, so click the &#039;&#039;&#039;New Remote Site ...&#039;&#039;&#039; Button.&lt;br /&gt;
&lt;br /&gt;
In the pop-up dialog, give the remote site a name like &#039;&#039;&#039;PHPeclipse Update Site&#039;&#039;&#039;; set the URL to http://phpeclipse.sourceforge.net/update/releases/; then click &#039;&#039;&#039;OK&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note, there is now also another PHP editor for Eclipse. The update URL ishttp://download.eclipse.org/tools/pdt/updates/. I am just trying it--[[User:Tim Hunt|Tim Hunt]] 11:39, 7 November 2007 (CST)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Back in the wizard, turn on just two things in the box &amp;quot;Sites to include in search&amp;quot;:&lt;br /&gt;
* Your newly created &#039;&#039;&#039;Phpeclipse Update Site&#039;&#039;&#039;; and&lt;br /&gt;
* the one called &#039;&#039;&#039;Europa Discovery Site&#039;&#039;&#039; (or possibly &#039;&#039;&#039;Callisto Discovery Site&#039;&#039;&#039;.&lt;br /&gt;
Then click &#039;&#039;&#039;Finish&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
It goes off sees what updates are available at those sites. As it does so, it may occasionally pop up a dialog asking you to choose a mirror. Each time, select a sensible one.&lt;br /&gt;
&lt;br /&gt;
Eventually, you get to a new wizard for selecting and installing the updates you want. The ones you want (you may have to search the tree structure) are, &#039;&#039;&#039;PHPeclipse&#039;&#039;&#039; (from your newly created PHPEclipse Update Site) and all the &#039;&#039;&#039;Web Standard Tools (WST)&#039;&#039;&#039; (usually under Callisto Discovery Site --&amp;gt; Web and J2EE Development).&lt;br /&gt;
&lt;br /&gt;
Next, and very importantly, you must click the &#039;&#039;&#039;Select Required&#039;&#039;&#039; button which should resolve dependencies and remove the warning message you are probably worrying about. Then you can click the &#039;&#039;&#039;Next &amp;gt;&#039;&#039;&#039; button.&lt;br /&gt;
&lt;br /&gt;
Read and agree to all the license agreements. Then click &#039;&#039;&#039;Next &amp;gt;&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
Click &#039;&#039;&#039;Finish&#039;&#039;&#039;, and wait for the plugins to download.&lt;br /&gt;
&lt;br /&gt;
Once the downloads have finished, a warning will pop-up telling you that all the plugins you downloaded are not digitally signed. The Eclipse Foundation build digital signing of plugins into their architecture as a security measure, and then did not sign any of their own plugins! Anyway, click the &#039;&#039;&#039;Install All&#039;&#039;&#039; button.&lt;br /&gt;
&lt;br /&gt;
Finally, a window will pop up asking you to restart Eclipse. Do so.&lt;br /&gt;
&lt;br /&gt;
==Setting the preferences for Moodle development==&lt;br /&gt;
&lt;br /&gt;
Now go to the &#039;&#039;&#039;Window&#039;&#039;&#039; menu, and choose &#039;&#039;&#039;Preferences ...&#039;&#039;&#039; (&#039;&#039;&#039;Eclipse&#039;&#039;&#039; menu on Mac OS X).&lt;br /&gt;
&lt;br /&gt;
The Eclipse preferences are immense, with a tree view on the left, which selects which screen to display on the right. Don&#039;t panic, we&#039;ll guide you through it.&lt;br /&gt;
&lt;br /&gt;
===General settings===&lt;br /&gt;
&lt;br /&gt;
If you have strong feelings about fonts (I would hate to edit code an anything except Andale Mono), choose &#039;&#039;&#039;General -&amp;gt; Appearance -&amp;gt; Colors and Fonts&#039;&#039;&#039; from the tree on the left. Then on the right look under &#039;&#039;&#039;Basic&#039;&#039;&#039; and change &#039;&#039;&#039;Text Font&#039;&#039;&#039;. All the other editor font settings will inherit from this, so this is probably the only one you have to change.&lt;br /&gt;
&lt;br /&gt;
Under &#039;&#039;&#039;General -&amp;gt; Compare/Patch&#039;&#039;&#039;, turn on &#039;&#039;&#039;Ignore white space&#039;&#039;&#039; if you plan to exchange patches with other developers or send patches on the tracker. This will make patches smaller and easier to compare.&lt;br /&gt;
&lt;br /&gt;
Under &#039;&#039;&#039;General -&amp;gt; Content Types&#039;&#039;&#039;, select PHP Source File, and add &#039;&#039;&#039;*.html&#039;&#039;&#039; to the box at the bottom.&lt;br /&gt;
&lt;br /&gt;
Under &#039;&#039;&#039;General -&amp;gt; Editors -&amp;gt; File Associations&#039;&#039;&#039;, if it is not already there, add &#039;&#039;&#039;*.php&#039;&#039;&#039; to the top box. With &#039;&#039;&#039;*.php&#039;&#039;&#039; selected in the top box, make sure &#039;&#039;&#039;PHP Editor&#039;&#039;&#039; is set to default in the bottom box. With &#039;&#039;&#039;*.html&#039;&#039;&#039; selected in the top box, select &#039;&#039;&#039;PHP Editor&#039;&#039;&#039; in the bottom box and click the &#039;&#039;&#039;Default&#039;&#039;&#039; button to change it, because in Moodle, most HTML files actually contain PHP code.&lt;br /&gt;
&lt;br /&gt;
If you use a web proxy, enter the details under &#039;&#039;&#039;Internet -&amp;gt; Proxy Settings&#039;&#039;&#039;. (Yes, I know you have entered them somewhere else before. Now you have to enter them again here. I don&#039;t know why. You just do.)&lt;br /&gt;
&lt;br /&gt;
===PHP Settings===&lt;br /&gt;
&lt;br /&gt;
These are all hidden under the &#039;&#039;&#039;PHPeclipse Web Development&#039;&#039;&#039; bit of the tree.&lt;br /&gt;
&lt;br /&gt;
Under &#039;&#039;&#039;PHPeclipse Web Development -&amp;gt; Browser Preview Defaults&#039;&#039;&#039;, turn off both checkboxes.&lt;br /&gt;
&lt;br /&gt;
Under &#039;&#039;&#039;PHPeclipse Web Development -&amp;gt; PHP&#039;&#039;&#039;, on the &#039;&#039;&#039;Appearance&#039;&#039;&#039; tab, set &#039;&#039;&#039;Displayed tab width&#039;&#039;&#039; to 4.&lt;br /&gt;
&lt;br /&gt;
Under &#039;&#039;&#039;PHPeclipse Web Development -&amp;gt; PHP&#039;&#039;&#039;, on the &#039;&#039;&#039;Appearance&#039;&#039;&#039; tab, check &#039;&#039;&#039;Show line numbers&#039;&#039;&#039; to display line numbers in the left margin (optional). NOTE.- When you are editing a PHP file, you could left-click in the left margin and tick the &#039;&#039;&#039;Show Line Numbers&#039;&#039;&#039; line in the contextual menu. However, this toggle only applies to plain text files, &#039;&#039;not&#039;&#039; to HTML or PHP files. The only place where you can toggle line numbers on/off for such files is in the PHP/Appearance menu.&lt;br /&gt;
&lt;br /&gt;
Under &#039;&#039;&#039;PHPeclipse Web Development -&amp;gt; PHP&#039;&#039;&#039;, on the &#039;&#039;&#039;Typing&#039;&#039;&#039; tab, turn off all the options except &#039;&#039;&#039;Pasting for correct indentation&#039;&#039;&#039;, &#039;&#039;&#039;Insert spaces for tab&#039;&#039;&#039; and &#039;&#039;&#039;Close PHPdocs and comments&#039;&#039;&#039; and &#039;&#039;&#039;Remove trailing spaces on editor save&#039;&#039;&#039;. It would be nice to turn on more of these options, but most of the rest don&#039;t work very well.&lt;br /&gt;
&lt;br /&gt;
Under &#039;&#039;&#039;PHPeclipse Web Development -&amp;gt; PHP -&amp;gt; Formatter&#039;&#039;&#039;, on the &#039;&#039;&#039;New Lines&#039;&#039;&#039; tab, turn on &#039;&#039;&#039;Clear all blank lines&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Under &#039;&#039;&#039;PHPeclipse Web Development -&amp;gt; PHP -&amp;gt; Formatter&#039;&#039;&#039;, on the &#039;&#039;&#039;Style&#039;&#039;&#039; tab, turn off &#039;&#039;&#039;Indentation is represented by a tab&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Under &#039;&#039;&#039;PHPeclipse Web Development -&amp;gt; PHP -&amp;gt; Templates&#039;&#039;&#039;, I like to define a new template to help with debugging:&lt;br /&gt;
;Name&lt;br /&gt;
:dump &lt;br /&gt;
;Description&lt;br /&gt;
:Dump a PHP variable&lt;br /&gt;
;Pattern&lt;br /&gt;
&amp;lt;pre&amp;gt;print_object(${word_selection}${cursor}); // DONOTCOMMIT&amp;lt;/pre&amp;gt;&lt;br /&gt;
You can do other useful things with templates too. Here are two more I use:&lt;br /&gt;
&amp;lt;pre&amp;gt;debugging(&amp;quot;&#039;${word_selection}${cursor}&#039;&amp;quot;); // DONOTCOMMIT&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;$$string[&#039;${word_selection}${cursor}&#039;] = &#039;.&#039;;&amp;lt;/pre&amp;gt;&lt;br /&gt;
That is, a simple debug message with a stack trace, and a new language string.&lt;br /&gt;
&lt;br /&gt;
There is a really stupid bug. Under &#039;&#039;&#039;PHPeclipse Web Development -&amp;gt; Project Defaults&#039;&#039;&#039;, you would like to add &amp;quot;.&amp;quot; to the &#039;&#039;&#039;Include Paths&#039;&#039;&#039;, but you can&#039;t using the GUI. You will have to edit one of the Eclipse config files by hand. So&lt;br /&gt;
# Note down the path to your Eclipse profile. On Windows it will be something like &#039;&#039;&#039;C:/Documents and settings/XXXX/workspace&#039;&#039;&#039;, and on Unixy systems something like &#039;&#039;&#039;~/workspace&#039;&#039;&#039;.&lt;br /&gt;
# Close Eclipse. &lt;br /&gt;
# Open the file &#039;&#039;&#039;net.sourceforge.phpeclipse.ui.prefs&#039;&#039;&#039; that is in the directory &#039;&#039;&#039;(your workspace)/.metadata/.plugins/org.eclipse.core.runtime/.settings&#039;&#039;&#039; in a text editor.&lt;br /&gt;
# Look for a line in the file that starts &#039;&#039;&#039;_php_include_paths=&#039;&#039;&#039; If it is not there, add it at the end.&lt;br /&gt;
# Change this line to say &#039;&#039;&#039;_php_include_paths=.&#039;&#039;&#039;&lt;br /&gt;
# Run Eclipse again.&lt;br /&gt;
&lt;br /&gt;
===SSH2===&lt;br /&gt;
Information about generating SSH2 keys for the purpose of connecting to cvs.moodle.org can be found here at https://docs.moodle.org/en/Development:SSH_key , but please finish reading this section before reading that material.&lt;br /&gt;
&lt;br /&gt;
The Eclipse installation has its own SSH client plugin so you do not have to use a separate ssh client in connection with your use of Eclipse (this is one reason you will be using extssh below,  instead of just ext,  however,  if you wish you may alter the configuration to use an external client but please post news of your success and configuration). See, http://www.jcraft.com/eclipse-cvsssh2/ , for additional information on this plugin.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039; Since Eclipse 3.0M6 the CVSSSH plugin is incorporated into Eclipse, [http://www.jroller.com/prane/entry/eclipse_3_0_cvs_support as &amp;quot;extssh&amp;quot; instead of &amp;quot;extssh2&amp;quot;] - --[[User:Olli Savolainen|Olli Savolainen]] 07:54, 23  June 2008 (CDT)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Please note that Eclipse is fully equipped to generate ssh2 rsa and dsa keys as well as import keys.  You may encounter issues with passphrases that are too long (a bug reportedly fixed but which may still in fact be present) and some issues with using keypairs generated by other applications have been seen, so it may be best to generate a key pair with Eclipse. Additional details on how to do this will be added.&lt;br /&gt;
&lt;br /&gt;
Sourceforge, at http://sourceforge.net/docs/F02/ , provides instructions on how to create a SSH key for it&#039;s CVS (remember,  Moodle does not use sourceforge for its CVS now and you will need to generate keys for cvs.moodle.org, not sourceforge). This is mentioned by way of general explanation, not for the purposes of providing instructions on how to generate your keys for Eclipse. To make use of the public key, login to Moodle.org and add it via the Update My Developer Information tab under CVS Developers (http://moodle.org/cvs). Remember,  public keys provided to Moodle must be in the Openssh format.&lt;br /&gt;
&lt;br /&gt;
===CVS Settings===&lt;br /&gt;
&lt;br /&gt;
These are almost all hidden under the &#039;&#039;&#039;Team&#039;&#039;&#039; bit of the tree.&lt;br /&gt;
&lt;br /&gt;
Under &#039;&#039;&#039;General -&amp;gt; Network Connections -&amp;gt; SSH2 -&amp;gt; Key Management&#039;&#039;&#039;, you can set up a public/private key pair. If you do this, you won&#039;t have to keep typing your password when doing CVS operations. &lt;br /&gt;
&lt;br /&gt;
The rest of the ones in this section are personal preferences, but I recommend them because the default settings are very irritating.&lt;br /&gt;
&lt;br /&gt;
Under &#039;&#039;&#039;Team&#039;&#039;&#039;, set &#039;&#039;&#039;Perspectives&#039;&#039;&#039; to &#039;&#039;&#039;None&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Under &#039;&#039;&#039;Team -&amp;gt; CVS -&amp;gt; Annotate&#039;&#039;&#039; set &#039;&#039;&#039;Use Quick Diff annotate mode for local file annotations&#039;&#039;&#039; to &#039;&#039;&#039;Yes&#039;&#039;&#039;, and &#039;&#039;&#039;Open perspective after a &#039;Show Annotations&#039; operation&#039;&#039;&#039; to &#039;&#039;&#039;No&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Under &#039;&#039;&#039;Team -&amp;gt; CVS -&amp;gt; Label Decorations&#039;&#039;&#039;, switch to the &#039;&#039;&#039;Icon Decorations&#039;&#039;&#039; tab and turn on all the settings, and then on the &#039;&#039;&#039;Text Decorations&#039;&#039;&#039; tab change both &#039;&#039;&#039;File Decoration&#039;&#039;&#039; and &#039;&#039;&#039;Folder Decoration&#039;&#039;&#039; to be just &#039;&#039;&#039;{name}&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Web and XML settings===&lt;br /&gt;
&lt;br /&gt;
Foreach XXX in CSS, HTML, Javascript, XML:&lt;br /&gt;
&lt;br /&gt;
Under &#039;&#039;&#039;Web and XML -&amp;gt; XXX Files -&amp;gt;XXX Source&#039;&#039;&#039;, choose &#039;&#039;&#039;Indent using spaces&#039;&#039;&#039; and &#039;&#039;&#039;indentation size&#039;&#039;&#039; 4.&lt;br /&gt;
&lt;br /&gt;
==Checking out the Moodle code==&lt;br /&gt;
&lt;br /&gt;
From the &#039;&#039;&#039;File&#039;&#039;&#039; menu, choose &#039;&#039;&#039;New -&amp;gt; Project ...&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
In the wizard that pops up, choose &#039;&#039;&#039;CVS -&amp;gt; Projects from CVS&#039;&#039;&#039;, then click &#039;&#039;&#039;Next &amp;gt;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Select &#039;&#039;&#039;Create a new repository location&#039;&#039;&#039;, then click &#039;&#039;&#039;Next &amp;gt;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Fill in&lt;br /&gt;
&amp;lt;div style=&amp;quot;float: right; border: 1px solid orange; padding: 0 1em;&amp;quot;&amp;gt;&lt;br /&gt;
For anonymous CVS access use&lt;br /&gt;
;Host&lt;br /&gt;
:XX.cvs.moodle.org&lt;br /&gt;
where XX.cvs.moodle.org is one of [[CVS_for_Administrators#CVS_Servers|these mirrors]]&lt;br /&gt;
;Repository path&lt;br /&gt;
:/cvsroot/moodle&lt;br /&gt;
;User&lt;br /&gt;
:anonymous&lt;br /&gt;
;Password&lt;br /&gt;
:(leave blank)&lt;br /&gt;
;Connection type&lt;br /&gt;
:pserver&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
;Host&lt;br /&gt;
:cvs.moodle.org&lt;br /&gt;
;Repository path&lt;br /&gt;
:/cvsroot/moodle&lt;br /&gt;
;User&lt;br /&gt;
:(your Moodle CVS username)&lt;br /&gt;
;Password&lt;br /&gt;
:(if you set up the SSH2 key thing in preferences, leave this blank, otherwise, type in your Moodle CVS password.)&lt;br /&gt;
;Connection type&lt;br /&gt;
:extssh&lt;br /&gt;
(CVS experts, if you are confused by that last one, know it is an Eclipse-specific thing.) Then click &#039;&#039;&#039;Next &amp;gt;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
On the next screen of the Wizard, choose &#039;&#039;&#039;Use an existing module&#039;&#039;&#039;. Wait a moment, then select &#039;&#039;&#039;moodle&#039;&#039;&#039; from the list. Click &#039;&#039;&#039;Next &amp;gt;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
On the next screen, make sure the option &#039;&#039;&#039;Check out as a project configured using the New Project Wizard&#039;&#039;&#039; is selected, then click &#039;&#039;&#039;Next &amp;gt;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Click &#039;&#039;&#039;Refresh Tags&#039;&#039;&#039;, then choose the branch you want. For now leave it set to &#039;&#039;&#039;HEAD&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Click &#039;&#039;&#039;Finish&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now you  will find yourself back at the start of the &#039;&#039;&#039;New Project&#039;&#039;&#039; Wizard. This is because of the option you chose three paragraphs ago. This time you should select &#039;&#039;&#039;PHP -&amp;gt; PHP Project&#039;&#039;&#039;, then click &#039;&#039;&#039;Next &amp;gt;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Make up a project name. &#039;&#039;&#039;moodle&#039;&#039;&#039; would be sensible.&lt;br /&gt;
&lt;br /&gt;
Click &#039;&#039;&#039;Finish&#039;&#039;&#039;, and wait while all the moodle files are checked out of CVS.&lt;br /&gt;
&lt;br /&gt;
Once it has finished, it will probably ask you if you want to switch to the PHP perspective. Answer &#039;&#039;&#039;Yes&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you also need another branch (1.6, 1.7, 1.8, ...) repeat all the other steps with a few changes:&lt;br /&gt;
* This time you can choose &#039;&#039;&#039;Use an existing repository location&#039;&#039;&#039; instead of typing all the sourceforge CVS details again.&lt;br /&gt;
* Select the appropriate branch. If you don&#039;t see the branch you want, see [https://docs.moodle.org/en/Development:Setting_up_Eclipse#Resetting_the_branch_information this Troubleshooting tip].&lt;br /&gt;
* Use a different project name (e.g. moodle16, moodle17, etc.).&lt;br /&gt;
&lt;br /&gt;
==Let your development web server know where your files are==&lt;br /&gt;
&lt;br /&gt;
Either by editing you web server&#039;s config files, or using a symbolic link. Make sure your webserver can see your new working set of files at a sensible URL, so you can test the code you are working on.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Quick tour of some cool features, and remaining configuration changes==&lt;br /&gt;
&lt;br /&gt;
I find the default workbench setup is pretty good. Here is a quick guide to some of the bits.&lt;br /&gt;
&lt;br /&gt;
===Navigator===&lt;br /&gt;
&lt;br /&gt;
To the left is the &#039;&#039;&#039;Navigator&#039;&#039;&#039;. This is a tree view of all your files. If you double-click on a file, it opens in the editor in the middle. Try opening &#039;&#039;&#039;course/lib.php&#039;&#039;&#039; now. You will notice that it comes up nicely syntax-hightlighted.&lt;br /&gt;
&lt;br /&gt;
===Error highlighting===&lt;br /&gt;
&lt;br /&gt;
In the middle of the file, just type any old text, for example &amp;quot;I like Eclipse&amp;quot;. Obviously, this is not valid PHP syntax, and Eclipse will notice this, and put a red underline under it. Also, by the scrollbar is a ruler with a red mark in it to show the error.&lt;br /&gt;
&lt;br /&gt;
You will see some yellow marks lower down the ruler. There are warnings. Click on one, and you will be taken to where that warning is in the file. Hover your mouse over the warning, and you will get a tooltip explaining what the problem might be.&lt;br /&gt;
&lt;br /&gt;
Save the edited file. (Don&#039;t worry that it is broken, we&#039;ll clean up the mess later.) Notice that a red error marker is added to the file in the navigator, so you can see that there is a problem. Also, error markers are added to the course folder, and the whole project, so you could see there was an error even if the navigator tree was collapsed.&lt;br /&gt;
&lt;br /&gt;
You will probably find lots of warnings that the config.php file can&#039;t be found. In the navigator, find the file &#039;&#039;&#039;config-dist.php&#039;&#039;&#039;. Do &#039;&#039;&#039;Copy&#039;&#039;&#039; then &#039;&#039;&#039;Paste&#039;&#039;&#039; and choose to call the new file &#039;&#039;&#039;config.php&#039;&#039;&#039;. Edit this new config.php as normal. You should fine that most of the include file warnings have gone now.&lt;br /&gt;
&lt;br /&gt;
Notice also that there is another marker on each file icon. A little yellow cylinder on most files, but a white-on-brown star on the one you have edited. This is telling you the CVS status of each file. The brown stars are changes you have made but not checked in yet.&lt;br /&gt;
&lt;br /&gt;
===Outline===&lt;br /&gt;
&lt;br /&gt;
Over to the right is the Outline view. This shows a list of functions and classes defined in this file. By default, they are listed in the same order as in the file, but if you click on the &#039;&#039;&#039;az&#039;&#039;&#039; toolbar button, they are sorted into alphabetical order.&lt;br /&gt;
&lt;br /&gt;
Click on the function name &#039;&#039;&#039;add_course_module&#039;&#039;&#039; in the Outline. You will see that the editor scrolls to the definition of that function.&lt;br /&gt;
&lt;br /&gt;
===Code navigation===&lt;br /&gt;
&lt;br /&gt;
In that function, hover the mouse pointer over the function name &#039;&#039;&#039;insert_record&#039;&#039;&#039;. After a while, the documentation for that function will appear in a big tooltip.&lt;br /&gt;
&lt;br /&gt;
Hold down CTRL, move the mouse pointer over the function name &#039;&#039;&#039;insert_record&#039;&#039;&#039;, then click. Eclipse should load &#039;&#039;&#039;dmllib.php&#039;&#039;&#039;, and scroll you to where this function is defined.&lt;br /&gt;
&lt;br /&gt;
In the main Eclipse toolbar, there are forward and back arrows like in a web browser. Click back now to get back to &#039;&#039;&#039;course/lib.php&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Open resource===&lt;br /&gt;
&lt;br /&gt;
From the &#039;&#039;&#039;Navigate&#039;&#039;&#039; menu, choose &#039;&#039;&#039;Open Resource...&#039;&#039;&#039;. In the dialog that pops up, start typing a filename for instance type &#039;&#039;&#039;moodlel&#039;&#039;&#039;. In the box in the middle of the dialog, you will see it list all the files in the project whose names start that way. At the bottom is a box which lists the different folders that contain a file with that name. This can be a very quick way of opening files with fairly unique names like moodlelib.php, without having to click through the levels of the navigator tree. Of course, it is not so useful for an index.php file! Click OK now to open moodlelib.php. (It would actually work if you just did CTRL + Shift + R, moodlel, Enter.)&lt;br /&gt;
&lt;br /&gt;
===Multi-file search===&lt;br /&gt;
&lt;br /&gt;
Scroll down moodlelib a little bit, and double click on the name of the constant &#039;&#039;&#039;MOODLE_INTERNAL&#039;&#039;&#039; where it is defined, so that the text is selected. Then, from the &#039;&#039;&#039;Search&#039;&#039;&#039; menu, choose &#039;&#039;&#039;Search...&#039;&#039;&#039;. Notice that the &#039;&#039;&#039;Containing text&#039;&#039;&#039; box has already been filled in for you with the text you just selected. Of course you can just type text into this box without selecting it first. Notice that you can do regular expression searches, but leave that turned off for now. In the &#039;&#039;&#039;File name patterns&#039;&#039;&#039; box type &#039;&#039;&#039;*.css, *.html, *.inc, *.js, *.php, *.xml&#039;&#039;&#039;. (This is the most useful general setting for working on moodle. Eclipse will remember this setting, so you only have to enter it once.) Click &#039;&#039;&#039;Search&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The search results will appear in a new view underneath the editor. That view has a toolbar with yellow up and down arrows. Click the down arrow a few times and it will take you to the first few matches in the code, opening the relevant files as necessary.&lt;br /&gt;
&lt;br /&gt;
===Synchronize view===&lt;br /&gt;
&lt;br /&gt;
I think this is my favorite feature. From the &#039;&#039;&#039;Window&#039;&#039;&#039; menu, select &#039;&#039;&#039;Show View -&amp;gt; Other...&#039;&#039;&#039;. In the dialog that pops up, select &#039;&#039;&#039;Team -&amp;gt; Synchronize&#039;&#039;&#039;, then click &#039;&#039;&#039;OK&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
This opens the Synchronize view below the editor. The view has a toolbar. Click on the first toolbar button, which pops up the Synchronize wizard.&lt;br /&gt;
&lt;br /&gt;
On the first screen, there will probably only be one option: &#039;&#039;&#039;CVS&#039;&#039;&#039;. Make sure that is selected, then click &#039;&#039;&#039;Next &amp;gt;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Under &#039;&#039;&#039;Scope&#039;&#039;&#039;, choose &#039;&#039;&#039;Workspace&#039;&#039;&#039;, then click &#039;&#039;&#039;Finish&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Wait while it talks to the CVS server. After a while, you will see that the Synchronize view lists course/lib.php, and something called &#039;&#039;&#039;.project.... That is, it is listing just the files you have edited, but not checked in yet.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;.project&#039;&#039;&#039; is something that belongs to Eclipse that we don&#039;t care about. So select it and bring up the context menu, and choose &#039;&#039;&#039;Add to .cvsignore...&#039;&#039;&#039;. In the dialog that pops up, choose the top option, then click &#039;&#039;&#039;OK&#039;&#039;&#039;. Then you will find the Synchronize view shows you a &#039;&#039;&#039;.cvsignore&#039;&#039;&#039; file that you aren&#039;t interested in, so add that to .cvsignore too!&lt;br /&gt;
&lt;br /&gt;
If you double-click on &#039;&#039;&#039;course/lib.php&#039;&#039;&#039; here, you will see that it opens the compare editor, which is a nice graphical display of the changes in this file.&lt;br /&gt;
&lt;br /&gt;
If you select a file or files here, then bring up the context menu, you will see the option to &#039;&#039;&#039;Commit...&#039;&#039;&#039; the changes. (But don&#039;t do that now!). This is the easiest way to commit things in Eclipse.&lt;br /&gt;
&lt;br /&gt;
However, our changes were rubbish, so we want to undo them. So open the context menu again, and choose &#039;&#039;&#039;Override and Update&#039;&#039;&#039;. This checks a clean copy of the file out of CVS, removing our changes.&lt;br /&gt;
&lt;br /&gt;
Note that the easiest way to do an ordinary CVS Update is to select the top-level project-folder in the Navigator view on the left, open the context menu, and choose &#039;&#039;&#039;Team -&amp;gt; Update&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
That&#039;s all the really important features. I sure you can learn everything else on your own. An you could always read the built in help!&lt;br /&gt;
&lt;br /&gt;
===Creating a patch===&lt;br /&gt;
&lt;br /&gt;
In the synchronise view, right click on an item (file or folder) and choose &#039;&#039;&#039;Create Patch...&#039;&#039;&#039;. Or in the navigator, right click on an item and choose &#039;&#039;&#039;Team -&amp;gt; Create Patch...&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
This brings up a two-page wizard. On the first page you can select where you want the patch made. For small patches it can be useful to create them on the clipboard, but normally you will want to save them in a file.&lt;br /&gt;
&lt;br /&gt;
On the second page, you can set some options, but normally you don&#039;t need to change the defaults which are &#039;&#039;&#039;Unified&#039;&#039;&#039; diff format, and Patch root set to &#039;&#039;&#039;Workspace&#039;&#039;&#039;. Well, sometimes it is helpful to change the second one to &#039;&#039;&#039;Project&#039;&#039;&#039; but it is not important.&lt;br /&gt;
&lt;br /&gt;
There is a corresponding apply patch wizard that you can use to apply a patch to a project.&lt;br /&gt;
&lt;br /&gt;
===Switching to another branch or version===&lt;br /&gt;
&lt;br /&gt;
Suppose you have been using a check-out of HEAD from CVS, and then as the 1.9 release approaches, the MOODLE_19_STABLE branch is created, and you want to start following that instead.&lt;br /&gt;
# Right click on the moodle project in the navigator view, and select &#039;&#039;&#039;Team -&amp;gt; Switch to Another Branch or Version ...&#039;&#039;&#039;.&lt;br /&gt;
# choose the second radio button: &#039;&#039;&#039;Select the tag from the following list&#039;&#039;&#039;.&lt;br /&gt;
# If the branch you want is not in the &#039;&#039;&#039;Matching tags&#039;&#039;&#039; box, see [[Development:Setting_up_Eclipse#Resetting the branch information|Resetting the branch information]] below.&lt;br /&gt;
# Select the branch you want and click &#039;&#039;&#039;Finish&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Troubleshooting==&lt;br /&gt;
&lt;br /&gt;
Some tips on how to solve common problems that may crop up.&lt;br /&gt;
&lt;br /&gt;
===Resetting the branch information===&lt;br /&gt;
&lt;br /&gt;
Every now and then, Eclipse may lose information on the branch tags it knows about. Hitting refresh tags may fix it, but if not, try the following:&lt;br /&gt;
&lt;br /&gt;
#Bring up the tag dialogue (example using &amp;quot;Team / Switch to Another Branch or Version&amp;quot;).&lt;br /&gt;
#Click on Configure tags ... (not Refresh tags).&lt;br /&gt;
#Select config-dist.php in the top left box (if this is a Moodle checkout).&lt;br /&gt;
#Click Add Checked tags.&lt;br /&gt;
#Click OK.&lt;br /&gt;
#Then you will have all tags.&lt;br /&gt;
&lt;br /&gt;
(thanks to Tim Hunt)&lt;br /&gt;
&lt;br /&gt;
This info saved my day to find all branches:&lt;br /&gt;
   1. Window-&amp;gt;Show View-&amp;gt;Other. Select CVS-&amp;gt;CVS Repositories.&lt;br /&gt;
   2. Context Menu-&amp;gt;New-&amp;gt;Repository Location...&lt;br /&gt;
   3. Fill in the location information identifying your repository and click Finish.&lt;br /&gt;
   4. Expand the newly-created repository location.&lt;br /&gt;
   5. Add the branch:&lt;br /&gt;
         1. right click on it and expand configure branches and versions&lt;br /&gt;
         2. Expand HEAD and select the project moodle.&lt;br /&gt;
         3. Context Menu-&amp;gt;Configure Branches and Versions...&lt;br /&gt;
         4. In the &amp;quot;Browse files for tags&amp;quot; table, select one or more files &lt;br /&gt;
            that contain tags you would like to see (for example scroll down &lt;br /&gt;
            to find config.php).&lt;br /&gt;
         5. On the right the existing tags will appear.&lt;br /&gt;
         6. select the tags: for example MOODLE_15_STABLE&lt;br /&gt;
         7. Click &amp;quot;Add Selected Tags&amp;quot;.&lt;br /&gt;
         8. Click &amp;quot;OK&amp;quot;.&lt;br /&gt;
   6. locate branches, MOODLE_19_STABLE, moodle MOODLE_19_STABLE.&lt;br /&gt;
   7. Context Menu-&amp;gt;Check Out As Project.&lt;br /&gt;
(&amp;quot;stolen&amp;quot; from  Joan Codina Filba	&lt;br /&gt;
General developer forum -&amp;gt; Moodle floating &amp;quot;block&amp;quot;/toolbar released -&amp;gt; Re: Moodle floating &amp;quot;block--PATCH FOR GRADES &amp;amp; ASIGNMENT --PROBLEM)&lt;br /&gt;
&lt;br /&gt;
===Error loading php files after Ubuntu 7.04 Install===&lt;br /&gt;
&lt;br /&gt;
A java issue with Ubuntu 7.04 may cause an error when you attempt to load php pages. Refer to:&lt;br /&gt;
http://www.plog4u.org/index.php/Using_PHPEclipse_:_Installation_:_Installing_PHPEclipse for details about how to fix this in Ubuntu 7.04.&lt;br /&gt;
&lt;br /&gt;
After upgrading from Ubuntu 7.04 to 7.10, I had to go in and re-edit the /etc/eclipse/java_home file in order to get the CVS functions to work and be able to open PHP files. When I tried to do a CVS update I initially received an error about org.eclipse.team.internal.ccvs.ui.wizards.CheckoutWizard). Everything seemed to work again after reapplying the fix for the aforementioned 7.04 java issue.&lt;br /&gt;
&lt;br /&gt;
==Related Links==&lt;br /&gt;
&lt;br /&gt;
There is an excellent series of articles published by IBM on using Eclipse for Drupal developement here : [http://www-128.ibm.com/developerworks/ibm/osource/index.html Using open source software to design, develop, and deploy a collaborative Web site Tools and techniques for getting relatively complicated Web sites up and running quickly].&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer|Setting up Eclipse]]&lt;/div&gt;</summary>
		<author><name>Scyrma</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/21/en/index.php?title=Development:Moodle.org_homepage&amp;diff=38153</id>
		<title>Development:Moodle.org homepage</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/21/en/index.php?title=Development:Moodle.org_homepage&amp;diff=38153"/>
		<updated>2008-06-24T01:42:09Z</updated>

		<summary type="html">&lt;p&gt;Scyrma: out of sourceforge&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The intent of this page is to present suggestions concerning the words on the homepage of Moodle.org   . &lt;br /&gt;
&lt;br /&gt;
Those interested in making suggestions, please edit one of the alternative sub sections and  leave the &amp;quot;current&amp;quot; untouched. Page comments are a good place to explain rational for the suggestions.&lt;br /&gt;
&lt;br /&gt;
=Welcome to Moodle!=&lt;br /&gt;
==Welcome to Moodle! current==  &lt;br /&gt;
Moodle is a course management system (CMS) - a free, [http://www.opensource.org/docs/definition.php Open Source] software package designed using sound [[Philosophy|pedagogical]] principles, to help educators create effective online learning communities. You can download and use it on any computer you have handy (including webhosts), yet it can scale from a single-teacher site to a 50,000-student University. This site itself is created using Moodle, so check out the [http://moodle.org/course/category.php?id=2 Moodle Demonstration Courses] or read the latest [http://moodle.org/mod/data/view.php?id=6140/ Moodle Buzz].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Welcome to Moodle! alternative A==&lt;br /&gt;
[https://docs.moodle.org/en/About_Moodle Moodle] is a course management system (CMS) - a free, [http://www.opensource.org/docs/definition.php Open Source] software package designed using sound [[Philosophy|pedagogical]] principles to help educators create effective online learning communities. You can [http://download.moodle.org/ download] and use it on any computer you have handy (including webhosts), yet it can meet the needs of a single classrrom-teacher site to a 50,000-student University. This site itself is created using Moodle, so check out the [http://moodle.org/course/category.php?id=2 Moodle Demonstration Courses], read the latest [http://moodle.org/mod/data/view.php?id=6140/ Moodle Buzz], or some [links for a new user]http://moodle.org/mod/resource/view.php?id=1361 ?.&lt;br /&gt;
&lt;br /&gt;
=Moodle Community=&lt;br /&gt;
&lt;br /&gt;
==Moodle Community current==  &lt;br /&gt;
Moodle has a large and diverse user community with [http://moodle.org/userpics/ over 150,000 registered users] on this site alone, speaking over [http://download.moodle.org/lang16/ 75 languages] in over [http://moodle.org/sites/ 160 countries] (we have more [http://moodle.org/stats/ statistics here]). The best place to start is [http://moodle.org/course/view.php?id=5 Using Moodle], which is where the main international discussions are held in English, but we have a variety of groups discussing [http://moodle.org/course/category.php?id=1 other topics] and in [http://moodle.org/course/category.php?id=3other languages].&lt;br /&gt;
&lt;br /&gt;
==Moodle Community alternative A==&lt;br /&gt;
Moodle has a large and diverse community with [http://moodle.org/userpics/ over 150,000 registered users] on this site alone, that live in over [http://moodle.org/sites/ 160 countries] and speak many different languages (we have more [http://moodle.org/stats/ statistics here]). Our main international discusions are held in English at [http://moodle.org/course/view.php?id=5 Using Moodle]. However, we have a variety of groups discussing [http://moodle.org/course/category.php?id=1 other topics], and in [http://moodle.org/course/category.php?id=3 other languages]. Our community also maintains [[Special:Statistics|{{NUMBEROFARTICLES}}]] pages of [https://docs.moodle.org/en/Main_Page Moodle documentation] in a wiki and has translated them into other [[link to list| MoodleDoc languages]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 The dynamic NUMBEROFARTICLES link will need to changed on the homepage.&lt;br /&gt;
&lt;br /&gt;
=Moodle Development=&lt;br /&gt;
==Moodle Development current==  &lt;br /&gt;
We have a long list of [[Credits|developers]] who contribute towards the development of Moodle. Start with our [[Developer_documentation|developer information]] as well as the [[Roadmap|roadmap]], the [[Development:Coding|coding guide]] and [[CVS|CVS guide]] to access our [[http://cvs.moodle.org/moodle/ source code]]. Most discussion can be found in [http://moodle.org/course/view.php?id=5 Using Moodle], but we also have a [http://tracker.moodle.org/secure/Dashboard.jspa Tracker] where you should report general bugs, feature requests, fixes and other issues. Sensitive security problems should be posted to the [http://security.moodle.org/ Moodle Security] site, so we can deal with them appropriately.&lt;br /&gt;
&lt;br /&gt;
==Moodle Development alternative A==&lt;br /&gt;
none at moment&lt;br /&gt;
&lt;br /&gt;
=Moodle Downloads=&lt;br /&gt;
&lt;br /&gt;
==Moodle Downloads current==  &lt;br /&gt;
Moodle is available in a variety of [http://download.moodle.org/ download packages] with different levels of stability, as well as via CVS from [http://cvs.moodle.org/moodle cvs.moodle.org]. A number of additional [http://moodle.org/mod/data/view.php?id=6009 modules/plugins] and [http://download.moodle.org/lang16/ language packs] are also available.&lt;br /&gt;
&lt;br /&gt;
==Moodle Downloads alternative A==&lt;br /&gt;
Moodle is available in over 10 [http://download.moodle.org/ download packages] of different versions and operating systems.  [http://cvs.moodle.org/moodle cvs.moodle.org] offers Moodle via CVS (Concurrent Versions System). A number of additional [http://moodle.org/mod/data/view.php?id=6009 modules/plugins] and 60+ [http://download.moodle.org/lang16/ language packs] can also be added to a Moodle site.&lt;/div&gt;</summary>
		<author><name>Scyrma</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/21/en/index.php?title=Development:XMLDB_defining_an_XML_structure&amp;diff=38151</id>
		<title>Development:XMLDB defining an XML structure</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/21/en/index.php?title=Development:XMLDB_defining_an_XML_structure&amp;diff=38151"/>
		<updated>2008-06-24T01:36:45Z</updated>

		<summary type="html">&lt;p&gt;Scyrma: moving out of sourceforge&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Development:XMLDB Documentation|XMLDB Documentation]] &amp;gt; [[Development:XMLDB roadmap|Roadmap]] &amp;gt; Defining one XML structure&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Justification ==&lt;br /&gt;
&lt;br /&gt;
Before Moodle 1.7, all the DB install and upgrade was developed twice (once to handle MySQL installations and another to handle PostgreSQL installations). This approach, although working, has caused some headaches in the past, mainly because it was really difficult to keep both lines of development 100% on sync. Some developers do they work against one RDBMS and it was complex to develop to the other one (two test environments, skills on both databases, slower development cycle...). And all this was happening with &#039;&#039;only&#039;&#039; two supported RDBMS!&lt;br /&gt;
&lt;br /&gt;
One of the main objectives of Moodle 1.7 is to extend the the number of supported RDBMS to other flavours (more exactly, to Oracle and MSSQL). And the old approach (one line of development for each DB) could become an absolute nightmare. &lt;br /&gt;
&lt;br /&gt;
Because of this we have planned to build one structure to define all the DB objects used by Moodle. This structure will provide the necessary level of abstraction to be shared by all the RDBMS systems, so the &amp;quot;multiple lines of development&amp;quot; explained in the previous paragraph will be out forever, giving us one robust and well defined way to handle DB objects independently of the underlying RDBMS being used.&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
&lt;br /&gt;
Initially all our best wishes were to use the [http://phplens.com/lens/adodb/docs-datadict.htm#xmlschema AdoDB XML Schema]. As Moodle is using ADOdb libraries to communicate with databases it sounded like the natural approach to solve the problem. But, finally, two reasons prevented us to use it:&lt;br /&gt;
&lt;br /&gt;
# Although working, it seems to be one feature in progress, with important changes/evolutions arriving at the time of write this document.&lt;br /&gt;
# Its lack of support for &amp;quot;prefixes&amp;quot; (one Moodle key feature, to allow multiple instances to run in the same server), would force us to create some awful tricks to generate the objects.&lt;br /&gt;
&lt;br /&gt;
So, finally, we decided to build our own XML files, with everything we need to define every object present in the DB.&lt;br /&gt;
&lt;br /&gt;
== The XMLDB editor ==&lt;br /&gt;
[[XMLDB_editor | Main article]]&lt;br /&gt;
&lt;br /&gt;
Although the XML is pretty simple to read (and to write), one of the major drawbacks was its easy and error-prone adoption by the developers. Also some problems with versioning systems getting crazy with XML files (thanks ML!) pointed us to the requirement to use one high-density format (it means, physically &#039;&#039;&#039;long lines&#039;&#039;&#039;) in our XML files. &lt;br /&gt;
&lt;br /&gt;
After some intense thoughts we decided to build one specialised editor for our XML format. This editor should be easy to use and provide support for all the objects present one Moodle DB. And it&#039;s done (and will support future enhancements easily, we hope).&lt;br /&gt;
&lt;br /&gt;
The XMLDB Editor makes the edition of tables/fields/keys/indexes practically a trivial task, allowing the developer to spend  the time coding and improving things instead of fighting against XML files and the errors caused by manual editing (of course, the developer is free to use such extra-time as desired, beers, dance, books, music...) ;-)&lt;br /&gt;
&lt;br /&gt;
All the new &#039;&#039;&#039;install.xml&#039;&#039;&#039; files, present under each &#039;&#039;&#039;db&#039;&#039;&#039; directory in Moodle can be edited (and we recommend it) with just some clicks and keystrokes. Those &#039;&#039;&#039;install.xml&#039;&#039;&#039; will contain all the info needed to generate the specific objects needed for each RDBMS supported. Obviously, such files, are the neutral replacement for all the *.sql files used until now.&lt;br /&gt;
&lt;br /&gt;
=== Launching ===&lt;br /&gt;
&lt;br /&gt;
Just login to your server as an administrator and, under the Miscellaneous tab of the Administration Block, you&#039;ll see a new link pointing to the &amp;quot;XMLDB Editor&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
One &#039;&#039;&#039;important note&#039;&#039;&#039; is that, to be able to handle files properly, the web server needs write access to all those &amp;quot;db&amp;quot; directories where the &amp;quot;install.xml&amp;quot; files reside (and to the files themselves, of course). ;-)&lt;br /&gt;
&lt;br /&gt;
That&#039;s all!&lt;br /&gt;
&lt;br /&gt;
=== Use===&lt;br /&gt;
&lt;br /&gt;
We really think the XMLDB Editor is pretty easy to use, so here you won&#039;t see a complete guide to use it. We highly recommend you to play with it for a while, viewing how it works and how it modifies the &#039;&#039;&#039;install.xml&#039;&#039;&#039; files.&lt;br /&gt;
&lt;br /&gt;
It&#039;s organised in a top-botton structure, where you start &#039;&#039;&#039;loading&#039;&#039;&#039; (or &#039;&#039;&#039;creating&#039;&#039;&#039;) a new XMLDB file. Then, you can &#039;&#039;&#039;edit&#039;&#039;&#039; such file and its &#039;&#039;&#039;general structure&#039;&#039;&#039; will be showed. This structure have two type of elements, &#039;&#039;&#039;tables&#039;&#039;&#039; and &#039;&#039;&#039;statements&#039;&#039;&#039; and the XMLDB Editor allows you to &#039;&#039;&#039;add&#039;&#039;&#039;, &#039;&#039;&#039;edit&#039;&#039;&#039;, &#039;&#039;&#039;delete&#039;&#039;&#039;, and &#039;&#039;&#039;move&#039;&#039;&#039; them easily. Also, for initial creation of tables, one small but effective &#039;&#039;&#039;reverse-enginery&#039;&#039;&#039; tool has been developed (only under MySQL) allowing you to retrofit any table from the DB to the XMLDB Editor.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note: If you can&#039;t click on the create links....&#039;&#039;&#039; you must first create the /db folder (as shown in the list, but it may not really exist) and then make sure it is writeable by the webserver&lt;br /&gt;
&lt;br /&gt;
While editing tables you will see their &#039;&#039;&#039;fields&#039;&#039;&#039;, &#039;&#039;&#039;keys&#039;&#039;&#039; and &#039;&#039;&#039;indexes&#039;&#039;&#039; and you&#039;ll be able to handle all them easily. Note that some fields can be no-editable. It uses to be because they are being used in some way (part of one key or index) and the idea is to warn you about that.&lt;br /&gt;
&lt;br /&gt;
Fields can be edited and you can specify their &#039;&#039;&#039;name&#039;&#039;&#039;, &#039;&#039;&#039;type&#039;&#039;&#039;, &#039;&#039;&#039;length&#039;&#039;&#039;, &#039;&#039;&#039;decimals&#039;&#039;&#039;, &#039;&#039;&#039;null-ability&#039;&#039;&#039;, &#039;&#039;&#039;defaults&#039;&#039;&#039; and so one. Exactly the same for both &#039;&#039;&#039;keys&#039;&#039;&#039; and &#039;&#039;&#039;indexes&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
While editing statements, you must think about them like &amp;quot;collections of sentences&amp;quot;. Once you select the &#039;&#039;&#039;type&#039;&#039;&#039; (only inserts are allowed for now) and &#039;&#039;&#039;table&#039;&#039;&#039; you are interested you&#039;ll be able to introduce the exact values easily, being able to &#039;&#039;&#039;duplicate&#039;&#039;&#039; them easily to gain some speed if you have a lot of sentences in your development. Sentences can be &#039;&#039;&#039;edited&#039;&#039;&#039; and &#039;&#039;&#039;deleted&#039;&#039;&#039; easily too.&lt;br /&gt;
&lt;br /&gt;
One interesting feature is that all the XMLDB Editor pages allow you to enter one &#039;&#039;&#039;comment&#039;&#039;&#039; about the item being modified (table, index, key, field, statement...). Use it at your entire needs, sure it helps other developers to understand a bit more the DB model.&lt;br /&gt;
&lt;br /&gt;
Please, don&#039;t forget to read and understand the next section, where we talk about &#039;&#039;&#039;some important guidelines&#039;&#039;&#039; to create and handle XMLDB files.&lt;br /&gt;
&lt;br /&gt;
== Conventions ==&lt;br /&gt;
&lt;br /&gt;
Apart of the [[Coding#Database_structures| Database Structures guidelines]], some more conventions should be followed:&lt;br /&gt;
&lt;br /&gt;
# About names:&lt;br /&gt;
## All lowercase names (tables, indexes, keys and fields).&lt;br /&gt;
## Table names and field names must use only a-z, 0-9 and _ chars.&lt;br /&gt;
## Key and index names under the XMLDB Files must be formed by concatenating the name of the fields present in the key/index with the &#039;&amp;quot;-&amp;quot; (minus) character.&lt;br /&gt;
## Primary key always must be named &amp;quot;primary&amp;quot; (this is one exception to the previous convention).&lt;br /&gt;
## It&#039;s highly recommended to avoid [[XMLDB_reserved_words|reserved words]] completely. We know we have some of them now but they should be completely out for next releases.&lt;br /&gt;
# About NULLS&lt;br /&gt;
## Avoid to create all the fields as NOT NULL with the &#039;&#039;silly&#039;&#039; default value &amp;lt;nowiki&amp;gt;&#039;&#039;&amp;lt;/nowiki&amp;gt; (empty string). The underlying code used to create tables will handle it properly but the XMLDB structure must be REAL. Read more in the [[XMLDB Problems#NOT NULL fields using a DEFAULT &amp;lt;nowiki&amp;gt;&#039;&#039;&amp;lt;/nowiki&amp;gt; clause|Problems Page]].&lt;br /&gt;
# About FOREIGN KEYS&lt;br /&gt;
## Under the tables of every XMLDB file, you must define the existing &#039;&#039;&#039;Foreign Keys&#039;&#039;&#039; (FK) properly. This will allow everybody to know a bit better the structure, allow to evolve to a better constrained system in the future and will provide the underlying code with the needed info to create the proper indexes. &lt;br /&gt;
## Note that, if you define any field combination as FK you won&#039;t have to create any index on that fields, the code will do it automatically! &lt;br /&gt;
## This convention is only applicable for relations INSIDE one file. Don&#039;t generate FK constraints against other files (courseid, userid), use indexes there.&lt;br /&gt;
## Respect Convention 1.3&lt;br /&gt;
# About UNIQUE KEYS&lt;br /&gt;
## Declare any fields as UNIQUE KEY (UK) only if they are going to be used as target for one FK. Create unique indexes instead.&lt;br /&gt;
## Respect Convention 1.3&lt;br /&gt;
&lt;br /&gt;
== One example: the assignment module ==&lt;br /&gt;
&lt;br /&gt;
Here we are going to examine the [http://cvs.moodle.org/moodle/mod/assignment/db/install.xml?view=markup current implementation of the XMLDB Schema for the assignment module] (a simple one). It has been completely generated with the XMLDB Editor but it&#039;s nice to know a bit more about the XML internals.&lt;br /&gt;
&lt;br /&gt;
As you can see the structure is pretty simple:&lt;br /&gt;
&lt;br /&gt;
* XMLDB&lt;br /&gt;
** TABLES, one or more, each one with&lt;br /&gt;
*** FIELDS&lt;br /&gt;
*** KEYS&lt;br /&gt;
*** INDEXES&lt;br /&gt;
** STATEMENTS, none or more, each one with&lt;br /&gt;
*** SENTENCES&lt;br /&gt;
&lt;br /&gt;
First of all you should note that all the elements contain the &#039;&#039;&#039;PREVIOUS&#039;&#039;&#039; and &#039;&#039;&#039;NEXT&#039;&#039;&#039; attributes. They allow us to keep everything ordered although it isn&#039;t meaningful at all from the RDBMS perspective. Also the &#039;&#039;&#039;COMMENT&#039;&#039;&#039; field is present everywhere to be used as desired.&lt;br /&gt;
&lt;br /&gt;
=== The TABLE element ===&lt;br /&gt;
&lt;br /&gt;
We can ignore the TABLE element, as it&#039;s simply one container for the internals (FIELDS, KEYS and INDEXES). Let&#039;s go to examine them a bit more:&lt;br /&gt;
&lt;br /&gt;
==== The FIELD element ====&lt;br /&gt;
&lt;br /&gt;
It maps with one field in the DB (obviously). For each field you can define its &#039;&#039;&#039;name&#039;&#039;&#039;, &#039;&#039;&#039;type&#039;&#039;&#039; (from a list of [[XMLDB column types|neutral types]]), &#039;&#039;&#039;length&#039;&#039;&#039;, &#039;&#039;&#039;decimals&#039;&#039;&#039; (for some types), &#039;&#039;&#039;notnull&#039;&#039;&#039; (true/false), &#039;&#039;&#039;unsigned&#039;&#039;&#039; (true/false), &#039;&#039;&#039;sequence&#039;&#039;&#039; (if it&#039;s autonumeric or serial, true/false), &#039;&#039;&#039;enum&#039;&#039;&#039; (true/false), &#039;&#039;&#039;enumvalues&#039;&#039;&#039; (the list of values if the field has been declared as enum, for example &amp;lt;tt&amp;gt;&#039;frog&#039;,&#039;toad&#039;,&#039;newt&#039;&amp;lt;/tt&amp;gt;) and &#039;&#039;&#039;default&#039;&#039;&#039; (to assign a default value).&lt;br /&gt;
&lt;br /&gt;
So, in our example, we have two tables, assignment and assignment_submissions, each one with its own fields, defining all the information related above. Please note that naming conventions are followed.&lt;br /&gt;
&lt;br /&gt;
==== The KEY element ====&lt;br /&gt;
&lt;br /&gt;
Here is where all the PRIMARY KEYS (PK), UNIQUE KEYS (UK) and FOREIGN KEYS (FK) will be defined. For each key we define its &#039;&#039;&#039;name&#039;&#039;&#039;, &#039;&#039;&#039;type&#039;&#039;&#039;, &#039;&#039;&#039;fields&#039;&#039;&#039; (that belongs to it) and optionally (if the key is one FK) the target &#039;&#039;&#039;reftable&#039;&#039;&#039; and &#039;&#039;&#039;reffields&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
In our example, the assignment table has one (mandatory!) PK (called, &amp;quot;primary&amp;quot;, rules are rules) built with the &amp;quot;id&amp;quot; field. &lt;br /&gt;
&lt;br /&gt;
The other table, the &amp;quot;assignment_submissions&amp;quot; one, also has its PK (called &amp;quot;primary&amp;quot; once more) and one FK, with the field &amp;quot;assignment&amp;quot; pointing to the field &amp;quot;id&amp;quot; of the table &amp;quot;assignment&amp;quot;. Note that the FK follows the name conventions and its name is, simply, the name of the fields being part of it (&amp;quot;assignment&amp;quot;). Also, the FK has as target to one PK of the same module.&lt;br /&gt;
&lt;br /&gt;
Finally, note that there isn&#039;t any index created for all these keys. Moodle will generate them automatically when the table is created. All the keys will have their corresponding index. Point. ;-)&lt;br /&gt;
&lt;br /&gt;
==== The INDEX element ====&lt;br /&gt;
&lt;br /&gt;
Where all the indexes will be defined. For each index you can define its &#039;&#039;&#039;name&#039;&#039;&#039;, &#039;&#039;&#039;unique&#039;&#039;&#039; (true/false) and the &#039;&#039;&#039;fields&#039;&#039;&#039; that conform it. Please note that naming conventions are followed.&lt;br /&gt;
&lt;br /&gt;
Also, some &amp;quot;obvious index&amp;quot;, like the one based in the &amp;quot;assignment&amp;quot; field of the &amp;quot;assignment_submissions&amp;quot; table doesn&#039;t exist. Yes, you know why: Because such column has been defined as a FK and the index will be automatically created (see previous section).&lt;br /&gt;
&lt;br /&gt;
=== The STATEMENT element ===&lt;br /&gt;
&lt;br /&gt;
This is the other &#039;&#039;&#039;big container&#039;&#039;&#039; in the XMLDB Schema (at the same level as the &#039;&#039;&#039;TABLES&#039;&#039;&#039; one) and we can define its &#039;&#039;&#039;name&#039;&#039;&#039;, &#039;&#039;&#039;type&#039;&#039;&#039; (only insert allowed for now) and &#039;&#039;&#039;table&#039;&#039;&#039; (against the sentences will be executed).&lt;br /&gt;
&lt;br /&gt;
Every statement is a collection of &#039;&#039;&#039;sentences&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
==== The SENTENCE element ====&lt;br /&gt;
&lt;br /&gt;
Each sentence implies one simple action to be performed against the DB and it can be defined as the &amp;quot;missing part of the SQL statement&amp;quot;. In our example, we have one statement, of type &amp;quot;insert&amp;quot; on table &amp;quot;log_display&amp;quot;. With this Moodle knows the initial part of the sentence, i.e:&lt;br /&gt;
&lt;br /&gt;
 INSERT INTO log_display &lt;br /&gt;
&lt;br /&gt;
and then the text will be added to create this:&lt;br /&gt;
&lt;br /&gt;
 INSERT INTO log_display &lt;br /&gt;
   (module, action, mtable, field) &lt;br /&gt;
 VALUES &lt;br /&gt;
   (&#039;assignment&#039;, &#039;view&#039;, &#039;assignment&#039;, &#039;name&#039;)&lt;br /&gt;
&lt;br /&gt;
There is one important trick when handling sentences, although they aren&#039;t in the assignment example. Take a look to the [http://cvs.moodle.org/moodle/lib/db/install.xml?view=co Core Tables XML Schema] (it&#039;s a huge one!). If you go near the end, to the statements section, you will see some sentences like this:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;SENTENCE TEXT=&amp;quot;....VALUES (&#039;user&#039;, &#039;view&#039;, &#039;user&#039;, &#039;CONCAT(firstname,&amp;quot; &amp;quot;,lastname)&#039;)&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Such &amp;quot;CONCAT&amp;quot; function isn&#039;t standard at all (only MySQL supports it), but don&#039;t worry, we&#039;ll transform it to the correct concatenation operators for other RDBMS. Just be sure to use the syntax showed above.&lt;br /&gt;
&lt;br /&gt;
== DTD and XML schema ==&lt;br /&gt;
&lt;br /&gt;
Not sure if this will be usable for somebody but here you can find one [http://cvs.moodle.org/moodle/lib/xmldb/xmldb.dtd?view=co automatically generated DTD] for the XMLDB files. Also one [http://cvs.moodle.org/moodle/lib/xmldb/xmldb.xsd?view=co automatically generated XML Schema] is available. Any improvement/fix to them will be welcome!&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[XMLB List of files to create|List of files to create]]: The list of files to be created from scratch. Used to follow the progress.&lt;br /&gt;
* http://www.hitsw.com/xml_utilites/: One online XML-DTD-Schema converter.&lt;br /&gt;
&lt;br /&gt;
[[Category:XMLDB]]&lt;/div&gt;</summary>
		<author><name>Scyrma</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/21/en/index.php?title=IMS_Enterprise&amp;diff=38146</id>
		<title>IMS Enterprise</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/21/en/index.php?title=IMS_Enterprise&amp;diff=38146"/>
		<updated>2008-06-24T01:22:16Z</updated>

		<summary type="html">&lt;p&gt;Scyrma: /* See also */ out of sourceforge ... into our own repo.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Moodle 1.6}}&lt;br /&gt;
&#039;&#039;&#039;IMS Enterprise&#039;&#039;&#039; is an international standard XML file format which may be used to specify enrolments/unenrolments in courses, as well as course information and user information.&lt;br /&gt;
&lt;br /&gt;
Starting in Moodle 1.6, IMS Enterprise files may be used for enrolment. For more information please see [http://moodle.cvs.sourceforge.net/*checkout*/moodle/moodle/lang/en_utf8/help/enrol/imsenterprise/formatoverview.html the main IMS Enterprise help file].&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
* [http://www.imsglobal.org/enterprise/ IMS Enterprise specification] - the official site&lt;br /&gt;
* [http://cvs.moodle.org/contrib/plugins/enrol/imsenterprise/entv1p1_conformance_summary.html?view=co Conformance summary] - summarises the parts of the specification which Moodle makes use of&lt;br /&gt;
* [https://studydirect.sussex.ac.uk/downloads/imsenterprise.php Minted IMS Enterprise enrolment plugin] - An extension of the ims enterprise enrolment plugin developed in the [http://www.sussex.ac.uk/minted minted project]&lt;br /&gt;
&lt;br /&gt;
[[Category:Administrator]]&lt;br /&gt;
[[Category:Enrolment]]&lt;br /&gt;
&lt;br /&gt;
[[fr:Fichier IMS Enterprise]]&lt;/div&gt;</summary>
		<author><name>Scyrma</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/21/en/index.php?title=Development:Moodle_3.0&amp;diff=37916</id>
		<title>Development:Moodle 3.0</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/21/en/index.php?title=Development:Moodle_3.0&amp;diff=37916"/>
		<updated>2008-06-20T01:56:09Z</updated>

		<summary type="html">&lt;p&gt;Scyrma: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is a brainstorm about a complete rewrite/refactor for Moodle 3.0.&lt;br /&gt;
&lt;br /&gt;
Please add your ideas!   They don&#039;t need to be consistent yet, just make sure your ideas are here to be boiled down later on.&lt;br /&gt;
&lt;br /&gt;
Think Big!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===One type of plugin===&lt;br /&gt;
&lt;br /&gt;
All plugins/modules could be subclassed from one plugin class, making installation easier and simplifying the API a lot.&lt;br /&gt;
&lt;br /&gt;
===Look at new framework===&lt;br /&gt;
&lt;br /&gt;
Possibly base Moodle 3.0 on new existing frameworks?  Ruby on Rails?  Drupal?&lt;br /&gt;
&lt;br /&gt;
=== Moodlets===&lt;br /&gt;
&lt;br /&gt;
Individual-independent-activities backup/restore + metadata  - Eloy&lt;br /&gt;
&lt;br /&gt;
=== Support for alternate interfaces ===&lt;br /&gt;
&lt;br /&gt;
Completely flash-based interface?  Designed for offline clients?&lt;br /&gt;
&lt;br /&gt;
=== Integrated category/taxonomy system ===&lt;br /&gt;
&lt;br /&gt;
Putting together the &amp;quot;course categories&amp;quot;, &amp;quot;tags&amp;quot; into a generic taxonomy system.&lt;/div&gt;</summary>
		<author><name>Scyrma</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/21/en/index.php?title=Development:HTML_editor_2.0&amp;diff=37019</id>
		<title>Development:HTML editor 2.0</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/21/en/index.php?title=Development:HTML_editor_2.0&amp;diff=37019"/>
		<updated>2008-06-04T08:59:10Z</updated>

		<summary type="html">&lt;p&gt;Scyrma: /* Plan of action */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page details the specification of the HTML editor in Moodle 2.0.&lt;br /&gt;
== What we want ==&lt;br /&gt;
Ticket MDL-11113 discusses most issues.&lt;br /&gt;
=== Requirements ===&lt;br /&gt;
* Integration - With Moodle (smileys, different formats, etc.) with a minimum of changes, cleaning up current code as much as possible&lt;br /&gt;
* Compatibility - With web browsers (mostly FF, IE, Safari, Opera)&lt;br /&gt;
* Standard - Outputs valid XHTML code&lt;br /&gt;
* Accessibility - Is it 100% keyboard accessible? Is it usable in JAWS? Etc.&lt;br /&gt;
* Configurability - Possibility to make it show different options and buttons according to the user, the context, etc.&lt;br /&gt;
* Support - Developed by an active community that will support it for a long time.&lt;br /&gt;
&lt;br /&gt;
=== Features ===&lt;br /&gt;
Some features that should be evaluated:&lt;br /&gt;
* Handling of Word documents&lt;br /&gt;
* HTML code direct editing&lt;br /&gt;
* Highlighting (not text background color, with &amp;quot;set-on&amp;quot; operation--Word style)&lt;br /&gt;
* Image uploading&lt;br /&gt;
* Mathematical formulas/equation editing&lt;br /&gt;
* Possible to turn it on and off on demand (on the page) without losing (possibly modified) content (see [http://wiki.moxiecode.com/examples/tinymce/installation_example_07.php this TinyMCE example of this])&lt;br /&gt;
* Right-to-left text input&lt;br /&gt;
* Smileys (has to be possible to use the Moodle list of smileys)&lt;br /&gt;
* Special characters&lt;br /&gt;
* Tables&lt;br /&gt;
* Themeable (possible to make a theme that fits with Moodle&#039;s)&lt;br /&gt;
&lt;br /&gt;
=== Wishes ===&lt;br /&gt;
* Make it possible to change to a different editor (provided someone comes up with the necessary code to &amp;quot;plug it&amp;quot; in Moodle)&lt;br /&gt;
* Possible to run many instances on the same page (see MDL-11101 in tracker)&lt;br /&gt;
* Fix [http://tracker.moodle.org/secure/IssueNavigator.jspa?reset=true&amp;amp;pid=10011&amp;amp;resolution=-1&amp;amp;component=10070&amp;amp;sorter/field=summary&amp;amp;sorter/order=ASC&amp;amp;sorter/field=resolution&amp;amp;sorter/order=ASC&amp;amp;sorter/field=status&amp;amp;sorter/order=ASC&amp;amp;sorter/field=priority&amp;amp;sorter/order=DESC all the bugs] related to the HTML editor&lt;br /&gt;
* Submit drafts in the background, using ajax.&lt;br /&gt;
&lt;br /&gt;
== Possibilities and evaluation ==&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Comparison_of_WYSIWYG_HTML_editors Comparison of WYSIWYG HTML editors on Wikipedia]&lt;br /&gt;
* [http://tinymce.moxiecode.com/ TinyMCE]: [http://wiki.moxiecode.com/index.php/TinyMCE:Compatibility Compatibility], [http://wiki.moxiecode.com/index.php/TinyMCE:Index Documentation], [http://tinymce.moxiecode.com/example_full.php?example=true Demo]&lt;br /&gt;
* [http://www.fckeditor.net/ FCKeditor]: [http://docs.fckeditor.net/FCKeditor_3.x/Design_and_Architecture/Browsers_Compatibility Compatibility] [http://docs.fckeditor.net/ Documentation], [http://www.fckeditor.net/demo Demo]&lt;br /&gt;
* [http://xinha.webfactional.com/ Xinha]: [http://xinha.webfactional.com/wiki/Documentation Documentation], [http://xinha.webfactional.com/wiki/Examples Demo]&lt;br /&gt;
* [http://developer.yahoo.com/yui/editor/ Yahoo RTE]: [http://developer.yahoo.com/yui/docs/module_editor.html Documentation], [http://developer.yahoo.com/yui/examples/editor/index.html Demo], &lt;br /&gt;
As of 16 April 2008, the preference goes to TinyMCE.&lt;br /&gt;
&lt;br /&gt;
== Plan of action ==&lt;br /&gt;
&lt;br /&gt;
See: MDL-11113 and MDL-14739&lt;br /&gt;
&lt;br /&gt;
* Get latest TinyMCE in HEAD before 13 May 2008 so that work can be done there (done, MDL-14739)&lt;br /&gt;
* Have the XHTML profile active by default in TinyMCE (done)&lt;br /&gt;
* Attack each Moodle plugin in turn, keeping modifications to TinyMCE code base as modular and minimal as possible&lt;br /&gt;
&lt;br /&gt;
=== Plugins to write ===&lt;br /&gt;
Some plugins will have to be written for each editor to make integration with Moodle possible.  These should be as abstracted as possible, to make as much code as possible common between each.  Since editors will be located under /lib/editor, let&#039;s store this common code under /lib/editormod.&lt;br /&gt;
&lt;br /&gt;
* File browser: the file browser (especially with the [[File API]]) will be Moodle specific&lt;br /&gt;
* Emoticons (smileys): Moodle defines its own list of emoticons, we need to make sure the editors use these consistently&lt;br /&gt;
* Language files: Moodle has a lot more languages than any editors, and some strings will be Moodle-specific.  We need a way to make for each editor to use Moodle strings, reusing as many existing strings as possible, and using lang/xx/editor.php for the rest.&lt;br /&gt;
* Equation editor: there is [[DragMath_equation_editor| ongoing work]] to get [http://www.dragmath.bham.ac.uk/ Dragmath] working in Moodle, making a common plugin could be a nice improvement&lt;br /&gt;
* Multilang:  all editors need to support multilang properly.&lt;br /&gt;
&lt;br /&gt;
It also may be possible to use Moodle&#039;s CSS files to define editors themes/skins, this needs investigation&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Editor-specific information:&#039;&#039;&#039;&lt;br /&gt;
* TinyMCE makes it possible to have [http://tinymce.moxiecode.com/punbb/viewtopic.php?pid=9317#p9317 self-registering plugins], that don&#039;t need to be under it&#039;s /plugins folder (and so could be in a moodle-specific folder).&lt;br /&gt;
* FCKeditor [http://docs.fckeditor.net/FCKeditor_2.x/Developers_Guide/Customization/Plug-ins needs to have its plugins in a specific place].&lt;br /&gt;
&lt;br /&gt;
=== Change in formats ===&lt;br /&gt;
&lt;br /&gt;
There is a bug (MDL-4868) about Markdown not being converted to HTML when using the HTML editor (after creating a post with Markdown). &lt;br /&gt;
&lt;br /&gt;
This really applies to all non-HTML formats.&lt;br /&gt;
&lt;br /&gt;
Proposal: whenever the HTML editor is used to edit existing non-HTML text, we convert the text to HTML for use in the editor.  Saving the changes will save the text (and format) as HTML.&lt;br /&gt;
&lt;br /&gt;
Although we are losing some information, we feel it&#039;s an acceptable tradeoff against overall usability, particularly as the HTML editor works on a wider range of browsers and we make XHTML compliance a requirement.&lt;br /&gt;
&lt;br /&gt;
== Links to forum discussions, tracker, docs, etc. ==&lt;br /&gt;
* [http://tracker.moodle.org/browse/MDL-11113 MDL-11113 - Get a fully working HTML editor in Moodle]&lt;br /&gt;
* [[Development:Moodle-specific customisations to the HTML editor]]&lt;br /&gt;
&lt;br /&gt;
Using Moodle General developer forum discussions:&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=88382 TinyMCE3 Integration]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=93475 XINHA has started to support Opera and Safari]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=76912 What is the current position with the HTML editor?]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=96160 The most important decision on editor integration]&lt;br /&gt;
&lt;br /&gt;
[[Category:HTML editor]]&lt;/div&gt;</summary>
		<author><name>Scyrma</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/21/en/index.php?title=Development:HTML_editor_2.0&amp;diff=37018</id>
		<title>Development:HTML editor 2.0</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/21/en/index.php?title=Development:HTML_editor_2.0&amp;diff=37018"/>
		<updated>2008-06-04T08:57:17Z</updated>

		<summary type="html">&lt;p&gt;Scyrma: /* Plugins to write */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page details the specification of the HTML editor in Moodle 2.0.&lt;br /&gt;
== What we want ==&lt;br /&gt;
Ticket MDL-11113 discusses most issues.&lt;br /&gt;
=== Requirements ===&lt;br /&gt;
* Integration - With Moodle (smileys, different formats, etc.) with a minimum of changes, cleaning up current code as much as possible&lt;br /&gt;
* Compatibility - With web browsers (mostly FF, IE, Safari, Opera)&lt;br /&gt;
* Standard - Outputs valid XHTML code&lt;br /&gt;
* Accessibility - Is it 100% keyboard accessible? Is it usable in JAWS? Etc.&lt;br /&gt;
* Configurability - Possibility to make it show different options and buttons according to the user, the context, etc.&lt;br /&gt;
* Support - Developed by an active community that will support it for a long time.&lt;br /&gt;
&lt;br /&gt;
=== Features ===&lt;br /&gt;
Some features that should be evaluated:&lt;br /&gt;
* Handling of Word documents&lt;br /&gt;
* HTML code direct editing&lt;br /&gt;
* Highlighting (not text background color, with &amp;quot;set-on&amp;quot; operation--Word style)&lt;br /&gt;
* Image uploading&lt;br /&gt;
* Mathematical formulas/equation editing&lt;br /&gt;
* Possible to turn it on and off on demand (on the page) without losing (possibly modified) content (see [http://wiki.moxiecode.com/examples/tinymce/installation_example_07.php this TinyMCE example of this])&lt;br /&gt;
* Right-to-left text input&lt;br /&gt;
* Smileys (has to be possible to use the Moodle list of smileys)&lt;br /&gt;
* Special characters&lt;br /&gt;
* Tables&lt;br /&gt;
* Themeable (possible to make a theme that fits with Moodle&#039;s)&lt;br /&gt;
&lt;br /&gt;
=== Wishes ===&lt;br /&gt;
* Make it possible to change to a different editor (provided someone comes up with the necessary code to &amp;quot;plug it&amp;quot; in Moodle)&lt;br /&gt;
* Possible to run many instances on the same page (see MDL-11101 in tracker)&lt;br /&gt;
* Fix [http://tracker.moodle.org/secure/IssueNavigator.jspa?reset=true&amp;amp;pid=10011&amp;amp;resolution=-1&amp;amp;component=10070&amp;amp;sorter/field=summary&amp;amp;sorter/order=ASC&amp;amp;sorter/field=resolution&amp;amp;sorter/order=ASC&amp;amp;sorter/field=status&amp;amp;sorter/order=ASC&amp;amp;sorter/field=priority&amp;amp;sorter/order=DESC all the bugs] related to the HTML editor&lt;br /&gt;
* Submit drafts in the background, using ajax.&lt;br /&gt;
&lt;br /&gt;
== Possibilities and evaluation ==&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Comparison_of_WYSIWYG_HTML_editors Comparison of WYSIWYG HTML editors on Wikipedia]&lt;br /&gt;
* [http://tinymce.moxiecode.com/ TinyMCE]: [http://wiki.moxiecode.com/index.php/TinyMCE:Compatibility Compatibility], [http://wiki.moxiecode.com/index.php/TinyMCE:Index Documentation], [http://tinymce.moxiecode.com/example_full.php?example=true Demo]&lt;br /&gt;
* [http://www.fckeditor.net/ FCKeditor]: [http://docs.fckeditor.net/FCKeditor_3.x/Design_and_Architecture/Browsers_Compatibility Compatibility] [http://docs.fckeditor.net/ Documentation], [http://www.fckeditor.net/demo Demo]&lt;br /&gt;
* [http://xinha.webfactional.com/ Xinha]: [http://xinha.webfactional.com/wiki/Documentation Documentation], [http://xinha.webfactional.com/wiki/Examples Demo]&lt;br /&gt;
* [http://developer.yahoo.com/yui/editor/ Yahoo RTE]: [http://developer.yahoo.com/yui/docs/module_editor.html Documentation], [http://developer.yahoo.com/yui/examples/editor/index.html Demo], &lt;br /&gt;
As of 16 April 2008, the preference goes to TinyMCE.&lt;br /&gt;
&lt;br /&gt;
== Plan of action ==&lt;br /&gt;
&lt;br /&gt;
See: MDL-xxxx&lt;br /&gt;
&lt;br /&gt;
* Get latest TinyMCE in HEAD before 13 May 2008 so that work can be done there&lt;br /&gt;
* Have the XHTML profile active by default in TinyMCE&lt;br /&gt;
* Attack each Moodle plugin in turn, keeping modifications to TinyMCE code base as modular and minimal as possible&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Plugins to write ===&lt;br /&gt;
Some plugins will have to be written for each editor to make integration with Moodle possible.  These should be as abstracted as possible, to make as much code as possible common between each.  Since editors will be located under /lib/editor, let&#039;s store this common code under /lib/editormod.&lt;br /&gt;
&lt;br /&gt;
* File browser: the file browser (especially with the [[File API]]) will be Moodle specific&lt;br /&gt;
* Emoticons (smileys): Moodle defines its own list of emoticons, we need to make sure the editors use these consistently&lt;br /&gt;
* Language files: Moodle has a lot more languages than any editors, and some strings will be Moodle-specific.  We need a way to make for each editor to use Moodle strings, reusing as many existing strings as possible, and using lang/xx/editor.php for the rest.&lt;br /&gt;
* Equation editor: there is [[DragMath_equation_editor| ongoing work]] to get [http://www.dragmath.bham.ac.uk/ Dragmath] working in Moodle, making a common plugin could be a nice improvement&lt;br /&gt;
* Multilang:  all editors need to support multilang properly.&lt;br /&gt;
&lt;br /&gt;
It also may be possible to use Moodle&#039;s CSS files to define editors themes/skins, this needs investigation&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Editor-specific information:&#039;&#039;&#039;&lt;br /&gt;
* TinyMCE makes it possible to have [http://tinymce.moxiecode.com/punbb/viewtopic.php?pid=9317#p9317 self-registering plugins], that don&#039;t need to be under it&#039;s /plugins folder (and so could be in a moodle-specific folder).&lt;br /&gt;
* FCKeditor [http://docs.fckeditor.net/FCKeditor_2.x/Developers_Guide/Customization/Plug-ins needs to have its plugins in a specific place].&lt;br /&gt;
&lt;br /&gt;
=== Change in formats ===&lt;br /&gt;
&lt;br /&gt;
There is a bug (MDL-4868) about Markdown not being converted to HTML when using the HTML editor (after creating a post with Markdown). &lt;br /&gt;
&lt;br /&gt;
This really applies to all non-HTML formats.&lt;br /&gt;
&lt;br /&gt;
Proposal: whenever the HTML editor is used to edit existing non-HTML text, we convert the text to HTML for use in the editor.  Saving the changes will save the text (and format) as HTML.&lt;br /&gt;
&lt;br /&gt;
Although we are losing some information, we feel it&#039;s an acceptable tradeoff against overall usability, particularly as the HTML editor works on a wider range of browsers and we make XHTML compliance a requirement.&lt;br /&gt;
&lt;br /&gt;
== Links to forum discussions, tracker, docs, etc. ==&lt;br /&gt;
* [http://tracker.moodle.org/browse/MDL-11113 MDL-11113 - Get a fully working HTML editor in Moodle]&lt;br /&gt;
* [[Development:Moodle-specific customisations to the HTML editor]]&lt;br /&gt;
&lt;br /&gt;
Using Moodle General developer forum discussions:&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=88382 TinyMCE3 Integration]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=93475 XINHA has started to support Opera and Safari]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=76912 What is the current position with the HTML editor?]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=96160 The most important decision on editor integration]&lt;br /&gt;
&lt;br /&gt;
[[Category:HTML editor]]&lt;/div&gt;</summary>
		<author><name>Scyrma</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/21/en/index.php?title=Development:HTML_editor_2.0&amp;diff=37017</id>
		<title>Development:HTML editor 2.0</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/21/en/index.php?title=Development:HTML_editor_2.0&amp;diff=37017"/>
		<updated>2008-06-04T08:53:44Z</updated>

		<summary type="html">&lt;p&gt;Scyrma: /* Plugins to write */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page details the specification of the HTML editor in Moodle 2.0.&lt;br /&gt;
== What we want ==&lt;br /&gt;
Ticket MDL-11113 discusses most issues.&lt;br /&gt;
=== Requirements ===&lt;br /&gt;
* Integration - With Moodle (smileys, different formats, etc.) with a minimum of changes, cleaning up current code as much as possible&lt;br /&gt;
* Compatibility - With web browsers (mostly FF, IE, Safari, Opera)&lt;br /&gt;
* Standard - Outputs valid XHTML code&lt;br /&gt;
* Accessibility - Is it 100% keyboard accessible? Is it usable in JAWS? Etc.&lt;br /&gt;
* Configurability - Possibility to make it show different options and buttons according to the user, the context, etc.&lt;br /&gt;
* Support - Developed by an active community that will support it for a long time.&lt;br /&gt;
&lt;br /&gt;
=== Features ===&lt;br /&gt;
Some features that should be evaluated:&lt;br /&gt;
* Handling of Word documents&lt;br /&gt;
* HTML code direct editing&lt;br /&gt;
* Highlighting (not text background color, with &amp;quot;set-on&amp;quot; operation--Word style)&lt;br /&gt;
* Image uploading&lt;br /&gt;
* Mathematical formulas/equation editing&lt;br /&gt;
* Possible to turn it on and off on demand (on the page) without losing (possibly modified) content (see [http://wiki.moxiecode.com/examples/tinymce/installation_example_07.php this TinyMCE example of this])&lt;br /&gt;
* Right-to-left text input&lt;br /&gt;
* Smileys (has to be possible to use the Moodle list of smileys)&lt;br /&gt;
* Special characters&lt;br /&gt;
* Tables&lt;br /&gt;
* Themeable (possible to make a theme that fits with Moodle&#039;s)&lt;br /&gt;
&lt;br /&gt;
=== Wishes ===&lt;br /&gt;
* Make it possible to change to a different editor (provided someone comes up with the necessary code to &amp;quot;plug it&amp;quot; in Moodle)&lt;br /&gt;
* Possible to run many instances on the same page (see MDL-11101 in tracker)&lt;br /&gt;
* Fix [http://tracker.moodle.org/secure/IssueNavigator.jspa?reset=true&amp;amp;pid=10011&amp;amp;resolution=-1&amp;amp;component=10070&amp;amp;sorter/field=summary&amp;amp;sorter/order=ASC&amp;amp;sorter/field=resolution&amp;amp;sorter/order=ASC&amp;amp;sorter/field=status&amp;amp;sorter/order=ASC&amp;amp;sorter/field=priority&amp;amp;sorter/order=DESC all the bugs] related to the HTML editor&lt;br /&gt;
* Submit drafts in the background, using ajax.&lt;br /&gt;
&lt;br /&gt;
== Possibilities and evaluation ==&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Comparison_of_WYSIWYG_HTML_editors Comparison of WYSIWYG HTML editors on Wikipedia]&lt;br /&gt;
* [http://tinymce.moxiecode.com/ TinyMCE]: [http://wiki.moxiecode.com/index.php/TinyMCE:Compatibility Compatibility], [http://wiki.moxiecode.com/index.php/TinyMCE:Index Documentation], [http://tinymce.moxiecode.com/example_full.php?example=true Demo]&lt;br /&gt;
* [http://www.fckeditor.net/ FCKeditor]: [http://docs.fckeditor.net/FCKeditor_3.x/Design_and_Architecture/Browsers_Compatibility Compatibility] [http://docs.fckeditor.net/ Documentation], [http://www.fckeditor.net/demo Demo]&lt;br /&gt;
* [http://xinha.webfactional.com/ Xinha]: [http://xinha.webfactional.com/wiki/Documentation Documentation], [http://xinha.webfactional.com/wiki/Examples Demo]&lt;br /&gt;
* [http://developer.yahoo.com/yui/editor/ Yahoo RTE]: [http://developer.yahoo.com/yui/docs/module_editor.html Documentation], [http://developer.yahoo.com/yui/examples/editor/index.html Demo], &lt;br /&gt;
As of 16 April 2008, the preference goes to TinyMCE.&lt;br /&gt;
&lt;br /&gt;
== Plan of action ==&lt;br /&gt;
&lt;br /&gt;
See: MDL-xxxx&lt;br /&gt;
&lt;br /&gt;
* Get latest TinyMCE in HEAD before 13 May 2008 so that work can be done there&lt;br /&gt;
* Have the XHTML profile active by default in TinyMCE&lt;br /&gt;
* Attack each Moodle plugin in turn, keeping modifications to TinyMCE code base as modular and minimal as possible&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Plugins to write ===&lt;br /&gt;
Some plugins will have to be written for each editor to make integration with Moodle possible.  These should be as abstracted as possible, to make as much code as possible common between each.  Since editors will be located under /lib/editor, let&#039;s store this common code under /lib/editormod.&lt;br /&gt;
&lt;br /&gt;
* File browser: the file browser (especially with the [[File API]]) will be Moodle specific&lt;br /&gt;
* Emoticons (smileys): Moodle defines its own list of emoticons, we need to make sure the editors use these consistently&lt;br /&gt;
* Language files: Moodle has a lot more languages than any editors, and some strings will be Moodle-specific.  We need a way to make for each editor to use Moodle strings, reusing as many existing strings as possible, and using lang/xx/editor.php for the rest.&lt;br /&gt;
* Equation editor: there is [[DragMath_equation_editor| ongoing work]] to get [http://www.dragmath.bham.ac.uk/ Dragmath] working in Moodle, making a common plugin could be a nice improvement&lt;br /&gt;
* Multilang:  all editors need to support multilang properly.&lt;br /&gt;
&lt;br /&gt;
It also may be possible to use Moodle&#039;s CSS files to define editors themes/skins, this needs investigation&lt;br /&gt;
&lt;br /&gt;
Editor-specific information:&lt;br /&gt;
* TinyMCE makes it possible to have [http://tinymce.moxiecode.com/punbb/viewtopic.php?pid=9317#p9317 self-registering plugins], that don&#039;t need to be under it&#039;s /plugins folder (and so could be in a moodle-specific folder).&lt;br /&gt;
* FCKeditor [http://docs.fckeditor.net/FCKeditor_2.x/Developers_Guide/Customization/Plug-ins needs to have its plugins in a specific place].&lt;br /&gt;
&lt;br /&gt;
=== Change in formats ===&lt;br /&gt;
&lt;br /&gt;
There is a bug (MDL-4868) about Markdown not being converted to HTML when using the HTML editor (after creating a post with Markdown). &lt;br /&gt;
&lt;br /&gt;
This really applies to all non-HTML formats.&lt;br /&gt;
&lt;br /&gt;
Proposal: whenever the HTML editor is used to edit existing non-HTML text, we convert the text to HTML for use in the editor.  Saving the changes will save the text (and format) as HTML.&lt;br /&gt;
&lt;br /&gt;
Although we are losing some information, we feel it&#039;s an acceptable tradeoff against overall usability, particularly as the HTML editor works on a wider range of browsers and we make XHTML compliance a requirement.&lt;br /&gt;
&lt;br /&gt;
== Links to forum discussions, tracker, docs, etc. ==&lt;br /&gt;
* [http://tracker.moodle.org/browse/MDL-11113 MDL-11113 - Get a fully working HTML editor in Moodle]&lt;br /&gt;
* [[Development:Moodle-specific customisations to the HTML editor]]&lt;br /&gt;
&lt;br /&gt;
Using Moodle General developer forum discussions:&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=88382 TinyMCE3 Integration]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=93475 XINHA has started to support Opera and Safari]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=76912 What is the current position with the HTML editor?]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=96160 The most important decision on editor integration]&lt;br /&gt;
&lt;br /&gt;
[[Category:HTML editor]]&lt;/div&gt;</summary>
		<author><name>Scyrma</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/21/en/index.php?title=Development:HTML_editor_2.0&amp;diff=37016</id>
		<title>Development:HTML editor 2.0</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/21/en/index.php?title=Development:HTML_editor_2.0&amp;diff=37016"/>
		<updated>2008-06-04T08:48:57Z</updated>

		<summary type="html">&lt;p&gt;Scyrma: /* Plugins to write */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page details the specification of the HTML editor in Moodle 2.0.&lt;br /&gt;
== What we want ==&lt;br /&gt;
Ticket MDL-11113 discusses most issues.&lt;br /&gt;
=== Requirements ===&lt;br /&gt;
* Integration - With Moodle (smileys, different formats, etc.) with a minimum of changes, cleaning up current code as much as possible&lt;br /&gt;
* Compatibility - With web browsers (mostly FF, IE, Safari, Opera)&lt;br /&gt;
* Standard - Outputs valid XHTML code&lt;br /&gt;
* Accessibility - Is it 100% keyboard accessible? Is it usable in JAWS? Etc.&lt;br /&gt;
* Configurability - Possibility to make it show different options and buttons according to the user, the context, etc.&lt;br /&gt;
* Support - Developed by an active community that will support it for a long time.&lt;br /&gt;
&lt;br /&gt;
=== Features ===&lt;br /&gt;
Some features that should be evaluated:&lt;br /&gt;
* Handling of Word documents&lt;br /&gt;
* HTML code direct editing&lt;br /&gt;
* Highlighting (not text background color, with &amp;quot;set-on&amp;quot; operation--Word style)&lt;br /&gt;
* Image uploading&lt;br /&gt;
* Mathematical formulas/equation editing&lt;br /&gt;
* Possible to turn it on and off on demand (on the page) without losing (possibly modified) content (see [http://wiki.moxiecode.com/examples/tinymce/installation_example_07.php this TinyMCE example of this])&lt;br /&gt;
* Right-to-left text input&lt;br /&gt;
* Smileys (has to be possible to use the Moodle list of smileys)&lt;br /&gt;
* Special characters&lt;br /&gt;
* Tables&lt;br /&gt;
* Themeable (possible to make a theme that fits with Moodle&#039;s)&lt;br /&gt;
&lt;br /&gt;
=== Wishes ===&lt;br /&gt;
* Make it possible to change to a different editor (provided someone comes up with the necessary code to &amp;quot;plug it&amp;quot; in Moodle)&lt;br /&gt;
* Possible to run many instances on the same page (see MDL-11101 in tracker)&lt;br /&gt;
* Fix [http://tracker.moodle.org/secure/IssueNavigator.jspa?reset=true&amp;amp;pid=10011&amp;amp;resolution=-1&amp;amp;component=10070&amp;amp;sorter/field=summary&amp;amp;sorter/order=ASC&amp;amp;sorter/field=resolution&amp;amp;sorter/order=ASC&amp;amp;sorter/field=status&amp;amp;sorter/order=ASC&amp;amp;sorter/field=priority&amp;amp;sorter/order=DESC all the bugs] related to the HTML editor&lt;br /&gt;
* Submit drafts in the background, using ajax.&lt;br /&gt;
&lt;br /&gt;
== Possibilities and evaluation ==&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Comparison_of_WYSIWYG_HTML_editors Comparison of WYSIWYG HTML editors on Wikipedia]&lt;br /&gt;
* [http://tinymce.moxiecode.com/ TinyMCE]: [http://wiki.moxiecode.com/index.php/TinyMCE:Compatibility Compatibility], [http://wiki.moxiecode.com/index.php/TinyMCE:Index Documentation], [http://tinymce.moxiecode.com/example_full.php?example=true Demo]&lt;br /&gt;
* [http://www.fckeditor.net/ FCKeditor]: [http://docs.fckeditor.net/FCKeditor_3.x/Design_and_Architecture/Browsers_Compatibility Compatibility] [http://docs.fckeditor.net/ Documentation], [http://www.fckeditor.net/demo Demo]&lt;br /&gt;
* [http://xinha.webfactional.com/ Xinha]: [http://xinha.webfactional.com/wiki/Documentation Documentation], [http://xinha.webfactional.com/wiki/Examples Demo]&lt;br /&gt;
* [http://developer.yahoo.com/yui/editor/ Yahoo RTE]: [http://developer.yahoo.com/yui/docs/module_editor.html Documentation], [http://developer.yahoo.com/yui/examples/editor/index.html Demo], &lt;br /&gt;
As of 16 April 2008, the preference goes to TinyMCE.&lt;br /&gt;
&lt;br /&gt;
== Plan of action ==&lt;br /&gt;
&lt;br /&gt;
See: MDL-xxxx&lt;br /&gt;
&lt;br /&gt;
* Get latest TinyMCE in HEAD before 13 May 2008 so that work can be done there&lt;br /&gt;
* Have the XHTML profile active by default in TinyMCE&lt;br /&gt;
* Attack each Moodle plugin in turn, keeping modifications to TinyMCE code base as modular and minimal as possible&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Plugins to write ===&lt;br /&gt;
Some plugins will have to be written for each editor to make integration with Moodle possible.  These should be as abstracted as possible, to make as much code as possible common between each.  Since editors will be located under /lib/editor, let&#039;s store this common code under /lib/editormod.&lt;br /&gt;
&lt;br /&gt;
* File browser: the file browser (especially with the [[File API]]) will be Moodle specific&lt;br /&gt;
* Emoticons (smileys): Moodle defines its own list of emoticons, we need to make sure the editors use these consistently&lt;br /&gt;
* Language files: Moodle has a lot more languages than any editors, and some strings will be Moodle-specific.  We need a way to make for each editor to use Moodle strings, reusing as many existing strings as possible, and using lang/xx/editor.php for the rest.&lt;br /&gt;
* Equation editor: there is [[DragMath_equation_editor| ongoing work]] to get [http://www.dragmath.bham.ac.uk/ Dragmath] working in Moodle, making a common plugin could be a nice improvement&lt;br /&gt;
* Multilang:  all editors need to support multilang properly.&lt;br /&gt;
&lt;br /&gt;
It also may be possible to use Moodle&#039;s CSS files to define editors themes/skins, this needs investigation&lt;br /&gt;
&lt;br /&gt;
Editor-specific information:&lt;br /&gt;
* tinymce makes it possible to have [http://tinymce.moxiecode.com/punbb/viewtopic.php?pid=9317#p9317 self-registering plugins], that don&#039;t need to be under it&#039;s /plugins folder (and so could be in a moodle-specific folder).&lt;br /&gt;
&lt;br /&gt;
=== Change in formats ===&lt;br /&gt;
&lt;br /&gt;
There is a bug (MDL-4868) about Markdown not being converted to HTML when using the HTML editor (after creating a post with Markdown). &lt;br /&gt;
&lt;br /&gt;
This really applies to all non-HTML formats.&lt;br /&gt;
&lt;br /&gt;
Proposal: whenever the HTML editor is used to edit existing non-HTML text, we convert the text to HTML for use in the editor.  Saving the changes will save the text (and format) as HTML.&lt;br /&gt;
&lt;br /&gt;
Although we are losing some information, we feel it&#039;s an acceptable tradeoff against overall usability, particularly as the HTML editor works on a wider range of browsers and we make XHTML compliance a requirement.&lt;br /&gt;
&lt;br /&gt;
== Links to forum discussions, tracker, docs, etc. ==&lt;br /&gt;
* [http://tracker.moodle.org/browse/MDL-11113 MDL-11113 - Get a fully working HTML editor in Moodle]&lt;br /&gt;
* [[Development:Moodle-specific customisations to the HTML editor]]&lt;br /&gt;
&lt;br /&gt;
Using Moodle General developer forum discussions:&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=88382 TinyMCE3 Integration]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=93475 XINHA has started to support Opera and Safari]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=76912 What is the current position with the HTML editor?]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=96160 The most important decision on editor integration]&lt;br /&gt;
&lt;br /&gt;
[[Category:HTML editor]]&lt;/div&gt;</summary>
		<author><name>Scyrma</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/21/en/index.php?title=User:Mathieu_Petit-Clair&amp;diff=35782</id>
		<title>User:Mathieu Petit-Clair</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/21/en/index.php?title=User:Mathieu_Petit-Clair&amp;diff=35782"/>
		<updated>2008-05-08T05:11:01Z</updated>

		<summary type="html">&lt;p&gt;Scyrma: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;See http://moodle.org/user/view.php?id=423027&amp;amp;course=1 for details.&lt;/div&gt;</summary>
		<author><name>Scyrma</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/21/en/index.php?title=CVS_for_Administrators&amp;diff=35716</id>
		<title>CVS for Administrators</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/21/en/index.php?title=CVS_for_Administrators&amp;diff=35716"/>
		<updated>2008-05-07T06:52:43Z</updated>

		<summary type="html">&lt;p&gt;Scyrma: adding -P to checkout, otherwise it won&amp;#039;t install&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [http://cvs.moodle.org/ CVS archive] contains all the source code for Moodle. You can use a CVS program to extract versions ranging from the most stable release to the most cutting-edge development version. CVS can be an extremely convenient way of maintaining a Moodle server.&lt;br /&gt;
&lt;br /&gt;
[[Image:Cvstree.png|CVS tree]]&lt;br /&gt;
&lt;br /&gt;
Developers may have selective write access to the Moodle CVS archive (see [[CVS for Developers]] for details about how to do this). However, most people only need read-only access, so they can just connect to one of the mirrors using &#039;&#039;&#039;anonymous CVS&#039;&#039;&#039; as described below. There can however currently be a delay of up to 1 hour between the time a developer commits changes to developer CVS and the time it becomes available on anonymous CVS. &lt;br /&gt;
&lt;br /&gt;
==CVS Servers==&lt;br /&gt;
&lt;br /&gt;
Please choose the closest CVS mirror server to you from this list:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Country&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Server&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Provided by&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|EU&lt;br /&gt;
|&#039;&#039;&#039;eu.cvs.moodle.org&#039;&#039;&#039;&lt;br /&gt;
|[http://www.open.ac.uk/ The Open University] In case of trouble, contact [mailto:r.t.c.norfor@open.ac.uk Rod Norfor] or [mailto:d.a.woolhead@open.ac.uk Derek Woolhead]&lt;br /&gt;
|-&lt;br /&gt;
|ES&lt;br /&gt;
|&#039;&#039;&#039;es.cvs.moodle.org&#039;&#039;&#039;&lt;br /&gt;
|[http://www.mondragon.edu/ Mondragon Unibertsitatea] In case of trouble, contact [mailto:iarenuno@eteo.mondragon.edu iarenuno@eteo.mondragon.edu] or [mailto:iarenaza@escomposlinux.org iarenaza@escomposlinux.org]&lt;br /&gt;
|-&lt;br /&gt;
|UK&lt;br /&gt;
|&#039;&#039;&#039;uk.cvs.moodle.org&#039;&#039;&#039;&lt;br /&gt;
|Cumbria and Lancashire Education Online ([http://www.cleo.net.uk/ CLEO]) in collaboration with Lancaster University Network Services ([http://www.lancs.ac.uk/ LUNS])&lt;br /&gt;
|-&lt;br /&gt;
|US&lt;br /&gt;
|&#039;&#039;&#039;us.cvs.moodle.org&#039;&#039;&#039;&lt;br /&gt;
|San Francisco State University, Academic Technology ([http://www.sfsu.edu/ SFSU]). In case of trouble, contact [mailto:ilearn@sfsu.edu iLearn support]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Replace the SERVER.cvs.moodle.org in the instructions below with the server you chose above!&lt;br /&gt;
&lt;br /&gt;
For up-to-date alerts about planned or unplanned outages on any of these servers subscribe to the [http://lists.moodle.org/info/outages Moodle Outage mailing list].&lt;br /&gt;
&lt;br /&gt;
(If you would like to contribute to the project by running a mirror, please see [[How to set up a CVS mirror]])  &lt;br /&gt;
&lt;br /&gt;
===Switching to a new server===&lt;br /&gt;
&lt;br /&gt;
If you were &#039;&#039;already&#039;&#039; using CVS and want to switch to a different server, you&#039;ll probably need to make a small change so that the control files in your working copy will point to the new mirrors. &lt;br /&gt;
&lt;br /&gt;
====Switching to a new server on Unix====&lt;br /&gt;
&lt;br /&gt;
Use a shell command like this to change existing installations to point to the new mirror (UK mirror used in this example):&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;find . -type f -name Root -print0 | xargs -0 perl -pi -e &#039;s/\@moodle\.cvs\.sourceforge\.net/\@uk\.cvs\.moodle\.org/&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
It can be run from /home, say, to fix multiple sites at once.&lt;br /&gt;
&lt;br /&gt;
====Switching to a new server with TortoiseCVS====&lt;br /&gt;
&lt;br /&gt;
If you were &#039;&#039;already&#039;&#039; using Tortoise CVS on Windows it&#039;s tricky, because Tortoise doesn&#039;t have any interface for changing the server.  http://www.tortoisecvs.org/faq.html#changecvsroot explains it.  But basically, &lt;br /&gt;
&lt;br /&gt;
 1) Install WinCVS and launch it. &lt;br /&gt;
 2) Navigate to and select your Moodle folder. &lt;br /&gt;
 3) Choose &#039;Macros&#039;-&amp;gt;CVS-&amp;gt;Change Root from the menu.  &lt;br /&gt;
 4) Accept (or change) the default for the &#039;old&#039; server. &lt;br /&gt;
 5) Type the new server name. OK!  &lt;br /&gt;
&lt;br /&gt;
It takes a few seconds to go through all of the &#039;&#039;&#039;cvs&#039;&#039;&#039; folders and update the &#039;&#039;&#039;root&#039;&#039;&#039; files.&lt;br /&gt;
&lt;br /&gt;
By the way, if you don&#039;t want to install WinCVS, another way of doing this is to uninstall your TortoiseCVS client on Windows, then do a regedit to clean up all the tortoisecvs related entries (might not be necessary), then reinstall TortoiseCVS client again (a good reason to upgrade to the most recent version of TortoiseCVS!). I have tested this and it cleared up the original setting of the original anonymous CVS server setting.&lt;br /&gt;
&lt;br /&gt;
==Instructions==&lt;br /&gt;
&lt;br /&gt;
===From a Unix computer===&lt;br /&gt;
&lt;br /&gt;
To connect and login for the first time to the CVS server, you can use this command (remember to replace &#039;&#039;&#039;SERVER.cvs.moodle.org&#039;&#039;&#039; in the instructions below with the mirror server you chose above):&lt;br /&gt;
&lt;br /&gt;
 cvs -d:pserver:anonymous@SERVER.cvs.moodle.org:/cvsroot/moodle login&lt;br /&gt;
&lt;br /&gt;
There is no password - when asked for one, just hit Enter.&lt;br /&gt;
&lt;br /&gt;
To checkout (download) the entire Moodle code for the first time, use this command to get the latest STABLE version:&lt;br /&gt;
&lt;br /&gt;
 cvs -z3 -d:pserver:anonymous@SERVER.cvs.moodle.org:/cvsroot/moodle co -P -r MOODLE_19_STABLE moodle&lt;br /&gt;
&lt;br /&gt;
Or the latest development version:&lt;br /&gt;
&lt;br /&gt;
 cvs -z3 -d:pserver:anonymous@SERVER.cvs.moodle.org:/cvsroot/moodle co -P moodle&lt;br /&gt;
&lt;br /&gt;
Or the modules in Contrib&lt;br /&gt;
&lt;br /&gt;
 cvs -z3 -d:pserver:anonymous@SERVER.cvs.moodle.org:/cvsroot/moodle co contrib&lt;br /&gt;
&lt;br /&gt;
Later, to update your local copy of Moodle to the current version in CVS you just need to go into your local Moodle directory and type:&lt;br /&gt;
&lt;br /&gt;
 cvs update -dP&lt;br /&gt;
&lt;br /&gt;
To update your local copy of Moodle to a new version (e.g. from 1.8+ to 1.9), go into your local Moodle directory and type:&lt;br /&gt;
&lt;br /&gt;
 cvs update -dP -r MOODLE_19_STABLE&lt;br /&gt;
&lt;br /&gt;
To update your local copy and to save the log of the process, use the following command instead the previous one:&lt;br /&gt;
&lt;br /&gt;
 cvs update -dP -r MOODLE_19_STABLE | tee upgrade.log&lt;br /&gt;
&lt;br /&gt;
Then look at the upgrade.log, notably look for lines starting with &amp;quot;C&amp;quot; (conflict):&lt;br /&gt;
&lt;br /&gt;
 grep &#039;^C&#039; upgrade.log&lt;br /&gt;
&lt;br /&gt;
Conflicts may appear in case you have manually modified your source files. You have to resolve conflicts before using the site. See [[CVS for Developers]] for more details.&lt;br /&gt;
&lt;br /&gt;
===Changing the directory name===&lt;br /&gt;
&lt;br /&gt;
By default, the CVS checkout creates a diectory on your webserver called &#039;moodle&#039;. If you want your Moodle installation in a different directory, you can change the name of the directory that it will checkout the files to, by typing the follwing. This would download the MOODLE_19_STABLE branch into a directory called &amp;quot;mydirectory&amp;quot; (-d mydirectory).&lt;br /&gt;
&lt;br /&gt;
 cvs -z3 -d:pserver:anonymous@SERVER.cvs.moodle.org:/cvsroot/moodle co &#039;&#039;&#039;-d mydirectory&#039;&#039;&#039; -r MOODLE_19_STABLE moodle&lt;br /&gt;
&lt;br /&gt;
Or the latest development version to a directory called &#039;moodle-dev&#039;:&lt;br /&gt;
&lt;br /&gt;
 cvs -z3 -d:pserver:anonymous@SERVER.cvs.moodle.org:/cvsroot/moodle co &#039;&#039;&#039;-d moodle-dev&#039;&#039;&#039; moodle&lt;br /&gt;
&lt;br /&gt;
You can also change the name of the directory after the files are downloaded, and before you go through the Moodle install process. If you change the name of the directory before install, it will not affect anything during the install or during a CVS update. If you change the name of the directory after an install, you will need to change the config.php to reflect the name change ([[Moodle_migration#Migrating_a_complete_Moodle_site|guidance here]]). It won&#039;t affect the CVS update though.&lt;br /&gt;
&lt;br /&gt;
===Change directory owner===&lt;br /&gt;
&lt;br /&gt;
Depending on your webserver setup, you may well need to change the owner of the directory to the webserver user. Follow this step if you get permissions error when you try to access the page. For apache:&lt;br /&gt;
  &lt;br /&gt;
  chown -R www-data:www-data moodle&lt;br /&gt;
&lt;br /&gt;
===From a Windows computer===&lt;br /&gt;
&lt;br /&gt;
To get started with a fresh copy of Moodle, follow the following steps (remember to replace  &#039;&#039;&#039;SERVER.cvs.moodle.org&#039;&#039;&#039; in the instructions below with the mirror server you chose above):[[Image:CVS moodle settings for tortoise CVS.jpg|thumb|Tortoise CVS Screen capture]]&lt;br /&gt;
[[Image:Ecran cvs.jpg|thumb|Tortoise CVS (real name) Screen capture]]&lt;br /&gt;
# Get TortoiseCVS from [http://www.tortoisecvs.org/ tortoisecvs.org] and install it, then reboot.&lt;br /&gt;
# Find or create a new folder somewhere where you want Moodle to be downloaded to.&lt;br /&gt;
# Right-mouse-click that folder and choose &amp;quot;CVS Checkout&amp;quot; from the menu. You should see a dialog box. &lt;br /&gt;
# Copy this text into the CVSROOT field: &amp;lt;code&amp;gt;:pserver:anonymous@SERVER.cvs.moodle.org:/cvsroot/moodle&amp;lt;/code&amp;gt;&lt;br /&gt;
#* NOTE - replace &amp;quot;SERVER&amp;quot; with &amp;quot;eu&amp;quot;, &amp;quot;es&amp;quot;, &amp;quot;uk&amp;quot; or &amp;quot;us&amp;quot; depending on your location.&lt;br /&gt;
# Under the &amp;quot;Module&amp;quot; field, type &amp;quot;moodle&amp;quot; to get moodle. (Other options here include&amp;quot;contrib&amp;quot; to get the contrib directory of hacks and addons, or &amp;quot;mysql&amp;quot; to get the optional MySQL Admin module).&lt;br /&gt;
#* For the latest STABLE version, click on the &amp;quot;Revision&amp;quot; tab and then check the radio button labelled &amp;quot;Choose branch or tag&amp;quot;. From the drop-down menu select MOODLE_18_STABLE.&lt;br /&gt;
#* If you don&#039;t see the very latest version in the long drop-down list under Branch or tag name, click the Update List button next to it and wait for the list to be updated.&lt;br /&gt;
#* For the latest UNSTABLE development version, the radio-button &amp;quot;Use HEAD branch&amp;quot; in the Revision tab should be checked.&lt;br /&gt;
# Press the button: &amp;quot;OK&amp;quot; and everything should be downloaded. &lt;br /&gt;
&lt;br /&gt;
Later, to update your local copy of Moodle to the current version in CVS, just right-mouse-click the folder and choose &amp;quot;CVS Update&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Note that the enclosing moodle folder is self-contained - you can move it anywhere you like or even rename it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE.-&#039;&#039;&#039; Admins with a developer account on cvs.moodle.org can connect with their account name, see attached screen shot.&lt;br /&gt;
&lt;br /&gt;
===From a Mac OS X computer===&lt;br /&gt;
You will find some information about CVS and Mac OS X  in the documentation for the complete installation package Moodle4Mac. Please read [[Complete_Install_Packages_for_Mac_OS_X#How_To_Update_Your_Moodle4Mac | How To Update Your Moodle4Mac]]. It works fine with the new CVS servers.&lt;br /&gt;
&lt;br /&gt;
===Troubleshooting===&lt;br /&gt;
&lt;br /&gt;
If you see something like this, make sure that there is not some firewall blocking the port (it&#039;s 2401):&lt;br /&gt;
&lt;br /&gt;
 $ cvs -d:pserver:anonymous@us.cvs.moodle.org:/cvsroot/moodle login&lt;br /&gt;
 Logging in to :pserver:anonymous@us.cvs.moodle.org:2401/cvsroot/moodle&lt;br /&gt;
 CVS password:&lt;br /&gt;
 cvs [login aborted]: connect to us.cvs.moodle.org(130.212.64.111):2401 failed: Connection timed out&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
*[[Development:Setting up Eclipse]] for step by step instructions for setting up the [http://www.eclipse.org/ Eclipse IDE] for Moodle development, which including how to do the necessary CVS operations.&lt;br /&gt;
&lt;br /&gt;
Using Moodle forum discussions:&lt;br /&gt;
*[http://moodle.org/mod/forum/discuss.php?d=26731&amp;amp;parent=125858 Using cvs]&lt;br /&gt;
*[http://moodle.org/mod/forum/discuss.php?d=91891 CVS Updating of 3rd-Party Plug-ins in the Moodle folder itself]&lt;br /&gt;
&lt;br /&gt;
[[Category:Administrator]]&lt;br /&gt;
&lt;br /&gt;
[[fr:CVS pour administrateurs]]&lt;/div&gt;</summary>
		<author><name>Scyrma</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/21/en/index.php?title=Development:Overview&amp;diff=35714</id>
		<title>Development:Overview</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/21/en/index.php?title=Development:Overview&amp;diff=35714"/>
		<updated>2008-05-07T06:44:32Z</updated>

		<summary type="html">&lt;p&gt;Scyrma: /* The key players */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A lot of people ask how the development of Moodle operates.  This page should give you a working overview that should help in understanding a lot of other developer documentation.&lt;br /&gt;
&lt;br /&gt;
==The key players==&lt;br /&gt;
&lt;br /&gt;
;Martin Dougiamas: Martin is the lead developer of Moodle. Generally he tries to facilitate democracy and meritocracy but occasionally has to make executive decisions on things.&lt;br /&gt;
&lt;br /&gt;
;Moodle HQ: The mostly-Australian team of developers who are directly funded by the Moodle project to work full-time on core developments.  Developers include Martin Dougiamas (moodler), Eloy Lafuente (stronk7), Petr Skoda (skodak), Mathieu Petit-Clair (scyrma), Nicolas Connault, Donsheng Cai, Jérôme Mouneyrac, Helen Foster (wildgirl) and occasionally Jamie Pratt (jamiesensei). Pictures of everyone can be found here: http://moodle.com/hq/.&lt;br /&gt;
&lt;br /&gt;
;Catalyst: The team of developers working for Moodle clients via Catalyst Ltd in New Zealand, resulting in a lot of core development.  Developers include Martin Langhoff, Penny Leach (mjollnir), Matt Clarkson, and Donal McMullan.&lt;br /&gt;
&lt;br /&gt;
;Open University: The team of developers working on Moodle implementations at Open University in the UK.  Developers include Tim Hunt, Sam Marshall, Nick Freear, Thanh Le and Jenny Gray.&lt;br /&gt;
&lt;br /&gt;
There are many other people contributing to Moodle in many ways, these are just the main groups currently working on core development.  See [http://moodle.org/cvs the full list of people with write access to Moodle]&lt;br /&gt;
&lt;br /&gt;
==Moodle versions==&lt;br /&gt;
&lt;br /&gt;
Moodle major releases occur roughly 6 months or more apart, on no fixed schedule.  Each major release increments the version number by 0.1.  Minor releases (no new features, just fixes) on each stable branch can occur at any time, whenever enough bug fixes have been made to justify them.  The full details can be seen in the [[Release notes]].&lt;br /&gt;
&lt;br /&gt;
The current development version is always on the trunk of CVS (i.e. HEAD), while stable branches are split off for every major version (e.g. MOODLE_18_STABLE).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Release cycles==&lt;br /&gt;
&lt;br /&gt;
Generally a cycle works like this:&lt;br /&gt;
;Rapid Development:Long period of several months adding code to the HEAD version of Moodle.  At the same time, all fixes that don&#039;t involve database changes or radical core changes are backported to the last two or three stable branches.&lt;br /&gt;
;Head Freeze:At some point Martin Dougiamas declares a freeze on new work for a while to stabilise the core.  All database changes and all major core changes need to have explicit permission from Martin.  All developers should be wrapping up work on new features and fixing bugs in new code.  This period may be 1 or 2 weeks.&lt;br /&gt;
;Beta period:Once the HEAD version becomes fairly stable, Martin declares a BETA version and this point is marked on HEAD as MOODLE_XX_BETA (e.g. MOODLE_19_BETA).  Install packages are generated daily from the latest version for wider testing and feedback via the tracker.  The freeze continues, testing and bug fixing continues.  This testing period may be anywhere from 2 to 6 weeks.&lt;br /&gt;
;Major release:When the core code passes all the testing we can throw at it, the MOODLE_XX_BETA flag is moved up to mark the current point as a branch point, and a new stable branch named MOODLE_XX_STABLE is created.  Packages are created, and the release is announced.&lt;br /&gt;
&lt;br /&gt;
Then it all starts again!&lt;br /&gt;
&lt;br /&gt;
==Quality control==&lt;br /&gt;
&lt;br /&gt;
Issue tracking is an important part of a continuous quality control process. It involves reporting of problems (bugs), ideas for improvement and new features. Unlike most proprietary software programs, Moodle issue reporting and tracking information is open to everyone. Moodle&#039;s issue tracking system is called the [[Tracker]].&lt;br /&gt;
&lt;br /&gt;
All Moodle users are encouraged to be active participants when it comes to testing. Anyone with a Tracker user account can create, view, comment on, vote, and watch bugs.&lt;br /&gt;
&lt;br /&gt;
===Testers===&lt;br /&gt;
&lt;br /&gt;
Testers are responsible for verifying the accuracy of changes made by developers. Testers choose which bugs they want to test, according to their area of expertise, and use the QA Assignee field to identify themselves as the tester.&lt;br /&gt;
&lt;br /&gt;
If the bug passes testing, then the tester changes the status of the bug from &#039;resolved&#039; to &#039;closed&#039;. If the bug fails testing, or if the fix is incomplete, then the tester reopens the bug.&lt;br /&gt;
&lt;br /&gt;
A Moodle release will be deemed ready when all &amp;quot;blocker&amp;quot; bugs fixed for a particular version have been closed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Weekly Code Review===&lt;br /&gt;
&lt;br /&gt;
Every Tuesday (all time zones), testers and core developers stop developing new code and focus on reviewing changes made to the stable releases in the past week (both at a code level and an interface level).&lt;br /&gt;
&lt;br /&gt;
This process is intended to improve the quality of the latest download packages and to catch any new bugs that might have been created while fixing old ones.&lt;br /&gt;
&lt;br /&gt;
The latest stable packages are tagged as MOODLE_19_WEEKLY (these tags are updated after the weekly review is over).&lt;br /&gt;
&lt;br /&gt;
See [[Development:Weekly Code Review]] for more details.&lt;br /&gt;
&lt;br /&gt;
==Coding Standards==&lt;br /&gt;
&lt;br /&gt;
The full [[Coding|Coding Guide]] gives all the details, but here are some of the major things  your code needs to hit:&lt;br /&gt;
&lt;br /&gt;
===XMLDB===&lt;br /&gt;
&lt;br /&gt;
All our database schema are created using the XML &#039;&#039;install.php&#039;&#039; files, and upgraded using database-agnostic commands in &#039;&#039;upgrade.php&#039;&#039; files.  Any version of any part of Moodle can be smoothly upgraded to any later version in this fashion (on a wide variety of supported databases).&lt;br /&gt;
&lt;br /&gt;
===XHTML===&lt;br /&gt;
&lt;br /&gt;
All output from Moodle must be compliant with XHTML Strict 1.0, and also compliant with all common accessibility guidelines (such as W3C WAG).  &lt;br /&gt;
&lt;br /&gt;
===Forms===&lt;br /&gt;
&lt;br /&gt;
All forms should use the Moodleforms library if possible.  This results in a standardised accessible output that designers can style consistently and well.&lt;br /&gt;
&lt;br /&gt;
===Parameters===&lt;br /&gt;
&lt;br /&gt;
All parameters should be checked using require_param() and optional_param() which will safely clean all incoming data for use and provide defaults to your code.  Moodleforms will do this automatically for you.&lt;br /&gt;
&lt;br /&gt;
===Output===&lt;br /&gt;
&lt;br /&gt;
All textual output should be output using the format_text or format_string functions.  This will ensure that text is cleaned and filtered appropriately.&lt;br /&gt;
&lt;br /&gt;
===Access===&lt;br /&gt;
&lt;br /&gt;
All permissions-checking should use the &amp;quot;Access library&amp;quot; to check against current capabilities.  The most common function you&#039;ll use is has_capability() which checks the permissions of the current user in an efficient way to see if they are allowed to do this specific operation.   Do not check for specific roles in your code (e.g. teacher/student) as that will make your code useless.&lt;br /&gt;
&lt;br /&gt;
===Other core libraries===&lt;br /&gt;
&lt;br /&gt;
The other major libraries you should get familiar with are:&lt;br /&gt;
# &#039;&#039;moodlelib.php&#039;&#039; - a useful bin of all kinds of useful functions and constants&lt;br /&gt;
# &#039;&#039;datalib.php&#039;&#039; - all the functions you need to interface with the database &lt;br /&gt;
# &#039;&#039;weblib.php&#039;&#039; - all the functions you&#039;ll need to create and output XHTML &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Plugins===&lt;br /&gt;
&lt;br /&gt;
Moodle has about 22 different types of plugins last time I counted.  Plugins can generally be self-contained in a single directory containing scripts, images, stylesheets and language files all in one package that can be dropped into the Moodle script directory in the right place.  After that the admin just needs to visit the admin page to install them.&lt;br /&gt;
&lt;br /&gt;
Most plugins work in one of two ways, they either provide a &#039;&#039;lib.php&#039;&#039; filled with common functions and some scripts with standard names, or they subclass a proto-plugin and override a few method functions to achieve their goals.  &lt;br /&gt;
&lt;br /&gt;
The best way to learn is to pick an example from the core code that is similar to what you want to do and start playing with it.   There are also some template plugins to help get you started.&lt;br /&gt;
&lt;br /&gt;
==Development processes==&lt;br /&gt;
Not all Moodle development happens exactly like this, but it really should. :-)&lt;br /&gt;
&lt;br /&gt;
===Major Development===&lt;br /&gt;
A major development is a significant piece of new code, adding new functionality to Moodle.&lt;br /&gt;
&lt;br /&gt;
====Make sure it&#039;s a good idea====&lt;br /&gt;
Firstly, you should look at the roadmap and talk the idea over with some Moodle developers to see if someone else is working on it already and whether others think the general idea has merit.  Use the forums if you wish, or whatever means you have.  If you have a client, you may need to work with them to work out what they REALLY want (perhaps it isn&#039;t actually a new development for Moodle).&lt;br /&gt;
&lt;br /&gt;
====Create a specification in Moodle Docs====&lt;br /&gt;
Start a new page in the Moodle Docs wiki, similar to [[Development:Grades]].  Your page should outline the database table design, the GUI, the hows and whys etc.  Include as much detail as you need (even mock screenshots) but try to keep it clear and logically organised.&lt;br /&gt;
&lt;br /&gt;
====Seek and absorb community feedback====&lt;br /&gt;
Post about the new page in the appropriate forums on [http://moodle.org/course/view.php?id=5 Using Moodle] to help draw attention to it and to stimulate some discussion around your development.  The more feedback you have the better, especially if it includes a wide variety of users (developers, teachers, students etc).&lt;br /&gt;
&lt;br /&gt;
Edit your page in response to the feedback, or invite people to do so themselves.  try to evolve the specification into something that all users are happy with.   Sometimes it&#039;s worth working harder to find the &amp;quot;best&amp;quot; way to do something without adding Yet Another Option.&lt;br /&gt;
&lt;br /&gt;
====Set up tasks in the Moodle Tracker====&lt;br /&gt;
Once the specification has settled down, it&#039;s time to start work.  Create a new task for yourself in the Moodle Tracker, and add sub-tasks in roughly chronological order for all the different parts of the job.   This not only helps you keep track of where you are, but allows the community to &amp;quot;watch you&amp;quot; develop and to help you where they can.  If there are different people working on different parts, you can assign subtasks to different people.  It&#039;s really very convenient to use once you get the hang of it.&lt;br /&gt;
&lt;br /&gt;
====Use CVS and link commits to Tracker====&lt;br /&gt;
If possible, develop the code in an open code repository (and preferably Moodle CVS!).  If you need CVS write access to the core code or the contrib repository, contact support@moodle.com with details.   Gaining access to the main core code is quite difficult, but we are generally very free with access to the contrib area.&lt;br /&gt;
&lt;br /&gt;
Every time you make a commit, include a detailed message about the new code and always include a Moodle Tracker bug number (e.g. MDL-7777).  This will ensure that the Moodle Tracker is able to detect your commit and attach it to the relevant bug report.&lt;br /&gt;
&lt;br /&gt;
====Comment on milestones in forums and tracker====&lt;br /&gt;
If you hit a major milestone, or want testers to try something, feel free to post about it in the relevant forum on Using Moodle.  The more people you can attract to look and try out your code the better it will be, trust me.&lt;br /&gt;
&lt;br /&gt;
====Respond to bug reports====&lt;br /&gt;
Of course you need to listen to your users (well, most of them :-)).  Encourage people to file bugs, and fix them.  If you need help setting up a project category in the Tracker contact support@moodle.com.  This will ensure that all your bugs are easy to find and to track.&lt;br /&gt;
&lt;br /&gt;
===Minor Development=== &lt;br /&gt;
&lt;br /&gt;
For smaller modules, fixes, improvements and other issues.&lt;br /&gt;
&lt;br /&gt;
====Create a new issue in the tracker====&lt;br /&gt;
&lt;br /&gt;
You should definitely create an issue in the tracker to describe your development and to act as a focus point for all discussion.  You can reference the bug number from forum discussions and in commit messages etc.  This way everyone can easily find out exactly what they are talking about.&lt;br /&gt;
&lt;br /&gt;
====Attach a patch====&lt;br /&gt;
&lt;br /&gt;
If you have some code, please attach it to the tracker issue, or if it&#039;s on your own site then link to it from the tracker issue.  Don&#039;t attach code in the Moodle forums ... it will &amp;quot;rot&amp;quot; quickly there and just clogs up moodle.org with useless old code.&lt;br /&gt;
&lt;br /&gt;
====Promote the patch====&lt;br /&gt;
&lt;br /&gt;
By all means draw attention to your work in the Moodle forums (mentioning the bug number) or email developers directly to help make them aware of it.  You can also add developers as &amp;quot;watchers&amp;quot; to the tracker issue if you want, this means they will get email for every change on the issue.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
* [[Development:Finding your way into the Moodle code]]&lt;br /&gt;
* [[Development:Working with the Community]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer|Overview]]&lt;/div&gt;</summary>
		<author><name>Scyrma</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/21/en/index.php?title=Development:HTML_editor_2.0&amp;diff=35652</id>
		<title>Development:HTML editor 2.0</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/21/en/index.php?title=Development:HTML_editor_2.0&amp;diff=35652"/>
		<updated>2008-05-06T09:40:20Z</updated>

		<summary type="html">&lt;p&gt;Scyrma: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page details the specification of the HTML editor in Moodle 2.0.&lt;br /&gt;
== What we want ==&lt;br /&gt;
Ticket MDL-11113 discusses most issues.&lt;br /&gt;
=== Requirements ===&lt;br /&gt;
* Integration - With Moodle (smileys, different formats, etc.) with a minimum of changes, cleaning up current code as much as possible&lt;br /&gt;
* Compatibility - With web browsers (mostly FF, IE, Safari, Opera)&lt;br /&gt;
* Standard - Outputs valid XHTML code&lt;br /&gt;
* Accessibility - Is it 100% keyboard accessible? Is it usable in JAWS? Etc.&lt;br /&gt;
* Configurability - Possibility to make it show different options and buttons according to the user, the context, etc.&lt;br /&gt;
* Support - Developed by an active community that will support it for a long time.&lt;br /&gt;
&lt;br /&gt;
=== Features ===&lt;br /&gt;
Some features that should be evaluated:&lt;br /&gt;
* Handling of Word documents&lt;br /&gt;
* HTML code direct editing&lt;br /&gt;
* Highlighting (not text background color, with &amp;quot;set-on&amp;quot; operation--Word style)&lt;br /&gt;
* Image uploading&lt;br /&gt;
* Mathematical formulas/equation editing&lt;br /&gt;
* Possible to turn it on and off on demand (on the page) without losing (possibly modified) content (see [http://wiki.moxiecode.com/examples/tinymce/installation_example_07.php this TinyMCE example of this])&lt;br /&gt;
* Right-to-left text input&lt;br /&gt;
* Smileys (has to be possible to use the Moodle list of smileys)&lt;br /&gt;
* Special characters&lt;br /&gt;
* Tables&lt;br /&gt;
* Themeable (possible to make a theme that fits with Moodle&#039;s)&lt;br /&gt;
&lt;br /&gt;
=== Wishes ===&lt;br /&gt;
* Make it possible to change to a different editor (provided someone comes up with the necessary code to &amp;quot;plug it&amp;quot; in Moodle)&lt;br /&gt;
* Possible to run many instances on the same page (see MDL-11101 in tracker)&lt;br /&gt;
* Fix [http://tracker.moodle.org/secure/IssueNavigator.jspa?reset=true&amp;amp;pid=10011&amp;amp;resolution=-1&amp;amp;component=10070&amp;amp;sorter/field=summary&amp;amp;sorter/order=ASC&amp;amp;sorter/field=resolution&amp;amp;sorter/order=ASC&amp;amp;sorter/field=status&amp;amp;sorter/order=ASC&amp;amp;sorter/field=priority&amp;amp;sorter/order=DESC all the bugs] related to the HTML editor&lt;br /&gt;
* Submit drafts in the background, using ajax.&lt;br /&gt;
&lt;br /&gt;
== Possibilities and evaluation ==&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Comparison_of_WYSIWYG_HTML_editors Comparison of WYSIWYG HTML editors on Wikipedia]&lt;br /&gt;
* [http://tinymce.moxiecode.com/ TinyMCE]: [http://wiki.moxiecode.com/index.php/TinyMCE:Compatibility Compatibility], [http://wiki.moxiecode.com/index.php/TinyMCE:Index Documentation], [http://tinymce.moxiecode.com/example_full.php?example=true Demo]&lt;br /&gt;
* [http://www.fckeditor.net/ FCKeditor]: [http://docs.fckeditor.net/FCKeditor_3.x/Design_and_Architecture/Browsers_Compatibility Compatibility] [http://docs.fckeditor.net/ Documentation], [http://www.fckeditor.net/demo Demo]&lt;br /&gt;
* [http://xinha.webfactional.com/ Xinha]: [http://xinha.webfactional.com/wiki/Documentation Documentation], [http://xinha.webfactional.com/wiki/Examples Demo]&lt;br /&gt;
* [http://developer.yahoo.com/yui/editor/ Yahoo RTE]: [http://developer.yahoo.com/yui/docs/module_editor.html Documentation], [http://developer.yahoo.com/yui/examples/editor/index.html Demo], &lt;br /&gt;
As of 16 April 2008, the preference goes to TinyMCE.&lt;br /&gt;
&lt;br /&gt;
== Plan of action ==&lt;br /&gt;
* Get code in HEAD before 13 May 2008 so that work can be done there&lt;br /&gt;
* Have the XHTML profile active by default in TinyMCE&lt;br /&gt;
&lt;br /&gt;
=== Change in formats ===&lt;br /&gt;
&lt;br /&gt;
This is actually more a related issue... There is a [[http://tracker.moodle.org/browse/MDL-4868 | long-standing bug]] about Markdown not being converted to HTML when using the HTML editor (after creating a post with Markdown). As the HTML editor becomes available on more browsers (and being more stable), most people will probably want to use it instead of Markdown, so we should solve this bug, by properly converting the Markdown text to HTML, the first time it is displayed in the editor.&lt;br /&gt;
&lt;br /&gt;
=== Plugins to write ===&lt;br /&gt;
Some plugins will have to be written for each editor to make integration with Moodle possible.  These should be as abstracted as possible, to make as much code as possible common between each&lt;br /&gt;
* Language files: Moodle has a lot more languages than any editors, and some strings will be Moodle-specific.  We need a way to make the editors use Moodle strings&lt;br /&gt;
* File browser: the file browser (especially with the [[Repository API]]) will be Moodle specific&lt;br /&gt;
* Emoticons (smileys): Moodle defines it&#039;s own list of emoticons, we need to make a plugin to use them&lt;br /&gt;
* Equation editor: there is [[DragMath_equation_editor| ongoing work]] to get [http://www.dragmath.bham.ac.uk/ Dragmath] working in Moodle, making a common plugin could be a nice improvement&lt;br /&gt;
* It may be possible to use Moodle&#039;s CSS files to define editors themes/skins, this needs investigation&lt;br /&gt;
&lt;br /&gt;
== Links to forum discussions, tracker, docs, etc. ==&lt;br /&gt;
* [http://tracker.moodle.org/browse/MDL-11113 MDL-11113 - Get a fully working HTML editor in Moodle]&lt;br /&gt;
* [[Development:Moodle-specific customisations to the HTML editor]]&lt;br /&gt;
&lt;br /&gt;
Using Moodle General developer forum discussions:&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=88382 TinyMCE3 Integration]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=93475 XINHA has started to support Opera and Safari]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=76912 What is the current position with the HTML editor?]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=96160 The most important decision on editor integration]&lt;br /&gt;
&lt;br /&gt;
[[Category:HTML editor]]&lt;/div&gt;</summary>
		<author><name>Scyrma</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/21/en/index.php?title=Development:HTML_editor_2.0&amp;diff=35645</id>
		<title>Development:HTML editor 2.0</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/21/en/index.php?title=Development:HTML_editor_2.0&amp;diff=35645"/>
		<updated>2008-05-06T09:08:45Z</updated>

		<summary type="html">&lt;p&gt;Scyrma: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page details the specification of the HTML editor in Moodle 2.0.&lt;br /&gt;
== What we want ==&lt;br /&gt;
Ticket MDL-11113 discusses most issues.&lt;br /&gt;
=== Requirements ===&lt;br /&gt;
* Integration - With Moodle (smileys, different formats, etc.) with a minimum of changes, cleaning up current code as much as possible&lt;br /&gt;
* Compatibility - With web browsers (mostly FF, IE, Safari, Opera)&lt;br /&gt;
* Standard - Outputs valid XHTML code&lt;br /&gt;
* Accessibility - Is it 100% keyboard accessible? Is it usable in JAWS? Etc.&lt;br /&gt;
* Configurability - Possibility to make it show different options and buttons according to the user, the context, etc.&lt;br /&gt;
* Support - Developed by an active community that will support it for a long time.&lt;br /&gt;
&lt;br /&gt;
=== Features ===&lt;br /&gt;
Some features that should be evaluated:&lt;br /&gt;
* Handling of Word documents&lt;br /&gt;
* HTML code direct editing&lt;br /&gt;
* Highlighting (not text background color, with &amp;quot;set-on&amp;quot; operation--Word style)&lt;br /&gt;
* Image uploading&lt;br /&gt;
* Mathematical formulas/equation editing&lt;br /&gt;
* Possible to turn it on and off on demand (on the page) without losing (possibly modified) content (see [http://wiki.moxiecode.com/examples/tinymce/installation_example_07.php this TinyMCE example of this])&lt;br /&gt;
* Right-to-left text input&lt;br /&gt;
* Smileys (has to be possible to use the Moodle list of smileys)&lt;br /&gt;
* Special characters&lt;br /&gt;
* Tables&lt;br /&gt;
* Themeable (possible to make a theme that fits with Moodle&#039;s)&lt;br /&gt;
&lt;br /&gt;
=== Wishes ===&lt;br /&gt;
* Make it possible to change to a different editor (provided someone comes up with the necessary code to &amp;quot;plug it&amp;quot; in Moodle)&lt;br /&gt;
* Possible to run many instances on the same page (see MDL-11101 in tracker)&lt;br /&gt;
* Fix [http://tracker.moodle.org/secure/IssueNavigator.jspa?reset=true&amp;amp;pid=10011&amp;amp;resolution=-1&amp;amp;component=10070&amp;amp;sorter/field=summary&amp;amp;sorter/order=ASC&amp;amp;sorter/field=resolution&amp;amp;sorter/order=ASC&amp;amp;sorter/field=status&amp;amp;sorter/order=ASC&amp;amp;sorter/field=priority&amp;amp;sorter/order=DESC all the bugs] related to the HTML editor&lt;br /&gt;
* Submit drafts in the background, using ajax.&lt;br /&gt;
&lt;br /&gt;
== Possibilities and evaluation ==&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Comparison_of_WYSIWYG_HTML_editors Comparison of WYSIWYG HTML editors on Wikipedia]&lt;br /&gt;
* [http://tinymce.moxiecode.com/ TinyMCE]: [http://wiki.moxiecode.com/index.php/TinyMCE:Compatibility Compatibility], [http://wiki.moxiecode.com/index.php/TinyMCE:Index Documentation], [http://tinymce.moxiecode.com/example_full.php?example=true Demo]&lt;br /&gt;
* [http://www.fckeditor.net/ FCKeditor]: [http://docs.fckeditor.net/FCKeditor_3.x/Design_and_Architecture/Browsers_Compatibility Compatibility] [http://docs.fckeditor.net/ Documentation], [http://www.fckeditor.net/demo Demo]&lt;br /&gt;
* [http://xinha.webfactional.com/ Xinha]: [http://xinha.webfactional.com/wiki/Documentation Documentation], [http://xinha.webfactional.com/wiki/Examples Demo]&lt;br /&gt;
* [http://developer.yahoo.com/yui/editor/ Yahoo RTE]: [http://developer.yahoo.com/yui/docs/module_editor.html Documentation], [http://developer.yahoo.com/yui/examples/editor/index.html Demo], &lt;br /&gt;
As of 16 April 2008, the preference goes to TinyMCE.&lt;br /&gt;
&lt;br /&gt;
== Plan of action ==&lt;br /&gt;
* Get code in HEAD before 13 May 2008 so that work can be done there&lt;br /&gt;
* Have the XHTML profile active by default in TinyMCE&lt;br /&gt;
&lt;br /&gt;
=== Problems &amp;amp; Solutions ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Plugins to write ===&lt;br /&gt;
Some plugins will have to be written for each editor to make integration with Moodle possible.  These should be as abstracted as possible, to make as much code as possible common between each&lt;br /&gt;
* Language files: Moodle has a lot more languages than any editors, and some strings will be Moodle-specific.  We need a way to make the editors use Moodle strings&lt;br /&gt;
* File browser: the file browser (especially with the [[Repository API]]) will be Moodle specific&lt;br /&gt;
* Emoticons (smileys): Moodle defines it&#039;s own list of emoticons, we need to make a plugin to use them&lt;br /&gt;
* Equation editor: there is [[DragMath_equation_editor| ongoing work]] to get [http://www.dragmath.bham.ac.uk/ Dragmath] working in Moodle, making a common plugin could be a nice improvement&lt;br /&gt;
* It may be possible to use Moodle&#039;s CSS files to define editors themes/skins, this needs investigation&lt;br /&gt;
&lt;br /&gt;
== Links to forum discussions, tracker, docs, etc. ==&lt;br /&gt;
* [http://tracker.moodle.org/browse/MDL-11113 MDL-11113 - Get a fully working HTML editor in Moodle]&lt;br /&gt;
* [[Development:Moodle-specific customisations to the HTML editor]]&lt;br /&gt;
&lt;br /&gt;
Using Moodle General developer forum discussions:&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=88382 TinyMCE3 Integration]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=93475 XINHA has started to support Opera and Safari]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=76912 What is the current position with the HTML editor?]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=96160 The most important decision on editor integration]&lt;br /&gt;
&lt;br /&gt;
[[Category:HTML editor]]&lt;/div&gt;</summary>
		<author><name>Scyrma</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/21/en/index.php?title=Development:HTML_editor_2.0&amp;diff=35603</id>
		<title>Development:HTML editor 2.0</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/21/en/index.php?title=Development:HTML_editor_2.0&amp;diff=35603"/>
		<updated>2008-05-05T08:26:08Z</updated>

		<summary type="html">&lt;p&gt;Scyrma: /* Wishes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page details the specification of the HTML editor in Moodle 2.0.&lt;br /&gt;
== What we want ==&lt;br /&gt;
Ticket MDL-11113 discusses most issues.&lt;br /&gt;
=== Requirements ===&lt;br /&gt;
* Integration - With Moodle (smileys, different formats, etc.) with a minimum of changes, cleaning up current code as much as possible&lt;br /&gt;
* Compatibility - With web browsers (mostly FF, IE, Safari, Opera)&lt;br /&gt;
* Standard - Outputs valid XHTML code&lt;br /&gt;
* Accessibility - Is it 100% keyboard accessible? Is it usable in JAWS? Etc.&lt;br /&gt;
* Configurability - Possibility to make it show different options and buttons according to the user, the context, etc.&lt;br /&gt;
* Support - Developed by an active community that will support it for a long time.&lt;br /&gt;
&lt;br /&gt;
=== Features ===&lt;br /&gt;
Some features that should be evaluated:&lt;br /&gt;
* Handling of Word documents&lt;br /&gt;
* HTML code direct editing&lt;br /&gt;
* Highlighting (not text background color, with &amp;quot;set-on&amp;quot; operation--Word style)&lt;br /&gt;
* Image uploading&lt;br /&gt;
* Mathematical formulas/equation editing&lt;br /&gt;
* Possible to turn it on and off on demand (on the page) without losing (modified) content&lt;br /&gt;
* Right-to-left text input&lt;br /&gt;
* Smileys (has to be possible to use the Moodle list of smileys)&lt;br /&gt;
* Special characters&lt;br /&gt;
* Tables&lt;br /&gt;
* Themeable (possible to make a theme that fits with Moodle&#039;s)&lt;br /&gt;
&lt;br /&gt;
=== Wishes ===&lt;br /&gt;
* Make it possible to change to a different editor (provided someone comes up with the necessary code to &amp;quot;plug it&amp;quot; in Moodle)&lt;br /&gt;
* Possible to run many instances on the same page (see MDL-11101 in tracker)&lt;br /&gt;
* Fix [http://tracker.moodle.org/secure/IssueNavigator.jspa?reset=true&amp;amp;pid=10011&amp;amp;resolution=-1&amp;amp;component=10070&amp;amp;sorter/field=summary&amp;amp;sorter/order=ASC&amp;amp;sorter/field=resolution&amp;amp;sorter/order=ASC&amp;amp;sorter/field=status&amp;amp;sorter/order=ASC&amp;amp;sorter/field=priority&amp;amp;sorter/order=DESC all the bugs] related to the HTML editor&lt;br /&gt;
* Submit drafts in the background, using ajax.&lt;br /&gt;
&lt;br /&gt;
== Possibilities and evaluation ==&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Comparison_of_WYSIWYG_HTML_editors Comparison of WYSIWYG HTML editors on Wikipedia]&lt;br /&gt;
* [http://tinymce.moxiecode.com/ TinyMCE]: [http://wiki.moxiecode.com/index.php/TinyMCE:Compatibility Compatibility], [http://wiki.moxiecode.com/index.php/TinyMCE:Index Documentation], [http://tinymce.moxiecode.com/example_full.php?example=true Demo]&lt;br /&gt;
* [http://www.fckeditor.net/ FCKeditor]: [http://docs.fckeditor.net/FCKeditor_3.x/Design_and_Architecture/Browsers_Compatibility Compatibility] [http://docs.fckeditor.net/ Documentation], [http://www.fckeditor.net/demo Demo]&lt;br /&gt;
* [http://xinha.webfactional.com/ Xinha]: [http://xinha.webfactional.com/wiki/Documentation Documentation], [http://xinha.webfactional.com/wiki/Examples Demo]&lt;br /&gt;
* [http://developer.yahoo.com/yui/editor/ Yahoo RTE]: [http://developer.yahoo.com/yui/docs/module_editor.html Documentation], [http://developer.yahoo.com/yui/examples/editor/index.html Demo], &lt;br /&gt;
As of 16 April 2008, the preference goes to TinyMCE.&lt;br /&gt;
&lt;br /&gt;
== Links to forum discussions, tracker, docs, etc. ==&lt;br /&gt;
&lt;br /&gt;
* [http://tracker.moodle.org/browse/MDL-11113 MDL-11113 - Get a fully working HTML editor in Moodle]&lt;br /&gt;
* [[Development:Moodle-specific customisations to the HTML editor]]&lt;br /&gt;
&lt;br /&gt;
Using Moodle General developer forum discussions:&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=88382 TinyMCE3 Integration]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=93475 XINHA has started to support Opera and Safari]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=76912 What is the current position with the HTML editor?]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=96160 The most important decision on editor integration]&lt;br /&gt;
&lt;br /&gt;
[[Category:HTML editor]]&lt;/div&gt;</summary>
		<author><name>Scyrma</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/21/en/index.php?title=Development:HTML_editor_2.0&amp;diff=35138</id>
		<title>Development:HTML editor 2.0</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/21/en/index.php?title=Development:HTML_editor_2.0&amp;diff=35138"/>
		<updated>2008-04-24T03:42:31Z</updated>

		<summary type="html">&lt;p&gt;Scyrma: /* Requirements */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page details the specification of the HTML editor in Moodle 2.0.&lt;br /&gt;
== What we want ==&lt;br /&gt;
Ticket MDL-11113 discusses most issues.&lt;br /&gt;
=== Requirements ===&lt;br /&gt;
* Integration - With Moodle (smileys, different formats, etc.) with a minimum of changes, cleaning up current code as much as possible&lt;br /&gt;
* Compatibility - With web browsers (mostly FF, IE, Safari, Opera)&lt;br /&gt;
* Standard - Outputs valid XHTML code&lt;br /&gt;
* Accessibility - Is it 100% keyboard accessible? Is it usable in JAWS? Etc.&lt;br /&gt;
* Configurability - Possibility to make it show different options and buttons according to the user, the context, etc.&lt;br /&gt;
* Support - Developed by an active community that will support it for a long time.&lt;br /&gt;
&lt;br /&gt;
=== Features ===&lt;br /&gt;
Some features that should be evaluated:&lt;br /&gt;
* Handling of Word documents&lt;br /&gt;
* HTML code direct editing&lt;br /&gt;
* Highlighting (not text background color, with &amp;quot;set-on&amp;quot; operation--Word style)&lt;br /&gt;
* Image uploading&lt;br /&gt;
* Mathematical formulas/equation editing&lt;br /&gt;
* Possible to turn it on and off on demand (on the page) without losing (modified) content&lt;br /&gt;
* Right-to-left text input&lt;br /&gt;
* Smileys (has to be possible to use the Moodle list of smileys)&lt;br /&gt;
* Special characters&lt;br /&gt;
* Tables&lt;br /&gt;
* Themeable (possible to make a theme that fits with Moodle&#039;s)&lt;br /&gt;
&lt;br /&gt;
=== Wishes ===&lt;br /&gt;
* Make it possible to change to a different editor (provided someone comes up with the necessary code to &amp;quot;plug it&amp;quot; in Moodle)&lt;br /&gt;
* Possible to run many instances on the same page (see MDL-11101 in tracker)&lt;br /&gt;
* Fix [http://tracker.moodle.org/secure/IssueNavigator.jspa?reset=true&amp;amp;pid=10011&amp;amp;resolution=-1&amp;amp;component=10070&amp;amp;sorter/field=summary&amp;amp;sorter/order=ASC&amp;amp;sorter/field=resolution&amp;amp;sorter/order=ASC&amp;amp;sorter/field=status&amp;amp;sorter/order=ASC&amp;amp;sorter/field=priority&amp;amp;sorter/order=DESC all the bugs] related to the HTML editor&lt;br /&gt;
== Possibilities and evaluation ==&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Comparison_of_WYSIWYG_HTML_editors Comparison of WYSIWYG HTML editors on Wikipedia]&lt;br /&gt;
* [http://tinymce.moxiecode.com/ TinyMCE]: [http://wiki.moxiecode.com/index.php/TinyMCE:Compatibility Compatibility], [http://wiki.moxiecode.com/index.php/TinyMCE:Index Documentation], [http://tinymce.moxiecode.com/example_full.php?example=true Demo]&lt;br /&gt;
* [http://www.fckeditor.net/ FCKeditor]: [http://docs.fckeditor.net/FCKeditor_3.x/Design_and_Architecture/Browsers_Compatibility Compatibility] [http://docs.fckeditor.net/ Documentation], [http://www.fckeditor.net/demo Demo]&lt;br /&gt;
* [http://xinha.webfactional.com/ Xinha]: [http://xinha.webfactional.com/wiki/Documentation Documentation], [http://xinha.webfactional.com/wiki/Examples Demo]&lt;br /&gt;
* [http://developer.yahoo.com/yui/editor/ Yahoo RTE]: [http://developer.yahoo.com/yui/docs/module_editor.html Documentation], [http://developer.yahoo.com/yui/examples/editor/index.html Demo], &lt;br /&gt;
As of 16 April 2008, the preference goes to TinyMCE.&lt;br /&gt;
== Links to forum discussions, tracker, docs, etc. ==&lt;br /&gt;
* [http://tracker.moodle.org/browse/MDL-11113 MDL-11113 - Get a fully working HTML editor in Moodle]&lt;br /&gt;
* [[Development:Moodle-specific_customisations_to_the_HTML_editor]]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=88382 Using Moodle - General developer forum: TinyMCE3 Integration]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=93475 Using Moodle - General developer forum: XINHA has started to support Opera and Safari]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=76912 Using Moodle - General developer forum: What is the current position with the HTML editor?]&lt;/div&gt;</summary>
		<author><name>Scyrma</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/21/en/index.php?title=admin/environment/php_extension/ctype&amp;diff=35137</id>
		<title>admin/environment/php extension/ctype</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/21/en/index.php?title=admin/environment/php_extension/ctype&amp;diff=35137"/>
		<updated>2008-04-24T02:41:48Z</updated>

		<summary type="html">&lt;p&gt;Scyrma: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The ctype extension is enabled by default in PHP since version 4.3.0.  If it&#039;s not enabled on your server, either you have a very old version of php, or it was probably disabled at build time. You will need to either remove --disable-ctype from the build command, or add --enable-ctype.  Read http://www.php.net/manual/en/ctype.installation.php for details.&lt;br /&gt;
&lt;br /&gt;
For details about Ctype features and history, you can read http://en.wikipedia.org/wiki/Ctype.h&lt;br /&gt;
&lt;br /&gt;
[[Category:Environment|php extension]]&lt;/div&gt;</summary>
		<author><name>Scyrma</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/21/en/index.php?title=Development:HTML_editor_2.0&amp;diff=34870</id>
		<title>Development:HTML editor 2.0</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/21/en/index.php?title=Development:HTML_editor_2.0&amp;diff=34870"/>
		<updated>2008-04-16T06:21:06Z</updated>

		<summary type="html">&lt;p&gt;Scyrma: /* Requirements */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page details the specification of the HTML editor in Moodle 2.0.&lt;br /&gt;
== What we want ==&lt;br /&gt;
Ticket MDL-11113 discusses most issues.&lt;br /&gt;
=== Requirements ===&lt;br /&gt;
* Integration - With Moodle (smileys, different formats, etc.) with a minimum of changes, cleaning up current code as much as possible&lt;br /&gt;
* Compatibility - With web browsers (mostly FF, IE, Safari, Opera)&lt;br /&gt;
* Standard - Outputs valid XHTML code&lt;br /&gt;
* Accessibility - Is it 100% keyboard accessible? Is it usable in JAWS? Etc.&lt;br /&gt;
* Configurability - Possibility to make it show different options and buttons according to the user, the context, etc.&lt;br /&gt;
&lt;br /&gt;
=== Features ===&lt;br /&gt;
Some features that should be evaluated:&lt;br /&gt;
* Handling of Word documents&lt;br /&gt;
* HTML code direct editing&lt;br /&gt;
* Image uploading&lt;br /&gt;
* Mathematical formulas/equation editing&lt;br /&gt;
* Possible to turn it on and off on demand (on the page) without losing (modified) content&lt;br /&gt;
* Right-to-left text input&lt;br /&gt;
* Smileys (has to be possible to use the Moodle list of smileys)&lt;br /&gt;
* Special characters&lt;br /&gt;
* Tables&lt;br /&gt;
* Themeable (possible to make a theme that fits with Moodle&#039;s)&lt;br /&gt;
=== Wishes ===&lt;br /&gt;
* Make it possible to change to a different editor (provided someone comes up with the necessary code to &amp;quot;plug it&amp;quot; in Moodle)&lt;br /&gt;
* Possible to run many instances on the same page (see MDL-11101 in tracker)&lt;br /&gt;
* Fix [http://tracker.moodle.org/secure/IssueNavigator.jspa?reset=true&amp;amp;pid=10011&amp;amp;resolution=-1&amp;amp;component=10070&amp;amp;sorter/field=summary&amp;amp;sorter/order=ASC&amp;amp;sorter/field=resolution&amp;amp;sorter/order=ASC&amp;amp;sorter/field=status&amp;amp;sorter/order=ASC&amp;amp;sorter/field=priority&amp;amp;sorter/order=DESC all the bugs] related to the HTML editor&lt;br /&gt;
== Possibilities and evaluation ==&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Comparison_of_WYSIWYG_HTML_editors Comparison of WYSIWYG HTML editors on Wikipedia]&lt;br /&gt;
* [http://tinymce.moxiecode.com/ TinyMCE]: [http://wiki.moxiecode.com/index.php/TinyMCE:Compatibility Compatibility], [http://wiki.moxiecode.com/index.php/TinyMCE:Index Documentation], [http://tinymce.moxiecode.com/example_full.php?example=true Demo]&lt;br /&gt;
* [http://www.fckeditor.net/ FCKeditor]: [http://docs.fckeditor.net/FCKeditor_3.x/Design_and_Architecture/Browsers_Compatibility Compatibility] [http://docs.fckeditor.net/ Documentation], [http://www.fckeditor.net/demo Demo]&lt;br /&gt;
* [http://xinha.webfactional.com/ Xinha]: [http://xinha.webfactional.com/wiki/Documentation Documentation], [http://xinha.webfactional.com/wiki/Examples Demo]&lt;br /&gt;
* [http://developer.yahoo.com/yui/editor/ Yahoo RTE]: [http://developer.yahoo.com/yui/docs/module_editor.html Documentation], [http://developer.yahoo.com/yui/examples/editor/index.html Demo], &lt;br /&gt;
As of 16 April 2008, the preference goes to TinyMCE.&lt;br /&gt;
== Links to forum discussions, tracker, docs, etc. ==&lt;br /&gt;
* [http://tracker.moodle.org/browse/MDL-11113 MDL-11113 - Get a fully working HTML editor in Moodle]&lt;br /&gt;
* [[Development:Moodle-specific_customisations_to_the_HTML_editor]]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=88382 Using Moodle - General developer forum: TinyMCE3 Integration]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=93475 Using Moodle - General developer forum: XINHA has started to support Opera and Safari]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=76912 Using Moodle - General developer forum: What is the current position with the HTML editor?]&lt;/div&gt;</summary>
		<author><name>Scyrma</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/21/en/index.php?title=Development:HTML_editor_2.0&amp;diff=34869</id>
		<title>Development:HTML editor 2.0</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/21/en/index.php?title=Development:HTML_editor_2.0&amp;diff=34869"/>
		<updated>2008-04-16T06:19:03Z</updated>

		<summary type="html">&lt;p&gt;Scyrma: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page details the specification of the HTML editor in Moodle 2.0.&lt;br /&gt;
== What we want ==&lt;br /&gt;
Ticket MDL-11113 discusses most issues.&lt;br /&gt;
=== Requirements ===&lt;br /&gt;
* Integration - With Moodle (smileys, different formats, etc.) with a minimum of changes&lt;br /&gt;
* Compatibility - With web browsers (mostly FF, IE, Safari, Opera)&lt;br /&gt;
* Standard - Outputs valid XHTML code&lt;br /&gt;
* Accessibility - Is it 100% keyboard accessible? Is it usable in JAWS? Etc.&lt;br /&gt;
* Configurability - Possibility to make it show different options and buttons according to the user, the context, etc.&lt;br /&gt;
=== Features ===&lt;br /&gt;
Some features that should be evaluated:&lt;br /&gt;
* Handling of Word documents&lt;br /&gt;
* HTML code direct editing&lt;br /&gt;
* Image uploading&lt;br /&gt;
* Mathematical formulas/equation editing&lt;br /&gt;
* Possible to turn it on and off on demand (on the page) without losing (modified) content&lt;br /&gt;
* Right-to-left text input&lt;br /&gt;
* Smileys (has to be possible to use the Moodle list of smileys)&lt;br /&gt;
* Special characters&lt;br /&gt;
* Tables&lt;br /&gt;
* Themeable (possible to make a theme that fits with Moodle&#039;s)&lt;br /&gt;
=== Wishes ===&lt;br /&gt;
* Make it possible to change to a different editor (provided someone comes up with the necessary code to &amp;quot;plug it&amp;quot; in Moodle)&lt;br /&gt;
* Possible to run many instances on the same page (see MDL-11101 in tracker)&lt;br /&gt;
* Fix [http://tracker.moodle.org/secure/IssueNavigator.jspa?reset=true&amp;amp;pid=10011&amp;amp;resolution=-1&amp;amp;component=10070&amp;amp;sorter/field=summary&amp;amp;sorter/order=ASC&amp;amp;sorter/field=resolution&amp;amp;sorter/order=ASC&amp;amp;sorter/field=status&amp;amp;sorter/order=ASC&amp;amp;sorter/field=priority&amp;amp;sorter/order=DESC all the bugs] related to the HTML editor&lt;br /&gt;
== Possibilities and evaluation ==&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Comparison_of_WYSIWYG_HTML_editors Comparison of WYSIWYG HTML editors on Wikipedia]&lt;br /&gt;
* [http://tinymce.moxiecode.com/ TinyMCE]: [http://wiki.moxiecode.com/index.php/TinyMCE:Compatibility Compatibility], [http://wiki.moxiecode.com/index.php/TinyMCE:Index Documentation], [http://tinymce.moxiecode.com/example_full.php?example=true Demo]&lt;br /&gt;
* [http://www.fckeditor.net/ FCKeditor]: [http://docs.fckeditor.net/FCKeditor_3.x/Design_and_Architecture/Browsers_Compatibility Compatibility] [http://docs.fckeditor.net/ Documentation], [http://www.fckeditor.net/demo Demo]&lt;br /&gt;
* [http://xinha.webfactional.com/ Xinha]: [http://xinha.webfactional.com/wiki/Documentation Documentation], [http://xinha.webfactional.com/wiki/Examples Demo]&lt;br /&gt;
* [http://developer.yahoo.com/yui/editor/ Yahoo RTE]: [http://developer.yahoo.com/yui/docs/module_editor.html Documentation], [http://developer.yahoo.com/yui/examples/editor/index.html Demo], &lt;br /&gt;
As of 16 April 2008, the preference goes to TinyMCE.&lt;br /&gt;
== Links to forum discussions, tracker, docs, etc. ==&lt;br /&gt;
* [http://tracker.moodle.org/browse/MDL-11113 MDL-11113 - Get a fully working HTML editor in Moodle]&lt;br /&gt;
* [[Development:Moodle-specific_customisations_to_the_HTML_editor]]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=88382 Using Moodle - General developer forum: TinyMCE3 Integration]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=93475 Using Moodle - General developer forum: XINHA has started to support Opera and Safari]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=76912 Using Moodle - General developer forum: What is the current position with the HTML editor?]&lt;/div&gt;</summary>
		<author><name>Scyrma</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/21/en/index.php?title=Development:HTML_editor_2.0&amp;diff=34868</id>
		<title>Development:HTML editor 2.0</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/21/en/index.php?title=Development:HTML_editor_2.0&amp;diff=34868"/>
		<updated>2008-04-16T05:44:32Z</updated>

		<summary type="html">&lt;p&gt;Scyrma: /* Links to forum discussions, tracker, docs, etc. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page details the specification of the HTML editor in Moodle 2.0.&lt;br /&gt;
&lt;br /&gt;
== What we want ==&lt;br /&gt;
=== Requirements ===&lt;br /&gt;
* Integration - With Moodle (smileys, different formats, etc.) with a minimum of changes&lt;br /&gt;
* Compatibility - With web browsers (mostly FF, IE, Safari, Opera)&lt;br /&gt;
* Standard - Outputs valid XHTML code&lt;br /&gt;
* Accessibility - Is it 100% keyboard accessible? Is it usable in JAWS? Etc.&lt;br /&gt;
* Configurability - Possibility to make it show different options and buttons according to the user, the context, etc.&lt;br /&gt;
&lt;br /&gt;
=== Features ===&lt;br /&gt;
Some features that should be evaluated:&lt;br /&gt;
* Handling of Word documents&lt;br /&gt;
* HTML code direct editing&lt;br /&gt;
* Image uploading&lt;br /&gt;
* Mathematical formulas editing&lt;br /&gt;
* Possible to turn it on and off on demand (on the page) without losing (modified) content&lt;br /&gt;
* Right-to-left text input&lt;br /&gt;
* Smileys (has to be possible to use the Moodle list of smileys)&lt;br /&gt;
* Special characters&lt;br /&gt;
* Tables&lt;br /&gt;
* Themeable (possible to make a theme that fits with Moodle&#039;s)&lt;br /&gt;
&lt;br /&gt;
Ticket MDL-11113 discusses most issues.&lt;br /&gt;
&lt;br /&gt;
== Possibilities and evaluation ==&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Comparison_of_WYSIWYG_HTML_editors Comparison of WYSIWYG HTML editors on Wikipedia]&lt;br /&gt;
* [http://tinymce.moxiecode.com/ TinyMCE]: [http://wiki.moxiecode.com/index.php/TinyMCE:Compatibility Compatibility], [http://wiki.moxiecode.com/index.php/TinyMCE:Index Documentation], [http://tinymce.moxiecode.com/example_full.php?example=true Demo]&lt;br /&gt;
* [http://www.fckeditor.net/ FCKeditor]: [http://docs.fckeditor.net/FCKeditor_3.x/Design_and_Architecture/Browsers_Compatibility Compatibility] [http://docs.fckeditor.net/ Documentation], [http://www.fckeditor.net/demo Demo]&lt;br /&gt;
* [http://xinha.webfactional.com/ Xinha]: [http://xinha.webfactional.com/wiki/Documentation Documentation], [http://xinha.webfactional.com/wiki/Examples Demo]&lt;br /&gt;
* [http://developer.yahoo.com/yui/editor/ Yahoo RTE]: [http://developer.yahoo.com/yui/docs/module_editor.html Documentation], [http://developer.yahoo.com/yui/examples/editor/index.html Demo], &lt;br /&gt;
&lt;br /&gt;
As of 16 April 2008, the preference goes to TinyMCE.&lt;br /&gt;
&lt;br /&gt;
== Links to forum discussions, tracker, docs, etc. ==&lt;br /&gt;
* [http://tracker.moodle.org/browse/MDL-11113 MDL-11113 - Get a fully working HTML editor in Moodle]&lt;br /&gt;
* [[Development:Moodle-specific_customisations_to_the_HTML_editor]]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=76912 Using Moodle - General developer forum: What is the current position with the HTML editor?]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=93475 Using Moodle - General developer forum: XINHA has started to support Opera and Safari]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=88382 Using Moodle - General developer forum: TinyMCE3 Integration]&lt;/div&gt;</summary>
		<author><name>Scyrma</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/21/en/index.php?title=Development:HTML_editor_2.0&amp;diff=34867</id>
		<title>Development:HTML editor 2.0</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/21/en/index.php?title=Development:HTML_editor_2.0&amp;diff=34867"/>
		<updated>2008-04-16T04:34:29Z</updated>

		<summary type="html">&lt;p&gt;Scyrma: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page details the specification of the HTML editor in Moodle 2.0.&lt;br /&gt;
&lt;br /&gt;
== What we want ==&lt;br /&gt;
=== Requirements ===&lt;br /&gt;
* Integration - With Moodle (smileys, different formats, etc.) with a minimum of changes&lt;br /&gt;
* Compatibility - With web browsers (mostly FF, IE, Safari, Opera)&lt;br /&gt;
* Standard - Outputs valid XHTML code&lt;br /&gt;
* Accessibility - Is it 100% keyboard accessible? Is it usable in JAWS? Etc.&lt;br /&gt;
* Configurability - Possibility to make it show different options and buttons according to the user, the context, etc.&lt;br /&gt;
&lt;br /&gt;
=== Features ===&lt;br /&gt;
Some features that should be evaluated:&lt;br /&gt;
* Handling of Word documents&lt;br /&gt;
* HTML code direct editing&lt;br /&gt;
* Image uploading&lt;br /&gt;
* Mathematical formulas editing&lt;br /&gt;
* Possible to turn it on and off on demand (on the page) without losing (modified) content&lt;br /&gt;
* Right-to-left text input&lt;br /&gt;
* Smileys (has to be possible to use the Moodle list of smileys)&lt;br /&gt;
* Special characters&lt;br /&gt;
* Tables&lt;br /&gt;
* Themeable (possible to make a theme that fits with Moodle&#039;s)&lt;br /&gt;
&lt;br /&gt;
Ticket MDL-11113 discusses most issues.&lt;br /&gt;
&lt;br /&gt;
== Possibilities and evaluation ==&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Comparison_of_WYSIWYG_HTML_editors Comparison of WYSIWYG HTML editors on Wikipedia]&lt;br /&gt;
* [http://tinymce.moxiecode.com/ TinyMCE]: [http://wiki.moxiecode.com/index.php/TinyMCE:Compatibility Compatibility], [http://wiki.moxiecode.com/index.php/TinyMCE:Index Documentation], [http://tinymce.moxiecode.com/example_full.php?example=true Demo]&lt;br /&gt;
* [http://www.fckeditor.net/ FCKeditor]: [http://docs.fckeditor.net/FCKeditor_3.x/Design_and_Architecture/Browsers_Compatibility Compatibility] [http://docs.fckeditor.net/ Documentation], [http://www.fckeditor.net/demo Demo]&lt;br /&gt;
* [http://xinha.webfactional.com/ Xinha]: [http://xinha.webfactional.com/wiki/Documentation Documentation], [http://xinha.webfactional.com/wiki/Examples Demo]&lt;br /&gt;
* [http://developer.yahoo.com/yui/editor/ Yahoo RTE]: [http://developer.yahoo.com/yui/docs/module_editor.html Documentation], [http://developer.yahoo.com/yui/examples/editor/index.html Demo], &lt;br /&gt;
&lt;br /&gt;
As of 16 April 2008, the preference goes to TinyMCE.&lt;br /&gt;
&lt;br /&gt;
== Links to forum discussions, tracker, docs, etc. ==&lt;br /&gt;
* [http://tracker.moodle.org/browse/MDL-11113 MDL-11113 - Get a fully working HTML editor in Moodle]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=76912 Using Moodle: What is the current position with the HTML editor?]&lt;br /&gt;
* [[Development:Moodle-specific_customisations_to_the_HTML_editor]]&lt;/div&gt;</summary>
		<author><name>Scyrma</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/21/en/index.php?title=Development:HTML_editor_2.0&amp;diff=34866</id>
		<title>Development:HTML editor 2.0</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/21/en/index.php?title=Development:HTML_editor_2.0&amp;diff=34866"/>
		<updated>2008-04-16T04:33:17Z</updated>

		<summary type="html">&lt;p&gt;Scyrma: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page details the specification of the HTML editor in Moodle 2.0.&lt;br /&gt;
&lt;br /&gt;
== What we want ==&lt;br /&gt;
&lt;br /&gt;
* Integration - With Moodle (smileys, different formats, etc.) with a minimum of changes&lt;br /&gt;
* Compatibility - With web browsers (mostly FF, IE, Safari, Opera)&lt;br /&gt;
* Standard - Outputs valid XHTML code&lt;br /&gt;
* Accessibility - Is it 100% keyboard accessible? Is it usable in JAWS? Etc.&lt;br /&gt;
* Configurability - Possibility to make it show different options and buttons according to the user, the context, etc.&lt;br /&gt;
&lt;br /&gt;
Some features that should be evaluated:&lt;br /&gt;
* Handling of Word documents&lt;br /&gt;
* HTML code direct editing&lt;br /&gt;
* Image uploading&lt;br /&gt;
* Mathematical formulas editing&lt;br /&gt;
* Possible to turn it on and off on demand (on the page) without losing (modified) content&lt;br /&gt;
* Right-to-left text input&lt;br /&gt;
* Smileys (has to be possible to use the Moodle list of smileys)&lt;br /&gt;
* Special characters&lt;br /&gt;
* Tables&lt;br /&gt;
* Themeable (possible to make a theme that fits with Moodle&#039;s)&lt;br /&gt;
&lt;br /&gt;
Ticket MDL-11113 discusses most issues.&lt;br /&gt;
&lt;br /&gt;
== Possibilities and evaluation ==&lt;br /&gt;
&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Comparison_of_WYSIWYG_HTML_editors Comparison of WYSIWYG HTML editors on Wikipedia]&lt;br /&gt;
* [http://tinymce.moxiecode.com/ TinyMCE]: [http://wiki.moxiecode.com/index.php/TinyMCE:Compatibility Compatibility], [http://wiki.moxiecode.com/index.php/TinyMCE:Index Documentation], [http://tinymce.moxiecode.com/example_full.php?example=true Demo]&lt;br /&gt;
* [http://www.fckeditor.net/ FCKeditor]: [http://docs.fckeditor.net/FCKeditor_3.x/Design_and_Architecture/Browsers_Compatibility Compatibility] [http://docs.fckeditor.net/ Documentation], [http://www.fckeditor.net/demo Demo]&lt;br /&gt;
* [http://xinha.webfactional.com/ Xinha]: [http://xinha.webfactional.com/wiki/Documentation Documentation], [http://xinha.webfactional.com/wiki/Examples Demo]&lt;br /&gt;
* [http://developer.yahoo.com/yui/editor/ Yahoo RTE]: [http://developer.yahoo.com/yui/docs/module_editor.html Documentation], [http://developer.yahoo.com/yui/examples/editor/index.html Demo], &lt;br /&gt;
&lt;br /&gt;
As of 16 April 2008, the preference goes to TinyMCE.&lt;br /&gt;
&lt;br /&gt;
== Links to forum discussions, tracker, docs, etc. ==&lt;br /&gt;
* [http://tracker.moodle.org/browse/MDL-11113 MDL-11113 - Get a fully working HTML editor in Moodle]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=76912 Using Moodle: What is the current position with the HTML editor?]&lt;br /&gt;
* [[Development:Moodle-specific_customisations_to_the_HTML_editor]]&lt;/div&gt;</summary>
		<author><name>Scyrma</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/21/en/index.php?title=Development:Setting_up_Eclipse&amp;diff=34795</id>
		<title>Development:Setting up Eclipse</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/21/en/index.php?title=Development:Setting_up_Eclipse&amp;diff=34795"/>
		<updated>2008-04-14T04:09:51Z</updated>

		<summary type="html">&lt;p&gt;Scyrma: /* Checking out the Moodle code */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://www.eclipse.org/ Eclipse] is an IDE originally designed for Java, but now with plugins for many languages including PHP. It has lots of very powerful features, and it is the editor that some Moodle developers like to use. Other (more) popular choices are vim and emacs.&lt;br /&gt;
&lt;br /&gt;
However, Eclipse is not the easiest program in the world to get started with, so I&#039;m going to take you through it step by step. These instructions assume Eclipse 3.2, the current version at the time of writing. It should not change much between releases.&lt;br /&gt;
&lt;br /&gt;
This article started off as a brain-dump by [[User:Tim Hunt|Tim Hunt]]. Since then, several other people have worked through it and made corrections, so the information here should be pretty accurate.&lt;br /&gt;
&lt;br /&gt;
==Prerequisites==&lt;br /&gt;
&lt;br /&gt;
Eclipse is written in Java, so I recommend getting the latest Java runtime environment from http://java.com/ for maximum speed and reliability.&lt;br /&gt;
&lt;br /&gt;
Eclipse is quite big, so I recommend lots of memory in your computer. I have used it on Windows, MacOS X and Linux, in each case with 1GB of memory, and that is plenty.&lt;br /&gt;
&lt;br /&gt;
==Installing Eclipse==&lt;br /&gt;
&lt;br /&gt;
Go to http://www.eclipse.org/downloads/. Click on the link corresponding to your operating system where it says &#039;&#039;&#039;Eclipse Classic&#039;&#039;&#039;. Choose a Mirror, and wait for the ~100MB download.&lt;br /&gt;
&lt;br /&gt;
You will notice that what you have got is a zip file (unless your system automatically decompresses it for you).&lt;br /&gt;
&lt;br /&gt;
On Windows, unzip it into &#039;&#039;&#039;C:\Program Files&#039;&#039;&#039; (all the files go into an &#039;&#039;&#039;Eclipse&#039;&#039;&#039; folder there). Then look in the Eclipse folder and drag Eclipse.exe to the Start menu/Desktop/Quicklaunch bar to make a shortcut for starting it.&lt;br /&gt;
&lt;br /&gt;
On MacOS, unzip and copy the Eclipse folder into Applications. Go into the Eclipse folder and drag the Eclipse app to the Dock for ease of launching.&lt;br /&gt;
&lt;br /&gt;
On Linux, unzip somewhere suitable, and make an easy way to launch it.&lt;br /&gt;
&lt;br /&gt;
==The first time you run Eclipse==&lt;br /&gt;
&lt;br /&gt;
The first time you launch Eclipse it does a bit of setup stuff, for instance, it create a &#039;&#039;&#039;workspace&#039;&#039;&#039;. This is where it stores the things you are working on. The default location is sensible on all platforms, so use that. &lt;br /&gt;
&lt;br /&gt;
For some reason, every time you start Eclipse, it asks you which workspace you want to use. I have never seen the need to have more than one, so I recommend turning on the checkbox that says &amp;quot;Use this as the default and do not ask again&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Another thing that happens the first time you run Eclipse is that you arrive at a welcome screen. This has links to various bits of help, which you can read if you like, but you probably don&#039;t need to if you are following these instructions. So find the button on the welcome page that closes it and gets you to the main Eclipse screen.&lt;br /&gt;
&lt;br /&gt;
==Installing the necessary plugins==&lt;br /&gt;
&lt;br /&gt;
By default, Eclipse comes with the Java tools. For everything else you will need to install some plugins.&lt;br /&gt;
&lt;br /&gt;
If you are sitting behind a web proxy, from the &#039;&#039;&#039;Window&#039;&#039;&#039; menu choose &#039;&#039;&#039;Preferences ...&#039;&#039;&#039;. Choose &#039;&#039;&#039;Install/Update&#039;&#039;&#039; from the tree view on the left, and enter the proxy information in the boxes on the right. If you aren&#039;t behind a proxy, ignore this step.&lt;br /&gt;
&lt;br /&gt;
From the &#039;&#039;&#039;Help&#039;&#039;&#039; menu choose &#039;&#039;&#039;Software Updates -&amp;gt; Find and Install&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
On the first screen of the wizard, make sure that &amp;quot;Search for new features to install&amp;quot; is selected, then click &#039;&#039;&#039;Next &amp;gt;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The next screen is a list of upgrade sites to check. You need to add one to the list, so click the &#039;&#039;&#039;New Remote Site ...&#039;&#039;&#039; Button.&lt;br /&gt;
&lt;br /&gt;
In the pop-up dialog, give the remote site a name like &#039;&#039;&#039;PHPeclipse Update Site&#039;&#039;&#039;; set the URL to http://phpeclipse.sourceforge.net/update/releases/; then click &#039;&#039;&#039;OK&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note, there is now also another PHP editor for Eclipse. The update URL ishttp://download.eclipse.org/tools/pdt/updates/. I am just trying it--[[User:Tim Hunt|Tim Hunt]] 11:39, 7 November 2007 (CST)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Back in the wizard, turn on just two things in the box &amp;quot;Sites to include in search&amp;quot;:&lt;br /&gt;
* Your newly created &#039;&#039;&#039;Phpeclipse Update Site&#039;&#039;&#039;; and&lt;br /&gt;
* the one called &#039;&#039;&#039;Europa Discovery Site&#039;&#039;&#039; (or possibly &#039;&#039;&#039;Callisto Discovery Site&#039;&#039;&#039;.&lt;br /&gt;
Then click &#039;&#039;&#039;Finish&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
It goes off sees what updates are available at those sites. As it does so, it may occasionally pop up a dialog asking you to choose a mirror. Each time, select a sensible one.&lt;br /&gt;
&lt;br /&gt;
Eventually, you get to a new wizard for selecting and installing the updates you want. The ones you want (you may have to search the tree structure) are, &#039;&#039;&#039;PHPeclipse&#039;&#039;&#039; (from your newly created PHPEclipse Update Site) and all the &#039;&#039;&#039;Web Standard Tools (WST)&#039;&#039;&#039; (usually under Callisto Discovery Site --&amp;gt; Web and J2EE Development).&lt;br /&gt;
&lt;br /&gt;
Next, and very importantly, you must click the &#039;&#039;&#039;Select Required&#039;&#039;&#039; button which should resolve dependencies and remove the warning message you are probably worrying about. Then you can click the &#039;&#039;&#039;Next &amp;gt;&#039;&#039;&#039; button.&lt;br /&gt;
&lt;br /&gt;
Read and agree to all the license agreements. Then click &#039;&#039;&#039;Next &amp;gt;&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
Click &#039;&#039;&#039;Finish&#039;&#039;&#039;, and wait for the plugins to download.&lt;br /&gt;
&lt;br /&gt;
Once the downloads have finished, a warning will pop-up telling you that all the plugins you downloaded are not digitally signed. The Eclipse Foundation build digital signing of plugins into their architecture as a security measure, and then did not sign any of their own plugins! Anyway, click the &#039;&#039;&#039;Install All&#039;&#039;&#039; button.&lt;br /&gt;
&lt;br /&gt;
Finally, a window will pop up asking you to restart Eclipse. Do so.&lt;br /&gt;
&lt;br /&gt;
==Setting the preferences for Moodle development==&lt;br /&gt;
&lt;br /&gt;
Now go to the &#039;&#039;&#039;Window&#039;&#039;&#039; menu, and choose &#039;&#039;&#039;Preferences ...&#039;&#039;&#039; (&#039;&#039;&#039;Eclipse&#039;&#039;&#039; menu on Mac OS X).&lt;br /&gt;
&lt;br /&gt;
The Eclipse preferences are immense, with a tree view on the left, which selects which screen to display on the right. Don&#039;t panic, we&#039;ll guide you through it.&lt;br /&gt;
&lt;br /&gt;
===General settings===&lt;br /&gt;
&lt;br /&gt;
If you have strong feelings about fonts (I would hate to edit code an anything except Andale Mono), choose &#039;&#039;&#039;General -&amp;gt; Appearance -&amp;gt; Colors and Fonts&#039;&#039;&#039; from the tree on the left. Then on the right look under &#039;&#039;&#039;Basic&#039;&#039;&#039; and change &#039;&#039;&#039;Text Font&#039;&#039;&#039;. All the other editor font settings will inherit from this, so this is probably the only one you have to change.&lt;br /&gt;
&lt;br /&gt;
Under &#039;&#039;&#039;General -&amp;gt; Content Types&#039;&#039;&#039;, select PHP Source File, and add &#039;&#039;&#039;*.html&#039;&#039;&#039; to the box at the bottom.&lt;br /&gt;
&lt;br /&gt;
Under &#039;&#039;&#039;General -&amp;gt; Editors -&amp;gt; File Associations&#039;&#039;&#039;, if it is not already there, add &#039;&#039;&#039;*.php&#039;&#039;&#039; to the top box. With &#039;&#039;&#039;*.php&#039;&#039;&#039; selected in the top box, make sure &#039;&#039;&#039;PHP Editor&#039;&#039;&#039; is set to default in the bottom box. With &#039;&#039;&#039;*.html&#039;&#039;&#039; selected in the top box, select &#039;&#039;&#039;PHP Editor&#039;&#039;&#039; in the bottom box and click the &#039;&#039;&#039;Default&#039;&#039;&#039; button to change it, because in Moodle, most HTML files actually contain PHP code.&lt;br /&gt;
&lt;br /&gt;
If you use a web proxy, enter the details under &#039;&#039;&#039;Internet -&amp;gt; Proxy Settings&#039;&#039;&#039;. (Yes, I know you have entered them somewhere else before. Now you have to enter them again here. I don&#039;t know why. You just do.)&lt;br /&gt;
&lt;br /&gt;
===PHP Settings===&lt;br /&gt;
&lt;br /&gt;
These are all hidden under the &#039;&#039;&#039;PHPeclipse Web Development&#039;&#039;&#039; bit of the tree.&lt;br /&gt;
&lt;br /&gt;
Under &#039;&#039;&#039;PHPeclipse Web Development -&amp;gt; Browser Preview Defaults&#039;&#039;&#039;, turn off both checkboxes.&lt;br /&gt;
&lt;br /&gt;
Under &#039;&#039;&#039;PHPeclipse Web Development -&amp;gt; PHP&#039;&#039;&#039;, on the &#039;&#039;&#039;Appearance&#039;&#039;&#039; tab, set &#039;&#039;&#039;Displayed tab width&#039;&#039;&#039; to 4.&lt;br /&gt;
&lt;br /&gt;
Under &#039;&#039;&#039;PHPeclipse Web Development -&amp;gt; PHP&#039;&#039;&#039;, on the &#039;&#039;&#039;Appearance&#039;&#039;&#039; tab, check &#039;&#039;&#039;Show line numbers&#039;&#039;&#039; to display line numbers in the left margin (optional). NOTE.- When you are editing a PHP file, you could left-click in the left margin and tick the &#039;&#039;&#039;Show Line Numbers&#039;&#039;&#039; line in the contextual menu. However, this toggle only applies to plain text files, &#039;&#039;not&#039;&#039; to HTML or PHP files. The only place where you can toggle line numbers on/off for such files is in the PHP/Appearance menu.&lt;br /&gt;
&lt;br /&gt;
Under &#039;&#039;&#039;PHPeclipse Web Development -&amp;gt; PHP&#039;&#039;&#039;, on the &#039;&#039;&#039;Typing&#039;&#039;&#039; tab, turn off all the options except &#039;&#039;&#039;Pasting for correct indentation&#039;&#039;&#039;, &#039;&#039;&#039;Insert spaces for tab&#039;&#039;&#039; and &#039;&#039;&#039;Close PHPdocs and comments&#039;&#039;&#039; and &#039;&#039;&#039;Remove trailing spaces on editor save&#039;&#039;&#039;. It would be nice to turn on more of these options, but most of the rest don&#039;t work very well.&lt;br /&gt;
&lt;br /&gt;
Under &#039;&#039;&#039;PHPeclipse Web Development -&amp;gt; PHP -&amp;gt; Formatter&#039;&#039;&#039;, on the &#039;&#039;&#039;New Lines&#039;&#039;&#039; tab, turn on &#039;&#039;&#039;Clear all blank lines&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Under &#039;&#039;&#039;PHPeclipse Web Development -&amp;gt; PHP -&amp;gt; Formatter&#039;&#039;&#039;, on the &#039;&#039;&#039;Style&#039;&#039;&#039; tab, turn off &#039;&#039;&#039;Indentation is represented by a tab&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Under &#039;&#039;&#039;PHPeclipse Web Development -&amp;gt; PHP -&amp;gt; Templates&#039;&#039;&#039;, I like to define a new template to help with debugging:&lt;br /&gt;
;Name&lt;br /&gt;
:dump &lt;br /&gt;
;Description&lt;br /&gt;
:Dump a PHP variable&lt;br /&gt;
;Pattern&lt;br /&gt;
&amp;lt;pre&amp;gt;print_object(${word_selection}${cursor}); // DONOTCOMMIT&amp;lt;/pre&amp;gt;&lt;br /&gt;
You can do other useful things with templates too. Here are two more I use:&lt;br /&gt;
&amp;lt;pre&amp;gt;debugging(&amp;quot;&#039;${word_selection}${cursor}&#039;&amp;quot;); // DONOTCOMMIT&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;$$string[&#039;${word_selection}${cursor}&#039;] = &#039;.&#039;;&amp;lt;/pre&amp;gt;&lt;br /&gt;
That is, a simple debug message with a stack trace, and a new language string.&lt;br /&gt;
&lt;br /&gt;
There is a really stupid bug. Under &#039;&#039;&#039;PHPeclipse Web Development -&amp;gt; Project Defaults&#039;&#039;&#039;, you would like to add &amp;quot;.&amp;quot; to the &#039;&#039;&#039;Include Paths&#039;&#039;&#039;, but you can&#039;t using the GUI. You will have to edit one of the Eclipse config files by hand. So&lt;br /&gt;
# Note down the path to your Eclipse profile. On Windows it will be something like &#039;&#039;&#039;C:/Documents and settings/XXXX/workspace&#039;&#039;&#039;, and on Unixy systems something like &#039;&#039;&#039;~/workspace&#039;&#039;&#039;.&lt;br /&gt;
# Close Eclipse. &lt;br /&gt;
# Open the file &#039;&#039;&#039;net.sourceforge.phpeclipse.ui.prefs&#039;&#039;&#039; that is in the directory &#039;&#039;&#039;(your workspace)/.metadata/.plugins/org.eclipse.core.runtime/.settings&#039;&#039;&#039; in a text editor.&lt;br /&gt;
# Look for a line in the file that starts &#039;&#039;&#039;_php_include_paths=&#039;&#039;&#039; If it is not there, add it at the end.&lt;br /&gt;
# Change this line to say &#039;&#039;&#039;_php_include_paths=.&#039;&#039;&#039;&lt;br /&gt;
# Run Eclipse again.&lt;br /&gt;
&lt;br /&gt;
===CVS Settings===&lt;br /&gt;
&lt;br /&gt;
These are all hidden under the &#039;&#039;&#039;Team&#039;&#039;&#039; bit of the tree.&lt;br /&gt;
&lt;br /&gt;
Under &#039;&#039;&#039;Team -&amp;gt; CVS -&amp;gt; SSH2 Connection Method&#039;&#039;&#039;, you can set up a public/private key pair. If you do this, you won&#039;t have to keep typing your Sourceforge password when doing CVS operations. See http://sourceforge.net/docs/F02/ for the instructions on what people used to do when the CVS was at Sourceforge. However, If you follow the Sourceforge instructions now you will spend a good deal of time trying to add a public key to your sourceforge profile to no purpose; the key generated is for cvs.moodle.org, NOT, sourceforge,  and you add it via the Update My Developer Information tab on the moodle developers page at http://moodle.org/mod/cvsadmin/view.php?id=7134. Once you have uploaded your public key you can then try to fgure out how to make Eclipse use this keyset. &lt;br /&gt;
&lt;br /&gt;
The rest of the ones in this section are personal preferences, but I recommend them because the default settings are very irritating.&lt;br /&gt;
&lt;br /&gt;
Under &#039;&#039;&#039;Team&#039;&#039;&#039;, set &#039;&#039;&#039;Perspectives&#039;&#039;&#039; to &#039;&#039;&#039;None&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Under &#039;&#039;&#039;Team -&amp;gt; CVS -&amp;gt; Annotate&#039;&#039;&#039; set &#039;&#039;&#039;Use Quick Diff annotate mode for local file annotations&#039;&#039;&#039; to &#039;&#039;&#039;Yes&#039;&#039;&#039;, and &#039;&#039;&#039;Open perspective after a &#039;Show Annotations&#039; operation&#039;&#039;&#039; to &#039;&#039;&#039;No&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Under &#039;&#039;&#039;Team -&amp;gt; CVS -&amp;gt; Label Decorations&#039;&#039;&#039;, switch to the &#039;&#039;&#039;Icon Decorations&#039;&#039;&#039; tab and turn on all the settings, and then on the &#039;&#039;&#039;Text Decorations&#039;&#039;&#039; tab change both &#039;&#039;&#039;File Decoration&#039;&#039;&#039; and &#039;&#039;&#039;Folder Decoration&#039;&#039;&#039; to be just &#039;&#039;&#039;{name}&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Web and XML settings===&lt;br /&gt;
&lt;br /&gt;
Foreach XXX in CSS, HTML, Javascript, XML:&lt;br /&gt;
&lt;br /&gt;
Under &#039;&#039;&#039;Web and XML -&amp;gt; XXX Files -&amp;gt;XXX Source&#039;&#039;&#039;, choose &#039;&#039;&#039;Indent using spaces&#039;&#039;&#039; and &#039;&#039;&#039;indentation size&#039;&#039;&#039; 4.&lt;br /&gt;
&lt;br /&gt;
==Checking out the Moodle code==&lt;br /&gt;
&lt;br /&gt;
From the &#039;&#039;&#039;File&#039;&#039;&#039; menu, choose &#039;&#039;&#039;New -&amp;gt; Project ...&#039;&#039;&#039;, then click &#039;&#039;&#039;Next &amp;gt;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
In the wizard that pops up, choose &#039;&#039;&#039;CVS -&amp;gt; Projects from CVS&#039;&#039;&#039;, then click &#039;&#039;&#039;Next &amp;gt;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Select &#039;&#039;&#039;Create a new repository location&#039;&#039;&#039;, then click &#039;&#039;&#039;Next &amp;gt;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Fill in&lt;br /&gt;
&amp;lt;div style=&amp;quot;float: right; border: 1px solid orange; padding: 0 1em;&amp;quot;&amp;gt;&lt;br /&gt;
For anonymous CVS access use&lt;br /&gt;
;Host&lt;br /&gt;
:XX.cvs.moodle.org&lt;br /&gt;
where XX.cvs.moodle.org is one of [[CVS_for_Administrators#CVS_Servers|these mirrors]]&lt;br /&gt;
;Repository path&lt;br /&gt;
:/cvsroot/moodle&lt;br /&gt;
;User&lt;br /&gt;
:anonymous&lt;br /&gt;
;Password&lt;br /&gt;
:(leave blank)&lt;br /&gt;
;Connection type&lt;br /&gt;
:pserver&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
;Host&lt;br /&gt;
:cvs.moodle.org&lt;br /&gt;
;Repository path&lt;br /&gt;
:/cvsroot/moodle&lt;br /&gt;
;User&lt;br /&gt;
:(your Moodle CVS username)&lt;br /&gt;
;Password&lt;br /&gt;
:(if you set up the SSH2 key thing in preferences, leave this blank, otherwise, type in your Moodle CVS password.)&lt;br /&gt;
;Connection type&lt;br /&gt;
:extssh&lt;br /&gt;
(CVS experts, if you are confused by that last one, know it is an Eclipse-specific thing.) Then click &#039;&#039;&#039;Next &amp;gt;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
On the next screen of the Wizard, choose &#039;&#039;&#039;Use an existing module&#039;&#039;&#039;. Wait a moment, then select &#039;&#039;&#039;moodle&#039;&#039;&#039; from the list. Click &#039;&#039;&#039;Next &amp;gt;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
On the next screen, make sure the option &#039;&#039;&#039;Check out as a project configured using the New Project Wizard&#039;&#039;&#039; is selected, then click &#039;&#039;&#039;Next &amp;gt;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Click &#039;&#039;&#039;Refresh Tags&#039;&#039;&#039;, then choose the branch you want. For now leave it set to &#039;&#039;&#039;HEAD&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Click &#039;&#039;&#039;Finish&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now you  will find yourself back at the start of the &#039;&#039;&#039;New Project&#039;&#039;&#039; Wizard. This is because of the option you chose three paragraphs ago. This time you should select &#039;&#039;&#039;PHP -&amp;gt; PHP Project&#039;&#039;&#039;, then click &#039;&#039;&#039;Next &amp;gt;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Make up a project name. &#039;&#039;&#039;moodle&#039;&#039;&#039; would be sensible.&lt;br /&gt;
&lt;br /&gt;
Click &#039;&#039;&#039;Finish&#039;&#039;&#039;, and wait while all the moodle files are checked out of CVS.&lt;br /&gt;
&lt;br /&gt;
Once it has finished, it will probably ask you if you want to switch to the PHP perspective. Answer &#039;&#039;&#039;Yes&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you also need another branch (1.6, 1.7, 1.8, ...) repeat all the other steps with a few changes:&lt;br /&gt;
* This time you can choose &#039;&#039;&#039;Use an existing repository location&#039;&#039;&#039; instead of typing all the sourceforge CVS details again.&lt;br /&gt;
* Select the appropriate branch. If you don&#039;t see the branch you want, see [https://docs.moodle.org/en/Development:Setting_up_Eclipse#Resetting_the_branch_information this Troubleshooting tip].&lt;br /&gt;
* Use a different project name (e.g. moodle16, moodle17, etc.).&lt;br /&gt;
&lt;br /&gt;
==Let your development web server know where your files are==&lt;br /&gt;
&lt;br /&gt;
Either by editing you web server&#039;s config files, or using a symbolic link. Make sure your webserver can see your new working set of files at a sensible URL, so you can test the code you are working on.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Quick tour of some cool features, and remaining configuration changes==&lt;br /&gt;
&lt;br /&gt;
I find the default workbench setup is pretty good. Here is a quick guide to some of the bits.&lt;br /&gt;
&lt;br /&gt;
===Navigator===&lt;br /&gt;
&lt;br /&gt;
To the left is the &#039;&#039;&#039;Navigator&#039;&#039;&#039;. This is a tree view of all your files. If you double-click on a file, it opens in the editor in the middle. Try opening &#039;&#039;&#039;course/lib.php&#039;&#039;&#039; now. You will notice that it comes up nicely syntax-hightlighted.&lt;br /&gt;
&lt;br /&gt;
===Error highlighting===&lt;br /&gt;
&lt;br /&gt;
In the middle of the file, just type any old text, for example &amp;quot;I like Eclipse&amp;quot;. Obviously, this is not valid PHP syntax, and Eclipse will notice this, and put a red underline under it. Also, by the scrollbar is a ruler with a red mark in it to show the error.&lt;br /&gt;
&lt;br /&gt;
You will see some yellow marks lower down the ruler. There are warnings. Click on one, and you will be taken to where that warning is in the file. Hover your mouse over the warning, and you will get a tooltip explaining what the problem might be.&lt;br /&gt;
&lt;br /&gt;
Save the edited file. (Don&#039;t worry that it is broken, we&#039;ll clean up the mess later.) Notice that a red error marker is added to the file in the navigator, so you can see that there is a problem. Also, error markers are added to the course folder, and the whole project, so you could see there was an error even if the navigator tree was collapsed.&lt;br /&gt;
&lt;br /&gt;
You will probably find lots of warnings that the config.php file can&#039;t be found. In the navigator, find the file &#039;&#039;&#039;config-dist.php&#039;&#039;&#039;. Do &#039;&#039;&#039;Copy&#039;&#039;&#039; then &#039;&#039;&#039;Paste&#039;&#039;&#039; and choose to call the new file &#039;&#039;&#039;config.php&#039;&#039;&#039;. Edit this new config.php as normal. You should fine that most of the include file warnings have gone now.&lt;br /&gt;
&lt;br /&gt;
Notice also that there is another marker on each file icon. A little yellow cylinder on most files, but a white-on-brown star on the one you have edited. This is telling you the CVS status of each file. The brown stars are changes you have made but not checked in yet.&lt;br /&gt;
&lt;br /&gt;
===Outline===&lt;br /&gt;
&lt;br /&gt;
Over to the right is the Outline view. This shows a list of functions and classes defined in this file. By default, they are listed in the same order as in the file, but if you click on the &#039;&#039;&#039;az&#039;&#039;&#039; toolbar button, they are sorted into alphabetical order.&lt;br /&gt;
&lt;br /&gt;
Click on the function name &#039;&#039;&#039;add_course_module&#039;&#039;&#039; in the Outline. You will see that the editor scrolls to the definition of that function.&lt;br /&gt;
&lt;br /&gt;
===Code navigation===&lt;br /&gt;
&lt;br /&gt;
In that function, hover the mouse pointer over the function name &#039;&#039;&#039;insert_record&#039;&#039;&#039;. After a while, the documentation for that function will appear in a big tooltip.&lt;br /&gt;
&lt;br /&gt;
Hold down CTRL, move the mouse pointer over the function name &#039;&#039;&#039;insert_record&#039;&#039;&#039;, then click. Eclipse should load &#039;&#039;&#039;dmllib.php&#039;&#039;&#039;, and scroll you to where this function is defined.&lt;br /&gt;
&lt;br /&gt;
In the main Eclipse toolbar, there are forward and back arrows like in a web browser. Click back now to get back to &#039;&#039;&#039;course/lib.php&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Open resource===&lt;br /&gt;
&lt;br /&gt;
From the &#039;&#039;&#039;Navigate&#039;&#039;&#039; menu, choose &#039;&#039;&#039;Open Resource...&#039;&#039;&#039;. In the dialog that pops up, start typing a filename for instance type &#039;&#039;&#039;moodlel&#039;&#039;&#039;. In the box in the middle of the dialog, you will see it list all the files in the project whose names start that way. At the bottom is a box which lists the different folders that contain a file with that name. This can be a very quick way of opening files with fairly unique names like moodlelib.php, without having to click through the levels of the navigator tree. Of course, it is not so useful for an index.php file! Click OK now to open moodlelib.php. (It would actually work if you just did CTRL + Shift + R, moodlel, Enter.)&lt;br /&gt;
&lt;br /&gt;
===Multi-file search===&lt;br /&gt;
&lt;br /&gt;
Scroll down moodlelib a little bit, and double click on the name of the constant &#039;&#039;&#039;MOODLE_INTERNAL&#039;&#039;&#039; where it is defined, so that the text is selected. Then, from the &#039;&#039;&#039;Search&#039;&#039;&#039; menu, choose &#039;&#039;&#039;Search...&#039;&#039;&#039;. Notice that the &#039;&#039;&#039;Containing text&#039;&#039;&#039; box has already been filled in for you with the text you just selected. Of course you can just type text into this box without selecting it first. Notice that you can do regular expression searches, but leave that turned off for now. In the &#039;&#039;&#039;File name patterns&#039;&#039;&#039; box type &#039;&#039;&#039;*.css, *.html, *.inc, *.js, *.php, *.xml&#039;&#039;&#039;. (This is the most useful general setting for working on moodle. Eclipse will remember this setting, so you only have to enter it once.) Click &#039;&#039;&#039;Search&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The search results will appear in a new view underneath the editor. That view has a toolbar with yellow up and down arrows. Click the down arrow a few times and it will take you to the first few matches in the code, opening the relevant files as necessary.&lt;br /&gt;
&lt;br /&gt;
===Synchronize view===&lt;br /&gt;
&lt;br /&gt;
I think this is my favorite feature. From the &#039;&#039;&#039;Window&#039;&#039;&#039; menu, select &#039;&#039;&#039;Show View -&amp;gt; Other...&#039;&#039;&#039;. In the dialog that pops up, select &#039;&#039;&#039;Team -&amp;gt; Synchronize&#039;&#039;&#039;, then click &#039;&#039;&#039;OK&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
This opens the Synchronize view below the editor. The view has a toolbar. Click on the first toolbar button, which pops up the Synchronize wizard.&lt;br /&gt;
&lt;br /&gt;
On the first screen, there will probably only be one option: &#039;&#039;&#039;CVS&#039;&#039;&#039;. Make sure that is selected, then click &#039;&#039;&#039;Next &amp;gt;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Under &#039;&#039;&#039;Scope&#039;&#039;&#039;, choose &#039;&#039;&#039;Workspace&#039;&#039;&#039;, then click &#039;&#039;&#039;Finish&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Wait while it talks to the CVS server. After a while, you will see that the Synchronize view lists course/lib.php, and something called &#039;&#039;&#039;.project.... That is, it is listing just the files you have edited, but not checked in yet.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;.project&#039;&#039;&#039; is something that belongs to Eclipse that we don&#039;t care about. So select it and bring up the context menu, and choose &#039;&#039;&#039;Add to .cvsignore...&#039;&#039;&#039;. In the dialog that pops up, choose the top option, then click &#039;&#039;&#039;OK&#039;&#039;&#039;. Then you will find the Synchronize view shows you a &#039;&#039;&#039;.cvsignore&#039;&#039;&#039; file that you aren&#039;t interested in, so add that to .cvsignore too!&lt;br /&gt;
&lt;br /&gt;
If you double-click on &#039;&#039;&#039;course/lib.php&#039;&#039;&#039; here, you will see that it opens the compare editor, which is a nice graphical display of the changes in this file.&lt;br /&gt;
&lt;br /&gt;
If you select a file or files here, then bring up the context menu, you will see the option to &#039;&#039;&#039;Commit...&#039;&#039;&#039; the changes. (But don&#039;t do that now!). This is the easiest way to commit things in Eclipse.&lt;br /&gt;
&lt;br /&gt;
However, our changes were rubbish, so we want to undo them. So open the context menu again, and choose &#039;&#039;&#039;Override and Update&#039;&#039;&#039;. This checks a clean copy of the file out of CVS, removing our changes.&lt;br /&gt;
&lt;br /&gt;
Note that the easiest way to do an ordinary CVS Update is to select the top-level project-folder in the Navigator view on the left, open the context menu, and choose &#039;&#039;&#039;Team -&amp;gt; Update&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
That&#039;s all the really important features. I sure you can learn everything else on your own. An you could always read the built in help!&lt;br /&gt;
&lt;br /&gt;
===Creating a patch===&lt;br /&gt;
&lt;br /&gt;
In the synchronise view, right click on an item (file or folder) and choose &#039;&#039;&#039;Create Patch...&#039;&#039;&#039;. Or in the navigator, right click on an item and choose &#039;&#039;&#039;Team -&amp;gt; Create Patch...&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
This brings up a two-page wizard. On the first page you can select where you want the patch made. For small patches it can be useful to create them on the clipboard, but normally you will want to save them in a file.&lt;br /&gt;
&lt;br /&gt;
On the second page, you can set some options, but normally you don&#039;t need to change the defaults which are &#039;&#039;&#039;Unified&#039;&#039;&#039; diff format, and Patch root set to &#039;&#039;&#039;Workspace&#039;&#039;&#039;. Well, sometimes it is helpful to change the second one to &#039;&#039;&#039;Project&#039;&#039;&#039; but it is not important.&lt;br /&gt;
&lt;br /&gt;
There is a corresponding apply patch wizard that you can use to apply a patch to a project.&lt;br /&gt;
&lt;br /&gt;
===Switching to another branch or version===&lt;br /&gt;
&lt;br /&gt;
Suppose you have been using a check-out of HEAD from CVS, and then as the 1.9 release approaches, the MOODLE_19_STABLE branch is created, and you want to start following that instead.&lt;br /&gt;
# Right click on the moodle project in the navigator view, and select &#039;&#039;&#039;Team -&amp;gt; Switch to Another Branch or Version ...&#039;&#039;&#039;.&lt;br /&gt;
# choose the second radio button: &#039;&#039;&#039;Select the tag from the following list&#039;&#039;&#039;.&lt;br /&gt;
# If the branch you want is not in the &#039;&#039;&#039;Matching tags&#039;&#039;&#039; box, see [[Development:Setting_up_Eclipse#Resetting the branch information|Resetting the branch information]] below.&lt;br /&gt;
# Select the branch you want and click &#039;&#039;&#039;Finish&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Troubleshooting==&lt;br /&gt;
&lt;br /&gt;
Some tips on how to solve common problems that may crop up.&lt;br /&gt;
&lt;br /&gt;
===Resetting the branch information===&lt;br /&gt;
&lt;br /&gt;
Every now and then, Eclipse may lose information on the branch tags it knows about. Hitting refresh tags may fix it, but if not, try the following:&lt;br /&gt;
&lt;br /&gt;
#Bring up the tag dialogue (example using &amp;quot;Team / Switch to Another Branch or Version&amp;quot;).&lt;br /&gt;
#Click on Configure tags ... (not Refresh tags).&lt;br /&gt;
#Select config-dist.php in the top left box (if this is a Moodle checkout).&lt;br /&gt;
#Click Add Checked tags.&lt;br /&gt;
#Click OK.&lt;br /&gt;
#Then you will have all tags.&lt;br /&gt;
&lt;br /&gt;
(thanks to Tim Hunt)&lt;br /&gt;
&lt;br /&gt;
===Error loading php files after Ubuntu 7.04 Install===&lt;br /&gt;
&lt;br /&gt;
A java issue with Ubuntu 7.04 may cause an error when you attempt to load php pages. Refer to:&lt;br /&gt;
http://www.plog4u.org/index.php/Using_PHPEclipse_:_Installation_:_Installing_PHPEclipse for details about how to fix this in Ubuntu 7.04.&lt;br /&gt;
&lt;br /&gt;
After upgrading from Ubuntu 7.04 to 7.10, I had to go in and re-edit the /etc/eclipse/java_home file in order to get the CVS functions to work and be able to open PHP files. When I tried to do a CVS update I initially received an error about org.eclipse.team.internal.ccvs.ui.wizards.CheckoutWizard). Everything seemed to work again after reapplying the fix for the aforementioned 7.04 java issue.&lt;br /&gt;
&lt;br /&gt;
==Related Links==&lt;br /&gt;
&lt;br /&gt;
There is an excellent series of articles published by IBM on using Eclipse for Drupal developement here : [http://www-128.ibm.com/developerworks/ibm/osource/index.html Using open source software to design, develop, and deploy a collaborative Web site Tools and techniques for getting relatively complicated Web sites up and running quickly].&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer|Setting up Eclipse]]&lt;/div&gt;</summary>
		<author><name>Scyrma</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/21/en/index.php?title=Development:Weekly_Code_Review&amp;diff=34360</id>
		<title>Development:Weekly Code Review</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/21/en/index.php?title=Development:Weekly_Code_Review&amp;diff=34360"/>
		<updated>2008-04-01T03:42:23Z</updated>

		<summary type="html">&lt;p&gt;Scyrma: /* Test the fix */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Moodle has a weekly process of code review in the stable branches to help improve the quality of stable packages and to help detect any regressions that may have occurred in stable code.&lt;br /&gt;
&lt;br /&gt;
Here is the process for testers and developers:&lt;br /&gt;
&lt;br /&gt;
==Every Tuesday==&lt;br /&gt;
&lt;br /&gt;
===Find bugs to test===&lt;br /&gt;
&lt;br /&gt;
All developers and testers should be looking at:&lt;br /&gt;
&lt;br /&gt;
  Moodle 1.9 stable:  [http://tracker.moodle.org/secure/IssueNavigator.jspa?mode=hide&amp;amp;requestId=10565 1.9.x Needs QA review]&lt;br /&gt;
&lt;br /&gt;
(Make sure you can see the QA Assigned column)&lt;br /&gt;
&lt;br /&gt;
Grab any bug that:&lt;br /&gt;
&lt;br /&gt;
* is from the last week&lt;br /&gt;
* you did not fix&lt;br /&gt;
* does not have a QA assignee yet &lt;br /&gt;
&lt;br /&gt;
and claim it by editing the bug to add your name as QA Assignee.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Test the fix===&lt;br /&gt;
&lt;br /&gt;
* Read the comments &lt;br /&gt;
* Look at the patch attached to the tracker&lt;br /&gt;
* Try the feature out to make sure it works as advertised&lt;br /&gt;
* Post new comments (or talk on Moodle HQ) if you need clarification&lt;br /&gt;
&lt;br /&gt;
===If you find a problem===&lt;br /&gt;
&lt;br /&gt;
* Post a comment on the bug with details (preferably including patch!)&lt;br /&gt;
* Reopen the bug&lt;br /&gt;
* If it looks like the original developer isn&#039;t seeing it, reassign to Eloy Lafuente for triage.&lt;br /&gt;
* If the fix is obvious and you have CVS access, fix it yourself.&lt;br /&gt;
&lt;br /&gt;
===Mark the fix as reviewed===&lt;br /&gt;
&lt;br /&gt;
* When you are satisfied the bug is correctly fixed, simply change the status from Resolved to Closed&lt;br /&gt;
&lt;br /&gt;
==Every Wednesday==&lt;br /&gt;
&lt;br /&gt;
* The download site will automatically tag the whole current stable codebase (eg MOODLE_19_WEEKLY) and then build download packages&lt;/div&gt;</summary>
		<author><name>Scyrma</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/21/en/index.php?title=Development:Repository_API&amp;diff=34334</id>
		<title>Development:Repository API</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/21/en/index.php?title=Development:Repository_API&amp;diff=34334"/>
		<updated>2008-03-31T09:09:09Z</updated>

		<summary type="html">&lt;p&gt;Scyrma: /* Repository plugins */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes the specification for a future feature, currently being worked on for Moodle 2.0.  This spec is STILL UNDER CONSTRUCTION.&lt;br /&gt;
&lt;br /&gt;
See MDL-13766 to track the status of the implementation.&lt;br /&gt;
&lt;br /&gt;
The page is open for everyone so everyone can help correct mistakes and help evolution of this document.  However, if you have questions, problems or major changes to suggest please add them to the [[Development_talk:Repository_API|page comments]], or start a discussion in the [http://moodle.org/mod/forum/view.php?id=1807 Repositories forum].  We&#039;ll endeavour to merge all such suggestions into the main spec before we start development.&lt;br /&gt;
&lt;br /&gt;
==Objectives==&lt;br /&gt;
&lt;br /&gt;
# Allow files to be added directly into Moodle (as we do now)&lt;br /&gt;
# Allow all Moodle users to easily bring content into Moodle from external repositories&lt;br /&gt;
# Allow content to be used in multiple Moodle contexts securely and simply via capabilities&lt;br /&gt;
# Consistency and simplicity for ALL file handling&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
The Repository API is a core set of interfaces that all Moodle code will use to:&lt;br /&gt;
# copy files from external servers&lt;br /&gt;
# store files within Moodle&lt;br /&gt;
# display files to Moodle users&lt;br /&gt;
&lt;br /&gt;
It&#039;s important to remember that a repository will generally be treated as READ-ONLY.  Management of the files will normally be done through the native interface provided by the repository.  Publishing of Moodle content TO a repository is handled by the [[Development:Portfolio API|Portfolio API]].&lt;br /&gt;
&lt;br /&gt;
==Use cases==&lt;br /&gt;
&lt;br /&gt;
===Teacher adding an external file as a new resource===&lt;br /&gt;
&lt;br /&gt;
# Teacher wants to add a new resource to a course &lt;br /&gt;
# Teacher clicks the &amp;quot;Choose a resource&amp;quot; button&lt;br /&gt;
# Teacher is able to choose from a list of configured repositories (this step will be skipped if there&#039;s only one).&lt;br /&gt;
# Teacher is presented with a simple file picker to choose a file&lt;br /&gt;
# Teacher chooses a file&lt;br /&gt;
# File is COPIED into Moodle and included in the course.&lt;br /&gt;
# File is marked as owned by that user&lt;br /&gt;
# Access controls are automatically added for that file so that only those with privileges to see that course can see that file (the owner can change those permissions anytime)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Student submitting an assignment===&lt;br /&gt;
# Student needs to submit an assignment and presses the &amp;quot;Choose files&amp;quot; button&lt;br /&gt;
# Student sees a &amp;quot;file picker&amp;quot; where they can see files listed on any of several configured repositories&lt;br /&gt;
# Student chooses MySpace from the list&lt;br /&gt;
# Student is prompted to enter MySpace username/password (a checkbox could be there to &amp;quot;remember this for next time&amp;quot; but for security perhaps not)&lt;br /&gt;
# Student sees their files in MySpace and chooses one or more&lt;br /&gt;
# Files are copied from MySpace to Moodle &lt;br /&gt;
# Assignment module gives the files permissions so that only the Student and assignment graders can see the file (other students would not have permission).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Student attaching an image to a forum===&lt;br /&gt;
# Student needs to attach an image and presses the &amp;quot;Choose files&amp;quot; button in the posting screen&lt;br /&gt;
# Student sees a &amp;quot;file picker&amp;quot; where they can see files listed on any of several configured repositories&lt;br /&gt;
# Student chooses Mahara from the list&lt;br /&gt;
# Student is prompted to enter MySpace username/password (a checkbox could be there to &amp;quot;remember this for next time&amp;quot; but for security perhaps not)&lt;br /&gt;
# Student sees their files in Mahara and chooses one image&lt;br /&gt;
# Image is copied to Moodle &lt;br /&gt;
# Image file is attached to forum post by Forum module (by reference)&lt;br /&gt;
# Forum module gives permissions so that anyone who can read that forum can see that file&lt;br /&gt;
&lt;br /&gt;
===Student attaching the same image in another forum===&lt;br /&gt;
&lt;br /&gt;
# Student needs to submit an assignment and presses the &amp;quot;Choose files&amp;quot; button&lt;br /&gt;
# Student sees a &amp;quot;file picker&amp;quot; where they can see files listed on any of several configured repositories&lt;br /&gt;
# Student chooses Mahara from the list&lt;br /&gt;
# Student is prompted to enter MySpace username/password (a checkbox could be there to &amp;quot;remember this for next time&amp;quot; but for security perhaps not)&lt;br /&gt;
# Student sees their files in Mahara and chooses one image&lt;br /&gt;
# Moodle detects that the image already exists in Moodle so it it not copied again (or it&#039;s just updated)&lt;br /&gt;
# Image file is attached to forum post by Forum module (by reference)&lt;br /&gt;
# Forum module adds some permissions so that anyone who can read the current forum can also see that file&lt;br /&gt;
&lt;br /&gt;
===User managing their files===&lt;br /&gt;
# User goes to the &amp;quot;Files&amp;quot; area (similar to current Moodle, but for all users)&lt;br /&gt;
# User sees two tabs&lt;br /&gt;
# First tab shows listing of current files belonging to self, with buttons to manage them, including buttons to modify the permissions (eg &amp;quot;Allow all people in Course X to see this&amp;quot;).  You can also see what repository it came from, including the foreign path, and choose to &amp;quot;update from repository&amp;quot; and get a new copy of the file.&lt;br /&gt;
# Second tab shows listing of files belonging to others that you are able to see.&lt;br /&gt;
&lt;br /&gt;
Please add more use cases in this same format&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==General Architecture==&lt;br /&gt;
&lt;br /&gt;
All file-handling areas in Moodle (eg adding a new resource, adding attachments to a forum post, uploading assignments) will be rewritten to talk to the standard API class methods in a standard way.&lt;br /&gt;
&lt;br /&gt;
Each repository plugin (a standard Moodle plugin stored under /repository/xxx) will subclass the standard API and override methods specific to that repository.&lt;br /&gt;
&lt;br /&gt;
As is usual in Moodle, there will be admin settings to disable/enable certain repository plugins as standard, as well as user settings so that users can add their own personal repositories to the standard list (eg [http://briefcase.yahoo.com Yahoo Briefcase] or [http://docs.google.com Google Docs]) and to select their default repository.&lt;br /&gt;
&lt;br /&gt;
Once a repository has been used the file will usually be copied into Moodle there and then.  However there will also be options to:&lt;br /&gt;
* only return the URL to the file if it&#039;s desired to keep it external (but this does present security and integrity risks), or&lt;br /&gt;
* refresh the local file copy regularly and automatically&lt;br /&gt;
&lt;br /&gt;
All files in Moodle will be listed in a table (see below) allowing us to store various metadata about each file.  The file contents will not be the database (though we could easily offer that option if we want to), they will be on disk with a name related to the id rather than the &amp;quot;human&amp;quot; name (this avoids a lot of OS Unicode problems).&lt;br /&gt;
&lt;br /&gt;
The current &amp;quot;course file manager&amp;quot; will be replaced by a personal file manager, which basically is a user&#039;s view of the internal Moodle repository, showing the files that are available to you in that context (which may include files from other people, repositories etc) and a nice browse/search interface.&lt;br /&gt;
&lt;br /&gt;
Finally, normal Moodle modules will have easy functions it can use to add/remove permissions to particular files, according to module rules.   For example, the assignment plugin may, after allowing a student to select a file to be submitted, add permissions so that people who have grade permissions in that assignment can read it.&lt;br /&gt;
&lt;br /&gt;
All files will be served via a single control script in Moodle, located at $CFG-&amp;gt;fileroot.  This could be the same as $CFG-&amp;gt;wwwroot by default, but will be recommended (for security and avoiding XSS) that Moodle admins set up a second DNS name pointing to this script eg the main site could be at http://moodle.domain.edu but files would be served via http://moodlefiles.domain.edu/file.php.  (We&#039;ll have to set session cookies on both domains and keep them in sync somehow).&lt;br /&gt;
&lt;br /&gt;
The file.php will serve files using slasharguments almost as now.  We just need to replace the courseid with a fileid:  file.php/fileid/dir/dir/file.jpg  (where dir/dir/file.jpg is the virtual path in Moodle).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Repository requirements==&lt;br /&gt;
&lt;br /&gt;
From the Moodle point of view, each repository is just a hierarchy of nodes.&lt;br /&gt;
&lt;br /&gt;
The repository MUST provide:&lt;br /&gt;
# A URL to download each node (eg file).&lt;br /&gt;
# A list of the nodes (eg files and directories) under a given node (eg directory).  This allows Moodle to construct a standard browse interface (much like a standard OS file picker).  However some repository plugins may choose to completely override the repository_browse() method and implement their own interface, that&#039;s OK, as long as they end up with a URL for the file.&lt;br /&gt;
&lt;br /&gt;
The repository can OPTIONALLY:&lt;br /&gt;
# Require some authentication credentials &lt;br /&gt;
# Provide more metadata about each node (mime type, size, dates, related files, dublin core stuff, etc)&lt;br /&gt;
# Describe a search facility (so that Moodle can construct a search form)&lt;br /&gt;
# Provide copyright and usage rules (or just information about the rules)&lt;br /&gt;
&lt;br /&gt;
==Repository plugins==&lt;br /&gt;
&lt;br /&gt;
Some plugins I&#039;d like to see developed for the first version are:&lt;br /&gt;
* local - very similar to the current course-based file manager, except user-based&lt;br /&gt;
* moodle - an interface to another Moodle site, accessed over a secure mnet connection&lt;br /&gt;
* jsr170 - an interface that can talk to anything that supports jsr170 (eg [http://www.alfresco.com/ Alfresco])&lt;br /&gt;
* oki - an OKI emulator allowing us to access things with OKI interfaces,like [http://www.fedora.info/ Fedora]&lt;br /&gt;
* briefcase - an interface to [http://briefcase.yahoo.com/ Yahoo Briefcase]&lt;br /&gt;
* myspace - an interface to MySpace files (perhaps via [http://www.programmableweb.com/api/myspace this MySpace API])&lt;br /&gt;
* googledocs - an interface to [http://docs.google.com Google Docs]&lt;br /&gt;
* skydrive - an interface to Microsoft&#039;s [http://skydrive.live.com/ SkyDrive] files&lt;br /&gt;
* facebook - an interface to Facebook files&lt;br /&gt;
* merlot - an interface to the learning materials in [http://www.merlot.org/merlot/materials.htm Merlot.org]&lt;br /&gt;
* flickr - an interface to [http://flickr.com flickr]&lt;br /&gt;
* youtube - an interface to [http://youtube.com YouTube]&lt;br /&gt;
* mahara - an interface to a Mahara installation&lt;br /&gt;
&lt;br /&gt;
==Local Files==&lt;br /&gt;
&lt;br /&gt;
In general, all external files will be copied locally and stored in Moodle.  This section describes the storage of the files and how we define ACLs (access control lists) for them.  All existing files in the Moodle dataroot course areas will be moved into this new system during the upgrade.&lt;br /&gt;
&lt;br /&gt;
The files will not be stored as they have been in the past.  The new file system is &amp;quot;flat&amp;quot; with each file stored as an id.  The name and path are stored in tables.  To avoid running out of nodes we&#039;ll use a hash-like structure like the users directory does, ie:&lt;br /&gt;
&lt;br /&gt;
 dataroot &lt;br /&gt;
    /files&lt;br /&gt;
       /0&lt;br /&gt;
       /10000&lt;br /&gt;
       /20000&lt;br /&gt;
       /30000&lt;br /&gt;
           /3076.jpg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Tables==&lt;br /&gt;
&lt;br /&gt;
=== repository ===&lt;br /&gt;
&lt;br /&gt;
This table contains one entry for every configured external repository instance.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039; &lt;br /&gt;
|int(10)  &lt;br /&gt;
|&lt;br /&gt;
|autoincrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|repositoryname&lt;br /&gt;
|varchar&lt;br /&gt;
|&lt;br /&gt;
|A custom name for this reopsitory (non-unique)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;repositorytype&#039;&#039;&#039; &lt;br /&gt;
|varchar&lt;br /&gt;
| &lt;br /&gt;
|The name of the plugin being used&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039; &lt;br /&gt;
|int(10)&lt;br /&gt;
| &lt;br /&gt;
|The person who created this repository instance&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;contextid&#039;&#039;&#039; &lt;br /&gt;
|int(10)&lt;br /&gt;
| &lt;br /&gt;
|The context that this repository is available to ( = system context for site-wide ones)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|username&lt;br /&gt;
|varchar&lt;br /&gt;
| &lt;br /&gt;
|username to log in with, if required&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|password&lt;br /&gt;
|varchar&lt;br /&gt;
| &lt;br /&gt;
|password to log in with, if required&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|option1&lt;br /&gt;
|varchar&lt;br /&gt;
| &lt;br /&gt;
|Other information useful to the plugin&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|option2&lt;br /&gt;
|varchar&lt;br /&gt;
| &lt;br /&gt;
|Other information useful to the plugin&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|option3&lt;br /&gt;
|varchar&lt;br /&gt;
| &lt;br /&gt;
|Other information useful to the plugin&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|option4&lt;br /&gt;
|varchar&lt;br /&gt;
| &lt;br /&gt;
|Other information useful to the plugin&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|option5&lt;br /&gt;
|varchar&lt;br /&gt;
| &lt;br /&gt;
|Other information useful to the plugin&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|timecreated&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time this repository was created&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|timemodified&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The last time the repository was modified&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== file ===&lt;br /&gt;
&lt;br /&gt;
This table contains one entry for every file.  Enough information is kept here so that the file can be fully identified and retrieved again if necessary.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039; &lt;br /&gt;
|int(10)  &lt;br /&gt;
|&lt;br /&gt;
|autoincrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;userid&#039;&#039;&#039; &lt;br /&gt;
|int(10)  &lt;br /&gt;
| &lt;br /&gt;
|The owner of the file (person who created this entry)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|filename&lt;br /&gt;
|varchar&lt;br /&gt;
|&lt;br /&gt;
|The full Unicode name of this file&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;repositoryid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The repository instance this is associated with&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|updates&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Specifies the update schedule (0 = none, 1 = on demand, other = some period in seconds)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|cachetime&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|Specifies how long this file can be cached by browsers&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|moodlepath&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The virtual path to the file locally (so we can still have apparent subdirectories etc)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|repositorypath&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|The full path to the original file on the repository&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|timeimportfirst&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The first time this file was imported into Moodle&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|timeimportlast&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The most recent time that this file was imported into Moodle&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|timecreated&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The time this file was created (if known), otherwise same as time imported&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|timemodified&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The last time the file was modified&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|timeaccessed&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The last time this file was accessed for any reason&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== file_instances ===&lt;br /&gt;
&lt;br /&gt;
This table contains one entry for every &amp;quot;place&amp;quot; a file is published to.  For example, one file might appear in an assignment but also in a forum attachment, so there would be two entries here.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039; &lt;br /&gt;
|int(10)  &lt;br /&gt;
|&lt;br /&gt;
|autoincrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fileid&#039;&#039;&#039; &lt;br /&gt;
|int(10)  &lt;br /&gt;
| &lt;br /&gt;
|The file we are defining access for&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|instancetype&lt;br /&gt;
|varchar&lt;br /&gt;
|&lt;br /&gt;
|This defines the table in Moodle that this instance is associated with (eg &#039;forum_posts&#039;, &#039;assignment_submissions&#039; etc&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;instanceid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The id in the foreign table (of name instancetype) that this instance is associated with&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== file_access ===&lt;br /&gt;
&lt;br /&gt;
This table describes the ACL for each file, so that checks can easily be made on whether someone can see this file or not.  Note there can be multiple entries per file.  Users can ALWAYS see their own files, so there are no entries here for that.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Field&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Type&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;Info&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;id&#039;&#039;&#039; &lt;br /&gt;
|int(10)  &lt;br /&gt;
|&lt;br /&gt;
|autoincrementing &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;fileid&#039;&#039;&#039; &lt;br /&gt;
|int(10)  &lt;br /&gt;
| &lt;br /&gt;
|The file we are defining access for&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;contextid&#039;&#039;&#039;&lt;br /&gt;
|int(10)&lt;br /&gt;
|&lt;br /&gt;
|The context where this file is being published&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;capability&#039;&#039;&#039;&lt;br /&gt;
|text &lt;br /&gt;
|&lt;br /&gt;
|The capability that is required to see this file&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Class methods==&lt;br /&gt;
&lt;br /&gt;
===Repository class===&lt;br /&gt;
&lt;br /&gt;
This class implements the interface to a particular repository, for browsing, selecting and updating files.&lt;br /&gt;
&lt;br /&gt;
====get_file($path)====&lt;br /&gt;
&lt;br /&gt;
====get_listing($parent=&#039;/&#039;, $search=&#039;&#039;&#039;&#039;&#039;&#039;&#039;&#039;)====&lt;br /&gt;
&lt;br /&gt;
====cron()====&lt;br /&gt;
&lt;br /&gt;
====etc====&lt;br /&gt;
&lt;br /&gt;
===File class===&lt;br /&gt;
&lt;br /&gt;
This class implements the display and management of files from local storage, with full access checking.  Some of the functions are for single files, while some are optimised for bulk display and searching (eg in the personal files interface).&lt;br /&gt;
&lt;br /&gt;
====display_file()====&lt;br /&gt;
&lt;br /&gt;
sort of like file.php is now, except smarter&lt;br /&gt;
&lt;br /&gt;
====set_access($fileid, $accessstuff)====&lt;br /&gt;
&lt;br /&gt;
Grant some access to people to a file&lt;br /&gt;
&lt;br /&gt;
====has_access($fileid, $userid=NULL)====&lt;br /&gt;
&lt;br /&gt;
Returns true or false depending on access to a file&lt;br /&gt;
&lt;br /&gt;
==Areas in Moodle that need re-writing==&lt;/div&gt;</summary>
		<author><name>Scyrma</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/21/en/index.php?title=Development:contrib&amp;diff=33994</id>
		<title>Development:contrib</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/21/en/index.php?title=Development:contrib&amp;diff=33994"/>
		<updated>2008-03-26T03:37:11Z</updated>

		<summary type="html">&lt;p&gt;Scyrma: /* Browsing CONTRB */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;CONTRIB is an area in the Moodle CVS repository where developers can work on custom patches and plugins (modules, blocks, themes, etc.) and share them with other people. It is less tightly restricted that the code for Moodle Core in CVS which contains the official Moodle releases. The advantages of using CONTRIB are that it is a standard place where people know to look, so it facilitates sharing your code and allows developers to evaluate and make suggestions. In addition, download packages are automatically build for all plugins in CONTRIB allowing easy access to the latest versions of the contributed code.&lt;br /&gt;
&lt;br /&gt;
==Browsing CONTRIB==&lt;br /&gt;
&lt;br /&gt;
You can browse the CONTRIB area of CVS here: http://cvs.moodle.org/contrib/&lt;br /&gt;
&lt;br /&gt;
Most of the interesting code is in the plugins folder. It is organised like the main Moodle codebase, so, for example, if you are looking for an activity module called &#039;&#039;&#039;gallery&#039;&#039;&#039;, look in [http://moodle.cvs.sourceforge.net/moodle/contrib/plugins/mod/gallery/ plugins/mod/gallery].&lt;br /&gt;
&lt;br /&gt;
A more user-friendly list of the available plugins is available in the [http://moodle.org/mod/data/view.php?id=6009 Modules and Plugins database] on Moodle.org and documentation for contributed code is maintained via the [https://docs.moodle.org/en/Category:Contributed_code Contributed Code Category].&lt;br /&gt;
&lt;br /&gt;
==Getting write access to CONTRIB==&lt;br /&gt;
&lt;br /&gt;
If you are a developer working on Moodle patches or plugins, please read [https://docs.moodle.org/en/Development:Guidelines_for_contributed_code Guidelines for Contributed Code] to learn how you can share your code and request write access to CONTRIB. &lt;br /&gt;
&lt;br /&gt;
For more information on how to use CVS once you have write access, read:&lt;br /&gt;
* [[Development:CVS_for_developers|CVS for developers]]&lt;br /&gt;
&lt;br /&gt;
==Auto-packaging of CONTRIB plugins and patches==&lt;br /&gt;
&lt;br /&gt;
In the Modules and plugins database, you will see that a lot of the plugins have download URLs like http://download.moodle.org/plugins/question/type/TEMPLATE.zip. This is because, every night, downloadable copies of every plugin in CONTRIB are automatically built and made available. The download URL is based on the path in the CONTRIB repository. The code for TEMPLATE.zip is in the plugins/question/type/TEMPLATE folder.&lt;br /&gt;
&lt;br /&gt;
==Branches in CONTRIB==&lt;br /&gt;
&lt;br /&gt;
There are branches in CONTRIB CVS for each stable branch in the core Moodle module. The auto-packaging system understands them. This allows for different versions of the patch or plugin, if necessary, to work with different versions of Moodle.&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer|CVS for developers]]&lt;br /&gt;
[[Category:Developer tools]]&lt;/div&gt;</summary>
		<author><name>Scyrma</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/21/en/index.php?title=Capabilities/moodle/blog:manageofficialtags&amp;diff=33195</id>
		<title>Capabilities/moodle/blog:manageofficialtags</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/21/en/index.php?title=Capabilities/moodle/blog:manageofficialtags&amp;diff=33195"/>
		<updated>2008-03-05T01:48:46Z</updated>

		<summary type="html">&lt;p&gt;Scyrma: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;*This allows a user to create and delete official blog tags (system context only)&lt;br /&gt;
*Note: this capability has been deprecated in Moodle 1.9.&lt;br /&gt;
&lt;br /&gt;
[[Category:Capabilities|Blog]]&lt;br /&gt;
[[Category:Blog]]&lt;/div&gt;</summary>
		<author><name>Scyrma</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/21/en/index.php?title=Capabilities/moodle/blog:managepersonaltags&amp;diff=33194</id>
		<title>Capabilities/moodle/blog:managepersonaltags</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/21/en/index.php?title=Capabilities/moodle/blog:managepersonaltags&amp;diff=33194"/>
		<updated>2008-03-05T01:48:22Z</updated>

		<summary type="html">&lt;p&gt;Scyrma: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;*This allows a user to create and delete user defined/personal blog tags that others may use (system context only)&lt;br /&gt;
*Note: Users are always allowed to add their own user personal tags&lt;br /&gt;
*Note: this capability has been deprecated in Moodle 1.9.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
*Using Moodle [http://moodle.org/mod/forum/discuss.php?d=56088 User defined tags are shared?] forum discussion &lt;br /&gt;
&lt;br /&gt;
[[Category:Capabilities|Blog]]&lt;br /&gt;
[[Category:Blog]]&lt;/div&gt;</summary>
		<author><name>Scyrma</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/21/en/index.php?title=Blog_tags_block&amp;diff=33193</id>
		<title>Blog tags block</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/21/en/index.php?title=Blog_tags_block&amp;diff=33193"/>
		<updated>2008-03-05T01:47:00Z</updated>

		<summary type="html">&lt;p&gt;Scyrma: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A &#039;&#039;&#039;Blog Tags&#039;&#039;&#039; block displays a list of blogs where font size visually indicates each blog&#039;s use.  The more frequently used blogs appear in a larger font size and least used in smaller fonts. This format is sometimes called a &amp;quot;tag cloud&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Adding a Blog Tags block to a course page==&lt;br /&gt;
&lt;br /&gt;
#Click the &amp;quot;Turn editing on&amp;quot; button.&lt;br /&gt;
#Select Blog Tags from the Add blocks menu.&lt;br /&gt;
#If appropriate, move the Blog Tags block up and/or left, using the arrow icons under the block title.&lt;br /&gt;
&lt;br /&gt;
==Block configuration==&lt;br /&gt;
&lt;br /&gt;
To configure a Blog Tags block, click on the edit icon in the block header.&lt;br /&gt;
*Blog tags block title - You can change the title of the block.&lt;br /&gt;
*Number of tags display - Here you specify how many tags you want to display in the block. &lt;br /&gt;
*Display tags used within this many days - You can specify here how recent the tags that you want to appear are. For example, if it is 90 days then only tags that have been used in the last 90 days will be used.&lt;br /&gt;
*Sort the tag display by - Here you can specify in what order you want the tags to appear. You can choose to sort the tag according to tag name. So the tags will be sorted in alphabetical order. Or you can choose to sort them according to last date used. So the most recent tag would appear first.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
* Using Moodle [http://moodle.org/mod/forum/discuss.php?d=65907 Blogging tags don&#039;t show in Blog Tags block] forum discussion&lt;br /&gt;
&lt;br /&gt;
[[Category:Blog]]&lt;br /&gt;
[[Category:Block]]&lt;br /&gt;
[[Category:Tags]]&lt;/div&gt;</summary>
		<author><name>Scyrma</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/21/en/index.php?title=Outcomes&amp;diff=32853</id>
		<title>Outcomes</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/21/en/index.php?title=Outcomes&amp;diff=32853"/>
		<updated>2008-02-26T07:37:55Z</updated>

		<summary type="html">&lt;p&gt;Scyrma: /* Import/export of outcomes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Grades}}Outcomes are specific descriptions of what a student is expected to be able to do or understand at the completion of an activity or course. An activity might have more than one outcome, and each may have a grade against it (usually on a scale). Other terms for Outcomes are &#039;&#039;Competencies&#039;&#039; and &#039;&#039;Goals&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Enabling outcomes==&lt;br /&gt;
&lt;br /&gt;
To use outcomes, the feature must be enabled by an administrator by checking the enableoutcomes box in &#039;&#039;Administration &amp;gt; Grades &amp;gt; [[General grade settings|Grade settings]]&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Using outcomes==&lt;br /&gt;
&lt;br /&gt;
# Choose or define some outcomes for your course (see below).&lt;br /&gt;
# For each activity, choose which of these outcomes apply. &lt;br /&gt;
# When grading that activity, grade each student using the Outcome scales. Note: You can also edit the grades in the [[Grader report]] (useful for modules that don&#039;t feature inbuilt grading).&lt;br /&gt;
# Use the outcomes as part of the assessment for students, or look at the [[Outcomes report]] for some useful feedback on how students in the class in general are performing.&lt;br /&gt;
&lt;br /&gt;
==Outcomes used in course==&lt;br /&gt;
&lt;br /&gt;
Outcomes may be set at site and/or course level. To choose outcomes for use in your course:&lt;br /&gt;
&lt;br /&gt;
# Follow the outcomes link in the course administration block. (Alternatively, select outcomes from the gradebook view dropdown menu.)&lt;br /&gt;
# Select standard outcomes from the right list, and use the left-facing arrow button to add them to the left list. Multiple outcomes may be selected by holding down the Apple or Ctrl key whilst clicking on the individual outcomes.&lt;br /&gt;
&lt;br /&gt;
==Adding course-level outcomes==&lt;br /&gt;
&lt;br /&gt;
[[Image:Adding an outcome.png|thumb|Adding an outcome]]To add a course-level outcome:&lt;br /&gt;
&lt;br /&gt;
# Follow the outcomes link in the course administration block. (Alternatively, select outcomes from the gradebook view dropdown menu.)&lt;br /&gt;
# Click the &amp;quot;Edit outcomes&amp;quot; tab in the middle of the page.&lt;br /&gt;
# Click the &amp;quot;Add a new outcome&amp;quot; button.&lt;br /&gt;
# Complete the form then click the &amp;quot;Save changes&amp;quot; button. &lt;br /&gt;
&lt;br /&gt;
==Adding standard outcomes==&lt;br /&gt;
&lt;br /&gt;
To add standard outcomes, which are available site-wide:&lt;br /&gt;
&lt;br /&gt;
# Login as an administrator.&lt;br /&gt;
# Access &#039;&#039;Site administration &amp;gt; Grades &amp;gt; Outcomes&#039;&#039;.&lt;br /&gt;
# Click the &amp;quot;Add a new outcome&amp;quot; button.&lt;br /&gt;
# Complete the form then click the &amp;quot;Save changes&amp;quot; button. &lt;br /&gt;
&lt;br /&gt;
==Import/export of outcomes==&lt;br /&gt;
&lt;br /&gt;
Outcomes (and their associated scales) can be exported by clicking the &amp;quot;Export all outcomes&amp;quot; button.  This will send a file (in .csv format) that can be read by Excel, OpenOffice.org or by any text editor.&lt;br /&gt;
&lt;br /&gt;
It&#039;s possible to import outcomes (and associated scales) by submitting a csv file.  The format of the file should be copied from the file obtained by the export function.  Note that while importing: &lt;br /&gt;
*Existing outcomes and scale will be used if available (no overwriting is done by the script)&lt;br /&gt;
*The script will stop if it detects that the file contains invalid data.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
*[[Development:Outcomes]]&lt;br /&gt;
*[http://www.youtube.com/watch?v=PmkEGfvjj9U Video on how to use outcomes in Moodle]&lt;br /&gt;
*Using Moodle [http://moodle.org/mod/forum/discuss.php?d=78074 Outcomes in 1.9] forum discussion&lt;br /&gt;
&lt;br /&gt;
[[fr:Objectifs]]&lt;/div&gt;</summary>
		<author><name>Scyrma</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/21/en/index.php?title=Outcomes&amp;diff=32034</id>
		<title>Outcomes</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/21/en/index.php?title=Outcomes&amp;diff=32034"/>
		<updated>2008-02-11T08:08:57Z</updated>

		<summary type="html">&lt;p&gt;Scyrma: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Grades}}Location: &#039;&#039;Administration &amp;gt; Grades &amp;gt; Outcomes&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Outcomes are new in 1.9. You can develop a list of expected outcomes (competencies) and connect these to courses and activities. You can even grade against multiple outcomes at once (i.e. Rubrics).&lt;br /&gt;
&lt;br /&gt;
To use outcomes, the feature must be enabled via &#039;&#039;Administration &amp;gt; Grades &amp;gt; Outcomes&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Basically the steps are like this:&lt;br /&gt;
# Choose or define some outcomes for the course &#039;&#039;Administration &amp;gt; Grades &amp;gt; Outcomes&#039;&#039;&lt;br /&gt;
# For each activity, choose which of these outcomes apply &lt;br /&gt;
# When grading that activity, grade each student using the Outcome scales&lt;br /&gt;
# You can also edit the grades in the grader report (useful for modules that don&#039;t feature inbuilt grading)&lt;br /&gt;
# Use the outcomes as part of the assessment for students, or look at the Outcomes report for some useful feedback on how the class in general are performing.&lt;br /&gt;
&lt;br /&gt;
Outcomes (and their associated scales) can be exported, by selecting the checkbox under the &amp;quot;Export&amp;quot; column, and clicking the &amp;quot;Export selected outcomes button.  This will send a file (in .csv format) that can be read by Excel, OpenOffice.org or by any text editor.&lt;br /&gt;
&lt;br /&gt;
It&#039;s possible to import outcomes (and associated scales) by submitting a csv file.  The format of the file should be copied from the file obtained by the export function.  Note that while importing : &lt;br /&gt;
*existing outcomes and scale will be used if available (no overwriting is done by the script);&lt;br /&gt;
*the script will stop if it detects that the file contains invalid data.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
*[[Development:Outcomes]]&lt;br /&gt;
*[http://www.youtube.com/watch?v=PmkEGfvjj9U Video on how to use outcomes in Moodle]&lt;br /&gt;
*Using Moodle [http://moodle.org/mod/forum/discuss.php?d=78074 Outcomes in 1.9] forum discussion&lt;br /&gt;
&lt;br /&gt;
[[fr:Objectifs]]&lt;/div&gt;</summary>
		<author><name>Scyrma</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/21/en/index.php?title=Development:Modules&amp;diff=30446</id>
		<title>Development:Modules</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/21/en/index.php?title=Development:Modules&amp;diff=30446"/>
		<updated>2007-12-20T06:34:15Z</updated>

		<summary type="html">&lt;p&gt;Scyrma: /* See also */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Activity modules&#039;&#039;&#039; reside in the &#039;mod&#039; directory. Each module is in a separate subdirectory and consists of the following mandatory elements (plus extra scripts unique to each module):&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;mod.html&#039;&#039; - a form to set up or update an instance of this module&lt;br /&gt;
* &#039;&#039;version.php&#039;&#039; - defines some meta-info and provides upgrading code&lt;br /&gt;
* &#039;&#039;icon.gif&#039;&#039; - a 16x16 icon for the module&lt;br /&gt;
* &#039;&#039;db/&#039;&#039; - SQL dumps of all the required db tables and data (for each database type)&lt;br /&gt;
* &#039;&#039;index.php&#039;&#039; - a page to list all instances in a course&lt;br /&gt;
* &#039;&#039;view.php&#039;&#039; - a page to view a particular instance&lt;br /&gt;
* &#039;&#039;lib.php&#039;&#039; - any/all functions defined by the module should be in here. If the modulename is called widget, then the required functions include:&lt;br /&gt;
:* widget_install() - will be called during the installation of the module&lt;br /&gt;
:* widget_add_instance() - code to add a new instance of widget&lt;br /&gt;
:* widget_update_instance() - code to update an existing instance&lt;br /&gt;
:* widget_delete_instance() - code to delete an instance&lt;br /&gt;
:* widget_user_outline() - given an instance, return a summary of a user&#039;s contribution&lt;br /&gt;
:* widget_user_complete() - given an instance, print details of a user&#039;s contribution&lt;br /&gt;
:* Other functions available but not required are:&lt;br /&gt;
:** widget_delete_course() - code to clean up anything that would be leftover after all instances are deleted&lt;br /&gt;
:** widget_process_options() - code to pre-process the form data from module settings&lt;br /&gt;
:** [[Development:Implementing Reset course functionality in a module|widget_reset_course_form() and widget_delete_userdata()]] - used to implement [[Reset course]] feature.&lt;br /&gt;
:* To avoid possible conflict, any module functions should be named starting with widget_ and any constants you define should start with WIDGET_&lt;br /&gt;
* &#039;&#039;config.html&#039;&#039; - (optional) a form to set up or update global settings of this module&lt;br /&gt;
* &#039;&#039;lang/en_utf8/resource_widget.php&#039;&#039; - (optional) Lastly, each module will have some language files that contain strings for that module.&lt;br /&gt;
&lt;br /&gt;
IMPORTANT: When creating a new module, the new name of the module must not contain numbers or other special characters! &lt;br /&gt;
&lt;br /&gt;
You should also make sure that your activity module provides appropriate support for groups and metacourses. &lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
* Tracker issue [http://tracker.moodle.org/browse/CONTRIB-52 CONTRIB-52 Improvements to make NEWMODULE really useful] - including download link for new module template supporting roles, formslib etc. (unfinished) &lt;br /&gt;
* http://download.moodle.org/plugins16/mod/NEWMODULE.zip - new module template for versions of Moodle prior to 1.7. Please follow the README instructions inside the zip.&lt;br /&gt;
* Using Moodle [http://moodle.org/course/view.php?id=5 Activity modules] forum&lt;br /&gt;
* Using Moodle [http://moodle.org/mod/forum/discuss.php?d=66165 A new resource type: where do I put the language strings?] forum discussion&lt;br /&gt;
* Using Moodle [http://moodle.org/mod/forum/discuss.php?d=65986 New Module Template Code for Moodle 1.7] forum discussion&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer|Modules]]&lt;br /&gt;
[[Category:Modules]]&lt;br /&gt;
&lt;br /&gt;
[[es:Módulos de actividades (desarrollador)]]&lt;br /&gt;
[[fr:Modules (développeur)]]&lt;br /&gt;
[[ja:モジュール (開発者)]]&lt;/div&gt;</summary>
		<author><name>Scyrma</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/21/en/index.php?title=Moodle_version_history&amp;diff=30161</id>
		<title>Moodle version history</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/21/en/index.php?title=Moodle_version_history&amp;diff=30161"/>
		<updated>2007-12-12T05:04:52Z</updated>

		<summary type="html">&lt;p&gt;Scyrma: /* Moodle 1.9 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Release History==&lt;br /&gt;
&lt;br /&gt;
See [[Release_Notes|Release Notes]] for more details.&lt;br /&gt;
&lt;br /&gt;
==Moodle 1.0==&lt;br /&gt;
*Moodle 1.0 - 20 August 2002&lt;br /&gt;
*Moodle 1.0.1 - 26 August 2002&lt;br /&gt;
*Moodle 1.0.2 - 2 September 2002&lt;br /&gt;
*Moodle 1.0.3 - 5 September 2002&lt;br /&gt;
*Moodle 1.0.4 - 10 September 2002&lt;br /&gt;
*Moodle 1.0.5 - 27 September 2002&lt;br /&gt;
*Moodle 1.0.6 - 26 October 2002&lt;br /&gt;
:: 1.0.6.1 - 6 Nov&lt;br /&gt;
:: 1.0.6.2 - 11 Nov&lt;br /&gt;
:: 1.0.6.3 - 14 Nov&lt;br /&gt;
:: 1.0.6.4 - 25 Nov&lt;br /&gt;
*Moodle 1.0.7 - 9 December 2002&lt;br /&gt;
*Moodle 1.0.8 - 7 January 2003&lt;br /&gt;
*Moodle 1.0.9 - 30 May 2003&lt;br /&gt;
&lt;br /&gt;
==Moodle 1.1==&lt;br /&gt;
*Moodle 1.1 - 29 August 2003&lt;br /&gt;
*Moodle 1.1.1 - 11 September 2003&lt;br /&gt;
&lt;br /&gt;
==Moodle 1.2==&lt;br /&gt;
*Moodle 1.2 - 20 March 2004&lt;br /&gt;
*Moodle 1.2.1 - 25 March 2004&lt;br /&gt;
&lt;br /&gt;
==Moodle 1.3==&lt;br /&gt;
*Moodle 1.3 - 25 May 2004&lt;br /&gt;
*Moodle 1.3.1 - 4 June 2004&lt;br /&gt;
*Moodle 1.3.2 - 9 July 2004&lt;br /&gt;
*Moodle 1.3.3 - 16 July 2004&lt;br /&gt;
*Moodle 1.3.4 - 11 August 2004&lt;br /&gt;
&lt;br /&gt;
==Moodle 1.4==&lt;br /&gt;
*Moodle 1.4 - 31 August 2004&lt;br /&gt;
*Moodle 1.4.1 - 12 September 2004&lt;br /&gt;
*Moodle 1.4.2 - 5 November 2004&lt;br /&gt;
*Moodle 1.4.3 - 21 December 2004&lt;br /&gt;
*Moodle 1.4.4 - 7 March 2005 &lt;br /&gt;
*Moodle 1.4.5 - 7 May 2005&lt;br /&gt;
&lt;br /&gt;
==Moodle 1.5==&lt;br /&gt;
*Moodle 1.5   - 5 June 2005&lt;br /&gt;
*Moodle 1.5.1 - 8 July 2005&lt;br /&gt;
*Moodle 1.5.2 - 16 July 2005&lt;br /&gt;
*Moodle 1.5.3 - 11 November 2005&lt;br /&gt;
*Moodle 1.5.4 - 21 May 2006&lt;br /&gt;
&lt;br /&gt;
==Moodle 1.6==&lt;br /&gt;
*Moodle 1.6   - 20 June 2006&lt;br /&gt;
*Moodle 1.6.1 - 20 July 2006&lt;br /&gt;
*Moodle 1.6.2 - 12 September 2006&lt;br /&gt;
*Moodle 1.6.3 - 10 October 2006&lt;br /&gt;
*Moodle 1.6.4 - 17 January 2007&lt;br /&gt;
*Moodle 1.6.5 - 30 March 2007&lt;br /&gt;
&lt;br /&gt;
==Moodle 1.7==&lt;br /&gt;
*Moodle 1.7 - 7 November 2006&lt;br /&gt;
*Moodle 1.7.1 - 17 January 2007&lt;br /&gt;
*Moodle 1.7.2 - 30 March 2007&lt;br /&gt;
*Moodle 1.7.3 - 11 October 2007&lt;br /&gt;
&lt;br /&gt;
==Moodle 1.8==&lt;br /&gt;
*Moodle 1.8 - 30 March 2007&lt;br /&gt;
*Moodle 1.8.1 - 14 June 2007&lt;br /&gt;
*Moodle 1.8.2 - 8 July 2007&lt;br /&gt;
*Moodle 1.8.3 - 11 October 2007&lt;br /&gt;
&lt;br /&gt;
==Moodle 1.9==&lt;br /&gt;
*Moodle 1.9 beta 2 - 11 October 2007&lt;br /&gt;
*Moodle 1.9 beta 3 - 6 December 2007&lt;br /&gt;
&lt;br /&gt;
[[Category:Administrator]]&lt;br /&gt;
[[Category:Developer]]&lt;br /&gt;
&lt;br /&gt;
[[fr:Historique des versions]]&lt;br /&gt;
[[es:Historia de las versiones]]&lt;/div&gt;</summary>
		<author><name>Scyrma</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/21/en/index.php?title=Participants&amp;diff=29508</id>
		<title>Participants</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/21/en/index.php?title=Participants&amp;diff=29508"/>
		<updated>2007-11-29T04:20:17Z</updated>

		<summary type="html">&lt;p&gt;Scyrma: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Moodle 1.6}}&lt;br /&gt;
Participants are the [[Teachers|teachers]] and [[Students|students]] who are part of a course.  The list of participants can be seen by using the Participant icon link in the [[People block]].&lt;br /&gt;
 &lt;br /&gt;
* Users inactive for more than a particular period of time may be listed.&lt;br /&gt;
* Users may be selected then a message sent to them all or their enrolment period extended.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
*[[Users]] can be participants&lt;br /&gt;
*[[Messaging|Messages]]&lt;br /&gt;
*The &#039;&#039;Enrolment duration&#039;&#039; in the [[Settings|course settings]], which unenrols students after the specified time has elapsed.&lt;br /&gt;
&lt;br /&gt;
[[Category:Teacher]]&lt;br /&gt;
[[fr:Participants]]&lt;/div&gt;</summary>
		<author><name>Scyrma</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/21/en/index.php?title=message&amp;diff=29384</id>
		<title>message</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/21/en/index.php?title=message&amp;diff=29384"/>
		<updated>2007-11-27T01:46:05Z</updated>

		<summary type="html">&lt;p&gt;Scyrma: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#redirect [[Messaging]]&lt;/div&gt;</summary>
		<author><name>Scyrma</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/21/en/index.php?title=message&amp;diff=29383</id>
		<title>message</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/21/en/index.php?title=message&amp;diff=29383"/>
		<updated>2007-11-27T01:45:28Z</updated>

		<summary type="html">&lt;p&gt;Scyrma: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Scyrma</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/21/en/index.php?title=message/index&amp;diff=29382</id>
		<title>message/index</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/21/en/index.php?title=message/index&amp;diff=29382"/>
		<updated>2007-11-27T01:44:45Z</updated>

		<summary type="html">&lt;p&gt;Scyrma: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#redirect [[Messaging]]&lt;/div&gt;</summary>
		<author><name>Scyrma</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/21/en/index.php?title=message&amp;diff=29381</id>
		<title>message</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/21/en/index.php?title=message&amp;diff=29381"/>
		<updated>2007-11-27T01:43:52Z</updated>

		<summary type="html">&lt;p&gt;Scyrma: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#redirect [[Messaging]]&lt;/div&gt;</summary>
		<author><name>Scyrma</name></author>
	</entry>
</feed>