<?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>
	<properties>
		<title>Bitrix Plugin</title>
		<author email="solomax@apache.org">
			OpenMeetings Team
		</author>
	</properties>
	<body>
		<section name="OpenMeetings Plugin for Bitrix">
			<p>
				Current Development Snapshots for testing can be created from the sources:
				<a href="https://svn.codespot.com/a/apache-extras.org/openmeetings-bitrix-plugin/trunk">here</a>
				.
			</p>			
		</section>
		<section name="Features">
			<p>The plugin contains the following features: </p>
			<ul>
				<li>Enter videoconference rooms from Bitrix (http://www.1c-bitrix.ru/): </li>
			</ul>
		</section>
		<section name="Configuration">			
			<div>
				<b>OpenMeetings Bitrix Plugin Installation</b><br/>
				<ol>
					<li>Build plugin from sources</li>
					<li>Unpack it into bitrix/modules</li>
					<li>Install via Admin</li>
					<li>Add OPenmeetings component to any page.</li>
				</ol>              
			</div>
		</section>
	</body>

</document>