<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://docs.moodle.org/dev/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Krause</id>
	<title>MoodleDocs - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://docs.moodle.org/dev/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Krause"/>
	<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/Special:Contributions/Krause"/>
	<updated>2026-08-12T18:13:45Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Talk:Translation_FAQ&amp;diff=63579</id>
		<title>Talk:Translation FAQ</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Talk:Translation_FAQ&amp;diff=63579"/>
		<updated>2022-07-26T11:07:20Z</updated>

		<summary type="html">&lt;p&gt;Krause: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;It would be very conveniente if Helen, or someone else, proficient at HTML, checks the new section on HTML codes that must not be translated.˜˜˜&lt;br /&gt;
&lt;br /&gt;
: Thanks German, I&#039;ve checked it, and hopefully others will too! --[[User:Helen Foster|Helen Foster]] ([[User talk:Helen Foster|talk]]) 15:54, 29 October 2015 (AWST)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I can&#039;t change the text myself. I found some problems in the text.&lt;br /&gt;
&lt;br /&gt;
Why do Moodle has four different language packs for the German language?&lt;br /&gt;
should be changed to: Why does Moodle have four different language packs for the German language?&lt;br /&gt;
&lt;br /&gt;
Why do Moodle has several different language packs for the Spanish language?&lt;br /&gt;
should be changed to: Why does Moodle have several different language packs for the Spanish language?&lt;/div&gt;</summary>
		<author><name>Krause</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Moodle_Mobile_Roadmap&amp;diff=44699</id>
		<title>Moodle Mobile Roadmap</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Moodle_Mobile_Roadmap&amp;diff=44699"/>
		<updated>2014-05-07T19:07:48Z</updated>

		<summary type="html">&lt;p&gt;Krause: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Push notifications for Android (iOS currently supported)&lt;br /&gt;
* Firefox OS version of the application&lt;br /&gt;
* View your grades in activities&lt;br /&gt;
* Assignment viewing and grading&lt;br /&gt;
* View forums&lt;br /&gt;
* Support for SSO authentication methods (CAS, Shibboleth, etc...)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
New functionalities can be funded for be integrated in the app, see https://moodle.org/mod/forum/discuss.php?d=227988 for more info&lt;br /&gt;
&lt;br /&gt;
=== Proposed New Functionality (developed by Kineo for Totara LMS Mobile)===&lt;br /&gt;
&lt;br /&gt;
The following is a list of new features being developed for Totara Mobile which we propose be added to Moodle Mobile core.&lt;br /&gt;
&lt;br /&gt;
Specification and design is currently ongoing and more detail will be added as this progresses.  The current version of the functional spec can be found here [https://github.com/totara/Totara_Lite-Docs/blob/master/Moodle%20Mobile%20Enhancements.pdf?raw=true] and a forum discussion is here [https://moodle.org/mod/forum/discuss.php?d=232680].&lt;br /&gt;
&lt;br /&gt;
A forum thread to discuss this functionality has been set up here: https://moodle.org/mod/forum/discuss.php?d=232680&lt;br /&gt;
&lt;br /&gt;
* Ability to enrol into courses (Where self-enrolment is enabled)&lt;br /&gt;
&lt;br /&gt;
* Ability to view HTML labels (Not necessarily in situ - perhaps in a pop-op or slide-over when an icon is clicked): This is coming in 1.3 https://tracker.moodle.org/browse/MOBILE-258&lt;br /&gt;
&lt;br /&gt;
* Ability to launch SCORM activities (Administrators will be able to specify if SCORM activities are suitable for smartphone/tablet/both in the &#039;desktop&#039; site. These activities will then be launch-able in the mobile app)&lt;br /&gt;
&lt;br /&gt;
* Ability to support regular SCORM tracking&lt;br /&gt;
&lt;br /&gt;
* Ability to view page resources (The app won&#039;t be responsible for adapting these to fit mobile device screens)&lt;br /&gt;
&lt;br /&gt;
* Ability to support the feedback module&lt;br /&gt;
&lt;br /&gt;
* Ability to toggle &#039;self completion&#039; for relevant activities&lt;br /&gt;
&lt;br /&gt;
* Ability to warn users automatically when a connection has been lost&lt;br /&gt;
&lt;br /&gt;
* Ability to brand the web app&lt;br /&gt;
&lt;br /&gt;
* Unit-tests (Unit-tests will be added and parts of the app will be re-factored slightly to facilitate this. See ticket 427 for full details https://tracker.moodle.org/browse/MOBILE-427)&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
[[Moodle Mobile Release Notes]]&lt;br /&gt;
&lt;br /&gt;
[[Moodle Mobile Development Process]]&lt;br /&gt;
&lt;br /&gt;
[[Category: Mobile]]&lt;/div&gt;</summary>
		<author><name>Krause</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Moodle_App_Release_Notes&amp;diff=44698</id>
		<title>Moodle App Release Notes</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Moodle_App_Release_Notes&amp;diff=44698"/>
		<updated>2014-05-07T19:05:33Z</updated>

		<summary type="html">&lt;p&gt;Krause: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Moodle Mobile 1.4.2 ==&lt;br /&gt;
&lt;br /&gt;
1st May 2014 (Android and iOS)&lt;br /&gt;
&lt;br /&gt;
New language: German &lt;br /&gt;
&lt;br /&gt;
Improved: Reduced the app size &lt;br /&gt;
&lt;br /&gt;
Improved: Authentication security &lt;br /&gt;
&lt;br /&gt;
Fixed: The app doesn&#039;t overlay the status bar anymore &lt;br /&gt;
&lt;br /&gt;
Fixed: Errors without proper information not displayed anymore &lt;br /&gt;
&lt;br /&gt;
Fixed: The app supports different locales&lt;br /&gt;
&lt;br /&gt;
https://tracker.moodle.org/issues/?jql=project%20%3D%20MOBILE%20AND%20fixVersion%20%3D%20%221.4.2%22&lt;br /&gt;
&lt;br /&gt;
== Moodle Mobile 1.4.1 ==&lt;br /&gt;
&lt;br /&gt;
10th April 2014 (Android and iOS)&lt;br /&gt;
&lt;br /&gt;
New feature: Video record and upload to your private files area in Moodle&lt;br /&gt;
&lt;br /&gt;
Improved: Error and exception handling (no more white screens)&lt;br /&gt;
&lt;br /&gt;
Fixed: Labels with images are correctly displayed &lt;br /&gt;
&lt;br /&gt;
Fixed: The app can download files from nginx servers&lt;br /&gt;
&lt;br /&gt;
https://tracker.moodle.org/issues/?jql=project%20%3D%20MOBILE%20AND%20fixVersion%20%3D%20%221.4.1%22&lt;br /&gt;
&lt;br /&gt;
== Moodle Mobile 1.4 ==&lt;br /&gt;
&lt;br /&gt;
3rd March 2014 (Android and iOS)&lt;br /&gt;
&lt;br /&gt;
Notifications (iOS only): Supported by any Moodle 2.7 site or Moodle 2.6 with optional messaging output plugin&lt;br /&gt;
&lt;br /&gt;
Calendar events (require Moodle 2.5.5 or Moodle 2.6.2 and onwards)&lt;br /&gt;
&lt;br /&gt;
Alert when downloading too big files&lt;br /&gt;
&lt;br /&gt;
Several bug fixes&lt;br /&gt;
&lt;br /&gt;
New translations available:&lt;br /&gt;
&lt;br /&gt;
* Mexican Spanish&lt;br /&gt;
* Euskara&lt;br /&gt;
&lt;br /&gt;
https://tracker.moodle.org/issues/?jql=project%20%3D%20MOBILE%20AND%20fixVersion%20%3D%20%221.4%22&lt;br /&gt;
&lt;br /&gt;
== Moodle Mobile 1.3.4 ==&lt;br /&gt;
&lt;br /&gt;
4th February 2014 (Android and iOS)&lt;br /&gt;
&lt;br /&gt;
Contents/resources can be re-downloaded at any time&lt;br /&gt;
&lt;br /&gt;
Application translated to these languages:&lt;br /&gt;
&lt;br /&gt;
* Catalan&lt;br /&gt;
* Czech&lt;br /&gt;
* Spanish&lt;br /&gt;
* French&lt;br /&gt;
* Italian&lt;br /&gt;
* Hungarian&lt;br /&gt;
* Dutch&lt;br /&gt;
* Swedish&lt;br /&gt;
&lt;br /&gt;
https://tracker.moodle.org/issues/?jql=fixVersion%20%3D%20%221.3.4%22%20AND%20project%20%3D%20MOBILE&lt;br /&gt;
&lt;br /&gt;
== Moodle Mobile 1.3.3 ==&lt;br /&gt;
&lt;br /&gt;
22th January (Android and iOS)&lt;br /&gt;
&lt;br /&gt;
* New &amp;quot;About&amp;quot; option in Settings&lt;br /&gt;
&lt;br /&gt;
* New &amp;quot;Space usage&amp;quot; option in Settings&lt;br /&gt;
&lt;br /&gt;
* Initial support for node-webkit&lt;br /&gt;
&lt;br /&gt;
* Fixed bug that brokes the app in Android 4.4&lt;br /&gt;
&lt;br /&gt;
* Fixed scrolling bug in contents and participants section for Android 2.1, 2.2 and 2.3&lt;br /&gt;
&lt;br /&gt;
https://tracker.moodle.org/issues/?jql=fixVersion%20%3D%20%221.3.3%22%20AND%20project%20%3D%20MOBILE&lt;br /&gt;
&lt;br /&gt;
== Moodle Mobile 1.3.2 ==&lt;br /&gt;
&lt;br /&gt;
12th December (Android and iOS)&lt;br /&gt;
&lt;br /&gt;
* Fixed bug that prevents files with white spaces in their name to be displayed&lt;br /&gt;
&lt;br /&gt;
https://tracker.moodle.org/issues/?jql=project%20%3D%20MOBILE%20AND%20fixVersion%20%3D%20%221.3.2%22%20AND%20status%20%3D%20Open%20ORDER%20BY%20priority%20DESC&lt;br /&gt;
&lt;br /&gt;
== Moodle Mobile 1.3.1 ==&lt;br /&gt;
&lt;br /&gt;
1st October (Android and iOS)&lt;br /&gt;
&lt;br /&gt;
* Fixed the problem related to force log-in every time they opened the app (Android only)&lt;br /&gt;
* New quick logout option&lt;br /&gt;
* New splash screen&lt;br /&gt;
* Small fixes related to design&lt;br /&gt;
* Security fixes related to sites with certificates&lt;br /&gt;
&lt;br /&gt;
https://tracker.moodle.org/issues/?jql=fixVersion%20%3D%20%221.3.1%22%20AND%20project%20%3D%20MOBILE&lt;br /&gt;
&lt;br /&gt;
== Moodle Mobile 1.3 ==&lt;br /&gt;
&lt;br /&gt;
24th September (Android and iOS)&lt;br /&gt;
&lt;br /&gt;
[[Moodle Mobile 1.3 Release Notes]]&lt;br /&gt;
&lt;br /&gt;
== Moodle Mobile 1.2.2 ==&lt;br /&gt;
&lt;br /&gt;
27 May 2013 Android&lt;br /&gt;
&lt;br /&gt;
12 September 2013 iOS&lt;br /&gt;
&lt;br /&gt;
Security release:&lt;br /&gt;
&lt;br /&gt;
* MOBILE-413 bug fixed&lt;br /&gt;
&lt;br /&gt;
* Improved security of user tokens&lt;br /&gt;
&lt;br /&gt;
== Moodle Mobile 1.2.1 ==&lt;br /&gt;
&lt;br /&gt;
15 April 2013 iOS&lt;br /&gt;
&lt;br /&gt;
8 April 2013 Android&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We’ve called it version 1.2 because the feature set is inherited from the deprecated iOS-only app [[Mobile app | “My Moodle”]] which was version 1.1&lt;br /&gt;
&lt;br /&gt;
Thanks to all the developers who’ve worked on this version of the app:  Juan Leyva, Jerome Mouneyrac, Barbara Ramiro, Martin Dougiamas and Josep Gifreu.&lt;br /&gt;
&lt;br /&gt;
The new app has been designed as a platform with the following strengths:&lt;br /&gt;
* It is secure &lt;br /&gt;
* It can work offline &lt;br /&gt;
* It can support notifications (coming soon)&lt;br /&gt;
* It can be branded and expanded by an institution&lt;br /&gt;
* It makes some Moodle operations faster and more convenient&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Features &#039;&#039;&#039;&lt;br /&gt;
* Responsive design for phone and tablets&lt;br /&gt;
* Upload a picture into your private file area&lt;br /&gt;
* Record an audio file and upload it into your private file area&lt;br /&gt;
* Send a private message to a course participant (can be done offline)&lt;br /&gt;
* Take a personal note about a course participant (can be done offline)&lt;br /&gt;
* Add a course participant to your phone contact&lt;br /&gt;
* Call a course participant touching the phone number&lt;br /&gt;
* Locate a course participant address on Google map&lt;br /&gt;
* Download and view some resources&lt;br /&gt;
* Quick access to your course contents&lt;br /&gt;
* Remote translation (see bellow)&lt;br /&gt;
* Remote layout/style customization (see bellow)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Documentation &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
https://docs.moodle.org/en/Moodle_Mobile_app&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Requirements &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Moodle 2.4&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Download links:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Apps are available in Google Play and also Apple Store. You can install the app directly from your Mobile device, search for &amp;quot;Moodle Mobile&amp;quot; the author/owner must be &amp;quot;Moodle Pty Ltd&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* Android:  https://play.google.com/store/apps/details?id=com.moodle.moodlemobile&lt;br /&gt;
&lt;br /&gt;
* iOS:  https://itunes.apple.com/es/app/moodle-mobile/id633359593&lt;br /&gt;
&lt;br /&gt;
You can find the app build for other Mobile OS (not supported officially) here:&lt;br /&gt;
&lt;br /&gt;
https://build.phonegap.com/apps/314601/builds&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
[[Moodle Mobile Roadmap]]&lt;br /&gt;
&lt;br /&gt;
[[Category: Mobile]]&lt;br /&gt;
[[Category:Release notes]]&lt;/div&gt;</summary>
		<author><name>Krause</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Mobile_app&amp;diff=17983</id>
		<title>Mobile app</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Mobile_app&amp;diff=17983"/>
		<updated>2011-05-23T15:46:05Z</updated>

		<summary type="html">&lt;p&gt;Krause: Dashboard - correct url for the image&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Moodle 2.0}}{{Work in progress}}This page describes the official mobile apps being developed by Moodle HQ.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Rationale for mobile apps==&lt;br /&gt;
&lt;br /&gt;
Mobile access is clearly becoming a preferred option for most web services on the internet, and Moodle sites are no exception.&lt;br /&gt;
&lt;br /&gt;
As an application developer, there are four main ways we can tackle this problem:&lt;br /&gt;
&lt;br /&gt;
===1. Mobile-optimised web===&lt;br /&gt;
&lt;br /&gt;
Mobile platforms have web browsers, so Moodle works immediately without any modification.  However, an interface designed for a computer does not always work perfectly on a small screen.  Some solutions here are themes designed for small screens, such as [http://moodle.org/mod/data/view.php?d=26&amp;amp;rid=4757 MyMobile], others use more structured solutions in core [http://m.ucla.edu/about/ UCLA mobile framework].&lt;br /&gt;
&lt;br /&gt;
Pros:&lt;br /&gt;
* Runs well on all platforms,&lt;br /&gt;
* easier to develop by anyone in the community,&lt;br /&gt;
* theme designers can have more options&lt;br /&gt;
&lt;br /&gt;
Cons:  &lt;br /&gt;
* Doesn&#039;t take advantage of mobile features, &lt;br /&gt;
* doesn&#039;t work offline&lt;br /&gt;
&lt;br /&gt;
===2. HTML5 application===&lt;br /&gt;
&lt;br /&gt;
HTML5 introduces new features that allow the web to allow web sites to behave more like native apps.  Good examples of these are the Google Apps, which really behave like apps, including offline access to data.&lt;br /&gt;
&lt;br /&gt;
Pros:  &lt;br /&gt;
* Runs well on most platforms, &lt;br /&gt;
* no special client required, &lt;br /&gt;
* can cache data offline&lt;br /&gt;
&lt;br /&gt;
Cons:  &lt;br /&gt;
* Difficult to develop properly, &lt;br /&gt;
* requires huge core changes to Moodle, &lt;br /&gt;
* HTML5 still doesn&#039;t have the full performance/features of native apps&lt;br /&gt;
&lt;br /&gt;
===3. Native mobile apps===&lt;br /&gt;
&lt;br /&gt;
Apps are still the predominant paradigm for mobile development, and have a number of features that make them attractive.   There are already a number of apps out there developed by the community (eg [http://www.pragmasql.com/moodletouch/ mTouch], [http://www.codeguild.com/app/mbot/index.html mBot] etc) but the problem with most of them is that they rely on &amp;quot;screen scraping&amp;quot; the web interface, which means they can&#039;t work offline and don&#039;t add many features beyond the basic web interface.&lt;br /&gt;
&lt;br /&gt;
The opportunity exists to create new mobile apps based on the secure web services functionality in Moodle 2.0 and later.&lt;br /&gt;
&lt;br /&gt;
Pros: &lt;br /&gt;
* Stable platforms.  &lt;br /&gt;
* Easier to develop.  &lt;br /&gt;
* Full use of mobile functionality.  &lt;br /&gt;
* High security.  &lt;br /&gt;
* No limitations on functionality.  &lt;br /&gt;
&lt;br /&gt;
Cons: &lt;br /&gt;
* Need to develop each client independently.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 4. Native mobile apps (cross-platform compiled) ===&lt;br /&gt;
&lt;br /&gt;
We have looked at cross-platform development frameworks (Airplay SDK, Appcelerator Titanium, Corona SDK, Flash Builder 4.5) producing native code for various mobile platforms.&lt;br /&gt;
&lt;br /&gt;
Pro:&lt;br /&gt;
* All the benefits of native apps (above)&lt;br /&gt;
* Can generate iPhone / Android apps at the same time and keep them synchronized.&lt;br /&gt;
&lt;br /&gt;
Cons:&lt;br /&gt;
* Debugging is often not as pleasant than on native SDK&lt;br /&gt;
* Missing features,  eg push notification (even though some framework allow you to write Objective-C / Java code in plugins)&lt;br /&gt;
* Dependent on an external company (price, features ...)&lt;br /&gt;
&lt;br /&gt;
==General approach==&lt;br /&gt;
&lt;br /&gt;
Based on the rationale above, we (core developers at Moodle HQ) have decided to focus on writing &#039;&#039;&#039;native mobile apps&#039;&#039;&#039; for now to start providing solutions.  The apps will be called &amp;quot;Moodle&amp;quot;, and will use the web services infrastructure developed in Moodle 2.x to communicate securely and consistently with Moodle sites.  Note that the app will not work with a Moodle site until the administrator of the Moodle site has enabled mobile web services.&lt;br /&gt;
&lt;br /&gt;
We will be tackling the mobile platforms in this order:&lt;br /&gt;
&lt;br /&gt;
# iPhone  (to get the small interface right and help a large number of users)&lt;br /&gt;
# Android (by hiring an Android developer to copy the iPhone interface)&lt;br /&gt;
# iPad (as an upgrade to the iPhone app, just to get a new HD interface right for tablets)&lt;br /&gt;
# Android tablets (by hiring an Android developer to copy the iPhone interface)&lt;br /&gt;
# Other platforms (perhaps Blackberry) depending on demand&lt;br /&gt;
&lt;br /&gt;
So that we can deliver something useful in a short period of time, we have decided to avoid going for a full replication of Moodle functionality and instead to focus on a simple task-based approach to provide the most-wanted features in an interface that is as simple as possible.&lt;br /&gt;
&lt;br /&gt;
We have been holding [[Moodle_2_for_mobile| public brainstorming sessions]] to think about and decide the tasks that would be best to start with.  See the Roadmap below for more details.&lt;br /&gt;
&lt;br /&gt;
==Licensing==&lt;br /&gt;
&lt;br /&gt;
The iPhone/Pad apps will be free from the iTunes app store (with FULL functionality).  However the source code will be owned by Moodle Pty Ltd and will not be initially distributed under the GPL.  One possibility is that we will help produce custom-branded versions of the app for specific Moodle institutions that want it.&lt;br /&gt;
&lt;br /&gt;
The Android apps &#039;&#039;&#039;will definitely&#039;&#039;&#039; be GPL and free for download and modification by other developers.  This is in keeping with the philosophy of the Android platform and will allow the community to innovate on that platform.&lt;br /&gt;
&lt;br /&gt;
==Roadmap==&lt;br /&gt;
&lt;br /&gt;
Our overall philosophy is to release early and release often.  The app releases will not be tied to Moodle releases, as they can automatically query the Moodle site to find out what services are supported and hide/show buttons as necessary.&lt;br /&gt;
&lt;br /&gt;
Full details about the progress of each feature can be found in the [http://tracker.moodle.org/browse/MOBILE MOBILE tracker].&lt;br /&gt;
&lt;br /&gt;
=== Moodle app 1.0 ===&lt;br /&gt;
&lt;br /&gt;
Requires Moodle 2.1 (released 1st July 2011).&lt;br /&gt;
&lt;br /&gt;
==== Dashboard ====&lt;br /&gt;
&lt;br /&gt;
Functionalities (tasks) are displayed with icons on the home page of the app.  The icons can be moved around similar to the normal iPhone home screens (this will be more useful as we add more tasks in the future).&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Sites&amp;quot; button allows you to configure the app to connect to one or more Moodle sites. Once connected to a site the name of it is displayed at the top, and tasks are hidden/shown depending on your capabilities on the server.	&lt;br /&gt;
&lt;br /&gt;
http://tracker.moodle.org/secure/attachment/23875/dashboard+mockup.png&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tracker issue: MOBILE-7&lt;br /&gt;
&lt;br /&gt;
==== Sites configuration ====&lt;br /&gt;
&lt;br /&gt;
On the Sites page, you can set up and save connection information for one or more Moodle sites.  Only one connection is active at a time.  The supported operations are:&lt;br /&gt;
	&lt;br /&gt;
* add a site (url / username / password)&lt;br /&gt;
* edit a site (url / username / password)	&lt;br /&gt;
* delete a site&lt;br /&gt;
* select a site&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://tracker.moodle.org/secure/attachment/23849/site+settings+mockup.png&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tracker issue: MOBILE-6&lt;br /&gt;
&lt;br /&gt;
====Upload====&lt;br /&gt;
&lt;br /&gt;
This functionality allows you to select or capture an image, sound recording or video from your mobile device and quickly post it directly to your &amp;quot;Private files&amp;quot; area in Moodle.  If you are offline, the file is saved and can be uploaded later when you are online.&lt;br /&gt;
&lt;br /&gt;
Once the files are on Moodle, they are then easily accessible whenever you need to insert an image into a forum post, post an assignment or anything else that uses files.&lt;br /&gt;
&lt;br /&gt;
http://tracker.moodle.org/secure/attachment/23864/Mobile-Upload-1.png&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Suggestions for further enhancement later:&lt;br /&gt;
* Integration into a Private files mirror on the device, with sync&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tracker issue:  MOBILE-19&lt;br /&gt;
&lt;br /&gt;
====Participants====&lt;br /&gt;
&lt;br /&gt;
This feature allows you to see all the courses you are enrolled in, and to browse the contact information for all the users in those courses.&lt;br /&gt;
&lt;br /&gt;
# You can see photos and descriptions of all people (according to your capabilities and privacy settings etc)&lt;br /&gt;
# If they have phone numbers defined, you can call them or send an SMS with a single click.&lt;br /&gt;
# If they have email addresses you can send them an email.&lt;br /&gt;
# If Moodle messaging is enabled you can also send a private message.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:IPhone participants.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tracker issue: MOBILE-3&lt;br /&gt;
&lt;br /&gt;
=== Future versions ===&lt;br /&gt;
&lt;br /&gt;
====Resources====&lt;br /&gt;
[http://tracker.moodle.org/browse/MOBILE-32 Resources tracker issue]&lt;br /&gt;
&lt;br /&gt;
This feature allows you to choose one of the courses you are enrolled in, and then see an outline of all the resources and activities in the course.  You can choose to download all available resources (useful if you are on wifi) or choose a particular compatible resource (eg a pdf, or a HTML file) which will download that particular file and view it.  However you download it the file will be stored in a local cache, so that future access (even offline) will still work.&lt;br /&gt;
&lt;br /&gt;
This feature is fairly difficult to develop (even though it sounds simple!) because of the wide range of resources that Moodle supports, so the app functionality may initially be fairly basic.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Resources.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Grades====&lt;br /&gt;
&lt;br /&gt;
Ideas:&lt;br /&gt;
* see your own grades&lt;br /&gt;
* grade assignments&lt;br /&gt;
* download all assignments (eg pdfs), grade them offline, send back to students&lt;br /&gt;
* Give grades if it doesn&#039;t require much effort&lt;br /&gt;
* See grades (limited view)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Attendance ====&lt;br /&gt;
[[Image:Attendance.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
Ideas:&lt;br /&gt;
* Ability to add some notes as reasons for non-attendance (&amp;quot;last seen near smoker&#039;s corner&amp;quot;) AND attendance (&amp;quot;looks sick&amp;quot;)&lt;br /&gt;
* Save notes with data (and also to Moodle user notes??)&lt;br /&gt;
&lt;br /&gt;
==== Messages ====&lt;br /&gt;
===== Private messages =====&lt;br /&gt;
&lt;br /&gt;
It is mainly a copy of the iPhone messaging design.&lt;br /&gt;
&lt;br /&gt;
=====Receive a notification=====&lt;br /&gt;
&lt;br /&gt;
*User receives a notification at any time. &lt;br /&gt;
*User chooses to open the notification. Moodle app is launched on the contact discussion screen. This contact discussion screen displays the 30 last message between user and contacts. An option &#039;see more&#039; is available. &lt;br /&gt;
*User can answer (optionally: attach a picture if it is supported by message API). Once the message is sent, the message is displayed on the same screen. &lt;br /&gt;
*From a button at the top of this screen, the user can go back to the message list (all users having sent the user a message are listed there).&lt;br /&gt;
=====Send a message=====&lt;br /&gt;
*User launch Moodle app. &lt;br /&gt;
*On the Moodle app dashboard user select message icon. It should now be on the message list (or discussion list). The message list displayed the 30 last persons that the user communicated with.&lt;br /&gt;
*User selects the &#039;new message&#039; button. The new message screen is displayed&lt;br /&gt;
*User selects &#039;add contact&#039; icon. The contact screen is displayed. On this screen all contact are listed. &lt;br /&gt;
*User wants to send a message to someone who is not in user contact list. User enters name in the search bar. Searchable Moodle users are listed (small profil: fullname, username, city). User selects someone. &lt;br /&gt;
*User enters a message and sends it. Contact discussion screen is displayed and the sent message is listed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Balsamiq Mockups For Desktop - Users jerome Documents Projects Mockup Moodle iPhone mockup private message.bmml.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
==== Forum discussions ====&lt;br /&gt;
&lt;br /&gt;
==== Calendar ====&lt;br /&gt;
* see my activities/assignements deadlines, specially the close ones&lt;br /&gt;
* See new submissions (teacher)&lt;br /&gt;
* See activities/assignements deadlines, with number of missing submissions&lt;br /&gt;
&lt;br /&gt;
==== Tool Guide ====&lt;br /&gt;
&lt;br /&gt;
==== Moodle help ====&lt;br /&gt;
community chat / twitter&lt;br /&gt;
&lt;br /&gt;
==== Live poll activity / audience feedback====&lt;br /&gt;
&lt;br /&gt;
== Internationalization ==&lt;br /&gt;
&lt;br /&gt;
The application will be developed in English but the code will support internationalization from scratch. See the [http://tracker.moodle.org/browse/MOBILE-5 tracker issue about internationalization].&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
* Using Moodle [http://moodle.org/mod/forum/view.php?id=7798 Moodle for mobile forum]&lt;br /&gt;
* [[Mobile Moodle FAQ]]&lt;br /&gt;
* The UCLA model for web apps http://m.ucla.edu/about/&lt;br /&gt;
* [https://docs.moodle.org/en/Development:Moodle_2_for_mobile Brainstorming done before writing this document]&lt;/div&gt;</summary>
		<author><name>Krause</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Filters&amp;diff=13452</id>
		<title>Filters</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Filters&amp;diff=13452"/>
		<updated>2010-12-25T11:10:47Z</updated>

		<summary type="html">&lt;p&gt;Krause: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&#039;&#039;&#039;Please note:&#039;&#039;&#039; This page contains information for developers. You may prefer to read the [[Filters 2.0| information about filters for teachers and administrators]]. Once Moodle 2.0 is released, [[Filters]] will be renamed to &#039;Development:Filters 1.9 and before&#039; and this page will be renamed to &#039;Development:Filters&#039;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Filters&#039;&#039;&#039; are a way to automatically transform content before it is output. For example&lt;br /&gt;
* render embedded equations to images (the TeX filter)&lt;br /&gt;
* Links to media files can be automatically converted to an embedded applet for playing the media.&lt;br /&gt;
* Mentions of glossary terms can be automatically converted to links.&lt;br /&gt;
The possibilities are endless. There are a number of standard filters included with Moodle, or you can create your own. Filters are one of the easiest types of plugin to create. This page explains how.&lt;br /&gt;
&lt;br /&gt;
==Two types of filter==&lt;br /&gt;
&lt;br /&gt;
Moodle supports two types of filter:&lt;br /&gt;
* Stand-alone filters. These live in a folder inside the &#039;filter&#039; folder. For example, in &#039;filter/myfilter&#039;. &#039;filter/tex&#039; is an example of a core filter of this type.&lt;br /&gt;
* Filters that are part of an activity module. In this case, the filter code lives inside the &#039;mod/mymod&#039; folder. &#039;mod/glossary&#039; is an example of a core module with a filter.&lt;br /&gt;
The two types of filter work in exactly the same way, and to create one, you put your code in files with the same name, just in different places in the code base.&lt;br /&gt;
&lt;br /&gt;
==Creating a basic filter==&lt;br /&gt;
&lt;br /&gt;
During this tutorial, we will build a simple example filter. We will make one that adds the word &#039;hello&#039; before every occurrence of the word &#039;world&#039;.&lt;br /&gt;
&lt;br /&gt;
1. Since our filter is not part of a module, we should put it inside the &#039;filter&#039; folder. Therefore, we create a directory called &#039;filter/helloworld&#039;.&lt;br /&gt;
&lt;br /&gt;
2. Inside that folder, we create a file called &#039;filter.php&#039;.&lt;br /&gt;
&lt;br /&gt;
3. Inside that PHP file, we define a class called helloworld_filter, that extends the moodle_text_filter class.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
class helloworld_filter extends moodle_text_filter {&lt;br /&gt;
    // ...&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4. Inside that class, we have to define one method, called &#039;filter&#039;. This takes the HTML to be filtered as an argument. The method should then transform that, and return the processed text. Replace the &#039;// ...&#039; above with&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
class helloworld_filter extends moodle_text_filter {&lt;br /&gt;
    public function filter($text) {&lt;br /&gt;
        return str_replace(&#039;world&#039;, &#039;hello world!&#039;, $text);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That is basically all there is to it!&lt;br /&gt;
&lt;br /&gt;
==Giving your filter a name==&lt;br /&gt;
&lt;br /&gt;
To try the new filter, you first have to log in as Administrator and enable it by going to the page Administration ► Plugins ► Filters ► Manage filters.&lt;br /&gt;
&lt;br /&gt;
When you do, you will find that your plugin does not have a name. We missed a step:&lt;br /&gt;
&lt;br /&gt;
5. Inside the &#039;filter/helloworld&#039; folder, create a folder called &#039;lang&#039;, and in there, create a folder called &#039;en&#039;.&lt;br /&gt;
&lt;br /&gt;
6. Inside there, create a file called &#039;filter_helloworld.php&#039;. That is, you have just created the file &#039;filter/helloworld/lang/en/filter_helloworld.php&#039;.&lt;br /&gt;
&lt;br /&gt;
7. In that file, put&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php // $Id$&lt;br /&gt;
// Language string for filter/helloworld.&lt;br /&gt;
&lt;br /&gt;
$string[&#039;filtername&#039;] = &#039;Hello world!&#039;;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That may seem a little involved, just to give your filter a name, but it is just [[Places_to_search_for_lang_strings|the standard way Moodle stores language strings for plugins]].&lt;br /&gt;
&lt;br /&gt;
==Trying out your filter==&lt;br /&gt;
&lt;br /&gt;
We had just got to the [[Filters|filters administration screen]]. If you reload that page now, it should now show your filter with its proper name. Turn your filter on now.&lt;br /&gt;
&lt;br /&gt;
Filters are applied to all text that is printed with the [[Output functions|output functions]] format_text(), and, if you have turned on that option, format_string(). So, to see your filter in action, add some content containing the work &#039;world&#039; somewhere, for example, create a test course, and use the work in the course description. When you look at that course in the course listing, you should see that your filter has transformed it.&lt;br /&gt;
&lt;br /&gt;
==Adding a global settings screen==&lt;br /&gt;
&lt;br /&gt;
Some filters can benefit from some settings to let the administrator control how they work. Suppose we want to greet something other than &#039;world&#039;. To add global settings to the filter you need to:&lt;br /&gt;
&lt;br /&gt;
8. Create a file called &#039;filtersettings.php&#039; inside the &#039;filter/helloworld&#039; folder.&lt;br /&gt;
&lt;br /&gt;
9. In the &#039;filtersettings.php&#039; file, put something like:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$settings-&amp;gt;add(new admin_setting_configtext(&#039;filter_helloworld_word&#039;,&lt;br /&gt;
        get_string(&#039;word&#039;, &#039;filter_helloworld&#039;),&lt;br /&gt;
        get_string(&#039;configword&#039;, &#039;filter_helloworld&#039;), &#039;world&#039;, PARAM_NOTAG));&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
10. In the language file &#039;filter/helloworld/lang/en/filter_helloworld.php&#039; add the necessary strings:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$string[&#039;word&#039;] = &#039;The thing to greet&#039;;&lt;br /&gt;
$string[&#039;configword&#039;] = &#039;The hello world filter will add the word \&#039;hello\&#039; in front of every occurrence of this word in any content.&#039;;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
11. Change the filter to use the new setting:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
class helloworld_filter extends moodle_text_filter {&lt;br /&gt;
    public function filter($text) {&lt;br /&gt;
        global $CFG;&lt;br /&gt;
        return str_replace($CFG-&amp;gt;filter_helloworld_word,&lt;br /&gt;
                &amp;quot;hello $CFG-&amp;gt;filter_helloworld_word!&amp;quot;, $text);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In standard Moodle, the censor, mediaplugin and tex filters all provide good examples of of how filters use global configuration like this.&lt;br /&gt;
&lt;br /&gt;
==A note about performance==&lt;br /&gt;
&lt;br /&gt;
One important thing to remember when creating a filter is that the filter will be called to transform every bit of text output using format_text(), and possibly also format_string(). That means that you have to be careful, or you could cause big performance problems. If you have to get data out of the database, try to cache it so that you only do a fixed number of database queries per page load. The Glossary filter is an example of this. (I am not sure how good an example ;-))&lt;br /&gt;
&lt;br /&gt;
==Local configuration==&lt;br /&gt;
&lt;br /&gt;
In addition, in Moodle 2.0, filters can also have different configuration in each context. For example, the glossary could be changes so that in Forum A, you can choose to only link words from a particular glossary, sat Glossary A, while in Forum B you choose to link words from Glossary B.&lt;br /&gt;
&lt;br /&gt;
To do that sort of thing, you need to add a file called filterlocalsettings.php. In it, you must define a [[lib/formslib.php|Moodle form]] that is a subclass of filter_local_settings_form. In addition to the standard formslib methods, you also need to define a save_changes method. There is not a good example of this in the standard Moodle install yet. To continue our example:&lt;br /&gt;
&lt;br /&gt;
12. Create a file called &#039;filterlocalsettings.php&#039; inside the &#039;filter/helloworld&#039; folder.&lt;br /&gt;
&lt;br /&gt;
13. In the &#039;filterlocalsettings.php&#039; file, put:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
class helloworld_filter_local_settings_form extends filter_local_settings_form {&lt;br /&gt;
    protected function definition_inner($mform) {&lt;br /&gt;
        $mform-&amp;gt;addElement(&#039;text&#039;, &#039;word&#039;, get_string(&#039;word&#039;, &#039;filter_helloworld&#039;), array(&#039;size&#039; =&amp;gt; 20));&lt;br /&gt;
        $mform-&amp;gt;setType(&#039;word&#039;, PARAM_NOTAGS);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
14. Extend the filter to use the new setting, if it is present. The filter must be able to work if the setting is not set, for example by falling back to the global or default setting in this case&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
class helloworld_filter extends moodle_text_filter {&lt;br /&gt;
    public function filter($text) {&lt;br /&gt;
        global $CFG;&lt;br /&gt;
        if (isset($this-&amp;gt;localconfig[&#039;word&#039;])) {&lt;br /&gt;
            $word = $this-&amp;gt;localconfig[&#039;word&#039;];&lt;br /&gt;
        } else {&lt;br /&gt;
            $word = $CFG-&amp;gt;filter_helloworld_word;&lt;br /&gt;
        }&lt;br /&gt;
        return str_replace($word, &amp;quot;hello $word!&amp;quot;, $text);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
* The example filter built here is in contrib CVS at http://cvs.moodle.org/contrib/plugins/filter/helloworld/&lt;br /&gt;
* [[Filters]] how to write filters for Moodle 1.9 and before. Note that a Moodle 1.9 filter will still work in Moodle 2.0, but you should still update your code when you get the chance.&lt;br /&gt;
* [[Filters schema]] - a page containing some ideas and thoughts about modifications to the filters system&lt;br /&gt;
* [[Filters 2.0]] - user documentation about filters.&lt;br /&gt;
&lt;br /&gt;
[[Category:Filters]]&lt;br /&gt;
[[Category:Filter]]&lt;/div&gt;</summary>
		<author><name>Krause</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Filters&amp;diff=13451</id>
		<title>Filters</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Filters&amp;diff=13451"/>
		<updated>2010-12-25T11:09:17Z</updated>

		<summary type="html">&lt;p&gt;Krause: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&#039;&#039;&#039;Please note:&#039;&#039;&#039; This page contains information for developers. You may prefer to read the [[Filters 2.0| information about filters for teachers and administrators]]. Once Moodle 2.0 is released, [[Filters]] will be renamed to &#039;Development:Filters 1.9 and before&#039; and this page will be renamed to &#039;Development:Filters&#039;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Filters&#039;&#039;&#039; are a way to automatically transform content before it is output. For example&lt;br /&gt;
* render embedded equations to images (the TeX filter)&lt;br /&gt;
* Links to media files can be automatically converted to an embedded applet for playing the media.&lt;br /&gt;
* Mentions of glossary terms can be automatically converted to links.&lt;br /&gt;
The possibilities are endless. There are a number of standard filters included with Moodle, or you can create your own. Filters are one of the easiest types of plugin to create. This page explains how.&lt;br /&gt;
&lt;br /&gt;
==Two types of filter==&lt;br /&gt;
&lt;br /&gt;
Moodle supports two types of filter:&lt;br /&gt;
* Stand-alone filters. These live in a folder inside the &#039;filter&#039; folder. For example, in &#039;filter/myfilter&#039;. &#039;filter/tex&#039; is an example of a core filter of this type.&lt;br /&gt;
* Filters that are part of an activity module. In this case, the filter code lives inside the &#039;mod/mymod&#039; folder. &#039;mod/glossary&#039; is an example of a core module with a filter.&lt;br /&gt;
The two types of filter work in exactly the same way, and to create one, you put your code in files with the same name, just in different places in the code base.&lt;br /&gt;
&lt;br /&gt;
==Creating a basic filter==&lt;br /&gt;
&lt;br /&gt;
During this tutorial, we will build a simple example filter. We will make one that adds the word &#039;hello&#039; before every occurrence of the word &#039;world&#039;.&lt;br /&gt;
&lt;br /&gt;
1. Since our filter is not part of a module, we should put it inside the &#039;filter&#039; folder. Therefore, we create a directory called &#039;filter/helloworld&#039;.&lt;br /&gt;
&lt;br /&gt;
2. Inside that folder, we create a file called &#039;filter.php&#039;.&lt;br /&gt;
&lt;br /&gt;
3. Inside that PHP file, we define a class called helloworld_filter, that extends the moodle_text_filter class.&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
class helloworld_filter extends moodle_text_filter {&lt;br /&gt;
    // ...&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4. Inside that class, we have to define one method, called &#039;filter&#039;. This takes the HTML to be filtered as an argument. The method should then transform that, and return the processed text. Replace the &#039;// ...&#039; above with&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
class helloworld_filter extends moodle_text_filter {&lt;br /&gt;
    public function filter($text) {&lt;br /&gt;
        return str_replace(&#039;world&#039;, &#039;hello world!&#039;, $text);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That is basically all there is to it!&lt;br /&gt;
&lt;br /&gt;
==Giving your filter a name==&lt;br /&gt;
&lt;br /&gt;
To try the new filter, you first have to log in as Administrator and enable it by going to the page Administration ► Plugins ► Filters ► Manage filters.&lt;br /&gt;
&lt;br /&gt;
When you do, you will find that your plugin does not have a name. We missed a step:&lt;br /&gt;
&lt;br /&gt;
5. Inside the &#039;filter/helloworld&#039; folder, create a folder called &#039;lang&#039;, and in there, create a folder called &#039;en&#039;.&lt;br /&gt;
&lt;br /&gt;
6. Inside there, create a file called &#039;filter_helloworld.php&#039;. That is, you have just created the file &#039;filter/helloworld/lang/en/filter_helloworld.php&#039;.&lt;br /&gt;
&lt;br /&gt;
7. In that file, put&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php // $Id$&lt;br /&gt;
// Language string for filter/helloworld.&lt;br /&gt;
&lt;br /&gt;
$string[&#039;filtername&#039;] = &#039;Hello world!&#039;;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That may seem a little involved, just to give your filter a name, but it is just [[Places_to_search_for_lang_strings|the standard way Moodle stores language strings for plugins]].&lt;br /&gt;
&lt;br /&gt;
==Trying out your filter==&lt;br /&gt;
&lt;br /&gt;
We had just got to the [[Filters|filters administration screen]]. If you reload that page now, it should now show your filter with its proper name. Turn your filter on now.&lt;br /&gt;
&lt;br /&gt;
Filters are applied to all text that is printed with the [[Output functions|output functions]] format_text(), and, if you have turned on that option, format_string(). So, to see your filter in action, add some content containing the work &#039;world&#039; somewhere, for example, create a test course, and use the work in the course description. When you look at that course in the course listing, you should see that your filter has transformed it.&lt;br /&gt;
&lt;br /&gt;
==Adding a global settings screen==&lt;br /&gt;
&lt;br /&gt;
Some filters can benefit from some settings to let the administrator control how they work. Suppose we want to greet something other than &#039;world&#039;. To add global settings to the filter you need to:&lt;br /&gt;
&lt;br /&gt;
8. Create a file called &#039;filtersettings.php&#039; inside the &#039;filter/helloworld&#039; folder.&lt;br /&gt;
&lt;br /&gt;
9. In the &#039;filtersettings.php&#039; file, put something like:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$settings-&amp;gt;add(new admin_setting_configtext(&#039;filter_helloworld_word&#039;,&lt;br /&gt;
        get_string(&#039;word&#039;, &#039;filter_helloworld&#039;),&lt;br /&gt;
        get_string(&#039;configword&#039;, &#039;filter_helloworld&#039;), &#039;world&#039;, PARAM_NOTAG));&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
10. In the language file &#039;filter/helloworld/lang/en_utf8/filter_helloworld.php&#039; add the necessary strings:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$string[&#039;word&#039;] = &#039;The thing to greet&#039;;&lt;br /&gt;
$string[&#039;configword&#039;] = &#039;The hello world filter will add the word \&#039;hello\&#039; in front of every occurrence of this word in any content.&#039;;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
11. Change the filter to use the new setting:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
class helloworld_filter extends moodle_text_filter {&lt;br /&gt;
    public function filter($text) {&lt;br /&gt;
        global $CFG;&lt;br /&gt;
        return str_replace($CFG-&amp;gt;filter_helloworld_word,&lt;br /&gt;
                &amp;quot;hello $CFG-&amp;gt;filter_helloworld_word!&amp;quot;, $text);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In standard Moodle, the censor, mediaplugin and tex filters all provide good examples of of how filters use global configuration like this.&lt;br /&gt;
&lt;br /&gt;
==A note about performance==&lt;br /&gt;
&lt;br /&gt;
One important thing to remember when creating a filter is that the filter will be called to transform every bit of text output using format_text(), and possibly also format_string(). That means that you have to be careful, or you could cause big performance problems. If you have to get data out of the database, try to cache it so that you only do a fixed number of database queries per page load. The Glossary filter is an example of this. (I am not sure how good an example ;-))&lt;br /&gt;
&lt;br /&gt;
==Local configuration==&lt;br /&gt;
&lt;br /&gt;
In addition, in Moodle 2.0, filters can also have different configuration in each context. For example, the glossary could be changes so that in Forum A, you can choose to only link words from a particular glossary, sat Glossary A, while in Forum B you choose to link words from Glossary B.&lt;br /&gt;
&lt;br /&gt;
To do that sort of thing, you need to add a file called filterlocalsettings.php. In it, you must define a [[lib/formslib.php|Moodle form]] that is a subclass of filter_local_settings_form. In addition to the standard formslib methods, you also need to define a save_changes method. There is not a good example of this in the standard Moodle install yet. To continue our example:&lt;br /&gt;
&lt;br /&gt;
12. Create a file called &#039;filterlocalsettings.php&#039; inside the &#039;filter/helloworld&#039; folder.&lt;br /&gt;
&lt;br /&gt;
13. In the &#039;filterlocalsettings.php&#039; file, put:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
class helloworld_filter_local_settings_form extends filter_local_settings_form {&lt;br /&gt;
    protected function definition_inner($mform) {&lt;br /&gt;
        $mform-&amp;gt;addElement(&#039;text&#039;, &#039;word&#039;, get_string(&#039;word&#039;, &#039;filter_helloworld&#039;), array(&#039;size&#039; =&amp;gt; 20));&lt;br /&gt;
        $mform-&amp;gt;setType(&#039;word&#039;, PARAM_NOTAGS);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
14. Extend the filter to use the new setting, if it is present. The filter must be able to work if the setting is not set, for example by falling back to the global or default setting in this case&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
class helloworld_filter extends moodle_text_filter {&lt;br /&gt;
    public function filter($text) {&lt;br /&gt;
        global $CFG;&lt;br /&gt;
        if (isset($this-&amp;gt;localconfig[&#039;word&#039;])) {&lt;br /&gt;
            $word = $this-&amp;gt;localconfig[&#039;word&#039;];&lt;br /&gt;
        } else {&lt;br /&gt;
            $word = $CFG-&amp;gt;filter_helloworld_word;&lt;br /&gt;
        }&lt;br /&gt;
        return str_replace($word, &amp;quot;hello $word!&amp;quot;, $text);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
* The example filter built here is in contrib CVS at http://cvs.moodle.org/contrib/plugins/filter/helloworld/&lt;br /&gt;
* [[Filters]] how to write filters for Moodle 1.9 and before. Note that a Moodle 1.9 filter will still work in Moodle 2.0, but you should still update your code when you get the chance.&lt;br /&gt;
* [[Filters schema]] - a page containing some ideas and thoughts about modifications to the filters system&lt;br /&gt;
* [[Filters 2.0]] - user documentation about filters.&lt;br /&gt;
&lt;br /&gt;
[[Category:Filters]]&lt;br /&gt;
[[Category:Filter]]&lt;/div&gt;</summary>
		<author><name>Krause</name></author>
	</entry>
</feed>