<?xml version="1.0" encoding="UTF-8"?>
<!--
   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
 -->
<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="website.xsd">

	<properties>
		<title>Moodle Plugin</title>
		<author email="sebawagner@apache.org">
			OpenMeetings Team
		</author>
	</properties>

	<body>

		<section name="Moodle Plugin for OpenMeetings">
			<p>
				You can get the latest Version of the Plugin for Moodle from the
				<a href="downloads.html">downloads</a>
				.
				<br/>
				You can find the OpenMeetings Plugin also in the
				<a href="http://moodle.org/plugins/view.php?plugin=mod_openmeetings"
					target="_BLANK" rel="nofollow">Moodle Plugin database</a>
				.
				<br/>
				A demo version of the Moodle plugin is available at
				<a href="http://moodle.openmeetings.de" target="_BLANK" rel="nofollow">moodle.openmeetings.de
				</a>
				.
			</p>
		</section>
		
		<section name="Installation of the Moodle Plugin for Apache OpenMeetings">
			<p>
				You simply download the ZIP or TAR package and unzip it to Moodle's "mod" directory.<br/>
				Eventually you need to unzip the package into a folder called "openmeetings".
				The folder structure is:<br/>
				$MOODLE_HOME/mod/openmeetings/*.php
				<br />
				Then you visit the admin interface of Moodle, for example
				<a href="http://$your_moodle_host/$MOODLE_WWW_ROOT/admin" target="_BLANK"
					rel="nofollow">http://$your_moodle_host/$MOODLE_WWW_ROOT/admin</a> 
					<br/>
				Moodle will detect that there is a new plugin and will show the plugin installation screen:
			</p>
			<a class="fancybox-buttons" href="images/moodle_install_plugin.png">
				<img src="images/moodle_install_plugin.png" alt="" width="430"
					height="220" />
			</a>
			<p>
				After you have clicked on "Update database" Moodle will show you the plugin configuration screen:
			</p>
			<a class="fancybox-buttons" href="images/moodle_configure_plugin.png">
				<img src="images/moodle_configure_plugin.png" alt="" width="500"
					height="300" />
			</a>
		</section>
		
		<section name="Adding a new conference room to a Moodle course">
			
			<p>
				After installation of the plugin you can go to the course pages in Moodle and turn editing on.
				Then you choose the activity "OpenMeetings", Moodle will then show you the conference room 
				configuration with all the options:
			</p>
			<a class="fancybox-buttons" href="images/moodle_add_activity_plugin.png">
				<img src="images/moodle_add_activity_plugin.png" alt="" width="430"
					height="360" />
			</a>
		</section>
		
	</body>

</document>