<?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=Davosmith</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=Davosmith"/>
	<link rel="alternate" type="text/html" href="https://docs.moodle.org/21/en/Special:Contributions/Davosmith"/>
	<updated>2026-08-15T00:54:32Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://docs.moodle.org/21/en/index.php?title=Drag_and_drop_upload_block&amp;diff=95978</id>
		<title>Drag and drop upload block</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/21/en/index.php?title=Drag_and_drop_upload_block&amp;diff=95978"/>
		<updated>2012-05-21T21:28:40Z</updated>

		<summary type="html">&lt;p&gt;Davosmith: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:dndupload.png|frame|right|Drag and drop upload screenshot]]Once installed on a course, this block allows you to drag and drop files directly from your desktop onto a course and have them appear as resouces on that course.&lt;br /&gt;
&lt;br /&gt;
This block works in Moodle 1.9, 2.0, 2.1 and 2.2, but will clash with the built-in drag and drop upload in Moodle 2.3 (which was based on this block).&lt;br /&gt;
It has been tested with Firefox 5, Chromium 14 and Chrome 12, on Windows and Linux (Ubuntu). It should also work in IE10 (when it is released).&lt;br /&gt;
It has only been tested with the &#039;Topic&#039; course format.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
&lt;br /&gt;
# Unzip the files to a suitable location on your local machine&lt;br /&gt;
# Create a new folder on the server &amp;lt;moodleroot&amp;gt;/blocks/dndupload&lt;br /&gt;
# Upload the files you unzipped to this new folder on your server&lt;br /&gt;
# Login as administrator and click on &#039;Notifications&#039;&lt;br /&gt;
# Add the block to a course in the usual way&lt;br /&gt;
# Turn editing on (in the usual way) - the block does not show if editing is off&lt;br /&gt;
# Select a few files from your desktop and drag them onto a course section&lt;br /&gt;
&lt;br /&gt;
==Known issues==&lt;br /&gt;
&lt;br /&gt;
* Does not work in all browsers (IE, older FF/Chrome)&lt;br /&gt;
* No easy way to delete all the files, if you accidentally upload too many files (you have to delete them one-by-one)&lt;br /&gt;
* Moving resources that you have just uploaded around has slight sorting issues with other files you have just uploaded (if it is a problem, refresh the page)&lt;br /&gt;
&lt;br /&gt;
==Thanks==&lt;br /&gt;
&lt;br /&gt;
Thanks to the following websites, that were invaluable in the creation of this block:&lt;br /&gt;
* http://www.html5rocks.com/&lt;br /&gt;
* http://www.thecssninja.com/&lt;br /&gt;
* http://developer.mozilla.org/&lt;br /&gt;
* and, as always, https://docs.moodle.org/dev&lt;br /&gt;
&lt;br /&gt;
Special thanks to The University of St Andrews, for sharing some code to put some of the final polish on the operation of the block.&lt;br /&gt;
&lt;br /&gt;
==Contact==&lt;br /&gt;
&lt;br /&gt;
Any problems / questions please contact:&lt;br /&gt;
moodle@davosmith.co.uk&lt;br /&gt;
http://www.davodev.co.uk&lt;/div&gt;</summary>
		<author><name>Davosmith</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/21/en/index.php?title=MRBS_block&amp;diff=95264</id>
		<title>MRBS block</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/21/en/index.php?title=MRBS_block&amp;diff=95264"/>
		<updated>2012-02-23T14:02:38Z</updated>

		<summary type="html">&lt;p&gt;Davosmith: /* Contributor/Maintainer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==MRBS Block==&lt;br /&gt;
&lt;br /&gt;
The MRBS block integrates the MRBS project (http://sourceforge.net/projects/mrbs/) by using Moodle functions to authenticate. While initially designed to work with Moodle 1.6 as a single sign on integration, later work made the MRBS project a contributed Moodle block. &lt;br /&gt;
&lt;br /&gt;
Stephen Bourget was kind enough to work on some changes to prepare the MRBS block to take advantage of roles and for use with Moodle 1.7 and beyond. Furthermore, a recently discovered SQL injection vulnerability in the MRBS application was patched. As a result, the MRBS integration/block is no longer supported or maintained for versions prior to Moodle 1.7.&lt;br /&gt;
&lt;br /&gt;
As with any customization, it is recommended that you have a good backup of your Moodle site before attempting to install contributed code. While those contributing code make every effort to provide the best code that they can, using contributed code nevertheless entails a certain degree of risk as contributed code is not as carefully reviewed and/or tested as the Moodle core code.   &lt;br /&gt;
&lt;br /&gt;
MRBS is useful for scheduling a variety of resources.  More information about MRBS can be obtained at http://mrbs.sourceforge.net/. As distributed here it is setup for periods; however, this can easily be changed to times by modifying the config.inc.php file.&lt;br /&gt;
&lt;br /&gt;
===Installation===&lt;br /&gt;
* Code - Copy the files into your Moodle blocks folder ($CFG-&amp;gt;dirroot/blocks)&lt;br /&gt;
* Database - Login in as a Moodle Administrator and go to the Administration notifications page to create the MRBS tables&lt;br /&gt;
* Capabilities - The MRBS block is primarily intended for use on the Moodle front page. Privileges to use the scheduler are currently based on three custom defined capabilities: &lt;br /&gt;
&lt;br /&gt;
# block/mrbs:administermrbs&lt;br /&gt;
# block/mrbs:editmrbs&lt;br /&gt;
# block/mrbs:viewmrbs &lt;br /&gt;
&lt;br /&gt;
** While these capabilities are created automatically, the system roles are not. As such, it is recommended that you create three system wide roles by:&lt;br /&gt;
&lt;br /&gt;
# Login as the Site administrator&lt;br /&gt;
# Go to the Site Administration block&lt;br /&gt;
# Click on Users -&amp;gt; Permissions -&amp;gt; Define Roles&lt;br /&gt;
# Click on the &#039;Add a new role&#039; pushbutton&lt;br /&gt;
# Fill in the Name, Short name, and description fields with MRBS Administrator, MRBS Scheduler, or MRBS Viewer depending on the role you are creating. &lt;br /&gt;
# Under Permissions set the capability to allow for the respective role (i.e. block/mrbs:administermrbs for the MRBS Administrator role, block/mrbs:editmrbs for the MRBS Scheduler role, and block/mrbs:viewmrbs for the MRBS Viewer role). &lt;br /&gt;
# Scroll down to the bottom and click on the &#039;Add a new role&#039; (or &#039;Save changes&#039; if editing the role) pushbutton. &lt;br /&gt;
# Once the roles are created, go to Site Administration block, click on Frontpage -&amp;gt; Frontpage roles and assign users to the appropriate/desired roles. &lt;br /&gt;
&lt;br /&gt;
** Typically, teachers get assigned as MRBS Schedulers and students as MRBS Viewers. Keep in mind that no assignment is equivalent to MRBS Viewers. Site administrators have the option of making the MRBS Calendar viewable to guests and non-logged in users. To force users to login in order to view the MRBS Calendar:&lt;br /&gt;
# Login as the site administrator&lt;br /&gt;
# Go to the Site Administration block under Security -&amp;gt; Site Policies &lt;br /&gt;
# Enable the &#039;Force users to login&#039; setting&lt;br /&gt;
&lt;br /&gt;
===Suggested configuration rules===&lt;br /&gt;
Not following these suggestions will not totally break mrbs, but will prevent some features working optimally.&lt;br /&gt;
&lt;br /&gt;
* Where bookings are for courses, the booking name should match the shortname of the course&lt;br /&gt;
* Rooms should be described such that:&lt;br /&gt;
** All teaching rooms include the word &#039;teaching&#039; in their description&lt;br /&gt;
** IT teaching rooms should have &#039;Teaching IT&#039; in their description&lt;br /&gt;
** Teaching rooms that are not suitable for general teaching (i.e. tech workshops) should have &#039;special&#039; in their names.&lt;br /&gt;
&lt;br /&gt;
===Languages===&lt;br /&gt;
&lt;br /&gt;
Thanks to the generosity of translators, the MRBS Block is available in:&lt;br /&gt;
*English (en_utf8)&lt;br /&gt;
*Spanish (es_utf8)&lt;br /&gt;
*German (de_utf8) &lt;br /&gt;
** Installation instructions in German are available at: https://docs.moodle.org/de/blocks/mrbs#.C3.84ndern_der_MRBS_Texte&lt;br /&gt;
&lt;br /&gt;
If you would like to supply translations for other languages, please create an issue in the tracker and attach a zip file of the language files.&lt;br /&gt;
&lt;br /&gt;
===Extra Moodle MRBS Features===&lt;br /&gt;
* [[MRBS_block/import|Import timetable]]&lt;br /&gt;
* [[MRBS_block/forcebook|Force booking]]&lt;br /&gt;
* [[MRBS_block/usertt|User timetables]]&lt;br /&gt;
&lt;br /&gt;
===Contributor/Maintainer===&lt;br /&gt;
The MRBS Block was contributed and maintained by Mike Worth and Anthony Borrow. As of December 2011, the block is now maintained by Davo Smith at Synergy Learning. More information about the MRBS Block is available at: http://moodle.org/plugins/view.php?plugin=block_mrbs&lt;br /&gt;
&lt;br /&gt;
The block was originally contributed by Anthony Borrow; however, Mike Worth has done significant work on new features for the MRBS block, and has graciously taken on the role of co-maintainer. More details about these new features are available at: http://moodle.org/mod/forum/discuss.php?d=121753&lt;br /&gt;
&lt;br /&gt;
[[Category:Contributed code]]&lt;/div&gt;</summary>
		<author><name>Davosmith</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/21/en/index.php?title=User:David_Smith_2&amp;diff=94456</id>
		<title>User:David Smith 2</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/21/en/index.php?title=User:David_Smith_2&amp;diff=94456"/>
		<updated>2011-12-03T18:37:27Z</updated>

		<summary type="html">&lt;p&gt;Davosmith: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I am a Moodle developer working for Moodle Partner [http://www.synergy-learning.com/ Synergy Learning].&lt;br /&gt;
&lt;br /&gt;
[[Image:SL-logo.png|Synergy Learning]].&lt;br /&gt;
&lt;br /&gt;
I have developed a number of plugins, including:&lt;br /&gt;
* [[Checklist_module|Checklist activity]] ([[Checklist_block|block]] and [[Checklist_grade_export|grade export]])&lt;br /&gt;
* [[Realtime_quiz_module|Realtime quiz activity]]&lt;br /&gt;
* [[Uploadpdf_assignment|UploadPDF assignment type]]&lt;br /&gt;
* [[Navigation_buttons_block|Navigation buttons block]] / core modification&lt;br /&gt;
* [[Drag_and_drop_upload_block|Drag and drop upload block]]&lt;/div&gt;</summary>
		<author><name>Davosmith</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/21/en/index.php?title=File:SL-logo.png&amp;diff=94455</id>
		<title>File:SL-logo.png</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/21/en/index.php?title=File:SL-logo.png&amp;diff=94455"/>
		<updated>2011-12-03T18:33:40Z</updated>

		<summary type="html">&lt;p&gt;Davosmith: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Davosmith</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/21/en/index.php?title=User:David_Smith_2&amp;diff=94454</id>
		<title>User:David Smith 2</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/21/en/index.php?title=User:David_Smith_2&amp;diff=94454"/>
		<updated>2011-12-03T18:32:33Z</updated>

		<summary type="html">&lt;p&gt;Davosmith: Created page with &amp;quot;I am a Moodle developer working for Moodle Partner [http://www.synergy-learning.com/ Synergy Learning]. Synergy Learning.  I have developed a number of plug...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I am a Moodle developer working for Moodle Partner [http://www.synergy-learning.com/ Synergy Learning].&lt;br /&gt;
[[Image:SL-logo.png|Synergy Learning]].&lt;br /&gt;
&lt;br /&gt;
I have developed a number of plugins, including:&lt;br /&gt;
* Checklist activity (block and grade export)&lt;br /&gt;
* Realtime quiz activity&lt;br /&gt;
* UploadPDF assignment types&lt;br /&gt;
* Navigation buttons block / core modification&lt;br /&gt;
* Drag and drop upload block&lt;/div&gt;</summary>
		<author><name>Davosmith</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/21/en/index.php?title=mod/checklist/report&amp;diff=94453</id>
		<title>mod/checklist/report</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/21/en/index.php?title=mod/checklist/report&amp;diff=94453"/>
		<updated>2011-12-03T18:28:44Z</updated>

		<summary type="html">&lt;p&gt;Davosmith: Created page with &amp;quot;This page allows you to view a report of the progress of all students through a particular Checklist activity.  Green ticks indicate items that students have...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page allows you to view a report of the progress of all students through a particular [[Checklist_module|Checklist activity]].&lt;br /&gt;
&lt;br /&gt;
Green ticks indicate items that students have ticked off.&lt;br /&gt;
Boxes indicate any marks a teacher has given - a green tick for yes, a red cross for no and empty for marks that have not yet been set.&lt;br /&gt;
&lt;br /&gt;
You can view the details of an individual student by clicking on the small &#039;maginifying glass&#039; icon beside their name.&lt;/div&gt;</summary>
		<author><name>Davosmith</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/21/en/index.php?title=MoodleDocs:Guidelines_for_contributors&amp;diff=94452</id>
		<title>MoodleDocs:Guidelines for contributors</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/21/en/index.php?title=MoodleDocs:Guidelines_for_contributors&amp;diff=94452"/>
		<updated>2011-12-03T18:26:02Z</updated>

		<summary type="html">&lt;p&gt;Davosmith: /* Introduction */ minor typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Help}}&lt;br /&gt;
You are welcome to make contributions to Moodle Docs. When you find something that can be improved, either in content, grammar or formatting, please help the community and fix it!  This page should give you some ideas and guidelines.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
* You are welcome to contribute to Moodle Docs. Find something that can be improved, either in content, grammar or formatting, and fix it!&lt;br /&gt;
* If you&#039;ve not done so already, please [[Special:Userlogin|login]].&lt;br /&gt;
* Please note that all contributions are released here under [[License|GNU General Public License]].&lt;br /&gt;
* Every page in Moodle has a link to a corresponding page in Moodle Docs. You can see this on [http://moodle.org moodle.org] and, from an administrator&#039;s perspective, on the [http://demo.moodle.net/ Moodle demo site].&lt;br /&gt;
* You are encouraged to illustrate documentation with screenshots. Please refer to the [[MoodleDocs:Style guide|style guide]] for further information.&lt;br /&gt;
* See [[MoodleDocs:Templates]] for ways of asking for editing help from other contributors.&lt;br /&gt;
&lt;br /&gt;
==Creating new pages==&lt;br /&gt;
&lt;br /&gt;
* You are welcome to create pages for additional documentation about Moodle. Simply type the name of your new page between double brackets &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;[[New page name]]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; on an existing page and follow the link to start editing the new page. Alternatively, you may type in your browser address bar: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://docs.moodle.org/en/New_page_name&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (i.e. replace spaces in the new page name with underscores).&lt;br /&gt;
* Please choose a short name and capitalize the first word only (with a few exceptions, such as the word &#039;&#039;Moodle&#039;&#039;).&lt;br /&gt;
* Please follow the [[MoodleDocs:Style guide|style guide]]. If you categorize new pages it can make it easier for users to find, but the important thing is to put good content into the page. &lt;br /&gt;
* Page titles may be changed in the future by redirecting/moving pages, as part of documentation restructuring.&lt;br /&gt;
&lt;br /&gt;
==Page types==&lt;br /&gt;
As Moodle Docs has grown over time, several general page style types with their own informal guidelines have emerged.  As you look at pages you will probably recognize some of these.  However, the basic rule is that if there is no page content, there is nothing to find and certainly nothing for the community to edit and consider.  Thusly, please feel free to add content and not worry about the refinements below.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;General pages&#039;&#039;&#039; - the most common and most varied. The [[MoodleDocs:Style guide]] gives a good idea of the potential.  This page itself is an example of a general page.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Introduction pages&#039;&#039;&#039;.  These serve almost as table of contents on a subject to pages with more detailed information. Several techniques are used.  Some times [[Help:Editing#Page_links|links]] are placed in a [[Help:Editing#Lists|bulleted list]]. Or short sentences maybe used to give context for the embedded [[Help:Editing#Page_links|page links]]. You may notice some of the major subject introduction pages are protected, such as [[Administrator_documentation]].&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;FAQ pages&#039;&#039;&#039;. [[:Category:FAQ|FAQs]] are similar to introduction pages. In this kind of page, each heading has something about a frequently asked question, the typical answer is short.  The answer provides links to pages, or links to a specific page section that should expand the answer to the question. It is OK to put in a particular item that may have frustrated you, along with a description of the solution.  Like anything in Moodle Docs it maybe edited.  Often readers reach these pages from a moodle.org forum link. [[Lesson module FAQ]] is an example.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Contributed code pages&#039;&#039;&#039;. These tend to have links to the moodle.org download database, to the forum that discusses issues.  Of course there will be a brief description of its purpose, a list of features, maybe some hints about installing and useful settings. [[Book module]] is an example.&lt;br /&gt;
&lt;br /&gt;
==Inter-language linking==&lt;br /&gt;
&lt;br /&gt;
* You are welcome to add inter-language links between pages in different languages. Simply type, for example, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;[[es:Corresponding page title in Spanish]]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; in the English MoodleDocs, or &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;[[en:Corresponding page title in English]]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; in the [[:es:Portada|Spanish MoodleDocs]], at the bottom of the page, below the category link. Inter-language links will appear automatically in the &amp;quot;In other languages&amp;quot; block. With the exception of English, only related languages are interlinked.&lt;br /&gt;
&lt;br /&gt;
== Page comments ==&lt;br /&gt;
&lt;br /&gt;
* For comments about a particular page, and/or short discussions, please use the corresponding talk page (click on the page comments tab). Please sign and date your talk page contribution by typing four tildes &amp;lt;nowiki&amp;gt;~~~~&amp;lt;/nowiki&amp;gt;. There&#039;s also a handy button for signing in the toolbar of the editing field: [[Image:Signature Icon.png]]&lt;br /&gt;
&lt;br /&gt;
* For longer discussions about the documentation, please use the Using Moodle [http://moodle.org/mod/forum/view.php?id=5838 Documentation forum].&lt;br /&gt;
&lt;br /&gt;
* If you find an unsigned comment you can use the Template:Unsigned like so &amp;lt;nowiki&amp;gt;{{Unsigned|Username}}&amp;lt;/nowiki&amp;gt; which will show as &amp;lt;small&amp;gt;(&#039;&#039;The preceding comment was added by&#039;&#039; [[User:Username]])&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Page protection==&lt;br /&gt;
* Some pages are protected from editing. For these pages, try contributing via the associated talk page.&lt;br /&gt;
**Tip: Copy the contents of a protected page, paste it in a new page, then edit the new page.  On the new page&#039;s &amp;quot;page comment&amp;quot; tab give reasons for the edit.  Then on the protected page&#039;s &amp;quot;Page comment&amp;quot; tab, call attention to the new page with a link and a summary of your reasons for change. &lt;br /&gt;
* For a list of protected pages, see [[:Category:Protected pages]].&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
*[[Moodle documentation FAQ]]&lt;br /&gt;
*[http://moodle.org/mod/forum/view.php?id=5838 Moodle Documentation forum]&lt;br /&gt;
&lt;br /&gt;
[[Category:MoodleDocs|Guidelines for contributors]]&lt;br /&gt;
&lt;br /&gt;
[[es:MoodleDocs:Normas para colaboradores]]&lt;br /&gt;
[[fr:MoodleDocs:Recommandations pour contributeurs]]&lt;br /&gt;
[[ja:MoodleDocs:寄稿のガイドライン]]&lt;br /&gt;
[[ru:MoodleDocs:Путеводитель_для_разработчиков_документации]]&lt;br /&gt;
[[zh:MoodleDocs:贡献者指引]]&lt;br /&gt;
[[sv:MoodleDocs:Riktlinjer för bidrag]]&lt;/div&gt;</summary>
		<author><name>Davosmith</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/21/en/index.php?title=Checklist_module&amp;diff=94451</id>
		<title>Checklist module</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/21/en/index.php?title=Checklist_module&amp;diff=94451"/>
		<updated>2011-12-03T18:10:23Z</updated>

		<summary type="html">&lt;p&gt;Davosmith: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:checklist_module_overview.png|thumb|Checklist Module]]The &#039;&#039;&#039;Checklist Module&#039;&#039;&#039; is a Moodle plugin for Moodle 1.9 and Moodle 2.0+ that allows a teacher to create a checklist for their students to work through.  It is contributed by [http://moodle.org/user/view.php?id=201866&amp;amp;course=1 Davo Smith].&lt;br /&gt;
The students should tick off each item on the list, as they complete it and the resulting progress of the class can be monitored by the teacher. The student is also rewarded with a progress bar that shows how far through the checklist they have managed to get.&lt;br /&gt;
&lt;br /&gt;
Other features include:&lt;br /&gt;
* Indenting items, to show a hierarchy of importance&lt;br /&gt;
* Optional items (which can be hidden in the class progress report and contribute to a secondary &#039;all items&#039; progress bar)&lt;br /&gt;
* Student checklist items (so that students can add their own items to keep track of)&lt;br /&gt;
* Dates on checklist items&lt;br /&gt;
* Choice of colours&lt;br /&gt;
&lt;br /&gt;
There is a short [http://www.youtube.com/watch?v=wIpGuW_-sVg overview video] available on YouTube.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
# Unzip the contents of file you downloaded to a temporary folder.&lt;br /&gt;
# Upload the files to the your moodle server, placing the &#039;mod/checklist&#039; files in the &#039;[moodlefolder]/mod/checklist&#039; folder, (optionally) the &#039;blocks/checklist&#039; files in the &#039;[moodlefolder]/blocks/checklist&#039; folder and (optionally) the &#039;grade/export/checklist&#039; files into the &#039;[moodlefolder]/grade/export/checklist&#039; folder.&lt;br /&gt;
# Log in as administrator and click on &#039;Notifications&#039; in the admin area to update the Moodle database, ready to use this plugin.&lt;br /&gt;
&lt;br /&gt;
==Adding a checklist block==&lt;br /&gt;
# Click &#039;Turn editing on&#039;, in a course view.&lt;br /&gt;
# Under &#039;blocks&#039;, choose &#039;Checklist&#039;&lt;br /&gt;
# Click on the &#039;Edit&#039; icon in the new block to set the checklist to  display and (optionally) which group of users to display.&lt;br /&gt;
&lt;br /&gt;
==Exporting checklist progress (Excel)==&lt;br /&gt;
# In a course, click &#039;Grades&#039;&lt;br /&gt;
# From the dropdown menu, choose &#039;Export =&amp;gt; Checklist Export&#039;&lt;br /&gt;
# Choose the checklist you want to export and click &#039;Export Excel&#039;&lt;br /&gt;
If you want to change the user information that is included in the export (&#039;First name&#039;, &#039;Surname&#039;, etc.), then edit the file &#039;grade/export/checklist/columns.php&#039; - instructions can be found inside the file itself.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
Click on &#039;Add an activity&#039; and choose &#039;Checklist&#039;.&lt;br /&gt;
Enter all the usual information.&lt;br /&gt;
You can optionally allow students to add their own, private items to the list (this will not affect the overall progress, but may help students to keep note of anything extra they need to do).&lt;br /&gt;
&lt;br /&gt;
You can then add items to the list.&lt;br /&gt;
Click on the &#039;tick&#039; to toggle an item between required, optional and heading&lt;br /&gt;
Click on the &#039;edit&#039; icon to change the text.&lt;br /&gt;
Click on the &#039;indent&#039; icons to change the level of indent.&lt;br /&gt;
Click on the &#039;move&#039; icons to move the item up/down one place.&lt;br /&gt;
Click on the &#039;delete&#039; icon to delete the item.&lt;br /&gt;
Click on the &#039;+&#039; icon to insert a new item immediately below the current item.&lt;br /&gt;
&lt;br /&gt;
Click on &#039;Preview&#039;, to get some idea of how this will look to students.&lt;br /&gt;
Click on &#039;Results&#039;, to see a chart of how the students are currently progressing through the checklist.&lt;br /&gt;
&lt;br /&gt;
Students can now log in, click on the checklist, tick any items they have completed and then click &#039;Save&#039; to update the database.&lt;br /&gt;
If you have allowed them to do so, they can click on &#039;Start Adding Items&#039;, then click on the green &#039;+&#039; icons to insert their own, private items to the list.&lt;br /&gt;
&lt;br /&gt;
If you allow a checklist to be updated by teachers (either exclusively, or in addition to students), it can be updated by doing the following:&lt;br /&gt;
# Click &#039;Results&#039;&lt;br /&gt;
# Click on the little &#039;Magnifying glass&#039; icon, beside the student&#039;s name&lt;br /&gt;
# Choose Yes / No for each item&lt;br /&gt;
# Click &#039;Save&#039;&lt;br /&gt;
# (Optional) Click &#039;Add comments&#039;, enter/update/delete a comment against each item, Click &#039;Save&#039;&lt;br /&gt;
# Click &#039;View all Progress&#039; to go back to the view with all the students shown.&lt;br /&gt;
&lt;br /&gt;
==Automatic updating==&lt;br /&gt;
&lt;br /&gt;
On the settings screen you can allow the checklist to import modules from the current course (or just the section the checklist is in). This will list the names of the resources / activities in the course and automatically tick them off, when they are &#039;completed&#039; (note there will be a delay of up to 60 seconds between an activity being completed and the checklist updating, unless you are willing to make a few Moodle core code modifications). &lt;br /&gt;
&lt;br /&gt;
Activities are considered complete, based on either the course logs being updated (e.g. resource viewed, forum posted to, etc.), a certain grade being achieved (Moodle 1.9 &amp;amp; assignment / quiz / forum only) or the Completion criteria being met (Moodle 2.0+ only).&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [http://moodle.org/plugins/view.php?plugin=mod_checklist Checklist module] - Moodle plugins database entry&lt;br /&gt;
* Download for [https://github.com/davosmith/moodle-checklist/zipball/MOODLE_19_STABLE Moodle 1.9] or [https://github.com/davosmith/moodle-checklist/zipball/master Moodle 2.0]&lt;br /&gt;
* [https://github.com/davosmith/moodle-checklist Browse] the source code&lt;br /&gt;
* [http://tracker.moodle.org/browse/CONTRIB/component/10608 Moodle tracker] to report a bug, or suggest an improvement&lt;br /&gt;
[[Category:Contributed_code]]&lt;/div&gt;</summary>
		<author><name>Davosmith</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/21/en/index.php?title=File:dndupload.png&amp;diff=86462</id>
		<title>File:dndupload.png</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/21/en/index.php?title=File:dndupload.png&amp;diff=86462"/>
		<updated>2011-07-26T21:24:26Z</updated>

		<summary type="html">&lt;p&gt;Davosmith: Example showing the results of dragging and dropping multiple files into a Moodle course, using the Drag and drop upload block&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Example showing the results of dragging and dropping multiple files into a Moodle course, using the Drag and drop upload block&lt;/div&gt;</summary>
		<author><name>Davosmith</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/21/en/index.php?title=Drag_and_drop_upload_block&amp;diff=86461</id>
		<title>Drag and drop upload block</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/21/en/index.php?title=Drag_and_drop_upload_block&amp;diff=86461"/>
		<updated>2011-07-26T21:23:34Z</updated>

		<summary type="html">&lt;p&gt;Davosmith: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:dndupload.png|frame|right|Drag and drop upload screenshot]]Once installed on a course, this block allows you to drag and drop files directly from your desktop onto a course and have them appear as resouces on that course.&lt;br /&gt;
&lt;br /&gt;
This block only works in Moodle 2.0 and above.&lt;br /&gt;
It has been tested with Firefox 5, Chromium 14 and Chrome 12, on Windows and Linux (Ubuntu). It has no chance of working in IE (it may start working with IE10 or later, depending on MS implementing some key features of HTML 5).&lt;br /&gt;
It has only been tested with the &#039;Topic&#039; course format.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
&lt;br /&gt;
# Unzip the files to a suitable location on your local machine&lt;br /&gt;
# Create a new folder on the server &amp;lt;moodleroot&amp;gt;/blocks/dndupload&lt;br /&gt;
# Upload the files you unzipped to this new folder on your server&lt;br /&gt;
# Login as administrator and click on &#039;Notifications&#039;&lt;br /&gt;
# Add the block to a course in the usual way&lt;br /&gt;
# Turn editing on (in the usual way) - the block does not show if editing is off&lt;br /&gt;
# Select a few files from your desktop and drag them onto a course section&lt;br /&gt;
&lt;br /&gt;
==Known issues==&lt;br /&gt;
&lt;br /&gt;
* Does not work in all browsers (IE, older FF/Chrome)&lt;br /&gt;
* No easy way to delete all the files, if you accidentally upload too many files (you have to delete them one-by-one)&lt;br /&gt;
* Moving resources that you have just uploaded around has slight sorting issues with other files you have just uploaded (if it is a problem, refresh the page)&lt;br /&gt;
&lt;br /&gt;
==Thanks==&lt;br /&gt;
&lt;br /&gt;
Thanks to the following websites, that were invaluable in the creation of this block:&lt;br /&gt;
* http://www.html5rocks.com/&lt;br /&gt;
* http://www.thecssninja.com/&lt;br /&gt;
* http://developer.mozilla.org/&lt;br /&gt;
* and, as always, https://docs.moodle.org/dev&lt;br /&gt;
&lt;br /&gt;
Special thanks to The University of St Andrews, for sharing some code to put some of the final polish on the operation of the block.&lt;br /&gt;
&lt;br /&gt;
==Contact==&lt;br /&gt;
&lt;br /&gt;
Any problems / questions please contact:&lt;br /&gt;
davo@davodev.co.uk&lt;br /&gt;
http://www.davodev.co.uk&lt;/div&gt;</summary>
		<author><name>Davosmith</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/21/en/index.php?title=Drag_and_drop_upload_block&amp;diff=86460</id>
		<title>Drag and drop upload block</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/21/en/index.php?title=Drag_and_drop_upload_block&amp;diff=86460"/>
		<updated>2011-07-26T21:19:23Z</updated>

		<summary type="html">&lt;p&gt;Davosmith: Created page with &amp;quot;Once installed on a course, this block allows you to drag and drop files directly from your desktop onto a course and have them appear as resouces on that course.  This block onl...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Once installed on a course, this block allows you to drag and drop files directly from your desktop onto a course and have them appear as resouces on that course.&lt;br /&gt;
&lt;br /&gt;
This block only works in Moodle 2.0 and above.&lt;br /&gt;
It has been tested with Firefox 5, Chromium 14 and Chrome 12, on Windows and Linux (Ubuntu). It has no chance of working in IE (it may start working with IE10 or later, depending on MS implementing some key features of HTML 5).&lt;br /&gt;
It has only been tested with the &#039;Topic&#039; course format.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
&lt;br /&gt;
# Unzip the files to a suitable location on your local machine&lt;br /&gt;
# Create a new folder on the server &amp;lt;moodleroot&amp;gt;/blocks/dndupload&lt;br /&gt;
# Upload the files you unzipped to this new folder on your server&lt;br /&gt;
# Login as administrator and click on &#039;Notifications&#039;&lt;br /&gt;
# Add the block to a course in the usual way&lt;br /&gt;
# Turn editing on (in the usual way) - the block does not show if editing is off&lt;br /&gt;
# Select a few files from your desktop and drag them onto a course section&lt;br /&gt;
&lt;br /&gt;
==Known issues==&lt;br /&gt;
&lt;br /&gt;
* Does not work in all browsers (IE, older FF/Chrome)&lt;br /&gt;
* No easy way to delete all the files, if you accidentally upload too many files (you have to delete them one-by-one)&lt;br /&gt;
* Moving resources that you have just uploaded around has slight sorting issues with other files you have just uploaded (if it is a problem, refresh the page)&lt;br /&gt;
&lt;br /&gt;
==Thanks==&lt;br /&gt;
&lt;br /&gt;
Thanks to the following websites, that were invaluable in the creation of this block:&lt;br /&gt;
* http://www.html5rocks.com/&lt;br /&gt;
* http://www.thecssninja.com/&lt;br /&gt;
* http://developer.mozilla.org/&lt;br /&gt;
* and, as always, https://docs.moodle.org/dev&lt;br /&gt;
&lt;br /&gt;
Special thanks to The University of St Andrews, for sharing some code to put some of the final polish on the operation of the block.&lt;br /&gt;
&lt;br /&gt;
==Contact==&lt;br /&gt;
&lt;br /&gt;
Any problems / questions please contact:&lt;br /&gt;
davo@davodev.co.uk&lt;br /&gt;
http://www.davodev.co.uk&lt;/div&gt;</summary>
		<author><name>Davosmith</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/21/en/index.php?title=blocks/objectives/edit&amp;diff=82730</id>
		<title>blocks/objectives/edit</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/21/en/index.php?title=blocks/objectives/edit&amp;diff=82730"/>
		<updated>2011-04-12T17:15:15Z</updated>

		<summary type="html">&lt;p&gt;Davosmith: Created page with &amp;quot;You get to this screen by clicking on &amp;#039;Edit objectives ...&amp;#039; in the footer of the block.  The first time, this will take you directly to the &amp;#039;Edit timetables&amp;#039; screen (there is a b...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;You get to this screen by clicking on &#039;Edit objectives ...&#039; in the footer of the block.&lt;br /&gt;
&lt;br /&gt;
The first time, this will take you directly to the &#039;Edit timetables&#039; screen (there is a button at the top of the &#039;Edit objectives&#039; page to get back here later).&lt;br /&gt;
For each slot in the timetable, choose a group to display the objectives to (or &#039;all groups&#039;, for everyone on the course), as well as a start / end time for that lesson.&lt;br /&gt;
Three blank slots are added to each day every time you click &#039;Save&#039;.&lt;br /&gt;
Once the timetable slots are filled in, click &#039;Save and edit objectives&#039;, to start entering lesson objectives.&lt;br /&gt;
&lt;br /&gt;
Type in the lesson objectives for each lesson slot, press enter to start a new objective; start a line with one (or two) spaces to indent the objectives.&lt;br /&gt;
Click on &#039;Save&#039; before moving to another week (via the next / previous links at the top of the page).&lt;br /&gt;
Click &#039;Save and view course&#039; to get back to the course.&lt;br /&gt;
&lt;br /&gt;
During a lesson, a teacher can click on an objective to toggle the &#039;tick&#039; box between completed / not completed (this is just to help keep track of the progress through the lesson and does not affect anything else).&lt;/div&gt;</summary>
		<author><name>Davosmith</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/21/en/index.php?title=blocks/objectives&amp;diff=82729</id>
		<title>blocks/objectives</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/21/en/index.php?title=blocks/objectives&amp;diff=82729"/>
		<updated>2011-04-12T17:14:00Z</updated>

		<summary type="html">&lt;p&gt;Davosmith: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a block for Moodle 1.9 and Moodle 2.0.&lt;br /&gt;
&lt;br /&gt;
It displays current lesson objectives in the side bar (to both teacher and students) and allows a teacher to check them off as they are completed. You can enter a timetable, linked to different groups, so that objectives can be entered as far in advance as you want and will be displayed at the appropriate time.&lt;br /&gt;
&lt;br /&gt;
Other features include:&lt;br /&gt;
* Abiliy to display a large version of the objectives, when teaching from the front of a class room (click on the &#039;expand&#039; icon)&lt;br /&gt;
* Students can view all the objectives, a week at a time, to help keep track of what they have been doing (and will be doing)&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
&lt;br /&gt;
# If you haven&#039;t done so already, download the zip file for [https://github.com/davosmith/moodle-objectives/zipball/master Moodle 2.0] or [https://github.com/davosmith/moodle-objectives/zipball/MOODLE_19_STABLE Moodle 1.9]&lt;br /&gt;
# Extract all the files to a suitable location&lt;br /&gt;
# Create a folder on your server &#039;&amp;lt;moodle root&amp;gt;/blocks/objectives&#039;&lt;br /&gt;
# Upload all the files in the &#039;davosmith-moodle-objectives-XXXXX/objectives&#039; folder into this blocks/objectives folder on the server.&lt;br /&gt;
# Log in as an administrator and click on the &#039;Notifications&#039; link.&lt;br /&gt;
# Go into a course, turn on editing and choose &#039;Lesson objectives&#039; from the &#039;Add a block&#039; menu&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
&lt;br /&gt;
Click on &#039;Edit objectives ...&#039; in the footer of the block.&lt;br /&gt;
The first time, this will take you directly to the &#039;Edit timetables&#039; screen (there is a button at the top of the &#039;Edit objectives&#039; page to get back here later).&lt;br /&gt;
For each slot in the timetable, choose a group to display the objectives to (or &#039;all groups&#039;, for everyone on the course), as well as a start / end time for that lesson.&lt;br /&gt;
Three blank slots are added to each day every time you click &#039;Save&#039;.&lt;br /&gt;
Once the timetable slots are filled in, click &#039;Save and edit objectives&#039;, to start entering lesson objectives.&lt;br /&gt;
&lt;br /&gt;
Type in the lesson objectives for each lesson slot, press enter to start a new objective; start a line with one (or two) spaces to indent the objectives.&lt;br /&gt;
Click on &#039;Save&#039; before moving to another week (via the next / previous links at the top of the page).&lt;br /&gt;
Click &#039;Save and view course&#039; to get back to the course.&lt;br /&gt;
&lt;br /&gt;
During a lesson, a teacher can click on an objective to toggle the &#039;tick&#039; box between completed / not completed (this is just to help keep track of the progress through the lesson and does not affect anything else).&lt;br /&gt;
&lt;br /&gt;
==Download==&lt;br /&gt;
&lt;br /&gt;
You can download the block from the Moodle modules &amp;amp; plugins database: http://moodle.org/mod/data/view.php?d=13&amp;amp;rid=4692&lt;br /&gt;
or via GitHub: https://github.com/davosmith/moodle-objectives&lt;br /&gt;
&lt;br /&gt;
==Contact==&lt;br /&gt;
&lt;br /&gt;
Any questions or suggestions for improvement, please drop an email to &amp;quot;davo AT davodev DOT co DOT uk&amp;quot; or visit http://www.davodev.co.uk&lt;/div&gt;</summary>
		<author><name>Davosmith</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/21/en/index.php?title=blocks/objectives&amp;diff=82728</id>
		<title>blocks/objectives</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/21/en/index.php?title=blocks/objectives&amp;diff=82728"/>
		<updated>2011-04-12T17:06:32Z</updated>

		<summary type="html">&lt;p&gt;Davosmith: Created page with &amp;quot;Lesson objectives block =======================  This is a block for Moodle 1.9 and Moodle 2.0. This is the Moodle 2.0 version ( download the Moodle 2.0 version here -  )  It dis...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Lesson objectives block&lt;br /&gt;
=======================&lt;br /&gt;
&lt;br /&gt;
This is a block for Moodle 1.9 and Moodle 2.0.&lt;br /&gt;
This is the Moodle 2.0 version ( download the Moodle 2.0 version here -  )&lt;br /&gt;
&lt;br /&gt;
It displays current lesson objectives in the side bar (to both teacher and students) and allows a teacher to check them off as they are completed. You can enter a timetable, linked to different groups, so that objectives can be entered as far in advance as you want and will be displayed at the appropriate time.&lt;br /&gt;
&lt;br /&gt;
Other features include:&lt;br /&gt;
* Abiliy to display a large version of the objectives, when teaching from the front of a class room (click on the &#039;expand&#039; icon)&lt;br /&gt;
* Students can view all the objectives, a week at a time, to help keep track of what they have been doing (and will be doing)&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
&lt;br /&gt;
1. If you haven&#039;t done so already, download the zip file from https://github.com/davosmith/moodle-objectives/zipball/master (Moodle 2.0)&lt;br /&gt;
https://github.com/davosmith/moodle-objectives/zipball/MOODLE_19_STABLE (Moodle 1.9)&lt;br /&gt;
2. Extract all the files to a suitable location&lt;br /&gt;
3. Create a folder on your server &#039;&amp;lt;moodle root&amp;gt;/blocks/objectives&#039;&lt;br /&gt;
4. Upload all the files in the &#039;davosmith-moodle-objectives-XXXXX/objectives&#039; folder into this blocks/objectives folder on the server.&lt;br /&gt;
5. Log in as an administrator and click on the &#039;Notifications&#039; link.&lt;br /&gt;
6. Go into a course, turn on editing and choose &#039;Lesson objectives&#039; from the &#039;Add a block&#039; menu&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
&lt;br /&gt;
Click on &#039;Edit objectives ...&#039; in the footer of the block.&lt;br /&gt;
The first time, this will take you directly to the &#039;Edit timetables&#039; screen (there is a button at the top of the &#039;Edit objectives&#039; page to get back here later).&lt;br /&gt;
For each slot in the timetable, choose a group to display the objectives to (or &#039;all groups&#039;, for everyone on the course), as well as a start / end time for that lesson.&lt;br /&gt;
Three blank slots are added to each day every time you click &#039;Save&#039;.&lt;br /&gt;
Once the timetable slots are filled in, click &#039;Save and edit objectives&#039;, to start entering lesson objectives.&lt;br /&gt;
&lt;br /&gt;
Type in the lesson objectives for each lesson slot, press enter to start a new objective; start a line with one (or two) spaces to indent the objectives.&lt;br /&gt;
Click on &#039;Save&#039; before moving to another week (via the next / previous links at the top of the page).&lt;br /&gt;
Click &#039;Save and view course&#039; to get back to the course.&lt;br /&gt;
&lt;br /&gt;
During a lesson, a teacher can click on an objective to toggle the &#039;tick&#039; box between completed / not completed (this is just to help keep track of the progress through the lesson and does not affect anything else).&lt;br /&gt;
&lt;br /&gt;
==Download==&lt;br /&gt;
&lt;br /&gt;
You can download the block from the Moodle modules &amp;amp; plugins database: http://moodle.org/mod/data/view.php?d=13&amp;amp;rid=4692&lt;br /&gt;
or via GitHub: https://github.com/davosmith/moodle-objectives&lt;br /&gt;
&lt;br /&gt;
==Contact==&lt;br /&gt;
&lt;br /&gt;
Any questions or suggestions for improvement, please drop an email to &amp;quot;davo AT davodev DOT co DOT uk&amp;quot; or visit http://www.davodev.co.uk&lt;/div&gt;</summary>
		<author><name>Davosmith</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/21/en/index.php?title=Checklist_module&amp;diff=81745</id>
		<title>Checklist module</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/21/en/index.php?title=Checklist_module&amp;diff=81745"/>
		<updated>2011-03-06T16:11:17Z</updated>

		<summary type="html">&lt;p&gt;Davosmith: Added explanation of the &amp;#039;automatic updating&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:checklist_module_overview.png|thumb|Checklist Module]]The &#039;&#039;&#039;Checklist Module&#039;&#039;&#039; is a Moodle plugin for Moodle 1.9 and Moodle 2.0+ that allows a teacher to create a checklist for their students to work through.  It is contributed by [http://moodle.org/user/view.php?id=201866&amp;amp;course=1 David Smith].&lt;br /&gt;
The students should tick off each item on the list, as they complete it and the resulting progress of the class can be monitored by the teacher. The student is also rewarded with a progress bar that shows how far through the checklist they have managed to get.&lt;br /&gt;
&lt;br /&gt;
Other features include:&lt;br /&gt;
* Indenting items, to show a hierarchy of importance&lt;br /&gt;
* Optional items (which can be hidden in the class progress report and contribute to a secondary &#039;all items&#039; progress bar)&lt;br /&gt;
* Student checklist items (so that students can add their own items to keep track of)&lt;br /&gt;
* Dates on checklist items&lt;br /&gt;
* Choice of colours&lt;br /&gt;
&lt;br /&gt;
There is a short [http://www.youtube.com/watch?v=wIpGuW_-sVg overview video] available on YouTube.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
1. Unzip the contents of file you downloaded to a temporary folder.&lt;br /&gt;
2. Upload the files to the your moodle server, placing the &#039;mod/checklist&#039; files in the &#039;[moodlefolder]/mod/checklist&#039; folder, (optionally) the &#039;blocks/checklist&#039; files in the &#039;[moodlefolder]/blocks/checklist&#039; folder and (optionally) the &#039;grade/export/checklist&#039; files into the &#039;[moodlefolder]/grade/export/checklist&#039; folder.&lt;br /&gt;
3. Log in as administrator and click on &#039;Notifications&#039; in the admin area to update the Moodle database, ready to use this plugin.&lt;br /&gt;
&lt;br /&gt;
==Adding a checklist block==&lt;br /&gt;
1. Click &#039;Turn editing on&#039;, in a course view.&lt;br /&gt;
2. Under &#039;blocks&#039;, choose &#039;Checklist&#039;&lt;br /&gt;
3. Click on the &#039;Edit&#039; icon in the new block to set the checklist to  display and (optionally) which group of users to display.&lt;br /&gt;
&lt;br /&gt;
==Exporting checklist progress (Excel)==&lt;br /&gt;
1. In a course, click &#039;Grades&#039;&lt;br /&gt;
2. From the dropdown menu, choose &#039;Export =&amp;gt; Checklist Export&#039;&lt;br /&gt;
3. Choose the checklist you want to export and click &#039;Export Excel&#039;&lt;br /&gt;
If you want to change the user information that is included in the export (&#039;First name&#039;, &#039;Surname&#039;, etc.), then edit the file &#039;grade/export/checklist/columns.php&#039; - instructions can be found inside the file itself.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
Click on &#039;Add an activity&#039; and choose &#039;Checklist&#039;.&lt;br /&gt;
Enter all the usual information.&lt;br /&gt;
You can optionally allow students to add their own, private items to the list (this will not affect the overall progress, but may help students to keep note of anything extra they need to do).&lt;br /&gt;
&lt;br /&gt;
You can then add items to the list.&lt;br /&gt;
Click on the &#039;tick&#039; to toggle an item between required, optional and heading&lt;br /&gt;
Click on the &#039;edit&#039; icon to change the text.&lt;br /&gt;
Click on the &#039;indent&#039; icons to change the level of indent.&lt;br /&gt;
Click on the &#039;move&#039; icons to move the item up/down one place.&lt;br /&gt;
Click on the &#039;delete&#039; icon to delete the item.&lt;br /&gt;
Click on the &#039;+&#039; icon to insert a new item immediately below the current item.&lt;br /&gt;
&lt;br /&gt;
Click on &#039;Preview&#039;, to get some idea of how this will look to students.&lt;br /&gt;
Click on &#039;Results&#039;, to see a chart of how the students are currently progressing through the checklist.&lt;br /&gt;
&lt;br /&gt;
Students can now log in, click on the checklist, tick any items they have completed and then click &#039;Save&#039; to update the database.&lt;br /&gt;
If you have allowed them to do so, they can click on &#039;Start Adding Items&#039;, then click on the green &#039;+&#039; icons to insert their own, private items to the list.&lt;br /&gt;
&lt;br /&gt;
If you allow a checklist to be updated by teachers (either exclusively, or in addition to students), it can be updated by doing the following:&lt;br /&gt;
1. Click &#039;Results&#039;&lt;br /&gt;
2. Click on the little &#039;Magnifying glass&#039; icon, beside the student&#039;s name&lt;br /&gt;
3. Choose Yes / No for each item&lt;br /&gt;
4. Click &#039;Save&#039;&lt;br /&gt;
5. (Optional) Click &#039;Add comments&#039;, enter/update/delete a comment against each item, Click &#039;Save&#039;&lt;br /&gt;
5. Click &#039;View all Progress&#039; to go back to the view with all the students shown.&lt;br /&gt;
&lt;br /&gt;
==Automatic updating==&lt;br /&gt;
&lt;br /&gt;
On the settings screen you can allow the checklist to import modules from the current course (or just the section the checklist is in). This will list the names of the resources / activities in the course and automatically tick them off, when they are &#039;completed&#039; (note there will be a delay of up to 60 seconds between an activity being completed and the checklist updating, unless you are willing to make a few Moodle core code modifications). &lt;br /&gt;
&lt;br /&gt;
Activities are considered complete, based on either the course logs being updated (e.g. resource viewed, forum posted to, etc.), a certain grade being achieved (Moodle 1.9 &amp;amp; assignment / quiz / forum only) or the Completion criteria being met (Moodle 2.0+ only).&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [http://moodle.org/mod/data/view.php?d=13&amp;amp;rid=3582 Checklist module] - Moodle plugins database entry&lt;br /&gt;
* Download for [https://github.com/davosmith/moodle-checklist/zipball/MOODLE_19_STABLE Moodle 1.9] or [https://github.com/davosmith/moodle-checklist/zipball/master Moodle 2.0]&lt;br /&gt;
* [https://github.com/davosmith/moodle-checklist Browse] the source code&lt;br /&gt;
* [http://tracker.moodle.org/browse/CONTRIB/component/10608 Moodle tracker] to report a bug, or suggest an improvement&lt;br /&gt;
[[Category:Contributed_code]]&lt;/div&gt;</summary>
		<author><name>Davosmith</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/21/en/index.php?title=Checklist_module&amp;diff=81744</id>
		<title>Checklist module</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/21/en/index.php?title=Checklist_module&amp;diff=81744"/>
		<updated>2011-03-06T15:54:31Z</updated>

		<summary type="html">&lt;p&gt;Davosmith: Update to reflect more recent changes in the module&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:checklist_module_overview.png|thumb|Checklist Module]]The &#039;&#039;&#039;Checklist Module&#039;&#039;&#039; is a Moodle plugin for Moodle 1.9 and Moodle 2.0+ that allows a teacher to create a checklist for their students to work through.  It is contributed by [http://moodle.org/user/view.php?id=201866&amp;amp;course=1 David Smith].&lt;br /&gt;
The students should tick off each item on the list, as they complete it and the resulting progress of the class can be monitored by the teacher. The student is also rewarded with a progress bar that shows how far through the checklist they have managed to get.&lt;br /&gt;
&lt;br /&gt;
Other features include:&lt;br /&gt;
* Indenting items, to show a hierarchy of importance&lt;br /&gt;
* Optional items (which can be hidden in the class progress report and contribute to a secondary &#039;all items&#039; progress bar)&lt;br /&gt;
* Student checklist items (so that students can add their own items to keep track of)&lt;br /&gt;
* Dates on checklist items&lt;br /&gt;
* Choice of colours&lt;br /&gt;
&lt;br /&gt;
There is a short [http://www.youtube.com/watch?v=wIpGuW_-sVg overview video] available on YouTube.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
1. Unzip the contents of file you downloaded to a temporary folder.&lt;br /&gt;
2. Upload the files to the your moodle server, placing the &#039;mod/checklist&#039; files in the &#039;[moodlefolder]/mod/checklist&#039; folder, (optionally) the &#039;blocks/checklist&#039; files in the &#039;[moodlefolder]/blocks/checklist&#039; folder and (optionally) the &#039;grade/export/checklist&#039; files into the &#039;[moodlefolder]/grade/export/checklist&#039; folder.&lt;br /&gt;
3. Log in as administrator and click on &#039;Notifications&#039; in the admin area to update the Moodle database, ready to use this plugin.&lt;br /&gt;
&lt;br /&gt;
==Adding a checklist block==&lt;br /&gt;
1. Click &#039;Turn editing on&#039;, in a course view.&lt;br /&gt;
2. Under &#039;blocks&#039;, choose &#039;Checklist&#039;&lt;br /&gt;
3. Click on the &#039;Edit&#039; icon in the new block to set the checklist to  display and (optionally) which group of users to display.&lt;br /&gt;
&lt;br /&gt;
==Exporting checklist progress (Excel)==&lt;br /&gt;
1. In a course, click &#039;Grades&#039;&lt;br /&gt;
2. From the dropdown menu, choose &#039;Export =&amp;gt; Checklist Export&#039;&lt;br /&gt;
3. Choose the checklist you want to export and click &#039;Export Excel&#039;&lt;br /&gt;
If you want to change the user information that is included in the export (&#039;First name&#039;, &#039;Surname&#039;, etc.), then edit the file &#039;grade/export/checklist/columns.php&#039; - instructions can be found inside the file itself.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
Click on &#039;Add an activity&#039; and choose &#039;Checklist&#039;.&lt;br /&gt;
Enter all the usual information.&lt;br /&gt;
You can optionally allow students to add their own, private items to the list (this will not affect the overall progress, but may help students to keep note of anything extra they need to do).&lt;br /&gt;
&lt;br /&gt;
You can then add items to the list.&lt;br /&gt;
Click on the &#039;tick&#039; to toggle an item between required, optional and heading&lt;br /&gt;
Click on the &#039;edit&#039; icon to change the text.&lt;br /&gt;
Click on the &#039;indent&#039; icons to change the level of indent.&lt;br /&gt;
Click on the &#039;move&#039; icons to move the item up/down one place.&lt;br /&gt;
Click on the &#039;delete&#039; icon to delete the item.&lt;br /&gt;
Click on the &#039;+&#039; icon to insert a new item immediately below the current item.&lt;br /&gt;
&lt;br /&gt;
Click on &#039;Preview&#039;, to get some idea of how this will look to students.&lt;br /&gt;
Click on &#039;Results&#039;, to see a chart of how the students are currently progressing through the checklist.&lt;br /&gt;
&lt;br /&gt;
Students can now log in, click on the checklist, tick any items they have completed and then click &#039;Save&#039; to update the database.&lt;br /&gt;
If you have allowed them to do so, they can click on &#039;Start Adding Items&#039;, then click on the green &#039;+&#039; icons to insert their own, private items to the list.&lt;br /&gt;
&lt;br /&gt;
If you allow a checklist to be updated by teachers (either exclusively, or in addition to students), it can be updated by doing the following:&lt;br /&gt;
1. Click &#039;Results&#039;&lt;br /&gt;
2. Click on the little &#039;Magnifying glass&#039; icon, beside the student&#039;s name&lt;br /&gt;
3. Choose Yes / No for each item&lt;br /&gt;
4. Click &#039;Save&#039;&lt;br /&gt;
5. (Optional) Click &#039;Add comments&#039;, enter/update/delete a comment against each item, Click &#039;Save&#039;&lt;br /&gt;
5. Click &#039;View all Progress&#039; to go back to the view with all the students shown.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [http://moodle.org/mod/data/view.php?d=13&amp;amp;rid=3582 Checklist module] - Moodle plugins database entry&lt;br /&gt;
* Download for [https://github.com/davosmith/moodle-checklist/zipball/MOODLE_19_STABLE Moodle 1.9] or [https://github.com/davosmith/moodle-checklist/zipball/master Moodle 2.0]&lt;br /&gt;
* [https://github.com/davosmith/moodle-checklist Browse] the source code&lt;br /&gt;
* [http://tracker.moodle.org/browse/CONTRIB/component/10608 Moodle tracker] to report a bug, or suggest an improvement&lt;br /&gt;
[[Category:Contributed_code]]&lt;/div&gt;</summary>
		<author><name>Davosmith</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/21/en/index.php?title=Development:Events_API&amp;diff=81225</id>
		<title>Development:Events API</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/21/en/index.php?title=Development:Events_API&amp;diff=81225"/>
		<updated>2011-02-10T14:46:33Z</updated>

		<summary type="html">&lt;p&gt;Davosmith: /* Events wishlist */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
&lt;br /&gt;
The Events API is a core system in Moodle to allow communication between modules.  &lt;br /&gt;
&lt;br /&gt;
An &#039;&#039;&#039;event&#039;&#039;&#039; is when something &amp;quot;interesting&amp;quot; happens in Moodle that is worth alerting the system about.&lt;br /&gt;
&lt;br /&gt;
Any Moodle modules can &#039;&#039;&#039;trigger&#039;&#039;&#039; new events (with attached data), and other modules can elect to &#039;&#039;&#039;handle&#039;&#039;&#039; those events with custom functions that operate on the given data.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
&lt;br /&gt;
Let&#039;s look at an example of how events are used to implement Messaging in Moodle 2.0.  In the messaging system, textual messages are generated for users by different modules, and the user can decide how certain types of messages are displayed.&lt;br /&gt;
&lt;br /&gt;
===Triggering an event===&lt;br /&gt;
&lt;br /&gt;
When a messaging event occurs, the module should trigger a &amp;quot;message_send&amp;quot; event.   In this example let&#039;s pretend someone just posted to a forum.&lt;br /&gt;
&lt;br /&gt;
The forum module needs to create an object with the data that this event needs.  This may vary completely for different types of events, it&#039;s just a data object.&lt;br /&gt;
&lt;br /&gt;
 $eventdata = new object();&lt;br /&gt;
 $eventdata-&amp;gt;component         = &#039;mod/forum&#039;;    // path in Moodle&lt;br /&gt;
 $eventdata-&amp;gt;name              = &#039;posts&#039;;        // type of message from that module (as module defines it)&lt;br /&gt;
 $eventdata-&amp;gt;userfrom          = $userfrom;      // user object&lt;br /&gt;
 $eventdata-&amp;gt;userto            = $userto;        // user object&lt;br /&gt;
 $eventdata-&amp;gt;subject           = &amp;quot;Hi there&amp;quot;;     // short one-line subject&lt;br /&gt;
 $eventdata-&amp;gt;fullmessage       = &amp;quot;Here is the full message&amp;quot;;      // raw text&lt;br /&gt;
 $eventdata-&amp;gt;fullmessageformat = FORMAT_PLAIN;   // text format&lt;br /&gt;
 $eventdata-&amp;gt;fullmessagehtml   = &amp;quot;Here is the &amp;amp;lt;b&amp;gt;full&amp;amp;lt;/b&amp;gt; message&amp;quot;;    // html rendered version   (optional)&lt;br /&gt;
 $eventdata-&amp;gt;smallmessage      = &amp;quot;Here is the truncated message&amp;quot;;      // useful for plugins like sms or twitter  (optional)&lt;br /&gt;
&lt;br /&gt;
Then we post the object as an event and forget about it:&lt;br /&gt;
&lt;br /&gt;
 events_trigger(&#039;message_send&#039;, $eventdata);&lt;br /&gt;
&lt;br /&gt;
===Handling an event===&lt;br /&gt;
&lt;br /&gt;
Modules or core code can define an events.php in the db directory which defines events they want to be notified about, and describes which of their functions or class methods should be notified.  For this case, there is this definition of a handler in lib/db/events.php&lt;br /&gt;
&lt;br /&gt;
 $handlers = array (&lt;br /&gt;
     &#039;message_send&#039; =&amp;gt; array (&lt;br /&gt;
          &#039;handlerfile&#039;      =&amp;gt; &#039;/lib/messagelib.php&#039;,&lt;br /&gt;
          &#039;handlerfunction&#039;  =&amp;gt; &#039;message_send_handler&#039;,&lt;br /&gt;
          &#039;schedule&#039;         =&amp;gt; &#039;instant&#039;&lt;br /&gt;
      )&lt;br /&gt;
 );&lt;br /&gt;
&lt;br /&gt;
These events.php files are parsed during install / upgrade and stored in a simple database table.&lt;br /&gt;
&lt;br /&gt;
Now, when a &#039;&#039;&#039;message_send&#039;&#039;&#039; event happens, all the registered handlers functions for that event will be called something like this (but with more error handling):&lt;br /&gt;
&lt;br /&gt;
          include_once($CFG-&amp;gt;dirroot.$handlers[&#039;message_send&#039;][&#039;handlerfile&#039;]);&lt;br /&gt;
          call_user_func($handlers[&#039;message_send&#039;][&#039;handlerfunction&#039;], $eventdata);&lt;br /&gt;
&lt;br /&gt;
Any code can hook into any events this way.&lt;br /&gt;
&lt;br /&gt;
The handler function accepts one parameter (the event data object) and should return a boolean.  Returning false indicates that there was an error and the event will be left in the event queue.&lt;br /&gt;
&lt;br /&gt;
    function message_send_handler($eventdata) {&lt;br /&gt;
        // handle event &lt;br /&gt;
        // ...&lt;br /&gt;
        return true;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
==Database structure==&lt;br /&gt;
&lt;br /&gt;
There are 3 core tables for events. Note that if a handler is queued, and yet to be processed or processing failed, then all subsequent calls on that handler must be queued.&lt;br /&gt;
&lt;br /&gt;
===events_handlers===&lt;br /&gt;
&lt;br /&gt;
This table is for storing which components requests what type of event, and the location of the responsible handler functions.&lt;br /&gt;
&lt;br /&gt;
These entries are created by parsing events.php files in all the modules, and can be rebuilt any time (during an upgrade, say).&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;Info&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|id&lt;br /&gt;
|int(10)&lt;br /&gt;
|auto increment identifier&lt;br /&gt;
|-&lt;br /&gt;
|eventname&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|name of the event, e.g. &#039;message_send&#039;&lt;br /&gt;
|-&lt;br /&gt;
|handlermodule&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|e.g. moodle, mod/forum, block/rss_client&lt;br /&gt;
|-&lt;br /&gt;
|handlerfile&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|path to the file of the function, eg /lib/messagelib.php&lt;br /&gt;
|-&lt;br /&gt;
|handlerfunction&lt;br /&gt;
|text&lt;br /&gt;
|serialized string or array describing function, suitable to be passed to &#039;&#039;&#039;call_user_func()&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|schedule 	&lt;br /&gt;
|varchar(255) 	&lt;br /&gt;
|&#039;cron&#039; or &#039;instant&#039;.&lt;br /&gt;
|-&lt;br /&gt;
|status&lt;br /&gt;
|int(10)&lt;br /&gt;
|number of failed attempts to process this handler&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===events_queue===&lt;br /&gt;
&lt;br /&gt;
This table is for storing queued events. It stores only one copy of the eventdata here, and entries from this table are being references by the events_queue_handlers table.&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;Info&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|id&lt;br /&gt;
|int(10)&lt;br /&gt;
|auto increment identifier&lt;br /&gt;
|-&lt;br /&gt;
|eventdata 	&lt;br /&gt;
|longtext 	&lt;br /&gt;
|serialized version of the data object passed to the event handler.&lt;br /&gt;
|-&lt;br /&gt;
|stackdump&lt;br /&gt;
|text&lt;br /&gt;
|serialized debug_backtrace showing where the event was fired from&lt;br /&gt;
|-&lt;br /&gt;
|userid&lt;br /&gt;
|int(10)&lt;br /&gt;
|$USER-&amp;gt;id when the event was fired&lt;br /&gt;
|-&lt;br /&gt;
|timecreated&lt;br /&gt;
|int(10) 	&lt;br /&gt;
|time stamp of the first time this was added&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===events_queue_handlers===&lt;br /&gt;
&lt;br /&gt;
This is the list of queued handlers for processing. The event object is retrieved from the events_queue table. When no further reference is made to the events_queue table, the corresponding entry in the events_queue table should be deleted. Entry should get deleted (?) after a successful event processing by the specified handler.  The status field keeps track of failures, after it gets to a certain number (eg 10?) it should trigger an &amp;quot;event failed&amp;quot; event (that could result in admin being emailed etc, or perhaps even the originating module taking care of it or rolling something back etc).&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;Info&#039;&#039;&#039;&lt;br /&gt;
|- &lt;br /&gt;
|id&lt;br /&gt;
|int(10)&lt;br /&gt;
|auto increment identifier&lt;br /&gt;
|-&lt;br /&gt;
|queuedeventid&lt;br /&gt;
|int(10)&lt;br /&gt;
|foreign key id corresponding to the id of the event_queues table&lt;br /&gt;
|-&lt;br /&gt;
|handlerid&lt;br /&gt;
|int(10)&lt;br /&gt;
|foreign key id corresponding to the id of the event_handlers table&lt;br /&gt;
|-&lt;br /&gt;
|status&lt;br /&gt;
|int(10)&lt;br /&gt;
|number of failed attempts to process this handler&lt;br /&gt;
|-&lt;br /&gt;
|errormessage&lt;br /&gt;
|text&lt;br /&gt;
|if an error happened last time we tried to process this event, record it here.&lt;br /&gt;
|-&lt;br /&gt;
|timemodified&lt;br /&gt;
|int(10)&lt;br /&gt;
|time stamp of the last attempt to run this from the queue&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Standards for naming events==&lt;br /&gt;
&lt;br /&gt;
All event names should follow a consistent naming pattern, such as modulename_noun_verb&lt;br /&gt;
&lt;br /&gt;
If the event is being fired after the action has taken place (as in most cases) then use the past tense for the verb (created / deleted / updated / sent).&lt;br /&gt;
&lt;br /&gt;
If the event &#039;&#039;&#039;is&#039;&#039;&#039; the action, then use the present tense (create / delete / update / send).&lt;br /&gt;
&lt;br /&gt;
==Events which exist==&lt;br /&gt;
&lt;br /&gt;
When we add new events to core we should always add them here too.&lt;br /&gt;
&lt;br /&gt;
Under each event, list the data sent as part of the event.&lt;br /&gt;
&lt;br /&gt;
===Users===&lt;br /&gt;
* user_created&lt;br /&gt;
** full new record from &#039;user&#039; table&lt;br /&gt;
* user_deleted&lt;br /&gt;
** record from &#039;user&#039; table before marked as deleted&lt;br /&gt;
* user_updated&lt;br /&gt;
** full new record from &#039;user&#039; table&lt;br /&gt;
&lt;br /&gt;
===Roles===&lt;br /&gt;
* role_assigned (full new record from &#039;role_assignments&#039; table)&lt;br /&gt;
* role_unassigned (record from &#039;role_assignments&#039;, course context only)&lt;br /&gt;
&lt;br /&gt;
===Courses===&lt;br /&gt;
* course_created&lt;br /&gt;
** full course record&lt;br /&gt;
* course_updated&lt;br /&gt;
** full course record&lt;br /&gt;
* course_deleted&lt;br /&gt;
** full course record&lt;br /&gt;
* course_category_deleted&lt;br /&gt;
** full category record&lt;br /&gt;
&lt;br /&gt;
===Groups===&lt;br /&gt;
* groups_member_added&lt;br /&gt;
** groupid&lt;br /&gt;
** userid&lt;br /&gt;
* groups_member_removed&lt;br /&gt;
** groupid&lt;br /&gt;
** userid&lt;br /&gt;
* groups_group_created&lt;br /&gt;
** id&lt;br /&gt;
** courseid&lt;br /&gt;
** name&lt;br /&gt;
** description&lt;br /&gt;
** timecreated&lt;br /&gt;
** timemodified&lt;br /&gt;
** picture&lt;br /&gt;
* groups_group_updated&lt;br /&gt;
** id&lt;br /&gt;
** courseid&lt;br /&gt;
** name&lt;br /&gt;
** description&lt;br /&gt;
** timecreated&lt;br /&gt;
** timemodified&lt;br /&gt;
** picture&lt;br /&gt;
* groups_group_deleted&lt;br /&gt;
** id&lt;br /&gt;
** courseid&lt;br /&gt;
** name&lt;br /&gt;
** description&lt;br /&gt;
** timecreated&lt;br /&gt;
** timemodified&lt;br /&gt;
** picture&lt;br /&gt;
* groups_grouping_created&lt;br /&gt;
** id&lt;br /&gt;
** courseid&lt;br /&gt;
** name&lt;br /&gt;
** timecreated&lt;br /&gt;
** timemodified&lt;br /&gt;
* groups_grouping_updated&lt;br /&gt;
** id&lt;br /&gt;
** courseid&lt;br /&gt;
** name&lt;br /&gt;
** timecreated&lt;br /&gt;
** timemodified&lt;br /&gt;
* groups_grouping_deleted&lt;br /&gt;
** id&lt;br /&gt;
** courseid&lt;br /&gt;
** name&lt;br /&gt;
** timecreated&lt;br /&gt;
** timemodified&lt;br /&gt;
* groups_members_removed (user deleted from all groups in a course)&lt;br /&gt;
** courseid&lt;br /&gt;
** userid&lt;br /&gt;
* groups_groupings_groups_removed (remove all groups from all groupings in a course)&lt;br /&gt;
** courseid (as plain integer, not object)&lt;br /&gt;
* groups_groups_deleted (delete all groups in a course)&lt;br /&gt;
** courseid (as plain integer, not object)&lt;br /&gt;
* groups_groupings_deleted (delete all groupings in a course)&lt;br /&gt;
** courseid (as plain integer, not object)&lt;br /&gt;
&lt;br /&gt;
===Messaging===&lt;br /&gt;
* message_send&lt;br /&gt;
** component = &#039;mod/forum&#039;: path in Moodle&lt;br /&gt;
** name = &#039;posts&#039;: type of message from that module (as module defines it)&lt;br /&gt;
** userfrom = $userfrom: a user object to send from&lt;br /&gt;
** userto = $userto: a user object to send to&lt;br /&gt;
** subject = &#039;subject line&#039;: a short text line&lt;br /&gt;
** fullmessage = &#039;full plain text&#039;: raw text as entered by user&lt;br /&gt;
** fullmessageformat = FORMAT_PLAIN|FORMAT_HTML|FORMAT_MOODLE|FORMAT_MARKDOWN: the format of this text&lt;br /&gt;
** fullmessagehtml = &#039;long html text&#039;; html rendered version (optional)&lt;br /&gt;
** smallmessage = &#039;short text&#039;: useful for plugins like sms or twitter (optional)&lt;br /&gt;
&lt;br /&gt;
===Portfolio===&lt;br /&gt;
* portfolio_send&lt;br /&gt;
** id : recordid in portfolio_tempdata table, used for itemid in file storage&lt;br /&gt;
&lt;br /&gt;
==Events wishlist==&lt;br /&gt;
&lt;br /&gt;
List of events which it would be nice to have.  Please add to this list if what you want is not shown here.&lt;br /&gt;
&lt;br /&gt;
* mform_print_form -- this for all types of form e.g. admin settings, user profile, module updating, + some sort of standard way of discriminiating between them e.g. if ($form-&amp;gt;name == &#039;user_profile&#039;) {}. This would be better triggered at the end of the form generation process so that new bits can be inserted at any point, or existing bits could be removed.&lt;br /&gt;
* module_installed&lt;br /&gt;
* module_removed&lt;br /&gt;
* grade_update&lt;br /&gt;
* assignment_submitted&lt;br /&gt;
* course completed&lt;br /&gt;
* course module completion state changed (completed / not completed)&lt;br /&gt;
&lt;br /&gt;
Provide event trigger hooks for the modules, similar to what is done for the cron service which checks the LOCAL directory for a cron file. It is already possible to define an event trigger but the core/module code must be modified to actually make use of it.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=69103 General Developer Forum thread for discussing this proposal]. &lt;br /&gt;
* [[Development:Messaging_2.0]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Coding guidelines|Events]]&lt;br /&gt;
[[Category:Grades]]&lt;/div&gt;</summary>
		<author><name>Davosmith</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/21/en/index.php?title=mod/checklist/view&amp;diff=71591</id>
		<title>mod/checklist/view</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/21/en/index.php?title=mod/checklist/view&amp;diff=71591"/>
		<updated>2010-04-30T11:08:08Z</updated>

		<summary type="html">&lt;p&gt;Davosmith: Added link to checklist module main page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page allows you to view or preview a particular [[Checklist_module|checklist]].&lt;br /&gt;
&lt;br /&gt;
By default, teachers can only see a list of checklist items, but are unable to save any changes to the list (you need to be given the capability &#039;mod/checklist:updateown&#039; to do this).&lt;br /&gt;
&lt;br /&gt;
Students can see a list of checklist items, tick off the ones they have completed and then click &#039;save&#039; to update the system. If the teacher has allowed this, students can also click on &#039;Start adding your own items&#039;, then click on the green &#039;+&#039; symbols to insert new, private items on their own list. The red &#039;-&#039; symbols can be used to remove these items again.&lt;br /&gt;
&lt;br /&gt;
Private items and items the teacher has marked as optional, with count towards the &#039;All items&#039; progress bar at the top of the screen, but will not affect the &#039;Required items&#039; progress bar (or the progress that is reported to the grade book).&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[Checklist_module]]&lt;/div&gt;</summary>
		<author><name>Davosmith</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/21/en/index.php?title=mod/checklist/view&amp;diff=71590</id>
		<title>mod/checklist/view</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/21/en/index.php?title=mod/checklist/view&amp;diff=71590"/>
		<updated>2010-04-30T11:06:38Z</updated>

		<summary type="html">&lt;p&gt;Davosmith: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page allows you to view or preview a particular [[Checklist_module|checklist]].&lt;br /&gt;
&lt;br /&gt;
By default, teachers can only see a list of checklist items, but are unable to save any changes to the list (you need to be given the capability &#039;mod/checklist:updateown&#039; to do this).&lt;br /&gt;
&lt;br /&gt;
Students can see a list of checklist items, tick off the ones they have completed and then click &#039;save&#039; to update the system. If the teacher has allowed this, students can also click on &#039;Start adding your own items&#039;, then click on the green &#039;+&#039; symbols to insert new, private items on their own list. The red &#039;-&#039; symbols can be used to remove these items again.&lt;br /&gt;
&lt;br /&gt;
Private items and items the teacher has marked as optional, with count towards the &#039;All items&#039; progress bar at the top of the screen, but will not affect the &#039;Required items&#039; progress bar (or the progress that is reported to the grade book).&lt;/div&gt;</summary>
		<author><name>Davosmith</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/21/en/index.php?title=mod/checklist/view&amp;diff=71589</id>
		<title>mod/checklist/view</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/21/en/index.php?title=mod/checklist/view&amp;diff=71589"/>
		<updated>2010-04-30T11:06:15Z</updated>

		<summary type="html">&lt;p&gt;Davosmith: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page allows you to view or preview a particular [[Checklist_module checklist]].&lt;br /&gt;
&lt;br /&gt;
By default, teachers can only see a list of checklist items, but are unable to save any changes to the list (you need to be given the capability &#039;mod/checklist:updateown&#039; to do this).&lt;br /&gt;
&lt;br /&gt;
Students can see a list of checklist items, tick off the ones they have completed and then click &#039;save&#039; to update the system. If the teacher has allowed this, students can also click on &#039;Start adding your own items&#039;, then click on the green &#039;+&#039; symbols to insert new, private items on their own list. The red &#039;-&#039; symbols can be used to remove these items again.&lt;br /&gt;
&lt;br /&gt;
Private items and items the teacher has marked as optional, with count towards the &#039;All items&#039; progress bar at the top of the screen, but will not affect the &#039;Required items&#039; progress bar (or the progress that is reported to the grade book).&lt;/div&gt;</summary>
		<author><name>Davosmith</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/21/en/index.php?title=mod/checklist/view&amp;diff=71588</id>
		<title>mod/checklist/view</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/21/en/index.php?title=mod/checklist/view&amp;diff=71588"/>
		<updated>2010-04-30T11:05:51Z</updated>

		<summary type="html">&lt;p&gt;Davosmith: Newly created&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page allows you to view or preview a particular [Checklist_module checklist].&lt;br /&gt;
&lt;br /&gt;
By default, teachers can only see a list of checklist items, but are unable to save any changes to the list (you need to be given the capability &#039;mod/checklist:updateown&#039; to do this).&lt;br /&gt;
&lt;br /&gt;
Students can see a list of checklist items, tick off the ones they have completed and then click &#039;save&#039; to update the system. If the teacher has allowed this, students can also click on &#039;Start adding your own items&#039;, then click on the green &#039;+&#039; symbols to insert new, private items on their own list. The red &#039;-&#039; symbols can be used to remove these items again.&lt;br /&gt;
&lt;br /&gt;
Private items and items the teacher has marked as optional, with count towards the &#039;All items&#039; progress bar at the top of the screen, but will not affect the &#039;Required items&#039; progress bar (or the progress that is reported to the grade book).&lt;/div&gt;</summary>
		<author><name>Davosmith</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/21/en/index.php?title=Checklist_module&amp;diff=71587</id>
		<title>Checklist module</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/21/en/index.php?title=Checklist_module&amp;diff=71587"/>
		<updated>2010-04-30T10:53:34Z</updated>

		<summary type="html">&lt;p&gt;Davosmith: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:checklist_module_overview.png|thumb|Checklist Module]]The &#039;&#039;&#039;Checklist Module&#039;&#039;&#039; is a Moodle plugin for Moodle 1.9 that allows a teacher to create a checklist for their students to work through.  It is contributed by [http://moodle.org/user/view.php?id=201866&amp;amp;course=1 David Smith].&lt;br /&gt;
The students should tick off each item on the list, as they complete it and the resulting progress of the class can be monitored by the teacher. The student is also rewarded with a progress bar that shows how far through the checklist they have managed to get.&lt;br /&gt;
&lt;br /&gt;
Other features include:&lt;br /&gt;
* Indenting items, to show a hierarchy of importance&lt;br /&gt;
* Optional items (which can be hidden in the class progress report and contribute to a secondary &#039;all items&#039; progress bar)&lt;br /&gt;
* Student checklist items (so that students can add their own items to keep track of)&lt;br /&gt;
* Dates on checklist items&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
Unzip the contents of file you downloaded to a temporary folder.&lt;br /&gt;
Upload the files to the your moodle server, placing them in the &#039;moodle/mod/checklist&#039; folder.&lt;br /&gt;
Log in as administrator and click on &#039;Notifications&#039; in the admin area to update the Moodle database, ready to use this plugin.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
Click on &#039;Add an activity&#039; and choose &#039;Checklist&#039;.&lt;br /&gt;
Enter all the usual information.&lt;br /&gt;
You can optionally allow students to add their own, private items to the list (this will not affect the overall progress, but may help students to keep note of anything extra they need to do).&lt;br /&gt;
&lt;br /&gt;
You can then add items to the list.&lt;br /&gt;
Click on the &#039;star&#039; to toggle an item between required &amp;amp; optional (I intend this to interact with the Moodle 2.0 &#039;completion&#039; tracking at some point).&lt;br /&gt;
Click on the &#039;edit&#039; icon to change the text.&lt;br /&gt;
Click on the &#039;indent&#039; icons to change the level of indent.&lt;br /&gt;
Click on the &#039;move&#039; icons to move the item up/down one place.&lt;br /&gt;
Click on the &#039;delete&#039; icon to delete the item.&lt;br /&gt;
Click on the &#039;+&#039; icon to insert a new item immediately below the current item.&lt;br /&gt;
&lt;br /&gt;
Click on &#039;Preview&#039;, to get some idea of how this will look to students.&lt;br /&gt;
Click on &#039;Results&#039;, to see a chart of how the students are currently progressing through the checklist.&lt;br /&gt;
&lt;br /&gt;
Students can now log in, click on the checklist, tick any items they have completed and then click &#039;Save&#039; to update the database.&lt;br /&gt;
If you have allowed them to do so, they can click on &#039;Start Adding Items&#039;, then click on the green &#039;+&#039; icons to insert their own, private items to the list.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [http://moodle.org/mod/data/view.php?d=13&amp;amp;rid=3582 Checklist module] - Moodle plugins database entry&lt;br /&gt;
* [http://download.moodle.org/download.php/plugins/mod/checklist.zip Download] the latest version&lt;br /&gt;
* [http://tracker.moodle.org/browse/CONTRIB/component/10608 Moodle tracker] to report a bug, or suggest an improvement&lt;br /&gt;
[[Category:Contributed_code]]&lt;/div&gt;</summary>
		<author><name>Davosmith</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/21/en/index.php?title=Checklist_module&amp;diff=69139</id>
		<title>Checklist module</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/21/en/index.php?title=Checklist_module&amp;diff=69139"/>
		<updated>2010-02-27T22:29:26Z</updated>

		<summary type="html">&lt;p&gt;Davosmith: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:checklist_module_overview.png|thumb|Checklist Module]]The &#039;&#039;&#039;Checklist Module&#039;&#039;&#039; is a Moodle plugin for Moodle 1.9 that allows a teacher to create a checklist for their students to work through.  It is contributed by [http://moodle.org/user/view.php?id=201866&amp;amp;course=1 David Smith].&lt;br /&gt;
The students should tick off each item on the list, as they complete it and the resulting progress of the class can be monitored by the teacher. The student is also rewarded with a progress bar that shows how far through the checklist they have managed to get.&lt;br /&gt;
&lt;br /&gt;
Other features include:&lt;br /&gt;
* Indenting items, to show a hierarchy of importance&lt;br /&gt;
* Optional items (which can be hidden in the class progress report and contribute to a secondary &#039;all items&#039; progress bar)&lt;br /&gt;
* Student checklist items (so that students can add their own items to keep track of)&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
Unzip the contents of file you downloaded to a temporary folder.&lt;br /&gt;
Upload the files to the your moodle server, placing them in the &#039;moodle/mod/checklist&#039; folder.&lt;br /&gt;
Log in as administrator and click on &#039;Notifications&#039; in the admin area to update the Moodle database, ready to use this plugin.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
Click on &#039;Add an activity&#039; and choose &#039;Checklist&#039;.&lt;br /&gt;
Enter all the usual information.&lt;br /&gt;
You can optionally allow students to add their own, private items to the list (this will not affect the overall progress, but may help students to keep note of anything extra they need to do).&lt;br /&gt;
&lt;br /&gt;
You can then add items to the list.&lt;br /&gt;
Click on the &#039;star&#039; to toggle an item between required &amp;amp; optional (I intend this to interact with the Moodle 2.0 &#039;completion&#039; tracking at some point).&lt;br /&gt;
Click on the &#039;edit&#039; icon to change the text.&lt;br /&gt;
Click on the &#039;indent&#039; icons to change the level of indent.&lt;br /&gt;
Click on the &#039;move&#039; icons to move the item up/down one place.&lt;br /&gt;
Click on the &#039;delete&#039; icon to delete the item.&lt;br /&gt;
Click on the &#039;+&#039; icon to insert a new item immediately below the current item.&lt;br /&gt;
&lt;br /&gt;
Click on &#039;Preview&#039;, to get some idea of how this will look to students.&lt;br /&gt;
Click on &#039;Results&#039;, to see a chart of how the students are currently progressing through the checklist.&lt;br /&gt;
&lt;br /&gt;
Students can now log in, click on the checklist, tick any items they have completed and then click &#039;Save&#039; to update the database.&lt;br /&gt;
If you have allowed them to do so, they can click on &#039;Start Adding Items&#039;, then click on the green &#039;+&#039; icons to insert their own, private items to the list.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [http://moodle.org/mod/data/view.php?d=13&amp;amp;rid=3582 Checklist module] - Moodle plugins database entry&lt;br /&gt;
* [http://download.moodle.org/download.php/plugins/mod/checklist.zip Download] the latest version&lt;br /&gt;
* [http://tracker.moodle.org/browse/CONTRIB/component/10608 Moodle tracker] to report a bug, or suggest an improvement&lt;br /&gt;
[[Category:Contributed_code]]&lt;/div&gt;</summary>
		<author><name>Davosmith</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/21/en/index.php?title=Checklist_module&amp;diff=69138</id>
		<title>Checklist module</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/21/en/index.php?title=Checklist_module&amp;diff=69138"/>
		<updated>2010-02-27T22:24:43Z</updated>

		<summary type="html">&lt;p&gt;Davosmith: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:checklist_module_overview.png|thumb|Checklist Module]]The &#039;&#039;&#039;Checklist Module&#039;&#039;&#039; is a Moodle plugin for Moodle 1.9 that allows a teacher to create a checklist for their students to work through.  It is contributed by [http://moodle.org/user/view.php?id=201866&amp;amp;course=1 David Smith].&lt;br /&gt;
The students should tick off each item on the list, as they complete it and the resulting progress of the class can be monitored by the teacher. The student is also rewarded with a progress bar that shows how far through the checklist they have managed to get.&lt;br /&gt;
&lt;br /&gt;
Other features include:&lt;br /&gt;
* Indenting items, to show a hierarchy of importance&lt;br /&gt;
* Optional items (which can be hidden in the class progress report and contribute to a secondary &#039;all items&#039; progress bar)&lt;br /&gt;
* Student checklist items (so that students can add their own items to keep track of)&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
Unzip the contents of file you downloaded to a temporary folder.&lt;br /&gt;
Upload the files to the your moodle server, placing them in the &#039;moodle/mod/checklist&#039; folder.&lt;br /&gt;
Log in as administrator and click on &#039;Notifications&#039; in the admin area to update the Moodle database, ready to use this plugin.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
Click on &#039;Add an activity&#039; and choose &#039;Checklist&#039;.&lt;br /&gt;
Enter all the usual information.&lt;br /&gt;
You can optionally allow students to add their own, private items to the list (this will not affect the overall progress, but may help students to keep note of anything extra they need to do).&lt;br /&gt;
&lt;br /&gt;
You can then add items to the list.&lt;br /&gt;
Click on the &#039;star&#039; to toggle an item between required &amp;amp; optional (I intend this to interact with the Moodle 2.0 &#039;completion&#039; tracking at some point).&lt;br /&gt;
Click on the &#039;edit&#039; icon to change the text.&lt;br /&gt;
Click on the &#039;indent&#039; icons to change the level of indent.&lt;br /&gt;
Click on the &#039;move&#039; icons to move the item up/down one place.&lt;br /&gt;
Click on the &#039;delete&#039; icon to delete the item.&lt;br /&gt;
Click on the &#039;+&#039; icon to insert a new item immediately below the current item.&lt;br /&gt;
&lt;br /&gt;
Click on &#039;Preview&#039;, to get some idea of how this will look to students.&lt;br /&gt;
Click on &#039;Results&#039;, to see a chart of how the students are currently progressing through the checklist.&lt;br /&gt;
&lt;br /&gt;
Students can now log in, click on the checklist, tick any items they have completed and then click &#039;Save&#039; to update the database.&lt;br /&gt;
If you have allowed them to do so, they can click on &#039;Start Adding Items&#039;, then click on the green &#039;+&#039; icons to insert their own, private items to the list.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [http://moodle.org/mod/data/view.php?d=13&amp;amp;rid=3582 Checklist module] - Moodle plugins database entry&lt;br /&gt;
* [http://download.moodle.org/download.php/plugins/mod/checklist.zip Download] the latest version&lt;br /&gt;
* [http://tracker.moodle.org/browse/CONTRIB/component/10608 Moodle tracker] to report a bug, or suggest an improvement&lt;/div&gt;</summary>
		<author><name>Davosmith</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/21/en/index.php?title=File:checklist_module_overview.png&amp;diff=69137</id>
		<title>File:checklist module overview.png</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/21/en/index.php?title=File:checklist_module_overview.png&amp;diff=69137"/>
		<updated>2010-02-27T22:21:27Z</updated>

		<summary type="html">&lt;p&gt;Davosmith: An image summarising the main elements of the checklist module&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;An image summarising the main elements of the checklist module&lt;/div&gt;</summary>
		<author><name>Davosmith</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/21/en/index.php?title=Checklist_module&amp;diff=69136</id>
		<title>Checklist module</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/21/en/index.php?title=Checklist_module&amp;diff=69136"/>
		<updated>2010-02-27T22:14:39Z</updated>

		<summary type="html">&lt;p&gt;Davosmith: New page: The &amp;#039;&amp;#039;&amp;#039;Checklist Module&amp;#039;&amp;#039;&amp;#039; is a Moodle plugin for Moodle 1.9 that allows a teacher to create a checklist for their students to work through.  It is contributed by [http://moodle.org/user/v...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;Checklist Module&#039;&#039;&#039; is a Moodle plugin for Moodle 1.9 that allows a teacher to create a checklist for their students to work through.  It is contributed by [http://moodle.org/user/view.php?id=201866&amp;amp;course=1 David Smith].&lt;br /&gt;
The students should tick off each item on the list, as they complete it and the resulting progress of the class can be monitored by the teacher. The student is also rewarded with a progress bar that shows how far through the checklist they have managed to get.&lt;br /&gt;
&lt;br /&gt;
Other features include:&lt;br /&gt;
* Indenting items, to show a hierarchy of importance&lt;br /&gt;
* Optional items (which can be hidden in the class progress report and contribute to a secondary &#039;all items&#039; progress bar)&lt;br /&gt;
* Student checklist items (so that students can add their own items to keep track of)&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
Unzip the contents of file you downloaded to a temporary folder.&lt;br /&gt;
Upload the files to the your moodle server, placing them in the &#039;moodle/mod/checklist&#039; folder.&lt;br /&gt;
Log in as administrator and click on &#039;Notifications&#039; in the admin area to update the Moodle database, ready to use this plugin.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
Click on &#039;Add an activity&#039; and choose &#039;Checklist&#039;.&lt;br /&gt;
Enter all the usual information.&lt;br /&gt;
You can optionally allow students to add their own, private items to the list (this will not affect the overall progress, but may help students to keep note of anything extra they need to do).&lt;br /&gt;
&lt;br /&gt;
You can then add items to the list.&lt;br /&gt;
Click on the &#039;star&#039; to toggle an item between required &amp;amp; optional (I intend this to interact with the Moodle 2.0 &#039;completion&#039; tracking at some point).&lt;br /&gt;
Click on the &#039;edit&#039; icon to change the text.&lt;br /&gt;
Click on the &#039;indent&#039; icons to change the level of indent.&lt;br /&gt;
Click on the &#039;move&#039; icons to move the item up/down one place.&lt;br /&gt;
Click on the &#039;delete&#039; icon to delete the item.&lt;br /&gt;
Click on the &#039;+&#039; icon to insert a new item immediately below the current item.&lt;br /&gt;
&lt;br /&gt;
Click on &#039;Preview&#039;, to get some idea of how this will look to students.&lt;br /&gt;
Click on &#039;Results&#039;, to see a chart of how the students are currently progressing through the checklist.&lt;br /&gt;
&lt;br /&gt;
Students can now log in, click on the checklist, tick any items they have completed and then click &#039;Save&#039; to update the database.&lt;br /&gt;
If you have allowed them to do so, they can click on &#039;Start Adding Items&#039;, then click on the green &#039;+&#039; icons to insert their own, private items to the list.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [http://moodle.org/mod/data/view.php?d=13&amp;amp;rid=3582 Checklist module] - Moodle plugins database entry&lt;br /&gt;
* [http://download.moodle.org/download.php/plugins/mod/checklist.zip Download] the latest version&lt;br /&gt;
* [http://tracker.moodle.org/browse/CONTRIB/component/10608 Moodle tracker] to report a bug, or suggest an improvement&lt;/div&gt;</summary>
		<author><name>Davosmith</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/21/en/index.php?title=Development_talk:Conditional_activities&amp;diff=65347</id>
		<title>Development talk:Conditional activities</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/21/en/index.php?title=Development_talk:Conditional_activities&amp;diff=65347"/>
		<updated>2009-11-18T08:29:40Z</updated>

		<summary type="html">&lt;p&gt;Davosmith: forgot to sign my update yesterday&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Discussion==&lt;br /&gt;
&lt;br /&gt;
Different attempts at conditional activities in the Using Moodle Conditional Activities forum; generating a course page for each user requires lots of processing (Martin).&lt;br /&gt;
&lt;br /&gt;
Possible solution (David Delgado): add a conditional activities on/off selection for each course, being defaulted to off. Normal behaviour would be just the same as now, and conditional activities extra processing power would be used just for the courses that would need them. So, we would get the best of both sytems: fast default behaviour (no conditional activities used) and powerful adaptive e-learning posibilities (conditional activities used). Could it be a good solution? Hope so. :-)&lt;br /&gt;
&lt;br /&gt;
Wouldn&#039;t it be better to just have a &amp;quot;has conditional activities&amp;quot; flag that was automatically set and unset when a conditional activity was added or removed? (removal would require checking to see if there were any remaining conditional activities, of course) That&#039;d avoid cluttering up the Settings interface with an extra item. :-) (Tony Hursh)&lt;br /&gt;
&lt;br /&gt;
==Adaptive learning questions== &lt;br /&gt;
Current (through 1.6)non standard conditional activity modules use a minimum score. &lt;br /&gt;
&lt;br /&gt;
#Are we going to allow the teacher a choice to make the cut off a greater than or a less than condition?  &lt;br /&gt;
#Are we thinking of expanding the condition to defining a range of scores, greater than X and less than Y?   --[[User:chris collman|chris collman]] 14:37, 28 December 2006 (CST)&lt;br /&gt;
#Are there plans to create automatic conditionally filtered courses, i.e. The system preventing the enrolment of a user that hasn&#039;t passed a course that is requisite to another course?&lt;br /&gt;
&lt;br /&gt;
==Some potential ideas/thoughts coming with conditionals==&lt;br /&gt;
&lt;br /&gt;
# Conditional courses. It&#039;s a natural step if we are implementing conditional activities.&lt;br /&gt;
# Make conditions pluggable.&lt;br /&gt;
# Annotate the date when an activity/course has been completed (with teacher ref if manual)&lt;br /&gt;
# Can completed status for one user be reversed?&lt;br /&gt;
# Is the duality of having conditions BOTH for activity completion and activity availability good? I always thought about that being more chained, i.e one activity will be available when:&lt;br /&gt;
## Some &amp;quot;core supported&amp;quot; (i.e. for all modules) conditions (timestart - timeend, (grade - number or percentaje ? have these sense if the activity isn&#039;t available yet ??- ...) are fulfilled. &lt;br /&gt;
## Some activities are completed.&amp;lt;br /&amp;gt;(but never to specify &amp;quot;foreign&amp;quot; conditions in the &amp;quot;available when&amp;quot; part. That way calculation will be really easier, IMO. And being more &amp;quot;chained&amp;quot; means itineraries can be easily build over conditional activities and courses).&amp;lt;br /&amp;gt;Summarizing, what I&#039;m trying to say is that I see correct to allow all sort of conditions (hopefully plugable as said in 2) checked in order to consider one activity completed or not completed. Point. And that info (one user has completed one activity) can be used to determine the availability of other activities. But the availability itself won&#039;t be able to check pluggable conditions directly, only own core ones (timestart - timeend basically) + completed results from other activities (with boolean possibilities).&lt;br /&gt;
# Agree with Sam about completed stuff, only for informational purposes for users having some capability (originally &amp;quot;teachers&amp;quot; I guess).&lt;br /&gt;
# Switch at system/course levels necessary, like other Moodle stuff.&lt;br /&gt;
# Booleans. Are we always talking about AND conditions or do we need to add OR support. And perhaps NOT too.&lt;br /&gt;
# I can see the &amp;quot;availability&amp;quot; working at least in 2 different schemas. 100% hiding the target activity or showing it dimmed (with explanation). &lt;br /&gt;
&lt;br /&gt;
[[User:Eloy Lafuente (stronk7)|Eloy Lafuente (stronk7)]] 05:06, 17  April 2008 (CDT)&lt;br /&gt;
&lt;br /&gt;
::Amen to Eloy&#039;s&lt;br /&gt;
#Definitely need to be thinking about conditional courses.  &lt;br /&gt;
#Boolean  at least to the extent that a teacher can create a matrix (go ahead an limit it to x variables) for scores. Can&#039;t see time ranges but that is me.  Student A has one path open, Student B another and so forth. &lt;br /&gt;
#Hiding things if a student does not meet condition is nice&lt;br /&gt;
&lt;br /&gt;
--[[User:chris collman|chris collman]] 10:39, 8 November 2008 (CST)&lt;br /&gt;
&lt;br /&gt;
==Time min-max is not part of 2.0 CA==&lt;br /&gt;
Interesting, I now have a use for a min time spent condition :)   I notice that Lesson has a dependency for time spent in the previous lesson.   It also, like Quiz, has countdown timer setting, where activities are cut off or at least not scored once 00:00 is reached.   MDL-18459 tries to point this out.  &lt;br /&gt;
&lt;br /&gt;
Realize that Moodle can not be all things to all situations.  Plus crawl, walk, run is absolutely the best way to go.  I view conditions like permissions, a potential nightmare. Best to all    --[[User:chris collman|chris collman]] 08:51, 6 March 2009 (CST)&lt;br /&gt;
&lt;br /&gt;
== Dates ==&lt;br /&gt;
&lt;br /&gt;
Suggested by James Strong&lt;br /&gt;
*Date available from&lt;br /&gt;
*Date available to&lt;br /&gt;
&lt;br /&gt;
What happens to those activities that already have their own date/time release mechanism - eg quiz, assignment? Is this just duplicating their functionality?&lt;br /&gt;
&lt;br /&gt;
--[[User:Shane Elliott|Shane Elliott]] 01:33, 18  April 2008 (CDT)&lt;br /&gt;
&lt;br /&gt;
==Why two parts?==&lt;br /&gt;
&lt;br /&gt;
The way things read from an interface point of view is that there are two parts: Tracking and Conditional. Basically they are one.  The tracking is the site administrators portion and the conditional is the teacher/student interface.   Without tracking enabled in the context, the teacher/student interface will not be shown?  Is that about it?--[[User:chris collman|chris collman]] 11:21, 19 June 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
* This is not the case (er, I think). The interface is explained better on the non-development page [[Conditional activities]]. There are indeed two parts.&lt;br /&gt;
*# The first part is &#039;completion tracking&#039; (aka &#039;progress&#039;). Per-activity settings are labelled &#039;Activity completion&#039;. This is used to determine, per-student, whether activities are complete (either by automatic setting based on the student&#039;s actions, such as posting N messages to a forum, or else manually by the students ticking boxes). It provides that progress information to teachers via a progress report.&lt;br /&gt;
*# The second part is &#039;conditional availability&#039;. Per-activity settings are labelled &#039;Restrict availability&#039;. This is used to hide or show activities. Activities can be hidden/shown based on several factors - currently date, grades, and also the completion/progress information if enabled.&lt;br /&gt;
&lt;br /&gt;
So if you just want to hide things based on date, or based on grades, then you don&#039;t need to have the extra completion-tracking interface turned on. From the conditional point of view, completion tracking just gives you something else to be conditional on! &lt;br /&gt;
&lt;br /&gt;
Or to put it another way:&lt;br /&gt;
&lt;br /&gt;
# Completion tracking: &#039;Is this activity considered to be complete?&#039;&lt;br /&gt;
# Conditional availability: &#039;Should this activity be visible?&#039;&lt;br /&gt;
&lt;br /&gt;
Hopefully this is fairly easy to understand if you enable the system and play with it a bit? I don&#039;t know, it may be a little complicated...&lt;br /&gt;
&lt;br /&gt;
[[User:sam marshall|sam marshall]] 12:17, 19 June 2009 (UTC)&lt;br /&gt;
:Thanks Sam.  I will definitely be playing with it to get my bald head around it. It is just different. I don&#039;t know how much more complicated it can be than all the different flavors of activity locking I have seen since 1.5, where some work, some work sort of and others have been left in the wantabe dustbin of time :)  And understand I mean absolutely no disrespect to anyone who has contributed to this concept, when I say I am so happy it will become part of the standard Moodle. --[[User:chris collman|chris collman]] 12:40, 19 June 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Checklists ==&lt;br /&gt;
&lt;br /&gt;
I am trying to understand if this will allow you to create checklists of sub-tasks for students to complete, which both they and the teacher can use to monitor their progress.&lt;br /&gt;
&lt;br /&gt;
To give a specific example, I teach a BTEC IT course that has a number of assignments. Each assignment has a number of tasks in it (and those tasks can further break down into sub-tasks). I am currently using a multiple choice quiz to give the students a checklist to work through as they complete each assignment, to make sure they have finished everything before they submit their work. To be clear - each task/sub-task is not a separate moodle activity, the students would be expected to tick off every item of the checklist, before submitting a single piece of work.&lt;br /&gt;
&lt;br /&gt;
Is the above scenario possible? Or is the manual checking-off of an item only available for a whole moodle activity?&lt;br /&gt;
 &lt;br /&gt;
--[[User:David Smith 2|David Smith 2]] 08:29, 18 November 2009 (UTC)&lt;/div&gt;</summary>
		<author><name>Davosmith</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/21/en/index.php?title=Development_talk:Conditional_activities&amp;diff=65318</id>
		<title>Development talk:Conditional activities</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/21/en/index.php?title=Development_talk:Conditional_activities&amp;diff=65318"/>
		<updated>2009-11-17T13:58:55Z</updated>

		<summary type="html">&lt;p&gt;Davosmith: /* Checklists */ new section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Discussion==&lt;br /&gt;
&lt;br /&gt;
Different attempts at conditional activities in the Using Moodle Conditional Activities forum; generating a course page for each user requires lots of processing (Martin).&lt;br /&gt;
&lt;br /&gt;
Possible solution (David Delgado): add a conditional activities on/off selection for each course, being defaulted to off. Normal behaviour would be just the same as now, and conditional activities extra processing power would be used just for the courses that would need them. So, we would get the best of both sytems: fast default behaviour (no conditional activities used) and powerful adaptive e-learning posibilities (conditional activities used). Could it be a good solution? Hope so. :-)&lt;br /&gt;
&lt;br /&gt;
Wouldn&#039;t it be better to just have a &amp;quot;has conditional activities&amp;quot; flag that was automatically set and unset when a conditional activity was added or removed? (removal would require checking to see if there were any remaining conditional activities, of course) That&#039;d avoid cluttering up the Settings interface with an extra item. :-) (Tony Hursh)&lt;br /&gt;
&lt;br /&gt;
==Adaptive learning questions== &lt;br /&gt;
Current (through 1.6)non standard conditional activity modules use a minimum score. &lt;br /&gt;
&lt;br /&gt;
#Are we going to allow the teacher a choice to make the cut off a greater than or a less than condition?  &lt;br /&gt;
#Are we thinking of expanding the condition to defining a range of scores, greater than X and less than Y?   --[[User:chris collman|chris collman]] 14:37, 28 December 2006 (CST)&lt;br /&gt;
#Are there plans to create automatic conditionally filtered courses, i.e. The system preventing the enrolment of a user that hasn&#039;t passed a course that is requisite to another course?&lt;br /&gt;
&lt;br /&gt;
==Some potential ideas/thoughts coming with conditionals==&lt;br /&gt;
&lt;br /&gt;
# Conditional courses. It&#039;s a natural step if we are implementing conditional activities.&lt;br /&gt;
# Make conditions pluggable.&lt;br /&gt;
# Annotate the date when an activity/course has been completed (with teacher ref if manual)&lt;br /&gt;
# Can completed status for one user be reversed?&lt;br /&gt;
# Is the duality of having conditions BOTH for activity completion and activity availability good? I always thought about that being more chained, i.e one activity will be available when:&lt;br /&gt;
## Some &amp;quot;core supported&amp;quot; (i.e. for all modules) conditions (timestart - timeend, (grade - number or percentaje ? have these sense if the activity isn&#039;t available yet ??- ...) are fulfilled. &lt;br /&gt;
## Some activities are completed.&amp;lt;br /&amp;gt;(but never to specify &amp;quot;foreign&amp;quot; conditions in the &amp;quot;available when&amp;quot; part. That way calculation will be really easier, IMO. And being more &amp;quot;chained&amp;quot; means itineraries can be easily build over conditional activities and courses).&amp;lt;br /&amp;gt;Summarizing, what I&#039;m trying to say is that I see correct to allow all sort of conditions (hopefully plugable as said in 2) checked in order to consider one activity completed or not completed. Point. And that info (one user has completed one activity) can be used to determine the availability of other activities. But the availability itself won&#039;t be able to check pluggable conditions directly, only own core ones (timestart - timeend basically) + completed results from other activities (with boolean possibilities).&lt;br /&gt;
# Agree with Sam about completed stuff, only for informational purposes for users having some capability (originally &amp;quot;teachers&amp;quot; I guess).&lt;br /&gt;
# Switch at system/course levels necessary, like other Moodle stuff.&lt;br /&gt;
# Booleans. Are we always talking about AND conditions or do we need to add OR support. And perhaps NOT too.&lt;br /&gt;
# I can see the &amp;quot;availability&amp;quot; working at least in 2 different schemas. 100% hiding the target activity or showing it dimmed (with explanation). &lt;br /&gt;
&lt;br /&gt;
[[User:Eloy Lafuente (stronk7)|Eloy Lafuente (stronk7)]] 05:06, 17  April 2008 (CDT)&lt;br /&gt;
&lt;br /&gt;
::Amen to Eloy&#039;s&lt;br /&gt;
#Definitely need to be thinking about conditional courses.  &lt;br /&gt;
#Boolean  at least to the extent that a teacher can create a matrix (go ahead an limit it to x variables) for scores. Can&#039;t see time ranges but that is me.  Student A has one path open, Student B another and so forth. &lt;br /&gt;
#Hiding things if a student does not meet condition is nice&lt;br /&gt;
&lt;br /&gt;
--[[User:chris collman|chris collman]] 10:39, 8 November 2008 (CST)&lt;br /&gt;
&lt;br /&gt;
==Time min-max is not part of 2.0 CA==&lt;br /&gt;
Interesting, I now have a use for a min time spent condition :)   I notice that Lesson has a dependency for time spent in the previous lesson.   It also, like Quiz, has countdown timer setting, where activities are cut off or at least not scored once 00:00 is reached.   MDL-18459 tries to point this out.  &lt;br /&gt;
&lt;br /&gt;
Realize that Moodle can not be all things to all situations.  Plus crawl, walk, run is absolutely the best way to go.  I view conditions like permissions, a potential nightmare. Best to all    --[[User:chris collman|chris collman]] 08:51, 6 March 2009 (CST)&lt;br /&gt;
&lt;br /&gt;
== Dates ==&lt;br /&gt;
&lt;br /&gt;
Suggested by James Strong&lt;br /&gt;
*Date available from&lt;br /&gt;
*Date available to&lt;br /&gt;
&lt;br /&gt;
What happens to those activities that already have their own date/time release mechanism - eg quiz, assignment? Is this just duplicating their functionality?&lt;br /&gt;
&lt;br /&gt;
--[[User:Shane Elliott|Shane Elliott]] 01:33, 18  April 2008 (CDT)&lt;br /&gt;
&lt;br /&gt;
==Why two parts?==&lt;br /&gt;
&lt;br /&gt;
The way things read from an interface point of view is that there are two parts: Tracking and Conditional. Basically they are one.  The tracking is the site administrators portion and the conditional is the teacher/student interface.   Without tracking enabled in the context, the teacher/student interface will not be shown?  Is that about it?--[[User:chris collman|chris collman]] 11:21, 19 June 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
* This is not the case (er, I think). The interface is explained better on the non-development page [[Conditional activities]]. There are indeed two parts.&lt;br /&gt;
*# The first part is &#039;completion tracking&#039; (aka &#039;progress&#039;). Per-activity settings are labelled &#039;Activity completion&#039;. This is used to determine, per-student, whether activities are complete (either by automatic setting based on the student&#039;s actions, such as posting N messages to a forum, or else manually by the students ticking boxes). It provides that progress information to teachers via a progress report.&lt;br /&gt;
*# The second part is &#039;conditional availability&#039;. Per-activity settings are labelled &#039;Restrict availability&#039;. This is used to hide or show activities. Activities can be hidden/shown based on several factors - currently date, grades, and also the completion/progress information if enabled.&lt;br /&gt;
&lt;br /&gt;
So if you just want to hide things based on date, or based on grades, then you don&#039;t need to have the extra completion-tracking interface turned on. From the conditional point of view, completion tracking just gives you something else to be conditional on! &lt;br /&gt;
&lt;br /&gt;
Or to put it another way:&lt;br /&gt;
&lt;br /&gt;
# Completion tracking: &#039;Is this activity considered to be complete?&#039;&lt;br /&gt;
# Conditional availability: &#039;Should this activity be visible?&#039;&lt;br /&gt;
&lt;br /&gt;
Hopefully this is fairly easy to understand if you enable the system and play with it a bit? I don&#039;t know, it may be a little complicated...&lt;br /&gt;
&lt;br /&gt;
[[User:sam marshall|sam marshall]] 12:17, 19 June 2009 (UTC)&lt;br /&gt;
:Thanks Sam.  I will definitely be playing with it to get my bald head around it. It is just different. I don&#039;t know how much more complicated it can be than all the different flavors of activity locking I have seen since 1.5, where some work, some work sort of and others have been left in the wantabe dustbin of time :)  And understand I mean absolutely no disrespect to anyone who has contributed to this concept, when I say I am so happy it will become part of the standard Moodle. --[[User:chris collman|chris collman]] 12:40, 19 June 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Checklists ==&lt;br /&gt;
&lt;br /&gt;
I am trying to understand if this will allow you to create checklists of sub-tasks for students to complete, which both they and the teacher can use to monitor their progress.&lt;br /&gt;
&lt;br /&gt;
To give a specific example, I teach a BTEC IT course that has a number of assignments. Each assignment has a number of tasks in it (and those tasks can further break down into sub-tasks). I am currently using a multiple choice quiz to give the students a checklist to work through as they complete each assignment, to make sure they have finished everything before they submit their work. To be clear - each task/sub-task is not a separate moodle activity, the students would be expected to tick off every item of the checklist, before submitting a single piece of work.&lt;br /&gt;
&lt;br /&gt;
Is the above scenario possible? Or is the manual checking-off of an item only available for a whole moodle activity?&lt;/div&gt;</summary>
		<author><name>Davosmith</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/21/en/index.php?title=Development:Assignment_types&amp;diff=59157</id>
		<title>Development:Assignment types</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/21/en/index.php?title=Development:Assignment_types&amp;diff=59157"/>
		<updated>2009-06-30T18:23:06Z</updated>

		<summary type="html">&lt;p&gt;Davosmith: Removed extra semi-colon in code sample&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This guide should get you started with creating a new Assignment Type plugin. There may be several mistakes or omissions as it is based on my own experience of writing an Assignment Type plugin. Everything in here should work for Moodle 1.8 and 1.9. It may also work with 1.7, but is untested. It is similarly not tested (yet) with Moodle 2.0.&lt;br /&gt;
&lt;br /&gt;
Make sure you are familiar with all the Moodle [[Development:Coding|Coding Guidelines]] before you get started.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
Throughout this guide, references to &#039;&#039;PLUGINNAME&#039;&#039; should be replaced with the (lowercase) name you have chosen for your assignment type. &lt;br /&gt;
&lt;br /&gt;
All of the files for your assignment plugin will need to go in a folder called:&lt;br /&gt;
&amp;lt;moodleroot&amp;gt;/mod/assignment/type/PLUGINNAME&lt;br /&gt;
&lt;br /&gt;
It is a very good idea to read through the code for the built-in assignment types (all stored in &amp;lt;moodleroot&amp;gt;/mod/assignment/type/) to see how they work, before getting stuck in to writing your own.&lt;br /&gt;
&lt;br /&gt;
==The main code==&lt;br /&gt;
&lt;br /&gt;
You need to create a file, inside your plugin&#039;s folder, called &#039;assignment.class.php&#039;. This will contain the main code for your plugin.&lt;br /&gt;
The basic layout of this file should look like this:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
require_once($CFG-&amp;gt;libdir.&#039;/formslib.php&#039;);&lt;br /&gt;
&lt;br /&gt;
class assignment_PLUGINNAME extends assignment_base {&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Read through the code in: &amp;lt;moodleroot&amp;gt;/mod/assignment/lib.php for a list of the functions that are available to override and look at examples in the other assignment types to see how to do this.&lt;br /&gt;
&lt;br /&gt;
===Editing the settings form===&lt;br /&gt;
&lt;br /&gt;
You may find that to add extra items to the settings form for your plugin, that you need to find out the courseid or the assignmentid of the assignment you are editing. This information is not provided directly to the &#039;setup_elements&#039; function that is used for this purpose. However, the following code should retrieve that information for you:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$update = optional_param(&#039;update&#039;, 0, PARAM_INT);&lt;br /&gt;
$add = optional_param(&#039;add&#039;, 0, PARAM_ALPHA);&lt;br /&gt;
if (!empty($update)) {&lt;br /&gt;
    if (! $cm = get_record(&amp;quot;course_modules&amp;quot;, &amp;quot;id&amp;quot;, $update)) {&lt;br /&gt;
        error(&amp;quot;This course module doesn&#039;t exist&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    $courseid = $cm-&amp;gt;course;&lt;br /&gt;
    $assignmentid = $cm-&amp;gt;instance;&lt;br /&gt;
} elseif (!empty($add)) {&lt;br /&gt;
    $courseid = required_param(&#039;course&#039;, PARAM_INT);&lt;br /&gt;
    $assignmentid = null;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Updating the database==&lt;br /&gt;
&lt;br /&gt;
If your plugin needs to add some new tables to the database (or extend one of the existing tables, although this would generally be a very bad idea!), follow these steps:&lt;br /&gt;
&lt;br /&gt;
1. Create a file called &#039;version.php&#039; in: &amp;lt;moodleroot&amp;gt;/mod/assignment/type/PLUGINNAME&lt;br /&gt;
&lt;br /&gt;
This file should contain the following:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
//These 2 lines are needed for Moodle 1.9 and above&lt;br /&gt;
$plugin-&amp;gt;version = 2009040900; // YYYYMMDDnn for when the plugin was created&lt;br /&gt;
$plugin-&amp;gt;requires = 2007020200; // Look in &amp;lt;moodleroot&amp;gt;/mod/assignment/version.php for the minimum version allowed here&lt;br /&gt;
&lt;br /&gt;
// These 2 lines are needed for Moodle 1.8 and below&lt;br /&gt;
$submodule-&amp;gt;version  = $plugin-&amp;gt;version;&lt;br /&gt;
$submodule-&amp;gt;requires = $plugin-&amp;gt;requires;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Create a folder called &amp;lt;moodleroot&amp;gt;/mod/assignment/type/PLUGINNANE/db&lt;br /&gt;
&lt;br /&gt;
3. If you are using Moodle 1.8 (or below), create a file in this folder called &#039;mysql.sql&#039;, which should contain the SQL instructions for creating your database (these can be exported from phpmyadmin, if you want to simplify this step).&lt;br /&gt;
If you are using Moodle 1.9 (or above), create a file in this folder called &#039;install.xml&#039; see [[XMLDB_editor]] for extensive help with this - but note that there does not seem to be any support for directly creating the &#039;install.xml&#039; file directly in an assignment type folder, so you will have to create it in a different folder and then copy it across manually.&lt;br /&gt;
&lt;br /&gt;
4. If you later need to upgrade your database tables (due to a newly released feature in later versions of your plugin), you need to create the following files:&lt;br /&gt;
* For Moodle 1.8 (or below), &#039;mysql.php&#039;, containing the function &#039;assignment_PLUGINNAME_upgrade($oldversion)&#039;&lt;br /&gt;
* For Moodle 1.9 (or above), &#039;upgrade.php&#039;, containing the function &#039;xmldb_assignment_type_PLUGINNAME_upgrade($oldversion=0)&#039;.&lt;br /&gt;
&lt;br /&gt;
The contents of these two functions can be identical to each other. See [[Development:Installing_and_upgrading_plugin_database_tables]] for more details about how to fill these in.&lt;br /&gt;
&lt;br /&gt;
==Language support==&lt;br /&gt;
&lt;br /&gt;
Create a subfolder:&lt;br /&gt;
&amp;lt;moodleroot&amp;gt;/mod/assignment/type/PLUGINNAME/lang/en_utf8/&lt;br /&gt;
&#039;&#039;English is the default language to use if the language selected in Moodle is not provided for, so you should always include that at the very least. You can put text for other languages in a similarly named folder under PLUGINNAME/lang&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In the language subfolder, create a file named assignment_PLUGINNAME.php which should contain all the translatable text from your plugin in the following format:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
$string[&#039;textidentifier&#039;] = &#039;Some text I want to display&#039;;&lt;br /&gt;
$string[&#039;typePLUGINNAME&#039;] = &#039;My new plugin&#039;;&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
The strings can be in any order. Alphabetical order of key is recommended. The &#039;typePLUGINNAME&#039; string &#039;&#039;should&#039;&#039; be used by Moodle anywhere that your plugin is referred to by name (e.g. in the &#039;Add new activity list&#039; or in the &#039;settings&#039; page for your assignment type). &#039;&#039;However&#039;&#039;, due to a bug (MDL-16796) this does not currently work and will display &amp;amp;#91;&amp;amp;#91;typePLUGINNANE]] instead.&lt;br /&gt;
&lt;br /&gt;
To use the text stored in this way, make use of the functions [[Using_variables_in_localization_strings|get_string]](&#039;textidentifier&#039;, &#039;assignment_PLUGINNAME&#039;) and print_string(&#039;textidentifier&#039;, &#039;assignment_PLUGINNAME&#039;). See also point 13 in the [[Development:Coding#General_rules|Coding general rules]].&lt;br /&gt;
&lt;br /&gt;
===Help files===&lt;br /&gt;
&lt;br /&gt;
These should go in a subfolder of the language files:&lt;br /&gt;
&amp;lt;moodleroot&amp;gt;/mod/assignment/type/PLUGINNANE/lang/en_utf8/help/PLUGINNAME&lt;br /&gt;
The files in here should end &#039;.html&#039; and links to them can be created within your plugin by either directly calling &#039;helpbutton&#039; in &#039;weblib.php&#039; or by calling &#039;$mform-&amp;gt;setHelpButton&#039; inside your &#039;setup_elements&#039; code (for adding items to the &#039;settings&#039; page).&lt;br /&gt;
&#039;&#039;Example of calling &#039;helpbutton&#039; directly:&#039;&#039;&lt;br /&gt;
&amp;lt;code php&amp;gt;helpbutton(&#039;helppagename&#039;, get_string(&#039;linktitle&#039;,&#039;assignment_PLUGINNAME&#039;), &#039;assignment_PLUGINNAME&#039;, true, false, &#039;&#039;, true)&amp;lt;/code&amp;gt;&lt;br /&gt;
This will link to the page &#039;helppagename.html&#039;, the title of the link will be the translatable text &#039;linktitle&#039;, the page will be looked for within your plugin&#039;s lang/.../help folder, the link will be a help icon, the title text will not be shown, the page text will not be overridden and the code to display will be returned, rather than printed.&lt;br /&gt;
&#039;&#039;Example of calling $mform-&amp;gt;setHelpButton:&#039;&#039;&lt;br /&gt;
&amp;lt;code php&amp;gt;$mform-&amp;gt;setHelpButton(&#039;nameofelement&#039;, array(&#039;helppagename&#039;, get_string(&#039;linktitle&#039;,&#039;assignment_PLUGINNAME&#039;), &#039;assignment_PLUGINNAME&#039;));&amp;lt;/code&amp;gt;&lt;br /&gt;
This will also create a link to the page &#039;helppagename.html&#039;, the title of the link will be the translatable text &#039;linktitle&#039; and the page will be looked for within your plugin&#039;s lang/.../help folder.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
Discussion in the General Developer forum on [http://moodle.org/mod/forum/discuss.php?d=120860 Adding a new assignment type]. &lt;br /&gt;
&lt;br /&gt;
[[Category:Assignment]]&lt;/div&gt;</summary>
		<author><name>Davosmith</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/21/en/index.php?title=Development:Assignment_types&amp;diff=54872</id>
		<title>Development:Assignment types</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/21/en/index.php?title=Development:Assignment_types&amp;diff=54872"/>
		<updated>2009-04-26T20:48:23Z</updated>

		<summary type="html">&lt;p&gt;Davosmith: Fixed path to help files&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This guide should get you started with creating a new Assignment Type plugin. There may be several mistakes or omissions as it is based on my own experience of writing an Assignment Type plugin. Everything in here should work for Moodle 1.8 and 1.9. It may also work with 1.7, but is untested. It is similarly not tested (yet) with Moodle 2.0.&lt;br /&gt;
&lt;br /&gt;
Make sure you are familiar with all the Moodle [[Development:Coding|Coding Guidelines]] before you get started.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
Throughout this guide, references to &#039;&#039;PLUGINNAME&#039;&#039; should be replaced with the (lowercase) name you have chosen for your assignment type. &lt;br /&gt;
&lt;br /&gt;
All of the files for your assignment plugin will need to go in a folder called:&lt;br /&gt;
&amp;lt;moodleroot&amp;gt;/mod/assignment/type/PLUGINNAME&lt;br /&gt;
&lt;br /&gt;
It is a very good idea to read through the code for the built-in assignment types (all stored in &amp;lt;moodleroot&amp;gt;/mod/assignment/type/) to see how they work, before getting stuck in to writing your own.&lt;br /&gt;
&lt;br /&gt;
==The main code==&lt;br /&gt;
&lt;br /&gt;
You need to create a file, inside your plugin&#039;s folder, called &#039;assignment.class.php&#039;. This will contain the main code for your plugin.&lt;br /&gt;
The basic layout of this file should look like this:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
require_once($CFG-&amp;gt;libdir.&#039;/formslib.php&#039;);&lt;br /&gt;
&lt;br /&gt;
class assignment_PLUGINNAME extends assignment_base {&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Read through the code in: &amp;lt;moodleroot&amp;gt;/mod/assignment/lib.php for a list of the functions that are available to override and look at examples in the other assignment types to see how to do this.&lt;br /&gt;
&lt;br /&gt;
===Editing the settings form===&lt;br /&gt;
&lt;br /&gt;
You may find that to add extra items to the settings form for your plugin, that you need to find out the courseid or the assignmentid of the assignment you are editing. This information is not provided directly to the &#039;setup_elements&#039; function that is used for this purpose. However, the following code should retrieve that information for you:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$update = optional_param(&#039;update&#039;, 0, PARAM_INT);&lt;br /&gt;
$add = optional_param(&#039;add&#039;, 0, PARAM_ALPHA);&lt;br /&gt;
if (!empty($update)) {&lt;br /&gt;
    if (! $cm = get_record(&amp;quot;course_modules&amp;quot;, &amp;quot;id&amp;quot;, $update)) {&lt;br /&gt;
        error(&amp;quot;This course module doesn&#039;t exist&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    $courseid = $cm-&amp;gt;course;&lt;br /&gt;
    $assignmentid = $cm-&amp;gt;instance;&lt;br /&gt;
} elseif (!empty($add)) {&lt;br /&gt;
    $courseid = required_param(&#039;course&#039;, PARAM_INT);&lt;br /&gt;
    $assignmentid = null;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Updating the database==&lt;br /&gt;
&lt;br /&gt;
If your plugin needs to add some new tables to the database (or extend one of the existing tables, although this would generally be a very bad idea!), follow these steps:&lt;br /&gt;
&lt;br /&gt;
1. Create a file called &#039;version.php&#039; in: &amp;lt;moodleroot&amp;gt;/mod/assignment/type/PLUGINNAME&lt;br /&gt;
&lt;br /&gt;
This file should contain the following:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
//These 2 lines are needed for Moodle 1.9 and above&lt;br /&gt;
$plugin-&amp;gt;version = 2009040900; // YYYYMMDDnn for when the plugin was created&lt;br /&gt;
$plugin-&amp;gt;requires = 2007020200;; // Look in &amp;lt;moodleroot&amp;gt;/mod/assignment/version.php for the minimum version allowed here&lt;br /&gt;
&lt;br /&gt;
// These 2 lines are needed for Moodle 1.8 and below&lt;br /&gt;
$submodule-&amp;gt;version  = $plugin-&amp;gt;version;&lt;br /&gt;
$submodule-&amp;gt;requires = $plugin-&amp;gt;requires;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Create a folder called &amp;lt;moodleroot&amp;gt;/mod/assignment/type/PLUGINNANE/db&lt;br /&gt;
&lt;br /&gt;
3. If you are using Moodle 1.8 (or below), create a file in this folder called &#039;mysql.sql&#039;, which should contain the SQL instructions for creating your database (these can be exported from phpmyadmin, if you want to simplify this step).&lt;br /&gt;
If you are using Moodle 1.9 (or above), create a file in this folder called &#039;install.xml&#039; see [[XMLDB_editor]] for extensive help with this - but note that there does not seem to be any support for directly creating the &#039;install.xml&#039; file directly in an assignment type folder, so you will have to create it in a different folder and then copy it across manually.&lt;br /&gt;
&lt;br /&gt;
4. If you later need to upgrade your database tables (due to a newly released feature in later versions of your plugin), you need to create the following files:&lt;br /&gt;
* For Moodle 1.8 (or below), &#039;mysql.php&#039;, containing the function &#039;assignment_PLUGINNAME_upgrade($oldversion)&#039;&lt;br /&gt;
* For Moodle 1.9 (or above), &#039;upgrade.php&#039;, containing the function &#039;xmldb_assignment_type_PLUGINNAME_upgrade($oldversion=0)&#039;.&lt;br /&gt;
&lt;br /&gt;
The contents of these two functions can be identical to each other. See [[Development:Installing_and_upgrading_plugin_database_tables]] for more details about how to fill these in.&lt;br /&gt;
&lt;br /&gt;
==Language support==&lt;br /&gt;
&lt;br /&gt;
Create a subfolder:&lt;br /&gt;
&amp;lt;moodleroot&amp;gt;/mod/assignment/type/PLUGINNAME/lang/en_utf8/&lt;br /&gt;
&#039;&#039;English is the default language to use if the language selected in Moodle is not provided for, so you should always include that at the very least. You can put text for other languages in a similarly named folder under PLUGINNAME/lang&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In the language subfolder, create a file named assignment_PLUGINNAME.php which should contain all the translatable text from your plugin in the following format:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
$string[&#039;typePLUGINNAME&#039;] = &#039;My new plugin&#039;;&lt;br /&gt;
$string[&#039;textidentifier&#039;] = &#039;Some text I want to display&#039;;&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
Note: the first item in the file should be the display name of your plugin. This &#039;&#039;should&#039;&#039; be used by Moodle anywhere that your plugin is referred to by name (e.g. in the &#039;Add new activity list&#039; or in the &#039;settings&#039; page for your assignment type). &#039;&#039;However&#039;&#039;, due to a bug ([http://tracker.moodle.org/browse/MDL-16796 MDL-16796]) this does not currently work and will display &amp;amp;#91;&amp;amp;#91;typePLUGINNANE]] instead.&lt;br /&gt;
&lt;br /&gt;
To use the text stored in this way, make use of the functions [[Using_variables_in_localization_strings|get_string]](&#039;textidentifier&#039;, &#039;assignment_PLUGINNAME&#039;) and print_string(&#039;textidentifier&#039;, &#039;assignment_PLUGINNAME&#039;). See also point 13 in the [[Development:Coding#General_rules|Coding general rules]].&lt;br /&gt;
&lt;br /&gt;
===Help files===&lt;br /&gt;
&lt;br /&gt;
These should go in a subfolder of the language files:&lt;br /&gt;
&amp;lt;moodleroot&amp;gt;/mod/assignment/type/PLUGINNANE/lang/en_utf8/help/PLUGINNAME&lt;br /&gt;
The files in here should end &#039;.html&#039; and links to them can be created within your plugin by either directly calling &#039;helpbutton&#039; in &#039;weblib.php&#039; or by calling &#039;$mform-&amp;gt;setHelpButton&#039; inside your &#039;setup_elements&#039; code (for adding items to the &#039;settings&#039; page).&lt;br /&gt;
&#039;&#039;Example of calling &#039;helpbutton&#039; directly:&#039;&#039;&lt;br /&gt;
&amp;lt;code php&amp;gt;helpbutton(&#039;helppagename&#039;, get_string(&#039;linktitle&#039;,&#039;assignment_PLUGINNAME&#039;), &#039;assignment_PLUGINNAME&#039;, true, false, &#039;&#039;, true)&amp;lt;/code&amp;gt;&lt;br /&gt;
This will link to the page &#039;helppagename.html&#039;, the title of the link will be the translatable text &#039;linktitle&#039;, the page will be looked for within your plugin&#039;s lang/.../help folder, the link will be a help icon, the title text will not be shown, the page text will not be overridden and the code to display will be returned, rather than printed.&lt;br /&gt;
&#039;&#039;Example of calling $mform-&amp;gt;setHelpButton:&#039;&#039;&lt;br /&gt;
&amp;lt;code php&amp;gt;$mform-&amp;gt;setHelpButton(&#039;nameofelement&#039;, array(&#039;helppagename&#039;, get_string(&#039;linktitle&#039;,&#039;assignment_PLUGINNAME&#039;), &#039;assignment_PLUGINNAME&#039;));&amp;lt;/code&amp;gt;&lt;br /&gt;
This will also create a link to the page &#039;helppagename.html&#039;, the title of the link will be the translatable text &#039;linktitle&#039; and the page will be looked for within your plugin&#039;s lang/.../help folder.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
Discussion in the General Developer forum on [http://moodle.org/mod/forum/discuss.php?d=120860 Adding a new assignment type]. &lt;br /&gt;
&lt;br /&gt;
[[Category:Assignment]]&lt;/div&gt;</summary>
		<author><name>Davosmith</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/21/en/index.php?title=Development:Assignment_types&amp;diff=54871</id>
		<title>Development:Assignment types</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/21/en/index.php?title=Development:Assignment_types&amp;diff=54871"/>
		<updated>2009-04-26T19:57:57Z</updated>

		<summary type="html">&lt;p&gt;Davosmith: Replaced stub with basic article explaining how to create an assignment plugin&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This guide should get you started with creating a new Assignment Type plugin. There may be several mistakes or omissions as it is based on my own experience of writing an Assignment Type plugin. Everything in here should work for Moodle 1.8 and 1.9. It may also work with 1.7, but is untested. It is similarly not tested (yet) with Moodle 2.0.&lt;br /&gt;
&lt;br /&gt;
Make sure you are familiar with all the Moodle [[Development:Coding|Coding Guidelines]] before you get started.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
Throughout this guide, references to &#039;&#039;PLUGINNAME&#039;&#039; should be replaced with the (lowercase) name you have chosen for your assignment type. &lt;br /&gt;
&lt;br /&gt;
All of the files for your assignment plugin will need to go in a folder called:&lt;br /&gt;
&amp;lt;moodleroot&amp;gt;/mod/assignment/type/PLUGINNAME&lt;br /&gt;
&lt;br /&gt;
It is a very good idea to read through the code for the built-in assignment types (all stored in &amp;lt;moodleroot&amp;gt;/mod/assignment/type/) to see how they work, before getting stuck in to writing your own.&lt;br /&gt;
&lt;br /&gt;
==The main code==&lt;br /&gt;
&lt;br /&gt;
You need to create a file, inside your plugin&#039;s folder, called &#039;assignment.class.php&#039;. This will contain the main code for your plugin.&lt;br /&gt;
The basic layout of this file should look like this:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
require_once($CFG-&amp;gt;libdir.&#039;/formslib.php&#039;);&lt;br /&gt;
&lt;br /&gt;
class assignment_PLUGINNAME extends assignment_base {&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Read through the code in: &amp;lt;moodleroot&amp;gt;/mod/assignment/lib.php for a list of the functions that are available to override and look at examples in the other assignment types to see how to do this.&lt;br /&gt;
&lt;br /&gt;
===Editing the settings form===&lt;br /&gt;
&lt;br /&gt;
You may find that to add extra items to the settings form for your plugin, that you need to find out the courseid or the assignmentid of the assignment you are editing. This information is not provided directly to the &#039;setup_elements&#039; function that is used for this purpose. However, the following code should retrieve that information for you:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$update = optional_param(&#039;update&#039;, 0, PARAM_INT);&lt;br /&gt;
$add = optional_param(&#039;add&#039;, 0, PARAM_ALPHA);&lt;br /&gt;
if (!empty($update)) {&lt;br /&gt;
    if (! $cm = get_record(&amp;quot;course_modules&amp;quot;, &amp;quot;id&amp;quot;, $update)) {&lt;br /&gt;
        error(&amp;quot;This course module doesn&#039;t exist&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    $courseid = $cm-&amp;gt;course;&lt;br /&gt;
    $assignmentid = $cm-&amp;gt;instance;&lt;br /&gt;
} elseif (!empty($add)) {&lt;br /&gt;
    $courseid = required_param(&#039;course&#039;, PARAM_INT);&lt;br /&gt;
    $assignmentid = null;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Updating the database==&lt;br /&gt;
&lt;br /&gt;
If your plugin needs to add some new tables to the database (or extend one of the existing tables, although this would generally be a very bad idea!), follow these steps:&lt;br /&gt;
&lt;br /&gt;
1. Create a file called &#039;version.php&#039; in: &amp;lt;moodleroot&amp;gt;/mod/assignment/type/PLUGINNAME&lt;br /&gt;
&lt;br /&gt;
This file should contain the following:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
//These 2 lines are needed for Moodle 1.9 and above&lt;br /&gt;
$plugin-&amp;gt;version = 2009040900; // YYYYMMDDnn for when the plugin was created&lt;br /&gt;
$plugin-&amp;gt;requires = 2007020200;; // Look in &amp;lt;moodleroot&amp;gt;/mod/assignment/version.php for the minimum version allowed here&lt;br /&gt;
&lt;br /&gt;
// These 2 lines are needed for Moodle 1.8 and below&lt;br /&gt;
$submodule-&amp;gt;version  = $plugin-&amp;gt;version;&lt;br /&gt;
$submodule-&amp;gt;requires = $plugin-&amp;gt;requires;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Create a folder called &amp;lt;moodleroot&amp;gt;/mod/assignment/type/PLUGINNANE/db&lt;br /&gt;
&lt;br /&gt;
3. If you are using Moodle 1.8 (or below), create a file in this folder called &#039;mysql.sql&#039;, which should contain the SQL instructions for creating your database (these can be exported from phpmyadmin, if you want to simplify this step).&lt;br /&gt;
If you are using Moodle 1.9 (or above), create a file in this folder called &#039;install.xml&#039; see [[XMLDB_editor]] for extensive help with this - but note that there does not seem to be any support for directly creating the &#039;install.xml&#039; file directly in an assignment type folder, so you will have to create it in a different folder and then copy it across manually.&lt;br /&gt;
&lt;br /&gt;
4. If you later need to upgrade your database tables (due to a newly released feature in later versions of your plugin), you need to create the following files:&lt;br /&gt;
* For Moodle 1.8 (or below), &#039;mysql.php&#039;, containing the function &#039;assignment_PLUGINNAME_upgrade($oldversion)&#039;&lt;br /&gt;
* For Moodle 1.9 (or above), &#039;upgrade.php&#039;, containing the function &#039;xmldb_assignment_type_PLUGINNAME_upgrade($oldversion=0)&#039;.&lt;br /&gt;
&lt;br /&gt;
The contents of these two functions can be identical to each other. See [[Development:Installing_and_upgrading_plugin_database_tables]] for more details about how to fill these in.&lt;br /&gt;
&lt;br /&gt;
==Language support==&lt;br /&gt;
&lt;br /&gt;
Create a subfolder:&lt;br /&gt;
&amp;lt;moodleroot&amp;gt;/mod/assignment/type/PLUGINNAME/lang/en_utf8/&lt;br /&gt;
&#039;&#039;English is the default language to use if the language selected in Moodle is not provided for, so you should always include that at the very least. You can put text for other languages in a similarly named folder under PLUGINNAME/lang&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In the language subfolder, create a file named assignment_PLUGINNAME.php which should contain all the translatable text from your plugin in the following format:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
$string[&#039;typePLUGINNAME&#039;] = &#039;My new plugin&#039;;&lt;br /&gt;
$string[&#039;textidentifier&#039;] = &#039;Some text I want to display&#039;;&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
Note: the first item in the file should be the display name of your plugin. This &#039;&#039;should&#039;&#039; be used by Moodle anywhere that your plugin is referred to by name (e.g. in the &#039;Add new activity list&#039; or in the &#039;settings&#039; page for your assignment type). &#039;&#039;However&#039;&#039;, due to a bug ([http://tracker.moodle.org/browse/MDL-16796 MDL-16796]) this does not currently work and will display &amp;amp;#91;&amp;amp;#91;typePLUGINNANE]] instead.&lt;br /&gt;
&lt;br /&gt;
To use the text stored in this way, make use of the functions [[Using_variables_in_localization_strings|get_string]](&#039;textidentifier&#039;, &#039;assignment_PLUGINNAME&#039;) and print_string(&#039;textidentifier&#039;, &#039;assignment_PLUGINNAME&#039;). See also point 13 in the [[Development:Coding#General_rules|Coding general rules]].&lt;br /&gt;
&lt;br /&gt;
===Help files===&lt;br /&gt;
&lt;br /&gt;
These should go in a subfolder of the language files:&lt;br /&gt;
&amp;lt;moodleroot&amp;gt;/mod/assignment/type/PLUGINNANE/lang/en_utf8/help&lt;br /&gt;
The files in here should end &#039;.html&#039; and links to them can be created within your plugin by either directly calling &#039;helpbutton&#039; in &#039;weblib.php&#039; or by calling &#039;$mform-&amp;gt;setHelpButton&#039; inside your &#039;setup_elements&#039; code (for adding items to the &#039;settings&#039; page).&lt;br /&gt;
&#039;&#039;Example of calling &#039;helpbutton&#039; directly:&#039;&#039;&lt;br /&gt;
&amp;lt;code php&amp;gt;helpbutton(&#039;helppagename&#039;, get_string(&#039;linktitle&#039;,&#039;assignment_PLUGINNAME&#039;), &#039;assignment_PLUGINNAME&#039;, true, false, &#039;&#039;, true)&amp;lt;/code&amp;gt;&lt;br /&gt;
This will link to the page &#039;helppagename.html&#039;, the title of the link will be the translatable text &#039;linktitle&#039;, the page will be looked for within your plugin&#039;s lang/.../help folder, the link will be a help icon, the title text will not be shown, the page text will not be overridden and the code to display will be returned, rather than printed.&lt;br /&gt;
&#039;&#039;Example of calling $mform-&amp;gt;setHelpButton:&#039;&#039;&lt;br /&gt;
&amp;lt;code php&amp;gt;$mform-&amp;gt;setHelpButton(&#039;nameofelement&#039;, array(&#039;helppagename&#039;, get_string(&#039;linktitle&#039;,&#039;assignment_PLUGINNAME&#039;), &#039;assignment_PLUGINNAME&#039;));&amp;lt;/code&amp;gt;&lt;br /&gt;
This will also create a link to the page &#039;helppagename.html&#039;, the title of the link will be the translatable text &#039;linktitle&#039; and the page will be looked for within your plugin&#039;s lang/.../help folder.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
Discussion in the General Developer forum on [http://moodle.org/mod/forum/discuss.php?d=120860 Adding a new assignment type]. &lt;br /&gt;
&lt;br /&gt;
[[Category:Assignment]]&lt;/div&gt;</summary>
		<author><name>Davosmith</name></author>
	</entry>
</feed>